Android | Михаил Белый

Android | Михаил Белый 

Все про Android

43subscribers

46posts

goals1
$14.65 of $1 319 raised
Поплыву на остров Ко Мадсум кормить диких кабанчиков

Как менять иконку запуска Android-приложения

Пользователям приложения можно предоставить возможность выбирать иконку лаунчера. Это делается для кастомизации, сезонных акций или платного функционала закрытого пейволом.
Реализовать можно через Activity Alias – единственный универсальный механизм подмены иконки. Они должны быть заранее импортированы в проект. Адаптивные векторы с атрибутом <monochrome> будут перекрашиваться в цвета обоев, независимо от выбранного иконки.
Aliases (псевдонимы, точки входа) прописываются в манифесте и ссылаются на существующую активити. Они могут иметь собственный интент-фильтр MAIN+LAUNCHER, иконки и другие параметры. Операционная система найдет псевдоним при парсинге манифеста и добавит ярлык в лаунчер. Чтобы в лаунчере отображалась только одна иконка – один алиас включаем (android:enabled="true"), остальные отключаем.
Управление алиасами осуществляется через PackageManager. Получить текущее состояние алиаса можно вызвав getComponentEnabledSetting. А установить – через setComponentEnabledSetting. Когда мы выбираем иконку, фактически один псевдоним включается, а остальные отключаются. Если иконка еще не выбиралась – отобразится дефолтная из манифеста. После выбора процесс приложения будет убит. Иконка обновится сразу. Есть лаунчеры, которые ее кэшируют и процесс займет до 500 мс.
Если по каким-либо причинам все алиасы отключаются (сброс настроек приложения, переустановка из стороннего маркета, ошибочное обновление) нужна безопасная инициализация, иначе пользователь потеряет ярлык в списке приложений. Для этого в Application.onCreate() нужно пройтись по всем алиасам и если ни один из них не включен – активировать дефолтный.
Таймкоды
0:00 – Макеты приложения
0:33 – Импорт ресурсов
1:16 – Создание адаптивных иконок
1:51 – Настройка алиасов в манифесте
3:03 – Создание Enum-класса с иконками
3:44 – Верстка на Compose
4:32 – Работа с SDK алиасов
6:29 – Метод сброса иконки на дефолтную
Смотреть на Ютубе
Исходники на Гитхабе
Документация в Роадмапе
Subscription levels1

Жалкий детский уровень

$1.32 per month
• Бесконечный респект и признательность 
• Ранний доступ к видео и воркшопам
• Отдельный топик в телеграм-чате с записями реальных Android-собеседований
• Отдельный топик с автоматическими новостями про Android-разработку
+ chat
Go up