Android 获取屏幕分辨率

简介: 原文:Android 获取屏幕分辨率得到一个屏幕尺寸的三种方法如下:        // 通过WindowManager获取        DisplayMetrics dm = new DisplayMetrics();        getWindowManager().
原文: Android 获取屏幕分辨率

得到一个屏幕尺寸的三种方法如下:
        // 通过WindowManager获取
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);

        // 通过Resources获取 
        DisplayMetrics dm2 = getResources().getDisplayMetrics();

        // 获取屏幕的默认分辨率
        Display display = getWindowManager().getDefaultDisplay();
        System.out.println("width-display :" + display.getWidth());
        System.out.println("heigth-display :" + display.getHeight());

安卓4.2系统中,使用方法一得到了正确的屏幕尺寸值,而使用方法二和三得到的值全部为零。原因不祥。其中方法三中的display.getWidth()和display.getHeight()已被弃用。


DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);//display = getWindowManager().getDefaultDisplay();display.getMetrics(dm)(把屏幕尺寸信息赋值给DisplayMetrics dm);
width = dm.widthPixels;
height = dm.heightPixels;
xdpi = dm.xdpi;
ydpi = dm.ydpi;
density = dm.densityDpi;
fdensity = dm.density;


查询log,得到各值如下:
D/Lichking(22643): -----------widthpixels---540
D/Lichking(22643): -----------heightpixels---960
D/Lichking(22643): -----------xdpi---244.92857
D/Lichking(22643): -----------ydpi---246.30302
D/Lichking(22643): -----------density---240
D/Lichking(22643): -----------fdensity---1.5
另提一点,我们通常所指的屏幕上的int尺寸是像素单位,比如我用getHitRect()得到控件的矩形坐标的值即使和像素尺寸相匹配的。

DisplayMetrics和Display的关系。
Display指代显示区域这个对象,它可能是真实的物理屏幕,也可能仅指应用程序的显示区域,比如在非全屏Activity里,系统因为有状态栏,因此显示区域要比物理屏幕要小。DisplayMetrics里封装了显示区域的各种属性值。查看源码发现,在DisplayMetrics对各个属性值的注释都说明为真实的物理尺寸。而且也发现display.getMetrics(dm)这一函数基本在应用在获取真实屏幕尺寸的时候。记住这一点即好。


另外xdpi不是指屏幕宽度上以dp为单位的大小。以dp为单位的屏幕宽度需用计算公式:dpWidth = WidthPixels / fdensity = 540 / 1.5 = 360

目录
相关文章
|
7月前
|
编解码 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)1
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
399 1
|
7月前
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
441 2
|
编解码 开发工具 Android开发
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
4K分辨率即4096×2160的像素分辨率,它是2K投影机和高清电视分辨率的4倍,属于超高清分辨率。在此分辨率下,观众将可以看清画面中的每一个细节,每一个特写。影院如果采用惊人的4096×2160像素,无论在影院的哪个位置,观众都可以清楚的看到画面的每一个细节,影片色彩鲜艳、文字清晰锐丽,再配合超真实音效,这种感觉真的是一种难以言传的享受。
327 0
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
|
编解码 Android开发
Android平台GB28181设备接入模块分辨率发生变化怎么办?
我们在做Android平台gb28181设备接入模块的时候,遇到这样的情况,比如横竖屏分辨率不锁定,采集摄像头的时候,可以实现,横屏状态采集横屏,竖屏状态采集竖屏,简单来说,横屏状态比如采集的1280*720的,竖屏状态,采集的数据源成了720*1280。
|
编解码 Android开发
Android 大分辨率 问题.(supports-screens)
Android 大分辨率 问题.(supports-screens)
127 0
|
编解码 Android开发
安卓编解码的分辨率问题
安卓编解码的分辨率问题
103 0
|
XML 编解码 Android开发
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(二)
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(二)
270 0
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(二)
|
编解码 Android开发
适配完结篇二 - 谷歌小弟的Android多分辨率适配框架
• 切图存放于drawable-nodpi • 抛开系统的dpi并且摒弃dp和sp,统一使用px作为尺寸单位 • 按照给定高分辨率(如1920*1080)切图和布局, 其实只有1080px有参考价值 • 根据需要, 等比例缩放每个View 目前,xxhdpi分辨率的手机占了主流,所以在该框架中采用了drawable-xxhdpi的切图。倘若以后xxxhdpi分辨率的手机占了主导地位,那么就请UI设计师按照该分辨率切图,我们将其放在drawable-nohdpi中,再修改BASE_SCREEN_WIDTH即可。
232 0
|
编解码 程序员 开发工具
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(一)
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(一)
180 0
|
编解码 Android开发 iOS开发
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
关于4K分辨率 4K分辨率即4096×2160的像素分辨率,它是2K投影机和高清电视分辨率的4倍,属于超高清分辨率。在此分辨率下,观众将可以看清画面中的每一个细节,每一个特写。影院如果采用惊人的4096×2160像素,无论在影院的哪个位置,观众都可以清楚的看到画面的每一个细节,影片色彩鲜艳、文字清晰锐丽,再配合超真实音效,这种感觉真的是一种难以言传的享受。
1562 0