1. 程式人生 > >(轉)ProgressDialog使用總結

(轉)ProgressDialog使用總結

ProgressDialog的使用 

ProgressDialog 繼承自AlertDialog,AlertDialog繼承自Dialog,實現DialogInterface介面。

ProgressDialog的建立方式有兩種,一種是new Dialog ,一種是呼叫Dialog的靜態方法Dialog.show()。

  1. // 方式一:new Dialog
  2.     final ProgressDialog dialog = new ProgressDialog(this);  
  3.     dialog.show();  

  1. // 方式二:使用靜態方式建立並顯示,這種進度條只能是圓形條,設定title和Message提示內容
  2.     ProgressDialog dialog2 = ProgressDialog.show(this"提示""正在登陸中");  

  1. // 方式三 使用靜態方式建立並顯示,這種進度條只能是圓形條,這裡最後一個引數boolean indeterminate設定是否是不明確的狀態
  2.     ProgressDialog dialog3 = ProgressDialog  
  3.             .show(this"提示""正在登陸中"false);  

  1. // 方式四 使用靜態方式建立並顯示,這種進度條只能是圓形條,這裡最後一個引數boolean cancelable 設定是否進度條是可以取消的
  2.     ProgressDialog dialog4 = ProgressDialog.show(this"提示""正在登陸中",  
  3.             falsetrue);  
  1. // 方式五 使用靜態方式建立並顯示,這種進度條只能是圓形條,這裡最後一個引數 DialogInterface.OnCancelListener
  2.     // cancelListener用於監聽進度條被取消
  3.     ProgressDialog dialog5 = ProgressDialog.show(this"提示""正在登陸中"true,  
  4.             true
    , cancelListener);  

方式五中需要一個cancelListener,程式碼如下;

  1. private OnCancelListener cancelListener = new OnCancelListener() {  
  2.     @Override
  3.     publicvoid onCancel(DialogInterface dialog) {  
  4.         // TODO Auto-generated method stub
  5.         Toast.makeText(MainActivity.this"進度條被取消", Toast.LENGTH_LONG)  
  6.                 .show();  
  7.     }  
  8. };  



ProgressDialog的樣式有兩種,一種是圓形不明確狀態,一種是水平進度條狀態

第一種方式:圓形進度條

  1. final ProgressDialog dialog = new ProgressDialog(this);  
  2.         dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 設定進度條的形式為圓形轉動的進度條
  3.         dialog.setCancelable(true);// 設定是否可以通過點選Back鍵取消
  4.         dialog.setCanceledOnTouchOutside(false);// 設定在點選Dialog外是否取消Dialog進度條
  5.         dialog.setIcon(R.drawable.ic_launcher);//
  6.         // 設定提示的title的圖示,預設是沒有的,如果沒有設定title的話只設置Icon是不會顯示圖示的
  7.         dialog.setTitle("提示");  
  8.         // dismiss監聽
  9.         dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {  
  10.             @Override
  11.             publicvoid onDismiss(DialogInterface dialog) {  
  12.                 // TODO Auto-generated method stub
  13.             }  
  14.         });  
  15.         // 監聽Key事件被傳遞給dialog
  16.         dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {  
  17.             @Override
  18.             publicboolean onKey(DialogInterface dialog, int keyCode,  
  19.                     KeyEvent event) {  
  20.                 // TODO Auto-generated method stub
  21.                 returnfalse;  
  22.             }  
  23.         });  
  24.         // 監聽cancel事件
  25.         dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {  
  26.             @Override
  27.             publicvoid onCancel(DialogInterface dialog) {  
  28.                 // TODO Auto-generated method stub
  29.             }  
  30.         });  
  31.         //設定可點選的按鈕,最多有三個(預設情況下)
  32.         dialog.setButton(DialogInterface.BUTTON_POSITIVE, "確定",  
  33.                 new DialogInterface.OnClickListener() {  
  34.                     @Override
  35.                     publicvoid onClick(DialogInterface dialog, int which) {  
  36.                         // TODO Auto-generated method stub
  37.                     }  
  38.                 });  
  39.         dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",  
  40.                 new DialogInterface.OnClickListener() {  
  41.                     @Override
  42.                     publicvoid onClick(DialogInterface dialog, int which) {  
  43.                         // TODO Auto-generated method stub
  44.                     }  
  45.                 });  
  46.         dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",  
  47.                 new DialogInterface.OnClickListener() {  
  48.                     @Override
  49.                     publicvoid onClick(DialogInterface dialog, int which) {  
  50.                         // TODO Auto-generated method stub
  51.                     }  
  52.                 });  
  53.         dialog.setMessage("這是一個圓形進度條");  
  54.         dialog.show();  
  55.         new Thread(new Runnable() {  
  56.             @Override
  57.             publicvoid run() {  
  58.                 // TODO Auto-generated method stub
  59.                 try {  
  60.                     Thread.sleep(5000);  
  61.                     // cancel和dismiss方法本質都是一樣的,都是從螢幕中刪除Dialog,唯一的區別是
  62.                     // 呼叫cancel方法會回撥DialogInterface.OnCancelListener如果註冊的話,dismiss方法不會回掉
  63.                     dialog.cancel();  
  64.                     // dialog.dismiss();
  65.                 } catch (InterruptedException e) {  
  66.                     // TODO Auto-generated catch block
  67.                     e.printStackTrace();  
  68.                 }  
  69.             }  
  70.         }).start();  

