Android进度条怎么设置?新手也能轻松学会!

吉云

今天跟大家唠唠我最近搞的这个 Android 进度条,这玩意儿看着简单,真要自己动手,还是有不少坑的。

我就想着,这还不简单?直接在 XML 布局文件里加个 `` 控件就完事儿。就像这样:

xml

Android进度条怎么设置?新手也能轻松学会!

android:id="@+id/progressBar"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

结果一跑起来,它确实出来,一个圈在那儿转转,但问题是,我怎么控制它?我想显示个具体的进度,让用户知道现在到哪一步,光在那儿转圈可不行。

Android进度条怎么设置?新手也能轻松学会!

然后我就开始各种搜资料,发现 `ProgressBar` 有两种样式,一种是这种转圈圈的,叫 `indeterminate`,另一种就是可以显示进度的,叫 `horizontal`。我想要的是后一种,那就改呗。

在 XML 里,我把 `style` 属性改一下:

xml

android:id="@+id/progressBar"

style="@android:style/*"

Android进度条怎么设置?新手也能轻松学会!

android:layout_width="match_parent"

android:layout_height="wrap_content" />

这回再跑起来,就变成一条横着的进度条,但是,它还是没动静!

就得在 Java 代码里动手脚。拿到这个 `ProgressBar` 的实例:

java

Android进度条怎么设置?新手也能轻松学会!

ProgressBar progressBar = findViewById(*);

然后,我就想,怎么设置它的进度?Google 一下,发现可以用 `setProgress()` 方法。那我就试着设置一下:

java

*(50);

Android进度条怎么设置?新手也能轻松学会!

跑起来一看,,进度条动!显示到一半。但是,这个值到底是多少?默认是 0 到 100 吗?

为搞清楚这个问题,我又查查资料,发现 `ProgressBar` 还有一个 `setMax()` 方法,可以设置最大值。默认情况下,最大值是 100,但我可以自己改。比如,我想让它表示 0 到 200 的进度,就可以这样:

java

*(200);

*(100); // 这时候显示的就是一半的进度

Android进度条怎么设置?新手也能轻松学会!

这样就好控制多。但是,新的问题又来,我的进度是动态变化的,得实时更新。

我就写个简单的线程,模拟一个耗时操作,然后每隔一段时间更新一下进度:

java

new Thread(new Runnable() {

@Override

public void run() {

Android进度条怎么设置?新手也能轻松学会!

for (int i = 0; i <= 100; i++) {

final int progress = i;

try {

*(100); // 模拟耗时操作

} catch (InterruptedException e) {

Android进度条怎么设置?新手也能轻松学会!

runOnUiThread(new Runnable() {

@Override

public void run() {

*(progress);

Android进度条怎么设置?新手也能轻松学会!

}).start();

这里面有个关键点,就是 `runOnUiThread()`。因为更新 UI 必须在主线程里进行,所以得用这个方法把更新进度的代码放到主线程里执行。

Android进度条怎么设置?新手也能轻松学会!

这样,一个简单的进度条就搞定。实际项目中,进度条的样式肯定要自定义,显示的文字也要根据具体情况来调整。但我今天主要就是想跟大家分享一下这个从 0 到 1 的过程,希望能对大家有所帮助。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]