1.density(密度):描述设备屏幕一个区域内占用多少像素,不一样的设备有不一样的密度,是个概念名称,单位为dpi html
2.dpi:dots per inch ,来表示某一英寸内的像素点,是密度的单位。一个设备可能支持多个分辨率,故dpi会根据像素变化(不少设备支持多分辨率切换) android
3.px(像素):屏幕基本单位 api
4.dp:Density-independent pixel根据设备的density的不一样,计算后与px的比值为 ide
px/dp=当前设备dpi/160
5.inch(英寸):屏幕对角线长度,1 inch = 2.54cm 布局
6.resolution(分辨率):设备屏幕的总像素点 ui
网上看到大多数对dp理解文章,以前也很是笃信。后来实际开发中发现并不仅如此。网上讲的大多只是初步一半的解释,仔细翻过api文档中的朋友会发现: spa
http://developer.android.com/guide/practices/screens_support.html orm
支持多个设备屏幕,不一样设备有不一样的density,dpi会随分辨率变化,dp比值也会变化。故网上大多数讲情景都是设备dp/px=dpi/160相同的2个设备上运行时一致的。但当同一个apk在2个比值不相同的设备上运行时,效果确定有很大差别的。 htm
应用开发都但愿用一个apk能在全部的设备上正常显示,效果一致,不须要再作第2次无用开发。 ip
相信实现过的人,都有不一样的实现方式。
下面是做者基于同一个apk在不一样设备上的情景分析。
1.在同一个设备上,可能支持不一样分辨率,密度不变,dpi会变化:
dp做为单位:此时能自动适应当前设备不一样分辨率,正常显示。而且只须要一个布局文件便可。px做为单位:须要2套不一样分辨率的布局文件
2.不一样设备上,不一样分辨率,不一样密度:
dp做为单位:此时不必定能自动适应设备不一样分辨率,当设备的dpi与以前正常显示的设备一直时,能正常显示。不然,一样须要2套dp的布局才能正常显示,见下图分析。
px做为单位:须要2套不一样分辨率的布局文件
做者在实际开发中,主要是固定电视(最多也就遇到过4个尺寸的,2套分辨率)上开发,大多数仍是用px做为基本单位,2套布局,1套高清资源。由于尽管各个厂家设备密度怎么变化,px永远是基本单位,能作到精确布局,但就是会增长一点维护成本。
在手机开发中,仍是大多数用dp便可。方便快捷,能适应大部分机型。可是部分分辨率和尺寸又小的机子,用dp作不到彻底适配,部分文字过长就会被遮挡。能够用多个value值来适配。
以上是本身的理解,欢迎纠正。