grafis

  
Memanfaatkan fasilitas grafis di beberapa rilis platform Android

Tabel ini mencantumkan semua artefak di grup androidx.graphics.

Artefak Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
core grafis - - 1.0.0-beta01 -
jalur-grafis - - 1.0.0-beta02 -
bentuk-grafis - - - 1.0.0-alpha05
Library ini terakhir diperbarui pada: 7 Februari 2024

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Print, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.0-beta01"
    implementation "androidx.graphics:graphics-path:1.0.0-beta02"
    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-beta02")
    implementation("androidx.graphics:graphics-shapes:1.0.0-alpha05")
}

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Tidak ada catatan rilis untuk artefak ini.

Graphics Shapes Versi 1.0

Versi 1.0.0-alpha05

7 Februari 2024

androidx.graphics:graphics-shapes:1.0.0-alpha05, androidx.graphics:graphics-shapes-android:1.0.0-alpha05, dan androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.

Fitur Baru

  • Library kini menawarkan fungsi pill() dan pillStar() baru untuk memudahkan pembuatan bentuk bulat/bintang ini. Ada juga API baru untuk menghitung batas persis yang diperlukan untuk suatu bentuk (batas sebelumnya hanyalah perkiraan berdasarkan anchor kurva Bezier dan titik kontrol dasar), serta batas maksimum yang memungkinkan, yang dapat berguna untuk menentukan ukuran container yang menampungnya jika batas tersebut akan diputar dalam container tersebut. (I71827)

Perubahan API

  • Kini ada lebih banyak opsi untuk mengambil batas tepat dan maksimum. (I6d49f, b/317286450)

Perbaikan Bug

  • Kadang-kadang ada artefak rendering saat menggambar bentuk ini sebagai jalur yang digoreskan, karena masalah rendering level rendah yang terkait dengan kurva panjang nol. Bug ini diperbaiki dengan menghilangkan semua kurva panjang-nol (yang tidak diperlukan bentuk, sehingga juga menghemat overhead jalur yang dihasilkan oleh bentuk).

Versi 1.0.0-alpha04

13 Desember 2023

androidx.graphics:graphics-shapes:1.0.0-alpha04, androidx.graphics:graphics-shapes-android:1.0.0-alpha04, dan androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit berikut ini.

Fitur Baru

  • Rilis ini berisi beberapa perubahan API, serta perbaikan bug.
  • Banyak perubahan API membuat library Shapes menjadi KMP. Hal ini mempermudah panggilan dari kode non-Android (seperti kode Compose yang tidak bergantung pada Android). Misalnya, tidak ada jenis Android di API, seperti jenis PointF, Matrix, dan Path sebelumnya.
  • Ada juga beberapa perubahan yang dibuat pada API dan implementasinya karena alasan performa, khususnya untuk meminimalkan alokasi objek (dan pengumpulan). Misalnya, perpindahan dari PointF ke parameter Float yang terpisah menghindari pengalokasian banyak struktur PointF sementara untuk menyimpan verteks tersebut.

Perubahan API

  • Mengganti Morph.asMutableCubics dengan fungsi untuk melakukan iterasi pada MutableCubics. Mengubah antarmuka fungsional PointTransformer, kini mengambil koordinat x dan y dari Point dan menampilkan TransformedResult (yang dibuat dengan koordinat x & y yang telah diubah) (I6719e)
  • Menghapus konstruktor Cubic publik dan menjadikannya fungsi factory. (I409ce)
  • Menambahkan API transformasi dan gambar khusus Android (I079f6, b/292289543)
  • Menghapus dependensi Android (Iadc1c, b/292289543)
  • Nama properti anchor dan kontrol kini lebih logis (If13bd, b/294562941)
  • Parameter PointF diubah menjadi pasangan Float (Id4705, b/276466399, b/290254314)
  • progress kini diteruskan ke perintah menggambar Morph secara langsung (Icdca2)

Perbaikan Bug

Versi 1.0.0-alpha03

7 Juni 2023

androidx.graphics:graphics-shapes:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.

