Android:50dip在不同设备上的大小不同?

时间:2011-05-11 14:11:34

标签: android

我对密度无关像素的理解是,无论屏幕dpi和尺寸如何,它都会呈现相同的大小。我创建了一个高度为50dip的图像按钮。在我的中型dpi三星Galaxy Tab上,这个按钮尺寸约为10mm x 10mm(用尺子测量。在我的大型hdpi Acer Iconia标签上,按钮的尺寸约为7mm x 7mm。我原本预计两个按钮的尺寸相同我做错了什么,或者我的理解不正确?

3 个答案:

答案 0 :(得分:2)

你的方法是错误的,Galaxy Tab是HDPI而Acer Tab是MDPI
50个像素在MDPI设备上为50像素,在HDPI设备上为75像素,应该转换为大致相同的物理尺寸。

然而,由于3.0平板电脑的屏幕尺寸要大得多,因此情况略有不同。在这些情况下,通常使用HDPI资产可以提供更好的尺寸。

答案 1 :(得分:2)

以前的答案都是正确的。问题在于不仅改变了内部的大小,还改变了总像素的数量。

对于解决方案,您需要在res/layout-normalres/layout-large中创建不同的xml布局文件,以调整屏幕分辨率更改。尽管如此,鉴于这些文件夹对设备范围进行了分组,您的尺寸会有所不同。

或者,如果您对视图严格要求特定的固定大小,请将其宽度和高度设置为"10mm"


public static final int layout_width               Since: API Level 1
  

指定视图的基本宽度。这是包含布局管理器内任何视图的必需属性。它的值可以是恒定宽度的维度(例如“12dip”)或特殊常量之一。

     

可以是维值,它是附加有诸如“14.5sp”的单位的浮点数。可用单位为:px(像素),dp(与密度无关的像素),sp(基于首选字体大小的缩放像素),英寸(mm),毫米(毫米)。

http://developer.android.com/reference/android/R.attr.html#layout_width


有关屏幕尺寸,分辨率和dpi值的列表,请查看:http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density

要计算实际dpi值,请点击此处:http://en.wikipedia.org/wiki/Pixel_density#Calculation_of_monitor_PPI

答案 2 :(得分:0)

来自:http://developer.android.com/guide/practices/screens_support.html(强调补充)

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