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