WindowManager

تتيح مكتبة Jetpack WindowManager لمطوّري التطبيقات إمكانية توفير الدعم لأشكال الأجهزة الجديدة وبيئات النوافذ المتعددة. يستهدف الإصدار الأوّلي الأجهزة القابلة للطي، ولكن ستتوفّر الإصدارات المستقبلية على المزيد من أنواع الشاشات وميزات النوافذ.
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأولي
‫22 أبريل 2026 1.5.1 - - 1.6.0-alpha03

تحديد الاعتماديات

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

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

Groovy

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

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

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

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

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

Kotlin

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

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

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

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

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

الملاحظات

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

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

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

الإصدار 1.6

الإصدار ‎1.6.0-alpha03

‫22 أبريل 2026

تم طرح androidx.window:window-*:1.6.0-alpha03. يتضمّن الإصدار 1.6.0-alpha03 هذه التعديلات.

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

  • إضافة واجهات برمجة تطبيقات للتحكّم في حالة التفاعل (I98a09، b/489793703)
  • تمت إعادة تسمية transferActivityToWindowArea إلى transferToWindowArea لتوضيح السلوك عند تفعيل الميزة. تؤدي هذه العملية أيضًا إلى إزالة السلوك المستند إلى الجلسة لهذه الطريقة لأنّها عملية تدوم لفترة أطول من العملية التي تطلبها. (Ie7d6f، b/271644150، b/273807246، b/272064992، b/473870239)
  • إضافة طريقة آمنة للحصول على WindowMetrics (I2adf8، b/449386176)
  • تعديل طرق العرض في إضافات WM لوضع التفاعل لزيادة الوضوح (I219a4، b/454438323)
  • أضِف طرقًا مساعِدة لإنشاء WindowSizeClassSets في شكل شبكة. (I4d623، b/444174274)
  • أضِف واجهة برمجة التطبيقات للحصول على "وضع الجذب". (I9fef2، b/423990404)
  • أضِف أدوات معالجة تستند إلى عمليات معاودة الاتصال مباشرةً إلى WindowLayoutInfo وأوقِف WindowInfoTrackerCallbackAdapter نهائيًا. (I1ff17، b/423990404)
  • إيقاف الدالة الإنشائية WindowLayoutInfo نهائيًا في الإضافات (I6ab65، b/423990404)
  • إضافة إمكانية استخدام الإضافات في وضع إعداد التقارير عن التفاعل (I66211، b/423990404)

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

  • تم تعديل Compose compileSdk إلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب توفُّر الإصدار 9.2.0 أو إصدار أحدث من "مكوّن Android الإضافي" عند استخدام Compose. (Id45cd، b/413674743)

الإصدار 1.6.0-alpha01

‫19 نوفمبر 2025

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

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

  • أضِف طرقًا مساعِدة لإنشاء WindowSizeClassSets في شكل شبكة.

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

  • أضِف طرقًا مساعِدة لإنشاء WindowSizeClassSets في شكل شبكة. (I4d623، b/444174274)

الإصدار 1.5

الإصدار 1.5.1

‫19 نوفمبر 2025

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

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

  • إصلاح الخطأ ClassCastException الذي يحدث على أجهزة معيّنة (4d58979)

الإصدار 1.5.0

‫24 سبتمبر 2025

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

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

  • أضِف نقاط توقّف WindowSizeClass للمقاسين الكبير جدًا والكبير. (I40d85)
  • توسيع نطاق حساب WindowMetrics ليشمل "سياق التطبيق" (I8eeeb، b/360934048)
  • Provider a Getter to enable direct access to WindowLayoutInfo (Ie9513)
  • إضافة واجهة برمجة تطبيقات لحفظ حالة التضمين تلقائيًا واستعادتها تلقائيًا عند إعادة تشغيل عملية التطبيق (Ie0295)
  • إزالة واجهة برمجة التطبيقات التجريبية WindowInsets (I68a71)

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

  • تم إصلاح مشكلة عرض EmbeddingRule مختلف عن hashCode في بعض الحالات. (I748cc)
  • تم إصلاح المشكلة التي كان من المحتمل أن يحدث فيها NullPointerException بسبب أخطاء في تنفيذ الجهاز.
  • تم إصلاح المشكلة التي كانت تؤدي إلى تعذُّر إجراء عمليات التحقّق من الأمان في ActivityEmbedding بسبب إزالة Proguard للفئات غير المستخدَمة.

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

  • إضافة جميع منصات KMP إلى window-core (If3d7c)

