我正在尝试将一些图像视图从颜色设置为灰度,然后从灰度设置回到完整。
这种方法很好,但它没有动画:
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。
答案 0 :(得分:0)
使用 animation.animatedValue 而不是 animation.animatedFraction
matrix.setSaturation(animation.animatedValue as Float)