使用Android 4.4自定义ProgressBar中的工件

时间:2013-11-28 10:53:26

标签: android android-progressbar

我的自定义ProgressBar上有一个奇怪的行为。在Android< 4.4上,我得到了一个好结果。但是在Android 4.4上,我在ProgressBar正在减少时获得了工件:

颜色在这里定义:

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

有人对我有暗示吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

我在Nexus 5上遇到了完全相同的问题。

目前,我没有时间深入挖掘源代码并发现差异,但如果您在设置进度后立即使进度条无效,我发现可以取消此问题。

在您的情况下,它应该是:

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

希望这有帮助!