WindowManager

تتيح مكتبة Jetpack WindowManager لمطوّري التطبيقات استخدام أشكال الأجهزة الجديدة وبيئات النوافذ المتعددة. يستهدف الإصدار الأول الأجهزة القابلة للطي، ولكن سيتم توسيع نطاق الإصدارات المستقبلية لتشمل مزيدًا من أنواع الشاشات وميزات النوافذ.
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي
16 أكتوبر 2024 1.3.0 - - 1.4.0-alpha05

الإعلان عن التبعيات

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

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

Groovy

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.3.0")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

ملاحظات

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

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

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 1.4

الإصدار 1.4.0-alpha05

16 أكتوبر 2024

تم إصدار androidx.window:window-*:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 عمليات الربط هذه.

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

  • أضِف دوالّ تسهيل للحصول على widthDp وheightDp من WindowMetrics.

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

  • أضِف widthDp وheightDp إلى WindowMetrics. (Ide026)
  • أزِل واجهة برمجة التطبيقات التجريبية WindowInsets. (I68a71)
  • تعديل أسماء طرق التحقّق من الحدود إلى isAtLeast (Ib0ab7)

الإصدار 1.4.0-alpha04

2 أكتوبر 2024

تم إصدار androidx.window:window-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 عمليات الربط هذه.

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

  • تمت إضافة طريقة لاحتساب WindowSizeClass من WindowMetrics. (874dba)
  • غيِّر طرق WindowSizeClass إلى containsWidthDp وcontainsHeightDp وcontainsWindowSizeDp لزيادة الوضوح. (fa760d)
  • حوِّل WindowAreaController إلى فئة أساسية مجردة. (I90893)

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

  • إتاحة الحدود النسبية عند إنشاء FoldingFeature اختبار (2e6b3e)
  • إصلاحات عامة للأخطاء عند اختيار WindowSizeClass

الإصدار 1.4.0-alpha03

18 أيلول (سبتمبر) 2024

تم إصدار androidx.window:window-*:1.4.0-alpha03. يحتوي الإصدار 1.4.0-alpha03 على عمليات الربط هذه.

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

  • أضِف طريقة مساعدة للحصول على WindowSizeClass من WindowMetrics. (I83f1f)
  • أعِد تسمية isAtLeast إلى containsBreakpoint. (I85b47)
  • أضِف وظائف زائدة إلى computeWindowSizeClass باستخدام أعداد الفاصلة العائمة. (I3dcb2، b/364677934، b/364677802، b/364680886)

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

  • أضِف نقاط التوقف غير المتوفّرة إلى مجموعة نقاط التوقف التلقائية WindowSizeClass.
  • تم إصلاح خلل في بعض الحالات كان يؤدي إلى عدم اختيار السمات المكثّفة بشكل صحيح.

الإصدار 1.4.0-alpha02

4 أيلول (سبتمبر) 2024

تم إصدار androidx.window:window-*:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 عمليات الربط هذه.

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

إتاحة استخدام WindowSizeClass مخصّص

  • افتح أداة الإنشاء لـ WindowSizeClass حتى يتمكّن المطوّرون من استخدام أدواتهم الخاصة.
  • أضِف طرقًا مساعدة isAtLeast ليتمكّن المطوّرون من معالجة مجموعة من قيم WindowSizeClass.
  • أضِف دالة تمديد على Set<WindowSizeClass> لاحتساب أفضل مطابقة من المجموعة.
  • أضِف ثوابت لنقاط الفواصل المقترَحة لنظام التشغيل Android.
  • أضِف مجموعة نقاط التوقف المقابلة لنقاط التوقف المقترَحة من Android.

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

  • عدِّل أسماء طرق الحدود لـ WindowSizeClass. (If89a6)
  • عدِّل واجهة برمجة التطبيقات WindowSizeClass API لإتاحة إضافة قيم نقاط توقّف جديدة في المستقبل. بدلاً من استخدام حدود مطلقة، نستخدم الحدود الدنيا وننصحك بأن يستخدم المطوّرون عمليات التحقّق من الحدود الدنيا عند معالجة WindowSizeClass. سيتم إيقاف WindowWidthSizeClass وWindowHeightSizeClass الحاليَين نهائيًا لأنّه لن يتم تطويرهما بعد الآن. (I014ce)

الإصدار 1.4.0-alpha01

7 آب (أغسطس) 2024

تم إصدار androidx.window:window-*:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 عمليات الربط هذه.

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

  • تسمح ميزة تثبيت حِزم الأنشطة للتطبيقات بتثبيت المحتوى في حاوية واحدة وفصل التنقّل فيها عن الحاوية الأخرى.
  • يسمح المقسّم التفاعلي للتطبيقات بعرض مقسم ثابت أو قابل للسحب بين النشاطَين في عرض مُقسَّم.
  • تتيح ميزة تعتيم مربّع الحوار بملء الشاشة للتطبيقات تحديد منطقة التعتيم في مربّع الحوار، إما لتعتيم نافذة المهام بالكامل أو لتعتيم الحاوية التي تعرض مربّع الحوار فقط.
  • يسمح الرجوع إلى معلومات نافذة النشاط المضمّنة للتطبيقات بتلقّي آخر المعلومات باستمرار عن نافذة النشاط المضمّنة.
  • تتيح إدراج خلفية الحركة للتطبيقات تحديد خلفية الحركة، ما يُحسِّن من جودة الحركة الانتقالية عند استخدام ActivityEmbedding.
  • تسمح إدارة ActivityStack المحسّنة للتطبيقات بالتحكّم بشكل أكبر في ActivityStacks عند استخدام ActivityEmbedding، بما في ذلك:
  • بدء نشاط في ActivityStack محدّد
  • إنهاء ActivityStack

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

  • واجهة برمجة تطبيقات جديدة WindowInfoTracker#supportedPostures:

    • واجهة برمجة تطبيقات لتحديد ما إذا كان الجهاز متوافقًا مع وضع "العرض على سطح مستوٍ" للأجهزة القابلة للطي إضافة WindowAreaSessionPresenter#getWindow
  • إضافة واجهات برمجة تطبيقات تتيح تثبيت ActivityStack:

    • الصف SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • إضافة واجهات برمجة تطبيقات لتفعيل المقسم التفاعلي وضبطه

    • الصف DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • إضافة واجهات برمجة تطبيقات لضبط EmbeddingConfiguration وDimAreaBehavior لمربّعات الحوار

    • الصف EmbeddingConfiguration
    • الصف DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • إضافة واجهات برمجة التطبيقات لتلقّي آخر المعلومات عن نوافذ الأنشطة المضمّنة

    • الصف EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • إضافة واجهات برمجة تطبيقات لضبط خلفية الرسوم المتحركة المضمّنة

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • إضافة واجهات برمجة التطبيقات لإكمال ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • إضافة واجهات برمجة التطبيقات لضبط عملية الإطلاق ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • واجهات برمجة التطبيقات التالية مستقرة ولم تعُد تجريبية:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (تم نقله من SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • إضافة واجهات برمجة التطبيقات للإصدار 1.4 (I56774)

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

  • إصلاح خلل على أجهزة معيّنة يتم فيه عرض القيمة UNAVAILABLE بدلاً من ACTIVE عندما تكون الجلسة نشطة
  • إزالة إمكانية استخدام transferActivityToWindowArea على الأجهزة التي يكون فيها vendorApiLevel‏ = 2 بسبب عدم استقرار واجهة برمجة التطبيقات
  • تقديم واجهة برمجة تطبيقات لتفعيل ميزة السحب إلى ملء الشاشة لفاصل النشاط القابل للسحب (I645c9)
  • السماح للتطبيقات بإيقاف صور ActivityEmbedding المتحركة من خلال مَعلمات الصور المتحركة لنظام التشغيل SplitAttributes (Idc01a)
  • تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة تطبيقات المنصة الجديدة لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام R8 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) ولجميع الإصدارات عند استخدام AGP 8.1 أو إصدار أحدث (مثل D8 الإصدار 8.1). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)
  • اسمح للعناصر الإضافية بأخذ مَعلمات الرسوم المتحركة لـ SplitAttributes حتى يتمكّن الجهاز من استخدامها في عمليات انتقال الرسوم المتحركة. (Iede00)
  • واجهات برمجة التطبيقات لإخفاء التراكب (Ic4251)
  • تقديم واجهات برمجة تطبيقات لضبط المقسم الثابت أو القابل للسحب للقسم (Ia7a78)
  • تمت إضافة الكثافة إلى WindowMetrics (Id6723)
  • أضِف واجهة برمجة التطبيقات للحصول على SupportedPostures. (If557a)
  • إزالة setLaunchingActivityStack من واجهة برمجة التطبيقات التجريبية (I191cf)
  • تعريف ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • إيقاف #getToken نهائيًا وإضافة #getActivityStackToken (Ie0471)
  • تقديم محوِّل طلب إعادة الاتصال لواجهة برمجة تطبيقات embeddedActivityWindowInfo flow API (Ida77f)
  • إضافة محوِّل طلب إعادة الاتصال لواجهة برمجة التطبيقات overlayInfo flow API‏ (I7264f)
  • أدخِل WindowSdkExtensionsRule لإلغاء extensionsVersion للاختبار. (Ifb928)
  • - نقل #setLaunchingActivityStack إلى حِزمة لتوافقها مع استخدامات ActivityOptionsCompat
    • على المستخدمين تمرير activityOptions.toBundle بدلاً من ActvityOptions نفسه.
    • أزِل #setLaunchingActivityStack(Activity). على المستخدمين نقل بياناتهم لاستخدام ActivityEmbeddingController#getActivityStac(Activity) للحصول على ActivityStack، ويجب تمرير ActivityStack إلى #setLaunchingActivityStack. (Ie0ccc)
  • - استخدِم ActivityStack.Token وSpltInfo.Token كمعرّف للتواصل بين WM Jetpack والإضافات.
    • إيقاف واجهات برمجة التطبيقات نهائيًا أو استبدالها لأخذ الرمز المميّز أو إرجاعه بدلاً من IBinder (I12b24)
  • - عرِّف ActivityEmbeddingController#invalidateVisibleActivityStacks
    • إزالة SplitController#invalidateTopVisibleSplitAttributes لأنّ الميزة تم دمجها مع #invalidateVisibleActivityStacks (I02ef5)
  • - إضافة واجهة برمجة التطبيقات لضبط إعدادات التضمين (I59a4a)
  • - إضافة ميزة تثبيت/إلغاء تثبيت أهم واجهات برمجة تطبيقات ActivityStack androidx.Window
    • تعديل التطبيق التجريبي للسماح بتثبيت/إزالة تثبيت العناصر في أعلى الشاشة ActivityStack (I24dd3)
  • إعادة إضافة #finishActivityStacks وActivityEmbeddingOptions (Ic1ab3)
  • أزِل واجهات برمجة التطبيقات غير المستقرة. (Ibc534، b/302380585)

