diff --git a/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboSDLActivity.java b/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboSDLActivity.java index dd506a7f1..57687bd98 100644 --- a/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboSDLActivity.java +++ b/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboSDLActivity.java @@ -898,9 +898,25 @@ protected void onCreate(Bundle savedInstanceState) { // Log.v("SDL", "onCreate()"); activity = this; - if (LimboSettingsManager.getFullscreen(this)) + if (LimboSettingsManager.getFullscreen(this)) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); + WindowManager.LayoutParams.FLAG_FULLSCREEN); // 1024 + + if (Build.VERSION.SDK_INT >= 28) // Android 9+ supports cutouts + if (Build.VERSION.SDK_INT >= 30) // Android 11 + getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; // 3 + else + getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; // 1 + + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE // always use full screen + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // overlayed navigation + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // overlayed status bar + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide navigation buttons + | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY // keep navigation hidden + ); + } super.onCreate(savedInstanceState); setupVolume(); @@ -1773,6 +1789,16 @@ protected int getCurrentVolume() { @Override public void onWindowFocusChanged(boolean hasFocus) { + if(hasFocus) // hide navigation only when using screen + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + ); + } public boolean rightClick(final MotionEvent e, final int i) { diff --git a/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboVNCActivity.java b/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboVNCActivity.java index 360053c8c..d4961855f 100644 --- a/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboVNCActivity.java +++ b/limbo-android-lib/src/main/java/com/max2idea/android/limbo/main/LimboVNCActivity.java @@ -92,10 +92,26 @@ public class LimboVNCActivity extends VncCanvasActivity { @Override public void onCreate(Bundle b) { - if (LimboSettingsManager.getFullscreen(this)) + if (LimboSettingsManager.getFullscreen(this)) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + if (Build.VERSION.SDK_INT >= 28) // Android 9+ supports cutouts + if (Build.VERSION.SDK_INT >= 30) // Android 11 + getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; // 3 + else + getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; // 1 + + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + ); + } + super.onCreate(b); this.vncCanvas.setFocusableInTouchMode(true); @@ -109,6 +125,19 @@ public void onCreate(Bundle b) { } + @Override + public void onWindowFocusChanged(boolean hasFocus) { + if(hasFocus) // hide navigation only when using screen + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + ); + } + private void setDefaulViewMode() {