【问题标题】:Android drawable resources: Dynamically change an icon color/"background"?Android可绘制资源:动态更改图标颜色/“背景”?
【发布时间】:2011-09-10 21:19:37
【问题描述】:

我有一个外部透明的 png 文件,在我的 UI 中用作图标图像;我希望用户能够在运行时为其指定不同的颜色(如左下图所示,假设我有 android 图标);或不同的“背景”图像(右下角的图像,假设图标是圆形和三角形组合的形状)。我读了这个post,它使用 ColorFilter 将所有白色像素设置为代码中的另一种颜色;但它不允许我更改图标的“背景”。我想我可能可以用 ClipDrawable 做到这一点,但我不知道怎么做。

【问题讨论】:

  • 对不起,也许我不明白。但是为什么解决方案不仅仅是为布局设置背景颜色,包含带有透明区域的图标图像?
  • @teepee,我想那是因为我不知道该怎么做你刚才说的。

标签: android resources image-manipulation drawable


【解决方案1】:

如果您使用ImageView,您还可以设置图像的来源(android:src),也可以设置图像的背景(android:background)。因此,如果您的图像具有透明区域,或具有 Alpha 通道的区域,则这些像素将使用背景颜色。

然后可以动态更改背景颜色。你能用这种方法吗?

    imageView.setBackgroundColor(0x00FF0000); // red

【讨论】:

  • 感谢您的提示。您能否分享有关如何将带有 alpha 通道的 .png 设置为 imageView 的部分代码?我想要么我设置错误,要么以错误的方式生成了 .png,但背景从未显示出来。
  • 我在 XML 布局中简单地将 png 图像定义为:。在 photoshop 或其他编辑器中检查您的 png 图像,如果透明颜色真的是透明的 - 您可以将其与 android icon.png 进行比较
  • 我想我也尝试了你刚才所说的,结果图像只是一个红色框,没有被 png 剪裁。是的,我检查了,我的 png 有一个透明背景。
  • 抱歉,结果图像显示在红色框的顶部,而不是剪裁了红色框。
  • 哦,现在我明白了,你想要实现什么:)