From bfefc53040d53c56d2f3b7c9a0f30d788cbca58e Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Sun, 29 Jul 2018 09:12:45 +0100 Subject: [PATCH] hide navigation bar in fullscreen playback mode --- app/src/page/file/view.js | 14 ++++- .../browser/reactmodules/UtilityModule.java | 59 +++++++++++++------ 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/app/src/page/file/view.js b/app/src/page/file/view.js index 55098e0b..126c8c79 100644 --- a/app/src/page/file/view.js +++ b/app/src/page/file/view.js @@ -99,9 +99,17 @@ class FilePage extends React.PureComponent { if (mode) { // fullscreen, so change orientation to landscape mode NativeModules.ScreenOrientation.lockOrientationLandscape(); + if (NativeModules.UtilityModule) { + // hide the navigation bar (on devices that use have soft navigation bar) + NativeModules.UtilityModule.hideNavigationBar(); + } } else { // Switch back to portrait mode when the media is not fullscreen NativeModules.ScreenOrientation.lockOrientationPortrait(); + if (NativeModules.UtilityModule) { + // hide the navigation bar (on devices that use have soft navigation bar) + NativeModules.UtilityModule.showNavigationBar(); + } } } } @@ -138,9 +146,11 @@ class FilePage extends React.PureComponent { StatusBar.setHidden(false); if (NativeModules.ScreenOrientation) { NativeModules.ScreenOrientation.unlockOrientation(); - } + } if (NativeModules.UtilityModule) { - NativeModules.UtilityModule.keepAwakeOff(); + const utility = NativeModules.UtilityModule; + utility.keepAwakeOff(); + utility.showNavigationBar(); } } diff --git a/src/main/java/io/lbry/browser/reactmodules/UtilityModule.java b/src/main/java/io/lbry/browser/reactmodules/UtilityModule.java index 083d8c87..e3804aa2 100644 --- a/src/main/java/io/lbry/browser/reactmodules/UtilityModule.java +++ b/src/main/java/io/lbry/browser/reactmodules/UtilityModule.java @@ -2,6 +2,7 @@ package io.lbry.browser.reactmodules; import android.app.Activity; import android.content.Context; +import android.view.View; import android.view.WindowManager; import com.facebook.react.bridge.ReactApplicationContext; @@ -23,29 +24,51 @@ public class UtilityModule extends ReactContextBaseJavaModule { @ReactMethod public void keepAwakeOn() { - final Activity activity = getCurrentActivity(); + final Activity activity = getCurrentActivity(); - if (activity != null) { - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - }); - } + if (activity != null) { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + }); + } } @ReactMethod public void keepAwakeOff() { - final Activity activity = getCurrentActivity(); + final Activity activity = getCurrentActivity(); - if (activity != null) { - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - }); - } + if (activity != null) { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + }); + } + } + + @ReactMethod + public void hideNavigationBar() { + if (context != null && context instanceof Activity) { + Activity activity = (Activity) context; + View decorView = activity.getWindow().getDecorView(); + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_IMMERSIVE | + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + } + } + + @ReactMethod + public void showNavigationBar() { + if (context != null && context instanceof Activity) { + Activity activity = (Activity) context; + View decorView = activity.getWindow().getDecorView(); + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | + View.SYSTEM_UI_FLAG_VISIBLE); + } } }