Dodaj ekran powitalny

Słowa kluczowe: splashscreen

Jeśli Twoja aplikacja korzysta z niestandardowego ekranu powitalnego lub używa motywu programu uruchamiającego, przenieś ją do biblioteki SplashScreen, dostępnej w Jetpacku, aby zapewnić jej prawidłowe wyświetlanie we wszystkich wersjach Wear OS.

Na tej stronie znajdziesz szczegółowe instrukcje implementacji, które pomogą Ci dodać ekran powitalny za pomocą biblioteki SplashScreen, tak aby spełniał on wytyczne dotyczące projektowania.

Dodawanie zależności

Dodaj do pliku build.gradle modułu aplikacji tę zależność:

Odlotowe

dependencies {
    implementation "androidx.core:core-splashscreen:1.2.0-alpha02"
}

Kotlin

dependencies {
    implementation("androidx.core:core-splashscreen:1.2.0-alpha02")
}

Aby korzystać z domyślnych wymiarów Wear OS, upewnij się, że używasz wersji 1.0.1 lub nowszej.

Dodawanie motywu

Utwórz motyw ekranu powitalnego w res/values/styles.xml. Element nadrzędny zależy od kształtu ikony:

  • Jeśli ikona jest okrągła, użyj Theme.SplashScreen.
  • Jeśli ikona ma inny kształt, użyj elementu Theme.SplashScreen.IconBackground.

Użyj windowSplashScreenBackground, aby wypełnić tło jednym czarnym kolorem. Ustaw wartości postSplashScreenTheme na motyw, którego ma używać aktywność, a windowSplashScreenAnimatedIcon na obiekt rysowalny lub animowany:

<resources>
    <style name="Theme.App" parent="@android:style/Theme.DeviceDefault" />

    <style name="Theme.App.Starting" parent="Theme.SplashScreen">
        <!-- Set the splash screen background to black -->
        <item name="windowSplashScreenBackground">@android:color/black</item>
        <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated
             drawable. -->
        <item name="windowSplashScreenAnimatedIcon">@drawable/splash_screen</item>
        <!-- Set the theme of the Activity that follows your splash screen. -->
        <item name="postSplashScreenTheme">@style/Theme.App</item>
    </style>
</resources>

Jeśli używasz nieokrągłej ikony, pod nią musisz ustawić białe tło. W takim przypadku użyj Theme.SplashScreen.IconBackground jako motywu nadrzędnego i ustaw atrybut windowSplashScreenIconBackgroundColor:

<style name="Theme.App.Starting" parent="Theme.SplashScreen.IconBackground">
    ...
    <!-- Set a white background behind the splash screen icon. -->
    <item name="windowSplashScreenIconBackgroundColor">@android:color/white</item>
</style>

Pozostałe atrybuty są opcjonalne.

Tworzenie pliku rysowanego dla motywu

Motywy ekranu powitalnego wymagają przekazania zasobu graficznego do atrybutu windowSplashScreenAnimatedIcon. Możesz na przykład utworzyć ikonę, dodając nowy plik res/drawable/splash_screen.xml i korzystając z ikony w menu aplikacji, w odpowiednim rozmiarze:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:width="@dimen/splash_screen_icon_size"
        android:height="@dimen/splash_screen_icon_size"
        android:drawable="@mipmap/ic_launcher"
        android:gravity="center" />
</layer-list>

Rozmiar ikony na ekranie powitalnym jest zdefiniowany w res/values/dimens.xml i różni się w zależności od tego, czy ikona jest okrągła:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Round app icon can take all of default space -->
    <dimen name="splash_screen_icon_size">48dp</dimen>
</resources>

...lub nie są okrągłe, dlatego muszą używać tła ikony:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Non-round icon with background must use reduced size to fit circle -->
    <dimen name="splash_screen_icon_size">36dp</dimen>
</resources>

Określanie motywu

W pliku manifestu aplikacji (AndroidManifest.xml) zastąp motyw początkowej aktywności – zwykle te, które definiują element w menu lub są eksportowane w inny sposób – motywem utworzonym w poprzednim kroku:

<manifest>
    <application android:theme="@style/Theme.App.Starting">
       <!-- or -->
       <activity android:theme="@style/Theme.App.Starting">
          <!-- ... -->
</manifest>

Zmień początkową aktywność

Zainstaluj ekran powitalny w działaniu początkowym przed wywołaniem:super.onCreate()

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        // Handle the splash screen transition.
        installSplashScreen()

        super.onCreate(savedInstanceState)
        setContent {
            WearApp("Wear OS app")
        }
    }
}

Dodatkowe materiały

Dowiedz się więcej o ekranach powitalnych i o tym, jak możesz ich używać w swojej aplikacji.