الرسومات

  
الاستفادة من إمكانات الرسومات على مستوى إصدارات متعددة من نظام التشغيل Android

يسرد هذا الجدول جميع العناصر في المجموعة androidx.graphics.

العناصر الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
graphics-core 1.0.3 - - -
graphics-path 1.0.1 - - -
graphics-shapes 1.0.1 - 1.1.0-beta01 -
تم إجراء آخر تعديل على هذه المكتبة في: 30 يوليو 2025

تعريف التبعيات

لإضافة تبعية على Graphics، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.3"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.1.0-beta01"
}

Kotlin

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

لمزيد من المعلومات حول العناصر التابعة، يُرجى الاطّلاع على إضافة عناصر تابعة للإنشاء.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

لا تتوفّر ملاحظات إصدار لهذا العنصر.

الإصدار 1.1 من الرسومات

الإصدار 1.1.0-beta01

‫30 يوليو 2025

تم طرح androidx.graphics:graphics-*:1.1.0-beta01. يحتوي الإصدار 1.1.0-beta01 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5)
  • أضِف mingwX64، واستهدافات تجميع js وwasm. (I2c46a)

الإصدار 1.1.0-alpha01

‫11 ديسمبر 2024

تم طرح androidx.graphics:graphics-*:1.1.0-alpha01. يحتوي الإصدار 1.1.0-alpha01 على عمليات الدمج هذه.

الميزات الجديدة

  • تمت إعادة تصميم العرض التوضيحي الرئيسي ليصبح "محرّر أشكال" عامًا. يتيح لك ذلك استيراد أشكال من مسار svg، وتعديل الميزات التي تم رصدها يدويًا في حال حدوث أخطاء في العملية التلقائية، وتصدير النتيجة إلى رمز يمكن استخدامه في رمز الإنتاج. (I1ac13)
  • استبدال قياسات الزوايا لتقدّم مخطط الشكل بقياسات طول المنحنى، ما يتيح استخدام أشكال أكثر تعقيدًا للتحويل (I75478) , I390dd
  • تم تحسين خوارزمية ربط الميزات، لذا من المفترض أن تبدو المزيد من عمليات التحويل أكثر طبيعية. (I83287)

تغييرات واجهة برمجة التطبيقات

  • إضافة استيراد مسار SVG ومسلسل الميزات يكون التسلسل المعتاد على النحو التالي:
    • استخدِم SvgPathParser.parseFeatures() الجديد لتحويل مسار svg (قيمة السمة d في العنصر path من svg) إلى List<Feature>.
    • ويمكن تعديل ذلك، ثم تحويله إلى سلسلة باستخدام FeatureSerializer.serialize().
    • يمكن استخدام السلسلة الناتجة في رمز الإنتاج، واستيرادها باستخدام FeatureSerializer.parse()
    • يُرجى العِلم أنّ الخطوتَين 1 و2 يتم تنفيذهما مرة واحدة، ويمكن تنفيذهما باستخدام التطبيق الجديد. ولا يحتاج رمز الإنتاج إلا إلى تنفيذ الخطوة 3. (I9bd00، b/371196190)، (Ic3842)، (If68ed)، (I10251)
  • عرض عناصر المضلّعات وأنواع العناصر يمكن الآن إنشاء المزيد من RoundedPolygons العامة باستخدام الدالة الإنشائية الأساسية التي تأخذ List<Features>. تتألف الميزات بشكل أساسي من قائمة بمنحنيات بيزير المكعبة، ولكن يتم وضع علامات عليها لمساعدة خوارزمية Morph في المطابقة بين الأشكال الأولية والنهائية (يتم ربط الزوايا المحدّبة بالزوايا المحدّبة، والزوايا المقعّرة بالزوايا المقعّرة). (I61e76)، (I1fc5c)
  • تضيف هذه الحزمة إمكانية استهداف watchosDeviceArm64 KMP واستهداف Kotlin 1.9. (Icf15d، b/364652024)

إصلاح الأخطاء

  • تم إصلاح حالة حدودية عندما كانت الميزة الأخيرة فارغة. (I390dd)
  • تحسين عملية إنشاء RoundedPolygon (Ib862c، b/360888486)
  • إصلاح خطأ في عملية إعداد RoundedPolygon (I83ddb)
  • إصلاح خطأ في الخوارزمية لتقدير مركز المضلّع (Ida147)

