ProgressBar的應用

摘要:ProgressBar的應用

下載進度Bar的實作:

xml的部分:

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

    <TextView
        android:id="@+id/txtview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />


    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="0" />


    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start" />

</LinearLayout>

主程式部分:

package tw.nkfust.jason;

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

public class ProgressBarSampleIIActivity extends Activity implements Runnable {
    /** Called when the activity is first created. */
 TextView txtview1;
 Button btn1;
 ProgressBar pgb1;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        txtview1 = (TextView) findViewById(R.id.txtview1);
        btn1 = (Button) findViewById(R.id.button1);
        pgb1 = (ProgressBar) findViewById(R.id.progressBar1);
       
        btn1.setOnClickListener(new Button.OnClickListener(){
   public void onClick(View v) {
    // TODO Auto-generated method stub
    txtview1.setText("下載中...");
    Thread th1 = new Thread(ProgressBarSampleIIActivity.this);
    th1.start();
   }         
        });
    }

 public void run() {
  // TODO Auto-generated method stub
  for(int i=0;i<10;i++){
   try {
    if(i<7)
     Thread.sleep(500);
    else
     Thread.sleep(3000);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   int percent=(i+1)*10;
   Message m = new Message();
   m.obj=(Integer)percent;
   handler.sendMessage(m);
  }
 }
 
 private Handler handler = new Handler(){
  public void handleMessage(Message msg){
   int x=Integer.parseInt(msg.obj.toString());
   if(x==100){
    txtview1.setText("完成!");
    pgb1.setProgress(x);
   }else{
    txtview1.setText("下載進度:"+x+"%");
    pgb1.setProgress(x);
   }   
  }
 };
}