Activity间的切换动画

Android 2016-03-22

最近看material design设计,可惜的谷歌官方提供的Activity Transition仅支持API21及以上,这就意味着大部分的低版本的手机就不发使用这个api了,那么我们要怎么解决这个问题呢?接下来本文将主要介绍,如何在开启activity和关闭activity时添加动画效果,不会太突兀的一下子切换到另一个activity,也显得比较平滑。喜欢的朋友可以参考一下。

其实呢?在Android2.0开始在Activity增加了一个方法:

public void overridePendingTransition (int enterAnim, int exitAnim)

其中: enterAnim 定义Activity进入屏幕时的动画 exitAnim 定义Activity退出屏幕时的动画 注意:

  • overridePendingTransition 方法必须在startActivity()或者 finish()方法的后面。
  • 在startActivity()后面添加效果,就是开启的时候效果。
  • 在finish()方法的后面后面添加效果,就是在用户按返回键的时候的效果。

起步

在res目录下创建anim文件夹,然后在目录创建动画xml文件:out_to_left.xml (从左边退出动画) 、in_from_right.xml(从右边进入动画) out_to_left.xml

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

in_from_right.xml

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

在activiy中使用

tvRegister.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setClass(LoginActivity.this,RegisterActivity.class);
                startActivity(intent);
                overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
            }
        });

在finish()方法中添加也是同上。

全局动画配置

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/mainColor</item>
        <item name="colorPrimaryDark">@color/mainColor</item>
        <item name="colorAccent">@color/mainColor</item>
        <item name="colorControlActivated">@color/mainColor</item>
        <item name="android:windowAnimationStyle">@style/activityAnimation</item>
    </style>
    <!--全局动画配置-->
    <style name="activityAnimation" parent="@android:style/Animation">
        <item name="android:activityOpenEnterAnimation">@anim/in_from_right</item>
        <item name="android:activityOpenExitAnimation">@anim/out_to_left</item>
        <item name="android:activityCloseEnterAnimation">@anim/in_from_left</item>
        <item name="android:activityCloseExitAnimation">@anim/out_to_right</item>
    </style>
</resources>

补间动画参考文档


本文由 zhanghuayan 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!