Activity切换
默认动画是系统自带的,各个ROM不尽相同,就我而言是,flyme是新进入的一个从右至左飞到屏幕上,或从左至右飞出,很难说难看与否,但是某些时候,我还是想要以特定的方式飞入飞出,如网易云音乐安卓客户端闪屏页到主界面的过渡,就很棒。
说了这么多,到底应该如何自定义Activity切换动画。
为单个Activity设置
调用overridePendingTransition()
方法
overridePendingTransition(R.anim.activity_in,R.anim.activity_out);
为单个activity设置动画即可实现自定义的连贯的activity动画。
为所有activity设置
可以通过主题来指定activity切换动画
清单文件:
<activity
android:name=".ui.activity.SplashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme 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/winAnim</item>
</style>
<!--设置activity动画-->
<style name="winAnim" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_in</item>
<item name="android:activityOpenExitAnimation">@anim/activity_out</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_in</item>
<item name="android:activityCloseExitAnimation">@anim/activity_out</item>
</style>
这种方法可以实现对所有activity的默认切换效果更改,也可以只更改单个activity,这取决于更改了activity设置的theme还是整个application的theme。
配置文件的方式更加灵活,建议使用。