Activity之间的动画切换

Activity在启动另外一个Activity时之间是可以加入效果的:

使用代码:

 Intent intent = new Intent(MainActivity.this , Activity02.class);
               startActivity(intent);
               <strong><span style="font-size:18px;">overridePendingTransition(R.anim.default_rotate_in, R.anim.default_rotate_out);</span></strong>

default_rotate_in的动画是<span style="font-family: Arial, Helvetica, sans-serif;">Activity02进来的动画,</span><span style="font-family: Arial, Helvetica, sans-serif;">default_rotate_out是mainActivity的动画,这是对基本的使用。</span>
<span style="font-family: Arial, Helvetica, sans-serif;">使用这种方法是可以实现一个到另一个Activity</span><span style="font-family: Arial, Helvetica, sans-serif;">之间的跳转,如果每一个跳转都要加入这行代码有些繁琐</span><span style="font-family: Arial, Helvetica, sans-serif;">!</span>

现在使用一个应用程序都使用同一个Activity之间跳转的效果(也可以使用

<strong><span style="font-size:18px;">overridePendingTransition 来指定某个Activity跳转效果</span></strong><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">)</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">使用方法如下:</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">         1.<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        <strong>android:theme="@style/AppTheme</strong>" ></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">其中AppTheme中加入一个属性</span></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);"> <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
       <strong> <item  name="@android:windowAnimationStyle">@style/activityThemme</item></strong>
    </style>
</span></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">其中:</span></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">       <style name="activityThemme" >
    </span></span><ol style="padding: 0px; margin: 10px 20px; line-height: 22.5px; color: rgb(51, 51, 51); font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px;"><li style="padding: 0px; margin: 0px;"><p style="padding-top: 0px; padding-bottom: 0px; margin-top: 8px; margin-bottom: 8px; letter-spacing: 0.5px; font-size: 12.5px;"><span style="padding: 0px; margin: 0px; color: black;"><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong><</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span> <span style="padding: 0px; margin: 0px; color: red;">name</span>=<span style="padding: 0px; margin: 0px; color: blue;">"android:activityOpenEnterAnimation"</span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>@anim/activity_open_in_anim<span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong></</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>  </span></p></li><li style="padding: 0px; margin: 0px;"><p style="padding-top: 0px; padding-bottom: 0px; margin-top: 8px; margin-bottom: 8px; letter-spacing: 0.5px; font-size: 12.5px;"><span style="padding: 0px; margin: 0px; color: black;">    <span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong><</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span> <span style="padding: 0px; margin: 0px; color: red;">name</span>=<span style="padding: 0px; margin: 0px; color: blue;">"android:activityOpenExitAnimation"</span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>@anim/activity_open_out_anim<span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong></</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>  </span></p></li><li style="padding: 0px; margin: 0px;"><p style="padding-top: 0px; padding-bottom: 0px; margin-top: 8px; margin-bottom: 8px; letter-spacing: 0.5px; font-size: 12.5px;"><span style="padding: 0px; margin: 0px; color: black;">    <span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong><</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span> <span style="padding: 0px; margin: 0px; color: red;">name</span>=<span style="padding: 0px; margin: 0px; color: blue;">"android:activityCloseEnterAnimation"</span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>@anim/activity_close_in_anim<span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong></</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>  </span></p></li><li style="padding: 0px; margin: 0px;"><p style="padding-top: 0px; padding-bottom: 0px; margin-top: 8px; margin-bottom: 8px; letter-spacing: 0.5px; font-size: 12.5px;"><span style="padding: 0px; margin: 0px; color: black;">    <span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong><</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span> <span style="padding: 0px; margin: 0px; color: red;">name</span>=<span style="padding: 0px; margin: 0px; color: blue;">"android:activityCloseExitAnimation"</span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>@anim/activity_close_out_anim<span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong></</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>  </span></p></li></ol>
    </style>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">只要加入这些属性就可以实现所有的Activity的跳转效果一样(除非</span></span><pre name="code" class="java"><strong><span style="font-size: 18px;">overridePendingTransition 来指定某个Activity跳转效果</span></strong><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">)</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java"><span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);"></span></span>

