如何使用Android中的步骤创建间歇性动态进度条?
How to create intermittent dynamic progress bar with steps in Android?
我想在 Android Studio 中创建一个动态的间歇性进度条(如下图所示),它将根据用户的选择更改其间隔。
这个想法是,用户将选择他希望执行某个行为的次数,然后该栏将相应地分段。然后每次他们执行该行为时,条形图都会为步进增量着色,如下图所示。
Intermittent Progress Bar
我正在寻找一些关于如何做的一般指导,因为我是新手。
我想到了3种方法:
有大量的 png。每种情况的可绘制对象或矢量,并在图像视图中相应地使用一个。 (对我来说似乎有点愚蠢)
创建与间隔一样多的视图,然后相应地更改视图颜色(在这种情况下,它的动态部分会出现问题,即间隔可变性)
以某种方式自定义水平进度条以自动执行此操作。
我在网上搜索了对我来说最优雅的第三种方式,但找不到答案。
感谢您的宝贵时间。
使用当前的 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
与适配器一起使用。
我想在 Android Studio 中创建一个动态的间歇性进度条(如下图所示),它将根据用户的选择更改其间隔。
这个想法是,用户将选择他希望执行某个行为的次数,然后该栏将相应地分段。然后每次他们执行该行为时,条形图都会为步进增量着色,如下图所示。
Intermittent Progress Bar
我正在寻找一些关于如何做的一般指导,因为我是新手。
我想到了3种方法:
有大量的 png。每种情况的可绘制对象或矢量,并在图像视图中相应地使用一个。 (对我来说似乎有点愚蠢)
创建与间隔一样多的视图,然后相应地更改视图颜色(在这种情况下,它的动态部分会出现问题,即间隔可变性)
以某种方式自定义水平进度条以自动执行此操作。
我在网上搜索了对我来说最优雅的第三种方式,但找不到答案。
感谢您的宝贵时间。
使用当前的 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
与适配器一起使用。