📜  了解密度独立像素:sp、dp、dip in Android

📅  最后修改于: 2022-05-13 01:58:44.697000             🧑  作者: Mango

了解密度独立像素:sp、dp、dip in Android

开发 Android 应用程序时要考虑的最关键因素之一是 UI 的响应性。让您的应用在各种设备上看起来都不错,这一点非常重要。移动设备可以具有不同的屏幕尺寸以及不同的像素密度。在设计 Android 应用程序的 UI 时使用常量值来定义大小有时会导致应用程序在一些设备上看起来不错,但在其他一些设备上看起来很不协调。为了避免此类问题,Android 团队开发了使用与密度无关的像素(dp、dip、sp)来定义尺寸的概念。要理解这个概念,我们首先必须了解一些基本术语:

  1. 像素——图像中最小的可寻址元素。
  2. 像素密度——屏幕中每单位面积存在的像素数。屏幕的像素密度可以使用以下公式计算。
Screen density = Screen width (or height) in pixels / Screen width (or height) in inches

了解像素的工作原理

在这里,我们创建了一个组件,使用像素 (2px x 2px) 定义其大小。在可视化它时,我们可以看到完全相同的组件在具有不同屏幕密度的设备上看起来不同。

在不同像素密度的屏幕上查看大小为 2px x 2px 的组件

根据以上图片,可以做出以下观察:

  1. 在像素密度较高的设备上,组件看起来更小,因为屏幕有更多的像素。
  2. 在像素密度较低的设备上,它看起来更大,因为屏幕的像素数量较少。

在构建迎合众多用户的应用程序时,这种差异可能会导致令人不舒服的用户体验。

使用 dp 和 sp

Density Independent Pixel 是一个基于屏幕密度的抽象单位。这些单位与屏幕的密度相关,并根据它进行调整。继上面给出的示例之后,现在让我们使用 dp 来定义组件的大小。

使用 dp 概念创建更具响应性的设计,在所有屏幕尺寸上看起来都成比例

使用 dp 概念创建更具响应性的设计,在所有屏幕尺寸上看起来都成比例

现在,您可以看到,通过使用 dp,组件占用的像素数与屏幕密度成正比。即占用的像素数随着像素密度的增加/减少而增加/减少。这允许开发人员根据屏幕大小和密度调整其小部件的大小,从而创建在所有移动设备上看起来都很棒的用户界面。 dp 和 sp 都遵循这个概念,并且可以几乎相同地使用,尽管有一些区别。

dp

sp

It stands for density-independent pixel. It is also sometimes denoted as dip.It stands for scale independent pixel.
It used for defining the sizes in all widgets, ranging from TextView to LinearLayoutIt is used for defining text size, as it scales according to the font size preference on a mobile device.

例子

在这里,我们使用上面学到的概念创建了一个响应式 Button 组件,使用 dp 定义其高度和重量,同时使用 sp 定义文本大小。

XML