android 自定義進度條顏色


android 自定義進度條顏色

先看圖

基於產品經理各種自定義需求,經過查閱了解,下面是自己對Android自定義進度條的學習過程!

 

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

找到xml后,進去找到

[html]  view plain copy print ? 在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-size: 18px;">    <style name="Widget.ProgressBar">  
  2.         <item name="android:indeterminateOnly">true</item>  
  3.         <item name="android:indeterminateDrawable">@android:drawable/progress_medium_white</item>  
  4.         <item name="android:indeterminateBehavior">repeat</item>  
  5.         <item name="android:indeterminateDuration">3500</item>  
  6.         <item name="android:minWidth">48dip</item>  
  7.         <item name="android:maxWidth">48dip</item>  
  8.         <item name="android:minHeight">48dip</item>  
  9.         <item name="android:maxHeight">48dip</item>  
  10.     </style></span>  


這是默認轉圈的效果style,但今天我們修改的是水平進度條顏色!

所以找到

[html]  view plain copy print ? 在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-size: 18px;"<style name="Widget.ProgressBar.Horizontal">  
  2.         <item name="android:indeterminateOnly">false</item>  
  3.         <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>  
  4.         <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>  
  5.         <item name="android:minHeight">20dip</item>  
  6.         <item name="android:maxHeight">20dip</item>  
  7.     </style></span>  

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

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

[java]  view plain copy print ? 在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-size: 18px;"><?xml version="1.0" encoding="utf-8"?>  
  2. <!-- Copyright (C) 2008 The Android Open Source Project  
  3.   
  4.      Licensed under the Apache License, Version 2.0 (the "License");  
  5.      you may not use this file except in compliance with the License.  
  6.      You may obtain a copy of the License at  
  7.   
  8.           http://www.apache.org/licenses/LICENSE-2.0  
  9.   
  10.      Unless required by applicable law or agreed to in writing, software  
  11.      distributed under the License is distributed on an "AS IS" BASIS,  
  12.      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  13.      See the License for the specific language governing permissions and  
  14.      limitations under the License.  
  15. -->  
  16.   
  17. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
  18.       
  19.     <item android:id="@android:id/background">  
  20.         <shape>  
  21.             <corners android:radius="5dip" />  
  22.             <gradient  
  23.                     android:startColor="#ff9d9e9d"  
  24.                     android:centerColor="#ff5a5d5a"  
  25.                     android:centerY="0.75"  
  26.                     android:endColor="#ff747674"  
  27.                     android:angle="270"  
  28.             />  
  29.         </shape>  
  30.     </item>  
  31.       
  32.     <item android:id="@android:id/secondaryProgress">  
  33.         <clip>  
  34.             <shape>  
  35.                 <corners android:radius="5dip" />  
  36.                 <gradient  
  37.                         android:startColor="#80ffd300"  
  38.                         android:centerColor="#80ffb600"  
  39.                         android:centerY="0.75"  
  40.                         android:endColor="#a0ffcb00"  
  41.                         android:angle="270"  
  42.                 />  
  43.             </shape>  
  44.         </clip>  
  45.     </item>  
  46.       
  47.     <item android:id="@android:id/progress">  
  48.         <clip>  
  49.             <shape>  
  50.                 <corners android:radius="5dip" />  
  51.                 <gradient  
  52.                         android:startColor="#ffffd300"  
  53.                         android:centerColor="#ffffb600"  
  54.                         android:centerY="0.75"  
  55.                         android:endColor="#ffffcb00"  
  56.                         android:angle="270"  
  57.                 />  
  58.             </shape>  
  59.         </clip>  
  60.     </item>  
  61.       
  62. </layer-list>  
  63.   
  64. </span>  

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

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"  的色值

[java]  view plain copy print ? 在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-size: 18px;"><layer-list xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.   
  3.     <item android:id="@android:id/background">  
  4.          <shape >  
  5.                 <corners android:radius="5dip" />  
  6.                 <gradient  
  7.                     android:angle="270"  
  8.                     android:centerY="0.75"  
  9.                     android:endColor="#F5F5F5"  
  10.                     android:startColor="#BEBEBE" />  
  11.             </shape>  
  12.     </item>  
  13.   
  14.     <item android:id="@android:id/secondaryProgress">  
  15.   
  16.         <clip >  
  17.             <shape >  
  18.                 <corners android:radius="0dip" />  
  19.                 <gradient  
  20.                     android:angle="270"  
  21.                     android:centerY="0.75"  
  22.                    android:endColor="#165CBC"  
  23.                     android:startColor="#85B0E9" />  
  24.             </shape>  
  25.         </clip>  
  26.     </item>  
  27.   
  28.     <item android:id="@android:id/progress">  
  29.   
  30.         <clip >  
  31.             <shape >  
  32.                 <corners android:radius="5dip" />  
  33.                 <gradient  
  34.                     android:angle="270"  
  35.                     android:centerY="0.75"  
  36.                    android:endColor="#165CBC"  
  37.                     android:startColor="#85B0E9" />  
  38.             </shape>  
  39.             
  40.         </clip>  
  41.     </item>  
  42. </layer-list></span>  


最后在中引用就可以了

  <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

 
0
0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM