我有图像,我希望在透明和可见之间的重复循环中为其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,但起点是指定范围内的中间位置?
答案 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 +。