Ink API dimodularisasi, sehingga Anda hanya dapat menggunakan yang diperlukan.
Goresan
Modul Strokes berfungsi sebagai dasar library Ink, yang menawarkan antarmuka API utama dan berisi jenis data inti untuk berinteraksi perpustakaan. Jenis data utama dalam modul ini meliputi:
StrokeInputBatch
: Mewakili serangkaian input pointer, yang mencakup posisi, stempel waktu, dan tekanan, kemiringan, dan orientasi opsional. Data ini dapat digunakan dengan classStroke
atauInProgressStroke
, dan merupakan jenis yang akan memberikan input untuk library pengenalan tulisan tangan.Stroke
: Representasi stroke yang tidak dapat diubah yang telah selesai dengan geometri tetap. Goresan terdiri dariImmutableStrokeInputBatch
(titik input),Brush
(gaya visual), danPartitionedMesh
(bentuk geometris). Pukulan bisa disimpan, dimanipulasi, dan dirender di dalam aplikasi Anda.InProgressStroke
: Pasangan yang dapat diubah untukStroke
yang dirancang untuk penanganan input inkremental dan rendering real-time selama proses menggambar. Meskipun sering digunakan secara tidak langsung melaluiInProgressStrokesView
,InProgressStroke
dapat dimanfaatkan secara langsung untuk penyesuaian lanjutan.
Geometri
Modul Geometri menyediakan serangkaian primitif geometri baik untuk fungsi dasar maupun kompleks bersama dengan operasi untuk deteksi dan transformasi persimpangan. Primitif ini terintegrasi dengan lancar dengan goresan Tinta, sehingga Anda dapat membuat fitur seperti penghapus goresan seluruh dan alat pemilihan marquee.
Sementara class seperti Box
dan
Vec
terutama memfasilitasi
operasi geometris,
PartitionedMesh
mungkin
juga menyertakan data khusus rendering.
Kuas
Modul Kuas
bertindak sebagai konfigurasi deklaratif untuk pembuatan dan rendering goresan,
yang berfungsi mirip dengan font teks. J
Objek Brush
memiliki
properti berikut:
- Warna: Dapat berupa warna solid atau dasar untuk efek berlapis dan tekstur.
- Ukuran: Dapat diperbaiki atau berfungsi sebagai dasar untuk penyesuaian ukuran dinamis.
- Keluarga: Analog dengan jenis huruf teks, keluarga mendefinisikan keseluruhan goresan gaya.
- Epsilon: Mengontrol tingkat detail dalam geometri vektor goresan. merepresentasikan unit terkecil dari perbedaan visual.
Properti epsilon
memainkan
peran penting dalam menentukan
presisi sistem koordinat Anda. Panduan lainnya
disediakan di bagian Brush API tentang cara
untuk memilih nilai epsilon yang sesuai.
BrushFamily
berfungsi sebagai
konfigurasi yang canggih untuk membuat goresan ekspresif tanpa mempelajari
geometri atau kode rendering yang kompleks. Library ini menyediakan serangkaian set data
StockBrushes
, termasuk
pena, stabilo, dan spidol yang sensitif terhadap tekanan.
Pembuatan
Modul Authoring
memungkinkan developer merekam input sentuh pengguna dan merendernya sebagai
goresan latensi rendah di layar secara real time. Hal ini dicapai melalui
Class InProgressStrokesView
,
yang memproses kejadian gerakan dan memvisualisasikan goresan saat digambar.
Setelah goresan selesai, modul akan memberi tahu aplikasi klien menggunakan
callback
onStrokesFinished()
dari
InProgressStrokesFinishedListener
.
Callback memungkinkan aplikasi mengambil
data goresan yang sudah selesai untuk rendering atau penyimpanan.
Rendering
Modul Rendering menyederhanakan proses menggambar goresan tinta ke
Canvas
Android. Modul
menyediakan CanvasStrokeRenderer
untuk Compose dan
ViewStrokeRenderer
untuk tata letak berbasis tampilan, yang keduanya mengoptimalkan kinerja rendering dan memastikan
visual berkualitas tinggi, termasuk anti-aliasing.
Untuk merender goresan ke kanvas, dapatkan
CanvasStrokeRenderer
menggunakan
create()
. Kemudian, gunakan metode
draw()
untuk merender goresan yang sudah selesai atau sedang berlangsung.
goresan ke kanvas.
Kanvas dapat ditransformasikan (digeser, diperbesar, atau diputar) sebagai bagian dari menggambar
goresan, tetapi untuk memastikan goresan terlihat paling baik digambar di layar,
transformasi yang diterapkan ke kanvas juga harus diteruskan ke
CanvasStrokeRenderer#draw()
.
Agar tidak perlu melacaknya secara terpisah, gunakan
ViewStrokeRenderer
sebagai gantinya.