ValueAnimator和自定义Interpolator的配合使用

本次要实现屏幕炫彩之闪瞎狗眼特效
代码先行:

//0-50其实我也试过0-100之类的,感觉对于本次效果没啥大影响
ValueAnimator animator = ValueAnimator.ofInt(0,50);
        //时间设的短,才能闪狗眼
        animator.setDuration(300);
        //每一帧都调用
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                //currentValue = fraction*(50-0)
                float currentValue = (Integer) animation.getAnimatedValue();
                //该值是自定义MyInterpolator的返回值 
                float fraction = animation.getAnimatedFraction();
                //颜色估值器,根据开始颜色和结束颜色以及给定的fraction去计算这一帧的颜色
                int color = (int) new ArgbEvaluator().evaluate(fraction,0xFFFF8080,0xFF8080FF);
            //给屏幕根ViewGroup设置上颜色,闪爆狗眼    
            mActivityMain.setBackgroundColor(color);
            }
        });
        //自定义插值器
        animator.setInterpolator(new MyInterpolator());
        //无限循环
        animator.setRepeatCount(ValueAnimator.INFINITE);
        //反转效果
        animator.setRepeatMode(ValueAnimator.REVERSE);
        animator.start();

自定义插值器如下,极其简单- -我就是为了试试自定义插值器好不好使 … …

public class MyInterpolator implements TimeInterpolator {
    @Override
    public float getInterpolation(float input) {
    //传入的input是0~1之间随给定动画时间变化的数
    //返回值是animation.getAnimatedValue();得到的值
    //返回值可以取小于0和大于1的数
        return (float) Math.sin(input);
    }
}

自定义插值器可以实现很多酷炫的效果,但是要求数学功力哦,我这样的就基本再见了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯刘

我 风暴降生 打钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值