Android中ProgressBar进度条

来源:互联网 发布:台湾网络枪店 编辑:程序博客网 时间:2024/04/20 20:50
在某项延续性工作的进展过程中为了不让用户觉得程序失去响应,需要有个活动的进度条,表示此过程正在进行中,从而更友好的提高了用户的界面的友好性。
在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。

XML重要属性与ProgressBar方法

@android:style/Widget.ProgressBar.Horizontal:水平进度条@android:style/Widget.ProgressBar.Inverse:普通大小的进度的环形条@android:style/Widget.ProgressBar.Large@android:style/Widget.ProgressBar.Smallandroid:max:设置该进度条的最大值android:progress:设置该进度条的已完成进度android:progressDrawable:设置该进度条的轨道对应的Drawabled对象android:indeterminate():指示进度条是否在不确定模式下,值为trueandroid: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(){@Overridepublic void handleMessage(Message msg){if(msg.what == 101){bar1.setProgress(loc);bar2.setProgress(loc);}}};@Overrideprotected 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;}}



0 0