مدير النوافذ

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

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

لإضافة تبعية على 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-alpha01

7 أغسطس 2024

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

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

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

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

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

    • واجهة برمجة تطبيقات لتحديد ما إذا كان الجهاز متوافقًا مع وضع TableTop للأجهزة القابلة للطي إضافة 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#invalidateTopvisibleAttributes).
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • إضافة واجهات برمجة التطبيقات للإصدار 1.4 (I56774)

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

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

الإصدار 1.3.0-rc01

14 مايو 2024

في WindowManager، يتوافق الإصدار Jetpack 1.3 مع لغة Kotlin المتعددة الأنظمة الأساسية مع ميزات 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 المتوقّفة نهائيًا (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 على عمليات التنفيذ هذه.

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

  • يجب تعديل واجهة Test API للحصول على قيمة ثابتة لميزات قابلة للطي غير محدَّدة.
  • سيؤدي إلغاء 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 واجهات برمجة تطبيقات:
    • 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 لاستبدال ثوابت سلوك النهاية.
    • تم تطبيق تغييرات السمة على الفئة المدمجة في "أداة إنشاء Google" لـ SplitPairRule وSplitPlaceholderRule.
  • تم استبدال SplitInfo#getSplitRatio() بـ SplitInfo#getSplitAttributes() لتقديم معلومات إضافية متعلقة بالتقسيم.

تخطيط النافذة

  • تمت إضافة توفير سياق واجهة المستخدم التجريبية غير النشطة إلى 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. }
  • عمليات نقل بيانات SegmentController:
    • تغيير في 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. يمكنك الاطّلاع على مقالة "عمليات نقل بيانات splitRule" للحصول على التفاصيل.
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض التقسيمات على الأجهزة في الوضع العمودي.
  • SplitPlaceholder.Builder عمليات نقل:
    • لا تتضمّن سوى المعلمتَين filters وplaceholderIntent. وتنتقل السمات الأخرى إلى أدوات الضبط. يمكنك الاطّلاع على "عمليات نقل بيانات SegmentPairRule.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() للتحقّق مما إذا كانت واجهات برمجة التطبيقات SegmentAttributesCalculator متوافقة مع الجهاز
  • تمت إضافة حقل 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() لتقديم معلومات إضافية متعلقة بالتقسيم.

تخطيط النافذة

  • تمت إضافة سياق واجهة المستخدم غير النشطة إلى 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. يمكنك الاطّلاع على مقالة "عمليات نقل بيانات splitRule" للحصول على التفاصيل.
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض التقسيمات على الأجهزة في الوضع العمودي.
  • SplitPlaceholder.Builder عمليات نقل:
    • لا تتضمّن سوى المعلمتَين filters وplaceholderIntent. وتنتقل السمات الأخرى إلى أدوات الضبط. يمكنك الاطّلاع على "عمليات نقل بيانات SegmentPairRule.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-alpha06

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

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

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

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

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

  • يمكنك إضافة splitSupportStatus للإشارة إلى ما إذا كانت ميزة "تضمين الأنشطة" متاحة. (I10024)
  • جعل واجهة UI Context WindowLayoutInfo API تجريبية (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)
  • تحسين واجهات برمجة تطبيقات SegmentRule:
    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)
  • تعديل خاصية 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
  • جعل النشاط تبعية صريحة للطريقة لـ WindowInfoTracker.
  • يمكنك إضافة قاعدة TestRule البسيطة لآلة WindowMetricsCalculator لدعم مطوِّري البرامج الذين يستخدمون Robolectric.

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

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

الإصدار 1.0.0-beta03

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

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

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

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

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

  • تمت إزالة واجهة برمجة التطبيقات currentWindowMetrics لأنّه لا يمكننا تقديمها بدقة. يُرجى استخدام 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)
  • أضِف طريقة اختبار لإنشاء ميزة الطي الاختبارية التي تقبل شكل مستطيل. وسيؤدي ذلك إلى تسهيل اختبارها عند استخدام 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 وسيعمل الآن على نظام Android الأساسي الإصدار S. (I88b72، b/189353863)

الإصدار 1.0.0-alpha10

4 آب (أغسطس) 2021

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

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

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

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

  • إعادة تسمية ActivityExt إلى ActivityExtensions التغيير من مستودع إلى مستودع (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" من ميزة "الطيّ" (I9c4e1)
  • إزالة طرق التسجيل المتوقّفة نهائيًا (Ib381b)

الإصدار 1.0.0-alpha05

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

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

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

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

نعمل على إزالة طرق القراءة المتزامنة من 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#getMaxWindowMetrics().

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

  • إيقاف واجهات برمجة التطبيقات التي ستتم إزالتها في الإصدار الأولي التالي (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 على عمليات التنفيذ هذه. هذا هو الإصدار الأول من مكتبة Window Manager.

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

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