在Activity的Theme里设置关闭动画不生效的问题

在Android中,当Activity被一个singleTask模式的Activity顶出栈时,设置的关闭动画可能不生效。通过分析AOSP源码发现,关闭动画实际上是留在屏幕上的Activity规定的。解决方法是在onPause()中检测isFinishing状态并使用overridePendingTransition()手动设置动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到一个需求,当前Activity被栈下面一个singleTask的Activity顶出栈时,设置的关闭动画(android:activityCloseExitAnimation)不生效,类似于下面这样设置的:

    <style name="BAnimation" parent="android:Animation.Activity">
        <item name="android:activityCloseExitAnimation">@null</item>
    </style>

    <style name="BActivity" parent="Theme.AppCompat">
        <item name="android:windowAnimationStyle">@style/BAnimation</item>
    </style>

然后把Activity的Theme设置为 android:theme="@style/BActivity" ,关闭或返回的时候没有生效。

手上正好有台Google手机,就编译了一套打印WindowManager日志的系统,来查看原因(以下基于Android8.1,最新的10的代码有些变更)。

动画是在AppTransition.java加载的,记住行号,1613:

https://cs.android.com/android/platform/superproject/+/android-8.1.0_r1:framewo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值