Android-自定義進(jìn)度條

ProgressBar

參考文章:
Android 高手進(jìn)階之自定義View,自定義屬性(帶進(jìn)度的圓形進(jìn)度條)
android自定義進(jìn)度條漸變色View的實(shí)例代碼

1鹦付、android.widget. ProgressBar,繼承自android.view.View 择卦。在android.widget包中敲长。對(duì)應(yīng)對(duì)話框ProgressDialog。ProgressBar有兩種展示方式秉继,表盤形式(普通祈噪、小、大)和條形填充形式尚辑。在layout定義時(shí)辑鲤,需要通過設(shè)施style屬性類設(shè)置展示方式。

XML屬性
屬性名 描述
android:animationResolution 超時(shí)的動(dòng)畫幀之間的毫秒 杠茬;必須是一個(gè)整數(shù)值,如“100”月褥。
android:indeterminate 是否允許使用不確定模式弛随,在不確定模式下,進(jìn)度條動(dòng)畫無限循環(huán)
android:indeterminateBehavior 定義當(dāng)進(jìn)度達(dá)到最大時(shí)宁赤,不確定模式的表現(xiàn)舀透;該值必須為repeat或者cycle,repeat表示進(jìn)度從0重新開始决左;cycle表示進(jìn)度保持當(dāng)前值愕够,并且回到0
android:indeterminateDrawable 定義不確定模式是否可拉
android:indeterminateDuration 時(shí)間不定的動(dòng)畫
android:indeterminateOnly 限制為不定模式
android:interpolator
android:max 定義進(jìn)度的最大值
android:maxHeight 進(jìn)度Widget最大高
android:miniHeight 進(jìn)度Widget最小高
android:maxWidth 進(jìn)度Widget最大寬
android:minWidth 進(jìn)度Widget最小寬
android:mirrorForRtl 定義了相關(guān)畫板如果需要反映在RTL模式
android:progress 設(shè)置進(jìn)度的默認(rèn)值,值介于0到max之間
android:progressDrawable
android:secondaryProgress 定義二級(jí)進(jìn)度值佛猛,值介于0到max惑芭。該進(jìn)度在主進(jìn)度和背景之間。比如用于網(wǎng)絡(luò)播放視頻時(shí)继找,二級(jí)進(jìn)度用于表示緩沖進(jìn)度遂跟,主進(jìn)度用于表示播放進(jìn)度。

ProgressBar的樣式有四種:

android:progressBarStyle:默認(rèn)進(jìn)度條樣式码荔,不確定模式
android:progressBarStyleHorizontal:水平進(jìn)度條樣式
android:progressBarStyleLarge :大號(hào)進(jìn)度條樣式漩勤,也是不確定進(jìn)度模式
android:progressBarStyleSmall :小號(hào)進(jìn)度條樣式感挥,也是不確定進(jìn)度模式

2缩搅、XML重要屬性

android:max-- 這事進(jìn)度條長(zhǎng)度最大值
android:progress--設(shè)定度條當(dāng)前進(jìn)度值
android:secondaryProgress--第二進(jìn)度條進(jìn)度值
android:progressBarStyle:默認(rèn)進(jìn)度條樣式
android:progressBarStyleHorizontal:水平樣式
style="?android:attr/progressBarStyleLarge" --- 屬性風(fēng)格類型--大圓圈,如下圖
style=”?android:attr/progressBarStyleSmall”--- 屬性風(fēng)格類型--小圓圈

3触幼、重要方法

getMax():返回這個(gè)進(jìn)度條的范圍的上限
getProgress():返回當(dāng)前進(jìn)度值
getSecondaryProgress():返回次要當(dāng)前進(jìn)度值
incrementProgressBy(int diff):指定增加的進(jìn)度--即步長(zhǎng)
isIndeterminate():指示進(jìn)度條是否在不確定模式下
setIndeterminate(boolean indeterminate):設(shè)置不確定模式下
setVisibility(int v):設(shè)置該進(jìn)度條是否可視

4硼瓣、重要事件

onSizeChanged(int w, int h, int oldw, int oldh):當(dāng)進(jìn)度值改變時(shí)引發(fā)此事件

接下來看案例:

一、自定義progressbar顏色:


