Merge pull request #46168 from m4gr3d/follow_up_splash_handling
[3.2] Follow up on bootsplash handling on Android
This commit is contained in:
commit
3c13a5bb6a
|
@ -1307,7 +1307,7 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
|
||||||
|
|
||||||
MAIN_PRINT("Main: Setup Logo");
|
MAIN_PRINT("Main: Setup Logo");
|
||||||
|
|
||||||
#ifdef JAVASCRIPT_ENABLED
|
#if defined(JAVASCRIPT_ENABLED) || defined(ANDROID_ENABLED)
|
||||||
bool show_logo = false;
|
bool show_logo = false;
|
||||||
#else
|
#else
|
||||||
bool show_logo = true;
|
bool show_logo = true;
|
||||||
|
|
|
@ -202,6 +202,19 @@ static const char *android_perms[] = {
|
||||||
|
|
||||||
static const char *SPLASH_IMAGE_EXPORT_PATH = "res/drawable/splash.png";
|
static const char *SPLASH_IMAGE_EXPORT_PATH = "res/drawable/splash.png";
|
||||||
static const char *SPLASH_BG_COLOR_PATH = "res/drawable/splash_bg_color.png";
|
static const char *SPLASH_BG_COLOR_PATH = "res/drawable/splash_bg_color.png";
|
||||||
|
static const char *SPLASH_CONFIG_PATH = "res://android/build/res/drawable/splash_drawable.xml";
|
||||||
|
|
||||||
|
const String SPLASH_CONFIG_XML_CONTENT = R"SPLASH(<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="@drawable/splash_bg_color" />
|
||||||
|
<item>
|
||||||
|
<bitmap
|
||||||
|
android:gravity="%s"
|
||||||
|
android:filter="%s"
|
||||||
|
android:src="@drawable/splash" />
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
)SPLASH";
|
||||||
|
|
||||||
struct LauncherIcon {
|
struct LauncherIcon {
|
||||||
const char *export_path;
|
const char *export_path;
|
||||||
|
@ -1508,8 +1521,9 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void load_splash_refs(Ref<Image> &splash_image, Ref<Image> &splash_bg_color_image) {
|
String load_splash_refs(Ref<Image> &splash_image, Ref<Image> &splash_bg_color_image) {
|
||||||
// TODO: Figure out how to handle remaining boot splash parameters (e.g: fullsize, filter)
|
bool scale_splash = ProjectSettings::get_singleton()->get("application/boot_splash/fullsize");
|
||||||
|
bool apply_filter = ProjectSettings::get_singleton()->get("application/boot_splash/use_filter");
|
||||||
String project_splash_path = ProjectSettings::get_singleton()->get("application/boot_splash/image");
|
String project_splash_path = ProjectSettings::get_singleton()->get("application/boot_splash/image");
|
||||||
|
|
||||||
if (!project_splash_path.empty()) {
|
if (!project_splash_path.empty()) {
|
||||||
|
@ -1541,6 +1555,10 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
|
||||||
splash_bg_color_image.instance();
|
splash_bg_color_image.instance();
|
||||||
splash_bg_color_image->create(splash_image->get_width(), splash_image->get_height(), false, splash_image->get_format());
|
splash_bg_color_image->create(splash_image->get_width(), splash_image->get_height(), false, splash_image->get_format());
|
||||||
splash_bg_color_image->fill(bg_color);
|
splash_bg_color_image->fill(bg_color);
|
||||||
|
|
||||||
|
String gravity = scale_splash ? "fill" : "center";
|
||||||
|
String processed_splash_config_xml = vformat(SPLASH_CONFIG_XML_CONTENT, gravity, bool_to_string(apply_filter));
|
||||||
|
return processed_splash_config_xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
void load_icon_refs(const Ref<EditorExportPreset> &p_preset, Ref<Image> &icon, Ref<Image> &foreground, Ref<Image> &background) {
|
void load_icon_refs(const Ref<EditorExportPreset> &p_preset, Ref<Image> &icon, Ref<Image> &foreground, Ref<Image> &background) {
|
||||||
|
@ -1584,11 +1602,18 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _copy_icons_to_gradle_project(const Ref<EditorExportPreset> &p_preset,
|
void _copy_icons_to_gradle_project(const Ref<EditorExportPreset> &p_preset,
|
||||||
|
const String &processed_splash_config_xml,
|
||||||
const Ref<Image> &splash_image,
|
const Ref<Image> &splash_image,
|
||||||
const Ref<Image> &splash_bg_color_image,
|
const Ref<Image> &splash_bg_color_image,
|
||||||
const Ref<Image> &main_image,
|
const Ref<Image> &main_image,
|
||||||
const Ref<Image> &foreground,
|
const Ref<Image> &foreground,
|
||||||
const Ref<Image> &background) {
|
const Ref<Image> &background) {
|
||||||
|
// Store the splash configuration
|
||||||
|
if (!processed_splash_config_xml.empty()) {
|
||||||
|
print_verbose("Storing processed splash configuration: " + String("\n") + processed_splash_config_xml);
|
||||||
|
store_string_at_path(SPLASH_CONFIG_PATH, processed_splash_config_xml);
|
||||||
|
}
|
||||||
|
|
||||||
// Store the splash image
|
// Store the splash image
|
||||||
if (splash_image.is_valid() && !splash_image->empty()) {
|
if (splash_image.is_valid() && !splash_image->empty()) {
|
||||||
print_verbose("Storing splash image in " + String(SPLASH_IMAGE_EXPORT_PATH));
|
print_verbose("Storing splash image in " + String(SPLASH_IMAGE_EXPORT_PATH));
|
||||||
|
@ -2751,7 +2776,7 @@ public:
|
||||||
|
|
||||||
Ref<Image> splash_image;
|
Ref<Image> splash_image;
|
||||||
Ref<Image> splash_bg_color_image;
|
Ref<Image> splash_bg_color_image;
|
||||||
load_splash_refs(splash_image, splash_bg_color_image);
|
String processed_splash_config_xml = load_splash_refs(splash_image, splash_bg_color_image);
|
||||||
|
|
||||||
Ref<Image> main_image;
|
Ref<Image> main_image;
|
||||||
Ref<Image> foreground;
|
Ref<Image> foreground;
|
||||||
|
@ -2812,7 +2837,7 @@ public:
|
||||||
EditorNode::add_io_error("Unable to overwrite res://android/build/res/*.xml files with project name");
|
EditorNode::add_io_error("Unable to overwrite res://android/build/res/*.xml files with project name");
|
||||||
}
|
}
|
||||||
// Copies the project icon files into the appropriate Gradle project directory.
|
// Copies the project icon files into the appropriate Gradle project directory.
|
||||||
_copy_icons_to_gradle_project(p_preset, splash_image, splash_bg_color_image, main_image, foreground, background);
|
_copy_icons_to_gradle_project(p_preset, processed_splash_config_xml, splash_image, splash_bg_color_image, main_image, foreground, background);
|
||||||
// Write an AndroidManifest.xml file into the Gradle project directory.
|
// Write an AndroidManifest.xml file into the Gradle project directory.
|
||||||
_write_tmp_manifest(p_preset, p_give_internet, p_debug);
|
_write_tmp_manifest(p_preset, p_give_internet, p_debug);
|
||||||
_update_custom_build_project();
|
_update_custom_build_project();
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<item>
|
<item>
|
||||||
<bitmap
|
<bitmap
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:filter="false"
|
||||||
android:src="@drawable/splash" />
|
android:src="@drawable/splash" />
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
|
Loading…
Reference in New Issue