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