標籤:
該工程的功能是實現點擊按鈕進度條按10%遞增,使用的方式是Handler
以下的代碼是MainActivity.java中的代碼
package com.example.progressbarhandler;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;public class MainActivity extends Activity { //申明變數 ProgressBar bar = null; Button startButton = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //根據空間的ID得到代表控制項的對象,並未按鈕去設定監聽器 bar = (ProgressBar)findViewById(R.id.bar); startButton = (Button)findViewById(R.id.startButton); startButton.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub bar.setVisibility(View.VISIBLE); updateBarHandler.post(updateThread); } } //使用匿名內部類來複寫Handler當中的handMessage方法 Handler updateBarHandler = new Handler(){ public void handleMessage(Message msg){ bar.setProgress(msg.arg1); //線程隊列 updateBarHandler.post(updateThread); } }; //線程類,該類使用匿名內部類的方式進行聲明 Runnable updateThread = new Runnable(){ int i = 0; public void run(){ System.out.println("Begin Thread"); i = i + 10; //得到一個訊息對象,message類是由android作業系統提供 Message msg = updateBarHandler.obtainMessage(); //將msg對象的arg1參數的值設定為i,用arg1和arg2這兩個成員傳遞訊息 msg.arg1 = i; try{ //設定當前顯示睡眠1秒 Thread.sleep(1000); } catch (InterruptedException e){ e.printStackTrace(); } //將msg對象加入到訊息佇列當中 updateBarHandler.sendMessage(msg); if(i == 100){ //如果當i的值為100時,就將線程對象從handle當中移除 updateBarHandler.removeCallbacks(updateThread); } } };}
以下的代碼是activity_main.xml中的代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="${relativePackage}.${activityClass}" > <ProgressBar android:id="@+id/bar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="200dp" android:layout_height="wrap_content" android:visibility="gone" /> <Button android:id="@+id/startButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="start" /></LinearLayout>
Android學習筆記——ProgressBarHandler