1. ProgressBar使用
首先我们看例程如下:
(1) main.xml文件如下:
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7 <TextView
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"
10 android:text="默认进度条:"
11 />
12 <ProgressBar
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:text="progress1"
16 //没有设置style,默认样式,中度旋转的圆形进度条
17 />
18 <TextView
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"
21 android:text="小圆形进度条:"
22 />
23 <ProgressBar
24 android:layout_width="wrap_content"
25 android:layout_height="wrap_content"
26 android:text="progress3"
27 style="?android:attr/progressBarStyleSmall"
28 />
29 <TextView
30 android:layout_width="wrap_content"
31 android:layout_height="wrap_content"
32 android:text="大圆形进度条:"
33 android:layout_gravity="center_vertical"
34 />
35 <ProgressBar
36 android:layout_width="wrap_content"
37 android:layout_height="wrap_content"
38 android:text="progress3"
39 style="?android:attr/progressBarStyleLarge"
40 />
41 <TextView
42 android:layout_width="wrap_content"
43 android:layout_height="wrap_content"
44 android:text="条形进度条:"
45 android:id="@+id/tv"
46 />
47 <ProgressBar
48 android:layout_width="fill_parent"
49 android:layout_height="wrap_content"
50 android:text="progress2"
51 android:id="@+id/porb"
52 style="?android:attr/progressBarStyleHorizontal"
53 android:max="100"
54 android:progress="50"
55 android:secondaryProgress="70"
56 />
57 </LinearLayout>
(2)接下来是MainActivity.java文件:
1 package com.progressbar;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.widget.ProgressBar;
6 //使用Runnable接口
7 public class MainActivity extends Activity implements Runnable {
8 private Thread th ; //声明一条线程
9 private ProgressBar pb ; //声明一个进度条对象
10 private boolean stateChage; //标识进度值最大最小的状态
11 @Override
12 public void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.main);
15 //实例进度条对象
16 pb = (ProgressBar)findViewById(R.id.porb);
17 th = new Thread(this);//实例线程对象,当前MainActivity实现了Runnable接口,这样MainActivity本身可以作为参数实例化Thread()对象
18 th.start();//启动线程
19 }
20
21 @Override
22 public void run() {//实现Runnable接口抽象函数
23 while(true){
24 int current = pb.getProgress();//得到当前进度值
25 int currentMax = pb.getMax();//得到进度条的最大进度值
26 int secCurrent = pb.getSecondaryProgress();//得到底层当前进度值
27 //以下代码实现进度值越来越大,越来越小的一个动态效果
28 if(stateChage==false){
29 if(current>=currentMax){
30 stateChage=true;
31 }else{
32 //设置进度值
33 pb.setProgress(current+1);
34 //设置底层进度值
35 pb.setSecondaryProgress(current+1);
36 }
37 }else{
38 if(current<=0){
39 stateChage=false;
40 }else{
41 pb.setProgress(current-1);
42 pb.setSecondaryProgress(current-1);
43 }
44 }
45 // 设置长方形进度条进度变大和变小的速率快慢
46 try {
47 Thread.sleep(50);
48 } catch (InterruptedException e) {
49 // TODO Auto-generated catch block
50 e.printStackTrace();
51 }
52 }
53 }
54 }
style="?android:attr/progressBarStyleHorizontal" 长形进度条
style="?android:attr/progressBarStyleLarge" 超大号圆形ProgressBar
style="?android:attr/progressBarStyleLargeInverse" 超大号圆形ProgressBar,Inverse反向转向的
style="?android:attr/progressBarStyleSmall" 小号圆形ProgressBar
style="?android:attr/progressBarStyleSmallTitle" 标题型圆形ProgressBar
等等还有很多
(2)setProgress和setSecondaryProgress区别:
这么说你肯定明白:网络视频加载的时候有个播放进度和缓冲进度,播放进度一般可以用setProgerss来显示,而setSecondaryProgress就是用来显示缓冲进度的,
同样的360的雷神引擎也是一样,setProgress是文件写入本地进度,setSecondaryProgress就是文件加载进度。还不明就自己写一个Demo测试一遍。写一个把复制文件的程序,setProgress表示往流里面读数据,setSecondaryProgerss表示从流里面输出数据。