首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android ProgressBar 詳解:ProgressDrawable 與 IndeterminateDrawable 的區別與應用場景

     編輯:程式設計疑難解答

屬性對比

屬性含義適用場景視覺表現
ProgressDrawable 確定進度繪製對象 文件下載、安裝進度、數據加載等可量化進度場景 水平進度條、環形進度條,顯示具體百分比
IndeterminateDrawable 不確定進度繪製對象 網絡請求等待、數據庫查詢、初始化加載等無法預估耗時場景 旋轉圓環、脈衝動畫、橫向滑動條,僅提示「正在進行」

代碼示例

確定進度(水平條)

<ProgressBar
    android:id="@+id/pb_download"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:progressDrawable="@drawable/custom_progress_horizontal"
    android:max="100"
    android:progress="0" />

動態更新:pb.setProgress((int)(downloaded * 100 / total));

不確定進度(旋轉圈)

<ProgressBar
    android:id="@+id/pb_loading"
    android:indeterminateDrawable="@drawable/custom_progress_circular"
    android:indeterminate="true" />

無需設置 progress,動畫自動循環。

最佳實踐

  • 根據業務是否可計算進度選擇屬性,切勿混用。
  • 自定義 Drawable 時,確定進度需實現 onLevelChange 響應 level 變化;不確定進度需定義 AnimationDrawable 幀動畫。
  • Material Design 建議使用 ProgressIndicator (Material Components 庫) 統一風格。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved