Dodaj ekran powitalny

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

Na tej stronie znajdziesz szczegółowe instrukcje wdrażania, które pomogą Ci dodać ekran powitalny za pomocą SplashScreenbiblioteki w taki sposób, 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 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 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, 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 elementu rysowalnego 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 programu uruchamiającego 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 działaniu początkowym 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.