Skip to content
This repository was archived by the owner on Apr 3, 2020. It is now read-only.

Commit 5825be4

Browse files
committed
Merge pull request #155 from fujunwei/full-screen
Fix immersive full screen mode doesn't recover
2 parents eaa4722 + c9e30e7 commit 5825be4

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

framework/src/org/apache/cordova/CordovaActivity.java

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,17 @@ public void onCreate(Bundle savedInstanceState) {
222222
WindowManager.LayoutParams.FLAG_FULLSCREEN);
223223
} else if (preferences.getBoolean("Fullscreen", false)) {
224224
toggleFullscreen(getWindow());
225+
226+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
227+
getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
228+
@Override
229+
public void onSystemUiVisibilityChange(int visibility) {
230+
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
231+
setSystemUiVisibilityMode(getWindow());
232+
}
233+
}
234+
});
235+
}
225236
} else {
226237
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
227238
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
@@ -300,19 +311,23 @@ protected void createViews() {
300311
@SuppressLint("NewApi")
301312
private void toggleFullscreen(Window window) {
302313
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
303-
final int uiOptions =
314+
setSystemUiVisibilityMode(window);
315+
} else {
316+
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
317+
WindowManager.LayoutParams.FLAG_FULLSCREEN);
318+
}
319+
}
320+
321+
private void setSystemUiVisibilityMode(Window window) {
322+
final int uiOptions =
304323
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
305324
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
306325
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
307326
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
308327
| View.SYSTEM_UI_FLAG_FULLSCREEN
309328
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
310329

311-
window.getDecorView().setSystemUiVisibility(uiOptions);
312-
} else {
313-
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
314-
WindowManager.LayoutParams.FLAG_FULLSCREEN);
315-
}
330+
window.getDecorView().setSystemUiVisibility(uiOptions);
316331
}
317332

318333
/**
@@ -1021,6 +1036,17 @@ public void run() {
10211036
if(getBooleanProperty("FullScreen", false))
10221037
{
10231038
toggleFullscreen(splashDialog.getWindow());
1039+
1040+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
1041+
splashDialog.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
1042+
@Override
1043+
public void onSystemUiVisibilityChange(int visibility) {
1044+
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
1045+
setSystemUiVisibilityMode(splashDialog.getWindow());
1046+
}
1047+
}
1048+
});
1049+
}
10241050
}
10251051

10261052
splashDialog.setContentView(splashLayout);

0 commit comments

Comments
 (0)