ProgressBar實現(xiàn)水平進度條中的常見問題

不怕跌倒,所以飛翔

本文知識點

  • 水平進度條一端圓角的處理
  • 水平進度條兩端圓角的處理
  • 水平進度條陰影的實現(xiàn)(layer-list實現(xiàn)錯位)

常見問題

1.水平進度條的設(shè)置

1.1基本的配置

在Android中最常見的就是水平進度條了,什么樣子我就說了,先說一些基本的設(shè)置問題(大概分為一下幾個步驟):

  • 首先通過設(shè)置style="?android:attr/progressBarStyleHorizontal"成水平進度條
  • 其次通過progressDrawable這個屬性設(shè)置相應(yīng)的進度圖片
  • 設(shè)置progressDrawable中展示的圖片

其實關(guān)鍵的就這么兩個步驟,主要的難點就在這個圖片上面

  • 如果你不設(shè)置展示的圖片的話,默認(rèn)的顏色是你主題的顏色,這個兩端都是直角的

1.2進度條一端圓角的設(shè)置(注意是一段圓角)

首先我們先更改一下相應(yīng)的顏色,這一注意一下順序,如果你要是把還從進度寫在最后的話,那么進度就沒法顯示了

<?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 android:shape="rectangle">
            <solid android:color="#2C9CBC"/>
            <stroke android:width="1dp"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>

    <!--緩沖進度-->
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape android:shape="rectangle">
                <solid android:color="#87877e"/>
                <corners android:radius="5dp"/>
            </shape>
        </clip>
    </item>

    <!--進度-->
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle">
                <solid android:color="#FCEE12"/>
                <corners android:radius="5dp"/>
            </shape>
        </clip>
    </item>

</layer-list>

不知道你注意到了沒有,上面雖然兩邊是圓角,但是中間的內(nèi)容沒有實現(xiàn)圓角,為什么呢?因為上面有一個<clip>這個標(biāo)簽導(dǎo)致的,他切割了右邊的圓角,那么怎么解決這樣的問題呢?辦法當(dāng)然是有的,要不我們大Android程序員豈不是白費了.接下來看看我們怎么改進相應(yīng)的內(nèi)容

1.3進度條兩端圓角的設(shè)置

其實就是使用相應(yīng)的<scale>這個標(biāo)簽進行改造

<?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 android:shape="rectangle">
            <solid android:color="#2C9CBC"/>
            <stroke android:width="1dp"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>

    <!--進度-->
    <item android:id="@android:id/progress">
        <scale
            android:drawable="@drawable/progress_round"
            android:scaleWidth="100%"/>
    </item>

</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">

    <solid android:color="#FCEE12"/>
    <corners android:radius="5dp"/>
</shape>

這里其實就是通過<scale>引入了一個相應(yīng)的圖片資源,這樣就能解決相應(yīng)的問題了.通過以上設(shè)置就能確保你的進度條兩端都是圓角了.上面的內(nèi)同基本上能保證一些常見的進度條顏色的設(shè)置了.但是美工有的時候真的就是覺得這樣不好看,非要加個陰影,當(dāng)時我是崩潰的,但是回頭想了想其實也是可以實現(xiàn)的!咱們繼續(xù)往下看:

2.layer-list實現(xiàn)更酷炫的水平進度條

我們美工說在進度條的下面加上一個陰影好看,具體對的效果其實是這樣的!

進度條的樣式是這樣的

其實這里面存在一個layer-list中疊加圖片的問題,其實原理很簡單,只要知道其實就是幾個屬性的問題.

先說明一下原理,其實layer-list中的item標(biāo)簽可以通過相應(yīng)的top/bottom/left/right進行調(diào)節(jié)位置,也就是相當(dāng)于底圖的偏移量,這樣就能確保圖層進行相應(yīng)的偏移了,其實這里我也遇到一個問題,但是我是通過別的辦法解決的:
-先說一下相應(yīng)的問題,我發(fā)現(xiàn)我設(shè)置相應(yīng)的background的背景圖片,但是進度的圖片總是蓋在上面,沒有辦法顯示相應(yīng)的描邊,所以我通過設(shè)置相應(yīng)View的background屬性和相應(yīng)描邊的寬度的padding進行相應(yīng)內(nèi)容的顯示,這樣就解決了上面的問題.雖然方法比較笨,希望有更好的見解的童鞋給小弟留言,貼一下相應(yīng)的代碼?

  • progressDrawable文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@android:id/progress">
        <scale
            android:drawable="@drawable/progress_cool"
            android:scaleWidth="100%"/>
    </item>
