创建进度指示器

进度指示器以直观的方式显示操作状态。它们使用动画来提醒用户某个进程(例如加载或处理数据)距离完成还有多远。它们还可以表示正在处理,但不提及处理进度。

请考虑以下三个可能需要使用进度指示器的用例:

  • 加载内容:从网络提取内容时,例如加载用户个人资料的图片或数据。
  • 文件上传:向用户提供有关上传可能需要多长时间的反馈。
  • 处理时间过长:在应用处理大量数据时,向用户传达已完成的总工作量的百分比。

在 Material Design 中,有两种类型的进度指示器:

  • 确定:显示已完成的确切进度。
  • 不确定:不考虑进度,持续进行动画。

同样,进度指示器可以采用以下两种形式之一:

  • 线性:横向条,从左向右填充。
  • 圆形:笔触会不断延长,直到覆盖整个圆形的周长。

版本兼容性

此实现要求将项目 minSDK 设置为 API 级别 21 或更高级别。

依赖项

创建确定性指示器

确定性指示器会准确反映操作的完成程度。请使用 LinearProgressIndicatorCircularProgressIndicator 可组合项,并为 progress 参数传递值。

以下代码段提供了一个相对详细的示例。当用户按下该按钮时,应用会同时显示进度指示器并启动一个协程,以逐步增加 progress 的值。这会导致进度指示器依次向上迭代。

结果

加载部分完成后,上例中的线性指示器会显示如下所示:

同样,圆形指示器会显示如下所示:

创建不确定指示器

不确定性指示器不会反映操作距离完成的程度。而是使用动画向用户表明正在处理,但不会指定任何完成程度。

如需创建不确定进度指示器,请使用 LinearProgressIndicatorCircularProgressIndicator 可组合项,但不要为 progress 传入值。以下示例演示了如何通过按下按钮来切换不确定性指示器。

结果

以下是指示器处于活动状态时的此实现示例:

以下是相同实现的示例,但使用 LinearProgressIndicator 而非 CircularProgressIndicator

要点

虽然您可以使用多个可组合项来创建与 Material Design 一致的进度指示器,但它们的参数没有太大差异。您应注意以下关键参数:

  • progress:指示器显示的当前进度。传递一个介于 0.01.0 之间的 Float
  • color:指示器的颜色,即反映进度的组件部分,在进度完成时会完全包含该组件。
  • trackColor:用于绘制指示器的轨道的颜色。

包含本指南的集合

本指南属于以下精选快速入门集合,这些集合涵盖了更广泛的 Android 开发目标:

了解如何使用可组合函数根据 Material Design 设计系统轻松创建美观的界面组件。
借助列表和网格,您的应用可以以视觉上令人愉悦且易于用户使用的形式显示集合。

有问题或反馈

请访问我们的常见问题解答页面,了解简短指南,或与我们联系,告诉我们您的想法。