1. 程式人生 > >Android 學習入門——修改progressbar的預設樣式

Android 學習入門——修改progressbar的預設樣式

開發環境

android studio 2.0

最終效果

這裡寫圖片描述

建立xml佈局

    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar"
        android:layout_alignParentTop="true"
        android:max
="100" android:progress="0" android:progressDrawable="@drawable/progressbar" android:layout_alignParentStart="true" android:layout_alignParentEnd="true" />

@drawable/progressbar是自定義的progressbar的樣式。要修改的樣式都集中在progressbar這個檔案中。下面首先在drawable資料夾下建立xml檔案。

定義樣式

新建樣式佈局檔案progressbar.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--
    對layer-list樣式,是按照順序堆疊的,所以最上層的放在最後面,而且如果設定了progressDrawable
    的屬性,再去設定progressbar的background是沒有效果的
    -->
    <item android:id="@android:id/background">
<shape> <corners android:radius="10dp" /> <!-- 圓角 --> <solid android:color="@color/gyGrey" /> <!-- 描邊 --> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="10dp"/> <stroke android:color="@color/gyGrey" android:width="2dp"/> <gradient android:angle="0" android:startColor="@color/gyGreen" android:endColor="@color/gyDeepGreen"/> </shape> </clip> </item> </layer-list>

其中具體的每一配置項可參考這篇博文:樣式說明

測試

Handler + Runnable 實現重新整理進度,當然也可以利用HandlerhandleMessage()方法和Runnable共同實現。在runnablerun()方法中傳遞Message到裡面,將需要更新的值傳遞過去。

1. 建立執行緒

在主方法中定義兩個變數 handler和runna

Handler handler= new Handler();
    Runnable runnable = new Runnable() {
        int i=0;
        @Override
        public void run() {
            if(i<=100){
                //System.out.println("post the thread");
                i+=5;
                progressBar.setProgress(i);
                handler.postDelayed(runnable,500);
            }
        }
    };

2. 開啟執行緒

可以在OnCreate()方法或者button的OnClick()方法中將建立好的Runable 介面post到執行緒池中即可,這樣就可以看到進度條自動重新整理直到結束。

handler.post(runnable);

初學,有不對的地方,望指正!