Fallback to old systemUiVisibility in reader
parent
f1245742c0
commit
f9609edea5
@ -0,0 +1,60 @@
|
||||
package org.koitharu.kotatsu.core.ui.util
|
||||
|
||||
import android.os.Build
|
||||
import android.view.View
|
||||
import android.view.Window
|
||||
import android.view.WindowInsets
|
||||
import android.view.WindowInsetsController
|
||||
import androidx.annotation.RequiresApi
|
||||
|
||||
sealed class SystemUiController(
|
||||
protected val window: Window,
|
||||
) {
|
||||
|
||||
abstract fun setSystemUiVisible(value: Boolean)
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.S)
|
||||
private class Api30Impl(window: Window) : SystemUiController(window) {
|
||||
|
||||
private val insetsController = checkNotNull(window.decorView.windowInsetsController)
|
||||
|
||||
override fun setSystemUiVisible(value: Boolean) {
|
||||
if (value) {
|
||||
insetsController.show(WindowInsets.Type.systemBars())
|
||||
insetsController.systemBarsBehavior = WindowInsetsController.BEHAVIOR_DEFAULT
|
||||
} else {
|
||||
insetsController.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
insetsController.hide(WindowInsets.Type.systemBars())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
private class LegacyImpl(window: Window) : SystemUiController(window) {
|
||||
|
||||
override fun setSystemUiVisible(value: Boolean) {
|
||||
window.decorView.systemUiVisibility = if (value) {
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
} else {
|
||||
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_HIDE_NAVIGATION or
|
||||
View.SYSTEM_UI_FLAG_FULLSCREEN or
|
||||
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
operator fun invoke(window: Window): SystemUiController =
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
Api30Impl(window)
|
||||
} else {
|
||||
LegacyImpl(window)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue