LibreTube/app/src/main/java/com/github/libretube/helpers/WindowHelper.kt

45 lines
1.6 KiB
Kotlin
Raw Normal View History

package com.github.libretube.helpers
2023-01-17 02:38:08 +05:30
2023-03-06 10:56:42 +05:30
import android.app.Activity
2023-01-17 02:38:08 +05:30
import android.os.Build
import android.view.WindowManager
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
2023-03-06 10:56:42 +05:30
object WindowHelper {
fun toggleFullscreen(activity: Activity, isFullscreen: Boolean) {
val window = activity.window
2023-01-17 02:38:08 +05:30
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
2023-03-06 10:56:42 +05:30
window.attributes.layoutInDisplayCutoutMode = if (isFullscreen) {
2023-01-17 02:38:08 +05:30
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
2023-03-06 10:56:42 +05:30
} else {
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
}
2023-01-17 02:38:08 +05:30
}
2023-03-06 10:56:42 +05:30
WindowCompat.setDecorFitsSystemWindows(window, !isFullscreen)
2023-01-17 02:38:08 +05:30
2023-03-06 10:56:42 +05:30
val controller = WindowCompat.getInsetsController(window, window.decorView)
val flags = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.navigationBars()
if (isFullscreen) {
controller.hide(flags)
} else {
controller.show(flags)
2023-01-17 02:38:08 +05:30
}
2023-03-06 10:56:42 +05:30
controller.systemBarsBehavior = if (isFullscreen) {
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
} else {
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
2023-01-17 02:38:08 +05:30
}
2023-03-06 10:56:42 +05:30
val layoutFlag = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
if (isFullscreen) {
window.setFlags(layoutFlag, layoutFlag)
} else {
window.clearFlags(layoutFlag)
}
}
2023-01-17 02:38:08 +05:30
}