Android中自定义页面跳转动画,移除系统默认动画并保留自定义动画
解决方法:保留自定义退出动画,同时移除目标页面的系统默认动画
我明白你的问题了——用Intent.FLAG_ACTIVITY_NO_ANIMATION确实会一刀切禁用所有动画,包括你在RedirectorActivity里设置的自定义缩小动画。咱们换个精准控制的方式,就能同时满足两个需求:
1. 删掉Intent.FLAG_ACTIVITY_NO_ANIMATION
这个标记是罪魁祸首,它会直接禁用整个页面切换过程中的所有动画,所以先把它从代码里移除。
2. 用overridePendingTransition()精准控制动画
这个方法才是控制页面切换动画的正确打开方式,它能分别设置当前Activity的退出动画和目标Activity的进入动画。在RedirectorActivity的跳转逻辑里这么写:
Intent nextIntent = new Intent(getApplicationContext(), LoginActivity.class); startActivity(nextIntent); // 第一个参数:LoginActivity的进入动画,传0就会移除系统默认的卡片式动画 // 第二个参数:RedirectorActivity的退出动画,直接用你写好的reduce_image overridePendingTransition(0, R.anim.reduce_image); // 别忘了finish当前页面,不然Redirector会留在任务栈里,影响返回行为 finish();
3. 确认你的自定义动画配置没问题
确保reduce_image.xml是针对"退出"场景写的,比如从正常尺寸缩小到消失的逻辑,给你个参考配置:
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="500" android:fillAfter="true"/>
额外小提示
- 如果
SplashScreenActivity跳转到RedirectorActivity也需要自定义动画,同样用overridePendingTransition来控制就行 - 别在
LoginActivity的主题里设置强制的进入动画,不然会覆盖咱们这里传的0参数
这样操作后,RedirectorActivity退出时会正常播放你的自定义缩小动画,而LoginActivity启动时不会有系统默认的卡片动画,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Nebulino
相关产品推荐
相关产品推荐

