Animation动画分为两类
1.Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。 Alpha——淡入淡出, Scale——缩放效果, Rotate——旋转, Translate——移动效果。
2.Frame-by-frame Animations:这一类Animations可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示。
TweenedAnimations使用步骤
1.创建一个AnimationSet对象(Animation子类);
2.增加需要创建相应的Animation对象;
3.更加项目的需求,为Animation对象设置相应的数据;
4.将Animatin对象添加到AnimationSet对象当中;
5.使用控件对象开始执行AnimationSet。
Animation的四个子类:
AlphaAnimation、TranslateAnimation、ScaleAnimation、RotateAnimation
AlphaAnimation
1. 代码设置
//创建一个AnimationSet对象,参数为Boolean型,
//true表示使用Animation的interpolator,false则是使用自己的
AnimationSet animationSet = new AnimationSet(true);
//创建一个AlphaAnimation对象,参数从完全的透明度,到完全的不透明
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
//设置动画执行的时间
alphaAnimation.setDuration(500);
//将alphaAnimation对象添加到AnimationSet当中
animationSet.addAnimation(alphaAnimation);
//使用ImageView的startAnimation方法执行动画
image.startAnimation(animationSet);
1、setDuration(long durationMills)设置动画持续时间(单位:毫秒)
2、setFillAfter(Boolean fillAfter)如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
3、setFillBefore(BooleanfillBefore)如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
4、setStartOffSet(longstartOffSet) 设置动画执行之前的等待时间
5、setRepeatCount(int repeatCount)
- 也可以用xml定义 用XML定义的动画放在/res/anim/文件夹内
XML文件的根元素可以 为,,,,interpolator元素或(表示以上几个动画的集合,set可以嵌套)。默认情况下,所有动画是同时进行的,可以通过startOffset属性设置 各个动画的开始偏移(开始时间)来达到动画顺序播放的效果。
定义好动画的XML文件后,可以通过类似下面的代码对指定View应用动画。
ImageView Image = (ImageView)findViewById(R.id.Image);
Animation JumpAnimation=AnimationUtils.loadAnimation(this, R.anim.jump);
Image.startAnimation(JumpAnimation);
Interpolator定义了动画变化的速率,在Animations框架当中定义了一下几种Interpolator
AccelerateDecelerateInterpolator:在动画开始与结束的地方速率改变比较慢,在中间的时候速率快。
AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速
CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始减速?
LinearInterpolator:动画以均匀的速率改变
1、在set标签中
android:interpolator="@android:anim/accelerate_interpolator"/>
2、如果在一个set标签中包含多个动画效果,如果想让这些动画效果共享一个Interpolator。
android:shareInterpolator="true"
3、如果不想共享一个interpolator,则设置android:shareInterpolator=”true”,并且需要在每一个动画效果处添加interpolator。
4、如果是在代码上设置共享一个interpolator,则可以在AnimationSet设置interpolator。
AnimationSet animationSet = newAnimationSet(true);animationSet.setInterpolator(new AccelerateInterpolator());
5、如果不设置共享一个interpolator则可以在每一个Animation对象上面设置interpolator。
AnimationSet animationSet = newAnimationSet(false);alphaAnimation.setInterpolator(new AccelerateInterpolator());rotateAnimation.setInterpolator(new DecelerateInterpolator());