Говорят, что первое впечатление – самое важное.
В отношении мобильных приложений, первое впечатление создаётся с помощью экранов-заставок. Однако заставки на Android с самого начала имели проблемы.
В Android очень много API, позволяющих выполнять те или иные задачи, но в случае с экранами-заставками API для их создания не было. В результате приложения реализовывали свои заставки по-разному, и, конечно же, это привело к отсутствию единообразия во всей экосистеме.
Именно эту проблему пытается решить SplashScreen Compat API. Единообразие при работе с заставками на всех версиях ОС и уменьшение количества работы для разработчиков при реализации функций.
Подключение
Добавьте зависимость в build.gradle модуля приложения (не забудьте проверить на наличие последней версии).
Обратите внимание, что библиотека требует от вас использовать compileSdkVersion 31 или выше.
Настройка
Способ настройки заставки немного необычный. Вы создаёте кастомную тему и устанавливаете для этой темы атрибуты.
- Новая тема, которая будет использована для заставки. Она должна наследовать от Theme.SplashScreen. В этом примере тема, используемая во всём приложении, называется Theme.App, поэтому создаётся новая тема Theme.App.Starting.
- Цвет, который будет использоваться в качестве сплошного цвета фона на экране-заставке.
- Иконка для заставки. Если не задано, вместо него будет использоваться иконка приложения. Обратите внимание, что это может быть анимированная иконка, реализованная с помощью AnimationDrawable или AnimatedVectorDrawable (в API 31 и ниже AnimatedVectorDrawable не поддерживается). Продолжительность анимации необходимо указать, если вы используете анимированную иконку.
- Цвет фона иконки. Полезно в случае, если хочется изменить контраст между цветом фона заставки и цветом иконки.
- Необязательное изображение бренда, которое будет отображаться внизу экрана (однако, документация не рекомендует использовать его).
- Собственно тема приложения, которая будет использоваться, когда заставка исчезнет.
Использование
В AndroidManifest.xml вашего приложения замените текущую тему приложения на новую созданную.
Затем установите заставку перед setContentView().
Как правило, основной причиной отображения заставки является завершение процесса инициализации. Вы можете определить условие, которое необходимо для того, чтобы скрыть заставку, чтобы заставка сохранялась столько времени, сколько необходимо.
Кроме того, вы можете настроить анимацию выхода из заставки, но, на мой взгляд, в этом нет необходимости, и вам нужно как можно скорее скрывать заставку (даже малейшая задержка может быть создать у пользователя впечатление о медленной работе приложения).
Надеюсь, вы получили представление о AndroidX SplashScreen Compat и можете сделать запуск своего приложения единообразным на любой версии ОС.
Удачного кодинга!