В Android 14 представлены отличные функции и API для разработчиков. Информация ниже поможет вам узнать о функциях ваших приложений и начать работу с соответствующими API.
Подробный список добавленных, измененных и удаленных API см. в отчете о различиях в API . Подробнее о добавленных API см. в справочнике по API Android . Для Android 14 найдите API, добавленные на уровне API 34. Чтобы узнать об областях, где изменения платформы могут повлиять на ваши приложения, ознакомьтесь с изменениями в поведении приложений, ориентированных на Android 14 , и для всех приложений .
Интернационализация
Настройки языка для каждого приложения
В Android 14 языковые функции каждого приложения , которые были представлены в Android 13 (уровень API 33), расширены следующими дополнительными возможностями:
Автоматически генерировать
localeConfigприложения . Начиная с Android Studio Giraffe Canary 7 и AGP 8.1.0-alpha07, вы можете настроить свое приложение для автоматической поддержки языковых настроек для каждого приложения . На основе ресурсов вашего проекта плагин Android Gradle создает файлLocaleConfigи добавляет ссылку на него в окончательный файл манифеста, поэтому вам больше не придется создавать или обновлять файл вручную. AGP использует ресурсы в папкахresмодулей вашего приложения и любых зависимостях модулей библиотеки, чтобы определить локали, которые необходимо включить в файлLocaleConfig.Динамические обновления для
localeConfigприложения . Используйте методыsetOverrideLocaleConfig()иgetOverrideLocaleConfig()вLocaleManagerчтобы динамически обновлять список поддерживаемых языков вашего приложения в системных настройках устройства . Используйте эту гибкость, чтобы настроить список поддерживаемых языков для каждого региона, проводить эксперименты A/B или предоставлять обновленный список языков, если ваше приложение использует отправку на стороне сервера для локализации.Видимость языка приложения для редакторов методов ввода (IME) . IME могут использовать метод
getApplicationLocales()для проверки языка текущего приложения и сопоставления языка IME с этим языком.
API грамматического склонения
3 миллиарда человек говорят на гендерных языках : языках, в которых грамматические категории, такие как существительные, глаголы, прилагательные и предлоги, изменяются в зависимости от пола людей и предметов, с которыми вы разговариваете или о которых вы говорите. Традиционно во многих гендерных языках мужской грамматический род используется в качестве родового или общего рода по умолчанию.
Обращение к пользователям неправильного грамматического рода, например обращение к женщинам мужского грамматического рода, может негативно повлиять на их работу и отношение. Напротив, пользовательский интерфейс с языком, который правильно отражает грамматический пол пользователя, может улучшить взаимодействие с пользователем и обеспечить более персонализированный и естественный пользовательский интерфейс.
为帮助您针对区分性别的语言构建以用户为中心的界面,Android 14 引入了 Grammatical Inflection API,让您无需重构应用便能添加对语法性别的支持。
Региональные предпочтения
Региональные настройки позволяют пользователям персонализировать единицы измерения температуры, первый день недели и системы нумерации. Европеец, живущий в Соединенных Штатах, может предпочесть, чтобы единицы температуры были в градусах Цельсия, а не в Фаренгейте, и чтобы приложения считали понедельник началом недели, а не воскресенье по умолчанию в США.
Новые меню настроек Android для этих настроек предоставляют пользователям доступное и централизованное место для изменения настроек приложений. Эти настройки также сохраняются при резервном копировании и восстановлении. Некоторые API и намерения, такие как getTemperatureUnit и getFirstDayOfWeek , предоставляют вашему приложению доступ для чтения к пользовательским настройкам, поэтому ваше приложение может настроить способ отображения информации. Вы также можете зарегистрировать BroadcastReceiver в ACTION_LOCALE_CHANGED для обработки изменений конфигурации локали при изменении региональных предпочтений.
Чтобы найти эти настройки, откройте приложение «Настройки» и выберите «Система» > «Языки и ввод» > «Региональные настройки» .


