グラフィック

  
複数の Android プラットフォーム リリースでグラフィック機能を利用します

androidx.graphics グループ内のすべてのアーティファクトのリストを以下に示します。

アーティファクト 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
グラフィックス コア 1.0.1 - - -
グラフィックパス 1.0.1 - - -
グラフィック シェイプ 1.0.1 - - -
このライブラリの最終更新日: 2024 年 9 月 4 日

依存関係の宣言

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 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

このアーティファクトのリリースノートはありません。

Graphics Shapes バージョン 1.0

バージョン 1.0.0

2024 年 8 月 21 日

androidx.graphics:graphics-shapes:1.0.0androidx.graphics:graphics-shapes-android:1.0.0androidx.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-rc01androidx.graphics:graphics-shapes-android:1.0.0-rc01androidx.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-beta01androidx.graphics:graphics-shapes-android:1.0.0-beta01androidx.graphics:graphics-shapes-desktop:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。

API の変更

  • シェイプを事前に回転し、別の点から開始できるようにします。この変更により、pillStar シェイプで、境界上のデフォルト以外のポイントから曲線を開始できるようになりました。これは、シェイプのパスのストロークをアニメーション化し、シェイプのアウトライン上の特定の位置から描画を開始する場合に便利です。 (Ifbb4db/324303807)。
  • RoundedPolygon で同じ関数を並列化する calculateBounds() 関数を Morph に追加しました。(I8a3b6b/325463575)。

バージョン 1.0.0-alpha05

2024 年 2 月 7 日

androidx.graphics:graphics-shapes:1.0.0-alpha05androidx.graphics:graphics-shapes-android:1.0.0-alpha05androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください

新機能

  • ライブラリに新しい pill() 関数と pillStar() 関数が追加され、丸みを帯びた図形や星付きの図形を簡単に作成できるようになりました。シェイプに必要な境界を正確に計算するための新しい API(以前の境界は、基礎となるベジェ曲線のアンカーとコントロール ポイントに基づく推定値にすぎない)や、可能な範囲の上限を計算するための新しい API もあります。これらの API は、コンテナ内で回転する場合に、保持するコンテナのサイズを決定するために役立ちます。(I71827)。

API の変更

  • 正確な境界と最大の境界を取得するためのオプションが追加されました。(I6d49fb/317286450)。

バグの修正

  • これらのシェイプをストローク パスとして描画すると、長さがゼロの曲線に関連する低レベルのレンダリングの問題により、レンダリング アーティファクトが発生する場合があります。このバグは、長さがゼロの曲線(シェイプが不要であるため、シェイプによって生成されるパスのオーバーヘッドを削減)をすべて削除することで修正されました。

バージョン 1.0.0-alpha04

2023 年 12 月 13 日

androidx.graphics:graphics-shapes:1.0.0-alpha04androidx.graphics:graphics-shapes-android:1.0.0-alpha04androidx.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.asMutableCubicsMutableCubics を反復する関数に置き換えました。PointTransformer 関数インターフェースを変更しました。これにより、Point の x 座標と y 座標を受け取り、TransformedResult(変換された x 座標と y 座標で構築)を返すようになりました(I6719e)。
  • パブリック Cubic コンストラクタを削除し、ファクトリ関数に変更しました。(I409ce)。
  • Android 固有の変換 API と描画 API の追加(I079f6b/292289543
  • Android の依存関係を排除しました(Iadc1cb/292289543
  • アンカーとコントロールのプロパティ名がわかりやすくなりました(If13bdb/294562941)。
  • PointF パラメータが Float ペアに変更されました。(Id4705b/276466399b/290254314
  • progressMorph 描画コマンドに直接渡されるようになりました(Icdca2)。

バグの修正

  • 大きなシェイプを作成する場合のバグを修正しました。(I4fd66b/313497325)。

バージョン 1.0.0-alpha03

2023 年 6 月 7 日

androidx.graphics:graphics-shapes:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください

API の変更

  • 新しい RoundedPolygon.rectangle() 関数を追加しました。(I78e7eb/280322189
  • スター関数と円関数が頭文字で区切られ、RoundedPolygon のコンパニオン オブジェクト(例:RoundedPolygon.star(...)I14735)。

バグの修正

  • 平滑化に関するバグを修正しました(Ibf894)。
  • 開始形状と終了形状が同じ場合に発生するバグを修正しました。切り取り用に使用可能なスペースをより適切に配分し、まず使用可能なスペースを丸めて、スペースが残っている場合はスムーズに仕上げます。(Ibd320b/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 の使用を削除しました(Ie9117b/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)。
  • FrameBufferRendererSyncStrategy のドキュメントを追加しました。
    • FrameBufferRenderer + FrameBuffer + FrameBufferPoolandroidx.graphics.opengl パッケージに移動しました
    • SyncStrategyandroidx.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 で導入された addTransactionCommitListenerRequiresApi アノテーションが欠落する問題を修正しました(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 は、SurfaceViewTextureView などのさまざまなサーフェス プロバイダで OpenGL レンダリングを補助します。