執行耗時任務時,轉不停的進度條跟比烏龜慢到終點的水平進度條,都是令人煩躁的東西,BUT!你想想看App在該有東西轉圈圈的時候如果沒有它,App畫面彷彿按下時間暫停器,用戶表示:???
含辛茹苦生出來的App...下一步就是被用戶卸載了吧?
什麼都要求效率、速度的現代人需要看到螢幕有東西在動在跑,好讓他們知道雖然要等,但是有進度喔,不是出錯~ 不要刪我>.<
設置進度條也不難,轉動什麼的都幫你做好了,耶~ 繼續當爽咖~
預設長這樣,會自動瞎轉個不停
android:visibility 可指定的值有下列三種
android:max 進度條的最大值
android:min 進度條的最小值,0~max之間
android:progress 目前進度,0~max之間
改變進度條樣式:
 
android:scaleY 改變進度條的厚度,而不會改變元件高度,給個float值,水平進度條可以變粗變細,環形的話會Y軸方向上下伸縮成橢圓形。
android:scaleX 用法同上scaleY,朝X軸方向左右伸縮。
android:indeterminate 不確定何時跑完的不確定模式,true的話就像預設的進度環,轉個不停,在水平進度條使用false的話progress就不會自動一跑再跑。
android:rotation 旋轉,可填正負float值,環形進度條預設的起點和終點是在3點鐘方向,若想調整起、終點為12點鐘方向的話就可以設定android:rotation = "-90"或"270"。
progressDrawable 自訂取代預設的progressBar的圖檔,給圖檔路徑。比如:可使用Drawable物件設定想要的樣子,存成.xml檔放在res/drawable,這邊就先不跳這個坑,文件給你先XD。Drawble Resource官方文件。如何建立新的Drawble Resource檔放在文章最後補充。
android:secondaryProgress 次進度條,0~max之間(下面示意圖較淺的綠色部分),若小於progress時不會顯示。常在影片緩衝的進度看到它。
應用方式很多可以自己玩玩看,這邊給個幾個Demo

    <ProgressBar
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:indeterminate="true"
        android:max="100"
        android:progress="0"
        android:visibility="visible" />
style找到horizontal設下去~就變這樣
 <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:indeterminate="true"
        android:max="100"
        android:progress="0"
        android:visibility="visible" />
使用Material輕鬆完成漂亮進度條
<com.google.android.material.progressindicator.LinearProgressIndicator
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:indeterminate="true" />

圖檔取自網路免費png圖庫
 <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:indeterminate="true"
        android:indeterminateDrawable="@drawable/image_progress_bar"
        android:visibility="visible" />
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/loading_blue"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="1080.0" />
自己手工做一個,可透過kotlin程式碼動態控制,使進度條與數值配合同步從0跑到100的效果,抑或也可以做倒數計時器
  <!--為了顯示文字在環中,使用一層FrameLayout-->
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
        
        <!--環中央的數值-->
        <TextView
            android:id="@+id/textStatus"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="0"
            android:textColor="@color/teal_200"
            android:textSize="22sp" />
        
        <!--外圈進度條-->
        <ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/circular_progress_grey"
            android:indeterminate="false"
            android:max="100"
            android:progress="100"
            android:progressDrawable="@drawable/circular_progress_bar"
            android:rotation="270" />
    </FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape
        android:shape="ring"
        android:innerRadiusRatio="2.7"
        android:thicknessRatio="50.0"
        android:useLevel="false">
        <solid android:color="#838282"/>
    </shape>
</item>
</layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:innerRadiusRatio="2.7"
            android:shape="ring"
            android:thicknessRatio="40.0"
            android:useLevel="true"
            >
            <solid android:color="@color/teal_200"/>
        </shape>
    </item>
</layer-list>

有興趣了解上面那些元素是什麼的話,可以研究Drawble Resource官方文件。
以防有人不清楚如何建新的檔還是補充一下
 
 
大家 明天見~