Android:'dp'到'px'转换?

Tia*_*sil 12 user-interface android

我正在阅读这篇文章:http://developer.android.com/guide/practices/screens_support.html

它说Android用于在dp单位到px单位之间转换的公式如下:

    px = dp * (dpi / 160)
Run Code Online (Sandbox Code Playgroud)

文章还给出了一个例子,当dpi为240时,它给出了px = 1.5(我正在计算单个dp像素)

但是,1.5究竟是什么意思呢?一旦px单位实际上是物理设备像素,Android会绘制1或2像素吗?

Mar*_*lts 15

这取决于具体情况.

如果在隐含大小的上下文中使用dp值(如android:layout_width属性),则将使用为Resources.getDimensionPixelSize()描述的逻辑.也就是说,px值将四舍五入到最接近的整数值,特殊情况是,如果px > 0,则实际值将至少为1.

如果在隐含偏移的上下文中使用dp值,就像android:insetLeftInset Drawable 的属性一样,将使用为Resources.getDimensionPixelOffset()描述的逻辑.也就是说,px值将简单地截断为整数值.

有时会使用未修改的浮点值,例如Shape Drawable中标记的android:dashWidth属性<stroke/>,但这种情况非常罕见.通常使用大小或偏移逻辑,即使可以使用浮点值.