使用“dp”而不是其他的方法是明智的吗?

问题描述:

在Android中,当我测量时,使用DP或其他方法是否明智?我害怕dp可能会随着设备的不同而变化,而且除了我的手机以外,我的应用程序看起来都很糟糕。使用“dp”而不是其他的方法是明智的吗?

你应该总是使用dp。如果你需要在像素值,你可以使用此方法 -

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

总是使用

密度独立的像素

如果你看一下reference文档,你会看到这是DP点。具体来说,

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

所以,除非你想限制在一个单一的屏幕大小和密度,否则总是使用dp。

卡西姆,dp或dip是为了防止你害怕什么而发明的。看看这篇文章:http://developer.android.com/guide/practices/screens_support.html,以及这个其他问题:What is the difference between "px", "dp", "dip" and "sp" on Android?

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

由于所有这些单位都基于实际的物理尺寸,所以您的UI元素将在任何设备上保持相同的物理尺寸。