歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android_UI_中常用的兩種ProgressDialog

Android_UI_中常用的兩種ProgressDialog,當手機跟服務器進行數據交互的時候,我們不能把耗時的操作放在主線程中,要做的事情就是異步.

而要異步,我們也要在界面上反饋一個信息給用戶,讓用戶知道應該等待數據下載....

先看兩張圖,這就是最常用的異步彈出窗口了

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/Android源碼集錦/2011年/12月/Android_UI_中常用的兩種ProgressDialog/

 

 

上代碼吧 都比較簡單,關於線程,看了比較多的建議...不管是線程也好還是其他什麼都好,android是一個手機客戶端,

大家在寫代碼的同時還是非常有必要針對內存優化,代碼健壯做一些相應上的代碼優化的.

比如 少用new的關鍵字,對象多復用..等等.我再這裡就不敘述了,我個人也不是非常的強悍

  1. package tree.love.UI.Demo.ProgressDialog.activity;  
  2. import tree.love.UI.Demo.ProgressDialog.R;  
  3. import android.app.Activity;  
  4. import android.app.ProgressDialog;  
  5. import android.os.Bundle;  
  6. import android.os.Handler;  
  7. import android.os.Message;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. public class HomeActivity extends Activity implements OnClickListener  
  11. {  
  12.     private ProgressDialog loadingDialog = null;  
  13.     /** 第一種風格 **/  
  14.     private static final int LOADING_STYLE_01 = 1 ;  
  15.     /** 第二種風格 **/  
  16.     private static final int LOADING_STYLE_02 = 2 ;  
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState)  
  19.     {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.         findViewById(R.id.button).setOnClickListener(this);  
  23.         findViewById(R.id.button1).setOnClickListener(this);  
  24.     }  
  25.     @Override  
  26.     public void onClick(View v)  
  27.     {  
  28.         switch (v.getId())  
  29.         {  
  30.             case R.id.button://按鈕1   
  31.                 loadingDialog = PrintAlertUtil.showDialog(this"正在下載...");  
  32.                 Thread thread01 = new Thread(new Runnable() {  
  33.                       
  34.                     @Override  
  35.                     public void run()  
  36.                     {  
  37.                         downLoad(5,false);  
  38.                     }  
  39.                 });  
  40.                 thread01.start();  
  41.                 break;  
  42.             case R.id.button1://按鈕2   
  43.                 loadingDialog = PrintAlertUtil.showDialog(this"正在更新"100);  
  44.                 Thread thread02 = new Thread(new Runnable() {  
  45.                       
  46.                     @Override  
  47.                     public void run()  
  48.                     {  
  49.                         downLoad(10,true);  
  50.                     }  
  51.                 });  
  52.                 thread02.start();  
  53.                 break;  
  54.         }  
  55.     }  
  56.     private Handler mHandler = new Handler() {  
  57.         @Override  
  58.         public void handleMessage(Message msg)  
  59.         {  
  60.             super.handleMessage(msg);  
  61.             switch (msg.what)  
  62.             {  
  63.                 case LOADING_STYLE_01:  
  64.                     //關閉對話框   
  65.                     PrintAlertUtil.dismissDialog(loadingDialog);  
  66.                     //提示   
  67.                     PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());  
  68.                     break;  
  69.                       
  70.                 case LOADING_STYLE_02:  
  71.                     int p = msg.getData().getInt("percent");  
  72.                     if (p == 100)  
  73.                     {  
  74.                         //更新完成,關閉對話框   
  75.                         loadingDialog.setProgress(p);  
  76.                         PrintAlertUtil.dismissDialog(loadingDialog);  
  77.                         PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());  
  78.                     }  
  79.                     else  
  80.                     {  
  81.                         //更新進度條   
  82.                         loadingDialog.setProgress(p);  
  83.                     }  
  84.                     break;  
  85.             }  
  86.         }  
  87.     };  
  88.     /** 
  89.      * 模擬下載操作 
  90.      */  
  91.     public void downLoad(int number,boolean download)  
  92.     {  
  93.         for (int i = 0; i < number; i++)  
  94.         {  
  95.             /** 每次模擬停頓耗時0.5秒 **/  
  96.             try{Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}  
  97.             if (download)  
  98.             {  
  99.                 /** 每循環一次更新一次進度 **/  
  100.                 int percent = (i+1)*10;  
  101.                 Message message = new Message();  
  102.                 Bundle bundle = message.getData();  
  103.                 bundle.putInt("percent", percent);  
  104.                 message.setData(bundle);  
  105.                 message.what = LOADING_STYLE_02;  
  106.                 if (i == 9)  
  107.                 {  
  108.                     message.obj="更新完畢";  
  109.                 }  
  110.                 mHandler.sendMessage(message);  
  111.             }  
  112.         }  
  113.         if (!download)  
  114.         {  
  115.             Message message = new Message();  
  116.             message.what = LOADING_STYLE_01;  
  117.             message.obj = "下載完成";  
  118.             mHandler.sendMessage(message);  
  119.         }  
  120.     }  
  121. }  
Copyright © Linux教程網 All Rights Reserved