如何使用Android中的步骤创建间歇性动态进度条?

How to create intermittent dynamic progress bar with steps in Android?

我想在 Android Studio 中创建一个动态的间歇性进度条(如下图所示),它将根据用户的选择更改其间隔。

这个想法是,用户将选择他希望执行某个行为的次数,然后该栏将相应地分段。然后每次他们执行该行为时,条形图都会为步进增量着色,如下图所示。

Intermittent Progress Bar

我正在寻找一些关于如何做的一般指导,因为我是新手。

我想到了3种方法:

  1. 有大量的 png。每种情况的可绘制对象或矢量,并在图像视图中相应地使用一个。 (对我来说似乎有点愚蠢)

  2. 创建与间隔一样多的视图,然后相应地更改视图颜色(在这种情况下,它的动态部分会出现问题,即间隔可变性)

  3. 以某种方式自定义水平进度条以自动执行此操作。

我在网上搜索了对我来说最优雅的第三种方式,但找不到答案。

感谢您的宝贵时间。

使用当前的 ProgressBar API 获取这实际上是微不足道的。

根据需要的任务数和完成的任务数,您可以使用 setMax and setProgress

更新 ProgressBar
progressBar.setMax(totalTasks);
progressBar.setProgress(tasksDone);

这将覆盖进度条中的一小部分 tasksDone / totalTasks


编辑:根据评论中突出显示的场景,您可以简单地在 LinearLayout.

中使用多个视图

您可以使用具有所需分区颜色背景的 LinearLayout。

<LinearLayout
    ....
    android:orientation="horizontal"
    android:background="@color/partition"
    ....
/>

然后简单地以相同的权重(和水平边距)以编程方式添加子视图:-

for(task in tasks) {
    val progressBar = View(this)
    progressBar.marginEnd = gapRequired
    // customize your view here: Set background, shape etc.

    // Set the width to 0 and weight to 1f
    val params = LinearLayout.LayoutParams(0, height, 1f)
    linearLayout.addView(view, index, params)
}

稍后修改个人视图(进度条片段):-

val view = linearLayout.getChildAt(index)
// Modify the view as needed

要从布局中删除视图:-

linearLayout.removeViewAt(index)

或者如果您引用了视图:-

linearLayout.removeView(view)

您还可以使用 linearLayout.removeAllViews()

删除所有视图(如果您出于某种原因需要重置整个进度条)

如果您希望 progressBar 中有很多这样的片段,您可能希望 RecyclerView 与适配器一起使用。