Activity之间的动画切换

来源:互联网 发布:单例模式php例子 编辑:程序博客网 时间:2024/05/15 08:00

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 0
原创粉丝点击