Анимированная насыщенность 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)
Другие вопросы по тегам