Android網絡加載時顯示進度條

在聯網獲取數據時,用一個進度條提示用戶正在加載數據,如下講一下我是如何實現這種效果的。
  
  因爲Android的界面更新只能經過本身的UI線程進行操做,因此咱們須要用到Handler在進行更新界面的操做。
  
  一、聲明變量
    private Handler handler = new Handler();
    private ProgressDialog progressDialog = null;服務器

  二、在開始進行網絡鏈接時顯示進度條對話框
  progressDialog = ProgressDialog.show(MyActivity.this, "請稍等...", "獲取數據中...", true);網絡

  三、在handler.post中進行界面更新
  public void setListAdapter(){
  handler.post(new Runnable() {
  public void run() {
   //將獲取到的數據更新到列表中
   MyListView.setAdapter(saImageItems);
    }
   }
   });ide

四、開個新的線程進行網絡鏈接獲取數據
    new Thread(new Runnable(){
  佈局

    @Override
    public void run() {
    // TODO Auto-generated method stub
    //向服務器請求數據
    mapList=MyAPI.getAllDatas();
    setListAdapter(mapList);
    //更新完列表數據,則關閉對話框
    progressDialog.dismiss();
    }}).start();post

整個過程就這樣完成了,下面是效果圖:this

  還有另一種進度條的提示,是在對話框的標題上有圓形進度條進行提示。
  
  一、不能將Activity佈局設計爲無標題;
  並在setContentView()以前設置一下標題佈局形式:
  requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);spa

  二、在鏈接網絡前,設置進度條爲可視狀態
   setProgressBarIndeterminateVisibility(true);線程

  三、開一個新的線程向服務器請求數據,獲取數據後,將進度條設爲不可視狀態
         new Thread(new Runnable(){
         @Override
        public void run() {
          // TODO Auto-generated method stub
          try {
           todosomething();
          setProgressBarIndeterminateVisibility(false);
          } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
         }
        }}).start();設計

相關文章
相關標籤/搜索