我必须画一条 3dp 线来表示智力竞赛游戏中的关卡完成情况。
这条线必须有 2 种颜色。例如,如果用户已经完成了 40% 的关卡,那么前 40% 的线将是红色的,其他 60% 的线是灰色的。
我已经设法用 drawable 做到了:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="line" >
<size android:height="3dp" android:width="40dp"/>
<stroke
android:width="1dp"
android:color="#FFFC10" />
</shape>
</item>
<item android:left="40dp">
<shape android:shape="line" >
<size android:height="3dp" android:width="60dp" />
<stroke
android:width="1dp"
android:color="#DDDDDD" />
</shape>
</item>
</layer-list>
然后我用 ImageView 显示它:
<ImageView
android:id="@+id/row_completion_bar"
android:src="@drawable/completion_bar"
android:layout_width="100dp"
android:layout_height="3dp" />
...但是现在,我当然必须能够根据实际用户的完成情况来更改这 40%/60% 的比例。
第一个问题:最好最有效的方法是什么?在运行时更改可绘制对象?或在 Java 运行时创建一个新的可绘制对象?
第二个问题:怎么做?我尝试了两种方法(在java代码中重新创建这个drawable/在运行时改变xml drawable)并且没有成功:-(
任何帮助将不胜感激。