当前位置:操作系统 > 安卓/Android >>

关于android的单位dp,dip

摘要
        本文介绍了android单位dp,dip的概念,并给出了它的确切含义。
概述
        Android中,dp是Density-independent Pixels简写,而dip则是Density Independent Pixels,实际上指的是一个概念,都是Android的单位。在文档More Resource Types中有描述:
dp
        Density-independent Pixels - An abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi (dots per inch) screen, on which 1dp is roughly equal to 1px. When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Using dp units (instead of px units) is a 易做图 solution to 易做图 the view dimensions in your layout resize properly for different screen densities. In other words, it provides consistency for the real-world sizes of your UI elements across different devices.
 
        单位px代表的是像素,它和ds的转换公式在文档Supporting Multiple Screens中也有描述:
Density-independent pixel (dp)
        A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way.
        The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is 易做图: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities.
        公式
[cpp]  
px = dp * (dpi / 160)  
 
        说明1dp代表了多少个px,下面我们简单的推导一下这个公式。
        首先,dpi是Dots Per Inch的缩写(wiki),表示一英寸内有多少个点,对于UI界面而言,这个点就是像素(Pixel)。
        然后,我们看一下dp的单位:
[plain]  
像素 = dp的单位 * 像素/英寸  
 
        可以看出dp的单位是长度单位英寸,上面dp的定义的最后一句话说明了这一点:In other words, it provides consistency for the real-world sizes of your UI elements across different devices.
        最后,我们看一下1dp的值有多大。1dp对应dpi/160个像素,根据dpi的定义,每个像素的长度为1/dpi英寸,合在一起就是1dp=1/160英寸。
[cpp]  
1dp的长度 = 1 * dpi / 160 * 1 / dpi 英寸 = 1 / 160 英寸  
 
结论
        dp等同于dip,它是一个长度单位,1dp=1/160英寸。
        dp这个单位的意义在于:你可以根据看到的实际大小,在应用中设置对应的dp值,而使得不同的设备上看起来一样大。
 
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,