Modul

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 class Stroke atau InProgressStroke, 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 dari ImmutableStrokeInputBatch (titik input), Brush (gaya visual), dan PartitionedMesh (bentuk geometris). Pukulan bisa disimpan, dimanipulasi, dan dirender di dalam aplikasi Anda.
  • InProgressStroke: Pasangan yang dapat diubah untuk Stroke yang dirancang untuk penanganan input inkremental dan rendering real-time selama proses menggambar. Meskipun sering digunakan secara tidak langsung melalui InProgressStrokesView, 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.