وحدات

تم تقسيم 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. مرِّر اللمسات النهائية إلى عنصر آخر قابل للإنشاء لتثبيتها على الشاشة باستخدام وحدة العرض.

العرض

تسهّل وحدة Rendering رسم ضربات الحبر على Canvas يعمل بنظام التشغيل Android. توفّر هذه السمة CanvasStrokeRenderer لإنشاء التنسيقات وViewStrokeRenderer للتنسيقات المستندة إلى العرض. تعمل أدوات العرض هذه على تحسين أداء العرض وتساعد في تقديم صور عالية الجودة، بما في ذلك التنعيم.

لعرض ضربات الفرشاة، استدعِ طريقة create() للحصول على مثيل CanvasStrokeRenderer، ثم استدعِ طريقة draw() لعرض ضربات الفرشاة المكتملة (Stroke) أو الجاري تنفيذها (InProgressStroke) على Canvas.

يمكنك تغيير شكل لوحة العرض عند رسم خط. وتشمل الأمثلة تحريك الكاميرا أفقيًا أو عموديًا وتكبير الصورة وتدويرها. لعرض الضربة بشكل صحيح، يجب أيضًا تمرير عملية التحويل canvas إلى CanvasStrokeRenderer.draw.

لتجنُّب تتبُّع عملية التحويل canvas بشكل منفصل، استخدِم ViewStrokeRenderer بدلاً من ذلك.

مساحة التخزين

يوفّر وحدة التخزين أدوات لتسلسل بيانات ضربات الفرشاة وإلغاء تسلسلها بكفاءة، مع التركيز بشكل أساسي على StrokeInputBatch.

تستخدم الوحدة مخازن مؤقتة للبروتوكول وتقنيات ضغط دلتا محسّنة، ما يؤدي إلى توفير كبير في مساحة التخزين مقارنةً بالطرق البسيطة.

تسهّل وحدة التخزين حفظ اللمسات وتحميلها ومشاركتها.