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>以上代码就实现了动画。这些动画可以叠加,大家可以百度一下。