px, dip, dp, 和sp这些单位有什么不同?
px, dip, dp, 和sp这些单位有什么不同?
SDP
库)。
ADDED2 Google 终于理解了 iOS Storeboard UI 概念的有用性,推出了适用于 Android 的 ConstraintLayout
:使用 ConstraintLayout 构建响应式用户界面。1) dp:(密度无关像素)
一个dp单位中表示的像素数随着屏幕分辨率的增加而增加(即每英寸有更多的点/像素)。相反,在低分辨率设备上,一个dp单位中表示的像素数将会减少。由于这是一个相对单位,需要有一个基准进行比较。这个基准是160 dpi的屏幕。这是方程式:px = dp * (dpi / 160)
。
2) sp:(比例缩放像素)
此单位根据屏幕dpi(类似于dp)以及用户的字体大小偏好进行缩放。
3) px:(像素)
屏幕上实际的像素或点。
欲了解更多详细信息,请访问:
ldpi
、mdpi
、hdpi
、xhdpi
、xxhdpi
和xxxhdpi
几类。 屏幕密度是指在屏幕上每个单位面积内(如英寸)的像素数量。通常是以每英寸点数(dpi
)来衡量。
PX(像素):
px
是我们通常所用的标准像素,它映射到屏幕像素上。 px
用于表示绝对像素。如果你想给出宽度或高度的绝对像素值,请不要使用它。
DP / DIP(密度无关像素):
dip == dp
。Android早期版本中使用dip,后来改为了dp
。这是px
的替代品。
通常我们不使用px
,因为它是绝对值。如果你使用px
设置宽度或高度,并且该应用程序正在下载到不同尺寸的设备中,那么该视图将不会根据屏幕原始大小进行拉伸。
强烈建议使用dp
代替px
。如果要根据屏幕大小动态调整宽度和高度,请使用dp
。
如果给出dp / dip
,Android会自动基于160像素大小的屏幕计算像素大小。
SP(比例无关像素):
基于用户字体大小偏好进行缩放。字体应使用sp
。
提及适合各种屏幕尺寸的字体大小时,请使用 sp
。这与 dp
相似。尤其在需要根据屏幕尺寸动态增大和缩小字体大小时,请使用 sp
Android 文档说明:
指定尺寸时,请始终使用
dp
或sp
单位。dp
是密度无关像素,对应于 160dpi
的物理像素大小。sp
是相同的基本单位,但会根据用户的首选文本大小进行缩放(它是独立于比例的像素),因此定义文本大小时应使用此测量单位。
屏幕像素密度和分辨率因平台而异。设备无关像素和可缩放像素是提供跨平台设计灵活性的单位。
一英寸内适合的像素数称为像素密度。高密度屏幕比低密度屏幕每英寸有更多像素...
一英寸内适合的像素数称为像素密度。高密度屏幕比低密度屏幕每英寸有更多像素。因此,相同像素尺寸的 UI 元素在低密度屏幕上看起来更大,在高密度屏幕上看起来更小。
您可以使用以下公式计算屏幕密度:
屏幕密度 = 屏幕宽度(或高度)中的像素数 / 屏幕宽度(或高度)英寸数
屏幕像素密度和分辨率因平台而异。设备无关像素和可缩放像素是提供跨平台设计灵活性的单位。
计算像素密度
一英寸内适合的像素数称为像素密度。高密度屏幕比低密度屏幕每英寸有更多像素...
密度无关性是指在不同屏幕密度下对UI元素进行统一显示。
密度无关像素,简称dp(发音为“dips”),是一种灵活的单位,其尺寸能够在任何屏幕上保持一致。 Material UI使用密度无关像素来在不同密度的屏幕上一致地显示元素。
sp: 可缩放独立像素
应该在文本中使用,因为它会根据用户在设备上使用的字体大小自动缩放。
px: 像素或图片元素是屏幕上的单个点
像素(px) - 对应于屏幕上实际的像素。如果您想以绝对像素宽度或高度给出,则使用此选项。
密度无关像素(dp或dip) - 这是一种基于屏幕物理密度的抽象单位。这些单位相对于160 dpi屏幕,因此一个dp在160 dpi屏幕上等于一个像素。 dp到像素的比率会随着屏幕密度而变化,但不一定成正比例。 注意:编译器接受“dip”和“dp”,但“dp”与“sp”更一致。
缩放无关像素(sp) - 这类似于dp单位,但还根据用户的字体大小偏好进行缩放。建议您在指定字体大小时使用此单位,以便将它们调整为屏幕密度和用户偏好。
始终仅使用dp和sp。对于字体大小,请使用sp,对于其他所有内容,请使用dp。这将使UI适用于具有不同密度的Android设备。 您可以从以下链接了解有关像素和dp的更多信息: https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp-
来源网址:- http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/
我想提供一种易于理解dp
的方法。实际上,我认为dp
是最容易理解的。 dp
只是一个物理长度单位。它与mm
或inch
具有相同的维度。我们写50dp
,60dp
比写50/160英寸
或60/160英寸
方便,因为一个dp
无论屏幕大小或分辨率如何都是1/160英寸
。
唯一的问题是,某些屏幕的 android dpi 不精确。例如,被分类为 160dpi 的屏幕可能实际上有 170dpi。因此,dp
的计算结果是模糊的。应该大约相当于1/160英寸
。
SDP - 是一种可扩展的尺寸单位,它基本上不是一个单位,而是针对不同屏幕尺寸的维度资源。
尝试使用 Intuit 公司的sdp库。它非常方便地解决了尺寸单位问题,可以快速支持多屏幕。
用法
android:paddingBottom="@dimen/_15sdp"
代表正数,android:layout_marginTop="@dimen/_minus10sdp"
代表负数。
sdp在values-sw<N>dp
文件夹中为每个大小提供了相应的dp值(sw = smallestWidth)。
注意
请谨慎使用!在大多数情况下,您仍需要为平板电脑设计不同的布局。
示例
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_minus10sdp"
android:paddingBottom="@dimen/_15sdp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="♡"
android:textColor="#ED6C27"
android:textSize="@dimen/_70sdp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="U"
android:textColor="@android:color/black"
android:textSize="@dimen/_70sdp" />
</LinearLayout>
您可以使用db来控制文本大小,但我更喜欢使用ssp来控制文本大小。
px
、dp
和sp
之间进行转换 - Suragch