You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:19:54