我需要绘制一条三维线来表示一个问答游戏中的水平完成情况。
这条线必须由两种颜色组成。例如,如果用户完成了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代码中重新创建该可绘制对象/在运行时更改XML可绘制对象),但没有成功。
非常感谢您的任何帮助。