Tôi phải vẽ đường 3dp để thể hiện mức hoàn thành trong trò chơi quizz.Cách tạo hoặc thay đổi một cách có thể vẽ được bằng các đường kẻ có các màu khác nhau
Dòng này phải có 2 màu. Ví dụ: nếu người dùng đã hoàn thành 40% cấp độ, dòng sẽ có màu đỏ cho 40% đầu tiên của dòng, 60% còn lại là màu xám.
Tôi đã cố gắng làm điều đó với một 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>
Và sau đó tôi hiển thị nó với một ImageView:
<ImageView
android:id="@+id/row_completion_bar"
android:src="@drawable/completion_bar"
android:layout_width="100dp"
android:layout_height="3dp" />
... nhưng bây giờ, tôi phải đương nhiên có thể thay đổi tỷ lệ 40%/60% này tùy thuộc vào hoàn thành người dùng actuel.
Câu hỏi đầu tiên: cách tốt nhất hiệu quả nhất để làm điều đó là gì? Thay đổi drawable tại thời gian chạy? hoặc tạo một drawable mới khi chạy trong Java?
Câu hỏi thứ hai: cách thực hiện? Tôi đã cố gắng cả hai cách (tái drawable này trong mã java/thay đổi drawable xml trong thời gian chạy) và không thành công :-(
Bất kỳ trợ giúp sẽ được đánh giá cao.
tôi sẽ tạo ra một drawable tùy chỉnh như LineDrawable lớp này kéo dài drawable {.... – pskink
Cảm ơn bạn đã trả lời của bạn. Làm thế nào bạn sẽ làm điều đó một cách chính xác? –
chỉ ghi đè lên tất cả các phương thức trừu tượng của Drawable - vẽ (Canvas) cụ thể – pskink