我正在开展一个项目,需要填充图像,即我想使用图像形状作为进度条。我不知道如何使用自定义进度条。这里有一张图片,它是一个图片按钮。
这是当进度为100%时的情况: 而进度为0%的情况如下:
这是当进度为100%时的情况: 而进度为0%的情况如下:
你需要学习关于可绘制资源的知识。
通过使用图层列表和裁剪可绘制对象,您可以实现这一点。
首先,让我们谈谈级别。每个可绘制对象都有一个级别,从0到10000。级别可以用于修改可绘制对象的外观。
让我们从裁剪可绘制对象开始。裁剪可绘制对象会根据其级别来裁剪可绘制对象。这非常适合进度条样式。我假设您想要在灰色心形的底部向上绘制红色心形。
/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"/>
现在你已经开始了揭示过程,想要将灰色心形图案作为背景显示,这样看起来就像灰色的心正在变成红色。你可以使用Layer List来叠加两个可绘制对象。/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>
现在您将此可绘制对象分配为视图的背景。 它也可以是ImageView
的src。
<View
android:background="@drawable/progress_heart"
...
现在您可以像这样设置可绘制对象的级别:
int level = 100 * pct; // pct goes from 0 to 100
view.getBackground().setLevel(level)
顺便说一句,你甚至不需要一个ProgressBar
。