Merge pull request #52320 from nekomatata/android-plugin-view-order

Add support for adding plugin views behind the main view on Android
This commit is contained in:
Fredia Huya-Kouadio 2021-09-01 11:54:46 -07:00 committed by GitHub
commit a160a95ea6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View file

@ -295,7 +295,11 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
for (GodotPlugin plugin : pluginRegistry.getAllPlugins()) {
View pluginView = plugin.onMainCreate(activity);
if (pluginView != null) {
containerLayout.addView(pluginView);
if (plugin.shouldBeOnTop()) {
containerLayout.addView(pluginView);
} else {
containerLayout.addView(pluginView, 0);
}
}
}
}

View file

@ -191,6 +191,9 @@ public abstract class GodotPlugin {
* The plugin can return a non-null {@link View} layout in order to add it to the Godot view
* hierarchy.
*
* Use shouldBeOnTop() to set whether the plugin's {@link View} should be added on top or behind
* the main Godot view.
*
* @see Activity#onCreate(Bundle)
* @return the plugin's view to be included; null if no views should be included.
*/
@ -310,6 +313,17 @@ public abstract class GodotPlugin {
return Collections.emptySet();
}
/**
* Returns whether the plugin's {@link View} returned in onMainCreate() should be placed on
* top of the main Godot view.
*
* Returning false causes the plugin's {@link View} to be placed behind, which can be useful
* when used with transparency in order to let the Godot view handle inputs.
*/
public boolean shouldBeOnTop() {
return true;
}
/**
* Runs the specified action on the UI thread. If the current thread is the UI
* thread, then the action is executed immediately. If the current thread is