Android - dp在不同尺寸的设备中如何占据不同的space?

Android - How does dp occupy different space in devices with different sizes?

我搜索了很多有关 dp、px、inch、pt 等的信息

根据我对'dp'的理解:

指定 'dp' 只是一种使 Android 为具有不同屏幕密度的设备绘制相同大小的视图的方法。例如,对于中密度设备,每个 'dp' 将占用一个像素。对于高密度设备 - 它具有更小的像素以适应每英寸更多的像素,'dp' 将占用超过一个像素。对于低密度设备 - 它具有更大的像素以适应每英寸更少的像素,'dp' 将占用不到一个像素。

但我还看到 space 被 'dp' 占用根据屏幕尺寸而变化,即对于小屏幕,'dp' 将占用更少 space ,而对于更大的屏幕,'dp' 将占据更大的 space。 这到底是怎么发生的?根据我对 'dp' 的理解,它应该在具有不同屏幕尺寸的设备中占据相同数量的 space。例如,240 dpi 的大屏幕将'dp' 占用1.5 个像素,240 dpi 的小屏幕也是如此。那么,对于不同的屏幕尺寸,'dp' 将如何占用不同数量的 space?

我对 'dp' 的理解遗漏了什么?请帮忙

在 Android 操作系统上,一个 device-independent 像素相当于 160 dpi 屏幕上的一个物理像素。通过这个定义,你可以理解 dp 与屏幕尺寸无关,因为比例已经固定为 160 dpi。

.

Android 定义了 160 的基线 dpi,用作 reference 来计算所有屏幕密度的尺寸:

pixel_size * (device_dpi / baseline_dpi) = result in "dp" units

>> or the other way around 

dp_size / (device_dpi / baseline_dpi) = result in "pixel" units

因此,240dpi 设备中的 1 个像素相当于 1.5dp 单位:

1 * (240 / 160) = 1.5

反之,240dpi 设备中的 1.5dp 单位相当于 1 个像素

1.5 / (240 / 160) = 1

需要知道的重要事实是 160 是用作所有 DPI 的 参考 的基线。 因此,作为 dp 单位 increase/decrease,绘制内容所需的像素区域转化为无论设备屏幕如何都保持相同的尺寸比例。

official documentation 中的更多信息。

更清楚:

显示尺寸与“dp 单位”无关。显示大小就是显示 canvas 有多大。屏幕 DPI 定义了 1 平方英寸内有多少个点。 “dp 单位”是一个抽象单位,根据设备的 DPI,通过使用 160 作为基线参考,缩放(向上或向下)以在任何屏幕尺寸上给出“统一尺寸”。