啟動顯示畫面- Xamarin | Microsoft Learn

文章推薦指數: 80 %
投票人數:10人

Android 應用程式需要一些時間才能啟動,特別是在第一次在裝置上啟動應用程式時。

啟動顯示畫面可能會向使用者顯示啟動進度,或表示商標。

跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge InternetExplorer和MicrosoftEdge的詳細資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 列印 Twitter LinkedIn Facebook 電子郵件 目錄 啟動顯示畫面 發行項 09/21/2022 11位參與者 本文內容 下載範例 Android應用程式需要一些時間才能啟動,特別是在第一次在裝置上啟動應用程式時。

啟動顯示畫面可能會向使用者顯示啟動進度,或表示商標。

概觀 Android應用程式需要一些時間才能啟動,特別是在第一次在裝置上執行應用程式時,(有時也稱為冷啟動)。

啟動顯示畫面可能會向使用者顯示啟動進度,或者它可能會顯示商標資訊來識別及推廣應用程式。

本指南討論一種在Android應用程式中實作啟動顯示畫面的技術。

其涵蓋下列步驟: 建立啟動顯示畫面的可繪製資源。

定義將顯示可繪製資源的新主題。

將新的活動新增至應用程式,以作為上一個步驟中建立的主題所定義的啟動顯示畫面。

規格需求 本指南假設應用程式以AndroidAPI層級21或更新版本為目標。

應用程式也必須有新增至專案的Xamarin.Android.Support.v4和Xamarin.Android.Support.v7.AppCompatNuGet套件。

本指南中的所有程式碼和XML都可以在本指南的SplashScreen範例專案中找到。

實作啟動顯示畫面 轉譯和顯示啟動顯示畫面的最快方式是建立自訂主題,並將其套用至展示啟動顯示畫面的活動。

轉譯活動時,它會載入主題,並將主題所參考的可繪製資源(套用至活動的背景)。

此方法可避免建立版面配置檔案的需求。

啟動顯示畫面會實作為活動,以顯示品牌可繪製、執行任何初始化,以及啟動任何工作。

啟動應用程式之後,啟動顯示畫面活動會啟動主要活動,並從應用程式返回堆疊中移除本身。

建立啟動顯示畫面的可繪製 啟動顯示畫面會在啟動顯示畫面活動的背景中顯示可繪製的XML。

您必須使用點陣圖影像(,例如PNG或JPG),才能顯示影像。

範例應用程式會定義稱為splash_screen.xml的可繪製專案。

此可繪製專案會使用圖層清單將啟動顯示畫面影像置中,如下列xml所示: 這會layer-list將啟動顯示影像放在資源所指定的背景色彩上@color/splash_background。

範例應用程式會在Resources/values/colors.xml檔案中定義此色彩: ... #FFFFFF 如需物件的詳細資訊Drawable,請參閱AndroidDrawable上的Google檔。

實作主題 若要建立啟動顯示畫面活動的自訂主題,請編輯(或新增)檔案值/styles.xml,並建立啟動顯示畫面的新style元素。

範例值/style.xml檔案如下所示,其中包含style名為MyTheme.Splash的檔案: @drawable/splash_screen true true @null true MyTheme.Splash非常spartan–它會宣告視窗背景、明確地從視窗移除標題列,並宣告它是全螢幕。

如果您想要在活動擴充第一個版面配置之前,建立模擬應用程式UI的啟動顯示畫面,您可以使用windowContentOverlay,而不是windowBackground在樣式定義中使用。

在此情況下,您也必須修改可繪製splash_screen.xml,使其顯示UI的模擬。

建立啟動顯示活動 現在,我們需要新的Android活動來啟動,其中包含啟動顯示影像並執行任何啟動工作。

