גרפיקה

  
ניצול היכולות הגרפיות במספר גרסאות של פלטפורמת Android

בטבלה הזו מפורטים כל הארטיפקטים בקבוצה androidx.graphics.

פריט מידע שנוצר בתהליך פיתוח (Artifact) גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
graphics-core 1.0.2 - - -
graphics-path 1.0.1 - - -
graphics-shapes 1.0.1 - - 1.1.0-alpha01
הספרייה עודכנה לאחרונה ב-11 בדצמבר 2024

הצהרת יחסי תלות

כדי להוסיף תלות ב-Graphics, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.

מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle של האפליקציה או המודול:

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.2"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.1.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.graphics:graphics-core:1.0.2")
    implementation("androidx.graphics:graphics-path:1.0.1")
    implementation("androidx.graphics:graphics-shapes:1.1.0-alpha01")
}

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

אין הערות לגבי הגרסה של הארטיפקט הזה.

גרסה 1.1 של הגרפיקה

גרסה 1.1.0-alpha01

11 בדצמבר 2024

androidx.graphics:graphics-*:1.1.0-alpha01 משוחרר. גרסת 1.1.0-alpha01 מכילה את ההוספות האלה.

תכונות חדשות

  • שיפרנו את הדמו הראשי והפכנו אותו לכלי גנרי לעריכת צורות. כך אפשר לייבא צורות מנתיב SVG, לערוך באופן ידני את התכונות שזוהו במקרה של שגיאות בתהליך האוטומטי ולייצא את התוצאה לקוד שאפשר להשתמש בו בקוד הייצור. (I1ac13)
  • החלפת מדידות זוויות של התקדמות קווי המתאר של הצורה במדידות של אורך עקומה, כדי לאפשר שימוש בצורות מורכבות יותר לצורך טרנספורמציה. (I75478) , I390dd
  • שיפור האלגוריתם למיפוי תכונות, כך שעוד טרנספורמציות מורפו (morph) אמורות להיראות טבעיות יותר. (I83287)

שינויים ב-API

  • הוספת ייבוא של נתיב SVG וסריליזטור של תכונות. התהליך הרגיל הוא:
    • משתמשים ב-SvgPathParser.parseFeatures() החדש כדי להמיר נתיב svg (הערך של המאפיין d ברכיב path של קובץ svg) ל-List<Feature>.
    • אפשר לשנות את הערך הזה ואז לסדר אותו בסדרת מחרוזות באמצעות FeatureSerializer.serialize().
    • אפשר להשתמש במחרוזת שנוצרה בקוד הייצור, על ידי ייבוא שלה באמצעות FeatureSerializer.parse()
    • חשוב לזכור ששלבים 1 ו-2 מתבצעים פעם אחת, ואפשר לבצע אותם עם האפליקציה החדשה. בקוד הייצור צריך לבצע רק את שלב 3. (I9bd00, ‏ b/371196190),‏ (Ic3842),‏ (If68ed),‏ (I10251)
  • חשיפת תכונות פוליגון וסוגים של תכונות. עכשיו אפשר ליצור RoundedPolygons גנרי יותר באמצעות ה-constructor הבסיסי שמקבל List<Features>. התכונות הן בעיקר רשימה של עקומות bezier מעוקבות, אבל הן מתויגות כדי לעזור לאלגוריתם Morph להתאים בין הצורות של ההתחלה והסיום (פינות מעובות ממפות לפינות מעובות ופינות קעורות ממפות לפינות קעורות). (I61e76),‏ (I1fc5c)
  • נוספה תמיכה ביעד KMP‏ watchosDeviceArm64 וביעד kotlin 1.9. (Icf15d, ‏ b/364652024)

תיקוני באגים

  • תוקנה בעיה קיצונית שבה התכונה האחרונה הייתה ריקה. (I390dd)
  • יצירת RoundedPolygon חזקה יותר. (Ib862c, ‏ b/360888486)
  • תיקון באג באתחול של RoundedPolygon. (I83ddb)
  • תיקון שגיאה באלגוריתם להערכת מרכז הפוליגון. (Ida147)

