如何创建外观漂亮的可绘制对象。

3

我需要一些小图标用于我的应用程序。我将它们放在15dp * 15dp的大小中,并放置在布局XML文件中。问题是它们在设备上看起来不好。如果我查看标准的Android图标,例如刷新,它们看起来非常清晰。

我所做的是,使用Gimp创建了一个15 * 15像素的图像并尝试使用它。我猜这不是一个好方法,因为15dp!= 15 px,对吧?即使需要小图标,创建漂亮、好看的图标的通常工作流程是什么?

2个回答

13
密度无关像素(即 XML 中的 dip 或 dp)旨在通过将 UI 缩放到每个设备上看起来大致相同的大小,从而提供更一致的视觉外观。这与物理尺寸缩放并不完全相同,而是屏幕的像素密度(dpi)。基本上,任何设备都可以分为四个桶(ldpi、mdpi、hdpi、xhdpi)。dp 单位是模拟 mdpi,并且所有其他桶都是从那里调整的比例因子。换句话说,在 mdpi 设备上,15dp 确实等于 15px,但在其他设备上不是。
为了获得最佳性能,您需要创建四种尺寸的图标,并将它们放置在相应的 drawable/ 目录中。例如,对于您的 15dp 图标,您应该有:
- 在 res/drawable-ldpi 文件夹中具有 12x12px 的图像(LDPI 是 MDPI 的 75%)。 - 在 res/drawable-mdpi 文件夹中具有 15x15px 的图像(MDPI 是基础)。 - 在 res/drawable-hdpi 文件夹中具有 23x23px 的图像(HDPI 是 MDPI 的 150%)。 - 在 res/drawable-xhdpi 文件夹中具有 30x30px 的图像(XHDPI 是 MDPI 的 200%)。
应用程序将获取与运行设备的分辨率匹配的正确资产。如果您没有为每个级别创建资产,则应用程序将获取最接近的匹配项并将其缩放(您可能正在使用 HDPI 设备进行测试,并且您的 15px 图像被缩放到 23px,从而导致像素化)。
希望对你有所帮助!

我想为你的答案投票,但我还不能^^ 感谢你的回复,明天上班时我会尝试它。 - Pathos
没问题。虽然你可能还不能投票,但如果这个答案对你有用,你可以点击投票小部件下面的复选标记来接受它 ;) - devunwired

1
根据此页面所述,dp是一个与比例无关的像素单位:160dp在您的屏幕上总是等于1英寸。这应该回答了您是否像素是dp的问题:只有支持160dpi的屏幕才是这种情况。这远远高于现今常见的PC屏幕(96 dpi)的像素密度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接