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

  • 本文关键字:是不同 Android 50dip android
  • 更新时间 :
  • 英文 :


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

前面的两个答案都是正确的。问题在于,不仅会改变总像素的大小,还会改变总像素数。

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

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


public static final int layout_width               Since: API Level 1

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

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

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

你弄错了,Galaxy Tab HDPI,Acer Tab MDPI
50dips 是 MDPI 设备上的 50 像素或HDPI设备上的 75 像素,这应该转换为大致相同的物理大小。

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

来自: 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。

最新更新