2011-09-10 112 views
2

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

A: Suppose I have the android icon B: Suppose the icon is a shape combining a circle and a triangle)

+0

对不起,也许我不明白。但为什么解决方案不仅仅是为布局设置背景颜色,将透明区域包含图标图像? –

+0

@teepee,我认为那是因为我不知道如何去做你刚才陈述的内容。 – mobileTofu

回答

1

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

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

imageView.setBackgroundColor(0x00FF0000); // red 
+0

感谢您的提示。你可以分享一部分代码,以便如何设置带有alpha通道的.png到imageView?我想我要么以错误的方式设置它,要么以错误的方式创建了.png,但背景从未透露过。 – mobileTofu

+0

我简单地在XML布局中定义了png图像:。在photoshop或其他编辑器中检查你的PNG图像,如果透明色真的是透明的 - 你可以将它与android icon.png –

+0

进行比较我认为我也尝试了你刚才所说的,所得到的图像只是一个红色框,没有被PNG剪辑。是的,我检查,我的PNG有一个透明的背景。 – mobileTofu