الإصدار 1.5.0-rc01

‫27 أغسطس 2025

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

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

  • تم إصلاح المشكلة التي كان من المحتمل أن يحدث فيها NullPointerException بسبب أخطاء في تنفيذ الجهاز.
  • تم إصلاح المشكلة التي كانت تؤدي إلى تعذُّر إجراء عمليات التحقّق من الأمان في ActivityEmbedding بسبب إزالة Proguard للفئات غير المستخدَمة.

الإصدار 1.5.0-beta02

‫13 أغسطس 2025

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

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

  • تم إصلاح أخطاء بسيطة.

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

  • إضافة جميع منصات KMP إلى window-core (If3d7c)

الإصدار ‎1.5.0-beta01

‫2 يوليو 2022

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

الإصدار ‎1.5.0-alpha02

‫7 مايو 2025

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

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

  • أضِف نقاط توقّف WindowSizeClass للمقاسين الكبير جدًا والكبير. (I40d85)
  • توسيع نطاق حساب WindowMetrics ليشمل "سياق التطبيق" (I8eeeb، b/360934048)
  • Provider a Getter to enable direct access to WindowLayoutInfo (Ie9513)
  • إضافة واجهة برمجة تطبيقات لحفظ حالة التضمين تلقائيًا واستعادتها تلقائيًا عند إعادة تشغيل عملية التطبيق (Ie0295)
  • إزالة واجهة برمجة التطبيقات التجريبية WindowInsets (I68a71)
  • إخفاء بعض الشركات المصنِّعة (I87b8d)

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

  • تم إصلاح المشكلة التي كانت تؤدي إلى عرض EmbeddingRule مختلف عند إرجاع hashCode في بعض الحالات. (I748cc)

الإصدار ‎1.5.0-alpha01

‫12 مارس 2025

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

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

  • الإصدار الأولي من الإصدار 1.5.0 التالي

الإصدار 1.4

الإصدار 1.4.0

‫20 مايو 2025

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

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

  • تضمين الأنشطة
    • واجهة برمجة التطبيقات لتخصيص الصور المتحركة عند التشغيل
    • الخط الفاصل التفاعلي
    • ActivityStack التثبيت
    • تعتيم مربّع الحوار بملء الشاشة
    • Embedded Activity Window Info Callback
    • إدارة ActivityStack محسّنة
    • إطلاق "نشاط" في ActivityStack محدّد
  • WindowMetricsCalculator
    • تحسين إمكانية الاختبار
  • WindowMetrics
    • طُرق سهلة لاحتساب withDp وheightDp
    • تعديل عملية التحقّق من الحدود إلى isAtLeast واستخدام الحدود الدنيا للسماح بإضافة قيم جديدة
  • WindowSizeClass
    • إضافة طريقة احتساب من WindowMetrics
  • WindowInfoTracker
    • إضافة واجهة برمجة تطبيقات لرصد أوضاع الجهاز المتوافقة

الإصدار ‎1.4.0-rc02

‫23 أبريل 2025

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

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

  • إصلاح عُطل Proguard في ActivityEmbedding

الإصدار ‎1.4.0-rc01

‫12 مارس 2025

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

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

  • تعديلات على واجهة برمجة التطبيقات WindowSizeClass
  • تعديلات على واجهات برمجة التطبيقات الخاصة بتضمين الأنشطة

الإصدار ‎1.4.0-beta02

