![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }