为啥有不少国产安卓机获取到的xdpi和ydpi是错的
首先解释一下实际计算出来的dpi和Android系统定义的dpi之间的区别:假如分辨率1080×1920,那么5英寸计算出来的是440,4.5英寸dpi是490。如此看来,屏幕密度将会出现很多数值,呈现严重的碎片化。而密度又是安卓屏幕将界面进行缩放显示的依据,那么安卓是如何适配这么多屏幕的呢?其实,每部安卓手机屏幕都有一个初始的固定dpi值,这些数值是120、160、240、320、480,可以看作为“系统密度”。安卓对界面元素进行缩放的比例依据正是系统定义的dpi值,而不是实际计算出来的dpi。所以,不要轻易修改Android系统中定义的dpi值,这可能会引起部分App不兼容。如果应用开发中想要知道手机的实际dpi值,就必须先知道手机屏幕大小然后根据公式计算:dpi = √(长度像素数2 + 宽度像素数2) / 屏幕对角线英寸数
■网友
厂商为了吸引眼球做一些小动作那是正常。广告说1080分辨率,其实是720或480,为了让购买者相信所以改分辨率参数、改dpi.我在开发的时候也很困扰,无奈。所有我也只能这样处理:Point point = new Point();getWindowManager().getDefaultDisplay().getRealSize(point);DisplayMetrics dm = 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);厂商是通过system/build.prop来修改,你要修复也可以在这里下手。其中包含:qemu.sf.lcd_densityro.sf.lcd_density
■网友
好蛋疼,vivo的两款手机,一个5.2寸 一个5.7寸,两个手机的dpi竟然是一样的!搞什么啊
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 装置■一天效益百万的国产装置见过没?一起去大修现场看看吧
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 汽车知识|国产精品中大型SUV,15.99万配2.0T动力,双12.3英寸大屏
- 淘铺万机车|“国产NMAX”要来了 嘉爵联手荷兰Berini 将推出多款踏板车型
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 红旗|这三款国产SUV终身质保,最低只要十万五,还买什么合资
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 橘猫车探长|国产又一硬派越野,入门有255马力,气场堪比路虎卫士,或10万起