Perubahan API

  • Menambahkan fungsi RoundedPolygon.rectangle() baru (I78e7e, b/280322189)
  • Fungsi Bintang dan Lingkaran kini tidak digunakan lagi dan dipanggil melalui objek pendamping RoundedPolygon: misalnya, RoundedPolygon.star(...)(I14735)

Perbaikan Bug

  • Memperbaiki bug saat smoothing (Ibf894)
  • Memperbaiki bug yang terjadi saat bentuk awal dan akhir sama. Bagikan ruang yang tersedia dengan lebih baik di sisi untuk potongan, pertama-tama gunakan ruang yang tersedia untuk pembulatan, lalu untuk memuluskan jika ada ruang yang tersisa. (Ibd320, b/277936300)

Versi 1.0.0-alpha02

19 April 2023

androidx.graphics:graphics-shapes:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.

Perubahan API

  • Superclass Polygon digabungkan dengan subclass-nya, RoundedPolygon; semua poligon sekarang [secara opsional] merupakan poligon bulat.
  • Fungsi Bintang (yang masih menampilkan RoundedPolygon, seperti sebelumnya) kini menggunakan nilai innerRadius, bukan parameter innerRadiusRatio sebelumnya. Ini berada dalam unit yang sama dengan parameter radius yang ada, sehingga membuat segalanya lebih sederhana dan lebih konsisten. Selain itu, parameter numOuterVertices diganti namanya menjadi numVerticesPerRadius untuk memperjelas bahwa angka yang sama diterapkan ke radius dalam dan luar.
  • CornerRounding.radius sebelumnya didokumentasikan sebagai relatif terhadap ukuran poligon, tetapi itu (dan seharusnya) merupakan nilai absolut, bukan relatif. Dokumen telah diperbarui dan anotasi yang membatasinya ke nilai maksimum 1,0 telah diperbaiki.

Versi 1.0.0-alpha01

5 April 2023

Graphics-Shapes adalah library baru yang memungkinkan pembuatan dan rendering bentuk poligon bulat dengan mudah, serta morphing (animasi) yang sederhana dan otomatis di antara berbagai bentuk.

androidx.graphics:graphics-shapes:1.0.0-alpha01 dirilis. Versi ini dirilis dari cabang internal.

Fitur Baru

  • Gunakan Polygon API untuk membuat poligon reguler dan bintang dengan jumlah verteks yang diinginkan.
  • Gunakan parameter CornerRounding opsional untuk menentukan radius pembulatan dan parameter penghalusan sudut, yang menghasilkan bentuk poligon dengan sudut membulat.
  • Gunakan Morph(Polygon, Polygon) API baru untuk secara otomatis menghitung bentuk “morph” yang progresnya dapat ditetapkan dari 0 ke 1 untuk dianimasikan antara bentuk awal dan akhir. Animasikan progres tersebut dari waktu ke waktu, yang menggambarkan hasilnya di setiap frame, untuk membuat animasi yang mulus di antara bentuk-bentuk bulat baru ini.

Graphics Path Versi 1.0

Versi 1.0.0-rc01

21 Februari 2024

androidx.graphics:graphics-path:1.0.0-rc01 dirilis. Versi 1.0.0-rc01 berisi commit berikut ini.

Perbaikan Bug

  • Meningkatkan performa PathIterator di API < 34 (Id4629)

Versi 1.0.0-beta02

10 Januari 2024

Perubahan dalam rilis ini bertujuan untuk mengurangi ukuran library, yang ukurannya lebih besar dari yang diperlukan karena asumsi yang dibuat oleh kode native.

androidx.graphics:graphics-path:1.0.0-beta02 dirilis. Versi 1.0.0-beta02 berisi commit ini.

Perbaikan Bug

  • Mengurangi ukuran libandroidx.graphics.path.so sebesar 96%. (I71397)
  • Kurangi ukuran libandroidx.graphics.path.so sebesar 5%. (I2da7c)
  • Menyusutkan komponen native androidx.graphics:graphics-path sebesar 43%. (I8e40d)

Versi 1.0.0-beta01

29 November 2023

androidx.graphics:graphics-path:1.0.0-beta01 dirilis. Versi 1.0.0-beta01 berisi commit ini.

Perubahan API

