Android 自定義控件之 ZProgressBar

Lhuajin 7年前發布 | 14K 次閱讀 安卓開發 Android開發 移動開發

前言

最近我的個人項目中,有一個頁面需要大量用到 ProgressBar,但是每個 ProgressBar 的顏色是不確定的。

那么原生 ProgressBar 就無法滿足我的需求了,因為原生 ProgressBar 的樣式是根據 Drawable 來的,那么多顏色,豈不是需要創建 N 個 Drawable 文件了?并且該 ProgressBar 在 AndroidN 之前并沒有動畫效果,綜上所述,索性去 GayHub 看看有沒有好用的褲子。

看了一圈,發現有一個褲子挺好,繼承自 LinearLayout 實現,很強大,代碼也多,雖然能滿足我的需求,但是有些過剩啊。

我的需求也不是很大,其實直接繼承自 ProgressBar 就可以實現,不如自己造個輪子吧,既然 ProgressBar 是通過 Drawable 來指定樣式的,那么我就可以直接在代碼中生成 layout-list 和 shape 來實現一個可動態配置樣式的 ProgressBar 了。

廢話了一圈,闡述了下為什么有這個自定義控件。寫到這,發現自己廢話可真多啊。。。看這些話的時間都能理解完代碼了。。。因為代碼很簡單、也非常少。。。

預覽

使用

XML 中:

<com.github.airsaid.zprogressbar.widget.ZProgressBar
        android:id="@+id/progressBar"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:max="100"
        app:zpb_backgroundColor="#999999"
        app:zpb_duration="300"
        app:zpb_progressColor="@color/colorAccent"
        app:zpb_radius="16dp"/>

代碼中:

ZProgressBar mProgressBar = (ZProgressBar) findViewById(R.id.progressBar);
mProgressBar.setAnimProgress(50);

屬性&方法

屬性名 java方法 作用
zpb_backgroundColor setDefBackgroundColor(int color) 設置背景顏色
zpb_progressColor setProgressColor(int color) 設置進度顏色
zpb_radius setRadius(float radius) 設置背景弧度
zpb_duration setDuration(int duration) 設置動畫時長

 

 

 

 本文由用戶 Lhuajin 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!