Android获取屏幕宽高:三种实用方法

0 下载量 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获取屏幕宽高的三种常见方法。在实际开发中,根据项目需求和兼容性要求,可以选择合适的方式获取屏幕尺寸信息。确保正确地处理各种屏幕尺寸,能够使应用更好地适应不同的设备,提升用户体验。