我有一张图片,在 mdpi ( medium-dpi ) 屏幕ImageButton
上看起来不错。但是,当设备具有 hdpi(高 dpi)屏幕时,图像仍然是逐像素精确的,在设备屏幕上看起来很小。
如何使图像(以及因此ImageButton
)基于与密度无关的像素(dp或dip)而不是像素进行缩放?
我有一张图片,在 mdpi ( medium-dpi ) 屏幕ImageButton
上看起来不错。但是,当设备具有 hdpi(高 dpi)屏幕时,图像仍然是逐像素精确的,在设备屏幕上看起来很小。
如何使图像(以及因此ImageButton
)基于与密度无关的像素(dp或dip)而不是像素进行缩放?
android:scaleType="fitXY"
其他选择包括:
fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix
请注意,我很懒,在原始文件夹中使用非常大的 PNG 图像。
正如 ponkin 提到的,9 补丁是你最好的选择。结合资源目录限定符(drawable-hdpi
、drawable-mdpi
等),您可以制作在任何密度和大小下看起来都不错的资产。
可以在Multiple Resolutions Android SDK 示例中找到 9 补丁和资源目录限定符的示例。半透明、黑色、圆角背景被实现为 9 个补丁,其中 ldpi、mdpi 和 hdpi 具有不同的 PNG。
恕我直言,您应该看起来非常接近NinePatchDrawable 。实际上,有一个工具可以帮助您根据容器的大小调整您的图标(图片/图标/其他...)的大小。它真的很简单,可以很好地满足我的需求。另请查看这篇文章(“NinePatchDrawable”部分),它解释了 NinePatchDrawable 机制。
NinePatchDrawable 图形是可拉伸的位图图像,Android 将自动调整其大小以适应您将其作为背景放置的视图的内容。NinePatch 的一个示例使用是标准 Android 按钮使用的背景——按钮必须拉伸以适应各种长度的字符串。NinePatch drawable 是一个标准的 PNG 图像,包括一个额外的 1 像素宽的边框。它必须以扩展名 .9.png 保存,并保存到项目的 res/drawable/ 目录中。
也许您应该只以与设备无关的像素为单位指定按钮大小?
android:layout_width="300dip"
android:layout_height="50dip"