الإصدار 1.0 من أشكال الرسومات

الإصدار 1.0.1

‫4 سبتمبر 2024

تم إصدار androidx.graphics:graphics-shapes:1.0.1 وandroidx.graphics:graphics-shapes-android:1.0.1 وandroidx.graphics:graphics-shapes-desktop:1.0.1. يحتوي الإصدار 1.0.1 على عمليات الدمج هذه.

الإصدار 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 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • السماح بتدوير الأشكال مسبقًا للبدء من نقطة مختلفة يتيح هذا التغيير للأشكال 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() لتسهيل إنشاء هذه الأشكال الدائرية أو التي تتضمّن نجومًا. تتوفّر أيضًا واجهات برمجة تطبيقات جديدة لاحتساب الحدود الدقيقة المطلوبة لشكل معيّن (كانت الحدود السابقة مجرد تقدير استنادًا إلى نقطة الارتكاز ونقاط التحكّم في منحنى Bezier الأساسي)، بالإضافة إلى الحدود القصوى الممكنة، والتي يمكن أن تكون مفيدة لتحديد حجم الحاوية التي تحتوي على الشكل إذا كان سيتم تدويره داخل تلك الحاوية. (I71827)

تغييرات واجهة برمجة التطبيقات

  • تتوفّر الآن خيارات إضافية لاسترداد الحدود الدنيا والقصوى الدقيقة. (I6d49f، b/317286450)

إصلاح الأخطاء

  • حدثت أحيانًا تشوّهات في العرض عند رسم هذه الأشكال كمسارات ذات حدود، بسبب مشكلة في العرض على مستوى منخفض مرتبطة بالمنحنيات ذات الطول الصفري. تم إصلاح هذا الخطأ عن طريق إزالة جميع المنحنيات ذات الطول الصفري (التي لا تحتاج إليها الأشكال، ما يؤدي أيضًا إلى توفير النفقات العامة للمسارات التي تنتجها الأشكال).

الإصدار 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 على عمليات الإيداع هذه.

الميزات الجديدة

  • يتضمّن هذا الإصدار العديد من التغييرات في واجهة برمجة التطبيقات، بالإضافة إلى إصلاحات للأخطاء.
  • تتيح العديد من التغييرات في واجهة برمجة التطبيقات استخدام مكتبة Shapes مع KMP. يسهّل ذلك إجراء مكالمات من الرموز البرمجية غير التابعة لنظام التشغيل Android (مثل رموز Compose البرمجية غير التابعة لنظام التشغيل Android). على سبيل المثال، لا تتضمّن واجهة برمجة التطبيقات أنواع Android، مثل الأنواع السابقة PointF وMatrix وPath.
  • تم أيضًا إجراء العديد من التغييرات على واجهات برمجة التطبيقات وعمليات التنفيذ لأسباب تتعلّق بالأداء، وتحديدًا لتقليل تخصيص العناصر (وجمعها). على سبيل المثال، يؤدي الانتقال من PointF إلى مَعلمات Float منفصلة إلى تجنُّب تخصيص العديد من بنى PointF المؤقتة لاحتواء هذه الرؤوس.

تغييرات واجهة برمجة التطبيقات

  • تم استبدال Morph.asMutableCubics بدالة لتكرار MutableCubics. تم تغيير الواجهة الوظيفية PointTransformer، وهي الآن تأخذ الإحداثيات x وy الخاصة بـ Point وتعرض TransformedResult (الذي يتم إنشاؤه باستخدام الإحداثيات x وy المحوَّلة) (I6719e)
  • تمت إزالة الدالة الإنشائية Cubic العامة وتحويلها إلى دالة مصنع. (I409ce)
  • إضافة واجهات برمجة تطبيقات خاصة بنظام التشغيل Android لتحويل الرسومات ورسمها (I079f6، b/292289543)
  • إزالة العناصر التابعة لنظام التشغيل Android (Iadc1c، b/292289543)
  • أصبحت أسماء خصائص عناصر الربط والتحكّم أكثر منطقية الآن (If13bd، b/294562941)
  • تم تغيير مَعلمات PointF إلى أزواج Float (Id4705 وb/276466399 وb/290254314)
  • يتم الآن تمرير progress إلى أوامر الرسم Morph مباشرةً (Icdca2)

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي يحدث عند إنشاء أشكال كبيرة. (I4fd66، b/313497325)

