当前位置:  编程技术>移动开发

Android 使用XML做动画UI的深入解析

    来源: 互联网  发布时间:2014-10-20

    本文导语:  效果: http://www.56.com/u82/v_OTM4MDk5MTk.html第一步: 创建anim文件夹放置动画xml文件在res文件夹下,创建一个anim的子文件夹。          第二步: 加载动画接着在Activity创建一个Animation类,然后使用AnimationUtils类加载动画xml 代码如下:Ani...

效果: http://www.56.com/u82/v_OTM4MDk5MTk.html
第一步: 创建anim文件夹放置动画xml文件
在res文件夹下,创建一个anim的子文件夹。

         

第二步: 加载动画
接着在Activity创建一个Animation类,然后使用AnimationUtils类加载动画xml

代码如下:

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



第三步: 设置动画监听器
如果你要监听动画的事件,如开始,结束等,你需要实现AnimationListener监听器,重写以下方法。
onAnimationEnd(Animation animation) - 当动画结束时调用
onAnimationRepeat(Animation animation) - 当动画重复时调用
onAniamtionStart(Animation animation) - 当动画启动时调用
代码如下:

@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) {
//当动画开始使用

}

最后一步: 让动画动起来啦。可以使用任何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到1
fade_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
代码如下:

 

   



还有几个就不再列出,有兴趣下源码看。点击下载

    
 
 

您可能感兴趣的文章:

  • 解析ADT-20问题 android support library
  • android layout XML解析错误的解决方法
  • Android入门之TableLayout应用解析(一)
  • 解析:android 如何从JPEG生成BufferedImage
  • 基于Android XML解析与保存的实现
  • 基于android中读取assets目录下a.txt文件并进行解析的深入分析
  • 解析Android应用启动后自动创建桌面快捷方式的实现方法
  • Android入门之TableLayout应用解析(二)
  • 解析Android中string-array数据源的简单使用
  • 解析android创建快捷方式会启动两个应用的问题
  • 解析离线安装Eclipse的Android ADT开发插件的具体操作(图文)
  • 解析后台进程对Android性能影响的详解
  • 解析Android横竖屏切换的问题
  • 解析android中的帮助、about、关于作者、HELP等提示页面
  • Android中asset文件夹与raw文件夹的区别深入解析
  • 解析Android应用程序运行机制
  • android4.0与2.3版本的TP代码区别解析
  • 解析Android中webview和js之间的交互
  • Android中Parcelable的作用实例解析
  • 解析Android开发优化之:对界面UI的优化详解(二)
  • 深入android Unable to resolve target 'android-XX'详解
  • 深入Android开发FAQ的详解
  • Android 自动化测试经验分享 深入UiScrollable
  • Android开发之文件操作模式深入理解
  • Android Mms之:深入理解对话列表管理
  • android生命周期深入分析(一)
  • 深入Android SQLite 事务处理详解
  • ubuntu 12.10 上 android 编译环境搭建的深入解析
  • 深入Android Browser配置管理的详解
  • 深入Android MediaPlayer的使用方法详解
  • Android中使用PULL方式解析XML文件深入介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • android 简单图片动画播放的实例代码
  • Android实现Flip翻转动画效果
  • Android 动画之AlphaAnimation应用详解
  • Android 动画之TranslateAnimation应用详解
  • Android 动画之RotateAnimation应用详解
  • Android 动画之ScaleAnimation应用详解
  • Android显示GIF动画 GifView
  • Android开发之图形图像与动画(一)Paint和Canvas类学习
  • Android实现Activity界面切换添加动画特效的方法
  • Android开发之图形图像与动画(五)LayoutAnimationController详解
  • Android 四种动画效果的调用实现代码
  • Android开发之图形图像与动画(四)AnimationListener简介
  • Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍
  • Android开场动画类完整实现代码
  • Android图片翻转动画简易实现代码
  • Android动画之3D翻转效果实现函数分析
  • Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转
  • Android开发之图形图像与动画(三)Animation效果的XML实现
  • Android 3D旋转动画效果实现分解
  • Android系统联系人全特效实现(上)分组导航和挤压动画(附源码)
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3