グラフィック
androidx.graphics
グループ内のすべてのアーティファクトのリストを以下に示します。
アーティファクト | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
グラフィックス コア | 1.0.1 | - | - | - |
グラフィックパス | 1.0.1 | - | - | - |
グラフィック シェイプ | 1.0.1 | - | - | - |
依存関係の宣言
Graphics への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.graphics:graphics-core:1.0.2" implementation "androidx.graphics:graphics-path:1.0.1" implementation "androidx.graphics:graphics-shapes:1.1.0-alpha01" }
Kotlin
dependencies { implementation("androidx.graphics:graphics-core:1.0.2") implementation("androidx.graphics:graphics-path:1.0.1") implementation("androidx.graphics:graphics-shapes:1.1.0-alpha01") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
このアーティファクトのリリースノートはありません。
Graphics Shapes バージョン 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 に含まれる commit については、こちらをご覧ください。
バージョン 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 に含まれるこちらの commit については、
バージョン 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 に含まれる commit については、こちらをご覧ください。
API の変更
- シェイプを事前に回転し、別の点から開始できるようにします。この変更により、
pillStar
シェイプで、境界上のデフォルト以外のポイントから曲線を開始できるようになりました。これは、シェイプのパスのストロークをアニメーション化し、シェイプのアウトライン上の特定の位置から描画を開始する場合に便利です。 (Ifbb4d、b/324303807)。 RoundedPolygon
で同じ関数を並列化するcalculateBounds()
関数を Morph に追加しました。(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 に含まれる commit については、こちらをご覧ください。
新機能
- ライブラリに新しい
pill()
関数とpillStar()
関数が追加され、丸みを帯びた図形や星付きの図形を簡単に作成できるようになりました。シェイプに必要な境界を正確に計算するための新しい API(以前の境界は、基礎となるベジェ曲線のアンカーとコントロール ポイントに基づく推定値にすぎない)や、可能な範囲の上限を計算するための新しい API もあります。これらの 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 に含まれる commit については、こちらをご覧ください。
新機能
- このリリースには、いくつかの API の変更と、バグの修正が含まれています。
- API の変更の多くにより、シェイプ ライブラリが KMP に対応しました。これにより、Android 以外のコード(Android に依存しない Compose コードなど)からの呼び出しが容易になります。たとえば、上記の PointF、行列、パスの各型など、Android の型は API にはありません。
- また、パフォーマンス上の理由、特にオブジェクトの割り当て(および収集)を最小限に抑えるために、API と実装に対していくつかの変更が行われました。たとえば、PointF から個別の Float パラメータに移行することで、一時的な PointF 構造体を多数割り当てて頂点を保持する必要がなくなります。
API の変更
Morph.asMutableCubics
をMutableCubics
を反復する関数に置き換えました。PointTransformer
関数インターフェースを変更しました。これにより、Point
の x 座標と y 座標を受け取り、TransformedResult
(変換された x 座標と y 座標で構築)を返すようになりました(I6719e)。- パブリック
Cubic
コンストラクタを削除し、ファクトリ関数に変更しました。(I409ce)。 - Android 固有の変換 API と描画 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 に含まれる commit については、こちらをご覧ください。
API の変更
- 新しい
RoundedPolygon.rectangle()
関数を追加しました。(I78e7e、b/280322189) - スター関数と円関数が頭文字で区切られ、
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 に含まれる commit については、こちらをご覧ください。
API の変更
- Polygon スーパークラスがサブクラス
RoundedPolygon
に統合されました。すべてのポリゴンが [必要に応じて] 角丸ポリゴンになりました。 - Star 関数(以前と同様に
RoundedPolygon
を返す)は、以前のinnerRadiusRatio
パラメータではなく、innerRadius
値を取るようになりました。この値は、既存の radius パラメータと同じ単位で指定され、よりシンプルかつ一貫性のあるものになります。また、内側と外側の両方の半径に同じ数値が適用されることを明確にするために、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 に含まれる commit については、こちらをご覧ください。
バグの修正
- コンパイラ フラグの改善。
バージョン 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 に含まれる commit については、こちらをご覧ください。
バグの修正
- API での PathIterator のパフォーマンスを改善 <34(Id4629)
バージョン 1.0.0-beta02
2024 年 1 月 10 日
今回のリリースで行われた変更は、すべてライブラリのサイズを小さくすることでしたが、ネイティブ コードが前提としていたため必要以上のサイズになっていました。
androidx.graphics:graphics-path:1.0.0-beta02
がリリースされました。バージョン 1.0.0-beta02 に含まれる commit については、こちらをご覧ください。
バグの修正
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 に含まれる commit については、こちらをご覧ください。
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 に含まれる commit については、こちらをご覧ください。
新機能
- この新しいライブラリを使用すると、新しい
PathIterator
API を介してパスデータのクエリを実行できます。この API を使用すると、呼び出し元は Path オブジェクトのすべてのセグメントを反復処理して、それらのセグメントのオペレーションとデータを決定できます。 - このライブラリは Android 14 プレビューで導入された同様の API を使用しますが、この AndroidX バージョンの API は API 21 までのバージョンでも動作します。
Graphics Core バージョン 1.0
バージョン 1.0.1
2024 年 9 月 4 日
androidx.graphics:graphics-core:1.0.1
がリリースされました。バージョン 1.0.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- メモリリソースが解放されないことがある問題を修正しました。
バージョン 1.0.0
2024 年 5 月 29 日
androidx.graphics:graphics-core:1.0.0
がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください。
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 に含まれる commit については、こちらをご覧ください。
新機能
- 新しい
LowLatencyCanvasView
API が導入され、ビュー階層内で Android の 2D グラフィック API(キャンバス + ペイント)を使用して低レイテンシのレンダリングができるようになりました。 - ハードウェア アクセラレーションによるキャンバス レンダリングを
HardwareBuffer
にサポートするためのCanvasBufferedRenderer
API を導入しました。これを使用して、ユーザー インターフェースの一部をバッファに描画し、Bitmap.wrapHardwareBuffer
API でビットマップに変換できます。
API の変更
- オプションのフェンス パラメータが含まれるように
CanvasBufferRenderer#releaseBuffer
API を更新しました。RenderResult#fence
が返されるタイミングについて説明するようドキュメントを更新しました。(If1ea7)。 draw
メソッドをRenderRequest
に追加して、コルーチンを使用して描画リクエストをスケジュール設定できるようになりました。エグゼキュータを消費していた以前の描画メソッドの名前をdrawAsync
に変更しました。isClosed()
メソッドをプロパティにリファクタリングしました。(I5bff6)。CanvasBufferedRenderer.Builder#setBufferFormat
に直接マッピングするために、バッファ形式パラメータをCanvasFrontBufferRenderer
に公開しました。(I0f272)- ハードウェア アクセラレーション キャンバスの
HardwareBuffer
へのレンダリングを処理するCanvasBufferedRenderer
API を作成しました。これにより、スワップチェーンの深さHardwareBuffers
の設定とともに、Android Q にバックポートされた実装が提供されます。ColorSpace
の構成は引き続き Android U+ に限定されますが、互換実装ではデベロッパーの NoOps 動作が提供されます。できます。(I9b1d8)。 setFrameRate
/clearFrameRate
API をSurfaceControlCompat.Transaction
に追加して、シームレスまたはデフォルトの遷移のための変更戦略とともにフレームレートを制御するには、(I6045c)。setDataSpace
に必要な API レベルを Android T から Android Q に引き下げました。(I59c34)。GLFrameBufferRenderer
API にonBufferReleased
コールバックを追加し、バッファが表示されなくなったときにコンシューマが状態をクリーンアップできるようにしました(I8a4e2)。LowLatencyCanvasView
を作成して、ビュー階層のレンダリングと同期される低レイテンシでコンテンツをレンダリングするシンプルなユースケースをサポートします。これにより、同期レンダリングと低レイテンシ レンダリングでそれぞれ画面のオフ/オンに変換される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 に含まれる commit については、こちらをご覧ください。
新機能
GLFrameBufferRenderer
API を導入しました。これにより、OpenGL の依存関係、スワップ チェーン構成、ピクセル形式、SurfaceControl
構成の組み合わせが提供されます。(Ic775b)。
API の変更
SurfaceHolder#Callbacks
からパイプの寸法を取得するために、さまざまなコールバック API に幅と高さのパラメータを追加しました。(I7f9fc)。- フロント バッファとマルチバッファ レイヤの両方を消去するための Clear API を追加しました。(Ic1f95)。
GLFrontBufferedRenderer
内で使用されるスワップチェーンの基盤となるバッファタイプを設定するためのサポートを追加しました。(I07a13)。GLFrameBufferRenderer
のゲッター用の Kotlin プロパティ、最大バッファ エントリ用のIntRange
アノテーション、setFormat
/setUsage
用のHardwareBufferFormart
アノテーションとHardwareBufferUsage
アノテーションをそれぞれ追加しました。(Ief89e)。SurfaceControl
トランザクションに関するsetBuffer
API を更新し、リリースフェンスを提供しました。(Ice1bb)。- データ空間を構成し、拡張された明るさの範囲を設定するための
SurfaceControlCompat.Transaction
API を追加しました。(Ic378d)。
バージョン 1.0.0-alpha04
2023 年 6 月 7 日
androidx.graphics:graphics-core:1.0.0-alpha04
がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。
新機能
- 既存の OpenGL 実装とともに
android.graphics.Canvas
API を活用して低レイテンシのグラフィックスをサポートする、CanvasFrontBufferedRenderer
を導入しました
API の変更
- null 値許容の
HardwareBuffer
インスタンスを対応するプラットフォーム API をミラーリングできるように、SurfaceControlCompat.Transaction#setBuffer
API を更新しました(I173d7) - バッキング スワップチェーンには 2 つ以上のバッファが含まれている可能性があるため、ダブル バッファ レンダリングを参照するメソッドの名前を代わりに Multi Buffered に変更しました。(I830d7)。
CanvasFrontBufferedRenderer
API を作成し、Canvas API を使用して 3ps がフロント バッファ レンダリング システムを利用できるようにします。(Ibfc29)。
バグの修正
- 対応するアクティビティを再開した後に
GLFrontBufferedRenderer
がコンテンツをレンダリングしない問題を修正しました。 - フロント バッファ内のコンテンツが早期にクリアされる問題を修正しました。
- 低レイテンシ グラフィック API のリリース後に
SurfaceHolder.Callbacks
が削除されない問題を修正しました。
バージョン 1.0.0-alpha03
2023 年 3 月 22 日
androidx.graphics:graphics-core:1.0.0-alpha03
がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
- 中間スクラッチ バッファへのレンダリング後に元のデスティネーションを再ターゲットするために使用できるフレーム バッファ識別子とともに、バッファの幅と高さを含む
BufferInfo
オブジェクトを提供するようにGLFrontBufferedRenderer
コールバックの実装を更新しました。(I7fe20)。 SyncFence
の作成をSyncFenceCompat
の静的ファクトリ メソッドに統合しました。eglDupNativeFenceFDANDROID
のパブリック互換性メソッドを削除し、SyncFence の作成にSyncFenceCompat
ファクトリ メソッドを使用するようになりました。これは、API レベルに関係なくすべての API サーフェスで正しいSyncFence
の実装を受け取るためです。(I849bb)。FrameBufferRenderer
とSyncStrategy
のドキュメントを追加しました。FrameBufferRenderer
+FrameBuffer
+FrameBufferPool
をandroidx.graphics.opengl
パッケージに移動しましたSyncStrategy
をandroidx.graphics.opengl
パッケージに移動しましたRenderCallback#onDraw
個のドキュメントを更新しました- API の実装者が
FrameBuffer.close
の呼び出しを担当することについて、RenderCallback#obtainFrameBuffer
のドキュメントを更新しました - 消費者が表示するコンテンツのディスパッチの責任を示すように
onDrawComplete
を更新しました SyncFence
互換インターフェース/クラスをandroidx.hardware
パッケージに移動して、フレームワークをミラーリングしました。SyncFence
API の名前をSyncFenceV19
に変更し、非公開にすることで、可能な限りフレームワークのSyncFence
API を利用するSyncFenceCompat
に使用を統合しました。(I5149c)。
GLFrontBufferedRenderer#cancel
メソッドとGLFrontBufferedRenderer#execute
メソッドを追加しました。前者は、フロント バッファへのレンダリングをキャンセルしてフロント バッファを非表示にする必要があるパーム リジェクションのシナリオで有用です。後者は、レンダリングのスケジュールを設定せずに GL スレッド上のオブジェクトを操作する場合に便利です。(If0b7f)。- ダブル バッファリングされたレイヤに直接レンダリングする API を追加します。これにより、再開後のシーンの再レンダリングが容易になるとともに、レンダリングするシーンに基づいて、フロント バッファ レンダリングを動的に利用するタイミングを消費者が選択的に決定できるようになります。(Ied56c)。
SurfaceView
の既存のメカニズムに加えて、別のSurfaceControl
インスタンスから親SurfaceControl
を構成できるようにするための新しい API をSurfaceControlCompat.Builder
に追加しました。(I1d1b6)。- 非推奨になった非表示関数の戻り値の型の null 可能性を拡大しました。(Ibf7b0)
- Android デバイスが、
EGLImage
インスタンスとして使用できるEGLClientBuffer
オブジェクトへのHardwareBuffer
インスタンスのインポートをサポートしているかどうかを照会するEGL_ANDROID_get_native_client_buffer
拡張定数を追加しました。(Iad767)。 @JvmDefaultWithCompatibility
アノテーションを追加しました。(I8f206)
バージョン 1.0.0-alpha02
2022 年 11 月 9 日
androidx.graphics:graphics-core:1.0.0-alpha02
がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
- Android S で導入された
addTransactionCommitListener
のRequiresApi
アノテーションが欠落する問題を修正しました(I0a035) onDraw<Front/Double>
バッファのコールバックを更新して、コンシューマーが現在のバッファの幅、高さに加えて、頂点シェーダーに渡すことができる変換マトリックスを提供するようにしました。これらのパラメータを使用して、OpenGL レンダリング コードを正しく事前回転することは、コンシューマーの責任です。(I82f9e)
バグの修正
SurfaceControl
トランザクションを発行する前にバッファを事前回転することで、グラフィックのレイテンシを改善しました。- エラーログにエラー 300d(EGL_BAD_SURFACE)が表示される問題を修正しました。
- 対応するアクティビティが再開された後、内部で使用された
GLFrontBufferedRenderer
が無効になる問題を修正しました。 - エミュレータと ChromeOS デバイスのサポートを強化しました。
- 前面バッファのレイヤが非表示になるのが早すぎる可能性がある問題を修正しました。
バージョン 1.0.0-alpha01
2022 年 10 月 24 日
androidx.graphics:graphics-core:1.0.0-alpha01
がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
- graphics コア AndroidX ライブラリの初回リリースです。このリリースには、タッチペン入力などの低レイテンシ ユースケースをサポートする API が含まれています。また、OpenGL を使用するためのヘルパー API もいくつか導入されています。
API の変更
GLFrontBufferedRenderer
を導入しました。このクラスは、前面およびマルチバッファのレンダリングを補助し、低レイテンシかつ高品質のレンダリング出力を実現します。GLRenderer
API を導入しました。この API は、SurfaceView
やTextureView
などのさまざまなサーフェス プロバイダで OpenGL レンダリングを補助します。