Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “使用”是否明智;dp";而不是别的什么?_Android_Pixel_Measurement - Fatal编程技术网

Android “使用”是否明智;dp";而不是别的什么?

Android “使用”是否明智;dp";而不是别的什么?,android,pixel,measurement,Android,Pixel,Measurement,在安卓系统中,当我测量时,使用DP或其他东西是否明智?我担心dp可能会随着设备的不同而变化,我的应用程序在手机以外的任何设备上都会很糟糕。始终使用dip 密度无关像素 如果你看一下文档,你会发现这就是dp的要点。具体来说, 密度无关像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假设的基线密度。在运行时,系统根据所用屏幕的实际密度,根据需要透明地处理dp单元的任何缩放。dp单元到屏幕像素的转换很简单:px=dp*(dpi/160)。例如,在240 dpi屏幕上,1 dp等

在安卓系统中,当我测量时,使用DP或其他东西是否明智?我担心dp可能会随着设备的不同而变化,我的应用程序在手机以外的任何设备上都会很糟糕。

始终使用dip

密度无关像素

如果你看一下文档,你会发现这就是dp的要点。具体来说,

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


因此,除非你想限制在单一屏幕大小和密度范围内,否则一定要使用dp。Qasim、dp或dip的发明是为了防止你的恐惧。查看本文:,以及其他问题:

您应该始终使用dp。如果需要以像素为单位的值,可以使用此方法-

public static int dpToPixels(Context context, float dp) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dp * scale + 0.5f);
}

除了
dp
,您还可以使用
pt
(点=1/72英寸)、
(英寸)和
mm
(毫米)

由于所有这些单元都基于实际的物理大小,因此您的UI元素在任何设备上都将保持相同的物理大小