zoukankan      html  css  js  c++  java
  • Acitivity进入退出动画效果的两种实现

    以前做项目的时候一直没有注意过activity切换动画的问题,一方面因为没有人要求,一方面因为自己还没能静下心来好好学习。现在把这个问题弄清楚了,拿出来分享下。自己也做个总结。

            我这里说的两种实现一种是通过调用overridePendingTransition方式指定将要打开的activity的动画和当前activity的退出动画;另一种是我昨天在做dialog进入退出时提出的想法,通过style来指定某个activity的进入退出的动画效果。

    先说第一种实现方式:

    overridePendingTransition方法的作用就是指定将要打开的Activity的动画和当前Activity的退出动画

    谷歌官网上说,该方法应该在调用startActivity()或者finish()之后立即调用

    overridePendingTransition方法的第一个参数enterAnim是指进入Activity的动画,第二个参数exitAnim是指当前Activity的退出动画,比如说我代码这么写:

    [java] view plaincopy
     
    1. Intent i = new Intent(MainActivity.this, MainActivity2.class);  
    2. startActivity(i);  
    3. overridePendingTransition(R.anim.enter, R.anim.exit);  

    我的MainActivity会执行R.anim.exit动画,被打开的MainActivity2会执行R.anim.enter动画。

    finish的时候调用:

    [java] view plaincopy
     
    1. this.finish();  
    2. overridePendingTransition(R.anim.enter, R.anim.exit);  

    我是在刚刚打开的MainActivity2里面执行的这段代码,所以MainAcivity2会执行R.anim.exit动画,而MainActivity将重新获得焦点显示出来,将执行R.anim.enter动画。

    因为以前对overridePendingTransition实现进入退出动画一直处于混乱状态,所以第一种方法啰嗦的多了点。

    R.anim.enter(从左侧进入)

    [html] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.     <translate  
    4.         android:duration="2000"  
    5.         android:fromXDelta="-100%p"  
    6.         android:toXDelta="0%p" />  
    7. </set>  


    R.anim.exit(从右侧退出)

    [html] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.     <translate  
    4.         android:duration="2000"  
    5.         android:fromXDelta="0%p"  
    6.         android:toXDelta="100%p" />  
    7. </set>  

    第二中发法实现Activity动画效果主要是通过style进行指定。

    可以写一个如下的style

    [html] view plaincopy
     
    1. <style name="mystyle" parent="android:Animation">  
    2.      <item name="@android:windowEnterAnimation">@anim/enter</item>  
    3.      <item name="@android:windowExitAnimation">@anim/exit</item>  
    4. </style>  

    然后通过window.setWindowAnimations方法指定给当前的Activity,这样,当这个Activity进入退出的时候就会分别执行windowEnterAnimation和windowExitAnimation Item指定的anim了。具体的enter和exit动画和上面的一样。

    设置代码和设置dialog进入退出一样:

    [java] view plaincopy
     
    1. getWindow().setWindowAnimations(R.style.mystyle);  

    另外还可以通过在配置文件中通过给Ativity指定thame来将动画效果设置给Activity

    代码如下:

    [html] view plaincopy
     
    1. <style name="AppTheme" parent="AppBaseTheme">  
    2.     <item name="android:windowAnimationStyle">@style/mystyle</item>  
    3. </style>  
    4. <style name="mystyle" parent="android:Animation">  
    5. <item name="@android:windowEnterAnimation">@anim/enter</item>  
    6.     <item name="@android:windowExitAnimation">@anim/exit</item>  
    7. </style>  
    8.   
    9. //配置文件中这么写的  
    10. <activity  
    11.     android:name="com.example.activityanimdemo.MainActivity2"  
    12.     android:theme="@style/AppTheme" >  
    13. </activity>  

    除了可以通过windowEnterAnimation和windowExitAnimation Item指定进入退出动画效果,还可以通过以下Item来指定

    [html] view plaincopy
     
    1. <item name="android:activityOpenEnterAnimation"></item>  
    2. <item name="android:activityOpenExitAnimation"></item>  
    3. <item name="android:activityCloseEnterAnimation"></item>  
    4. <item name="android:activityCloseExitAnimation"></item>  


    另外,我试了下这同时用overridePendingTransition指定Activity的动画和用style指定Activity的动画,发现他们指定的动画会同时执行。

    原文:http://blog.csdn.net/fcx520/article/details/13997275

  • 相关阅读:
    超酷幽默搞笑的摄影作品
    免费素材:超棒的PSD格式UI套件 Soft UI KIT
    【简报】使用3D过渡效果的图片幻灯:Adaptor
    一个超棒的CSS属性排序工具 CSScomb
    GBin1专题之Web热点#5
    一个超棒的消息提示jQuery插件 Noty
    分享12个超棒的免费PSD格式UI套件
    分享11个超棒的移动应用(mobile apps)开发解决方案
    超棒的仪表盘javascript类库 justGage
    为什么使用Dojo toolkit的十大原因
  • 原文地址:https://www.cnblogs.com/veins/p/3730667.html
Copyright © 2011-2022 走看看