如何在Android中使用ProgressBar填充图像

5
我正在开展一个项目,需要填充图像,即我想使用图像形状作为进度条。我不知道如何使用自定义进度条。这里有一张图片,它是一个图片按钮。
这是当进度为100%时的情况: 第一张图片 而进度为0%的情况如下: 第二张图片

你需要创建一系列的图像,每10%创建10个图像,并在进度条进行时显示它们。 - surya
请查看此链接:http://stackoverflow.com/questions/29398156/bitmapdrawable-as-progressbar-in-android-how-to-build-it - surya
1个回答

15

你需要学习关于可绘制资源的知识。

可绘制资源 | Android 开发者

通过使用图层列表和裁剪可绘制对象,您可以实现这一点。

首先,让我们谈谈级别。每个可绘制对象都有一个级别,从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


1
能否使用位于 gridView 中的图像来实现这一点?如果可以,怎么做?谢谢。 - Francy Grillo
对于每个使用可绘制对象作为其背景的对象,自然可以实现。您甚至不必使用ImageView,可以使用普通视图对象来实现它。为了在GridView中使用它,您需要创建一个项目单元格以将其提供给适配器,并创建一个代表对象来保存实际数据。然后,在项目单元格中添加一个视图来保存该背景可绘制对象。当您更新每个数据对象的进度值时,调用notifyDataSetChanged,新值将绑定到适配器的getView方法中。您必须实现此方法。 - Kozmotronik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接