графика
В этой таблице перечислены все артефакты группы androidx.graphics
.
Артефакт | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
графическое ядро | 1.0.2 | - | - | - |
графический путь | 1.0.1 | - | - | - |
графические фигуры | 1.0.1 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от Graphics, необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies { implementation "androidx.graphics:graphics-core:1.0.2" implementation "androidx.graphics:graphics-path:1.0.1" implementation "androidx.graphics:graphics-shapes:1.0.1" }
Котлин
dependencies { implementation("androidx.graphics:graphics-core:1.0.2") implementation("androidx.graphics:graphics-path:1.0.1") implementation("androidx.graphics:graphics-shapes:1.0.1") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Дополнительную информацию см . в документации по системе отслеживания проблем .
Для этого артефакта нет примечаний к выпуску.
Графические фигуры Версия 1.0
Версия 1.0.0
21 августа 2024 г.
androidx.graphics:graphics-shapes:1.0.0
, androidx.graphics:graphics-shapes-android:1.0.0
и androidx.graphics:graphics-shapes-desktop:1.0.0
выпущены. Версия 1.0.0 содержит эти коммиты .
Версия 1.0.0-rc01
24 июля 2024 г.
androidx.graphics:graphics-shapes:1.0.0-rc01
, androidx.graphics:graphics-shapes-android:1.0.0-rc01
и androidx.graphics:graphics-shapes-desktop:1.0.0-rc01
выпущены. Версия 1.0.0-rc01 содержит эти коммиты .
Версия 1.0.0-бета01
1 мая 2024 г.
androidx.graphics:graphics-shapes:1.0.0-beta01
, androidx.graphics:graphics-shapes-android:1.0.0-beta01
и androidx.graphics:graphics-shapes-desktop:1.0.0-beta01
выпущены. Версия 1.0.0-beta01 содержит эти коммиты .
Изменения API
- Разрешить предварительный поворот фигур, чтобы они начинались в другой точке. Это изменение позволяет фигурам
pillStar
начинать свои кривые с точки по периметру, отличной от стандартной. Это может быть полезно при анимации обводки контура фигуры, чтобы начать рисование с определенного места на контуре фигуры. ( Ifbb4d , b/324303807 ) - В Morph добавлены функции
calculateBounds()
, которые работают параллельно с теми же функциями вRoundedPolygon
. ( I8a3b6 , б/325463575 )
Версия 1.0.0-альфа05
7 февраля 2024 г.
androidx.graphics:graphics-shapes:1.0.0-alpha05
, androidx.graphics:graphics-shapes-android:1.0.0-alpha05
и androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05
выпущены. Версия 1.0.0-alpha05 содержит эти коммиты.
Новые возможности
- Библиотека теперь предлагает новые функции
pill()
иpillStar()
для упрощения создания закругленных/звездчатых фигур. Существуют также новые API для расчета точных границ, необходимых для фигуры (предыдущие границы были просто оценкой, основанной на базовой опорной кривой Безье и контрольных точках), а также максимально возможных границ, которые могут быть полезны для определения размера. контейнера, в котором он находится, если он будет вращаться внутри этого контейнера. ( I71827 )
Изменения API
- Теперь больше возможностей для получения точных и максимальных границ. ( I6d49f , б/317286450 )
Исправления ошибок
- При рисовании этих фигур в виде обведенных контуров время от времени возникали артефакты рендеринга из-за проблемы рендеринга низкого уровня, связанной с кривыми нулевой длины. Эта ошибка была исправлена путем исключения всех кривых нулевой длины (которые не нужны фигурам, что также позволило сэкономить на накладных расходах на пути, создаваемые фигурами).
Версия 1.0.0-альфа04
13 декабря 2023 г.
androidx.graphics:graphics-shapes:1.0.0-alpha04
, androidx.graphics:graphics-shapes-android:1.0.0-alpha04
и androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04
выпущены. Версия 1.0.0-alpha04 содержит эти коммиты.
Новые возможности
- Этот выпуск содержит несколько изменений API, а также исправления ошибок.
- Многие изменения API делают библиотеку Shapes дружественной к KMP. Это упрощает вызов из кода, отличного от Android (например, из кода Compose, не зависящего от Android). Например, в API нет типов Android, таких как предыдущие типы PointF, Matrix и Path.
- Также было внесено несколько изменений в API и реализацию по соображениям производительности, в частности, чтобы минимизировать выделение (и сбор) объектов. Например, переход от PointF к отдельным параметрам Float позволяет избежать выделения множества временных структур PointF для хранения этих вершин.
Изменения API
- Заменен
Morph.asMutableCubics
на функцию для перебораMutableCubics
. Изменен функциональный интерфейсPointTransformer
: теперь он принимает координаты x и yPoint
и возвращаетTransformedResult
(который создается с использованием преобразованных координат x и y) ( I6719e ). - Удален общедоступный конструктор
Cubic
и сделан его фабричной функцией. ( I409ce ) - Добавление API-интерфейсов преобразования и рисования, специфичных для Android ( I079f6 , b/292289543 )
- Устраните зависимости Android ( Iadc1c , b/292289543 )
- Имена свойств привязки и элемента управления теперь стали более разумными ( If13bd , b/294562941 ).
- Параметры
PointF
изменены на парыFloat
( Id4705 , b/276466399 , b/290254314 ) -
progress
теперь передается непосредственно командам рисованияMorph
( Icdca2 )
Исправления ошибок
- Исправлена ошибка при создании больших фигур. ( I4fd66 , б/313497325 )
Версия 1.0.0-альфа03
7 июня 2023 г.
Выпущен androidx.graphics:graphics-shapes:1.0.0-alpha03
. Версия 1.0.0-alpha03 содержит эти коммиты.
Изменения API
- Добавлена новая функция
RoundedPolygon.rectangle()
( I78e7e , b/280322189 ). - Функции Star и Circle теперь декапитализированы и вызываются через сопутствующий объект
RoundedPolygon
: например,RoundedPolygon.star(...)
( I14735 ).
Исправления ошибок
- Исправлена ошибка сглаживания ( Ibf894 ).
- Исправлена ошибка, возникавшая, когда начальная и конечная формы были одинаковыми. Лучше распределите свободное пространство по сторонам для разрезов, сначала используя свободное пространство для скругления, затем для сглаживания, если осталось место. ( Ibd320 , б/277936300 )
Версия 1.0.0-альфа02
19 апреля 2023 г.
Выпущен androidx.graphics:graphics-shapes:1.0.0-alpha02
. Версия 1.0.0-alpha02 содержит эти коммиты.
Изменения API
- Суперкласс Polygon был объединен со своим подклассом
RoundedPolygon
; все полигоны теперь являются [необязательно] закругленными. - Функция Star (которая, как и раньше, по-прежнему возвращает
RoundedPolygon
) теперь принимает значениеinnerRadius
вместо предыдущего параметраinnerRadiusRatio
. Он измеряется в тех же единицах измерения, что и существующий параметр радиуса, что упрощает работу и делает ее более последовательной. Кроме того, параметрnumOuterVertices
был переименован вnumVerticesPerRadius
чтобы уточнить, что одно и то же число применяется как к внутреннему, так и к внешнему радиусу. - Ранее сообщалось, что
CornerRounding.radius
относится к размеру многоугольника, но это было (и должно быть) абсолютное, а не относительное значение. Документы были обновлены, и исправлена аннотация, ограничивающая максимальное значение 1,0.
Версия 1.0.0-альфа01
5 апреля 2023 г.
Graphics-Shapes — это новая библиотека, которая позволяет легко создавать и визуализировать закругленные многоугольные формы, а также выполнять простой и автоматический морфинг (анимацию) между различными фигурами.
Выпущен androidx.graphics:graphics-shapes:1.0.0-alpha01
. Эта версия выпущена из внутренней ветки.
Новые возможности
- Используйте API Polygon для создания правильных и звездообразных многоугольников с нужным количеством вершин.
- Используйте дополнительные параметры
CornerRounding
, чтобы указать радиус скругления и параметры сглаживания углов, в результате чего получаются многоугольные фигуры с закругленными углами. - Используйте новый API
Morph(Polygon, Polygon)
для автоматического расчета формы «морфинга», прогресс которой можно установить от 0 до 1 для анимации между начальной и конечной фигурами. Анимируйте этот прогресс во времени, рисуя результат в каждом кадре, чтобы создать плавную анимацию между этими новыми закругленными формами.
Графический путь версии 1.0
Версия 1.0.1
1 мая 2024 г.
Выпущен androidx.graphics:graphics-path:1.0.1
. Версия 1.0.1 содержит эти коммиты .
Исправления ошибок
- Улучшения флагов компилятора.
Версия 1.0.0
6 марта 2024 г.
Выпущен androidx.graphics:graphics-path:1.0.0
.
Версия 1.0.0-rc01
21 февраля 2024 г.
androidx.graphics:graphics-path:1.0.0-rc01
выпущен. Версия 1.0.0-rc01 содержит эти коммиты.
Исправления ошибок
- Улучшение производительности PathIterator на API <34 ( Id4629 )
Версия 1.0.0-beta02
10 января 2024 г.
Все изменения в этом выпуске сводились к уменьшению размера библиотеки, который был больше, чем необходимо, из-за допущений, сделанных собственным кодом.
Выпущен androidx.graphics:graphics-path:1.0.0-beta02
. Версия 1.0.0-beta02 содержит эти коммиты.
Исправления ошибок
- Размер
libandroidx.graphics.path.so
уменьшен на 96%. ( I71397 ) - Уменьшите размер
libandroidx.graphics.path.so
на 5%. ( I2da7c ) - Уменьшены собственные компоненты
androidx.graphics:graphics-path
на 43%. ( I8e40d )
Версия 1.0.0-бета01
29 ноября 2023 г.
Выпущен androidx.graphics:graphics-path:1.0.0-beta01
. Версия 1.0.0-beta01 содержит эти коммиты.
Изменения API
- Удалено использование экспериментального API
isAtLeastU()
( Ie9117 , b/289269026 ).
Исправления ошибок
- Различные исправления и улучшения производительности, в том числе работа библиотеки с кониками.
Версия 1.0.0-альфа02
7 июня 2023 г.
Выпущен androidx.graphics:graphics-path:1.0.0-alpha02
. Эта версия разработана во внутренней ветке.
Новые возможности
- Исправлена проблема с внутренней проверкой версии платформы, которая вызывала проблемы при работе на предварительных версиях Android 14 (проверка версии завершалась неудачей, но механизм выполнения действий в предыдущих выпусках работал некорректно, в частности, на Android 14).
Версия 1.0.0-альфа01
22 марта 2023 г.
androidx.graphics:graphics-path:1.0.0-alpha01
выпущен. Версия 1.0.0-alpha01 содержит эти коммиты.
Новые возможности
- Эта новая библиотека позволяет запрашивать данные Path через новый API
PathIterator
. Используя этот API, вызывающие объекты могут перебирать все сегменты объекта Path, чтобы определить операцию и данные для этих сегментов. - Библиотека использует аналогичные API, представленные в предварительной версии Android 14, но эта версия API AndroidX также работает с версиями API 21.
Графическое ядро версии 1.0
Версия 1.0.2
16 октября 2024 г.
Выпущен androidx.graphics:graphics-core:1.0.2
. Версия 1.0.2 содержит эти коммиты .
Исправления ошибок
- Исправлена проблема, из-за которой экземпляры
SurfaceControl
по-прежнему управлялись системным наборщиком даже после их выпуска. - Исправлена проблема, из-за которой представленный в данный момент экземпляр
HardwareBuffer
не освобождался после удаления зависимостей с низкой задержкой. - Исправлена проблема мерцания на некоторых устройствах Android 14+, которые не поддерживали флаг использования переднего буфера.
Версия 1.0.1
4 сентября 2024 г.
Выпущен androidx.graphics:graphics-core:1.0.1
. Версия 1.0.1 содержит эти коммиты .
Исправления ошибок
- Исправлена проблема, из-за которой ресурсы памяти иногда не освобождались.
Версия 1.0.0
29 мая 2024 г.
Выпущен androidx.graphics:graphics-core:1.0.0
. Версия 1.0.0 содержит эти коммиты .
Основные особенности версии 1.0.0
- Официальный стабильный выпуск библиотеки графического ядра. Включает незначительные исправления ошибок и улучшения производительности по сравнению с версией 1.0.0-rc01.
Версия 1.0.0-rc01
17 апреля 2024 г.
Выпущен androidx.graphics:graphics-core:1.0.0-rc01
. Эта версия разработана во внутренней ветке.
Исправления ошибок
- Исправлена проблема, приводившая к потенциальному двойному закрытию дескрипторов файлов с помощью
CanvasBufferedRendererAPI
на некоторых устройствах Android под управлением Android 14. - Исправлена проблема, из-за которой
FrameBuffer
не удалял экземпляры кадрового буфера должным образом.
Версия 1.0.0-бета01
13 декабря 2023 г.
Выпущен androidx.graphics:graphics-core:1.0.0-beta01
. Версия 1.0.0-beta01 содержит эти коммиты.
Новые возможности
- Представлен новый API
LowLatencyCanvasView
для поддержки рендеринга с низкой задержкой с помощью API 2D-графики Android (Canvas + Paint) в иерархии представлений. - Представлен
CanvasBufferedRenderer
API для поддержки аппаратного ускорения рендеринга Canvas вHardwareBuffer
. Это можно использовать для рисования части пользовательского интерфейса в буфере, который можно преобразовать в растровое изображение с помощью APIBitmap.wrapHardwareBuffer
.
Изменения API
- Обновлен API
CanvasBufferRenderer#releaseBuffer
теперь он имеет необязательный параметр ограничения. Обновлена документация, описывающая, когда возвращаетсяRenderResult#fence
. ( Если1ea7 ) - Добавьте метод
draw
вRenderRequest
для поддержки использования сопрограмм для планирования запросов на отрисовку. Предыдущий метод отрисовки, использующий исполнителя, переименован вdrawAsync
. МетодisClosed()
преобразован в свойство. ( I5bff6 ) - Открытый параметр формата буфера для
CanvasFrontBufferRenderer
для непосредственного сопоставления сCanvasBufferedRenderer.Builder#setBufferFormat
( I0f272 ). - Создан API
CanvasBufferedRenderer
для обработки аппаратного ускорения рендеринга холста вHardwareBuffer
. Это обеспечивает бэкпортированную реализацию для Android Q наряду с настройкой глубины цепочки подкачкиHardwareBuffers
. КонфигурацияColorSpace
по-прежнему ограничена Android U+, однако реализация совместимости обеспечивает неактивное поведение со стороны разработчиков. ( I9b1d8 ) - Добавьте API-интерфейсы
setFrameRate
/clearFrameRate
вSurfaceControlCompat.Transaction
, чтобы контролировать частоту кадров наряду со стратегией изменения для плавных переходов или переходов по умолчанию. ( I6045c ) - Понижен требуемый уровень API для
setDataSpace
до Android Q с Android T. ( I59c34 ) - Добавлен обратный вызов
onBufferReleased
в APIGLFrameBufferRenderer
чтобы дать потребителям возможность очистить состояние, когда буфер больше не отображается ( I8a4e2 ). - Создайте
LowLatencyCanvasView
для поддержки простого варианта использования рендеринга контента с низкой задержкой, который синхронизируется с рендерингом иерархии представлений. Это смягчает сложности, связанные с управлениемSurfaceView
за счет внутреннего управления экземпляромSurfaceView
, который транслируется с экрана на экран для синхронизированного рендеринга и рендеринга с малой задержкой соответственно. ( I9253b ) - В API
CanvasFrontBufferedRenderer
добавлена поддержка конфигурации цветового пространства. Обновлены многобуферные обратные вызовы, теперь они также включаютSurfaceControl
с обратной буферизацией ( I24bd9 ).
Версия 1.0.0-альфа05
6 сентября 2023 г.
Выпущен androidx.graphics:graphics-core:1.0.0-alpha05
. Версия 1.0.0-alpha05 содержит эти коммиты.
Новые возможности
- Представлен API
GLFrameBufferRenderer
. Это обеспечивает комбинацию зависимостей OpenGL, конфигурации цепочки обмена, форматов пикселей и конфигурацииSurfaceControl
. ( Ic775b )
Изменения API
- В различные API обратного вызова добавлены параметры ширины и высоты для размеров труб из
SurfaceHolder#Callbacks
. ( I7f9fc ) - Добавлен Clear API для очистки переднего и мультибуферизованного слоев. ( Ic1f95 )
- Добавлена поддержка настройки базового типа буфера цепочек обмена, используемых в
GLFrontBufferedRenderer
. ( I07a13 ) - Добавлены свойства Kotlin для геттеров в
GLFrameBufferRenderer
, аннотацияIntRange
для максимального количества записей в буфере и аннотацииHardwareBufferFormart
иHardwareBufferUsage
дляsetFormat
/setUsage
соответственно. ( Ief89e ) - Обновлен API
setBuffer
для транзакцийSurfaceControl
чтобы обеспечить ограничение выпуска. ( Ice1bb ) - Добавлены API-интерфейсы
SurfaceControlCompat.Transaction
для настройки пространства данных, а также установки расширенного диапазона яркости. ( Ic378d )
Версия 1.0.0-альфа04
7 июня 2023 г.
Выпущен androidx.graphics:graphics-core:1.0.0-alpha04
. Версия 1.0.0-alpha04 содержит эти коммиты.
Новые возможности
- Представлен
CanvasFrontBufferedRenderer
для поддержки графики с низкой задержкой с использованием APIandroid.graphics.Canvas
наряду с существующей реализацией OpenGL.
Изменения API
- Обновлен API
SurfaceControlCompat.Transaction#setBuffer
, позволяющий экземплярамHardwareBuffer
с нулевым значением отражать соответствующий API платформы ( I173d7 ). - Вместо этого переименуйте методы, относящиеся к рендерингу с двойной буферизацией, в Multi Buffered, поскольку резервная цепочка буферов может содержать более двух буферов. ( I830d7 )
- Создайте API
CanvasFrontBufferedRenderer
, чтобы позволить 3ps использовать систему рендеринга с фронтальной буферизацией с помощью API Canvas. ( Ibfc29 )
Исправления ошибок
- Исправлена проблема, из-за которой
GLFrontBufferedRenderer
не отображал контент после возобновления соответствующего действия. - Исправлена проблема, из-за которой содержимое передней буферизации очищалось преждевременно.
- Исправлена проблема, из-за которой
SurfaceHolder.Callbacks
не удалялись после выпуска графических API с низкой задержкой.
Версия 1.0.0-альфа03
22 марта 2023 г.
Выпущен androidx.graphics:graphics-core:1.0.0-alpha03
. Версия 1.0.0-alpha03 содержит эти коммиты.
Изменения API
- Обновлена реализация обратного вызова
GLFrontBufferedRenderer
, чтобы предоставить объектBufferInfo
, который содержит ширину/высоту буфера вместе с идентификатором буфера кадра, который можно использовать для перенацеливания исходного места назначения после рендеринга в промежуточный рабочий буфер. ( I7fe20 ) - Консолидированное создание
SyncFence
для статического фабричного метода вSyncFenceCompat
. - Удален общедоступный метод совместимости для
eglDupNativeFenceFDANDROID
в пользу фабричного методаSyncFenceCompat
для создания SyncFence. Это необходимо для того, чтобы все поверхности API получали правильную реализациюSyncFence
независимо от уровня API. ( I849bb ) - Добавлена документация для
FrameBufferRenderer
иSyncStrategy
.-
FrameBufferRenderer
+FrameBuffer
+FrameBufferPool
перемещён в пакетandroidx.graphics.opengl
-
SyncStrategy
перенесен в пакетandroidx.graphics.opengl
- Обновлена документация
RenderCallback#onDraw
- Обновлена документация
RenderCallback#obtainFrameBuffer
, в которой за вызовFrameBuffer.close
отвечает разработчик API. - Обновлен
onDrawComplete
чтобы указать, что потребители несут ответственность за отправку содержимого для отображения. - Интерфейсы/классы совместимости
SyncFence
перенесены в пакетandroidx.hardware
для отражения платформы. - API
SyncFence
переименован вSyncFenceV19
и стал закрытым для консолидации использования вSyncFenceCompat
, который везде, где это возможно, использует APISyncFence
платформы. ( I5149c )
-
- Добавлены методы
GLFrontBufferedRenderer#cancel
иGLFrontBufferedRenderer#execute
. Первое полезно в сценариях отклонения ладони, когда рендеринг в передний буфер следует отменить и скрыть передний буфер. Последнее полезно в сценариях манипулирования объектами в потоке GL без необходимости планировать рендеринг. ( Если0b7f ) - Добавьте API для рендеринга непосредственно на слой с двойной буферизацией. Это способствует повторному рендерингу сцены после возобновления, а также дает потребителям возможность выборочно определять, когда динамически использовать рендеринг с фронтальной буферизацией в зависимости от желаемой сцены для рендеринга. ( Ied56c )
- В
SurfaceControlCompat.Builder
добавлен новый API для поддержки настройки родительскогоSurfaceControl
из другого экземпляраSurfaceControl
в дополнение к существующему механизму изSurfaceView
. ( I1d1b6 ) - Больше обнуляемых типов возвращаемых устаревших скрытых функций ( Ibf7b0 ).
- Добавлена константа расширения
EGL_ANDROID_get_native_client_buffer
для запроса, поддерживает ли устройство Android импорт экземпляровHardwareBuffer
в объектыEGLClientBuffer
, которые можно использовать как экземплярEGLImage
. ( Иад767 ) - Добавление аннотации
@JvmDefaultWithCompatibility
( I8f206 )
Версия 1.0.0-альфа02
9 ноября 2022 г.
Выпущен androidx.graphics:graphics-core:1.0.0-alpha02
. Версия 1.0.0-alpha02 содержит эти коммиты.
Изменения API
- Исправлена отсутствующая аннотация
RequiresApi
дляaddTransactionCommitListener
, которая была представлена в Android S ( I0a035 ). - Обновлены обратные вызовы
onDraw<Front/Double>
Buffer, чтобы предоставить матрицу преобразования, которую потребители могут передавать в свои вершинные шейдеры в дополнение к текущей ширине/высоте буфера. Потребители несут ответственность за использование этих параметров для правильной предварительной ротации кода рендеринга OpenGL. ( I82f9e )
Исправления ошибок
- Уменьшена задержка графики за счет предварительного вращения буферов перед выполнением транзакций
SurfaceControl
. - Исправлена проблема, из-за которой в журналах ошибок отображалась ошибка 300d (EGL_BAD_SURFACE).
- Исправлена проблема, из-за которой
GLFrontBufferedRenderer
становился недействительным после возобновления соответствующего действия, в котором он использовался. - Расширенная поддержка эмуляторов и устройств ChromeOS.
- Исправлена проблема, из-за которой передний буферный слой мог быть скрыт преждевременно.
Версия 1.0.0-альфа01
24 октября 2022 г.
Выпущен androidx.graphics:graphics-core:1.0.0-alpha01
. Версия 1.0.0-alpha01 содержит эти коммиты.
Новые возможности
- Первоначальный выпуск библиотеки графического ядра AndroidX. Сюда входят API-интерфейсы для поддержки вариантов использования с низкой задержкой, таких как ввод с помощью стилуса. Здесь также представлены некоторые вспомогательные API для использования OpenGL.
Изменения API
- Представляет
GLFrontBufferedRenderer
для помощи в фронтальном и многобуферном рендеринге для достижения низкой задержки и высокого качества рендеринга. - Представляет API-интерфейс
GLRenderer
для помощи в рендеринге OpenGL для различных поставщиков Surface, таких какSurfaceView
,TextureView
и других.