3

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

如何使图像(以及因此ImageButton)基于与密度无关的像素(dpdip)而不是像素进行缩放?

4

4 回答 4

8
android:scaleType="fitXY"

其他选择包括:

fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix

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

于 2012-06-08T11:52:01.807 回答
4

正如 ponkin 提到的,9 补丁是你最好的选择。结合资源目录限定符(drawable-hdpidrawable-mdpi等),您可以制作在任何密度和大小下看起来都不错的资产。

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

于 2010-01-13T00:53:43.680 回答
4

恕我直言,您应该看起来非常接近NinePatchDrawable 。实际上,有一个工具可以帮助您根据容器的大小调整您的图标(图片/图标/其他...)的大小。它真的很简单,可以很好地满足我的需求。另请查看这篇文章(“NinePatchDrawable”部分),它解释了 NinePatchDrawable 机制。

NinePatchDrawable 图形是可拉伸的位图图像,Android 将自动调整其大小以适应您将其作为背景放置的视图的内容。NinePatch 的一个示例使用是标准 Android 按钮使用的背景——按钮必须拉伸以适应各种长度的字符串。NinePatch drawable 是一个标准的 PNG 图像,包括一个额外的 1 像素宽的边框。它必须以扩展名 .9.png 保存,并保存到项目的 res/drawable/ 目录中。

于 2010-01-12T10:39:18.720 回答
3

也许您应该只以与设备无关的像素为单位指定按钮大小?

android:layout_width="300dip" 
android:layout_height="50dip"
于 2010-01-12T10:51:05.983 回答