是否可以随着时间的推移对图像(例如 png)的饱和度进行动画处理?例如从灰度到全彩色。另外,如果我可以使用插值器。
我看过 EffectFactory 和 ColorMatrix 类,但我无法将它们与动画/过渡结合起来。
例如在 Drawable drawable
上应用灰度饱和度:
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
drawable.setColorFilter(filter);
以及稍后的完全饱和:
matrix.setSaturation(1);
对于任何对我基于 Simon 的回答的完整解决方案感兴趣的人:
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();
最佳答案
当然可以用 ValueAnimator 来实现:
ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f);
animation.setDuration(1000);
animation.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
matrix.setSaturation(animation.getAnimatedFraction());
}
});
animation.start();
关于android - 动画图像的饱和度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453310/