Graphics Shapes גרסה 1.0

גרסה 1.0.0

21 באוגוסט 2024

התכונות androidx.graphics:graphics-shapes:1.0.0, androidx.graphics:graphics-shapes-android:1.0.0 וגם androidx.graphics:graphics-shapes-desktop:1.0.0 משוחררות. הגרסה 1.0.0 מכילה את ההוספות האלה.

גרסה 1.0.0-rc01

24 ביולי 2024

התכונות androidx.graphics:graphics-shapes:1.0.0-rc01, androidx.graphics:graphics-shapes-android:1.0.0-rc01 וגם androidx.graphics:graphics-shapes-desktop:1.0.0-rc01 משוחררות. גרסת 1.0.0-rc01 כוללת את ההוספות האלה.

גרסה 1.0.0-beta01

1 במאי 2024

התכונות androidx.graphics:graphics-shapes:1.0.0-beta01, androidx.graphics:graphics-shapes-android:1.0.0-beta01 וגם androidx.graphics:graphics-shapes-desktop:1.0.0-beta01 משוחררות. גרסת 1.0.0-beta01 כוללת את ההוספות האלה.

שינויים ב-API

  • מאפשרים לסובב צורות מראש כדי שהן יתחילו בנקודה אחרת. השינוי הזה מאפשר לצורות pillStar להתחיל את העקומות שלהן מנקודה שאינה ברירת המחדל בפריפריה. האפשרות הזו שימושית כשרוצים ליצור אנימציה של קווים בנתיב של הצורה, כדי להתחיל לצייר ממיקום ספציפי על קווי המתאר של הצורה. (Ifbb4d, ‏ b/324303807)
  • הוספנו פונקציות calculateBounds() ל-Morph, שדומות לפונקציות ב-RoundedPolygon. (I8a3b6, ‏ b/325463575)

גרסה 1.0.0-alpha05

7 בפברואר 2024

התכונות androidx.graphics:graphics-shapes:1.0.0-alpha05, androidx.graphics:graphics-shapes-android:1.0.0-alpha05 וגם androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05 משוחררות. גרסה 1.0.0-alpha05 מכילה את ההוספות האלה.

תכונות חדשות

  • עכשיו יש בספרייה פונקציות חדשות, pill() ו-pillStar(), שבעזרתן אפשר ליצור בקלות את הצורות העגולות או עם הכוכב. יש גם ממשקי API חדשים לחישוב הגבולות המדויקים הנדרשים לצורה (הגבולות הקודמים היו רק אומדן על סמך נקודות האחיזה והשליטה של עקומת Bezier הבסיסית), וגם לחישוב הגבולות המקסימליים האפשריים. הגבולות האלה יכולים לעזור לכם לקבוע את הגודל של המאגר שמכיל את הצורה, אם היא תסובב בתוך המאגר הזה. (I71827)

שינויים ב-API

  • עכשיו יש יותר אפשרויות לאחזור גבולות מדויקים ומקסימליים. (I6d49f, ‏ b/317286450)

תיקוני באגים

  • מדי פעם היו בעיות עיבוד בזמן התצוגה (artifacts) כשציירנו את הצורות האלה כנתיב עם קווים, בגלל בעיה ברמה נמוכה של עיבוד הקשורה לקווים מעוגלים באורך אפס. כדי לתקן את הבאג הזה, הסרנו את כל העקומות באורך אפס (הצורות לא זקוקות להן, כך שגם חסכנו בעלויות העל של הנתיבים שנוצרו על ידי הצורות).

גרסה 1.0.0-alpha04

13 בדצמבר 2023

