2012-02-24 10 views
5

Po pierwsze, jest to nie duplikat pytania "jak zmienić kolor paska postępu", rozwiązuje on mój problem, ale tworzy inny.Android - jak zmienić poziomy kolor paska postępu bez utraty animacji

Mam poziomy pasek postępu, ciągle zapisuję/aktualizuję pasek postępu, tj. Ustawiam postęp na jeden, a następnie na dwa, (do 100), aby zasymulować% ukończenia, działa dobrze, jeśli nie zrobię tego. t Zmień kolor. Jednak, jak wiadomo, w niektórych telefonach domyślny kolor zasobu paska postępu jest zielony, część jest pomarańczowa, chcę, aby kolor był zielony na wszystkich urządzeniach, więc w atrybucie paska postępu ustawiłem progressDrawable (sugerowane przez większość z odpowiedzi na StackOverflow) do następujących xml pliku

<?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> 

jeśli to zrobię, że teraz tylko pasek postępu wyświetla cały postęp (czyli ostateczny procent, 100), nie widzisz animacji od 0 do co odsetek.

  1. Czy istnieje sposób, aby po prostu zmienić domyślny kolor paska postępu i nadal mieć animację domyślną?

  2. Jeśli nie jest to możliwe, czy oznacza to, że muszę wykonać własną animację? Jeśli tak, czy ktoś może podać mi fragment swojej animacji, aby naśladować pasek postępu?

Odpowiedz

0

Postęp bar odkształcalne musi mieć dwie pozycje z identyfikatorami „w tle” i „postępu”, ewentualnie trzeciego „secondaryProgress”. Spójrz na to, co znajduje się tutaj: https://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/progress_horizontal.xml

W twoim przypadku, odkształcalne będzie wyglądać następująco:

<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> 

Również „klip” elementem jest ważne, ponieważ używając go, że to możliwe, aby system klipu kształt "postępu". Zobacz http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html.