الإصدار 1.3

الإصدار 1.3.0

29 أيار (مايو) 2024

تم إصدار androidx.window:window-*:1.3.0. يحتوي الإصدار 1.3.0 على عمليات الربط هذه.

التغييرات المهمة منذ الإصدار 1.2.0

  • إتاحة Kotlin Multiplatform لفئات حجم النوافذ

الإصدار 1.3.0-rc01

14 أيار (مايو) 2024

يوفّر الإصدار WindowManager من Jetpack ميزات Kotlin Multiplatform لاستخدام ميزات WindowSizeClass، بالإضافة إلى إصلاحات متعددة للأخطاء.

تم إصدار androidx.window:window-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 عمليات الربط هذه.

الإصدار 1.3.0-beta02

1 مايو 2024

تم إصدار androidx.window:window-*:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه المراجعات.

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

  • إزالة إمكانية إنشاء WindowSizeClass مخصّصة واستخدامها (Id1143)

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

  • إصلاحات KotlinReflectionInternalError الناتجة عن إزالة أداة Proguard لبعض الملفات في عمليات تنفيذ معيّنة على الأجهزة (I01b02)

الإصدار 1.3.0-beta01

3 نيسان (أبريل) 2024

تم إصدار androidx.window:window-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 عمليات الربط هذه.

الإصدار 1.3.0-alpha03

‫6 مارس 2024

تم إصدار androidx.window:window-*:1.3.0-alpha03. يحتوي الإصدار 1.3.0-alpha03 على عمليات الربط هذه.

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

  • تقسيم WindowSizeClassUtil إلى طرق أكثر تركيزًا (Ie9292)
  • استعادة WindowSizeClass#compute (I21355، b/324293374)

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

  • إصلاح مشكلة الأعطال التي كانت تحدث بسبب عدم إزالة ترميز السياق المقدَّم بشكلٍ صحيح (94d10ce , b/318787482)

الإصدار 1.3.0-alpha02

7 شباط (فبراير) 2024

تم إصدار androidx.window:window-*:1.3.0-alpha02. يحتوي الإصدار 1.3.0-alpha02 على هذه المراجعات.

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

  • تم إجراء تعديلات على واجهة برمجة التطبيقات لـ Window Size Class API لتحسين مرونة المطوّرين الذين يريدون استخدام فئات الحجم الخاصة بهم.

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

  • أضِف قيودًا على الارتفاع إلى أداة اختيار العرض. (I23393)
  • أضِف دوالّ مساعدة لاختيار WindowSizeClass من مجموعة. إضافة دوالّ تسجيل النقاط التجريبية ليتمكّن المطوّرون من كتابة أدوات الاختيار الخاصة بهم أضِف دالة إضافة أداة اختيار لاختيار أوسع WindowSizeClass ضمن حدود معيّنة. (I0c944)
  • افتح الدالة الإنشائية WindowSizeClass حتى تتمكّن من إضافة نقاط توقّف مخصّصة. (Ic1ff3)
  • إضافة وظيفة لتسهيل إنشاء فئة حجم من العرض والارتفاع والكثافة (If67f4)

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

  • إصلاح استثناء عند اقتطاع قيمة عدد الفاصلة العائمة إلى 0 (272ffac)

الإصدار 1.3.0-alpha01

15 تشرين الثاني (نوفمبر) 2023

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

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

  • وفِّر واجهات برمجة تطبيقات النوافذ التجريبية للوصول إلى الشاشة الخلفية.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإنشاء FoldingFeature ثابتة الآن.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإعداد قيم ActivityEmbedding زائفة مستقرة الآن.
  • تُبلغ الدالة WindowLayoutInfoPublisherRule الآن عن القيمة المُلغاة عند الحصول على قيمة من UiContext.
  • تُبلغ WindowInfoTracker عن تجميع بيانات الميزة إلى مَعلمات UiContext.
  • اعرض إصدار الإضافات على الجهاز.
  • WindowProperties الثوابت الخاصة بإلغاء الإعدادات لكل مستخدم على مستوى التطبيق:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE - لإعلام المنظومة بأنّ التطبيق أوقف ميزة تجاوز التوافق مع نسبة العرض إلى الارتفاع الموجَّهة للمستخدمين
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE— إبلاغ النظام بأنّ التطبيق أوقف خيار ملء الشاشة الذي اختاره المستخدم وتجاوز إعدادات التوافق مع نسبة العرض إلى الارتفاع

الإصدار 1.2

الإصدار 1.2.0

15 تشرين الثاني (نوفمبر) 2023

تم إصدار androidx.window:window-*:1.2.0. يحتوي الإصدار 1.2.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 1.1.0

  • وفِّر واجهات برمجة تطبيقات النوافذ التجريبية للوصول إلى الشاشة الخلفية.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإنشاء FoldingFeature ثابتة الآن.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإعداد قيم ActivityEmbedding زائفة مستقرة الآن.
  • تُبلغ الدالة WindowLayoutInfoPublisherRule الآن عن القيمة المُلغاة عند الحصول على قيمة من UiContext.
  • تُبلغ WindowInfoTracker عن تجميع بيانات الميزة إلى مَعلمات UiContext.
  • اعرض إصدار الإضافات على الجهاز.

الإصدار 1.2.0-rc01

1 تشرين الثاني (نوفمبر) 2023

تم إصدار androidx.window:window-*:1.2.0-rc01. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.

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

  • وفِّر واجهات برمجة تطبيقات النوافذ التجريبية للوصول إلى الشاشة الخلفية.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإنشاء FoldingFeature ثابتة الآن.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإعداد قيم ActivityEmbedding زائفة مستقرة الآن.
  • تُبلغ الدالة WindowLayoutInfoPublisherRule الآن عن القيمة المُلغاة عند الحصول على قيمة من UiContext.
  • تُبلغ WindowInfoTracker عن تجميع بيانات الميزة إلى مَعلمات UiContext.
  • اعرض إصدار الإضافات على الجهاز.

