From 4610ebb74351c794ed4280046c5a36054e23a61d Mon Sep 17 00:00:00 2001 From: Ghabry Date: Fri, 4 Apr 2025 14:40:38 +0200 Subject: [PATCH 1/3] Android: Add option to disable Fullscreen mode and fullscreen hacks Initially this was added because the window managed of SDL2 was broken on Android --- .../easyrpg/player/player/EasyRpgPlayerActivity.java | 7 ------- .../org/easyrpg/player/settings/SettingsEnum.java | 1 + .../org/easyrpg/player/settings/SettingsManager.java | 12 ++++++++++++ .../player/settings/SettingsVideoActivity.java | 8 ++++++++ .../src/main/res/layout/activity_settings_video.xml | 7 +++++++ builds/android/app/src/main/res/values/strings.xml | 1 + 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/builds/android/app/src/main/java/org/easyrpg/player/player/EasyRpgPlayerActivity.java b/builds/android/app/src/main/java/org/easyrpg/player/player/EasyRpgPlayerActivity.java index ebbdededcf..ca39eda199 100644 --- a/builds/android/app/src/main/java/org/easyrpg/player/player/EasyRpgPlayerActivity.java +++ b/builds/android/app/src/main/java/org/easyrpg/player/player/EasyRpgPlayerActivity.java @@ -142,7 +142,6 @@ public void onDrawerStateChanged(int newState) { NavigationView navigationView = findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); - hideStatusBar(); // Screen orientation if (SettingsManager.isForcedLandscape()) { @@ -207,12 +206,6 @@ public boolean onNavigationItemSelected(MenuItem item) { return false; } - public void hideStatusBar() { - // Hide the status bar - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - } - @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == LAYOUT_EDIT) { diff --git a/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsEnum.java b/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsEnum.java index 537bb9e437..3969de4535 100644 --- a/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsEnum.java +++ b/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsEnum.java @@ -22,6 +22,7 @@ enum SettingsEnum { MUSIC_VOLUME("MusicVolume"), SOUND_VOLUME("SoundVolume"), STRETCH("Stretch"), + FULLSCREEN("Fullscreen"), GAME_RESOLUTION("GameResolution"), SPEED_MODIFIER_A("SpeedModifierA"), FONT1_URI("Font1"), diff --git a/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsManager.java b/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsManager.java index 44049e9b6f..4d1774fae0 100644 --- a/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsManager.java +++ b/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsManager.java @@ -33,6 +33,7 @@ public class SettingsManager { private static boolean ignoreLayoutSizePreferencesEnabled; private static boolean forcedLandscape; private static boolean stretch; + private static boolean fullscreen; private static boolean rtpScanningEnabled; private static int imageSize, gameResolution; private static int layoutTransparency, layoutSize, fastForwardMode, fastForwardMultiplier; @@ -80,6 +81,7 @@ private static void loadSettings(Context context) { layoutSize = sharedPref.getInt(LAYOUT_SIZE.toString(), 100); forcedLandscape = sharedPref.getBoolean(FORCED_LANDSCAPE.toString(), false); stretch = configIni.video.getBoolean(STRETCH.toString(), false); + fullscreen = configIni.video.getBoolean(FULLSCREEN.toString(), true); fastForwardMode = sharedPref.getInt(FAST_FORWARD_MODE.toString(), FAST_FORWARD_MODE_TAP); musicVolume = configIni.audio.getInteger(MUSIC_VOLUME.toString(), 100); @@ -289,6 +291,16 @@ public static void setStretch(boolean b) { configIni.save(); } + public static boolean isFullscreen() { + return fullscreen; + } + + public static void setFullscreen(boolean b) { + fullscreen = b; + configIni.video.set(FULLSCREEN.toString(), b); + configIni.save(); + } + public static Uri getEasyRPGFolderURI(Context context) { if (easyRPGFolderURI == null) { SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); diff --git a/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsVideoActivity.java b/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsVideoActivity.java index 41b8b082db..12413fda36 100644 --- a/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsVideoActivity.java +++ b/builds/android/app/src/main/java/org/easyrpg/player/settings/SettingsVideoActivity.java @@ -24,6 +24,10 @@ public void onCreate(Bundle savedInstanceState) { this.setContentView(R.layout.activity_settings_video); // Setting UI components + CheckBox fullscreenCheckbox = findViewById(R.id.fullscreen_mode); + fullscreenCheckbox.setChecked(SettingsManager.isFullscreen()); + fullscreenCheckbox.setOnClickListener(this); + CheckBox forceLandscapeModeCheckbox = findViewById(R.id.force_landscape_mode); forceLandscapeModeCheckbox.setChecked(SettingsManager.isForcedLandscape()); forceLandscapeModeCheckbox.setOnClickListener(this); @@ -67,6 +71,10 @@ public void onCreate(Bundle savedInstanceState) { @Override public void onClick(View v) { + if (v.getId() == R.id.fullscreen_mode) { + SettingsManager.setFullscreen(((CheckBox)v).isChecked()); + } + if (v.getId() == R.id.force_landscape_mode) { SettingsManager.setForcedLandscape(((CheckBox)v).isChecked()); } diff --git a/builds/android/app/src/main/res/layout/activity_settings_video.xml b/builds/android/app/src/main/res/layout/activity_settings_video.xml index c26cb88ae2..b89e6a53ba 100644 --- a/builds/android/app/src/main/res/layout/activity_settings_video.xml +++ b/builds/android/app/src/main/res/layout/activity_settings_video.xml @@ -11,6 +11,13 @@ android:padding="10dp" tools:context="org.easyrpg.player.settings.SettingsVideoActivity"> + + EasyRPG Folders Settings Screen scaling: + Fullscreen Force landscape orientation Scale to screen size using nearest neighbour (Fast, bad quality) Scale to a multiple of the game resolution (Fast, smaller image, good quality) From 8f9b1451414fcbfe5a5fb6e56d8e7cb37d30d82e Mon Sep 17 00:00:00 2001 From: Ghabry Date: Fri, 4 Apr 2025 14:41:45 +0200 Subject: [PATCH 2/3] Android: Add theme to Player Activity that sets the app bar to black Since the recent SDL2 update the system bar while a game is running is shown in green. This is distracting and this reverts it to the old look. --- builds/android/app/src/main/AndroidManifest.xml | 3 ++- builds/android/app/src/main/res/values/styles.xml | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/builds/android/app/src/main/AndroidManifest.xml b/builds/android/app/src/main/AndroidManifest.xml index 3be2ba9ac3..691be0ed5d 100644 --- a/builds/android/app/src/main/AndroidManifest.xml +++ b/builds/android/app/src/main/AndroidManifest.xml @@ -70,7 +70,8 @@ + android:configChanges="orientation|screenSize" + android:theme="@style/AppThemePlayerActivity"/> @color/colorAccent + +