時間の経過とともに画像 (png など) の彩度をアニメーション化することは可能ですか? たとえば、グレースケールからフルカラーまで。さらに、補間器を使用できる場合。
EffectFactory と ColorMatrix クラスを見てきましたが、それらをアニメーション/トランジションと組み合わせることができません。
例: にグレースケール彩度を適用するDrawable drawable
:
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
drawable.setColorFilter(filter);
後で完全に飽和させるには:
matrix.setSaturation(1);
サイモンの答えに基づいた私の完全なソリューションに興味がある人のために:
final ColorMatrix matrix = new ColorMatrix();
final Drawable drawable = ... ;
ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f);
animation.setDuration(1000);
// animation.setInterpolator();
animation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
matrix.setSaturation(animation.getAnimatedFraction());
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
drawable.setColorFilter(filter);
}
});
animation.start();