关于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 simple solution to making 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 simple: 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.
        公式

px = dp * (dpi / 160)

        说明1dp代表了多少个px,下面我们简单的推导一下这个公式。

        首先,dpi是Dots Per Inch的缩写(wiki),表示一英寸内有多少个点,对于UI界面而言,这个点就是像素(Pixel)。

        然后,我们看一下dp的单位:

像素 = 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英寸。

1dp的长度 = 1 * dpi / 160 * 1 / dpi 英寸 = 1 / 160 英寸

  • 结论

        dp等同于dip,它是一个长度单位,1dp=1/160英寸。

        dp这个单位的意义在于:你可以根据看到的实际大小,在应用中设置对应的dp值,而使得不同的设备上看起来一样大。



  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android 中,dip(也称为 dp,即密度无关像素)是一种相对单位,用于处理不同屏幕密度的设备上的尺寸。要修改 dip 的值,你可以通过以下几种方式来实现: 1. 在布局文件中使用 dp 单位:在 XML 布局文件中,可以直接设置控件的尺寸或间距等属性,并使用 dp 单位来指定值。例如: ```xml <TextView android:layout_width="100dp" android:layout_height="50dp" android:text="Hello World" /> ``` 2. 在代码中动态设置 dp 值:在 Java 或 Kotlin 代码中,可以使用 TypedValue 类将 dp 转换为像素值,并将其应用于控件的属性。例如: ```java float dipValue = 20f; float density = getResources().getDisplayMetrics().density; int pixelValue = (int) (dipValue * density); TextView textView = findViewById(R.id.textView); textView.setPadding(pixelValue, pixelValue, pixelValue, pixelValue); ``` 3. 使用 dimen 资源文件定义 dp 值:在 res/values 目录下创建一个 dimens.xml 文件,并在其中定义不同 dp 值的资源项。然后,在布局文件或代码中引用这些资源项。例如: 在 res/values/dimens.xml 文件中: ```xml <resources> <dimen name="text_size">16dp</dimen> </resources> ``` 在布局文件或代码中引用这个资源项: ```xml <TextView android:layout_width="@dimen/text_size" android:layout_height="@dimen/text_size" android:text="Hello World" /> ``` 通过以上方法,你可以方便地修改和使用 dip 单位来处理不同屏幕密度的设备上的尺寸。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值