Домой Android разработкаUI и UX. Графика в Android Как создать Splash Screen в Android приложении

Как создать Splash Screen в Android приложении

by dilix
Splashscreen в Android приложении

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

Давайте разберем три способа создания таких экранов:

  1. Переход между двумя Activity с заданным промежутком времени
  2. Использование одного Activity с заменой темы приложения при показе пользователю
  3. Переход между двумя Activity, первое из них без макета

У нас будет вымышленное приложение “Доставка пиццы”, ссылка на исходный код можно будет в конце статьи.

Переход между двумя Activity с заданным промежутком времени

Создаем проект, выбираем пустое Activity, сразу же создадим еще 1 пустое Activity с названием SplashActivityOne.

Открываем layout, делаем серый фон и картинку по центру, к ней добавляем текст.

Как создать Splash Screen в Android приложении

В Preview можно увидеть визуализированный макет.

Как создать Splash Screen в Android приложении

Открываем исходный код SplashActivityOne и добавим переход на основную Activity через 2 секунды.

Как создать Splash Screen в Android приложении

Итак, что же мы сделали?

  1. Создаем нашу заставку на полный экран, в него включены 4 и 5 действие. Четвертым действием мы указываем размеры экрана в как полный экран, а пятым — скрываем ActionBar
  2. Подгружаем наш созданный макет в Actiivty
  3. Планируем действие, а именно переход на MainActivity спустя 2 секунды. overridePendingTransition отвечает за анимацию переходов между Activity
  4. Делаем Activity на полный экран
  5. Скрываем ActionBar

В AndroidManifest необходимо указать, что наш Splash является загрузочным Activity.

Как создать Splash Screen в Android приложении

Запускаем приложение и наслаждаемся результатом.

Как создать Splash Screen в Android приложении

Спустя 2 секунды мы попадаем в наше основное Activity.

Использование одного Activity с заменой темы приложения при показе пользователю

В уже созданном приложении создадим новое пустое Activity SplashActivityTwo.

Перейдем в файл стилей (res/values/styles.xml) и создадим новую тему для будущего Splash screen.


Как создать Splash Screen в Android приложении

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

В AndroidManifest.xml указываем тему для нашей Acitivty и основную тему для всего приложения.

Как создать Splash Screen в Android приложении

Добавляем смену темы в нашей Activity.

Как создать Splash Screen в Android приложении

По шагам:

  1. (Debug) Задержка, чтобы успеть сделать скриншот
  2. Меняем стиль заставки на обычную тему

После запуска мы получаем следующее:

Как создать Splash Screen в Android приложении

После полезной нагрузки (в нашем случае засыпание потока на 5 секунд) меняется тема Activity и получаем домашний экран нашего приложения.

Как создать Splash Screen в Android приложении

Переход между двумя Activity, первое из них без макета

Этот вариант похож на второй вариант, но вместо замены темы Activity здесь используется экрана. В SplashActivity идет переход на MainActivity без всяких задержек, но с показом логотипа.

Необходимо добавить тему для показа логотипа и текста в файле res/values/styles.xml, возьмем ее из нашего второго варианта.

Как создать Splash Screen в Android приложении

Создадим новую пустую Activity SplashActivityThree без макета страницы, в манифесте сделаем ее стартовой и пропишем тему с фоновым изображением.

Как создать Splash Screen в Android приложении

В SplashActivityThree прописываем обычный переход на основную Activity в методе onCreate

Как создать Splash Screen в Android приложении

В таком варианте у нас показывается заставка буквально доли секунды и запускается основная Activity.

Исходный код доступен по ссылке.

Самым правильным является второй способ создания SplashScreen, так как нет излишних активити с их переходами и когда приложение будет готово для отображения, просто меняется тема.

Сергей Шевелев

Статья написана в рамках конкурса статей проекта droDev.
Автор статьи: Сергей Шевелев

Хочешь обсудить Android разработку?
Заходи к нам Вконтакте, на Facebook и в Телеграм!

Добавить комментарий

4 комментария

Sermyagin Evgeny 04.08.2023 - 15:24

Чтобы поставить свое лого logo.png например, нужно загрузить 512 px png, прописать в splashbackground

я понимаю на всех устройствах будет отображаться правильно лого?

Ответить
dilix 04.08.2023 - 15:36

Надо попробовать можно ли туда загрузить SVG, если нет, то логичнее, наверное, разложить несколько лого по папкам в зависимости от DPI.

Но в целом ваше решение должно сработать.

Ответить
AnonymousAuthor228 05.11.2023 - 23:18

Дурацкий пост… В начале говорится о том, что Splash Screen’ы нужны чтобы в начале не показывался белый экран, в итоге мы получаем не только белый экран, а ещё и задержку в 2 секунды. Гениально………….

Ответить
dilix 05.11.2023 - 23:22

Если использовать подход «Использование одного Activity с заменой темы приложения при показе пользователю», то при windowBackground не будет изначально белого экрана. Начиная с android 12 появились новые опции работы со сплешом, вероятно надо обновить статью.

Ответить

Может быть интересно

Этот сайт использует Cookie файлы для улучшения вашего пользовательского взаимодействия. Используя данный сайт вы соглашается с этим. Принять Читать

Политика конфиденциальности и Cookies
%d