Google добавил API, который позволяет сторонним программам запуска, таким как Nova Launcher, отображать более плавную анимацию перехода. Сейчас он есть только в телефонах Pixel.
В прошлом сторонние приложения запуска часто предоставляли более удобные возможности, чем стандартные программы запуска, которые можно было найти на большинстве телефонов Android. Однако с обновлением экрана последних приложений и появлением жестов в Android 9 Pie сторонние программы запуска оказались в невыгодном положении, поскольку эти новые возможности были интегрированы в стандартную комплектацию. приложение для запуска. Со временем Google попыталась сделать работу сторонних лаунчеров не такой уж ужасной при использовании жестов, и в последнее время им это действительно удалось.
Если вы использовали недавнюю бета-версию Nova Launcher на телефоне Google Pixel в течение последних нескольких месяцев, вы могли заметить плавную анимацию при использовании навигации с помощью жестов. К сожалению, вы не увидите такую же анимацию при использовании Nova Launcher на любом другом устройстве, по крайней мере, на данный момент. Чтобы понять, почему нам сначала нужно кратко объяснить, что отличает сторонние программы запуска, такие как Nova Launcher, от стандартных программ запуска, таких как Google Pixel Launcher.
Google впервые представил навигацию с помощью жестов в Android 9 пирог. Чтобы сделать жесты максимально плавными, Google нужно было сделать переходы между приложениями плавными. Они также хотели предоставить пользователям доступ ко всему списку приложений с экрана последних приложений. Чтобы сделать и то, и другое, Google решил переместить код, обрабатывающий экран последних приложений, из Android. SystemUI to Launcher3, приложение запуска Android с открытым исходным кодом, на основе которого создано большинство стандартных программ запуска OEM. Таким образом Быстрый шаг Компонент появился на свет, и из-за его привилегированного характера Android позволяет устанавливать в качестве поставщика последних приложений только предустановленное приложение запуска. Это может быть переопределено с root-доступом если сторонняя программа запуска поддерживает это, но для большинства пользователей это означает, что стороннее приложение запуска всегда будет использовать стандартную программу запуска для обработки жестов и экрана последних приложений. Результат, как, вероятно, заметило большинство из вас, может быть немного неуклюжим, переходы не выглядят плавными и плавными. Если только вы не используете телефон Google Pixel.
На большинстве телефонов Google Pixel существует API, который сторонние программы запуска могут использовать, чтобы переход из приложения обратно на главный экран выглядел более естественным. Некоторые сторонние приложения запуска, такие как Ниагарская пусковая установка и вышеупомянутый Nova Launcher используют этот API, хотя последний включает его только в свой сборки v7 в разработке. При использовании этого API стороннее приложение запуска получает намерение и обратный вызов от QuickStep каждый раз, когда пользователь выполняет жест пролистывания для перехода домой. Сторонняя программа запуска может затем подсказать системе жестов, как анимировать окно, когда оно сворачивается в значок приложения.
Вот пример того, как это выглядит в Niagara Launcher, любезно предоставлено разработчиком лаунчера. 8битпит:
А вот сравнение, показывающее, как выглядит анимация на ASUS ROG телефон 5 и Гугл Пиксель 4, оба работают под управлением Nova Launcher v7.0.25 (последняя бета-версия на момент публикации) и Android 11:
\r\n https://www.youtube.com/watch? v=equ-8yDw_Do\r\n
Теперь вам может быть интересно: является ли этот API эксклюзивным для телефонов Google Pixel? Ответ: нет, это не так. API является частью Launcher3/QuickStep и можно найти в AOSP, что означает, что он открыт для любого приложения запуска OEM. В то время как API был привержен Launcher3 внутри компании 21 июля 2020 года, кажется, это было объединено с главной веткой AOSP с выпуском Android R QPR1 в декабре.
Кевин Барри, разработчик Nova Launcher и один из первых, кто обнаружил этот API, рассказал нам, что подозревает, что часть Причина, по которой OEM-производители не используют этот API в своих версиях Launcher3, заключается в том, что он появился немного поздно в выпуске Android 11. цикл. Чтобы объединить большие изменения AOSP, требуется немало усилий, и обновление Android R QPR1 определенно содержало немало таких изменений. В прошлые годы мы бы назвали эти выпуски кода «выпуском обслуживания», но Google больше их не делает после сопротивления со стороны OEM-производителей (по крайней мере, я так слышал). Вот почему LineageOS, популярное пользовательское ПЗУ для Android, называет свою последнюю версию «LineageOS 18.1«а не LineageOS 18», чтобы указать, что ПЗУ основано на последней кодовой базе Android 11, а не на исходной версии Android 11.
Также стоит отметить, что этот API доступен только на телефонах Google Pixel после Декабрьский выпуск пиксельных функций, что совпадает с общедоступным выпуском Android R QPR1. И несмотря на то, что Pixel 2 получил свое последнее обновление в декабре, это обновление не включало кодовую базу Android R QPR1, поэтому владельцы Pixel 2, использующие Nova Launcher v7, не имеют такого же опыта, как другие Pixel. (Владельцы Pixel 2 могут загрузить более новую версию Pixel Launcher, которая имеет API от более нового устройства Pixel, но отчеты пользователей указывают анимация по-прежнему глючит, даже если время от времени она работает. Напоминаем, что Pixel Launcher построен на основе Launcher3, как и большинство стандартных программ запуска, но также включает в себя некоторые эксклюзивные функции Pixel.)
Так что же потребуется, чтобы этот API был добавлен на другие устройства Android? К сожалению, на этот вопрос нет простого ответа, потому что мы не знаем точно, как каждый OEM-производитель разрабатывает свое приложение запуска. Учитывая, как Google жестко контролирует полноэкранную навигацию с помощью жестов, мы подозреваем, что большинство OEM-производителей не сильно модифицируют код, связанный с жестами и/или QuickStep. Если только OEM-производитель не приложит все усилия, чтобы отменить фиксацию, сломать код или отказаться от обновления. Launcher3, то мы должны увидеть, как этот API добавляется в OEM-программы запуска всякий раз, когда они перебазируются поверх предстоящий Андроид 12 выпускать. Фактически, один OEM-производитель, с которым мы говорили, ASUS, сказал нам, что они планируют включить этот API в свое обновление Android 12. Мы не знаем, сообщил ли Google об этом изменении OEM-производителям, но мы надеемся, что больше OEM-производителей заметят это изменение. и решили включить API в свои версии Launcher3, чтобы улучшить опыт использования сторонних пусковые установки.
Однако на этом работа не закончится. Даже после включения этого API предстоит еще многое сделать, чтобы достичь паритета между сторонними программами запуска и OEM-программами запуска. Например, некоторые OEM-устройства мерцают, когда пользователь касается экрана, прежде чем появится анимация на главном экране. Иногда вместо выбранного стороннего приложения запуска появляется системное приложение запуска (со мной такое случалось несколько раз). Улучшенная анимация перехода — это хорошо, но никто не хочет иметь дело с ошибками ни в приложении запуска, ни на экране последних приложений, поэтому кадры кода жестов нуждаются в некоторой очистке и/или стандартизации.
Спасибо Кевину Бэрри и Питеру Хуберу за помощь в написании этой статьи!