本篇目的為實做手機上之載入中對話方塊,如同在電腦上開啟網頁等待時,滑鼠圖示總是會出現小沙漏,或是在安裝程式時,會出現一條跑讀著已完成幾%之圖示。

Android裡必須透過ProgressDialog來執行,此需特別留意Progress Dialog必須要在背景程式執行完畢之前,以dismiss()方法關閉取得Focus對話方塊,否則會陷入無限迴圈中。第二點要注意的是執行緒當中不可有任何變更context或是Parent View的任何狀態、文字輸出等事件,這是因為執行緒裡面的Context以及View並不屬於Parent,兩者之間也沒有任何關係。

小試身手小範例

設計一個按鈕,按下按鈕之後,開始執行緒的週期,在執行的過程中顯示ProgressDialog,最後執行完畢時,結束ProgressDialog對話視窗。

device017   device018  

JAVA檔

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;


public class BlogExample extends Activity {

public ProgressDialog PDialog = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);

Button StartButton = (Button)findViewById(R.id.Button01);
StartButton.setOnClickListener(ShowProgressDialog);
}

Button.OnClickListener ShowProgressDialog = new Button.OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
    final CharSequence strDialogTitle = getString(R.string.str_dialog_title);
    final CharSequence strDialogBody = getString(R.string.str_dialog_body);

//顯示Progress對話視窗
    PDialog = ProgressDialog.show(BlogExample.this, strDialogTitle, strDialogBody, true);

    new Thread(){
    public void run(){
    try{
    sleep(5000);
    }
    catch(Exception e){
    e.printStackTrace();
    }
    finally{
   PDialog.dismiss();
     }
    }
   }.start();
  }

  };
}

XML檔

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="小試身手小範例"
android:textSize="20sp"
android:layout_marginBottom="10sp"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="請按下按鈕,開啟後將開始執行Thread!"
android:textSize="15sp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 執 行 "
android:textSize="30sp"
android:layout_marginTop="15sp"
android:id="@+id/Button01"
/>

</LinearLayout>

arrow
arrow
    創作者介紹
    創作者 S 的頭像
    S

    S's Journal

    S 發表在 痞客邦 留言(2) 人氣()