动画ImageView饱和度

时间:2017-08-08 11:05:29

标签: android animation filter imageview colormatrix

我正在尝试将一些图像视图从颜色设置为灰度,然后从灰度设置回到完整。

这种方法很好,但它没有动画:

        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);

在这篇文章的帮助下:Animate image's saturation我试过这个从全彩色到灰度的动画。

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 个答案:

答案 0 :(得分:0)

使用 animation.animatedValue 而不是 animation.animatedFraction

matrix.setSaturation(animation.animatedValue as Float)