标签对应TransitionAnimation
标签对应ScaleAnimation
标签对应RotateAnimation
标签对应AlphaAnimation
标签对应SetAnimation
android:interpolator//插值器
android:shareInterpolator//集合中动画是否和集合共享一个插值器
Animation animation=AnimationUtils.loadAnimation(this,R.anim.anim_test);
mButton.startAnimation(animation)
继承抽象类Animation。重写initialize和applyTransformation方法,initialize方法中做初始化工作,在applyTransformation中进行相应的矩阵变换。有时通过Camera来简化居中变换的过程。
一组定义好的图片,顺序播放。AnimationDrawable来使用帧动画。
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" >
<item android:drawable="@drawable/dialog01" android:duration="200"/>
<item android:drawable="@drawable/dialog02" android:duration="200"/>
<item android:drawable="@drawable/dialog03" android:duration="200"/>
</animation-list>
android:oneshot
是否只执行一次。
AnimationDrawable drawable=(AnimationDrawable)mButton.getBackground();
drawable.start();
作用于ViewGroup,当它的子元素出场都会具有这种动画效果。常常用作ListView。
下边是动画anim_layout:
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/anim_item" android:animationOrder="normal" android:delay="0.5" >
</layoutAnimation>
android:delay
开始动画的延迟时间。
android:animationOrder
动画顺序,normal,reverse,random,分别表示顺序显示,逆向显示,随机播放。
android:animation
指定具体的入场动画。
<ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent" android:layoutAnimation="@anim/anim_layout" >
</ListView>
代码中实现:
ListView listview=(ListView)findViewById(R.id.listview);
Animation animation=AnimationUtils.loadAnimation(this, R.anim.anim_item);
LayoutAnimationController controller = new LayoutAnimationController(animation);
controller.setDelay(0.5f);
controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
listview.setLayoutAnimation(controller);
overridePendingTransition(int enterAnim,int exitAnimation)这个方法,必须在startAcitivity()或者finish()之后调用才有效。
Fragment也可以添加切换动画。通过FragmentTransition中的setCustionAnimations()方法来添加切换动画。
API 11新加入特性。有ValueAnimator、ObjectAnimator、AnimatorSet等概念。兼容11以下版本采用nineoldandroids,网址http:nineoldandroids.com.
(1)改变一个对象的translationY属性。
ObjectAnimator.ofFloat(mObject,"translationY",-mObject.getHeight()).start();
(2)改变对象的背景色属性。3秒从0xFFFF8080到0xFF8080FF的渐变。无限循环加反转效果。
ValueAnimator colorAnim=ObjectAnimator.ofInt(this,"backgroundColor",0xFFFF8080,0xFF8080FF);
colorAnim.setDuration(3000);
colorAnim.setEvaluator(new ArgbEvauator());
colorAnim.setRepeatCount(ValueAnimator.INFINITE);
colorAnim.setRepeatMode(ValueAnimator.REVERSE);
colorAnim.start();
(3)动画集合,5秒对view的旋转,评议,缩放,透明都进行改变。
AnimatorSet set = new AnimatorSet();
set.playTogether(ObjectAnimator.ofFloat(myView, "ratationX", 0, 360),
ObjectAnimator.ofFloat(myView, "ratationY", 0, 180),
ObjectAnimator.ofFloat(myView, "ratation", 0, -90),
ObjectAnimator.ofFloat(myView, "translationX", 0, 90),
ObjectAnimator.ofFloat(myView, "translationY", 0, 90),
ObjectAnimator.ofFloat(myView, "scaleX", 0, 1.5f),
ObjectAnimator.ofFloat(myView, "scaleY", 0, 0.5f),
ObjectAnimator.ofFloat(myView, "alpha", 0, 0.25f, 1));
set.setDuration(5*1000).start();
还可以通过XML来定义,属性动画定义在res/animator/目录下。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together" >
<objectAnimator android:duration="300" android:propertyName="x" android:valueTo="200" android:valueType="intType" />
<animator android:duration="300" android:valueTo="200" android:valueType="intType" />
</set>
android:propertyName
属性动画的作用对象的属性的名称。
startOffset
动画的延迟时间。
valueType
android:propertyName所指定的属性的类型,有intType和floatType两个选线。如果android:propertyName指定的是颜色,不需要指定valueType,系统自动处理。
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.anim.set_anim);
set.setTarget(mButton);
set.start();
TimeInterpolator
时间插值器,根据时间流逝的百分比计算出当前属性值改变的百分比。系统预置的有LinearInterpolator(线性插值器:匀速动画)、AccelerateDecelerateInterpolator(加速减速插值器:动画两头慢中间快)和DecelerateInterpolator(加速插值器:动画越来越慢)等。
TypeEvaluator
类型估值算法,根据当前属性改变的百分比计算改变后的属性值,系统预置有IntEvaluator(针对整形属性)、FloatEvaluator(针对浮点型属性)和ArgbEvaluator(针对color属性)。
AnimatorListener定义如下:
public static interface AnimatorListener{
void onAnimationStart(Animator animation);
void onAnimationEnd(Animator animation);
void onAnimationCancel(Animator animation);
void onAnimationRepeat(Animator animation);
}
AnimatorUpdateListener定义:
public static interface AnimatorUpdateListener{
void onAnimationUpdate(ValueAnimator animation);
}