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

how to fill images using progressbar in android

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

这是进度为 100% 时的情况:

这是 0% 的进度:

您需要了解可绘制资源。

Drawable Resources | Android Developers

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

首先来说说等级。每个可绘制对象都有一个从 0 到 10000 的级别。该级别可用于修改可绘制对象的外观。

让我们从 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"/>

既然你已经在上升的过程中有了揭示,你想把灰色的心作为背景来显示,这样看起来灰色的心正在变成红色。您可以使用图层列表叠加两个可绘制对象。

/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