Android Animation 使用XML完成所有动画
发布日期:2021-09-27 14:12:59 浏览次数:3 分类:技术文章

本文共 5852 字,大约阅读时间需要 19 分钟。

在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.xml
Fade 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

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/4206449.html

转载地址:https://blog.csdn.net/FLY_THINK2012/article/details/101841000 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android中的Animation 动画开发
下一篇:Android Animation学习笔记

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月14日 02时10分39秒