啟動畫面
這個核心功能讓您能夠在您的 Web 應用程式啟動時設定和控制平台的啟動畫面。
- 啟動畫面
- 支援的平台
- 平台啟動畫面圖片設定
- config.xml 偏好設定
AutoHideSplashScreen
FadeSplashScreen
FadeSplashScreenDuration
ShowSplashScreenSpinner
SplashScreenDelay
AndroidPostSplashScreenTheme
AndroidWindowSplashScreenAnimatedIcon
AndroidWindowSplashScreenAnimationDuration
AndroidWindowSplashScreenBackground
AndroidWindowSplashScreenBrandingImage
AndroidWindowSplashScreenIconBackgroundColor
- JavaScript 公開 API
- 怪癖與已知問題
支援的平台
- Android
- iOS
對於其他平台,請查看 cordova-plugin-splashscreen
以取得支援。
平台啟動畫面圖片設定
設定範例
在最上層的 config.xml
檔案中(不是在 platforms
中),加入像這裡指定的設定元素。
「src」屬性的值相對於專案根目錄,而不是 www
目錄(請參閱下方的 目錄結構
)。您可以隨意命名來源影像檔案。應用程式中的內部名稱會由 Cordova 自動決定。
目錄結構
projectRoot
platforms
plugins
www
res
screen
android
ios
Config.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
are suggested based on current device form factors
-->
<platform name="ios">
<splash src="res/screen/ios/Default@2x~universal~anyany.png" />
<splash src="res/screen/ios/Default@2x~universal~comany.png" />
<splash src="res/screen/ios/Default@2x~universal~comcom.png" />
<splash src="res/screen/ios/Default@3x~universal~anyany.png" />
<splash src="res/screen/ios/Default@3x~universal~anycom.png" />
<splash src="res/screen/ios/Default@3x~universal~comany.png" />
</platform>
Android 特定資訊
從 Android 12 開始,Google 實作了新的 SplashScreen API 來控制在 Android 12 及更高版本的裝置上執行的應用程式啟動動畫。為了向後相容性,Cordova 包含了 core-splashscreen
相容性程式庫,將此功能擴展回 Android API 21 及更高版本。
為了有效地建立您自己的 Android SplashScreen 資產,了解自適應圖示的需求非常重要。
資源
Android 設定範例
<platform name="android">
<!-- Default -->
<preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
</platform>
iOS 特定資訊
啟動故事版圖片的大小基於縮放、慣用語和尺寸類別。它支援所有裝置,並且可以與分割畫面/滑動覆蓋多工處理一起使用。
目前沒有官方支援為 iPad Pro 12.9 提供原生解析度的啟動圖片,也沒有提供可與分割畫面多工處理或滑動覆蓋一起使用的啟動圖片。
注意:自 iOS 11 起,對於 iPhone X 裝置及更高版本(帶有瀏海螢幕),請確保在您的 index.html
檔案中將 viewport-fit=cover
加入 viewport meta 標籤,以正確顯示應用程式,例如:<meta name="viewport" content="user-scalable=no, initial-scale=1, width=device-width, viewport-fit=cover">
,並對您的應用程式樣式進行一些修改,方法是將 padding: env(safe-area-inset-top)
加入您的 index.css
檔案,以避免螢幕瀏海後面的不安全區域。
啟動故事版圖片
為了支援更新的外觀規格和分割畫面/滑動覆蓋多工處理,使用了啟動故事版圖片。
- 圖片不是針對特定裝置的。
- 圖片會縮放以填滿可用的視窗 (同時保持長寬比)。
- 圖片的外邊緣會被裁剪,並且裁剪量會因裝置和視窗而異。
- 無需為每個可能的裝置、視窗和方向提供圖片;iOS 會自動選擇最適合情況的圖片。
設計啟動故事版圖片
設計啟動故事版圖片的關鍵是了解圖片的邊緣幾乎肯定會被裁剪。因此,不應將任何重要資訊放置在提供給啟動故事版的任何圖片的邊緣附近。只有中心是安全區域,這幾乎可以保證遵循 Apple 的建議呈現未填充的使用者介面不會很好地工作。
相反,以下提示應能讓您建立適用於多種外觀規格、視窗和方向的啟動圖片
-
重要的圖形(標誌、圖示、標題)應居中。安全的邊界區域會有所不同,因此您需要進行測試以確保重要的圖形永遠不會被裁剪。更好的是,一開始就不要提供任何重要的圖形。
- 您可以微調這些圖形的位置和大小。
-
使用簡單的色彩沖刷。如果您使用兩種顏色,您會希望一種顏色填滿圖片的上半部分,第二種顏色填滿下半部分。如果您使用漸層,您可能需要確保漸層的中間與圖片的中心對齊。
-
不要擔心像素完美 -- 因為圖片會縮放,所以幾乎不可能使圖片完美適合像素網格。由於所有支援的 iOS 裝置都使用視網膜螢幕,因此使用者很難注意到它。
為了有效地使用啟動故事版圖片,了解縮放、慣用語和尺寸類別特性的概念非常重要。在提供給啟動故事版的圖片中,iOS 會選擇最符合裝置和視窗的圖片並呈現該圖片。如果需要,可以只提供一張啟動圖片,但也可以根據特性微調顯示的啟動圖片。在微調時,可以忽略應用程式未定位或不支援的特性。
縮放
縮放 | 裝置 |
---|---|
1x | 所有非視網膜裝置 |
2x | 大多數視網膜裝置 |
3x | iPhone 6+/6s+,7s+ |
一般來說,您會希望提供 2x 和 3x 圖片。Cordova 現在只支援視網膜裝置,因此提供 1x 圖片毫無意義。
慣用語
慣用語 | 裝置 |
---|---|
ipad | 所有 iPad |
iphone | 所有 iPhone 和 iPod Touch |
通用 | 所有裝置 |
除非您需要針對特定裝置慣用語進行微調,否則您只需要提供通用圖片。
尺寸類別
有兩個尺寸類別會同時應用於螢幕軸。窄視窗被視為「壓縮」尺寸類別,其餘視窗被視為「一般」尺寸類別。但是,在將圖片提供給 Xcode 時,必須在「任何 & 壓縮」和「任何 & 一般」之間選擇。為了與原生術語保持一致,此功能將根據「任何」和「壓縮」進行匹配。any
將匹配一般大小的視窗。
注意:此功能使用 com
作為「壓縮」類別的縮寫。
此功能支援以下類別
寬度 | 高度 | 方向 |
---|---|---|
任何 | 任何 | 任何 |
com | 任何 | 直向 |
任何 | com | 橫向 (寬) |
com | com | 橫向 (窄) |
單一圖片啟動畫面
如果您的啟動圖片很簡單,您或許可以避免建立許多不同的啟動圖片,而只提供一張。啟動圖片需要符合以下需求
- 圖片應該是正方形
- 圖片應該夠大,可以容納在 iPad Pro 12.9" 上:2732x2732
- 任何重要的內容都應該在中心範圍內
請記住,圖片會被裁剪,並且可能會根據視窗嚴重裁剪。
建立圖片後,您可以透過將以下內容加入 config.xml
來將其包含在您的專案中
<splash src="res/screen/ios/Default@2x~universal~anyany.png" />
因為只提供一張圖片,所以 iOS 會在每個環境中使用它。
多圖片啟動畫面
如果單一啟動圖片無法滿足您的需求,您可能需要至少提供六張圖片,甚至更多。此外,請記住,無法將圖片微調到特定裝置,而只能微調到裝置類別、顯示因子和視窗大小。
如果您不需要將圖片定位到特定慣用語,您應該建立六張圖片,如下所示
縮放 | 慣用語 | 寬度 | 高度 | 大小 | 檔案名稱 |
---|---|---|---|---|---|
2x* | 通用 | 任何 | 任何 | 2732x2732 | Default@2x~universal~anyany.png |
2x | 通用 | com | 任何 | 1278x2732 | Default@2x~universal~comany.png |
2x | 通用 | com | com | 1334x750 | Default@2x~universal~comcom.png |
3x* | 通用 | 任何 | 任何 | 2208x2208 | Default@3x~universal~anyany.png |
3x | 通用 | 任何 | com | 2208x1242 | Default@3x~universal~anycom.png |
3x | 通用 | com | 任何 | 1242x2208 | Default@3x~universal~comany.png |
* 為了讓 iOS 利用此縮放和慣用語中的其他圖片,必須要有此圖片。
注意:如果 3x 大小看起來太小,那是因為目前只有一個裝置類別具有 3x 密度:iPhone 6+/6s+/7+。
上述內容在 config.xml
中出現時看起來像以下程式碼片段
<splash src="res/screen/ios/Default@2x~universal~anyany.png" />
<splash src="res/screen/ios/Default@2x~universal~comany.png" />
<splash src="res/screen/ios/Default@2x~universal~comcom.png" />
<splash src="res/screen/ios/Default@3x~universal~anyany.png" />
<splash src="res/screen/ios/Default@3x~universal~anycom.png" />
<splash src="res/screen/ios/Default@3x~universal~comany.png" />
如果需要根據裝置慣用語進一步微調,您可以這樣做。這可能看起來像這樣
縮放 | 慣用語 | 寬度 | 高度 | 大小 | 檔案名稱 |
---|---|---|---|---|---|
2x* | iphone | 任何 | 任何 | 1334x1334 | Default@2x~iphone~anyany.png |
2x | iphone | com | 任何 | 750x1334 | Default@2x~iphone~comany.png |
2x | iphone | com | com | 1334x750 | Default@2x~iphone~comcom.png |
3x* | iphone | 任何 | 任何 | 2208x2208 | Default@3x~iphone~anyany.png |
3x | iphone | 任何 | com | 2208x1242 | Default@3x~iphone~anycom.png |
3x | iphone | com | 任何 | 1242x2208 | Default@3x~iphone~comany.png |
2x* | ipad | 任何 | 任何 | 2732x2732 | Default@2x~ipad~anyany.png |
2x | ipad | com | 任何 | 1278x2732 | Default@2x~ipad~comany.png |
* 為了讓 iOS 利用此縮放和慣用語中的其他圖片,必須要有此圖片。
以上在 config.xml
中看起來像這樣
<splash src="res/screen/ios/Default@2x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comcom.png" />
<splash src="res/screen/ios/Default@3x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@3x~iphone~anycom.png" />
<splash src="res/screen/ios/Default@3x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~ipad~anyany.png" />
<splash src="res/screen/ios/Default@2x~ipad~comany.png" />
深色模式
由於 Cordova-iOS@6.1.0,現在可以選擇性地指定在應用程式在深色模式下執行時要使用的不同啟動畫面圖片。可以使用 ~dark
和 ~light
後綴在 config.xml
中定義啟動畫面圖片的亮度。
<!-- Default image to be used for all modes -->
<splash src="res/screen/ios/Default@2x~universal~anyany.png" />
<!-- Image to use specifically for dark mode devices -->
<splash src="res/screen/ios/Default@2x~universal~anyany~dark.png" />
<!-- Image to use specifically for light mode devices -->
<splash src="res/screen/ios/Default@2x~universal~anyany~light.png" />
注意:這從 iOS 13 開始運作。iOS 12 及更低版本將使用未指定亮度後綴的預設啟動畫面。
config.xml 偏好設定
AutoHideSplashScreen
指出是否自動隱藏啟動畫面。啟動畫面會在 SplashScreenDelay
偏好設定中指定的時長後隱藏。
支援的平台
- Android
- iOS
資料類型: Boolean
預設值: true
使用範例
<preference name="AutoHideSplashScreen" value="true" />
FadeSplashScreen
控制啟動畫面淡入和淡出的能力。
對於 Android,它僅控制淡出。
支援的平台
- Android
- iOS
資料類型: Boolean
預設值: true
使用範例
<preference name="FadeSplashScreen" value="false"/>
FadeSplashScreenDuration
控制啟動畫面淡化效果的長度。
支援的平台
- Android
- iOS
資料類型: Float
,單位為毫秒
預設值: 500
使用範例
<preference name="FadeSplashScreenDuration" value="750"/>
iOS 注意:FadeSplashScreenDuration
會包含在 SplashScreenDelay
中,例如,如果您在 config.xml
中定義了 <preference name="SplashScreenDelay" value="3000" />
和 <preference name="FadeSplashScreenDuration" value="1000"/>
- 00:00 - 顯示啟動畫面
- 00:02 - 開始淡化
- 00:03 - 啟動畫面已隱藏
透過 <preference name="FadeSplashScreen" value="false"/>
關閉淡化技術上意味著淡化持續時間為 0
,因此在此範例中,整體啟動畫面延遲時間仍為 3 秒。
注意:這僅適用於應用程式啟動時 - 當您在應用程式的程式碼中手動顯示/隱藏啟動畫面時,您需要將淡出逾時時間納入考量。
navigator.splashscreen.show();
window.setTimeout(function () {
navigator.splashscreen.hide();
}, splashDuration - fadeDuration);
ShowSplashScreenSpinner
控制啟動畫面旋轉動畫。
支援的平台
- iOS
資料類型: Boolean
預設值: true
使用範例
<preference name="ShowSplashScreenSpinner" value="false"/>
SplashScreenDelay
自動隱藏啟動畫面之前等待的時間(以毫秒為單位)。
支援的平台
- Android
- iOS
資料類型: Number
,單位為毫秒
預設值: true
-
Android
-1
:當onPageFinished
被觸發時,啟動畫面將自動隱藏。 -
iOS
3000
:啟動畫面將在 3 秒後自動隱藏。
使用範例
<preference name="SplashScreenDelay" value="3000" />
AndroidPostSplashScreenTheme
設定啟動畫面隱藏後 Activity 的後續佈景主題。
注意:此設定可用,但請自行承擔使用風險。
支援的平台
- Android
資料類型: String
預設值: @style/Theme.AppCompat.NoActionBar
使用範例
<preference name="AndroidPostSplashScreenTheme" value="@style/Theme.AppCompat.NoActionBar"/>
AndroidWindowSplashScreenAnimatedIcon
啟動畫面圖片。此偏好設定適用於動畫和非動畫圖示。目前可接受的資源檔案可以是 XML 向量圖形或 PNG。
:warning: 使用自適應圖示需要設定最低 SDK 版本為 26。
:warning: 某些 XML 向量功能需要設定最低 SDK 版本為 24。
支援的平台
- Android
資料類型: String
,資源檔案的路徑
預設值: 如果未提供,則使用 Cordova 的預設資源。
使用範例
<preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/screen/android/splashscreen.xml" />
AndroidWindowSplashScreenAnimationDuration
定義如果提供動畫向量圖形作為啟動畫面圖片時,圖示動畫的持續時間。
支援的平台
- Android
資料類型: Number
,單位為毫秒
預設值: undefined
使用範例
<preference name="AndroidWindowSplashScreenAnimationDuration" value="3000"/>
AndroidWindowSplashScreenBackground
啟動畫面的背景顏色。
支援的平台
- Android
資料類型: String
,顏色十六進位碼值。
預設值: #ffffff
使用範例
<preference name="AndroidWindowSplashScreenBackground" value="#ffffff" />
AndroidWindowSplashScreenBrandingImage
:warning: 此設定目前不受支援。Cordova Android 用來提供向後相容性的核心啟動畫面相容性程式庫尚未實作此功能。請參閱 Google Android 問題追蹤器
AndroidWindowSplashScreenIconBackgroundColor
啟動畫面圖示的背景顏色。有助於增加背景和圖示之間的對比度,以便區隔開來。
支援的平台
- Android
資料類型: String
,顏色十六進位碼值。
預設值: undefined
使用範例
<preference name="AndroidWindowSplashScreenIconBackgroundColor" value="#c0c0c0" />
JavaScript 公開 API
navigator.splashscreen.hide
關閉啟動畫面。
支援的平台
- Android
- iOS
使用範例
navigator.splashscreen.hide();
iOS 特性
config.xml
檔案的 AutoHideSplashScreen
設定必須為 false
。若要延遲隱藏啟動畫面兩秒鐘,請在 deviceready
事件處理常式中新增一個計時器,如下所示:
setTimeout(function() {
navigator.splashscreen.hide();
}, 2000);
navigator.splashscreen.show
顯示啟動畫面。
支援的平台
- iOS
使用範例
navigator.splashscreen.show();
在應用程式啟動且觸發 deviceready
事件之前,您的應用程式無法呼叫 navigator.splashscreen.show()
。但由於啟動畫面通常是在您的應用程式啟動之前可見,這似乎會破壞啟動畫面的目的。在 config.xml
中提供任何參數將在您的應用程式啟動後以及完全啟動並收到 deviceready
事件之前,立即自動 show
顯示啟動畫面。因此,您不太可能需要呼叫 navigator.splashscreen.show()
來使啟動畫面在應用程式啟動時可見。
怪癖與已知問題
iOS
-
在 iOS 中,啟動畫面圖片稱為啟動影像。這些影像在 iOS 上是強制性的。
-
目標裝置上的應用程式可能不會反映影像變更 當您在目標裝置上執行應用程式後,iOS 會快取啟動影像。不幸的是,當您變更影像時,iOS 並不會使快取失效,這表示您仍然會看到舊的啟動影像。您應該:刪除應用程式,或重置內容和設定 (模擬器)。
-
從 CLI 啟動時,模擬器可能不會顯示預期的影像 當 Xcode 部署到特定的模擬器時,它只會複製符合模擬器特性的資源。例如,如果您嘗試在 iPhone 6s Plus 模擬器上執行應用程式,則只會複製 @3x 啟動影像。但是,當從 CLI 編譯時,預設會假設為 iPhone 5s,這表示只會複製 @2x 啟動影像。除非您的啟動影像明顯不同,否則很可能不會注意到差異,但這表示唯一準確的測試方法是在實體裝置上進行測試。
-
必須提供
anyany
才能使用其他變體 如果您沒有為特定比例和慣用語提供啟動影像的anyany
版本,則會忽略其他變體(例如anycom
、comany
和comcom
)。
Android
- 從 Android Studio 或 Cordova CLI 啟動應用程式時,Android 12 不會顯示啟動畫面。 這是 Android 12 已知的問題。將應用程式上傳到裝置或模擬器後,退出並開啟應用程式將會顯示啟動畫面。如果未顯示變更,請嘗試執行清除建置。此問題已在 Android 13 中修正。