我有一张放在ImageButton
上的图片,在mdpi( medium-dpi )屏幕上看起来不错。但是,当设备具有hdpi(高dpi )屏幕时,图像仍然是逐像素精确的,在设备屏幕上看起来很小。
如何使图像(以及ImageButton
)根据与密度无关的像素( dp 或 dip )进行缩放,而不是像素?
答案 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-hdpi
,drawable-mdpi
等),您可以创建在任何密度和大小上都很好的资产。
可以在Multiple Resolutions Android SDK示例中找到9个补丁和资源目录限定符的示例。半透明,黑色,圆角背景实现为9补丁,具有不同的PNG,用于ldpi,mdpi和hdpi。
答案 3 :(得分:3)
也许您应该只在设备无关像素中指定按钮大小?
android:layout_width="300dip"
android:layout_height="50dip"