android屏幕显示相关字段的理解

亡梦爱人 提交于 2020-01-07 12:18:43

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一、字段

1.density(密度):描述设备屏幕一个区域内占用多少像素,不同的设备有不同的密度,是个概念名称,单位为dpi

2.dpi:dots per inch ,来表示某一英寸内的像素点,是密度的单位。一个设备可能支持多个分辨率,故dpi会根据像素变化(很多设备支持多分辨率切换)

3.px(像素):屏幕基本单位

4.dp:Density-independent pixel根据设备的density的不同,计算后与px的比值为

px/dp=当前设备dpi/160

5.inch(英寸):屏幕对角线长度,1 inch = 2.54cm

6.resolution(分辨率):设备屏幕的总像素点


二、dp和px使用理解

网上看到大多数对dp理解文章,之前也非常笃信。后来实际开发中发现并不只如此。网上讲的大多只是初步一半的解释,仔细翻过api文档中的朋友会发现:

Supporting Multiple Screens

http://developer.android.com/guide/practices/screens_support.html


支持多个设备屏幕,不同设备有不同的density,dpi会随分辨率变化,dp比值也会变化。故网上大多数讲情景都是设备dp/px=dpi/160相同的2个设备上运行时一致的。但当同一个apk在2个比值不相同的设备上运行时,效果肯定有很大差异的。


应用开发都希望用一个apk能在所有的设备上正常显示,效果一致,不需要再做第2次无用开发。

相信实现过的人,都有不同的实现方式。

下面是作者基于同一个apk在不同设备上的情景分析。

1.在同一个设备上,可能支持不同分辨率,密度不变,dpi会变化:

dp作为单位:此时能自动适应当前设备不同分辨率,正常显示。并且只需要一个布局文件即可。

px作为单位:需要2套不同分辨率的布局文件


2.不同设备上,不同分辨率,不同密度:


dp作为单位:此时不一定能自动适应设备不同分辨率,当设备的dpi与之前正常显示的设备一直时,能正常显示。否则,同样需要2套dp的布局才能正常显示,见下图分析。



px作为单位:需要2套不同分辨率的布局文件



三、总结:

作者在实际开发中,主要是固定电视(最多也就遇到过4个尺寸的,2套分辨率)上开发,大多数还是用px作为基本单位,2套布局,1套高清资源。因为尽管各个厂家设备密度怎么变化,px永远是基本单位,能做到精确布局,但就是会增加一点维护成本。

在手机开发中,还是大多数用dp即可。方便快捷,能适应大部分机型。但是部分分辨率和尺寸又小的机子,用dp做不到完全适配,部分文字过长就会被遮挡。可以用多个value值来适配。


以上是自己的理解,欢迎
纠正。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!