下列程式碼是完整的啟動顯示畫面實作範例: [Activity(Theme="@style/MyTheme.Splash",MainLauncher=true,NoHistory=true)] publicclassSplashActivity:AppCompatActivity { staticreadonlystringTAG="X:"+typeof(SplashActivity).Name; publicoverridevoidOnCreate(BundlesavedInstanceState,PersistableBundlepersistentState) { base.OnCreate(savedInstanceState,persistentState); Log.Debug(TAG,"SplashActivity.OnCreate"); } //Launchesthestartuptask protectedoverridevoidOnResume() { base.OnResume(); TaskstartupWork=newTask(()=>{SimulateStartup();}); startupWork.Start(); } //Simulatesbackgroundworkthathappensbehindthesplashscreen asyncvoidSimulateStartup() { Log.Debug(TAG,"Performingsomestartupworkthattakesabitoftime."); awaitTask.Delay(8000);//Simulateabitofstartupwork. Log.Debug(TAG,"Startupworkisfinished-startingMainActivity."); StartActivity(newIntent(Application.Context,typeof(MainActivity))); } } SplashActivity明確使用在上一節中建立的主題,覆寫應用程式的預設主題。

不需要在中OnCreate載入版面配置,因為主題會將可繪製的宣告為背景。

請務必設定屬性,NoHistory=true讓活動從返回堆疊中移除。

若要防止[上一頁]按鈕取消啟動程式,您也可以覆寫OnBackPressed並讓它不執行任何動作: publicoverridevoidOnBackPressed(){} 啟動工作會在中OnResume以非同步方式執行。

這是必要的,因此啟動工作不會變慢或延遲啟動畫面的外觀。

當工作完成時,SplashActivity將會啟動MainActivity,而且使用者可能會開始與應用程式互動。

這個新的SplashActivity設定為應用程式的啟動器活動,方法是將MainLauncher屬性設定為true。

因為SplashActivity現在是啟動器活動,所以您必須編輯MainActivity.cs,並從中移除MainLauncher屬性MainActivity: [Activity(Label="@string/ApplicationName")] publicclassMainActivity:AppCompatActivity { //Codeomittedforbrevity } 橫向模式 在先前步驟中實作的啟動顯示畫面會在直向模式和橫向模式中正確顯示。

不過,在某些情況下,如果啟動顯示影像是全螢幕),則必須針對直向和橫向模式使用個別啟動顯示畫面(。

若要新增橫向模式的啟動顯示畫面,請使用下列步驟: 在[資源/可繪製]資料夾中,新增您想要使用的啟動顯示畫面影像橫向版本。

在此範例中,splash_logo_land.png是上述範例中使用的標誌橫向版本,(使用白色字母而非藍色)。

在[資源/可繪製]資料夾中,建立先前定義(的橫向版本layer-list,splash_screen_land.xml)。

在此檔案中,將點陣圖路徑設定為啟動顯示畫面影像的橫向版本。

在下列範例中,splash_screen_land.xml會使用splash_logo_land.png: 如果資源/值-land資料夾不存在,請建立它。

將檔案colors.xml和style.xml新增至值登陸(這些檔案可以從現有的值/colors.xml和值/style.xml檔案)複製和修改。

修改值-登陸/style.xml,使其使用的可windowBackground繪製橫向版本。

在此範例中,會使用splash_screen_land.xml: @drawable/splash_screen_land true true @null true 修改值登陸/colors.xml,以設定您想要用於啟動顯示畫面橫向版本的色彩。

在此範例中,啟動顯示背景色彩會針對橫向模式變更為藍色: #2196F3 #1976D2 #FFC107 #F5F5F5 #3498DB 再次建置並執行應用程式。

顯示啟動顯示畫面時,將裝置旋轉為橫向模式。

啟動顯示畫面會變更為橫向版本: 請注意,使用橫向模式啟動顯示畫面不一定會提供順暢的體驗。

根據預設,Android會以直向模式啟動應用程式,並將它轉換成橫向模式,即使裝置已經處於橫向模式也一樣。

因此,如果在裝置處於橫向模式時啟動應用程式,裝置會短暫呈現直向啟動顯示畫面,然後以動畫顯示從直向旋轉到橫向啟動顯示畫面。

不幸的是,即使在啟動顯示活動的旗標中指定,這個初始直向到橫向轉換也會發生ScreenOrientation=Android.Content.PM.ScreenOrientation.Landscape。

解決此問題的最佳方式是建立單一啟動顯示畫面影像,以在直向和橫向模式中正確呈現。

總結 本指南討論如何在Xamarin.Android應用程式中實作啟動顯示畫面;也就是,將自訂主題套用至啟動活動。

相關連結 SplashScreen(範例) 圖層清單可繪製 材質設計模式-啟動畫面 本文內容



請為這篇文章評分?