在項目中推進中需要添加界面和界面之間的進度條顯示,這裏給出寫法。
這裏假設頁面1跳轉到頁面2,先給出代碼,結合代碼給出解釋:
以下爲頁面1中的關鍵代碼,其中需要提前定義靜態進度條變量p,private static ProgressDialog p;
final Handler handler2 = new Handler();
final Runnable mTasks = new Runnable() {
public void run() {
Intent intent = new Intent();
intent.setClass(register.this, zhuce.class);
startActivity(intent);
}
};
p = ProgressDialog.show(register.this, "驗證成功!正在跳轉…",
"加載中,請稍後..", true, true);
new Thread() {
public void run() {
try {
sleep(2000);// 設置休眠時間
handler2.post(mTasks);// 發送
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
這裏將跳轉事件放到一個線程中,創建一個handler對象發送這個線程。當然我們希望進度條是有一定的顯示時間的,所以我們再使用一個線程,通過設置其休眠時間來設置進度條的顯示時間。這裏設置的顯示時間爲2s。
此時就可以跳轉至界面2了,如果此時結束,那麼界面2按下back鍵回到界面1時,進度條並沒有消失,這樣子就不符合我們的目標了。此時需要在界面1內添加一個靜態函數,給出代碼:
public static void closeProgressDialog() {
p.dismiss();
}
此函數用於使進度條消失。此時在頁面2內註冊一個handler對象來實現調用此函數:
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case EVENT_TIME_TO_CHANGE_IMAGE:
register.closeProgressDialog();//調用頁面1的關閉進度條方法
break;
}
}
};
在註冊號handler之後,在主函數中調用:
Message message = mHandler.obtainMessage(EVENT_TIME_TO_CHANGE_IMAGE);
mHandler.sendMessage(message);
此時即可實現效果,最終實現效果如下:
特記下,以備後日回顧。