美文网首页Android属性动画
2018-05-14—属性动画(2)ValueAnimator初

2018-05-14—属性动画(2)ValueAnimator初

作者: 季白zy | 来源:发表于2018-05-14 17:42 被阅读0次

    嗨大家好,记得我们以前讲过属性动画的一个类,叫做ObjectAnimator。其实属性动画还有另外一个类——ValueAnimator类。今天我们来看一下它的使用:


    ValueAnimator介绍

    ValueAnimator类是属性动画中最核心的一个类,其实如果有细心的朋友,在之前使用ObjectAnimator的时候就已经发现ObjectAnimator是继承自ValueAnimator的了,也就是说我们ObjectAnimator的底层执行还是靠我们ValueAnimator的。

    关于ObjectAnimator大家可以看一下我之前写的:属性动画ObjectAnimator类使用

    而且ValueAnimator完全不受对象的限制:可以这么理解,我们有个初始值和结束值,我们只是将这个属性值从初始值到结束值通过一种循环机制,实现一种值的动画过度,而在这段过程中它的值是不断改变的,我们通过获取到这个不断变化的属性值,来给不同的对象进行操作,达到属性变换,从而达到动画的效果。

    是不是有点懵逼,接下来我们看一下他的获取方法就很清楚了。

    java方式:

    Java方式获取

    和ObjectAnimator一样,也是通过某种静态方法获取到的实例。而不同的是这里面我们只把数值传进去,而ObjectAnimator是连同对象和他的属性也一同传进去了(这个在等会儿会给大家详细解释)。后两个方法我们暂时不要管,等以后再说。

    我们先创建一个ValueAnimator对象吧:

    现在我们有了一个ValueAnimator对象了,接下来我们看一下它有哪些常用的方法:

    常用方法

    最常用的就是这几个了,相信备注写的清清楚楚。

    有一点要说一下:cancel和end,cancel调用后,是保留到当前的属性值。而end调用后,是保留我们参数中填入的最后值。

    我们说ValueAnimator会时刻监听属性值的变化,没错,ValueAnimator有自己的监听器。

    设置监听器

    ValueAnimator一共有三种监听器,如上所示:

    第一个AnimatorUpdateListener这个监听器是必须添加的,因为我们获取不断变化的属性值是通过它里面的onAnimatorUpdate方法获取的。而且如果不设置这个监听器,我们无法添加动画效果。

    剩下两个监听器大家自己下去试一下就好。

    我之前添加了一个ImageView控件,我让获取到的属性值添加到img的rotation属性中(这个属性什么意思不知道的话一头战死吧。。。。),然后调用start方法。(我改成了按键调用)

    效果

    我想现在大家知道我之前说的不被对象束缚是什么意思了,我们只是通过获取不断变化的属性值,然后在回调接口中实现我们想要的逻辑。同时也可以看出属性动画是真的改变属性。而不同于View动画。

    接下来我们看一下XML实现:

    1.在res目录下创建animator文件目录。

    2.animator中创建xml文件。

    xml的标签看的应该很明白,不用多做解释了吧。

    然后调用和ObjectAnimator一样:

    然后通过我们添加其他方法去完善,最后start就可以了。

    关于ValueAnimator的基本用法就是这些了。在下一章我们将进一步理解属性动画,以及学习更加高级的用法。

    相关文章

      网友评论

        本文标题:2018-05-14—属性动画(2)ValueAnimator初

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