Статические ярлыки были представлены в Android 7.1 (API Level 25) и упрощают предоставление пользователям быстрого доступа к вашему приложению.
Я большой поклонник анимационной библиотеки с открытым исходным кодом Airbnb Lottie. Анимации, как известно, сложно создавать на Android, и эта библиотека избавляет от всех этих проблем. Чтобы продемонстрировать эту библиотеку, Airbnb выпустила пример приложения в магазине игр. Я часто использую это для просмотра анимации и экспериментов с потрясающей анимированной типографикой.
Я решил добавить статические ярлыки в этот пример приложения, чтобы получить доступ ко всем его функциям еще быстрее. Пример приложения состоит из действия основного списка с 4 параметрами.
Нажатие на эти параметры запустит либо фрагмент, либо активность. Моя цель состояла в том, чтобы обойти этот начальный экран с ярлыками и запускать каждую функцию непосредственно с домашнего экрана пользователя.
Сначала мне нужно получить несколько значков для моих ярлыков!
Иконки
Прежде чем приступить к созданию ярлыков, стоит прочитать Руководство по дизайну ярлыков приложений. Здесь описаны особенности создания ярлыка. Изначально я использовал фантастическую Студию Android Asset от Романа Нурика, так как он уже разработал генератор иконок ярлыков. Однако после некоторой обратной связи с общественностью я создал свои собственные векторные чертежи (студия ресурсов Android генерирует только png). Для справки: внешний круг имеет размеры 48 dp на 48 dp, а внутренний значок должен иметь размер 24 dp на 24 dp. Даже такой новичок в рисовании, как я, смог создать несколько прилично выглядящих иконок!
Код
Следуя шагам в dev docs, вы должны сначала определить файл ярлыков.xml в своем манифесте.
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
Затем создайте файл ярлыков и добавьте соответствующие ярлыки.
<shortcut android:enabled="true" android:icon="@drawable/ic_shortcut_animation_viewer" android:shortcutDisabledMessage="@string/shortcut_disabled" android:shortcutId="animationViewer" android:shortcutLongLabel="@string/shortcut_animation_viewer" android:shortcutShortLabel="@string/shortcut_animation_viewer_short" tools:targetApi="n_mr1"> <intent android:action="com.airbnb.lottie.samples.shortcut.VIEWER" android:targetClass="com.airbnb.lottie.samples.MainActivity" android:targetPackage="com.airbnb.lottie"/> </shortcut> <!--More shortcuts here-->
Это очень просто! После определения того, какой значок и текст вы хотите показать, в основном нужно указать целевое действие и класс.
В случае с Лотти я хотел запустить действие основного списка для каждого ярлыка, а затем открыть соответствующий экран, таким образом, кнопка «Назад» будет перемещаться к списку, как и ожидалось, а не выходить из приложения. Для этого я установил определенное действие для каждого ярлыка, а затем получил это действие с помощью getIntent().getAction().
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); handleShortcut(getActivity().getIntent().getAction()); } ..... /** * Starts the relevant activity/fragment based on which shortcut has been pressed * @param intentAction specific shortcut action */ private void handleShortcut(String intentAction) { switch (intentAction) { case SHORTCUT_VIEWER: onViewerClicked(); break; case SHORTCUT_TYPOGRAPHY: onTypographyClicked(); break; case SHORTCUT_TUTORIAL: onAppIntroPagerClicked(); break; case SHORTCUT_FULLSCREEN: onFullScreenClicked(); break; } }
Если вам нужно больше контроля над вашими ярлыками, вы можете использовать динамические ярлыки. ShortcutManagerAPI может создавать, обновлять и удалять ярлыки на лету.
Вот мой запрос на вытягивание для Lottie Android, если вы хотите просмотреть код полностью.
Спасибо за чтение!