隨筆-26  評論-12  文章-0  trackbacks-0

          我們做的很多應用程序,很多功能都需要較長的加載時間,比如下載功能,轉換頁面等等。在程序進行后臺處理的時候,前臺的ui是沒有反應的。如果在這段時間內我們不作任何處理就讓程序停在那的話。第一,用戶體驗會很差。第二,如果用戶在這段時間內不耐煩開始對界面猛點(我相信長時間程序沒響應大家都會這么做),那么很可能使程序掛掉。所以我們需要在程序加載時彈出加載對話框,解決以上兩個問題。

           

          先給大家看一下效果圖:

           

          顯示最新帖子界面:

           


           

          點擊最熱按鈕,跳轉到顯示最熱帖子頁面,在加載時彈出加載對話框:

           


           

          加載完畢后,變成了最熱頁面:

          Java代碼  收藏代碼
          1. progressdialog=ProgressDialog.show(HTTPRequestActivity.this, "Loading...", "Please wait...",true,false);  
           

          這當中progressdialog是一個ProgressDialog的對象,show的參數依次為上下文,Dialog要顯示的標題,Dialog顯示的信息,第三個參數確定進度條是否為不確定,第四個確定是否可以被取消。至于你還想要設置它的其他屬性,可以去查一下文檔,里面有很多設置屬性的函數,你可以通過這些函數把對話框改成你想要的樣子。

           

          然后我們要解決的一個問題就是如何在程序加載成功之后讓對話框消失,顯示新的頁面內容。

           

          代碼如下:

           

          Java代碼  收藏代碼
          1. Handler dialoghandle=new Handler(){  
          2.             @Override  
          3.             public void handleMessage(Message msg) {  
          4.                 // TODO Auto-generated method stub  
          5.                 super.handleMessage(msg);  
          6.                 progressdialog.dismiss();  
          7.             }  
          8.         };  
           

          首先定義一個Handler對象,重載其handlemessage方法,在這里面讓ProgressDialog消失。

           

          下面我以“最熱”按鈕為例,“最新”按鈕和其基本一致。

           

          Java代碼  收藏代碼
          1.  hotest.setOnClickListener(new OnClickListener(){  
          2.   
          3.             @Override  
          4.             public void onClick(View v) {  
          5.                 // TODO Auto-generated method   
          6.                 newest.setClickable(true);  
          7.                 hotest.setClickable(false);  
          8.                 progressdialog=ProgressDialog.show(HTTPRequestActivity.this, "Loading...", "Please wait...",true,false);  
          9.                 seturl("http://www.bling0.com/all/hottest/day.json");  
          10.                 new Thread(){  
          11.                     public void run(){  
          12.                         CallWebService(geturl());  
          13.                         listadapter=new SimpleAdapter(HTTPRequestActivity.this,Hotlist ,R.layout.user,new String[]{"title","group","photo","username"},new int []{R.id.title,R.id.group,R.id.photo,R.id.username});  
          14.                          
          15.   
          16.                               
          17. dialoghandle.post(new Runnable(){  
          18.             public void run()  
          19.                     {  
          20.                             <span style="white-space: pre;">    </span>setListAdapter(listadapter);    
          21.                                 dialoghandle.sendEmptyMessage(0);  
          22.                     }  
          23.                         });  
          24.                     }  
          25.                 }.start();  
          26.             }  
          27.         });  
          28. }  

          posted on 2012-07-26 22:29 地心引力 閱讀(1977) 評論(1)  編輯  收藏

          評論:
          # re: 如何實現程序加載時彈出正在加載對話框 2012-07-27 09:25 | 天津衛星天線
          這個實現起來不容易的  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 遂川县| 和林格尔县| 武山县| 博白县| 沙坪坝区| 益阳市| 马尔康县| 吴江市| 龙门县| 庆云县| 京山县| 遂宁市| 荔波县| 礼泉县| 彭阳县| 留坝县| 桃江县| 芜湖县| 富蕴县| 花莲市| 称多县| 元谋县| 浮梁县| 高平市| 玛沁县| 佛坪县| 临邑县| 宜兰市| 永州市| 航空| 洛宁县| 扬州市| 黄平县| 大兴区| 成武县| 黎川县| 田林县| 剑阁县| 河池市| 道孚县| 民权县|