1. 程式人生 > >Android Handler和ProgressBar實現進度條的開始,暫停,停止,後退和迴圈

Android Handler和ProgressBar實現進度條的開始,暫停,停止,後退和迴圈

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);  
            }  
        }  
    };  
}  
佈局檔案