ProgressBar是进度条,android中的指示器,先看效果图

上图中水平进度条可以看见有两种颜色,浅色的是,可以用作展示中间进度用。

ProgressBar是有多种样式的,有水平的和圆圈打转的。若需要指示进度的可以使用水平的,其他样式在可以在android api文档找到

Other progress bar styles provided by the system include:

先看下布局文件activity_main.xml 

    
    
    
        
            

布局简单,若要修改ProgressBar,只需要改style的内容即可。

然后是MainActivity.java 的内容:

package com.jam.testprogressbar;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;public class MainActivity extends Activity {	//声明控件	private ProgressBar firstProgressBar;	private ProgressBar secondProgressBar;	private Button buttonFirst;	private Button buttonSecond;		private int i = 0;	private int j = 0;	    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                firstProgressBar = (ProgressBar) findViewById(R.id.id_firstbar_id);        secondProgressBar = (ProgressBar) findViewById(R.id.id_spinningbar_id);        buttonFirst = (Button) findViewById(R.id.id_buttonfirst);        buttonSecond = (Button) findViewById(R.id.id_buttonsecond);                /**         * 给第一个按钮绑定匿名内部类         * 在i==0时,显示两个ProgressBar         * i《100 时,每按一次就加10。         * 当i超过100,则隐藏两个ProgressBar         */        buttonFirst.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				if(i == 0) {					firstProgressBar.setVisibility(View.VISIBLE);					secondProgressBar.setVisibility(View.VISIBLE);					i += 10;					j = i;					firstProgressBar.setProgress(i);					firstProgressBar.setSecondaryProgress(j);				} else if( i < 100){					i += 10;					j = i;					firstProgressBar.setProgress(i);				} 				else {						i = 0;						j = i;						firstProgressBar.setVisibility(View.GONE);						secondProgressBar.setVisibility(View.GONE);				}			} 		});                /**         * 第二个按钮,对SecondaryProgress进行设置。         */        buttonSecond.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				if(i != 0) {					j += 10;					firstProgressBar.setSecondaryProgress(j);				}			}		});    }}

实现进度条代码比较简单,在api文档中有例子和其他具体方法,不一一介绍。


除了主线程之外的线程都叫worker thread。

ProgressBar要与线程使用,只需要写一个类继承Thread或者实现Runnable即可。

注意:在原则上来说,除主线程之外,其他线程不允许访问主线程的UI,但ProgressBar除外