android - 将 ColorFilter 应用于 LayerDrawable 中的 Drawable

标签 android colorfilter layerdrawable

我想在我的游戏中同时显示两辆不同颜色的汽车(比如红色和蓝色),为此我使用相同的 LayerDrawable(设置为图像两辆车的 ImageView 资源:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/car_backstuff"/>
    <item android:drawable="@drawable/car_body"/>
    <item android:drawable="@drawable/car_frontstuff"/>
</layer-list>

问题是,当我想给汽车上色时,我会这样做:

_layerDrawable.getDrawable(1).setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);_

但是当我为第二辆车这样做时(即使用 Color.BLUE)BOTH 汽车变成蓝色!

我知道这是因为它引用相同的资源(在这种情况下为 R.drawable.car_body),但我想知道是否有办法为每辆车应用不同的 ColorFilter,例如在车身顶部插入另一层并将其相乘之类的?

最佳答案

我回答我自己的问题:

解决方案是为 LayerDrawable 调用 mutate() ,之后对 Drawable 的任何更改都不会被重新执行另一个使用相同的资源,太神奇了!

关于android - 将 ColorFilter 应用于 LayerDrawable 中的 Drawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22615945/

相关文章:

android - 我想在我当前的位置周围画一个圆圈,并在我的 android 谷歌地图上找出这个圆圈范围内的其他用户

android - PorterDuffColorFilter 更改我的 recyclerview 中的所有图标

android - 我们可以在两个不同的 Activity 类中使用一个 fragment 吗

android - 从 React native App 中的 WebView 打开动态链接

android - android.os.Looper 中的方法 myLooper 未使用协程模拟

android - 在android中设置具有动态颜色的 map 标记图标

android - 横跨 View 的对角线

android - 为什么ViewPager向左滚动时颜色过渡动画错误?

android - 如何以编程方式制作带笔划的圆形可绘制对象?