migrate player language settings to DialogFragment; update hideBars()

* player language settings is now aDialogFragment
* update hideBars() to work with any window & view combination
* update hideBars() to use WindowCompat
This commit is contained in:
2022-04-15 13:32:16 +02:00
parent c6a00ea061
commit 35157b78f5
8 changed files with 87 additions and 71 deletions

View File

@ -5,9 +5,6 @@ import android.app.ActivityManager
import android.content.Context
import android.content.Intent
import android.os.Build
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.commit
@ -31,28 +28,7 @@ fun FragmentActivity.showFragment(fragment: Fragment) {
* hide the status and navigation bar
*/
fun Activity.hideBars() {
window.apply {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
setDecorFitsSystemWindows(false)
insetsController?.apply {
hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
systemBarsBehavior = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
WindowInsetsController.BEHAVIOR_DEFAULT
} else {
@Suppress("deprecation")
WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE
}
}
} else {
@Suppress("deprecation")
decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
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_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
}
hideBars(window, window.decorView.rootView)
}
fun Activity.isInPiPMode(): Boolean {

View File

@ -1,6 +1,11 @@
package org.mosad.teapod.util
import android.view.View
import android.view.Window
import android.widget.TextView
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import org.mosad.teapod.parser.crunchyroll.Collection
import org.mosad.teapod.parser.crunchyroll.ContinueWatchingItem
import org.mosad.teapod.parser.crunchyroll.Item
@ -50,3 +55,13 @@ fun Locale.toDisplayString(fallback: String): String {
fallback
}
}
fun hideBars(window: Window?, root: View) {
if (window != null) {
WindowCompat.setDecorFitsSystemWindows(window, false)
WindowInsetsControllerCompat(window, root).let { controller ->
controller.hide(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.navigationBars())
controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
}
}
}