gpt4 book ai didi

Android:使用类似于 webkit mask 的方法为图像赋予任何颜色

转载 作者:行者123 更新时间:2023-11-30 02:47:40 25 4
gpt4 key购买 nike

我和我的搭档想以类似于 CSS 中的 webkit 掩码的方式为我们的 Android 应用程序中的图标(具有透明背景的 png 图像)提供动态颜色:

<div style="background-color: #34daa1; width: 60px; height: 60px; -webkit-mask-image: url('http://i.stack.imgur.com/gZvK4.png');"></div>

我们认为这比为每种颜色添加图像要好得多...:(是否可以?

非常感谢...

最佳答案

将颜色应用于图像可能有点棘手,因为该平台会尽力为您提高效率。当您添加多个具有相同资源的图像时,平台将只保存一个对图像的引用并将多个 View 指向它。这在 ListViews 等情况下可能会出现问题,其中您可能有一个图像按钮根据适配器项中的某些数据启用或变灰。如果您有一个包含同一图像的十个副本的 View ,并且您修改了图像,则所有十个都是更改,因为它们在幕后引用了相同的资源。为了解决这个问题,您可以在需要时改变 Drawable 以确保获得干净的副本。

这是一篇来自 Google 的 Romain Guy 关于这个主题的好文章。

http://www.curious-creature.org/2009/05/02/drawable-mutations/

此外,这是我如何使用突变在图像顶部应用滤色器的示例

/**
* Applies a specified color filter to a Drawable.
*
* @param drawable drawable to filter.
* @param color color to apply.
* @return a mutated Drawable.
*/
private static Drawable applyColorFilter(Drawable drawable, int color) {
Drawable mutate = drawable.mutate();
mutate.setColorFilter(color, PorterDuff.Mode.SRC_IN);
return mutate;
}

因此,要应用灰度滤镜,您需要执行以下操作:

/**
* Applies a color filter to a Drawable.
*
* @return a mutated version of the given drawable with a color filter
* applied.
*/
public static Drawable convertToGrayScale(Drawable drawable) {
if (drawable == null) {
return null;
}
return applyColorFilter(drawable, Color.LTGRAY);
}

关于Android:使用类似于 webkit mask 的方法为图像赋予任何颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com