将ColorFilter应用于LayerDrawable中的Drawable

时间:2014-03-24 17:05:30

标签: 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不同的内容,例如插入另一层在车身顶部并乘以它或什么?

1 个答案:

答案 0 :(得分:2)

我回答我自己的问题:

解决方法是为mutate()调用LayerDrawable,然后对其中的Drawable所做的任何更改都不会被重新用于使用相同资源的另一个,&# 39; s magic!