在Android应用程序,使用动画效果,能带给用户更好的感觉。做动画可以通过XML或Android代码。本教程中,介绍使用XML来做动画。在这里,介绍基本的动画,如淡入,淡出,旋转等。效果: http://www.56.com/u82/v_OTM4MDk5MTk.html第一步: 创建anim文件夹放置动画xml文件在res文件夹下,创建一个anim的子文件夹。 第二步: 加载动画接着在Activity创建一个Animation类,然后使用AnimationUtils类加载动画xmlAnimation animFadein; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fadein); txtMessage = (TextView) findViewById(R.id.txtMessage);btnStart = (Button) findViewById(R.id.btnStart); // 加载动画animFadein = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fade_in); } 第三步: 设置动画监听器如果你要监听动画的事件,如开始,结束等,你需要实现AnimationListener监听器,重写以下方法。onAnimationEnd(Animation animation) - 当动画结束时调用onAnimationRepeat(Animation animation) - 当动画重复时调用onAniamtionStart(Animation animation) - 当动画启动时调用@Overridepublic void onAnimationEnd(Animation animation) {// 在动画结束后使用 // check for fade in animationif (animation == animFadein) {Toast.makeText(getApplicationContext(), "Animation Stopped",Toast.LENGTH_SHORT).show();} } @Overridepublic void onAnimationRepeat(Animation animation) {//当动画重复时使用 } @Overridepublic void onAnimationStart(Animation animation) {//当动画开始使用 } 最后一步: 让动画动起来啦。可以使用任何UI元素调用startAnimation方法。以下是一个Textview元素调用的。txtMessage.startAnimation(animFadein); 完整代码: FadeInActivity(淡入动画)package com.chaowen.androidanimations; import info.androidhive.androidanimations.R;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.view.animation.Animation.AnimationListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast; /** * * @author chaowen * */public class FadeInActivity extends Activity implements AnimationListener { TextView txtMessage; Button btnStart; Animation animFadein; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fadein); txtMessage = (TextView) findViewById(R.id.txtMessage); btnStart = (Button) findViewById(R.id.btnStart); // 加载动画 animFadein = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in); // 设置监听 animFadein.setAnimationListener(this); // 按钮 btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { txtMessage.setVisibility(View.VISIBLE); // 开始动画 txtMessage.startAnimation(animFadein); } }); } @Override public void onAnimationEnd(Animation animation) { // 在动画结束后使用 // check for fade in animation if (animation == animFadein) { Toast.makeText(getApplicationContext(), "Animation Stopped", Toast.LENGTH_SHORT).show(); } } @Override public void onAnimationRepeat(Animation animation) { //当动画重复时使用 } @Override public void onAnimationStart(Animation animation) { //当动画开始使用 } } 一些重要的XML属性重要的XML动画属性android:duration 动画持续时间,时间以毫秒为单位android:startOffset 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画android:interpolator 指定一个动画的插入器android:fillAfter 当设置为true ,该动画转化在动画结束后被应用android:repeatMode 定义重复的行为android:repeatCount 动画的重复次数 以下是一些基本的动画XML.Fade In: 淡入 alpha是渐变透明度效果,值由0到1fade_in.xmlFade Out : 淡出 以Fade In刚好相反,值由1到0.fade_out.xml Cross Fading: 交叉的淡入和淡出 同时使用Fade in和Fade out可以达到交叉的效果public class CrossfadeActivity extends Activity implements AnimationListener { TextView txtMessage1, txtMessage2; Button btnStart; Animation animFadeIn, animFadeOut; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_crossfade); txtMessage1 = (TextView) findViewById(R.id.txtMessage1); txtMessage2 = (TextView) findViewById(R.id.txtMessage2); btnStart = (Button) findViewById(R.id.btnStart); // load animations animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in); animFadeOut = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_out); // set animation listeners animFadeIn.setAnimationListener(this); animFadeOut.setAnimationListener(this); // button click event btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { txtMessage2.setVisibility(View.VISIBLE); txtMessage2.startAnimation(animFadeIn); txtMessage1.startAnimation(animFadeOut); } }); } @Override public void onAnimationEnd(Animation animation) { if (animation == animFadeOut) { txtMessage1.setVisibility(View.GONE); } if(animation == animFadeIn){ txtMessage2.setVisibility(View.VISIBLE); } } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } }BLink: 若隐若现,酷blink.xml Zoom In : 放大zoom_in.xml Zoom Out: 缩小zoom_out.xml Rotate: 旋转rotate.xml 还有几个就不再列出,有兴趣下源码看。
原文:http://www.cnblogs.com/andgoo/p/3182916.html