Android获取屏幕宽高:三种实用方法
108 浏览量
更新于2024-08-31
收藏 65KB PDF 举报
本文主要介绍了在Android开发中获取屏幕宽高的三种常见方法,适用于开发者需要对屏幕尺寸进行适配或定制界面布局时使用。
在Android系统中,获取屏幕的宽度和高度是常见的需求,这对于创建适应不同设备尺寸的应用至关重要。以下是三种主要的获取屏幕尺寸的方法:
1. 使用`DisplayMetrics`类
`DisplayMetrics`类提供了关于屏幕的各种度量信息,包括宽度、高度、密度等。首先,我们需要获取到`DisplayMetrics`对象,然后从中读取屏幕的宽度和高度。以下是一个示例代码片段:
```java
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels; // 屏幕宽度(像素)
int screenHeight = displayMetrics.heightPixels; // 屏幕高度(像素)
```
这里的`widthPixels`和`heightPixels`分别代表屏幕的像素宽度和高度。需要注意的是,这些值是原始的像素值,未考虑屏幕的密度。
2. 使用`Display`类的`Size`方法
自Android API Level 17开始,`Display`类提供了获取屏幕尺寸的便捷方法`getSize()`。以下是如何使用这个方法:
```java
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x; // 屏幕宽度(像素)
int screenHeight = size.y; // 屏幕高度(像素)
```
同样,`size.x`和`size.y`分别表示屏幕的宽度和高度,单位也是像素。
3. 使用`ViewTreeObserver`监听屏幕尺寸变化
有时我们可能需要在布局完全加载后获取屏幕尺寸,这时可以使用`ViewTreeObserver`来监听视图树的变化。以下是一个例子:
```java
View rootView = findViewById(android.R.id.content);
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
rootView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
rootView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
int screenWidth = rootView.getWidth(); // 屏幕宽度(像素)
int screenHeight = rootView.getHeight(); // 屏幕高度(像素)
}
});
```
在这个例子中,当布局完成加载后,`onGlobalLayout()`方法会被调用,此时可以获取到屏幕的宽度和高度。注意在API 16及以上版本,应使用`removeOnGlobalLayoutListener()`,以避免内存泄漏。
以上就是Android获取屏幕宽高的三种常见方法。在实际开发中,根据项目需求和兼容性要求,可以选择合适的方式获取屏幕尺寸信息。确保正确地处理各种屏幕尺寸,能够使应用更好地适应不同的设备,提升用户体验。
2021-01-03 上传
2020-09-02 上传
2018-06-28 上传
2023-12-15 上传
2021-01-04 上传
2020-08-30 上传
2020-09-03 上传
2020-08-27 上传
weixin_38703980
- 粉丝: 6
- 资源: 878
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