Rely on SDL for Android fullscreen window behavior

This commit is contained in:
Joshua Granick
2019-10-08 13:41:36 -07:00
parent 274ae5fe3b
commit bb2af5eed1
2 changed files with 203 additions and 241 deletions

View File

@@ -45,7 +45,11 @@ namespace lime {
int sdlWindowFlags = 0;
#ifdef ANDROID
if (flags & WINDOW_FLAG_FULLSCREEN) sdlWindowFlags |= SDL_WINDOW_FULLSCREEN;
#else
if (flags & WINDOW_FLAG_FULLSCREEN) sdlWindowFlags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
#endif
if (flags & WINDOW_FLAG_RESIZABLE) sdlWindowFlags |= SDL_WINDOW_RESIZABLE;
if (flags & WINDOW_FLAG_BORDERLESS) sdlWindowFlags |= SDL_WINDOW_BORDERLESS;
if (flags & WINDOW_FLAG_HIDDEN) sdlWindowFlags |= SDL_WINDOW_HIDDEN;
@@ -163,6 +167,7 @@ namespace lime {
if (!sdlWindow) {
printf ("Could not create SDL window: %s.\n", SDL_GetError ());
return;
}
@@ -289,6 +294,14 @@ namespace lime {
}
#ifdef ANDROID
// TODO: Is this extra call needed?
if (flags & WINDOW_FLAG_FULLSCREEN)
{
SetFullscreen(true);
}
#endif
}
@@ -925,6 +938,9 @@ namespace lime {
if (fullscreen) {
#ifdef ANDROID
SDL_SetWindowFullscreen (sdlWindow, SDL_WINDOW_FULLSCREEN);
#else
if (displayModeSet) {
SDL_SetWindowFullscreen (sdlWindow, SDL_WINDOW_FULLSCREEN);
@@ -934,6 +950,7 @@ namespace lime {
SDL_SetWindowFullscreen (sdlWindow, SDL_WINDOW_FULLSCREEN_DESKTOP);
}
#endif
} else {

View File

@@ -119,22 +119,6 @@ public class GameActivity extends SDLActivity {
Extension.mainView = mLayout;
Extension.packageName = getApplicationContext ().getPackageName ();
if (Build.VERSION.SDK_INT >= 16 && Build.VERSION.SDK_INT < 19) {
View decorView = getWindow ().getDecorView ();
decorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener () {
@Override public void onSystemUiVisibilityChange (int visibility) {
updateSystemUI ();
}
});
}
if (extensions == null) {
extensions = new ArrayList<Extension> ();
@@ -240,8 +224,6 @@ public class GameActivity extends SDLActivity {
super.onResume ();
updateSystemUI ();
for (Extension extension : extensions) {
extension.onResume ();
@@ -281,8 +263,6 @@ public class GameActivity extends SDLActivity {
super.onStart ();
updateSystemUI ();
for (Extension extension : extensions) {
extension.onStart ();
@@ -324,15 +304,6 @@ public class GameActivity extends SDLActivity {
::end::
@Override public void onWindowFocusChanged (boolean hasFocus) {
super.onWindowFocusChanged (hasFocus);
updateSystemUI ();
}
public static void openFile (String path) {
try {
@@ -398,32 +369,6 @@ public class GameActivity extends SDLActivity {
}
public static void updateSystemUI () {
::if WIN_FULLSCREEN::::if (ANDROID_TARGET_SDK_VERSION >= 19)::
boolean hasBackKey = KeyCharacterMap.deviceHasKey (KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey (KeyEvent.KEYCODE_HOME);
View decorView = Extension.mainActivity.getWindow ().getDecorView ();
if (Build.VERSION.SDK_INT >= 19) {
decorView.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);
} else if (hasBackKey && hasHomeKey && Build.VERSION.SDK_INT >= 16) {
decorView.setSystemUiVisibility (View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LOW_PROFILE);
} else if (Build.VERSION.SDK_INT >= 15) {
decorView.setSystemUiVisibility (View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
::end::::end::
}
public static void vibrate (int period, int duration) {
Vibrator v = (Vibrator)mSingleton.getSystemService (Context.VIBRATOR_SERVICE);