如何为 ImageView 的 ImageAlpha 设置动画
How to animate ImageAlpha of ImageView
自 API16 起应使用 ImageView.setImageAlpha(int) 而不是 View.setAlpha(float) 以获得更好的性能。
但是我怎样才能使该值具有动画效果呢?我尝试了 ValueAnimator 没有成功。
ObjectAnimator.ofInt(imageView, "imageAlpha", 0).start();
我的意思是 Chet Haase 在这里所说的 http://youtu.be/vQZFaec9NpA?t=33m
应该没问题。也许您忘记指定动画持续时间,或者您的 alpha 值错误(负数、太小、太接近以至于无法注意到)?
您始终可以使用自定义侦听器制作动画。它更长,但更容易调试:
ValueAnimator animator = ValueAnimator.ofInt(0,255);
animator.setDuration(300);
animator.setInterpolator(new DecelerateInterpolator());
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
imageView.setImageAlpha(valueAnimator.getAnimatedValue());
}
});
animator.start();
自 API16 起应使用 ImageView.setImageAlpha(int) 而不是 View.setAlpha(float) 以获得更好的性能。
但是我怎样才能使该值具有动画效果呢?我尝试了 ValueAnimator 没有成功。
ObjectAnimator.ofInt(imageView, "imageAlpha", 0).start();
我的意思是 Chet Haase 在这里所说的 http://youtu.be/vQZFaec9NpA?t=33m
应该没问题。也许您忘记指定动画持续时间,或者您的 alpha 值错误(负数、太小、太接近以至于无法注意到)?
您始终可以使用自定义侦听器制作动画。它更长,但更容易调试:
ValueAnimator animator = ValueAnimator.ofInt(0,255);
animator.setDuration(300);
animator.setInterpolator(new DecelerateInterpolator());
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
imageView.setImageAlpha(valueAnimator.getAnimatedValue());
}
});
animator.start();