Dodaj ekran powitalny

Jeśli Twoja aplikacja implementuje niestandardowy ekran powitalny lub używa motywu launchera, przenieś ją do biblioteki SplashScreen dostępnej w Jetpacku, aby mieć pewność, że będzie się ona prawidłowo wyświetlać we wszystkich wersjach Wear OS.

Instrukcje implementacji krok po kroku znajdziesz na tej stronie. Dowiesz się z nich, jak dodać ekran powitalny za pomocą biblioteki SplashScreen, aby spełniał on wytyczne projektowe.

Dodawanie zależności

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

Groovy

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

Kotlin

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

Aby korzystać z domyślnych wymiarów Wear OS, używaj wersji 1.0.1 lub nowszej.

Dodawanie motywu

Utwórz motyw ekranu powitalnego w pliku 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 Theme.SplashScreen.IconBackground.

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

<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 ikony innej niż okrągła, musisz ustawić pod nią 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">
    <!-- Set a white background behind the splash screen icon. -->
    <item name="windowSplashScreenIconBackgroundColor">@android:color/white</item>
</style>

Pozostałe atrybuty są opcjonalne.

Tworzenie elementu rysowalnego dla motywu

Motywy ekranu powitalnego wymagają elementu rysowalnego, który należy przekazać do atrybutu windowSplashScreenAnimatedIcon. Możesz go na przykład utworzyć, dodając nowy plik res/drawable/splash_screen.xml i używając ikony launchera aplikacji oraz prawidłowego rozmiaru ikony ekranu powitalnego:

<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 ekranu powitalnego jest zdefiniowany w pliku res/values/dimens.xml i różni się w zależności od tego, czy ikona jest okrągła:

<resources>
    <!-- Round app icon can take all of default space -->
    <dimen name="splash_screen_icon_size">48dp</dimen>
</resources>

...czy nieokrągła, a zatem musi używać tła ikony:

<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 aktywności początkowej – zwykle tych, które definiują element launchera lub są eksportowane – motywem utworzonym w poprzednim kroku:

<activity
    android:name=".snippets.SplashScreenActivity"
    android:exported="true"
    android:taskAffinity=""
    android:theme="@style/Theme.App.Starting">
    <!-- ... -->
</activity>

Aktualizowanie aktywności początkowej

Zainstaluj ekran powitalny w aktywności początkowej przed wywołaniem super.onCreate() i wczytaniem elementu kompozycyjnego:

class SplashScreenActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        installSplashScreen()
        super.onCreate(savedInstanceState)

        setContent {
            WearApp()
        }
    }
}

Dodatkowe materiały

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