Android

Оцените превью для обновлений некоторых уже существующих функций, а также доступных нововведений, таких как 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!

Читайте также:


Перевод статьи Chet Haase: Now In Android #14