【移动端】Android Activity实现上下左右切换动画

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中调用相应的动画主题了。这里简单解释一下代码中的具体方法:

  1. android:activityOpenEnterAnimation:例如我们当前在Activity1活动,想要切换到Activity2活动,则此时如果想规定Activity2的入场方式,就可以调用此方法
  2. android:activityOpenExitAnimation:例如我们当前在Activity1活动,想要切换到Activity2活动,则此时如果想规定Activity1的出场方式,就可以调用此方法
  3. android:activityCloseEnterAnimation:例如我们当前在Activity2活动,想要返回到Activity1活动,则此时如果想规定Activity1的入场方式,就可以调用此方法
  4. 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>
好了今天的就分享到这里吧,我们下篇再见,如果有小伙伴有不同的看法,请记得AT我哦!如果觉得写的还不错,就点个赞吧!
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Space Chars

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值