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

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



ValueAnimator介绍

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

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

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

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

java方式:
10608194-178b5b3a79a77fc7.png
Java方式获取

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

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

10608194-9124aacfd8b870aa.png

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

10608194-4c64a7c295886197.png
常用方法

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

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

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

10608194-6e4b0a3bf54d87f4.png
设置监听器

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

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

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

10608194-aa94b4088acf791c.png

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

10608194-0a6aaa27fcd2eaca.gif
效果

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

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

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

2.animator中创建xml文件。

10608194-2030ed143e1f4c1f.png

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

然后调用和ObjectAnimator一样:

10608194-31f579f04bbdf021.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值