圖像

  
跨多個 Android 平台版本善用圖像設施

這個資料表會列出 androidx.graphics 群組中的所有構件。

構件 穩定版 候選版 Beta 版 Alpha 版
圖形核心 - - 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 版的修訂項

新功能

  • 程式庫現在提供新的 pill()pillStar() 函式,可以輕鬆建立這些圓角/加上星號的形狀。此外,我們也提供新 API,可用於計算形狀所需的確切邊界 (之前的邊界只是根據貝茲曲線錨點和控制點基礎的預估值),以及可能的界限上限,方便您判斷存放容器的容器大小 (此容器中旋轉時,保存容器的大小)。(I71827)。

API 變更

修正錯誤

  • 繪製這些形狀做為筆劃路徑時,偶爾會因為發生長度低的轉譯問題,而出現與零長度曲線相關的低階轉譯問題。消除所有零長度曲線後可修正這項錯誤 (形狀不需要的形狀,也因此能減少圖形產生的路徑負擔)。

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-alpha041.0.0-alpha04 版包含以下修訂項目。

新功能

  • 這個版本包含幾項 API 變更,以及錯誤修正。
  • 許多 API 變更使 Shapes 程式庫更容易使用 KMP。方便您透過非 Android 程式碼 (例如適用於 Android 的 Compose 程式碼) 進行呼叫。舉例來說,API 中沒有 Android 類型,例如先前的 PointF、矩陣和路徑類型。
  • 另外,基於效能考量,我們也對 API 和實作進行了幾項變更,特別是以盡量減少物件配置 (和收集)。例如,從 PointF 移動到單獨的 Float 參數,可避免配置多個臨時 PointF 結構來保存這些端點。

API 變更

  • Morph.asMutableCubics 替換為用於疊代 MutableCubics 的函式。已變更 PointTransformer 功能介面,現在會採用 Point 的 x 和 y 座標,並傳回 TransformedResult (以轉換後的 x 和 y 座標建構) (I6719e)
  • 移除公開的 Cubic 建構函式,並將其設為工廠函式。(I409ce)。
  • 新增 Android 專屬的轉換和繪圖 API (I079f6b/292289543)
  • 排除 Android 依附元件 (Iadc1cb/292289543)
  • 現在可以更容易理解錨點和控制項屬性名稱 (If13bdb/294562941)
  • PointF 參數已變更為 Float 組 (Id4705b/276466399b/290254314)
  • progress 現已直接傳遞至 Morph 繪圖指令 (Icdca2)

修正錯誤

1.0.0-alpha03 版本

2023 年 6 月 7 日

發布 androidx.graphics:graphics-shapes:1.0.0-alpha031.0.0-alpha03 版包含此連結所列的修訂項目。

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-alpha021.0.0-alpha02 版包含此連結所列的修訂項目。

API 變更

  • Polygon 父類別已與子類別 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,藉此在開始形狀和結束形狀之間建立動畫。以動畫方式逐漸瞭解進度,並在每次影格中繪製結果,以便在新的圓角形狀之間建立流暢的動畫。

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-rc011.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-beta011.0.0-beta01 版包含此連結所列的修訂項目。

API 變更

修正錯誤

  • 修正多項錯誤並提升執行效能,包括程式庫處理圓錐的方式。

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-alpha011.0.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • 這個新的程式庫可讓您透過新的 PathIterator API 查詢路徑資料。呼叫端可利用這個 API,反覆執行 Path 物件的所有部分,以判定這些區隔的作業和資料。
  • 該程式庫使用在 Android 14 預先發布版中推出的類似 API,但這個 API 的 AndroidX 版本也適用於 API 21 之前的版本。

Graphics Core 1.0 版

1.0.0-beta01 版本

2023 年 12 月 13 日

發布 androidx.graphics:graphics-core:1.0.0-beta011.0.0-beta01 版包含此連結所列的修訂項目。

新功能

  • 推出新的 LowLatencyCanvasView API,支援在 View 階層中使用 Android 的 2D 圖形 API (畫布 + 繪製) 以低延遲算繪。
  • 推出 CanvasBufferedRenderer API,支援 HardwareBuffer 的硬體加速 Canvas 轉譯功能這可用來將使用者介面的部分內容繪製到緩衝區中,而該緩衝區可使用 Bitmap.wrapHardwareBuffer API 轉換為點陣圖。