الإصدار 1.2.0-beta04

18 تشرين الأول (أكتوبر) 2023

تم إصدار androidx.window:window-*:1.2.0-beta04. يحتوي الإصدار 1.2.0-beta04 على هذه المراجعات.

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

  • أزِل واجهات برمجة التطبيقات غير المستقرة. (Ibc534، b/302380585)

الإصدار 1.2.0-beta03

20 أيلول (سبتمبر) 2023

تم إصدار androidx.window:window-*:1.2.0-beta03. يحتوي الإصدار 1.2.0-beta03 على هذه المراجعات.

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

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

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

  • أضِف تعليقًا توضيحيًا لإصدار إضافة حزمة تطوير البرامج (SDK) للنوافذ المطلوب في واجهات برمجة التطبيقات المتاحة للجميع.
    • أزِل isXXXSupported في مكوّن "تضمين النشاط". (Ie3dae)
  • أدخِل WindowSdkExtensions للإبلاغ عن إصدار الإضافة على الجهاز.
    • أدخِل RequiresWindowSdkExtension لإضافة تعليقات توضيحية حول الحد الأدنى لإصدار الإضافة المطلوب. (I05fd4)
  • يجعل WindowAreaInfo#getCapability غير قابل للحذف. (I17048)

الإصدار 1.2.0-beta01

26 تموز (يوليو) 2023

تم إصدار androidx.window:window-*:1.2.0-beta01. يحتوي الإصدار 1.2.0-beta01 على هذه المراجعات.

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

  • وفِّر واجهات برمجة تطبيقات النوافذ التجريبية للوصول إلى الشاشة الخلفية.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإنشاء FoldingFeature ثابتة الآن.
  • أصبحت واجهات برمجة التطبيقات الاختبارية لإعداد قيم ActivityEmbedding زائفة مستقرة الآن.
  • تُبلغ الدالة WindowLayoutInfoPublisherRule الآن عن القيمة المُلغاة عند الحصول على قيمة من UiContext.
  • تُبلغ WindowInfoTracker عن تجميع بيانات الميزة إلى مَعلمات UiContext.

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

  • وضع علامة "تجريبية" على واجهة برمجة التطبيقات WindowArea للسماح بمواصلة تغييرات واجهة برمجة التطبيقات من أجل إصدار ثابت في الإصدار 1.3 (I857f5)
  • تم تعديل ملفات واجهة برمجة التطبيقات لإضافة تعليقات توضيحية حول إيقاف التوافق (I8e87a، b/287516207)

الإصدار 1.2.0-alpha03

‫21 حزيران (يونيو) 2023

تم إصدار androidx.window:window-*:1.2.0-alpha03. يحتوي الإصدار 1.2.0-alpha03 على هذه المراجعات.

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

  • إزالة واجهات برمجة التطبيقات المتوقّفة نهائيًا من واجهة برمجة التطبيقات
  • أضِف واجهات برمجة تطبيقات لتتوافق مع الشاشات المعروضة في الوقت نفسه.
  • أضِف موقعًا لإيقاف ميزة إلغاء تغيير الحجم القسري.
  • أضِف موقعًا لإيقاف إلغاء الحد الأدنى لنسبة العرض إلى الارتفاع.
  • تحسين ActivityEmbeddingRule لدعم اختبار الوحدة حول "تضمين النشاط"

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

  • إزالة واجهات برمجة التطبيقات المتوقّفة نهائيًا (I18d39)
  • إضافة ميزة العرض المتزامن (Ifcbb0)

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

  • إضافة سمة التوافق لإيقاف خيار إلغاء إعادة الحجم بالقوة (Ie7ab1)
  • لإزالة SESSION_STATE_CONTENT_INVISIBLE من واجهة الإضافات (I6ed19)
  • تحسين ActivityEmbeddingRule لدعم اختبار الوحدة حول تضمين النشاط (I8d6b6)
  • إضافة سمة التوافق مع إيقاف الميزة لتجاوز الحد الأدنى لنسبة العرض إلى الارتفاع (I66390)
  • إزالة واجهات برمجة التطبيقات WindowArea API التي تم إيقافها نهائيًا (Ieb67c)
  • أعِد تسمية خاصية حلقة طلب معلومات الاتجاه إلى PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd)
  • تعديل أسماء الثوابت الخاصة بجلسة منطقة النافذة (I83675)
  • إضافة سمة التوافق مع إيقاف الميزة التي تتجاهل حلقة طلب معلومات الاتجاه عند رصدها (I0a7a2)
  • أضِف WindowAreaComponent#STATUS_ACTIVE للإشارة إلى أنّ الميزة مفعّلة. (I62bc3)
  • إضافة واجهات برمجة تطبيقات RearDisplayPresentationMode (I0401c)
  • إزالة واجهة برمجة التطبيقات الخاصة بلون الخلفية في الإصدار الثابت (I34c3e)
  • إخفاء واجهات برمجة التطبيقات الخاصة بمنطقة النافذة (I39de0)
  • أضِف طرقًا لتجاوز SplitInfo في SplitController. أضِف طرق اختبار لإنشاء اختبار مزدوج لكل من SplitInfo وActivityStack. (Icd69f)
  • اجعل العلامة اختيارية لـ ActivityRule.Builder. (Ib0b44)
  • أزِل RatioSplitType وExpandContainersSplit وHingeSplitType. عمره الآن SplitType.
    • استبدال #splitEqually() و#expandContainers() و#splitByHinge بقيم ثابتة SplitType SPLIT_TYPE_EQUAL وSPLIT_TYPE_EXPAND وSPLIT_TYPE_HINGE
    • أزِل وظيفة ضبط نوع النسخ الاحتياطي لنوع التقسيم المرتبط بالإعلانات المتجاوبة. إذا تعذّر تطبيق نوع تقسيم الشاشة على شكل مفصل بسبب حالة الجهاز أو النافذة الحالية، يتم التراجع إلى تقسيم حاوية المهام الرئيسية بالتساوي. استخدِم SplitController#setSplitAttributesCalculator لتخصيص نوع التقسيم الاحتياطي. (Ifcc59)
  • إيقاف add/removeSplitCallback نهائيًا
    • نقل add/removeSplitCallback إلى SplitControllerCallbackAdapter
    • إضافة دعم Flow للحصول على قائمة SplitInfo (I7f1b6)
  • إضافة قاعدة اختبارية ActivityEmbeddingController (I42e9b)
  • إعادة تسمية ActivityOptionsCompat إلى ActivityEmbeddingOptions (I89301)
  • أضِف splitSupportStatus للإشارة إلى ما إذا كان خيار تضمين النشاط متاحًا. (I10024)
  • أدخِل SplitAttributes.BackgroundColor لتمثيل قيمة DEFAULT بشكل أفضل. توضيح أنّه لا يمكن استخدام لون خلفية متحركة غير شفاف، لذا سيتم التعامل مع أي ألوان غير شفافة على أنّها الإعداد التلقائي، ما يعني استخدام لون خلفية نافذة المظهر الحالي. (Ic6b95)
  • استبدِل alwaysAllow() وalwaysDisallow() بـ ALWAYS_ALLOW وALWAYS_DISALLOW. (I3057b)
  • أضِف واجهات برمجة تطبيقات لكل من SplitRule وSplitAttributes وSplitAttributesCalculator. (I92d23)
  • أضِف TestActivityStack لإنشاء ActivityStack للاختبار
    • أضِف TestSplitInfo لإنشاء SplitInfo للاختبار. (I8e779)
  • إضافة طريقة لإنشاء SplitAttributesCalculatorParams مزيّف حتى يتمكّن المطوّرون من إثبات ملكية SplitAttributesCalculator المخصّصة (Id4a6e)
  • أضِف WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) وWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f).

الإصدار 1.2.0-alpha02

7 حزيران (يونيو) 2023

تم إصدار androidx.window:window-*:1.2.0-alpha02. يحتوي الإصدار 1.2.0-alpha02 على هذه المراجعات.

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

  • تعديل واجهة برمجة التطبيقات الاختبارية لتوفير ثابت لميزات الطي غير المحدّدة
  • سيؤدي إلغاء الإعداد باستخدام WindowLayoutInfoPublishRule إلى إلغاء جميع قيم windowLayoutInfo، بما في ذلك واجهة برمجة التطبيقات المستندة إلى السياق.

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

  • أضِف ثابتًا لميزة الطي في المنتصف غير المحدّدة. (I7530c)

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

  • عدِّل WindowLayoutInfoPublishRule للسماح بعمليات الاستبدال في WindowLayoutInfo المستندة إلى Context. (I2037a)

