实现Activity界面切换动画

    xiaoxiao2021-03-25  108

    IOS页面切换动画,系统默认实现了,push从右到左滑入,pop从左到右划出。

    安卓呢,需要手动去实现,实现的方式有两种:一种是通过代码实现,另一种是通过Theme实现。两种实现方式最好都会用到anim里的动画配置文件。

    先说第一种:

    Intent intent=new Intent(this,SecondActivity.class);

    startActivity(intent);

    overridePendingTransition(R.anim.enter_anim,R.anim.exit_anim);

    代码实现的话就是在startActivity后面加上overridePendingTransition函数来实现。overridePendingTransition的第

    一个参数代码第二个新页面进入的动画,第二个参数代码,第一个界面将要失去的动画,同理pop一个界面是在finish函数后面紧跟

    overridePendingTransition这个函数,第一个参数就代表第一个界面将要显示的动画,第二个参数代表第二个界面将要离开时候的动画。

    再说说第二种实现方式,其实也很简单:

    在AndroidManifest.xml里的application或者activity里增加主题Theme,这个主题里包含动画的方式。在application增加动画主题的话,

    将会app里的每一个activity都采用这种动画,如果同时activity也增加了动画的主题,将覆盖掉application的动画样式。也可以单独在activity

    里增加主题实现动画;如:

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.Normal"> <activity android:name=".ui.activity.SplashActivity" android:theme="@style/Theme.Splash"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

    其中android:theme=“@style/Theme.Normal”里实现了动画,后面我给大家贴出代码;其中SplashAcitivity我不想用统一的动画,

    所以单独设置

    android:theme="@style/Theme.Splash"

    在styles里增加

    <style name="Theme.Normal" parent="Theme.AppCompat.DayNight.NoActionBar"> <item name="android:windowAnimationStyle">@style/default_animation</item> </style> 其中, @style/default_animation

    <style name="default_animation" mce_bogus="1" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item> <item name="android:activityOpenExitAnimation">@anim/hold</item> <item name="android:activityCloseEnterAnimation">@anim/hold</item> <item name="android:activityCloseExitAnimation">@anim/pop_left_out</item> </style>

    在anim里创建push_left_in.xml文件

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300" /> </set> 其他几个文件hold.xml;pop_left_out.xml文件

    如下:

    <translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromXDelta="0" android:toXDelta="0" android:duration="300" />

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="300" android:fromXDelta="0" android:toXDelta="100%p" /> </set> 以上代码就实现了动画。这些动画可以叠加,大家可以百度一下。

    转载请注明原文地址: https://ju.6miu.com/read-13971.html

    最新回复(0)