图形
此表列出了 androidx.graphics
组中的所有工件。
工件 | 稳定版本 | 候选版本 | Beta 版本 | Alpha 版本 |
---|---|---|---|---|
graphics-core | 1.0.1 | - | - | - |
graphics-path | 1.0.1 | - | - | - |
graphics-shapes | 1.0.1 | - | - | - |
声明依赖项
要添加对 Graphics 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以获取更多信息。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项
Groovy
dependencies { implementation "androidx.graphics:graphics-core:1.0.1" implementation "androidx.graphics:graphics-path:1.0.1" implementation "androidx.graphics:graphics-shapes:1.0.1" }
Kotlin
dependencies { implementation("androidx.graphics:graphics-core:1.0.1") implementation("androidx.graphics:graphics-path:1.0.1") implementation("androidx.graphics:graphics-shapes:1.0.1") }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中现有问题。您可以通过点击星形按钮为现有问题添加您的投票。
有关更多信息,请参阅问题跟踪器文档。
此工件没有发行说明。
图形形状版本 1.0
版本 1.0.0
2024 年 8 月 21 日
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
2024 年 7 月 24 日
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-beta01
2024 年 5 月 1 日
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,b/325463575)
版本 1.0.0-alpha05
2024 年 2 月 7 日
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,b/317286450)
错误修复
- 当将这些形状绘制为描边路径时,偶尔会出现渲染伪像,这是由于与零长度曲线相关的底层渲染问题导致的。此错误通过消除所有零长度曲线得到修复(形状不需要这些曲线,因此也节省了形状生成的路径的开销)。
版本 1.0.0-alpha04
2023 年 12 月 13 日
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 代码(例如与 Android 无关的 Compose 代码)进行调用更容易。例如,API 中没有 Android 类型,例如以前的 PointF、Matrix 和 Path 类型。
- 还出于性能原因对 API 和实现进行了一些更改,特别是为了最大程度地减少对象分配(和收集)。例如,从 PointF 到单独的 Float 参数的转换避免了分配许多临时 PointF 结构来保存这些顶点。
API 更改
- 将
Morph.asMutableCubics
替换为一个函数,用于迭代MutableCubics
。更改了PointTransformer
函数接口,现在它接受Point
的 x 和 y 坐标并返回TransformedResult
(使用转换后的 x 和 y 坐标构建)(I6719e) - 删除了公共
Cubic
构造函数,并将其设为工厂函数。(I409ce) - 添加特定于 Android 的转换和绘制 API(I079f6,b/292289543)
- 消除 android 依赖项(Iadc1c,b/292289543)
- 锚点和控制点属性名称现在更有意义了(If13bd,b/294562941)
PointF
参数已更改为Float
对(Id4705,b/276466399,b/290254314)progress
现在直接传递给Morph
绘制命令(Icdca2)
错误修复
- 修复了创建大型形状时的错误。(I4fd66,b/313497325)
版本 1.0.0-alpha03
2023 年 6 月 7 日
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,b/277936300)
版本 1.0.0-alpha02
2023 年 4 月 19 日
androidx.graphics:graphics-shapes:1.0.0-alpha02
已发布。版本 1.0.0-alpha02 包含这些提交。
API 更改
- 多边形超类已与它的子类
RoundedPolygon
合并;现在所有多边形都是(可选)圆角多边形。 - Star 函数(与之前一样,仍然返回
RoundedPolygon
)现在采用innerRadius
值,而不是之前的innerRadiusRatio
参数。这与现有的半径参数使用相同的单位,使操作更简单且更一致。此外,numOuterVertices
参数已重命名为numVerticesPerRadius
以阐明相同的数字适用于内外半径。 CornerRounding.radius
之前在文档中说明是相对于多边形的大小,但它实际上(也应该是)一个绝对值,而不是相对值。文档已更新,并且限制其最大值为 1.0 的注释已修复。
版本 1.0.0-alpha01
2023 年 4 月 5 日
Graphics-Shapes 是一个新的库,允许轻松创建和渲染圆角多边形形状,以及在不同形状之间进行简单且自动的变形(动画)。
androidx.graphics:graphics-shapes:1.0.0-alpha01
已发布。此版本是从内部分支发布的。
新功能
- 使用 Polygon API 创建具有所需顶点数的规则多边形和星形多边形。
- 使用可选的
CornerRounding
参数指定角的圆角半径和平滑参数,从而创建具有圆角的多边形形状。 - 使用新的
Morph(Polygon, Polygon)
API 自动计算一个“变形”形状,其进度可以设置为从 0 到 1 以在起始形状和结束形状之间进行动画。随着时间的推移对该进度进行动画,并在每一帧上绘制结果,以在这些新的圆角形状之间创建平滑的动画。
图形路径版本 1.0
版本 1.0.1
2024 年 5 月 1 日
androidx.graphics:graphics-path:1.0.1
已发布。版本 1.0.1 包含 这些提交。
错误修复
- 编译器标志的改进。
版本 1.0.0
2024 年 3 月 6 日
androidx.graphics:graphics-path:1.0.0
已发布。
版本 1.0.0-rc01
2024 年 2 月 21 日
androidx.graphics:graphics-path:1.0.0-rc01
已发布。版本 1.0.0-rc01 包含这些提交。
错误修复
- 提高 API < 34 上 PathIterator 的性能(Id4629)
版本 1.0.0-beta02
2024 年 1 月 10 日
此版本中的更改都是关于减小库的大小,由于本机代码做出的假设,库的大小比必要的要大。
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-beta01
2023 年 11 月 29 日
androidx.graphics:graphics-path:1.0.0-beta01
已发布。版本 1.0.0-beta01 包含这些提交。
API 更改
- 删除了实验性
isAtLeastU()
API 的用法(Ie9117,b/289269026)
错误修复
- 各种修复和性能改进,包括库处理圆锥曲线的方式。
版本 1.0.0-alpha02
2023 年 6 月 7 日
androidx.graphics:graphics-path:1.0.0-alpha02
已发布。此版本是在内部分支中开发的。
新功能
- 修复了内部平台版本检查问题,该问题会导致在 Android 14 预览版上运行时出现问题(版本检查将失败,但在先前版本上执行操作的机制在 Android 14 上尤其无法正常工作)。
版本 1.0.0-alpha01
2023 年 3 月 22 日
androidx.graphics:graphics-path:1.0.0-alpha01
已发布。版本 1.0.0-alpha01 包含这些提交。
新功能
- 此新库允许通过新的
PathIterator
API 查询路径数据。使用此 API,调用者可以遍历 Path 对象的所有段,以确定这些段的操作和数据。 - 该库使用 Android 14 预览版中引入的类似 API,但此 AndroidX 版本的 API 也适用于 API 21 及更高版本。
图形核心版本 1.0
版本 1.0.1
2024 年 9 月 4 日
androidx.graphics:graphics-core:1.0.1
已发布。版本 1.0.1 包含 这些提交。
错误修复
- 修复了内存资源偶尔无法释放的问题。
版本 1.0.0
2024 年 5 月 29 日
androidx.graphics:graphics-core:1.0.0
已发布。版本 1.0.0 包含 这些提交。
1.0.0 的主要功能
- graphics-core 库的正式稳定版本。包含来自 1.0.0-rc01 的次要错误修复和性能改进
版本 1.0.0-rc01
2024 年 4 月 17 日
androidx.graphics:graphics-core:1.0.0-rc01
已发布。此版本是在内部分支中开发的。
错误修复
- 修复了在某些运行 Android 14 的 Android 设备上,
CanvasBufferedRendererAPI
导致文件描述符可能被关闭两次的问题。 - 修复了
FrameBuffer
无法正确删除帧缓冲区实例的问题。
版本 1.0.0-beta01
2023 年 12 月 13 日
androidx.graphics:graphics-core:1.0.0-beta01
已发布。 版本 1.0.0-beta01 包含以下提交。
新功能
- 引入了一个新的
LowLatencyCanvasView
API,用于支持在 View 层次结构中使用 Android 的 2D 图形 API(Canvas + Paint)进行低延迟渲染。 - 引入
CanvasBufferedRenderer
API,用于支持将 Canvas 渲染加速到HardwareBuffer
。这可以用于将用户界面的一部分绘制到一个缓冲区中,然后使用Bitmap.wrapHardwareBuffer
API 将其转换为 Bitmap。
API 更改
- 更新了
CanvasBufferRenderer#releaseBuffer
API,使其具有可选的 fence 参数。更新了文档,描述了何时返回RenderResult#fence
。(If1ea7) - 向
RenderRequest
添加了draw
方法,以支持利用协程调度绘制请求。将之前使用执行器的绘制方法重命名为drawAsync
。将isClosed()
方法重构为属性。(I5bff6) - 将缓冲区格式参数公开给
CanvasFrontBufferRenderer
,以直接映射到CanvasBufferedRenderer.Builder#setBufferFormat
(I0f272) - 创建了
CanvasBufferedRenderer
API 来处理将硬件加速的画布渲染到HardwareBuffer
中。这为 Android Q 提供了一个向后移植的实现,以及HardwareBuffers
交换链深度的配置。ColorSpace
配置仍然仅限于 Android U+,但是兼容性实现代表开发人员提供了无操作行为。(I9b1d8) - 在
SurfaceControlCompat.Transaction
中添加了setFrameRate
/clearFrameRate
API,以便控制帧率以及无缝或默认过渡的更改策略。(I6045c) - 将
setDataSpace
的所需 API 级别从 Android T 降至 Android Q。(I59c34) - 向
GLFrameBufferRenderer
API 添加了onBufferReleased
回调,以便使用者在不再呈现缓冲区时有机会清理状态(I8a4e2) - 创建
LowLatencyCanvasView
以支持低延迟渲染内容的简单用例,该内容与 View 层次结构渲染同步。这通过在内部管理SurfaceView
实例来缓解与SurfaceView
管理相关的复杂性,该实例分别用于同步和低延迟渲染而被移出/移入屏幕。(I9253b) - 向
CanvasFrontBufferedRenderer
API 添加了色彩空间配置支持。更新了多缓冲回调,使其还包括后缓冲SurfaceControl
(I24bd9)
版本 1.0.0-alpha05
2023 年 9 月 6 日
androidx.graphics:graphics-core:1.0.0-alpha05
已发布。 版本 1.0.0-alpha05 包含以下提交。
新功能
- 引入
GLFrameBufferRenderer
API。它结合了 OpenGL 依赖项、交换链配置、像素格式和SurfaceControl
配置。(Ic775b)
API 更改
- 向各种回调 API 添加了宽度和高度参数,以便从
SurfaceHolder#Callbacks
传递尺寸。(I7f9fc) - 添加了清除 API 以清除前置和多缓冲层。(Ic1f95)
- 添加了支持以配置
GLFrontBufferedRenderer
中使用的交换链的基础缓冲区类型。(I07a13) - 为
GLFrameBufferRenderer
上的 getter 添加了 Kotlin 属性,为最大缓冲区条目添加了IntRange
注释,以及为setFormat
/setUsage
分别添加了HardwareBufferFormart
和HardwareBufferUsage
注释。(Ief89e) - 更新了
SurfaceControl
事务上的setBuffer
API 以提供释放 fence。(Ice1bb) - 添加了
SurfaceControlCompat.Transaction
API 以配置数据空间以及设置扩展亮度范围。(Ic378d)
版本 1.0.0-alpha04
2023 年 6 月 7 日
androidx.graphics:graphics-core:1.0.0-alpha04
已发布。 版本 1.0.0-alpha04 包含以下提交。
新功能
- 引入了
CanvasFrontBufferedRenderer
以支持利用android.graphics.Canvas
API 和现有的 OpenGL 实现进行低延迟图形处理。
API 更改
- 更新了
SurfaceControlCompat.Transaction#setBuffer
API 以允许可为空的HardwareBuffer
实例来镜像相应的平台 API(I173d7) - 将引用双缓冲渲染的方法重命名为多缓冲,因为后备交换链可能包含两个以上的缓冲区。(I830d7)
- 创建
CanvasFrontBufferedRenderer
API 以使第三方能够利用使用 Canvas API 的前置缓冲渲染系统。(Ibfc29)
错误修复
- 修复了
GLFrontBufferedRenderer
在恢复相应的 Activity 后无法渲染内容的问题。 - 修复了前置缓冲内容过早清除的问题。
- 修复了在释放低延迟图形 API 后
SurfaceHolder.Callbacks
未被移除的问题。
版本 1.0.0-alpha03
2023 年 3 月 22 日
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
的文档,说明 API 的实现者负责调用FrameBuffer.close
。 - 更新了
onDrawComplete
,以指示使用者负责将内容分派到显示器。 - 将
SyncFence
兼容性接口/类移动到androidx.hardware
包中以镜像框架。 - 将
SyncFence
API 重命名为SyncFenceV19
并设为私有,以便将用法合并到SyncFenceCompat
中,后者尽可能地利用框架的SyncFence
API。(I5149c)
- 将
- 添加了
GLFrontBufferedRenderer#cancel
和GLFrontBufferedRenderer#execute
方法。前者在手掌拒绝场景中很有用,在这些场景中,应取消对前置缓冲区的渲染并隐藏前置缓冲区。后者在无需调度渲染的情况下操作 GL 线程上的对象时很有用。(If0b7f) - 添加了直接渲染到双缓冲层的 API。这有助于在恢复后重新渲染场景,并使使用者有机会根据要渲染的所需场景动态地选择确定何时利用前置缓冲渲染。(Ied56c)
- 向
SurfaceControlCompat.Builder
添加了新的 API,以支持除了从SurfaceView
中的现有机制之外,还从另一个SurfaceControl
实例配置父SurfaceControl
。(I1d1b6) - 更多弃用隐藏函数的返回类型可空性(Ibf7b0)
- 向
EGL_ANDROID_get_native_client_buffer
扩展常量添加了查询 Android 设备是否支持将HardwareBuffer
实例导入到EGLClientBuffer
对象中(这些对象可以用作EGLImage
实例)。(Iad767) - 添加
@JvmDefaultWithCompatibility
注释(I8f206)
版本 1.0.0-alpha02
2022 年 11 月 9 日
androidx.graphics:graphics-core:1.0.0-alpha02
已发布。 版本 1.0.0-alpha02 包含以下提交。
API 更改
- 修复了在 Android S 中引入的
addTransactionCommitListener
缺少RequiresApi
注释的问题(I0a035) - 更新了
onDraw<Front/Double>
缓冲区回调,以便提供使用者可以传递给顶点着色器的变换矩阵以及当前缓冲区宽度/高度。使用者负责使用这些参数正确预旋转其 OpenGL 渲染代码。(I82f9e)
错误修复
- 通过在发出
SurfaceControl
事务之前预旋转缓冲区来改善图形延迟。 - 修复了错误日志中显示错误 300d(EGL_BAD_SURFACE)的问题。
- 修复了在恢复使用它的相应 Activity 后
GLFrontBufferedRenderer
会失效的问题。 - 增加了对模拟器和 ChromeOS 设备的支持。
- 修复了前置缓冲层可能过早隐藏的问题。
版本 1.0.0-alpha01
2022 年 10 月 24 日
androidx.graphics:graphics-core:1.0.0-alpha01
已发布。 版本 1.0.0-alpha01 包含这些提交。
新功能
- 图形核心 AndroidX 库的初始版本。这包括支持低延迟用例(例如手写笔输入)的 API。这也引入了一些用于 OpenGL 用法的辅助 API。
API 更改
- 引入
GLFrontBufferedRenderer
以协助前后缓冲渲染,以实现低延迟和高质量渲染输出。 - 引入
GLRenderer
API 以协助各种 Surface 提供程序(例如SurfaceView
、TextureView
等)的 OpenGL 渲染。