09777777
09777777
3月前 · 4 人阅读

          之前讲了帧动画和补间动画,今天我们来说一说重头戏---Android Animation之属性动画(property animation)。

一 :是什么,属性动画是什么?

           属性动画是 android团队在android 3.0 引入Property animation。

           Property animation的主要两个类:ValueAnimation 和 ObjectAnimation ,当然ObjectAnimation是继承自ValueAnimation的。

            ValueAnimator是整个属性动画机制当中最核心的一个类,它的内部使用一种时间循环的机制来计算值与值之间的动画过渡,我们只要给它设置初始值和结束值以及一些常用属性比如:循环,持续时间,播放模式,监听(alueAnimator.AnimatorUpdateListener)最后在调用start方法即可。其他属性,自行百度.

              ObjectAnimator则就不同了,它是可以直接对任意对象的任意属性进行动画操作的,比如说View的scale属性。

二:为什么,什么么要引入?

       我们来对比一下之前讲到过的补间动画:

与补间动画相比的优缺点:

  1,补间动画只能对View进行平移,渐变,缩放,旋转的操作,如:TextView ,Button等,不能对某个对象。

   2,补间动画扩展性差,比如监听view移动,动态改变背景色及改变显示内容等操作

     3.最致命的一点:只是改变了View的显示效果而已,而不会真正去改变View的属性。经常遇到的比如使用平移效果(translate)使ImageView移动从屏幕左边A点移动到右边B点,给ImageView设置监听,点击B点的ImageView并没有反应,点击A点不存在ImageView的空白区域竟然响应了点击。

三:怎么用?

我们先来实现ValueAnimator吧。

    - -------------ValueAnimator-----------------

  先说明一下:valueAnimator:这个动画是针对属性的值进行动画的 ,不会对UI造成改变,不能直接实现动画效果。需要通过对动画的监听去做一些操作,在监听中将这个值设置给对应的属性,属性才会改变。

那么既然看不到UI效果,我们怎么看动画有么有运行呢?别急,不是有监听嘛?

我们可以监听其输出内容。ok,开始。。。。。


效果:


我们平时在开发中可以根据属性值的变化做相应的操作。

 不知道大家有没有注意看ValueAnimator.ofFloat(1f,30f),它其实还可以写成ValueAnimator.ofFloat(1f,30f,15f)等。从1f到30f再从30f到15f.

还有ValueAnimator.ofInt().放的是整型。

      ValueAnimator.onArgb();可以改变背景色,代码如下,


 简书不上传效果图只支持优酷和腾讯视频,腾讯太坑了。,大家只能看代码了。

还有监听,我们刚才是addUpdateListener设置ValueAnimator.AnimatorUpdateListener来对动画的值进行了监听。

还有一个监听是通过valueAnimator.addListener设置Animator.AnimatorListener监听。

这个监听提供了start,end,cancel,repeat的监听:分别是开始,结束,取消,重复,感兴趣小伙伴自己尝试一下。

最后在该大家推荐推荐几个常用的属性:


对了,发现一个小问题,就是ofFloat的时候出现了打印重复,也不知道是什么原因,知道的小伙伴可以讲解一下。

还有ObjectAnimator,我们下次讲和ValueAnimator组合使用,实现组合动画。

收藏 0
动画 监听 valueanimator 属性 补间 view
评论 ( 0 )