[译]Android UI设计与样式——dp和sp

时间:2022-06-01 19:29:14

朋友们,最近我一直在做一些Android UI设计和样式的培训课程。 我想和更多观众分享。 这是我的第一个android ui设计和样式教程。 我将在这个主题上写更多的内容。 那么现在开始吧...

DP, SP & Pixels

作为Android开发人员,我们始终希望我们的UI设计与设备无关。 我们的设计应该适用于任何设备和屏幕尺寸。 记住这一点,Android为我们提供了一些单位可以帮助我们实现我们的目标。

DP

DP表示每英寸的点数。 在不同的Android屏幕上,每英寸/每英寸像素的点数可能不同。 现在在这种情况下,如果设计UI时使用像素作为单位,那么在不同的屏幕尺寸上它们看起来不一样。 看看下面的图片,描述不同密度的屏幕上的像素数量。

[译]Android UI设计与样式——dp和sp

你可以看到屏幕的密度越高屏幕的像素数越多。 如果使用像素而不是dp会发生什么。 看看下面的图片。

[译]Android UI设计与样式——dp和sp

屏幕的密度越高,UI元素就显得越小,因为在高密度的屏幕上,较小的区域就可以包含低密度屏幕较大区域的像素数。

DPI的类型

  • ldpi – 每英寸低点数(屏幕上的像素数最少)
  • mdpi – 每英寸中等点数
  • hdpi – 每英寸高点数
  • xhdpi – 每英寸超高点数
  • xxhdpi – 每英寸超超高点数(屏幕上的像素数最多)

[译]Android UI设计与样式——dp和sp

这是我们如何计算每个dpi的像素数。 所以如果你给了一个10dp高的视图,那么它将占据

ldpi屏幕:10 * 0.75像素
mdpi屏幕:10 像素
hdpi屏幕:10 * 1.5像素
xhdpi屏幕:10 * 2

SP

SP或比例无关像素(scale independent pixel)用于字体,与DP非常相似,SP会根据用户偏好的设置。 例如,应用程序中包含10sp文本,用户进入Android设置并将文本大小更改为“大”,则应用程序中定义的文本大小也将更改。 让我们以一个例子来理解它。

<TextView
    android:id="@+id/sp_text"
    android:text="Hello SP"
    android:textSize="40sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

  <TextView
    android:id="@+id/dp_text"
    android:text="Hello DP"
    android:textSize="40dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

现在屏幕看起来像这样:
[译]Android UI设计与样式——dp和sp

现在更改设备文本的大小,如下所示。 (设置 - >显示 - >字体大小)

[译]Android UI设计与样式——dp和sp

现在跳到你的应用程序并阅读文本。 您将发现使用SP定义的文本与使用DP定义的文本大小不同。 你可以在这里找到这个例子

[译]Android UI设计与样式——dp和sp