码迷,mamicode.com
首页 > 移动开发 > 详细

Android 为什么计算不出准确的屏幕尺寸的原因,及 Android 获得屏幕物理尺寸、密度及分辨率

时间:2015-08-06 18:30:40      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:屏幕物理尺寸   密度   分辨率   displaymetrics   dots-per-inch   

DPI:dots-per-inch,每英寸的像素数量,也就是说,密度越大,每英寸内容纳的点数就越多。这个值是设备自己决定并写死的。

计算方法:获取到屏幕的分辨率:point.x和point.y,再取出屏幕的DPI(每英寸的像素数量),计算长和宽有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi,屏幕的长和宽算出来了,再用勾股定理,计算出斜角边的长度,即屏幕尺寸。

WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics displaysMetrics = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(displaysMetrics);

Point point = new Point();
manager.getDefaultDisplay().getRealSize(point);
DisplayMetrics dm = context.getResources().getDisplayMetrics();
double x = Math.pow(point.x / dm.xdpi, 2);
double y = Math.pow(point.y / dm.ydpi, 2);
double screenInches = Math.sqrt(x + y);
注意: 此处displayMetrics不要使用context.getApplicationContext().getResources().getDisplayMetrics()来获取。

上面说到,DPI是由设备出厂时写死到设备里的,如果写入的DPI值不准确,当然计算不出准确的屏幕尺寸。这也是友盟统计里没有屏幕尺寸这一项的原因吧,所以计算出的屏幕尺寸只做参考。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 为什么计算不出准确的屏幕尺寸的原因,及 Android 获得屏幕物理尺寸、密度及分辨率

标签:屏幕物理尺寸   密度   分辨率   displaymetrics   dots-per-inch   

原文地址:http://blog.csdn.net/a78270528/article/details/47319423

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!