其中通過Thread.sleep(5000)模擬後臺操作。

cancel和dismiss方法本質都是一樣的,都是從螢幕中刪除Dialog,唯一的區別是:呼叫cancel方法會回撥DialogInterface.OnCancelListener如果註冊的話,dismiss方法不會回掉。

 第二種方式:水平進度條

  1. // 進度條還有二級進度條的那種形式,這裡就不演示了
  2.     final ProgressDialog dialog = new ProgressDialog(this);  
  3.     dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 設定水平進度條
  4.     dialog.setCancelable(true);// 設定是否可以通過點選Back鍵取消
  5.     dialog.setCanceledOnTouchOutside(false);// 設定在點選Dialog外是否取消Dialog進度條
  6.     dialog.setIcon(R.drawable.ic_launcher);// 設定提示的title的圖示,預設是沒有的
  7.     dialog.setTitle("提示");  
  8.     dialog.setMax(100);  
  9.     dialog.setButton(DialogInterface.BUTTON_POSITIVE, "確定",  
  10.             new DialogInterface.OnClickListener() {  
  11.                 @Override
  12.                 publicvoid onClick(DialogInterface dialog, int which) {  
  13.                     // TODO Auto-generated method stub
  14.                 }  
  15.             });  
  16.     dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",  
  17.             new DialogInterface.OnClickListener() {  
  18.                 @Override
  19.                 publicvoid onClick(DialogInterface dialog, int which) {  
  20.                     // TODO Auto-generated method stub
  21.                 }  
  22.             });  
  23.     dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",  
  24.             new DialogInterface.OnClickListener() {  
  25.                 @Override
  26.                 publicvoid onClick(DialogInterface dialog, int which) {  
  27.                     // TODO Auto-generated method stub
  28.                 }  
  29.             });  
  30.     dialog.setMessage("這是一個水平進度條");  
  31.     dialog.show();  
  32.     new Thread(new Runnable() {  
  33.         @Override
  34.         public

    相關推薦

    ProgressDialog使用總結

    ProgressDialog的使用  ProgressDialog 繼承自AlertDialog,AlertDialog繼承自Dialog,實現DialogInterface介面。 ProgressDialog的建立方式有兩種,一種是new Dialog ,一

    Java面試題全集(中) +自己總結

    display png net lan ont tail java面試 tar ref Java面試題 自己總總結 https://www.cnblogs.com/songanwei/p/9366427.html Java面試題全集(上) https://blog.csdn

    最詳細的 Android Toolbar 開發實踐總結

    activity resource listener nba flat xmlns mat https ons 轉自:http://www.codeceo.com/article/android-toolbar-develop.html 過年前發了一篇介紹 Transluc

    C++中的static關鍵字的總結

    blank protected .com 如果 發現 內部實現 屬於 out 服務  C++的static有兩種用法:面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變量和函數,不涉及類;後者主要說明static在類中的作用。 1.面向過程

    基於MVC4+EasyUI的Web開發框架經驗總結5--使用HTML編輯控件CKEditor和CKFinder

    err config 兩個 腳本 web開發 upload asp 正常 初始 http://www.cnblogs.com/wuhuacong/p/3780356.html Web開發上有很多HTML的編輯控件,如CKEditor、kindeditor等等,很多都做的很

    基於MVC4+EasyUI的Web開發框架經驗總結2- 使用EasyUI的樹控件構建Web界面

    set 應用 get ember trim ase str zab ble http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少時間在重構和進一步提煉我的Web開發框架上,力求在用戶體驗和界面設計方面,和Winfor

    基於MVC4+EasyUI的Web開發框架經驗總結6--在頁面中應用下拉列表的處理

    ica new web開發 don ext images 如果 bob 獲取 http://www.cnblogs.com/wuhuacong/p/3840321.html 在很多Web界面中,我們都可以看到很多下拉列表的元素,有些是固定的,有些是動態的;有些是字典內容,

    基於MVC4+EasyUI的Web開發框架經驗總結8--實現Office文檔的預覽

    討論 off info code .cn viewer 存在 nco app http://www.cnblogs.com/wuhuacong/p/3871991.html 基於MVC4+EasyUI的Web開發框架經驗總結(8)--實現Office文檔的預覽

    erlang程序優化點的總結

    數據庫 機器 ria 嚴重 多線程 分別是 簡單 構造 代碼實現 註意,這裏只是給出一個總結,具體性能需要根據實際環境和需要來確定 霸爺指出,新的erlang虛擬機有很多調優啟動參數,今後現在這個方面深挖一下。 1. 進程標誌設置: 消息和binary內

    Java IO流學習總結

    rar output 出現 arr system 不存在 技術分享 輸出 寫入 原文地址:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html Java流操作有關的類或接口: Java流類圖結構:

    集成學習算法總結----Boosting和Bagging

    原理 過程 訓練 嚴重 oos 機器學習 ppr 次數 error 1、集成學習概述 1.1 集成學習概述 集成學習在機器學習算法中具有較高的準去率,不足之處就是模型的訓練過程可能比較復雜,效率不是很高。目前接觸較多的集成學習主要有2種:基於Boosting的和基於Bagg

    C#中WinForm程序退出方法技巧總結

    ren sender body 登錄 ble 按鈕 動作 打開 alt 一、關閉窗體 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.E

    常見性能優化策略的總結

    觸發 air 技術 敏捷 返回 好的 依賴 pan 支付 看到一篇好文,轉過來好好學習 閱讀目錄 代碼 數據庫 緩存 異步 NoSQL JVM調優 多線程與分布式 度量系統(監控、報警、服務依賴管理) 案例一:商家與控制區關系的刷新job 案例二:POI緩存設計與實現

    前端筆記----jquery入門知識點總結

    outer 尺寸 對象 層級 ani 入門 fontsize fun click http://www.cnblogs.com/cwp-bg/p/7633623.html 一、jquery的加載方法 $(document).ready(function(){js代碼});

    安卓手機GPU OpenCL總結

    性能 網上 gin bsp 策略 測試的 公司 ocl adding 前段時間,把市面上手機GPU OpenCL支持情況做了一個總結。總結如下: 目前,手機 GPU 市面有四個公司產品:Qualcomm, Imagination Technologies,ARM, Viva

    Linux命令總結

    查看登陸 oca 下一個 同時 找到 刪除用戶 mtime 高亮 數值 1.ls [選項] [目錄名 | 列出相關目錄下的所有目錄和文件 -a 列出包括.a開頭的隱藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的詳細信息 -c 根據ctim

    javaweb學習總結(十一)——使用Cookie進行會話管理

    緩存 利用 iter() 自然 web har oca main end 一、會話的概念   會話可簡單理解為:用戶開一個瀏覽器,點擊多個超鏈接,訪問服務器多個web資源,然後關閉瀏覽器,整個過程稱之為一個會話。  有狀態會話:一個同學來過教室,下次再來教室,我們會知道這個

    JavaWeb學習總結(十三)——使用Session防止表單重復提交

    Coding etc pub submit exce sdf patch 傳輸 alt  在平時開發中,如果網速比較慢的情況下,用戶提交表單後,發現服務器半天都沒有響應,那麽用戶可能會以為是自己沒有提交表單,就會再點擊提交按鈕重復提交表單,我們在開發中必須防止表單重復提交。

    javaweb學習總結(十五)——JSP基礎語法

    troy 嚴格 too cal service alt 隱式 情況 當前系統時間  任何語言都有自己的語法,JAVA中有,JSP雖然是在JAVA上的一種應用,但是依然有其自己擴充的語法,而且在JSP中,所有的JAVA語句都可以使用。 一、JSP模版元素   JSP頁面中的H

    Fiddler 抓包工具總結

    人的 現在 手機 inspect bubuko lec 開啟 區分 cmd 閱讀目錄 1. Fiddler 抓包簡介 1). 字段說明 2). Statistics 請求的性能數據分析 3). Inspectors 查看數據內容