View动画
View动画的对象是view,支持4种动画效果,在xml里分别对应<translate><scale><rotate><alpha>四个标签
xml文件的基元素为<set>标签,有interpolator等属性来设置动画
其他一些常用属性,比如duration、fillAfter
使用方法:
1.在res文件下创建anim文件
2.在里面创建动画xml文件
3.在<set>里指定动画
4.在代码里使用AnimationUtils.loadAnimation(context,xx.xml)创建Animation实例,然后为指定的View实例指定并开始动画.startAnimation(Animation实例)
5.还可为Animation实例创建监听器,用setAnimationListener(new onAnimationStart/End/Repeat(Animation实例))
帧动画
对应AnimationDrawable,在xml文件里的<animation-list>标签的<item>集里指定图片和动画时间等
使用方法是给指定view设置动画文件为背景
用view的getBackground方法获得AnimationDrawable的实例
使用实例的start()的方法开始动画
帧动画,当加载大量图片,或者图片较大时,容易OOM
LayoutAnimation,为ViewGroup指定子元素的入场动画
使用方法:
1.创建子元素动画文件
2.创建xml文件,根标签为<layoutAnimation>;
在<layoutAnimation>里指定子元素动画的相关属性,比如delay、animationOrder等;
引进给子元素的动画文件animation = “@anim/xxx”
3.在ViewGroup里引进LayoutAnimation动画文件layoutAnimation = “@anim/xxx”
Activity切换效果:在startActivity和finish之后使用overridePendingTransition(intenterAnim, int exitAnim)
属性动画
属性动画的对象不仅仅是view,是任意对象
常用的类ValueAnimator、ObjectAnimator、AnimatorSet
插值器:
根据时间流逝的百分比来计算出属性值改变的百分比,就是根据时间差计算路程差,所以一般用于设置属性值变化的速度
常用的有LinearInterpolator、DecelerateInterpolator、AccelerateDecelerateInterpolator(两边慢中间快)
估值器:
根据当前属性改变的百分比来计算改变后的属性值,也就是根据距离差计算下一个距离
常用的有IntEvaluator、FloatEvaluator、ArgbEvaluator
使用属性动画的对象,要求具备2个条件:object必须有setAbc方法;对setAbc做改变时必须有UI改变
属性动画在Activity退出时必须保证关闭,尤其是循环动画,不然容易造成内存泄漏