Android-Animation 总结(二(Valueanim
之前讲了帧动画和补间动画,今天我们来说一说重头戏---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组合使用,实现组合动画。