الإصدار 1.2.0-alpha01

24 أيار (مايو) 2023

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

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

تحسين اختبار واجهات برمجة التطبيقات المتعلّقة بإدراج الأنشطة وWindowLayoutInfoTracker تمت ترقية الإصدار ActivityEmbeddingRule إلى الإصدار الثابت. تمت ترقية الإصدار WindowMetricsCalculatorRule إلى الإصدار الثابت. تم ترقية وظائف المرافق لإنشاء FoldingFeature للاختبار إلى الإصدار الثابت.

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

  • تحسين ActivityEmbeddingRule لدعم اختبار الوحدة حول تضمين الأنشطة (I8d6b6)
  • WindowMetrisCalculatorTestRule هي إصدار ثابت يسمح باستخدام مقاييس العناصر النائبة لاختبارات آلة Java الافتراضية. ننصح باستخدام محاكي للحصول على نتائج دقيقة.
  • تحسين استقرار واجهات برمجة التطبيقات الاختبارية لواجهة WindowLayoutInfo لدعم اختبار آلة Java الافتراضية (Ie036e)
  • أضِف IntRange لقيم ميزة طيّ الاختبار. (I69f7d)

الإصدار 1.1

الإصدار 1.1.0

7 حزيران (يونيو) 2023

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

التغييرات المهمة منذ الإصدار 1.0.0

تضمين الأنشطة

  • تمت إضافة PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED كسمة منطقية لعلامة <application> في بيان التطبيق.
  • تم إيقاف isSplitSupported نهائيًا واستبداله بـ splitSupportStatus لتقديم معلومات أكثر تفصيلاً عن سبب عدم توفّر ميزة التقسيم.
  • تمت إضافة الصفّ المُدمَج SplitController.SplitSupportStatus لتوفير ثوابت الحالة للسمة splitSupportStatus.
  • تم إعادة صياغة SplitController إلى عدة وحدات:
    • وحدة ActivityEmbeddingController لواجهات برمجة التطبيقات ذات الصلة بـ Activity أو ActivityStack
    • تم نقل "isActivityEmbedded" من "SplitController" إلى "ActivityEmbeddingController".
    • وحدة RuleController للعمليات ذات الصلة بـ EmbeddingRule:
    • تمّت إزالة SplitController واجهة برمجة تطبيقات:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • تمّت إضافة RuleController واجهة برمجة تطبيقات:
    • addRule() - تُضيف قاعدة أو تعدّل القاعدة التي تحتوي على العلامة نفسها.
    • removeRule() - لإزالة قاعدة من مجموعة القواعد المسجّلة
    • setRules() - لإنشاء مجموعة من القواعد
    • clearRules() - لإزالة جميع القواعد المسجَّلة
    • parseRules() - لتحليل القواعد من تعريفات قواعد XML
  • تتطلّب جميع الوحدات إعداد سياق باستخدام طريقة #getInstance()، بما في ذلك:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • تمت إضافة فئة EmbeddingAspectRatio لتحديد ثوابت السلوك التي تشبه التعداد ذات الصلة بنسبة عرض إلى ارتفاع الشاشة.
  • تمت إضافة الفئة SplitAttributes لتحديد تنسيق التقسيم.
  • تمت إضافة SplitAttributes دالة حاسبة إلى SplitController لتخصيص تنسيقات التقسيم:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() للتحقّق مما إذا كانت واجهات برمجة التطبيقات SplitAttributesCalculator متوافقة مع الجهاز
  • تمت إضافة حقل EmbeddingRule#tag.
  • تحديثات واجهة برمجة التطبيقات في SplitRule:
    • تمّت إضافة defaultSplitAttributes: لتحديد تنسيق التقسيم التلقائي، ويحلّ محلّ splitRatio وlayoutDirection.
    • تمت إضافة ترجمة سمتَي XML splitRatio وsplitLayoutDirection إلى defaultSplitAttributes.
    • تم تغيير تعريفات الحد الأدنى للسمات لاستخدام وحدات البكسل المستقلة الكثافة (dp) بدلاً من وحدات البكسل.
    • تمت إضافة minHeightDp بالقيمة التلقائية 600dp.
    • تم تغيير minWidth إلى minWidthDp بالقيمة التلقائية 600dp.
    • تم تغيير minSmallestWidth إلى minSmallestWidthDp مع القيمة التلقائية 600dp.
    • تمت إضافة maxAspectRatioInHorizontal بالقيمة التلقائية ALWAYS_ALLOW.
    • تمت إضافة maxAspectRatioInPortrait بالقيمة التلقائية 1.4.
    • تمّ تحديد فئة FinishBehavior متداخلة لاستبدال الثوابت المتعلّقة بسلوك الانتهاء.
    • تم تطبيق تغييرات السمة على فئة Builder المدمجة من SplitPairRule وSplitPlaceholderRule.
  • تم استبدال SplitInfo#getSplitRatio() بـ SplitInfo#getSplitAttributes() لتقديم معلومات إضافية متعلقة بالقسمة.

WindowLayout

  • تمت إضافة ميزة تجريبية تتيح استخدام سياق واجهة المستخدم غير المرتبط بالأنشطة في WindowInfoTracker.
  • تمت إضافة سياق تجريبي لواجهة المستخدم غير المرتبط بالأنشطة إلى WindowMetricsCalculator.

خطوات نقل البيانات

  • لتفعيل تضمين الأنشطة لعرض الأنشطة في الأقسام، يجب أن تضيف التطبيقات السمة PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED إلى علامة البيان <application>: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> يتيح ذلك للنظام تحسين سلوكيات التقسيم لتطبيق معيّن مسبقًا.
  • نسبة SplitInfo
    • تحقَّق مما إذا كان التقسيم الحالي مُجمَّعًا: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • تحقَّق من النسبة الحالية: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • عمليات نقل SplitController:
    • تم تغيير SplitController.getInstance() إلى SplitController.getInstance(Context).
    • تم تغيير SplitController.initialize(Context, @ResId int) إلى RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • تم تغيير SplitController.getInstance().isActivityEmbedded(Activity) إلى ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • تم تغيير SplitController.getInstance().registerRule(rule) إلى RuleController.getInstance(Context).addRule(rule).
    • تم تغيير SplitController.getInstance().unregisterRule(rule) إلى RuleController.getInstance(Context).removeRule(rule).
    • تم تغيير SplitController.getInstance().clearRegisteredRules() إلى RuleController.getInstance(Context).clearRules().
    • تم تغيير SplitController.getInstance().getSplitRules() إلى RuleController.getInstance(Context).getRules().
  • عمليات نقل بيانات المواقع الإلكترونية على SplitRule:
    • يستخدم minWidth وminSmallestWidth الآن وحدات dp بدلاً من وحدات البكسل. يمكن للتطبيقات استخدام الطلب التالي: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) أو ببساطة قسمة minWith بالبكسل على displayMetrics#density.
  • يجب نقل ثوابت سلوك الانتهاء إلى FinishBehavior ثوابت فئة تشبه التعداد:
    • تم تغيير FINISH_NEVER إلى FinishBehavior.NEVER.
    • تم تغيير FINISH_ALWAYS إلى FinishBehavior.ALWAYS.
    • تم تغيير FINISH_ADJACENT إلى FinishBehavior.ADJACENT.
  • يجب نقل اتجاه التنسيق إلى SplitAttributes.LayoutDirection:
    • تم تغيير ltr إلى SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • تم تغيير rtl إلى SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • تم تغيير locale إلى SplitAttributes.LayoutDirection.LOCALE.
    • يجب نقل splitRatio إلى SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder عمليات نقل البيانات:
    • تم تغيير SplitPairRule.Builder(filters, minWidth, minSmallestWidth) إلى kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • تغيير setLayoutDirection(layoutDirection) وsetSplitRatio(ratio) إلى kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • يقبل كلّ من setFinishPrimaryWithSecondary وsetFinishSecondaryWithPrimary الثوابت التي تشبه القائمة FinishBehavior. راجِع "عمليات نقل بيانات SplitRule" للاطّلاع على التفاصيل.
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض الأقسام على الأجهزة التي تعمل في الوضع العمودي.
  • SplitPlaceholder.Builder عمليات نقل البيانات:
    • تحتوي على المَعلمتَين filters وplaceholderIntent فقط. يتم نقل السمات الأخرى إلى أدوات الإعداد. اطّلِع على "عمليات نقل SplitPairRule.Builder" للاطّلاع على التفاصيل.
    • يأخذ setFinishPrimaryWithPlaceholder الثوابت التي تشبه القائمة FinishBehavior. راجِع "عمليات نقل بيانات SplitRule" للاطّلاع على التفاصيل.
    • تم تغيير setLayoutDirection(layoutDirection) وsetSplitRatio(ratio) إلى: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض الأقسام على الأجهزة التي تعمل في الوضع العمودي.