התכונות androidx.graphics:graphics-shapes:1.0.0-alpha04, androidx.graphics:graphics-shapes-android:1.0.0-alpha04 וגם androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04 משוחררות. גרסה 1.0.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תכונות חדשות

  • הגרסה הזו כוללת כמה שינויים ב-API, וגם תיקוני באגים.
  • הרבה מהשינויים ב-API הופכים את ספריית ה-Shapes לידידותית ל-KMP. כך קל יותר לבצע קריאה מקוד שאינו של Android (כמו קוד Compose שלא תלוי ב-Android). לדוגמה, אין ב-API סוגי Android, כמו הסוגים הקודמים PointF‏, Matrix ו-Path.
  • בנוסף, בוצעו כמה שינויים בממשקי ה-API ובהטמעה מטעמי ביצועים, ובמיוחד כדי למזער את הקצאת האובייקטים (והאוסף שלהם). לדוגמה, המעבר מ-PointF לפרמטרים נפרדים של Float מונע הקצאה של הרבה מבנים זמניים של PointF כדי לאחסן את הקודקודים האלה.

שינויים ב-API

  • Morph.asMutableCubics הוחלף בפונקציה לחזרה על MutableCubics. שינוי בממשק הפונקציונלי של PointTransformer. עכשיו הוא מקבל קואורדינטות x ו-y של Point ומחזיר TransformedResult (שנוצר באמצעות קואורדינטות x ו-y שעברו טרנספורמציה) (I6719e)
  • ה-constructor הציבורי Cubic הוסר והפך לפונקציית ייצור. (I409ce)
  • הוספת ממשקי API ספציפיים ל-Android לטרנספורמציה ולציור (I079f6, ‏ b/292289543)
  • הסרת יחסי התלות ב-Android (Iadc1c, ‏ b/292289543)
  • שמות של נכסי עוגן ונכסי בקרה הגיוניים יותר עכשיו (If13bd, ‏ b/294562941)
  • פרמטרים מסוג PointF השתנו לזוגות מסוג Float (Id4705, ‏ b/276466399, ‏ b/290254314)
  • עכשיו progress מועבר ישירות לפקודות הציור של Morph (Icdca2)

תיקוני באגים

גרסה 1.0.0-alpha03

7 ביוני 2023

androidx.graphics:graphics-shapes:1.0.0-alpha03 משוחרר. גרסה 1.0.0-alpha03 כוללת את ההצהרות האלה.

שינויים ב-API

  • נוספה פונקציית RoundedPolygon.rectangle() חדשה (I78e7e, ‏ b/280322189)
  • פונקציות Star ו-Circle לא מודגשות עכשיו והקריאה אליהן מתבצעת דרך האובייקט הנלווה של RoundedPolygon: לדוגמה, RoundedPolygon.star(...)(I14735)

תיקוני באגים

  • תוקן באג בהחלקה (Ibf894)
  • תוקן באג שהתרחש כשצורת ההתחלה והסיום היו זהות. כדאי לחלק טוב יותר את המקום הזמין בצד לחיתוך, קודם להשתמש במקום הזמין לצורך עיגול, ואז לצורך החלקה אם נשאר מקום. (Ibd320, ‏ b/277936300)

גרסה 1.0.0-alpha02

19 באפריל 2023

androidx.graphics:graphics-shapes:1.0.0-alpha02 משוחרר. גרסה 1.0.0-alpha02 מכילה את ההצהרות האלה.

שינויים ב-API

  • הסופר-קלאס Polygon מוזג עם תת-הקלאס שלו, RoundedPolygon. כל הפוליגונים הם עכשיו [אופציונלי] פוליגונים מעוגלים.
  • פונקציית Star (שעדיין מחזירה RoundedPolygon, כמו בעבר) מקבלת עכשיו ערך innerRadius במקום הפרמטר הקודם innerRadiusRatio. הערך הזה הוא באותן יחידות כמו הפרמטר הקיים של הרדיוס, כך שהדברים פשוטים ועקביים יותר. בנוסף, השם של הפרמטר numOuterVertices השתנה ל-numVerticesPerRadius כדי להבהיר שאותו מספר חל גם על הרדיוס הפנימי וגם על הרדיוס החיצוני.
  • בעבר, CornerRounding.radius היה מתואר כיחסי לגודל של הפוליגון, אבל הוא היה (וצריך להיות) ערך מוחלט ולא יחסי. המסמכים עודכנו וההערה שהגבילה את הערך המקסימלי ל-1.0 תוקנה.

