1.什么是Animations
Animations是安卓框架为我们提供的一系列动画效果,这些效果可以应用在绝大多数控件中
2.Animations的分类
1.TweenedAnimations(渐变动画)
该类动画提供了旋转、移动、伸展、淡出等等效果
(1)Alpha:淡入淡出效果
(2)Scale:绽放效果
(3)Rotate:旋转效果
(4)Translate:移动效果
2.Frame by Frame Animtions(电影胶片效果)
该类可以创建一个Drawable序列,这些Drawable可以按照指定时间间歇一个一个的显示
3.Animations的第一种使用方法
1.创建一个AnimationSet对象
2.根据需要创建相应的Animation对象
3.根据软件动画的需求,为Animation对象设置相应的数据
4.将Animation对象添加到AimationSet对象当中
5.使用控件对象开始执行AnimationSet
AnimationSet aniSet = new AnimationSet(true);
AlphaAnimation alphaAni = new AlphaAnimation(1, 0); //参数:从X到Y的透明度
alphaAni.setDuration(1000); //执行时间
aniSet.addAnimation(alphaAni);
imageView.startAnimation(aniSet);
RotateAnimation rotateAni - new RotateAnimation(0, 360,
Animation.RELATIVE_TO_PARENT, 1f,
Animation.RELATIVE_TO_PARENT, 0f);
ScaleAnimation scaleAni = new ScaleAnimation(1, 0.1f, 1, 0.1f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
动画通用属性:
setDuration(long durationMills) //执行时间
setFillAfter(boolean fillAfter) //动画执行结束后,控件停留在结束的状态
setFillBefore(boolean fillBefore) //动画执行结束后,控件恢复原来的状态
setStartOffset(long startOffset) //设置动画执行之前的等待时间
setRepeatCount(int repeatCount) //设置动画重复执行的次数
4.Animations的第二种使用方法
1.在res文件夹下面新建一个名为anim的文件夹
2.创建xml文件,并首先加入set标签
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
</set>
3.在该标签当中加入rotate,alpha,scale,translate标签
<alpha
android:formAlpha="0.1"
android:toAlpha="1.0"
android:duration="1000" />
4.在代码当中使用AnimationUtils装载xml文件,并生成Animation对象
Animation ani = AnimationUtils.loadAnimation(AniActivity.this,R.anim.alpha);
imgAni.startAnimation(ani);
//完整示例
public class AnimationActivity extends Activity {
private Button btnAlpha = null;
private Button btnScale = null;
private Button btnRotate = null;
private Button btnTranslate = null;
private ImageView imgAni = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.animation);
btnAlpha = (Button) findViewById(R.id.btnAlpha);
btnScale = (Button) findViewById(R.id.btnScale);
btnRotate = (Button) findViewById(R.id.btnRotate);
btnTranslate = (Button) findViewById(R.id.btnTranslate);
imgAni = (ImageView) findViewById(R.id.imgAni);
//淡入淡出效果
btnAlpha.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
AnimationSet aniSet = new AnimationSet(true);
AlphaAnimation ani = new AlphaAnimation(1, 0);
ani.setDuration(1000);
aniSet.addAnimation(ani);
imgAni.startAnimation(aniSet);
}
});
//绽放效果
btnScale.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
AnimationSet aniSet = new AnimationSet(true);
ScaleAnimation ani = new ScaleAnimation(1, 0, 1, 0);
ani.setDuration(1000);
aniSet.addAnimation(ani);
imgAni.startAnimation(aniSet);
}
});
//旋转效果
btnRotate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
AnimationSet aniSet = new AnimationSet(true);
RotateAnimation ani = new RotateAnimation(0, 180);
ani.setDuration(1000);
aniSet.addAnimation(ani);
imgAni.startAnimation(aniSet);
}
});
//移动效果
btnTranslate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
AnimationSet aniSet = new AnimationSet(true);
TranslateAnimation ani = new TranslateAnimation(0, 180, 0, 180);
ani.setDuration(1000);
aniSet.addAnimation(ani);
imgAni.startAnimation(aniSet);
}
});
}
}