الإصدار 1.1.0-rc01

10 أيار (مايو) 2023

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

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

  • إصدار ActivityEmbedding كواجهة برمجة تطبيقات ثابتة
  • إصلاحات أخطاء متنوّعة

الإصدار 1.1.0-beta02

5 نيسان (أبريل) 2023

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

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

  • إصلاحات داخلية وإزالة الملفات غير الضرورية

الإصدار 1.1.0-beta01

22 آذار (مارس) 2023

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

تضمين الأنشطة

  • تمت إضافة PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED كسمة منطقية لعلامة <application> في بيان التطبيق.
  • تم إيقاف isSplitSupported نهائيًا واستبداله بـ splitSupportStatus لتقديم معلومات أكثر تفصيلاً عن سبب عدم توفّر ميزة التقسيم.
  • تمت إضافة الصفّ المُدمَج SplitController.SplitSupportStatus لتوفير ثوابت الحالة للسمة splitSupportStatus.
  • تم إعادة صياغة SplitController إلى عدة وحدات:
    • وحدة ActivityEmbeddingController لواجهات برمجة التطبيقات ذات الصلة بـ Activity أو ActivityStack
    • تم نقل "isActivityEmbedded" من "SplitController" إلى "ActivityEmbeddingController".
    • وحدة RuleController للعمليات ذات الصلة بـ EmbeddingRule:
    • واجهات برمجة التطبيقات التي تمّت إزالتها:
        SplitController
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • تمت إضافة RuleController واجهات برمجة تطبيقات:
      • addRule() - لإضافة قاعدة أو تعديل القاعدة التي تحتوي على العلامة نفسها
      • removeRule() - لإزالة قاعدة من مجموعة القواعد المسجّلة
      • setRules() - لإنشاء مجموعة من القواعد
      • clearRules() - لإزالة جميع القواعد المسجَّلة
      • ‫`parseRules()‎ - لتحليل القواعد من تعريفات قواعد XML
  • تتطلّب جميع الوحدات إعداد سياق باستخدام طريقة #getInstance()، بما في ذلك:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • تمت إضافة فئة EmbeddingAspectRatio لتحديد ثوابت السلوك التي تشبه التعداد ذات الصلة بنسبة عرض إلى ارتفاع الشاشة.
  • تمت إضافة الفئة SplitAttributes لتحديد تنسيق التقسيم.
  • تمت إضافة SplitAttributes دالة حاسبة إلى SplitController لتخصيص تنسيقات التقسيم:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() للتحقّق مما إذا كانت واجهات برمجة التطبيقات SplitAttributesCalculator متوافقة مع الجهاز
  • تمت إضافة حقل EmbeddingRule#tag.
  • تحديثات واجهة برمجة التطبيقات في SplitRule:
    • تمّت إضافة defaultSplitAttributes: لتحديد تنسيق التقسيم التلقائي، ويحلّ محلّ splitRatio وlayoutDirection.
    • تمت إضافة ترجمة سمتَي XML splitRatio وsplitLayoutDirection إلى defaultSplitAttributes.
    • تم تغيير تعريفات الحد الأدنى للسمات لاستخدام وحدات البكسل المستقلة الكثافة (dp) بدلاً من وحدات البكسل.
    • تمت إضافة minHeightDp بالقيمة التلقائية 600dp.
    • تم تغيير minWidth إلى minWidthDp بالقيمة التلقائية 600dp.
    • تم تغيير minSmallestWidth إلى minSmallestWidthDp مع القيمة التلقائية 600dp.
    • تمت إضافة maxAspectRatioInHorizontal بالقيمة التلقائية ALWAYS_ALLOW.
    • تمت إضافة maxAspectRatioInPortrait بالقيمة التلقائية 1.4.
    • تمّ تحديد فئة FinishBehavior متداخلة لاستبدال الثوابت المتعلّقة بسلوك الانتهاء.
    • تم تطبيق تغييرات السمة على الصفّ المُدمَج Builder من الصفّين SplitPairRule وSplitPlaceholderRule.
  • تم استبدال SplitInfo#getSplitRatio() بـ SplitInfo#getSplitAttributes() لتقديم معلومات إضافية متعلقة بالقسمة.

WindowLayout

  • تمت إضافة ميزة دعم سياق واجهة المستخدم غير المتعلّق بالنشاط إلى WindowInfoTracker.
  • تمت إضافة سياق واجهة مستخدم غير مرتبط بالنشاط إلى WindowMetricsCalculator.

خطوات نقل البيانات

  • لتفعيل تضمين الأنشطة لعرض الأنشطة في الأقسام، يجب أن تضيف التطبيقات السمة PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED إلى علامة البيان <application>: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> يتيح ذلك للنظام تحسين سلوكيات التقسيم لتطبيق معيّن مسبقًا.
  • نسبة SplitInfo
    • تحقَّق مما إذا كان التقسيم الحالي مُجمَّعًا: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • تحقَّق من النسبة الحالية: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController عمليات نقل البيانات:
    • تم تغيير SplitController.getInstance() إلى SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) يتغيّر إلى RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • تم تغيير SplitController.getInstance().isActivityEmbedded(Activity) إلى ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • تم تغيير SplitController.getInstance().registerRule(rule) إلى RuleController.getInstance(Context).addRule(rule).
    • تم تغيير SplitController.getInstance().unregisterRule(rule) إلى RuleController.getInstance(Context).removeRule(rule).
    • تم تغيير SplitController.getInstance().clearRegisteredRules() إلى RuleController.getInstance(Context).clearRules().
    • تم تغيير SplitController.getInstance().getSplitRules() إلى RuleController.getInstance(Context).getRules().
  • عمليات نقل بيانات المواقع الإلكترونية على SplitRule:
    • يستخدم minWidth وminSmallestWidth الآن وحدات dp بدلاً من وحدات البكسل. يمكن للتطبيقات استخدام الطلب التالي: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) أو ببساطة قسمة minWith بالبكسل على displayMetrics#density.
  • يجب نقل ثوابت سلوك الانتهاء إلى FinishBehavior ثوابت فئة تشبه التعداد:
    • تم تغيير FINISH_NEVER إلى FinishBehavior.NEVER.
    • تم تغيير FINISH_ALWAYS إلى FinishBehavior.ALWAYS.
    • تم تغيير FINISH_ADJACENT إلى FinishBehavior.ADJACENT.
  • يجب نقل اتجاه التنسيق إلى SplitAttributes.LayoutDirection:
    • تم تغيير ltr إلى SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • تم تغيير rtl إلى SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • تم تغيير locale إلى SplitAttributes.LayoutDirection.LOCALE.
    • يجب نقل splitRatio إلى SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder عمليات نقل البيانات:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) يتغيّر إلى kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) وsetSplitRatio(ratio) يتغيّران إلى kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • يقبل كلّ من setFinishPrimaryWithSecondary وsetFinishSecondaryWithPrimary الثوابت التي تشبه القائمة FinishBehavior. راجِع "عمليات نقل بيانات SplitRule" للاطّلاع على التفاصيل.
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض الأقسام على الأجهزة التي تعمل في الوضع العمودي.
  • SplitPlaceholder.Builder عمليات نقل البيانات:
    • تحتوي على المَعلمتَين filters وplaceholderIntent فقط. يتم نقل السمات الأخرى إلى أدوات الإعداد. اطّلِع على "عمليات نقل SplitPairRule.Builder" للاطّلاع على التفاصيل.
    • يأخذ setFinishPrimaryWithPlaceholder الثوابت التي تشبه القائمة FinishBehavior. راجِع "عمليات نقل بيانات قواعد تقسيم الأرباح" للاطّلاع على التفاصيل.
    • تم تغيير setLayoutDirection(layoutDirection) وsetSplitRatio(ratio) إلى: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض الأقسام على الأجهزة التي تعمل في الوضع العمودي.

الإصدار 1.1.0-alpha06

22 شباط (فبراير) 2023

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

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

  • عرض إصدار تجريبي من الحصول على WindowLayoutInfo من سياق واجهة المستخدم

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

  • أضِف splitSupportStatus للإشارة إلى ما إذا كان خيار تضمين النشاط متاحًا. (I10024)
  • اجعل واجهة برمجة التطبيقات UI Context WindowLayoutInfo تجريبية. (I58ee0)
  • يعرِض هذا القسم WindowAreaController وواجهات برمجة التطبيقات لتفعيل وضع RearDisplay من أجل نقل النافذة الحالية إلى الشاشة التي تكون محاذية للكاميرا الخلفية. (Iffcbf)
  • عدِّل لون الخلفية التلقائي. (I1ac1b)
  • أضِف مَعلمات SplitAttributes. (I18bdd)
  • أضِف واجهات برمجة تطبيقات لكل من SplitRule وSplitAttributes وSplitAttributesCalculator. (I92d23)
  • تحسين واجهات برمجة التطبيقات في ما يتعلّق maxAspectRatio:
    1. استبدِل alwaysAllow() وalwaysDisallow() بـ ALWAYS_ALLOW وALWAYS_DISALLOW.
    2. تعديل مستندات واجهة برمجة التطبيقات الخاصة بـ @see باستخدام مستندات مستقلة (I3057b)
  • تتم إزالة وظائف الإنشاء التالية من واجهات برمجة التطبيقات العامة لأنّه من المفترض ألا تطلب التطبيقات استدعاؤها.
    • SplitInfo طريقة وضع التصميم
    • ActivityStack المنشئ (Ide534)
  • أصبح SplitRule يأخذ maxAspectRatioInPortrait/Landscape الآن. لا يسمح هذا الخيار بتقسيم الأنشطة إلا عندما تكون نسبة العرض إلى الارتفاع لحدود العنصر الرئيسي أصغر أو مساوية للنسبة maxAspectRatio المطلوبة. (Ia5990)
  • تغيير RuleController#parseRules ليصبح ثابتًا (I785df)
  • تحسين واجهات برمجة التطبيقات المتعلّقة بـ ActivityEmbedding
    1. مواءمة عملية تسمية واجهة برمجة التطبيقات: استخدِم إضافة/إزالة لحالات متعددة:
    2. تم تغيير registerRule إلى addRule
    3. تم تغيير unregisterRule إلى removeRule.
    4. استبدِل getSplitRules بـ getRules لأنّ ActivityRule ليست قاعدة تقسيم.
    5. أضِف RuleController#setRules لضبط مجموعة من القواعد.
    6. استخرِج واجهات برمجة التطبيقات ذات الصلة بالقاعدة من SplitController إلى العنصر الفردي RuleController. وهم:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. استخرِج #isActivityEmbedded من SplitController إلى العنصر الفردي ActivityEmbeddingController. وهم:
    14. isActivityEmbedded
    15. أزِل SplitController#initialize. لضبط القواعد من ملف XML، يُرجى استخدام RuleController#parseRules و#setRules. قبل هذا التغيير: SplitController.initialize(context, R.xml.static_rules) بعد هذا التغيير: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. لم نعُد نفرّق بين القواعد الثابتة وقواعد وقت التشغيل. ومع ذلك، يؤدي استدعاء #clearRules إلى محو جميع القواعد بغض النظر عمّا إذا كانت مسجّلة باستخدام تعريفات قواعد XML ثابتة أو أثناء التشغيل. للحصول على السلوك القديم لـ SplitController#clearRegisteredRules، يُرجى الاتصال بـ RuleController#parseRules باستخدام معرّف موارد XML والاتصال بـ RuleController#setRules لإعادة ضبط القواعد مرة أخرى. قبل هذا التغيير: SplitController.getInstance(context).clearRegisteredRules() بعد هذا التغيير: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • تحسين واجهات برمجة التطبيقات SplitRule:
    1. يجب استخدام الحد الأدنى للأبعاد بالنقاط بدلاً من البكسل لـ SplitRule.
    2. إعادة صياغة SplitRule Builder لجعل الحد الأدنى من السمات اختياريًا (I95f17)
  • تمرير سياق لإعداد SplitController (I42549)
  • تمت إعادة تسمية SplitRule#layoutDir إلى #layoutDirection وSplitRule Builder#setLayoutDir إلى Builder#setLayoutDirection. (I3f6d1)

الإصدار 1.1.0-alpha04

9 تشرين الثاني (نوفمبر) 2022

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

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

  • اعرض طريقة لتحديد ما إذا كان ActivityStack فارغًا لـ ActivityEmbedding.
  • تمت إزالة علامات واجهة برمجة التطبيقات التجريبية من واجهات برمجة تطبيقات ActivityEmbedding.
  • إخفاء أداة إنشاء ActivityRule لأنّ Builder هي الطريقة المفضّلة لإنشاء العنصر
  • أضِف طريقة تجريبية للحصول على WindowInsets في WindowMetrics.
  • عليك تعديل SplitPlaceholderFinishBehavior لمنع إنهاء العنصر النائب. أدّى إنهاء العنصر النائب إلى حدوث بعض السلوكيات المربكة.

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

  • اجعل val isEmpty متاحًا للجميع لاستبدال fun isEmpty.
  • أعِد تسمية أنشطة مَعلمة ActivityStack إلى activitiesInProcess. (Ia5055)
  • أزِل ActivityFilter#matchesClassName وActivityFilter#matchesClassNameOrWildCard لأنّهما مربكان.
  • أضِف ActivityFilter#componentName وActivityFilter#intentAction للسماح للمتصل بالتمييز بين الفلاتر المختلفة (I41f22).
  • إزالة واجهات برمجة تطبيقات @Deprecated من واجهة برمجة التطبيقات التجريبية (I216b3)
  • إزالة @ExperimentalWindowApi لواجهات برمجة التطبيقات الخاصة بإدراج الأنشطة (I69ebe)
  • إخفاء أداة إنشاء ActivityRule، واستخدام أداة Builder بدلاً منها (If4eb6)
  • أضِف واجهات برمجة التطبيقات للتحقّق مما إذا كان النشاط جزءًا من ActivityFilter. (Ia43cf)
  • تعديل ملفات واجهة برمجة التطبيقات لتعكس التغييرات في فئتَي WindowMetrics وWindowMetricsCalculatorCompat (I667fe)
  • تعديل ملف Javadoc الخاص بموقع ActivityEmbedding واسم الفئة (Ia1386)
  • إضافة أسماء علامات المواقع ActivityEmbedding لاستخدامها في ملف AndroidManifest.xml (Id1ad4)
  • تمت إضافة واجهتَي برمجة التطبيقات SplitPlaceholderFinishBehavior وSplitPlaceholderRule.finishPrimaryWithPlaceholder الجديدتَين، وهذا يحلّ محلّ واجهة برمجة التطبيقات SplitPlaceholderRule.finishPrimaryWithSecondary الحالية التي تحدّد وقت انتهاء الأنشطة النائبة وطريقة تصرف الأنشطة المرتبطة في ميزة "تضمين الأنشطة". (I64647)

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

  • يعرِض هذا القسم WindowAreaController وواجهات برمجة التطبيقات لتفعيل وضع RearDisplay من أجل نقل النافذة الحالية إلى الشاشة التي تكون محاذية للكاميرا الخلفية. (I388ab)

الإصدار 1.1.0-alpha03

27 تموز (يوليو) 2022

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

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

  • عدِّل القيم التلقائية لقواعد التضمين.

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

  • عدِّل القيم التلقائية لخصائص قاعدة التضمين. (Ic4d35)

الإصدار 1.1.0-alpha02

11 أيار (مايو) 2022

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

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

  • طرح مكتبات المحوِّل لتتوافق مع Java وRxJava

الإصدار 1.1.0-alpha01

11 أيار (مايو) 2022

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

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

  • إصدار محولات متوافقة مع java وRxJava

الإصدار 1.1.0-alpha01

20 نيسان (أبريل) 2022

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

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

  • إصلاح خطأ يؤدي إلى إيقاف ميزات الطي عند تشغيل التطبيق في الخلفية
  • توسيع نطاق واجهة برمجة التطبيقات التجريبية ActivityEmbedding API

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

  • واجهة برمجة تطبيقات عامة للتحقّق مما إذا كان يتم تضمين نشاط (I39eb7)

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

  • إضافة واجهات برمجة تطبيقات لتخصيص سلوك الانتهاء للحاويات في عمليات تقسيم الأنشطة (I1a1e4)
  • تمت إضافة خيار إعداد جديد لقواعد تقسيم النشاط. (Iec6af)

الإصدار 1.0

الإصدار 1.0.0

26 كانون الثاني (يناير) 2022

تم إصدار androidx.window:window-*:1.0.0. يحتوي الإصدار 1.0.0 على عمليات الربط هذه.

الميزات الرئيسية في الإصدار 1.0.0

  • التوافق مع الهواتف القابلة للطي من طراز WindowInfoTracker وFoldingFeature WindowMetricsCalculator للمساعدة في احتساب WindowMetrics الحالية

الإصدار 1.0.0-rc01

15 كانون الأول (ديسمبر) 2021

تم إصدار androidx.window:window-*:1.0.0-rc01. يحتوي الإصدار 1.0.0-rc01 على هذه المراجعات.

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

  • إتاحة استخدام الهواتف القابلة للطي من خلال WindowInfoTracker
  • أضِف طرقًا لاحتساب الحد الأقصى والحد الأدنى لقيمة WindowMetrics.
  • أضِف واجهات برمجة تطبيقات اختبارية داعمة.

الإصدار 1.0.0-beta04

17 تشرين الثاني (نوفمبر) 2021

تم إصدار androidx.window:window-*:1.0.0-beta04. يحتوي الإصدار 1.0.0-beta04 على هذه المراجعات.

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

  • أعِد تسمية WindowInfoRepository إلى WindowInfoTracker.
  • اجعل Activity عنصرًا تابعًا لطريقة صريحة في WindowInfoTracker.
  • أضِف TestRule بسيطًا لـ WindowMetricsCalculator لدعم المطوّرين الذين يستخدمون Robolectric.

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

  • استخراج الإضافات (I25a5f)
  • إضافة isEmpty في ActivityStack (I5a4e6)
  • أعِد تسمية WindowInfoRepository إلى WindowInfoTracker.
    • عدِّل تبعيات java/rxjava/testing لتتطابق. (I0da63)
  • أضِف قاعدة اختبار لواحدة من أدوات WindowMetricsCalculator البسيطة. (Ibacdb)

الإصدار 1.0.0-beta03

27 تشرين الأول (أكتوبر) 2021

تم إصدار androidx.window:window-*:1.0.0-beta03. يحتوي الإصدار 1.0.0-beta03 على هذه المراجعات.

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

  • إضافة واجهات برمجة التطبيقات التجريبية لإدراج الأنشطة يسمح إصدار التنسيق الأولي هذا بعرض نشاطَين جنبًا إلى جنب.

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

  • تمت إزالة currentWindowMetrics API لأنّنا لا يمكننا توفيرها بدقة. يُرجى استخدام WindowMetricsCalculator بدلاً من ذلك (Icda5f).
  • تم تعديل واجهة برمجة التطبيقات الخاصة بالإضافات. (Ica92b)
  • تمت إضافة واجهة لميزة جديدة تتيح تضمين الأنشطة وعرضها جنبًا إلى جنب ضمن نافذة مهمة الرئيسية. (I5711d)
  • تم إخفاء وظائف الإنشاء لـ WindowMetrics وWindowLayoutInfo، يُرجى استخدام واجهات برمجة تطبيقات الاختبار بدلاً من ذلك. (I5a1b5)
  • أضِف واجهة برمجة تطبيقات لإنشاء عناصر WindowLayoutInfo وهمية. (I4a2fd)

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

الإصدار 1.0.0-beta02

1 أيلول (سبتمبر) 2021

تم إصدار androidx.window:window-*:1.0.0-beta02. يحتوي الإصدار 1.0.0-beta02 على هذه المراجعات.

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

  • أضِف تعليقًا توضيحيًا تجريبيًا لإضافة تعليقات توضيحية إلى واجهات برمجة التطبيقات التجريبية. (I9f1b6)
  • أضِف طريقة اختبار لإنشاء FoldingFeature اختباري يقبل Rect. سيسهّل ذلك الاختبار عند استخدام Robolectric بدلاً من Activity فعلي. (Id1cca)

الإصدار 1.0.0-beta01

18 آب (أغسطس) 2021

تم إصدار androidx.window:window-*:1.0.0-beta01. يحتوي الإصدار 1.0.0-beta01 على هذه المراجعات.

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

  • تمت إزالة الثوابت القديمة وتحويل FoldingFeature إلى واجهة.

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

  • أزِل الثوابت القديمة واجعل FoldFeature واجهة. (I9a2d5)

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

  • تم ترقية المكتبات التي تعتمد على مكتبة Test Core إلى الإصدار 1.4.0، وستتوافق الآن مع الإصدار S من منصة Android. (I88b72، b/189353863)

الإصدار 1.0.0-alpha10

4 آب (أغسطس) 2021

تم إصدار androidx.window:window-*:1.0.0-alpha10. يحتوي الإصدار 1.0.0-alpha10 على هذه المراجعات.

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

  • عليك إعادة تسمية WindowInfoRepo إلى WindowInfoRepository وتعديل الفئات أو الملفات المقابلة.
  • حوِّل مقاييس النوافذ الحالية إلى مسار في WindowInfoRepository لأنّ القيمة تتغيّر بمرور الوقت.
  • إعادة تسمية WindowInfoRepoJavaAdapter إلى WindowInfoRepoCallbackAdapter
  • إضافة طريقة مساعدة لإنشاء كائنات FoldingFeature اختبارية
  • عدِّل الحِزم لتجميع الفئات استنادًا إلى الميزة التي توفّرها.

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

  • إعادة تسمية ActivityExt إلى ActivityExtensions تغيير من Repo إلى Repository (I61a16)
  • تعديل الحِزم للفصول (I23ae2)
  • إزالة WindowMetrics من WindowInfoRepo (I24663)
  • أزِل WindowManager واستخدِم WindowInfoRepo
    • اجعل WindowBackend داخليًا. (I06d9a)
  • حوِّل مقاييس الفترة إلى "مسار الإحالة الناجحة".
    • إعادة تسمية محوِّل Java إلى WindowInfoRepoCallbackAdapter
    • أزِل callbackFlow حتى لا يتم استخدام أي واجهات برمجة تطبيقات تجريبية. (Ia4d15)
  • أضِف طريقة مساعدة لإنشاء ميزات عرض الاختبار.
    • التغيير من occlusionMode إلى occlusionType (If4cff)

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

  • إصلاح خطأ Proguard الذي كان يحدث عند إزالة المكتبة الأساسية
  • إصلاح خطأ عدم إرسال WindowLayoutInfo إلى المشتركين الإضافية
  • إصلاح خطأ تعذُّر بدء تحديثات ميزة الطي عند إجراء تغييرات على الإعدادات

الإصدار 1.0.0-alpha09

30 حزيران (يونيو) 2021

تم إصدار androidx.window:window-*:1.0.0-alpha09. يحتوي الإصدار 1.0.0-alpha09 على هذه المراجعات.

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

  • غيِّر من الثوابت الصحيحة إلى قوائم أرقام غير محدودة.
  • أضِف أداة اختبار لإنشاء ميزات طي الاختبار.

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

  • أضِف طريقة مساعدة لإنشاء ميزات عرض الاختبار. (I3cf54)
    • تغيير النسبة المئوية لطرح الإصدار من occlusionMode إلى occlusionType

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

  • بث القيمة الأولية عند إضافة مستخدِمين متعدّدين لمصادر البيانات

الإصدار 1.0.0-alpha08

16 حزيران (يونيو) 2021

تم إصدار androidx.window:window-*:1.0.0-alpha08. يحتوي الإصدار 1.0.0-alpha08 على هذه المراجعات.

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

  • تم إصدار عنصر اختبار لتسهيل الاختبار عند استخدام WindowInfoRepository. استخدِم WindowInfoRepository للحصول على معلومات عن DisplayFeatures وWindowMetrics. (I57f66، Ida620)

الإصدار 1.0.0-alpha07

2 حزيران (يونيو) 2021

تم إصدار androidx.window:window-*:1.0.0-alpha07. يحتوي الإصدار 1.0.0-alpha07 على هذه المراجعات.

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

  • نقل مكتبة النوافذ الأساسية إلى Kotlin سيتم استخدام الدوال المتزامنة ودوال التعليق لعرض البيانات غير المتزامنة من الآن فصاعدًا.
  • أضِف WindowInfoRepo كنقطة التفاعل الرئيسية للحصول على WindowMetrics وبث WindowLayoutInfo.
  • عنصر window-java جديد لعرض واجهات برمجة تطبيقات متوافقة مع Java لتسجيل عمليات تسجيل الإحالات الخلفية وإلغاء تسجيلها
  • عناصر window-rxjava2 وwindow-rxjava3 جديدة لعرض واجهات برمجة التطبيقات المتوافقة مع RxJava

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

  • أضِف WindowServices لتوفير التبعيات بشكلٍ موحّد.
    • إضافة واجهة برمجة تطبيقات مستندة إلى coroutine لاستخدام معلومات تنسيق النافذة (Iab70f)
  • نقل مكتبة "مدير النوافذ" الأساسية إلى Kotlin (Icca34)

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

  • أضِف فئة بيانات جديدة لتمثيل حدود العناصر. (I6dcd1)

الإصدار 1.0.0-alpha06

5 أيار (مايو) 2021

تم إصدار androidx.window:window:1.0.0-alpha06. يحتوي الإصدار 1.0.0-alpha06 على هذه المراجعات.

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

  • لقد بدأنا عملية نقل البيانات إلى Kotlin وسننتهي منها في الإصدار التالي.
  • تمت إزالة DeviceState من واجهة برمجة التطبيقات المتاحة للجميع، لذا يُرجى استخدام FoldingFeature بدلاً منها.
  • لقد أزلنا STATE_FLIPPED من حالات FoldingFeature لأنّها غير متوافقة مع أي حالة استخدام في الوقت الحالي.
  • وأزلنا أيضًا واجهات برمجة تطبيقات أخرى متوقّفة نهائيًا.

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

  • إضافة Kotlin كتبعية
    • نقل المكتبة الأساسية إلى Kotlin (Idd995)
  • تمت إزالة DisplayFeature صانع المحتوى. (I61fa4)
  • تمت إزالة DeviceState من واجهة برمجة التطبيقات المتاحة للجميع، ويمكنك استخدام FoldingFeature بدلاً منها. (Id6079)
  • إزالة طلب إعادة الاتصال بحالة الجهاز من الإضافات (I5ea83)
  • أزِل STATE_FLIPPED من FoldingFeature. (I9c4e1)
  • أزِل طرق التسجيل التي تم إيقافها نهائيًا. (Ib381b)

الإصدار 1.0.0-alpha05

24 آذار (مارس) 2021

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

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

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

نحن بصدد إزالة طرق القراءة المتزامنة من WindowManager. إنّ طرق القراءة المتزامنة معرّضة للخطأ لأنّ هناك شرط تسابق ضمنيًا. سجِّل المستمعين وعمليات ردّ الاتصال لتلقّي آخر المعلومات عن WindowLayoutInfo.

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

  • إضافة طرق ملائمة للعمل مع FoldingFeatures (Ie733f)
  • إزالة طرق القراءة المتزامنة من WindowManager (I96fd4)

الإصدار 1.0.0-alpha04

10 آذار (مارس) 2021

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

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

  • إصلاح خطأ يؤدي إلى عدم إصدار WindowLayoutInfo في حال عدم تنفيذ الشركة المصنّعة للجهاز الآن نُرسل عنصر WIndowLayoutInfo فارغًا.
  • إصلاح خلل تعذُّر تحديث الحالة بشكل صحيح في حال تغيّرت حالة المفصل أثناء تشغيل التطبيق في الخلفية من المفترض أن تكون الحالة متّسقة الآن.
  • تعديل ملفات Proguard لتجاهل التحذيرات الواردة من تبعيات وقت التشغيل

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

  • إخراج قيمة فارغة عند عدم توفّر مكتبة المصنّع الأصلي للجهاز (Ide935)

الإصدار 1.0.0-alpha03

18 شباط (فبراير) 2021

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

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

  • أرسِل قيمة فارغة لـ WindowLayoutInfo عندما يكون تطبيق المصنّع الأصلي للجهاز فارغًا. من المفترض أن يسهّل ذلك استخدام المكتبة على المزيد من الأجهزة. بما أنّ واجهات برمجة التطبيقات غير متزامنة، لا يزال من المستحسن أن تكتب التطبيقات بعض الرموز البرمجية الوقائية وتُصدر قيمة تلقائية بعد انتهاء مهلة. لا نقدّم أي ضمانات بشأن عمليات التنفيذ التي يجريها المصنّعون الأصليون للأجهزة، وقد يتأخّر ظهور القيمة الأولية.

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

  • إخراج قيمة فارغة عند عدم توفّر مكتبة المصنّع الأصلي للجهاز (Ide935)

الإصدار 1.0.0-alpha02

27 كانون الثاني (يناير) 2021

تم إصدار androidx.window:window:1.0.0-alpha02. يحتوي الإصدار 1.0.0-alpha02 على هذه المراجعات.

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

  • لقد أوقفنا نهائيًا بعض واجهات برمجة التطبيقات للمساعدة في تبسيط واجهة برمجة التطبيقات والحدّ من الأخطاء. وتشمل بعض الأمثلة البارزة إزالة عمليات القراءة المتزامنة من WindowManager وإيقاف DeviceState نهائيًا. يمكن أن تؤدي عمليات القراءة المتزامنة إلى حالات تداخل وظهور واجهة مستخدم غير صحيحة.

  • لقد حوّلنا DisplayFeature إلى واجهة ستنفّذها الميزات الأخرى من الآن فصاعدًا. الميزة الأولى هي FoldingFeature التي تمثّل الآن شاشة قابلة للطي أو مفصلاً. يحتوي هذا أيضًا على حالة المفصل الذي يحل محل DeviceState.

  • تم طرح WindowMetrics في Android 11 لتزويد المطوّرين بطريقة بسيطة للبحث عن مقاييس عن نافذة، مثل موضع النافذة وحجمها على الشاشة وأيّ عناصر مضمّنة في النظام. لقد أدرجنا واجهة برمجة التطبيقات في هذا الإصدار حتى يتمكّن المطوّرون من الاستفادة من WindowMetrics ومواصلة توفير التوافق مع إصدارات Android القديمة. يمكن الحصول على WindowMetrics من خلال واجهتَي برمجة التطبيقات WindowManager#getCurrentWindowMetrics() وWindowManager#getMaximumWindowMetrics().

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

  • إيقاف واجهات برمجة التطبيقات نهائيًا التي ستتم إزالتها في الإصدار التجريبي التالي (Ib7cc4)
  • تعديلات على ExtensionInterface لقبول إشارات صريحة إلى "النشاط" (I07ded)
  • تعريف واجهة برمجة التطبيقات WindowMetrics API (I3ccee)
  • إزالة طرق القراءة المتزامنة من WindowManager (I69983)
  • اجعل حزمة ExtensionWindowBackend محمية. (Ied208)

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

  • تعديل واجهات برمجة تطبيقات ExtensionInterface لقبول السياقات المرئية (I8e827)

المساهمة الخارجية

  • دمج DeviceState وWindowLayoutInfo لتسهيل الوصول إلى البيانات (Id34f4)

الإصدار 1.0.0-alpha01

27 شباط (فبراير) 2020

تم طرح الإصدارَين androidx.window:window:1.0.0-alpha01 وandroidx.window:window-extensions:1.0.0-alpha01. يحتوي الإصدار 1.0.0-alpha01 على هذه المراجعات. هذا هو الإصدار الأول من مكتبة Window Manager.

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

  • DisplayFeature: ترصد واجهة برمجة التطبيقات الجديدة هذه الانقطاعات في مساحات شاشة الالتفاف المسطحة المستمرة، مثل المفاصل أو الطيات.
  • DeviceState: تقدّم واجهة برمجة التطبيقات الجديدة هذه الوضع الحالي للهاتف من قائمة بالأوضاع المحدّدة (على سبيل المثال، CLOSED وOPENED وHALF_OPENED وما إلى ذلك).