Android 學習入門——修改progressbar的預設樣式
阿新 • • 發佈:2019-02-16
開發環境
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
實現重新整理進度,當然也可以利用Handler
的handleMessage()
方法和Runnable
共同實現。在runnable
的run()
方法中傳遞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);
初學,有不對的地方,望指正!