AndroidUI组件之ProgressBar

时间:2014-05-13 00:11:50   收藏:0   阅读:466
package com.gc.progressbar;
/*
 * 1、ProgressBar组件也是一组重要的组件,ProgressBar本身代表了进度条组件,
 * 它还派生了两个常用的组件:SeekBar和RatingBar。
 * 2、进度条的功能与用法:
 * 进度条通常用于向用户显示某个耗时操作完成的百分比,进度条可以动态地显示进度
 * 因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应。
 * Android支持如下几种风格的进度条,通过style属性可以为ProgressBar指定风格
 * @android:style/Widget.ProgressBar.Horizontal-----水平进度条
 * @android:style/Widget.ProgressBar.Inverse--------普通大小的环形进度条
 * @android:style/Widget.ProgressBar.Large----------大环形进度条
 * @android:style/Widget.ProgressBar.Large.Inverse---大环形进度条
 * @android:style/Widget.ProgressBar.Small-----------小环形进度条
 * @android:style/Widget.ProgressBar.Small.Inverse---小环形进度条
 * 3、ProgressBar常用的XML属性:
 * android:max-------------------设置该进度条的最大值
 * android:progress--------------设置该进度条的已完成进度值
 * android:progressDrawable------设置该进度条的轨道对应的Drawable对象
 * android:indeterminate---------该属性设为true,设置进度条不精确显示进度
 * android:indeterminateDrawable-设置绘制不显示进度的进度条的Drawable对象
 * android:indeterminateDuration-设置不精确显示进度的持续时间
 * android:progressDrawable用于指定进度条的轨道的绘制形式,该属性可指定为
 * 一个LayerDrawable对象(该对象可通过在XML文件中用<layer-list>元素进行配置 )的引用
 * 4、ProgressBar提供了下面两个方法来操作进度
 * setProgress(int) ---设置进度的完成百分比
 * incrementProgressBy(int)---设置进度条的进度增加或减少。当参数为正数时进度增加
 * ,当参数为负数时进度减少。
 */
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.widget.ProgressBar;
/**
 * 
 * @author Android将军
 *
 */
public class MainActivity extends Activity {
	//该程序模拟填充长度为100的数组
	private int [] data=new int[100];
	private int hasData=0;
	//记录ProgressBar的完成进度
	private int status=0;
	private ProgressBar bar,bar2;
	//创建一个负责更新的进度的Handler
	Handler mHandler=new Handler()
	{

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			//表明消息是由该程序发送的
			if(msg.what==0x111)
			{
				bar.setProgress(status);
				bar2.setProgress(status);
			}
		}
		
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		bar=(ProgressBar)findViewById(R.id.bar);
		bar2=(ProgressBar)findViewById(R.id.bar2);
		//启动线程来执行任务
		new Thread()
		{
			
			public void run()
			{
				while(status<100)
				{
					//获取耗时操作的完成百分比
					status=doWork();
					//发送消息
					mHandler.sendEmptyMessage(0x111);
				}
			}
		}.start();
	}

	//模拟一个耗时的操作
	public int doWork() {
		// 为数组元素赋值
		data[hasData++]=(int)(Math.random()*100);
		try
		{
			Thread.sleep(100);
		}catch(InterruptedException e)
		{
			e.printStackTrace();
		}
		return hasData;
	}


}
布局文件:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
   >

    <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <!-- 定义一个大环形进度条 -->
        <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"
            />
    </LinearLayout>
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="任务完成的进度"
        />
    <!-- 定义一个水平进度条 -->
    <ProgressBar 
        android:id="@+id/bar"
        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:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progressDrawable="@drawable/my_bar"
        style="@android:style/Widget.ProgressBar.Horizontal"
        />

</LinearLayout>

转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/25555633



AndroidUI组件之ProgressBar,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!