‫12 فبراير 2025

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

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

  • إصلاح تعليق توضيحي كان يظهر في السمة فقط وليس في الدالة getter

الإصدار ‎1.4.0-beta01

‫15 يناير 2025

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

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

  • أضِف واجهة برمجة تطبيقات للسماح بتخصيص ActivityEmbedding الصور المتحركة.
  • توسيع نطاق واجهات برمجة التطبيقات WindowMetricsCalculator التجريبية للسماح بتزييف مقاييس النافذة

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

  • إخفاء بعض الشركات المصنِّعة (I87b8d)
  • السماح للتطبيقات بتخصيص الصور المتحركة ActivityEmbedding (If31a8)
  • إضافة دعم لاستهداف watchosDeviceArm64 KMP واستهداف الإصدار 1.9 من Kotlin (Icf15d، b/364652024)
  • عرض واجهات برمجة تطبيقات WindowMetricsCalculator (I1cebf)

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

  • تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية من JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict (هذا هو الإعداد التلقائي بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (Ie69ac، b/326456246)

الإصدار ‎1.4.0-alpha05

‫16 أكتوبر 2024

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

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

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

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

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

الإصدار 1.4.0-alpha04

‫2 أكتوبر 2024

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

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

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

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

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

الإصدار ‎1.4.0-alpha03

‫18 سبتمبر 2024

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

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

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

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

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

الإصدار 1.4.0-alpha02

‫4 سبتمبر 2024

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

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

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

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

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

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

الإصدار 1.4.0-alpha01

‫7 أغسطس 2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.3

الإصدار 1.3.0

‫29 مايو 2024

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

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

  • إتاحة استخدام Kotlin Multiplatform مع فئات أحجام النوافذ

الإصدار 1.3.0-rc01

‫14 مايو 2024

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

تم طرح 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)
  • Remove background color API for stable. (I34c3e)
  • Hide Window Area APIs. (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 من أجل إتاحة اختبار آلة جافا الافتراضية (Ie036e)
  • أضِف IntRange لقيم ميزة الطي التجريبية. (I69f7d)

الإصدار 1.1

الإصدار 1.1.0

‫7 يونيو 2023

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

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

تضمين النشاط

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

WindowLayout

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

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

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

الإصدار ‎1.1.0-rc01

‫10 مايو 2023

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

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

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

الإصدار 1.1.0-beta02

‫5 أبريل 2023

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

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

  • إصلاحات داخلية وتنظيف

الإصدار 1.1.0-beta01

‫22 مارس 2023

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

تضمين النشاط

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

WindowLayout

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

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

  • لتفعيل ميزة تضمين الأنشطة وعرضها في تقسيمات، يجب أن تضيف التطبيقات السمة PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED إلى علامة <application> في البيان: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> يسمح ذلك للنظام بتحسين سلوكيات التقسيم لتطبيق ما مسبقًا.
  • SplitInfo نسبة
    • تحقَّق مما إذا كان الانقسام الحالي مكدّسًا: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • تحقَّق من النسبة الحالية: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • عمليات نقل البيانات SplitController:
    • تغيير SplitController.getInstance() إلى SplitController.getInstance(Context)
    • تغيير SplitController.initialize(Context, @ResId int) إلى RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • تغيير SplitController.getInstance().isActivityEmbedded(Activity) إلى ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • تغيير SplitController.getInstance().registerRule(rule) إلى RuleController.getInstance(Context).addRule(rule)
    • تغيير SplitController.getInstance().unregisterRule(rule) إلى RuleController.getInstance(Context).removeRule(rule)
    • تغيير SplitController.getInstance().clearRegisteredRules() إلى RuleController.getInstance(Context).clearRules()
    • تغيير SplitController.getInstance().getSplitRules() إلى RuleController.getInstance(Context).getRules()
  • عمليات نقل بيانات المواقع SplitRule:
    • تستخدم minWidth وminSmallestWidth الآن وحدات dp بدلاً من وحدات البكسل. يمكن للتطبيقات استخدام الاستدعاء التالي: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) أو ببساطة تقسيم minWith بالبكسل على displayMetrics#density.
  • يجب نقل ثوابت سلوك الإنهاء إلى ثوابت فئة تشبه التعداد FinishBehavior:
    • تغيير FINISH_NEVER إلى FinishBehavior.NEVER
    • تغيير FINISH_ALWAYS إلى FinishBehavior.ALWAYS
    • تغيير FINISH_ADJACENT إلى FinishBehavior.ADJACENT
  • يجب نقل اتجاه التنسيق إلى SplitAttributes.LayoutDirection:
    • تغيير ltr إلى SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • تغيير rtl إلى SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • تغيير locale إلى SplitAttributes.LayoutDirection.LOCALE
    • يجب نقل splitRatio إلى SplitAttributes.SplitType.ratio(splitRatio).
  • عمليات نقل البيانات SplitPairRule.Builder:
    • تغيير SplitPairRule.Builder(filters, minWidth, minSmallestWidth) إلى kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • تغيير setLayoutDirection(layoutDirection) وsetSplitRatio(ratio) إلى kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • تأخذ الدالتان setFinishPrimaryWithSecondary وsetFinishSecondaryWithPrimary الثوابت الشبيهة بالتعداد FinishBehavior. راجِع "عمليات نقل بيانات SplitRule" للاطّلاع على التفاصيل.
    • استخدِم setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) لعرض عمليات التقسيم على الأجهزة في الوضع العمودي.
  • عمليات نقل البيانات SplitPlaceholder.Builder:
    • يحتوي على المَعلمتَين filters وplaceholderIntent فقط. تنتقل السمات الأخرى إلى دوال الضبط. راجِع "عمليات نقل بيانات SplitPairRule.Builder" للحصول على التفاصيل.
    • تأخذ السمة setFinishPrimaryWithPlaceholder الثوابت المشابهة للتعداد FinishBehavior. راجِع "عمليات نقل بيانات 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)
  • جعل واجهة برمجة التطبيقات WindowLayoutInfo UI Context تجريبية (I58ee0)
  • تضيف هذه الحزمة WindowAreaController وواجهات برمجة التطبيقات لتفعيل "وضع RearDisplay" لنقل النافذة الحالية إلى الشاشة التي تتوافق مع الكاميرا الخلفية. (Iffcbf)
  • تعديل لون الخلفية التلقائي (I1ac1b)
  • أضِف مَعلمات SplitAttributes. (I18bdd)
  • أضِف واجهات برمجة التطبيقات الخاصة بـ SplitRule وSplitAttributes وSplitAttributesCalculator. (I92d23)
  • تحسين واجهات برمجة التطبيقات حول maxAspectRatio:
    1. استبدِل alwaysAllow() وalwaysDisallow() بـ ALWAYS_ALLOW وALWAYS_DISALLOW.
    2. تعديل مستندات واجهة برمجة التطبيقات الخاصة بـ ‎ @see باستخدام مستندات مستقلة (I3057b)
  • تمت إزالة المنشئات التالية من واجهات برمجة التطبيقات العامة لأنّه من المفترض ألا يتم استدعاؤها من خلال التطبيقات.
    • SplitInfo constructor
    • ActivityStack constructor (Ide534)
  • يتم الآن تحصيل رسوم maxAspectRatioInPortrait/Landscape من "SplitRule". لا يسمح إلا بتقسيم الأنشطة عندما تكون نسبة العرض إلى الارتفاع للحدود الرئيسية أصغر من maxAspectRatio أو تساويها. (Ia5990)
  • تغيير RuleController#parseRules إلى قيمة ثابتة (I785df)
  • تحسين واجهات برمجة التطبيقات المتعلّقة بـ ActivityEmbedding
    1. تنسيق أسماء واجهات برمجة التطبيقات - استخدام add/remove للعديد من الحالات:
    2. تغيير registerRule إلى addRule
    3. تغيير unregisterRule إلى removeRule
    4. استبدِل getSplitRules بـ getRules لأنّ ActivityRule ليس قاعدة تقسيم.
    5. أضِف RuleController#setRules لضبط مجموعة من القواعد
    6. استخرِج واجهات برمجة التطبيقات ذات الصلة بقاعدة الاستخراج من SplitController إلى العنصر الفردي RuleController. وهم:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. استخرِج #isActivityEmbedded من SplitController إلى سينغلتون ActivityEmbeddingController. وهم:
    14. isActivityEmbedded
    15. إزالة SplitController#initialize لضبط القواعد من ملف XML، يُرجى استخدام RuleController#parseRules و#setRules. قبل هذا التغيير: SplitController.initialize(context, R.xml.static_rules) بعد هذا التغيير: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. لم نعد نفرّق بين القواعد الثابتة وقواعد وقت التشغيل. ومع ذلك، يؤدي استدعاء #clearRules إلى محو جميع القواعد بغض النظر عمّا إذا كانت مسجّلة بتعريفات قواعد XML ثابتة أو في وقت التشغيل. للحصول على السلوك القديم لـ SplitController#clearRegisteredRules، يُرجى الاتصال بـ RuleController#parseRules باستخدام معرّف موارد XML والاتصال بـ RuleController#setRules لإعادة ضبط القواعد. قبل هذا التغيير: SplitController.getInstance(context).clearRegisteredRules() بعد هذا التغيير: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • تحسين واجهات برمجة التطبيقات SplitRule:
    1. استخدِم الحد الأدنى للأبعاد بوحدات DP بدلاً من البكسل في SplitRule.
    2. إعادة تصميم SplitRule Builder لتصبح السمة min dimensions اختيارية (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 لمنع إكمال العنصر النائب تسبّب إكمال العنصر النائب في حدوث بعض السلوكيات المربكة.

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

  • اجعل قيمة isEmpty عامة لاستبدال الدالة isEmpty.
  • أعِد تسمية أنشطة المَعلمة ActivityStack إلى activitiesInProcess. (Ia5055)
  • أزِل ActivityFilter#matchesClassName وActivityFilter#matchesClassNameOrWildCard لأنّهما يسبّبان التباسًا.
  • أضِف ActivityFilter#componentName و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)
  • إضافة isEmpty في ActivityStack (I5a4e6)
  • إعادة تسمية WindowInfoRepository إلى WindowInfoTracker
    • تعديل تبعيات java/rxjava/testing لتتطابق مع الإصدارات. (I0da63)
  • أضِف قاعدة اختبار لـ WindowMetricsCalculator بسيط. (Ibacdb)

الإصدار 1.0.0-beta03

‫27 أكتوبر 2021

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

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

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

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

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

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

الإصدار ‎1.0.0-beta02

‫1 سبتمبر 2021

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

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

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

الإصدار ‎1.0.0-beta01

‫18 أغسطس 2021

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

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

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

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

  • إزالة الثوابت القديمة وتحويل FoldFeature إلى واجهة (I9a2d5)

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

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

الإصدار ‎1.0.0-alpha10

‫4 أغسطس 2021

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

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha09

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

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

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

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

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

  • إضافة طريقة مساعدة لإنشاء ميزات العرض التجريبي (I3cf54)
    • تغيير من occlusionMode إلى occlusionType

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

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

الإصدار ‎1.0.0-alpha08

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

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

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

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

الإصدار ‎1.0.0-alpha07

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

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

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha06

‫5 مايو 2021

تم طرح androidx.window:window:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.

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

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

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

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

الإصدار ‎1.0.0-alpha05

‫24 مارس 2021

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha04

‫10 مارس 2021

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

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

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

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

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

الإصدار ‎1.0.0-alpha03

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

تم طرح androidx.window:window:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.

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

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

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

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

الإصدار ‎1.0.0-alpha02

‫27 يناير 2021

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

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

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

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

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

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha01

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

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

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

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