الإصدار 1.0.0-alpha03

‫7 يونيو 2023

تم طرح androidx.graphics:graphics-shapes:1.0.0-alpha03. يحتوي الإصدار 1.0.0-alpha03 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة الدالة الجديدة 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 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • تم دمج الفئة الرئيسية 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 لتحديد نصف قطر التقريب ومَعلمات التنعيم للزوايا، ما يؤدي إلى أشكال مضلّعة ذات زوايا مستديرة.
  • استخدِم واجهة برمجة التطبيقات الجديدة Morph(Polygon, Polygon) لاحتساب شكل "تغيير الشكل" تلقائيًا، ويمكن ضبط مستوى تقدّمه من 0 إلى 1 لإنشاء رسوم متحركة بين الشكلَين الأوّلي والنهائي. يمكنك تحريك هذا التقدم بمرور الوقت، ورسم النتيجة في كل إطار، لإنشاء حركة سلسة بين هذه الأشكال الدائرية الجديدة.

الإصدار 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 على الإصدارات الأقدم من 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)
  • تم تقليل حجم المكوّنات الأصلية في androidx.graphics:graphics-path بنسبة %43. (I8e40d)

الإصدار 1.0.0-beta01

‫29 نوفمبر 2023

تم طرح androidx.graphics:graphics-path:1.0.0-beta01. يحتوي الإصدار 1.0.0-beta01 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة استخدامات واجهة برمجة التطبيقات التجريبية isAtLeastU() (Ie9117 وb/289269026)

إصلاح الأخطاء

  • إصلاحات وتحسينات متنوّعة على الأداء، بما في ذلك طريقة تعامل المكتبة مع الأشكال المخروطية

الإصدار 1.0.0-alpha02

‫7 يونيو 2023

تم طرح androidx.graphics:graphics-path:1.0.0-alpha02. تم تطوير هذا الإصدار في فرع داخلي.

الميزات الجديدة

  • تم إصلاح مشكلة في عملية التحقّق من إصدار النظام الأساسي الداخلي، ما تسبّب في حدوث مشاكل عند التشغيل على إصدارات Android 14 التجريبية (كانت عملية التحقّق من الإصدار تفشل، ولكن آلية تنفيذ الإجراءات على الإصدارات السابقة لا تعمل بشكل صحيح على Android 14 على وجه الخصوص).

الإصدار 1.0.0-alpha01

‫22 مارس 2023

تم طرح androidx.graphics:graphics-path:1.0.0-alpha01. يحتوي الإصدار 1.0.0-alpha01 على عمليات الدمج التالية.

الميزات الجديدة

  • تتيح هذه المكتبة الجديدة طلب البحث عن بيانات "المسار" من خلال واجهة برمجة التطبيقات الجديدة PathIterator. باستخدام واجهة برمجة التطبيقات هذه، يمكن للمتصلين تكرار جميع أجزاء عنصر Path لتحديد العملية والبيانات الخاصة بهذه الأجزاء.
  • تستخدم المكتبة واجهات برمجة تطبيقات مشابهة لتلك التي تم طرحها في الإصدار التجريبي من Android 14، ولكن يتوافق إصدار AndroidX من واجهة برمجة التطبيقات أيضًا مع الإصدارات السابقة وصولاً إلى المستوى 21 من واجهة برمجة التطبيقات.

الإصدار 1.0 من Graphics Core

الإصدار 1.0.3

‫26 مارس 2025

تم طرح androidx.graphics:graphics-core:1.0.3. يحتوي الإصدار 1.0.3 على عمليات الدمج هذه.

إصلاح الأخطاء

  • تم إصلاح مشكلة الوميض في وضع ملء الشاشة أثناء الرسم على أجهزة معيّنة تعمل بإصدارات من واجهة برمجة التطبيقات أقل من 33.

الإصدار 1.0.2

‫16 أكتوبر 2024

تم طرح androidx.graphics:graphics-core:1.0.2. يحتوي الإصدار 1.0.2 على عمليات الدمج هذه.

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تتسبب في استمرار إدارة مثيلات SurfaceControl من خلال أداة تجميع النظام حتى بعد إيقافها.
  • تم إصلاح المشكلة المتمثّلة في عدم إيقاف مثيل 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 معيّنة تعمل بالإصدار 14 من نظام التشغيل Android.
  • تم إصلاح المشكلة التي كانت تؤدي إلى عدم حذف مثيلات مخزن الإطارات بشكلٍ صحيح عند استخدام FrameBuffer.

