gpt4 book ai didi

android - 恢复应用程序时如何禁用DialogFragment过渡动画?

转载 作者:行者123 更新时间:2023-12-05 00:15:55 67 4
gpt4 key购买 nike

我有以下逻辑,为我的 DialogFragment 设置自定义动画,以从 Kotlin 的右侧屏幕滑入和滑出。

dialog?.window?.attributes?.windowAnimations = R.style.dialog_style
一切都很棒,但是当我转到手机的主屏幕并将我的应用程序有效地放置在后台时,然后当我把它带回来时,我看到动画也激活了。
有没有办法在我从后台重新打开应用程序时暂时禁用动画,然后在 DialogFragment 加载时恢复动画。
在我看来,当我重新打开应用程序时看到 DialogFragment 过渡看起来很奇怪,没有动画时看起来更好(默认样式)
我希望自定义动画仅在我在应用程序中的 fragment 之间导航时应用,但在 fragment 从背景状态恢复(暂停?)时不应用动画。

最佳答案

我用了savedInstanceState检查应用程序是否正在重新打开并设置windowEnterAnimation为空。这是我的解决方案。
首先,创建两种样式。

<style name="Animation.MyApp.CustomDialogFragment">
<item name="android:windowEnterAnimation">@anim/slide_in</item>
<item name="android:windowExitAnimation">@anim/slide_out</item>
</style>

<style name="Animation.MyApp.CustomDialogFragment.Restore">
<item name="android:windowEnterAnimation">@null</item>
</style>
然后,覆盖 onCreateDialog()来自 DialogFragment。
open class CustomDialogFragment : DialogFragment() {

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = super.onCreateDialog(savedInstanceState)

if (savedInstanceState == null) {
dialog.window?.setWindowAnimations(
R.style.Animation_MyApp_CustomDialogFragment
)
} else {
dialog.window?.setWindowAnimations(
R.style.Animation_MyApp_CustomDialogFragment_Restore
)
}

return dialog
}
}

关于android - 恢复应用程序时如何禁用DialogFragment过渡动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63911767/

67 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com