Ink API מחולק למודולים, כך שתוכלו להשתמש רק במה שדרוש לכם.
תנועות
המודול Strokes משמש כבסיס של ספריית הדיו, ומציע את ממשק API ראשי, ומכיל את סוגי הנתונים העיקריים לאינטראקציה עם בספרייה. סוגי הנתונים העיקריים במודול הזה כוללים:
StrokeInputBatch
: מייצג סדרה של קלט של סמן, שכולל מיקום, חותמת זמן ואפשרות ללחץ, הטיה וכיוון. אפשר להשתמש בנתונים האלה עם הכיתותStroke
אוInProgressStroke
, והם מהסוג שיספק את הקלט לספריית זיהוי כתב יד.Stroke
: לא ניתן לשינוי ייצוג של קו סופי עם גיאומטריה קבועה. קו כוללImmutableStrokeInputBatch
(נקודות קלט),Brush
(סגנון) ו-PartitionedMesh
(צורה גאומטרית). ניתן לאחסן, לשנות ולעבד את התנועות בתוך הקו את האפליקציה שלך.InProgressStroke
: זוהי גרסתStroke
שניתנת לשינוי, שנועדה לטיפול מצטבר בקלט ולעיבוד בזמן אמת במהלך תהליך הציור. לרוב בשימוש באופן עקיף דרךInProgressStrokesView
InProgressStroke
ניתן להשתמש בהם ישירות להתאמה אישית מתקדמת.
גיאומטריה
המודול Geometry מספק חבילה של פריימים בסיסיים של צורות גיאומטריות, גם פשוטות וגם מורכבות, וגם פעולות לזיהוי צמתים ולטרנספורמציות. הפריימים הבסיסיים האלה משתלבים בצורה חלקה עם קווים בדיו, ומאפשרים ליצור תכונות כמו מחק קווים שלם וכלי לבחירת מרקעים.
בזמן שכיתות כמו Box
Vec
מסייעים בעיקר
פעולות גאומטריות,
PartitionedMesh
אולי
לכלול גם נתונים ספציפיים לרינדור.
מברשת
המודול Brush משמש כקובץ תצורה דקלרטיבי ליצירה ולעיבוד של קווים, ופועל באופן דומה לגופן טקסט. לאובייקט Brush
יש את המאפיינים הבאים:
- צבע: יכול להיות צבע אחיד או בסיס לאפקטים ולמרקמים בשכבות.
- גודל: יכול להיות קבוע או לשמש כבסיס להתאמות דינמיות של הגודל.
- משפחה: בדומה לגופן של טקסט, המשפחה מגדירה את הקו הכולל
- Epsilon: קובע את רמת הפירוט בגיאומטריה של הווקטור של הקו, ומציג את היחידה הקטנה ביותר של הבחנה חזותית.
למאפיין epsilon
יש תפקיד חשוב בהגדרת הדיוק של מערכת הקואורדינטות. בקטע Brush APIs מפורט מידע נוסף על בחירת ערך epsilon מתאים.
BrushFamily
משמש כ-
תצורה עוצמתית ליצירת קווי הבעה, מבלי להתעמק
גיאומטריה מורכבת או קוד רינדור. הספרייה מספקת קבוצה של StockBrushes
מוגדרים מראש, כולל עט רגיש ללחץ, נייר מחק וחיוויית.
יוצר
Authoring
שמאפשר למפתחים לתעד את קלט המגע של המשתמשים ולעבד אותו
עם זמן אחזור קצר על המסך בזמן אמת. איך משיגים את זה?
InProgressStrokesView
כיתה,
שמעבד אירועי תנועה וממחיש את התנועות בזמן שהן משורטטות.
לאחר השלמת השרטוט, המודול שולח הודעה לאפליקציית הלקוח באמצעות
onStrokesFinished()
קריאה חוזרת של
InProgressStrokesFinishedListener
קריאת החזרה מאפשרת לאפליקציה לאחזר את נתוני הקו הסופי לצורך רינדור או אחסון.
רינדור
מודול הרינדור מפשט את התהליך של ציור סימוני דיו על גבי
Android Canvas
. המודול מספק CanvasStrokeRenderer
ל-Compose ו-ViewStrokeRenderer
לפריסות מבוססות-תצוגה. שני הרכיבים האלה מבצעים אופטימיזציה של ביצועי הרינדור ומבטיחים רכיבים חזותיים באיכות גבוהה, כולל ביטול רעשי עיבוד.
כדי ליצור רינדור של קווים על קנבס, צריך לקבל מכונה של CanvasStrokeRenderer
באמצעות השיטה create()
. לאחר מכן משתמשים
draw()
לעיבוד תנועות שהסתיימו או בתנועות בתהליך.
מצייר על בד קנבס.
אפשר לשנות את הלוח (לזוז, להגדיל או לסובב אותו) כחלק מהציור של הקו, אבל כדי לוודא שהקו ייראה במיטבו במסך, צריך להעביר את השינוי שהוחל על הלוח גם ל-CanvasStrokeRenderer#draw()
.
כדי להימנע מהצורך לעקוב אחרי זה בנפרד, אפשר להשתמש ב-
ViewStrokeRenderer
במקום זאת.