मॉड्यूल

Ink API को मॉड्यूलर बनाया गया है, ताकि आप सिर्फ़ उन सुविधाओं का इस्तेमाल कर सकें जिनकी आपको ज़रूरत है.

स्ट्रोक

笔画模块是 Ink API 的基础。此模块中的关键数据类型包括:

  • StrokeInputBatch:表示一系列指针输入,包括其位置、时间戳,以及可选的压力、倾斜度和方向。
  • InProgressStroke:表示正在绘制的笔画。InProgressStroke 用于以低延迟渲染部分笔画,并在输入完成后构建最终的 Stroke,之后该对象可以重复使用。 `InProgressStrokeInProgressStrokesView 使用。
  • Stroke:已完成的笔画的不可变表示形式,具有固定的几何形状。每个 Stroke 都有一个 ImmutableStrokeInputBatch(输入点)、一个 Brush(样式)和一个 PartitionedMesh(几何形状)。您可以在应用中存储、处理和渲染笔画。

रेखागणित

Geometry मॉड्यूल, प्रिमिटिव शेप (Box और Vec जैसे खास क्लास का इस्तेमाल करके) के साथ-साथ आर्बिट्ररी शेप (PartitionedMesh का इस्तेमाल करके) पर ज्यामितीय कार्रवाइयों को सपोर्ट करता है. इनमें इंटरसेक्शन का पता लगाना और ट्रांसफ़ॉर्मेशन शामिल है. PartitionedMesh में रेंडरिंग के लिए, अतिरिक्त डेटा भी सेव किया जा सकता है.

ब्रश

brush मॉड्यूल, स्ट्रोक की स्टाइल तय करता है. इसके दो मुख्य हिस्से होते हैं:

  • Brush: इससे स्ट्रोक की स्टाइल के बारे में पता चलता है. इसमें बेस कलर, बेस साइज़, और BrushFamily शामिल हैं. BrushFamily, फ़ॉन्ट फ़ैमिली की तरह होता है. यह स्ट्रोक की स्टाइल तय करता है. उदाहरण के लिए, BrushFamily किसी खास स्टाइल के मार्कर या हाइलाइटर को दिखा सकता है. इससे अलग-अलग साइज़ और रंग के स्ट्रोक, उस स्टाइल को शेयर कर सकते हैं.
  • StockBrushes: इसमें फ़ैक्ट्री फ़ंक्शन दिए गए हैं. इनकी मदद से, इस्तेमाल के लिए तैयार BrushFamily इंस्टेंस बनाए जा सकते हैं.

लिखना

लेखन मॉड्यूल की मदद से, उपयोगकर्ता के पॉइंटर इनपुट को कैप्चर किया जा सकता है. साथ ही, इसे स्क्रीन पर कम समय में स्ट्रोक के तौर पर रीयल टाइम में रेंडर किया जा सकता है. यह InProgressStrokesView उपलब्ध कराता है. यह मोशन इवेंट को प्रोसेस करता है और स्ट्रोक को ड्रॉ किए जाने के दौरान दिखाता है.

स्ट्रोक पूरा होने के बाद, व्यू, क्लाइंट ऐप्लिकेशन को रजिस्टर किए गए कॉलबैक (InProgressStrokesFinishedListener) के ज़रिए सूचना देता है. कॉलबैक की मदद से, ऐप्लिकेशन रेंडरिंग या स्टोरेज के लिए पूरा किया गया स्ट्रोक वापस पा सकता है.

रेंडरिंग

रेंडरिंग मॉड्यूल की मदद से, Android Canvas पर इंक स्ट्रोक बनाए जा सकते हैं. यह कंपोज़ के लिए CanvasStrokeRenderer और व्यू के आधार पर लेआउट के लिए ViewStrokeRenderer उपलब्ध कराता है. इन रेंडरर को बेहतर परफ़ॉर्मेंस वाली रेंडरिंग के लिए डिज़ाइन किया गया है. साथ ही, ये अच्छी क्वालिटी वाले विज़ुअल डिलीवर करने में मदद करते हैं. इनमें ऐंटीएलियासिंग भी शामिल है.

स्ट्रोक रेंडर करने के लिए, create() तरीके को कॉल करें, ताकि आपको CanvasStrokeRenderer इंस्टेंस मिल सके. इसके बाद, draw() तरीके को कॉल करें, ताकि Canvas पर स्ट्रोक रेंडर किए जा सकें. ये स्ट्रोक, पूरे हो चुके (Stroke) या जारी (InProgressStroke) हो सकते हैं.

स्ट्रोक बनाते समय, कैनवस को बदला जा सकता है. उदाहरण के लिए, पैनिंग, ज़ूमिंग, और रोटेटिंग. स्ट्रोक को सही तरीके से रेंडर करने के लिए, आपको canvas ट्रांसफ़ॉर्म को CanvasStrokeRenderer.draw में पास करना होगा.

canvas ट्रांसफ़ॉर्म को अलग से ट्रैक करने से बचने के लिए, ViewStrokeRenderer का इस्तेमाल करें.

स्टोरेज

डिवाइस का स्टोरेज मॉड्यूल, स्ट्रोक डेटा को बेहतर तरीके से क्रम से लगाने और क्रम से हटाने के लिए उपयोगिता उपलब्ध कराता है. यह मुख्य रूप से StrokeInputBatch पर फ़ोकस करता है.

यह मॉड्यूल, प्रोटोकॉल बफ़र और ऑप्टिमाइज़ की गई डेल्टा कंप्रेशन तकनीकों का इस्तेमाल करता है. इससे, सामान्य तरीकों की तुलना में स्टोरेज की काफ़ी बचत होती है.

स्टोरेज मॉड्यूल की मदद से, स्ट्रोक को आसानी से सेव, लोड, और शेयर किया जा सकता है.