现在假设有两个Activity, A 和 B。 在A中可以启动B. 同时,A,B的theme属性均设置为上面定义的属性。那么,以上动画的发生时机如下:

(1)当A启动B时,A退出,B进入,A退出时的动画名称为android:activityOpenExitAnimation,动画文件为

R.anim.activity_open_out_anim. B进入时的动画名称为android:activityOpenEnterAnimation, 动画文件为R.anim.activity_open_in_anim.

(2)当B结束时,B退出,A进入。B退出的动画名称为android:activityCloseExitAnimation, 动画文件为R.anim.activity_close_out_anim. A进入时的动画名称为android:activityCloseEnterAnimation, 动画文件为R.anim.activity_close_in_anim. 

 

可以理解为前面一组

  1. <item name="android:activityOpenEnterAnimation">@anim/activity_open_in_anim</item>  

  2.     <item name="android:activityOpenExitAnimation">@anim/activity_open_out_anim</item>  

<pre name="code" class="java"><pre name="code" class="java"><span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);"></span></span>

 
是打开一个新ACTIVITY时使用的
后面一组
<ol style="white-space: pre; padding: 0px; margin: 10px 20px; line-height: 22.5px; color: rgb(51, 51, 51); font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px;"><li style="padding: 0px; margin: 0px;"><p style="margin-top: 8px; margin-bottom: 8px; padding-top: 0px; padding-bottom: 0px; letter-spacing: 0.5px; font-size: 12.5px;"><span style="padding: 0px; margin: 0px; color: black;"> <span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong><</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span> <span style="padding: 0px; margin: 0px; color: red;">name</span>=<span style="padding: 0px; margin: 0px; color: blue;">"android:activityCloseEnterAnimation"</span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>@anim/activity_close_in_anim<span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong></</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>  </span></p></li><li style="padding: 0px; margin: 0px;"><p style="margin-top: 8px; margin-bottom: 8px; padding-top: 0px; padding-bottom: 0px; letter-spacing: 0.5px; font-size: 12.5px;"><span style="padding: 0px; margin: 0px; color: black;">    <span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong><</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span> <span style="padding: 0px; margin: 0px; color: red;">name</span>=<span style="padding: 0px; margin: 0px; color: blue;">"android:activityCloseExitAnimation"</span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>@anim/activity_close_out_anim<span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong></</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>item</strong></span><span style="padding: 0px; margin: 0px; color: rgb(0, 102, 153); "><strong>></strong></span>  </span></p></li></ol>
是按Back键 finish()一个ACTIVITY时使用的
 现在看一个完整的例子: 
 
描述: MainActivity  --------------->   Activity02----------------->Activity03   --------------- 》Activity02 --------------------->Mativity03
                      右进左出                          右进左出              按Back    右出左进                右出左进
代码:<pre name="code" class="java"><application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.testchangeactivity.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.testchangeactivity.Activity03"
            >
            
        </activity>
        <activity android:name="com.example.testchangeactivity.Activity02"
           ></activity>
    </application>


 <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item  name="@android:windowAnimationStyle">@style/activityThemme</item>
    </style>

    <style name="activityThemme" >
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
       <item name="@android:activityOpenEnterAnimation">@anim/default_fromright_in</item>
      <item name="@android:activityOpenExitAnimation">@anim/default_toleft_out</item>
      <item name="@android:activityCloseEnterAnimation">@anim/default_fromleft_in</item>
      <item name="@android:activityCloseExitAnimation">@anim/default_toright_out</item>
    </style>

XMl文件 default_fromleft_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="10000"
        android:fillAfter="true"
        android:fromXDelta="-100%p"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0" />

</set>
default_fromright_in.xml
 
 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="10000"
        android:fillAfter="true"
        android:fromXDelta="100%p"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0" />
    


</set>
default_toleft_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="10000"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="-100%p"
        android:toYDelta="0" />

</set>
default_toright_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="10000"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="100%p"
        android:toYDelta="0" />

</set>
只使用了一种动画  translate   各种效果就得看个人的想象力

也可以使用  scale   rotate  alpha translate的组合,那么效果就更好了



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值