有没有办法在范围中间使用ValueAnimator的起点?

时间:2015-07-23 20:59:43

标签: android android-animation

我有图像,我希望在透明和可见之间的重复循环中为其alpha设置动画。使用ValueAnimator很容易做到这样:

  mValueAnimator1 = ValueAnimator.ofFloat(1.0f, 0f);
  mValueAnimator1.setRepeatMode(ValueAnimator.REVERSE);
  mValueAnimator1.setRepeatCount(ValueAnimator.INFINITE);
  mValueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        float value = ((Number) animation.getAnimatedValue()).floatValue();
        imageView.setAlpha(value);

如果图像的起始alpha应该是1,那么这很简单,如果图像的起始alpha应该是0,那么它也会很简单。

但在我的情况下,我希望起始alpha是在ofFloat()中指定的范围内的某个值,即如果我的起始alpha应该是0.75,那么我希望动画像这样循环:

   0.75, 0.85, 0.95, 1.0, 0.95, 0.75, 0.5, 0.3, 0.1, 0.0, 0.1, 0.2, 0.4, 0.6, 0.8 etc

(价值只是传达一般观念的代表)。

有没有办法使用ValueAnimator指定范围,例如0 - 1,但起点是指定范围内的中间位置?

2 个答案:

答案 0 :(得分:0)

您可以使用mValueAnimator1.setCurrentFraction(startingAlpha)设置起点,但{22}仅在API 22中添加了setCurrentFraction()

另一种方法可能是使用由AnimatorSet个对象组成的ValueAnimator,第一个使用ofFloat(1.0f)(您希望动画首先转到的值),然后是另一个ValueAnimator在1.0和0.0之间无限重复。

答案 1 :(得分:0)

你应该使用Animator.setCurrentPlayTime(fraction * repetitionPeriod);与setCurrentFraction类似,但可以使用API​​ 11 +。