الإصدار 1.0.0-beta01

‫13 كانون الأول (ديسمبر) 2023

تم طرح androidx.graphics:graphics-core:1.0.0-beta01. يحتوي الإصدار 1.0.0-beta01 على عمليات الإيداع هذه.

الميزات الجديدة

  • تم طرح واجهة برمجة تطبيقات LowLatencyCanvasView جديدة لتوفير عرض منخفض وقت الاستجابة باستخدام واجهات برمجة التطبيقات للرسومات الثنائية الأبعاد في Android (Canvas + Paint) ضمن بنية العرض.
  • تم تقديم واجهة برمجة التطبيقات CanvasBufferedRenderer لدعم عرض "لوحة الرسم" بتسريع الأجهزة في HardwareBuffer. يمكن استخدام ذلك لرسم جزء من واجهة المستخدم في مخزن مؤقت يمكن تحويله إلى صورة نقطية باستخدام واجهة برمجة التطبيقات Bitmap.wrapHardwareBuffer.

تغييرات واجهة برمجة التطبيقات

  • تم تعديل واجهة برمجة التطبيقات CanvasBufferRenderer#releaseBuffer لتتضمّن مَعلمة اختيارية خاصة بالسياج الجغرافي. تم تعديل المستندات لتوضيح الحالات التي يتم فيها عرض RenderResult#fence. (If1ea7)
  • أضِف طريقة draw إلى RenderRequest للسماح باستخدام الروتينات الفرعية لجدولة طلبات الرسم. تمت إعادة تسمية طريقة الرسم السابقة التي استهلكت منفِّذًا إلى drawAsync. تمت إعادة تصميم الطريقة isClosed() لتصبح سمة. (I5bff6)
  • تم عرض مَعلمة تنسيق المخزن المؤقت إلى CanvasFrontBufferRenderer ليتم ربطها مباشرةً بـ CanvasBufferedRenderer.Builder#setBufferFormat (I0f272)
  • تم إنشاء واجهة برمجة التطبيقات CanvasBufferedRenderer للتعامل مع عرض لوحة الرسم المتسارع للأجهزة في HardwareBuffer. ويوفّر ذلك عملية تنفيذ متوافقة مع الإصدارات القديمة من Android Q إلى جانب إعداد عمق سلسلة التبديل HardwareBuffers. لا يزال إعداد ColorSpace مقتصرًا على الإصدار Android U والإصدارات الأحدث، ولكنّ عملية التنفيذ المتوافقة لا تقدّم أي سلوك نيابةً عن المطوّرين. (I9b1d8)
  • أضِف واجهات برمجة التطبيقات setFrameRate/clearFrameRate إلى SurfaceControlCompat.Transaction للتحكّم في عدد اللقطات في الثانية إلى جانب استراتيجية التغيير للانتقالات السلسة أو التلقائية. (I6045c)
  • تم خفض مستوى واجهة برمجة التطبيقات المطلوب لـ setDataSpace من Android T إلى Android Q. (I59c34)
  • تمت إضافة وظيفة رد الاتصال onBufferReleased إلى واجهة برمجة التطبيقات GLFrameBufferRenderer لمنح المستهلكين فرصة تنظيف الحالة عندما لا يتم عرض المخزن المؤقت (I8a4e2)
  • أنشئ LowLatencyCanvasView لتوفير حالة استخدام بسيطة لعرض المحتوى بزمن انتقال منخفض تتم مزامنته مع عرض التسلسل الهرمي للعرض. يؤدي ذلك إلى الحدّ من التعقيدات المرتبطة بإدارة SurfaceView من خلال إدارة مثيل SurfaceView داخليًا يتم ترجمته على الشاشة أو إيقاف الترجمة على الشاشة لعرض المحتوى بشكل متزامن وبزمن استجابة منخفض على التوالي. (I9253b)
  • تمت إضافة إمكانية ضبط إعدادات مساحة الألوان إلى واجهة برمجة التطبيقات CanvasFrontBufferedRenderer. تم تعديل عمليات معاودة الاتصال المتعددة المخزّنة مؤقتًا لتشمل أيضًا SurfaceControl المخزّنة مؤقتًا (I24bd9)

