View动画
View动画分类
TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation共四大类。
可以在xml中创建动画,也可以再代码中创建。
自定义View动画
创建一个继承自Animation的类,重写initialize和applyTransformation方法。initialize这个方法中做初始化的工作,applyTransformation中进行相应的矩阵转变即可。
帧动画
是顺序播放一组预先定义好的图片,类似于电影播放。使用AnimationDrawable这个类来播放帧动画。使用方法先在XML文件总定义一个AnimationDraw<animation-list>,再将定义好的Drawable当做View的背景通过Drawable来播放动画。
LayoutAnimation
用于ViewGroup,为ViewGroup的子View出场时的动画效果。
Activity切换效果
在startActivity()之后或者finish()之后调用overridePendingTransition(int enterAnim,int exitAnim)
enterAnim Activity打开时的动画id
exitAnim Activity关闭时的动画id
属性动画
ObjectAnimation
ObjectAnimator a = new ObjectAnimatorofFloat(view,"translationX",300);
a.setDuration(3000);
a.start();
translateX、translateY。X轴Y轴偏移
scaleX、scaleY。缩放
pivotX、pivotY。旋转缩放
x、y。描述View在它所在容器的最终位置
alpha。透明度
使用ObjectAnimator,非常重要的一点,要操纵的属性必须有get,set方法
PropertyValuesHolder
同时进行多种动画效果,类似AnimationSet
ValueAnimator
属性动画的核心,ObjectAnimator也是继承自它;它本身不提供任何动画效果,更像是一个数值发生器,产生一定有规律的数字,让调用者来控制动画的实现过程
动画的监听事件
ObjectAnimator.addListener(new AnimatorListener());Start、Repeat、End、Cancel 四个过程
.addListener(new AnimatorListenerAdapter());来实现onAnimationEnd事件
AnimatorSet
类似7.2.2 PropertyValuesHolder ,但能实现更为精确的顺序控制
playTogether()、playSequentially()、animSet.play().with()、befor()、after();
XML中使用属性动画
View的animate方法
属性动画的一种简写形式
view.animate().alpha(0).y(300).setDuration(300).withStartAction(new Runnable()).withEndAction(new Runnable()).statr();