</layer-list>
  • progress_cool文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--這個應(yīng)該是底圖的顏色-->
    <item>
        <shape>
            <corners android:radius="6dp"/>
            <solid android:color="#998752"/>
        </shape>
    </item>
    <!--這個應(yīng)該是頂圖的顏色-->
    <item
        android:bottom="1dp">
        <shape>
            <solid android:color="#FCEE12"/>
            <corners android:radius="6dp"/>
        </shape>
    </item>
</layer-list>
  • background的相應(yīng)的圖片
<?xml version="1.0" encoding="utf-8"?>
<!--每周任務(wù)的Progress的背景-->
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke
        android:width="1dp"
        android:color="#000"/>
    <solid android:color="#2C9CBC"/>
    <corners android:radius="6dp"/>
</shape>

以上就是相應(yīng)的圖片資源了 ,當(dāng)你設(shè)置的時候加上一個描邊的Padding就可以正常顯示了!這里注意progress_cool文件中的item標(biāo)簽bottom屬性的設(shè)置其實就是繪制了兩個圖片,只是下面的圖片距離底邊有個1dp的距離,所以顯得是一個陰影.

其實shape可以繪制相應(yīng)的漸變的,這里就可以發(fā)揮你的想象了,這里就不繼續(xù)展開了!


以上內(nèi)容基本上包括了水平進度條中處理圓角的所有內(nèi)容了,應(yīng)該還有一個填充圖片的操作,這里等以后用到的話在進行補充或者你提問,我也會補充的!嘻嘻....

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末类早,一起剝皮案震驚了整個濱河市嗜逻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栈顷,老刑警劉巖萄凤,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靡努,死亡現(xiàn)場離奇詭異,居然都是意外死亡惑朦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門病梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人觅彰,你說我怎么就攤上這事填抬∷砥冢” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵读拆,是天一觀的道長镇眷。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么肥矢? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任概耻,我火速辦了婚禮凰萨,結(jié)果婚禮上械馆,老公的妹妹穿的比我還像新娘。我一直安慰自己珊搀,他們只是感情好尾菇,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布派诬。 她就那樣靜靜地躺著默赂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谒臼。 梳的紋絲不亂的頭發(fā)上朝刊,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音底哥,去河邊找鬼。 笑死续滋,一個胖子當(dāng)著我的面吹牛孵奶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播了袁,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼载绿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了崭庸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤执赡,失蹤者是張志新(化名)和其女友劉穎熬粗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驻呐,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡含末,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年猜拾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佣盒。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡挎袜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盯仪,我是刑警寧澤紊搪,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站全景,受9級特大地震影響耀石,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜爸黄,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一滞伟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炕贵,春花似錦亩钟、人聲如沸径荔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至场仲,卻和暖如春渠缕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燕差。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吵血,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像褒傅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子支竹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,761評論 25 707
  • 我和媽媽在店里吃飯,看到一群剛剛打完球回來的男生。他們應(yīng)該是很累吧寥茫,拿起藿香正氣液就喝芭梯。 這家店里會免費提供這個東...
    愛夢的我閱讀 148評論 0 0
  • 今天分享兩個部分累奈,一是影響理解力創(chuàng)造力的第三個因素:交替 二是利用潛意識學(xué)習(xí)的科學(xué)原理和方法澎媒。 先講交替學(xué)習(xí)。 我...
    阿提密斯14134閱讀 399評論 0 0
  • 文/熠歆 我把自己淺顯的回憶記錄在這里——簡書! 2016年12月6日纷跛,我來到簡書贫奠,至今為止半年了,我在這里寫下了...
    熠歆閱讀 158評論 4 2
  • 星期天的早上,小明剛吃完飯芦疏,他要出去散步酸茴,他現(xiàn)在準(zhǔn)備散步弊决,還帶著小狗飘诗。他已經(jīng)出去了昆稿,他拉著小狗,突然 小...
    陳鵬旭閱讀 162評論 0 0