Android Activity界面切换动画

最近做项目,发现Activity界面切换跳转时,切换动画不一致,有的左进右退,有的右进左退,有的左进左退,有的右进右退,视觉交互效果不是很好,通过查资料,采用以下方法可以解决。

主要是通过AppTheme,直接在主题中修改activity动画样式,具体如下:

1.定义包含动画的Activity主题

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@android:color/transparent</item>
        <item name="colorAccent">@color/Black</item>
        <!-- 设置没有标题 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 设置activity切换动画 -->
        <item name="android:windowAnimationStyle">@style/activityAnimation</item>
    </style>

2.定义切换动画style

<!-- animation 样式 -->
    <style name="activityAnimation" parent="@android:style/Animation">
        <item name="android:activityOpenEnterAnimation">@anim/right_in</item>
        <item name="android:activityOpenExitAnimation">@anim/right_in</item>
        <item name="android:activityCloseEnterAnimation">@anim/right_in</item>
        <item name="android:activityCloseExitAnimation">@anim/right_in</item>
    </style>

其中:

        android:activityOpenEnterAnimation:要启动的Activity的入场动画
        android:activityCloseExitAnimation:要结束的Activity的出场动画
        android:activityOpenExitAnimation:当前Activity结束的动画
        android:activityCloseEnterAnimation:栈顶Activity的入场动画

3.在res/anim中具体定义4个动画

right_in.xml:从屏幕右侧移动到屏幕中心

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromXDelta="100.0%p"
        android:toXDelta="0.0" />
</set>

right_out.xml:从屏幕中心移动到屏幕的右侧

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromXDelta="0.0"
        android:toXDelta="100.0%p" />
</set>

left_in.xml:从屏幕左侧移动到屏幕中心

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromXDelta="-30.0%p"
        android:toXDelta="0.0" />
</set>

left_out.xml:从屏幕中心移动到屏幕左侧

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromXDelta="0.0"
        android:toXDelta="-30.0%p" />
</set>

4.当通过以上方式设置完后,如果发现没有生效,有可能是AppTheme中配置了

<item name="windowIsTranslucente">true</item>

去掉该属性设置即可。

猜你喜欢

转载自blog.csdn.net/u014611408/article/details/85104104