From 31fc0adabc800fd46c69060dbb94d94fac7170cd Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Mon, 30 May 2022 22:43:17 +0200 Subject: [PATCH] Fullscreen: now more fullscreen. --- .../opentracks/TrackRecordingActivity.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java index 31479712f..863ec3bdf 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java @@ -11,11 +11,16 @@ import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.WindowInsets; +import android.view.WindowInsetsController; import android.view.WindowManager; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; +import androidx.core.view.WindowInsetsControllerCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; @@ -183,9 +188,20 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc } private void setFullscreenPolicy() { - boolean keepScreenOn = PreferencesUtils.shouldUseFullscreen(); + boolean fullscreen = PreferencesUtils.shouldUseFullscreen(); - if (keepScreenOn) { + WindowInsetsControllerCompat windowInsetsController = ViewCompat.getWindowInsetsController(getWindow().getDecorView()); + if (windowInsetsController != null) { + windowInsetsController.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); + if (fullscreen) { + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()); + } else { + windowInsetsController.show(WindowInsetsCompat.Type.systemBars()); + } + return; + } + + if (fullscreen) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);