code

 

View Code
  1 package com.example.flexd8;
  2 
  3 import android.os.Bundle;
  4 import android.os.Handler;
  5 import android.os.Message;
  6 import android.app.Activity;
  7 import android.view.Menu;
  8 import android.view.View;
  9 import android.view.View.OnClickListener;
 10 import android.widget.Button;
 11 import android.widget.ProgressBar;
 12 import android.widget.TextView;
 13 
 14 public class MainActivity extends Activity {
 15     
 16     private TextView tv1;
 17     private Button bt1;
 18     private ProgressBar pb1;
 19     private ProgressBar pb2;
 20     
 21     //进度计数
 22     public int progressCounter = 0;
 23     //信号常量
 24     private static final int MSG_STOP_NOTIFIER = 1;
 25     private static final int MSG_THREADING_NOTIFIER = 2;
 26 
 27     @Override
 28     protected void onCreate(Bundle savedInstanceState) {
 29         super.onCreate(savedInstanceState);
 30         setContentView(R.layout.activity_main);
 31         
 32         //Widgets
 33         tv1 = (TextView)findViewById(R.id.tv1);
 34         bt1 = (Button)findViewById(R.id.bt1);
 35         pb1 = (ProgressBar)findViewById(R.id.pb1);
 36         pb2 = (ProgressBar)findViewById(R.id.pb2);
 37         
 38         //进度条不明确为false,即有明确进度
 39         //不明确就是滚动条的当前值自动在最小到最大值之间来回移动,形成这样一个动画效果,这个只是告诉别人我正在工作
 40         //明确就是根据你的进度可以设置现在的进度值
 41         pb1.setIndeterminate(false);
 42         pb2.setIndeterminate(false);
 43         
 44         //Listener
 45         bt1.setOnClickListener(btListener);
 46     }
 47 
 48     /**
 49      * Listener
 50      */
 51     OnClickListener btListener = new OnClickListener() {
 52         @Override
 53         public void onClick(View v) {
 54             tv1.setText("processing... ... ");
 55             //显示ProgressBar,设置满值进度,初始化进度
 56             pb1.setVisibility(View.VISIBLE);
 57             pb1.setMax(100);
 58             pb1.setProgress(0);
 59             pb2.setProgress(0);
 60             progressCounter = 0;
 61             new Thread(new Runnable() {
 62                 public void run() {
 63                     //0-9,10次轮询,每次10%
 64                     for(int i=0;i<10;i++){
 65                         try {
 66                             progressCounter = (i+1)*10;//每次10%
 67                             Thread.sleep(1000);
 68                             if(9==i){//满100%
 69                                 Message msg = new Message();
 70                                 msg.what = MSG_STOP_NOTIFIER;
 71                                 myHandler.sendMessage(msg);
 72                             }else{
 73                                 Message msg = new Message();
 74                                 msg.what = MSG_THREADING_NOTIFIER;
 75                                 myHandler.sendMessage(msg);
 76                             }
 77                             
 78                         } catch (InterruptedException e) {
 79                             // TODO Auto-generated catch block
 80                             e.printStackTrace();
 81                         }
 82                     }//for
 83                 }
 84             }).start();
 85         }
 86     };
 87     
 88     /**
 89      * Handler处理消息
 90      */
 91     Handler myHandler = new Handler(){
 92         @Override
 93         public void handleMessage(Message msg) {
 94             switch(msg.what){
 95             
 96                 case MSG_STOP_NOTIFIER:
 97                     //得到终止的消息,隐藏ProgressBar,中断线程
 98                     tv1.setText("Mission Complete!");
 99                     pb1.setVisibility(View.GONE);
100                     Thread.currentThread().interrupt();
101                     break;
102                     
103                 case MSG_THREADING_NOTIFIER:
104                     //得到持续执行的消息,设置ProgressBar进度
105                     //if(!Thread.currentThread().isInterrupted()){
106                         tv1.setText(String.valueOf(progressCounter) + "% processing");
107                         pb1.setProgress(progressCounter);
108                         pb2.setProgress(progressCounter);
109                     //}
110                     break;
111             }
112             super.handleMessage(msg);
113         }
114     };
115     
116     @Override
117     public boolean onCreateOptionsMenu(Menu menu) {
118         // Inflate the menu; this adds items to the action bar if it is present.
119         getMenuInflater().inflate(R.menu.activity_main, menu);
120         return true;
121     }
122 
123 }

 

posted on 2012-12-25 11:42  hanxun  阅读(215)  评论(0编辑  收藏  举报