View动画
View动画的四种变换:平移,缩放,旋转,透明度
属性动画
属性动画可以对任意对象的属性进行动画而不仅仅是View,属性动画从API 11才有,采用开源动画库nineoldandroid来兼容以前的版本。常见的动画类:ValueAnimator,ObjectAnimator和AnimatorSet
建议采用代码的方式实现属性动画
1 ValueAnimator:初始值和结束值之间额动画过渡就是有ValueAnimator负责计算的,它还负责管理动画的播放次数,播放模式,以及对动画设置监听
1 调用ValueAnimator.ofFloat()方法构建一个ValueAnimator的实例
2 调用ValueAnimator的setDuration()方法来设置动画运行的时长
3 调用addUpdateListener()方法添加一个动画的监听
4 调用setStartDelay()方法来设置动画延迟播放的时间
5 调用setRepeatCount()方法设置动画循环播放的次数
6 调用setRepeatMode()方法设置动画循环播放的模式
7 调用start()方法开始动画
ObjectAnimator继承自ValueAnimator,可以直接对任意对象的任意属性进行动画操作的,是动画中常用的类
// ObjectAnimator animator=ObjectAnimator.ofFloat(textView,"alpha",1f,0f,1f);//实现淡入淡出的效果
// ObjectAnimator animator=ObjectAnimator.ofFloat(textView,"rotation",0f,360f);//对textView进行360度旋转
float curTranslationX=textView.getTranslationX();
//textView先向左移除屏幕,然后再移回来
// ObjectAnimator animator=ObjectAnimator.ofFloat(textView,"translationX",curTranslationX,-500f,curTranslationX);
ObjectAnimator animator=ObjectAnimator.ofFloat(textView,"scaleY",1f,3f,1f);//实现缩放效果
animator.setDuration(3000);
animator.start();
组合动画:借助AnimatorSet类实现组合动画,该类提供了一个play()方法,向该方法中传入一个Animator对象(ValueAnimator或ObjectAnimator)将会返回一个AnimatorSet.Builder实例。AnimatorSet.Builder中包括以下四个方法:
1 after(Animator anim)将现有动画插入到传入的动画之后执行
2 after(long delay)将现有动画延迟指定毫秒后执行
3 before(Animator anim)将现有动画插入到传入动画之前执行
4 with(Animator anim)将现有动画和传入的动画同时执行
Animator监听器:Animator类中提供 一个addListener()方法,该方法接受一个AnimatorListener,实现AnimatorListener的四个接口就可以监听动画的各种事件;也可以传入AnimatorListenerAdapter,该类已经实现了AnimatorListener接口,需要监听某个事件,直接重写相应的方法即可,就不用实现AnimatorListener的所有接口了
AnimatorUpdateListener监听接口:监听整个动画过程,动画是有许多帧组成的,每播放一帧,它的方法onAnimationUpdate就会被调用一次
ValueAnimator的高级用法
ObjectAnimator的高级用法
Interpolator:控制动画的变化速率
TimeInterpolator:属性动画当中新增对的接口,用于兼容以前的interpolator的
Animator或AnimatorSet的实例调用setInterpolator()方法,参数传入TimeInterpolator的实现类的实例即可设置动画的的变化速率
Android 3.1系统中补充了ViewPropertyAnimator机制,ViewPropertyAnimator是针对View类的,并不是所有的对象。
textView.animate().alpha(0f):实现textView从常规改变成透明的状态,animate()方法返回一个ViewPropertyAnimatro对象,拿到该对象后就可以调用它的各种方法来实现动画效果。