【问题标题】:Apply ColorFilter to a Drawable inside a LayerDrawable将 ColorFilter 应用于 LayerDrawable 内的 Drawable
【发布时间】:2014-05-02 04:42:07
【问题描述】:

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

<?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,例如在顶部插入另一层车身和乘以它还是什么?

【问题讨论】:

  • @Hamid Shatu 而不是只编辑我的帖子.. 你能回答吗?甚至尝试?
  • @Vyger 是的,你是对的,我并没有假装他知道解决方案,但是“刚刚编辑了你的问题,抱歉无法回答”就足够了,但没关系。考虑到答案,我正在考虑“改变”颜色Drawable,这样好吗?
  • @Der Golem,这对我有用,虽然感觉有点笨拙。我可以让我的drawable改变颜色,但它的尺寸也在改变,我想是因为它是一个插图内的形状。因此,在这种情况下,每种颜色都有一个单独的图层列表。

标签: android colorfilter layerdrawable


【解决方案1】:

我回答我自己的问题:

解决方案是为LayerDrawable 调用mutate(),然后对其中的Drawable 进行任何更改都不会影响到使用相同资源的另一个,这很神奇!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    相关资源
    最近更新 更多