• Activity切换动画。从右边滑入,关闭时从左边滑入


    直接贴代码吧

     

    1. 动画文件(两个动画文件配置到res/anim目录下)

    activity_anim_in_right.xml
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
    android:duration="500"
    android:fillAfter="true"
    android:fromXDelta="100%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="0" />
    </set>

    activity_anim_out_left.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
    android:duration="500"
    android:fillAfter="true"
    android:fromXDelta="0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="100%p" />
    </set>
    2.将两个资源文件配置到style文件中的
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <!-- 设置activity切换动画 -->
    <item name="android:windowAnimationStyle">@style/activityAnimation</item>

    <item name="android:windowIsTranslucent">true</item>
    </style>
    <style name="activityAnimation" parent="@android:style/Animation">
    <item name="android:activityOpenEnterAnimation">@anim/activity_anim_in_right</item>
    <item name="android:activityCloseExitAnimation">@anim/activity_anim_out_left</item>
    </style>

    3.配置的到Application的android:theme="@style/AppTheme"

    :系统动画 < AppTheme < (overridePendingTransitionActivityOptionsCompat))



    如果出现没有动画,或动画与设置不一致

    原因:当页面切换时需要进入和消失两个动画,当没有进入动画时,消失动画也不会执行,会执行系统动画,如果没有系统动画则没有动画,或者某个页面使用第一或第二种方式设置了动画(动画执行优先级,系统动画 < AppTheme < (overridePendingTransitionActivityOptionsCompat))。

    解决方法:为了保证进入和消失都有动画,要将动画主题设置到两个Activity上。也可以将主题设置到application上,这样整个应用都是用该切换动画。如果是某个页面使用第一或第二种方式设置了动画,那么在启动和退出时最好都要设置,不然会造成启动和退出不一致的情况。

    总结:

    第一种方式:灵活可以随意控进入消失动画,但是实现不方便。
    第二种方式:与第一种方式类似,但是该种方式为我们提供了多种特殊动画。
    第三种方式:使用方便,只需要配置主题,不需要添加过多代码,但是不够灵活

    建议:

    定义一种动画主题,并设置到application上,将整个应用的切换动画统一,如果某个页面有特殊要求,再根据不用需求使用第一或第二种类型单独处理。

    希望可以帮助到你,加油⛽️!


  • 相关阅读:
    Balder 3D开发系列之创建基本动画
    Expression Blend 的点滴(1)ListBox华丽大变身
    Balder 3D开发系列之创建天空盒
    Balder 3D开发系列之创建自己的primitives
    silverlight 中的应用程序库缓存
    Balder 3D开发系列之——sprite结合Camera旋转木马特效
    VisualTreeHelper不仅仅只是用来查看可视化树结构的
    Balder 3D开发系列之与Sprite初次相遇
    Balder 3D开发系列之给自定义基本体进行贴图操作
    【图解】通过Expression Blend快速制作具有物理效果的动画游戏
  • 原文地址:https://www.cnblogs.com/lenkevin/p/8204070.html
Copyright © 2020-2023  润新知