android - 动画图像的饱和度

标签 android android-animation android-image android-transitions

是否可以随着时间的推移对图像(例如 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/

相关文章:

java - 在 ConnectableObservable 中执行异步查询的线程问题

android - 销毁后重新启动 Activity 时不调用 onCreate

java - 如何实现这个自定义 View 的波浪动画呢?

android - 如何在 Android 中清除 ImageView?

android:将灰度过滤器设置为imageView

android - 使用 Parcelable 将绘图保存到磁盘

android - 安装在 sdcard 上的应用程序的 .apk 位置在哪里?

android - 使用 Picasso 在 Activity 之间共享过渡

fragment 外的 Android 动画 View 被剪裁

android - ACTION_IMAGE_CAPTURE Intent 返回的缩略图大小是多少