Rely on SDL for Android fullscreen window behavior
This commit is contained in:
@@ -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 {
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user