分类
帧动画
主要使用AnimationDrawable,Drawable的子类,可以通过Java代码或者xml文件创建Drawable
xml创建:位于drawable目录下,可以当作普通的drawable使用
<animation-list>
:图片集合,android:oneshot
属性:执行一次<item>
:android:duration、android:drawable
属性
Drawable强制转换为AnimationDrawable类型,然后调用AnimationDrawable.start()方法播放
注:不能在onCreate方法中调用,因为AnimationDrawable还未完全附着到window上,可以在onWindowFocusChanged()方法中调用。
补间动画(视图动画)
Java代码创建:
- TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation:平移、旋转、缩放、透明
- AnimationSet:动画集合
xml创建:
<translate>、<scale>、<rotate>、<alpha>、<set>
标签- 通过AnimationUtils.loadAnimation(this, R.anim.*);加载,返回Animation对象。
view.startAnimation()播放,或者anim.start();
animation.setAnimationListener()设置动画监听
进阶:插值器Interplolator
注:补间动画无不会改变view位置和大小等属性,如点击移动后的位置无法响应事件。
属性动画(3.0以上,API 11)
ObjectAnimator、ValueAnimator……
//参数:view、动画、开始值、结束值 ObjectAnimator mObjectAnimator= ObjectAnimator.ofInt(view, "rotationY", 0, 1).setDuration(2000);
AnimatorSet:动画集合
Interplotator:插值器,控制动画速率
Evaluator:估值器,根据起始值、结束值和插值计算当前属性值。
Transition
根据开始和结尾的View状态,自动计算。