先上效果图(GIF显示效果比较卡,不过实际是很流畅的)
先上效果图(GIF显示效果比较卡,不过实际是很流畅的)
效果.gif
找到了两种实现办法
overridePendingTransition方法
在startActivity后加上这样一行代码
startActivity(new Intent(MainActivity.this , SelectWiFiActivity.class));
overridePendingTransition(R.anim.up_in, R.anim.up_out);
然后在跳转到的activity里重写finish方法
@Overridepublic void finish() { super.finish(); overridePendingTransition(R.anim.down_in, R.anim.down_out); }
overridePendingTransition的两个参数分别是新的activity进入的动画和当前activity退出的动画
2.自定义主题style
在style.xml文件夹内加入
<style name="AnimActivity" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> <item name="android:windowNoTitle">true</item></style><style name="AnimationActivity" parent="@android:style/Animation.Activity" > <item name="android:activityOpenEnterAnimation">@anim/up_in</item> <item name="android:activityOpenExitAnimation">@anim/up_out</item> <item name="android:activityCloseEnterAnimation">@anim/down_in</item> <item name="android:activityCloseExitAnimation">@anim/down_out</item></style>
A 启动 B 时,A 从屏幕上消失,这时执行的是A的android:activityOpenExitAnimation
A 启动 B 时,B 出现在屏幕上,这时执行的是B的android:activityOpenEnterAnimation
从 B 返回A时,B从屏幕上消失,这时执行的是B的android:activityCloseExitAnimation
从 B 返回A时,A 出现在屏幕上,这时执行的是A的android:activityCloseEnterAnimation
我的动画文件,供参考
up_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="800" />
</set>
up_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="-100%p" android:duration="800" />
</set>
down_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="800" />
</set>
down_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="800" />
</set>
至此,一声感叹,animation set居然还有如此之操作?hh
更多动画效果可以参考
Android Developer API文档 (需 科 学 上 网)
使用style主题既可以应用在AndroidManifest.xml下 application的android:theme里作为全局主题动画效果,也可以单独应用在activity内单独应用于某些activity
<application
android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/MyAppTheme">