欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android进度条示例

程序员文章站 2024-02-05 12:01:10
...

在Android中,进度条可用于告诉用户该任务需要较长时间才能完成。

在本教程中,我们向您展示如何显示进度条对话框以告诉用户您的任务正在运行,以及如何增加进度条状态直到任务完成。

注意
有关详细说明,请参考此Android ProgressBar JavaDoc

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.结果,一个按钮。

Android进度条示例

2.单击按钮,将提示“进度栏对话框”以显示当前的下载进度。

Android进度条示例

3.任务完成,进度条将显示100%,并自动关闭。

Android进度条示例

下载源代码

下载它– Android-ProgressBar-Example.zip (15 KB)

参考文献

  1. Android ProgressBar示例
  2. Android ProgressDialog JavaDoc
  3. 另一个Android ProgressBar示例

From: https://mkyong.com/android/android-progress-bar-example/