如何在Android中使ImageButton根据屏幕密度自动缩放?

时间:2010-01-12 08:11:44

标签: android imagebutton dpi

我有一张放在ImageButton上的图片,在mdpi( medium-dpi )屏幕上看起来不错。但是,当设备具有hdpi(高dpi )屏幕时,图像仍然是逐像素精确的,在设备屏幕上看起来很小。

如何使图像(以及ImageButton)根据与密度无关的像素( dp dip )进行缩放,而不是像素?

4 个答案:

答案 0 :(得分:8)

android:scaleType="fitXY"

其他选择包括:

fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix

请注意,我很懒,在原始文件夹中使用非常大的PNG图像。

答案 1 :(得分:4)

恕我直言,你应该看起来非常接近NinePatchDrawable 。实际上,tool可以帮助您根据容器的大小调整图标(图片/图标/等等......)的大小。它非常简单,可以满足我的需求。另请参阅this article(部分“NinePatchDrawable”),它解释了NinePatchDrawable机制。

  

NinePatchDrawable图形是一个可伸缩的位图图像   Android会自动调整大小   容纳View中的内容   你把它放在了   背景。一个例子的使用   NinePatch是使用的背景   标准的Android按钮 - 按钮   必须伸展以容纳弦乐   各种长度。一个NinePatch drawable   是一个标准的PNG图像,包括   额外的1像素宽边框。它必须   用扩展名.9.png保存,   并保存到res / drawable /   项目目录。

答案 2 :(得分:4)

正如小金刚提到的,9补丁是你最好的选择。结合资源目录限定符(drawable-hdpidrawable-mdpi等),您可以创建在任何密度和大小上都很好的资产。

可以在Multiple Resolutions Android SDK示例中找到9个补丁和资源目录限定符的示例。半透明,黑色,圆角背景实现为9补丁,具有不同的PNG,用于ldpi,mdpi和hdpi。

答案 3 :(得分:3)

也许您应该只在设备无关像素中指定按钮大小?

android:layout_width="300dip" 
android:layout_height="50dip"