我有一个全屏活动,在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的系统UI处理有些复杂。我建议您将这些文件复制到您的应用程序中:https://gist.github.com/chrisbanes/73de18faffca571f7292
然后参加您的活动:
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)
}
}