Perbaikan Bug

  • Berbagai perbaikan dan peningkatan performa, termasuk cara library menangani kerucut.

Versi 1.0.0-alpha02

7 Juni 2023

androidx.graphics:graphics-path:1.0.0-alpha02 dirilis. Versi ini dikembangkan di cabang internal.

Fitur Baru

  • Memperbaiki masalah pemeriksaan versi platform internal yang menyebabkan masalah saat berjalan di pratinjau Android 14 (pemeriksaan versi akan gagal, tetapi mekanisme untuk melakukan hal-hal pada rilis sebelumnya tidak berfungsi dengan benar di Android 14 khususnya).

Versi 1.0.0-alpha01

22 Maret 2023

androidx.graphics:graphics-path:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.

Fitur Baru

  • Library baru ini memungkinkan kueri data Jalur melalui PathIterator API baru. Dengan API ini, pemanggil dapat melakukan iterasi melalui semua segmen objek Jalur untuk menentukan operasi dan data untuk segmen tersebut.
  • Library ini menggunakan API serupa yang diperkenalkan dalam pratinjau Android 14, tetapi versi AndroidX API ini juga berfungsi pada versi kembali ke API 21.

Graphics Core Versi 1.0

Versi 1.0.0-beta01

13 Desember 2023

androidx.graphics:graphics-core:1.0.0-beta01 dirilis. Versi 1.0.0-beta01 berisi commit ini.

Fitur Baru

  • Memperkenalkan LowLatencyCanvasView API baru untuk mendukung rendering latensi rendah dengan API grafis 2d Android (Canvas + Paint) dalam hierarki View.
  • Memperkenalkan CanvasBufferedRenderer API untuk mendukung rendering Canvas dengan akselerasi hardware ke HardwareBuffer. API ini dapat digunakan untuk menggambar sebagian antarmuka pengguna ke dalam buffer yang dapat dikonversi menjadi Bitmap menggunakan Bitmap.wrapHardwareBuffer API.

Perubahan API

  • Mengupdate CanvasBufferRenderer#releaseBuffer API agar memiliki parameter fence opsional. Memperbarui dokumentasi untuk menjelaskan kapan RenderResult#fence ditampilkan. (If1ea7)
  • Menambahkan metode draw ke RenderRequest untuk mendukung pemanfaatan coroutine untuk menjadwalkan permintaan gambar. Mengganti nama metode gambar sebelumnya yang menggunakan eksekutor menjadi drawAsync. Memfaktorkan ulang metode isClosed() ke properti. (I5bff6)
  • Mengekspos parameter format buffer ke CanvasFrontBufferRenderer untuk dipetakan langsung ke CanvasBufferedRenderer.Builder#setBufferFormat (I0f272)
  • Membuat CanvasBufferedRenderer API untuk menangani rendering kanvas dengan akselerasi hardware menjadi HardwareBuffer. Ini menyediakan implementasi yang di-backport ke Android Q bersama konfigurasi kedalaman swapchain HardwareBuffers. Konfigurasi ColorSpace masih dibatasi untuk Android U+, tetapi penerapan compat memberikan perilaku tanpa pengoperasian atas nama developer. (I9b1d8)
  • Tambahkan setFrameRate/clearFrameRate API ke SurfaceControlCompat.Transaction untuk mengontrol kecepatan frame bersama dengan strategi perubahan untuk transisi yang lancar atau default. (I6045c)
  • Menurunkan level API yang diperlukan untuk setDataSpace ke Android Q dari Android T. (I59c34)
  • Menambahkan callback onBufferReleased ke GLFrameBufferRenderer API untuk memberi konsumen kesempatan untuk membersihkan status saat buffer tidak lagi ditampilkan (I8a4e2)
  • Buat LowLatencyCanvasView untuk mendukung kasus penggunaan sederhana merender konten dengan latensi rendah yang disinkronkan dengan rendering hierarki Tampilan. Hal ini mengurangi kerumitan yang terkait dengan pengelolaan SurfaceView dengan mengelola instance SurfaceView secara internal yang diterjemahkan di luar/di layar untuk masing-masing disinkronkan dan rendering latensi rendah. (I9253b)
  • Menambahkan dukungan konfigurasi ruang warna ke CanvasFrontBufferedRenderer API. Mengupdate callback multibuffer yang di-buffer untuk juga menyertakan SurfaceControl yang di-buffer kembali (I24bd9)

