تم تقسيم Ink API إلى وحدات، ما يتيح لك استخدام ما تحتاج إليه فقط.
الضربات
يشكّل وحدة الضربات الأساس الذي تستند إليه Ink API. تشمل أنواع البيانات الرئيسية ضمن هذه الوحدة ما يلي:
StrokeInputBatch: تمثّل هذه السمة سلسلة من إدخالات المؤشر، بما في ذلك موضعها وطابعها الزمني، ويمكن أن تتضمّن أيضًا الضغط والإمالة والاتجاه.InProgressStroke: تمثّل ضربة يتم رسمها حاليًا. يتم استخدامInProgressStrokeلعرض ضربات جزئية بزمن انتقال منخفض ولإنشاءStrokeالنهائي بعد اكتمال الإدخال، وبعد ذلك يمكن إعادة استخدام العنصر.InProgressStrokeمن خلال الدالة البرمجية القابلة للإنشاءInProgressStrokes.Stroke: تمثيل غير قابل للتغيير لضربة نهائية ذات شكل هندسي ثابت. يحتوي كلStrokeعلىImmutableStrokeInputBatch(نقاط الإدخال) وBrush(النمط) وPartitionedMesh(الشكل الهندسي). يمكنك تخزين ضربات الفرشاة ومعالجتها وعرضها داخل تطبيقك.
هندسة
يتيح نموذج Geometry إجراء عمليات هندسية على الأشكال الأساسية (باستخدام فئات مخصّصة مثل 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.
تستخدم الوحدة مخازن مؤقتة للبروتوكول وتقنيات ضغط دلتا محسّنة، ما يؤدي إلى توفير كبير في مساحة التخزين مقارنةً بالطرق البسيطة.
تسهّل وحدة التخزين حفظ اللمسات وتحميلها ومشاركتها.