גרסה 1.0.0-alpha01

5 באפריל 2023

Graphics-Shapes היא ספרייה חדשה שמאפשרת ליצור ולייצר עיבוד (רנדור) בקלות של צורות פוליגונליות מעוגלות, וגם לבצע טרנספורמציה (אנימציה) פשוטה ואוטומטית בין צורות שונות.

androidx.graphics:graphics-shapes:1.0.0-alpha01 משוחרר. הגרסה הזו שוחררה מענף פנימי.

תכונות חדשות

  • אפשר להשתמש ב-Polygon API כדי ליצור פוליגונים רגילים ופוליגונים בצורת כוכב עם מספר הקודקודים הרצוי.
  • אפשר להשתמש בפרמטרים האופציונליים CornerRounding כדי לציין את רדיוס העיגול והפרמטרים של החלקת הפינות, וכך ליצור צורות פוליגונליות עם פינות מעוגלות.
  • אפשר להשתמש ב-API החדש של Morph(Polygon, Polygon) כדי לחשב באופן אוטומטי צורה של 'טרנספורמציה', שאפשר להגדיר את ההתקדמות שלה מ-0 עד 1 כדי ליצור אנימציה בין הצורה ההתחלתית לצורה הסופית. כדי ליצור אנימציה חלקה בין הצורות העגולות החדשות, אפשר ליצור אנימציה של התהליך הזה לאורך זמן, ולצייר את התוצאה בכל פריים.

Graphics Path גרסה 1.0

גרסה 1.0.1

1 במאי 2024

androidx.graphics:graphics-path:1.0.1 משוחרר. גרסת 1.0.1 מכילה את ההוספות האלה.

תיקוני באגים

  • שיפורים בדגלים של המהדר.

גרסה 1.0.0

6 במרץ 2024

androidx.graphics:graphics-path:1.0.0 משוחרר.

גרסה 1.0.0-rc01

21 בפברואר 2024

androidx.graphics:graphics-path:1.0.0-rc01 משוחרר. גרסה 1.0.0-rc01 כוללת את השמירות האלה.

תיקוני באגים

  • שיפור הביצועים של PathIterator ב-API גרסה 34 ואילך (Id4629)

גרסה 1.0.0-beta02

10 בינואר 2024

השינויים במהדורה הזו נועדו לצמצם את גודל הספרייה, שהיה גדול מהנדרש בגלל הנחות שהקוד המקורי עשה.

androidx.graphics:graphics-path:1.0.0-beta02 משוחרר. גרסה 1.0.0-beta02 מכילה את ההצהרות האלה.

תיקוני באגים

  • הקטנת הגודל של libandroidx.graphics.path.so ב-96%. (I71397)
  • מקטינים את הגודל של libandroidx.graphics.path.so ב-5%. (I2da7c)
  • צמצום של 43% ברכיבים המקוריים של androidx.graphics:graphics-path. (I8e40d)

גרסה 1.0.0-beta01

29 בנובמבר 2023

androidx.graphics:graphics-path:1.0.0-beta01 משוחרר. גרסה 1.0.0-beta01 כוללת את ההצהרות האלה.

שינויים ב-API

  • הוסרו שימושים ב-API הניסיוני isAtLeastU() (Ie9117, ‏ b/289269026)

תיקוני באגים

  • תיקונים ושיפורים שונים בביצועים, כולל האופן שבו הספרייה מטפלת בקונוסים.

גרסה 1.0.0-alpha02

7 ביוני 2023

androidx.graphics:graphics-path:1.0.0-alpha02 משוחרר. הגרסה הזו מפותחת בהסתעפות פנימית.

תכונות חדשות

  • תוקנה בעיה בבדיקת הגרסה הפנימית של הפלטפורמה שגרמה לבעיות במהלך ההרצה בגרסת ה-preview של Android 14 (בדיקת הגרסה נכשלה, אבל המנגנון לביצוע פעולות בגרסאות קודמות לא פועל כמו שצריך ב-Android 14 בפרט).

