Android:无论设备如何,如何绘制相同大小的ImageView?

时间:2011-05-12 14:11:45

标签: android

我想在我的应用程序中放置一个工具栏。工具栏将使用ImageViews作为应用程序按钮。无论设备如何,我都希望ImageViews的尺寸完全相同; “相同尺寸”我的意思是,当渲染到屏幕上时,如果我用尺子测量它们,尺寸将是相同的。我希望这个尺寸大约10毫米(食指的宽度)。

我完全没有成功完成这项工作。

我正在测试MDPI,大屏幕Acer Iconia Tab和HDPI中画面三星Galaxy Tab。如果我设置layout_width="50dip"layout_height="50dip",按钮在三星上呈现~10mm,在宏碁上呈现~8mm。如果我将按钮设置为layout_width="12mm"layout_height="12mm",它们在Acer上渲染为12mm,在Galaxy上渲染为~9mm(令人困惑的是,50dip在Galaxy上的渲染比Acer更大,但12 mm渲染时更小银河比宏碁)。

如果我在drawable-mdpi文件夹中放置一个32pix x 32pix图标(并且在drawable-hdpi文件夹中没有等效文件),并设置layout_width="wrap_content"layout_height="wrap_content";结果类似于如果设置为50dip,三星约为10mm,宏基约为8mm。如果我将一个48pix x 48pix图标添加到我的drawable-hdpi文件夹中,则没有变化;大概是因为Acer仍然使用mdpi图标而三星使用较大的图标,但是将其缩小了50%,因为它知道它的hdpi(如果我确信这种令人惊讶的缩放是因为如果我将48pix图标移动到mdpi文件夹,在hdpi文件夹中没有任何内容,三星上的图标显示非常大。

我很困惑,可以真正使用建议。无论dpi和屏幕尺寸如何,如何使我的按钮指尖大小?

3 个答案:

答案 0 :(得分:1)

好的,我终于弄清楚发生了什么:

问题是图像按钮的宽度指定为10mm, 在我的Galaxy标签上显示约7毫米,在我的Iconia标签上显示约9毫米。 这种相当显着的差异有两个原因:

  1. Iconia选项卡在其实际xdpi时报告其xdpi为~160 是~150。
  2. Honeycomb使用新的drawable作为其按钮背景 比Froyo的抽奖幅度小得多。
  3. 问题1占差异的约0.6毫米,问题2账户 其余的。问题2可以通过选择其中之一来解决 背景,将其与应用程序打包,并将其指定为 ImageButton的背景。问题1无法解决,但一旦发出问题2,它产生的差异就相对较小 用。

答案 1 :(得分:0)

您有两种基本方法:

  1. 使用提供的资源标识符 - hdpi / ldpi / etc - 并且只依赖操作系统。

  2. 在DisplayMetrics类中使用xdpi / ydpi。它们应该返回每英寸的精确物理像素,并使用相应的比例因子手动缩放图像。当然,这会降低性能。更重要的是 - 我不确定这些读数是否正确。

答案 2 :(得分:0)

你是否尝试过no-dpi资源标识符。老实说,我不确定你会从中得到什么,但值得一试。