Android进度条示例
程序员文章站
2024-02-05 12:01:10
...
在Android中,进度条可用于告诉用户该任务需要较长时间才能完成。
在本教程中,我们向您展示如何显示进度条对话框以告诉用户您的任务正在运行,以及如何增加进度条状态直到任务完成。
PS此项目在Eclipse 3.7中开发,并通过Android 2.3.3进行了测试。
1.添加一个按钮
打开“ res / layout / main.xml ”文件,只需添加普通按钮进行演示。
文件:res / layout / main.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btnStartProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Download File" />
</LinearLayout>
2.代码代码
使用进度条的关键是使用“ Thread
”来运行您的时间消耗任务,并使用另一个“ Thread
”来相应地更新进度条的状态。 阅读代码的注释,它应该是不言自明的。
文件:MyAndroidAppActivity.java
package com.mkyong.android;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
public class MyAndroidAppActivity extends Activity {
Button btnStartProgress;
ProgressDialog progressBar;
private int progressBarStatus = 0;
private Handler progressBarHandler = new Handler();
private long fileSize = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
addListenerOnButton();
}
public void addListenerOnButton() {
btnStartProgress = (Button) findViewById(R.id.btnStartProgress);
btnStartProgress.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// prepare for a progress bar dialog
progressBar = new ProgressDialog(v.getContext());
progressBar.setCancelable(true);
progressBar.setMessage("File downloading ...");
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar.setProgress(0);
progressBar.setMax(100);
progressBar.show();
//reset progress bar status
progressBarStatus = 0;
//reset filesize
fileSize = 0;
new Thread(new Runnable() {
public void run() {
while (progressBarStatus < 100) {
// process some tasks
progressBarStatus = doSomeTasks();
// your computer is too fast, sleep 1 second
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Update the progress bar
progressBarHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressBarStatus);
}
});
}
// ok, file is downloaded,
if (progressBarStatus >= 100) {
// sleep 2 seconds, so that you can see the 100%
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// close the progress bar dialog
progressBar.dismiss();
}
}
}).start();
}
});
}
// file download simulator... a really simple
public int doSomeTasks() {
while (fileSize <= 1000000) {
fileSize++;
if (fileSize == 100000) {
return 10;
} else if (fileSize == 200000) {
return 20;
} else if (fileSize == 300000) {
return 30;
}
// ...add your own
}
return 100;
}
}
PS:“ doSomeTasks”方法只是一个文件大小下载模拟器,只需将其替换为长期运行的任务即可。
3.演示
运行应用程序。
1.结果,一个按钮。
2.单击按钮,将提示“进度栏对话框”以显示当前的下载进度。
3.任务完成,进度条将显示100%,并自动关闭。
下载源代码
下载它– Android-ProgressBar-Example.zip (15 KB)
参考文献
From: https://mkyong.com/android/android-progress-bar-example/