Versi 1.0.0-alpha05

6 September 2023

androidx.graphics:graphics-core:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.

Fitur Baru

  • Memperkenalkan GLFrameBufferRenderer API. Ini menyediakan kombinasi dependensi OpenGL, konfigurasi swap chain, format piksel, dan konfigurasi SurfaceControl. (IC775b)

Perubahan API

  • Menambahkan parameter lebar + tinggi ke berbagai API callback ke dimensi pipa dari SurfaceHolder#Callbacks. (I7f9fc)
  • Menambahkan API yang jelas untuk menghapus lapisan depan dan multi-buffer. (IC1f95)
  • Menambahkan dukungan untuk mengonfigurasi jenis buffer swapchain dasar yang digunakan dalam GLFrontBufferedRenderer. (I07a13)
  • Menambahkan properti kotlin untuk pengambil pada anotasi GLFrameBufferRenderer, anotasi IntRange untuk entri buffer maksimum, serta anotasi HardwareBufferFormart dan HardwareBufferUsage untuk masing-masing setFormat/setUsage. (Ief89e)
  • Mengupdate setBuffer API pada transaksi SurfaceControl untuk menyediakan fence rilis. (Ice1bb)
  • Menambahkan SurfaceControlCompat.Transaction API untuk mengonfigurasi ruang data serta menyetel rentang kecerahan yang diperluas. (IC378d)

Versi 1.0.0-alpha04

7 Juni 2023

androidx.graphics:graphics-core:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.

Fitur Baru

  • Memperkenalkan CanvasFrontBufferedRenderer untuk mendukung grafis latensi rendah yang memanfaatkan android.graphics.Canvas API bersama dengan implementasi OpenGL yang ada

Perubahan API

  • Mengupdate SurfaceControlCompat.Transaction#setBuffer API untuk memungkinkan instance HardwareBuffer nullable untuk mencerminkan API platform yang sesuai (I173d7)
  • Ganti nama metode yang merujuk pada rendering Buffering Ganda menjadi Multi Buffer karena swapchain pendukung dapat berisi lebih dari 2 buffer. (I830d7)
  • Buat CanvasFrontBufferedRenderer API untuk mengaktifkan 3ps agar dapat memanfaatkan sistem rendering yang di-buffer di depan menggunakan Canvas API. (Ibfc29)

Perbaikan Bug

  • Memperbaiki masalah yang menyebabkan GLFrontBufferedRenderer tidak merender konten setelah melanjutkan Aktivitas yang sesuai.
  • Memperbaiki masalah saat konten yang di-buffer di-depan akan dihapus sebelum waktunya.
  • Memperbaiki masalah yang menyebabkan SurfaceHolder.Callbacks tidak dihapus setelah API grafis latensi rendah dirilis.

Versi 1.0.0-alpha03

22 Maret 2023

androidx.graphics:graphics-core:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.