Доступность
Нелинейное масштабирование шрифта до 200%
Начиная с Android 14, система поддерживает масштабирование шрифтов до 200%, предоставляя пользователям дополнительные возможности доступа.
Чтобы предотвратить чрезмерное масштабирование крупных текстовых элементов на экране, система применяет нелинейную кривую масштабирования. Эта стратегия масштабирования означает, что крупный текст масштабируется не с той же скоростью, что и мелкий. Нелинейное масштабирование шрифтов помогает сохранить пропорциональную иерархию между элементами разных размеров, одновременно смягчая проблемы, возникающие при масштабировании линейного текста с высокой степенью масштабирования (например, обрезание текста или усложнение чтения текста из-за слишком большого размера экрана).
Протестируйте свое приложение с нелинейным масштабированием шрифтов

Если вы уже используете единицы измерения масштаба текста в пикселях (sp), то эти дополнительные параметры и улучшения масштабирования будут автоматически применены к тексту в вашем приложении. Однако вам всё равно следует провести тестирование пользовательского интерфейса с максимальным размером шрифта (200%), чтобы убедиться, что ваше приложение корректно применяет размеры шрифтов и может работать с более крупными шрифтами без ущерба для удобства использования.
Чтобы включить размер шрифта 200%, выполните следующие действия:
- Откройте приложение «Настройки» и перейдите в раздел «Специальные возможности» > «Размер дисплея и текст» .
- Для параметра «Размер шрифта» нажимайте значок плюс (+), пока не будет включена настройка максимального размера шрифта, как показано на изображении в этом разделе.
Используйте единицы измерения масштабированных пикселей (sp) для размеров текста
Не забывайте всегда указывать размеры текста в единицах измерения SP . Если ваше приложение использует единицы измерения SP, Android может применить выбранный пользователем размер текста и масштабировать его соответствующим образом.
Не используйте единицы sp для отступов и не определяйте высоту представления, предполагая неявный отступ: при нелинейном масштабировании шрифтов размеры sp могут быть не пропорциональны, поэтому 4sp + 20sp может не равняться 24sp.
Преобразовать масштабированные единицы пикселей (sp)
Используйте TypedValue.applyDimension() для преобразования единиц sp в пиксели, а метод TypedValue.deriveDimension() — для преобразования пикселей в sp. Эти методы автоматически применяют соответствующую кривую нелинейного масштабирования.
Избегайте жёсткого кодирования уравнений с помощью Configuration.fontScale или DisplayMetrics.scaledDensity . Поскольку масштабирование шрифтов нелинейно, поле scaledDensity больше не является точным. Поле fontScale следует использовать только в информационных целях, поскольку шрифты больше не масштабируются одним скалярным значением.
Используйте единицы sp для lineHeight
Всегда определяйте android:lineHeight в единицах sp, а не dp, чтобы высота строки масштабировалась вместе с текстом. В противном случае, если текст имеет значение sp, а lineHeight — в dp или px, он не масштабируется и выглядит сжатым. TextView автоматически корректирует lineHeight , сохраняя заданные пропорции, но только если textSize и lineHeight заданы в единицах sp.
Камера и медиа
Ultra HDR для изображений
Android 14 新增了对高动态范围 (HDR) 图片的支持,可在拍摄照片时保留更多来自传感器的信息,从而实现鲜艳的色彩和更高的对比度。Android 使用 Ultra HDR 格式,该格式与 JPEG 图片完全向后兼容,可让应用与 HDR 图片无缝互操作,并根据需要以标准动态范围 (SDR) 显示这些图片。
当您的应用选择为其 activity 窗口使用 HDR 界面(通过清单条目或通过在运行时调用 Window.setColorMode())时,框架会自动在界面中以 HDR 格式渲染这些图片。您还可以在受支持的设备上拍摄压缩的 Ultra HDR 静态图片。从传感器中恢复的颜色越多,后期编辑的灵活性就越高。与 Ultra HDR 图片关联的 Gainmap 可用于使用 OpenGL 或 Vulkan 渲染这些图片。
Масштабирование, фокусировка, постпросмотр и другие функции в расширениях камеры
В Android 14 обновляются и совершенствуются расширения камеры , что позволяет приложениям обрабатывать больше времени, что позволяет улучшать изображения с помощью алгоритмов с интенсивными вычислениями, таких как фотография при слабом освещении, на поддерживаемых устройствах. Эти функции дают пользователям еще больше возможностей при использовании дополнительных возможностей камеры. Примеры таких улучшений включают в себя:
- Динамическая оценка задержки обработки кадров обеспечивает гораздо более точную оценку задержки захвата фотографий на основе текущей сцены и условий окружающей среды. Вызовите
CameraExtensionSession.getRealtimeStillCaptureLatency()чтобы получить объектStillCaptureLatency, имеющий два метода оценки задержки. МетодgetCaptureLatency()возвращает расчетную задержку междуonCaptureStartedиonCaptureProcessStarted(), а методgetProcessingLatency()возвращает расчетную задержку междуonCaptureProcessStarted()и доступным окончательным обработанным кадром. - Поддержка обратных вызовов процесса захвата, чтобы приложения могли отображать текущий ход длительных операций обработки неподвижного захвата. Вы можете проверить, доступна ли эта функция, с помощью
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable, и если да, вы реализуете обратный вызовonCaptureProcessProgressed(), в котором в качестве параметра передается прогресс (от 0 до 100). Метаданные, специфичные для расширения, такие как
CaptureRequest.EXTENSION_STRENGTHдля набора величины эффекта расширения, например степени размытия фона с помощьюEXTENSION_BOKEH.Функция Postview для захвата фотографий в расширениях камеры, которая обеспечивает менее обработанное изображение быстрее, чем окончательное изображение. Если расширение имеет увеличенную задержку обработки, изображение после просмотра может быть предоставлено в качестве заполнителя для улучшения UX и позже отключено для окончательного изображения. Вы можете проверить, доступна ли эта функция, с помощью
CameraExtensionCharacteristics.isPostviewAvailable. Затем вы можете передатьOutputConfigurationвExtensionSessionConfiguration.setPostviewOutputConfiguration.Поддержка
SurfaceViewобеспечивающая более оптимизированный и энергоэффективный путь предварительного просмотра.Поддержка касания для фокусировки и масштабирования во время использования расширения.
Зум в датчике
Если REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE в CameraCharacteristics содержит SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW , ваше приложение может использовать расширенные возможности датчика, чтобы предоставить обрезанному потоку RAW те же пиксели, что и полное поле зрения, используя CaptureRequest с целевым объектом RAW, для которого установлен вариант использования потока CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW _CASES_CROPPED_RAW . Благодаря реализации элементов управления переопределением запроса обновленная камера дает пользователям возможность управлять масштабированием даже до того, как будут готовы другие элементы управления камерой.
USB-аудио без потерь
В Android 14 появилась поддержка аудиоформатов без потерь для аудиофильского уровня через проводные USB-гарнитуры. Вы можете запросить у USB-устройства предпочтительные атрибуты микшера, зарегистрировать прослушиватель изменений в предпочтительных атрибутах микшера и настроить атрибуты микшера с помощью класса AudioMixerAttributes . Этот класс представляет формат, такой как маска канала, частота дискретизации и поведение аудиомикшера. Класс позволяет отправлять аудио напрямую , без микширования, регулировки громкости или обработки эффектов.
Производительность и инструменты разработчика
Менеджер по учетным данным
Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.
Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.
For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.
Health Connect
Health Connect — это встроенное в устройство хранилище данных о здоровье и фитнесе пользователей. Это позволяет пользователям обмениваться данными между своими любимыми приложениями, используя единое место для управления тем, какими данными они хотят делиться с этими приложениями.
На устройствах под управлением версий Android до Android 14 Health Connect можно загрузить в виде приложения в магазине Google Play. Начиная с Android 14, Health Connect является частью платформы и получает обновления через обновления системы Google Play, не требуя отдельной загрузки. Благодаря этому Health Connect может часто обновляться, и ваши приложения могут рассчитывать на то, что Health Connect будет доступен на устройствах под управлением Android 14 или более поздней версии. Пользователи могут получить доступ к Health Connect из настроек своего устройства, а элементы управления конфиденциальностью интегрированы в настройки системы.


