android 自訂進度條顏色

來源:互聯網
上載者:User

 android 自訂進度條顏色

先看圖

老是提些各種需求問題,我覺得系統預設的顏色挺好的,但是Pk不過,睡叫我們不是需求人員呢,改吧!

    這個沒法了只能看源碼了,還好下載了源碼, sources\base\core\res\res\  下應有盡有,修改進度條顏色只能找progress ,因為是改變樣式,首先找styles.xml

找到xml後,進去找到

    <style name="Widget.ProgressBar">        <item name="android:indeterminateOnly">true</item>        <item name="android:indeterminateDrawable">@android:drawable/progress_medium_white</item>        <item name="android:indeterminateBehavior">repeat</item>        <item name="android:indeterminateDuration">3500</item>        <item name="android:minWidth">48dip</item>        <item name="android:maxWidth">48dip</item>        <item name="android:minHeight">48dip</item>        <item name="android:maxHeight">48dip</item>    </style>

這是哪個預設轉圈的,但今天我們不修改這個我們需要改變是水平進度條顏色

所以找到

 <style name="Widget.ProgressBar.Horizontal">        <item name="android:indeterminateOnly">false</item>        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>        <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>        <item name="android:minHeight">20dip</item>        <item name="android:maxHeight">20dip</item>    </style>

 你看系統一步一步關聯的,擴充性很性,低耦合,所以我們現在只要改變進度條是怎麼樣畫出來的就行了 ,但是負責畫進度條的是

<item name="android:progressDrawable">  所以我們可以找到"drawable下的 progress_horizontal 檔案,改變他就可以改變進度條顏色

<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2008 The Android Open Source Project     Licensed under the Apache License, Version 2.0 (the "License");     you may not use this file except in compliance with the License.     You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0     Unless required by applicable law or agreed to in writing, software     distributed under the License is distributed on an "AS IS" BASIS,     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.     See the License for the specific language governing permissions and     limitations under the License.--><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="#ffffd300"                        android:centerColor="#ffffb600"                        android:centerY="0.75"                        android:endColor="#ffffcb00"                        android:angle="270"                />            </shape>        </clip>    </item>    </layer-list>

看到沒有,這是系統的進度條畫出的布局條件

android:startColor="#80ffd300"

android:centerColor="#80ffb600"

android:endColor="#ff747674"

我們只要改變這個色值就能改變他的顏色,主要改變的是<item android:id="@android:id/progress">下的色值就行了

 

說了這麼多,到底怎麼做呢, 很簡單

 1  。 在我們的項目下建立一個 style.xml 檔案

      建立一個style 標籤,整合系統預設樣式,然後自訂一個新的progressDrawable  檔案,隨後面在layout 中的progress 中引用這個檔案就行

 

<style name="ProgressBar_Mini" parent="@android:style/Widget.ProgressBar.Horizontal">
        <item name="android:maxHeight">50dip</item>
        <item name="android:minHeight">8dip</item>
        <item name="android:indeterminateOnly">false</item>
        <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
        <item name="android:progressDrawable">@drawable/progressbar_mini</item>
    </style>

 下面是我的  progressbar_mini  檔案,改變了下android:endColor="#F5F5F5" android:startColor="#BEBEBE"  的色值

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item android:id="@android:id/background">         <shape >                <corners android:radius="5dip" />                <gradient                    android:angle="270"                    android:centerY="0.75"                    android:endColor="#F5F5F5"                    android:startColor="#BEBEBE" />            </shape>    </item>    <item android:id="@android:id/secondaryProgress">        <clip >            <shape >                <corners android:radius="0dip" />                <gradient                    android:angle="270"                    android:centerY="0.75"                   android:endColor="#165CBC"                    android:startColor="#85B0E9" />            </shape>        </clip>    </item>    <item android:id="@android:id/progress">        <clip >  <shape >            <corners android:radius="5dip" />            <gradient                android:angle="270"                android:centerY="0.75"               android:endColor="#165CBC"                android:startColor="#85B0E9" />        </shape>                  </clip>    </item></layer-list>

最後在中引用就可以了

  <ProgressBar
        android:id="@+id/progress"
        style="@style/ProgressBar_Mini"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:progress="50" />

 

轉載申明初入:http://blog.csdn.net/liao3841054/article/details/7556551

demo 留下郵箱,或者給出意見: 謝謝

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.