الإصدار 1.0.0-alpha05

‫6 سبتمبر 2023

تم طرح androidx.graphics:graphics-core:1.0.0-alpha05. يحتوي الإصدار 1.0.0-alpha05 على عمليات الإيداع هذه.

الميزات الجديدة

  • تم طرح واجهة برمجة التطبيقات GLFrameBufferRenderer. يوفّر هذا الإعداد مجموعة من العناصر التابعة لـ OpenGL وإعدادات سلسلة التبديل وتنسيقات البكسل وإعدادات SurfaceControl. (Ic775b)

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة مَعلمتَي العرض والارتفاع إلى واجهات برمجة التطبيقات المختلفة الخاصة بوظائف ردّ الاتصال لتوجيه الأبعاد من SurfaceHolder#Callbacks. (I7f9fc)
  • تمت إضافة واجهة برمجة تطبيقات واضحة لمحو كل من الطبقات الأمامية والمتعددة المخزّنة مؤقتًا. (Ic1f95)
  • تمت إضافة إمكانية ضبط نوع المخزن المؤقت الأساسي لسلاسل التبديل المستخدَمة في GLFrontBufferedRenderer. (I07a13)
  • تمت إضافة سمات Kotlin للدوال الجالبة في التعليق التوضيحي GLFrameBufferRenderer والتعليق التوضيحي IntRange للحد الأقصى لعدد إدخالات المخزن المؤقت، والتعليقَين التوضيحيَين HardwareBufferFormart وHardwareBufferUsage للسمتَين setFormat/setUsage على التوالي. (Ief89e)
  • تم تعديل واجهة برمجة التطبيقات setBuffer في معاملات SurfaceControl لتوفير حاجز إصدار. (Ice1bb)
  • تمت إضافة واجهات برمجة التطبيقات SurfaceControlCompat.Transaction لضبط مساحة البيانات بالإضافة إلى ضبط نطاق السطوع الموسّع. (Ic378d)

الإصدار 1.0.0-alpha04

‫7 يونيو 2023

تم طرح androidx.graphics:graphics-core:1.0.0-alpha04. يحتوي الإصدار 1.0.0-alpha04 على عمليات الإيداع هذه.

الميزات الجديدة

  • تمت إضافة CanvasFrontBufferedRenderer لدعم الرسومات ذات الاستجابة السريعة التي تستخدم واجهة برمجة التطبيقات android.graphics.Canvas إلى جانب تنفيذ OpenGL الحالي

تغييرات واجهة برمجة التطبيقات

  • تم تعديل واجهة برمجة التطبيقات SurfaceControlCompat.Transaction#setBuffer للسماح بإنشاء مثيلات HardwareBuffer تقبل القيم الخالية من أجل محاكاة واجهة برمجة التطبيقات المقابلة على المنصة (I173d7)
  • أعِد تسمية الطرق التي تشير إلى العرض باستخدام المخزن المؤقت المزدوج إلى العرض باستخدام المخزن المؤقت المتعدد، لأنّ سلسلة التبديل الأساسية قد تحتوي على أكثر من مخزنَين مؤقتَين. (I830d7)
  • إنشاء واجهة برمجة تطبيقات CanvasFrontBufferedRenderer للسماح للجهات الخارجية بالاستفادة من نظام العرض المخزّن مؤقتًا باستخدام Canvas API (Ibfc29)

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تتسبّب في عدم عرض GLFrontBufferedRenderer للمحتوى بعد استئناف النشاط ذي الصلة.
  • تم إصلاح مشكلة محو المحتوى المخزّن مؤقتًا في المقدّمة قبل الأوان.
  • تم إصلاح المشكلة التي كانت تتسبّب في عدم إزالة SurfaceHolder.Callbacks بعد إصدار واجهات برمجة تطبيقات الرسومات ذات وقت الاستجابة المنخفض.

الإصدار 1.0.0-alpha03

‫22 مارس 2023

