【问题标题】:Animate ImageView saturation动画 ImageView 饱和度
【发布时间】:2018-01-15 22:10:41
【问题描述】:

我正在尝试将一些图像视图从彩色变为灰度,然后再从灰度变为完整。

这工作正常,但它没有动画:

        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。

【问题讨论】:

    标签: android animation filter imageview colormatrix


    【解决方案1】:

    使用 animation.animatedValue 代替 animation.animatedFraction

    matrix.setSaturation(animation.animatedValue as Float)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多