From 6f7ec7f723d3e479ef1ee6e1f619432bac7f2ee0 Mon Sep 17 00:00:00 2001 From: Fredia Huya-Kouadio Date: Tue, 31 May 2022 23:26:03 -0700 Subject: Misc editor tweaks and polishes: - Using a bucketized approach to select the editor scale in order to avoid too high values - Add default app dimensions: used on Android devices with free floating app windows to set the default app frame - Add ability to launch the Game window in an adjacent frame when in multi window mode --- .../java/editor/src/main/AndroidManifest.xml | 7 ++++++ .../java/org/godotengine/editor/GodotEditor.java | 29 +++++++++++++++++++++- .../java/editor/src/main/res/values/dimens.xml | 5 ++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 platform/android/java/editor/src/main/res/values/dimens.xml (limited to 'platform/android/java/editor/src') diff --git a/platform/android/java/editor/src/main/AndroidManifest.xml b/platform/android/java/editor/src/main/AndroidManifest.xml index bae075d929..659caf7ab4 100644 --- a/platform/android/java/editor/src/main/AndroidManifest.xml +++ b/platform/android/java/editor/src/main/AndroidManifest.xml @@ -34,6 +34,9 @@ android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" android:process=":GodotProjectManager"> + + @@ -47,6 +50,8 @@ android:launchMode="singleTask" android:screenOrientation="userLandscape" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> + + diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java index 8a6bf88267..c05ed965ca 100644 --- a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java +++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java @@ -34,10 +34,13 @@ import org.godotengine.godot.FullScreenGodotApp; import org.godotengine.godot.utils.PermissionsUtil; import android.content.Intent; +import android.os.Build; import android.os.Bundle; import android.os.Debug; import androidx.annotation.Nullable; +import androidx.window.layout.WindowMetrics; +import androidx.window.layout.WindowMetricsCalculator; import java.util.ArrayList; import java.util.Arrays; @@ -91,23 +94,47 @@ public class GodotEditor extends FullScreenGodotApp { public void onNewGodotInstanceRequested(String[] args) { // Parse the arguments to figure out which activity to start. Class targetClass = GodotGame.class; + // Whether we should launch the new godot instance in an adjacent window + // https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_LAUNCH_ADJACENT + boolean launchAdjacent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && (isInMultiWindowMode() || isLargeScreen()); + for (String arg : args) { if (EDITOR_ARG.equals(arg)) { targetClass = GodotEditor.class; + launchAdjacent = false; break; } if (PROJECT_MANAGER_ARG.equals(arg)) { targetClass = GodotProjectManager.class; + launchAdjacent = false; break; } } // Launch a new activity - Intent newInstance = new Intent(this, targetClass).putExtra(COMMAND_LINE_PARAMS, args); + Intent newInstance = new Intent(this, targetClass) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .putExtra(COMMAND_LINE_PARAMS, args); + if (launchAdjacent) { + newInstance.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT); + } startActivity(newInstance); } + protected boolean isLargeScreen() { + WindowMetrics metrics = + WindowMetricsCalculator.getOrCreate().computeMaximumWindowMetrics(this); + + // Get the screen's density scale + float scale = getResources().getDisplayMetrics().density; + + // Get the minimum window size + float minSize = Math.min(metrics.getBounds().width(), metrics.getBounds().height()); + float minSizeDp = minSize / scale; + return minSizeDp >= 840f; // Correspond to the EXPANDED window size class. + } + @Override public void setRequestedOrientation(int requestedOrientation) { if (!overrideOrientationRequest()) { diff --git a/platform/android/java/editor/src/main/res/values/dimens.xml b/platform/android/java/editor/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..03fb6184d2 --- /dev/null +++ b/platform/android/java/editor/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + 600dp + 800dp + -- cgit v1.2.3