问题描述
我搜索了很多有关dp,px,inch,pt等的信息。
据我对'dp'的了解:
指定'dp'只是使Android在具有不同屏幕密度的设备上以相同大小绘制视图的一种方式。例如,对于中等密度的设备,每个“ dp”将占据一个像素。对于高密度设备-具有较小的像素以适合每英寸更多的像素,“ dp”将占据更多的像素。对于低密度设备-像素较大,每英寸可容纳更少的像素,则'dp'所占的空间将小于一个像素。
但是我还读到的是,“ dp”所占据的空间根据屏幕尺寸而变化,即,对于小屏幕,“ dp”将占据较少的空间,而对于大屏幕,“ dp”将占据较大的空间。 。 这到底是怎么发生的?据我对“ dp”的了解,它在屏幕尺寸不同的设备中应占据相同的空间。例如,240 dpi的大屏幕的“ dp”占1.5个像素,对于240 dpi的小屏幕也是如此。那么,“ dp”对于不同的屏幕尺寸会占用不同的空间量吗?
我对'dp'的理解中缺少什么?请帮忙。
解决方法
在Android操作系统上,与设备无关的像素等效于160 dpi屏幕上的一个物理像素。通过此定义,您可以理解p与屏幕尺寸无关,因为比例已经固定为160 dpi。
。
,Android定义的基准dpi为 160 ,用作参考来计算所有屏幕密度的尺寸:
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单位的增加/减少,绘制所需的像素区域将转化为保持相同的尺寸比例,而与设备屏幕无关。
official documentation中的更多信息。
要更加清楚:
显示尺寸与“ dp单位”无关。显示尺寸就是显示画布的大小。屏幕DPI定义1平方英寸中可以容纳多少个点。 “ dp单位”是一种抽象单位,它可以根据设备的DPI进行缩放(放大或缩小),以使用160作为基线参考来在任何屏幕尺寸上给出“统一尺寸”。