美文网首页Android知识Android开发经验谈Android开发
利用属性动画进行流畅的色彩切换

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

作者: 岱zy | 来源:发表于2017-06-27 13:53 被阅读433次

    在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();
        }
    

    相关文章

      网友评论

        本文标题:利用属性动画进行流畅的色彩切换

        本文链接:https://www.haomeiwen.com/subject/xbhecxtx.html