2012CSDN博客之星火熱出爐! 2013年全國百所高校巡講講師招募
因為考慮到有些程序加載時間相對較長,所以在啟動主界面之前,實現一個加載的progressDialog對話框來延緩,相對來說可以提高用戶體驗度。
如果是直接進入主界面,即activity,界面因為加載時間長,一片漆黑,讓用戶老覺得這程序不行。
貼出源碼:
方法一:
- public class LoadingActivity extends Activity {
- private ProgressDialog dialog;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- //設置一個progressdialog的彈窗
- dialog = ProgressDialog.show(this, null, "程序正在加載,請稍候...", true, false);
- //啟動一個處理loading業務的線程
- new LoadingThread(this).start();
- }
- private class LoadingThread extends Thread {
- private LoadingActivity activity;
- public LoadingThread(LoadingActivity act) {
- Log.d(">>>>>LoadingThread", "構造方法");
- activity = act;
- }
- public void run() {
- Log.d(">>>>>LoadingThread", "傳遞message");
- //*********************
- // 處理業務
- //*********************
- //發送消息
- activity.mHandler.sendEmptyMessage(0);
- }
- }
- //處理跳轉到主Activity
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- Log.d(">>>>>Mhandler", "開始handleMessage");
- Intent mIntent = new Intent();
- mIntent.setClass(LoadingActivity.this, PalmHospital_main_Activity.class);
- startActivity(mIntent);
- LoadingActivity.this.finish();
- Log.d(">>>>>Mhandler", "LoadActivity關閉");
- if (dialog.isShowing())
- dialog.dismiss();
- }
- };
- }
public class LoadingActivity extends Activity {
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//設置一個progressdialog的彈窗
dialog = ProgressDialog.show(this, null, "程序正在加載,請稍候...", true, false);
//啟動一個處理loading業務的線程
new LoadingThread(this).start();
}
private class LoadingThread extends Thread {
private LoadingActivity activity;
public LoadingThread(LoadingActivity act) {
Log.d(">>>>>LoadingThread", "構造方法");
activity = act;
}
public void run() {
Log.d(">>>>>LoadingThread", "傳遞message");
//*********************
// 處理業務
//*********************
//發送消息
activity.mHandler.sendEmptyMessage(0);
}
}
//處理跳轉到主Activity
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
Log.d(">>>>>Mhandler", "開始handleMessage");
Intent mIntent = new Intent();
mIntent.setClass(LoadingActivity.this, PalmHospital_main_Activity.class);
startActivity(mIntent);
LoadingActivity.this.finish();
Log.d(">>>>>Mhandler", "LoadActivity關閉");
if (dialog.isShowing())
dialog.dismiss();
}
};
}
方法二:相對來說要容易理解一點,貼圖

- public class LoadingActivity extends Activity {
- private ProgressDialog dialog;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- //設置一個progressdialog的彈窗
- dialog = ProgressDialog.show(this, "加載中...", "正在搜尋。。。。,請稍後!");
- Thread thread = new Thread(new Runnable() {
- public void run() {
- //do...
- Message message = new Message();
- message.what = 0;
- mHandler.sendMessage(message);
- }
- });
- thread.start();
- }
- //處理跳轉到主Activity
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- Log.d(">>>>>Mhandler", "開始handleMessage");
- Intent mIntent = new Intent();
- mIntent.setClass(LoadingActivity.this, PalmHospital_main_Activity.class);
- startActivity(mIntent);
- LoadingActivity.this.finish();
- Log.d(">>>>>Mhandler", "LoadActivity關閉");
- if (msg.what == 0) {
- dialog.dismiss();
- }
- }
- };
- }
