AndroidManifest.xml配置
如果需要左右切换则就在相应的activity中使用Anim_Left_Right_ActivityTheme作为主题,相同如果需要上下切换则使用Anim_Top_Bottom_ActivityTheme动画主题
<!-- 左右切换样式 -->
<activity
android:name=".Activity1"
android:theme="@style/Anim_Left_Right_ActivityTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".Activity2"
android:theme="@style/Anim_Left_Right_ActivityTheme">
</activity>
<!-- 上下切换样式 -->
<!--<activity
android:name=".StartActivity"
android:screenOrientation="portrait"
android:theme="@style/Anim_Top_Bottom_ActivityTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".LoginActivity"
android:screenOrientation="portrait"
android:theme="@style/Anim_Top_Bottom_ActivityTheme">
</activity>-->
styles.xml配置。
这里主要是将包含的相应动画xml文件装配到一个动画集合里面,然后再将这个动画集合装配到Anim_Left_Right_ActivityTheme和Anim_Top_Bottom_ActivityTheme这样的动画主题里面,这样就可以再Androidmanifest中调用相应的动画主题了。这里简单解释一下代码中的具体方法:
- android:activityOpenEnterAnimation:例如我们当前在Activity1活动,想要切换到Activity2活动,则此时如果想规定Activity2的入场方式,就可以调用此方法
- android:activityOpenExitAnimation:例如我们当前在Activity1活动,想要切换到Activity2活动,则此时如果想规定Activity1的出场方式,就可以调用此方法
- android:activityCloseEnterAnimation:例如我们当前在Activity2活动,想要返回到Activity1活动,则此时如果想规定Activity1的入场方式,就可以调用此方法
- android:activityCloseExitAnimation:例如我们当前在Activity2活动,想要返回到Activity1活动,则此时如果想规定Activity2的出场方式,就可以调用此方法
<resources>
<style name="Anim_Left_Right_ActivityTheme">
<item name="android:windowAnimationStyle">@style/Left_Right_AnimTheme</item>
</style>
<style name="Anim_Top_Bottom_ActivityTheme">
<item name="android:windowAnimationStyle">@style/Top_Bottom_AnimTheme</item>
</style>
<!-- 左右切换动画 -->
<style name="Left_Right_AnimTheme" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/in_from_left</item>
<item name="android:activityOpenExitAnimation">@anim/out_from_right</item>
<item name="android:activityCloseEnterAnimation">@anim/in_from_right</item>
<item name="android:activityCloseExitAnimation">@anim/out_from_left</item>
</style>
<!-- 上下切换动画 -->
<style name="Top_Bottom_AnimTheme" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/in_from_bottom</item>
<item name="android:activityOpenExitAnimation">@anim/out_from_top</item>
<item name="android:activityCloseEnterAnimation">@anim/in_from_top</item>
<item name="android:activityCloseExitAnimation">@anim/out_from_bottom</item>
</style>
从上面的style.xml可以看出anim文件夹分别包含了左右切换的动画文件(in_from_left.xml、out_from_right.xml、in_from_right.xml、out_from_left.xml);上下切换的动画文件(in_from_bottom.xml、out_from_top.xml、in_from_top.xml、out_from_bottom.xml),八个动画xml文件。而代码中的fromXDelta、fromYDelta分别表示起始坐标的X、Y值,而toXDelta、toYDelta分别表示终点坐标的X、Y值。
anim中xml配置:
in_from_left.xml
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="-100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" >
</translate>
out_from_right.xml
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%p"
android:toYDelta="0" >
</translate>
in_from_right.xml
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" >
</translate>
out_from_left.xml
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-100%p"
android:toYDelta="0" >
</translate>
in_from_bottom
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="100%p"
android:toXDelta="0"
android:toYDelta="0" >
</translate>
out_from_top
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="-100%p" >
</translate>
in_from_top
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="-100%p"
android:toXDelta="0"
android:toYDelta="0" >
</translate>
out_from_bottom
<?xml version="1.0" encoding="UTF-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="100%p" >
</translate>