API 變更

  • 更新了 CanvasBufferRenderer#releaseBuffer API,包含選用的圍欄參數。更新說明文件,說明傳回 RenderResult#fence 的時機。(If1ea7)。
  • draw 方法新增至 RenderRequest,以支援利用協同程式安排繪圖要求。將先前使用執行程式的先前繪製方法重新命名為 drawAsync。已將 isClosed() 方法重構為屬性。(I5bff6)。
  • CanvasFrontBufferRenderer 公開緩衝區格式參數,以便直接對應至 CanvasBufferedRenderer.Builder#setBufferFormat (I0f272)
  • 已建立 CanvasBufferedRenderer API,可將硬體加速畫布算繪作業處理為 HardwareBuffer。這提供向 Android Q 向後移植的實作內容,以及 HardwareBuffers 的交換鏈深度設定。ColorSpace 設定仍僅限於 Android U+,不過 Compat 實作會代表開發人員提供免人工管理的行為。(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-alpha051.0.0-alpha05 版包含此連結所列的修訂項目。

新功能

  • 推出 GLFrameBufferRenderer API。這樣做可以結合 OpenGL 依附元件、交換鏈設定、像素格式和 SurfaceControl 設定。(Ic775b)。

API 變更

  • 將寬度 + 高度參數新增至各種回呼 API 至 SurfaceHolder#Callbacks 的管道維度。(I7f9fc)。
  • 新增了清除 API,以清除前端和多緩衝層。(Ic1f95)。
  • 開始支援設定 GLFrontBufferedRenderer 內使用交換鏈的基礎緩衝區類型。(I07a13)。
  • GLFrameBufferRenderer 上為 getter 新增 kotlin 屬性,為緩衝區項目數量上限加上 IntRange 註解,以及為 setFormat/setUsage 新增 HardwareBufferFormartHardwareBufferUsage 註解。(Ief89e)。
  • 已針對 SurfaceControl 交易更新 setBuffer API,以提供版本圍欄。(Ice1bb)。
  • 新增了 SurfaceControlCompat.Transaction API 以設定資料空間以及設定擴展亮度範圍。(Ic378d)。

1.0.0-alpha04 版

2023 年 6 月 7 日

發布 androidx.graphics:graphics-core:1.0.0-alpha041.0.0-alpha04 版本包含以下修訂項目。

新功能

  • 推出 CanvasFrontBufferedRenderer,以透過 android.graphics.Canvas API 搭配現有的 OpenGL 實作方式支援低延遲圖形

API 變更

  • 更新 SurfaceControlCompat.Transaction#setBuffer API,允許可為空值的 HardwareBuffer 執行個體建立對應的平台 API (I173d7)
  • 將參照「雙緩衝區算繪」的方法改為「多緩衝區轉譯」的方法重新命名,因為備用交換鏈可能包含超過 2 個緩衝區。(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-alpha031.0.0-alpha03 版包含此連結所列的修訂項目。

API 變更

  • 更新 GLFrontBufferedRenderer 回呼實作,提供包含緩衝區寬度/高度的 BufferInfo 物件,以及影格緩衝區 ID,可用於在算繪為中繼暫存緩衝區後,重新指定原始目的地。(I7fe20)。
  • SyncFenceCompat 上將 SyncFence 建立功能整合為靜態工廠方法。
  • 移除 eglDupNativeFenceFDANDROID 的公開相容性方法,改用 SyncFenceCompat 工廠方法建立 SyncFence。這是為了確保所有 API 介面都能收到正確的 SyncFence 實作,無論 API 級別為何。(I849bb)。
  • 新增了 FrameBufferRendererSyncStrategy 的說明文件。
    • 已將「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#cancelGLFrontBufferedRenderer#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-alpha021.0.0-alpha02 版包含此連結所列的修訂項目。

API 變更

  • 修正了在 Android S 中引入的 addTransactionCommitListener 缺少 RequiresApi 註解的問題 (I0a035)
  • 更新了 onDraw<Front/Double> 緩衝區回呼,藉以提供除目前緩衝區寬度/高度外,可讓消費者傳遞至其頂點著色器的轉換矩陣。消費者有責任使用這些參數,以適當的方式預先旋轉 OpenGL 轉譯程式碼(I82f9e)。

修正錯誤

  • 透過在發出 SurfaceControl 交易前預先旋轉緩衝區,改進了圖像延遲。
  • 修正了錯誤記錄會顯示錯誤 300d (EGL_BAD_SURFACE) 的問題。
  • 修正了 GLFrontBufferedRenderer 在使用的相應 Activity 恢復後就會無效的問題。
  • 加強對模擬器和 ChromeOS 裝置的支援。
  • 修正了前緩衝層可能過早隱藏的問題。

1.0.0-alpha01 版

2022 年 10 月 24 日

發布 androidx.graphics:graphics-core:1.0.0-alpha011.0.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • 圖像核心 AndroidX 程式庫的初始版本。其中包括支援低延遲用途的 API,例如觸控筆輸入。這也會加入可供 OpenGL 使用的一些輔助程式 API。

API 變更

  • 加入 GLFrontBufferedRenderer,以協助前置和多緩衝區轉譯,藉此達到低延遲和高品質轉譯輸出。
  • 加入 GLRenderer API,以協助各種 Surface 供應商 (例如 SurfaceViewTextureView 等) 進行 OpenGL 轉譯。