帧动画和补间动画

帧动画

帧动画 类似 照相机,就是播放一系列的图片资源

帧动画使用步骤:

1. 将一系列图片复制到res/drawable中
2.在res/drawable中创建一个animation-list格式的xml文件(例如名为girl),并把帧动画用到的图片加载进来
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >
    <item
        android:drawable="@drawable/girl_1"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_2"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_3"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_4"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_5"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_6"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_7"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_8"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_9"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_10"
        android:duration="200"/>
    <item
        android:drawable="@drawable/girl_11"
        android:duration="200"/>
  

</animation-list>
3.控件中添加一个imageview,设置图片资源,启动动画
//找到imageview
		ImageView iv = (ImageView) findViewById(R.id.iv); 
		//设置背景资源
		iv.setBackgroundResource(R.drawable.girl);
		
		//获取动画资源  这句话可能是一个耗时的操作,所以睡眠一段时间再开启动画 
		final AnimationDrawable background = (AnimationDrawable) iv.getBackground();
		
		
		new Thread(){public void run() {
			
			try {
				Thread.sleep(20);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			background.start(); //开启动画
			
			
		};}.start();

补间动画

下面例子代码中的iv是一个imageview控件

AlphaAnimation---透明度动画

  /**
	 * 透明度变化的动画
	 * @param view
	 */
	public void alpha(View view) {
		AlphaAnimation aa = new AlphaAnimation(0, 1.0f);
		//动画播放的时间
		aa.setDuration(2000);
		//重复次数
		aa.setRepeatCount(2);
		//设置重复的模式
		aa.setRepeatMode(Animation.REVERSE);
		iv.startAnimation(aa);
	}

RotateAnimation---旋转动画

/**
	 * 旋转变化的动画
	 * @param view
	 */
	public void rotate(View view) {
		//旋转度数,旋转相对点
		RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		//动画播放的时间
		ra.setDuration(2000);
				//重复次数
		ra.setRepeatCount(2);
		ra.setRepeatMode(Animation.REVERSE);
		iv.startAnimation(ra);
	}

TranslateAnimation---位移动画

/**
	 * 位移变化的动画
	 * @param view
	 */
	public void trans(View view) {
		TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.5f, Animation.RELATIVE_TO_PARENT, 0.5f, 
				Animation.RELATIVE_TO_PARENT, -0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);
		ta.setDuration(2000);
		//重复次数
		ta.setRepeatCount(2);
		ta.setRepeatMode(Animation.REVERSE);
		iv.startAnimation(ta);
		
	}

ScaleAnimation---缩放动画
	/**
	 * 缩放变化的动画
	 * @param view
	 */
	public void scale(View view) {
		ScaleAnimation sa = new ScaleAnimation(0.1f, 2.0f, 0.1f, 2.0f, 
				Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f);
		sa.setDuration(2000);
		//重复次数
		sa.setRepeatCount(2);
		sa.setRepeatMode(Animation.REVERSE);
		sa.setFillAfter(true);//设置填充after的效果
		iv.startAnimation(sa);
	}
AnimationSet---动画合集
上面的动画都可以加入到动画合集中,然后启动动画合集,合集中的动画效果会一起显示
	/**
	 * 动画集合
	 * @param view
	 */
	public void set(View view){
		//动画插入器
		AnimationSet set = new AnimationSet(false);
		RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		//动画播放的时间
		ra.setDuration(2000);
				//重复次数
		ra.setRepeatCount(2);
		ra.setRepeatMode(Animation.REVERSE);
		TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.3f, Animation.RELATIVE_TO_PARENT, 0.3f, 
				Animation.RELATIVE_TO_PARENT, -0.3f, Animation.RELATIVE_TO_PARENT, 0.3f);
		ta.setDuration(2000);
		//重复次数
		ta.setRepeatCount(2);
		ta.setRepeatMode(Animation.REVERSE);
		ScaleAnimation sa = new ScaleAnimation(0.1f, 2.0f, 0.1f, 2.0f, 
				Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f);
		sa.setDuration(2000);
		//重复次数
		sa.setRepeatCount(2);
		sa.setRepeatMode(Animation.REVERSE);
		set.addAnimation(ra);
		set.addAnimation(sa);
		set.addAnimation(ta);
		iv.startAnimation(set);
	}



你可能感兴趣的:(android动画)