Экран-заставка — это первый экран, который появляется при запуске приложения Android. Он используется для отображения индикатора выполнения или отображения важной информации о приложении до того, как оно будет готово к использованию. Это может помочь улучшить работу пользователей, пока они ждут загрузки приложения. Существует несколько способов создания заставки в Android, и у каждого есть свои преимущества и недостатки. В этой статье мы рассмотрим некоторые из наиболее распространенных методов создания заставки в Android.

Способ 1: использование активности

Самый простой и понятный способ отобразить заставку в Android — создать действие, специально предназначенное для этой цели. Это действие будет первым экраном, который отображается при запуске приложения, и будет отображаться до тех пор, пока основное действие не будет готово к отображению.

Вот код для SplashScreenActivity в Android Kotlin:

class SplashScreenActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        // Start the main activity after a delay
        Handler().postDelayed({
            startActivity(Intent(this, MainActivity::class.java))
            finish()
        }, 2000)
    }
}

В этом коде SplashScreenActivity расширяется от AppCompatActivity и устанавливает представление содержимого в файл макета для экрана-заставки с помощью setContentView(R.layout.activity_splash). Задержка в 2 секунды реализована с помощью класса Handler и метода postDelayed, после чего запускается основная активность с помощью класса Intent. Метод finish вызывается для удаления активности экрана-заставки из стека задач, гарантируя, что пользователь не сможет вернуться к ней.

Важно, чтобы продолжительность экрана-заставки была как можно короче, так как длинный экран-заставка может негативно повлиять на общий пользовательский опыт.

Чтобы завершить реализацию экрана-заставки, нам нужно указать действие экрана-заставки в файле AndroidManifest.xml в качестве действия по умолчанию, которое должно запускаться при запуске приложения.

<activity
    android:name=".SplashScreenActivity"
    android:theme="@style/SplashScreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Здесь SplashScreenActivity указывается как действие по умолчанию, запускаемое с темой @style/SplashScreen.

Наконец, нам нужно создать файл макета для экрана-заставки.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF5733"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/splash_logo"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Loading..."
        android:textColor="#FFFFFF"
        android:textSize="24sp"/>

</LinearLayout>

Способ 2: API заставки

Начиная с Android 12, API SplashScreen включает новую анимацию запуска приложений для всех приложений при работе на устройстве с Android 12 или выше. Это включает в себя движение в приложении при запуске, заставку, показывающую значок вашего приложения, и переход к вашему приложению. SplashScreen является окном и, следовательно, закрывает активность. — Android-разработчики

С этим новым API-интерфейсом Splashscreen нам больше не нужно делать отдельное действие для экрана-заставки. Чтобы использовать SplashScreen API, вам нужно иметь compileSdkVersion не менее 31. Вам также нужно будет добавить следующую зависимость в ваш app/build.gradle:

implementation 'androidx.core:core-splashscreen:1.0.0-beta02'

Далее нам нужно создать тему. Эта тема описывает, как будет выглядеть SplashScreen. Убедитесь, что родителем вашей темы является Theme.SplashScreen.

<style name="Theme.App.Starting" parent="Theme.SplashScreen">
   <!-- Set the splash screen background, animated icon, and animation duration. -->
   <item name="windowSplashScreenBackground">@color/...</item>

   <!-- Use windowSplashScreenAnimatedIcon to add either a drawable or an
        animated drawable. One of these is required. -->
   <item name="windowSplashScreenAnimatedIcon">@drawable/...</item>
   <!-- Required for animated icons -->
   <item name="windowSplashScreenAnimationDuration">200</item>

   <!-- Set the theme of the Activity that directly follows your splash screen. -->
   <!-- Required -->
   <item name="postSplashScreenTheme">@style/Theme.App</item>
</style>

postSplashScreenTheme должна быть установлена ​​на тему, которую вы хотите использовать в своем приложении.

Мы почти закончили. Нам просто нужно сделать еще 2 вещи. Прежде всего нам нужно убедиться, что наша тема SplashScreen используется приложением при запуске, установив ее в нашем AndroidManifest:

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

Наконец, нам просто нужно «установить» SplashScreen в нашей активности запуска. Важно сделать это до super.onCreate() этого действия.

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

       super.onCreate(savedInstanceState)
       setContentView(R.layout.main_activity)
   }
}

Теперь вы создали SplashScreen с новым API SplashScreen.

Заключение

В заключение, создать заставку в Android относительно просто, и есть несколько способов сделать это. Приведенные выше методы являются наиболее распространенными, которые вы увидите в проекте Android.