مدير النوافذ

تسمح مكتبة Jetpack WindowManager لمطوّري التطبيقات بإتاحة عوامل نماذج الأجهزة الجديدة وبيئات النوافذ المتعددة. توفّر المكتبة مساحة مشتركة لواجهة برمجة التطبيقات للإصدار 14 والإصدارات الأحدث من واجهة برمجة التطبيقات. يستهدف الإصدار الأولي الأجهزة القابلة للطي، بينما يمتد نطاق الإصدارات المستقبلية ليشمل المزيد من أنواع الشاشات وميزات النوافذ.
التعديل الأخير الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
7 شباط (فبراير) 2024 1.2.0 - - 1.3.0-alpha02

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

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

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

رائع

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

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

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

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

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

Kotlin

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

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

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

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

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

ملاحظات

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

إنشاء عدد جديد

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

الإصدار 1.3

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

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

  • اعرِض واجهات برمجة التطبيقات التجريبية للنوافذ للوصول إلى الشاشة الخلفية.
  • أصبح اختبار واجهات برمجة التطبيقات (API) الخاصة بإنشاء 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

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

الإصدار 1.2.0-rc01

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

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

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

  • اعرِض واجهات برمجة التطبيقات التجريبية للنوافذ للوصول إلى الشاشة الخلفية.
  • أصبح اختبار واجهات برمجة التطبيقات (API) الخاصة بإنشاء 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 على هذه الالتزامات.

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

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

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

  • وضع علامة على واجهة برمجة التطبيقات WindowArea API على أنّها تجريبية للسماح بمواصلة إجراء التغييرات على واجهة برمجة التطبيقات للحصول على إصدار ثابت في الإصدار 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 لإتاحة عمليات الإلغاء على أجهزة Context المستنِدة إلى WindowLayoutInfo. (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 ثابتة، ما يسمح بمقاييس التأهُّل لاختبارات JVM. ننصح باستخدام المحاكي للحصول على نتائج دقيقة.
  • تثبيت واجهات برمجة تطبيقات الاختبار لـ WindowLayoutInfo لإتاحة اختبار JVM (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 APIs:
    • 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 بقيمة تلقائية 600 بكسل مستقل الكثافة.
    • تم تغيير minWidth إلى minWidthDp بالقيمة التلقائية 600 بكسل مستقل الكثافة.
    • تم تغيير minSmallestWidth إلى minSmallestWidthDp بالقيمة التلقائية 600 بكسل مستقل الكثافة.
    • تمت إضافة maxAspectRatioInHorizontal بالقيمة التلقائية ALWAYS_ALLOW.
    • تمت إضافة maxAspectRatioInPortrait بالقيمة التلقائية 1.4.
    • تم تحديد فئة FinishBehavior مدمجة لاستبدال ثوابت سلوك النهاية.
    • تم تطبيق تغييرات الموقع على الفئة المدمجة 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.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 الآن وحدات بكسل مستقلة الكثافة بدلاً من وحدات البكسل. يمكن للتطبيقات استخدام الطلب التالي: 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. راجِع "عمليات نقل قاعدة سبليت" للحصول على التفاصيل.
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض التقسيمات على الأجهزة العمودية.
  • عمليات نقل بيانات SplitPlaceholder.Builder:
    • تتضمن فقط المعلمتين filters وplaceholderIntent. تنتقل الخصائص الأخرى إلى مجموعات سترز. يمكنك الاطّلاع على "عمليات نقل بيانات splitDoubleRule.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-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() للتحقّق ممّا إذا كانت واجهات برمجة التطبيقات SplitAttributesScales متاحة على الجهاز
  • تمت إضافة حقل EmbeddingRule#tag.
  • تحديثات واجهات برمجة التطبيقات في SplitRule:
    • تمت إضافة defaultSplitAttributes: لتحديد التنسيق التلقائي لتقسيم الصورة، ويحل محل splitRatio وlayoutDirection.
    • تمت إضافة ترجمة لسمات XML splitRatio وsplitLayoutDirection إلى defaultSplitAttributes.
    • تم تغيير الحد الأدنى لتعريفات السمات لاستخدام وحدات بكسل مستقلة الكثافة (dp) بدلاً من وحدات البكسل.
    • تمت إضافة minHeightDp بقيمة تلقائية 600 بكسل مستقل الكثافة.
    • تم تغيير minWidth إلى minWidthDp بالقيمة التلقائية 600 بكسل مستقل الكثافة.
    • تم تغيير minSmallestWidth إلى minSmallestWidthDp بالقيمة التلقائية 600 بكسل مستقل الكثافة.
    • تمت إضافة 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 الآن وحدات بكسل مستقلة الكثافة بدلاً من وحدات البكسل. يمكن للتطبيقات استخدام الطلب التالي: 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. راجِع "عمليات نقل قاعدة سبليت" للحصول على التفاصيل.
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض التقسيمات على الأجهزة العمودية.
  • عمليات نقل بيانات SplitPlaceholder.Builder:
    • تتضمن فقط المعلمتين filters وplaceholderIntent. تنتقل الخصائص الأخرى إلى مجموعات سترز. يمكنك الاطّلاع على "عمليات نقل بيانات splitDoubleRule.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)
  • جعل واجهة برمجة التطبيقات 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)
  • تحسين واجهات برمجة التطبيقات المتعلقة بميزة "تضمين النشاط"
    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)
  • تحسين واجهات برمجة التطبيقات SplitRules:
    1. يجب استخدام الحد الأدنى للأبعاد في DP بدلاً من وحدات البكسل في SplitRule.
    2. إعادة الهيكلة في أداة إنشاء SplitRule لاحتساب الحد الأدنى للأبعاد اختياريًا. (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 بشكل علني لاستبدال isEmpty الممتعة.
  • أعِد تسمية أنشطة مَعلمات ActivityStack لتصبح activitiesInProcess. (Ia5055)
  • عليك إزالة ActivityFilter#matchesClassName وActivityFilter#matchesClassNameOrWildCard لأنّها مُربكة.
  • إضافة ActivityFilter#componentName abd ActivityFilter#intentAction للسماح للمتصل بتمييز الفلاتر المختلفة (I41f22)
  • إزالة واجهات برمجة التطبيقات @Deprecated من واجهة برمجة التطبيقات التجريبية (I216b3)
  • إزالة @ExperimentalWindowApi لواجهات برمجة التطبيقات لتضمين الأنشطة (I69ebe)
  • إخفاء دالة إنشاء ActivityRule، استخدِم أداة الإنشاء بدلاً من ذلك. (If4eb6)
  • يمكنك إضافة واجهات برمجة تطبيقات للتحقّق مما إذا كان النشاط جزءًا من ActivityFilter. (Ia43cf)
  • تعديل ملفات واجهة برمجة التطبيقات لتعكس التغييرات في WindowMetrics وWindowMetricsCalculatorCompat صف (I667fe)
  • تعديل JavaScript لخاصية "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 على هذه الالتزامات.

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

  • إصدار المحوّلات لدعم جافا و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.
  • اجعل "النشاط" تبعية واضحة لـ WindowInfoTracker.
  • أضِف قاعدة اختبارية بسيطة لـ WindowMetricsحاسبة مطوّري البرامج الذين يستخدمون Robolectric.

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

  • استخراج الإضافات (I25a5f)
  • add isإفراغ في ActivityStack (I5a4e6)
  • إعادة تسمية WindowInfoRepository إلى WindowInfoTracker.
    • قم بتحديث تبعيات java/rxjava/testing لمطابقتها. (I0da63)
  • أضف قاعدة اختبار لـ WindowMetricsحاسبة بسيطة. (Ibacdb)

الإصدار 1.0.0-beta03

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

تم طرح "androidx.window:window-*:1.0.0-beta03". يتضمّن الإصدار 1.0.0-beta03 هذه الالتزامات.

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

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

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

  • وقد تمت إزالة واجهة برمجة التطبيقات الحاليةWindowMetrics لأننا لا يمكننا تقديمها بدقة. يُرجى استخدام واجهة برمجة التطبيقات WindowMetricsScale بدلاً من ذلك (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 اختبارية تقبل المستطيل. وسيسهل ذلك إجراء الاختبارات عند استخدام Robolectric بدلاً من النشاط الفعلي. (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 إلى "إضافات النشاط" من "المستودع" إلى "المستودع". (I61a16)
  • تحديث الحِزم للصفوف (I23ae2)
  • إزالة WindowMetrics من WindowInfoRepo (I24663)
  • إزالة WindowManager واستخدام WindowInfoRepo
    • جعل WindowBackend داخليًا. (I06d9a)
  • تحويل مقاييس الفترات إلى مسار
    • إعادة تسمية محوّل جافا إلى 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 لتوفير التبعيات بشكل موحّد.
    • يمكنك إضافة واجهة برمجة تطبيقات مستندة إلى الكوروتين لاستهلاك معلومات تنسيق النوافذ. (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.

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

  • إضافة طرق ملائمة للعمل باستخدام ميزات FoldingFeature (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#get تسوقالحد الأقصى وإطاري للمقاييس() .

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

  • إيقاف واجهات برمجة التطبيقات التي ستتم إزالتها في الإصدار الأولي التالي (Ib7cc4)
  • تحديثات ExtensionInterface لقبول مراجع النشاط الصريحة. (I07ded)
  • مقدمة من واجهة برمجة التطبيقات WindowMetrics. (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 على هذه الالتزامات. وهذا هو الإصدار الأول من مكتبة "مدير النوافذ".

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

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