Android进度条示例

在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 progress bar demo1

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

android progress bar demo2

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

android progress bar demo3

下载源代码

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

参考文献

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

翻译自: https://mkyong.com/android/android-progress-bar-example/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值