欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-03 10:35:39
...

“基本功不扎实,功力永远无法登峰造极”
本次上次介绍的是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,本篇先到这里哦。关于动画的知识还是有不少的,下一篇还是动画相关。

相关标签: android 动画