مدير النوافذ
androidx.window
androidx.window.core
androidx.window.embedding
androidx.window.layout
androidx.window.testing.layout
التعديل الأخير | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | إصدار ألفا |
---|---|---|---|---|
29 أيار (مايو) 2024 | 1.3.0 | - | - | - |
إعلان التبعيات
لإضافة تبعية إلى WindowManager، يجب إضافة مستودع Google Maven إلى مشروعك. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على مستودع Maven من Google.
أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle
لتطبيقك أو الوحدة الخاصة بك:
رائع
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.3
الإصدار 1.3.0
29 أيار (مايو) 2024
تم طرح "androidx.window:window-*:1.3.0
". يتضمّن الإصدار 1.3.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 1.2.0
- إتاحة Kotlin Multiplatform لفئات حجم النوافذ.
الإصدار 1.3.0-rc01
14 أيار (مايو) 2024
WindowManager
يوفّر الإصدار Jetpack 1.3 إمكانية استخدام Kotlin Multiplatforms مع ميزات 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 على هذه الالتزامات.
الميزات الجديدة
- اعرِض واجهات برمجة التطبيقات التجريبية للنوافذ للوصول إلى الشاشة الخلفية.
- أصبح اختبار واجهات برمجة التطبيقات (API) الخاصة بإنشاء
FoldingFeature
مستقرة الآن. - أصبحت الآن واجهات برمجة التطبيقات الاختبارية لإعداد قيم
ActivityEmbedding
وهمية مستقرة. - تبلغ
WindowLayoutInfoPublisherRule
الآن عن الإلغاء عند الحصول على قيمة منUiContext
. - تُبلغ
WindowInfoTracker
عن بيانات الميزات القابلة للطي إلى مَعلماتUiContext
. - اعرض إصدار الإضافات على الجهاز.
- ثوابت
WindowProperties
لعمليات الإلغاء لكل مستخدم على حدة:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
— إبلاغ النظام الذي أوقف فيه التطبيق إلغاء التوافق مع نسبة العرض إلى الارتفاع التي يتفاعل معها المستخدمPROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
— إبلاغ النظام الذي أوقف فيه التطبيق خيار ملء الشاشة لإعدادات إلغاء التوافق مع نسبة العرض إلى الارتفاع للمستخدم
الإصدار 1.2
الإصدار 1.2.0
15 تشرين الثاني (نوفمبر) 2023
تم طرح "androidx.window:window-*:1.2.0
". يتضمّن الإصدار 1.2.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 1.1.0
- اعرِض واجهات برمجة التطبيقات التجريبية للنوافذ للوصول إلى الشاشة الخلفية.
- أصبح اختبار واجهات برمجة التطبيقات (API) الخاصة بإنشاء
FoldingFeature
مستقرة الآن. - أصبحت الآن واجهات برمجة التطبيقات الاختبارية لإعداد قيم
ActivityEmbedding
وهمية مستقرة. - تبلغ
WindowLayoutInfoPublisherRule
الآن عن الإلغاء عند الحصول على قيمة منUiContext
. - تُبلغ
WindowInfoTracker
عن بيانات الميزات القابلة للطي إلى مَعلماتUiContext
. - اعرض إصدار الإضافات على الجهاز.
الإصدار 1.2.0-rc01
1 تشرين الثاني (نوفمبر) 2023
تم طرح "androidx.window:window-*:1.2.0-rc01
". يحتوي الإصدار 1.2.0-rc01 على هذه الالتزامات.
الميزات الجديدة
- اعرِض واجهات برمجة التطبيقات التجريبية للنوافذ للوصول إلى الشاشة الخلفية.
- أصبح اختبار واجهات برمجة التطبيقات (API) الخاصة بإنشاء
FoldingFeature
مستقرة الآن. - أصبحت الآن واجهات برمجة التطبيقات الاختبارية لإعداد قيم
ActivityEmbedding
وهمية مستقرة. - تبلغ
WindowLayoutInfoPublisherRule
الآن عن الإلغاء عند الحصول على قيمة منUiContext
. - تُبلغ
WindowInfoTracker
عن بيانات الميزات القابلة للطي إلى مَعلماتUiContext
. - اعرض إصدار الإضافات على الجهاز.
الإصدار 1.2.0-beta04
18 تشرين الأول (أكتوبر) 2023
تم طرح "androidx.window:window-*:1.2.0-beta04
". يتضمّن الإصدار 1.2.0-beta04 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- إزالة واجهات برمجة التطبيقات غير الثابتة (Ibc534، b/302380585)
الإصدار 1.2.0-beta03
20 أيلول (سبتمبر) 2023
تم طرح "androidx.window:window-*:1.2.0-beta03
". يتضمّن الإصدار 1.2.0-beta03 هذه الالتزامات.
الميزات الجديدة
- أضِف عمليات تحقّق
RequiresApi
من واجهات برمجة التطبيقات التي تحتاج إلى إصدار معيّن من الإضافات لكي تعمل بشكلٍ صحيح. - أضِف واجهة برمجة تطبيقات لعرض إصدار الإضافات على الجهاز.
تغييرات واجهة برمجة التطبيقات
- إضافة تعليقات توضيحية إلى إصدار إضافة حزمة تطوير البرامج (SDK) للنوافذ على واجهات برمجة التطبيقات العامة
- إزالة
isXXXSupported
في المكوِّن تضمين النشاط (Ie3dae)
- إزالة
- يمكنك تقديم
WindowSdkExtensions
للإبلاغ عن إصدار الإضافة على الجهاز.- قدِّم السمة
RequiresWindowSdkExtension
لإضافة تعليقات توضيحية إلى الحد الأدنى المطلوب لإصدار الإضافة. (I05fd4)
- قدِّم السمة
- لجعل
WindowAreaInfo#getCapability
غير قابل للقيم الفارغة. (I17048)
الإصدار 1.2.0-beta01
26 تموز (يوليو) 2023
تم طرح "androidx.window:window-*:1.2.0-beta01
". يحتوي الإصدار 1.2.0 -beta01 على هذه الالتزامات.
الميزات الجديدة
- اعرِض واجهات برمجة التطبيقات التجريبية للنوافذ للوصول إلى الشاشة الخلفية.
- أصبح اختبار واجهات برمجة التطبيقات (API) الخاصة بإنشاء
FoldingFeature
مستقرة الآن. - أصبحت الآن واجهات برمجة التطبيقات الاختبارية لإعداد قيم
ActivityEmbedding
وهمية مستقرة. - تبلغ
WindowLayoutInfoPublisherRule
الآن عن الإلغاء عند الحصول على قيمة منUiContext
. - تُبلغ
WindowInfoTracker
عن بيانات الميزات القابلة للطي إلى مَعلماتUiContext
.
تغييرات واجهة برمجة التطبيقات
- وضع علامة على واجهة برمجة التطبيقات
WindowArea
API على أنّها تجريبية للسماح بمواصلة إجراء التغييرات على واجهة برمجة التطبيقات للحصول على إصدار ثابت في الإصدار 1.3 (I857f5) - تعديل ملفات واجهة برمجة التطبيقات لإضافة تعليقات توضيحية بشأن إيقاف التوافق (I8e87a، b/287516207)
الإصدار 1.2.0-alpha03
21 حزيران (يونيو) 2023
تم طرح "androidx.window:window-*:1.2.0-alpha03
". يحتوي الإصدار 1.2.0-alpha03 على هذه الالتزامات.
الميزات الجديدة
- إزالة واجهات برمجة التطبيقات المتوقّفة نهائيًا من واجهة برمجة التطبيقات
- إضافة واجهات برمجة تطبيقات لدعم الشاشات المتزامنة
- أضِف سمة لإيقاف الإلغاء الإلزامي لتغيير الحجم.
- إضافة سمة لإيقاف تجاوز الحد الأدنى لنسبة العرض إلى الارتفاع
- ثبِّت
ActivityEmbeddingRule
لدعم اختبار الوحدات حول تضمين الأنشطة.
تغييرات واجهة برمجة التطبيقات
- إزالة واجهات برمجة التطبيقات المتوقّفة نهائيًا (I18d39)
- توفير إمكانية استخدام الشاشات المتزامنة (Ifcbb0)
إصلاح الأخطاء
- إضافة خاصية متوافقة مع خيار الإيقاف لفرض تغيير الحجم (Ie7ab1)
- لإزالة
SESSION_STATE_CONTENT_INVISIBLE
من واجهة الإضافات (I6ed19) - ثبِّت
ActivityEmbeddingRule
لإتاحة اختبار الوحدات حول تضمين النشاط. (I8d6b6) - جارٍ إضافة خاصية متوافقة مع الإيقاف لتجاوز الحد الأدنى لنسبة العرض إلى الارتفاع. (I66390)
- إزالة واجهة برمجة التطبيقات WindowArea API المتوقفة نهائيًا (Ieb67c)
- إعادة تسمية خاصية حلقة طلب الاتجاه إلى
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
. (Ie2fbd) - تعديلات الأسماء الثابتة لجلسات منطقة النافذة (I83675)
- إضافة خاصية متوافقة للإيقاف تتجاهل حلقة طلب الاتجاه عند اكتشافها (I0a7a2)
- أضِف السمة
WindowAreaComponent#STATUS_ACTIVE
للإشارة إلى أنّ الميزة نشطة حاليًا. (I62bc3) - إضافة واجهات برمجة تطبيقات
RearDisplayPresentationMode
(I0401c) - يمكنك إزالة واجهة برمجة التطبيقات للون الخلفية في الوضع الثابت. (I34c3e)
- إخفاء واجهات برمجة التطبيقات لمنطقة النوافذ (I39de0)
- إضافة طرق لإلغاء
SplitInfo
فيSplitController
يمكنك إضافة طرق اختبار لإنشاء نُسخ مزدوجة منSplitInfo
وActivityStack
. (Icd69f) - جعل العلامة اختيارية لـ
ActivityRule.Builder
. (Ib0b44) - يُرجى إزالة "
RatioSplitType
" و"ExpandContainersSplit
" و"HingeSplitType
". أصبح اسمهاSplitType
الآن.- استبدِل
#splitEqually()
و#expandContainers()
و#splitByHinge
بالثابتSplitType SPLIT_TYPE_EQUAL
وSPLIT_TYPE_EXPAND
وSPLIT_TYPE_HINGE
. - يجب إزالة الوظيفة لضبط النوع الاحتياطي لنوع تقسيم المفصّلة. في حال تعذّر تطبيق نوع تقسيم المفصّلة بسبب حالة الجهاز أو النافذة الحالية، يجب تقسيم حاوية المهمة الرئيسية بالتساوي. استخدِم
SplitController#setSplitAttributesCalculator
لتخصيص نوع التقسيم الاحتياطي. (Ifcc59)
- استبدِل
- إيقاف
add
/removeSplitCallback
- نقل
add
/removeSplitCallback
إلىSplitControllerCallbackAdapter
- إضافة دعم
Flow
للحصول على قائمةSplitInfo
(I7f1b6)
- نقل
- إضافة قاعدة اختبار لـ
ActivityEmbeddingController
(I42e9b) - جارٍ إعادة تسمية
ActivityOptionsCompat
إلىActivityEmbeddingOptions
(I89301) - أضِف السمة
splitSupportStatus
للإشارة إلى ما إذا كانت ميزة "تضمين النشاط" متوفّرة. (I10024) - قدِّم السمة
SplitAttributes.BackgroundColor
لتمثيل قيمةDEFAULT
بشكل أفضل. يُرجى توضيح أنّ لون خلفية الصورة المتحركة غير المُعتِم غير متوافق، وبالتالي سيتم التعامل مع أيّ ألوان غير معتمة على أنّها الألوان التلقائية، ما يعني استخدام لون خلفية نافذة المظهر الحالي. (Ic6b95) - يمكنك استبدال
alwaysAllow()
وalwaysDisallow()
بـALWAYS_ALLOW
وALWAYS_DISALLOW
. (I3057b) - يمكنك إضافة واجهات برمجة تطبيقات خاصة بـ
SplitRule
وSplitAttributes
وSplitAttributesCalculator
. (I92d23) - إضافة
TestActivityStack
لإنشاءActivityStack
للاختبار- يمكنك إضافة
TestSplitInfo
لإنشاءSplitInfo
للاختبار. (I8e779)
- يمكنك إضافة
- إضافة طريقة لإنشاء
SplitAttributesCalculatorParams
مزيفة حتى يتمكّن المطوّرون من التحقّق من ملكيةSplitAttributesCalculator
المخصّصة (Id4a6e) - إضافة
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
وWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)
(I66c7f)
الإصدار 1.2.0-alpha02
7 حزيران (يونيو) 2023
تم طرح "androidx.window:window-*:1.2.0-alpha02
". يحتوي الإصدار 1.2.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
- تحديث واجهة برمجة التطبيقات التجريبية لكي تتضمّن قيمة ثابتة للميزات القابلة للطي غير المحدّدة
- وسيؤدي الإلغاء باستخدام
WindowLayoutInfoPublishRule
إلى إلغاء جميع قيمwindowLayoutInfo
، بما في ذلك واجهة برمجة التطبيقات المستندة إلى السياق.
تغييرات واجهة برمجة التطبيقات
- أضِف ثابتًا لميزة الطي الأوسط غير المحدَّدة. (I7530c)
إصلاح الأخطاء
- يجب تعديل
WindowLayoutInfoPublishRule
لإتاحة عمليات الإلغاء على أجهزةContext
المستنِدة إلىWindowLayoutInfo
. (I2037a)
الإصدار 1.2.0-alpha01
24 أيار (مايو) 2023
تم طرح "androidx.window:window-*:1.2.0-alpha01
". يحتوي الإصدار 1.2.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
تثبيت اختبار واجهات برمجة التطبيقات بشأن تضمين الأنشطة وWindowLayoutInfoTracker
تمت ترقية ActivityEmbeddingRule
إلى مستوى ثابت.
تمت ترقية WindowMetricsCalculatorRule
إلى مستوى ثابت.
تمت ترقية وظائف الأدوات المساعدة لإنشاء FoldingFeature
للاختبار إلى ثابتة.
تغييرات واجهة برمجة التطبيقات
- ثبِّت
ActivityEmbeddingRule
لإتاحة اختبار الوحدات حول تضمين النشاط. (I8d6b6) - الدالة
WindowMetrisCalculatorTestRule
ثابتة، ما يسمح بمقاييس التأهُّل لاختبارات JVM. ننصح باستخدام المحاكي للحصول على نتائج دقيقة. - تثبيت واجهات برمجة تطبيقات الاختبار لـ
WindowLayoutInfo
لإتاحة اختبار JVM (Ie036e) - أضِف
IntRange
لاختبار قيم ميزات الطي. (I69f7d)
الإصدار 1.1
الإصدار 1.1.0
7 حزيران (يونيو) 2023
تم طرح "androidx.window:window-*:1.1.0
". يتضمّن الإصدار 1.1.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 1.0.0
تضمين الأنشطة
- تمت إضافة
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
كسمة منطقية للعلامة<application>
في بيان التطبيق. - تم إيقاف
isSplitSupported
نهائيًا واستبداله بـsplitSupportStatus
لتقديم معلومات أكثر تفصيلاً عن سبب عدم توفّر ميزة التقسيم. - تمت إضافة الفئة
SplitController.SplitSupportStatus
المدمجة لتوفير ثوابت الحالة للسمةsplitSupportStatus
. - تمت إعادة هيكلة
SplitController
إلى عدة وحدات:- وحدة
ActivityEmbeddingController
لواجهات برمجة التطبيقاتActivity
أوActivityStack
ذات الصلة. - تم نقل "
isActivityEmbedded
" منSplitController
إلىActivityEmbeddingController
. - وحدة
RuleController
للعمليات ذات الصلةEmbeddingRule
: - تمت إزالة واجهات برمجة تطبيقات
SplitController
: clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- تمت إضافة
RuleController
APIs: addRule()
- لإضافة قاعدة أو تعديل القاعدة التي تتضمّن العلامة نفسها.removeRule()
: يؤدي هذا الإجراء إلى إزالة قاعدة من مجموعة القواعد المسجَّلة.setRules()
- ينشئ مجموعة من القواعد.clearRules()
: يؤدي هذا الإجراء إلى إزالة جميع القواعد المسجَّلة.parseRules()
- تحلِّل القواعد من تعريفات قواعد XML.
- وحدة
- تتطلب جميع الوحدات سياقًا لإعدادها باستخدام طريقة
#getInstance()
، بما في ذلك:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- تمت إضافة الفئة
EmbeddingAspectRatio
لتحديد ثوابت السلوك المشابهة للتعداد، المرتبطة بنسبة العرض إلى الارتفاع. - تمت إضافة الفئة
SplitAttributes
لتحديد التنسيق المقسّم. - تمت إضافة وظائف الآلة الحاسبة
SplitAttributes
إلىSplitController
لتخصيص التنسيقات المقسّمة:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
للتحقّق مما إذا كانت واجهات برمجة التطبيقاتSplitAttributesCalculator
متوافقة مع الجهاز
- تمت إضافة حقل
EmbeddingRule#tag
. - تحديثات واجهات برمجة التطبيقات في
SplitRule
:- تمت إضافة
defaultSplitAttributes
: لتحديد التنسيق التلقائي لتقسيم الصورة، ويحل محلsplitRatio
وlayoutDirection
. - تمت إضافة ترجمة لسمات XML
splitRatio
وsplitLayoutDirection
إلىdefaultSplitAttributes
. - تم تغيير الحد الأدنى لتعريفات السمات لاستخدام وحدات بكسل مستقلة الكثافة (dp) بدلاً من وحدات البكسل.
- تمت إضافة
minHeightDp
بقيمة تلقائية 600 بكسل مستقل الكثافة. - تم تغيير
minWidth
إلىminWidthDp
بالقيمة التلقائية 600 بكسل مستقل الكثافة. - تم تغيير
minSmallestWidth
إلىminSmallestWidthDp
بالقيمة التلقائية 600 بكسل مستقل الكثافة. - تمت إضافة
maxAspectRatioInHorizontal
بالقيمة التلقائيةALWAYS_ALLOW
. - تمت إضافة
maxAspectRatioInPortrait
بالقيمة التلقائية 1.4. - تم تحديد فئة
FinishBehavior
مدمجة لاستبدال ثوابت سلوك النهاية. - تم تطبيق تغييرات الموقع على الفئة المدمجة
SplitPairRule
وSplitPlaceholderRule
في "أداة إنشاء الإنشاء".
- تمت إضافة
- تم استبدال
SplitInfo#getSplitRatio()
بـSplitInfo#getSplitAttributes()
لتقديم معلومات إضافية متعلقة بالتقسيم.
WindowLayout
- تمت إضافة الدعم التجريبي لسياق واجهة المستخدم غير النشاط إلى
WindowInfoTracker
. - تمت إضافة سياق تجريبي لواجهة المستخدم غير النشطة إلى
WindowMetricsCalculator
.
خطوات نقل البيانات
- لتفعيل ميزة تضمين النشاط لعرض الأنشطة في التقسيمات، يجب أن تضيف التطبيقات السمة
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
إلى علامة<application>
في ملف البيان:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
يتيح ذلك للنظام تحسين سلوكيات التقسيم للتطبيق مسبقًا. - نسبة
SplitInfo
- تحقَّق مما إذا كانت عملية التقسيم الحالية مكدسة:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- تحقَّق من النسبة الحالية:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- تحقَّق مما إذا كانت عملية التقسيم الحالية مكدسة:
- عمليات نقل وحدة التحكّم في التقسيم:
SplitController.getInstance()
تغيير إلىSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
تغيير إلىRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
تغيير إلىActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
تغيير إلىRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
تغيير إلىRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
تغيير إلىRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
تغيير إلىRuleController.getInstance(Context).getRules()
.
- عمليات نقل المواقع الإلكترونية في
SplitRule
:- يستخدم كل من
minWidth
وminSmallestWidth
الآن وحدات بكسل مستقلة الكثافة بدلاً من وحدات البكسل. يمكن للتطبيقات استخدام الطلب التالي:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
أو ببساطة قسمةminWith
بالبكسل علىdisplayMetrics#density
.
- يستخدم كل من
- يجب نقل ثوابت السلوك النهائي إلى ثوابت الفئة
FinishBehavior
التي تشبه التعداد:FINISH_NEVER
تغيير إلىFinishBehavior.NEVER
.FINISH_ALWAYS
تغيير إلىFinishBehavior.ALWAYS
.FINISH_ADJACENT
تغيير إلىFinishBehavior.ADJACENT
.
- يجب نقل اتجاه التصميم إلى
SplitAttributes.LayoutDirection
:ltr
تغيير إلىSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
تغيير إلىSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
تغيير إلىSplitAttributes.LayoutDirection.LOCALE
.- يجب نقل
splitRatio
إلىSplitAttributes.SplitType.ratio(splitRatio)
.
- عمليات نقل بيانات
SplitPairRule.Builder
:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
تغيير إلىkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
- تغيير
setLayoutDirection(layoutDirection)
وsetSplitRatio(ratio)
إلىkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- تأخذ
setFinishPrimaryWithSecondary
وsetFinishSecondaryWithPrimary
ثوابت تشبه التعدادFinishBehavior
. راجِع "عمليات نقل قاعدة سبليت" للحصول على التفاصيل. - استخدِم
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
لعرض التقسيمات على الأجهزة العمودية.
- عمليات نقل بيانات
SplitPlaceholder.Builder
:- تتضمن فقط المعلمتين
filters
وplaceholderIntent
. تنتقل الخصائص الأخرى إلى مجموعات سترز. يمكنك الاطّلاع على "عمليات نقل بيانات splitDoubleRule.Builder" لمعرفة التفاصيل. - تأخذ
setFinishPrimaryWithPlaceholder
ثوابت تشبه التعدادFinishBehavior
. راجِع "عمليات نقل قاعدة سبليت" للحصول على التفاصيل. - تم تغيير
setLayoutDirection(layoutDirection)
وsetSplitRatio(ratio)
إلى:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- استخدِم
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
لعرض التقسيمات على الأجهزة العمودية.
- تتضمن فقط المعلمتين
الإصدار 1.1.0-rc01
10 أيار (مايو) 2023
تم طرح "androidx.window:window-*:1.1.0-rc01
". يحتوي الإصدار 1.1.0-rc01 على هذه الالتزامات.
الميزات الجديدة
- إصدار
ActivityEmbedding
كواجهة برمجة تطبيقات ثابتة. - إصلاحات أخطاء متعددة
الإصدار 1.1.0-beta02
5 نيسان (أبريل) 2023
تم طرح "androidx.window:window-*:1.1.0-beta02
". يتضمّن الإصدار 1.1.0 -beta02 هذه الالتزامات.
الميزات الجديدة
- الإصلاحات الداخلية والتنظيف.
الإصدار 1.1.0-beta01
22 آذار (مارس) 2023
تم طرح "androidx.window:window-*:1.1.0-beta01
". يتضمّن الإصدار 1.1.0-beta01 هذه الالتزامات.
تضمين الأنشطة
- تمت إضافة
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
كسمة منطقية للعلامة<application>
في بيان التطبيق. - تم إيقاف
isSplitSupported
نهائيًا واستبداله بـsplitSupportStatus
لتقديم معلومات أكثر تفصيلاً عن سبب عدم توفّر ميزة التقسيم. - تمت إضافة الفئة
SplitController.SplitSupportStatus
المدمجة لتوفير ثوابت الحالة للسمةsplitSupportStatus
. - تمت إعادة هيكلة
SplitController
إلى عدة وحدات:- وحدة
ActivityEmbeddingController
لواجهات برمجة التطبيقاتActivity
أوActivityStack
ذات الصلة. - تم نقل "
isActivityEmbedded
" منSplitController
إلىActivityEmbeddingController
. - وحدة
RuleController
للعمليات ذات الصلةEmbeddingRule
: - واجهات برمجة تطبيقات
SplitController
التي تمت إزالتها:clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- تمت إضافة واجهات برمجة تطبيقات
RuleController
:addRule()
- لإضافة قاعدة أو تعديل القاعدة التي تتضمّن العلامة نفسها.removeRule()
: يؤدي هذا الإجراء إلى إزالة قاعدة من مجموعة القواعد المسجَّلة.setRules()
- ينشئ مجموعة من القواعد.clearRules()
: يؤدي هذا الإجراء إلى إزالة جميع القواعد المسجَّلة.- `parseRules() - تحلل القواعد من تعريفات قواعد XML.
- وحدة
- تتطلب جميع الوحدات سياقًا لإعدادها باستخدام طريقة
#getInstance()
، بما في ذلك:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- تمت إضافة الفئة
EmbeddingAspectRatio
لتحديد ثوابت السلوك المشابهة للتعداد، المرتبطة بنسبة العرض إلى الارتفاع. - تمت إضافة الفئة
SplitAttributes
لتحديد التنسيق المقسّم. - تمت إضافة وظائف الآلة الحاسبة
SplitAttributes
إلىSplitController
لتخصيص التنسيقات المقسّمة:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
للتحقّق ممّا إذا كانت واجهات برمجة التطبيقات SplitAttributesScales متاحة على الجهاز
- تمت إضافة حقل
EmbeddingRule#tag
. - تحديثات واجهات برمجة التطبيقات في
SplitRule
:- تمت إضافة
defaultSplitAttributes
: لتحديد التنسيق التلقائي لتقسيم الصورة، ويحل محلsplitRatio
وlayoutDirection
. - تمت إضافة ترجمة لسمات XML
splitRatio
وsplitLayoutDirection
إلىdefaultSplitAttributes
. - تم تغيير الحد الأدنى لتعريفات السمات لاستخدام وحدات بكسل مستقلة الكثافة (dp) بدلاً من وحدات البكسل.
- تمت إضافة
minHeightDp
بقيمة تلقائية 600 بكسل مستقل الكثافة. - تم تغيير
minWidth
إلىminWidthDp
بالقيمة التلقائية 600 بكسل مستقل الكثافة. - تم تغيير
minSmallestWidth
إلىminSmallestWidthDp
بالقيمة التلقائية 600 بكسل مستقل الكثافة. - تمت إضافة
maxAspectRatioInHorizontal
بالقيمة التلقائيةALWAYS_ALLOW
. - تمت إضافة
maxAspectRatioInPortrait
بالقيمة التلقائية1.4
. - تم تحديد فئة
FinishBehavior
مدمجة لاستبدال ثوابت سلوك النهاية. - تم تطبيق تغييرات السمة على الفئة
Builder
المدمَجة منSplitPairRule
وSplitPlaceholderRule
.
- تمت إضافة
- تم استبدال
SplitInfo#getSplitRatio()
بـSplitInfo#getSplitAttributes()
لتقديم معلومات إضافية متعلقة بالتقسيم.
WindowLayout
- تمت إضافة إتاحة سياق واجهة المستخدم غير النشطة إلى
WindowInfoTracker
. - تمت إضافة سياق واجهة المستخدم غير النشطة إلى
WindowMetricsCalculator
.
خطوات نقل البيانات
- لتفعيل ميزة تضمين النشاط لعرض الأنشطة في التقسيمات، يجب أن تضيف التطبيقات السمة
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
إلى علامة<application>
في ملف البيان:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
يتيح ذلك للنظام تحسين سلوكيات التقسيم للتطبيق مسبقًا. - نسبة
SplitInfo
- تحقَّق مما إذا كانت عملية التقسيم الحالية مكدسة:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- تحقَّق من النسبة الحالية:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- تحقَّق مما إذا كانت عملية التقسيم الحالية مكدسة:
- عمليات نقل بيانات
SplitController
:SplitController.getInstance()
تغيير إلىSplitController.getInstance(Context)
.- تم إجراء تغييرات عددها
SplitController.initialize(Context, @ResId int)
علىRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
. SplitController.getInstance().isActivityEmbedded(Activity)
تغيير إلىActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
تغيير إلىRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
تغيير إلىRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
تغيير إلىRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
تغيير إلىRuleController.getInstance(Context).getRules()
.
- عمليات نقل المواقع الإلكترونية في
SplitRule
:- يستخدم كل من
minWidth
وminSmallestWidth
الآن وحدات بكسل مستقلة الكثافة بدلاً من وحدات البكسل. يمكن للتطبيقات استخدام الطلب التالي:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
أو ببساطة قسمةminWith
بالبكسل علىdisplayMetrics#density
.
- يستخدم كل من
- يجب نقل ثوابت السلوك النهائي إلى ثوابت الفئة
FinishBehavior
التي تشبه التعداد:FINISH_NEVER
تغيير إلىFinishBehavior.NEVER
.FINISH_ALWAYS
تغيير إلىFinishBehavior.ALWAYS
.FINISH_ADJACENT
تغيير إلىFinishBehavior.ADJACENT
.
- يجب نقل اتجاه التصميم إلى
SplitAttributes.LayoutDirection
:ltr
تغيير إلىSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
تغيير إلىSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
تغيير إلىSplitAttributes.LayoutDirection.LOCALE
.- يجب نقل
splitRatio
إلىSplitAttributes.SplitType.ratio(splitRatio)
.
- عمليات نقل بيانات
SplitPairRule.Builder
:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
تغيير إلىkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
- تم تغيير
setLayoutDirection(layoutDirection)
وsetSplitRatio(ratio)
إلىkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- تأخذ
setFinishPrimaryWithSecondary
وsetFinishSecondaryWithPrimary
ثوابت تشبه التعدادFinishBehavior
. راجِع "عمليات نقل قاعدة سبليت" للحصول على التفاصيل. - استخدِم
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
لعرض التقسيمات على الأجهزة العمودية.
- عمليات نقل بيانات
SplitPlaceholder.Builder
:- تتضمن فقط المعلمتين
filters
وplaceholderIntent
. تنتقل الخصائص الأخرى إلى مجموعات سترز. يمكنك الاطّلاع على "عمليات نقل بيانات splitDoubleRule.Builder" لمعرفة التفاصيل. - تأخذ
setFinishPrimaryWithPlaceholder
ثوابت تشبه التعدادFinishBehavior
. راجِع "عمليات نقل قاعدة سبليت" للحصول على التفاصيل. - تم تغيير
setLayoutDirection(layoutDirection)
وsetSplitRatio(ratio)
إلى:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- استخدِم
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
لعرض التقسيمات على الأجهزة العمودية.
- تتضمن فقط المعلمتين
الإصدار 1.1.0-alpha06
22 شباط (فبراير) 2023
تم طرح "androidx.window:window-*:1.1.0-alpha06
". يحتوي الإصدار 1.1.0-alpha06 على هذه الالتزامات.
الميزات الجديدة
- عرض نسخة تجريبية للحصول على
WindowLayoutInfo
من سياق واجهة المستخدم.
تغييرات واجهة برمجة التطبيقات
- أضِف السمة
splitSupportStatus
للإشارة إلى ما إذا كانت ميزة "تضمين النشاط" متوفّرة. (I10024) - جعل واجهة برمجة التطبيقات
WindowLayoutInfo
لسياق واجهة المستخدم تجريبية (I58ee0) - وتوفّر واجهة برمجة التطبيقات
WindowAreaController
وواجهة برمجة التطبيقات لتفعيل وضعRearDisplay
لنقل النافذة الحالية إلى الشاشة المتوافقة مع الكاميرا الخلفية. (Iffcbf) - يمكنك تعديل لون الخلفية التلقائي. (I1ac1b)
- أضِف مَعلمات
SplitAttributes
. (I18bdd) - يمكنك إضافة واجهات برمجة تطبيقات خاصة بـ
SplitRule
وSplitAttributes
وSplitAttributesCalculator
. (I92d23) - يمكنك تحسين واجهات برمجة التطبيقات من خلال
maxAspectRatio
:- يمكنك استبدال
alwaysAllow()
وalwaysDisallow()
بـALWAYS_ALLOW
وALWAYS_DISALLOW
. - تعديل مستندات واجهة برمجة التطبيقات الخاصة بـ @see باستخدام مستندات مستقلة (I3057b)
- يمكنك استبدال
- تمت إزالة دوال الإنشاء التالية من واجهات برمجة التطبيقات العامة لأنه ليس من المفترض أن يتم استدعائها بواسطة التطبيقات.
- دالة إنشاء
SplitInfo
- الدالة الإنشائية
ActivityStack
(Ide534)
- دالة إنشاء
- تستغرق
SplitRule
الآنmaxAspectRatioInPortrait/Landscape
. ولا يسمح بتقسيم الأنشطة إلا عندما تكون نسبة العرض إلى الارتفاع للحدود الرئيسية أصغر منmaxAspectRatio
المطلوبة أو تساويها. (Ia5990) - تغيير
RuleController#parseRules
لتصبح ثابتة (I785df) - تحسين واجهات برمجة التطبيقات المتعلقة بميزة "تضمين النشاط"
- محاذاة تسمية واجهة برمجة التطبيقات: استخدام خيار "إضافة/إزالة" لمثيلات متعددة:
- تغييران (
registerRule
) إلىaddRule
- تغييران (
unregisterRule
) إلىremoveRule
- استبدال
getSplitRules
بـgetRules
لأنّActivityRule
ليست قاعدة تقسيم - إضافة
RuleController#setRules
لإعداد مجموعة من القواعد - استخرِج واجهات برمجة التطبيقات ذات الصلة بالقواعد من
SplitController
إلىRuleController
سينغلتون. وهم: addRule
removeRule
getRules
setRules
clearRules
parseRules
- استخرِج
#isActivityEmbedded
منSplitController
إلى سينغلتونActivityEmbeddingController
. وهم: isActivityEmbedded
- إزالة
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)
- لم نعد نميز القواعد الثابتة بقواعد وقت التشغيل. مع ذلك، يؤدي استدعاء نتائج
#clearRules
إلى محو جميع القواعد بغض النظر عن تسجيلها في تعريفات قواعد XML الثابتة أو في وقت التشغيل. لتطبيق السلوك القديم علىSplitController#clearRegisteredRules
، يُرجى استدعاءRuleController#parseRules
باستخدام معرِّف موارد XML وطلبRuleController#setRules
لإعادة ضبط القواعد. قبل هذا التغيير:SplitController.getInstance(context).clearRegisteredRules()
بعد هذا التغيير:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
(Ib3967)
- تحسين واجهات برمجة التطبيقات SplitRules:
- يجب استخدام الحد الأدنى للأبعاد في DP بدلاً من وحدات البكسل في
SplitRule
. - إعادة الهيكلة في أداة إنشاء
SplitRule
لاحتساب الحد الأدنى للأبعاد اختياريًا. (I95f17)
- يجب استخدام الحد الأدنى للأبعاد في DP بدلاً من وحدات البكسل في
- تمرير السياق لتهيئة
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
abdActivityFilter#intentAction
للسماح للمتصل بتمييز الفلاتر المختلفة (I41f22) - إزالة واجهات برمجة التطبيقات
@Deprecated
من واجهة برمجة التطبيقات التجريبية (I216b3) - إزالة
@ExperimentalWindowApi
لواجهات برمجة التطبيقات لتضمين الأنشطة (I69ebe) - إخفاء دالة إنشاء
ActivityRule
، استخدِم أداة الإنشاء بدلاً من ذلك. (If4eb6) - يمكنك إضافة واجهات برمجة تطبيقات للتحقّق مما إذا كان النشاط جزءًا من
ActivityFilter
. (Ia43cf) - تعديل ملفات واجهة برمجة التطبيقات لتعكس التغييرات في
WindowMetrics
وWindowMetricsCalculatorCompat
صف (I667fe) - تعديل JavaScript لخاصية "
ActivityEmbedding
" واسم الفئة (Ia1386) - جارٍ إضافة أسماء علامات المواقع الإلكترونية
ActivityEmbedding
التي سيتم استخدامها في ملف AndroidManifest.xml (Id1ad4) - تمت إضافة واجهة برمجة التطبيقات
SplitPlaceholderFinishBehavior
وSplitPlaceholderRule.finishPrimaryWithPlaceholder
الجديدتَين، وتحلّ هذه الواجهة محلّSplitPlaceholderRule.finishPrimaryWithSecondary
الحالي الذي يحدِّد وقت اكتمال أنشطة العناصر النائبة وكيف يجب أن تعمل الأنشطة المرتبطة في ميزة "تضمين الأنشطة". (I64647)
إصلاح الأخطاء
- وتوفّر واجهة برمجة التطبيقات
WindowAreaController
وواجهة برمجة التطبيقات لتفعيل وضعRearDisplay
لنقل النافذة الحالية إلى الشاشة المتوافقة مع الكاميرا الخلفية. (I388ab)
الإصدار 1.1.0-alpha03
27 تموز (يوليو) 2022
تم طرح "androidx.window:window-*:1.1.0-alpha03
". يتضمّن الإصدار 1.1.0-alpha03 هذه الالتزامات.
الميزات الجديدة
- عدِّل القيم التلقائية لقواعد التضمين.
تغييرات واجهة برمجة التطبيقات
- عدِّل القيم التلقائية لتضمين خصائص القاعدة. (Ic4d35)
الإصدار 1.1.0-alpha02
11 أيار (مايو) 2022
تم طرح "androidx.window:window-*:1.1.0-alpha02
". يحتوي الإصدار 1.1.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
- حرر مكتبات المحولات لدعم Java وRxJava.
الإصدار 1.1.0-alpha01
11 أيار (مايو) 2022
تم طرح "androidx.window:window-*:1.1.0-alpha01
". يحتوي الإصدار 1.1.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
- إصدار المحوّلات لدعم جافا وRxJava
الإصدار 1.1.0-alpha01
20 نيسان (أبريل) 2022
تم طرح "androidx.window:window:1.1.0-alpha01
". يحتوي الإصدار 1.1.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
- إصلاح خطأ يتسبّب في توقف إطلاق ميزات الطي على خلفية التطبيق.
- لمحة عن واجهة برمجة التطبيقات Activityembedding API التجريبية
تغييرات واجهة برمجة التطبيقات
- واجهة برمجة تطبيقات عامة للتحقق مما إذا كان النشاط مضمّنًا. (I39eb7)
إصلاح الأخطاء
- إضافة واجهات برمجة تطبيقات تُخصِّص السلوك النهائي للحاويات في تقسيمات الأنشطة (I1a1e4)
- تمت إضافة خيار ضبط جديد لقواعد تقسيم النشاط. (Iec6af)
الإصدار 1.0
الإصدار 1.0.0
26 يناير 2022
تم طرح "androidx.window:window-*:1.0.0
". يتضمّن الإصدار 1.0.0 هذه الالتزامات.
الميزات الرئيسية للإصدار 1.0.0
- إتاحة طي الهواتف من خلال
WindowInfoTracker
وFoldingFeature
WindowMetricsCalculator
للمساعدة في حساب مقاييس WindowMetrics الحالية.
الإصدار 1.0.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح "androidx.window:window-*:1.0.0-rc01
". يحتوي الإصدار 1.0.0-rc01 على هذه الالتزامات.
الميزات الجديدة
- إتاحة إمكانية طي الهواتف من خلال
WindowInfoTracker
. - إضافة طرق لحساب
WindowMetrics
الحالية والحد الأقصى - إضافة واجهات برمجة تطبيقات تجريبية داعمة
الإصدار 1.0.0-beta04
17 تشرين الثاني (نوفمبر) 2021
تم طرح "androidx.window:window-*:1.0.0-beta04
". يتضمّن الإصدار 1.0.0-beta04 هذه الالتزامات.
الميزات الجديدة
- إعادة تسمية WindowInfoRepository إلى WindowInfoTracker.
- اجعل "النشاط" تبعية واضحة لـ WindowInfoTracker.
- أضِف قاعدة اختبارية بسيطة لـ WindowMetricsحاسبة مطوّري البرامج الذين يستخدمون Robolectric.
تغييرات واجهة برمجة التطبيقات
- استخراج الإضافات (I25a5f)
- add isإفراغ في ActivityStack (I5a4e6)
- إعادة تسمية WindowInfoRepository إلى WindowInfoTracker.
- قم بتحديث تبعيات java/rxjava/testing لمطابقتها. (I0da63)
- أضف قاعدة اختبار لـ WindowMetricsحاسبة بسيطة. (Ibacdb)
الإصدار 1.0.0-beta03
27 تشرين الأول (أكتوبر) 2021
تم طرح "androidx.window:window-*:1.0.0-beta03
". يتضمّن الإصدار 1.0.0-beta03 هذه الالتزامات.
الميزات الجديدة
- يمكنك إضافة واجهات برمجة تطبيقات تجريبية لتضمين الأنشطة. يسمح إصدار التخطيط الأولي هذا بعرض نشاطين جنبًا إلى جنب.
تغييرات واجهة برمجة التطبيقات
- وقد تمت إزالة واجهة برمجة التطبيقات الحاليةWindowMetrics لأننا لا يمكننا تقديمها بدقة. يُرجى استخدام واجهة برمجة التطبيقات WindowMetricsScale بدلاً من ذلك (Icda5f)
- تم تحديث واجهة برمجة تطبيقات الإضافات. (Ica92b)
- تمت إضافة واجهة لميزة جديدة تسمح بتضمين الأنشطة وعرضها جنبًا إلى جنب داخل نافذة المهام الرئيسية. (I5711d)
- تم إخفاء الإنشاءات لـ WindowMetrics وwindowLayoutInfo، ويمكنك استخدام واجهات برمجة تطبيقات الاختبار بدلاً من ذلك. (I5a1b5)
- إضافة واجهة برمجة تطبيقات لإنشاء كائنات WindowLayoutInfo وهمية. (I4a2fd)
إصلاح الأخطاء
- تم إصلاح تسرُّب الذاكرة. (I3fc79، b/202989046)
الإصدار 1.0.0-beta02
1 أيلول (سبتمبر) 2021
تم طرح "androidx.window:window-*:1.0.0-beta02
". يتضمّن الإصدار 1.0.0-beta02 هذه الالتزامات.
الميزات الجديدة
- أضف تعليقًا توضيحيًا تجريبيًا لإضافة تعليقات توضيحية إلى واجهات برمجة التطبيقات التجريبية. (I9f1b6)
- أضِف طريقة اختبار لإنشاء ميزة FoldingFeature اختبارية تقبل المستطيل. وسيسهل ذلك إجراء الاختبارات عند استخدام Robolectric بدلاً من النشاط الفعلي. (Id1cca)
الإصدار 1.0.0-beta01
18 آب (أغسطس) 2021
تم طرح "androidx.window:window-*:1.0.0-beta01
". يتضمّن الإصدار 1.0.0-beta01 هذه الالتزامات.
الميزات الجديدة
- تم إزالة الثوابت القديمة وإدخال
FoldingFeature
في واجهة.
تغييرات واجهة برمجة التطبيقات
- عليك إزالة الثوابت القديمة وجعل ميزة FoldFeature واجهة. (I9a2d5)
إصلاح الأخطاء
- تمت ترقية المكتبات التي تعتمد على مكتبة
Test Core
إلى الإصدار1.4.0
وستعمل الآن مع الإصدار S من نظام Android الأساسي. (I88b72، b/189353863)
الإصدار 1.0.0-alpha10
4 آب (أغسطس) 2021
تم طرح "androidx.window:window-*:1.0.0-alpha10
". يحتوي الإصدار 1.0.0-alpha10 على هذه الالتزامات.
الميزات الجديدة
- أعد تسمية WindowInfoRepo إلى WindowInfoRepository واضبط الفئات أو الملفات المقابلة.
- تحويل مقاييس الفترات الحالية إلى مسار في WindowInfoRepository لأنّ القيمة تتغير بمرور الوقت
- إعادة تسمية محوّل WindowInfoRepoJavaAdapter إلى WindowInfoRepoCallbackAdapter
- إضافة طريقة مساعِدة لإنشاء عناصر اختبار FoldingFeature
- قم بتحديث الحِزم إلى مجموعات الفئات بناءً على الميزة التي تدعمها.
تغييرات واجهة برمجة التطبيقات
- إعادة تسمية ActivityExt إلى "إضافات النشاط" من "المستودع" إلى "المستودع". (I61a16)
- تحديث الحِزم للصفوف (I23ae2)
- إزالة WindowMetrics من WindowInfoRepo (I24663)
- إزالة WindowManager واستخدام WindowInfoRepo
- جعل WindowBackend داخليًا. (I06d9a)
- تحويل مقاييس الفترات إلى مسار
- إعادة تسمية محوّل جافا إلى WindowInfoRepoCallbackAdapter
- أزِل CallbackFlow حتى لا يتم استخدام المزيد من واجهات برمجة التطبيقات التجريبية. (Ia4d15)
- إضافة طريقة مساعِدة لإنشاء ميزات عرض تجريبية
- التغيير من occlusionMode إلى occlusionType (If4cff)
إصلاح الأخطاء
- إصلاح خطأ Proguard الذي كان يتم بموجبه إزالة المكتبة الأساسية.
- إصلاح الخطأ المتمثل في عدم إرسال WindowLayoutInfo إلى المشتركين الإضافيين.
- إصلاح الخطأ الذي يؤدي إلى عدم تشغيل تغييرات الإعدادات لتعديلات ميزات الطي
الإصدار 1.0.0-alpha09
30 حزيران (يونيو) 2021
تم طرح "androidx.window:window-*:1.0.0-alpha09
". يحتوي الإصدار 1.0.0-alpha09 على هذه الالتزامات.
الميزات الجديدة
- التغيير من ثوابت الأعداد الصحيحة إلى التعدادات غير المحدودة.
- أضف أداة اختبارية تجريبية لإنشاء ميزات طي الاختبار.
تغييرات واجهة برمجة التطبيقات
- إضافة طريقة مساعِدة لإنشاء ميزات عرض تجريبية (I3cf54)
- التغيير من
occlusionMode
إلىocclusionType
- التغيير من
إصلاح الأخطاء
- إطلاق القيمة الأولية عند إضافة مستهلكين متعددين لمصادر البيانات.
الإصدار 1.0.0-alpha08
16 حزيران (يونيو) 2021
تم طرح "androidx.window:window-*:1.0.0-alpha08
". يحتوي الإصدار 1.0.0-alpha08 على هذه الالتزامات.
الميزات الجديدة
- تم إصدار أداة اختبار لتسهيل الاختبار عند استخدام WindowInfoRepository. استخدِم WindowInfoRepository للحصول على معلومات عن DisplayFeatures وwindowMetrics. (I57f66، Ida620)
الإصدار 1.0.0-alpha07
2 حزيران (يونيو) 2021
تم طرح "androidx.window:window-*:1.0.0-alpha07
". يحتوي الإصدار 1.0.0-alpha07 على هذه الالتزامات.
الميزات الجديدة
- نقل مكتبة النوافذ الأساسية إلى Kotlin سنستخدم الكوروتينات ونُعلّق الدوال لعرض البيانات غير المتزامنة من الآن فصاعدًا.
- أضف WindowInfoRepo كنقطة تفاعل رئيسية للحصول على WindowMetrics وتدفق WindowLayoutInfo.
- عنصر
window-java
جديد لعرض واجهات برمجة التطبيقات المتوافقة مع Java لتسجيل طلبات معاودة الاتصال وإلغاء تسجيلها. - عناصر جديدة من
window-rxjava2
وwindow-rxjava3
لعرض واجهات برمجة التطبيقات المعدَّلة على RxJava
تغييرات واجهة برمجة التطبيقات
- أضِف
WindowServices
لتوفير التبعيات بشكل موحّد.- يمكنك إضافة واجهة برمجة تطبيقات مستندة إلى الكوروتين لاستهلاك معلومات تنسيق النوافذ. (Iab70f)
- نقل مكتبة مدير النوافذ الأساسية إلى لغة البرمجة Kotlin (Icca34)
إصلاح الأخطاء
- إضافة فئة بيانات جديدة لتمثيل حدود العنصر. (I6dcd1)
الإصدار 1.0.0-alpha06
5 أيار (مايو) 2021
تم طرح "androidx.window:window:1.0.0-alpha06
". يحتوي الإصدار 1.0.0-alpha06 على هذه الالتزامات.
الميزات الجديدة
- لقد بدأنا عملية نقل البيانات إلى لغة Kotlin وسننتهي في الإصدار التالي.
- تمت إزالة DeviceState من واجهة برمجة التطبيقات العامة. يُرجى استخدام FoldingFeature بدلاً من ذلك.
- لقد أزلنا
STATE_FLIPPED
من حالات FoldingFeature لأنّه غير متوافق مع أي حالة استخدام في الوقت الحالي. - وأزلنا أيضًا واجهات برمجة التطبيقات الأخرى التي تم إيقافها نهائيًا.
تغييرات واجهة برمجة التطبيقات
- إضافة Kotlin كتبعية.
- نقل المكتبة الأساسية إلى Kotlin (Idd995)
- تمت إزالة أداة إنشاء
DisplayFeature
. (I61fa4) - تمت إزالة
DeviceState
من واجهة برمجة التطبيقات العامة، ويمكنك استخدامFoldingFeature
بدلاً منها. (Id6079) - أزِل معاودة الاتصال بحالة الجهاز من الإضافات. (I5ea83)
- يُرجى إزالة "
STATE_FLIPPED
" من ميزة FoldingFeature. (I9c4e1) - أزِل طرق التسجيل المتوقّفة نهائيًا. (Ib381b)
الإصدار 1.0.0-alpha05
24 آذار (مارس) 2021
تم طرح "androidx.window:window:1.0.0-alpha05
". يحتوي الإصدار 1.0.0-alpha05 على هذه الالتزامات.
الميزات الجديدة
لقد أضفنا طرقًا ملائمة إلى ميزة FoldingFeature حتى تتمكّن التطبيقات من معرفة ما إذا كانت هذه الميزة تفصل في المفصّلة وتغطّيها وتحدِّد اتجاهها. نقوم أيضًا بإخفاء نوع المفصلة حتى
سنزيل طرق القراءة المتزامنة من WindowManager. تعتبر طرق القراءة المتزامنة عرضة للخطأ نظرًا لوجود شرط سباق ضمني. يمكنك تسجيل المستمعين وعمليات معاودة الاتصال لتلقّي آخر الأخبار في WindowLayoutInfo.
تغييرات واجهة برمجة التطبيقات
- إضافة طرق ملائمة للعمل باستخدام ميزات FoldingFeature (Ie733f)
- إزالة طُرق القراءة المتزامنة من WindowManager (I96fd4)
الإصدار 1.0.0-alpha04
10 آذار (مارس) 2021
تم طرح "androidx.window:window:1.0.0-alpha04
". يحتوي الإصدار 1.0.0-alpha04 على هذه الالتزامات.
الميزات الجديدة
- إصلاح خطأ لا يُبثّ فيه WindowLayoutInfo إذا لم يتم تنفيذ المصنّع الأصلي للجهاز. نصدر الآن WIndowLayoutInfo فارغة.
- إصلاح خطأ يؤدي إلى عدم تعديل الحالة بشكل صحيح إذا تغيّرت حالة المفصّلة أثناء تشغيل التطبيق في الخلفية الآن يجب أن تكون الحالة متسقة.
- عدِّل ملفات Proguard لتجاهل التحذيرات من تبعيات وقت التشغيل.
إصلاح الأخطاء
- انشر قيمة فارغة عندما تكون مكتبة المصنّع الأصلي للجهاز غير متوفّرة. (Ide935)
الإصدار 1.0.0-alpha03
18 شباط (فبراير) 2021
تم طرح "androidx.window:window:1.0.0-alpha03
". يحتوي الإصدار 1.0.0-alpha03 على هذه الالتزامات.
الميزات الجديدة
- إطلاق قيمة فارغة في WindowLayoutInfo عندما يكون تنفيذ المصنّع الأصلي للجهاز فارغًا. ومن شأن ذلك أن يسهّل عليك استخدام المكتبة على المزيد من الأجهزة. وبما أنّ واجهات برمجة التطبيقات غير متزامنة، لا يزال من المستحسن أن تكتب التطبيقات بعض الرموز الدفاعية وتُصدر قيمة تلقائية بعد انتهاء المهلة. ليس لدينا أي ضمانات بشأن عمليات تنفيذ المصنّعين الأصليين للأجهزة وقد يتأخّر عرض القيمة الأولية.
إصلاح الأخطاء
- انشر قيمة فارغة عندما تكون مكتبة المصنّع الأصلي للجهاز غير متوفّرة. (Ide935)
الإصدار 1.0.0-alpha02
27 كانون الثاني (يناير) 2021
تم طرح "androidx.window:window:1.0.0-alpha02
". يحتوي الإصدار 1.0.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
لقد أوقفنا نهائيًا بعض واجهات برمجة التطبيقات للمساعدة في تبسيط واجهة برمجة التطبيقات وتقليل الأخطاء. من الأمثلة البارزة إزالة عمليات القراءة المتزامنة من WindowManager وإيقاف DeviceState نهائيًا. يمكن أن تؤدي عمليات القراءة المتزامنة إلى حالات سباقات، وتحتوي على واجهة مستخدم غير صحيحة.
لقد حوّلنا واجهة DisplayFeature إلى واجهة ستعمل عليها الميزات الأخرى من الآن فصاعدًا. ميزتنا الأولى هي FoldingFeature التي تمثّل الآن طيّ الشاشة أو المفصّلة. يحتوي هذا أيضًا على حالة المفصّلة التي تستبدل DeviceState.
تم تقديم WindowMetrics في نظام Android 11 لتزويد المطوّرين بطريقة بسيطة للاستعلام عن مقاييس حول النافذة، مثل موضعها وحجمها على الشاشة وأي أجزاء داخلية للنظام. تمت إتاحة واجهة برمجة التطبيقات في هذا الإصدار لكي يتمكّن المطوّرون من الاستفادة من WindowMetrics والاستمرار في إتاحة إصدارات Android القديمة. يمكن الحصول على WindowMetrics من خلال
WindowManager#getCurrentWindowMetrics()
وواجهة برمجة التطبيقات WindowManager#get تسوقالحد الأقصى وإطاري للمقاييس() .
تغييرات واجهة برمجة التطبيقات
- إيقاف واجهات برمجة التطبيقات التي ستتم إزالتها في الإصدار الأولي التالي (Ib7cc4)
- تحديثات
ExtensionInterface
لقبول مراجع النشاط الصريحة. (I07ded) - مقدمة من واجهة برمجة التطبيقات WindowMetrics. (I3ccee)
- إزالة طُرق القراءة المتزامنة من WindowManager (I69983)
- جعل حزمة ExtensionWindowBackend محمية. (Ied208)
إصلاح الأخطاء
- يجب تعديل واجهات برمجة تطبيقات
ExtensionInterface
لقبول السياقات المرئية. (I8e827)
المساهمة الخارجية
- ادمج DeviceState و WindowLayoutInfo بحيث يسهل الوصول إلى البيانات. (Id34f4)
الإصدار 1.0.0-alpha01
27 شباط (فبراير) 2020
تم إصدار androidx.window:window:1.0.0-alpha01
وandroidx.window:window-extensions:1.0.0-alpha01
. يحتوي الإصدار 1.0.0-alpha01 على هذه الالتزامات.
وهذا هو الإصدار الأول من مكتبة "مدير النوافذ".
الميزات الجديدة
DisplayFeature
: تحدد واجهة برمجة التطبيقات الجديدة هذه العطل في الأسطح المستقيمة المستمرة بشاشات مسطّحة مثل المفصلات أو الطيات.DeviceState
: توفّر واجهة برمجة التطبيقات الجديدة هذه الوضع الحالي للهاتف من قائمة من الحالات المحدّدة (على سبيل المثال،CLOSED
وOPENED
وHALF_OPENED
وما إلى ذلك).