2013-11-28 23 views
1

我的自定義ProgressBar上有一個奇怪的行爲。在Android < 4.4中,我得到了一個好結果。但是,在Android 4.4,我得到而ProgressBar文物正在下降:自定義進度條中的神器與Android 4.4

的顏色定義如下:

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

<item android:id="@android:id/background"> 
    <clip> 
     <shape> 
      <corners android:radius="0dip" /> 

      <gradient 
       android:angle="90" 
       android:centerColor="#004676" 
       android:centerY="0.75" 
       android:startColor="#004676" /> 
     </shape> 
    </clip> 
</item> 
<item android:id="@android:id/progress"> 
    <clip> 
     <shape> 
      <corners android:radius="0dip" /> 

      <gradient 
       android:angle="90" 
       android:endColor="#ee7407" 
       android:startColor="#ee7407" /> 
     </shape> 
    </clip> 
</item> 

而且在我的自定義ProgressBar類,我把它定義如下:

private void init() { 

    this.setMax(MAX); 
    this.setProgress(MAX); 
    _timer = new CountDownTimer(TIME * 1000, 100) { 

     public void onTick(long millisUntilFinished) { 
      decreaseProgress(); 
     } 

     public void onFinish() { 
      finished(); 
     } 
    }; 
} 


private void decreaseProgress() { 
    this.setProgress(this.getProgress() - 1); 
} 

Progress upper

有人給我提示嗎?提前致謝!

回答

2

我遇到正是在Nexus同樣的問題5.

目前我沒有時間去鑽研源代碼,找到的差異,但我發現,如果你取消你的進度條可以抑制這個問題每次正確設置進度後。

在您的情況,應該是:

private void decreaseProgress() { 
    this.setProgress(this.getProgress() - 1); 
    this.postInvalidate(); 
} 

希望這可以幫助!

+0

會給它一個嘗試thx! –

+1

這是修復,謝謝。但是現在我得到了4.4.2的更新,沒有postInvalidate()就不會再發生了。看起來像Preograssbar本身的錯誤。 –

+0

@ A.S。感謝您的更新,現在我可以刪除我的invalidate()了! – Joseph