Анимированная насыщенность ImageView
Я пытаюсь анимировать некоторые изображения от цвета до оттенков серого, а затем и от оттенков серого до полного.
Это работает нормально, но не оживляет:
ColorMatrix matrixGrey = new ColorMatrix();
matrixGrey.setSaturation(0);
filterGrey = new ColorMatrixColorFilter(matrixGrey);
ColorMatrix matrixFull = new ColorMatrix();
matrixFull.setSaturation(1);
filterFull = new ColorMatrixColorFilter(matrixFull);
card1.setColorFilter(filterFull);
card2.setColorFilter(filterGrey);
С помощью этого поста: Насыщенность анимированного изображения, я попытался сделать это для анимации от полного цвета до оттенков серого.
ValueAnimator animation = ValueAnimator.ofFloat(1f, 0f);
animation.setDuration(10000);
// animation.setInterpolator();
animation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
matrix.setSaturation(animation.getAnimatedFraction());
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
v.setColorFilter(filter);
}
});
animation.start();
Он по-прежнему анимируется от оттенков серого к цвету, даже если я изменил значения ofFloat. Что я здесь не так делаю? card1, card2 и v - это ImageViews.
1 ответ
Используйте animation.animatedValue вместо animation.animatedFraction
matrix.setSaturation(animation.animatedValue as Float)