Урок по созданию Splash Screen в Android Studio на Kotlin

Почти каждое приложение при запуске на секунду показывает заставку с логотипом или названием. Это называется Splash Screen, и он создаёт первое впечатление у пользователя. Сегодня в Android Studio мы сделаем такую заставку с нуля. В ходе этого занятия я покажу, как с помощью языка Kotlin настроить экран, который появляется при старте программы и плавно переходит к основному содержимому. Это простой урок, доступный даже тем, кто только начал знакомство с разработкой.


Зачем нужен Splash Screen

Заставка выполняет две задачи. Во-первых, она скрывает техническую паузу, пока система загружает компоненты приложения. Во-вторых, это элемент брендинга — пользователь видит логотип и запоминает его. В Android 12 и выше Google добавила встроенную поддержку Splash Screen, но мы сделаем собственную заставку, чтобы она работала одинаково на всех версиях ОС.


Создаём Activity для заставки

Первым делом добавим новый пустой экран. Щёлкните правой кнопкой по папке с исходным кодом, выберите New → Activity → Empty Activity и назовите её SplashActivity. В файле разметки activity_splash.xml поместите логотип (пока можно обойтись крупным текстом) и, например, короткую подпись.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Моё приложение"
        android:textSize="32sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Загрузка..."
        android:textSize="16sp"
        android:layout_marginTop="16dp" />
</LinearLayout>

Настраиваем переход на главный экран

В SplashActivity.kt напишем код, который выдерживает небольшую паузу (например, две секунды), а затем запускает MainActivity и закрывает саму заставку. Для задержки используем Handler с postDelayed — это простой способ, не требующий корутин.

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

        Handler(Looper.getMainLooper()).postDelayed({
            startActivity(Intent(this, MainActivity::class.java))
            finish()
        }, 2000) // 2 секунды
    }
}

Метод finish() убирает SplashActivity из стека, чтобы пользователь не мог вернуться на заставку кнопкой «Назад». Это правильное поведение: заставка показывается один раз при запуске.


Делаем Splash стартовым экраном

По умолчанию приложение открывает MainActivity. Чтобы первой показывалась заставка, откройте AndroidManifest.xml и переместите блок <intent-filter> из MainActivity в SplashActivity. Теперь именно SplashActivity будет точкой входа.

<activity
    android:name=".SplashActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name=".MainActivity"
    android:exported="false" />

Добавляем плавную анимацию (бонус)

Чтобы переход выглядел профессиональнее, можно добавить небольшую анимацию исчезновения заставки. Создайте файл res/anim/fade_out.xml с описанием анимации прозрачности.

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />

Затем в коде SplashActivity перед finish() вызовите overridePendingTransition. Это создаст эффект плавного ухода заставки.

startActivity(Intent(this, MainActivity::class.java))
overridePendingTransition(android.R.anim.fade_in, R.anim.fade_out)
finish()

Несколько замечаний для начинающих

  • Не растягивайте паузу. Две секунды — оптимальное время. Слишком долгая заставка раздражает.
  • Используйте одну тему. Если фон заставки отличается от фона MainActivity, на мгновение может мелькнуть белый экран. Чтобы избежать этого, задайте SplashActivity ту же тему, что и у всего приложения.
  • Проверьте на слабых устройствах. На старых телефонах задержка может быть дольше из-за медленной загрузки классов. Не добавляйте тяжёлые операции в SplashActivity.

Что мы сегодня освоили

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