4

我想为我的游戏同时显示两辆不同颜色的汽车(比如说红色和蓝色),为此我对两辆汽车使用相同的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)这样做时,两辆车都变成了蓝色!

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

4

1 回答 1

3

我回答我自己的问题:

解决方案是调用mutate()LayerDrawable然后在它内部的任何更改Drawable都不会影响到使用相同资源的另一个,这很神奇!

于 2014-03-25T17:44:03.783 回答