docs(core-features): migrate Android SplashScreen (#1249)
* docs(core-features): migrate Android splash screen
* review: apply spelling corrections
* doc(android): update AndroidWindowSplashScreenBrandingImage warning
* doc(android): apply review suggestions
* doc(core-feature): splashscreen added page title
Co-authored-by: Norman Breau <norman@nbsolutions.ca>
diff --git a/www/docs/en/11.x/core/features/splashscreen/index.md b/www/docs/en/11.x/core/features/splashscreen/index.md
index 0c1d1c6..bbc9c8f 100644
--- a/www/docs/en/11.x/core/features/splashscreen/index.md
+++ b/www/docs/en/11.x/core/features/splashscreen/index.md
@@ -21,34 +21,47 @@
toc_title: Splash Screen
---
+# Splash Screen
+
This core feature gives the ability to configure and control the platform's splash screen while your web application is launching.
-- [Supported Platforms](#supported-platforms)
-- [Platform Splash Screen Image Configuration](#platform-splash-screen-image-configuration)
- - [Example Configuration](#example-configuration)
- - [iOS-specific Information](#ios-specific-information)
- - [Launch Storyboard Images](#launch-storyboard-images)
- - [Designing Launch Storyboard Images](#designing-launch-storyboard-images)
- - [Scale](#scale)
- - [Idioms](#idioms)
- - [Size classes](#size-classes)
- - [Single-image launch screen](#single-image-launch-screen)
- - [Multi-image launch screen](#multi-image-launch-screen)
- - [Dark Mode](#dark-mode)
-- [config.xml Preferences](#configxml-preferences)
- - [`AutoHideSplashScreen`](#autohidesplashscreen)
- - [`FadeSplashScreen`](#fadesplashscreen)
- - [`FadeSplashScreenDuration`](#fadesplashscreenduration)
- - [`ShowSplashScreenSpinner`](#showsplashscreenspinner)
- - [`SplashScreenDelay`](#splashscreendelay)
-- [JavaScript Public APIs](#javascript-public-apis)
- - [`navigator.splashscreen.hide`](#navigatorsplashscreenhide)
- - [`navigator.splashscreen.show`](#navigatorsplashscreenshow)
-- [Quirks & Known Issues](#quirks--known-issues)
- - [iOS](#ios)
+- [Splash Screen](#splash-screen)
+ - [Supported Platforms](#supported-platforms)
+ - [Platform Splash Screen Image Configuration](#platform-splash-screen-image-configuration)
+ - [Example Configuration](#example-configuration)
+ - [Android-specific Information](#android-specific-information)
+ - [Example Android Configuration](#example-android-configuration)
+ - [iOS-specific Information](#ios-specific-information)
+ - [Launch Storyboard Images](#launch-storyboard-images)
+ - [Designing Launch Storyboard Images](#designing-launch-storyboard-images)
+ - [Scale](#scale)
+ - [Idioms](#idioms)
+ - [Size classes](#size-classes)
+ - [Single-image launch screen](#single-image-launch-screen)
+ - [Multi-image launch screen](#multi-image-launch-screen)
+ - [Dark Mode](#dark-mode)
+ - [config.xml Preferences](#configxml-preferences)
+ - [`AutoHideSplashScreen`](#autohidesplashscreen)
+ - [`FadeSplashScreen`](#fadesplashscreen)
+ - [`FadeSplashScreenDuration`](#fadesplashscreenduration)
+ - [`ShowSplashScreenSpinner`](#showsplashscreenspinner)
+ - [`SplashScreenDelay`](#splashscreendelay)
+ - [`AndroidPostSplashScreenTheme`](#androidpostsplashscreentheme)
+ - [`AndroidWindowSplashScreenAnimatedIcon`](#androidwindowsplashscreenanimatedicon)
+ - [`AndroidWindowSplashScreenAnimationDuration`](#androidwindowsplashscreenanimationduration)
+ - [`AndroidWindowSplashScreenBackground`](#androidwindowsplashscreenbackground)
+ - [`AndroidWindowSplashScreenBrandingImage`](#androidwindowsplashscreenbrandingimage)
+ - [`AndroidWindowSplashScreenIconBackgroundColor`](#androidwindowsplashscreeniconbackgroundcolor)
+ - [JavaScript Public APIs](#javascript-public-apis)
+ - [`navigator.splashscreen.hide`](#navigatorsplashscreenhide)
+ - [`navigator.splashscreen.show`](#navigatorsplashscreenshow)
+ - [Quirks & Known Issues](#quirks--known-issues)
+ - [iOS](#ios)
+ - [Android](#android)
## Supported Platforms
+- Android
- iOS
For other platforms, check the `cordova-plugin-splashscreen` for support.
@@ -70,12 +83,17 @@
www
res
screen
+ android
ios
```
**Config.xml:**
```xml
+<platform name="android">
+ <preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
+</platform>
+
<!--
Storyboard (supports all devices):
Note: images are determined by scale, idiom, and size traits. The following
@@ -91,6 +109,26 @@
</platform>
```
+### Android-specific Information
+
+Starting in Android 12, Google has implemented a new SplashScreen API to controls the app launch animation which runs on a device with Android 12 and higher. For backwards compatability, Cordova has included the `core-splashscreen` compatability library which extends this features back to Android API 21 and higher.
+
+To effectively create your own Android SplashScreen assets, it is important to understand the requirements of an Adaptive Icon.
+
+**Resource:**
+
+- [Splash Screen dimensions](https://developer.android.com/guide/topics/ui/splash-screen#splash_screen_dimensions)
+- [Adaptive icons](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive)
+
+#### Example Android Configuration
+
+```xml
+<platform name="android">
+ <!-- Default -->
+ <preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
+</platform>
+```
+
### iOS-specific Information
Launch storyboard images are sized based on scale, idiom, and size classes. It supports all devices, and can be used with split-screen/slide-over multitasking.
@@ -262,6 +300,7 @@
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Boolean`
@@ -278,8 +317,11 @@
Controlls the ability of the fade in and out of the splash screen.
+For Android, it controlls only the fade out.
+
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Boolean`
@@ -298,6 +340,7 @@
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Float`, in milliseconds
@@ -351,14 +394,18 @@
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Number`, in milliseconds
**Default Value:** `true`
+- Android
+ `-1`: The splash screen will automatically hide when the `onPageFinished` has been triggered.
+
- iOS
- `3000`: The splash screen will automatticly hide in 3 seconds.
+ `3000`: The splash screen will automatically hide in 3 seconds.
**Usage Example:**
@@ -366,6 +413,120 @@
<preference name="SplashScreenDelay" value="3000" />
```
+### `AndroidPostSplashScreenTheme`
+
+Sets the post-theme of the activity after splash screen hides.
+
+_Note:_ This setting is available but use at your own risk.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`
+
+**Default Value:** `@style/Theme.AppCompat.NoActionBar`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidPostSplashScreenTheme" value="@style/Theme.AppCompat.NoActionBar"/>
+```
+
+### `AndroidWindowSplashScreenAnimatedIcon`
+
+The splash screen image. This preference is used for both animated and non-animated icons. The current acceptable asset files can either be an XML Vector Drwable or PNG.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, file path to the asset file
+
+**Default Value:** If not supplied, the Cordova's default asset is used.
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
+```
+
+### `AndroidWindowSplashScreenAnimationDuration`
+
+Defines the duration of the icon's animation if an Animated Vector Drwable is supplied as the splash screen image.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `Number`, in milliseconds
+
+**Default Value:** `undefined`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenAnimationDuration" value="3000"/>
+```
+
+### `AndroidWindowSplashScreenBackground`
+
+The splash screen background color.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, color hex code value.
+
+**Default Value:** `#ffffff`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenBackground" value="#ffffff" />
+```
+
+### `AndroidWindowSplashScreenBrandingImage`
+
+> :warning: this setting is currently unsupported by the Android's Splash Screen compatability library. [See Google Android Issue Tracker](https://issuetracker.google.com/issues/194301890)
+
+<!--
+The splash screen's branding image.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, file path to the asset file
+
+**Default Value:** `undefined`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenBrandingImage" value="res/screen/android/splashscreen_branding.xml" />
+```
+-->
+
+### `AndroidWindowSplashScreenIconBackgroundColor`
+
+The splash screen's icons background color. Useful to seperate increase the contrast seperation between the background and icon.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, color hex code value.
+
+**Default Value:** `undefined`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenIconBackgroundColor" value="#c0c0c0" />
+```
+
## JavaScript Public APIs
### `navigator.splashscreen.hide`
@@ -374,6 +535,7 @@
**Supported Platforms:**
+- Android
- iOS
**Usage Example:**
@@ -429,3 +591,8 @@
4. **`anyany` must be provided for other variations to be used**
If you don't provide an `anyany` version of the launch image for a specific scale and idiom, the other variations (like `anycom`, `comany`, and `comcom`) will ignored.
+
+### Android
+
+1. **Simulator does not show the splash screen when launching the application from Android Studio or Cordova CLI.**
+ This is a known Android simulator issue. After uploading the app to the simulator, exiting and opening the app will display show the Splash Screen. If changes are not showen, try also performing a clean build.
diff --git a/www/docs/en/dev/core/features/splashscreen/index.md b/www/docs/en/dev/core/features/splashscreen/index.md
index 0c1d1c6..be35ddc 100644
--- a/www/docs/en/dev/core/features/splashscreen/index.md
+++ b/www/docs/en/dev/core/features/splashscreen/index.md
@@ -21,34 +21,47 @@
toc_title: Splash Screen
---
+# Splash Screen
+
This core feature gives the ability to configure and control the platform's splash screen while your web application is launching.
-- [Supported Platforms](#supported-platforms)
-- [Platform Splash Screen Image Configuration](#platform-splash-screen-image-configuration)
- - [Example Configuration](#example-configuration)
- - [iOS-specific Information](#ios-specific-information)
- - [Launch Storyboard Images](#launch-storyboard-images)
- - [Designing Launch Storyboard Images](#designing-launch-storyboard-images)
- - [Scale](#scale)
- - [Idioms](#idioms)
- - [Size classes](#size-classes)
- - [Single-image launch screen](#single-image-launch-screen)
- - [Multi-image launch screen](#multi-image-launch-screen)
- - [Dark Mode](#dark-mode)
-- [config.xml Preferences](#configxml-preferences)
- - [`AutoHideSplashScreen`](#autohidesplashscreen)
- - [`FadeSplashScreen`](#fadesplashscreen)
- - [`FadeSplashScreenDuration`](#fadesplashscreenduration)
- - [`ShowSplashScreenSpinner`](#showsplashscreenspinner)
- - [`SplashScreenDelay`](#splashscreendelay)
-- [JavaScript Public APIs](#javascript-public-apis)
- - [`navigator.splashscreen.hide`](#navigatorsplashscreenhide)
- - [`navigator.splashscreen.show`](#navigatorsplashscreenshow)
-- [Quirks & Known Issues](#quirks--known-issues)
- - [iOS](#ios)
+- [Splash Screen](#splash-screen)
+ - [Supported Platforms](#supported-platforms)
+ - [Platform Splash Screen Image Configuration](#platform-splash-screen-image-configuration)
+ - [Example Configuration](#example-configuration)
+ - [Android-specific Information](#android-specific-information)
+ - [Example Android Configuration](#example-android-configuration)
+ - [iOS-specific Information](#ios-specific-information)
+ - [Launch Storyboard Images](#launch-storyboard-images)
+ - [Designing Launch Storyboard Images](#designing-launch-storyboard-images)
+ - [Scale](#scale)
+ - [Idioms](#idioms)
+ - [Size classes](#size-classes)
+ - [Single-image launch screen](#single-image-launch-screen)
+ - [Multi-image launch screen](#multi-image-launch-screen)
+ - [Dark Mode](#dark-mode)
+ - [config.xml Preferences](#configxml-preferences)
+ - [`AutoHideSplashScreen`](#autohidesplashscreen)
+ - [`FadeSplashScreen`](#fadesplashscreen)
+ - [`FadeSplashScreenDuration`](#fadesplashscreenduration)
+ - [`ShowSplashScreenSpinner`](#showsplashscreenspinner)
+ - [`SplashScreenDelay`](#splashscreendelay)
+ - [`AndroidPostSplashScreenTheme`](#androidpostsplashscreentheme)
+ - [`AndroidWindowSplashScreenAnimatedIcon`](#androidwindowsplashscreenanimatedicon)
+ - [`AndroidWindowSplashScreenAnimationDuration`](#androidwindowsplashscreenanimationduration)
+ - [`AndroidWindowSplashScreenBackground`](#androidwindowsplashscreenbackground)
+ - [`AndroidWindowSplashScreenBrandingImage`](#androidwindowsplashscreenbrandingimage)
+ - [`AndroidWindowSplashScreenIconBackgroundColor`](#androidwindowsplashscreeniconbackgroundcolor)
+ - [JavaScript Public APIs](#javascript-public-apis)
+ - [`navigator.splashscreen.hide`](#navigatorsplashscreenhide)
+ - [`navigator.splashscreen.show`](#navigatorsplashscreenshow)
+ - [Quirks & Known Issues](#quirks--known-issues)
+ - [iOS](#ios)
+ - [Android](#android)
## Supported Platforms
+- Android
- iOS
For other platforms, check the `cordova-plugin-splashscreen` for support.
@@ -70,12 +83,17 @@
www
res
screen
+ android
ios
```
**Config.xml:**
```xml
+<platform name="android">
+ <preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
+</platform>
+
<!--
Storyboard (supports all devices):
Note: images are determined by scale, idiom, and size traits. The following
@@ -91,6 +109,26 @@
</platform>
```
+### Android-specific Information
+
+Starting in Android 12, Google has implemented a new SplashScreen API to controls the app launch animation which runs on a device with Android 12 and higher. For backwards compatibility, Cordova has included the `core-splashscreen` compatibility library which extends this features back to Android API 21 and higher.
+
+To effectively create your own Android SplashScreen assets, it is important to understand the requirements of an Adaptive Icon.
+
+**Resource:**
+
+- [Splash Screen dimensions](https://developer.android.com/guide/topics/ui/splash-screen#splash_screen_dimensions)
+- [Adaptive icons](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive)
+
+#### Example Android Configuration
+
+```xml
+<platform name="android">
+ <!-- Default -->
+ <preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
+</platform>
+```
+
### iOS-specific Information
Launch storyboard images are sized based on scale, idiom, and size classes. It supports all devices, and can be used with split-screen/slide-over multitasking.
@@ -262,6 +300,7 @@
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Boolean`
@@ -278,8 +317,11 @@
Controlls the ability of the fade in and out of the splash screen.
+For Android, it controlls only the fade out.
+
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Boolean`
@@ -298,6 +340,7 @@
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Float`, in milliseconds
@@ -351,14 +394,18 @@
**Supported Platforms:**
+- Android
- iOS
**Data Type:** `Number`, in milliseconds
**Default Value:** `true`
+- Android
+ `-1`: The splash screen will automatically hide when the `onPageFinished` has been triggered.
+
- iOS
- `3000`: The splash screen will automatticly hide in 3 seconds.
+ `3000`: The splash screen will automatically hide in 3 seconds.
**Usage Example:**
@@ -366,6 +413,120 @@
<preference name="SplashScreenDelay" value="3000" />
```
+### `AndroidPostSplashScreenTheme`
+
+Sets the post-theme of the activity after splash screen hides.
+
+_Note:_ This setting is available but use at your own risk.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`
+
+**Default Value:** `@style/Theme.AppCompat.NoActionBar`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidPostSplashScreenTheme" value="@style/Theme.AppCompat.NoActionBar"/>
+```
+
+### `AndroidWindowSplashScreenAnimatedIcon`
+
+The splash screen image. This preference is used for both animated and non-animated icons. The current acceptable asset files can either be a XML Vector Drawable or PNG.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, file path to the asset file
+
+**Default Value:** If not supplied, the Cordova's default asset is used.
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
+```
+
+### `AndroidWindowSplashScreenAnimationDuration`
+
+Defines the duration of the icon's animation if an Animated Vector Drawable is supplied as the splash screen image.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `Number`, in milliseconds
+
+**Default Value:** `undefined`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenAnimationDuration" value="3000"/>
+```
+
+### `AndroidWindowSplashScreenBackground`
+
+The splash screen background color.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, color hex code value.
+
+**Default Value:** `#ffffff`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenBackground" value="#ffffff" />
+```
+
+### `AndroidWindowSplashScreenBrandingImage`
+
+> :warning: this setting is currently unsupported. The core-splashscreen compatibility library, that Cordova Android relies on for providing backwards support, has not implemented this functionality. [See Google Android Issue Tracker](https://issuetracker.google.com/issues/194301890)
+
+<!--
+The splash screen's branding image.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, file path to the asset file
+
+**Default Value:** `undefined`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenBrandingImage" value="res/screen/android/splashscreen_branding.xml" />
+```
+-->
+
+### `AndroidWindowSplashScreenIconBackgroundColor`
+
+The splash screen's icons background color. Useful to seperate increase the contrast seperation between the background and icon.
+
+**Supported Platforms:**
+
+- Android
+
+**Data Type:** `String`, color hex code value.
+
+**Default Value:** `undefined`
+
+**Usage Example:**
+
+```xml
+<preference name="AndroidWindowSplashScreenIconBackgroundColor" value="#c0c0c0" />
+```
+
## JavaScript Public APIs
### `navigator.splashscreen.hide`
@@ -374,6 +535,7 @@
**Supported Platforms:**
+- Android
- iOS
**Usage Example:**
@@ -429,3 +591,8 @@
4. **`anyany` must be provided for other variations to be used**
If you don't provide an `anyany` version of the launch image for a specific scale and idiom, the other variations (like `anycom`, `comany`, and `comcom`) will ignored.
+
+### Android
+
+1. **Simulator does not show the splash screen when launching the application from Android Studio or Cordova CLI.**
+ This is a known Android simulator issue. After uploading the app to the simulator, exiting and opening the app will display show the Splash Screen. If changes are not shown, try also performing a clean build.