Health Connect включает в себя несколько новых функций в Android 14, таких как маршруты тренировок, позволяющие пользователям делиться маршрутом своей тренировки, который можно визуализировать на карте. Маршрут определяется как список мест, сохраненных в течение определенного периода времени, и ваше приложение может вставлять маршруты в сеансы тренировок, связывая их вместе. Чтобы обеспечить полный контроль над этими конфиденциальными данными, пользователи должны разрешить совместное использование отдельных маршрутов с другими приложениями.
Дополнительные сведения см. в документации Health Connection и в записи блога «Что нового в Android Health» .
Обновления OpenJDK 17
В Android 14 продолжается работа по обновлению основных библиотек Android, чтобы они соответствовали функциям последних выпусков OpenJDK LTS, включая обновления библиотек и поддержку языка Java 17 для разработчиков приложений и платформ.
Включены следующие функции и улучшения:
- Обновлено около 300 классов
java.baseдля поддержки Java 17. - Текстовые блоки , которые вводят многострочные строковые литералы в язык программирования Java.
- Сопоставление с образцом для экземпляра , которое позволяет рассматривать объект как имеющий определенный тип в
instanceofбез каких-либо дополнительных переменных. - Запечатанные классы , позволяющие ограничить классы и интерфейсы, которые могут их расширять или реализовывать.
Благодаря обновлениям системы Google Play (Project Mainline) более 600 миллионов устройств могут получать последние обновления среды выполнения Android (ART), включающие эти изменения. Это часть нашего обязательства предоставить приложениям более согласованную и безопасную среду на всех устройствах, а также предоставить пользователям новые функции и возможности независимо от версий платформы.
Java и OpenJDK являются товарными знаками или зарегистрированными товарными знаками Oracle и/или ее дочерних компаний.
Улучшения для магазинов приложений
Android 14 引入了多个 PackageInstaller API,可帮助应用商店改善其用户体验。
下载之前请求批准安装
安装或更新应用可能需要用户批准。例如,当使用 REQUEST_INSTALL_PACKAGES 权限的安装程序尝试安装新应用时。在之前的 Android 版本中,只有在将 APK 写入安装会话并且提交会话后,应用商店才能请求用户批准。
从 Android 14 开始,requestUserPreapproval() 方法可让安装程序在提交安装会话之前请求用户批准。此项改进可让应用商店将任何 APK 的下载操作推迟到用户批准安装之后。此外,用户批准安装后,应用商店可以在后台下载并安装应用,而不会干扰用户。
承担未来更新的责任
借助 setRequestUpdateOwnership() 方法,安装程序可以向系统表明它打算负责将被安装的应用未来的更新。此 capability 可实现更新所有权强制执行,即仅允许更新所有者为应用安装自动更新。更新所有权强制执行有助于确保用户仅收到来自预期应用商店的更新。
任何其他安装程序(包括使用 INSTALL_PACKAGES 权限的安装程序)都必须获得用户的明确批准,才能安装更新。如果用户决定继续从其他来源安装更新,则会失去更新所有权。
在干扰较少的时段更新应用
应用商店通常希望避免更新正在使用的应用,因为这会导致应用正在运行的进程被终止,而这可能会中断用户正在执行的操作。
从 Android 14 开始,InstallConstraints API 让安装程序可以确保其应用更新在适当的时机进行。例如,应用商店可以调用 commitSessionAfterInstallConstraintsAreMet() 方法来确保仅在用户不再与相应应用互动时才进行更新。
无缝安装可选拆分
借助拆分 APK,应用的功能可以通过单独的 APK 文件提供,而不是以单体式 APK 的形式提供。借助拆分 APK,应用商店可以优化不同应用组件的提供。例如,应用商店可能会根据目标设备的属性进行优化。自在 API 级别 22 中引入以来,PackageInstaller API 一直支持拆分。
在 Android 14 中,setDontKillApp() 方法可让安装程序指明在安装新的拆分项时应用的运行进程不应终止。应用商店可以使用此功能,在用户使用应用时无缝安装应用的新功能。
Пакеты метаданных приложения
从 Android 14 开始,Android 软件包安装程序可让您指定应用元数据(例如数据安全做法),以在 Google Play 等应用商店页面上架。
Определите, когда пользователи делают снимки экрана устройства
Для создания более стандартизированного процесса обнаружения скриншотов в Android 14 представлен API обнаружения скриншотов, сохраняющий конфиденциальность. Этот API позволяет приложениям регистрировать обратные вызовы для каждого действия. Эти обратные вызовы вызываются, и пользователь получает уведомление, когда делает снимок экрана, пока это действие отображается.
Пользовательский опыт
Пользовательские действия в Sharesheet и улучшенный рейтинг
Android 14 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。
添加自定义操作
对于 Android 14,您的应用可以向其调用的系统 Sharesheet 添加自定义操作。
提高直接共享目标的排名
Android 14 根据来自应用的更多信号来确定直接共享目标的排名,以便为用户提供更实用的结果。为了提供最实用的排名信号,请遵循提高直接共享目标排名的准则。通讯应用还可以报告出站和入站消息的快捷方式使用情况。
Поддержка встроенных и пользовательских анимаций для Predictive Back
В Android 13 появилась предиктивная анимация возвращения домой, доступная для разработчиков. При использовании в поддерживаемом приложении с включенной опцией разработчика при смахивании назад отображается анимация, указывающая, что жест возврата позволяет выйти из приложения обратно на главный экран.
Android 14 включает в себя множество улучшений и новые рекомендации по функции Predictive Back:
- Вы можете установить
android:enableOnBackInvokedCallback=trueчтобы включить прогнозируемую обратную системную анимацию для каждого действия, а не для всего приложения. - Мы добавили новые системные анимации, сопровождающие анимацию возвращения домой из Android 13. Новые системные анимации связаны с перекрестными действиями и задачами, которые вы получаете автоматически после перехода на Predictive Back .
- Мы добавили новые анимации компонентов материала для нижних листов , боковых листов и поиска .
- Мы создали руководство по дизайну для создания пользовательских анимаций и переходов в приложениях.
- Мы добавили новые API для поддержки пользовательских анимаций перехода в приложении:
-
handleOnBackStarted,handleOnBackProgressed,handleOnBackCancelledinOnBackPressedCallback -
onBackStarted,onBackProgressed,onBackCancelledinOnBackAnimationCallback - Используйте
overrideActivityTransitionвместоoverridePendingTransitionдля переходов, которые реагируют, когда пользователь проводит пальцем назад.
-
В этой предварительной версии Android 14 все функции Predictive Back остаются за пределами возможностей разработчика. См. руководство для разработчиков, чтобы вернуть приложение на интеллектуальный режим , а также руководство для разработчиков по созданию пользовательских переходов внутри приложения .
Переопределения для каждого приложения производителем устройства с большим экраном
借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP 替换项会指示系统调整应用大小以适应显示屏尺寸(避免进入尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false" 也是如此。
替换项旨在改善大屏设备上的用户体验。
借助新的清单属性,您可以为应用停用某些设备制造商替换项。
Переопределения для каждого приложения на большом экране
按应用替换项会更改应用在大屏设备上的行为。例如,无论应用的配置如何,OVERRIDE_MIN_ASPECT_RATIO_LARGE 设备制造商替换项都会将应用宽高比设置为 16:9。
借助 Android 14 QPR1,用户可以在大屏设备上通过新的设置菜单应用按应用替换项。
Совместное использование экрана приложения
Совместное использование экрана приложения позволяет пользователям делиться окном приложения, а не всем экраном устройства во время записи содержимого экрана.
При совместном использовании экрана приложения строка состояния, панель навигации, уведомления и другие элементы пользовательского интерфейса системы исключаются из общего дисплея. Доступен только контент выбранного приложения.
Совместное использование экрана приложений повышает производительность и конфиденциальность, позволяя пользователям запускать несколько приложений, но ограничивая общий доступ к контенту одним приложением.
Умный ответ на базе LLM в Gboard на Pixel 8 Pro
在搭载 12 月功能分块的 Pixel 8 Pro 设备上,开发者可以在 Gboard 中试用质量更高的智能回复,这些回复由在 Google Tensor 上运行的设备端大语言模型 (LLM) 提供支持。
此功能目前仅在 WhatsApp、Line 和 KakaoTalk 中以美式英语的形式提供给用户进行小范围测试。此功能需要使用 Pixel 8 Pro 设备,并将 Gboard 用作键盘。
如需试用此功能,请先依次前往设置 > 开发者选项 > AiCore 设置 > 启用 Aicore 持久性,启用该功能。
接下来,在受支持的应用中打开对话,即可在 Gboard 的建议栏中看到依托 LLM 的智能回复,以便回复收到的消息。
Графика
Пути можно запрашивать и интерполировать.
API Path Android — это мощный и гибкий механизм для создания и рендеринга векторной графики с возможностью обводки или заливки пути, построения пути из сегментов линий, квадратичных или кубических кривых, выполнения логических операций для получения еще более сложных фигур или все из них одновременно. Одним из ограничений является возможность узнать, что на самом деле находится в объекте Path; внутренности объекта непрозрачны для вызывающих сторон после создания.
Чтобы создать Path , вы вызываете такие методы, как moveTo() , lineTo() и cubicTo() , чтобы добавить сегменты пути. Но у этого пути не было возможности узнать, что представляют собой сегменты, поэтому вы должны сохранить эту информацию во время создания.
Начиная с Android 14, вы можете запрашивать пути, чтобы узнать, что внутри них. Во-первых, вам нужно получить объект PathIterator с помощью API Path.getPathIterator :
Котлин
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
Ява
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
Затем вы можете вызвать PathIterator для перебора сегментов один за другим, извлекая все необходимые данные для каждого сегмента. В этом примере используются объекты PathIterator.Segment , которые упаковывают данные за вас:
Котлин
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
Ява
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
PathIterator также имеет версию next() без выделения памяти, в которую вы можете передать буфер для хранения данных точек.
Одним из важных вариантов использования запроса данных Path является интерполяция. Например, вы можете захотеть анимировать (или трансформировать ) между двумя разными путями. Чтобы еще больше упростить этот вариант использования, Android 14 также включает метод interpolate() в Path . Предполагая, что два пути имеют одинаковую внутреннюю структуру, метод interpolate() создает новый Path с этим интерполированным результатом. В этом примере возвращается путь, форма которого находится на полпути (линейная интерполяция .5) между path otherPath :
Котлин
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
Ява
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
Библиотека графических путей Jetpack поддерживает аналогичные API и для более ранних версий Android.
Пользовательские сетки с вершинными и фрагментными шейдерами
Android 长期以来一直支持使用自定义着色绘制三角网格,但输入网格格式仅限于一些预定义的属性组合。Android 14 增加了对自定义网格的支持,可将其定义为三角形或三角形条,并且可以选择是否编入索引。这些网格是使用自定义属性、顶点步长、可变以及使用 AGSL 编写的顶点着色器和片段着色器指定的。
顶点着色器定义了位置和颜色等变量,而片段着色器可以选择为像素定义颜色,通常是使用顶点着色器创建的变量。如果片段着色器提供颜色,则系统会使用绘制网格时选择的混合模式将其与当前 Paint 颜色混合。Uniform 可以传递到片段着色器和顶点着色器,以提高灵活性。
Аппаратный буферный рендерер для Canvas
协助使用 Android 的 Canvas API 通过
硬件加速至 HardwareBuffer、Android 14
引入了 HardwareBufferRenderer。如果您的用例涉及通过 SurfaceControl 与系统合成器通信以实现低延迟绘制,此 API 特别有用。