גרסה 1.0.0-alpha01

22 במרץ 2023

androidx.graphics:graphics-path:1.0.0-alpha01 משוחרר. גרסה 1.0.0-alpha01 מכילה את ההצהרות האלה.

תכונות חדשות

  • הספרייה החדשה הזו מאפשרת להריץ שאילתות על נתוני נתיב דרך ה-API החדש של PathIterator. באמצעות ה-API הזה, מבצעי הקריאה יכולים לעבור על כל הפלחים של אובייקט Path כדי לקבוע את הפעולה ואת הנתונים של הפלחים האלה.
  • הספרייה משתמשת בממשקי API דומים שהוצגו בתצוגה המקדימה של Android 14, אבל גרסת AndroidX של ה-API פועלת גם בגרסאות קודמות, החל מ-API 21.

Graphics Core Version 1.0

גרסה 1.0.2

16 באוקטובר 2024

androidx.graphics:graphics-core:1.0.2 משוחרר. גרסת 1.0.2 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה שבה מכונות SurfaceControl עדיין מנוהלות על ידי ה-system compositor גם אחרי שהן שוחררו.
  • תוקנה בעיה שבה המכונה הנוכחית של HardwareBuffer לא שוחררה אחרי שהסתיימו הטיפולים של יחסי התלות עם זמן אחזור קצר
  • תוקנה בעיה של הבהוב במכשירי Android מסוימים בגרסה 14 ואילך שלא תומכים בדגל השימוש במאגר הקדמי

גרסה 1.0.1

4 בספטמבר 2024

androidx.graphics:graphics-core:1.0.1 משוחרר. גרסה 1.0.1 מכילה את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה שבה לפעמים משאבי זיכרון לא שוחררו.

גרסה 1.0.0

29 במאי 2024

androidx.graphics:graphics-core:1.0.0 משוחרר. הגרסה 1.0.0 מכילה את ההוספות האלה.

תכונות עיקריות בגרסה 1.0.0

  • גרסה יציבה רשמית של ספריית graphics-core. כולל תיקוני באגים קלים ושיפורי ביצועים מ-1.0.0-rc01

גרסה 1.0.0-rc01

17 באפריל 2024

androidx.graphics:graphics-core:1.0.0-rc01 משוחרר. הגרסה הזו מפותחת בהסתעפות פנימית.

תיקוני באגים

  • תוקנה בעיה שעלולה לגרום לסגירה כפולה של מתארי קבצים באמצעות CanvasBufferedRendererAPI במכשירי Android מסוימים עם Android 14.
  • תוקנה בעיה שבה FrameBuffer לא מחק כראוי מכונות של framebuffer.

גרסה 1.0.0-beta01

13 בדצמבר 2023

androidx.graphics:graphics-core:1.0.0-beta01 משוחרר. גרסה 1.0.0-beta01 כוללת את ההצהרות האלה.

תכונות חדשות

  • הוספנו ממשק API חדש של LowLatencyCanvasView כדי לתמוך ברינדור עם זמן אחזור נמוך באמצעות ממשקי ה-API של הגרפיקה הדו-ממדית של Android‏ (Canvas + Paint) בהיררכיית התצוגה.
  • הוספנו את ממשק ה-API CanvasBufferedRenderer כדי לתמוך בעיבוד מואץ של חומרה ב-Canvas ב-HardwareBuffer. אפשר להשתמש בכך כדי לצייר חלק מממשק המשתמש במאגר שאפשר להמיר לקובץ Bitmap באמצעות ה-API של Bitmap.wrapHardwareBuffer.

