Android手机界面尺寸与标题栏获取技巧
在Android开发中,理解并获取屏幕的不同部分尺寸对于构建用户界面至关重要。本文将详细介绍如何获取安卓手机界面中的关键长度,包括状态栏高度、整个屏幕尺寸、标题栏高度以及图片宽度,并探讨坐标移动时如何处理触控事件。 1. **状态栏的高度获取**: 使用`Rectframe`对象,调用`getWindow().getDecorView().getWindowVisibleDisplayFrame(frame)`方法,可以获取到状态栏(通常包含通知栏)的顶部边界,通过`frame.top`属性获得高度。状态栏高度对于调整布局和避免遮挡通知至关重要。 2. **屏幕尺寸获取**: 方法一,通过`DisplayMetrics`类,调用`context.getResources().getDisplayMetrics()`来获取屏幕的像素密度和尺寸信息。`widthPixels`和`heightPixels`分别表示屏幕的宽度和高度。方法二,使用`WindowManager`的`getDefaultDisplay().getMetrics(dm)`方法,同样能得到屏幕尺寸。 3. **标题栏高度获取**: - 方法一是基于`Window`的`findViewById`函数,找到`ID_ANDROID_CONTENT`对应的视图,然后计算出与状态栏顶部的距离,即`contentViewTop - statusBarHeight`。 - 这里注意,`contentViewTop`是实际内容区域的顶部位置,减去`statusBarHeight`后得到的是标题栏的高度,即通常显示应用名称的部分。 4. **图片宽度获取**: 通过`BitmapFactory.decodeResource`函数加载图片资源,然后调用`.getWidth()`方法可以直接获取到图片的宽度。这对于适配不同分辨率的屏幕和进行图片布局非常重要。 5. **坐标移动处理**: 当处理触摸事件时,监听`View`上的`onTouchListener`。在`onTouch`方法中,记录每次触控事件的初始位置(`ACTION_DOWN`时),并通过`MotionEvent.getAction()`判断触控动作,如`ACTION_DOWN`用于获取点击坐标,后续事件如`ACTION_MOVE`可用来跟踪手势操作。 掌握这些方法后,开发者可以根据具体需求调整布局,确保UI元素在不同设备和状态栏配置下都能正确显示。在设计响应式UI时,理解并灵活运用这些长度获取方法至关重要。
Rect frame = new Rect();
MainActivity.this.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int topHeigh= frame.top;
2、获取整个屏幕的大小
方法1:DisplayMetrics dm=new DisplayMetrics();
dm=context.getResources().getDisplayMetrics();
方法2:activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
然后获取宽高值
int width=dm.widthPixels;
int height=dm.heightPixels;
3、获取标题栏的高度
01.int contentViewTop = ((MoveViewDemo)context).getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); //这里得到的是下面两幅图黑色部分显示的,也就是我们具体的代码所展现的区域
02.int titleBarHeight = contentViewTop - statusBarHeight; //这里可以得到标题栏的高度,即第二条显示应用名称
4、获取图片宽度
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a).getWidth();// 获取图片宽度
5、坐标移动获取各种形式的坐标
button.setOnTouchListener(new OnTouchListener(){
int lastX, lastY;
public boolean onTouch(View v, MotionEvent event) {
int ea=event.getAction();
switch(ea){
//获取点击的坐标
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 2
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全