如何使用android中的进度条填充图像

时间:2016-10-06 00:07:50

标签: android android-studio android-progressbar fill

我正在开发一个项目,它需要填充图像。意味着我想将图像形状用作进度条。我不知道如何使用自定义进度条。这是一个图像及其图像按钮。

所以这是进度为100%的时候:

first image

这是0%的进展:

second image

1 个答案:

答案 0 :(得分:10)

您需要了解可绘制资源。

Drawable Resources | Android Developers

您可以使用图层列表和剪辑可绘制来执行此操作。

首先,我们来谈谈关卡。每个drawable都有一个从0到10000的级别。该级别可用于修改drawable的外观。

让我们从Clip Drawable开始吧。 Clip Drawable将根据其级别剪切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"/>

既然你已经在向上显示,你想要将灰色的心显示为背景,这样看起来灰心变红了。您可以使用图层列表覆盖两个drawable。

/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>

现在您将此drawable分配给视图的背景。它也可能是ImageView的src。

<View
    android:background="@drawable/progress_heart"
    ...

现在您可以像这样设置drawable的级别:

    int level = 100 * pct;   // pct goes from 0 to 100
    view.getBackground().setLevel(level)

哦,顺便说一句,你甚至不需要ProgressBar