DisplayMetrics和Display浅析

发布时间:2016-12-6 18:13:46 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"DisplayMetrics和Display浅析",主要涉及到DisplayMetrics和Display浅析方面的内容,对于DisplayMetrics和Display浅析感兴趣的同学可以参考一下。

得到一个屏幕尺寸的三种方法如下: // 通过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

上一篇:如何快速查找C语言代码中的宏的值
下一篇:linuc下库操作

相关文章

相关评论