HeightPixels / Density实际代表什么?

时间:2016-02-01 08:49:15

标签: android xamarin.android pixel-density

我正在根据设备的大小设置我的应用程序的FontSize。即如果设备低于8“,则使字体小于默认值。

因此,我使用的设备是Lenovo S8-50 8-Inch Tablet,您可以在规范中看到Screen Size: 8 inches

所以查看Github上的一些代码,我看到以下内容:

var d = Resources.System.DisplayMetrics;
this.ScreenHeight = (int)(d.HeightPixels / d.Density);

对于此设备,返回的号码为912,我无法弄清楚此号码与设备的关系。

所以我的问题是这个数字实际代表什么?

1 个答案:

答案 0 :(得分:1)

来自官方文件:

  

与密度无关的像素(dp)   在定义UI布局时应使用的虚拟像素单元,以与密度无关的方式表达布局尺寸或位置。   与密度无关的像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理dp单元的任何缩放。 dp单位到屏幕像素的转换很简单:px = dp *(dpi / 160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。在定义应用程序的UI时,应始终使用dp单位,以确保在不同密度的屏幕上正确显示UI。

这也会有所帮助:

Understanding density independence