渐变动画(Tweened View Animations):应用在View上,让你可以定义一系列动画改变(位置、大小、旋转、透明度).
帧动画(Frame Animations): 不同的图片,然后切换,形成动画。 该动画在View上显示,使用其画布。
1.Activity之间的转换。
2.Activity中布局的转换。
3.View中不同内容的转换。
4.提供用户反馈,比如当用户输入错误的信息时,“振动”输入框。
其中主要包含4种类型:
1.AlphaAnimation View的透明度改变。
2.RotateAnimation View旋转。
3.ScaleAnimation View的缩放。
4.TranslateAnimation View的位置移动。
<set xmlns:android=”http://schemas.android.com/apk/res/android” android:interpolator=”@android:anim/accelerate_interpolator”> <scale android:fromXScale=”0.0” android:toXScale=”1.0” android:fromYScale=”0.0” android:toYScale=”1.0” android:pivotX=”50%” android:pivotY=”50%” android:duration=”1000” /> </set>
这种动画默认只运行1次,然后就停掉了。除非你修改其默认的行为,通过setRepeatMode和setRepeatCount方法。你可以强制一个动画去循环或者重复反转通过标识(RESTART、REVERSE)。
还可以设置重复的次数!
myAnimation.setRepeatMode(Animation.RESTART); myAnimation.setRepeatCount(Animation.INFINITE); myView.startAnimation(myAnimation);
还可为渐变动画添加监听:
myAnimation.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { // TODO Do something after animation is complete. } public void onAnimationStart(Animation animation) { // TODO Do something when the animation starts. } public void onAnimationRepeat(Animation animation) { // TODO Do something when the animation repeats. } });
此动画运用在ViewGroup上。
定义一个布局动画:
<layoutAnimation xmlns:android=”http://schemas.android.com/apk/res/android” android:delay=”0.5” android:animationOrder=”random” android:animation=”@anim/popin” />
布局动画:
在布局(比如RelativeLayout的标签属性)的xml中:
android:layoutAnimation=”@anim/popinlayout”
在代码中设置布局动画,通过调用ViewGroup的setLayoutAnimation,传入一个LayoutAnimation对象。当ViewGroup刚被布置上的时候,触发1次动画。你可以强制再次执行当ViewGroup下次被布置,通过调用ViewGroup的scheduleLayoutAnimation。 布局动画也支持监听:
aViewGroup.setLayoutAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation _animation) { // TODO: Actions on animation complete. } public void onAnimationRepeat(Animation _animation) {} public void onAnimationStart(Animation _animation) {} }); aViewGroup.scheduleLayoutAnimation();
这个太简单了,直接看例子:(注意帧动画是Drawable对象是AnimationDrawable)
<animation-list xmlns:android=”http://schemas.android.com/apk/res/android” android:oneshot=”false”> <item android:drawable=”@drawable/rocket1” android:duration=”500” /> <item android:drawable=”@drawable/rocket2” android:duration=”500” /> <item android:drawable=”@drawable/rocket3” android:duration=”500” /> </animation-list>
设置动画
ImageView image = (ImageView)findViewById(R.id.my_animation_frame); image.setBackgroundResource(R.drawable.animated_rocket);
启动动画:
AnimationDrawable animation = (AnimationDrawable)image.getBackground(); animation.start();