Android学习笔记 - 动画篇 (Animations)

来源:互联网 发布:php redis 单例模式 编辑:程序博客网 时间:2024/05/07 21:45

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;@Overridepublic 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);}});}}


 

原创粉丝点击