好记性不如烂笔杆-android学习笔记<六> ProgressBar简单使用

16,//ProgressBar使用
xml文件中定义ProgressBar
//水平进度条

1 <ProgressBar 
2 android:id="@+id/firstBar"
3 style="?android:attr/progressBarStyleHorizontal"
4 android:layout_width="200dp"
5 android:layout_height="wrap_content"
6 android:visibility="gone"<!--默认状态不可见 -->
7 />

//默认圆圈形状滚动风格 style="?android:attr/progressBarStyle"

//Java文件,点击按钮启动滚动条

 1 private int i = 0;
 2 @Override
 3 public void onClick(View v) {
 4     // TODO Auto-generated method stub
 5     if(i == 0){
 6         //设置进度条处于可见的状态
 7         firstBar.setVisibility(View.VISIBLE);
 8         secondBar.setVisibility(View.VISIBLE);
 9     }else if(i < firstBar.getMax()){
10         //设置主进度条的当前值
11         firstBar.setProgress(i);
12         //设置第二进度条的当前值
13         firstBar.setSecondaryProgress(i + 10);
14         //因为默认的进度条无法显示进行的状态
15         //secondBar.setProgress(i);
16     }
17     else{
18         firstBar.setVisibility(View.GONE);
19         secondBar.setVisibility(View.GONE);
20     }
21     //进度条总长度的10%,逐次增加
22     i = i + 10;
23 }

 

17,//ProgressBar和Handler
//main.xml文件中

1 <ProgressBar 
2 android:id="@+id/handlerBar"
3 android:layout_width="200dip"
4 android:layout_height="wrap_content"
5 style="?android:attr/progressBarStyleHorizontal"
6 android:visibility="gone"
7 />

//Java文件中

//启动按钮

 1 启动按钮    onClick(View v) {
 2     //调用方法将进度条设置为可见状态
 3     bar.setVisibility(View.VISIBLE);
 4     //将第一个线程添加到线程队列中
 5     updateBarHandler.post(updateThread);
 6     }
 7     //使用匿名内部类来复写Handler当中的handerMessage方法
 8     Handler updateBarHandler = new Handler(){
 9 
10         @Override
11         public void handleMessage(Message msg) {
12             //设置ProgressBar的当前值
13             bar.setProgress(msg.arg1);
14             //将线程添加到线程队列中
15             updateBarHandler.post(updateThread);
16         }
17     };
18     //线程类,该类使用匿名内部类的方式进行声明
19     Runnable updateThread = new Runnable(){
20         int i = 0;
21     @Override
22     public void run() {
23         System.out.println("Begin Thread " + i);
24         i = i + 10 ;
25         //得到一个消息对象,Message类是由Android操作系统提供
26         Message msg = updateBarHandler.obtainMessage();
27         //将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员传递消息,优点是系统性能消耗较少
28         msg.arg1 = i ;
29         try{
30             //设置前线程睡眠1000ms
31             Thread.sleep(1000);
32         }catch(InterruptedException e){
33             e.printStackTrace();
34         }
35         if(i <= 100){
36             //将msg对象加入到消息队列当中
37             updateBarHandler.sendMessage(msg);
38         }
39         else{
40             //如果当i的值为100时,就将线程对象从handler当中移除,Progress停止
41             updateBarHandler.removeCallbacks(updateThread);
42         }
43     }
44     };

这一部分可能有点问题,先记录这里

posted @ 2012-11-20 16:21  JoanneZhang  阅读(213)  评论(0编辑  收藏  举报