Android應用開發學習之進度條

進度條ProgressBar是一個經常用到的組件,它的使用也很簡單,隻需要把進度條顯示在前臺,然後在後臺啟動一個線程,根據需要修改進度條的狀態。我們來看一個例子,該程序運行效果如下圖所示:

 

該程序主佈局文件main.xml內容如下:
 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <ProgressBar
        android:id="@+id/progressBar1"
	  	android:layout_width="wrap_content"
	  	android:layout_height="wrap_content"/>
    
    <ProgressBar 
        android:id="@+id/progressBar2"
	  	android:layout_width="wrap_content"
	  	android:layout_height="wrap_content"
	  	style="?android:attr/progressBarStyleLarge"/>
    
    <ProgressBar 
        android:id="@+id/progressBar3"
	  	android:layout_width="wrap_content"
	  	android:layout_height="wrap_content"
	  	style="?android:attr/progressBarStyleSmall"/>
    
    <ProgressBar 
        android:id="@+id/progressBar4"
	  	android:layout_width="match_parent"
	  	android:layout_height="wrap_content"
	  	style="?android:attr/progressBarStyleHorizontal"
	  	android:max="100"
	  	android:progress="0"
	  	android:secondaryProgress="70"/>
    
    <ProgressBar
    	android:id="@+id/progressBar5" 
    	style="@android:style/Widget.ProgressBar.Large"
    	android:layout_width="match_parent" 
    	android:layout_height="wrap_content"/>
    
    <ProgressBar
    	android:id="@+id/progressBar6" 
    	style="@android:style/Widget.ProgressBar.Small"
    	android:layout_width="match_parent" 
    	android:layout_height="wrap_content"/>
    
    <ProgressBar
    	android:id="@+id/progressBar7" 
    	android:max="100"
    	android:progress="0"
    	android:secondaryProgress="70"
    	style="@android:style/Widget.ProgressBar.Horizontal"
    	android:layout_width="match_parent" 
    	android:layout_height="wrap_content"/>

</LinearLayout>

主Activity文件內容如下:

package com.liuhaoyu;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity {
	private ProgressBar pb1, pb2, pb3, pb4, pb5, pb6, pb7;
	private Handler PbHandler;
	private int progress = 0;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        pb1 = (ProgressBar)findViewById(R.id.progressBar1);
        pb2 = (ProgressBar)findViewById(R.id.progressBar2);
        pb3 = (ProgressBar)findViewById(R.id.progressBar3);
        pb4 = (ProgressBar)findViewById(R.id.progressBar4);
        pb5 = (ProgressBar)findViewById(R.id.progressBar5);
        pb6 = (ProgressBar)findViewById(R.id.progressBar6);
        pb7 = (ProgressBar)findViewById(R.id.progressBar7);
        
        PbHandler = new Handler(){
        	public void handleMessage(Message msg){
        		if(msg.what == 0x0){
        			pb4.setProgress(progress);
        			pb7.setProgress(progress);
        		}
        		else
        		{
        			Toast.makeText(MainActivity.this, "任務執行成功!", Toast.LENGTH_SHORT).show();
        			pb1.setVisibility(View.GONE);
        			pb2.setVisibility(View.GONE);
        			pb3.setVisibility(View.GONE);
        			pb4.setVisibility(View.GONE);
        			pb5.setVisibility(View.GONE);
        			pb6.setVisibility(View.GONE);
        			pb7.setVisibility(View.GONE);
        		}
        	}
        };
        
        new Thread(new Runnable() {
			public void run() {
				while (true) {
					progress += Math.random()*10;
					try{
						Thread.sleep(200);
					}
					catch(InterruptedException e){
						e.printStackTrace();
					}
					
					Message m = new Message();
					if(progress < 100){
						m.what = 0x0;
						PbHandler.sendMessage(m);
					}else{
						m.what=0x1;
						PbHandler.sendMessage(m);
						break;
					}
				}

			}
		}).start();
    }
}

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *