Android 动画详解(二)之animation组合使用

来源:互联网 发布:折扇起源知乎 编辑:程序博客网 时间:2024/06/08 08:40

“基本功不扎实,功力永远无法登峰造极”
本次上次介绍的是animation的基本使用,大家可以先看看Android 动画详解(一)之animation,经过上一篇的沉淀,相信大家已经对Android的animation的动画已经有一定的积累,本篇进说说animation相对高级一些的使用。

首先是动画的连续播放反两种方式:
1、Java代码监听:

// 先加载第一个动画的实例  Animation translate = AnimationUtils.loadAnimation(getActivity(),R.anim.translate_animation);  // 在加载第二个动画的实例  final Animation scale = AnimationUtils.loadAnimation(getActivity(),R.anim.scale_animation);  // 接下来,我们队第一个动画进行监听,当它播放完成后,我们播放第二个动画  translate.setAnimationListener(new Animation.AnimationListener() {       @Override       public void onAnimationStart(Animation animation) {        //动画开始时调用     }       @Override       public void onAnimationEnd(Animation animation) {           //动画完成时调用         imgView.startAnimation(scale);       }       @Override       public void onAnimationRepeat(Animation animation) {           //动画重复时调用     }  });  //开启第一个动画imgView.startAnimation(translate);  

老规矩,有Java的方式,当然少不了xml的方式

<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android"      android:fillAfter="true"      android:fillEnabled="true">      <alpha          android:fromAlpha="0"          android:toAlpha="1"          android:duration="3000"/>      <translate          android:duration="1000"          android:fromXDelta="0"          android:fromYDelta="0"          android:toXDelta="100"          android:toYDelta="100"          android:startOffset="3000"          />  </set>  

有没有发现,在中有startOffset属性,就是说,延时多少毫秒播放,在我们的xml文件中,startOffset的值于标签中的duration属性的值相同,也就是说,translate动画在alpha动画结束之后所显示。

在xml中设置以后,只要在Java文件中调用一下就好,

Animation continueAnim = AnimationUtils.loadAnimation(getActivity(),R.anim.continue_animation);  imgView.startAnimation(continueAnim);  

当然也可以同时播放,那就简单多了,监听延时啥的都去掉,你试试。

再说说动画的重复播放:

 final Animation translateAnimation=new TranslateAnimation(0,200,0,200);  translateAnimation.setDuration(3000);               //设置动画持续时间   translateAnimation.setRepeatCount(2);               //设置重复次数   translateAnimation.setRepeatMode(Animation.RESTART);    //重新从头执行   //translateAnimation.setRepeatMode(Animation.REVERSE);  //反方向执行   image.setAnimation(translateAnimation);             //设置动画效果   translateAnimation.startNow();  

在Android 的Java代码中,通过setRepeatCount属性设置动画重复多少次。

xml方式:

<translate      android:duration="1000"      android:fromXDelta="0"      android:fromYDelta="0"      android:toXDelta="100"      android:toYDelta="100"      android:repeatCount="5"      android:repeatMode="restart"      />  

一样,也是repeatCount属性来设置。

有的app的Activity也是带有动画效果的,来看看简单的实现

Intent intent = new Intent(getActivity(),SecondActivity.class);  startActivity(intent);  //通过overridePendingTransition方法来设置Activity进入和退出的动画,//第一个参数是要跳转的Activity进入是的动画效果//第二个参数是当前的Activity退出的动画效果overridePendingTransition(R.anim.fade_in,R.anim.hold_out);

就是这么简单。

finish();  当前Activity在finish的时候一样可以设置。overridePendingTransition(R.anim.fade_in,R.anim.hold_out); 

ok,本篇先到这里哦。关于动画的知识还是有不少的,下一篇还是动画相关。