Android 可绘制资源:动态更改图标颜色/“背景”?

发布于 2024-12-04 11:16:44 字数 474 浏览 1 评论 0原文

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

A: 假设我有 android 图标 B: 假设图标是一个圆形和三角形组合的形状)

I have a png file that is transparent outside which is used as an icon image somewhere in my UI; I'd like for the user to be able to specify a different color for it at runtime (as in the image on the left below, assuming I have the android icon); or a different "background" image (Image on the right below, suppose the icon is a shape combining a circle and a triangle). I read this post which used ColorFilter to set all the white color pixels to another color in code; but it doesn't allow me to change the "background" of the icon. I guess I probably can do this with a ClipDrawable but I can't figure out how.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怂人 2024-12-11 11:16:44

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

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

    imageView.setBackgroundColor(0x00FF0000); // red

If you use ImageView, you can set also the source of image (android:src) but also background for the image (android:background). So if your image has a transparent region, or region with alpha channel, the background color will be used for these pixels.

The background color then can be changed dynamically. Can you use this approach?

    imageView.setBackgroundColor(0x00FF0000); // red
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文