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

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

           

          先給大家看一下效果圖:

           

          顯示最新帖子界面:

           


           

          點(diǎn)擊最熱按鈕,跳轉(zhuǎn)到顯示最熱帖子頁面,在加載時(shí)彈出加載對話框:

           


           

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

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

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

           

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

           

          代碼如下:

           

          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.         };  
           

          首先定義一個(gè)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: 如何實(shí)現(xiàn)程序加載時(shí)彈出正在加載對話框 2012-07-27 09:25 | 天津衛(wèi)星天線
          這個(gè)實(shí)現(xiàn)起來不容易的  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 清水县| 江口县| 黔东| 海晏县| 务川| 赣榆县| 怀远县| 靖西县| 曲麻莱县| 盖州市| 汝阳县| 玉田县| 鄂伦春自治旗| 江门市| 定安县| 三穗县| 榕江县| 城固县| 蕲春县| 玉山县| 义乌市| 尚义县| 祥云县| 神农架林区| 西平县| 娱乐| 潞城市| 永清县| 瓮安县| 伊春市| 贡嘎县| 金寨县| 独山县| 涿鹿县| 丽水市| 衡南县| 灵武市| 连南| 柳河县| 玉林市| 武威市|