ProgressBar自定義樣式
阿新 • • 發佈:2019-01-25
我們我們經常在做一些耗時的操作時提示個圈圈,達到提升使用者體驗的效果,那麼系統預設的圈圈當然不能滿足我們的需求了,畢竟顏色風格跟我們自身的應用肯定是有一定差距的,那麼看看如何自定義小圈圈的顏色,或者換成自己想要的圖片!
一、首先我們看下ProgressBar的用法
<ProgressBar android:id="@+id/refresh_header_pb_loading" android:layout_width="22dp" android:layout_height="22dp" android:indeterminateDrawable="@drawable/refrensh_progressbar" android:layout_gravity="center" android:visibility="invisible" />
在我們不指定style屬性的時候,我們將會看到一個預設的圈圈,也就是android原生那個醜醜的,那麼這個時候我們如何去自定義這個圈圈,讓它變成我們想要的樣式呢?其實我們只要關注indeterminateDrawable 這個屬性即可!我們看到這個屬性指向的是drawable中的檔案,其實這個檔案可以是一張圖片,也可以是一個xml檔案所定義的動畫等等,那麼接下拉我們就以一個rotate的動畫進行說明!
二、refrensh_progressbar動畫的定義
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360"> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="8" android:useLevel="false"> <gradient android:type="sweep" android:useLevel="false" android:startColor="#ffded3" android:centerColor="#ffff00" android:centerY="0.50" android:endColor="#ff5e43" /> </shape> </animated-rotate>
由上述程式碼我們可以看到,我們定義了一個animated-rotate的動畫,這個動畫我們並沒有使用drawble的屬性去指定對應的圖片,而是而是選擇自定義shape的方式,那麼接下來我們對rotate動畫以及shape進行說明
1、旋轉動畫aimated-rotate,其中幾個常用的屬性
- privotX:動畫中心點相對控制元件的X座標
- privotY:動畫中心點相對控制元件的Y座標
- fromDegrees:旋轉動畫開始角度
- toDeggrees:旋轉動畫結束時角度
- drawable:由於上面的例子我們是自己寫的一個shape,其實我們還可以通過drawable這個屬性設定一張圖片的
- duration:設定旋轉一週時間
2、shape的幾個常用屬性
- android:shape=["rectangle" | "oval" | "line" | "ring"];shape的形狀,預設為矩形,可以設定為矩形(rectangle)、橢圓形(oval)、線性形狀(line)、環形(ring)
- 下面的屬性只有在android:shape="ring時可用:
- gradient,設定shape的顏色漸變的
- android:type ["linear" | "radial" | "sweep"] 漸變型別(取值:linear、radial、sweep)、 linear 線性漸變這是預設設定、radial 放射性漸變,以開始色為中心、sweep 掃描線式的漸變。
- android:useLevel ["true" | "false"] 如果要使用LevelListDrawable物件,就要設定為true。設定為true無漸變。false有漸變色。
- android:gradientRadius 整型 漸變色半徑.當 android:type="radial" 時才使用。單獨使用 android:type="radial"會報錯。
- android:centerX 整型 漸變中心X點座標的相對位置
- android:centerY 整型 漸變中心Y點座標的相對位置
- android:startColor 表示漸變開始顏色
- android:centerColor表示漸變的中間顏色
- android:endColor表示漸變的結束顏色
至此,drawble的基本寫法已經介紹了,下面我們看下上面程式碼應用後的效果圖: