您的位置:首页 > 移动开发 > Android开发

Android中ProgressBar进度条

2014-07-16 16:09 190 查看
在某项延续性工作的进展过程中为了不让用户觉得程序失去响应,需要有个活动的进度条,表示此过程正在进行中,从而更友好的提高了用户的界面的友好性。

在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。

XML重要属性与ProgressBar方法

@android:style/Widget.ProgressBar.Horizontal:水平进度条
@android:style/Widget.ProgressBar.Inverse:普通大小的进度的环形条
@android:style/Widget.ProgressBar.Large
@android:style/Widget.ProgressBar.Small
android:max:设置该进度条的最大值
android:progress:设置该进度条的已完成进度
android:progressDrawable:设置该进度条的轨道对应的Drawabled对象
android:indeterminate():指示进度条是否在不确定模式下,值为true
android:indeterminateDrawable:设置绘制不显示进度的进度条的Drawable对象
android:indeterminateDuration:设置不精确显示进度的持续时间


样式:



XML布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <!-- 定义一个大环形进度条 -->
	<ProgressBar 
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    style="@android:style/Widget.ProgressBar.Large"/>
	<!-- 定义一个普通大小的进度条 -->
	<ProgressBar 
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"/>
	<!-- 定义一个小环形进度条 -->
	<ProgressBar 
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    style="@android:style/Widget.ProgressBar.Small"/>
	<ProgressBar 
	    android:id="@+id/bar1"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:max="100"
	    style="@android:style/Widget.ProgressBar.Horizontal"/>
	<ProgressBar 
	    android:id="@+id/bar2"
	    android:max="100"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:progressDrawable="@drawable/my_bar"
	    style="@android:style/Widget.ProgressBar.Horizontal"/>
</LinearLayout>


Drawable对象的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 定义轨道的背景 -->
	<item android:id="@android:id/background"
	    android:drawable="@drawable/no"/>
	<!-- 定义轨道上已经完成部分的样式 -->
	<item android:id="@android:id/progress"
	    android:drawable="@drawable/ok"/>
</layer-list>


主程序:

package com.example.progressbardemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;

public class MainActivity extends Activity {
	final static int count = 100;
	int loc = 0;//记录当前完成进度
	ProgressBar bar1,bar2;
	Handler myhHandler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			if(msg.what == 101){
				bar1.setProgress(loc);
				bar2.setProgress(loc);
			}
		}
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		bar1 = (ProgressBar) findViewById(R.id.bar1);
		bar2 = (ProgressBar) findViewById(R.id.bar2);
		new Thread(){
			public void run(){
				while(loc<count){
					int l = loc;
					loc = work(l);
					myhHandler.sendEmptyMessage(101);
				}
			}
		}.start();
	}
	/**
	 * 创建一个耗时的操作
	 * */
	public int work(int l){
		l++;
		try {
			Thread.sleep(100);
		} catch (Exception e) {
			// TODO: handle exception
		}
		return l;
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: