تم تقسيم Ink API إلى وحدات، ما يتيح لك استخدام ما تحتاج إليه فقط.
الضربات
يشكّل وحدة الضربات الأساس الذي تستند إليه Ink API. تشمل أنواع البيانات الرئيسية ضمن هذه الوحدة ما يلي:
StrokeInputBatch: تمثّل هذه السمة سلسلة من إدخالات المؤشر، بما في ذلك موضعها وطابعها الزمني، ويمكن أن تتضمّن أيضًا الضغط والإمالة والاتجاه.InProgressStroke: تمثّل ضربة يتم رسمها حاليًا. يتم استخدامInProgressStrokeلعرض ضربات جزئية بزمن انتقال منخفض ولإنشاءStrokeالنهائي بعد اكتمال الإدخال، وبعد ذلك يمكن إعادة استخدام العنصر.InProgressStrokeمن خلال الدالة البرمجية القابلة للإنشاءInProgressStrokes.Stroke: تمثيل غير قابل للتغيير لضربة نهائية ذات شكل هندسي ثابت. يحتوي كلStrokeعلىImmutableStrokeInputBatch(نقاط الإدخال) وBrush(النمط) وPartitionedMesh(الشكل الهندسي). يمكنك تخزين ضربات الفرشاة ومعالجتها وعرضها داخل تطبيقك.
هندسة
几何图形模块支持对基本形状(使用 Box 和 Vec 等专用类)以及任意形状(使用 PartitionedMesh)进行几何运算,包括相交检测和转换。 PartitionedMesh 还可以保存其他数据以支持渲染。
فرشاة
brush 模块定义了笔画的样式。它包含两个主要部分:
Brush:指定笔画的样式,包括基准颜色、基准大小和BrushFamily。BrushFamily类似于字体系列,用于定义笔画的样式。例如,BrushFamily可以表示某种特定样式的标记或荧光笔,从而使不同大小和颜色的笔画共享该样式。StockBrushes:提供用于创建即用型BrushFamily实例的工厂函数。
التأليف
تتيح لك وحدة إنشاء في Compose تسجيل بيانات اللمس التي يُدخلها المستخدم وعرضها كضربات على الشاشة بزمن استجابة منخفض في الوقت الفعلي. ويتم تحقيق ذلك من خلال العنصر القابل للإنشاء InProgressStrokes الذي يعالج أحداث الحركة ويعرض ضربات القلم أثناء رسمها.
بعد إكمال ضربة، تُعلم الدالة البرمجية القابلة للإنشاء تطبيق العميل باستخدام ردّ الاتصال InProgressStrokesFinishedListener. يسمح هذا الإذن للتطبيق باسترداد الضربات المنتهية لعرضها أو تخزينها.
في Compose، تأخذ InProgressStrokes دالة رد الاتصال هذه في المَعلمة onStrokesFinished. مرِّر اللمسات النهائية إلى عنصر آخر قابل للإنشاء لتثبيتها على الشاشة باستخدام وحدة العرض.
العرض
تسهّل وحدة "العرض" رسم ضربات الحبر على Canvas يعمل بنظام التشغيل Android.
توفّر هذه السمة CanvasStrokeRenderer لـ Compose وViewStrokeRenderer للتنسيقات المستندة إلى العرض. تعمل أدوات العرض هذه على تحسين أداء العرض وتساعد في تقديم صور عالية الجودة، بما في ذلك التنعيم.
لعرض ضربات الفرشاة، استدعِ طريقة create() للحصول على مثيل CanvasStrokeRenderer، ثم استدعِ طريقة draw() لعرض ضربات الفرشاة المكتملة (Stroke) أو الجاري تنفيذها (InProgressStroke) على Canvas.
يمكنك تغيير شكل لوحة العرض عند رسم خط. وتشمل الأمثلة تحريك الكاميرا أفقيًا أو عموديًا وتكبير الصورة وتدويرها. لعرض الضربة بشكل صحيح، يجب أيضًا تمرير عملية التحويل canvas إلى CanvasStrokeRenderer.draw.
لتجنُّب تتبُّع عملية التحويل canvas بشكل منفصل، استخدِم ViewStrokeRenderer بدلاً من ذلك.
مساحة التخزين
يوفّر وحدة التخزين أدوات لتسلسل بيانات ضربات الفرشاة وإلغاء تسلسلها بكفاءة، مع التركيز بشكل أساسي على StrokeInputBatch.
تستخدم الوحدة مخازن مؤقتة للبروتوكول وتقنيات ضغط دلتا محسّنة، ما يؤدي إلى توفير كبير في مساحة التخزين مقارنةً بالطرق البسيطة.
تسهّل وحدة التخزين حفظ اللمسات وتحميلها ومشاركتها.