3.0以前,android支持两种动画模式,补间动画(tween animation),帧动画(frame animation),在android3.0中又引入了一个新的动画系统:属性动画(property animation)。今天先主要说一下补间动画
补间动画我们直接成为View动画,他包含四种变换
平移动画 TranslationAnimation
缩放动画 ScaleAnimation
旋转动画 RotateAnimation
透明度动画 AlphaAnimation
这四种动画创建方式有俩种,一种是通过代码动态创建,另一种是采用XML来定义动画,对于View动画来说,一般建议采用XML来实现,这是应为XML格式的动画拥有更好的可读性。
创建View动画,首先创建XML文件,在res/anim/下创建XML文件,一个有五种标签可选,四中动画变化以及一种集合变换,View动画既可以单独采用一种动画,也可以采用set标签创建一系列动画。
在创建动画是,有一个属性是android:interpolator,表示动画的插值器,用于管理动画的速度,如,加速、减速等,系统默认的是加速减速加值器accelerate_decelerate_interpolator;除此以外,还有一个属性是android:shareInterpolator,他表示动画是否与几何使用同一个插值器。
tranlationanimation,屏移动画。新建translate标签,完成以下几个重要属性
android:fromXDelta="0"---表示X的起始值
android:fromYDelta="0"---表示Y的起始值
android:toXDelta="500"---表示X的结束值
android:duration="2000"----表示时长
android:toYDelta="500"----表示Y的结束值
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="500"
android:duration="2000"
android:toYDelta="500">
</translate>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fillAfter="true"动画是都停留在结束<span style="font-family:微软雅黑;">位置</span>
android:duration="2000"
android:shareInterpolator="true">
<span style="font-family:微软雅黑;"><!--起始透明度,终止透明度--></span>
<alpha
android:fromAlpha="1"
android:toAlpha="0.1">
</alpha>
<pre name="code" class="java"><span style="font-family:微软雅黑;"><!--起始角度,终止角度,轴心是view中心--></span>
<rotate android:fromDegrees="0" android:toDegrees="359" android:pivotX="0" android:pivotY="0"></rotate><scale android:fromXScale="0.1" android:toXScale="1.5" android:fromYScale="0.1" android:toYScale="1.5">
</scale> <translate android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="500" android:toYDelta="500"></translate></set>
在应用中,通过AnimationUtils找到相应的动画,在用添加动画的控件启动该动画
animation_alpha = AnimationUtils.loadAnimation(this, R.anim.animation_alpha);
<span style="font-family:微软雅黑;"> </span> animation_rotate = AnimationUtils.loadAnimation(this, R.anim.animation_rotate);
<span style="font-family:微软雅黑;"> </span> animation_scale = AnimationUtils.loadAnimation(this, R.anim.animation_scale);
<span style="font-family:微软雅黑;"> </span>animation_set = AnimationUtils.loadAnimation(this, R.anim.animation_set);
<span style="font-family:微软雅黑;"> </span>animation_trans = AnimationUtils.loadAnimation(this, R.anim.animation_trans);@Override
public void onClick(View v) {
if (v.getId()==R.id.btn_alpha){
iv.startAnimation(animation_alpha);
}else if (v.getId()==R.id.btn_translate){
iv.startAnimation(animation_trans);
}else if (v.getId()==R.id.btn_rotate){
iv.startAnimation(animation_rotate);
}else if (v.getId()==R.id.btn_set){
iv.startAnimation(animation_set);
}else if (v.getId()==R.id.btn_scale){
iv.startAnimation(animation_scale);
}
}
通过XML文件来实现动画已经完成了,接下来使用代码来完成
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
alphaAnimation.setDuration(1000);
iv.startAnimation(alphaAnimation);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 500);
translateAnimation.setDuration(1000);
iv.startAnimation(translateAnimation);其他动画同理。
效果图如下:

被折叠的 条评论
为什么被折叠?



