overridePendingTransition 已弃用,我该怎么办?

overridePendingTransition is deprecated, how do i do?

提问人:Jonas Charrier 提问时间:11/5/2023 最后编辑:EemanJonas Charrier 更新时间:11/6/2023 访问量:374

问:

当我完成一个子活动或当主要活动恢复时,有一个动画正在播放,我不确定哪个事件触发了它,但我想替换它。我的目标是 api 级别 34,最低级别为 28。

我目前正在使用

val intent = Intent(this, SettingsActivity::class.java)
val anim = ActivityOptions.makeCustomAnimation(
     applicationContext,
     R.anim.right_slide_in, R.anim.none
).toBundle()
startActivity(intent, anim)

我想播放一个开始活动的动画,但当我尝试恢复父活动或完成子活动时,这没有帮助(同样,idk,以防动画发生)

ChatGPT 给了我一些在 rootView 上使用 startAnimation 的“解决方案”,但什么也没发生(而且它也不理解 deprecated 这个词,所以它不可能自行纠正)

Android Kotlin 已弃用

评论


答:

3赞 ismail alaoui 11/6/2023 #1

从 API 34 开始,你必须使用 overrideActivityTransition,这里是如何使用它的官方文档

评论

0赞 Krahmal 11/6/2023
“调用需要 API 级别 34(当前最小值为 28)”。如果我只想修复,我该怎么办?overridePendingTransition(0, 0)
1赞 Jonas Charrier 11/7/2023
@Krahmal检查该值,如果其 34 使用 else 使用Build.VERSION.SDK_INToverrideActivityTransitionoverridePendingTransition
1赞 Owais Yosuf 11/6/2023 #2

该方法在 API 级别 34 中确实已弃用,建议使用新的动画 API 进行活动转换。您可以使用新方法实现相同的动画效果。若要执行自定义活动转换以启动、恢复父活动或完成子活动,可以使用该类。overridePendingTransitionActivityOptions

以下示例演示了如何实现自定义活动转换以启动活动:

val intent = Intent(this, SettingsActivity::class.java)
val animationBundle = ActivityOptions.makeCustomAnimation(
    this,
    R.anim.right_slide_in,  // Enter animation
    R.anim.none  // Exit animation
).toBundle()
startActivity(intent, animationBundle)

评论

0赞 Jonas Charrier 11/7/2023
是的,但是如果我想通过自定义过渡来完成它怎么办,你能给我举个例子吗?