您需要了解可绘制资源。
可绘制资源 |安卓开发者 https://developer.android.com/guide/topics/resources/drawable-resource.html
您可以使用图层列表和剪辑可绘制对象来完成此操作。
首先我们来说说水平。每个可绘制对象都有一个从 0 到 10000 的级别。该级别可用于修改可绘制对象的外观。
让我们从 Clip Drawable 开始。剪辑可绘制对象将根据其级别来剪辑可绘制对象。这对于进度条风格来说非常有用。我假设你想从下往上在灰色的心上绘制红色的心。
/res/drawable/red_heart_clip.xml
<?xml version="1.0" encoding="utf-8"?>
<clip
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/red_heart"
android:clipOrientation="horizontal"
android:gravity="bottom"/>
现在您已经在向上的过程中进行了揭示,您想要将灰色的心显示为背景,以便看起来灰色的心正在变成红色。您可以使用图层列表覆盖两个可绘制对象。
/res/drawable/progress_heart.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/grey_heart"/>
<item android:drawable="@drawable/red_heart_clip"/>
</layer-list>
现在,您将此可绘制对象分配给视图的背景。它也可能是一个的 srcImageView
.
<View
android:background="@drawable/progress_heart"
...
现在您可以像这样设置可绘制对象的级别:
int level = 100 * pct; // pct goes from 0 to 100
view.getBackground().setLevel(level)
哦,顺便说一句,你甚至不需要ProgressBar
.