שינויים ב-API

  • עדכנו את ה-API של CanvasBufferRenderer#releaseBuffer כך שיכלול פרמטר גדר אופציונלי. עדכנו את המסמכים כדי לתאר מתי הערך RenderResult#fence מוחזר. (If1ea7)
  • הוספת השיטה draw ל-RenderRequest כדי לתמוך בשימוש ב-coroutines לתזמון בקשות ציור. שינינו את השם של שיטת ה-draw הקודמת שצרכה מבצע ל-drawAsync. שיטה isClosed() שעברה ריפרקטור למאפיין. (I5bff6)
  • פרמטר של פורמט מאגר חשוף ל-CanvasFrontBufferRenderer כדי למפות ישירות ל-CanvasBufferedRenderer.Builder#setBufferFormat (I0f272)
  • נוצר ממשק API של CanvasBufferedRenderer לטיפול בעיבוד מואץ של קנבס בחומרה ל-HardwareBuffer. כך אפשר להטמיע את ה-backport ל-Android Q יחד עם הגדרה של עומק swapchain של HardwareBuffers. ההגדרה של ColorSpace עדיין מוגבלת ל-Android U+, אבל ההטמעה של התאימות מספקת התנהגות no-op בשם המפתחים. (I9b1d8)
  • מוסיפים ממשקי API של setFrameRate/clearFrameRate אל SurfaceControlCompat.Transaction כדי לשלוט בקצב הפריימים לצד אסטרטגיית השינוי למעברים חלקים או למעברים שמוגדרים כברירת מחדל. (I6045c)
  • רמת ה-API הנדרשת ל-setDataSpace הוקטנה מ-Android T ל-Android Q. (I59c34)
  • הוספנו קריאה חוזרת (callback) מסוג onBufferReleased ל-API‏ GLFrameBufferRenderer כדי לתת לצרכנים הזדמנות לנקות את המצב כשמאגר לא מוצג יותר (I8a4e2)
  • יוצרים את LowLatencyCanvasView כדי לתמוך בתרחיש לדוגמה פשוט של עיבוד תוכן עם זמן אחזור קצר שמסתנכרן עם העיבוד של היררכיית התצוגה. כך אפשר לצמצם את המורכבות שקשורה לניהול SurfaceView על ידי ניהול פנימי של מכונה של SurfaceView שמתורגמת מחוץ למסך או מתורגמת במסך לצורך רינדור מסונכרן או רינדור עם זמן אחזור קצר, בהתאמה. (I9253b)
  • הוספנו תמיכה בהגדרת מרחב צבעים ל-CanvasFrontBufferedRenderer API. קריאות חוזרות (callbacks) עם מאגרים מרובים עודכנו כך שיכללו גם את SurfaceControl במאגר האחורי (I24bd9)

גרסה 1.0.0-alpha05

6 בספטמבר 2023

androidx.graphics:graphics-core:1.0.0-alpha05 משוחרר. גרסה 1.0.0-alpha05 מכילה את ההוספות האלה.

תכונות חדשות

  • השקנו את GLFrameBufferRenderer API. כך אפשר לקבל שילוב של יחסי תלות ב-OpenGL, הגדרת שרשרת החלפה, פורמטים של פיקסלים והגדרה של SurfaceControl. (Ic775b)

שינויים ב-API

  • הוספנו פרמטרים של רוחב + גובה לממשקי API שונים של קריאה חוזרת (callback) כדי להעביר מאפייני גובה ורוחב מ-SurfaceHolder#Callbacks. (I7f9fc)
  • הוספנו API לניקוי גם שכבות חזית וגם שכבות עם כמה מאגרים. (Ic1f95)
  • הוספנו תמיכה בהגדרת סוג המאגר הבסיסי של שרשורי ההחלפה (swapchains) שמשמשים ב-GLFrontBufferedRenderer. (I07a13)
  • נוספו מאפייני Kotlin ל-getters ב-GLFrameBufferRenderer, הערה IntRange למספר הרשומות המקסימלי במאגר, והערות HardwareBufferFormart ו-HardwareBufferUsage ל-setFormat/setUsage, בהתאמה. (Ief89e)
  • עדכון ה-API של setBuffer בעסקאות SurfaceControl כדי לספק מחסום להפצה. (Ice1bb)
  • הוספנו ממשקי API מסוג SurfaceControlCompat.Transaction כדי להגדיר את מרחב הנתונים וגם כדי להגדיר את טווח הבהירות המורחב. (Ic378d)

