Оцените превью для обновлений некоторых уже существующих функций, а также доступных нововведений, таких как IME animation control.
Синхронизированные анимации IME
Идея заключается в том, что IME (редактор метода ввода) появляется сам по себе, когда требуется ввод с клавиатуры. Это та функциональность, которая нужна пользователям, но она не предоставляет тот опыт, который они хотят. Она создает визуальный разрыв, просто появляясь на месте и заставляя приложения привязываться к их скорректированной компоновке с учетом изменения доступного экранного пространства. Клавиатура на самом деле анимируется… но приложение мгновенно привязывается к размеру пост-анимации, вызывая эту визуальную икоту.
Новые API — это возможность одновременно получать информацию о позиции IME, когда она анимируется (чтобы приложения могли синхронизировать свои собственные анимации), и управлять анимацией IME. Между прослушивателем и элементом управления анимацией приложения имеют достаточно возможностей для создания опыта, который совмещает изменения в пользовательском интерфейсе приложения с анимацией самого IME, обеспечивая гораздо лучшее качество.
Декодер изображения NDK
Еще один новый API, добавленный в Android 11, — это декодер изображений для NDK. Если вы сейчас используете JNI, чтобы декодировать свои изображения через API платформы или что хуже (по крайней мере, с точки зрения размера приложения), объединяя другие библиотеки для обработки декодирования изображений, то есть хорошее решение.
Теперь вы можете использовать новый API NDK ImageDecoder
для обработки изображений в обычных форматах (таких как JPEG, PNG, GIF, WebP и HEIF). Дополнительную информацию смотрите в руководстве NDK. Также советую взглянуть на образец ImageDecoder, особенно Texture.cpp, чтобы узнать, как это работает.
Nullability в Android 11
Мы также добавили новые аннотации nullability к API SDK в Android 11.
В частности, Android 11 ввел аннотации через API, которые могут показывать новые предупреждения и ошибки при сборке. Некоторые API, которые раньше имели @RecentlyNullable или @RecentlyNonNull (которые могут выдавать предупреждения от компилятора Kotlin при неправильном использовании), были обновлены до @Nullable и @NonNull (которые вместо этого генерируют ошибки во время сборки). Мы также добавили новые аннотации @RecentlyNullable и @RecentlyNonNull к API, которые еще не имели никаких аннотаций.
Но подождите, это еще не все!
С момента последнего релиза превью в Android 11 появилось ещё несколько особенностей:
- Добавлен датчик угла поворота шарнира для складных устройств.
- NNAPI добавил “hard-swish op”, который позволяет нейросети быстрее и точнее тренироваться.
- Начиная с Android 11, приложения, которые хотят использовать микрофон или камеру из службы переднего плана, должны добавить атрибут foregroundServiceType в свой манифест, как и изменения местоположения в Android 10.
- Теперь приложения могут запрашивать переменную частоту обновления экрана на поддерживающих устройствах.
- Эмулятор теперь поддерживает как переднюю, так и заднюю камеры.
Мы добавили новый экран настроек в опции разработчиков, где вы можете переключать различные изменения поведения, чтобы увидеть, оказывают ли они какое-либо влияние на вашу ситуацию.
Все детали на сайте предварительного просмотра Android 11. Дайте нам обратную связь или заполните опрос, чтобы сообщить нам свои мысли.
Релизы AndroidX
Бета-версия: CameraX
Библиотека CameraX, созданная для облегчения разработки функциональных возможностей камер (даже в рамках разнообразной экосистемы устройств), теперь вступила в бета-версию. Это означает, что API будет оставаться неизменным, поскольку команда исправляет проблемы до того, как библиотека достигнет стабильности.
Некоторые из улучшений бета-версии включают в себя:
- явную инициализацию камеры с помощью ProcessCameraProvider;
- возможность выбора того, какая камера (передняя или задняя) будет использоваться с одним или несколькими вариантами использования с помощью нового API CameraSelector;
- более легкий доступ к информации о функциях камеры, таких как масштабирование и фокусировка, а также управление ими с помощью CameraInfo и CameraControl.
Еще один релиз, который стоит отметить, — это альфа-версия модуля Camera View (alpha08 на момент написания этой статьи), которая предоставляет полезные компоненты, связанные с представлениями для приложений камеры.
Оценить обзор CameraX или узнать больше о различных модулях CameraX можно на странице выпуска камеры AndroidX.
Стабильная версия
Несколько библиотек стали стабильными, в основном с исправлениями ошибок и незначительными функциями, включая:
- Fragment 1.2.3;
- Paging 2.1.2, которая исправляет проблему с 2.1.1, когда некоторые частично реализованные API были непреднамеренно выставлены слишком рано, что привело к потенциальным проблемам сборки или выполнения (читать: прекратите использовать 2.1.1, обновите до 2.1.2 прямо сейчас);
- Room 2.2.5;
- Webkit 1.2.0, который включает в себя API ForceDark для управления визуализацией веб-просмотров в темном режиме;
- WorkManager 2.3.3 и 2.3.4.
Альфа
Особенно следует отметить, что во многих библиотеках, недавно попавших в альфа-версии, есть Activity 1.2.0-alpha02
, который добавляет поддержку ActivityResultRegistry, позволяя обрабатывать потоки startActivityForResult()
/onActivityResult()
и requestPermissions()
/onRequestPermissionsResult()
без переопределения методов в Activity или фрагменте. Вы также можете взглянуть на Fragment 1.3.0-alpha02, который добавляет поддержку для этих новых API.
Статьи
В последнее время в разделе публикаций разработчиков Android появилось много технических статей, в том числе:
When, Enums и R8
Join Medium.
Join Medium.medium.com
В случае с enums добавление оператора switch
(или when
в Kotlin) приводит к созданию дополнительного класса и массива. Использование компилятора R8 может исправить эту ситуацию.
Модификатор Suspend — Под капотом
Мануэль Виво опубликовал эту статью:
БУДЕТ ПЕРЕВЕДЕНА
которая объясняет, как компилятор Kotlin преобразует корутины под капотом.
Корутины Kotlin: отмены и исключения
Опубликована серия из трех частей, посвященных отмене и исключениям в корутинах Kotlin:
Часть 1 содержит краткий обзор корутин, включая определение и объяснение необходимых частей, таких как CoroutineScope, Job и CoroutineContext:Корутины: самое главное
Корутины — важный инструмент для распараллеливания задач без ущерба производительности. Однако, как у любого хорошего…medium.com
Часть 2 охватывает отмену корутин. В статье описывается, как отменить определенные задания, а также целые CoroutineScopes. В ней также обсуждается кооперативность отмены и правильное окончание работы в корутине, которая была отменена.Исключения в корутинах
Продолжение цикла статей о корутинах. Другой важный элемент работы с ними — исключения. Исключения в корутинах…medium.com
Часть 3 завершает серию обсуждением того, что делать, когда все идет не так, как планировалось: как правильно обрабатывать исключения в корутинном коде. Например, исключение в корутине по умолчанию приведет к отмене всех корутин в ее CoroutineScope, но вы можете избежать этой ситуации с помощью SupervisorJob:Join Medium.
Join Medium.medium.com
Google для игр
Добавлено множество новых инструментов и функций Android:
• собственные возможности профилирования в инструменте трассировки системы Android Studio;
• поддержка собственных отладочных символов в Android Vitals, чтобы помочь вам диагностировать сбои на ходу;
• более легкий доступ к API Google для разработчиков Unity.
Вы также можете подписаться на такие превью, как:
• расширение для разработки игр для Visual Studio, облегчающее добавление поддержки Android в вашу кроссплатформенную игру;
• новый инспектор-инструмент Android GPU.
Ну а теперь…
Вперед изучать Android 11 DP2! Оцените бета-версию CameraX и другие релизы AndroidX! Больше информации на канале YouTube! Найдите новинки в разработке игр для Android!
Читайте также:
- Корутины Kotlin: как работать асинхронно в Android
- Топ-5 трендовых библиотек для Android за 1 квартал 2020 года
- MVVM на Android с компонентами архитектуры + библиотека Koin
Перевод статьи Chet Haase: Now In Android #14