グラフィック

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

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

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

依存関係の宣言

Graphics への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.0-beta01"
    implementation "androidx.graphics:graphics-path:1.0.0"
    implementation "androidx.graphics:graphics-shapes:1.0.0-alpha05"
}

Kotlin

dependencies {
    implementation("androidx.graphics:graphics-core:1.0.0-beta01")
    implementation("androidx.graphics:graphics-path:1.0.0")
    implementation("androidx.graphics:graphics-shapes:1.0.0-alpha05")
}

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

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

新しい問題を報告する

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

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

Graphics Shapes バージョン 1.0

バージョン 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 は、コンテナ内で回転させる場合に保持するコンテナのサイズを判断するのに役立ちます。(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 の変更の多くは、Shapes ライブラリを KMP に適したものにします。これにより、Android 以外のコード(Android に依存しない Compose コードなど)からの呼び出しが容易になります。たとえば、以前の PointF、Matrix、Path など、API には Android の型は含まれていません。
  • また、パフォーマンス上の理由から、特にオブジェクトの割り当て(と収集)を最小限に抑えるために、API と実装に複数の変更が加えられました。たとえば、PointF から個別の Float パラメータに移動することで、これらの頂点を保持するために多くの一時的な PointF 構造を割り当てる必要がなくなります。

API の変更

  • Morph.asMutableCubics を、MutableCubics を反復処理する関数に置き換えました。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
  • Star 関数と Circle 関数が断片化され、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 と統合されました。すべてのポリゴンが(必要に応じて)丸みを帯びたポリゴンになりました。
  • スター関数(以前と同様に 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 に設定して、開始シェイプと終了シェイプの間をアニメーション化できます。時間の経過に伴う進行状況をアニメーション化し、その結果をフレームごとに描画して、新しい丸い図形の間にスムーズなアニメーションを作成します。

Graphics Path バージョン 1.0

バージョン 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 については、こちらをご覧ください

バグの修正

  • 34 未満の API での PathIterator のパフォーマンスを改善しました。(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.0-beta01

2023 年 12 月 13 日

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

新機能

  • ビュー階層内で Android の 2D グラフィック API(Canvas + Paint)を使用した低レイテンシ レンダリングをサポートする、新しい LowLatencyCanvasView API を導入しました。
  • ハードウェア アクセラレーションによるキャンバス レンダリングをサポートする CanvasBufferedRenderer API を HardwareBuffer に導入しました。これを使用すると、ユーザー インターフェースの一部をバッファに描画できます。このバッファは、Bitmap.wrapHardwareBuffer API でビットマップに変換できます。

API の変更

  • オプションのフェンス パラメータを持つように CanvasBufferRenderer#releaseBuffer API を更新しました。RenderResult#fence が返されるタイミングについて説明するようドキュメントを更新しました。(If1ea7
  • コルーチンを活用して描画リクエストをスケジュールできるように、draw メソッドを RenderRequest に追加しました。エグゼキュータを使用していた以前の描画メソッドの名前を drawAsync に変更しました。isClosed() メソッドをプロパティにリファクタリングしました。(I5bff6
  • バッファ形式のパラメータを CanvasFrontBufferRenderer に公開して、CanvasBufferedRenderer.Builder#setBufferFormat に直接マッピングできるようにしました。(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
  • フロントレイヤとマルチバッファ レイヤの両方をクリアするための明確な API を追加しました。(Ic1f95
  • GLFrontBufferedRenderer 内で使用されるスワップチェーンの基盤となるバッファタイプを設定するためのサポートを追加しました。(I07a13
  • GLFrameBufferRenderer のゲッターの kotlin プロパティ、最大バッファ エントリの IntRange アノテーション、setFormat/setUsageHardwareBufferFormart アノテーションと 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
  • バッキング スワップチェーンには 3 つ以上のバッファが含まれている可能性があるため、ダブルバッファ レンダリングを参照するメソッドの名前を「マルチバッファ」に変更しました。(I830d7
  • CanvasFrontBufferedRenderer API を作成して、3ps が Canvas API を使用してフロント バッファ レンダリング システムを利用できるようにします。(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 のドキュメントを追加しました。
    • FrameBufferRendererFrameBufferFrameBufferPoolandroidx.graphics.opengl パッケージに移動しました
    • SyncStrategyandroidx.graphics.opengl パッケージに移動しました
    • RenderCallback#onDraw 個のドキュメントを更新しました
    • API の実装者が FrameBuffer.close を呼び出す役割について、RenderCallback#obtainFrameBuffer のドキュメントを更新しました。
    • 表示するコンテンツのディスパッチは消費者の責任であることが示されるように onDrawComplete を更新しました
    • フレームワークをミラーリングするために、SyncFence 互換インターフェース/クラスを androidx.hardware パッケージに移動しました。
    • SyncFence API の名前を SyncFenceV19 に変更し、非公開にして使用を SyncFenceCompat に統合し、可能な限りフレームワークの SyncFence API を利用するようにしました。(I5149c
  • GLFrontBufferedRenderer#cancel メソッドと GLFrontBufferedRenderer#execute メソッドを追加しました。前者は、フロント バッファへのレンダリングをキャンセルしてフロント バッファを隠す必要があるパーム リジェクションのシナリオで有用です。後者は、レンダリングをスケジュールせずに GL スレッド上のオブジェクトを操作するシナリオで役立ちます。(If0b7f
  • ダブル バッファ レイヤに直接レンダリングする API を追加しました。これにより、再開後にシーンを再レンダリングできるだけでなく、レンダリングするシーンに基づいて、フロント バッファ レンダリングを使用するタイミングを消費者が選択的に決定できるようになります。(Ied56c
  • SurfaceView からの既存のメカニズムに加えて、別の SurfaceControl インスタンスから親 SurfaceControl を設定できるように、SurfaceControlCompat.Builder に新しい API を追加しました。(I1d1b6
  • 非推奨になった非表示関数の戻り値の型の null 可能性を拡大しました。(Ibf7b0
  • EGLImage インスタンスとして使用できる EGLClientBuffer オブジェクトへの HardwareBuffer インスタンスのインポートを Android デバイスがサポートしているかどうかをクエリする 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 レンダリングを補助します。