Android之动画(二)

Android动画中其实功能强大的要数property animation(属性动画),毕竟View动画只提供给了一些简单的动画实现方式,不信?我们现在假设需要做一个按钮背景变换的动画,你觉得View动画能实现吗?是不是感觉一脸懵比。。。

这里写图片描述


来来,我们先说说View动画和属性动画各自的原理

View动画:通过改变View的对象,来实现动画效果。
属性动画:通过改变View对象的属性,来实现动画效果。

so. 上面提到的效果我们还是得用属性动画实现,这时候你晓得属性动画的重要性了吧。

坐稳了,骚年们,小司机要发车了!这里写图片描述

ValueAnimator

属性动画的核心类,虽然我们常用的不是它(而是ObjectAnimator),但它ObjectAnimator的基类,我们上面已经说了属性动画是通过改变View的属性值来实现动画的,如下图:ofxxx( )方法里可以传入多个参数,在实际编码中,我们只需要告诉它(ValueAnimator)初始值、结束值、执行时间,那么ValueAnimator就会自动帮我们完成从初始值平滑地过渡到结束值这样的效果,它的内部使用一种时间循环的机制来计算值与值之间的动画过渡。

ps:

 ValueAnimator animator = ValueAnimator.ofInt(0, 100);
          animator.setDuration(3000);
//        animator.setStartDelay(1000); 动画延迟播放
//        animator.setTarget(null);   设置动画到具体对象
//        animator.setRepeatCount(3);  播放次数
//        animator.setRepeatMode(ValueAnimator.REVERSE); 模仿模式
//        animator.setEvaluator(new ArgbEvaluator());  估值器(背景变化变化)
//        animator.setInterpolator(new LinearInterpolator()); 差值器(比如加速、匀速等)
          animator.start();
          animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                Log.i(TAG, "onAnimationUpdate:      "+animation.getAnimatedValue());
            }
        });

当然还有好多,大家可以去看api用法,


ObjectAnimator

ObjectAnimator是我们比较常用的类,刚才我们已经说了ObjectAnimator继承自ValueAnimator ,ValueAnimator是对值进行了一个平滑的动画过渡,而ObjectAnimator则就不同了,它是可以直接对任意对象的任意属性进行动画操作的,我们先来看下ObjectAnimator的方法:

这里写图片描述
我们传入要操作的对象、要改变的属性值,变化值。。。就可以实现了,

ObjectAnimator ani = ObjectAnimator.ofFloat(view, "alpha", 1.0, 0f);
        ani.setDuration(3000);
        ani.start();

比如以上代码我们对它的透明度做动画,你是不是很好奇alpha这个属性值,属性动画是通过改变属性值来实现动画的,但是我们的view中并没有
alpha属性值,而是通过setAlpha()方法来改变的,我们看下源码:

这里写图片描述


AnimatorSet
实现组合动画功能主要需要借助AnimatorSet这个类,这个类提供了一个play()方法(当然还有其他方法如下图),

这里写图片描述

其中第二、五个是一起播放动画, 第三、四个是有序播放,play()会返回一个AnimatorSet.Builder对象,该对象该有一下方法:

after(Animator anim) 将现有动画插入到传入的动画之后执行
after(long delay) 将现有动画延迟指定毫秒后执行
before(Animator anim) 将现有动画插入到传入的动画之前执行
with(Animator anim) 将现有动画和传入的动画同时执行

Interpolator(插值器)

就是用来控制动画的速度,比如有加速度、匀速的。
我们看下插值器的继承结构:

这里写图片描述

红色标记的就是常用的,Gityuan写过详细的解释,大家可以看下。


Evaluators( 估值器)

用于计算属性动画的给定属性的取值,与属性的起始值,结束值,fraction三个值相关.
我们看下估值器继承结构:

这里写图片描述


有的哥们肯定说,没有例子你说个卵

这里写图片描述

前辈们的例子早就写好了:

郭霖(Evaluator)
鸿洋(Interpolator)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值