大家好
这次在练习使用drawable的layer-list
碰到一些问题,上来求助大家
我用xml写了一个 箭头的图案(arrow_shape.xml)
并且想用程式码动态更改颜色
但是因为一个Drawable档案加载至内存之后
为了方便重复使用以及节省资源
所以在内存内的Drawable物件有一个static的变量
去储存它的颜色值
而我会在萤幕上呈现出很多个箭头
箭头的颜色是随机选择的,而箭头旁边会有文字告知正确颜色是什么
碰到问题是箭头的颜色不一定会正确
思考之后发现应该是CPU平行处理的关系
一般来说正常的处理方式是这样
更改颜色→显示在萤幕上
但假设我今天要呈现一个红色箭头(A)跟一个黄色箭头(B)
cpu可能这样跑
A箭头改成红色→B箭头改成黄色→显示A在萤幕上→显示B在萤幕上
结果因为static的颜色值的关系,导致A B都是黄色
请问应该怎么解决才好呢!???
我有查到可以使用mutate()这个method去处理
但是自己尝试使用的结果会导致全部颜色都是第一次随机决定的颜色
请问有人有解法吗...
谢谢各位
以下附上箭头档案以及更改颜色的原始码
arrow_shape.xml
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/arrow">
<shape android:shape="rectangle">
<size
android:width="55dp"
android:height="59dp" />
<solid android:color="#5EB888" />
<corners android:radius="0dp"/>
</shape>
</item>
<item
android:top="55dp"
android:bottom="-30dp"
android:left="-22dp">
<!