drawable 資源目錄下
1.定義一個(gè)圖片資源文件:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="400"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="360">
    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="10"
        android:useLevel="false">

        <gradient
            android:centerColor="@color/progress_end"
            android:centerY="0.50"
            android:endColor="#00000000"
            android:startColor="@color/progress"
            android:type="sweep"
            android:useLevel="false"/>
    </shape>

</rotate>

2.定義布局文件:

<ProgressBar     
    android:indeterminateDrawable="@drawable/color_progress2"     
    android:indeterminateOnly="true"     
    android:indeterminateDuration="500"     
    android:indeterminateBehavior="repeat"     
    android:layout_width="wrap_content"     
    android:layout_height="wrap_content"></ProgressBar> 

說明:indeterminateDuration 設(shè)置轉(zhuǎn)動(dòng)時(shí)間

二置谦、自定義漸變色進(jìn)度條:


定義drawable資源文件color_progressbar.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
   <item android:id="@android:id/background">   
    <shape>   
        <corners android:radius="5dip" />   
        <gradient android:startColor="#ff9d9e9d"   
                android:centerColor="#ff5a5d5a"   
                android:centerY="0.75"   
                android:endColor="#ff747674"   
                android:angle="270"   
        />   
    </shape>   
</item>   
<item android:id="@android:id/secondaryProgress">   
    <clip>   
        <shape>   
            <corners android:radius="5dip" />   
            <gradient android:startColor="#80ffd300"   
                    android:centerColor="#80ffb600"   
                    android:centerY="0.75"   
                    android:endColor="#a0ffcb00"   
                    android:angle="270"   
            />   
        </shape>   
    </clip>   
</item>   
<item android:id="@android:id/progress"   
>   
    <clip>   
        <shape>   
            <corners android:radius="5dip" />   
            <gradient android:startColor="#FF3030"   
                android:endColor="#AEEEEE"   
                android:angle="270" />   
        </shape>   
    </clip>   
</item> 
</layer-list>

2.定義對(duì)應(yīng)的不布局文件:progressbar.xml在此文件中引用我們定義的drawable資源配置文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ProgressBar
                android:id="@+id/color_progressBar"
        android:indeterminateDrawable="@drawable/color_progress"
        android:layout_height="wrap_content" 
        android:layout_width="match_parent"/>
</LinearLayout>

三堂鲤、用圖片實(shí)現(xiàn)滾動(dòng)效果:

1.添加圖片到drawable下


2.自定義圖片資源文件iamge_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" 
android:drawable="@drawable/image_progress" 
android:pivotX="50%" 
android:pivotY="50%" />

3.定義布局文件,progress.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">

<ProgressBar 
android:indeterminateDrawable="@drawable/drawable_progress" 
android:layout_height="100dp"
android:layout_width="100dp"/>

</LinearLayout>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媒峡,一起剝皮案震驚了整個(gè)濱河市瘟栖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谅阿,老刑警劉巖半哟,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異签餐,居然都是意外死亡寓涨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門氯檐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戒良,“玉大人,你說我怎么就攤上這事冠摄∨雌椋” “怎么了几缭?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拇颅。 經(jīng)常有香客問我奏司,道長(zhǎng),這世上最難降的妖魔是什么樟插? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任韵洋,我火速辦了婚禮,結(jié)果婚禮上黄锤,老公的妹妹穿的比我還像新娘搪缨。我一直安慰自己,他們只是感情好鸵熟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布副编。 她就那樣靜靜地躺著,像睡著了一般流强。 火紅的嫁衣襯著肌膚如雪痹届。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天打月,我揣著相機(jī)與錄音队腐,去河邊找鬼。 笑死奏篙,一個(gè)胖子當(dāng)著我的面吹牛柴淘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秘通,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼为严,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了肺稀?” 一聲冷哼從身側(cè)響起第股,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎话原,沒想到半個(gè)月后夕吻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稿静,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年梭冠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片改备。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡控漠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盐捷,我是刑警寧澤偶翅,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站碉渡,受9級(jí)特大地震影響聚谁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滞诺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一形导、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧习霹,春花似錦朵耕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至煞檩,卻和暖如春处嫌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斟湃。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工熏迹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桐早。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓癣缅,卻偏偏與公主長(zhǎng)得像厨剪,于是被迫代替她去往敵國(guó)和親哄酝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容