在方向更改时防止全屏退出(清除窗口标志?)>

问题描述 投票:2回答:2

我有一个全屏活动,在AndroidManifest.xml中未设置configChanges,因此系统会在方向更改时重新创建该活动。在这里一切正常,除了间断地改变方向似乎会导致该应用退出全屏模式并重新启动系统ui。

我有代码可以在这种情况下重新进入全屏模式,但是我想阻止它从全屏模式开始。我想知道为什么会这样吗?

我还观察到,只有在build.gradle中将debuggable标志在build.gradle中设置为构建配置(发布或调试)时,会发生这种情况

Activity.kt

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // initial fullscreen mode before content loads
    enterFullscreenMode()

    window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
        if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
            // not full screen
            Handler().postDelayed({
                enterFullscreenMode()
            }, 800L)
        }
    }
}

private fun enterFullscreenMode() {
    window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                or View.SYSTEM_UI_FLAG_FULLSCREEN
                or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
}     
    

我有一个全屏活动,在AndroidManifest.xml中未设置configChanges,因此系统会在方向更改时重新创建该活动。一切都在这里工作正常,除了间歇性地......>

android kotlin screen-orientation
2个回答
0
投票

Android的系统UI处理有些复杂。我建议您将这些文件复制到您的应用程序中:https://gist.github.com/chrisbanes/73de18faffca571f7292

然后参加您的活动:


0
投票
class OpenPdfActivity : AppCompatActivity(){
      override fun onCreate(savedInstanceState: Bundle?) {
               window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
               setContentView(R.layout.your_layout)
      }
}
© www.soinside.com 2019 - 2024. All rights reserved.