גרסה 1.0.0-alpha04

7 ביוני 2023

androidx.graphics:graphics-core:1.0.0-alpha04 משוחרר. גרסה 1.0.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תכונות חדשות

  • הושק CanvasFrontBufferedRenderer כדי לתמוך בגרפיקה עם זמן אחזור קצר על סמך ה-API של android.graphics.Canvas לצד ההטמעה הקיימת של OpenGL

שינויים ב-API

  • עדכנו את ה-API של SurfaceControlCompat.Transaction#setBuffer כדי לאפשר למופעים של HardwareBuffer עם ערך null לשקף את ה-API התואם של הפלטפורמה (I173d7)
  • צריך לשנות את השם של השיטות שמפנות לעיבוד באמצעות מאגר נתונים כפול למאגר נתונים רב, כי רשת ההחלפה (swapchain) התומכת עשויה להכיל יותר משני מאגרי נתונים. (I830d7)
  • יוצרים API של CanvasFrontBufferedRenderer כדי לאפשר ל-3ps להשתמש במערכת עיבוד גרפי עם מאגר נתונים מראש באמצעות Canvas API. (Ibfc29)

תיקוני באגים

  • תוקנה בעיה שבה GLFrontBufferedRenderer לא ייצר עיבוד של תוכן אחרי שתמשיכו את הפעילות המתאימה.
  • תוקנה בעיה שבה תוכן שנשמר במטמון בחלק הקדמי של הדף נמחק לפני הזמן.
  • תוקנה בעיה שבה SurfaceHolder.Callbacks לא הוסר אחרי שהושקו ממשקי API גרפיים עם זמן אחזור נמוך.

גרסה 1.0.0-alpha03

22 במרץ 2023

androidx.graphics:graphics-core:1.0.0-alpha03 משוחרר. גרסה 1.0.0-alpha03 כוללת את ההצהרות האלה.

שינויים ב-API

  • עדכון ההטמעה של פונקציית ה-callback‏ GLFrontBufferedRenderer כדי לספק אובייקט BufferInfo שמכיל את רוחב/גובה המאגר יחד עם מזהה של מאגר פריימים, שאפשר להשתמש בו כדי לטרגט מחדש את היעד המקורי אחרי העיבוד (רנדר) במאגר שריטות ביניים. (I7fe20)
  • איחוד היצירה של SyncFence לשיטת יצירה סטטית במפעל ב-SyncFenceCompat.
  • הוסרה שיטת התאימות הציבורית ל-eglDupNativeFenceFDANDROID לטובת שיטת המפעל SyncFenceCompat ליצירת SyncFence. המטרה היא להבטיח שכל פלטפורמות ה-API יקבלו את ההטמעה הנכונה של SyncFence, ללא קשר לרמת ה-API. (I849bb)
  • נוספה תיעוד ל-FrameBufferRenderer ול-SyncStrategy.
    • FrameBufferRenderer + FrameBuffer + FrameBufferPool הועבר לחבילה androidx.graphics.opengl
    • הועברו SyncStrategy לחבילה androidx.graphics.opengl
    • מסמכי RenderCallback#onDraw עודכנו
    • מסמך מעודכן של RenderCallback#obtainFrameBuffer שמציין שהמפתח של ה-API אחראי לקריאה ל-FrameBuffer.close
    • עדכנו את onDrawComplete כדי לציין שהצרכנים אחראים לשליחת התוכן להצגה
    • העברת ממשקי התאימות או הכיתות של SyncFence לחבילה androidx.hardware כדי לשקף את המסגרת
    • שינינו את השם של SyncFence API ל-SyncFenceV19 והפכנו אותו לממשק פרטי כדי לאחד את השימושים ב-SyncFenceCompat, שמשתמש ב-SyncFence API של המסגרת בכל מקום אפשרי. (I5149c)
  • נוספו השיטות GLFrontBufferedRenderer#cancel ו-GLFrontBufferedRenderer#execute. האפשרות הראשונה שימושית בתרחישים של דחיית כף היד, שבהם צריך לבטל את העיבוד למאגר הקדמי ולהסתיר את מאגר הקדמי. האפשרות השנייה שימושית בתרחישים שבהם רוצים לבצע פעולות על אובייקטים בשרשור GL בלי לתזמן רינדור. (If0b7f)
  • הוספת API לעיבוד (רנדור) ישירות בשכבה עם מאגר כפול. כך אפשר לבצע עיבוד מחדש של סצנה אחרי חזרה, וגם לתת לצרכנים אפשרות לקבוע באופן סלקטיבי מתי להשתמש בעיבוד מראש של נתונים במטמון באופן דינמי, על סמך הסצנה הרצויה לעיבוד. (Ied56c)
  • הוספנו ממשק API חדש ל-SurfaceControlCompat.Builder כדי לתמוך בהגדרת ההורה SurfaceControl ממכונה אחרת של SurfaceControl, בנוסף למנגנון הקיים מ-SurfaceView. (I1d1b6)
  • אפשרות נוספת לאפשרות האפס של טיפוס ההחזרה של פונקציות מוסתרות שהוצאו משימוש (Ibf7b0)
  • נוספה קבועת התוסף EGL_ANDROID_get_native_client_buffer כדי לבדוק אם מכשיר Android תומך בייבוא של מכונות HardwareBuffer לאובייקטים EGLClientBuffer שאפשר לצרוך כמכונה של EGLImage. (Iad767)
  • הוספת הערה @JvmDefaultWithCompatibility (I8f206)

