【问题标题】:how to fill images using progressbar in android如何使用android中的进度条填充图像
【发布时间】:2016-10-06 00:07:49
【问题描述】:

我正在做一个项目,它需要填充图像。表示我想将图像形状用作进度条。我不知道如何使用自定义进度条。这是一个图像,它是一个图像按钮。

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

这意味着 0% 的进度:

【问题讨论】:

标签: android android-studio android-progressbar fill


【解决方案1】:

您需要了解可绘制资源。

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

【讨论】:

  • 是否可以使用 gridView 中的图像来做到这一点?如果是,如何?谢谢
  • 自然可以处理每个使用可绘制对象作为背景的对象。您甚至不必使用 ImageView,您可以使用普通视图对象来实现它。为了在 GridView 中使用它,您必须创建一个项目单元格以将其提供给适配器并创建一个代表对象来保存实际数据。然后在项目单元格中添加一个视图来保存该背景可绘制对象。当您更新每个数据对象的进度值时,您调用 notifyDataSetChanged 并且新值将被绑定到适配器的 getView 方法中。你必须实现这个方法。
猜你喜欢
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多