Android动画系统的种类:
1. 属性动画 (Property Animation)
2. 补间动画 (Tween Animation)
3. 帧动画 (Frame Animation)
4. Drawable
属性动画(Property Animation):
可以改变控件对象属性的对象,譬如控件的位置,透明度,旋转等。
包含两个基本的Animator:
1.ValueAnimator : 提供一个动画时序引擎,用来计算动画时序内,动画的值。
使用方式:
private void valueAnimatorTest(final View view) {
ValueAnimator anim = new ValueAnimator(); //创建ValueAnimator
anim.setDuration(2000); // 设置动画时常
anim.setObjectValues(new My()); //设置自定义初始值
anim.setEvaluator(new TypeEvaluator<My>() {
@Override
public My evaluate(float fraction, My startValue, My endValue) {
System.out.println("fraction = " + fraction);
// fraction:动画执行时间片段
My my = new My(); // My是一个实体类,可以自定义View的各个属性值
return my;
}
});
anim.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
My value = (My)valueAnimator.getAnimatedValue(); // 得到当前动画片段的计算的自定义值,用来改变控件的属性
}
});
anim.start();
}
2. ObjectAnimator:是ValueAnimator的子类,这里对属性进行了一层逻辑实现,使用者可以直接通过动画改变控件属性。
translationX、translationY 控制View相对于父布局平移距离
rotation、rotationX、rotationY 控制旋转
scaleX、scaleY 控制X 、Y轴方向的缩放
pivotX、pivotY 缩放和旋转的支点,默认为View的中心
alpha 透明度(0~1)
x、y 在父控件中的位置(注意和translationX、translationY的区分)
使用方式:
1. 控制单个属性动画
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "scaleX", 1.0F, 0.0F).setDuration(500);
anim.start();
2. 控制多个属性动画
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "anywords", 1.0F, 0.0F).setDuration(500);
anim.addUpdateListener(new AnimatorUpdateListener(){
@Override
public void onAnimationUpdate(ValueAnimator animation){
float cVal = (Float) animation.getAnimatedValue();
view.setAlpha(cVal);
view.setScaleX(cVal);
view.setScaleY(cVal);
}
}
anim.start();
补间动画 (Tween Animation)
比较简单,与属性动画相比,只能改变控件的显示状态,不能实际改变控件属性值,主要有四中:
1. ScaleAnimation
2. RotateAnimation
3. AlphaAnimation
4. TranslateAnimation
补间动画相对简单,具体实现方式可参考其构造方法即可。
帧动画 (Frame Animation)
顾名思义,就是与电影的播放原理一样,逐帧显示图片达到动画的效果,实现方式:
1. 在res目录下建立 drawable 文件夹
2. 在drawable文件夹目录下创建 frame.xml 文件
3. frame.xml文件格式
<xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pic1" android:duration="200"/>
<item android:drawable="@drawable/pic2" android:duration="200"/>
<item android:drawable="@drawable/pic3" android:duration="200"/>
</animation-list>
4. 应用在ImageView中
<ImageView
....
android:src = "@drawable/frame"
/>
5. 代码启动动画
AnimationDrawable animationDrawable = (AnimationDrawable) view.getDrawable();
animationDrawable.start();