
Android获取屏幕宽高:三种实用方法
65KB |
更新于2024-08-31
| 76 浏览量 | 举报
收藏
本文主要介绍了在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获取屏幕宽高的三种常见方法。在实际开发中,根据项目需求和兼容性要求,可以选择合适的方式获取屏幕尺寸信息。确保正确地处理各种屏幕尺寸,能够使应用更好地适应不同的设备,提升用户体验。
相关推荐









weixin_38703980
- 粉丝: 6
最新资源
- C#实现MD5码计算工具及其源代码下载
- BDM驱动程序:高效实用的Freescale设备驱动
- 全面掌握OpenCV编程:章节代码解析
- CSS3+HTML响应式模板设计展示
- C# WPF打造仿苹果界面程序技术预览
- MVC模式下的医院信息系统开发与数据库管理
- SSH实现的文件上传代码示例
- Sublipse站点1.10.5版本发布
- 在win8/7上运行的精简版Visual C++ 6.0安装包发布
- Jquery Jqprint实现网页打印功能的完美控制
- 地质学家专用玫瑰花图软件介绍
- 超级闹钟:创新的Android生活管理系统
- 使用ANTLR构建简易四则运算计算器
- STM32F0操作系统工程源码实验指南
- 全面解析ActionBar的Tab栏及自定义Style实现技巧
- C#实现DirectX麦克风音量百分比显示教程
- Qt QML与C++结合实现折线图教程
- 威泰克斯2508车台写频软件操作指南
- TQ2440平台LED驱动程序开发教程
- 打造首个机器人:POV制作简易指南
- Jaxen 1.1.6:Java中的开放源码XPath库
- 美国计算机历史博物馆公布MS-DOS源码
- VB实现USB-HID设备通信与数据交互指南
- Android蓝牙通信及RTK数据解析应用