Android Handler和ProgressBar實現進度條的開始,暫停,停止,後退和迴圈
阿新 • • 發佈:2019-02-07
佈局檔案import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; public class C93_Handler3Activity extends Activity { /** Called when the activity is first created. */ ProgressBar bar; Button start,pause,back,stop; Handler handler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); handler=new Handler(); bar=(ProgressBar)findViewById(R.id.bar); start=(Button)findViewById(R.id.start); pause=(Button)findViewById(R.id.pause); back=(Button)findViewById(R.id.back); stop=(Button)findViewById(R.id.stop); start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //開始按鈕,將要執行的執行緒物件放到隊列當中 handler.post(runnable); } }); pause.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //暫停按鈕,刪除隊列當中未執行的執行緒物件 handler.removeCallbacks(runnable); } }); back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(prolength!=0) { prolength=bar.getProgress()-1; bar.setProgress(prolength); setTitle(String.valueOf(prolength)); } } }); stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub handler.removeCallbacks(runnable); bar.setProgress(0); setTitle(String.valueOf(0)); } }); } int prolength=0;//定義程序度 //定義執行緒 Runnable runnable=new Runnable() { @Override public void run() { // TODO Auto-generated method stub prolength=bar.getProgress()+1; bar.setProgress(prolength); setTitle(String.valueOf(prolength)); //如果進度小於100,則延遲1000毫秒之後重複執行runnable if(prolength<100) { handler.postDelayed(runnable, 1000); } //否則,都置零,執行緒重新執行 else { bar.setProgress(0); setTitle(String.valueOf(0)); handler.post(runnable); } } }; }