Dodaj ekran powitalny

Jeśli Twoja aplikacja korzysta z niestandardowego ekranu powitalnego lub motywu programu uruchamiającego, 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.

Na tej stronie znajdziesz szczegółowe instrukcje wdrażania, które pokazują, jak dodać ekran powitalny za pomocą SplashScreen biblioteki, aby spełniał on wytyczne dotyczące projektowania.

Dodawanie zależności

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

Groovy

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

Kotlin

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

Aby uzyskać obsługę 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 symbolu Theme.SplashScreen.
  • Jeśli ikona ma inny kształt, użyj elementu Theme.SplashScreen.IconBackground.

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

<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, która nie jest 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ą przekazania rysunku do atrybutu windowSplashScreenAnimatedIcon. Możesz na przykład utworzyć go, dodając nowy plik res/drawable/splash_screen.xml i używając ikony programu uruchamiającego aplikację 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 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>

…lub nie są okrągłe, więc muszą 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 tej, która definiuje element uruchamiający lub jest w inny sposób eksportowana – 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():

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 aplikacji.