Google додав API, який дозволяє стороннім програмам запуску, таким як Nova Launcher, показувати більш плавну анімацію переходів. Зараз він є лише на телефонах Pixel.
У минулому програми запуску сторонніх розробників часто забезпечували кращий досвід, ніж стандартна програма запуску, яка є на більшості телефонів Android. Однак із оновленим екраном останніх програм і впровадженням жестів в Android 9 Pie сторонні програми запуску були поставлені в невигідне становище, оскільки ці нові можливості були інтегровані в запас програма запуску. З часом Google намагався зробити сторонню програму запуску не такою жахливою під час використання жестів, і нещодавно це їм справді вдалося.
Якщо ви використовували нещодавню бета-версію Nova Launcher на телефоні Google Pixel протягом останніх кількох місяців, ви могли помітити плавну анімацію під час використання навігації жестами. На жаль, ви не побачите цих самих анімацій під час використання Nova Launcher на будь-якому іншому пристрої, принаймні на даний момент. Щоб зрозуміти, чому нам спочатку потрібно коротко пояснити, що відрізняє сторонні програми запуску, такі як Nova Launcher, від стандартних програм запуску, таких як Pixel Launcher від Google.
Google вперше представив навігацію жестами в Android 9 Pie. Щоб зробити жести максимально плавними, Google потрібно було зробити переходи додатків плавними. Вони також хотіли надати користувачам доступ до всього списку додатків із екрана останніх додатків. Щоб виконати обидва ці дії, Google вирішив перемістити код, який обробляє екран останніх програм, з Android SystemUI до Launcher3, програми запуску Android з відкритим кодом, від якої розгалужено більшість стандартних програм запуску OEM. Таким чином, QuickStep компонент був народжений, і через його привілейовану природу Android дозволяє встановити лише попередньо встановлену програму запуску як постачальника останніх програм. Це може бути замінено кореневим доступом якщо програма запуску третьої сторони підтримує це, але для більшості користувачів це означає, що програма запуску стороннього виробника завжди покладається на стандартну програму запуску для обробки жестів і екрана останніх програм. Результат, як більшість із вас, напевно, стикалося, може бути дещо невдалим, із переходами, які не виглядають плавними та плавними. Якщо ви не використовуєте телефон Google Pixel.
На більшості телефонів Google Pixel існує API, який сторонні програми запуску можуть використовувати, щоб зробити перехід із програми назад на головний екран набагато оригінальнішим. Деякі програми запуску сторонніх виробників, наприклад Ніагара і вищезгаданий Nova Launcher використовують переваги цього API, хоча останній включає його лише у свій версії 7 у розробці. Коли використовується цей API, програма запуску стороннього виробника отримує намір і зворотний виклик від QuickStep щоразу, коли користувач виконує жест, щоб повернутися додому. Потім програма запуску третьої сторони може підказати системі жестів, як анімувати вікно, коли воно згортається до значка програми.
Ось приклад того, як це виглядає в Niagara Launcher, люб’язно наданий розробником програми запуску 8bitpit:
А ось порівняння, яке показує, як виглядає анімація на ASUS ROG Phone 5 і Google Pixel 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 після Грудневе падіння функції 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 щоразу, коли вони перебазуються поверх майбутній Android 12 реліз. Фактично, один OEM-виробник, з яким ми спілкувалися, ASUS, сказав нам, що вони планують включити цей API у своє оновлення Android 12. Ми не знаємо, чи Google повідомила про цю зміну виробникам обладнання, але ми сподіваємося, що більше виробників помітять цю зміну і вирішили включити API у свої форки Launcher3, щоб покращити досвід використання сторонніх розробників пускові установки.
Однак на цьому робота не закінчиться. Навіть після включення цього API, потрібно виконати ще багато роботи, щоб досягти паритету між сторонніми програмами запуску та програмами запуску OEM. Наприклад, деякі OEM-пристрої мерехтять, коли користувач торкається екрана до появи анімації на головному екрані. Іноді замість вибраного стороннього додатка запуску з’являється програма запуску системи (зі мною таке траплялося кілька разів). Покращена анімація переходу — це добре, але ніхто не хоче мати справу з помилками ні в програмі запуску, ні на екрані останніх програм, тому кадри коду жестів потребують очищення та/або стандартизації.
Дякуємо Кевіну Баррі та Пітеру Хуберу за допомогу в цій статті!