`
byandby
  • 浏览: 1696408 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 进度条(ProgressBar)

阅读更多
    当一个应用在后台执行时,前台界面就不会有什么信息,这时用户根本不知道程序是否在执行、执行进度如何、应用程序是否遇到错误终止等,这时需要使用进度条来提示用户后台程序执行的进度。Android系统提供了两大类进度条样式,长形进度条(progress-BarStyleHorizontal)
和圆形进度条(progressBarStyleLarge)。进度条用处很多,比如,应用程序装载资源和网络连接时,可以提示用户稍等,这一类进度条只是代表应用程序中某一部分的执行情况,而整个应用程序执行情况呢,则可以通过应用程序标题栏来显示一个进度条,这就需要先对窗口的显示风格进行设置"requestWindowFeature(Window.FEATURE_PROGRESS)"。
   我们看看这个示例程序的 运行效果

 
先上布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />

<ProgressBar
android:id="@+id/ProgressBar01"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:visibility="gone"
/>

<ProgressBar
android:id="@+id/ProgressBar02"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="70"
android:visibility="gone"
/>

<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"/>

</LinearLayout>
ProgressBar01 为长形进度条,Progress02为圆形进度条,标题栏进度条没有在这里声明。"style="表示设置进度条的风格。下面通过setMax方法设置进度条的最大值,setProgress 方法设置进度条的当前值,setVisibility 方法设置进度条的可见性。

package xiaohang.zhimeng;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;

public class Activity01 extends Activity {

	//声明ProgressBar对象
	private ProgressBar xh_ProgressBar;
	private ProgressBar xh_ProgressBar2;
	private Button xh_Button;
	protected static final int GUI_STOP_NOTIFIER = 0x108;
	protected static final int GUI_THREADING_NOTIFIER = 0x109;
	public int intCounter = 0;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//设置窗口模式,因为需要显示进度条在标题栏
		requestWindowFeature(Window.FEATURE_PROGRESS);
		setProgressBarVisibility(true);
		setContentView(R.layout.main);

		//得到ProgressBar
		xh_ProgressBar = (ProgressBar) findViewById(R.id.ProgressBar01);
		xh_ProgressBar2 = (ProgressBar) findViewById(R.id.ProgressBar02);
		xh_Button = (Button) findViewById(R.id.Button01);

		//设置进度条 不为 不确定模式
		xh_ProgressBar.setIndeterminate(false);
		xh_ProgressBar2.setIndeterminate(false);

		//当按钮按下时开始执行
		xh_Button.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View v) {
				//设置ProgressBar为可见状态
				xh_ProgressBar.setVisibility(View.VISIBLE);
				xh_ProgressBar2.setVisibility(View.VISIBLE);
				//设置ProgressBar的最大值
				xh_ProgressBar.setMax(100);
				//设置ProgressBar当前值
				xh_ProgressBar.setProgress(0);
				xh_ProgressBar2.setProgress(0);

				//通过线程来改变ProgressBar的值
				new Thread(new Runnable() {
					@Override
					public void run() {
						for (int i = 0; i < 10; i++) {
							try {
								//设置进度值
								intCounter = (i + 1) * 20;
								//睡眠1000毫秒
								Thread.sleep(1000);

								if (i == 4) {
									Message m = new Message();

									m.what = Activity01.GUI_STOP_NOTIFIER;
									Activity01.this.myMessageHandler
											.sendMessage(m);
									break;
								} else {
									Message m = new Message();
									m.what = Activity01.GUI_THREADING_NOTIFIER;
									Activity01.this.myMessageHandler
											.sendMessage(m);
								}

							} catch (Exception e) {
								e.printStackTrace();
							}
						}
					}

				}).start();
			}

		});
	}

	Handler myMessageHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			//ProgressBar已经是最大值
			case Activity01.GUI_STOP_NOTIFIER:
				xh_ProgressBar.setVisibility(View.GONE);
				xh_ProgressBar2.setVisibility(View.GONE);
				Thread.currentThread().interrupted();
				break;
			case Activity01.GUI_THREADING_NOTIFIER:
				if (!Thread.currentThread().isInterrupted()) {
					//改变ProgressBar的当前值
					xh_ProgressBar.setProgress(intCounter);
					xh_ProgressBar2.setProgress(intCounter);

					//设置标题栏中前景的一个进度条进度值
					setProgress(intCounter * 100);
				}
				break;
			}
			super.handleMessage(msg);
		}
	};
}

android 2.0  APILEVEL 5
源码图片 见附件
  • 大小: 27.7 KB
分享到:
评论
1 楼 ivanhxy 2011-09-20  
写的很好。转走了http://bbs.droidstouch.com/thread-105-1-1.html

相关推荐

    Android 进度条ProgressBar

    在Android开发中,ProgressBar是一个非常常见的UI组件,用于显示任务的进度,比如文件下载、上传或者数据加载等操作。ProgressBar提供了视觉反馈,让用户了解后台进程的状态。本篇将深入探讨如何使用Android的...

    Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)

    Android 进度条 ProgressBar 的实现代码 Android 进度条 ProgressBar 是 Android 开发中常用的 UI 组件,其主要作用是显示任务的进度或状态变化。下面将详细介绍 Android 进度条 ProgressBar 的实现代码,包括隐藏...

    Android中使用ProgressBar实现进度条

    在Android开发中,ProgressBar是一个非常重要的组件,它用于显示进度状态,可以是圆形或水平的。这个组件在用户等待操作完成时提供了良好的用户体验,比如在下载、上传、解压等耗时操作中常见。本篇文章将深入探讨...

    Android 三种常用实现自定义圆形进度条 ProgressBar

    本文将详细介绍如何实现三种常用的方法来创建自定义的圆形进度条(ProgressBar)。这些方法包括使用Shape Drawable、自定义View以及使用第三方库。 一、Shape Drawable实现圆形进度条 Shape Drawable是Android系统...

    Android自定义进度条 Progressbar

    这个自定义的进度条(progressbar)可以用于展示加载、缓冲或任何需要进度指示的场景。 首先,我们需要创建一个新的`ProgressBar`子类,例如`MyProgress`。在Java或Kotlin中,我们需要继承`ProgressBar`类,并重写...

    Android三种方式实现ProgressBar自定义圆形进度条

    Android进度条有4种风格可以使用。 默认值是progressBarStyle。 设置成progressBarStyleSmall后,图标变小。 设置成progressBarStyleLarge后,图标变大 设置成progressBarStyleHorizontal后,变成横向长方形。 ...

    Android进度条ProgressBar的实现代码

    `style`属性用来指定进度条的样式,`@android:style/Widget.ProgressBar.Horizontal` 创建了一个水平进度条,而`?android:attr/progressBarStyleLarge` 创建了一个较大的圆形进度条。 `MainActivity.java` 文件中,...

    AndroidProgressBar_Android ProgressBar进度条的几乎全部的用法源码集.rar

    本资源"AndroidProgressBar_Android ProgressBar进度条的几乎全部的用法源码集.rar"提供了关于Android ProgressBar的多种实现方式和应用场景的源代码,非常适合开发者学习和参考。 首先,我们来详细探讨一下Android...

    android ProgressBar进度条等待demo

    这个"android ProgressBar进度条等待demo"是一个示例项目,旨在帮助开发者理解如何在应用程序中实现不同类型的进度条,包括横线进度条、圆形加载中效果以及自定义的ProgressBar。 1. **横线进度条**: 横线进度条...

    Android进度条控件progressbar使用方法详解

    1)进度条ProgressBar使用方法 1、在layout布局文件中创建ProgressBar控件 &lt;ProgressBar nstyle=?android:attr/progressBarStyleHorizontal android:layout_width match_parent android:layout_height=wrap_content...

    Android实现进度条(ProgressBar)的功能与用法

    【Android 进度条(ProgressBar)的功能与用法】 进度条在Android应用开发中扮演着重要的角色,它为用户提供了一种可视化的方式,显示任务的执行进度,从而增强用户体验。ProgressBar是Android SDK提供的一种UI控件...

    Android进度条实例测试

    通过提供的链接,我们可以了解到一个开发者分享的关于Android进度条使用的博客文章。 1. **基本使用** Android的ProgressBar分为两种类型:水平进度条(Horizontal ProgressBar)和旋转进度条(Circular ...

    Android 控件 ProgressBar进度条源码

    总的来说,理解ProgressBar的源码有助于开发者深入掌握Android UI的构建原理,从而能够更灵活地设计和定制自己的进度条组件。通过分析和实践,开发者可以创造出更加丰富多样的进度展示效果,提升应用的用户体验。

    Android开发之进度条ProgressBar的示例代码

    Android开发之进度条ProgressBar的示例代码 Android开发之进度条ProgressBar是 Android 应用程序中的一种常用的用户界面元素,用于显示某个过程的进度,例如数据加载过程、文件下载进度、音乐播放进度等。在 ...

    Android ProgressBar 简单进度条的实现及示例下载.rar

    此为Android ProgressBar 简单进度条的实现及示例下载源码,基本思路是:将模拟任务分成大小为100个的数组,任务完成度--默认为0,状态完成度默认也为0,然后构造一个线程用于显示消息,然后定义dowork()函数,完成...

    带进度条(ProgressBar)的Notification

    而“带进度条(ProgressBar)的Notification”则是进一步提升用户体验的一种设计,它允许用户在不解锁设备的情况下了解后台任务的执行进度,如下载、上传或安装等操作。 **Notification的基本结构** 一个Notification...

    android进度条使用实例

    在Android开发中,进度条(ProgressBar)是一种常见的UI组件,用于显示任务的进度或等待状态。本教程将深入探讨如何在Android应用中有效地使用进度条,以提供良好的用户体验。我们将从基本概念开始,逐步讲解如何在...

Global site tag (gtag.js) - Google Analytics