גרסה 1.0.0-alpha02

9 בנובמבר 2022

androidx.graphics:graphics-core:1.0.0-alpha02 משוחרר. גרסה 1.0.0-alpha02 מכילה את ההצהרות האלה.

שינויים ב-API

  • תוקנה הערה חסרה של RequiresApi עבור addTransactionCommitListener, שהוצגה ב-Android S‏ (I0a035)
  • עדכנו את פונקציות ה-callbak של מאגר onDraw<Front/Double> כדי לספק מטריצת טרנספורמציה שהצרכנים יכולים להעביר ל-vertex shaders שלהם, בנוסף לרוחב/גובה הנוכחיים של המאגר. הצרכנים אחראים להשתמש בפרמטרים האלה כדי לבצע סיבוב מראש של קוד הרינדור של OpenGL בצורה נכונה. (I82f9e)

תיקוני באגים

  • זמן אחזור משופר של גרפיקה על ידי סיבוב מראש של מאגרים לפני הנפקת עסקאות SurfaceControl.
  • תוקנה בעיה שבה יומני השגיאות הראו את השגיאה 300d‏ (EGL_BAD_SURFACE).
  • תוקנה בעיה שבה הערך של GLFrontBufferedRenderer היה לא חוקי אחרי שהפעילות המתאימה שבה הוא שימש הומשכה.
  • תמיכה מורחבת במהדמנים ובמכשירי ChromeOS.
  • תוקנה בעיה שבה השכבה הקדמית במאגר עשוי להסתתר לפני הזמן.

גרסה 1.0.0-alpha01

24 באוקטובר 2022

androidx.graphics:graphics-core:1.0.0-alpha01 משוחרר. גרסה 1.0.0-alpha01 מכילה את ההצהרות האלה.

תכונות חדשות

  • הגרסה הראשונית של ספריית AndroidX לליבת הגרפיקה. האפשרות הזו כוללת ממשקי API שתומכים בתרחישי שימוש עם זמן אחזור קצר, כמו קלט של עט. בנוסף, מוצגים ממשקי API מסייעים לשימוש ב-OpenGL.

שינויים ב-API

  • הוספת GLFrontBufferedRenderer כדי לעזור ברינדור קדמי וברינדור עם מאגרי נתונים מרובים, כדי להשיג גם זמן אחזור קצר וגם פלט רינדור באיכות גבוהה.
  • הוספת GLRenderer API כדי לעזור ברינדור של OpenGL עבור ספקי Surface שונים, כמו SurfaceView,‏ TextureView וספקים אחרים.