利用属性动画进行流畅的色彩切换

在Android中往往会遇见需要切换颜色的场景,但如果直接从一种颜色直接跳转到另一种,很可能因为色彩的反差造成生硬的切换效果,这对于用户是非常不友好的。

相比直接设置颜色,选择使用一个属性动画,将当前颜色和要变化的颜色作为属性动画的值,对的,颜色是用16进制数表示,因此也是int类型。

这里需要注意的是在动画中设置了 ArgbEvaluator这个参数。这个参数可以计算我们设置两个颜色中间的过渡色,而通过属性动画回调方法中不断设置渐变颜色,即可得到一个相对流畅的色彩切换效果。

直接上代码啦,简单的贴了一个点击方法和属性动画。另外在Linux上没有ps如何制作gif...求指导

    public void changeColorClick(View view) {
        switch (view.getId()){
            case R.id.yellow :
                colorAnimator(Color.BLUE,Color.YELLOW,background);
//                background.setBackgroundColor(Color.RED);
                break;
            case R.id.blue :
                colorAnimator(Color.YELLOW,Color.BLUE,background);
//                background.setBackgroundColor(Color.BLUE);
                break;
        }
    }

    private void colorAnimator(int mPreColor, int mCurrColor, final View view){
        //设置窗口颜色渐变动画
        ValueAnimator animator = ValueAnimator.ofInt(mPreColor, mCurrColor);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                int color = (int) animation.getAnimatedValue();
                view.setBackgroundColor(color);
            }
        });
        animator.setDuration(500);
        animator.setEvaluator(new ArgbEvaluator());
        animator.start();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,192评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,870评论 25 708
  • 2、少年的云 "你想看的《射雕英雄传》借来了,看完了给我看。"你递给我一本被人翻烂没了皮的《射雕》。 每次你都是这...
    刘彩云阅读 537评论 5 5
  • 如果我是一只猫,最好做一只流浪猫。 我喜欢无拘无束,不喜欢被圈养在人口密集的城市里。否则,春花开的时候,我会想要找...
    柠杨阅读 1,392评论 0 1
  • 小A是我多年的闺蜜,情同手足已数年,期间也曾有过小争执,不过我们都知道,那只是友谊的润滑剂,不会妨碍我们友谊的小船...
    查宁街88号阅读 729评论 1 3