تم طرح androidx.graphics:graphics-core:1.0.0-alpha03. يحتوي الإصدار 1.0.0-alpha03 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • تم تعديل عملية تنفيذ GLFrontBufferedRenderer callback لتوفير العنصر BufferInfo الذي يحتوي على عرض/ارتفاع المخزن المؤقت بالإضافة إلى معرّف مخزن مؤقت للإطارات يمكن استخدامه لإعادة استهداف الوجهة الأصلية بعد العرض في مخزن مؤقت وسيط. (I7fe20)
  • تم دمج عملية إنشاء SyncFence في طريقة المصنع الثابتة على SyncFenceCompat.
  • تمت إزالة طريقة التوافق العامة مع eglDupNativeFenceFDANDROID لصالح طريقة المصنع SyncFenceCompat لإنشاء SyncFence. وذلك لضمان تلقّي جميع أسطح واجهات برمجة التطبيقات عملية التنفيذ الصحيحة SyncFence بغض النظر عن مستوى واجهة برمجة التطبيقات. (I849bb)
  • أضفنا مستندات حول السمتَين FrameBufferRenderer وSyncStrategy.
    • تم نقل FrameBufferRenderer + FrameBuffer + FrameBufferPool إلى حزمة androidx.graphics.opengl
    • تم نقل SyncStrategy إلى حزمة androidx.graphics.opengl
    • مستندات RenderCallback#onDraw معدَّلة
    • تم تعديل مستندات RenderCallback#obtainFrameBuffer التي يكون منفّذ واجهة برمجة التطبيقات مسؤولاً عن طلبها FrameBuffer.close
    • تم تعديل onDrawComplete للإشارة إلى أنّ المستهلكين مسؤولون عن إرسال المحتوى المطلوب عرضه
    • تم نقل واجهات/فئات التوافق SyncFence إلى حزمة androidx.hardware لتتوافق مع إطار العمل
    • تمت إعادة تسمية واجهة برمجة التطبيقات SyncFence إلى SyncFenceV19 وتمت إتاحتها بشكل خاص لدمج الاستخدامات في SyncFenceCompat التي تستفيد من واجهة برمجة التطبيقات SyncFence في إطار العمل حيثما أمكن ذلك. (I5149c)
  • تمت إضافة الطريقتَين GLFrontBufferedRenderer#cancel وGLFrontBufferedRenderer#execute. يكون الخيار الأول مفيدًا في سيناريوهات رفض راحة اليد حيث يجب إلغاء العرض في المخزن المؤقت الأمامي وإخفاء المخزن المؤقت الأمامي. يكون هذا الخيار الأخير مفيدًا في سيناريوهات معالجة العناصر في سلسلة محادثات GL بدون الحاجة إلى جدولة عملية عرض. (If0b7f)
  • أضِف واجهة برمجة التطبيقات لعرض المحتوى مباشرةً في طبقة المخزن المؤقت المزدوج. يساعد ذلك في إعادة عرض مشهد بعد الاستئناف، كما يتيح للمستهلكين تحديد وقت الاستفادة من العرض المخزّن مؤقتًا في المخزن الأمامي بشكل انتقائي استنادًا إلى المشهد المطلوب عرضه. (Ied56c)
  • تمت إضافة واجهة برمجة تطبيقات جديدة إلى 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 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • تم إصلاح التعليق التوضيحي RequiresApi غير المتوفّر للرمز addTransactionCommitListener الذي تم تقديمه في الإصدار Android S (I0a035)
  • تم تعديل عمليات معاودة الاتصال onDraw<Front/Double> الخاصة بالمخزن المؤقت لتوفير مصفوفة تحويل يمكن للمستهلكين تمريرها إلى مظلّلات الرؤوس بالإضافة إلى عرض/ارتفاع المخزن المؤقت الحالي. ويتحمّل المستهلكون مسؤولية استخدام هذه المَعلمات لتدوير رمز العرض 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 الأساسية للرسومات ويشمل ذلك واجهات برمجة التطبيقات التي تتيح حالات الاستخدام التي تتطلّب سرعة استجابة منخفضة، مثل إدخال البيانات باستخدام قلم الشاشة. ويوفّر هذا الإصدار أيضًا بعض واجهات برمجة التطبيقات المساعدة لاستخدام OpenGL.

تغييرات واجهة برمجة التطبيقات

  • تم تقديم GLFrontBufferedRenderer للمساعدة في العرض الأمامي والعرض المتعدد المخزن مؤقتًا لتحقيق كلّ من وقت الاستجابة المنخفض وجودة العرض العالية.
  • تضيف هذه الحزمة واجهة برمجة التطبيقات GLRenderer للمساعدة في عرض OpenGL لمختلف موفّري Surface، مثل SurfaceView وTextureView وغيرهما.