Android progressbar 詳解


[原文Android學習筆記(十六)進度條]

 

 

ProgressBar

 

 XML屬性

屬性名
描述
android:animationResolution
超時的動畫幀之間的毫秒 ;必須是一個整數值,如“100”。
android:indeterminate
是否允許使用不確定模式,在不確定模式下,進度條動畫無限循環
android:indeterminateBehavior
定義當進度達到最大時,不確定模式的表現;
該值必須為repeat或者cycle,repeat表示進度從0重新開始;cycle表示進度保持當前值,並且回到0
android:indeterminateDrawable
定義不確定模式是否可拉
android:indeterminateDuration
時間不定的動畫
android:indeterminateOnly
限制為不定模式
android:interpolator

android:max
定義進度的最大值
android:maxHeight
進度Widget最大高
android:miniHeight
進度Widget最小高
android:maxWidth
進度Widget最大寬
android:minWidth
進度Widget最小寬
android:mirrorForRtl
定義了相關畫板如果需要反映在RTL模式
android:progress
設置進度的默認值,值介於0到max之間
android:progressDrawable

android:secondaryProgress
定義二級進度值,值介於0到max。該進度在主進度和背景之間。比如用於網絡播放視頻時,二級進度用於表示緩沖進度,主進度用於表示播放進度。

進度條的樣式

Widget.ProgressBar.Horizontal  長形進度

Android xml  布局:
[html]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. <ProgressBar  
  2.      android:id="@+id/progress_bar"  
  3.      android:layout_width="fill_parent"  
  4.      android:layout_height="wrap_content"  
  5.      style="@android:style/Widget.ProgressBar.Horizontal "  
  6.      />  
源碼:
[java]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. private ProgressBar mProgress;  
  2.  private int mProgressStatus = 0;  
  3.  private Handler mHandler = new Handler();  
  4.  @Override  
  5.  protected void onCreate(Bundle savedInstanceState) {  
  6.   super.onCreate(savedInstanceState);  
  7.   setContentView(R.layout.activity_main);  
  8.   mProgress = (ProgressBar) findViewById(R.id.progress_bar);  
  9.   new Thread(new Runnable() {  
  10.    @Override  
  11.    public void run() {  
  12.     while(mProgressStatus < 100){  
  13.      mProgressStatus = doWork();  
  14.      mHandler.post(new Runnable(){  
  15.       @Override  
  16.       public void run() {  
  17.        mProgress.setProgress(mProgressStatus);  
  18.       }  
  19.      });  
  20.     }  
  21.    }  
  22.   }).start();  
  23.  }  
效果圖:

帶第二進度的進度條

xml配置如下:
[html]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. <ProgressBar  
  2.     android:id="@+id/progress_bar_with_second"  
  3.     style="@android:style/Widget.ProgressBar.Horizontal"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="wrap_content"  
  6.     android:progress="40"  
  7.     android:secondaryProgress="70"  
  8.     android:paddingTop="20dp"  
  9.     android:paddingBottom="20dp"/>  
這里我們設置了初始的進度為40,android:progress的值在mini和max之間即mini<=progressvalue<=max
設置了第二進度條的進度值為70,該值也在mini和max之間。
效果如下:

不確定模式進度條

xml配置文件:
[html]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. <ProgressBar  
  2.       android:id="@+id/progress_bar_indeterminate"  
  3.       style="@android:style/Widget.ProgressBar.Horizontal"  
  4.       android:layout_width="fill_parent"  
  5.       android:layout_height="wrap_content"  
  6.       android:indeterminate="true"  
  7.       android:indeterminateBehavior="cycle"  
  8.       android:paddingBottom="20dp"  
  9.       android:paddingTop="20dp"  
  10.       android:progress="40" />  
這里通過android:indeterminate="true"設置了當前為無模式進度條
效果如圖:

普通圓形進度:Widget.ProgressBar.Inverse

[html]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. <ProgressBar  
  2.         android:id="@+id/progress_bar1"  
  3.         style="@android:style/Widget.ProgressBar.Inverse"  
  4.         android:layout_width="fill_parent"  
  5.         android:layout_height="wrap_content"  
  6.         android:progress="50"  
  7.         android:background="#ff00ff"  
  8.         android:paddingTop="4dp" />  
通過android:backgroup設置了背景色
效果如圖:

普通小圓形進度條

Widget.ProgressBar.Small   或 Widget.ProgressBar.Small.Inverse
 xml配置:
[html]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. <ProgressBar  
  2.     android:id="@+id/progress_bar2"  
  3.     style="@android:style/Widget.ProgressBar.Small"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="wrap_content"  
  6.     android:background="#ff00ff"  
  7.     android:paddingBottom="20dp"  
  8.     android:paddingTop="20dp"  
  9.     android:progress="50" />  
效果圖:

大號圓形進度條

Widget.ProgressBar.Large 或 Widget.ProgressBar.Large.Inverse
XML配置:
[html]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. <ProgressBar  
  2.     android:id="@+id/progress_bar4"  
  3.     style="@android:style/Widget.ProgressBar.Large"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="wrap_content"  
  6.     android:background="#ff00ff"  
  7.     android:paddingBottom="20dp"  
  8.     android:paddingTop="20dp"  
  9.     android:progress="50" />  
效果圖如下:

ProgressDialog

進度條對話框的設置

先看源碼:
[java]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. Button btn3 = (Button) findViewById(R.id.progress_dlg_3);  
  2.  btn3.setOnClickListener(new OnClickListener(){  
  3.   @Override  
  4.   public void onClick(View v) {  
  5.    ProgressDialog progressDlg = new ProgressDialog(  
  6.      ProgressDlg.this);  
  7.    progressDlg.setTitle("進度對話框測試");  
  8.    progressDlg.setMessage("測試進度");  
  9.    progressDlg.setIcon(R.drawable.ic_launcher);  
  10.    progressDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);  
  11.    progressDlg.setCancelable(false);  
  12.    progressDlg.show();  
  13.   }});  
這里我們設置了在Button的點擊事件時,彈出進度對話框progressDlg;
其中ProgressDlg.this表示當前的Activity
方法setTitle 設置當前進度對話框的標題
setMessage 設置當前進度對話框的消息
setIcon  設置進度對話框的圖標
setProgressStyle設置進度條類型。包括ProgressDialog.STYLE_SPINNER(圓形 (默認))、ProgressDialog.STYLE_HORIZONTAL(長條形)
setCancelable() 表示是否可按回退鍵取消對話框。true表示可以通過回退鍵取消對話框,否則不能通過回退鍵取消對話框。
效果圖如下:
ProgressDialog.STYLE_HORIZONTAL類型進度條效果如下:

給進度對話框添加上按鈕

可以個進度對話框添加三種按鈕:
DialogInterface.BUTTON_POSITIVE  確定
DialogInterface.BUTTON_NEGATIVE 取消
DialogInterface.BUTTON_NEUTRAL 普通
添加按鈕的方法如下:
[java]  view plain  copy
  在CODE上查看代碼片 派生到我的代碼片
  1. progressDlg.setButton(DialogInterface.BUTTON_NEUTRAL,  
  2.      "取消", new DialogInterface.OnClickListener() {  
  3.       @Override  
  4.       public void onClick(DialogInterface dialog,  
  5.         int which) {  
  6.        if(which == DialogInterface.BUTTON_NEGATIVE){  
  7.         System.out.println("Click negative");  
  8.        }  
  9.       }  
  10.      });  
第一個參數制定按鈕類型,第二個參數指定響應按鈕點擊事件的監聽
效果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM