Android的补间动画

1、activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    
   <ImageView
        android:id="@+id/ivPic"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:src="@drawable/img_1" />

    <Button
        android:id="@+id/btnAlpha"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:onClick="alpha"
        android:text="淡入淡出" />

    <Button
        android:id="@+id/btnRotate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/btnAlpha"
        android:onClick="rotate"
        android:text="旋转" />

    <Button
        android:id="@+id/btnScale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/btnRotate"
        android:onClick="scale"
        android:text="缩放" />

    <Button
        android:id="@+id/btnTranslate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
		android:layout_toRightOf="@+id/btnScale"
		android:onClick="translate"
        android:text="平移" />

    <Button
        android:id="@+id/btnCombo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnAlpha"
        android:layout_toLeftOf="@+id/btnRotate"
        android:onClick="combo"
        android:text="组合动画" />

</RelativeLayout>

2、MainActivity.java

package com.t20.animationdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
/**
 * 补间动画(设置动画起点和终点,中间的动画自动生成),一共有4种:
 * 1).淡入淡出    调整透明度
 * 2).旋转    调整角度
 * 3).缩放    调整大小
 * 4).平移    调整位置
 * @author Administrator
 *
 */
public class MainActivity extends Activity {

	private ImageView ivPic;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//图片
		ivPic=(ImageView) findViewById(R.id.ivPic);
	}
	/**
	 * 淡入淡出
	 * @param v
	 */
	public void alpha(View v){
		//1、创建透明度动画
		AlphaAnimation alphaAni=new AlphaAnimation(0.2f, 1);
		//2、设置动画间隔时间
		alphaAni.setDuration(1000);//1秒内完成动画
		//3、设置动画结束 后,停止在哪个状态(false初始状态,true执行完以后的状态)
		alphaAni.setFillAfter(true);
		//4、设置动画重复的次数(-1或者Animation.INFINITE表示无限重复,0表示不重复,1表示重复一次)
		alphaAni.setRepeatCount(-1);
		//5、设置动画重复的模式(Animation.RESTART表示正常模式,每次都从头开始;Animation.REVERSE表示反转模式)
		alphaAni.setRepeatMode(Animation.REVERSE);
		//6、开始播放动画
		ivPic.setAnimation(alphaAni);
	}
	/**
	 * 旋转
	 * @param v
	 */
	public void rotate(View v){
		//1、创建旋转动画(Animation.RELATIVE_TO_SELF表示以自身为原点)
		RotateAnimation rotateAni=new RotateAnimation(0, 360,
				Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		//2、设置动画间隔时间
		rotateAni.setDuration(500);//0.5秒内完成动画
		//3、设置动画结束 后,停止在哪个状态(false初始状态,true执行完以后的状态)
		rotateAni.setFillAfter(true);
		//4、设置动画重复的次数(-1或者Animation.INFINITE表示无限重复,0表示不重复,1表示重复一次)
		rotateAni.setRepeatCount(-1);
		//5、设置动画重复的模式(Animation.RESTART表示正常模式,每次都从头开始;Animation.REVERSE表示反转模式)
		rotateAni.setRepeatMode(Animation.RESTART);
		//6、开始播放动画
		ivPic.setAnimation(rotateAni);
	}
	/**
	 * 缩放
	 * @param v
	 */
	public void scale(View v){
		//1、创建缩放动画(Animation.RELATIVE_TO_SELF表示以自身为原点)
		ScaleAnimation scaleAni=new ScaleAnimation(0.2f, 1, 0.2f, 1, 
				Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		//2、设置动画间隔时间
		scaleAni.setDuration(500);//0.5秒内完成动画
		//3、设置动画结束 后,停止在哪个状态(false初始状态,true执行完以后的状态)
		scaleAni.setFillAfter(true);
		//4、设置动画重复的次数(-1或者Animation.INFINITE表示无限重复,0表示不重复,1表示重复一次)
		scaleAni.setRepeatCount(-1);
		//5、设置动画重复的模式(Animation.RESTART表示正常模式,每次都从头开始;Animation.REVERSE表示反转模式)
		scaleAni.setRepeatMode(Animation.REVERSE);
		//6、开始播放动画
		ivPic.setAnimation(scaleAni);
	}
	/**
	 * 平移
	 * @param v
	 */
	public void translate(View v){
		//1、创建平移动画
		TranslateAnimation translateAni=new TranslateAnimation(
				Animation.RELATIVE_TO_PARENT, 0, 
				Animation.RELATIVE_TO_PARENT, 0,
				Animation.RELATIVE_TO_PARENT, 0,
				Animation.RELATIVE_TO_PARENT, 0.5f);
		//2、设置动画间隔时间
		translateAni.setDuration(500);//0.5秒内完成动画
		//3、设置动画结束 后,停止在哪个状态(false初始状态,true执行完以后的状态)
		translateAni.setFillAfter(true);
		//4、设置动画重复的次数(-1或者Animation.INFINITE表示无限重复,0表示不重复,1表示重复一次)
		translateAni.setRepeatCount(-1);
		//5、设置动画重复的模式(Animation.RESTART表示正常模式,每次都从头开始;Animation.REVERSE表示反转模式)
		translateAni.setRepeatMode(Animation.REVERSE);
		//6、开始播放动画
		ivPic.setAnimation(translateAni);
	}
	/**
	 * 组合动画(旋转+缩放)
	 * @param v
	 */
	public void combo(View v){
		//创建旋转动画
		RotateAnimation rotateAni=new RotateAnimation(0, 360,
						Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		rotateAni.setDuration(500);
		rotateAni.setRepeatCount(-1);
		rotateAni.setRepeatMode(Animation.RESTART);
		//创建缩放动画
		ScaleAnimation scaleAni=new ScaleAnimation(0.2f, 1, 0.2f, 1, 
						Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		scaleAni.setDuration(500);
		scaleAni.setRepeatCount(-1);
		scaleAni.setRepeatMode(Animation.REVERSE);				

		//动画集合
		AnimationSet as=new AnimationSet(false);
		as.addAnimation(rotateAni);
		as.addAnimation(scaleAni);
		ivPic.startAnimation(as);
	}

}

猜你喜欢

转载自blog.csdn.net/qq15577969/article/details/80648292