graphics
下表列出 androidx.graphics 群組的所有構件。
| 構件 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
|---|---|---|---|---|
| graphics-core | 1.0.3 | - | - | - |
| graphics-path | 1.0.1 | - | - | 1.1.0-alpha01 |
| graphics-shapes | 1.1.0 | - | - | - |
宣告依附元件
如要新增 Graphics 的依附元件,必須將 Google Maven 存放區新增至專案中。詳情請參閱「Google 的 Maven 存放區」。
在應用程式或模組的 build.gradle 檔案中,新增所需構件的依附元件:
Groovy
dependencies { implementation "androidx.graphics:graphics-core:1.0.3" implementation "androidx.graphics:graphics-path:1.1.0-alpha01" implementation "androidx.graphics:graphics-shapes:1.1.0" }
Kotlin
dependencies { implementation("androidx.graphics:graphics-core:1.0.3") implementation("androidx.graphics:graphics-path:1.1.0-alpha01") implementation("androidx.graphics:graphics-shapes:1.1.0") }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 文件。
這個構件沒有任何版本資訊。
Graphics 1.1 版
1.1.0 版本
2025 年 10 月 22 日
發布 androidx.graphics:graphics-*:1.1.0。1.1.0 版包含這些修訂項目。
1.1.0-rc01 版本
2025 年 9 月 10 日
發布 androidx.graphics:graphics-*:1.1.0-rc01。1.1.0-rc01 版包含這些修訂項目。
1.1.0-beta01 版本
2025 年 7 月 30 日
發布 androidx.graphics:graphics-*:1.1.0-beta01。1.1.0-beta01 版包含這些修訂項目。
API 變更
1.1.0-alpha01 版
2024 年 12 月 11 日
發布 androidx.graphics:graphics-*:1.1.0-alpha01。1.1.0-alpha01 版包含這些修訂項目。
新功能
- 將主要示範內容改為通用的形狀編輯器。您可以從 SVG 路徑匯入形狀、手動編輯自動程序中偵測到的特徵 (如果系統遺漏),以及將結果匯出為可在正式版程式碼中使用的程式碼。(I1ac13)
- 以曲線長度測量值取代形狀輪廓進度的角度測量值,這樣就能使用更複雜的形狀進行變形。(I75478) , I390dd
- 改良特徵對應演算法,讓更多變形效果看起來更自然。(I83287)
API 變更
- 新增 SVG 路徑匯入和特徵序列化工具。一般流程如下:
- 使用新的
SvgPathParser.parseFeatures(),將 SVG 路徑 (SVGpath元素中d屬性的值) 轉換為List<Feature>。 - 您可以修改該物件,然後使用
FeatureSerializer.serialize()序列化為字串。 - 產生的字串可用於正式版程式碼,並透過
FeatureSerializer.parse()匯入 - 請注意,步驟 1 和 2 只需執行一次,且可使用新應用程式執行。正式版程式碼只需執行步驟 3。(I9bd00、b/371196190)、(Ic3842)、(If68ed)、(I10251)
- 使用新的
- 公開多邊形地圖項目和地圖項目類型。現在可以使用採用
List<Features>的基本建構函式,建立更多一般RoundedPolygons。特徵主要是立體貝茲曲線清單,但會加上標記,協助 Morph 演算法比對開始和結束形狀 (凸角會對應到凸角,凹角會對應到凹角)。(I61e76)、(I1fc5c) - 新增對
watchosDeviceArm64KMP 目標和目標 Kotlin 1.9 的支援。(Icf15d、b/364652024)
修正錯誤
- 修正最後一個特徵為空白時的極端情況。(I390dd)
- 讓
RoundedPolygon創作更強大。(Ib862c、b/360888486) - 修正
RoundedPolygon初始化作業的錯誤。(I83ddb) - 修正演算法中的錯誤,估算多邊形中心。(Ida147)
Graphics Shapes 1.0 版
1.0.1 版
2024 年 9 月 4 日
發布 androidx.graphics:graphics-shapes:1.0.1、androidx.graphics:graphics-shapes-android:1.0.1 和 androidx.graphics:graphics-shapes-desktop:1.0.1。1.0.1 版包含這些修訂項目。
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 變更
- 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.1.0-alpha01 版
2025 年 8 月 13 日
發布 androidx.graphics:graphics-path:1.1.0-alpha01。1.1.0-alpha01 版包含這些修訂項目。
修正錯誤
- 新增從圓錐到二次方的轉換實作,並在主機平台上使用。f059b1
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 版包含此連結所列的修訂項目。
新功能
- 這個新程式庫可透過新的
PathIteratorAPI 查詢路徑資料。呼叫端可使用這個 API 疊代 Path 物件的所有區隔,判斷這些區隔的作業和資料。 - 這個程式庫使用的 API 與 Android 14 預先發布版中導入的 API 類似,但這個 AndroidX 版本的 API 也適用於 API 21 以上版本。
Graphics Core 1.0 版
1.0.3 版
2025 年 3 月 26 日
發布 androidx.graphics:graphics-core:1.0.3。1.0.3 版包含這些修訂項目。
修正錯誤
- 修正在 API<33 的特定裝置上繪圖時,全螢幕閃爍的問題。
1.0.2 版
2024 年 10 月 16 日
發布 androidx.graphics:graphics-core:1.0.2。1.0.2 版包含這些修訂項目。
修正錯誤
- 修正問題:即使
SurfaceControl執行個體已發布,系統合成器仍會管理這些執行個體。 - 修正問題:在處置低延遲依附元件後,目前顯示的
HardwareBuffer例項不會發布 - 修正特定 Android 14 以上版本裝置上閃爍的問題,這些裝置不支援前緩衝區使用旗標
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無法正確刪除 framebuffer 例項的問題。
1.0.0-beta01 版
2023 年 12 月 13 日
發布 androidx.graphics:graphics-core:1.0.0-beta01。1.0.0-beta01 版包含此連結所列的修訂項目。
新功能
- 推出新的
LowLatencyCanvasViewAPI,支援在 View 階層中,使用 Android 的 2D 圖形 API (Canvas + Paint) 進行低延遲算繪。 - 導入
CanvasBufferedRendererAPI,支援將硬體加速的 Canvas 算繪至HardwareBuffer。這可用於將部分使用者介面繪製到緩衝區,並使用Bitmap.wrapHardwareBufferAPI 轉換為點陣圖。
API 變更
- 更新
CanvasBufferRenderer#releaseBufferAPI,加入選用的柵欄參數。更新說明文件,說明何時會傳回RenderResult#fence。(If1ea7) - 在
RenderRequest中新增draw方法,支援利用協同程式排定繪圖要求。將先前使用執行器的繪製方法重新命名為drawAsync。將isClosed()方法重構為屬性。(I5bff6) - 將緩衝區格式參數公開至
CanvasFrontBufferRenderer,直接對應至CanvasBufferedRenderer.Builder#setBufferFormat(I0f272) - 建立
CanvasBufferedRendererAPI,將硬體加速的畫布算繪至HardwareBuffer。這項功能會向後移植至 Android Q,並設定HardwareBuffers的交換鏈深度。ColorSpace設定仍僅限於 Android U 以上版本,但相容性實作會代表開發人員提供無作業行為。(I9b1d8) - 將
setFrameRate/clearFrameRateAPI 新增至SurfaceControlCompat.Transaction,即可控制影格速率,並設定變更策略,實現無縫或預設轉場效果。(I6045c) setDataSpace的必要 API 級別從 Android T 降至 Android Q。(I59c34)- 在
GLFrameBufferRendererAPI 中新增onBufferReleased回呼,讓消費者有機會在緩衝區不再顯示時清除狀態 (I8a4e2) - 建立
LowLatencyCanvasView,支援以低延遲時間算繪內容的簡單用途,並與 View 階層算繪作業同步。這項功能會管理在螢幕上翻譯/未翻譯的SurfaceView執行個體,以同步處理並以低延遲方式算繪,藉此減輕與SurfaceView管理相關的複雜度。(I9253b) - 在
CanvasFrontBufferedRendererAPI 中新增色彩空間設定支援。更新多重緩衝回呼,一併納入後方緩衝的SurfaceControl(I24bd9)
1.0.0-alpha05 版
2023 年 9 月 6 日
發布 androidx.graphics:graphics-core:1.0.0-alpha05。1.0.0-alpha05 版包含此連結所列的修訂項目。
新功能
- 導入
GLFrameBufferRendererAPI。這會提供 OpenGL 依附元件、交換鏈結設定、像素格式和SurfaceControl設定的組合。(Ic775b)
API 變更
- 在各種回呼 API 中新增寬度和高度參數,以便從
SurfaceHolder#Callbacks管道傳送維度。(I7f9fc) - 新增清除 API,可清除正面和多重緩衝層。(Ic1f95)
- 新增支援功能,可設定
GLFrontBufferedRenderer中使用的交換鏈基礎緩衝區類型。(I07a13) - 已為
GLFrameBufferRenderer、IntRange註解 (適用於最大緩衝區項目) 的 getter 新增 Kotlin 屬性,並為setFormat/setUsage分別新增HardwareBufferFormart和HardwareBufferUsage註解。(Ief89e) - 更新
SurfaceControl交易的setBufferAPI,提供發布柵欄。(Ice1bb) - 新增
SurfaceControlCompat.TransactionAPI,可設定資料空間及擴展亮度範圍。(Ic378d)
1.0.0-alpha04 版
2023 年 6 月 7 日
發布 androidx.graphics:graphics-core:1.0.0-alpha04。1.0.0-alpha04 版本包含以下修訂項目。
新功能
- 推出
CanvasFrontBufferedRenderer,支援利用android.graphics.CanvasAPI 和現有 OpenGL 實作項目,實現低延遲繪圖
API 變更
- 更新
SurfaceControlCompat.Transaction#setBufferAPI,允許可為空值的HardwareBuffer執行個體,以反映對應的平台 API (I173d7) - 將參照雙緩衝區轉譯的方法重新命名為多緩衝區,因為支援的交換鏈可能包含超過 2 個緩衝區。(I830d7)
- 建立
CanvasFrontBufferedRendererAPI,讓第三方可使用 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物件,其中包含緩衝區寬度/高度,以及可用於在轉譯至中繼暫存緩衝區後,重新指定原始目的地的影格緩衝區 ID。(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套件,以反映架構 - 已將
SyncFenceAPI 重新命名為SyncFenceV19,並設為私有,以將用法整合至SyncFenceCompat,盡可能運用架構的SyncFenceAPI。(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執行個體匯入可做為EGLImage執行個體使用的EGLClientBuffer物件。(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) 的問題。
- 修正了
GLFrontBufferedRenderer在使用的相應 Activity 恢復後就會無效的問題。 - 提升了對模擬器和 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,以協助前置和多緩衝區轉譯,藉此達到低延遲和高品質轉譯輸出。 - 加入
GLRendererAPI,以協助各種 Surface 供應商 (例如SurfaceView、TextureView等) 進行 OpenGL 轉譯。