Add support for adding plugin views behind the main view on Android
Doesn't change the default behavior, but allows plugins to add their
view behind the main view, which gives more control over what happens
with inputs and can be useful along with transparent rendering.
(cherry picked from commit 0b681d5834
)
This commit is contained in:
parent
de3f454c27
commit
1454d6c670
2 changed files with 19 additions and 1 deletions
|
@ -398,7 +398,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -190,6 +190,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.
|
||||
*/
|
||||
|
@ -293,6 +296,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
|
||||
|
|
Loading…
Reference in a new issue