Android自定义动画插值器 - 在持续时间的一半之后,将动画速度降低一半

时间:2015-06-15 08:24:15

标签: android android-animation android-progressbar

我已在ProgressBar上应用动画,以便以恒定速度(默认情况下)从最大进度动画为0

我需要它表现得像这样:

  • 在5秒内从100%进度动画到50%进度。
  • 在10秒内从50%进度动画到0%进度

基本上我希望动画一旦达到50%的进度就会将速度降低一半,但我希望这种过渡顺利进行。

我试图一个接一个地运行2个不同的动画,一旦第一个动画结束于动画片监听器结束回调我开始下一个具有加倍持续时间,但有一个小的恼人的暂停,它看起来不连续

我可以定义一个能够处理这个问题的插补器吗?这个公式是什么?

这是我目前的代码

private class ProgressBarAnimation extends Animation {
        private ProgressBar progressBar;
        private float from;
        private float  to;

        public ProgressBarAnimation(ProgressBar progressBar, float from, float to) {
            super();
            this.progressBar = progressBar;
            this.from = from;
            this.to = to;
        }

        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) {
            super.applyTransformation(interpolatedTime, t);
            float value = from + (to - from) * interpolatedTime;

            progressBar.setProgress((int) value);
            points = (int)(value/100);
            txtProgress.setText(String.valueOf(points));

            setTextPosition(value);
        }

    }

我这样称呼它:

anim = new ProgressBarAnimation(progressBar, progressBar.getMax(), 0);
        anim.setInterpolator(new ProgressInterpolator());
        anim.setDuration(10000);
        anim.setStartOffset(0);

progressBar.startAnimation(anim);

0 个答案:

没有答案