2012-02-24 66 views
5

首先,這是而不是問題「如何更改進度條顏色」的副本,它確實解決了我的問題,但它產生了另一個問題。Android - 如何更改水平進度條顏色而不會丟失動畫

所以,我有一個水平進度條,我一直在寫/更新一個進度條,即將進度設置爲1,然後是2(最多100)來模擬完成百分比,如果我不'不改變顏色。但是,如您所知,在某些電話上,進度欄的默認資源顏色爲綠色,有些爲橙色,我希望所有設備上的顏色都爲綠色,因此在進度欄屬性中,我設置了progressDrawable(大多數人#1的答案)到以下xml文件

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<corners android:radius="5dip" /> 
<gradient 
    android:startColor="#4CC417" 
    android:centerColor="#4CC417" 
    android:centerY="0.75" 
    android:endColor="#4CC417" 
    android:angle="270" 
/> 
</shape> 

如果我這樣做,進度欄現在只是顯示了整個過程中(即最終的百分比,100)的,你看不到動畫從0到任何百分比。

  1. 有沒有辦法改變進度條的默認顏色,仍然有默認動畫?

  2. 如果它不可能,這是否意味着我必須做我自己的動畫?如果是這樣,有人能給我一個關於如何讓我自己的動畫模仿進度條的片段嗎?

回答

0

可繪製的進度條必須包含兩個ID爲「背景」和「進度」的項,可選第三個「secondaryProgress」。看看什麼是在這裏:https://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/progress_horizontal.xml

在你的情況下,繪製應該是這樣的:

<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/progress"> 
     <clip> 
      <shape> 
       <corners android:radius="5dip" /> 
       <gradient 
         android:startColor="#4CC417" 
         android:centerColor="#4CC417" 
         android:centerY="0.75" 
         android:endColor="#4CC417" 
         android:angle="270" 
       /> 
      </shape> 
     </clip> 
    </item> 

</layer-list> 

也是「夾子」元素是很重要的,因爲使用它有可能爲系統剪輯「進步」形態。請參閱http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html