Perubahan API

  • Mengupdate implementasi callback GLFrontBufferedRenderer untuk menyediakan objek BufferInfo yang berisi lebar/tinggi buffer bersama dengan ID buffer frame yang dapat digunakan untuk menargetkan ulang tujuan asli setelah rendering ke buffer scratch perantara. (I7fe20)
  • Menggabungkan pembuatan SyncFence ke metode factory statis pada SyncFenceCompat.
  • Menghapus metode kompatibilitas publik untuk eglDupNativeFenceFDANDROID dan mendukung metode factory SyncFenceCompat untuk pembuatan SyncFence. Hal ini untuk memastikan semua platform API menerima implementasi SyncFence yang benar, apa pun level API-nya. (I849bb)
  • Menambahkan dokumentasi untuk FrameBufferRenderer dan SyncStrategy.
    • Memindahkan FrameBufferRenderer + FrameBuffer + FrameBufferPool ke paket androidx.graphics.opengl
    • SyncStrategy dipindahkan ke paket androidx.graphics.opengl
    • RenderCallback#onDraw dokumen diperbarui
    • Memperbarui dokumentasi RenderCallback#obtainFrameBuffer yang mengimplementasikan API yang bertanggung jawab untuk memanggil FrameBuffer.close
    • Memperbarui onDrawComplete untuk menunjukkan bahwa konsumen bertanggung jawab untuk mengirim konten yang akan ditampilkan
    • Memindahkan antarmuka/class kompatibilitas SyncFence ke paket androidx.hardware untuk mencerminkan framework
    • Mengganti nama SyncFence API menjadi SyncFenceV19 dan dijadikan pribadi untuk menggabungkan penggunaan menjadi SyncFenceCompat yang memanfaatkan SyncFence API framework jika memungkinkan. (I5149c)
  • Menambahkan metode GLFrontBufferedRenderer#cancel dan GLFrontBufferedRenderer#execute. Yang pertama berguna dalam skenario penolakan telapak tangan ketika rendering ke buffer depan harus dibatalkan dan menyembunyikan buffer depan. Yang kedua ini berguna dalam skenario untuk memanipulasi objek pada thread GL tanpa harus menjadwalkan render. (If0b7f)
  • Menambahkan API untuk merender secara langsung ke lapisan buffer ganda. Hal ini membantu rendering ulang adegan setelah dilanjutkan serta memberikan kesempatan bagi konsumen untuk secara selektif menentukan kapan harus memanfaatkan rendering buffer depan secara dinamis berdasarkan adegan yang diinginkan untuk dirender. (Ied56c)
  • Menambahkan API baru ke SurfaceControlCompat.Builder untuk mendukung konfigurasi SurfaceControl induk dari instance SurfaceControl lain selain mekanisme yang ada dari SurfaceView. (I1d1b6)
  • Lebih banyak nullability jenis nilai yang ditampilkan dari fungsi tersembunyi yang tidak digunakan lagi (Ibf7b0)
  • Menambahkan konstanta ekstensi EGL_ANDROID_get_native_client_buffer untuk mengkueri apakah perangkat Android mendukung pengimporan instance HardwareBuffer ke objek EGLClientBuffer yang dapat digunakan sebagai instance EGLImage. (Iad767)
  • Menambahkan anotasi @JvmDefaultWithCompatibility (I8f206)

Versi 1.0.0-alpha02

9 November 2022

androidx.graphics:graphics-core:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.

Perubahan API

  • Memperbaiki anotasi RequiresApi yang tidak ada untuk addTransactionCommitListener yang diperkenalkan di Android S (I0a035)
  • Memperbarui callback Buffering onDraw<Front/Double> untuk memberikan matriks transformasi yang dapat diteruskan konsumen ke shader vertex selain lebar/tinggi buffering saat ini. Konsumen bertanggung jawab menggunakan parameter ini untuk melakukan pra-rotasi kode rendering OpenGL dengan benar. (I82f9e)

Perbaikan Bug

  • Meningkatkan latensi grafis dengan melakukan pra-rotasi buffering sebelum mengeluarkan transaksi SurfaceControl.
  • Memperbaiki masalah saat log error akan menampilkan error 300d (EGL_BAD_SURFACE).
  • Memperbaiki masalah saat GLFrontBufferedRenderer menjadi tidak valid setelah Aktivitas terkait yang digunakannya dilanjutkan.
  • Meningkatkan dukungan untuk emulator dan perangkat Chrome OS.
  • Memperbaiki masalah saat lapisan buffering depan mungkin disembunyikan sebelum waktunya.

Versi 1.0.0-alpha01

24 Oktober 2022

androidx.graphics:graphics-core:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.

Fitur Baru

  • Rilis awal library AndroidX inti grafis. Ini termasuk API untuk mendukung kasus penggunaan latensi rendah seperti input stilus. Ini juga memperkenalkan beberapa API helper untuk penggunaan OpenGL.

Perubahan API

  • Memperkenalkan GLFrontBufferedRenderer untuk membantu rendering di depan dan multi-buffer untuk mencapai output rendering berkualitas tinggi dan latensi rendah.
  • Memperkenalkan GLRenderer API guna membantu rendering OpenGL untuk berbagai penyedia Surface seperti SurfaceView, TextureView, dan lainnya.