واجهة مستخدم الإنشاء
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(الاطّلاع على مستندات مرجع واجهة برمجة التطبيقات لجميع حِزم Compose)
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 22 أكتوبر 2025 | 1.9.4 | - | 1.10.0-beta01 | - |
البنية
Compose هي مجموعة من 7 أرقام تعريف لمجموعات Maven ضِمن androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدَفة من الوظائف، ولكل منها مجموعة خاصة من ملاحظات الإصدار.
يوضّح هذا الجدول المجموعات ويتضمّن روابط لكل مجموعة من ملاحظات الإصدار.
| مجموعة | الوصف |
|---|---|
| compose.animation | إنشاء رسوم متحركة في تطبيقات Jetpack Compose لإثراء تجربة المستخدم |
| compose.compiler | تحويل دوال @Composable وتفعيل عمليات التحسين باستخدام مكوّن إضافي لمترجم Kotlin |
| compose.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاص بك. |
| compose.material | يمكنك إنشاء واجهات مستخدم Jetpack Compose باستخدام "مكوّنات Material Design" الجاهزة للاستخدام. هذه هي نقطة الدخول ذات المستوى الأعلى في Compose، وهي مصمَّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة في www.material.io. |
| compose.material3 | يمكنك إنشاء واجهات مستخدم Jetpack Compose باستخدام "مكوّنات Material Design 3"، وهي التطوّر التالي في Material Design. يتضمّن الإصدار 3 من Material تصميمات ومكوّنات محدّثة وميزات تخصيص Material You، مثل الألوان الديناميكية، وهو مصمّم ليكون متوافقًا مع الأسلوب المرئي الجديد وواجهة مستخدم النظام في Android 12. |
| compose.runtime | الوحدات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي الذي يستهدفه مكوّن Compose الإضافي للمترجم. |
| compose.ui | المكوّنات الأساسية لواجهة مستخدم Compose اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال |
تحديد الاعتماديات
لإضافة اعتمادية على Compose، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.10
الإصدار 1.10.0-beta01
22 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-beta01. يتضمّن الإصدار 1.10.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة تحسينًا لإرسال تغيير التركيز. يمكن إيقاف هذه الميزة باستخدام
isOptimizedFocusEventDispatchEnabled = false(I919fb، b/449228515) - تعديل جميع واجهات برمجة التطبيقات التي تعمل باللمس غير المباشر لاستخدام اسم واجهات برمجة التطبيقات التي تعمل بمؤشر غير مباشر لتتوافق مع واجهات برمجة التطبيقات التي تعمل بإدخال المؤشر (I238ce، b/451607214)
- تُصدر الدوال
TextDirectionوTextAlignوHyphensوFontSynthesisوvalueOfالآن الخطأIllegalArgumentExceptionعند تلقّي قيمة غير معروفة. (I07c67) - عدِّل
CompositionDataTree.makeTreeلتمرير القيم التلقائية بدلاً من دالة التغليف. (Id64a6، b/445229688) - إنّ واجهات برمجة التطبيقات لقواعد الاختبار
createComposeRuleوcreateAndroidComposeRuleوcreateEmptyComposeRuleالتي تقبل المَعلمةeffectContextثابتة، وتكون القيمة التلقائية للمَعلمة هيEmptyCoroutineContext. (If400c، b/450540702) - تمت إعادة تسمية
UnplacedStateAwareModifierNodeإلىUnplacedAwareModifierNode(I6a551، b/449719932) - التراجع عن تحسين "التقاط المحتوى" (Ic000b، b/442364065)
- تمت إضافة علامة ميزة
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. وقد أتاحت هذه الميزة تحسين الأداء حيث تستخدم طلبات الإحداثيات، مثلLayoutCoordinates.positionInRoot()، الإزاحات المخزّنة مؤقتًا المتوفّرة لدينا فيRectManager، بدلاً من الانتقال إلى الشجرة بأكملها في كل طلب. (Ieaadc)
إصلاح الأخطاء
- تستخدم
PlaceholderSpanالآن الضبط غير الخطي لحجم الخط بشكل صحيح (Id2ead، b/324462728) - استخدِم
ViewCompatلتنفيذ ثوابت الملاحظات الحسية التي تتوافق مع مستوى النظام الأساسي، مع الاعتماد على دعمها الاحتياطي للثوابت الأحدث. (Ib5a00)
الإصدار 1.10.0-alpha05
8 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha05. يتضمّن الإصدار 1.10.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تسبَّب في وضع النوافذ المنبثقة المتداخلة بشكل غير صحيح في أعلى الشاشة، وأصبحت الآن مرتبطة بشكل صحيح بالنافذة المنبثقة الرئيسية. (Id4603، b/191279752)
- تم إصلاح مشكلة التفاف التركيز مع طرق العرض الأخرى في التسلسل الهرمي. (I95223، b/446028624)
- إصلاح الحقول التي تتضمّن مَعلمات مضمّنة غير متوفّرة في "أداة الفحص" في دوال lambda التي تم إنشاؤها بواسطة Kotlin 2.2.20 (I9855d، b/447110005)
- إصلاح مشكلة تداخل أسماء موارد الملء التلقائي بين واجهة المستخدم والوحدات الأساسية (I5da5a)
المساهمة الخارجية
- تمت إعادة تسمية العنصر
UiModesإلى AndroidUiModes للإشارة إلى أنّه تم استخراج ثوابته من Android API. (Ia0a77)
الإصدار 1.10.0-alpha04
24 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha04. يتضمّن الإصدار 1.10.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت ترقية صيغة قاعدة اختبار Compose التي تقبل المَعلمة
CoroutineContextإلى إصدار ثابت. تمت إزالة التعليق التوضيحي التجريبي، ولم يعُد على المطوّرين الموافقة على استخدام واجهة برمجة التطبيقات هذه. (I74e6e) - تمّت إزالة بطاقة "
ComposeUiFlags.isRectTrackingEnabled". لا يتم تفعيل هذه المنطق دائمًا. (Id78df) - تم إيقاف التحميل الزائد المضمّن لـ
Updater#setلأنّه كان يغلف القيمة المقدَّمة عدة مرات (Id679e) - وضع علامة على السمة الدلالية
onAutofillTextعلى أنّها متوقّفة نهائيًا (I6f81c) - تم طرح
UnplacedStateAwareModifierNode. توفّر هذه السمة دالة ردّ يتم استدعاؤها عندما لا يكون التصميم الذي تم وضعه سابقًا معروضًا بعد الآن. (I8fdd8، b/309776096) - تم تصحيح المستندات الخاصة بالسمة
RetainObserver.onRetainedوإضافة السمةRetainObserver.onUnusedالتي تشبه السمةRememberObserver.onAbandoned. (Ia6fc5) - تمت إضافة
onVisibilityChangedNode()، الذي ينتجModifier.Node، ويستخدمهModifier.onVisibilityChanged()من خلال التفويض، ما يتيح التوسّع في هذه الوظيفة فيModifier.Nodeالمخصّص. (I70d84، b/443001320)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عرض المحتوى المضمّن عند وضعه في السطر الأخير من النص المتعدد الأسطر الذي تم اقتطاعه باستخدام علامات الحذف، على الرغم من أنّ العنصر النائب يسبق المنطقة التي تم اقتطاعها. (I76aaf، b/441829208)
الإصدار 1.10.0-alpha03
10 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha03. يتضمّن الإصدار 1.10.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تعيد هذه السمة تسمية
DelegatableNode.invalidateLayoutForSubtreeإلىDelegatableNode.invalidateMeasurementForSubtree. (I94257، b/430106107) - يزيل أداة المطابقة
isInHiddenAccessibilitySubtreeالمكرّرة. (I4476c، b/443792965) - توفّر هذه السمة تتبُّع تسلسل استدعاء الدوال البرمجية المستند إلى مفتاح المجموعة في Compose، ويكون مفعَّلاً تلقائيًا لجميع التطبيقات التي تم تصغيرها. سيتم إنشاء ملف ربط Proguard لهذه التتبُّعات من خلال المكوّن الإضافي لنظام Gradle في "مترجم Compose" بدءًا من الإصدار 2.3.0 من Kotlin. (Ifbcb5)
- تستخدم
Modifier.skipToLookaheadSizeالآن دالة lambda مفعّلة تلقائيًا لا تتيح تخطّي الحجم إلا عندما يكون الانتقال المشترَك نشطًا، تمامًا مثلModifier.skipToLookaheadPosition. (Ibe0f5، b/432485585) - تمت إزالة
ComposeUiFlags.isOutOfFrameDeactivationEnabledوأصبحت هذه الوظيفة مفعَّلة دائمًا. (I421ed) - نقل دوال المصنع لإنشاء مثيلات
FillableDataإلى العنصر المرافق بدلاً من استدعاءFillableData(value)، استخدِم طرق الإنشاء الجديدة:FillableData.createFrom(value). (I2e200، b/441719650) - أضِف
BeyondBoundsLayoutModifierNodeعقدة معدِّل جديدة لتنفيذ تخطيط خارج الحدود للبحث عن التركيز. (I39be1، b/416133658) - يرسل
FocusTargetModifierNode.requestFocus()التركيز إلى أحد العناصر الفرعية عندما لا يكون قابلاً للتركيز عليه. أصبحت هذه السياسة الآن متوافقة معFocusRequester.requestFocus()وFocusRequesterModifierNode.requestFocus(). إذا لم تكن بحاجة إلى هذا السلوك، اضبط العلامةComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledعلى "false" في تطبيقك. (Icca5c، b/436863604) - توفير حجم النافذة المستند إلى DP في
WindowInfo(I9322b، b/424442112) - تمت إزالة العلامة
isNestedScrollDispatcherNodeFixEnabled. (If451a) - إتاحة استخدام قيم التاريخ في ميزة الملء التلقائي في واجهة برمجة التطبيقات
FillableDataتمت إضافةval dateMillisValue: Longلاسترداد معلومات التاريخ، وتمت إضافة أداة إنشاءFillableData(dateMillisValue: Long)مطابقة لإنشاء مثيلاتFillableDataمستندة إلى التاريخ. (Id072a)
المساهمة الخارجية
- تم تقديم الكائن
UiModesللإعلان عن الثوابت المستخدَمة في التعليق التوضيحيUiMode(I03cb8)
الإصدار 1.10.0-alpha02
27 أغسطس 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha02. يتضمّن الإصدار 1.10.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- عدِّل
FillableDataليتوافق مع المكوّنات غير النصية، مثل أزرار التبديل والقوائم، بما في ذلك القيم المنطقية والأعداد الصحيحة داخلFillableDataومنشئات المصنع لإنشاء مثيلات منطقية وقائمة منFillableDataالتي يتم تحويلها إلىAutofillValueفي النظام الأساسي. تتم أيضًا إضافة السمة الدلالية والإجراء ذي الصلة. (Ia8105، Icc5cf) - في وضع عدم اللمس، يحدّد نظام العرض التركيز الأوّلي/التلقائي على أحد العناصر التي يمكن التركيز عليها على الشاشة. تتم إضافة هذه الميزة إلى "إنشاء" ويمكن تفعيلها من خلال تفعيل
ComposeUiFlags.isInitialFocusOnFocusableAvailable. (Ib9178) - تمت إزالة العلامة
isPointerInteropFilterDispatchingFixEnabled. (Iaa589) - تمت إزالة العلامة
isNestedScrollInteropPostFlingFixEnabled. (I2a756) - أضِف أدوات مطابقة دلالية
isHiddenFromAccessibility()وisInHiddenAccessibilitySubtree(). (I9f5a1) - تمت إضافة
runCurrent()إلىMainTestClockلتنفيذ جميع المهام المستحقة في أداة الجدولة الأساسية. يتم ذلك لإتاحة إجراء الاختبارات علىStandardTestDispatcher، حيث تتم إضافة المهام إلى أداة الجدولة بدلاً من تنفيذها على الفور عندما يكون هناك تأخير بمقدار 0 ملي ثانية. يمكن إعداد اختبار لاستخدامStandardTestDispatcherمن خلال إنشاءComposeTestRuleوتمريرStandardTestDispatcherإليه. يتم إجراء الاختبارات تلقائيًا علىUnconfinedTestDispatcher، وفي هذه الحالة لن تحتاج إلى استدعاءrunCurrent()مطلقًا. - تمت إضافة إمكانية إجراء الاختبارات على
StandardTestDispatcher. في السابق، كان يتم إعداد إطار الاختبار باستخدامUnconfinedTestDispatcher(ولا يزال يتم ذلك)، وهو يختلف عن بيئة الإنتاج بطرق دقيقة. يمكنك الآن تغيير هذا الإعداد من خلال إنشاءStandardTestDispatcherوإضافته إلىeffectContextعند إنشاءComposeTestRule(أو عند استدعاء runComposeUiTest). (I334d0، b/254115946) - تعديل الرمز البرمجي لإنشاء شجرة من العُقد من
SlotTree(I997d3)
إصلاح الأخطاء
- تثبِّت واجهة مستخدم Compose الآن
RetainScopesمتوافقًا مع مراحل النشاط على Android. سيبقى السلوك التلقائي الآن على القيم التي تمretainها في جميع التغييرات في الإعدادات. (Id4a09، b/177562901)
المساهمة الخارجية
- تضيف هذه السمة إمكانية احتساب سرعة المؤشر استنادًا إلى أحداث المؤشر التي يتم تتبّعها باستخدام سلوك خاص بالمنصة.
VelocityTracker(I621e8)
الإصدار 1.10.0-alpha01
13 أغسطس 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha01. يتضمّن الإصدار 1.10.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- سيؤدي الآن الضغط على مؤشر الماوس أو لوحة اللمس في
ComposeViewإلى إزالة التركيز تلقائيًا إذا لم يحدث الضغط على المؤشر في حدود العقدة التي يتم التركيز عليها. وينتج عن ذلك تجربة مستخدم "النقر لإزالة التركيز" التي تكون أكثر توقعًا من السلوك الحالي عند استخدام أجهزة إدخال المؤشر. يمكن إيقاف هذا السلوك باستخدام واجهة برمجة تطبيقاتAbstractComposeView.isClearFocusOnPointerDownEnabledجديدة. (I6322b، b/282963174) - إضافة واجهة
FillableDataلتوفير أنواع مختلفة من مكونات الملء التلقائي، بالإضافة إلى النص (If9bd2) - واجهة برمجة تطبيقات جديدة تتيح تفعيل العناصر المشترَكة وإيقافها ديناميكيًا، كما تتيح احتساب ما إذا كان هناك انتقال حالي للعناصر المشترَكة. واجهة برمجة تطبيقات جديدة لإعداد حدود هدف بديلة عند التخلّص من العنصر المشترَك المستهدَف أثناء الانتقال واجهة برمجة تطبيقات جديدة للحصول على
LayoutCoordinatesLookaheadScope(I18dd4، b/409819304، b/395670637) - إضافة العلامة
isNestedScrollInteropIntegerPropagationEnabledللتحكّم في تجربة إرسال الأعداد الصحيحة إلى ميزة التوافق مع التمرير المتداخل (If8316) - تمت إضافة
requestFocusForChildInRootBounds()إلىDelegatableNodeلنقل التركيز إلى عنصر ثانوي يتداخل مع المستطيل المحدّد. (I001ef) - تمت إزالة العلامات
isOnScrollChangedCallbackEnabledوisAdjustPointerInputChangeOffsetForVelocityTrackerEnabledوisFlingContinuationAtBoundsEnabledوisAutomaticNestedPrefetchEnabledوDragGesturePickUpEnabledوisPointerInteropFilterDispatchingFixEnabledوisNestedScrollInteropPostFlingFixEnabledوisNestedScrollDispatcherNodeFixEnabled(I36c18) - تمت إضافة التعليق التوضيحي
@CheckResultإلى دالتَي البحث والتحديدSemanticsNodeلفرض استخدام القيم المعروضة. (I6f86e، b/201652748) - تحسين أداء عملية التقاط المحتوى (I3c7c0)
- تم تقديم
CompositionLocalالتي يمكن استخدامها لتعديل فرشاة تمييز الملء الناجح في ميزة "الملء التلقائي". (I52329) - تم تقديم واجهة Interpolatable جديدة تتيح الاستيفاء التلقائي بين الأنواع المختلفة، على افتراض أنّ أحد الأنواع يعرف كيفية التحويل من النوع الآخر. يتم استخدام هذه الواجهة في العديد من أنواع الإنشاء، مثل "الفرشاة" و"الشكل"، ولكن يمكن استخدامها خارجيًا أيضًا. (I58eab)
- تتيح الآن ميزة Scrollable إمكانية التعامل بشكل أفضل مع أحداث تمرير عجلة الماوس الثنائية الأبعاد. تم إطلاق واجهة برمجة تطبيقات اختبارية جديدة للمساعدة في اختبار حالات الاستخدام في
MouseInjectionScope. لقد طرحنا أيضًا حمولة زائدة جديدة لطُرق التمرير فيMouseInjectionScopeوعلامة للتحكّم في السلوك الجديد تُسمّىisMouseWheel1DAxisLockingEnabled(I136df). - إضافة
DeviceConfigurationOverridesلنوع لوحة المفاتيح وحالتها ونوع التنقّل وحالته وحالة شاشة اللمس ونوع وضع واجهة المستخدم (I282f0) - تمت إضافة
LineHeightStyle.Modeجديد باسمTight. يساعد هذا الوضع في فرض ارتفاعات أصغر للأسطر حتى عندما يكون من المحتمل أن تقطع الرموز الرسومية الأطول. (Id3849) - تتضمّن
BaselineShiftالآن قيمة "غير محدّد" لمنع التضمين. تتضمّنBaselineShiftوHyphensوLineBreakوTextAlignوTextDirectionالآنisSpecifiedدوال مساعدة. تتضمّنHyphensوTextAlignوTextDecorationوTextDirectionالآن طريقتَيvalueOf()والقيمة اللتين تتيحان التسلسل/إلغاء التسلسل بكفاءة. (I8d44c) - تمت إضافة واجهة طريقة
getDisplayNameجديدة للسماح بأسماء عرض مخصّصة لمثيلات مَعلمات المعاينة. (I19bdf، b/241699422) - عند مقارنة قيم Dp بالقيمة Unspecified باستخدام علامة أصغر من أو أكبر من، يتم الآن عرض القيمة false دائمًا. يؤدي استخدام
Dp.compareTo(Unspecified)دائمًا إلى عرض القيمة 0. سيؤدي ضبط العلامةComposeUiUnitFlags.isDpCompareToChangedعلى "خطأ" إلى إعادةDp.compareTo()إلى سلوكه السابق، حيث لا يؤدي دائمًا إجراء مقارنة بين Unspecified و"أقل من" و"أكبر من" إلى عرض القيمة "خطأ"، كما أنّcompareTo()مع Unspecified يتطابق مع سلوكFloat.compareTo(). (Ifa88b، b/429221319)
إصلاح الأخطاء
- تغيير الحد الأدنى التلقائي لإصدار SDK من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
- تم إصلاح مشكلة كانت تمنع إنشاء
AndroidComposeViewsجديدة أثناء إجراء عملية انتقال. (I2e23e، b/340894487، b/287484338) - إصلاح خطأ في الألوان عند استخدام رسم متّجهي يستخدِم لونًا واحدًا ويكون
fillColorغير معتم أو شفاف تمامًا (I3b041، b/328677973) - تم إصلاح مشكلة عدم تعديل الرموز التي تم تحميلها من خلال
painterResourceباستخدام ألوان خاصة بالمظهر عند تغيير المظهر. (I85ea0، b/424416571) - إضافة دلالات
onFillDataوfillableData(I45d9e) - يتم الآن تفعيل ترميز الحالة الخاص بالمنصة دائمًا في
StateRestorationTester. ويؤدي ذلك إلى توافق سلوك الاختبار مع استعادة حالة التطبيق الحقيقي، مثل Parcelization على Android. (I38211، b/408154192، b/382294247) - إصلاح الأعطال التي تحدث أحيانًا عند طلب التركيز (57b31a11، b/431111149)
الإصدار 1.9
الإصدار 1.9.4
22 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.4. يتضمّن الإصدار 1.9.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة اختفاء محتوى النص المضمّن إذا كان في السطر الأخير من نص متعدد الأسطر تم اقتطاعه باستخدام علامة الحذف، حتى إذا لم يكن المحتوى المضمّن في المنطقة التي تم اقتطاعها. (I76aaf، b/441829208)
- تم إصلاح مشكلة عدم استدعاء عمليات رد الاتصال الخاصة بالمعدِّل
onLayoutRectChangedدائمًا عندما لا تكون قيمةdebounceMillisصفرًا. (72aba47، b/445324854)
الإصدار 1.9.3
8 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.3. يتضمّن الإصدار 1.9.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم تلقّي معدِّلات
onVisibilityChanged/onFirstVisible/onLayoutRectChangedلعمليات معاودة الاتصال إذا كان التصميم الذي يتم نقله يحتوي على أكثر من 170 عنصرًا فرعيًا. (4f2fdd، b/445356774)
الإصدار 1.9.2
24 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.2. يتضمّن الإصدار 1.9.2 هذه التعديلات.
إصلاح الأخطاء
- يتم الآن تشغيل
Modifier.onVisibilityChanged()بشكل صحيح عند فصل عقدة أو إعادة استخدامها. (Ic5ce20) - تعمل السمتان
Modifier.onVisibilityChanged()وonLayoutRectChanged()الآن بشكل صحيح على معالجة تنسيقات العناصر الرئيسية باستخدامplaceWithLayer()لوضع العناصر الفرعية. (Ia05ac9) - بالنسبة إلى
Modifier.onVisibilityChanged()وonLayoutRectChanged()، يجب إرسال إشعار بشكل صحيح في الحالات الحدّية، مثل إزالة طبقة أو معدِّل طبقة أو تعديل خصائص الطبقة. (Ia05ac)
الإصدار 1.9.1
10 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.1. يتضمّن الإصدار 1.9.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح خطأ في الألوان عند استخدام رسم متّجهي يستخدِم لونًا واحدًا ويكون
fillColorغير معتم أو شفاف تمامًا (I3b041، b/328677973)
الإصدار 1.9.0
13 أغسطس 2025
تم طرح androidx.compose.ui:ui-*:1.9.0. يتضمّن الإصدار 1.9.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.8.0
- يمكنك الاطّلاع على التغييرات المهمة في الإصدار 1.9.0 في مشاركة المدونة هذه.
- تتطلّب عمليات التحقّق من Lint التي يتم شحنها مع Compose الآن توفُّر الإصدار 8.2.2 من "مكوّن Android الإضافي في Gradle" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي في Gradle"، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) فيgradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث. - تغيير غير متوافق مع الإصدارات السابقة: تنفّذ عقد التعديل
graphicsLayerالآنSemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافةSemanticsNodesجديد إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تفترض بنية شجرة الدلالات. على سبيل المثال، يمكن أن تفشل الاختبارات التي تستخدمonChildوonParentوonSiblingوطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لإصلاح حالات الفشل هذه هي إضافةtestTagإلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثلonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
الإصدار 1.9.0-rc01
30 يوليو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-rc01. يتضمّن الإصدار 1.9.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تعديل الرموز التي يتم تحميلها من خلال
painterResourceبألوان خاصة بالمظهر عند تغيير مظهر النظام. (I85ea0، b/424416571) - إصلاح الأخطاء في الإصدارَين 21(Lollipop) و28(Pie) من واجهة برمجة التطبيقات حيث تمت إعادة تسمية طرق الرسومات المهمة أثناء تحسينها (Iebf99، b/425120571، b/420462749)
- تأكَّد من أنّه يتم استدعاء معدِّلات
onLayoutRectChangedالتي تم إدراجها حديثًا في البداية. (l9aa91)، (lb348a) - تم إصلاح مشكلة عدم إبطال ذاكرة التخزين المؤقت للإزاحة بشكل صحيح، ما يؤدي إلى استدعاء أدوات تعديل
onLayoutRectChangedبإحداثيات غير صحيحة (ibd4cd)، (lddc57) - إصلاح مشكلة تلقّي التنسيقات التي تم تدويرها أو تحريفها لإحداثيات غير صحيحة من خلال معدِّلات
onLayoutRectChanged(lddc57، b/426750475)
المساهمة الخارجية
- تم إصلاح مشكلة اختفاء عناصر
dragAndDropSourceفيLazyListعند التمرير. شكرًا "فيكتور رندينا"! (dc3bcd3، b/425894792)
الإصدار 1.9.0-beta03
16 يوليو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-beta03. يتضمّن الإصدار 1.9.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحرّك الظلال الداخلية المموّهة بشكلٍ موحّد بشكلٍ صحيح مع الإزاحة.
الإصدار 1.9.0-beta02
2 يوليو 2022
تم طرح androidx.compose.ui:ui-*:1.9.0-beta02. يتضمّن الإصدار 1.9.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تغيير الكائن المصاحب إلى تجريبي ليتطابق مع الفئة (I8452a)
- تمت إزالة العلامة التجريبية
isTrackFocusEnabled(I003fd)
إصلاح الأخطاء
- عندما لا يكون هناك أي
WindowInsetsيتداخل مع محتوىComposeView، لا يتم تقديم قيمWindowInsetsRulers. (I71221)
الإصدار 1.9.0-beta01
18 يونيو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-beta01. يتضمّن الإصدار 1.9.0-beta01 هذه التعديلات.
التغييرات التي قد تؤدي إلى أعطال
- تنفّذ عقدة المعدِّل
graphicsLayerالآنSemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافةSemanticsNodesجديد إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تفترض بنية شجرة الدلالات. على سبيل المثال، يمكن أن تفشل الاختبارات التي تستخدمonChildوonParentوonSiblingوطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لإصلاح حالات الفشل هذه هي إضافةtestTagإلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثلonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
تغييرات واجهة برمجة التطبيقات
- تم تغيير
ShadowContextليصبح واجهة محكمة الإغلاق (I3ce40) - إضافة طريقة متعددة الوحدات لإنشاء حدث لمس غير مباشر (للاختبار) (I22e4c)
- يجعل
IndirectTouchEvent.nativeEventتجريبيًا. (I6fda5) - تعديل مساحة واجهة برمجة التطبيقات استنادًا إلى ملاحظات مجلس واجهة برمجة التطبيقات (Ibf378)
- إزالة الثابت
FrameRateCategory.NoPreferenceتمّت إعادة تسميةModifier.requestedFrameRateإلىModifier.preferredFrameRate. (I2f976) WindowInsetsRulers: تم تغييرrulersIgnoringVisibilityإلى الحد الأقصى. تم تغييرgetDisplayCutoutBounds()لتصبح دالة إضافية منPlacementScope. تم تغييرWindowInsetsAnimationPropertiesإلىWindowInsetsAnimation، وتم تغييرgetAnimationProperties()إلىgetAnimation(). (I3816f)- تم تغيير الفئة
ShadowParamsإلىShadow(I11cca) - تغيير حزمة واجهة برمجة التطبيقات الخاصة بمعدّل عرض اللقطات من
androidx.compose.ui.uiإلىandroidx.compose.ui(I8994e) - تم تغيير
InsetsRulersليكون في الرمز المشترك مع الاسمWindowInsetsRulers. تم تبسيط واجهة برمجة التطبيقات بحيث تكون جميع عمليات الإدخالWindowInsetsRulers. تم استخراج خصائص الرسوم المتحركة غير الخاصة بالمسطرة إلى فئةAnimationProperties. يمكن استخدامWindowInsetsRulers.innermostOf()لدمج عدةWindowInsetsRulers. (I2f0c6، b/415012444) - تمت إضافة واجهة برمجة تطبيقات للأدوات من أجل تحليل معلومات المصدر التي أضافها برنامج التجميع في Compose. (Iceaf9، b/408492167)
إصلاح الأخطاء
- تمت إزالة العلم الخاص بـ
isGetFocusedRectReturnEmptyEnabledبعد أن تم التحقّق من الميزة بالكامل. (Ife722) - إصلاح خطأ في
performScrollToNode، والذي لم يكن يصل في بعض الحالات إلى العقدة المستهدَفة. باستخدام هذا الإصلاح، من المفترض أن يصل دائمًا إلى العقدة المستهدَفة في هذه الحالات. من الآثار الجانبية لهذا التغيير أنّ موضع التمرير الدقيق في نهاية الإجراء قد يختلف الآن، ما يؤثّر في اختبارات لقطات الشاشة والاختبارات التي تفترض موضع التمرير الدقيق. (I2c8a1)
الإصدار 1.9.0-alpha04
4 يونيو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha04. يتضمّن الإصدار 1.9.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهات برمجة تطبيقات معدِّلة للظلال القابلة للتخصيص. (I2058d، b/160665122)
- أضِف السمة
SemanticsModifierNode.isImportantForBoundsالتي تحدّد ما إذا كان يجب أخذ العقدة في الاعتبار عند احتساب الحدود. تكون القيمة التلقائية للخاصية هي "صحيح"، ويمكن ضبطها على "خطأ" للإشارة إلى أنّه يجب عدم أخذ العقدة في الاعتبار عند تحديد الحدود. (I7ebec) - أضِف دالة مصنع
SemanticsPropertyKeyللإعلان عن خصائص دلالية خاصة بنظام التشغيل Android يتم توفيرها كإضافات تسهيل الاستخدام يتم عرضها من خلالAccessibilityNodeInfo.getExtras. (I2ed51) - تمت إزالة استخدامات
ComposeUiFlags.isRemoveFocusedViewFixEnabledوإيقاف العلامة نهائيًا. (I50328) - تقديم إطار عمل جديد قابل للتخصيص للظلال ويشمل ذلك
DropShadowPainterوInnerShadowPainterبالإضافة إلى تبعياتDropShadow/InnerShadow. تتم مشاركة البنية الأساسية للظلال بحيث يمكن مشاركة الظلال نفسها التي تم إنشاؤها في مواقع متعددة بدون الحاجة إلى إعادة إنشاء الظلال n مرة. (I24f7a، b/160665122) - نقدّم
CompositeShaderوCompositeShaderBrushاللذين ينشئان نتيجة مركّبة بين برنامجَي تظليل. أضِف أيضًاShaderBrush#transformلضبط مصفوفة تحويل للتظليل. (I2621a، b/160665122)
إصلاح الأخطاء
- تم إصلاح خطأ في
NestedScrollInteropConnectionكان يؤدي إلى ترتيب غير صحيح لطُرق الإشارة السريعة مقارنةً بطُرق العرض. (I56ad4) - في السابق، لم تكن مربّعات الحوار التي تملأ الشاشة تظهر ضمن منطقة القطع على الشاشة. تم إصلاح هذا الخطأ حتى تتمكّن مربّعات الحوار التي تتضمّن
decorFitsSystemWindows = falseوusePlatformDefaultWidth = falseمن الاستفادة من منطقة الصورة المقطوعة للشاشة. (I9e975) - تم إصلاح الخطأ الذي كان يؤدي إلى عدم رسم مؤشر التركيز الأخضر في
TalkBackبعد تفعيله أثناء تشغيل تطبيق Compose في الخلفية. (Ifd12a)
الإصدار 1.9.0-alpha03
20 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha03. يتضمّن الإصدار 1.9.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتيح العلامة
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledضبط المستطيل على قيمة فارغة عندما لا يكون هناك أي عنصر قابل للتركيز فيComposeView. يمنع ذلك عملية البحث المركّز من اختيار العرض الذي سيتم التركيز عليه. ويكون ذلك مهمًا بشكل خاص عندما يكون لدى محرر أسلوب الإدخال خيار NEXT حيث قد يحاول التركيز علىComposeViewوقد يتعذّر ذلك.requestFocus()(Ibd0e2، b/369256395) - إضافة العلامة
isNestedScrollDispatcherNodeFixEnabled(I0d24a) - إعادة تسمية "
DialogProperties"dialogContentTitleإلىwindowTitle(Ibd27b) - تم تقديم المعدِّلَين
Modifier.onFirstVisibleوModifier.onVisibilityChanged، وهما معدِّلان رفيعا المستوى يستندان إلىModifier.onLayoutRectChanged. تم تصميم هذه المعدِّلات خصيصًا للتعامل مع العديد من متطلبات التطبيقات الشائعة، مثل تسجيل مرّات الظهور وتشغيل الفيديوهات تلقائيًا وما إلى ذلك. وقد تم تصميمها مع مراعاة الأداء لكي يمكن استخدامها في سيناريوهات مهمة مستندة إلى القوائم بدون خطر التأثير في أداء التمرير. بالإضافة إلى واجهات برمجة التطبيقات الخاصة بأدوات التعديل هذه، تمت إضافة واجهات برمجة تطبيقات أخرى إلىRelativeLayoutBoundsمن أجل توفير حالات الاستخدام هذه، بالإضافة إلى تسهيل إنشاء أدوات تعديل مخصّصة مشابهة تناسب حالة الاستخدام المحدّدة للمطوّرين. (I759b8) - غيِّر
setDiagnosticStackTraceEnabledإلى تجريبي لاحتساب التطوير المستقبلي لهذه الميزة. (I11db3) - إضافة واجهات برمجة التطبيقات
Modifier.scrollable2DوScrollable2DStateوواجهات برمجة التطبيقات المصاحبة لإنشاء حالات تم أيضًا تقديم دوال شائعة خاصة بإضافة التمرير. (Ic61c8، b/214410040) - لا يمكن مقارنة قيم ألوان 64 بت في Compose مباشرةً مع قيم ألوان
ColorLongsفي Android لأنّ أرقام تعريف مساحة الألوان غير مرتبة لبعض مساحات الألوان. لتحويل مساحات الألوان من Android وإليه، تمت إضافة واجهتَي برمجة تطبيقات جديدتَين:toColorLong()وfromColorLong(). (I36899) - تم تقديم
ViewConfiguration.minimumFlingVelocityللسماح بالتحكّم في الحد الأدنى لسرعة التمرير السريع. (I11aab)
الإصدار 1.9.0-alpha02
7 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha02. يتضمّن الإصدار 1.9.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أضِف
dialogContentTitleإلىDialogProperties، ما يؤدي إلى ضبط عنوان نافذة المحتوى. bf9d670
إصلاح الأخطاء
- تم إيقاف مساطر Window Insets مؤقتًا أثناء إصلاح الاختبارات الداخلية. 8d1402
- تم إصلاح طريقة إضافة تغييرات إدخال المؤشر إلى
VelocityTrackerفيDragGestureNode، ويمكن التحكّم في ذلك باستخدام العلامة الجديدةisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb
الإصدار 1.9.0-alpha01
23 أبريل 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha01. يتضمّن الإصدار 1.9.0-alpha01 هذه التعديلات.
التغييرات في السلوك
- تتطلّب عمليات التحقّق من Lint التي يتم شحنها مع Compose الآن توفُّر الإصدار 8.2.2 من "مكوّن Android الإضافي في Gradle" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي في Gradle"، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) فيgradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
تغييرات واجهة برمجة التطبيقات
- يزيل العلامة لتفعيل عبارات التتبُّع لأداة تتبُّع مسار النتائج (تصحيح الأخطاء). (I1b2a1)
- تم تغيير
InnerRectRulersوOuterRectRulesليصبحا طريقتَين بدلاً من ذلك. تمت إزالة مَعلمة الاسم من واجهة برمجة التطبيقات العامةRectRulers. أصبحDerivedRulersالآن خيارًا في أداة الإنشاء للمسطرتَين العمودية والأفقية. تم استبدالMergedHorizontalRulersوMergedVerticalRulersبالطريقتَينminOfوmaxOfلإنشاء مثيلات. (Iee89f، b/408192133) - إيقاف
androidx.compose.ui.LocalSavedStateRegistryOwnerواستخدامandroidx.savedstate.compose.LocalSavedStateRegistryOwnerبدلاً منه (I5439f، b/377946781) - أضِف
Modifier.keepScreenOnلضبط الشاشة على عدم الانتقال إلى وضع السكون أثناء العرض التقديمي (Ib5af4، b/408284174) - أضِف سمة دلالية جديدة
Shape، يمكن ضبطها عندما يختلف شكل عنصر واجهة المستخدم عن المستطيل المحيط به، مثلاً مستطيل ذو زوايا مستديرة. (I1376f) - تم إصلاح مشكلة إرسال أحداث المؤشر في
AndroidViews، وتمت إضافة العلامةisPointerInteropFilterDispatchingFixEnabledلحماية التغييرات. (I0e272، b/372055500، b/408002332) - لم يعُد
FocusRestorerيثبّت العنصر الذي تم التركيز عليه سابقًا. على المستخدمين استخدام مفتاح لضمان أنّ العنصر الذي تم التركيز عليه سابقًا يتضمّن تجزئة التركيب نفسها، وذلك لكي تتم استعادة التركيز بنجاح. (I4203b، b/330696779) - السماح لـ Compose بتفعيل
ViewTreeObserver.OnScrollChangedيتم تقديم هذا السلوك ضمن العلامةisOnScrollChangedCallbackEnabled. أضفنا أيضًا دالة موسّعة للسمةDelegatableNode dispatchOnScrollChanged. (I34b9d، b/238109286) - تم إيقاف
currentCompositeKeyHashنهائيًا. يمكنك استخدامcurrentCompositeKeyHashCodeكبديل. تشفّر واجهة برمجة التطبيقات البديلة التجزئة نفسها باستخدام عدد أكبر من البتات، ما يقلّل بشكل كبير من احتمال أن يكون لمجموعتين عشوائيتين غير مرتبطتين في التسلسل الهرمي للتركيب مفتاح التجزئة نفسه. (I4cb6a، b/177562901) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5)
- تمت إضافة دعم فحص Lint لـ
FocusRequesterللتأكّد من تذكّره داخل التركيب (I6bf91) - تمت إضافة إمكانية ضبط عدد اللقطات المفضّل في الثانية أو فئة عدد اللقطات في الثانية التي يجب عرض Composable بها (Ie5201)
- عرض
MotionEventعلى Android (I17286) - إضافة
getChecked() + setChecked(int)وإيقافisChecked + setChecked(boolean)نهائيًا (Iaac9d) - يقبل المعدِّل
graphicsLayerالآنblendModeوcolorFilter(Iab0e6) - تمت إضافة
LocalResourcescomposition local للاستعلام عن الموارد. سيتم إعادة إنشاءLocalResources.currentعند تغيُّر الإعدادات، لذا ستعرض طلبات البيانات من واجهات برمجة التطبيقات، مثلstringResource()، قيمًا معدَّلة. (I50c13، b/274786917) - عرض واجهة برمجة تطبيقات تجريبية للعناصر القابلة للإنشاء من أجل التعامل مع أحداث اللمس غير المباشرة (Icff57)
- يحسِّن هذا الإصدار عملية إعداد التقارير عن الاستثناءات التي لم تتم معالجتها والتي تم طرحها أثناء مرحلتَي التنسيق والرسم للمحتوى القابل للإنشاء. في السابق، كان حدوث استثناء غير معالج هنا يؤدي إلى تعطُّل أداة تنفيذ الاختبار وإنهاء حزمة الاختبار قبل الأوان. يمكن الآن الإبلاغ عن هذه الاستثناءات بشكل أفضل بدون إنهاء مجموعة الاختبارات. (I9928b، b/314128080)
- تم إيقاف واجهة برمجة التطبيقات التجريبية
GlobalAssertions. وكان الغرض من استخدامه هو إجراء عمليات التحقّق من إمكانية الوصول، لذا ننصحك بالاطّلاع علىenableAccessibilityChecks()لتحقيق هذا الغرض بدلاً من ذلك. (I50aa5) - لم تعُد السمة
SemanticsNodeInteraction.performTextInputSelectionتجريبية، وأصبحت تتوافق الآن مع المَعلمة الإضافيةrelativeToOriginalالتي تتيح لك تطبيق التحديد على النص الأصلي غير المحوّل أو النص المحوّل. (I3a905، b/261561038، b/277018945) - إضافة واجهة برمجة تطبيقات لإنشاء قوائم نقطية مخصّصة من خلال
AnnotatedString(I1d066، b/383269496، b/139326648) - إيقاف
runWithTimingDisabledنهائيًا واستخدامrunWithMeasurementDisabledبدلاً منه، لأنّه يصف السلوك بشكلٍ أوضح، أي أنّه يتم إيقاف جميع المقاييس مؤقتًا. بالإضافة إلى ذلك، يجب عرض الفئة الرئيسيةMicrobenchmarkScopeلأنّه لا يمكن إعادة تعريف الدالةrunWithMeasurementDisabledلفتح الوصول، لأنّها مضمّنة. (I9e23b، b/389149423، b/149979716) - تم تعديل واجهة برمجة التطبيقات ui-tooling Devices لتشمل أجهزة أحدث. (Ia2ac1)
- إضافة "الوضع العمودي على الأجهزة اللوحية" إلى مجموعة أحجام شاشات "المعاينة" لمساعدة المطوّر على مراعاة النوافذ الأكبر حجمًا (Ia1976)
- إضافة واجهة برمجة تطبيقات لقيمة التتبُّع من أجل وضع علامة على عملية التتبُّع أو تسجيلها مع قيم في نقطة زمنية معيّنة تظهر قيم التتبُّع في Prefetto كمسار جديد يمكن الاطّلاع عليه من خلال المخطط الزمني لعملية التتبُّع. على أجهزة Android، يتم تنفيذها باستخدام
Trace.setCounter. (Idcf48)
إصلاح الأخطاء
- إصلاح عملية إرسال المراقبين الذين تم تذكّرهم في التركيب القابل للإيقاف المؤقت لتجنُّب إرسال المراقبين الذين تم تذكّرهم أو نسيانهم في عملية التطبيق نفسها (I570b2، b/404645679، b/407931790)
- يمكن الآن ضبط
android:dialogThemeللتحكّم في خصائص مربّع الحوار عندما تكون قيمةdecorFitsSystemWindowsهي "خطأ" (I7922f، b/246909281) - تم إصلاح الخطأ الذي كان يؤدي إلى إغلاق مربّع الحوار عند رصد أي حدث حركة خارجه. (Ia78fd)
- تتطلّب عمليات التحقّق من أخطاء Compose الآن توفُّر الإصدار 8.8.2 من "مكوّن Android الإضافي في Gradle" كحدّ أدنى من سطر الأوامر، والإصدار Ladybug من Android Studio على الأقل للاستفادة من الدعم في بيئة التطوير المتكاملة. إذا كنت تستخدم إصدارًا قديمًا من "مكوّن Android الإضافي في Gradle"، يمكنك ضبط
android.experimental.lint.version=8.8.2في ملف gradle.properties لترقية إصدار Lint بدون التأثير في "مكوّن Android الإضافي في Gradle". (I6f2a8) - تمت إضافة سمة دلالية جديدة
InputTextتسجّل قيمةtextfieldقبل تطبيق عملية تحويل الإخراج. (Iae46a، b/395911609، b/176949051) - تم نقل واجهة برمجة التطبيقات
enableAccessibilityChecks()التي تفعّل "عمليات التحقّق من إمكانية الوصول" في Android إلى حِزم منفصلة وهيcompose:ui:ui-test-accessibilityإذا كنت لا تستخدمTestRuleوcompose:ui:ui-test-junit4-accessibilityعند طلبTestRule(I3c318، b/391560768) - تمت إضافة دعم لتتبُّع تسلسل استدعاء الدوال البرمجية في Compose في
LaunchedEffectوrememberCoroutineScope(I705c0، b/354163858)
المساهمة الخارجية
- تغيير الدالة التجريبية
runComposeUiTestلقبول حظر التعليق تمت أيضًا إضافة دالةrunComposeUiTestمتوقّفة نهائيًا لتوفير التوافق الثنائي (I3b88c، b/361577328)
الإصدار 1.8
الإصدار 1.8.3
18 يونيو 2025
تم طرح androidx.compose.ui:ui-*:1.8.3. يتضمّن الإصدار 1.8.3 هذه التعديلات.
إصلاح الأخطاء
- تمت إزالة العلم الخاص بـ
isGetFocusedRectReturnEmptyEnabledبعد أن تم التحقّق من الميزة بالكامل. (Ife722) - تتيح العلامة
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledضبط المستطيل على قيمة فارغة عندما لا يكون هناك أي عنصر قابل للتركيز فيComposeView. يمنع ذلك عملية البحث المركّز من اختيار العرض الذي سيتم التركيز عليه. ويكون ذلك مهمًا بشكل خاص عندما يكون لدى محرر أسلوب الإدخال خيار "التالي" حيث قد يحاول التركيز علىComposeViewوقد يتعذّر ذلك.requestFocus()(Ibd0e2، b/369256395)
الإصدار 1.8.2
20 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.8.2. يتضمّن الإصدار 1.8.2 هذه التعديلات.
إصلاح الأخطاء
- إصلاح خطأ NPE عند إزالة مربّع الحوار أثناء بث الأحداث النشط في مربّع الحوار (6a7e7f)
- إصلاح مشكلة عدم تحديث
onLayoutRectChangeوفقًا للمخطط الزمني المحدود عند حدوث تحديثات للرسم فقط (03b82d)
الإصدار 1.8.1
7 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.8.1. يتضمّن الإصدار 1.8.1 هذه التعديلات.
إصلاح الأخطاء
- حلّ بعض المشاكل المتعلّقة بـ
onLayoutRectChangedوLazyLayoutd791b11 - تخطّي طلبات إعادة القياس للعناصر المسبقة التكوين أثّر هذا الخطأ في أداء التمرير في التنسيقات الكسولة لأنّ الجلب المُسبَق لم يكن يعمل بكفاءة في بعض الحالات، وكان القياس يتم داخل الإطار. 742087a
الإصدار 1.8.0
23 أبريل 2025
تم طرح androidx.compose.ui:ui-*:1.8.0. يتضمّن الإصدار 1.8.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.7.0
- يتضمّن الإصدار 1.8 من Compose ميزة الملء التلقائي الدلالي التي تمت إضافتها حديثًا. تأكَّد من أنّ إصدارات واجهة المستخدم وFoundation التي تستخدمها هي الإصدار 1.8 أو إصدار أحدث، لأنّ التعبئة التلقائية لمكوّنات النص تتطلّب أحدث إصدارات كلا الوحدتَين. لمزيد من التفاصيل حول استخدام واجهة برمجة التطبيقات والأمثلة، يُرجى الرجوع إلى مستندات ميزة "الملء التلقائي" هنا.
- يتوافق الإصدار 1.8 من Compose مع أنواع إضافية من الملاحظات اللمسية:
ConfirmوContextClickوGestureEndوGestureThresholdActivateوRejectوSegmentFrequentTickوSegmentTickوToggleOnوToggleOffوVirtualKey. يمكن الوصول إلى هذه الميزة من خلالLocalHapticFeedback، وتتوفّر تلقائيًا على أجهزة Android عندما تشير Vibrator API إلى أنّ الاهتزازات اللمسية متاحة. - أصبحت واجهات برمجة تطبيقات Focus المتعددة ثابتة الآن، بما في ذلك
Modifier.focusRestorer()وonEnterوonExitFocusProperties(I6e667). يمكنك الآن تحديدFocusDirectionعند الاتصال بـrequestFocus. أضفنا واجهة برمجة التطبيقاتrequestFocus(FocusDirection)إلى كلّ منfocusRequesterوFocusTargetModifierNodeللسماح بالتركيز في اتجاه معيّن. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
الإصدار 1.8.0-rc03
9 أبريل 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-rc03. يتضمّن الإصدار 1.8.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- يوقف بعض إصلاحات التوافق مع التركيز التي تسبّبت في حدوث تراجع. (b9d998 وb/369256395 وb/378570682 وb/376142752 وb388590015/ وb/389994198 وb/391378895)
الإصدار 1.8.0-rc02
26 مارس 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-rc02. يتضمّن الإصدار 1.8.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبّب في إعادة إنشاء التركيب عند إزالة العرض المركّز من قائمة كسولة، وذلك عندما تتم إزالة العروض المركّزة المضمّنة في بنية Compose الهرمية. (765562)
الإصدار 1.8.0-rc01
12 مارس 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-rc01. يتضمّن الإصدار 1.8.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل يحدث عند إزالة
AndroidViewمركّز عليه عندما تكون لوحة المفاتيح على الشاشة نشطة. (Ic725a) - إصلاح بعض المشاكل في عملية تنفيذ معالجة حالة التركيز الجديدة (b/395895685)
- تم إصلاح مشكلة تمنع ميزة "الملء التلقائي" عند استخدام
LaunchedEffectلطلب التركيز على حقل نصي. (b/392539099)
الإصدار 1.8.0-beta03
26 فبراير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-beta03. يتضمّن الإصدار 1.8.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل واجهة برمجة التطبيقات
enableAccessibilityChecks()التي تفعّل "عمليات التحقّق من إمكانية الوصول" في Android إلى حِزم منفصلة، وهيcompose:ui:ui-test-accessibilityفي حال عدم استخدام TestRule وcompose:ui:ui-test-junit4-accessibilityعند طلبTestRule(I547ef، b/391560768) - تمت إضافة سمة دلالية جديدة
InputTextتسجّل قيمة حقل نصي قبل تطبيق عملية تحويل الإخراج. (Iae46a)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبب في أن تحفظ خدمات الملء التلقائي النص المحوَّل بدلاً من النص الأصلي. (Iae46a، b/395911609، b/176949051)
الإصدار 1.8.0-beta02
12 فبراير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-beta02. يتضمّن الإصدار 1.8.0-beta02 هذه التعديلات.
الميزات الجديدة
- تمت إضافة عملية فحص باستخدام أداة Lint للتحذير من إجراء طلبات إلى
Configuration#screenWidth/heightDp، ويمكن استخدامLocalWindowInfo.current.containerSizeبدلاً من ذلك لاسترداد حجم النافذة الحالي.
الإصدار 1.8.0-beta01
29 يناير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-beta01. يتضمّن الإصدار 1.8.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة "متوقّف نهائيًا" على
ContextualFlowRowوContextualFlowColumn. تم تقديم هذا المكوّن التجريبي في الإصدار 1.7 ولم يتم تثبيته بعد، وتم اعتبار تنفيذه غير مرغوب فيه. في المستقبل، قد يتم توفير مكوّن يحلّ حالات الاستخدام التي كان من المفترض أن يحلّها هذا المكوّن.- تحتوي
FlowRowوFlowColumnعلى عمليات تحميل تجريبية تم تقديمها في الإصدار 1.7 وتتضمّن المَعلمةoverflow. تم إيقاف استخدام هذه المَعلمة نهائيًا، ويمكن استخدام عمليات التحميل الزائد بدون هذه المَعلمة بدلاً منها. سيكون السلوك التلقائي "للتجاوز" في هذه الحالات هو "القص"، كما كان منذ طرحه. - يمكن تنفيذ العديد من حالات استخدام
ContextualFlowRowباستخدام FlowRow، ولكننا ندرك أنّ هذا لا ينطبق على جميع الحالات. يمكن تنفيذContextualFlowRowبالكامل في مساحة المستخدم، ويمكن محاولة نسخ عملية التنفيذ وتعديلها إذا لزم الأمر. نأمل في المستقبل أن نجد طريقة مختلفة لحلّ حالات الاستخدام هذه. (Ibafec)
- تحتوي
- تمت إزالة
SemanticsNodeInteraction.semanticsId(). يمكنك استخدامSemanticsNodeInteraction.fetchSemanticsNode().idكبديل. (Ie397a) - تم إيقاف واجهات برمجة التطبيقات القديمة الخاصة بميزة "الملء التلقائي". يُرجى استخدام واجهة برمجة التطبيقات الجديدة المستندة إلى الدلالات بدلاً من ذلك. (I943ff)
- إعادة كتابة واجهة برمجة التطبيقات
requestAutofillلتكون خارج مدير الملء التلقائي (Id1929)
إصلاح الأخطاء
- تم إصلاح مشكلة التركيز التي كانت تؤدي إلى تخطّي
ComposeViewعند استخدامrequestFocus()مع المَعلمةpreviouslyFocusedRectغير المنطقية (المتعلقة باتجاه التركيز). (Ifdc2f، b/388590015) - تم إصلاح خطأ NPE الذي يحدث أحيانًا عند استخدام
GraphicsLayer.record { this@ContentDrawScope.drawContent() }. إذا كنت تسجّلdrawContent()بهذه الطريقة، احرص على استخدام دالة الإضافةGraphicsLayer#recordداخلDrawScope، وليس دالة العضو فيGraphicsLayer. (I75fc0، b/389046242) - تم إصلاح مشكلة تخطيط النص الذي يتضمّن علامة الحذف الإيجازي والذي تتم ترجمته بشكل غير صحيح أحيانًا أثناء الرسوم المتحركة. يمكنك الاطّلاع على b/389707025 لمزيد من المعلومات (Ie55b1، b/389707025)
الإصدار 1.8.0-alpha08
15 يناير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha08. يتضمّن الإصدار 1.8.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- جعل
AutofillManagerفئة مجرّدة (I0a3b0) - تم إصلاح العديد من المشاكل المتعلّقة بالتركيز، بما في ذلك الأعطال عند محاولة محرر أسلوب الإدخال (IME) التركيز على
ComposeViewبدون عناصر قابلة للتركيز، وتغيير التركيز داخل العنصر الفرعيAndroidViews، وطلب التركيز الذي يتركAndroidView. (Ia03c3، b/369256395، b/378570682، b/376142752) - تم تغيير
FocusEnterExitScope.cancelFocus()إلىcancelFocusChange()(I89959) - يمكنك الآن حساب عمليات الإخفاء القابلة للتركيب باستخدام
RectInfo.calculateOcclusions(). - تمت إضافة دالة إضافية إلى
DelegatableNodeلتسجيل أداة معالجة لتغييرات التنسيق العام. (I68b59)
إصلاح الأخطاء
- يستخدم النشاط الذي يتم استخدامه كمضيف للعنصر القابل للإنشاء قيد الاختبار عند استخدام
ComposeContentTestRule.setContentالآن المظهرTheme.Material.Light.NoActionBar، وذلك لتجنُّب تداخلActionBarمع محتوى الاختبار عند استهداف الإصدار 35 من حزمة تطوير البرامج (SDK). لإيقاف هذا السلوك، يمكنك إزالة التبعية فيui-test-manifestوإضافة إدخال نشاط في ملف AndroidManifest.xml لتطبيق الاختبار من أجلComponentActivityمع اختيار السمة التي تريدها. (I7ae1b، b/383368165) - ستتجنّب خطوط الموارد التي تتضمّن إعدادات الصيغة نفسها الآن التخزين المؤقت الزائد الذي يؤدي إلى تطبيق إعدادات الصيغة غير الصحيحة. (If3dff، b/372044241)
- تتيح
AnnotatedString.fromHtmlالآن استخدام علامات<ul>/<li>. (I7c2fe، b/299662276، b/139326648)
المساهمة الخارجية
- تمت إضافة واجهة Clipboard جديدة وتركيبة محلية لها. (I80809)
الإصدار 1.8.0-alpha07
11 ديسمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha07. يتضمّن الإصدار 1.8.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم الكشف عن المالك من
LayoutNodeللأدوات. (I26f7f) - يجب أن يستخدم
LocalAutofillHighlightColorالتركيبة المحلية نوع Color. (I0e05b) - احتفظ بالرمز
UrlAnnotationالمتوقّف نهائيًا وطرق استخدامه مصنّفة على أنّها تجريبية. (Ic0021)
إصلاح الأخطاء
- تم إصلاح عُطل
IndexOutOfBoundsExceptionعند استخدامLinkAnnotationداخل العنصر المركّبBasicTextأو Text (be7605، b/374115892) - تم إصلاح المشكلة المتمثّلة في عدم قص خط المؤشر في حقول النص المملوءة ذات الشكل المخصّص. (I4f87f، b/380704151)
- تم إصلاح مشكلة عدم ظهور الخلفيات في لقطات الشاشة الطويلة. (I4d57a)
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية من JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (Idfef8، b/326456246) - تعديل توافق Compose مع الألوان ذات التدرّج اللوني الواسع وألوان HDR عند التشغيل على Android Q والإصدارات الأحدث (Icd8be، b/379135036)
- سيتم الآن إعادة ضبط خطوط الموارد التي يتعذّر تحميلها تلقائيًا على الخط التلقائي، بدلاً من السلوك السابق الذي كان يعرض استثناءً في القياس. (Ib6a49)
- تم إصلاح مشكلة فقدان التركيز عند فصل
AndroidViewوإعادة ربطه. (I53446) - قبول
requestFocus()من إجراء التخطيط خارج الحدود (Ia8461)
المساهمة الخارجية
- أضِف
BringIntoViewResponderModifierNodeإلى واجهة المستخدم، ما يوفّر طريقة جديدة لتنفيذ وظيفة "إظهار العنصر في العرض"، كما يسمح بتنفيذها على مستوى النظام الأساسي. (Ia6dd8)
الإصدار 1.8.0-alpha06
13 نوفمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha06. يتضمّن الإصدار 1.8.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة المعدِّل
stylusHoverIcon. (Iff20a، b/331289114) - تغيير مدير الملء التلقائي ليكون واجهة (I84914، b/376080755)
- يضيف
requestFocus(FocusDirection)إلى كل منfocusRequesterوFocusTargetModifierNodeللسماح بالتركيز في اتجاه معيّن. (I5d9ec، b/245755256) - تم استبدال
FocusProperties.enterوFocusProperties.exitبـonEnterوonExit، وذلك باستخدام نطاق جهاز استقبال بدلاً من المَعلمةFocusDirection. (I6e667) - إضافة ميزة الملء التلقائي إلى شريط أدوات النص (Ie6a4c)
- تغييرات واجهة برمجة التطبيقات في
Modifier.focusRestorer()(I99c03):- تم تغيير اسم المَعلمة إلى "fallback"
- أصبحت المَعلمة الآن
FocusRequesterوليست دالة lambda - أصبحت المَعلمة غير فارغة (NOT NULL) مع ضبط القيمة التلقائية على "تلقائي"
- إزالة التعليق التوضيحي
@Experimentalمن واجهة أداة إدارة الملء التلقائي لا تزال هذه الميزة قيد التطوير، ونستهدف إطلاقها في هذا الإصدار، ولكنّنا لا نريد تقديم واجهة برمجة التطبيقات @Expemiental API (Id8398). - توفّر السمة
LocalHapticFeedbackالآن عملية تنفيذ تلقائيةHapticFeedbackعندما تشير واجهة برمجة التطبيقات Vibrator API إلى أنّ الأجهزة المتوافقة معها تتيح استخدام ردود الفعل اللمسية. تمت إضافة ما يلي إلىHapticFeedbackType-ConfirmوContextClickوGestureEndوGestureThresholdActivateوRejectوSegmentFrequentTickوSegmentTickوToggleOnوToggleOffوVirtualKey. تؤدي الآن مكوّنات Wear Compose التي يمكن النقر عليها مع الاستمرار، مثلButtonوIconButtonوTextButtonوCard، وظيفةLONG_PRESSالحسية عند توفير معالج النقر مع الاستمرار. (I5083d) - تزيل هذه السمة
OverscrollConfigurationوLocalOverscrollConfiguration، وتضيفrememberPlatformOverscrollFactoryلإنشاء مثيل من عملية التنفيذ التلقائية للتمرير السريع أو تخصيص مَعلماتها. لإيقاف التمرير الزائد، استخدِمLocalOverscrollFactory provides nullبدلاً منLocalOverscrollConfiguration provides null. لتغيير لون التوهّج أو المساحة المتروكة، استخدِمLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)بدلاً منLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9 وb/255554340 وb/234451516) - تمت إزالة واجهة برمجة التطبيقات التجريبية
GlobalAssertions. كان الغرض من استخدامها هو إجراء عمليات التحقّق من إمكانية الوصول، لذا استخدِمenableAccessibilityChecks()لهذا الغرض بدلاً من ذلك. (I59322)
الإصدار 1.8.0-alpha05
30 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha05. يتضمّن الإصدار 1.8.0-alpha05 هذه التعديلات.
الميزات الجديدة
تتوفّر ميزة "الملء التلقائي" في هذا الإصدار خلف علامة ميزة. نحن نعمل على تحسين الأداء، ونتطلّع إلى تلقّي ملاحظات مبكرة بشأن واجهات برمجة التطبيقات. من المتوقّع أن تتطوّر واجهات برمجة التطبيقات قبل أن تصبح مستقرة استنادًا إلى الملاحظات.
- لتفعيل ميزة "الملء التلقائي"، اضبط قيمة
ComposeUiFlags.isSemanticAutofillEnabledعلى true فيonCreateواستخدِم أحدث إصدار من Compose Snapshot. - يتيح هذا الإصدار من ميزة "الملء التلقائي" حفظ بيانات الاعتماد يدويًا ومن خلال ميزة "اقتراح كلمة مرور قوية" ومن خلال التنقّل. يتيح أيضًا الملء عندما يتلقّى حقل قابل للملء التلقائي التركيز أو عندما يتم تفعيل ميزة "الملء التلقائي" من خلال شريط أدوات النص في مكوّنات النص. سيتم تمييز المكوّن للإشارة إلى اكتمال عملية الملء التلقائي.
تغييرات واجهة برمجة التطبيقات
- تعديل واجهة "الملء التلقائي" لتتّبع بنية
expect/actual(I22dce) - إضافة
CompositionLocalالتي يمكن استخدامها لتعديل درجة لون التمييز الذي يظهر عند نجاح عملية الملء التلقائي (I32092) - تمت إضافة واجهة برمجة التطبيقات
Modifier.onRectChanged، وهي واجهة برمجة تطبيقات تتيح للمستخدم الاشتراك في الموضع والحجم النسبيين للجذر أو النافذة أو الشاشة فيLayoutNode. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المعدِّلonGloballyPositionedالحالي، ولكنها تفعل ذلك مع تقليل النفقات العامة بشكل كبير، وتتضمّن واجهة برمجة التطبيقات تسهيلات لإزالة التكرار وتقييد عدد مرات معاودة الاتصال وفقًا لما تتطلبه حالة الاستخدام. (Id28c7 وb/372765423 وb/372757007 وb/372994338) - توسيع نطاق "مدير الملء التلقائي" ليشمل واجهتَي برمجة التطبيقات
commit()وcancel()اللتين تساعدان المستخدمين في حفظ بيانات الاعتماد التي تم إدخالها حديثًا (I2da00) - تتضمّن هذه السمة واجهة
AutofillManagerجديدة يمكن استخدامها لتحسين رحلة المستخدمين في ميزة "الملء التلقائي"، بالإضافة إلى العلامةisSemanticAutofillEnabledلتفعيل هذا الإصدار الجديد من ميزة "الملء التلقائي". (I9d484) - تمت إضافة واجهة برمجة التطبيقات
Modifier.onRectChanged، وهي واجهة برمجة تطبيقات تتيح للمستخدم الاشتراك في الموضع والحجم النسبيين للجذر أو النافذة أو الشاشة الخاصة بـLayoutNode. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المعدِّلonGloballyPositionedالحالي، ولكنها تفعل ذلك مع تقليل النفقات العامة بشكل كبير، وتتضمّن واجهة برمجة التطبيقات تسهيلات لإزالة التكرار وتقييد عدد مرات معاودة الاتصال وفقًا لما تتطلبه حالة الاستخدام. (I3c8fa) - أضِف خصائص دلالية وأنواع بيانات لتوفير دعم موسّع لميزة "الملء التلقائي". (I52c7d)
- أصبحت جميع الطرق في أداة إنشاء
AnnotatedStringغير تجريبية الآن (Ia89c8، b/261561823)
إصلاح الأخطاء
- يمكن الآن أن تتلقّى طرق العرض المضمّنة في Compose أحداثًا متعلقة بأداة التدوير إذا كانت في وضع التركيز (I4d53a، b/320510084).
- تم إصلاح مشكلة عدم تعديل أنواع الموارد المختلفة عند إجراء تغييرات في الإعداد (Ia9b99، b/352336694)
- تم حلّ مشكلة كانت تمنع
TextFieldمن العمل بشكل صحيح عند استخدام لوحة مفاتيح POBox اليابانية على بعض أجهزة Sony القديمة. (Ia9b99، b/373743376) - تم إصلاح مشكلة ظهور مربّعات الحوار في أسفل الشاشة بدلاً من توسيطها (Ia2ec، b/373093006)
- لم يعُد استهداف المستوى 35 أو أعلى لواجهة برمجة التطبيقات يفرض ضبط قيمة
decorFitsSystemWindowsعلى "خطأ" في مربّعات الحوار. (Ibc94، b/364492593) - تم إصلاح عُطل يحدث عند نقل الطبقات بين النوافذ (مثل مربّع الحوار والمحتوى الرئيسي) (I675ba، b/330955281)
الإصدار 1.8.0-alpha04
16 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha04. يتضمّن الإصدار 1.8.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة عمليات معاودة الاتصال
DelegatableNode#onDensityChangeوDelegatableNode#onLayoutDirectionChangeللسماح بتعديل حالة العقدة عند تغيُّرها (I04f3e، b/340662451) - تضيف هذه السمة
WindowInfo#containerSizeلتوفير حجم حاوية المحتوى للنافذة الحالية. يمكن استردادها باستخدامLocalWindowInfo. (Idc38c، b/369334429، b/360343819) - إصلاح مشكلة العناصر القابلة للتمرير المتداخلة التي تتم إزالتها من شجرة العُقد أثناء التمرير السريع الجاري. ستلغي هذه العُقد الآن حركة التمرير السريع وسترسل حدث
onPostFlingبشكل صحيح مع السرعة المتبقية. نقدّم أيضًا العلامةNewNestedScrollFlingDispatchingEnabledللتحكّم في السلوك في حال حدوث انحدارات. ستتم إزالة العلامة قبل الإصدار التجريبي. (I05c37، b/371168883) - تم تقديم
PointerInputModifierNode#touchBoundsExpansion، والذي يمكن استخدامه لتكبير حدود اللمس لمعدِّل إدخال مؤشر واحد. (Iccf02، b/335339283) - تضيف هذه السمة
WindowInfo#containerSizeلتوفير حجم حاوية المحتوى للنافذة الحالية. يمكن استردادها باستخدامLocalWindowInfo. (I27767، b/369334429، b/360343819) - أزِل
readOnlyمنTextFields' لتثبيت الإصدار الأساسي الثابت. (I3aaba) - تتضمّن السمتان
ParagraphوParagraphIntrinsicsالآن قائمة بجميع التعليقات التوضيحية المطبّقة علىAnnotatedString، بينما كانت تتضمّن في السابق قائمة بـSpanStyles(I12f80)
إصلاح الأخطاء
- تم تعديل طريقة التعامل مع الفقرات في
AnnotatedString. في السابق، كان بإمكانك إنشاء فقرات غير متداخلة فقط. أصبح بإمكانAnnotatedStringالآن السماح بفقرات متداخلة بالكامل سيتم دمجها معًا، وفقرات متداخلة سيتم تقسيم الفقرة الخارجية على حدود الفقرة الداخلية، وسيتم دمج نمط الفقرة الداخلية مع نمط الفقرة الخارجية (Ic9554) - تم إصلاح عُطل في
AnnotatedStringمعLinkAnnotationبطول صفر. (89aac6)
الإصدار 1.8.0-alpha03
2 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha03. يتضمّن الإصدار 1.8.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تحديث إصدار Kotlin إلى 1.9 (I1a14c)
- تم تقديم دور دلالي جديد باسم "لوحة عرض دوّارة" لمحاكاة سلوك القائمة في أدوات التقسيم إلى صفحات لخدمات تسهيل الاستخدام. (Id354b، b/354109776، b/239672673)
- تمّت إعادة تسمية
invisibleToUser()إلىhideFromAccessibility. وستبقى وظيفتها كما هي. يمكنك الاطّلاع على المستندات لمزيد من التفاصيل. (Ib43a3)
إصلاح الأخطاء
- تعديل المستندات الخاصة بأداة التعديل
SensitiveContent(Ib0442) - تم إصلاح المشكلة التي يتم فيها تجاهل مقاطع موجزات عامة معيّنة عند دمجها مع ظلال الارتفاع في بعض إصدارات Android
- تم إصلاح المشكلة التي كانت تؤدي إلى تطبيق مقاطع فارغة عند تحديد مقاطع عامة ذات خطوط خارجية على إصدارات معيّنة من Android.
- تم إصلاح الخطأ الذي يحدث عند تفعيل "محرّر أسلوب الإدخال" (IME) على "عرض" خارجي واستخدام الإجراء "التالي" لتحديد التركيز على
ComposeView. يتوافق سلوكclearFocus()مع سلوك العرض على الإصدارات الأقدم من 28 لواجهة برمجة التطبيقات، حيث يمكن أن يؤديclearFocus()إلى التركيز على العرض التلقائي. - تم إصلاح مشكلة ظهور العناصر في عقد منفصلة في
LazyListمن خلال فصل إدارة التركيب الفرعي عن عمليات التخطيط المختلفة. - تم إصلاح مشكلة تسبّبت في وميض لوحة المفاتيح على الشاشة عند التبديل من
TextFieldإلىEditTextأو أي محرر آخر مستند إلى طريقة العرض. - سترسل عُقد Nested Scroll الآن أحداث
onPostFlingبشكل صحيح بعد فصلها. - تحسينات عامة على الأداء
الإصدار 1.8.0-alpha02
18 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha02. يتضمّن الإصدار 1.8.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتوفّر الآن الرمز
TextOverflow.StartEllipsisوالرمزTextOverflow.MiddleEllipsis، ما يتيح وضع علامات الحذف في بداية سطر النص الفردي أو وسطه. (I38913، b/185418980)
إصلاح الأخطاء
- إصلاح Dalog
dismissOnClickoutside(39a3d وb/364508685) - عدم قص ظلال محتوى الحوار (e8e2f، b/363027803)
- إصلاح السلوك الخاطئ عند انتقال البحث المركّز بين Compose وView (58377، b/350534714)
المساهمة الخارجية
- يقبل
AlignmentLinesMapالآن النوعَين المحددينVerticalAlignmentLineأوHorizontalAlignmentLine. (I02912) - طريقة
ByteArray.decodeToImageBitmap(): ImageBitmapشائعة جديدة (I83c21)
الإصدار 1.8.0-alpha01
4 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha01. يتضمّن الإصدار 1.8.0-alpha01 هذه التعديلات.
الإصدار 1.7
الإصدار 1.7.8
12 فبراير 2025
تم طرح androidx.compose.ui:ui-*:1.7.8. يتضمّن الإصدار 1.7.8 هذه التعديلات.
الإصدار 1.7.7
29 يناير 2025
تم طرح androidx.compose.ui:ui-*:1.7.7. يتضمّن الإصدار 1.7.7 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح
IndexOutOfBoundsExceptionعند تمريرAnnotatedStringمعLinkAnnotationإلى العنصر القابل للإنشاء Text. (Ic96d2) - تم إصلاح مشكلة انتهاء المهلة في الاختبارات في بعض الحالات النادرة عند استخدام
LinkAnnotationفيAnnotatedString. (I04a03)
الإصدار 1.7.6
11 ديسمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.6. يتضمّن الإصدار 1.7.6 هذه التعديلات.
إصلاح الأخطاء
- كنّا في السابق نعرض رسالة خطأ كلّما صادفنا حدثًا رئيسيًا عندما كان نظام التركيز يتضمّن عمليات إبطال معلّقة. نحن الآن نسجّل خطأً بدلاً من ذلك (I7ea0، b/346370327).
- تمت إزالة التعليق التوضيحي التجريبي من
SemanticsPropertyReceiver.invisibleToUser(). سيتم إيقاف هذه السمة نهائيًا في الإصدار 1.8 واستبدالها بالسمةSemanticsPropertyReceiver.hideFromAccessibility(). (I448f0، b/376479686) - تم إصلاح مشكلة كانت تمنع
TextFieldمن العمل بشكل صحيح عند استخدام لوحة مفاتيح POBox اليابانية على بعض أجهزة Sony القديمة. (I94e0e، b/373743376) - تم إصلاح مشكلة متعلّقة بإمكانية الوصول، وهي عدم إعلان
TalkBackعن inlineContent الخاص بـBasicText. (I67bcb، b/376479686)
الإصدار 1.7.5
30 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.5. يتضمّن الإصدار 1.7.5 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح المشاكل التي لا يتم فيها عرض الارتفاع والقص بشكلٍ صحيح باستخدام المخططات التفصيلية المخصّصة.
- تم إصلاح مشكلة تعطُّل النص التي تحدث مع
LinkAnnotationبعرض صفر. (Ic1e2e) - إصلاح إشعار في
Talkbackللزر عند إنشائه كعنصر Text مركّب قابل للنقر (I1f588)
الإصدار 1.7.4
16 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.4. يتضمّن الإصدار 1.7.4 هذه التعديلات.
الإصدار 1.7.3
2 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.3. يتضمّن الإصدار 1.7.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تؤدي إلى ظهور حدود مقطع فارغة عند تحديد مقطع عام على إصدارات معيّنة من Android.
- تم إصلاح الخطأ الذي يحدث عند تفعيل "محرّر أسلوب الإدخال" (IME) على "عرض" خارجي واستخدام الإجراء "التالي" لتحديد التركيز على
ComposeView. يتوافق سلوكclearFocus()مع سلوك العرض على الإصدارات الأقدم من 28 لواجهة برمجة التطبيقات، حيث يمكن أن يؤديclearFocus()إلى التركيز على العرض التلقائي. - تم إصلاح مشكلة استخدام
placeOrderغير صحيح لإبطال صحة البحث المسبق، وبالتالي تم إصلاح حالة حدودية تم فيها تخطّي موضع البحث المسبق.
الإصدار 1.7.2
18 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.2. يتضمّن الإصدار 1.7.2 هذه التعديلات.
إصلاح الأخطاء
- تحسين أداء معلومات عقدة تسهيل الاستخدام وأحداث الدلالات من خلال إزالة التتبُّع المطوّل (I89156، b/362530618)
- لن يتعطّل
ComposeViewبعد الآن عند تمرير حجم قياس كبير بشكل استثنائي (da5db، b/347036173) - تم إصلاح مشكلة في إمكانية الوصول إلى برامج قراءة الشاشة حيث لم يتم إصدار إشعارات
LiveRegionعلى الأزرار. (f66fa7، b/348590026)
الإصدار 1.7.1
10 سبتمبر 2024
- لم يتم إجراء أي تغييرات على عناصر Android. تمت إزالة
-desktopمن العناصر وإضافة-jvmStubsو-linuxx64Stubsمن العناصر. لا يُفترض استخدام أي من هذه الأهداف، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose.
الإصدار 1.7.0
4 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.0.
التغييرات المهمة منذ الإصدار 1.6.0
يمكنك الاطّلاع على التغييرات المهمة في الإصدار 1.7.0 في مشاركة المدونة هذه.
الإصدار 1.7.0-rc01
21 أغسطس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-rc01. يتضمّن الإصدار 1.7.0-rc01 هذه التعديلات.
التغييرات البارزة
- تفرض وحدة ui:ui الآن شرط توفّر إصدار 1.7.0-rc01 أو إصدار أحدث من foundation:foundation كحدّ أدنى. يتم فرض ذلك لمعالجة عدم توافق السلوك بين واجهة المستخدم وFoundation في ما يتعلق بتغييرات
NestedScrollSourceالتي حدثت في وقت مبكر خلال الإصدار 1.7.0-alpha01.
الإصدار 1.7.0-beta07
7 أغسطس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta07. يتضمّن الإصدار 1.7.0-beta07 هذه التعديلات.
إصلاح الأخطاء
- ستعرض الآن دوال
SemanticsNodeInteractionإدخال النص ذات الصلةperformTextReplacementوperformTextInputوperformTextClearanceأخطاء تأكيد عند طلبها علىTextFieldsللقراءة فقط. (I4ae8f)
الإصدار 1.7.0-beta06
24 يوليو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta06. يتضمّن الإصدار 1.7.0-beta06 هذه التعديلات.
الإصدار 1.7.0-beta05
10 يوليو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta05. يتضمّن الإصدار 1.7.0-beta05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم قبول
TextFieldالإدخال من لوحة المفاتيح الجديدة إلى أن يتم فقدان التركيز واستعادته عند تغيير لوحة المفاتيح البرمجية. - تم إصلاح مشكلة كانت تتسبب في حدوث آثار جانبية غير مقصودة عند العرض باستخدام محتوى
SurfaceViewعند محاولة الاحتفاظ بمحتوى الطبقة.
الإصدار 1.7.0-beta04
26 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta04. يتضمّن الإصدار 1.7.0-beta04 هذه التعديلات.
إصلاح الأخطاء
- تجنُّب الأعطال عند قياس أسطر نصية كبيرة جدًا (مثل 10 آلاف حرف) (8157ab)
- إيقاف إمكانية استخدام
GraphicsLayerAPI في عرض البرامج. (35ddd8) - إصلاح عُطل في منطق استمرار الطبقة (70b13e)
- تم إرجاع تحسين إعادة استخدام عناصر الطبقة، لأنّه تسبّب في حدوث مشاكل في العرض. (70b13e)
الإصدار 1.7.0-beta03
12 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta03. يتضمّن الإصدار 1.7.0-beta03 هذه التعديلات.
الإصدار 1.7.0-beta02
29 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta02. يتضمّن الإصدار 1.7.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
SemanticsProperties.EditableإلىIsEditableوتغييرSemanticsPropertyReceiver.editableإلى القيمةisEditable. أصبحت السمة الآن قيمة منطقية ويتم تحديدها دائمًا من خلال حقول نصية. (I8acd8) - أعِد تسمية مَعلمة مقياس تسهيل الاستخدام. (I3d440)
- تم تعديل واجهة برمجة التطبيقات لتصميم الروابط: أصبح
TextLinkStylesالآن جزءًا من أداة إنشاءLinkAnnotationوالطريقةAnnotatedString.fromHtml(I90b2b). تمت أيضًا إزالةTextDefaultsمن المادة (I5477b)
إصلاح الأخطاء
- تمت إعادة تسمية
LayoutCoordinates.introducesFrameOfReferenceإلىLayoutCoordinates.introducesMotionFrameOfReferenceلتعكس الغرض منها بشكل أفضل. تمت إعادة تسمية الدالة ذات الصلة لحساب الإحداثيات استنادًا إلى هذا العَلَم. (I3a330)
الإصدار 1.7.0-beta01
14 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta01. يتضمّن الإصدار 1.7.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية "
performCustomAccessibilityActionLabelled" إلى "performCustomAccessibilityActionWithLabel" و"performCustomAccessibilityActionWhere" إلى "performCustomAccessibilityActionWithLabelMatching". (I5387f) -
AnnotatedString.hasEqualsAnnotationsأصبح الآنhasEqualAnnotations(I685c0) - تم تعديل واجهة برمجة التطبيقات للحصول على روابط متوافقة مع مظهر Material في النص. على وجه التحديد، تمت إزالة الطرق من
TextDefaultsلإنشاءLinkAnnotationsذات سمات معيّنة وتحليل HTML باستخدام روابط ذات سمات معيّنة. بدلاً من ذلك، تمت إضافة فئةTextLinkStylesتتيح تصميم الروابط كمعلَمة في عنصر Text القابل للإنشاء. (I31b93)
إصلاح الأخطاء
- إصلاح حالات استخدام إضافية عند إضافة معدِّلات إدخال المؤشر بشكلٍ ديناميكي أثناء الأحداث 63e1504
الإصدار 1.7.0-alpha08
1 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha08. يتضمّن الإصدار 1.7.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة إمكانية استخدام أشكال قابلة للتغيير. يمكن الآن مراقبة
Shape#createOutlineداخل طبقات الرسومات، لذا ستؤدي قراءة قيم الحالة داخلها إلى عمليات إبطال عند تغيُّر الحالة، ما يتيح إنشاء رسوم متحركة للأشكال أكثر فعالية. (Id1629، b/326070216) - تمت إعادة تسمية
isPositionedByParentWithDirectManipulationإلىintroducesFrameOfReference. يُرجى العِلم أنّ هذا الإعداد أصبح له تأثير معاكس، ما يعني أنّه بشكلٍ تلقائي، تقدّم معظمLayoutCoordinatesإطارًا مرجعيًا، ولن تكون القيمة خطأ إلا عند وضعها تحت التحكّم المباشر. للاستعلام عن الموضع مع العناصر التي تقدّم إطارًا مرجعيًا فقط، استخدِمpositionInLocalFrameOfReference(...). أوpositionInLocalLookaheadFrameOfReferenceمنLookaheadScope(Ifc5f7) LookaheadScopeتم إتاحة واجهات برمجة التطبيقات بشكل ثابت (I21507)- تغيير دالة lambda الخاصة بالإجراء
getScrollViewportLengthوفقًا لملاحظات مجلس API. (Ibc74a) - تم تعديل واجهات برمجة التطبيقات الخاصة بالمخطط التفصيلي
GraphicsLayerلاستخدام مَعلمات ذات قيمة عشرية بدلاً من مَعلمات ذات قيمة عدد صحيح. تمت إزالة قيمUnsetOffset/UnsetSize IntSizeالحراسة لصالح الثوابت غير المحدّدة المتوفّرة حاليًا في الفئات المضمّنة للإزاحة والحجم المستندة إلى القيم العشرية (I2fb03، b/333863462) - عند إدخال بيانات الماوس أثناء الاختبارات، تقبل الآن
MouseInjectionScope.click()وMouseInjectionScope.doubleClick()وMouseInjectionScope.tripleClick()وMouseInjectionScope.longClick()المَعلمةbutton: MouseButtonلجعلها قابلة للتطبيق على نطاق أوسع. القيمة التلقائية هيMouseButton.Primaryلجميع الطرق. (I31a23، b/190493367، b/261439695) - تمت إعادة تسمية
onClickedإلىonClickداخلLinkInteractionListener. (Iaa35c) - تمّت إعادة تسمية
TextInclusionStrategy.isInsideإلىisIncluded. اجعل نوع الإرجاع فيParagraph/MultiParagraph#getRangeForRect()غير قابل لأن يكون فارغًا. (I51f26)
إصلاح الأخطاء
- تم إصلاح مشكلة التقاط لقطة شاشة طويلة للحاويات التي يمكن التمرير فيها والتي تتضمّن
reverseScrolling=true. (I7c59c)
المساهمة الخارجية
- تمت إضافة إمكانية جلب العناصر مسبقًا في
LazyListsالمتداخلة (مثلLazyColumnيعرضLazyRowsمتداخلة). ومن المتوقّع أن يقلّل هذا التغيير من انخفاض عدد اللقطات في الثانية أثناء التمرير فيLazyListsهذه. الإعداد التلقائي للتنفيذ هو جلب أول عنصرَين متداخلَين مسبقًا، ولكن يمكن التحكّم في هذا السلوك من خلال واجهتَي برمجة التطبيقات الجديدتَينLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)وLazyListPrefetchStrategy#onNestedPrefetch. (I51952)
الإصدار 1.7.0-alpha07
17 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha07. يتضمّن الإصدار 1.7.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة "متوقّف نهائيًا" على
ClickableText. لإضافة روابط إلى النص، أنشئAnnotatedStringباستخدامLinkAnnotationمطابق للرابط، ومرِّرAnnotatedStringإلى العنصر القابل للإنشاء Text. (I34d4b، b/323346994) - إضافة
ViewConfiguration.HandwritingGestureLineMarginلإيماءات الكتابة بخط اليد إتاحة إيماءةJoinOrSplitفيBasicTextField(Ie6e13، b/325660505) - لم يعُد
FocusProperties.enterوFocusProperties.exitميزتَين تجريبيتَين. لم يعُدFocusDirection.EnterوFocusDirection.Exitميزتَين تجريبيتَين. لم يعُدFocusRequester.Cancelتجريبيًا (I461a1، b/261564106) - عند طلب إحداثيات Layout، يمكنك الآن استخدام الوسيطة
excludeDirectManipulationOffsetلاستبعاد الإزاحة التي تم ضبطها بواسطة Layouts الأصلية التي وضعت العناصر التابعة لها باستخدامPlaceable.PlacementScope.withDirectManipulationPlacement. وبالمثل، يمكن الآن وضع العناصر التابعة في Layout التي تغيّر موضعها بشكل متكرّر باستخدامwithDirectManipulationPlacement(مثل Scroll، الذي يتم تنفيذه تلقائيًا). يساعد ذلك في جعل الرسوم المتحركة المستندة إلىapproachLayoutأكثر سهولة في الاستخدام، إذ يمكن الآن التمييز بين الإزاحة التي سيتم تحريكها والإزاحة التي سيتم تطبيقها مباشرةً عند اتخاذ قرار بتحريك طريقة العرض. (I60ec7) - تمت إزالة علامة الميزة الخاصة بلقطات الشاشة الطويلة. (I28648، b/329128246)
- سيتم الآن عرض العناوين الثابتة بشكل صحيح في لقطات الشاشة الطويلة.
LazyColumn(I8d239، b/329296635) - سيتم استبدال مصادر السحب والإفلات في
NestedScrollبالمصدرَينUserInputوSideEffectلاستيعاب التعريف الموسّع لهذه المصادر الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput). (I40579) - أصبحت الرموز
ApproachLayoutModifierNodeوModifier.approachLayoutثابتة الآن، مع توفّر الرمزين الجديدينisMeasurementApproachInProgress()وisPlacementApproachInProgress()ليحلا محل الرمزين القديمينisMeasurementApproachComplete()وisPlacementApproachComplete()على التوالي. - تمت إزالة المعدِّل
intermediateLayoutالمتوقّف نهائيًا. (I3e91c) - أعِد تسمية
GraphicsLayer#buildLayerإلى record لتعكس طريقتَي begin/endRecording لواجهات برمجة التطبيقات المستندة إلى Displaylist، مثلRenderNodeوPicture. - تم تعديل
rememberGraphicsLayerللاستفادة منrememberObserver. (I312c1، b/288494724، b/330758155) - تم إيقاف
UrlAnnotationنهائيًا، لذا يُرجى استخدامLinkAnnotation.Urlبدلاً منها. إذا كنت تستخدم "تحديد نسق المواد"، استخدِم العنصرTextDefaultsلإنشاء التعليق التوضيحي مع تطبيق "تحديد نسق المواد" عليه (I8d180، b/323346545). - تمت إضافة خيار ضبط نمط حالة الضغط إلى الروابط النصية، بالإضافة إلى النمط العادي ونمطَي التمرير والتركيز (I5f864، b/139312671)
- تمت إعادة تسمية
String.parseAsHtmlإلىAnnotatedString.Companion.fromHtml. (I43dcd) - تمت إضافة وسيطات التنسيق (
linkStyleوfocusedLinkStyleوhoveredLinkStyle) وأداة معالجة تفاعلات الروابط إلى الطريقةparseAsHtml. عند تحليل السلسلة التي تمّت إضافة علامات HTML إليها باستخدام علامات<a>، ستنشئ الطريقةLinkAnnotation.Urlلكلّ علامة من هذا النوع وتمرّر عناصر التصميم ومستمع التفاعل مع الروابط إلى كلّ تعليق توضيحي. (I7c977) - تتلقّى الدالة
LinkAnnotationالآن وسيطتَي التنسيق المستند إلى الحالة وLinkInteractionListener. أضِف هذا التعليق التوضيحي إلىAnnotatedStringللحصول على رابط تشعّبي. من خلال تمريرfocusedStateو/أوhoveredState، يمكنك تحديدconfigurationالمرئي للروابط عند التركيز عليها و/أو تمرير مؤشر الماوس فوقها. (I81ce4، b/139312671) - لم يعُد بإمكان
ImeOptions.hintLocalesقبول القيمة الخالية. إذا أردت تمرير قائمة Locale فارغة، يُرجى استخدامLocaleList.Empty. (Ic5bc4)
إصلاح الأخطاء
- التعامل بشكل سليم مع بيانات أحداث الإدخال السابقة غير الصالحة أو التالفة (تجاهل بيانات الإزاحة غير الصالحة)
- إصلاح أحداث المؤشر غير المتوقّعة عند إضافة أداة تعديل إدخال المؤشر بشكل ديناميكي قبل أداة تعديل إدخال مؤشر أخرى أثناء بث حدث إدخال مؤشر نشط (على سبيل المثال، بين حدثَي تحريك المؤشر فوق العنصر والخروج منه [الماوس/القلم الضوئي]).
الإصدار 1.7.0-alpha06
3 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha06. يتضمّن الإصدار 1.7.0-alpha06 هذه التعديلات.
الميزات الجديدة
- تمت إضافة طريقة
parseAsHtmlللسلاسل ذات التنسيق: تتيح هذه الطريقة تحويل سلسلة مميّزة بعلامات HTML إلىAnnotatedString. يُرجى العلم أنّه لا تتوفّر جميع العلامات، على سبيل المثال، لن تتمكّن بعد من عرض القوائم النقطية. (I84d3d، I30626، b/139326648) - تمت إضافة دعم تجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة تطبيقات Android الرسمية (
ScrollCaptureCallback). هذه الميزة تجريبية وقد لا تتعامل حاليًا مع جميع الحالات بشكل صحيح. لهذا السبب، يتم إيقافها تلقائيًا في الوقت الحالي. للموافقة على هذه الميزة، اضبط العلامةComposeFeatureFlag_LongScreenshotsEnabledعلى "صحيح". (I2b055، b/329296471)
تغييرات واجهة برمجة التطبيقات
- تم تغيير
fun ClipEntry.getMetadata()إلىval ClipEntry.clipMetadata. (I50155) - تمت إزالة الدالتَين
ClipboardManager.getClipMetadataوClipboardManager.hasClip. يُرجى استخدامclipEntry.getMetadata()لقراءة البيانات الوصفية لإدخال المقطع الحالي. تحقَّق أيضًا من نتيجةClipboardManager.getClipلمعرفة ما إذا كانت فارغة أم لا، وذلك لمعرفة ما إذا كانت "الحافظة" تتضمّن مقطعًا حاليًا. (I50498) - يمكنك الآن تمرير عناصر
GraphicsLayerإلى دوالplaceable.placeWithLayer()(I1b22f) - تقبل
ClipboardManager.setClipالآن القيمة الخالية لتتمكّن من محو الحافظة. (I7d2e9) - تمت إضافة معرّفات الموارد للمساعدة في إخفاء طرق العرض المستخدَمة كتفاصيل التنفيذ ضمن أدوات الإنشاء (I99531).
- تمت إضافة طريقة التعليق
GraphicsLayer#toImageBitmapلإتاحة عرض محتويات صورة نقطية فيGraphicsLayer. هذه عملية عرض مُسارعة بالأجهزة على المستوى 22 من واجهة برمجة التطبيقات (API) أو أعلى (شاملة)، وتتوافق مع أكثر من% 99 من جميع أجهزة Android. في المستوى 21 لواجهة برمجة تطبيقات Android، يتم الرجوع إلى العرض البرمجي. (I9e114) - طريقة مساعدة لتحويل
RectFفي Android إلىComposeRect(I39925، b/325660505) - تتضمّن جميع المَعلمات
KeyboardOptionsالآن قيمة غير محدّدة تلقائيًا. تمّت إضافة طريقةKeyboardOptions.merge. - تمت إعادة تسمية
KeyboardOptions.autoCorrectإلىautoCorrectEnabledوتمّت إتاحة إمكانية أن تكون القيمة فارغة، حيث تشير القيمة الفارغة إلى عدم تحديد أي قيمة. (Ia8ba0، b/295951492) - يستخدم المتغيران
BasicTextField(state)وBasicSecureTextFieldالآنKeyboardActionHandlerبدلاً منKeyboardActionsلمعالجة الإجراءات التي يتم اتخاذها باستخدام لوحة المفاتيح البرمجية. (I58dda)
الإصدار 1.7.0-alpha05
20 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha05. يتضمّن الإصدار 1.7.0-alpha05 هذه التعديلات.
الميزات الجديدة
- إضافة واجهة برمجة التطبيقات
GraphicsLayerالجديدة لتسجيل أوامر الرسم في قائمة العرض، بالإضافة إلى سمات إضافية تؤثر في عرض قائمة العرض يوفر ذلك حدودًا لعزل المشهد المعقّد وتقسيمه إلى أجزاء أصغر يمكن تعديلها بشكل منفصل عن بعضها البعض بدون إعادة إنشاء المشهد بأكمله. يمكن إجراء عمليات تحويل علىGraphicsLayerبدون إعادة تسجيل قائمة العرض. على عكسModifier.graphicsLayer، يتيحGraphicsLayerعرض محتوى قابل للإنشاء في أماكن أخرى، وهو مفيد في حالات الاستخدام التي تتضمّن صورًا متحركة حيث يُتوقّع عرض المحتوى في مشاهد مختلفة.
تغييرات واجهة برمجة التطبيقات
- لم يعُد
GraphicsLayer.draw(Canvas)واجهة برمجة تطبيقات عامة. يُرجى استخدام دالة الإضافةDrawScope.drawLayer(GraphicsLayer)بدلاً من ذلك لرسم الطبقة. (I7a7c0) - تقسيم
restrictedConstraints()إلى طريقتَين:fitPrioritizingWidth()وfitPrioritizingHeight()(I6d7fd) - تمت إضافة
HardwareCanvasعنصر نائب لاستخدام Android L (I1c3b5، b/288494724) - تعديل إطار عمل Compose لعرض
GraphicsContextcomposition local بالإضافة إلى تعديل عمليات تنفيذ Owner وDelegateableNodeوdrawWithCacheModifier لعرض إذن الوصول إلىGraphicsContextمن أجل الوصول المحدود النطاق الذي سيؤدي تلقائيًا إلى تنظيف مثيلاتGraphicsLayerعند إيقاف Modifiers. (I64a2f، b/288494724) - تم طرح
InterceptPlatformTextInputللمساعدة في كتابة اختبارات منخفضة المستوى ذات صلة بطريقة الإدخال (IME) وحالات استخدام أخرى منخفضة المستوى لطريقة الإدخال. تم إيقافPlatformTextInputTestOverrideنهائيًا. (I862ed، b/322680547) - تمت إضافة وظيفة الإضافة
GraphicsLayer.setOutline(Outline). (Ib81f4) - إضافة أداة إنشاء الدالة
GraphicsContextلإنشاء مصنع لإنشاء مثيلاتGraphicsLayer(Ib98d6، b/288494724) - تم توفير واجهة برمجة التطبيقات
GraphicsLayerلمنح المطوّرين مرونة محدّدة في تسجيل أوامر الرسم التي يمكن استخدامها للرسم في مكان آخر، بالإضافة إلى تطبيق تأثيرات مرئية مختلفة على النتيجة النهائية. (I80245، b/288494724) - قدِّم
Paragraph#getRangeForRectالذي يعرض نطاقًا من النص الذي تغطيه مساحة مستطيل معيّن. (Iee516، b/325660505) - تمت إزالة الإعداد التجريبي التلقائي لـ
BasicTextباستخدام الوسيطةonLinkClicked. سيتم توفير واجهة برمجة تطبيقات بديلة لدعم الروابط التشعبية في المستقبل. (I107d5)
إصلاح الأخطاء
- تمت إضافة تعريف واجهة برمجة التطبيقات
GraphicsLayerexpect/actual لإتاحة تسجيل أو إعادة تشغيل أوامر الرسم مع تأثيرات مرئية وتركيبات وتحويلات اختيارية. إضافة واجهةGraphicsContextلاحتواء تبعيات الرسومات، بما في ذلك إنشاء مثيلاتGraphicsLayerوإدارتها (I4a8d6، b/288494724) - تم إصلاح مشكلة عدم التوافق مع البحث عن التركيز الأحادي الأبعاد، حيث كان التركيز يتعذّر الخروج من
ComposeViewمضمّنة بين طرق عرض أخرى. (I08fd4)
المساهمة الخارجية
- تم نقل
LocalLifecycleOwnerمن واجهة مستخدم Compose إلىlifecycle-runtime-composeحتى يمكن استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة مستخدم Compose. نشكر "جيك وارتون" على مساهمته. (I6c41b، b/328263448) - عرض خصائص التحيز العائم باستمرار على جميع الأنواع الفرعية للمحاذاة المستندة إلى التحيز (I69f0f، b/328088992)
الإصدار 1.7.0-alpha04
6 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha04. يتضمّن الإصدار 1.7.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إتاحة ميزة الكتابة بخط اليد باستخدام قلم الشاشة في BasicTextField2 على الأجهزة التي تعمل بالإصدارات الأحدث من Android 14 (I002e4)
- في طلب تغيير الرمز هذا، نضيف الإجراء الدلالي
GetScrollViewportLengthحتى نتمكّن من إرسال معلومات حول المكوّنات التي يتمّ تصفّحها في Compose إلى نظام تسهيل الاستخدام. ينطبق هذا التغيير أيضًا على استخدام السمة المذكورة في "قوائم Foundation القابلة للتمرير". (Ic5fa2) - أصبح
FocusRequester.createRefsالآن ثابتًا (I4d92c، b/261436820) - تمت إضافة
DelegatableNode.requireView()للسماح لعُقد المعدِّلات بالحصول علىViewالحالي لنظام التشغيل Android بدون قراءة تركيبة محلية. (I40768) - واجهة برمجة التطبيقات الجديدة
Path.reverse()لعكس اتجاه المسار (I36348) - تمت إضافة
hintLocalesإلىKeyboardOptionsلتزويدTextFieldsبإمكانية إرسال تلميحات إلى محرّرات طرق الإدخال (IME) باستخدام إعدادات محلية معيّنة لضبط لغة مفضّلة مسبقًا. - عرض السمة
platformLocaleمنLocaleالتي تعرض عنصر النظام الأساسي الأساسي، مثلjava.util.Locale(I921c6)
الإصدار 1.7.0-alpha03
21 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha03. يتضمّن الإصدار 1.7.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- نقدّم لك
ContextualFlowRowوFlowRow/Columnالمحسّنة مع MaxLines وOverflow. يسرّنا الإعلان عن تحسينات على الرمزين التجريبيينFlowRowوFlowColumn، إذ أصبحا يتضمّنان الآن ميزة maxLines وإمكانية التعامل مع المحتوى الزائد، بالإضافة إلى طرح الرمزينContextualFlowRowوContextualFlowColumnلأول مرة. تم تصميم هذا التحديث لتوفير مكوّنات مثالية للأداء، حيث يكونContextualFlow*مثاليًا لعدد كبير من العناصر التي تستخدم إعدادًا صغيرًاmaxLinesوأزرارًا ديناميكية +N "عرض المزيد"، ويكونFlowRowوFlowColumnمثاليًا لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRowأوFlowColumnحيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتناسب مع الحد الأقصى للمحور العرضي، اضبطoverflowعلىFlowRowOverflow.VisibleأوFlowColumnOverflow.Visibleأثناء عملية التهيئة. يمكنك استكشافContextualFlowRowSampleوFlowRowSampleللاطّلاع على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082) - أضِف السمة الدلالية
maxTextLengthالتي يجب ضبطها على الحقول النصية التي تفلتر الحد الأقصى لعدد الأحرف المسموح به. (I24d9f، b/170648072) - تم إيقاف وحدة تغليف
Modifier.inspectableنهائيًا. ستؤدي واجهة برمجة التطبيقات هذه إلى إبطال المعدِّل أكثر من اللازم، لذا لا يُنصح باستخدامها الآن. ننصح المطوّرين بتنفيذ طريقةinspectableProperties()فيModifierNodeElementإذا كانوا يريدون عرض خصائص المعدِّل للأدوات. (Ib3236) - دالة إنشاء جديدة للنوع
PopupPropertiesتتيح التحكّم الكامل في علاماتWindowManager.LayoutParams. (Ibb33e، b/312485503) - تم تقديم
DelegatableNode.requireLayoutCoordinates()كطريقة للحصول علىLayoutCoordinatesالحاليModifier.Nodeبدون الحاجة إلى إلغاءonPlacedوتخزين الإحداثيات في خاصية بنفسك. (Ia8657) - تم تقديم
DelegatableNode.currentLayoutCoordinatesكطريقة للحصول علىLayoutCoordinatesالحاليModifier.Nodeبدون الحاجة إلى إلغاءonPlacedوتخزين الإحداثيات في خاصية بنفسك. (Iaebaa) - تم نقل واجهة برمجة التطبيقات
BasicTextField2وواجهات برمجة التطبيقات ذات الصلة ضِمن حزمةandroidx.compose.foundation.text2إلىandroidx.compose.foundation.text. (I9f635) - تمت إضافة واجهة برمجة تطبيقات
ApproachLayoutModifierNodeجديدة تتيح إنشاء منطق مخصّص للتعامل مع الطلبات في "عقدة المعدِّل" الصريحة. تمت أيضًا إضافة واجهة برمجة تطبيقات تجريبية جديدةDeferredTargetAnimationللرسوم المتحركة التي يكون هدفها غير معروف عند إنشاء مثيل. (I60745) - واجهات برمجة تطبيقات
Pathجديدة للاستعلام عن اتجاه مسار واستخراج خطوط كفاف منPath(I63d04) - تمت إضافة
PathHitTestوPath.contains(Offset)للتحقّق مما إذا كانPathيحتوي على نقطة معيّنة. (I3b218) - تعرض السمة
TextLayoutResultالآن الطريقةgetLineBaseline(lineIndex). يتيح ذلك قراءة خط الأساس لأي سطر من النص بالإضافة إلى خصائص الراحة الحاليةfirstBaselineوlastBaseline. (Ide4e8، b/237428541) - تمت إضافة طريقة لمقارنة التعليقات التوضيحية لملفَي
AnnotatedStringsفقط. (I32659)
إصلاح الأخطاء
- تم إصلاح مشكلة في التوافق مع الإصدارات القديمة من
SemanticsPropertyReceiver.performImeActionوSemanticsActions.PerformImeAction. (Id0528، b/322269946)
الإصدار 1.7.0-alpha02
7 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha02. يتضمّن الإصدار 1.7.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة في توافق الرمز الثنائي مع
SemanticsPropertyReceiver.performImeAction. (I65865، b/322269946) - لم يعُد الدالة الإنشائية
PopupPropertiesالتي تأخذ المَعلمةusePlatformDefaultWidthتجريبية. (I8f8d2) - تمت إضافة تحميل زائد للدالة
ComposeTestRule.waitUntilيأخذ وصفًا نصيًا للحالة المطلوب تضمينها في رسالة المهلة. (I9413e) - واجهة برمجة تطبيقات جديدة للدلالات
unset()لإزالة خصائص الدلالات التي تتم إضافتها في سلسلة المعدِّل نفسها. سمة دلالية جديدةisOpaque. (I8c583، b/317966058، b/246056649) - تمت إزالة
originalEventPositionمن طريقة النسخ في واجهة برمجة التطبيقات العامة الخاصة بـPointerInputChange. (I7bead)
إصلاح الأخطاء
- تم إصلاح خطأ في إمكانية الوصول كان يسمح بالنقر على عناصر غير علامات التبويب وأزرار الاختيار عند تحديدها. (I2181c)
- سيتضمّن الإصدار
VelocityTrackerالآن إصلاحًا لتفعيل إضافة النقاط تلقائيًا. يمكنك إيقاف الإصلاح من خلال ضبطVelocityTrackerAddPointsFixعلى "خطأ" في حال حدوث أي مشاكل. (Ib3877، b/269487059) - تم إصلاح عدم التوافق الثنائي مع الإصدارات القديمة في
TextStyleوParagraphStyle. (I179f0، b/320819734)
المساهمة الخارجية
- تمت إضافة أداة إنشاء
DialogPropertiesجديدة بدون مَعلمات خاصة بالنظام الأساسي. (I45829) - تمت إضافة أداة إنشاء
PopupPropertiesجديدة بدون مَعلمات خاصة بالنظام الأساسي. (I9a038)
الإصدار 1.7.0-alpha01
24 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha01. يتضمّن الإصدار 1.7.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم توسيع
ClipboardManagerمن خلال إضافةClipEntryوClipMetadataلإتاحة المحتوى العشوائي، مثل الصور. - تضيف هذه السمة واجهة برمجة التطبيقات
DeviceConfigurationOverrideإلىui-testللسماح بتجاوز سلوك المحتوى قيد الاختبار محليًا، مثل تحديد حجم متاح أو لغة أو اتجاه التنسيق أو مقياس الخط أو المظهر.
الإصدار 1.6
الإصدار 1.6.8
12 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.6.8. يتضمّن الإصدار 1.6.8 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح حالات عدم الاتساق في تغيير حجم الخط عندما يكون مقياس الخط أقل من الحد الأدنى للجدول المحدّد. في هذه الحالة، يتم الآن إجراء استيفاء بين المقياس الخطي 1x وأدنى جدول محدّد، بحيث يزداد حجم الخط بشكل رتيب مع زيادة المقاييس. (Icbae3)
الإصدار 1.6.7
1 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.6.7. يتضمّن الإصدار 1.6.7 هذه التعديلات.
الإصدار 1.6.6
17 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.6.6. يتضمّن الإصدار 1.6.6 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل نادر في
BasicTextField
الإصدار 1.6.5
3 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.6.5. يتضمّن الإصدار 1.6.5 هذه التعديلات.
الإصدار 1.6.4
20 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.6.4. يتضمّن الإصدار 1.6.4 هذه التعديلات.
الإصدار 1.6.3
6 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.6.3. يتضمّن الإصدار 1.6.3 هذه التعديلات.
الإصدار 1.6.2
21 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.6.2. يتضمّن الإصدار 1.6.2 هذه التعديلات.
الإصدار 1.6.1
7 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.6.1. يتضمّن الإصدار 1.6.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في التوافق مع الإصدارات القديمة من
SemanticsPropertyReceiver.performImeActionوSemanticsActions.PerformImeAction. (Ie0bb2، b/322269946) - تعرض التصاميم الآن خطأ أثناء القياس عندما يعرض أحدها حجمًا كبيرًا بشكل غير طبيعي. يحدث هذا النوع من الأخطاء عادةً عندما تستخدم القياسات الحد الأقصى للقيود مباشرةً بدون التحقّق من
Constraints.Infinity. سيساعد هذا الفحص المطوّرين في العثور على المشاكل في التنسيق الذي يتضمّن حجمًا غير صحيح بدلاً من التنسيق الذي يحتوي على هذا الحجم. (I339a9)
الإصدار 1.6.0
24 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.6.0. يتضمّن الإصدار 1.6.0 هذه التعديلات.
الإصدار 1.6.0-rc01
10 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.6.0-rc01. يتضمّن الإصدار 1.6.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تنفيذ محسّن لرسومات متّجهة لتحسين الأداء من خلال تقليل عمليات إعادة الإنشاء الإضافية
الإصدار 1.6.0-beta03
13 كانون الأول (ديسمبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta03. يتضمّن الإصدار 1.6.0-beta03 هذه التعديلات.
الميزات الجديدة
- يمكن الآن فصل
LayoutCoordinatesبدون فصل العقدة. الحماية من ذلك في "أداة فحص التنسيق" في Compose (If693)
إصلاح الأخطاء
- أصبح
PlatformImeOptionsالآن فئة ملموسة بدلاً من واجهة. (If40a4) - تم إصلاح عمليات إعادة التركيب الإضافية غير الضرورية التي تحدث بسبب توفير قيم جديدة لـ
LocalSoftwareKeyboardControllerوLocalTextInputServiceفي كل مرة تتم فيها إعادة تركيب العنصر الأساسي. (I42190، b/310510985)
الإصدار 1.6.0-beta02
29 نوفمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta02. يتضمّن الإصدار 1.6.0-beta02 هذه التعديلات.
الإصدار 1.6.0-beta01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta01. يتضمّن الإصدار 1.6.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يأخذ المعدِّل
DragAndDropTargetالآنDragAndDropTargetالمستلِم بشكلٍ صريح ويتضمّن تعبير lambda للموافقة على جلسة السحب والإفلات. تتوفّر الآن دالتان لإنشاءDragAndDropModifierNode. رقم تعريف واحد لتلقّي عمليات النقل وآخر لنقل البيانات (I69481) - تم تعديل
maximumFlingVelocityليتم تمثيله كعدد عشري. تعديل المستندات لتكون أكثر وضوحًا بشأنmaximumFlingVelocityالوحدة (I8adc7) - تمت إعادة تسمية
onDragAndDropStartفي مصنعDragAndDropModifierNodeإلىacceptDragAndDropTransfer.تمت إضافةacceptsDragAndDropTransferإلى المعدِّلdragAndDropTargetلقبول المحتوى من جلسة سحب وإفلات. تعرض هذه الدالة lambda قيمةDragAndDropTargetصالحة إذا كنت مهتمًا بجلسة سحب وإفلات. تم استبدال دوال lambda الأخرى لمعالجة أحداث السحب بهذه الدالة. تمت إضافة دالة مصنعDragAndDropTargetلتلقّي البيانات من جلسات السحب والإفلات (Iebf3a). تمت إزالة
DragAndDropInfoكنوع، ويأخذDragAndDropModifierNode.dragالآن مَعلمات لـtransferDataوحجم الزخرفة ووظيفة lambda الخاصة بزخرفة السحبDrawScopeيحتوي
DragAndDropTargetعلى طرق لأحداث معيّنة للسحب والإفلات بدلاً من أن يكون طريقة مجرّدة واحدةتمت إعادة تسمية
onDragAndDropEventفي دالة المصنع الخاصة بـDragAndDropModifierNodeإلىonDragAndDropStartلتوضيح أنّDragAndDropTargetالمقدَّم صالح لجلسة سحب وإفلات معيّنة فقطتمت إزالة
DragAndDropEventType(I645b1)تمت إعادة تسمية
PlatformTextInputModifierNode.runTextInputSessionإلىestablishTextInputSession. (I03cd0)تحسين أسماء واجهات برمجة التطبيقات للعُقد القابلة للاجتياز لجعلها أكثر قابلية للفهم (Ia4474)
استبدِل
OriginalTextبـTextSubstitution. (Ifa5a8)تمت إعادة تسمية
PlatformTextInputModifierNode.textInputSessionإلىrunTextInputSession. (Ie9c6b)تُعدّ العناصر الفرعية من
SubcomposeLayout(والتنسيقات المشابهة مثلLazyColumnالمستندة إليه) التي يتم الاحتفاظ بها لإعادة استخدامها في المستقبل غير نشطة. تم تقديم واجهة برمجة تطبيقات جديدةassertIsDeactivated()لاختبار هذه العُقد. سيتم تلقائيًا استبعاد العُقد غير النشطة من بقية واجهات برمجة التطبيقات الاختبارية. (I2ef84، b/187188981)تمت إزالة
FocusDirection.InوFocusDirection.OutواستخدامFocusDirection.EnterوFocusDirection.Exitبدلاً منهما (I2f660)تعتمد واجهات برمجة التطبيقات الخاصة بـ Material
SwipeToReveal(للبطاقات والرقائق) الآن على واجهة برمجة تطبيقات مستندة إلى الخانات (كما هو مقترَح في Compose) بدلاً من مثيلات مستندة إلى فئة البيانات لإنشاء هذه الخانات. هذا تغيير غير متوافق مع الإصدارات السابقة، يُرجى الاطّلاع على العرض التوضيحي والرمز النموذجي للحصول على أمثلة حول كيفية استخدام واجهة برمجة التطبيقات الجديدة. (Ia8943)تم إيقاف أداة إنشاء
FontStyle(int)نهائيًا، لذا يُرجى استخدامFontStyle.NormalأوFontStyle.Italicبدلاً منها. (I66610)تمت إعادة تسمية واجهة
FontScalableإلىFontScaling(Ie804a)
إصلاح الأخطاء
- لن يعرض
SoftwareKeyboardController.show()لوحة المفاتيح على الشاشة إذا لم يكن هناك محرّر نصوص مركّز عليه. (I2165a، b/301477279) - سيتم الآن تجاهل أحداث الضغط على المفتاح (Up) في لوحة المفاتيح للأزرار التي لم تتلقَّ حدث الضغط (Down) في "طريقة العرض Compose" نفسها. (Ib37b4، b/305518328)
- إضافة إمكانية استخدام أداة العرض مع "التدرّج الدائري" في
ArcLine(I4d5bb) - نفِّذ الدالتَين equals وhashcode للسمة
PageSize.Fixed. (Ie3ede، b/300134276) - حلّ مشكلة توافق الرمز الثنائي مع تغيير Window Inset (Iee695)
- إزالة الطبقة الأساسية للمادة من أجل Material3 Chip/Button لأنّ اختبارات الأداء الدقيقة تُظهر أداءً أفضل بدونها. (I55555)
- سيتم الآن استخدام قيمة
TestDispatchers التي تم تمريرها كـeffectContextإلى اختبارات Compose لإنشاء الاختبار وساعات الإطارات. (Ia7178)
الإصدار 1.6.0-alpha08
18 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha08. يتضمّن الإصدار 1.6.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة lambda
onDrawDragShadowإلىdrawDragDecorationفيModifier.dragAndDrawSource، كما تمت إعادة تسمية مَعلمة الحجم إلىdragDecorationSizeفيDragAndDropInfo. (Id0e30، b/303904810) - أضِفنا
SemanticsNodeInteraction.isDisplayed()وSemanticsNodeInteraction.isNotDisplayed()للتحقّق مما إذا كانت العقدة المطابِقة مرئية أم لا بدون التأكّد من ذلك أيضًا. (I2c196، b/302100809) - تم تقديم القيمة الخاصة
UnspecifiedللحقولTextAlignوTextDirectionوHyphensوLineBreakفيParagraphTextStyleلاستبدالnull. وبما أنّ هذه الفئات هي فئات مضمّنة، نتجنّب تحويل أنواع البيانات الأساسية إلى كائنات من خلال استبدال القيم القابلة للتصغير بالقيمة Unspecified. تم تعديل أدوات الإنشاء وعناصر الجلب والطرق الأخرى فيTextStyleونمط الفقرة لقبول المَعلمات المذكورة كأنواع غير فارغة. (I4197e، b/299490814) - أضِف حمولة زائدة
GoogleFontلقراءةGoogleFontمن XML. (If8f59) - تم جعل الصف
LoremIpsumPreviewParameterProviderصفًا مفتوحًا. (I41bf5، b/266918816، b/300116360)
إصلاح الأخطاء
- تستخدم
FontFamilyResolverالآنDispatchers.Mainلروتينات ذاكرة التخزين المؤقت المتزامنة. (Ie8dd9) - تزيل
AndroidViewBindingالآن بشكل متزامن مثيلاتFragmentالتي تم تضخيمها من خلال تضمينFragmentContainerViewفي التصميم كجزء منonReleaseباستخدامcommitNow(بدلاً منcommitالتي كانت تستخدمها سابقًا)، وبالتالي إصلاح المشاكل المتعلّقة بطريقة "التعديل المباشر" في استبدال التركيبة عند إجراء تغييرات. (I58fbf)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha07. يتضمّن الإصدار 1.6.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم
PlatformTextInputMethodTestOverrideلكتابة اختبارات لمحرّرات النصوص المخصّصة. (Id159b) - تضيف
dragAndDropSourceModifier لبدء جلسات السحب والإفلات، وdragAndDropTargetModifier لتلقّي البيانات من جلسات السحب والإفلات. (Ib7828، b/286038936) - تمت إضافة مجموعتَي
ColorListوColorSetاللتين تتجنّبان عمليات التخصيص. (I744bd) - تمت إضافة العلامة المؤقتة
DisableNonLinearFontScalingInComposeلإيقاف الضبط غير الخطي لحجم الخط. اضبطDisableNonLinearFontScalingInCompose = trueفي اختباراتك إذا كنت بحاجة إلى وقت لتنظيفها. ستتم إزالة هذه العلامة في الإصدار 1.6.0-beta01 من Compose. (Ic9486)
إصلاح الأخطاء
- تحسين تحليل الرسومات المتجهة القابلة للرسم بتنسيق XML (Ibb015)
الإصدار 1.6.0-alpha06
20 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha06. يتضمّن الإصدار 1.6.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تحسينات إضافية على رموز Material. (I3e08d)
- تضيف هذه السمة إمكانية التنقّل للأعلى أو للأسفل في شجرة المعدِّلات للعثور على عُقد مشابهة. (I2d234)
- تمت إضافة دالة رد الاتصال
onRestoreFailed()إلى المعدِّلfocusRestorer()(Ie1d43) - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorIntوFloatRangeوIntRangeوSizeوغير ذلك. (Id65c8، b/290950582) - إضافة
showSystemUi=trueإلى تعريفPreviewScreenSizes(Ib61d3)
التغييرات في السلوك
- تستخدم ميزة "إنشاء" الآن ضبطًا غير خطّي لحجم الخط من أجل تحسين إمكانية القراءة وتسهيل الاستخدام. عندما يكون مقياس الخط > %100 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ عادي، ولكن سيزداد حجم النص الكبير قليلاً فقط. بالإضافة إلى ذلك، سيتم تعديل ارتفاعات الأسطر المحدّدة في SP تلقائيًا لتبقى متناسبة مع الارتفاع المقصود بنسبة% 100. يمكنك الاطّلاع على أفضل الممارسات المتعلّقة بتغيير حجم الخط للحصول على مزيد من المعلومات. (I11518)
الإصدار 1.6.0-alpha05
6 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha05. يتضمّن الإصدار 1.6.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تفعيل ميزة "تصوير المحتوى" في
AndroidComposeViewAccessibilityDelegateCompat(Ib2969) - يتم تحديد الحد الأقصى لسرعات التحريك السريع في مكوّنات العرض، مثل
ScrollViewوRecyclerView، عندViewConfiguration.ScaledMaximumFlingVelocity. يتضمّن تطبيق "الكتابة الذكية" الآن إصدارًا خاصًا به منmaximumFlingVelocityينطبق الآن علىDraggable. (Ibf974) - تضيف هذه الإضافة عملية إنشاء أساسية لدعم واجهات برمجة التطبيقات الخاصة بالسحب والإفلات على المنصة. (If84ce)
- إضافة
deviceIdإلىRotaryScrollEvent(Iba3bf) - تعديل واجهة برمجة التطبيقات
ui-toolingDevices API لتشمل الأجهزة الأحدث (Ib25b4)
الإصدار 1.6.0-alpha04
23 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha04. يتضمّن الإصدار 1.6.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة لإيقاف
ReusableComposition، ما يؤدي إلى إزالة الملاحظات مع إبقاء العُقد في مكانها. يمكن إعادة تفعيل التجميع الذي تم إيقافه من خلال استدعاءsetContent. (Ib7f31) - إضافة واجهة
ReusableCompositionلإدارة دورة الحياة وإعادة استخدام الأغاني الفرعية (I812d1، b/252846775) - تمت ترقية
Modifier.focusGroupإلى واجهات برمجة تطبيقات ثابتة. (I7ffa3) - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorIntوFloatRangeوIntRangeوSizeوغير ذلك. (I70487، b/290950582) - تم تعديل واجهة برمجة التطبيقات
ColorFilterلتضمين أنواع فئات فرعية ملموسة من أجل تحسين إمكانية فحص المَعلمات. (I5fe29) - إضافة مكتبة wear-tooling-preview لعرض قائمة بأجهزة Wear OS الصالحة التي يمكن استخدامها لمعاينة واجهة المستخدم (Ib036e)
- تم إنشاء واجهة
FontScalableللتعامل مع جزء تغيير حجم الخط في واجهة "الكثافة". (I2cf3f)
الإصدار 1.6.0-alpha03
9 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha03. يتضمّن الإصدار 1.6.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- نوع جديد من انتقالات الدخول/الخروج التي توسّع المحتوى أو تقلّصه استنادًا إلى حجم الحاوية المتحرّكة أثناء حركة الدخول والخروج أصبحت واجهة
LookaheadScopeComposable ووظائفها ثابتة الآن. (Ifb2ce) - تمت إضافة إمكانية ضبط
privateImeOptions(Idb772)
إصلاح الأخطاء
- سيعدّل
PopupPositionProvider.calculatePositionالآن تلقائيًا موضع النافذة المنبثقة عند تغيير حالة القراءة في عملية الحساب. (I676a1، b/292257547) - تم إصلاح مشكلة الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة
readOnlyهي "صحيح". تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير قيمةreadOnlyمن "صحيح" إلى "خطأ" أثناء التركيز. (I34a19، b/246909589) - توسيع نطاق تطبيق التأكيدات العامة في اختبار واجهة المستخدم (I1f90d)
الإصدار 1.6.0-alpha02
26 يوليو 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha02. يتضمّن الإصدار 1.6.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة أداة تحديد موقع الخدمة التي يمكن أن ينفّذها منفّذو Composition، ما يتيح تنفيذ Composition الذي يفوّض عمليات البحث عن خدمة مفوَّضة أخرى إلى Composition الأصلي. يجب عدم استدعاء هذه الدالة مباشرةً، ويتم استخدامها لتفعيل إنشاء واجهات برمجة تطبيقات تجريبية في وقت التشغيل يمكن العثور عليها من الإصدارات المُغلَّفة من أداة الإنشاء، مثلما تفعل وحدة واجهة المستخدم. (I296b9)
- إعادة تصميم واجهة برمجة التطبيقات
PlatformTextInput*بالكامل (I6c93a، b/274661182، b/267235947، b/277380808) - لم يعُد
SoftwareKeyboardControllerوLocalSoftwareKeyboardControllerميزتَين تجريبيتَين. أصبحLocalSoftwareKeyboardControllerالآنCompositionLocalمناسبًا أيضًا. (I4c364) - تم إيقاف
LookaheadLayoutوLookaheadLayoutScopeنهائيًا في بعض الإصدارات السابقة، وتمت إزالتهما الآن. واجهات برمجة التطبيقات البديلة هيLookaheadScopeالتي يمكنها العمل مع أي تنسيق. (I12ac3) - تمت إضافة
SemanticsNodeInteraction.requestFocusكطريقة أسهل وأكثر قابلية للاكتشاف لطلب التركيز في الاختبارات. (Ie8722) - إضافة واجهات برمجة تطبيقات تجريبية لتسجيل تأكيدات عامة، لاستخدامها من قِبل أُطر الاختبار في المستقبل (I12d77)
إصلاح الأخطاء
- سيتم الآن تأجيل الاستدعاء الأول
updateللدالةAndroidViewإلى حين ربط طريقة العرض، بدلاً من تنفيذها عند تطبيق التركيبة التي تقدّمAndroidView. يحلّ هذا الإصلاح خطأً كان يؤدي إلى عدم إبطال معاودة الاتصالupdateإذا تم تغيير حالة تمت قراءتها على الفور من خلال تأثير. (Ie9438، b/291094055)
الإصدار 1.6.0-alpha01
21 حزيران (يونيو) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha01. يتضمّن الإصدار 1.6.0-alpha01 هذه التعديلات.
الميزات الجديدة
- إتاحة البحث المسبق في
LazyListيسمح ذلك لـLazyListفي عملية البحث المسبق بتجاوز أي صورة متحركة (مثل صورة متحركة لوضع العناصر،AnimatedVisibility، وما إلى ذلك) ولاحتساب حجم وموضع البحث المسبق لجميع العناصر الفرعية. بعد تمرير التوقّع، يمكن للأطفال في الفئة العمريةLazyListتحريك الشخصيات بشكل مستقل بما يتوافق مع الواقع كما يظهر في تمرير التوقّع.
تغيير في السلوك: تم ضبط قيمة includeFontPadding على false تلقائيًا في Compose
أصبحت قيمة includeFontPadding الآن false تلقائيًا (21d806) في Compose.
includeFontPadding هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة متروكة إضافية أعلى السطر الأول وأسفل السطر الأخير من النص لاستيعاب أي أحرف قد تمتد فوق خطوط الأساس أو تحتها.
سيؤدي تعديل إصدار Compose هذا إلى تغيير طريقة عرض جميع النصوص في واجهة المستخدم من خلال إزالة المساحة المتروكة الإضافية أعلى السطر الأول والأخير من كل نص تعرضه.
واعتمادًا على متطلبات واجهة المستخدم ومقاييس الخطوط التي تستخدمها، يجب أن تكون التغييرات بسيطة. ومع ذلك، قد تواجه بعض المشاكل، مثل: - تعذُّر إجراء اختبارات لقطات الشاشة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور الأساسية. - النص غير محاذٍ قليلاً. أزِل أي مسافات سالبة مخصّصة أو أضِف مسافة إذا لزم الأمر.
يمكنك الموافقة على includeFontPadding باستخدام PlatformTextStyle لكل نص:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
يمكنك تفعيل includeFontPadding لجميع نصوصك من خلال ضبط أنماط Material. يُرجى العِلم أنّ أسماء المَعلمات ستختلف بين الإصدارَين M2 وM3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
يمكنك الاطّلاع على مزيد من المعلومات حول Compose includeFontPadding في مستندات المطوّرين ومنشور المدونة هذا.
إذا واجهت مشاكل أو أخطاء مرتبطة بهذا التغيير، يمكنك إبلاغنا عن خطأ باستخدام أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- دعم
InputConnection#requestCursorUpdates(I0c69b) - تمت إضافة
FocusRequester.saveFocusedChildوFocusRequester.restoreFocusedChild(Ic557e، b/272302679، b/275157318) - أضِف النوع
ResourceResolutionExceptionلتضمين العناصر القابلة للرمي التي يتم طرحها عند محاولة تحميل مواد عرض الصور النقطية مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44، b/230166331، b/278424788) - تم تحسين إمكانية الوصول لتعزيز الأداء وعمليات تخصيص الذاكرة. (Iede48)
- تمت إضافة خصائص ودلالات وإجراءات لدعم ترجمة النصوص. (I4a6bc)
- خاصية جديدة في
IntrinsincMeasureScopeوطرق تنفيذها (مثلMeasureScope) للإشارة إلى ما إذا كانت عملية القياس الحالية هي عملية بحث مسبق. (I7a812) - تم تعديل واجهة برمجة التطبيقات
DrawScopeلإتاحة إمكانية إعادة استهداف العرض في لوحة عرض مختلفة باستخدام كثافة/اتجاه تخطيط وحجم بديلَين. - تم تعديل
DrawContextليتيح إعداد الكثافة واتجاه التصميم بالإضافة إلى إمكانية ضبط لوحة العرض. (Ie1f9b، b/225408150) - تمت إضافة
Paragraph#fillBoundingBoxesلاحتساب مربّعات الإحاطة للأحرف. (If30ee) - تمت إضافة مجموعة من
MultiPreviewsالشائعة (Ia5a27)
إصلاح الأخطاء
- تمت إضافة واجهة
FocusTargetModifierNodeيمكن استخدامها لإنشاءFocusTargetمخصّص. (I9790e) - تمت إعادة تسمية المَعلمات
fallback*في الدالة الإنشائيةTextMeasurerإلىdefault*. (I940a5) - تمت إعادة تسمية "
SemanticsPropertyReceiver.performImeAction" إلى "onImeAction" و"SemanticsActions.PerformImeAction" إلى "OnImeAction". (I8e841) - تضيف هذه السمة Wheel للتمييز بين التمرير باستخدام الماوس والسحب في التمرير المتداخل (في
NestedScrollConnectionعلى وجه التحديد). (Ie57e4) - تمت إضافة واجهة برمجة التطبيقات
asComposePaintلاستبدالtoComposePaintلأنّ العنصر الذي يتم عرضه يغلّفandroid.graphics.Paintالأصلي (I22b4c) - إيقاف
SemanticsProperties.imeActionنهائيًا واستبداله بمعلَمة جديدة فيSemanticsActions.performImeAction(I4a587) - تمت إضافة إمكانية التحديد باستخدام الماوس. سيتوسّع التحديد المستند إلى اللمس بمقدار كلمة، وسيتقلّص بمقدار حرف. (Ic0c6c، b/180639271)
- تُطلق الآن طرق
Paragraphالتي كانت تُطلقAssertionErrorللإزاحات خارج الحدود الخطأIllegalArgumentExceptionكما تفعلMultiParagraph. (I549d3، b/243338896)
الإصدار 1.5
الإصدار 1.5.4
18 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.4. يتضمّن الإصدار 1.5.4 هذه التعديلات.
الإصدار 1.5.3
4 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.3. يتضمّن الإصدار 1.5.3 هذه التعديلات.
إصلاح الأخطاء
- (b/301209788) كان
TextFieldيطبّق أحيانًا الأوامر السابقة بشكل غير صحيح عند التركيز على النص وإدخال نص باللغة الكورية، ما يؤدي إلى فقدان الأحرف.
الإصدار 1.5.2
27 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.2. يتضمّن الإصدار 1.5.2 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة حلّ بديل للأعطال عند الوصول إلى واجهة برمجة التطبيقات الخاصة بالتمرير للأعلى أو للأسفل من سلسلة التعليمات في الخلفية.
- إصلاح مشكلة إضافة العُقد غير المرفقة إلى شجرة الدلالات
الإصدار 1.5.1
6 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.1. يتضمّن الإصدار 1.5.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة
readOnlyهي "صحيح". تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير قيمةreadOnlyمن "صحيح" إلى "خطأ" أثناء التركيز. (I34a19، b/246909589)
الإصدار 1.5.0
9 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.5.0. يتضمّن الإصدار 1.5.0 هذه التعديلات.
الإصدار 1.5.0-rc01
26 يوليو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-rc01. يتضمّن الإصدار 1.5.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل يحدث عند استخدام
SubcomposeLayoutداخلmovableContentOf().
الإصدار 1.5.0-beta03
28 حزيران (يونيو) 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta03. يتضمّن الإصدار 1.5.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصّص. (Ifb1d6)
- تم إصلاح مشكلة في عناصر Dialog وPopup القابلة للإنشاء قد تؤدي إلى عدم تغيير حجم النافذة الفرعية على النحو المتوقّع عند استخدام
usePlatformDefaultWidth=true. (I112ee)
الإصدار 1.5.0-beta02
7 يونيو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta02. يتضمّن الإصدار 1.5.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
asComposePaintلتفعيل استخدام مثيلandroid.graphics.Paintفي Compose
إصلاح الأخطاء
- تمت إضافة واجهة برمجة التطبيقات
asComposePaintلاستبدالtoComposePaintلأنّ العنصر الذي يتم عرضه يغلّفandroid.graphics.Paintالأصلي (I22b4c)
الإصدار 1.5.0-beta01
24 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta01. يتضمّن الإصدار 1.5.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة عمليات التخصيص في إعادة التركيب والصور المتحركة الملوّنة و
AndroidComposeView(Ib2bfa) - إضافة وظيفة مساعدة ممتعة
CacheDrawModifierNode()للسماح بالتفويض (Icf8f9) - نقدّم لك السمة
isLookingAheadالتي يمكن الوصول إليها منMeasureScopeلمراقبة نتائج البحث المسبق والتأثير في عملية البحث الرئيسية إذا أردت. (Ibf4c3) - السمة الدلالية الجديدة
traversalIndex، وهي عدد عائم يُستخدم لإعادة ترتيب العُقد في عملية اجتيازTalkBack(تأتي القيم الأصغر أولاً). (I9a81b، b/186443263) - إعادة تسمية السمة "الدلالات"
isContainerإلىisTraversalGroup(I121f6) - أصبح لدى
ColorProducerالآنoperator fun invokeبدلاً منproduce(I4a9a2) - أضِف واجهة برمجة التطبيقات
Pathtransform API لتطبيق عمليات التحويل الخاصة بالترجمة أو تغيير الحجم أو التدوير على عناصر المسار. (I23434، b/233772232) - تُسمى طريقة
ColorProducerبـproduce. (I78bde) - إعادة تسمية
toFrameworkColorSpaceإلىtoAndroidColorSpace(I4f547) - تمّت إعادة تسمية
ColorLambdaإلىColorProducer. (I73b1a) - إضافة واجهات برمجة تطبيقات للتحويل بين أنواع مساحات الألوان في Android وCompose (Ie7db4، b/279979665)
- تمت إضافة مَعلمة لون إلى
BasicTextللسماح بتحريك لون النص أو ضبطه بكفاءة. (Iffd88، b/246961787) - تمت إعادة تسمية
TextRange.constrainإلىTextRange.coerceIn. (I31be2) - تمّت إضافة
TextStyle.merge(...)محسَّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تم تثبيت العديد من واجهات برمجة التطبيقات الخاصة بالنصوص التي تتضمّن
BrushوDrawStyleوTextMotionوDrawScope.drawTextوParagraph.paint(Brush)وMultiParagraph.paint(Brush). (I2f740، b/261581564، b/261581931، b/261561245) - تم إيقاف إيقاف
PlatformTextStyle.includeFontPaddingنهائيًا. كانت نيتنا الأصلية هي إزالة الحقل، ولكن تشير الملاحظات إلى أنّ المطوّرين يحتاجون إلى خيار الإعداد هذا. وبالتالي، تمت إزالة الإيقاف النهائي من الحقل (I98e96، b/277703184) - تمت إضافة طريقة
TextRange.constrainالعامة. (I97912) - يمكن الآن فتح
UrlAnnotationفيAnnotatedStringمن خلال خدمات تسهيل الاستخدام، مثلTalkBack. (If4d82، b/253292081) - تمت إضافة إجراء
InsertTextAtCursorالدلالي للحقول النصية. (I11ed5) - تمت ترقية الدالة الإنشائية
LineHeightStyle.Alignment(topRatio)إلى واجهة برمجة تطبيقات ثابتة. (I79c32، b/261565383) - لم تعُد
TextMeasurerوواجهات برمجة التطبيقات ذات الصلة تجريبية. (I74647، b/261581753) - تمت إضافة إجراء
PerformImeActionالدلالي لاستدعاء إجراء IME على عُقد محرّر النصوص. (Ic606f، b/269633506) - لم تعُد واجهات برمجة التطبيقات
PlatformTextInputتجريبية على Android. (I668eb) - تم تغيير اسم مَعلمة القيمة لـ
Enum.valueOf(Ia9b89) - المزيد من الاستثناءات التي تم طرحها من enum valueOf (I818fe)
- تم طرح واجهة برمجة التطبيقات
PlatformTextInputAdapterالجديدة ذات المستوى المنخفض لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة التطبيقات الخاصة بالنظام الأساسي. (I58df4) - تمت إضافة المَعلمة
BlendModeإلى الطرقDrawScope.drawTextوParagraph.paintوMultiParagraph.paintلتوفير خوارزميات دمج مختلفة عند رسم نص على Canvas. (I57508) - تمّت إعادة تسمية
Font.MaximumAsyncTimeoutإلىFont.MaximumAsyncTimeoutMillis. إعادة التسمية فقط (I07af5) - قيم النقاط لكل بوصة المعدَّلة للأجهزة المرجعية
@Preview(Id6151، b/254528382) - أضِف المَعلمتَين
brushوalphaإلىBasicTextللسماح بتحريك فرشاة النص أو ضبطها بكفاءة. - تحديد أنواع lambda غير المعبأة لكل من Float وDouble وLong وInt وShort في :ui:ui-unit (I6f18d وb/246961787)
إصلاح الأخطاء
- تمت إزالة عمليات تخصيص متعدّدة في تتبُّع سرعة المؤشر (I26bae)
- تقليل عمليات التخصيص في إدارة تخطيط الشاشة وإدخال المؤشر (I5333a)
- تحسين استخدام ذاكرة Vector وعرض الإطارات الأولى (I2f3c6)
- تمت إزالة عمليات التخصيص عند رسم الخطوط والنقاط باستخدام Canvas (I9f535)
- إضافة مستندات لـ
AndroidFont.fontVariationSettings(I7d9e2)
المساهمة الخارجية
- تحسين الأداء وتقليل عمليات التخصيص في Vector APIs (I906cb)
الإصدار 1.5.0-alpha04
10 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha04. يتضمّن الإصدار 1.5.0-alpha04 هذه التعديلات.
الميزات الجديدة
Modifier.Nodeتحسينات على التفويض تمت إضافة إمكانية محسّنة للتفويض إلى مثيلاتModifier.Nodeأخرى منDelegatingNode. يمكن إجراء ذلك باستخدام واجهتَي برمجة التطبيقاتdelegateوundelegate. قبل هذا التغيير، كان يجب تفويض كل واجهة برمجة تطبيقات من العقدة المفوضة إلى العقدة المفوض إليها بشكل صريح. بعد هذا التغيير، سيتم تفويض واجهات العُقد ضمنيًا ما لم يتم إلغاؤها بشكل صريح باستخدامDelegatingNode. (67352bc)
تغييرات واجهة برمجة التطبيقات
- تُعرّف هذه السمة
NestedScrollModifierNode، وهيNestedScroll Modifier.Nodeيمكن تفويضها. (I69513) - تمت إضافة المَعلمتَين
onResetوonReleaseإلى الدالة البرمجية القابلة للإنشاءAndroidViewBinding، ما يعكس الدالة البرمجية القابلة للإنشاءAndroidViewويتيح إمكانية إعادة استخدام العرض باستخدامViewBinding. (I00b1e، b/276802519) - تم تعديل واجهة برمجة التطبيقات Compose Path API لتتيح عمليات الترجيع من أجل دعم حالات الاستخدام التي تتضمّن تعديلاً متكررًا على المسار مع إعادة استخدام أسرع. (I7b797)
- تمّت إضافة
TextStyle.merge(...)محسَّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تم تثبيت العديد من واجهات برمجة التطبيقات الخاصة بالنصوص التي تتضمّن
BrushوDrawStyleوTextMotionوDrawScope.drawTextوParagraph.paint(Brush)وMultiParagraph.paint(Brush). (I2f740، b/261581564، b/261581931، b/261561245) - تم إيقاف إيقاف
PlatformTextStyle.includeFontPaddingنهائيًا. كانت نيتنا الأصلية هي إزالة الحقل، ولكن تشير الملاحظات إلى أنّ المطوّرين يحتاجون إلى خيار الإعداد هذا. وبالتالي، تمت إزالة الإيقاف النهائي من الحقل (I98e96، b/277703184)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ظهور لوحة المفاتيح لحقول النص داخل مربّعات الحوار التي لم يتم إنشاؤها باستخدام العنصر القابل للإنشاء
Dialog. (I82551، b/262140644)
الإصدار 1.5.0-alpha03
19 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه التعديلات.
الميزات الجديدة
- السلوك التلقائي الجديد لـ
SubcomposeLayoutفيLookaheadScope: إنّSubcomposeLayoutsالتي لا تحتوي على خانات مشروطة (مثلTabRowوScaffoldوBoxWithConstraintsوما إلى ذلك) تعمل الآن بشكل جيد مع الرسوم المتحركة التي تتضمّن ميزة "التحميل المسبق".
تغييرات واجهة برمجة التطبيقات
- تتيح السمة التلقائية الجديدة
intermediateMeasurePolicyالتي تعيد استخدام سياسة القياس من عملية البحث المسبق عمل الأنواع الفرعيةSubcomposeLayoutبدون خانات مشروطة مثلScaffoldوTabRowوBoxWithConstraintsمع البحث المسبق تلقائيًا. (Id84c8) - لن يحظر أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android الآن سوى طلبات
withFrameNanosبدلاً من جميع عمليات الإنشاء عند تلقّي إشعارON_STOP. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقّفة ستستمر في إعادة الإنشاء عند حدوث تغييرات في البيانات، ولكن سيتم حظر الرسوم المتحركة أو أي برنامج آخر يستدعيwithFrameNanos. (Id9e7f، b/240975572) - تغيير
motionEventSpyإلى الإصدار الثابت (Ic5ec4، b/261560988) - تمت إضافة طريقة
TextRange.constrainالعامة. (I97912) - لم يعُد
PlatformTextStyle.includeFontPaddingمتوقفًا نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة التطبيقات المتوافقة هذه للتبديل إلى الإعدادincludeFontPaddingواختباره على أنّه خطأ. (I98e96، b/277703184)
الإصدار 1.5.0-alpha02
5 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- واجهة برمجة التطبيقات الجديدة
SubcomposeLayoutالتي تتضمّن سياسة مقياس وسيط إضافي للتعامل مع منطق المقياس/التنسيق أثناء الرسوم المتحركة المستندة إلى التوقّع المسبق. (I017d3) - أصبح PointerInput الآن يتم تحميله بشكل كسول ويستخدم Modifier.Node لتحسين الأداء (مزيد من المعلومات عن التغيير الطفيف في السلوك). (15dab9)
- تغيير واجهات برمجة التطبيقات التجريبية إلى واجهات ثابتة باستخدام الأحداث الرئيسية (I9c7d8، b/261566839، b/261567368)
- تغيير واجهات برمجة التطبيقات التجريبية إلى إصدار ثابت في
PointerInputChange(I1b543، b/261560988، b/261565762، b/261565749) - تضيف هذه السمة طريقة لإنشاء مثيل
SuspendingPointerInputModifierNodeمن أجل عمليات تنفيذModifier.Nodeالأكثر تعقيدًا. (Ic4933) - يمكن الآن فتح
UrlAnnotationفيAnnotatedStringمن خلال خدمات تسهيل الاستخدام، مثلTalkBack. (If4d82، b/253292081) - تمت إضافة واجهة برمجة تطبيقات لاعتراض مفاتيح الأجهزة قبل إرسالها إلى لوحة المفاتيح البرمجية (I4f4c6، b/186800395)
- تمت إضافة إجراء
InsertTextAtCursorالدلالي للحقول النصية. (I11ed5) - ستطلب إجراءات الاختبار المتعلّقة بالنص (مثل
performTextInput) الآن التركيز مباشرةً، باستخدام إجراء الدلالات، بدلاً من النقر على الحقل. (I6ed05)
إصلاح الأخطاء
- تتطلّب إجراءات الاختبار النصية الآن تفعيل حقول النص. (Iab328)
الإصدار 1.5.0-alpha01
22 مارس 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم يعُد Modifier.intermediateLayout يتطلّب LookaheadScope صريحًا. يحتوي حظر القياس في intermediateLayout على IntermediateMeasureScope كمستقبِل، ما يوفّر CoroutineScope وLookaheadScope وMeasureScope بشكل مناسب.(Ibe2e5)
- تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد Layout. يتيح ذلك التحكّم مباشرةً في محتوى الطفل في LookaheadScope من خلال MeasurePolicy الخاص بالعنصر الأصل. (Ibe2e5)
- تضيف هذه السمة
Modifier.Node#coroutineScopeللسماح لـ Modifier.Nodes بتشغيل إجراءات روتينية. (I76ef9) - السماح لفئة Modifier.Nodes بقراءة CompositionLocals من خلال تنفيذ واجهة CompositionLocalConsumerModifierNode (Ib44df)
- نقل فئة @Deprecated إلى السمة (I882d1)
الإصدار 1.4
الإصدار 1.4.3
3 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.4.3. يتضمّن الإصدار 1.4.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إمكانية عرض
AndroidViewبشكل صحيح عند استخدامه مع بعض المعدِّلات. (I4dc77، b/274797771) - تم إصلاح خطأ في ميزة "البحث مع التركيز" الثنائية الأبعاد كان يؤثر في
DropDownالقوائم (b/276811828) - تم إصلاح خطأ في خصائص الدخول إلى التركيز المخصّص والخروج منه، والتي لم يتم تشغيلها إلا في المرة الأولى التي تم فيها استدعاء تعبير lambda (b/277234245).
- تم إصلاح مشكلة في نظام التركيز تسبّبت في حدوث تعطُّل أثناء قراءة
focusProperties. (b/271324781 وb/274897776)
الإصدار 1.4.2
19 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.4.2. يتضمّن الإصدار 1.4.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة استخدام
AndroidViewللمعدِّلات بشكلٍ صحيح، ما قد يؤدي إلى سلوك غير متوقّع وتعطُّل التطبيق. (Ib67ee، b/275919849) - تم إصلاح مشكلة تراجع لم تكن فيها لوحة المفاتيح تظهر للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للإنشاء
Dialog(I82551، b/262140644)
الإصدار 1.4.1
5 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.4.1. يتضمّن الإصدار 1.4.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تأثُّر
AndroidViewبـParentDataModifier(b/274797771)
الإصدار 1.4.0
22 مارس 2023
تم طرح androidx.compose.ui:ui-*:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.3.0
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainerجديدة تتيح تثبيت عناصر القائمة الكسولة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، تستخدمModifier.focusable()هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881، b/259274257، b/195049010) - تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة
Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589) - تمت إضافة السمة الدلالية
IsContainerعلى "المنصات". سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب الانتقال استنادًا إلى المعنى الدلالي للعناصر، مثل المساحات. (I63379) - تمت إضافة دور جديد لتسهيل الاستخدام
DropdownList. يمكن استخدام هذا الخيار لتكرار سلوكTalkBackعند التركيز علىandroid.widget.Spinner. (I177e5، b/236159001) - يمكنك الآن استخدام
PlatformTextStyle(emojiSupportMatch)لإيقاف معالجة رموز الإيموجي بشكل اختياري لفقرة واحدة. (Ia7100، b/139326806) - ستنفّذ الآن اختبارات واجهة المستخدم في Android Compose عمليات تخطيط لكل لقطة عند تنفيذ اللقطات للوصول إلى حالة عدم النشاط (على سبيل المثال، من خلال
waitForIdle). وقد يؤثّر ذلك في الاختبارات التي تؤكّد على اللقطات الفردية لرسوم متحركة خاصة بالتصميم. (I8ea08، b/222093277) - تمت إضافة
TextMotionتجريبية إلىTextStyleلتحديد ما إذا كان النصStatic(default)أو متحركًا. استخدِمTextMotion.Animatedإذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره باستخدام الرسوم المتحركة. (I24dd7)
الإصدار 1.4.0-rc01
8 مارس 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-rc01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تحميل زائد للدالة المركّبة
AndroidView، والتي تقبل المَعلمةonReset. ويتيح إعادة استخدام مثيلات View عندما يتم تجاهل عقدتها في التركيب وإعادة استخدامها بطريقة متوافقة. ويفيد ذلك بشكل خاص فيLazyRowsوLazyColumnsمن المشاهدات. (I3f10d، b/230099236) - تم طرح واجهة برمجة التطبيقات
PlatformTextInputAdapterالجديدة ذات المستوى المنخفض لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة التطبيقات الخاصة بالنظام الأساسي. (I58df4)
إصلاح الأخطاء
- سيعدّل الإجراء الدلالي
BasicTextFieldالآن مخزن النص المؤقت باستخدام مسار الرمز نفسه المستخدَم في تعديلات IME ووظائف الاختبار (مثلperformTextReplacement).SetText - تستخدم دوال اختبار النصوص
performTextClearanceوperformTextReplacementوperformTextSelectionالآنSemanticsActions. (I0807d، b/269633168، b/269624358)
الإصدار 1.4.0-beta02
22 فبراير 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-beta02. يتضمّن الإصدار 1.4.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات
modifierElementOf(). يُرجى التوسّع منModifierNodeElementمباشرةً بدلاً من ذلك. (I2256b) - تمت إضافة دالة ردّ نداء جديدة
Modifier.Node.onReset()تتيح لك إعادة ضبط بعض الحالات المحلية للتعامل بشكل صحيح مع الحالة التي سيتم فيها إعادة استخدامLayout(على سبيل المثال، كعنصر منLazyColumn). تم إصلاحFocusTargetModifierNodeلإعادة ضبط الحالة المركّزة بشكل صحيح. (I65495، b/265201972) - تمت إضافة المَعلمة
BlendModeإلى الطرقDrawScope.drawTextوParagraph.paintوMultiParagraph.paintلتوفير خوارزميات دمج مختلفة عند رسم نص على Canvas. (I57508)
إصلاح الأخطاء
- تم تحسين خوارزمية ترتيب التركيز على إمكانية الوصول، على سبيل المثال، تتم قراءة الأشرطة العلوية/السفلية غالبًا أولاً/أخيرًا على التوالي (74e9c5)
الإصدار 1.4.0-beta01
8 شباط (فبراير) 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
PinnableContainer.PinnedHandle.unpin()إلىrelease()(I4667a) - تمت إضافة
waitUntilNodeCountوwaitUntilAtLeastOneExistsوwaitUntilExactlyOneExistsوwaitUntilDoesNotExistكواجهة برمجة تطبيقات تجريبية إلىComposeTestRule، ما يؤدي إلى توسيع نطاق واجهة برمجة التطبيقاتwaitUntilلقبول أي أداة مطابقة وأي عدد من العُقد. يمكنك الاطّلاع علىComposeTestRuleللحصول على المزيد من المستندات. (Ifa1b9، b/226934294) - تمّت إعادة تسمية
Font.MaximumAsyncTimeoutإلىFont.MaximumAsyncTimeoutMillis. (I07af5) - تمت إزالة
GoogleFont.Provider.AllFontsListUriوتمت إضافة رابط يؤدي إليها في ktdoc بدلاً من ذلك. (I16f29)
إصلاح الأخطاء
- إضافة مستندات لـ
AndroidFont.fontVariationSettings(I7d9e2)
الإصدار 1.4.0-alpha05
25 كانون الثاني (يناير) 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم عمليات تحميل تجريبية جديدة للدالة
runComposeUiTestوالدالتينcreate*ComposeRuleاللتين تقبلان المَعلماتCoroutineContext. سيتم استخدام السياق في تركيبة الاختبار وأي طلباتLaunchedEffectوrememberCoroutineScope()في التركيبة. (I10614، b/265177763) - إضافة واجهة برمجة تطبيقات جديدة لتتبُّع السرعة الأحادية البُعد (If5a82)
- تم الآن وضع علامة
@StableعلىFocusRequester. (I580ee) - أزِل تعليقًا توضيحيًا تجريبيًا من الدالة الإنشائية
DialogPropertiesالتي تأخذ المَعلمةusePlatformDefaultWidth. (Ic4048) - تمت إضافة وظيفة لحساب الموضع والمماس على مسافة معيّنة على مسار - باستخدام
PathMeasure.getPosition()وPathMeasure.getTangent()(I3b47c) - تمت إزالة أداة ضبط عامة تم عرضها عن طريق الخطأ في
PlatformParagraphStyle. (I07f47) - المزيد من أنواع/قيم null للدوال المضمّنة/المخفية المتوقّفة نهائيًا (I24f91)
- أضِف
AnnotatedString.hasStringAnnotationsللاستعلام عن التعليقات التوضيحية التي تتضمّن عمليات تخصيص بقيمة صفر. (I94dfe، b/246960758) - تمت إضافة تحميل زائد جديد للدالة
TextMeasurer.measureيقبلStringكنص. (I47b2d، b/242705342) - تمت ترقية واجهتَي برمجة التطبيقات
LineBreakوHyphensفي TextStyle إلى إصدار ثابت. (Ic1e1d)
المساهمة الخارجية
- لن يتم إيقاف الطريقتَين
notifyFocusedRectفيTextInputSessionوTextInputServiceنهائيًا مرة أخرى. (I23a04، b/262648050)
الإصدار 1.4.0-alpha04
11 يناير 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainerجديدة تتيح تثبيت عناصر القائمة الكسولة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، تستخدمModifier.focusable()هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881، b/259274257، b/195049010) - تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة
Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589) - تمت إضافة السمة الدلالية
IsContainerعلى "المنصات". سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب الانتقال استنادًا إلى المعنى الدلالي للعناصر، مثل المساحات. (I63379) - تمت إضافة دور جديد لتسهيل الاستخدام
DropdownList. يمكن استخدام ذلك لتكرار سلوكTalkBack'sعند التركيز علىandroid.widget.Spinner. (I177e5، b/236159001) - يمكنك الآن استخدام
PlatformTextStyle(emojiSupportMatch)لإيقاف معالجة رموز الإيموجي بشكل اختياري لفقرة واحدة. (Ia7100، b/139326806) - ستنفّذ الآن اختبارات واجهة المستخدم في Android Compose عمليات تخطيط لكل لقطة عند تنفيذ اللقطات للوصول إلى حالة عدم النشاط (على سبيل المثال، من خلال
waitForIdle). وقد يؤثّر ذلك في الاختبارات التي تؤكّد على اللقطات الفردية لرسوم متحركة خاصة بالتصميم. (I8ea08، b/222093277) - تمت إضافة
TextMotionتجريبية إلىTextStyleلتحديد ما إذا كان النصStatic(default)أو متحركًا. استخدِمTextMotion.Animatedإذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره باستخدام الرسوم المتحركة. (I24dd7)
تغييرات واجهة برمجة التطبيقات
- تم استبدال وسيطة
maxSize: IntSizeفيdrawTextبوسيطةsize: Sizeلتكون متوافقة مع دوالDrawScopeالأخرى. يتم ضبطsizeعلىSize.Unspecifiedتلقائيًا، ما لا يؤدي إلى تغيير السلوك التلقائي السابق. (Icd27d) - تمت إزالة أداة إنشاء الخط التجريبية المتوقّفة نهائيًا. (I8a724، b/261435386)
- يحتوي الآن فئة بيانات أدوات واجهة المستخدم
Groupعلى حقلisInlineيشير إلى ما إذا كانت المجموعة مخصّصة لاستدعاء دالة قابلة للإنشاء مضمّنة. إذا كانت قيمةisInlineهيtrue، يعني ذلك أنّ الاستدعاء هو لدالة مركّبة مضمّنة. ومع ذلك، قد تكون القيمة خطأ بالنسبة إلى عمليات استدعاء الدوال القابلة للإنشاء المضمّنة التي تكون من وحدات تم تجميعها باستخدام إصدار من مكوّن Compose الإضافي الذي لا ينشئ معلومات الدالة المضمّنة. (Idb846) - تمت ترقية عدد من واجهات برمجة التطبيقات التجريبية السابقة إلى إصدار ثابت
- أصبحت واجهة برمجة التطبيقات Rotary Scroll Event API مستقرة الآن (I42ad3، b/261561229)
- أصبحت واجهة برمجة التطبيقات
FontVariationثابتة الآن (I8779f، b/241016309) - أصبحت جميع عناصر إنشاء
Font()الآن واجهة برمجة تطبيقات ثابتة (I5948b، b/261435386) - أصبح الإصدار
DeviceFontFamilyNameثابتًا الآن (I8b640، b/261435386) - أصبحت الدالة الإنشائية
AndroidFontالتي تتضمّنvariationSettingsالآن واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من واصفات الخطوط. (I5adcc، b/261565807) - أصبحت واجهة برمجة التطبيقات
createFontFamilyResolverثابتة الآن. يمكن استخدام هذا الخيار لرصد الاستثناءات غير المعالَجة أثناء تحميل الخطوط بشكل غير متزامن. (Ibb481، b/261435386) - أصبحت واجهة برمجة التطبيقات
Font.loadingStrategyثابتة الآن. (I5937c، b/261435386) - أصبحت واجهة برمجة التطبيقات
GoogleFontثابتة الآن. (Ic90b0، b/261435386) - أصبحت واجهة برمجة التطبيقات
TextUnit(float, TextUnitType)الآن واجهة برمجة تطبيقات ثابتة. (I90c84، b/261561612) - أصبحت واجهة برمجة التطبيقات
pluralStringResourceالآن واجهة برمجة تطبيقات ثابتة. (I09849، b/261439703)
الإصدار 1.4.0-alpha03
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ExperimentalComposeUiApiمنPointerIcon(I23af8) - إضافة إجراءات تسهيل استخدام الصفحة:
PageUpوPageDownوPageLeftوPageRightيُرجى العِلم أنّ هذه الميزات لا تتوفّر إلا بدءًا من الإصدار 29 من واجهة برمجة التطبيقات. (Ida4ab) - تم تعديل عرض المَعلمة
rememberNestedScrollConnectionمن العرض الجذر إلى عرض المضيف. (Ia5200) - تمت إضافة Modifier API للاستعلام عن معلومات التمرير الخاصة بالعناصر الرئيسية. (I2ba9d، b/203141462)
- يُستخدَم في
Clickableلتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث تمرير. - تم إصلاح المشكلة المتمثلة في عدم تأخير
Clickablesبشكلٍ صحيح عند استخدامه داخلScrollable ViewGroup. - تم تعديل الأدراج وأوراق البيانات لتأخير الضغطات بشكل صحيح في حال إمكانية تحوّل الإيماءات إلى أحداث تمرير.
- تمت إعادة تسمية
CompositingStrategy.AlwaysإلىOffscreenللإشارة إلى أنّه سيتم دائمًا عرضgraphicsLayerفي مخزن مؤقت وسيط (I47dc1) - أصبح التحميل الزائد للتنسيق مع عدّة مواضع للمحتوى ثابتًا الآن (I10566، b/248294649)
- تمت إضافة واجهتَي برمجة تطبيقات تجريبيتين جديدتين،
PerfettoTrace.record {}وPerfettoTraceRule، لتسجيل بيانات تتبُّع Perfetto (المعروفة أيضًا باسم "بيانات تتبُّع النظام") كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16) - في اختبارات واجهة المستخدم التي تستخدم قاعدة Compose، لن يتم إرسال عمليات الاستئناف التي تم استئنافها أثناء عمليات معاودة الاتصال
withFrameNanosإلا بعد انتهاء جميع عمليات معاودة الاتصال بالإطار. يتطابق ذلك مع سلوك Compose عند التشغيل بشكل طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. يجب أن يؤثر ذلك فقط في الرمز الذي يستدعيwithFrameNanosأوwithFrameMillisمباشرةً، ويتضمّن منطقًا خارج وظيفة رد الاتصال التي تم تمريرها إلى هاتين الدالتين، وقد يحتاج إلى نقله إلى داخل وظائف رد الاتصال. يمكنك الاطّلاع على التغييرات في اختبار الصورة المتحركة في قائمة التغييرات هذه للحصول على أمثلة. - تمت إضافة المَعلمة الاختيارية
onPerformTraversals: (Long) -> Unitإلى الدالة الإنشائيةTestMonotonicFrameClockودالة المصنع لتنفيذ الرمز بعد عمليات رد الاتصالwithFrameNanosولكن قبل استئناف إجراءات الروتين المشترك للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670) - إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806)
- تمت إضافة مَعلمة خلفية جديدة إلى
@Previewلإتاحة الألوان الديناميكية (I9f512)
إصلاح الأخطاء
- يتم الآن إرسال إشعارات تطبيق اللقطة بعد انتهاء
Recomposerمن تطبيق التغييرات. (Iad6c0، b/222093277) - تم إدخال تغييرات في
captureToImageللسماح بالتقاط لقطات شاشة في وضع النوافذ المتعددة. ويكون ذلك مفيدًا لاختبارات لقطات الشاشة التي تستخدم النوافذ المنبثقة في Compose. (I169c5)
تحديثات الاعتماديات
- تعتمد واجهة مستخدم Compose وCompose Material الآن على الإصدار 2.5.1 من Lifecycle. (I05ab0، b/258038814)
الإصدار 1.4.0-alpha02
9 نوفمبر 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تعديل
GraphicsLayerScopeلعرض الحجم الحالي لـgraphicsLayer. ويكون ذلك مفيدًا لاحتساب عمليات التحويلgraphicsLayerكدالة لحجم Composable. (If8c43،b/181387080) - تمت إضافة
CompositingStrategyلتحديد وقت استخدام طبقة تركيب خارج الشاشة لعرض محتوىgraphicsLayer. تحتفظ Auto بالسلوك التلقائي الذي يستفيد داخليًا من طبقة إذا تم تطبيق ألفا أوRenderEffect/Overscroll. سيؤدي استخدام Always إلى إنشاء مخزن مؤقت خارج الشاشة، بينما سيؤدي استخدامModulateAlphaإلى تجنُّب الاستفادة من مخزن مؤقت خارج الشاشة وتعديل كل تعليمات الرسم المسجّلة ضمنgraphicsLayerبدلاً من ذلك. سيظل استخدامModulateAlphaيستفيد من مخزن مؤقت خارج الشاشة لاستخداماتRenderEffect/Overscroll(I25e82، b/256382834) - تمت إضافة
invalidateSubtree()إلىModifier.Nodeللسماح بإبطال التسلسلات الهرمية بأكملها للتخطيط والرسم. (I4bd90) - ترقية
rememberNestedScrollInteropConnectionإلى الإصدار الثابت تم توفير إمكانية تمرير طريقة عرض جذر إلىrememberNestedScrollInteropConnection. يمكن أن يساعد ذلك في تفاعل العرض المخصّص بشكل أفضل مع قيود التمرير، خاصةً في طرق العرض غير العادية (مثلModalBottomSheetDialog). (I9e107) - تمت إضافة واجهة
ObserverNodeيمكن استخدامها من خلال عمليات تنفيذModifier.Nodeالتي يجب إعلامها عند تغيير قيمة تمت قراءتها سابقًا (I5728b، b/247716483) - تمت إضافة أداة إنشاء جديدة إلى
Paintتقبلandroid.graphics.Paintأصليًا. تمت أيضًا إضافة دالة إضافيةtoComposePaint()تحوّل عنصر Paint أصليًا حاليًا إلى Compose Paint. (Ica91b) - أضِف
FontFamily.Resolver.resolveAsTypefaceجديدًا لاستخدامه على Android. (I8950b) - إضافة
ToolingStateللسماح للأدوات بتغيير الحالات الداخلية لـ Composable (Ie6614) - إعادة تصميم الأدوات لتوفير دعم أفضل للرسوم المتحركة الجديدة المضافة (I8677b)
- تمت إضافة المَعلمة
minLinesإلى النص في Material وMaterial3، وTextFieldوOutlinedTextField، ما يتيح ضبط الحد الأدنى لارتفاع المكوّن من حيث عدد الأسطر (I4af1d)
الإصدار 1.4.0-alpha01
24 أكتوبر 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة جديدة،
awaitEachGesture()، لأدوات رصد الإيماءات. تعمل هذه الطريقة بشكل مشابه للطريقةforEachGesture()، ولكنّ حلقة الإيماءات تعمل بالكامل ضمنAwaitPointerEventScope، لذا لا يمكن فقدان الأحداث بين التكرارات. - تم إيقاف
forEachGesture()نهائيًا واستبداله بـawaitEachGesture()لأنّه يسمح بفقدان الأحداث بين الإيماءات. (Iffc3f، b/251260206) - إيقاف إعادة تدوير عناصر تسهيل الاستخدام نهائيًا في androidx لقد تبيّن لنا أنّ التغييرات في الأداء لا تُذكر حتى في أقدم الإصدارات المتوافقة. (I0a961)
- تمت إضافة
DrawStyleكسمة تجريبية إلىTextStyleوSpanStyleلتفعيل رسم نص محدّد. (If24b8، b/155421273) - تستخدم
AnnotatedString.Builderالآنkotlin.text.Appendable. (I1a061، b/231030444) - يتضمّن
AnnotatedString.Builderالآن طريقةappend(AnnotatedString, start: Int, end: Int)لإلحاق سلسلة فرعية منAnnotatedStringوالأنماط المتقاطعة. - تمت إضافة المَعلمة
DrawStyleإلى دالتَي الطلاءParagraphوMultiParagraphاللتين تتيحان رسم نص محدّد. (Ic8102، b/155421273)
المساهمة الخارجية
- شكرًا على
vighneshلإضافة أجهزة التلفزيون إلى المعاينات (Ie15cd)
الإصدار 1.3
الإصدار 1.3.3
11 يناير 2023
تم طرح androidx.compose.ui:ui-*:1.3.3. يتضمّن الإصدار 1.3.3 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل يحدث أحيانًا على Android 9 عند حفظ النشاط لحالة "عرض الإنشاء" (I0b755، b/260322832)
الإصدار 1.3.2
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.3.2. يتضمّن الإصدار 1.3.2 هذه التعديلات.
إصلاح الأخطاء
- تم تعديلها لاستخدام Profobuf 3.21.8، ما يمنع ظهور تنبيه أمان في
protobuf-javalite:3.19.4(CVE-2022-3171) (b/255545055)
الإصدار 1.3.1
9 نوفمبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.1. يتضمّن الإصدار 1.3.1 هذه التعديلات.
الإصدار 1.3.0
24 أكتوبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.2.0
- مجموعة جديدة من واجهات برمجة التطبيقات التجريبية
LookaheadLayout(تتيح سلوكيات رسوم متحركة لم يكن من الممكن تنفيذها سابقًا) - مجموعة جديدة تجريبية من واجهات برمجة التطبيقات
Modifier.Node(بديلModifier.composedأكثر فعالية) - تحسين توافُق حواف النوافذ
- إتاحة التركيز على لوحة المفاتيح الخارجية ولوحات التحكّم الاتجاهية في LazyLists
- تم خفض الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة إلى 8 وحدات بكسل مستقلة عن الكثافة (تغيير في السلوك يؤدي إلى حدوث مشاكل في بعض أنظمة التصميم المخصّصة – الأساس المنطقي في ملاحظات الإصدار beta01)
- العديد من التحسينات البسيطة غير المتوافقة مع الإصدارات السابقة في واجهة برمجة التطبيقات
- إصلاح العديد من الأخطاء وتحسينات في الأداء
الإصدار 1.3.0-rc01
5 أكتوبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة باسم Hyphens لتتيح إضافة شرطات تلقائيًا في النص (Iaa869)
إصلاح الأخطاء
- لن يتم ضبط إعدادات التباين
wghtوitalتلقائيًا في خطوطDeviceFontFamilyName، بل سيتم استخدام إعدادات النظام الأساسي للخطTypefaceالذي تم تحميله. (Ia7a6d، b/246989332) - تم إصلاح تسريب الذاكرة في
LazyColumn- لم يتم استدعاءonModifierLocalsUpdatedبالقيمة التلقائية عند إعادة استخدام المعدِّلات (b/230168389)
الإصدار 1.3.0-beta03
21 سبتمبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-beta03. يتضمّن الإصدار 1.3.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة خيارات لتخصيص تقسيم الأسطر في أداة "النص" (I86907)
- تم تغيير وسيطة
size:IntSizeباستخدامconstraints: Constraintsفي طريقةTextMeasurer.measureلتوفير قيود الحد الأدنى للعرض. (I37530، b/242707525)
إصلاح الأخطاء
- تعمل واجهة برمجة التطبيقات
BackHandlerالخاصة بفئة Activity في AndroidX الآن ضمن عنصرDialogقابل للإنشاء. (I35342)
الإصدار 1.3.0-beta02
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تحميل زائد تجريبي لـ Layout يقبل قائمة من عدة دوال لامدا قابلة للإنشاء، ما يسمح بمعاملة العناصر القابلة للقياس التي يتم وضعها في دوال لامدا مختلفة بشكل مختلف (Ic1b4e)
التغييرات في واجهات برمجة التطبيقات التجريبية الخاصة بوضع "التركيز":
- تم إيقاف
FocusDirection.InوFocusDirection.Outنهائيًا واستبدالهما بـFocusDirection.EnterوFocusDirection.Exit. (Ia4262، b/183746982) - تمت إضافة سمتَي التركيز الجديدتَين enter وexit لتحديد سلوك مخصّص للعنصرَين
FocusManager.moveFocus(Enter)وFocusManager.moveFocus(Exit). (I5f3f9، b/183746982) - يمكنك الآن استخدام
FocusRequester.Cancelلإلغاء حركة التركيز. يمكن استخدامFocusRequester.Cancelفي أي من خصائص التركيز التالية: up وdown وleft وright وnext وprevious وstart وend وenter وexit. (Ib300f)
الإصدار 1.3.0-beta01
24 أغسطس 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.
إعادة تصميم عقدة المعدِّل
تمت إعادة تصميم الطبقة التي تتعامل مع مثيلات Modifier/Modifier.Element وتنسّق سلوكها على LayoutNodes بشكل كبير. في الوقت الحالي، كان هذا إعادة تصميم لم تؤثّر في واجهة برمجة التطبيقات العامة لأي من المعدِّلات العديدة في Compose، ويمكن اعتبارها تغييرًا على مستوى التنفيذ فقط. مع ذلك، هذا تغيير مهم لعدة أسباب. (Ie4313)
ملخّص التغييرات
توفر واجهات برمجة التطبيقات التجريبية Modifier.Node المُضافة تجريدًا يسمح بالحفاظ على الحالة في مثيل سيتم الاحتفاظ به مع دورة حياة عقدة التصميم، وسيتم تخصيصها لكل عقدة تصميم ولكل استخدام لعنصر Modifier.Element المقابل الذي أنشأها.
بشكل عام، يوفّر هذا التجريد آلية بديلة لإنشاء أدوات تعديل ذات حالة بدون الاعتماد على آليات واجهة برمجة التطبيقات Modifier.composed.
المخاطرة
هذا التغيير متوافق تمامًا مع الإصدارات السابقة، ويهدف إلى التوافق مع الإصدارات القديمة من حيث السلوك الملحوظ قدر الإمكان والمعقول. ومع ذلك، هناك بعض الأنظمة الفرعية التي لم يتأثر بها هذا التعديل، ومن المحتمل أن يكون السلوك قد تغيّر بطرق لم تغطّها اختباراتنا ولم يتم رصدها وإصلاحها بعد.
يُرجى الترقية إلى هذا الإصدار بحذر. إذا كنت تعتقد أنّ هذا التغيير قد أثّر سلبًا في تجربتك، يُرجى إعلامنا بذلك.
واجهات برمجة التطبيقات التجريبية
تمت إضافة واجهات برمجة تطبيقات تجريبية مختلفة، وكلها مرتبطة بالمفهوم الجديد "عقدة المعدِّل". يتم إنشاء Modifier.Node’s نتيجةً لما يلي
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
تغيير في السلوك يؤدي إلى حدوث خطأ
تم تقليل الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة إلى 8 وحدات بكسل مستقلة الكثافة.
تم خفض الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة في Compose من 30dp إلى 8dp. يؤثّر هذا التغيير في مربّعات الحوار المخصّصة والنوافذ المنبثقة لكلّ من Material وUI. تم إجراء هذا التغيير للحدّ من خطأ في إمكانية الوصول على إصدارات Android الأقدم من الإصدار S، ولضمان قدرة خدمات تسهيل الاستخدام داخل هذه النوافذ على التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.
لن يؤثّر هذا التغيير فيك إلا إذا كنت بصدد إنشاء تنفيذ مخصّص لمربّع حوار أو نافذة منبثقة مع ضبط مستوى الارتفاع على أكثر من 8 وحدات بكسل مستقلة الكثافة. ننصحك بخفض مستوى ارتفاع مربّع الحوار أو النافذة المنبثقة. إذا كنت بحاجة إلى إيقاف هذا السلوك الجديد، يمكنك إنشاء مربّع حوار أو نافذة منبثقة خاصة بك مع ضبط مستوى الارتفاع المطلوب. لا ننصح بذلك، لأنّ ذلك قد يؤثّر سلبًا في إمكانية الوصول، ويقع على المطوّر مسؤولية ضمان إمكانية التفاعل مع الجزء السفلي من مربّع الحوار أو النافذة المنبثقة وأن يكون قابلاً للقراءة من خلال خدمات تسهيل الاستخدام.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة عدم تعديل
painterResourceعند إجراء تغييرات في الإعدادات (I58e73، b/228862715) - لم يعُد
rememberTextMeasurerيقبل المَعلماتFontFamily.ResolverأوDensityأوLayoutDirection. يُرجى استخدام أداة الإنشاءTextMeasurerلتوفير قيم مخصّصة لهذه المَعلمات. (Ia1da3) - تمت إضافة السمة
DialogProperties.decorFitsSystemWindowsللسماح لمربّعات الحوار بتوافقWindowInsets. (I57742، b/229378542) - تم نقل دوال إنشاء الخطوط إلى ملف Kotlin الأصلي من أجل الحفاظ على التوافق الثنائي. لم يطرأ أي تغيير مقارنةً بآخر إصدار ثابت. (Ieb2f3)
- تمت إزالة عامل تشغيل غير ضروري من عدة تعريفات متساوية، وهذا ليس له أي تأثير. (I6c309)
-
FontVariation.Settingهي واجهة محكمة الإغلاق للسماح بواجهات برمجة تطبيقات مستقبلية. (I11021، b/143703328) - إضافة
CompositionGroup.findParametersإلىSlotTree.ktيتيح ذلك للأدوات استرداد مَعلماتCompositionGroupبدون الحاجة إلى تحليل جدول الخانات الإعلانية بالكامل. (I124fe)
الإصدار 1.3.0-alpha03
10 أغسطس 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبحت
LayoutCoordinates.findRootCoordinates()متاحة للجميع (I7fa37، b/204723384) - تمت إضافة واجهة برمجة تطبيقات تجريبية للحصول على
LayoutCoordinatesفيPlacementScope. يتيح ذلك للمطوّرين معرفة مكان التصميم الحالي لوضع العناصر الثانوية بالنسبة إلى موضعها. (I5482b، b/238632578) - تمت إضافة
LayoutCoordinates.transformFromللحصول على تحويل المصفوفة منLayoutCoordinatesإلى أخرى. (Ic5ab1، b/238632578) - تم إيقاف
SemanticsModifier.idونقل رقم تعريف الدلالات إلىLayoutInfo.semanticsIdبدلاً من ذلك. (Iac808، b/203559524) - تتيح "خطوط الموارد" الآن ضبط إعدادات تنويعات الخطوط (الإصدار 26 من واجهة برمجة التطبيقات أو الإصدارات الأحدث). (I900dd، b/143703328)
- إتاحة الخطوط المتغيّرة في
DeviceFontFamilyNameFont(Ic1279، b/143703328) - تقبل الآن أدوات إنشاء الخطوط قائمة
FontVariation.Settingلإعداد الخطوط المتغيرة على الأجهزة التي تعمل بالإصدار O+ من نظام التشغيل Android. (I11a9d، b/143703328) - تمت إضافة واجهة برمجة التطبيقات
FontVariationلتحديد الخطوط المتغيرة واستخدامها. (I3c40c، b/143703328) - أصبح الدالة الإنشائية
LineHeightStyle.Alignmentمتاحة للجميع (تجريبية) (I4bbbe، b/235876330) - تم الآن تحديد الفقرة على أنّها expected|actual لكل من Android وأجهزة الكمبيوتر. (Id387e، b/239962983)
- أصبحت الفقرة Interface Paragraph الآن فقرة Interface Paragraph محكمة الإغلاق. لا توجد حالة استخدام لتصنيف الفقرة، وننصحك بالتواصل معنا إذا كان هذا التغيير يؤثر فيك. (If5247، b/239962983)
- تمت إزالة التعليق التوضيحي التجريبي من
PlatformTextStyleوLineHeightStyle. (I64bef) - إيقاف
TextInputService.show|hideSoftwareKeyboardيُرجى استخدامSoftwareKeyboardControllerبدلاً من ذلك في رمز التطبيق وTextInputSessionفي رمز إدارة طريقة الإدخال. (I14e4c، b/183448615) - إضافة واجهة برمجة تطبيقات جديدة لأنواع الرسوم المتحركة الحالية (I26179)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermissionإلى واجهات برمجة التطبيقات التي تتطلّب منح الإذنPOST_NOTIFICATIONSعلى الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 1.3.0-alpha02
27 يوليو 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة السمة الجديدة
PointerInputChange#pressureلاسترداد الضغط. (I45a5e، b/205164819) - تمت إضافة
rememberTextMeasurerلتسهيل إنشاء وتذكُّر مثيلاتTextMeasurerفي التركيب. (I8d66e) - تتيح
RectوRoundRectوMutableRectالآن استخدام بنيةinفي Kotlin لاستدعاء الدالةcontains. (Ie42b0، b/238642990) - إزالة الدوال غير الضرورية من
KeyInjectionScope، لأنّه يمكن تنفيذها بسهولة باستخدام أجزاء أبسط من واجهة برمجة التطبيقات تشمل الدوال التي تمت إزالتهاpressKeysوkeysDownوkeysUp. (I81d77) - تمت إعادة تصميم أسماء الثوابت والمعلمات في
KeyInjectionScopeلتضمين اللاحقة "Millis" حيث تكون وحدات الثوابت والمعلمات المذكورة بالمللي ثانية. (Iabef5) - تمت إضافة الطريقة
toStringForLog()إلىEditCommandللمساعدة في تحديد المشاكل وحلّها المتعلّقة بتعديل النصوص. (I53354، b/228862731) - تمت إضافة دالة الإضافة
drawTextإلىDrawScopeلتوفير طريقة لرسم نص متعدد الأنماط على العناصر القابلة للإنشاء والمعدِّلات التي تعمل علىDrawScope، مثلCanvasوdrawBehind. (I16a62، b/190787898) - نقدّم واجهة برمجة تطبيقات تجريبية جديدة باسم
TextMeasurerتتيح احتساب تنسيق نص عشوائي ينتج عنه نتائج مطابقة لنتائجBasicText، بغض النظر عن وقت تشغيل Compose. (I17101) - إضافة
mapTreeإلىSlotTree.ktيتيح ذلك للأدوات فحصSlotTreeبدون إنشاء نسخة في الذاكرة أولاً كما تفعل asTree. بالنسبة إلى "أداة فحص التصميم"، يؤدي ذلك إلى تحسين الأداء بمقدار 10 مرّات تقريبًا. (I5e113) - تم تغيير ميزة "معاينة الإنشاء" ليتم تخزينها في ملفات الإخراج الثنائية، وذلك للسماح للمطوّرين بكتابة وإعادة استخدام تعليقات توضيحية
MultiPreviewمن المكتبات. (I85699، b/233511976)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChangeإلى أداة التتبُّعVelocity، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكلٍ صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدَف (Icea9d، b/216582726، b/223440806، b/227709803). - تم إصلاح خطأ NPE الناتج عن
AnnotatedString.toUpperCaseعند توفّر التعليقات التوضيحية. (I0aca2، b/210899140)
الإصدار 1.3.0-alpha01
29 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
LookaheadLayoutجديد يتيح إجراء تمريرة بحث مسبق قبل القياس أو التخطيط الفعلي. يسمح ذلك بإجراء عملية حسابية مسبقة للتنسيق عند تغييره، مع السماح للمقياس/التنسيق بعد البحث المسبق باستخدام الحجم/الموضع المحسوب مسبقًا لتحريك الحجم والمواضع نحو الهدف. لا تتوفّرSubcomposeLayoutsبعد، ولكن ستتوفّر في إصدار قادم. (I477f5)- أضِف مَعلمة ألفا اختيارية إلى نكهة "الفرشاة" في
TextStyleوSpanStyleلتعديل مستوى التعتيم فيTextبالكامل. (Ic2fac، b/234117635) - تم تقديم نوع التعليق التوضيحي
UrlAnnotationوالطُرق المرتبطة به لتوفير إمكانية استخدام الروابطTalkBackفيAnnotatedString. (I1c754، b/231495122) - نقل وظائف الأداة إلى وقت التشغيل (I4f729)
إصلاح الأخطاء
- لا يعرض
TextLayoutResult.getLineForOffsetأي خطأ. (Idc5d6، b/235876324)
المساهمة الخارجية
- تمت إضافة واجهة برمجة تطبيقات جديدة
WindowInfo.keyboardModifiersلمراقبة حالتها ضمن الدوال القابلة للإنشاء أو من خلال snapshotFlow (Icdb8a)
الإصدار 1.2
الإصدار 1.2.1
10 أغسطس 2022
تم طرح androidx.compose.ui:ui-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ nullpointer في أداة الفحص (b/237987764)
- تم إصلاح خطأ في تحويل الفئة أثناء التذكير في "أداة الفحص" (b/235526153)
الإصدار 1.2.0
27 يوليو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.1.0
تحسينات في التنقّل بين العناصر باستخدام التركيز:
- أصبح بإمكانك الآن استخدام ميزة التمرير المستند إلى التركيز في القوائم الكسولة، وذلك باستخدام واجهة برمجة التطبيقات الأساسية الجديدة
BeyondBoundsLayout - واجهات برمجة التطبيقات الجديدة لتخصيص السلوك في
FocusOrderوFocusProperties - تحسين السلوك باستخدام لوحة مفاتيح خارجية أو جهاز تحكّم عن بُعد للتلفزيون
- أصبح بإمكانك الآن استخدام ميزة التمرير المستند إلى التركيز في القوائم الكسولة، وذلك باستخدام واجهة برمجة التطبيقات الأساسية الجديدة
واجهات برمجة التطبيقات الجديدة لما يلي:
- إطارات النوافذ
- عناصر أساسية للرسوم المتحركة التي تعتمد على الإيماءات وغير المحدودة وتلك المتعلّقة بالتنسيق
GraphicsLayer، بما في ذلكRenderEffect
إصلاح العديد من الأخطاء وتحسينات في الأداء
الإصدار 1.2.0-rc03
29 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc03. يتضمّن الإصدار 1.2.0-rc03 هذه التعديلات.
- لم يتم إجراء أي تغييرات منذ الإصدار 1.2.0-rc02.
الإصدار 1.2.0-rc02
22 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc02. يتضمّن الإصدار 1.2.0-rc02 هذه التعديلات.
الإصدار 1.2.0-rc01
15 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتم الآن إنشاء الواجهات في مكتبات Compose باستخدام طرق الواجهة التلقائية في الإصدار 8 من حزمة تطوير البرامج (JDK) (I5bcf1).
- تمت إضافة وظائف من الدرجة العليا إلى
KeyInjectionScopeلإدخال ضغطات المفاتيح أثناء الضغط مع الاستمرار على مفاتيح أخرى أو تفعيلها. وتشمل هذه الدوالwithKeysDownوwithKeysToggledوما إلى ذلك. تمت أيضًا إضافة خصائص للتحقّق مما إذا كان مفتاح وصف معيّن مضغوطًا، على سبيل المثال،isCtrlDownللتحقّق مما إذا كان أي من مفتاحي التحكّم مضغوطًا. يمكنك الرجوع إلىKeyInjectionScopeللاطّلاع على مستندات حول كل دالة. (I9f6cd، b/229831515) - تم تقديم
OverscrollEffectتجريبي للسماح بتأثيرات التمرير الزائد المخصّصة، بالإضافة إلى عمليات التحميل الزائدModifier.scrollableالتي تقبلها. - تم نقل
LocalOverScrollConfigurationالتجريبية منfoundation.gestureإلى حزمة الأساس وإعادة تسميتها إلىLocalOverscrollConfiguration(If19fb، b/204650733) - تمت إعادة تسمية
runComposeUiTestWithoutActivity {}إلىrunEmptyComposeUiTest {}، ما يجعله متوافقًا معcreateEmptyComposeRule()(I6fed7)
الإصدار 1.2.0-beta03
1 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
pressKeyTimesوisCapsLockOnوالأصدقاء إلىKeyInjectionScope. بالإضافة إلى ذلك، تتيح واجهة برمجة التطبيقات الآن أنماط إدخال مجمّعة للماوس ولوحة المفاتيح، مثل النقر على زر الماوس مع الضغط باستمرار على مفتاح meta. (I4c8da، b/229831515) - تمت إضافة دعم تجريبي لإدخال الأحداث الرئيسية. استخدِم
performKeyInputلإرسال الأحداث الرئيسية، أو أرسِلها من خلال السمةkeyالخاصة بـMultiModalInjectionScopeأثناء إيماءة إدخال متعددة الوسائط باستخدامperformMultiModalInput. يمكنك الاطّلاع علىKeyInjectionScopeللحصول على مستندات حول واجهة برمجة التطبيقات. (Ic5000، b/229831515) - أضِف
GoogleFont.Provider.AllFontsListUriلاسترداد مصدر الإنترنت الأساسي لخدمة Google Fonts المتوافق مع Android. - تحسين رسائل الخطأ التي يتم إعادة طرحها عندما يتعذّر تحميل GoogleFonts في Compose (I0416c)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChangeإلى أداة Velocity Tracker، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكلٍ صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدف (I51ec3 وb/216582726 وb/223440806 وb/227709803). - سيتم الآن تطبيق إعداد
Show Layout Boundsعلى العناصر القابلة للإنشاء فورًا بعد تفعيله أو إيقافه من مربّع الإعدادات السريعة، بدون الحاجة إلى الخروج من النشاط وإعادة الدخول إليه. (I843d5، b/225937688) - لا يؤدي البحث عن سلسلة تسهيل الاستخدام إلى بدء تحميل الخط. في السابق، كان يتم محاولة تحميل الخطوط الخاصة بـ
StyleSpans، ما كان يؤدي إلى حدوث أعطال إذا تمت الكتابة فوقFontFamily.Resolver. (I4609d) - لن يؤدي الضغط على مفتاح الحذف للأمام عندما يكون المؤشر في نهاية حقل نص إلى حدوث عطل.
- تتطلّب الفئتان
DeleteSurroundingTextCommandوDeleteSurroundingTextInCodePointsCommandالآن أن تكون وسيطات الدالة الإنشائية غير سالبة. (Ica8e6، b/199919707)
الإصدار 1.2.0-beta02
18 مايو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إعادة استخدام الوظائف في أنواع المعاينات الأخرى (I19f39)
إصلاح الأخطاء
- تمت إعادة تسمية
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerإلىDisposeOnDetachedFromWindowOrReleasedFromPoolلتعكس بشكل أفضل الحالات التي يتم فيها التخلص من العناصر، بدلاً من الحالات التي لا يتم فيها التخلص من العناصر. (If15ca)
الإصدار 1.2.0-beta01
11 مايو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
الميزات الجديدة
- هذا هو الإصدار التجريبي الأول من الإصدار 1.2.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة
BeyondBoundsIntervalتجريبية يمكن استخدامها في عمليات التنفيذ المخصّصة لواجهةLazyListعند ترتيب العناصر خارج الحدود المرئية (Ifabfb، b/184670295) - أصبحت الإصدارات التي تتضمّن مفاتيح من
Modifier.composedالآن واجهة برمجة تطبيقات ثابتة (Ie65e4، b/229988420) - تم تبسيط واجهة برمجة التطبيقات
rememberNestedScrollConnectionلاستخدام العناصر المحلية للإنشاء من أجل الحصول على معلومات العرض الحالية (I67ca7) - يمكن الآن استخدام التعليق التوضيحي
@ComposableTargetوالتعليقات التوضيحية التي تحمل العلامة@ComposableTargetMarkerعلى مستوى الملف باستخدام البادئة@file. سيؤدي استخدام تعليق توضيحي مستهدَف على مستوى نطاق الملف إلى افتراض المترجم أنّه من المفترض أن تستهدف جميع الدوال القابلة للإنشاء في الملف أداة التطبيق المرتبطة. على سبيل المثال، يؤدي استخدام@file:UiComposableإلى الإعلان عن أنّ جميع دوال@Composableتستهدف أداة تطبيق واجهة المستخدم في Compose. يجب أن توفّر الدالة التي تحتاج إلى استهداف أداة تطبيق أخرى بشكلٍ صريح التعليق التوضيحي الخاص بعلامة الاستهداف لأداة التطبيق المطلوبة. (I40804) تم طرح واجهة برمجة تطبيقات تجريبية جديدة للاختبار، وهي مستقلة عن النظام الأساسي:
interface ComposeUiTestوfun runComposeUiTest(block: ComposeUiTest.() -> Unit)، ويمكن استخدامهما لتشغيل اختبارات واجهة المستخدم في Compose بدون الحاجة إلىTestRule. لتنفيذ اختبار بدونComposeTestRule، مرِّر الاختبار كدالة lambda إلىrunComposeUiTest، واستخدِم الطرق والعناصر في نطاق جهاز الاستقبالComposeUiTest، وهي نفسها الموجودة فيComposeContentTestRule.تتم إضافة
interface AndroidComposeUiTestوfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)الخاصتَين بنظام التشغيل Android لتوفير إمكانية الوصول إلى النشاط الأساسي، على غرارAndroidComposeTestRule. للحصول على المزيد من التحكّم، يمكنك إنشاءclass AndroidComposeUiTestEnvironmentبنفسك.تتضمّن عملية التنفيذ على أجهزة الكمبيوتر المكتبي
class DesktopComposeUiTest، ولكن لا تتوفّر حاليًا أي دوال تشغيل خاصة بأجهزة الكمبيوتر المكتبي.يمكن نقل اختبار من
ComposeTestRuleإلىComposeUiTestباتّباع الخطوات التالية (مثال على نظام التشغيل Android). من:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }إلى:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }في الوقت الحالي، لا يتم توسيع نطاق
ComposeContentTestRuleوComposeTestRuleمنComposeUiTest، ما يعني أنّه لا يمكن بعد استدعاء دوال الإضافة علىComposeUiTestفي واجهةTestRule. عندما تنتقلComposeUiTestإلى واجهة برمجة تطبيقات ثابتة، سيتم تغييرComposeContentTestRuleوComposeTestRuleليتم تمديدهما منComposeUiTest. (Ib4e90)تمت إعادة تسمية
LineHeightBehaviorليصبحLineHeightStyleتمت إعادة تسمية
LineVerticalAlignmentليصبحLineHeightStyle.Alignmentتمت إعادة تسمية
LineHeightTrimإلىLineHeightStyle.Trimتمت إزالة قيم الدالة الإنشائية التلقائية من
LineHeightStyle(I582bf، b/181155707)تمت إضافة
BrushإلىTextStyleوSpanStyleلتوفير طريقة لرسم نص بألوان متدرّجة. (I53869، b/187839528)تم تغيير السمتَين
trimFirstLineTopوtrimLastLineBottomالخاصتَين بـLineHeightBehaviorإلى تعداد واحد:LineHeightTrim. تحتويLineHeightTrimعلى قيم 4 حالات محدّدة بواسطة قيمتَين منطقيتَين:FirstLineTopوLastLineBottomوBoth وNone (Ifc6a5 وb/181155707)تمت إضافة
LineHeightBehaviorإلىTextStyleوParagraphStyle. تتحكّم السمةLineHeightBehaviorفي ما إذا كان سيتم تطبيق ارتفاع السطر على أعلى السطر الأول وأسفل السطر الأخير. يحدّد هذا السمة أيضًا محاذاة السطر في المساحة التي توفّرهاTextStyle(lineHeight).على سبيل المثال، يمكن الحصول على سلوك مشابه لما تحدّده CSS من خلال
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).تعمل إعدادات
trimFirstLineTopوtrimLastLineBottomبشكل صحيح فقط عندما تكون قيمةincludeFontPaddingهي "خطأ". (I97332، b/181155707)تم تغيير الدالتَين
PlatformParagraphStyle.lerpوPlatformSpanStyle.lerpليصبحا دالتَين من المستوى الأعلى (I9a268)
إصلاح الأخطاء
- توضّح مستندات
PointerInputChange::copyالآن بشكل صحيح أنّها نسخة سطحية. (I182f5) - إتاحة علامة الحذف الإيجازي عندما يكون الارتفاع محدودًا ولا يتسع لجميع أسطر النص (Ie528c، b/168720622)
- تم تفعيل الإعداد التلقائي
includeFontPadding. يمكن إيقافincludeFontPaddingباستخدام السمةTextStyle.platformTextStyle. في المستقبل القريب، سنغيّر السلوك التلقائي، ولكن إلى أن يحين ذلك الوقت، يتيح لنا هذا التغيير دمج تحسينات ارتفاع الأسطر (aosp/2058653) وحلّ مشاكلTextFieldالاقتصاص. (I01423، b/171394808)
المساهمة الخارجية
- تم الآن عكس اتجاه التمرير في
MouseInjectionScope.scroll(delta = someDelta)على أجهزة Android عند التمرير عموديًا (إذا كانت قيمة someDelta موجبة، سيتم التمرير للأسفل) (Ifb697، b/224992993)
الإصدار 1.2.0-alpha08
20 أبريل 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha08. يتضمّن الإصدار 1.2.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تصنيف وظائف
pluralStringResourceعلى أنّها تجريبية من أجل السماح بتطويرها لتوفير دعم أفضل للغة العالمية في المستقبل. (If24e4) - تقبل الفقرة وMultiParagraph الآن المَعلمة Constraints. إنّ تمرير
Constraints.maxHeightلا يؤدي إلى أي عملية في الوقت الحالي، ولكنّه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل حذف بعض الأحرف استنادًا إلى الارتفاع. (I6afee، b/168720622) - تقبل السمة
SubcomposeSlotReusePolicy.getSlotsToRetain()الآن فئة مخصّصة تشبه MutableSet ولا تسمح بإضافة عناصر جديدة إليها. (Icd314) - أصبحت PointerIcon الآن واجهة
@Stable(I9dafe) - تم إيقاف ميزة الاستهلاك الجزئي (النزول أو الموضع) نهائيًا في
PointerInputChange. يمكنك استخدامconsume()لاستهلاك التغيير بالكامل. يمكنك استخدامisConsumedلتحديد ما إذا كان مستخدم آخر قد استهلك التغيير من قبل أم لا. - تنشئ الدالة
PointerInputChange::copy()الآن نسخة سطحية دائمًا. وهذا يعني أنّه سيتم استهلاك نُسخPointerInputChangeبعد استهلاك إحدى النُسخ. إذا أردت إنشاءPointerInputChangeغير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674) - تفعيل إمكانية التشغيل التفاعلي للتمرير المتداخل بين Compose وView في الاتجاه Compose > View هذا يعني أنّ العنصر الرئيسي الذي يتضمّن Compose سيكون قادرًا على تلقّي دلتا التمرير المتداخل من طريقة عرض التمرير المتداخل. (If7949، b/174348612)
SemanticsProperty testTagsAsResourceIdالجديد، والذي يمكن استخدامه لجعل Compose متوافقًا مع اختبارات UIAutomator المصمَّمة لنظام View (I39c20)- عرض جميع الأوزان المتاحة لخطوط النظام على Android عند استخدام
FontFamily.SansSerifسيؤدي ذلك إلى استخدام أسماء خطوط احتياطية، مثل sans-serif-medium، داخليًا على الإصدارات من 21 إلى 28 من واجهة برمجة التطبيقات. هذا تغيير في السلوك، لأنّه في السابق كان يتم توفير الأوزان 400 و700 فقط على الإصدارات من 21 إلى 28 من واجهة برمجة التطبيقات. (I380fe، b/156048036، b/226441992) - أعاد المعلّمان Paragraph وMultiparagraph ترتيب الوسيطات الموضعية لتكون قبل الوسيطات الاختيارية. (Idafaa)
- تتلقّى
AndroidFontالآن typefaceLoader كمَعلمة دالة إنشائية. (I2c971)
الإصدار 1.2.0-alpha07
6 أبريل 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الدالة الجديدة
Snapshot.withoutReadObservation { ... }. يسمح هذا الإجراء للمستخدمين بتنفيذ دالة lambda التي تم تمريرها بدون الاشتراك في تغييرات قيم الحالة التي تمت قراءتها أثناء هذا الرمز البرمجي. قد يكون هذا الخيار مفيدًا في حالات الاستخدام التي تريد فيها الاستفادة من عمليات القراءة والكتابة الآمنة في سلاسل المحادثات المستندة إلى اللقطات، ولكنك تريد أن تتمكّن من قراءة القيمة بدون التسبّب في إعادة إنشاء أو إعادة قياس غير ضرورية. (I9f365، b/214054486) - تسمح السمة
consumeWindowInsetsللإضافةComposeViewللمطوّرين بإيقاف استخدامWindowInsetsعلى Android. يسمح ذلك بتطبيقWindowInsetsبشكل منفصل على كلComposeViewsفي التسلسل الهرمي بدون أن يتداخل بعضها مع بعض. (I0ef08، b/220943142) - تمت إضافة
KeyboardType.Decimalكبديل لـKeyboard.Numberلتضمين الفاصل العشري تحديدًا في محرر أسلوب الإدخال. (Iec4c8، b/209835363) - أصبحت
PointerEventType.ScrollوPointerEvent.scrollDeltaواجهتَي برمجة تطبيقات ثابتتَين الآن (I574c5، b/225669674) - تفعيل إمكانية التشغيل التفاعلي للتمرير المتداخل بين View وCompose لفئات View المتوافقة وهذا يعني أنّ Compose يمكنه الآن إرسال دلتا التمرير إلى عنصر رئيسي (متعاون) في View. (I5d1ac، b/174348612)
- تم تعديل
FontFamily.Resolverلدمج إعداد تسهيل استخدام ميزة "النص الغامق" على مستوى النظام (I6c1e7) - تم إيقاف
Font(AssetManager, String, ...)نهائيًا واستبداله بـFont(String, AssetManager, ...). هذه واجهة برمجة تطبيقات تجريبية. (I1c7a4) - أضِف واصف خط جديدًا
Font(DeviceFontFamilyName)للبحث اختياريًا عن الخطوط المثبَّتة على النظام أثناء سلاسل الخطوط الاحتياطية. (I30468، b/219754572) - تمت إضافة إعداد توافق مؤقت لـ
includeFontPaddingفي TextStyle/ParagraphStyle. يمكن تغييرincludeFontPaddingمن خلالTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). هذا خيار إعداد مؤقت لتفعيل عملية نقل البيانات، وسيتم إزالته. (If47be، b/171394808) - أضِف إضافة
GoogleFont.Provider.isAvailableOnDeviceللحصول على مساعدة في تصحيح الأخطاء. (I64e31) - إضافة أداة إنشاء
GoogleFont.Providerلاستخدامها مع@ArrayRes(Ic5ee1، b/225984280) - تمت إعادة تسمية
Compose GoogleFontإلىFont(GoogleFont)، وستظل واجهة برمجة التطبيقات ثابتة في ما عدا ذلك. (I125f2)
إصلاح الأخطاء
- تمت إضافة عملية فحص lint إلى material/Scaffold للتأكّد من استخدام الحشو الداخلي (Ifb111)
الإصدار 1.2.0-alpha06
23 مارس 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إجراء دلالي
RequestFocusلطلب التركيز على العنصر المستهدف القابل للتركيز. (I17b71) - تم تعديل عملية تحليل الرسومات المتجهة القابلة للرسم لتتيح عكس المحتوى تلقائيًا في
VectorPainterإذا كان اتجاه التنسيق الحالي من اليمين إلى اليسار. (I79cd9، b/185760237) تم تعديل ألوان الظل/الإضاءة المحيطة لتصبح مَعلمات لاحقة للرمز
Modifier.graphicsLayerمن أجل التوافق مع واجهة برمجة التطبيقات (I3f864، b/160665122)تمت إضافة عمليات تنفيذ تلقائية للون الظل/اللون المحيط على
GraphicsLayerScopeلضمان عدم حدوث تغييرات غير متوافقة في واجهة برمجة التطبيقاتتمت إضافة وقت الحدث إلى أحداث RSB (Ief8ae)
تم الآن دمج
FocusOrderفيFocusProperties، وأصبح بإمكانfocusProperties()الاستفادة من جميع إمكاناتfocusOrder(). تم إيقافFocusOrderوfocusOrder()نهائيًا. يجب استبدالfocusOrder()الذي يقبلfocusRequesterبالمعدِّلfocusRequester()معfocusProperties(). يتيح ذلك للمعدّلات فصل الاهتمامات بشكل أفضل. (I601b7)ستؤدي ترقية كل من
RecyclerViewوComposeالآن إلى تحسين أداء التمرير في RecyclerViews التي تتضمّن طرق عرض Compose كعناصر فرعية.إضافة
ViewCompositionStrategy.Defaultكوسيلة لاسترداد الاستراتيجية التلقائية المضمّنةأضِف
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer، وهي الاستراتيجية التلقائية الجديدة التي تتعامل بشكل صحيح مع حاويات التجميع، مثل RecyclerView. (If7282)تمت إضافة إمكانية إضافة تعليقات توضيحية إلى فئات التعليقات التوضيحية باستخدام @Preview كخطوة أولى لإضافة ميزة "المعاينة المتعددة". يمكن استخدام هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى دوال Composable أو فئات التعليقات التوضيحية الأخرى، والتي يمكن اعتبارها بعد ذلك كتعليقات توضيحية غير مباشرة باستخدام @Preview المحدّدة. (I12eff)
تمت إضافة أجهزة مرجعية إلى قائمة الأجهزة في @Preview (I071c9)
إصلاح الأخطاء
- تم تعديل واجهات برمجة تطبيقات الرسومات المتجهة لاستخدام التعليق التوضيحي الصحيح القابل للإنشاء @VectorComposable بدلاً من @UiComposable (I942bc)
- إزالة crossinline من
AnnotatedString.Builder.withStyle(If84d5)
المساهمة الخارجية
- compose-ui: إضافة السمتَين
ambientShadowColorوspotShadowColorإلىGraphicsLayerScope(I1ba1a، b/160665122) - يمكن الآن استخدام موارد الجمع من خلال دوال
pluralStringResource. (Ib2f23، b/191375123)
الإصدار 1.2.0-alpha05
9 مارس 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتلقّى الدالة
TextToolbarالآن وسيطات lambda بدلاً منActionCallback. (Ib2eb9، b/197950089) - تم تعديل إمكانية القيم الخالية في حزمتَي core وappcompat لتتوافق مع الإصدار التجريبي الثاني من Tiramisu (I0cbb7)
- تعرض الواجهة التي تم قياسها الآن السمة parentData (I3313f)
- أصبحت
Modifier.onPlacedوواجهةOnPlacedModifierمستقرتين الآن. (Ib5482) - خبر سار! تتيح ميزة "إنشاء صورة متحركة" الآن استخدام إعداد "طول مدة الرسوم المتحركة" من "خيارات المطوّرين". (I5a4fc، b/161675988)
- تمّت إضافة معدِّل
BeyondBoundsLayoutمحلي (If8b51، b/184670295) - النص: تم الآن إيقاف includeFontPadding تلقائيًا. تم حلّ مشاكل الاقتصاص الناتجة عن
includeFontPadding=false، ولن يحدث أي اقتصاص للنصوص البرمجية الطويلة. (I31c84، b/171394808)
إصلاح الأخطاء
- سيظهر الآن الخطأ
ComposeContentTestRule.setContentIllegalStateExceptionإذا حاولت ضبط المحتوى عندما يكون هناك محتوى. (I888a5، b/199631334) - تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة منها على جهاز Android. (I06020، b/197769306)
- تحسين عيّنات التمرير في "شريط البحث السريع" (I6a596)
المساهمة الخارجية
- تم تعديلها لاستخدام الإصدار 1.6.0 من Kotlinx coroutines (I3366d)
الإصدار 1.2.0-alpha04
23 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
تمت إضافة
ComposableTargetوComposableTargetMarkerوComposableOpenTargetالتي تتيح إعداد تقارير في وقت الترجمة عن الحالات التي يتم فيها استدعاء دالة قابلة للإنشاء تستهدف أداة تطبيق لم يتم تصميمها لاستخدامها.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لمترجم Compose، لذا من النادر استخدام هذه التعليقات التوضيحية مباشرةً . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة، أو دوال قابلة للإنشاء مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عامة تكون تعبيرات لامدا قابلة للإنشاء (يتم استنتاج المتغيرات والمعلَمات المحلية)، أو عند استخدام
ComposeNodeأو دوال قابلة للإنشاء ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب إضافة التعليق التوضيحي
ComposableTargetإلى الدوال القابلة للإنشاء التي تستدعيComposeNodeأوReusableComposeNode، وإلى أي أنواع مَعلمات lambda قابلة للإنشاء. ومع ذلك، يُنصح بإنشاء تعليق توضيحي يتضمّن التعليق التوضيحيComposableTargetMarker، ثم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً منComposableTargetمباشرةً. تكون التعليقات التوضيحية القابلة للإنشاء المميّزة بـComposableTargetMarkerمكافئة لـComposbleTargetمع الاسم المؤهّل بالكامل لفئة السمة كمعلَمة مطبِّقة. للاطّلاع على مثال لاستخدامComposableTargetMarker، راجِعanroidx.compose.ui.UiComposable. (I38f11)تتلقّى
Font(resId, ...)الآن loadingStrategy على واجهة برمجة التطبيقات الثابتة. (Ief3d2)أصبحت واجهة برمجة التطبيقات
FontLoadingStrategyالآن واجهة برمجة تطبيقات ثابتة. (I1ee35، b/174162090)إتاحة تحميل الخطوط بشكل غير متزامن في "النص" (I77057، b/214587005)
إضافة واجهة برمجة تطبيقات Bridge لتحويل
Font.ResourceLoaderالمخصّص إلىFontFamily.Resolver(Ia0060)
إصلاح الأخطاء
- يتم تمرير
FontFamily.Resolverالمقدَّمة إلى التركيبات الفرعية، مثل النافذة المنبثقة. - يتم تمرير
Font.ResourceLoaderالمقدَّمة إلى التركيبات الفرعية، مثل النافذة المنبثقة. (I48fa5)
الإصدار 1.2.0-alpha03
9 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف الطريقتَين
notifyFocusedRectفيTextInputSessionوTextInputServiceنهائيًا ولن يتم استدعاؤهما. استخدِمBringIntoViewRequesterبدلاً من ذلك. (Ia4302، b/192043120، b/216842427، b/178211874) - تم تقديم طريقة
destroyDisplayListDataفي فئةRenderNodeالوهمية (I1e659، b/216660268) - تمت إضافة واجهة برمجة تطبيقات جديدة تتيح قياس أحجام العناصر الفرعية من
SubcomposeLayoutالتي تم إنشاؤها مسبقًا. (I857ea) تمت إضافة
movableContentOfالتي تحوّل دالة lambda قابلة للإنشاء إلى دالة lambda تنقل حالتها والعُقد المقابلة إلى أي موقع جديد يتم استدعاؤها فيه. عندما تنتهي المكالمة السابقة، يتم الاحتفاظ بالحالة مؤقتًا، وإذا انضمت مكالمة جديدة إلى التركيب، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. إذا لم تتم إضافة أي مكالمة جديدة، ستتم إزالة الحالة نهائيًا وسيتم إعلام مراقبي التذكير.إذا تم استدعاء دالة
movableContentOflambda عدة مرات في التركيب نفسه، يتم إنشاء حالة وعُقد جديدة لكل عملية استدعاء، وعندما تغادر عمليات الاستدعاء التركيب وتدخل عمليات استدعاء جديدة، يتم نقل الحالة من عمليات الاستدعاء الأولى التي تغادر إلى عمليات الاستدعاء التي تدخل بالترتيب الذي يتم استدعاؤها به. تتم إزالة جميع الحالات التي لم تتم المطالبة بها من خلال المكالمات الجديدة بشكل نهائي. (Ib4850)يتوفّر
FontFamilyResolverالآن من خلالLocalFontFamilyResolver.currentتمت إضافة
createFontFamilyResolver(context)وcreateFontFamilyResolver(context, coroutineScope)لإنشاء أدوات تحليل جديدة FontFamily خارج نطاق استخدام Compose.تتلقّى الفقرة وMultiParagraph الآن
FontFamily.Resolverيحتوي
TextLayoutResult.layoutInput.fontFamilyResolverالآن على برنامج التعيين المستخدَم لهذا التنسيق، وتم إيقافTextLayoutResult.layoutInput.resourceLoaderنهائيًا لأنّه لم يعُد مستخدَمًا. (Id5a45، b/174162090)إتاحة تحميل الخطوط بشكل غير متزامن واختياري، مع توفير سلوك احتياطي يتم استخدام هذا المسار من خلال Text وTextField، ويتم عرضه من خلال FontFamilyResolver.
إتاحة التحميل المُسبَق للخطوط من خلال
FontFamilyResolver.preloadتسمح السمة
FontFamilyResolver.setAsyncLoadContextبضبط سياق الروتين الفرعي العام المستخدَم لتحميل الخطوط غير المتزامنة. (I87fe8، b/174162090)تمت إضافة
AndroidFont، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة من واصفات موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خادم خلفي خاص بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز بشكل اختياري، أو تحميل خط من مصدر غير متوفّر من خلال مصانع الخطوط الحالية.تمت إضافة
Font.ResourceLoadedAPI لدعم تحميل الخطوط بشكل اختياري وغير متزامن. لا يُنصح مطوّري التطبيقات باستخدام واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، اطّلِع علىAndroidFont.تسمح دالة الإضافة
Font.AndroidResourceLoaderبإنشاءFont.ResourceLoaderخارج التركيب.تمت إضافة المَعلمة
loadingStrategyإلى الخطوط المستندة إلى الموارد، وذلك للسماح بالتحميل غير المتزامن عندما تشير مراجع خطوط الموارد إلى ملف XML للخطوط القابلة للتنزيل. (Ie5aea، b/174162090)تم إيقاف طريقة وضع تصميم
Typeface(FontFamily)نهائيًا. كانت هذه السمة تُستخدم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك مدة تصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. باستخدام الخطوط القابلة للتنزيل، قد يتم حظر هذا الطلب لمدة 10 ثوانٍ. استخدِمFontFamilyResolver.preloadبدلاً من ذلك.تم إيقاف
fontResource(FontFamily): Typefaceنهائيًا. كانت هذه السمة تُستخدم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك مدة تصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. يُرجى استخدامFontFamilyResolver.preloadبدلاً من ذلك (If8e7c، b/174162090)تم إيقاف طريقة وضع تصميم
SubcomposeLayoutStateالتي تقبلmaxSlotsToRetainForReuseنهائيًا. بدلاً من ذلك، هناك أداة إنشاء جديدة تقبلSubcomposeSlotReusePolicy، وهي واجهة جديدة تتيح تحكّمًا أكثر دقة في ما يجب الاحتفاظ به من مواضع الإعلانات لإعادة الاستخدام في المستقبل. (I52c4d)تعرض هذه السمة دالتي HSV وHSL في
Colorكواجهة برمجة تطبيقات غير تجريبية. أصبحت مساحة الألوان Oklab متاحة الآن كواجهة برمجة تطبيقات عامة. (I08fb6، b/180731008)تم إيقاف
AndroidComposeTestRule.AndroidComposeStatementنهائيًا، وهي لم تكن مخصّصة لواجهة برمجة التطبيقات العامة ولم تقدّم لك أي فائدة على أي حال. (Ibc46b)إعادة تسمية فئة kt الداخلية التي تم إنشاؤها (Ia0b9e، b/174162090)
تمت إزالة
FontLoadingStrategy.values(I42a9d، b/174162090)أصبح اسم أداة تحميل الخطوط العامة
FontFamilyResolver. (I4f773، b/174162090)استخدام نظام جديد لتحميل الخطوط على الكمبيوتر (I9ce5c، b/174162090)
FontFamily.Resolver.resolvereturnsState<Any>(I4406c, b/174162090)
إصلاح الأخطاء
- سيتم الآن إبقاء حقول النص فوق لوحة المفاتيح عند التركيز عليها وعندما تكون لوحة المفاتيح معروضة، وذلك عندما يكون وضع الإدخال السلس
ADJUST_PAN. (I8eaeb، b/190539358، b/192043120) - يستخدم الكمبيوتر المكتبي التركيبة المحلية لـ
FontFamily.Resolver - تم إيقاف ميزة "
FontLoader" على أجهزة الكمبيوتر نهائيًا - مصنع
createFontFamilyResolverالجديد على الكمبيوتر المكتبي (I6bbbb، b/174162090) - لم يعُد نوع إدخال لوحة المفاتيح على الشاشة يومض عند تغيير التركيز بين حقول النص. (I1bf50، b/187746439)
الإصدار 1.2.0-alpha02
26 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.onRotaryScrollEvent()وModifier.onPreRotaryScrollEvent()لأجهزة Wear التي تحتوي على زر جانبي دوّار (I18bf5، b/210748686) - إضافة
View.createLifecycleAwareRecomposerتجريبية (I0cde6)
المساهمة الخارجية
- تم الآن عكس اتجاه
PointerEvent.scrollDelta.yعلى أجهزة Android (سيتم الآن عرض القيمة 1 بدلاً من -1 إذا أملنا عجلة الماوس إلى اليمين) (Ia9811)
الإصدار 1.2.0-alpha01
12 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
FontFamily.canLoadSynchronouslyنهائيًا. لا تحمل هذه السمة أي معنى دلالي. (Ica5ef) - تمت إضافة حقل المعرّف إلى
CompositionDataلإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e) - تمت إضافة أرقام تعريف أجهزة Wear OS إلى قائمة أجهزة المعاينة (I93232)
تحديثات الاعتماديات
- يعتمد الآن على Kotlin
1.6.10.
الإصدار 1.1
الإصدار 1.1.1
23 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.
إصلاح الأخطاء
- حلّ المشكلة في
NullPointerExceptionعلىandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059 وb/206677462) - تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة منها على جهاز Android. (I06020، b/197769306)
- إصلاح مشكلة عرض النصوص من اليمين إلى اليسار في
LazyVerticalGrid(aosp/1931080 وb/207510535)
الإصدار 1.1.0
9 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.0.0
- إتاحة تأثير التمرير السريع في Android 12 بشكل ثابت
- تحسينات على حجم مساحة اللمس
- يُرجى العِلم أنّه في ما يتعلّق بالإصدار 1.0 من Compose، ستوسّع مكوّنات Material مساحة التنسيق لتلبية إرشادات تسهيل الاستخدام في Material بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حدّ أدنى يبلغ 48x48dp، حتى إذا ضبطت حجم الزر على قيمة أصغر. يتوافق ذلك مع سلوك "مكوّنات Material Design" نفسه، ما يوفّر سلوكًا متسقًا في حال استخدام كلّ من "طرق العرض" وCompose. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكوّنات Compose Material.
- إصدار ثابت من شريط التنقّل
- ترقية عدد من واجهات برمجة التطبيقات التجريبية السابقة إلى إصدار ثابت
- التوافق مع الإصدارات الأحدث من Kotlin
الإصدار 1.1.0-rc03
26 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.1.0-rc03. يتضمّن الإصدار 1.1.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل التطبيق ليتوافق مع الإصدار 1.1.0-rc03 من Compose Material
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تسبّب في عدم توفّر إجراءات التمرير الخاصة بإمكانية الوصول (I7cbfb)
- سيعمل
SemanticsNodeInteraction.captureToImage()أيضًا إذا كانت قيمةHardwareRenderer.isDrawingEnabled()هيfalse، وذلك من خلال تفعيلها طوال مدة المكالمة (Idf3d0).
الإصدار 1.1.0-beta04
1 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta04. يتضمّن الإصدار 1.1.0-beta04 هذه التعديلات.
الميزات الجديدة
- تم تعديلها لتكون متوافقة مع Kotlin
1.6.0
تغييرات واجهة برمجة التطبيقات
- إزالة القيم الفارغة في
androidx.core.view(I7078a، b/204917439) - تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح للمستخدمين استهلاك PointerInputchange ككل أو التحقّق مما إذا تم استهلاكه أم لا. (I2e59d)
- تضيف هذه السمة إمكانية التعامل مع أحداث عجلة التمرير في الماوس في طبقة واجهة المستخدم. (Ia14eb، b/198214718)
- أضِف عمليات تحميل زائدة تجريبية
Modifier.composedتقبل المفاتيح للمقارنة من أجل المساواة والتأهّل لتخطّي عمليات التحسين. (Ice799، b/205851704) - تمتد فترة
ComposeNotIdleExceptionالآن منExceptionبدلاً منThrowableمباشرةً. يُرجى العِلم أنّ هذا يعني أنّ عبارات catch التي كانت تتضمّنExceptionقد تتضمّن الآنComposeNotIdleException، في حين لم يكن ذلك ممكنًا في السابق. (I9c217)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحرّك مقابض النص عند تغيُّر إذن الوصول إلى محرر أسلوب الإدخال (IME). (I25f2e)
الإصدار 1.1.0-beta03
17 نوفمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta03. يتضمّن الإصدار 1.1.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مفتاح التعديل الجديد Modifier.onPlaced للسماح بمراقبة تغيير موضع العنصر. وبالتالي، يمكن إجراء تغييرات إضافية على إزاحة المعدِّل الفرعي استنادًا إلى التغيير الملحوظ في موضع الإعلان. (I558fd)
- تمت إزالة
InjectionScope.flush()وInjectionScope.dispose(). يتم الآن إفراغ جميع الأحداث وإلغاء النطاق في نهاية طريقة perform*Input() التي تم استدعاؤها، كما كان يحدث من قبل. (I2bed8) - تمت إزالة
MultiModalInjectionScope.TouchوMultiModalInjectionScope.Mouse. لإدخال أحداث اللمس والماوس لإيماءات متعدّدة الوسائط، يمكنك الآن استخدامMultiModalInjectionScope.touch()وMultiModalInjectionScope.mouse()، وكلاهما يقبلان تعبير lambda يتضمّن نطاق المستلِم الخاص بهذا الوضع. (Idde18)
إصلاح الأخطاء
- يتم الآن احتساب القيمة التلقائية لـ
durationMillisفيTouchInjectionScope.swipeWithVelocityبطريقة تتيح إمكانية التمرير السريع. (I19deb)
الإصدار 1.1.0-beta02
3 نوفمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta02. يتضمّن الإصدار 1.1.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات التجريبية BringIntoView التي تتيح لك إرسال طلب إلى العناصر الرئيسية ليتمكّنوا من التمرير لعرض عنصر (Ib918d، b/195353459)
- واجهات برمجة تطبيقات جديدة للصور المتحركة لدعم الأدوات على وجه التحديد، تتيح هذه السمة للأدوات فحص الصور المتحركة وإعداداتها في Transitions. (I4116e)
المساهمة الخارجية
- Added Modifier.pointerHoverIcon (I95f01)
الإصدار 1.1.0-beta01
27 أكتوبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات التجريبية
BringIntoViewالتي تتيح لك إرسال طلب إلى الوالدَين ليتمكّنا من التمرير سريعًا لعرض منتج (Ib918d، b/195353459) - واجهات برمجة تطبيقات جديدة للصور المتحركة لدعم الأدوات على وجه التحديد، تتيح هذه السمة للأدوات فحص الصور المتحركة وإعداداتها في Transitions. (I4116e)
الإصدار 1.1.0-alpha06
13 أكتوبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha06. يتضمّن الإصدار 1.1.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ExperimentalComposeUiApiمنViewRootForInspectorوLayoutInfo.ownerViewId(I5c2e3) - تمت إضافة حمل زائد بدون عنصر فرعي إلى Layout، مع تحسين الكفاءة (Ib0d9a)
- تمت إزالة
InternalCompilerApiمن طرق Composer التي يجب استدعاؤها على مستوى الوحدات (I1aa0b) - تعرض الدالة
SemanticsNodeInteraction.performSemanticsActionالآنSemanticsNodeInteractionالذي تم استدعاء الدالة عليه. (I9e5db) - تمت إضافة LocalInputModeManager CompositionLocal لرصد TouchMode/NonTouchMode. (I6a83c، b/175899786)
- تمت إضافة
viewConfiguration: ViewConfigurationإلىLayoutInfoللسماح للمستهلكين بالحصول على القيمة الصحيحة لأشياء مثل مهلة الضغط مع الاستمرار. (I76ca6)- تمت إضافة
viewConfiguration: ViewConfigurationإلىInjectionScopeللسماح للاختبارات بتعديل عملية إدخال البيانات استنادًا إلى عوامل مثل مهلة الضغط مع الاستمرار أو مسافة اللمس. - تم تغيير المدة التلقائية للنقر مع الاستمرار والنقر مرّتين لكل من الإدخال باللمس والماوس لتستند إلى القيم الواردة في
InjectionScope.viewConfiguration.
- تمت إضافة
- تنفيذ ExposedDropdownMenu استنادًا إلى ExposedDropdownMenuBox مع TextField وDropdownMenu في الداخل (If60b2)
- تمت إضافة dismissOnOutsideClick إلى PopupProperties، ما أدّى إلى استبدال dismissOnClickOutside التي لم تعُد متاحة. يتلقّى الموقع الجديد موضع النقرة وحدود العنصر الثابت، ما يتيح تحكّمًا أفضل في ما إذا كان يجب استدعاء onDismissRequest أم لا. على سبيل المثال، يمكن أن يكون ذلك مفيدًا لمنع إغلاق المرساة عند النقر عليها.
- تمت إضافة updateAndroidWindowManagerFlags إلى PopupProperties، ما يتيح التحكّم على مستوى منخفض في العلامات التي يمرّرها العنصر المنبثق إلى Android WindowManager. ستكون مَعلمة دالة lambda هي العلامات المحسوبة من قيم PopupProperties التي تؤدي إلى علامات WindowManager، مثل focusable. ستكون نتيجة الدالة lambda هي العلامات النهائية التي سيتم تمريرها إلى WindowManager في Android. سيؤدي استدعاء updateAndroidWindowManagerFlags تلقائيًا إلى ترك العلامات المحسوبة من المَعلمات بدون تغيير. يجب استخدام واجهة برمجة التطبيقات هذه بحذر، وفقط في الحالات التي يتطلّب فيها النافذة المنبثقة سلوكًا محدّدًا جدًا. (I6e9f9)
- تم إيقاف
Recomposer.stateنهائيًا واستبداله بـRecomposer.currentStateلتغيير نوعه إلى StateFlow (Ic2ab3، b/197773820) - تمت إضافة
flush()وdispose()إلىInjectionScope. استخدِمها عندما تريد إفراغ جميع الأحداث التي تمّت إضافتها إلى قائمة الانتظار على الفور وعندما تريد التخلّص من النطاق، على التوالي. (Ifb73a) - تمت إضافة
performScrollToNode(matcher: SemanticsMatcher)التي تنقل الحاوية القابلة للتمرير إلى المحتوى المطابق باستخدام أداة المطابقة المحدّدة. (Ic1cb8) - تتيح
InjectionScopeالآن استخدامDensity، ما يتيح لك التحويل بسهولة بين وحدتَي البكسل (px) ووحدة البكسل المستقلة عن الكثافة (dp) فيperformTouchInputوغيرها. (I8fe1f)
إصلاح الأخطاء
- تنقل AndroidView الآن LocalLifecycleOwner وLocalSavedStateRegistryOwner إلى طريقة العرض الخاصة بها من خلال ViewTreeLifecycleOwner وViewTreeSavedStateRegistryOwner. (I38f96، b/179708470)
- تم إصلاح مشكلة عدم معالجة WearOS SwipeToDismissBox أحيانًا لعمليات التمرير السريع. (I9387e)
- تم تغيير الوقت التلقائي بين أحداث الإدخال التي تم إدخالها من 10 ملي ثانية إلى 16 ملي ثانية. قد يؤدي ذلك إلى تغيير نتيجة الاختبارات التي تنفّذ إيماءات إدخال، مثل التمرير السريع بشكل معيّن. (I829fd)
الإصدار 1.1.0-alpha05
29 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha05. يتضمّن الإصدار 1.1.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية التواصل بين أدوات التعديل (Id5467، b/198826874)
- تمت إضافة مؤشرات تجريبية سابقة إلى PointerEventChange. (Ic1fd8 وb/197553056 وb/199921305)
- تمت إضافة
density: DensityوlayoutDirection: LayoutDirectionإلىLayoutInfo. يتيح ذلك لمستهلكيLayoutInfoتفسير الأبعاد والموضع المعروضَين فيLayoutInfoبشكل صحيح. (I002f1) - تمت إضافة دعم تجريبي لإدخال أحداث الماوس. استخدِم
performMouseInputلبدء إرسال أحداث الماوس، أو أرسِل أحداث الماوس من خلال السمةMouseالخاصة بالعنصرMultiModalInjectionScopeأثناء إيماءة إدخال متعددة الوسائط باستخدامperformMultiModalInput. يمكنك الاطّلاع علىMouseInjectionScopeللحصول على مستندات حول واجهة برمجة التطبيقات المتاحة. (Iaa4a8، b/190493367)
إصلاح الأخطاء
- تم إصلاح مشكلة توافق عناصر المحتوى القابلة للتمرير (التي يتم تحميلها عند الحاجة وتلك التي لا يتم تحميلها عند الحاجة) مع أدوات تسهيل الاستخدام، وذلك فيما يتعلق بالتمرير (I6cdb0)
- تم تحسين
TouchInjectionScope.swipeWithVelocity. أصبح بإمكانها الآن قبول مجموعة أكبر من متغيّرات الإدخال، وستقترح تغييرات على الإدخال إذا تعذّر إنشاء تمرير سريع (I40fbe، b/182477143).
الإصدار 1.1.0-alpha04
15 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha04. يتضمّن الإصدار 1.1.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتضمّن
PointerEventالآنPointerEventTypeلدعم أحداث التمرير. (I091fa) - السماح للأطفال بقبول إدخال المؤشر خارج حدود إدخال المؤشر الخاصة بالعنصر الأصل يمكن للوالدَين اعتراض هذه الطلبات باستخدام السمة PointerInputScope.alwaysInterceptChildEvents (I9eae3، b/192479655).
- تم إيقاف
performGestureوGestureScopeنهائيًا، وتم استبدالهما بـperformTouchInputوTouchInjectionScope. (Ia5f3f، b/190493367) - تمت إضافة
touchBoundsInRootإلىSemanticsNodeالتي تتضمّن الحدّ الأدنى لحجم مساحة اللمس، وذلك ليتأكّد المطوّرون من أنّ مساحات اللمس تستوفي الحدّ الأدنى من متطلبات تسهيل الاستخدام. (I2e14b، b/197751214) - إعادة تنفيذ ميزة "قابلة للفحص" (I927bc، b/191017532)
- تم تغيير اسم مَعلمة inspectable لتتطابق مع مَعلمة composed (I3a482، b/191017532)
تم تقديم
performTouchInputوTouchInjectionScopeكبديلَين عنperformTouchInputوTouchInjectionScope، ما يمهّد الطريق أمام وسائل إدخال أخرى (مثل الماوس).تتضمّن
TouchInjectionScopeالطرق نفسها التي تتضمّنهاGestureScope، باستثناءmovePointerToوmovePointerByاللتين تمت إعادة تسميتهما إلىupdatePointerToوupdatePointerBy. وجميع الطرق الأخرى هي نفسها.يتشابه سلوك
TouchInjectionScopeإلى حد كبير مع سلوكGestureScope، مع اختلاف بسيط في التفاصيل:- عند إرسال حدث down أثناء تحريك المؤشرات بدون إرسال حدث move (بمعنى آخر، تم استخدام
updatePointerTo()، ولكن ليسmove()، ثم تم استدعاءdown())، كان التنفيذ السابق سيقدّم وقت الحدث ويرسل حدث move قبل إرسال حدث down. لا تزال عملية التنفيذ الجديدة ترسل حدث النقل، ولكنّها لا تقدّم وقت الحدث في هذه الحالة المحدّدة. - عند إرسال حدث "رفع" بينما تم تحريك المؤشرات بدون إرسال حدث "تحريك" (كما هو موضح أعلاه)، كان التنفيذ السابق يقدّم وقت الحدث ويرسل حدث "تحريك" قبل إرسال حدث "رفع". لا تنفّذ عملية التنفيذ الجديدة أيًا مما سبق، ولن تظهر المواضع الجديدة للمؤشرات إلا من خلال حدث النقر.
أخيرًا، تقدّم السمة
TouchInjectionScopeطريقة جديدةcurrentPosition(pointerId: Int)للحصول على الموضع الحالي للمؤشر المحدّد. (If1191، b/190493367)- عند إرسال حدث down أثناء تحريك المؤشرات بدون إرسال حدث move (بمعنى آخر، تم استخدام
إصلاح الأخطاء
- تسمح هذه السمة بتوسيع حدود مساحة اللمس المستهدفة إلى ما بعد منطقة القص لأغراض الحد الأدنى لمساحة اللمس المستهدفة. (I43e10، b/171509422)
- تمت إضافة ميزة التمرير السريع الممتد على أجهزة Android 12. (Iccf3c، b/171682480)
الإصدار 1.1.0-alpha03
1 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تم تعديل الإصدار
1.1.0-alpha03من Compose ليعتمد على الإصدار1.5.30من Kotlin. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.inspectableلتضمين معدّلات أخرى. (I1909b، b/191017532) - تمت إضافة واجهة برمجة التطبيقات
BlurredEdgeTreatmentلتسهيل حالات استخدام التمويه إلى مجموعات أكثر شيوعًا من علامات المقاطع وTileModes. تتضمّن معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي وتطبيق التمويه على المناطق خارج هذه الحدود باستخدام اللون الأسود الشفاف، أو قص المحتوى إلى حدود المحتوى مع أخذ عيّنات من الحافة الأقرب لنواة التمويه التي تتجاوز حدود المحتوى. (I6b4b7، b/166927547) - تمت إضافة إمكانية استخدام RenderEffect في Compose Desktop. تم تقديم OffsetEffect بالإضافة إلى أداة تعديل التمويه كطريقة بسيطة لإضافة مؤثرات مرئية للتمويه إلى جزء من التسلسل الهرمي للتصميم. (I0f6aa، b/166927547)
- تم تقديم واجهة برمجة التطبيقات RenderEffect التي يمكن ضبطها اختياريًا على
Modifier.graphicsLayerلتغيير محتوى الطبقة نفسها. يمكن استخدامها لتشويش محتوى عنصر قابل للإنشاء وعناصر قابلة للإنشاء تابعة ضمن تسلسل هرمي للتركيب. (I47c4d، b/166927547) - يتضمّن AwaitPointerEventScope الآن الدالتَين withTimeout() وwithTimeoutOrNull() (I507f0 وb/179239764 وb/182397793)
- تمت إضافة الحد الأدنى لحجم مساحة اللمس إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)
- إضافة إمكانية استخدام TileMode.Decal التي تفيد في تحديد سلوك الحواف بالنسبة إلى RenderEffects المستندة إلى التمويه (I7e8ed، b/166927547)
- أصبحت
performScrollToIndexوperformScrollToKeyوhasScrollToIndexActionوhasScrollToKeyActionواجهات برمجة تطبيقات ثابتة (I142ae، b/178483889) - تمت إضافة طريقة اختبار للحصول على الحدود المقتصة. (I6b28e)
إصلاح الأخطاء
- تمت إزالة طريقة isBounded من BlurredEdgeTreatment واستبدالها بالتحقّق بشكل صريح مما إذا كانت مَعلمة الشكل فارغة. (I85d68)
الإصدار 1.1.0-alpha02
18 أغسطس 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتيح PointerEvent الآن قراءة حالة زر الماوس وحالة مفتاح التعديل في لوحة المفاتيح. (I6310c، b/180075467)
- تستخدم الإيماءات التي يتم إدخالها الآن وقت MainTestClock كمصدر موثوق للوقت. سيتم ضبط الوقت الحالي للأحداث التي تم إدخالها في
performGestureعلى الوقت الحالي لـ MainTestClock. (Ifb364، b/192064452) - تمت إضافة أداة إنشاء
DpRect(DpOffset, DpSize)(I2cf16، b/194219828) - إضافة فئة DpSize (I7abb1، b/194219828)
إصلاح الأخطاء
- تم تعديل عملية تحليل XML لرسومات المتجهات لتتوافق مع ColorStateLists كسمات أساسية لتدرّج الألوان في VectorDrawables. (I86915، b/195668138)
الإصدار 1.1.0-alpha01
4 أغسطس 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تقبل السمة
RelocationRequester.bringIntoViewالآن مستطيلاً كمعلَمة تتيح لنا عرض جزء من عنصر قابل للإنشاء (Ice2c5، b/194330245) - أصبحت
AnimatedImageVectorوواجهات برمجة التطبيقات ذات الصلة مضمّنة الآن في وحدةandroidx.compose.animation:animation-graphicsالجديدة. (I60873) - تمت إضافة معدِّل تجريبي للتعامل مع طلبات النقل. (I65a97، b/178211874)
تم تقديم واجهة برمجة التطبيقات BrushPainter لإتاحة رسم أي Brush ضمن Painter، على غرار ColorPainter
تم تعديل Brush API لتضمين مَعلمة حجم أساسي يتم طلبها ضمن BrushPainter (Ia2752، b/189466433)
تم تعديل طريقة DrawScope#drawImage التي تستهلك مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterQuality اختيارية. ويفيد ذلك في إنشاء صور فن البكسل التي يُراد أن تكون منقطة عند تكبيرها. تم تعديل BitmapPainter وImage composable ليستخدما أيضًا مَعلمة FilterQuality اختيارية (Ie4fb0، b/180311607)
تمت إضافة طريقة
GestureScope.advanceEventTimeلمنحك المزيد من التحكّم في توقيت الأحداث في الإيماءة (Ibf3e2)
إصلاح الأخطاء
- لتحسين إمكانية ربط معدِّلات الرسم، تأكَّد من أنّ عملية تنفيذ Modifier.paint تستدعي drawsContent.
في السابق، كان من المتوقّع أن يكون Modifier.paint عقدة فرعية في سلسلة المعدِّلات، ولكنّ ذلك يمنع ضبطها على حاوية قابلة للإنشاء (مثل مربّع) أو إضافة عناصر تزيين إضافية في الأعلى، مثل
Modifier.paint().border(). من خلال استدعاء Modifier.paint للدالة drawContent بعد رسم محتويات الرسّام المحدّد، نحصل على اتساق أفضل في السلوك مع نمط المعدِّل. (Ibb2a7، b/178201337، b/186213275) - تتّبع مربّعات الحوار الآن سلوك تحديد الحجم الخاص بالمنصّة. اضبط
usePlatformDefaultWidthعلى "خطأ" لتجاوز هذا السلوك. (Iffaed، b/192682388) - نقل
InfiniteAnimationPolicyإلى :compose:ui (I5eb09، b/160602714) - أصبحت عملية التمرير من خلال الإجراءات الدلالية للقوائم الكسولة ومكوّنات التمرير العادية تتضمّن الآن رسومًا متحركة (Id9066، b/190742024)
الإصدار 1.0
الإصدار 1.0.5
3 نوفمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.5. يتضمّن الإصدار 1.0.5 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل تتبُّع مثيلات derivedStateOf. (aosp/1792247)
الإصدار 1.0.4
13 أكتوبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.4. يتضمّن الإصدار 1.0.4 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على Kotlin
1.5.31
الإصدار 1.0.3
29 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.3. يتضمّن الإصدار 1.0.3 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على Kotlin
1.5.30
الإصدار 1.0.2
1 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.2. يتضمّن الإصدار 1.0.2 هذه التعديلات.
تم تعديلها لتتوافق مع إصدار Compose 1.0.2. لا يزال الإصدار 1.0.2 من Compose متوافقًا مع الإصدار 1.5.21 من Kotlin.
الإصدار 1.0.1
4 أغسطس 2021
تم طرح androidx.compose.ui:ui-*:1.0.1. يتضمّن الإصدار 1.0.1 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.21من Kotlin.
الإصدار 1.0.0
28 يوليو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.
الميزات الرئيسية في الإصدار 1.0.0
هذا هو أول إصدار ثابت من Compose. يُرجى الاطّلاع على مدوّنة إصدار Compose الرسمية لمزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم الإصدار 4 من Android Studio Bumblebee Canary أو الإصدار
7.1.0-alpha04/7.1.0-alpha05من "مكوّن Android الإضافي في Gradle"، قد يحدث العطل التالي:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف
build.gradle. سيتم حلّ هذه المشكلة في الإصدار التالي من "استوديو Android Bumblebee" والمكوّن الإضافي لنظام Gradle المتوافق مع Android7.1. (b/194289155)
الإصدار 1.0.0-rc02
14 يوليو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تتّبع مربّعات الحوار الآن سلوك تحديد الحجم الخاص بالمنصّة. اضبط
usePlatformDefaultWidthعلى "خطأ" لتجاوز هذا السلوك. (Iffaed، b/192682388)
الإصدار 1.0.0-rc01
1 تموز (يوليو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
الميزات الجديدة
- تقسيم وحدة ui-tooling إلى
ui-toolingوui-tooling-preview(Iefa28، b/190649014)
تغييرات واجهة برمجة التطبيقات
- تمت إزالة الميزتَين التجريبيتَين القديمتَين
FocusManager#moveFocusInوFocusManager#moveFocusOut(I227d7 وb/170154986 وb/186567354 وb/168510304) - تتيح لوحة العرض الآن استخدام المَعلمة contentDescription لتسهيل الاستخدام. (Ib547c)
- تمت إعادة تسمية
useDefaultMaxWidthفيPopupPropertiesإلىusePlatformDefaultWidth. (I05710) - يمكن الآن استخدام عرض الشاشة بالكامل في مربّعات الحوار. (I83929، b/190810877)
- تمت إضافة دعم تجريبي لتمثيلات ألوان HSV وHSL. (Id7cf8، b/180731008)
التغييرات في السلوك
- توفّر أداة الإنشاء
@PreviewالآنLocalActivityResultRegistryOwnerتتيح لك معاينة العناصر القابلة للإنشاء التي تستخدم واجهات برمجة تطبيقات مثلrememberLauncherForActivityResult()التي تعتمد على توفّر هذا المالك. (Ib13d1، b/185693006) - توفّر أداة Compose
@PreviewالآنLocalOnBackPressedDispatcherOwnerتتيح لك معاينة العناصر القابلة للإنشاء التي تستخدم واجهات برمجة تطبيقات مثلBackHandlerالتي تعتمد على توفّر هذا المالك. (Ia1c05، b/185693006)
إصلاح الأخطاء
- تم نقل
InfiniteAnimationPolicyإلىandroidx.compose.ui:ui(I5eb09، b/160602714) - تمت إزالة AnimatedImageVector مؤقتًا من أجل تغيير بنية الوحدة. (I41906، b/160602714)
الإصدار 1.0.0-beta09
16 حزيران (يونيو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta09. يتضمّن الإصدار 1.0.0-beta09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تغيير نوع البيانات Role وLiveRegionMode إلى فئات مضمّنة مع دالة إنشاء خاصة (Id1890)
- يتم تحويل KeyboardCapitalization إلى فئة مضمّنة. (Id5a1c)
- غيِّر HapticFeedbackType إلى فئة مضمّنة. (I255ec)
- Modifier.pointerInteropFilter هو @ExperimentalComposeUiApi. (Iede6c)
- أصبحت TextAlign وFontSynthesis وTextDirection الآن فئات مضمّنة. (I212fe)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
- أصبح FontStyle الآن فئة مضمّنة. (I9e48b)
إصلاح الأخطاء
- الثوابت الرئيسية هي @ExperimentalComposeUiApi في الوقت الحالي. يمكن أن تعرِّف التعليمات البرمجية المستهلكة ثوابت خاصة قبل أن تصبح ثابتة. (Ia5d48)
- يمكن الآن إجراء اختبارات Compose على Robolectric. تم رصد القيود التالية حتى الآن:
- لا تتوفّر صورة نقطية أصلية، لذا يؤدي
ImageBitmap()إلى حدوث خطأ NullPointerException. - لن يتم الرسم، لذا ستنتظر
captureToImage()إلى أجل غير مسمى عملية الرسم التالية (أي سيحدث توقّف تام). - لم يتم تحميل أي خط، لذا سيتم قياس أي نص بشكل غير صحيح. يبلغ الارتفاع الثابت لجميع الأحرف 20 بكسل تقريبًا، ويبلغ عرضها 1 بكسل.
- لا ينفّذ
ComposeTestRule.waitUntil {}سلسلة التعليمات الرئيسية أثناء الانتظار، ما يجعله مماثلاً تمامًاComposeTestRule.mainClock.advanceTimeUntil {}من المتوقّع رصد المزيد من القيود في المستقبل. (I284fa)
- لا تتوفّر صورة نقطية أصلية، لذا يؤدي
قواعد الملفات الشخصية المُضافة
يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
ما هي قواعد الملف الشخصي؟
يتم تحديد قواعد الملف الشخصي لمكتبة في ملف نصي
baseline-prof.txtيقع في الدليلsrc/mainأو دليل مكافئ. يحدّد الملف قاعدة واحدة لكل سطر، حيث تكون القاعدة في هذه الحالة عبارة عن نمط للمطابقة مع الطرق أو الفئات في المكتبة. بنية هذه القواعد هي مجموعة فرعية من تنسيق ملف ART الشخصي القابل للقراءة الذي يتم استخدامه عند استخدامadb shell profman --dump-classes-and-methods .... تتّخذ هذه القواعد أحد الشكلَين التاليَين لاستهداف الطرق أو الفئات.ستتّبع قاعدة الطريقة النمط التالي:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>وستتّبع قاعدة الفئة النمط التالي:
<CLASS_DESCRIPTOR>هنا،
<FLAGS>هو واحد أو أكثر من الأحرفHوSوPللإشارة إلى ما إذا كان يجب تصنيف هذه الطريقة على أنّها "مهمة" أو "بدء التشغيل" أو "بعد بدء التشغيل".<CLASS_DESCRIPTOR>هو واصف للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، سيكون للفئةandroidx.compose.runtime.SlotTableواصفLandroidx/compose/runtime/SlotTable;.
<METHOD_SIGNATURE>هي توقيع الطريقة، وتشمل الاسم وأنواع المَعلمات وأنواع القيم التي تعرضها الطريقة. على سبيل المثال، يتضمّن الإجراءfun isPlaced(): BooleanفيLayoutNodeالتوقيعisPlaced()Z.يمكن أن تحتوي هذه الأنماط على أحرف بدل (
**و*و?) لكي تشمل قاعدة واحدة طرقًا أو فئات متعددة.
ما هي وظيفة القواعد؟
تشير الطريقة التي تحمل العلامة
Hإلى أنّ هذه الطريقة هي طريقة "نشطة"، ويجب تجميعها مسبقًا.تشير الطريقة التي تتضمّن العلامة
Sإلى أنّها طريقة يتم استدعاؤها عند بدء التشغيل، ويجب تجميعها مسبقًا لتجنُّب تكلفة التجميع وتفسير الطريقة عند بدء التشغيل.تشير العلامة
Pإلى أنّ الطريقة هي طريقة يتم استدعاؤها بعد بدء التشغيل.يشير أحد الصفوف المتوفّر في هذا الملف إلى أنّه يتم استخدامه أثناء بدء التشغيل ويجب تخصيصه مسبقًا في الذاكرة المؤقتة لتجنُّب تكلفة تحميل الصف.
آلية العمل
- يمكن للمكتبات تحديد هذه القواعد التي سيتم تضمينها في عناصر AAR. عند إنشاء تطبيق يتضمّن هذه العناصر، يتم دمج هذه القواعد معًا واستخدام القواعد المدمجة لإنشاء ملف ثنائي مضغوط خاص بالتطبيق في ART. ويمكن أن يستفيد ART من هذا الملف عند تثبيت التطبيق على الأجهزة من أجل تجميع مجموعة فرعية محدّدة من التطبيق مسبقًا لتحسين أداء التطبيق، وخاصةً عند تشغيله لأول مرة. يُرجى العِلم أنّ هذا الإجراء لن يؤثر في التطبيقات التي يمكن تصحيح أخطائها.
الإصدار 1.0.0-beta08
2 حزيران (يونيو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta08. يتضمّن الإصدار 1.0.0-beta08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتم استبدال تعداد
NestedScrollSourceبفئة مضمّنة. (Ie321b، b/187055290) - تمت إعادة تسمية
FocusManager.clearFocus(forcedClear = true)إلىFocusManager.clearFocus(force = true)(Ia0c41) - تمت إعادة تصميم استخدامات التعداد لتضمين الفئات المضمّنة لتجنُّب المشاكل المتعلّقة بعبارات when الشاملة عند إضافة قيم تعداد جديدة. (I2b5eb)
- إزالة
@ExperimentalComposeUiApiمنPopupProperties(I01fa6) - تم تغيير
PointerTypeمن تعداد إلى فئة مضمّنة (If5058) - لم تعُد خصائص ContentDescription وText الدلالية قيمًا فردية، بل أصبحت قوائم. يتيح ذلك دمجها كما هي بدلاً من ربطها. قدّمنا أيضًا واجهات برمجة تطبيقات أفضل للاختبار من أجل الاستفادة من هذه التغييرات (Ica6bf وb/184825850).
- تم إيقاف
Modifier.focusModifier()نهائيًا واستبداله بـModifier.focusTarget()(I6c860) - لم يعُد يتم تضمين الدالتَين
Modifier.onSizeChanged()وModifier.onGloballyPositioned()(I727f6، b/186109675) - يتم استبدال تعداد
KeyboardTypeبفئة مضمّنة. (I73045، b/187055290) - تم استبدال التعداد
FocusStateبواجهةFocusState(Iccc1a، b/187055290) - تم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
- يتم تحويل
PlaceholderVerticalAlignإلى فئة مضمّنة. (If6290) - أصبح TextUnitType فئة مضمّنة الآن. (I4cba9)
- أصبحت الدوال
AnnotatedString.withAnnotationتابعة لواجهة برمجة التطبيقات ExperimentalTextApi بدلاً من ExperimentalComposeApi. (I0cd0a)- أصبحت دالة إنشاء TextUnit التي تتضمّن TextUnitType تابعة لواجهة برمجة التطبيقات ExperimentalTextApi بدلاً من ExperimentalComposeApi.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تم تقديمه في الإصدار التجريبي 07 والذي كان يؤدي إلى عرض عناصر LazyColumn/Row بشكل جزئي بعد التمرير (I8c9ac، b/188566058)
- سيتم الآن استهلاك تغيير الموضع تلقائيًا في
detectDragGesuresوdetectVerticalGesturesوdetectHorizontalGestures، ولن يكون عليك استدعاء change.consumePositionChange في عمليات إعادة الاستدعاء onDrag (I42fc4 وb/185096350 وb/187320697). - تم إصلاح LayoutModifiers التي توفّر خطوط المحاذاة. تم إصلاح خطأ كان يتسبّب في عدم إعادة قياس الوالد عند تغيير خطوط محاذاة الأطفال. (I4401f، b/174315652)
- تم تغيير
Modifier.onGloballyPositioned()للإبلاغ عن إحداثيات أداة التعديل هذه في سلسلة أدوات التعديل، وليس إحداثيات التصميم بعد تطبيق جميع أدوات التعديل. وهذا يعني أنّ ترتيب المعدِّلات يؤثّر الآن في الإحداثيات التي سيتم تسجيلها. (Ieb67d، b/177926591)
الإصدار 1.0.0-beta07
18 أيار (مايو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta07. يتضمّن الإصدار 1.0.0-beta07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة
ViewRootForInspectorلاستخدامها في "أداة الفحص" (Ib70df) - يتيح
SubcomposeLayoutStateالآن ضبط عدد الخانات القابلة لإعادة الاستخدام. سيحتفظ التصميم بما يصل إلى عدد خانات العرض هذا نشطًا بدلاً من التخلص منها لإعادة استخدام الخانة في المرة التالية التي نحتاج فيها إلى خانة جديدة (Ieb981). - تم استبدال تعداد KeyEventType بفئة مضمّنة. (Id670a، b/187055290)
- يتم استبدال تعداد
FocusDirectionبفئة مضمّنة. (Ib6d03، b/187055290، b/184086802) - تتيح هذه السمة إمكانية نقل حالة SubcomposeLayout، ما يسمح بتجهيز المحتوى مسبقًا في slotId مطلوب، ما يؤدي إلى تسريع عملية القياس التالية، لأنّه عند محاولة إنشاء تركيبة فرعية باستخدام slotId المحدّد في المرة التالية، لن تكون هناك حاجة إلى إنشاء تركيبة. (I42580، b/184940225)
- إضافة أداة معالجة اختيار المقاطع (Iff80d، b/183408447)
- تمت إزالة واجهات برمجة التطبيقات غير المستخدَمة ذات الصلة بتوافق LayoutInspector. (I2ac78)
إصلاح الأخطاء
- سيحتفظ العنصران LazyColumn/Row الآن بما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (غير مُتوقّفَين) حتى عند إيقاف التمرير. يتيح ذلك للمكوّن إعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد، ما يؤدي إلى تحسين أداء التمرير. (Ie5555)
- سيتم تطبيق
TextGeomerticTransformوTextDecorationعلىAnnotatedStringعلى النحو المحدّد. (I61900، b/184760917)
الإصدار 1.0.0-beta06
5 أيار (مايو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta06. يتضمّن الإصدار 1.0.0-beta06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- حلّ التعارض مع إيماءة التنقّل (I1145e)
- لم يعُد
@ComposeCompilerApi@RequiresOptIn(Iab690) - تمت إضافة واجهات برمجة تطبيقات تسهيل الاستخدام CollectionInfo وCollectionItemInfo التي تتيح وضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (Id54ef، b/180479017)
- تمت إضافة
SemanticsActions.ScrollToIndexلتمرير قائمة تتضمّن عناصر مفهرسة إلى العنصر الذي يتضمّن فهرسًا معيّنًا، وSemanticsProperties.IndexForKeyللحصول على فهرس عنصر في قائمة تتضمّن عناصر ذات مفاتيح. يتم تنفيذ كلا الإجرائين من خلال LazyList.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndexالتي تنقل قائمة إلى الفهرس المحدّد، وSemanticsNodeInteraction.performScrollToKeyالتي تنقل قائمة إلى العنصر الذي يتضمّن المفتاح المحدّد. (I4fe63، b/178483889، b/161584524)
- تمت إضافة
- تمت إضافة ownerViewId إلى GraphicLayerInfo (I19f62)
- تمت إضافة عمليات تحميل زائدة إلى Font() لتحميل الخطوط من مواد العرض والملفات وFileDescriptor (I5d382)
- تمت إضافة واجهة برمجة تطبيقات تسهيل الاستخدام
errorالتي تتيح وضع علامة على عقدة تحتوي على إدخال غير صالح (I12997، b/180584804، b/182142737) - تمت إضافة
Font()عمليات تحميل زائدة لتحميل الخطوط من مواد العرض والملفات وFileDescriptor (I43007) - إتاحة حفظ AnnotatedString في
TextFieldValue.Saverتمت إضافة الدالتَين المساعدتَينaddTtsAnnotationوwithAnnotation إلىAnnotatedString.Builder(I8cbdc، b/178446304) - إضافة دالة إنشاء TextUnit
TextUnit(value: Float, type: TextUnitType)(I7ecce، b/178446304)
الإصدار 1.0.0-beta05
21 أبريل 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta05. يتضمّن الإصدار 1.0.0-beta05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة
FocusManager.moveFocus(In)وFocusManager.moveFocus(Out)التجريبيتين (Ic5534 وb/183746743) - تمت إضافة واجهة برمجة التطبيقات التجريبية
performTextInputSelection(I2dcbb، b/178510628) - تم إيقاف واجهة
InputEventCallbackنهائيًا. لم يكن من الممكن استخدام الواجهة في أي واجهة برمجة تطبيقات عامة، ولم يتم استخدامها في الرمز البرمجي. (I34a02، b/184003208) - الدالة
TextLayoutResult/createTextLayoutResultالمتوقفة وهي دالة عامة غير مستخدَمة تمت إضافتها لأغراض الاختبار. ولا تنفّذ الدالة أي إجراء قابل للاستخدام مع واجهات برمجة التطبيقات الخاصة بنصوص Compose. تم إيقاف هذه الوظيفة نهائيًا وستتم إزالتها لاحقًا. (I80413)
إصلاح الأخطاء
- تم إصلاح إجراءات التمرير الخاصة بإمكانية الوصول في
ACTION_SCROLL_FORWARDوACTION_SCROLL_BACKWARDوaccessibilityActionScrollLeftوaccessibilityActionScrollUpوaccessibilityActionScrollRightوaccessibilityActionScrollDown. بدلاً من التمرير إلى نهاية المحتوى القابل للتمرير، سيتم الآن التمرير بمقدار شاشة واحدة في الاتجاه المحدّد. (Ieccb0) - أصبحت ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع Android 12 (I6f9de، b/184718994)
الإصدار 1.0.0-beta04
7 نيسان (أبريل) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta04. يتضمّن الإصدار 1.0.0-beta04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أعِد تسمية
hideSoftwareKeyboardوshowSoftwareKeyboardعلىSoftwareKeyboardControllerإلىhide()وshow()على التوالي.- توفير واجهة CompositionLocal الكاملة لـ LocalSoftwareKeyboardController، ما يسمح بضبطها (مفيد بشكل خاص في الاختبارات) (I579a6)
- تمت إضافة واجهة برمجة التطبيقات LiveRegion التي تسهّل استخدام التطبيق. إذا تم وضع علامة على العقدة كمنطقة مباشرة، ستُرسل خدمات تسهيل الاستخدام تلقائيًا إشعارًا إلى المستخدم بشأن التغييرات التي تم إجراؤها عليها (Idcf6f، b/172590946).
- تم تقديم TextOverflow.Visible. (Ic8f89)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى تحديد موضع عناصر
LazyColumn/LazyRowبشكل غير صحيح على الحواف بعد الإرسال السريع (Ie4d13، b/183877420) - تزيل
AndroidViewBindingالآن بشكل صحيح الأجزاء التي تم توسيعها من خلالFragmentContainerViewعند إزالةAndroidViewBindingمن التسلسل الهرمي لـ Compose. (Ib0248، b/179915946) - تعمل السمة
AndroidViewBindingالآن على تضمين الأجزاء التي تم توسيعها من خلالFragmentContainerViewبشكل صحيح عندما يكونComposeViewضِمنFragment، ما يؤدي إلى حل المشاكل المتعلّقة بحفظ حالة هذه الأجزاء واستعادتها. (I70eb0، b/179915946) - تعتمد Compose ViewBinding الآن على
Fragment
1.3.2وتعرض الآن باستمرار الأجزاء التي تم تضخيمها من خلالFragmentContainerViewبعد تغييرات الإعداد. (I0743d، b/179915946)
الإصدار 1.0.0-beta03
24 مارس 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta03. يتضمّن الإصدار 1.0.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- التحقّق المؤجّل من التبعيات في ViewTree الخاصة بـ ComposeView (I8dbbf، b/182466548)
- تمت إضافة المَعلمتَين الاختياريتَين
startX/endXوstartY/endYإلى الدوالswipeUp/swipeDown/swipeLeft/swipeRightفيGestureScope. (I49e2d، b/182063305)
الإصدار 1.0.0-beta02
10 مارس 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta02. يتضمّن الإصدار 1.0.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053) - تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053) - تمت إزالة
SemanticsMatcherالتالية:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)-
hasBottomPosition(bottom, tolerance)(If16bd)
- تم وضع علامة
SemanticsMatchersعلى ما يلي باعتباره @ExperimentalTestApi:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- تمت إضافة
SemanticsMatchers التالية:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(I2f502)
إصلاح الأخطاء
- فرض قيود على الاستخدام العام لواجهات برمجة التطبيقات التجريبية (I6aa29، b/174531520)
androidx.compose.ui:uiلم يعُد يعتمد على AppCompat أو Fragment. إذا كنت تستخدم ComposeView في تطبيقك، وكنت تستخدم Fragment و/أو AppCompat، تأكَّد من استخدام AppCompat 1.3+ أو Fragment 1.3+، فهذه الإصدارات مطلوبة لضبط مالكي مراحل النشاط والحالة المحفوظة اللازمين لـ ComposeView بشكل صحيح. (I1d6fa، b/161814404)- إصلاح المشكلة في
rememberSaveable { mutableStateOf(0) }عند استخدامه داخل وجهة في Navigation Compose (I1312b، b/180042685، b/180701630) - تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053) - تم إصلاح خطأ NoSuchElementException نادر في
ComposeRootRegistry'stearDownRegistry()(Iddce1)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
هذا هو الإصدار الأول من Compose 1.0.0 Beta.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دالة معالجة onStart إلى
detectDragGestures(I67269، b/179995594) - لم تعُد المعدّلات الخاصة بتحديد الحجم حسب الخصائص التجريبية. (I15744)
- تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy وأصبحت واجهة ممتعة. تم تعديل / تبسيط واجهات برمجة التطبيقات الخاصة بالتصميم لاستخدام MeasurePolicy. (Icab48، b/167662468، b/156751158)
- تم استبدال "
InteractionState" بـ "[Mutable]InteractionSource"- تكون الواجهات مسؤولة عن إصدار أحداث التفاعل وجمعها.
- بدلاً من تمرير
interactionState = remember { InteractionState() }إلى مكوّنات مثلButtonوModifier.clickable()، استخدِمinteractionSource = remember { MutableInteractionSource() }. - بدلاً من:
Interaction.Pressed in interactionState، يجب استخدام دوال الإضافة في InteractionSource، مثل InteractionSource.collectIsPressedAsState(). - بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة سلسلة التفاعلات. اطّلِع على مستندات InteractionSource وأمثلتها للحصول على مزيد من المعلومات.
- (I85965، b/152525426، b/171913923، b/171710801، b/174852378)
- إضافة واجهة AccessibilityMananger وLocalAccessibilityMananger في CompositionLocals (I53520)
- تمت إزالة طرق LayoutCoordinates المتوقّفة نهائيًا، واستخدام الدالة بدلاً من السمة لكل من positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755)
- تم استبدال أسماء الأنواع المستعارة بالأنواع الأساسية:
- "
ColorStop" أصبح الآن "Pair<Float, Color>" - أصبحت
SpanStyleRangeالآن `AnnotatedString.Range - "
ParagraphStyleRange" أصبح الآن "AnnotatedString.Range<ParagraphStyle>" - "
StringAnnotation" أصبح الآن "AnnotatedString.Range<String>" - (I8dd1a)
- "
- تم إنشاء TextInputSession جديد لجلسات الإدخال من مكوّنات النص ذات المستوى المنخفض، مثل CoreTextField. (I8817f، b/177662148)
- تعرض السمة Placeable الآن السمة measuredSize التي تمثّل الحجم الذي تم قياس تنسيق العنصر الفرعي به فعليًا. قد لا يلتزم هذا الحجم بقيود القياس. (Ib2729، b/172560206، b/172338608)
- إضافة معدِّل selectionGroup الذي يتيح وضع علامة على مجموعة من علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
أصبح من الضروري تقديم
defaultFactoryلـcompositionLocalOfوstaticCompositionLocalOfبدلاً من أن يكون اختياريًا.يزيل هذا التغيير خطأ محتملاً في النوع بالنسبة إلى الأنواع غير القابلة للتصغير التي لم يتم توفير أي مصنع تلقائي لها. في السابق، كان هذا الإجراء يؤدي إلى توفير مرجع فارغ لنوع غير قابل للتصغير.
بالنسبة إلى الأنواع التي تقبل القيم الخالية، ننصحك بتوفير
{ null }كإعداد تلقائي للمصنع.لا ننصح باستخدام متغيرات محلية مع أنواع غير قابلة للتصغير إلا إذا كان من الممكن توفير قيمة تلقائية معقولة. إذا لم يكن هناك قيمة تلقائية منطقية، يجب أن تعرض دالة lambda
defaultFactoryاستثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستهلكي اللغة المحلية سيكون لديهم تبعية ضمنية على توفيرها، وهي تبعية لا يفرضها نظام الأنواع. (Ifbd2a)تمت إزالة الطرق المتوقّفة نهائيًا من وحدات واجهة المستخدم (I646f6)
تمت إعادة تسمية مُعدِّلات الحجم. تمت إعادة تسمية Modifier.width/height/size إلى requiredWidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.preferredWidth/preferredHeight/preferredSize إلى width/height/size. (I5b414)
تمت إزالة
Modifier.tapGestureFilter. يمكنك استخدامModifier.pointerInput { detectTapGestures(...) }كبديل. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. الطريقة المقترَحة لتنسيق الاستهلاك الجزئي هي Modifier.nestedScroll. (Ie9c9b)
تم نقل الاتجاه إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)
أصبحت imageResource وvectorResource الآن دالتَين إضافيتَين في فئتَي ImageBitmap وImageVector على التوالي. تم حذف
load{Image,Vector,Font}Resourceدالة. (I89130)تمت إزالة AnimationClockObservable والفئات الفرعية. تمت إزالة AnimatedFloat. (Icde52، b/177457083)
تمت إعادة تسمية Providers إلى CompositionLocalProvider
- لم يعُد منشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة قابلة للإنشاء على المستوى الأعلى بدلاً من دالة قابلة للإنشاء على المستوى الأعلى.
- تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم تحويل ComposableLambda إلى واجهة بدلاً من فئة ملموسة، ولم يعُد يتضمّن مَعلمات أنواع.
- تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة مجرّدة، ولم يعُد يتضمّن مَعلمات النوع.
- تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime
- لم تعُد طريقة الدمج في SnapshotMutationPolicy تجريبية
- تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعُد ذلك ضروريًا.
- تمت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد ضرورية.
- تمت إزالة Composer.collectKeySourceInformation. لم يعُد ذلك ضروريًا.
- تمت إزالة الطرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد ضرورية.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي ولكن ليس التوافق مع المصدر، لذا لن يسبّب مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
تمت إزالة
ComponentActivity.setContent()من compose:ui. استخدِم الرمز منandroidx.activity:activity-compose:1.3.0-alpha01. تمت إزالةviewModel()وLocalViewModelStoreOwnerمن compose:ui. استخدِم تلك الواردة فيandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b)تمت إعادة تصميم Modifier.scrollable. يستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473)
تمت إزالة إمكانية استخدام CustomEvens من PointerInputModifier (I02707، b/175294473)
لم يعُد SnapshotStateObserver تجريبيًا (Id2e6a)
تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)
تمت إزالة longPressGestureFilter وdoubleClickGestureFilter. استخدِم Modifier.pointerInput مع الدوال المساعدة، مثل detectTapGestures (I2fedf وb/175294473).
تمت إزالة واجهة برمجة التطبيقات String.format، وتمت إعادة تصميم الاستخدامات في طرق toString المختلفة لعدم الاستفادة من String.format داخليًا. (Id1290)
إزالة تأكيدات dp (I798d2)
إزالة androidx.compose.runtime:runtime-dispatch (I55feb)
تتحقّق الإجراءات التي يمكن تنفيذها على النص الآن من التركيز تلقائيًا (I13777، b/179648629)
إزالة
runBlockingWithManualClock(I15cdc، b/179664814)يتم الآن تمثيل موضع التمرير في Modifier.verticalScroll()/horizontalScroll() باستخدام أعداد صحيحة (I81298)
تمت إعادة تسمية FlingConfig إلى FlingBehavior، وتتيح الآن تخصيص الصورة المتحركة الخاصة بالتعليق بدلاً من عمليات التلاشي المحدّدة مسبقًا. (I02b86، b/175294473)
تمت إضافة دالة مساعدة مفيدة لضبط الإجراء نفسه لجميع عمليات ردّ الاتصال ImeAction (I63447 وb/179226323)
تمت إزالة معاودة الاتصال SoftwareKeyboardController من جميع حقول النص، وسيتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
لم يعُد يتم استخدام FontSpan وFontWeigthStyleSpan وتمت إزالتهما. (Ie5b56، b/177423444)
أجرينا التغييرات التالية على Material API:
- تمت إضافة المَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
- تمت إعادة ترتيب المَعلمات في BackdropScaffold لتتوافق مع إرشادات واجهة برمجة التطبيقات بشأن المَعلمات المطلوبة التي تسبق المَعلمات الاختيارية.
- تم نقل المَعلمة
iconفي BottomNavigationItem لتصبح بعدselectedوonClick. - تمت إعادة تسمية المَعلمة
alwaysShowLabelsفي BottomNavigationItem إلىalwaysShowLabel. - تمت إعادة تسمية مَعلمات
bodyContentفي بعض المكوّنات إلىcontentفقط. - تمت إعادة ترتيب المَعلمات في
ButtonDefaults.buttonColors(). يُرجى العِلم أنّه بما أنّ نوع المَعلمات لم يتغيّر، لن يتسبّب ذلك في حدوث خطأ في الرمز. يُرجى التأكّد من استخدام مَعلمات مُسمّاة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز بالطريقة نفسها كما كان في السابق. - تمت إضافة المَعلمة
secondaryVariantإلىdarkColors(). يكون هذا اللون عادةً هو نفسهsecondaryفي المظهر الداكن، ولكن تتم إضافته لتحقيق التناسق والمزيد من التخصيص. - تمت إزالة ElevationDefaults وanimateElevation() من مساحة واجهة برمجة التطبيقات العامة لأنّهما لم يكونا مستخدَمَين أو مفيدَين بشكل شائع.
- تمت إعادة تسمية
onValueChangeEndفيSliderإلىonValueChangeFinishedوتم السماح بقيمة فارغة. - تمت إعادة تسمية المَعلمة
textفيSnackbarإلىcontentلضمان الاتساق. - تمت إضافة المَعلمة
contentPaddingإلىDropdownMenuItemللسماح بتخصيص المساحة المتروكة التلقائية، وتمّت إضافةcontentكإضافة علىRowScope. - تمت إعادة تسمية
ModalDrawerLayoutإلىModalDrawer. - تمت إعادة تسمية
BottomDrawerLayoutإلىBottomDrawer. - (I1cc66)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد AnimatedVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملف
<animated-vector>XML كـ AnimatedImageVector وتحريكه باستخدام painterFor (I8ea91) - تمت إضافة واجهة برمجة تطبيقات جديدة محلية باسم LocalSoftwareKeyboardController لتحل محل واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
الإصدار 1.0.0-alpha12
10 شباط (فبراير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha12. يتضمّن الإصدار 1.0.0-alpha12 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمت إزالة الدوال البرمجية القابلة للإنشاء emitView المتوقّفة نهائيًا. (Ifb214)
- يتطلّب Modifier.pointerInput الآن مفاتيح remember للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين pointer input detection المشترك لإنشاء تبعيات جديدة. (I849cd)
- تمت إعادة تسمية CompositionReference إلى CompositionContext (I53fcb)
- تمت إعادة تسمية Bounds إلى DpRect (I4b32a)
- تعديل على الاختبار: ستتحقّق الدالة hasText() من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803)
- تم نقل الدالة البرمجية القابلة للإنشاء viewModel() وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. عليك الآن إضافة عنصر تابع منفصل androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لاستخدامه. (I7a374)
- السماح بإجراء قابل للتصغير في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى String (I0dc82)
- من أجل مطابقة أفضل لاتفاقيات التسمية مع ImageBitmap وImageVector، تم تغيير اسم ImagePainter إلى BitmapPainter ليكون موازيًا لـ VectorPainter. (Iba381، b/174565889)
- تحسين واجهات برمجة التطبيقات لاختبار السلسلة الفرعية مع تضمين السلسلة الفرعية الآن كمعلَمة (Icbe78)
- تمت إضافة
Modifier.focusOrder()يقبل FocusRequester بدون تحديد ترتيب تركيز مخصّص أو تعبير lambda. يكون ذلك مفيدًا عندما نحتاج فقط إلى تحديد مرجع وليس ترتيب تركيز مخصّصًا لعنصر قابل للإنشاء (I4f52a، b/179180978) - تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الحزمة androidx.activity:activity-compose. (Icf416)
- تمت إزالة طريقتَي تفكيك البنية وcopy() من عدة فئات كانتا تُستخدمان فيها نادرًا. (I26702، b/178659281)
- تم نقل النافذة المنبثقة لتكون خاصة بالنظام الأساسي. تمت إعادة تسمية AndroidPopupProperties إلى PopupProperties، وتم نقل
isFocusableإلى المَعلمةfocusableفيPopupProperties(Ieeea5) - تم نقل مربّع الحوار ليكون خاصًا بالنظام الأساسي. تمت إعادة تسمية AndroidDialogProperties إلى DialogProperties. (I4ef69، b/179138130)
- جعل LayoutNode داخليًا (I8a7b1، b/175103944)
- تم استبدال Constraints.enforce بـ Constraints.constrain. (I8b8ea)
- تم إيقاف loadFontResource نهائيًا. يجب استخدام fontResource بدلاً من ذلك. تم إيقاف imageResource وloadImageResource وvectorResource وloadVectorResource نهائيًا. استخدِم painterResource بدلاً من ذلك. (I6b809)
- لأسباب تتعلّق بالأداء، أصبحت دلالات ScrollAxisRange تستخدم الآن تعبيرات lambda تعرض قيمًا من النوع Float بدلاً من قيم Float المباشرة. (If4a35، b/178657186)
- تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في الحقل النصي لتسهيل الاستخدام وطرق الاختبار المقابلة للتحقّق من الدلالات (I8e07a)
- تم جعل OwnerLayer/OwnerScope/OwnerSnapshotObserver داخليًا (I4ffaf، b/175103944)
- تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
- تمت إعادة تسمية IntBounds إلى IntRect، وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
- تم تعديل Snapshot API لتكون أكثر اتساقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات المتاحة للجميع. (Id9e32)
- تمت إضافة إجراءات دلالية للتوسيع والتصغير. إضافة expand وhalfExpand في ModalBottomSheetState (Ib5064)
- تم إيقاف Modifier.dragGestureFilter نهائيًا. يمكنك استخدام
Modifier.pointerInput { detectDragGestures (...)}كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لعمليات السحب على محور واحد (I0ba93، b/175294473). - تمت إعادة تسمية Ambients لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كانت أسماء Ambients في السابق AmbientFoo، وأصبحت أسماء CompositionLocals الآن LocalFoo. (I2d55d)
- تمت الآن إزالة BaseTextField المتوقّف نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
- تم نقل التحديد إلى الأساس. (I7892b)
- على غرار الطريقة التي أزلنا بها سابقًا الدالة البرمجية القابلة للإنشاء
state { 0 }ونشجّع الآن على استخدام دوال مثلremember { mutableStateOf(0) }، سنزيل الدالة البرمجية القابلة للإنشاءsavedInstanceState { 0 }. يجب استخدامrememberSaveable { mutableStateOf(0) }بدلاً من ذلك، وسيتم الحفظ والاستعادة تلقائيًا إذا كان يمكن تخزين النوع المستخدَم داخل MutableState في الحزمة. إذا كنت قد مرّرت سابقًا عنصر حفظ مخصّصًا، عليك الآن استخدام تحميل زائد جديد للدالة rememberSaveable يحتوي على المَعلمةstateSaver. سيكون الاستخدام على النحو التالي:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26، b/177338004) - إضافة دلالات كلمات المرور لتسهيل الاستخدام (I231ce)
- تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدم غير المحددة لتسهيل الاستخدام (I6fe05)
- تم إيقاف الأداتَين
emptyContent()و(@Composable () -> Unit).orEmpty()نهائيًا لأنّهما لم يعودا يحقّقان أي تأثير إيجابي في الأداء أو أي قيمة (I0484d). - لم يعُد
snapshotFlowوwithMutableSnapshotتجريبيَين (I6a45f) - يمكن الآن إغلاق نوافذ إعادة التجميع. ستستمر عمليات إعادة التركيب المغلقة إلى أن تكتمل الروتينات المشتركة الفرعية للتركيب. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينها وبين close. (Ib6d76)
- تمت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وتمت إعادة تسمية AmbientUiSavedStateRegistry إلى AmbientSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
- تمت إعادة تسمية العنصر androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac)
- تم حذف العديد من واجهات برمجة التطبيقات القديمة التي تم إيقافها نهائيًا في حزمة ui. (I2f2dc)
- تم إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكنك الآن العثور على MonotonicFrameClock في compose:runtime، وعلى AndroidUiDispatcher في compose:ui. (Ib5c36)
- لم تعُد فئات Outline.* فئات بيانات (I4879e، b/178001427)
- تمت إزالة
view.captureToImage()بدون أي استبدال. (I7fcd2) - تم تقديم واجهة برمجة التطبيقات ColorMatrix المستخدَمة لتعديل قيم الأحمر والأخضر والأزرق للمحتوى المصدر تمت إعادة تصميم واجهة برمجة التطبيقات ColorFilter لتصبح واجهة وتتطابق مع تنفيذ PathEffect. (Ica1e8)
- إضافة المَعلمة layoutDirection إلى createOutline في Shape يتيح ذلك إنشاء أشكال تراعي اتجاه التنسيق. (I57c20، b/152756983)
- تم إيقاف onImeActionPerformed نهائيًا. استخدِم KeyboardActions بدلاً من ذلك (If0bbd، b/179071523)
- تم تقديم عنصر سياق روتين فرعي
InfiniteAnimationPolicyسيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء اختبارات باستخدامComposeTestRule. (I50ec4، b/151940543) - تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
- تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بإنشاء الخاصية parentCoordinates الجديدة. تقدّم السمة parentCoordinates الآن LayoutCoordinates الخاصة بعنصر التعديل الرئيسي. سيؤدي ذلك إلى توفير حالات استخدام أكثر اكتمالاً للدالتَين onSizeChanged() وonGloballyPositioned() (Idfbfd وb/177926591).
- تم إيقاف tapGestureFilter وdoubleTapGestureFilter وlongPressGestureFilter وpressIndicaitonGestureFilter نهائيًا. استخدِم Modifier.clickable أو Modifier.pointerInput مع الدالة detectTapGestures بدلاً من ذلك. (I6baf9، b/175294473)
- تمت إزالة unregisterProvider من SaveableStateRegistry. بدلاً من ذلك، تعرض الدالة registerProvider() الآن العنصر SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739).
- تمت إعادة تسمية rememberSavedInstanceState() إلى rememberSaveable() ونقلها إلى حزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
- تمت إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة
- إزالة التحميل الزائد المتوقّف نهائيًا لـ SelectionContainer
- (I99c19)
- أصبحت الاختبارات التي يتم فيها استخدام Compose في التسلسلات الهرمية التي تتم إضافتها/إزالتها مباشرةً إلى WindowManager أكثر استقرارًا. (Ie81ed، b/175765614)
- تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم إنشاؤه بشكل تلقائي عند الطلب، ويتم تشغيل Recomposers على مستوى النافذة من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب مؤقتًا، كما يتم إيقاف مؤشرات الصورة المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)
- توفّر السمة Recomposer.runningRecomposers الآن StateFlow العالمي الخاص بـ RecomposerInfo للقراءة فقط، وذلك لمراقبة حالة الإنشاء الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current()، التي تم إيقافها نهائيًا. (If8ebe)
- تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
- تقبل EditCommands السلسلة AnnotatedString. ومع ذلك، هذا التغيير متاح فقط من خلال واجهة برمجة التطبيقات، ولم يتم بعد تنفيذ ميزة تعديل النصوص المتعددة الأنماط. (I4c3ea)
- تمت إزالة "وقت التشغيل" و"المدة". (Ib9bf4، b/177420019)
- تم نقل CompositionData.asTree() وواجهات برمجة التطبيقات ذات الصلة إلى وحدة ui-tooling-data منفصلة وتم تصنيفها على أنّها تجريبية (Ic95b8)
- تمت إعادة تسمية المَعلمات في RounderCornerShape وCutCornerShape وCornerBasedShape من يسار/يمين إلى بداية/نهاية من أجل إتاحة ميزة الانعكاس التلقائي للشكل في اتجاه الكتابة من اليمين إلى اليسار. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يُراد فيها إجراء انعكاس تلقائي. (I61040، b/152756983)
تمت إعادة تصميم واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمترجم Compose لاستخدام واجهة بدلاً من فئة مجردة. لم تعُد الواجهة تستخدم مَعلمة نوع.
هذا تغيير داخلي لا يؤثر في توافق الرمز المصدري، ولكنه تغيير ثنائي يؤدي إلى حدوث خطأ. (I3b922، b/169406779)
إزالة الدالة StringBuilder.deleteAt العامة عن غير قصد (Id6ed9)
إصلاح الأخطاء
- تستضيف الآن ComposeViews التي تم وضعها في تسلسلات هرمية للعرض والتي تكون عناصر فرعية من تركيبة أخرى، تركيبات فرعية من العناصر الأصلية (I92883)
- تم تعديل واجهة برمجة التطبيقات compose's imageFromResource لإعادة استخدام ذاكرة التخزين المؤقت الخاصة برسومات الموارد عند تحميل عناصر ImageBitmap. (If3627، b/178751994)
الإصدار 1.0.0-alpha11
28 يناير 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha11. يتضمّن الإصدار 1.0.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تصميم WithConstraints ليصبح BoxWithConstraints ونقله إلى foundation.layout. (I9420b، b/173387208)
- تم إيقاف Key.DPadUp نهائيًا. استخدِم Key.DirectionUp بدلاً من ذلك. (Iab335، b/177954892)
- ستكون واجهة المالك داخلية من الآن فصاعدًا. (If8e35)
- تمت إضافة واجهة برمجة التطبيقات FocusManager.moveFocus() لنقل التركيز آليًا. (I045cb، b/177681839)
- تغيير PopupPositionProvider لاستخدام إحداثيات نسبية إلى النافذة، وليس إحداثيات عامة إعادة تسمية parentGlobalBounds إلى anchorBounds، وتغيير windowGlobalBounds إلى windowSize: IntSize (I2994a)
- سيتم استبدال "المدة" و"وقت التشغيل" بـ "ملّي ثانية طويلة"، وتزيل هذه الخطوة التبعية لإدخال المؤشر في تلك الفئات. (Ia33b2، b/175142755، b/177420019)
- تمت إضافة AmbientSavedStateRegistryOwner بشكل مشابه لـ AmbientLifecycleOwner وAmbientViewModelStoreOwner الحاليَين (I9a3e8 وb/176756365)
- تم تعديل واجهة برمجة التطبيقات للرسومات المتجهة لتتيح تحليل التلوين المطبَّق على جذر الرسومات المتجهة. (Id9d53، b/177210509)
- تمت إضافة toolType إلى PointerInputChange للتمييز بين الأجهزة (Iac787، b/175142755)
- تمت إعادة تسمية AmbientWindowManager إلى AmbientWindowInfo (I2686a وb/177084714 وb/177084983)
- تم إيقاف طرق الإحداثيات العامة نهائيًا واستبدالها بطرق إحداثيات جديدة مستندة إلى النوافذ. (Iee284)
- تمت إضافة Modifier.toolingGraphicsLayer التي تضيف معدِّلاً لطبقة الرسومات عند تفعيل وضع الفحص. (I315df)
- تم الآن وضع علامة "تجريبي" على FocusRequester.createRefs لأنّه قد يتغيّر. (I2d898، b/177000821)
- تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة @ExperimentalComposeUiApi عليه. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية stateDescriptionRange إلى progressBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange، وhorizontalAccessibilityScrollState إلى horizontalScrollAxisRange، وverticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)
- تمت إزالة PointerInputData وتعديل PointerInputChange لإضافة جميع حقول PointerInputData إليها. تم جعل PointerInputEvent وPointerInputEventData داخليين لأنّهما غير مستخدَمَين في أي واجهة برمجة تطبيقات عامة. (Ifff97، b/175142755)
- تم تعديل تنفيذ GraphicsLayerScope density لإتاحة تحويل وحدات dp إلى وحدات بكسل أولية. (Ied528، b/176819695)
- تم تعديل واجهة برمجة التطبيقات الخاصة بالمصفوفة لتتّبع ترتيب الصفوف الرئيسي وتوفير ثوابت الفهرس للمساعدة في عمليات التحويل بين تمثيلات المصفوفات المختلفة لتتطابق مع منطق التحويل في إطار العمل بين SkMatrix وMatrix4 داخليًا. (I432e6)
- تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f وb/170708374)
- نقل String.fintPrecedingBreak وString.fingFollowingBreak إلى InternalTextApi (I657c4)
- تمت إزالة androidx.compose.ui.util.isSurrogatePair من واجهة برمجة التطبيقات العامة. (Ia9494)
- تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text
- لم يعُد TransformedText فئة بيانات (Ie672a)
- تمت إزالة
data classمن الصفوف التالية:- InlineTextContent
- LocaleList (I605c7)
- لم تعُد الفئات التالية فئات بيانات:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- تغيير VisualTransformation لتصبح واجهة وظيفية (I3bba4)
- تمت إضافة نوع مَعلمة مرجعية للدالة (I5e1bd)
- إضافة حدود معدَّلة إلى InspectorNode (Ice42f)
إصلاح الأخطاء
- تم إيقاف onCommit وonDispose وonActive نهائيًا لصالح واجهتَي برمجة التطبيقات SideEffect وDisposableEffect (If760e)
تغييرات على دوال المصنع الخاصة بـ Font/FontFamily/Typeface
- تمت إضافة دوال مصنع تبدأ بحرف لاتيني كبير
- تم إيقاف دوال المصنع السابقة التي تبدأ بحرف صغير
- تعرض دوال المصنع الجديدة FontFamily بدلاً من الفئات الفرعية
- إخفاء أدوات إنشاء الفئات الفرعية، حتى لا يمكن إنشاؤها إلا من خلال دوال المصنع
- تمت إعادة تسمية Font.asFontFamily إلى Font.toFontFamily (I42aa7)
تم تقديم
ComposeContentTestRule، الذي يوسّع نطاقComposeTestRuleويحدّدsetContent، والذي تمت إزالته منComposeTestRule. تمت إضافة طريقة مصنعcreateEmptyComposeRule()تعرضComposeTestRuleولا تشغّل نشاطًا لك. استخدِم هذه السمة عندما تريد تشغيل نشاطك أثناء الاختبار، على سبيل المثال، باستخدامActivityScenario.launch(I9d782، b/174472899)أصبح اسم animateAsState الآن animateFooAsState، حيث Foo هو نوع المتغير الذي يتم تحريكه، مثل Float وDp وOffset وما إلى ذلك (Ie7e25)
تمت إضافة مَعلمة وصف المحتوى إلى "الصورة" و"الرمز". يُستخدَم لتوفير وصف للخدمات المخصّصة لتسهيل الاستخدام (I2ac4c)
أزِل displaySize لأنّه يجب تجنُّبه. من الأفضل عادةً استخدام حجم onRoot() أو حجم النافذة على الأقل. (I62db4)
كانت الدالة OnSizeChanged تعرض حجم محتوى التنسيق. ويعرض الآن الحجم في موضعه ضمن سلسلة المعدِّلات. (I36b78، b/177562900)
تم إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائد نهائيًا، وتمت إعادة تسميتها إلى ComposeNode. تتطابق واجهات برمجة التطبيقات، ولكنّها تحمل اسمًا مختلفًا من أجل اتّباع اصطلاحات التسمية في Compose (I4137b).
يقبل TextFieldValue السلسلة AnnotatedString. ومع ذلك، هذا التغيير متاح فقط من خلال واجهة برمجة التطبيقات، ولم يتم بعد تنفيذ ميزة تعديل النصوص المتعددة الأنماط.
- تمّت إزالة
initialمن مَعلمات الدالة الإنشائية EditingBuffer. (I326d5)
- تمّت إزالة
تم الآن إيقاف invalidate وcompositionReference() نهائيًا واستبدالهما بـ currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)
تم تغيير AnnotatedString ليتم توسيعه من kotlin.CharSequence. لذلك، أصبحت length وsubSequence دالتَين خاصتَين بالكائنات، وتمت إزالة دوال الإضافة. (Iaf429)
يحلّ RememberObserver محل CompositionLifecycleObserver، وأصبح CompositionLifecycleObserver نهائيًا الآن.
RememberObserverهو بديل عنCompositionLifecycleObserverمع دلالات معدَّلة وطرق تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكّرها مرة واحدة فقط، وهو ما يظل يُعدّ أفضل ممارسة. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاءonRememberedلكل مرجع، بينما يتم استدعاءonEnterمرة واحدة فقط. تم استدعاءonEnterعدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثلWithConstraintsوScaffold، ما جعل عملية الاستدعاء الفرديonEnterغير موثوقة وتمت إزالتها فيRememberObserver.تضيف
RememberObserverالدالةonAbandonedالتي يتم استدعاؤها إذا تم عرض مثيلRememberObserverمن معاودة الاتصال التي تم تمريرها إلىrememberولكن لم يتم تذكّره في حالة التركيب، وبالتالي لن يتم استدعاءonRememberedأبدًا. يمكن أن يحدث ذلك إذا أنهى استثناء عملية الإنشاء قبل اكتمالها أو إذا تم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تنتج عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كان مثيلRememberObserverالذي يلي اقتراح المرجع الفردي أعلاه يتتبّع مرجعًا خارجيًا، يشير كل منonForgottenوonAbandonedإلى أنّه لم يعُد هناك حاجة إلى المرجع. إذا كان العنصر يتتبّع العمل الذي بدأ أو الموارد المخصّصة فيonRemembered، يمكن تجاهلonAbandonedلأنّه لن يتم استدعاؤه إذا تم استدعاءonRemembered. (I02c36)تم إيقاف العمليات الحسابية نهائيًا بين وحدتَي TextUnit أو أكثر. تم إيقاف الدالتَين TextUnit.Sp وTextUnit.Em نهائيًا، ويُفضَّل استخدام دوال الإضافة، مثل Int.sp وInt.em. (I48369)
أصبحت الموارد في المكتبات التي لا تتضمّن موارد عامة معرَّفة بوضوح (مثل public.xml) خاصة بشكل تلقائي. (Ia1dcc، b/170882230)
تم إيقاف ScrollableColumn/Row نهائيًا. يكون استخدام ScrollableColumn أقل كفاءةً مقارنةً بـ LazyColumn عندما يكون لديك محتوى كبير قابل للتمرير، لأنّه باستخدام LazyColumn يمكننا فقط إنشاء/قياس/رسم العناصر المرئية. لمنع المستخدمين من اتّباع الطريقة غير الفعّالة، قرّرنا إيقاف ScrollableColumn وScrollableRow نهائيًا وتشجيع استخدام LazyColumn وLazyRow بدلاً منهما. سيظل بإمكان المستخدمين اختيار عدم استخدام السلوك الكسول واستخدام المعدِّلات مباشرةً على النحو التالي: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b، b/170468083)
طريقة المصنع
items(count: Int)الجديدة لنطاق LazyColumn/LazyRow/LazyVerticalGrid أصبحتitems(items: List)وitemsIndexed(items: List)الآن دالتَين إضافيتَين، لذا عليك استيرادهما يدويًا عند استخدامهما. عمليات تحميل زائدة جديدة للإضافات في المصفوفات:items(items: Array)وitemsIndexed(Array)(I803fc، b/175562574)يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction
- يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
استخدام TestCoroutineDispatcher في الاختبار (I532b6)
تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)
تم إيقاف عملية النقل المستندة إلى TransitionDefinition نهائيًا (I0ac57)
تمت إزالة TextUnitType.Inherit. يُرجى استخدام TextUnitType.Unspecified بدلاً من ذلك. (I9ff64)
الإصدار 1.0.0-alpha10
13 كانون الثاني (يناير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha10. يتضمّن الإصدار 1.0.0-alpha10 هذه التعديلات.
تغيير قد يؤدي إلى أعطال
تتيح إعادة هيكلة واجهة برمجة التطبيقات الداخلية للمترجم البرمجي تجميع التغييرات في العُقد التي تم إنشاؤها نتيجة التركيب في مرحلة "تطبيق التغييرات" من عملية التركيب، وذلك بعد اكتمال جميع دوال
@Composable.هذا تغيير سلوكي غير متوافق مع الإصدارات السابقة وقد يؤثّر في رمز التطبيق، لأنّه لن تعود العُقد متاحة من واجهات برمجة التطبيقات الداخلية والتجريبية إلا بعد تطبيق التغييرات. يمكن عادةً حلّ هذه المشكلة من خلال إحاطة الرمز البرمجي الذي يتضمّن هذه التبعيات بعنصر
SideEffectقابل للإنشاء لتأجيل تنفيذ الرمز البرمجي إلى ما بعد إنشاء العُقد وتهيئتها. (I018da)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة Modifier.focusOrder() التي يمكن استخدامها لتحديد ترتيب مخصّص للتنقّل بين العناصر باستخدام التركيز (I90cf5، b/175899543، b/170155556، b/170155429)
- تمت إزالة استخدام focusObserver المتوقّف نهائيًا، ويجب استخدام onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9، b/175156387)
- تغييرات على EditOperations API
- تمت إعادة تسمية EditOperation إلى EditCommand
- تمت إضافة لاحقة الأمر إلى عمليات التنفيذ المحدّدة لـ EditOperation
- لم تعُد EditCommand فئات بيانات
- تمت إعادة تسمية الدالة EditOperation.process إلى applyTo
- تمت إعادة تسمية InputEventListener إلى InputEventCallback
- (I0a366)
- تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَمة. تم تغيير Size.center() ليصبح سمة. (I973f7)
- سيتمكّن الآن وحدة ui-test من ضبط إنشاء Recomposers لواجهات المستخدم قيد الاختبار (Ibebd8)
- تم تعديل Velocity لتضمين أجزاء مكوّنة وعمليات رياضية. (Ib0447)
- تمت إعادة تسمية
@ExperimentalTestingإلى@ExperimentalTestApiلتكون متوافقة مع التعليقات التوضيحية المشابهة لواجهات برمجة التطبيقات التجريبية (Ia4502 وb/171464963). - تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
- تمت إزالة الفئات غير المستخدَمة DpInverse وDpSquared وDpCubed. (I4d62b)
- تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- أضِف دالة ردّ الاتصال لإرسال إشعار إلى المالك عند تغيير حدود layoutnode. (I72fd1)
- تمت إضافة isSpecified وisUnspecified وuseOrElse إلى الفئات المضمّنة التي تتضمّن الثابت Unspecified. (I93f7b، b/174310811)
توسيع واجهات برمجة التطبيقات [Abstract]ComposeView للسماح بإعادة استخدام طرق العرض المستندة إلى Compose، والتخلص من تركيبها لإعادة إنشائها مرة أخرى لاحقًا إضافة واجهات برمجة تطبيقات لتثبيت Recomposers ونطاقها ضمن النافذة واكتشافها وCompositionReferences لإنشاء تركيبات فرعية
إضافة ViewCompositionStrategy لضبط استراتيجية التخلص من التركيب في [Abstract]ComposeViews، ويكون السلوك التلقائي هو التخلص عند فصل النافذة (I860ab)
تمت إزالة واجهة برمجة التطبيقات العامة Any.identityHashCode() (I025d7)
تمت إزالة واجهة برمجة التطبيقات toStringAsFixed واستبدالها باستخدام String.format مباشرةً. (Iaba6b)
إضافة زر تبديل إلى ملف foundation Strings.kt (I4a5b7 وb/172366489)
نقلت nativeClass إلى وحدة ui وجعلتها داخلية. تم تعديل استخدامات nativeClass في عمليات تنفيذ equals لاستخدام "is MyClass" بدلاً من ذلك. (I4f734)
تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48، b/175160751، b/175160532، b/175077829)
تم تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات بتعديلات Selectable إلى SelectionManager. (I6ff30، b/173215242)
تمت إضافة السمة Outline.bounds للحصول على مستطيل الإحاطة لعمليات تنفيذ مختلفة للمخطط التفصيلي. (I16e74، b/175093504)
تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)
لم يعُد ImeOptions وKeyboardOptions فئة بيانات (I3c898، b/168684531)
التغييرات في واجهة برمجة التطبيقات VisualTransformation
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم يعُد PasswordTransformation فئة بيانات
- نقل OffsetMapping إلى ملف خاص
- (I0bdf3)
تمت إعادة تسمية Position إلى DpOffset وإزالة getDistance() (Ib2dfd)
تم تغيير fun Dp.isFinite() إلى val Dp.isFinite (I50e00)
إصلاح الأخطاء
- تعرض Recomposer الآن Flow لحالتها الحالية، ما يتيح مراقبة نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
- يمكن الآن الوصول إلى nativeKeyEvent من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).
- تم الآن استبدال
animate()بـanimateAsState()، التي تعرضState<T>بدلاً منT. يسمح ذلك بتحسين الأداء، إذ يمكن تضييق نطاق الإبطال إلى المكان الذي تتم فيه قراءة قيمة الحالة. (Ib179e) - إضافة واجهة برمجة التطبيقات الخاصة بدور Semantics وإضافة الدور كمعلَمة إلى SemanticsModifier القابل للنقر والاختيار والتبديل تم تغيير Modifier.progressSemantics ليتمكّن شريط التمرير أيضًا من استخدامه. (I216cd)
- واجهة برمجة تطبيقات جديدة تستند إلى إجراءات فرعية متزامنة
Animatableتضمن الاستبعاد المتبادل بين الرسوم المتحركة.- DecayAnimationSpec جديد يتيح استخدام الحركة المتلاشية المتعددة الأبعاد
- (I820f2، b/168014930)
الإصدار 1.0.0-alpha09
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت الآن إزالة KeyEvent.Alt المتوقّف نهائيًا. استخدِم KeyEvent.isAltPressed بدلاً من ذلك. (Idd695)
- تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter نهائيًا. يُرجى استخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً منهما (Idbf1b وb/175156384).
- تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 وb/168511863 وb/168511484).
- تمت إعادة تسمية واجهات برمجة التطبيقات الخاصة بتعليق إدخال المؤشر، HandlePointerInputScope إلى AwaitPointerEventScope و handlePointerInput() إلى awaitPointerEventScope(). (Idf0a1، b/175142755)
- أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الموافقة على استخدامها (I0a1ec)
- إضافة عبارات تفكيك لإنشاء مثيلات FocuSRequester (I35d84 وb/174817008)
- تمت إعادة تسمية accessibilityLabel إلى contentDescription. تمت إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)
- تمت إزالة الأحداث المخصّصة من واجهة برمجة التطبيقات لتعليق إدخال المؤشر (Ia54d5، b/175142755)
- تم تقديم العديد من الوظائف الجديدة في SelectionRegistrar، كما تمّت إعادة تسمية onPositionChange إلى notifyPositionChange. (Ifbaf7)
- المزيد من أعضاء LayoutNode الذين وضعنا علامة عليهم كأعضاء داخليين (I443c6)
- تم تقديم LayoutInfo لاستخدامه في الأدوات والاختبار (I9b190)
- AndroidOwner made internal (Ibcad0, b/170296980)
- إزالة التعليق التوضيحي ExperimentalPointerInput (Ia7a24)
- تمت إضافة نظام التمرير المتداخل. راجِع Modifier.nestedScroll للحصول على مزيد من التفاصيل (I36e15 وb/162408885).
- تمت إتاحة subcomposeInto(LayoutNode) للاستخدام الداخلي فقط (Id724a)
تم تغيير واجهة
Applierلتسهيل إنشاء الأشجار من الأسفل إلى الأعلى بدلاً من الأعلى إلى الأسفل.تمت إعادة تسمية الطريقة
insert()إلىinsertTopDown().تمت إضافة طريقة جديدة، وهي
insertBottomUp().يُدرج التطبيق إما عقدًا في الشجرة التي يعدّلها باستخدام
insertTopDown()أوinsertBottomUp()، وذلك حسب الأداء الأفضل.بعض البنى الشجرية، مثل
LayoutNodeوView، تكون أكثر فعالية عند إنشائها من الأسفل إلى الأعلى مقارنةً بإنشائها من الأعلى إلى الأسفل. قبل هذا التغيير، كان يجب توفير مجموعة من عمليات الإدراج لتنفيذ عملية الإنشاء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كل أداة تطبيق تحتاج إلى عملية الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير، يتم استخدامApplierلإلغاءinsertBottomUp()من أجل إنشاء بنية شجرية من الأسفل إلى الأعلى، ويتم استخدامinsertTopDown()لإنشاء البنية الشجرية من الأعلى إلى الأسفل. (Icbdc2)تمت إضافة السمتَين dismissOnBackPress وdismissOnClickOutside إلى AndroidDialogProperties. تسمح هذه السياسة بضبط وقت استدعاء تعبير lambda الخاص بـ onDismissRequest في مربّع الحوار. (If5e17)
تمت إضافة واجهة برمجة التطبيقات painterResource للتعامل مع تحميل كائنات Painter بشكل مبهم من تنسيقات مواد العرض النقطية (مثل ملفات PNG) أو VectorDrawables. لم يعُد على المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم استدعاء هذه الطريقة للحصول على عنصر Painter لاستخدامه في عناصر Image القابلة للإنشاء أو معدّلات Painter. (I2c703، b/173818471)
تمّت إضافة Modifier.clearAndSetSemantics لمحو دلالات العناصر الفرعية وتحديد دلالات جديدة. (I277ca)
تم نقل ContentDrawScope إلى وحدة ui-graphics ليكون مع DrawScope. (Iee043، b/173832789)
تم تقديم واجهة برمجة تطبيقات الرسومات PathEffect لتوفير أنماط مختلفة للأشكال التي تم رسم خطوطها. تم إيقاف استخدام NativePathEffect نهائيًا، ويُفضَّل استخدام التنفيذ المتوقّع/الفعلي لـ PathEffect. (I5e976، b/171072166)
تمت إضافة واجهات IdlingResource إلى Compose، وذلك كإصدار متوافق مع Compose من مصادر عدم النشاط في Espresso. يمكن تسجيلها وإلغاء تسجيلها من خلال ComposeTestRule (I433f3).
إزالة عملية التسجيل (أو إلغاء التسجيل) على مستوى العالم لـ ComposeIdlingResource، وإزالة عملية التسجيل (أو إلغاء التسجيل) على مستوى العالم للساعات في ComposeIdlingResource (I32660)
إصلاح الأخطاء
- تعرض دوال Lambda في معدّلات الإزاحة الآن IntOffset بدلاً من Float. (Ic9ee5 وb/174137212 وb/174146755)
تمت إزالة SlotTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. كانت هذه السمة تحمل الاسم InternalComposeAPI سابقًا. أصبحت الآن داخلية في وحدة الإنشاء.
تمت إضافة CompositionData وCompositionGroup كبديل لواجهة برمجة التطبيقات ui-tooling لاستخدامها في استخراج معلومات التركيب. هذه الحقول عامة ولكنها غير مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling لأنّها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling (I31a9c).
تمت إعادة تصميم ShaderBrush لإنشاء مثيل تظليل بشكل غير مباشر عند توفّر معلومات تحديد الحجم لبيئة الرسم. ويكون ذلك مفيدًا لتحديد تدرّجات لونية تشغل حدود الرسم الكاملة لعنصر قابل للإنشاء في وقت الإنشاء، بدون الحاجة إلى تنفيذ عمليات مخصّصة في DrawModifier.
تم إيقاف واجهات برمجة التطبيقات الخاصة بإنشاء دالة التدرّج اللوني واستبدالها بطُرق المصنع في عنصر Gradient. (I511fc، b/173066799)
إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed نهائيًا استخدام LazyColumn وLazyRow بدلاً من ذلك (I5b48c)
إيقاف BuildCompat.isAtLeastR نهائيًا (Idb37e)
تمت إضافة دالة المصنع buildAnnotatedString لإنشاء AnnotatedString. تم إيقاف الدالة الإنشائية annotatedString نهائيًا. (Idfe0b)
تمت إزالة طرق الإضافة في Float وDouble لتحويل القيم إلى وحدات راديان. تم نقلها لتصبح دالة خاصة ضمن عملية التنفيذ PathParser التي كانت المكان الوحيد الذي تم استخدامها فيه (I25f52)
الإصدار 1.0.0-alpha08
2 ديسمبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha08. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة إجراء "رفض" الترميز الدلالي (I2b706)
- تم نقل واجهات برمجة التطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifierDeprecated.kt لتضمين أسماء الأنواع المستعارة وطُرق المساعدة لتسهيل عملية نقل البيانات من واجهات برمجة التطبيقات المتوقفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
- تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer وتم أيضًا تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا للملاحظات الواردة بشأن واجهة برمجة التطبيقات. (I0bd29، b/173834241)
- تمت إضافة الطريقتَين الجديدتَين placeable.placeWithLayer() وplaceable.placeRelativeWithLayer() اللتَين تسمحان بتصميمات مخصّصة ومعدّلات تصميم لوضع عنصر فرعي مع تقديم طبقة رسومات للرسم. بما أنّنا نستطيع أولاً تحسين عمليات إعادة الرسم، فعندما نحتاج إلى نقل عنصر فرعي، لن نضطر إلى إعادة رسم محتواه. ثانيًا، يمكننا تطبيق عمليات تحويل الرسم على عنصر فرعي (Ibd8f6 وb/170296989 وb/171493718 وb/173030831).
- تمت إزالة
<T>من تعريف SubcomposeLayout. يمكنك استخدامها بدون تحديد نوع الآن. (Ib60c8) - تمت إضافة واجهات برمجة التطبيقات Modifier.scale/rotate
كأدوات مساعدة في drawLayer.
- تمت إعادة تسمية "
Modifier.drawOpacity" إلى "Modifier.alpha" - تمت إعادة تسمية
Modifier.drawShadowإلىModifier.shadow(I264ca، b/173208140)
- تمت إعادة تسمية "
- تم جعل حقلَي وقت التشغيل والموضع في PointerInputData غير قابلَين للتصغير. (Id468a)
- تضبط السمة MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات التي لا تستخدم Material أن تستخدم AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في التحديد. (I1e6f4، b/139320372، b/139320907)
- تمت إضافة WindowManager.isWindowFocused للتحقّق ممّا إذا كانت نافذة المضيف في المقدّمة، وWindowFocusObserver الذي يوفّر معاودة الاتصال onWindowFocusChanged. (I53b2a، b/170932874)
- تم تعديل واجهة برمجة التطبيقات TransformOrigin
لتضمين بناء جملة تفكيك من أجل عرض
pivotFractionXوpivotFractionYكـcomponent1وcomponent2(If43c4، b/173586560) - تمت إضافة فحص lint لأسماء مَعلمات lambda القابلة للإنشاء وموضعها، وذلك للتحقّق من التوافق مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم
childrenكاسم لدالة lambda اللاحقة إلىcontent، وذلك وفقًا لفحص lint والإرشادات. (Iec48e) - تمت إضافة واجهة برمجة تطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث مفتاح. (I50ed9)
- تمت إضافة
Modifier.drawLayer()تحميل زائد جديد. تتلقّى هذه الدالة كتلة lambda في GraphicsLayerScope جديدة تحدّد فيها مَعلمات الطبقة بطريقة تتيح تخطّي إعادة التركيب وإعادة التنسيق عند حدوث تغيير في الحالة. أصبحت DrawLayerModifier الآن داخلية استعدادًا لنقل منطقها إلى طريقة placeable.placeWithLayer() في LayoutModifier (I15e9f، b/173030831) - تم إيقاف Ambients القديمة التي تحمل الاسم
Ambientكلاحقة، واستبدالها بخصائص جديدة تبدأ بـ Ambient، وذلك وفقًا لإرشادات Ambients الأخرى وواجهة برمجة تطبيقات Compose. (I33440) - تم نقل
androidx.compose.ui.text.Typefaceإلىandroidx.compose.ui.text.font.Typeface(Ic2b81) - تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants إلى mergeDescendants. (Ib6250)
- أداة رصد جديدة لإيماءات السحب تعلّق واجهة برمجة التطبيقات لإدخال المؤشر، بما في ذلك قفل الاتجاه. (Icef25)
- تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder ليكون فئة داخلية من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة نوع الاسم المستعار VectorAssetBuilder للربط بـ ImageVector.Builder من أجل التوافق. (Icfdc8)
- تمت إعادة تسمية ImageAsset والطُرق ذات الصلة إلى ImageBitmap. (Ia2d99)
- إضافة المَعلمة zIndex إلى الدالة place() في PlacementScope لكي تعمل الدالة Modifier.zIndex() الآن كـ LayoutModifier ويمكن لأي تخطيط مخصّص ضبط zIndexes للعناصر التابعة مباشرةً في كتلة موضع الإعلان (I711f7، b/171493718)
- نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c)
- إيقاف الدالة place(Offset) والدالة placeRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع إزاحات الأعداد الصحيحة بدلاً من ذلك (I4c5e7).
- تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا في السابق: تمت إزالة Modifier.onPositioned، ويمكنك استخدام Modifier.onGloballyPositioned. تمت إزالة Modifier.onDraw، استخدِم Modifier.onDrawBehind. تمت إزالة Modifier.plus، يُرجى استخدام Modifier.then. تمت إزالة Color.Unset، يُرجى استخدام Color.Unspecified. تمت إزالة فئة PxBounds، يُرجى استخدام Rect بدلاً منها. (Ie9d02، b/172562222)
- تم تعديل واجهة "المحاذاة" وإتاحتها للاستخدام. (I46a07، b/172311734)
- تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وعرض مؤشر الضغط باستخدام ميزة تعليق المؤشر الجديدة. تمت إضافة بعض الأدوات المساعدة أيضًا، ما يسهّل على المطوّرين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
- تمت إعادة تسمية
idإلىlayoutIdفيLayoutIdParentData. تمت إعادة تسميةMeasurable.idإلىMeasurable.layoutId. (Iadbcb، b/172449643) - أداة رصد جديدة للإيماءات المتعددة اللمس، بما في ذلك أدوات مساعدة لرصد التدوير والتكبير والتصغير والتحريك (Ic459d)
- تم تقديم واجهات برمجة التطبيقات SweepGradientShader وSweepGradientBrush. (Ia22c1)
- أصبح التحكّم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521)
إضافة واجهات برمجة تطبيقات تستند إلى إجراءات روتينية متزامنة للتمرير:
تضيف هذه الحزمة LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهات برمجة تطبيقات منخفضة المستوى للتحكّم في التمرير. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكّم في التمرير الذي ينتظر إلى أن ينتهي التمرير قبل الرجوع. (Ie5642)
تمت إضافة Modifier.focusable في foundation. يمكنك استخدام هذا الخيار لإضافة سلوك قابل للتركيز إلى أحد المكوّنات، مع توفير الدلالات وإمكانية الوصول الصحيحة. (I41eb9، b/152525426، b/162865824)
توفير عمليات تنفيذ تلقائية للطُرق والسمات في AnimationClockTestRule التي يمكن تفويضها إلى
clock(I7ea3d، b/173399709)يمكن الآن أن تقبل AndroidComposeTestRule مشغّلات الأنشطة المخصّصة (Ib8288 وb/153623653 وb/154135019).
تم إيقاف TextLayoutResult.getLineVisibleEnd نهائيًا. بصفتها بديلاً، تتضمّن الدالة TextLayoutResult.getLineEnd الآن المَعلمة الجديدة visibleEnd. (I73282)
تعديل على TextFieldValue API
- تم ضبط TextFieldValue.composition على القراءة فقط
- تم طرح استثناء تمت إزالته لنطاق التحديد غير الصالح (I4a675، b/172239032)
إتاحة TtsAnnotation لمحرّك تحويل النص إلى كلام (I54cc6)
واجهات برمجة تطبيقات جديدة لتشغيل الرسوم المتحركة في إجراءات روتينية (Ied662)
إصلاح الأخطاء
- تمت إعادة تسمية مَعلمة المحاذاة الخاصة بـ Box إلى contentAlignment. (I2c957)
- تمت إعادة تسمية معدِّلات offsetPx إلى offset. تتلقّى الآن مَعلمات lambda بدلاً من State. (Ic3021، b/173594846)
- تمت إضافة المَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
- تمت إضافة عملية تدقيق lint لمعلَمات Modifier في الدوال القابلة للإنشاء. يفحص هذا التدقيق البرمجي التسمية ونوع الإرجاع والقيمة التلقائية وترتيب المَعلمات للتأكّد من توافقها مع إرشادات Compose. (If493b)
- تمت إضافة خيار مؤقت للسماح بتشغيل TestAnimationClock من خلال MonotonicFrameClock (I1403b، b/173402197)
- تمت إضافة أداة تضمين Android Typeface. يمكنك تحميل Android
Typeface من خلال الدالة
typeface، أيtypeface(Typeface.DEFAULT). تمت أيضًا إعادة تسميةtypefaceFromFontFamily()إلىtypeface()(I52ab7) - تمت إضافة عملية فحص Lint للتأكّد من أنّ دوال إنشاء Modifier معرَّفة كإضافات على Modifier، حتى يمكن ربطها بسلاسة معًا. (I07981)
- إزالة وحدة ui-test القديمة ورموزها (I3a7cb)
- لم يعُد Recomposer يقبل EmbeddingContext، ويتم الحصول على تبعيات الجدولة المطلوبة من effectCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تبدأ عمليات الدمج مع الأنظمة الأساسية في معالجة اللقطات العامة الخاصة بها. (I02369)
- تمرير معلومات النمط إلى عقدة تسهيل الاستخدام (If5e8d)
- تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified للحفاظ على التناسق مع الوحدات الأخرى. (Ifce19)
الإصدار 1.0.0-alpha07 من Compose UI
11 نوفمبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة فئة مضمّنة ScaleFactor
لتمثيل عوامل القياس
للمحورين الأفقي والعمودي
بشكل مستقل عن بعضهما البعض
من أجل إتاحة حالات استخدام القياس غير المنتظم.
- تمت إضافة طريقة computeScaleFactor إلى ContentScale
- تمت إضافة ContentScale.FillBounds لتنفيذ تغيير الحجم غير المنتظم من أجل توسيع حدود src لتشغل الوجهة بالكامل.
- تمت إضافة طرق عامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
- (Ic96a6، b/172291582)
- تمت إضافة مصنعي BiasAlignment وBiasAbsoluteAlignment لإنشاء عمليات محاذاة. (Iac836، b/169406772)
- السماح للمطوّر بإزالة التركيز بالقوة (I90372)
- تم إصلاح خطأ كان يتسبّب في عدم رسم الارتفاع للعناصر داخل Compose. (If7782)
- تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لتتوافق مع اصطلاح التسمية في Modifier.drawBehind. (I4fc3a، b/171955269)
- إضافة إمكانية استخدام مسافة الكاميرا لتكميل عمليات التحويل الثلاثية الأبعاد rotationX/rotationY في واجهات برمجة التطبيقات الخاصة بالطبقات (I40213، b/171492100)
- تمت إضافة SelectionContainer بدون دالة رد الاتصال (Ibfadb)
- تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7)
- تمت إزالة مستوى التعتيم من المعدِّل drawShadow() لأنّه كان مربكًا. (I82c62، b/171624638)
- تم نقل MeasureResult خارج MeasureScope. (Ibf96d، b/171184002)
- تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
- إزالة FocusState2 المتوقّف نهائيًا (I686cb، b/168686446)
- أصبحت السمة ZIndexModifier داخلية (I1808b، b/171493718)
- تم تعديل نوع الإرجاع لطريقة lerp في مَعلمات Size لعرض قيمة Size غير فارغة لتجنُّب التغليف غير الضروري. (Ib0044)
- تمت إضافة TestMonotonicFrameClock لاختبار الرمز الذي يعتمد على MonotonicFrameClock في Compose لانتظار أحداث إطار التركيب باستخدام runBlockingTest من kotlinx-coroutines-test (I4402f)
- إزالة GestureScope.localToGlobal (I15299، b/171462785)
- تمت إضافة أداة البحث
onAllNodesWithSubstring(I81dd7، b/171462889) - تم إيقاف وحدة androidx.ui.test نهائيًا. يُرجى نقل البيانات إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8)
إصلاح الأخطاء
- تم نقل captureToBitmap إلى captureToImage. (I86385)
- تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية وغير متحيزة لا تستخدم قيمًا من سمة، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
- تعديل TextFields لقبول KeyboardOptions (Ida7f3)
- إعادة تسمية KeyboardOptions إلى ImeOptions (I82f36)
- نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
- تمت إضافة provideDefault كبديل لتوفير البيانات المحيطة، ويمكن استخدامه لتحديد قيم البيانات المحيطة التي سيتم ضبطها فقط عندما لا تكون هناك قيمة بيانات محيطة متوفّرة. (Id6635، b/171024925)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- إضافة الوحدة ui-test-junit4 (Ib91f8)
- تمت إعادة تسمية
relativePaddingFromإلىpaddingFrom. تمت إضافة المعدِّلpaddingFromBaselineلتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813) - تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لضمان التناسق مع واجهتَي برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدون معلَمات موضوع لتشجيع أفضل الممارسات. (Ifd3d4)
- تم تقديم عنصر قابل للإنشاء للموارد يعيد التركيب عند تعديل الإعدادات. (I6387c، b/167352819)
- يتطلّب Recomposer الآن توفُّر CoroutineContext عند الإنشاء (Ic4610)
- اجمع قيم
zIndexعند تطبيق عدةModifier.zIndex(). في السابق، كان الفائز هو أول من ينهي التحدي. (Ic514c، b/170623936) - تغييرات على طريقة التنفيذ الداخلية لـ SlotTable، ويُفترَض ألا تؤثّر في واجهة برمجة التطبيقات العامة. (If9828)
- تمت إضافة خيار التصحيح التلقائي للوحة المفاتيح في محرر أسلوب الإدخال (IME) (I57b8d)
- تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
- تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات العامة. (Ic2e45)
المساهمة الخارجية
- تم إيقاف نشر العنصر الداخلي androidx.compose.ui:ui-text-android (Ib93fa)
الإصدار 1.0.0-alpha06
28 أكتوبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبح Recomposer الآن CompositionReference وعنصرًا رئيسيًا صالحًا للتأليف. أصبح استخدام Explicit Recomposer مطلوبًا في عدد أقل من المواضع. (I4036f)
- إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لتوضيح أنّ واجهة برمجة التطبيقات القابلة للإنشاء تستخدم داخليًا الدالة remember للاحتفاظ بالبيانات على مستوى عمليات الإنشاء. (Ifda43)
- تم تعديل واجهة برمجة التطبيقات Modifier.drawWithCache لعرض ContentDrawScope كنطاق مستقبِل بدلاً من DrawScope من أجل منح عمليات التنفيذ القدرة على إعادة ترتيب أوامر الرسم. ويكون ذلك مفيدًا في حالات استخدام المزج/التلوين التي يجب فيها عرض وحدات البكسل الخاصة بالمحتوى أولاً لكي يتم تطبيق خوارزمية وضع المزج المقابل بشكل صحيح. (Ie7ec8)
- نقل SimpleContainer إلى PopupTestUtils.kt (I78c57)
- لم يعُد ConsumedData فئة بيانات. لمزيد من التفاصيل، يُرجى الاطّلاع على https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- تثبيت موضع أداة التحكم في اتجاه الكتابة من اليمين إلى اليسار (I6e1e0)
- إعادة تصميم DrawScope وContentDrawScope ليصبحا واجهتَين بدلاً من فئتَين مجرّدتَين
- تم إنشاء تنفيذ CanvasDrawScope لـ DrawScope
- إعادة تصميم عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً من ذلك
- تم إنشاء DrawContext لتضمين التبعيات في DrawScope
- تمت إزالة الطرق المتوقّفة نهائيًا في DrawScope (I56f5e)
- تغيير غير متوافق: تمت إزالة قيمة العرض من
PointerInputFilter.onPointerEvent(...)لأنّ القيمة الوحيدة التي يجب أن يكون من الممكن تغييرها في أحداث المؤشر هي بيانات الاستخدام. بدلاً من عرض البيانات منPointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات الاستخدام الخاصة بأحداث PointerEvents التي تم تمريرها. (I6acd0) - تم تحويل MeasureScope وIntrinsicMeasureScope إلى واجهات. (I1a087، b/170461665)
- تم إخفاء دالة الدمج الخاصة بـ AlignmentLine. (I9da1a، b/170612900، b/170611568)
- إضافة إمكانية تحديد معلومات أداة الفحص في المعدِّل المركّب (Idee08، b/163494569)
- تمت إضافة الخيار "اختيار الكل" إلى قائمة الاختيار (Ief02b)
- تم تعديل DrawTransform.rotate لتضمين مَعلمة محورية تلقائية في المنتصف لتتوافق مع المستندات.
- تم تعديل DrawScope.rotateRad لاستخدام إزاحة لنقطة الارتكاز لتتطابق مع طرق التحويل الأخرى.
- تم إيقاف التحميل الزائد DrawScope.rotateRad نهائيًا والذي كان يستهلك أرقامًا عائمة لإحداثيات x وy لنقطة الارتكاز.
- (Iffcbb، b/170434992)
إصلاح الأخطاء
- تم تفعيل فحص API lint للخطأ MissingGetterMatchingBuilder في androidx (I4bbea وb/138602561)
- أضِف اختبارًا. (I6b8ae)
- تفعيل عمليات الانتقال في ComposeTestRule وإزالة خيار تفعيل المؤشر الوامض من ComposeTestRule (If0de3)
- تمت إضافة خيار KeyboardCapitalization IME (I8ac38)
- تمت إضافة خيار لوحة المفاتيح ذات السطر الواحد إلى CoreTextField (I72e6d)
- نقل SimpleContainer إلى ملف PopupTestUtils.kt (I65c3e)
- تمت إعادة تسمية واجهة برمجة التطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن طريقة استخدامها في جميع أنحاء Compose. تم تعديل المستندات للإشارة إلى أنّه يتم حصر قيم نصف قطر الزوايا السالبة عند الصفر. (I130c7، b/168762961)
- تحسين التوافق مع Android من خلال مواصلة إرسال أحداث MotionEvent إلى "طرق عرض Android" الفرعية التي تعرض القيمة "خطأ" في onTouchEvent لجميع الإجراءات باستثناء
ACTION_DOWN(I94c5a، b/170320973) - تم تحويل المربع إلى دالة مضمّنة. (Ibce0c، b/155056091)
المساهمة الخارجية
- إتاحة لغات مختلفة لكل من
AnnotatedString.capitalizeوAnnotatedString.decapitalize(I4aa7f)
الإصدار 1.0.0-alpha05
14 أكتوبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha05. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة لغة خاصة بالمجال لتحديد معلومات أداة الفحص (Ic9a22)
- نقل LongPress إلى Text (Iff2bc)
- Experimental Modifier.pointerInput تعليق أداة تعديل الإدخال (Ia77d2)
- تمت إضافة إجراءات تسهيل الاستخدام الخاصة بالنسخ واللصق والقص (I6db4f)
- تمت إزالة الدالة الإنشائية العامة لفئة AndroidOwner (Iacaef)
- تكتسب النوافذ المنبثقة ومربّعات الحوار الآن قيمة FLAG_SECURE من النافذة الرئيسية. تمت أيضًا إضافة خيار لضبط هذا الإعداد بشكل صريح (I64966 وb/143778148 وb/143778149)
أصبحت بيانات الاستهلاك قابلة للتغيير الآن. بالإضافة إلى ذلك، لم تعُد طلبات الدوال الإضافية التي تنفّذ عملية الاستهلاك تعرض PointerInputChange جديدًا، بل تعدّل PointerInputChange المقدَّم.
هذه هي الخطوة الأولى في عملية من خطوتَين تهدف إلى جعل بيانات PointerEvent قابلة للتغيير، بحيث لا يمكن تعديل بيانات المؤشر الأخرى من خلال رمز المستخدم. ستكون الخطوة الثانية هي إزالة نوع الإرجاع
List<PointerInputChange>منPointerInputFilter.onPointerEvent(...). (Id067e)إيقاف ميزة "تحديد النص"، وعرض توضيحي (Ie7e97)
تحويل Made onGloballyPositioned إلى دالة مضمّنة (I15830)
تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وإعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
تمت إضافة السمة hasPendingMeasureOrLayout إلى Owner، لتحديد ما إذا كان لدى Owner أي عمل تخطيط معلّق. (I3d9f8، b/169038599)
تمت إضافة واجهة برمجة تطبيقات لمحو التركيز آليًا (Ie1dc2، b/161487952)
تمت إزالة
PointerInputFilter.onPointerInput(...). يجب استخدامPointerInputFilter.onPointerEvent(...)بدلاً من ذلك. (I6f04a)التغييرات على الحجم
- تمت إزالة Size.getFlipped
- Removed Size.rem
- Removed Size.truncDiv (Ief44d, b/169790720)
في إطار توحيد قيم الحراسة للفئات المضمّنة، تمت إعادة تسمية Color.Unset إلى Color.Unspecified لضمان التوافق مع الفئات المضمّنة الأخرى (I97611، b/169797763)
تم تقديم TextOverflow.None. عندما تكون قيمة overflow هي None، لن يتعامل عنصر Text مع المحتوى الزائد بعد الآن، وسيُبلغ LayoutNode عن حجمه الفعلي. (I175c9، b/158830170)
تمت إعادة تسمية المَعلمة "النطاق" ضِمن AnnotatedString.Builder.addStringAnnotation إلى "علامة" من أجل اتّساق واجهة برمجة التطبيقات. (I7c8cb)
إصلاح الأخطاء
- تم تحسين أداء التمرير في LazyColumn/Row من خلال تقليل العمل في التركيب الفرعي عند كل تمرير. تمت إضافة طريقة hasInvalidations() جديدة إلى فئة Composition. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
- تم تعديل معلَمات Size.Unspecified لتصبح Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى الأحجام غير المحدودة. (I95a7e)
- يحدّد ترتيب طلبات place() في التصاميم المخصّصة الآن ترتيب الرسم للعناصر الثانوية (Ibc9f6)
- إتاحة تحويل AnnotatedString إلى SpannableString لتسهيل الاستخدام (Ief907)
- تمت إضافة رموز صورية لفئات Android المتوفرة على الأنظمة الأساسية القديمة لتجنُّب استخدام الانعكاس قدر الإمكان. (Ia1790)
- تم إصلاح الخطأ التالي: إذا كان ظهور لوحة المفاتيح على الشاشة يتسبّب في ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)
الإصدار 1.0.0-alpha04
1 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة OwnerScope للسماح بجمع نطاقات مراقبة التنسيق والرسم بعد أن تصبح غير صالحة. (Ic4cf8)
- تمّت إضافة OnRemeasuredModifier وonSizeChanged() لتلقّي ردّ عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
- إضافة إجراء دلالات النقر مع الاستمرار (I6281b، b/156468846)
- تمت إتاحة FocusManager بشكل خاص. (I7872f)
تم تعديل التنفيذ لإنشاء تنفيذ DrawCacheModifier مخصّص بدلاً من إضافة خصائص اختيارية إلى DrawModifier.
تعديل على المستندات الخاصة بطُرق مختلفة (Ibd166)
اجعل TextRange مضمّنًا لتجنُّب إنشاء كائن. (Id034b)
لم يعُد من الممكن قراءة PlacementScope#parentWidth وPlacementScope#parentLayoutDirection من موضع الإعلان في تصميم مخصّص. (Icc1ae، b/168295623)
إضافة AccessibilityScrollState إلى سمات الدلالات (Ifeda9)
تمت إضافة Modifier.drawWithCache لإتاحة إنشاء عنصر رسم يعيد إنشاء التبعيات بشكل مشروط التي تعتمد على معلومات الحجم/الحالة (I376dc)
تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (Ica712)
إصلاح الأخطاء
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة التطبيقات الخاصة بتحويل الحجم والتدوير لتستهلك مَعلمة إزاحة واحدة لتمثيل إحداثيات نقطة الارتكاز بدلاً من مَعلمات عائمة منفصلة لإحداثيات س/ص في DrawScope وDrawTransform
- تمت إزالة الطريقتَين Rect.expandToInclude وRect.join
- عدّلنا مستندات "نصف القطر" لتشير إلى الشكل البيضوي بالإضافة إلى الشكل الإهليلجي
- تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء الدالة الإنشائية العامة لفئة Radius المضمّنة مباشرةً، بل يجب إنشاء عناصر Radius من خلال دوالها الإنشائية.
- تمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن topRight وbottomRight وbottomCenter وما إلى ذلك.
- إيقاف Rect.shift نهائيًا واستخدام Rect.translate بدلاً منه
- إزالة واجهتَي برمجة التطبيقات RoundRect.grow وRect.shrink
- تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
- تمت إزالة طرق RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
- تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
- تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
- تم تغيير RoundRect.center ليكون سمة بدلاً من دالة
- تم تعديل الدالة الإنشائية RoundRect لتستهلك خصائص Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y
- تمت إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي تفترض أنّها مستطيل بنقطة أصل عند 0,0
- تمت إضافة واجهة برمجة تطبيقات لتدمير البيانات إلى Radius
- نقلنا العديد من دوال إضافة RoundRect إلى خصائص بدلاً من ذلك
- (I8f5c7، b/168762961)
- تم إيقاف foundation.Box نهائيًا. يُرجى استخدام foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
- تمت إعادة تسمية الحزمة لتصبح Box. سيتم إيقاف Box القديم نهائيًا واستخدام Box الجديد في compose.foundation.layout. سيتيح المربع الجديد ترتيب العناصر الفرعية فوق بعضها البعض عندما يتضمّن عدة عناصر فرعية، وهذا يختلف عن المربع السابق الذي كان يتصرف بشكل مشابه للعمود. (I94893، b/167680279)
- تم إيقاف مَعلمات تزيين المربّعات نهائيًا. إذا كنت تريد إضافة زخارف أو مساحة متروكة إلى المربّع، استخدِم المعدِّلات بدلاً من ذلك (Modifier.background وModifier.border وModifier.padding) (Ibae92 وb/167680279).
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة التطبيقات DrawScope لتتضمّن طرق تحويل ذات نطاق محدّد للإشارة إلى أنّ عملية التحويل يتم تطبيقها فقط ضمن دالة الرجوع ويتم إزالتها بعد استدعاء دالة الرجوع
- تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من المستطيل الدائري
- تم إصلاح المسافة في مستندات المَعلمة right في clipPath
- تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة مَعلمة الحجم
- تمت إعادة تسمية المَعلمتَين dx/dy في طريقة inset إلى horizontal وvertical
- تمت إضافة تحميل زائد للداخل يوفّر قيمة الداخل نفسها لجميع الحدود الأربعة
- تمت إزالة المستندات المتعلقة بطريقة الإدراج التي تشير إلى أنّه سيتم تطبيق الإدراج على جميع الجوانب الأربعة
- تعديل المستندات الخاصة بفئة Rect
- تم تعديل التعليقات على مَعلمات Rect لتتوافق مع نمط kdoc
- إزالة Rect.join وRect.expandToInclude
- تم إنشاء تحميل زائد للدالة Rect.translate(offset) وتم إيقاف الدالة Rect.shift نهائيًا
- (If086a، b/167737376)
- تمت إضافة التعليقات التوضيحية إلى rootAnimationClockFactory وtransitionsEnabled وblinkingCursorEnabled وtextInputServiceFactory باستخدام @VisibleForTesting، وتم تحويلها إلى واجهة برمجة تطبيقات داخلية وإخفاء مستندات kdoc الخاصة بها (I554eb وb/168308412)
- أزِل SelectionContainer من الأعلى لإيقاف التحديد التلقائي وتجنُّب السلوك غير المتوقّع. يمكن استخدام SelectionContainer تحديدًا لتضمين المحتوى الذي يجب أن يكون قابلاً للتحديد بدلاً من ذلك. (I8dfe0، b/158459594)
الإصدار 1.0.0-alpha03
16 سبتمبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة إجراءات دلالات التمرير للأمام/للخلف تمت إضافة خطوات في AccessibilityRangeInfo. (Ia47b0)
- تمت إزالة
onInvalidate()منOwner--OwnedLayerيتعامل مع الإبطال. (Ica72b، b/162061312) تمت إزالة طرق المشغّل في واجهة برمجة التطبيقات Size<0x0A> التي تستخدم مَعلمات الإزاحة. نتيجة هذه العمليات غير واضحة، كما أنّ نوع النتيجة غير متوقّع بالنسبة إليها. مثال: هل يجب أن تعرض الدالة size - offset نتيجة الإزاحة أو الحجم مع الفرق؟
تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة Size. (Iec902، b/166514214)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم رسم عناصر LazyColumn بشكل صحيح في بعض الأحيان، ما كان يتسبّب أيضًا في حدوث أعطال في بعض الحالات. (Ibcf17، b/163066980، b/165921895)
- تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
- تم نقل
createAndroidComposeRuleوAndroidInputDispatcherمنandroidx.ui.test.androidإلىandroidx.ui.test(Idef08، b/164060572) - تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متّسق إلى "محاذاة" أو "محاذاة" في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
- تمت إضافة onNode وطُرق عامة أخرى إلى ComposeTestRule لأنّ الطرق العامة الحالية سيتم إيقافها نهائيًا. (Ieae36)
الإصدار 1.0.0-alpha02
2 سبتمبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة دالة معاودة الاتصال لإعلام المالك عند تغيير حدود layoutnode. (If654e، b/166106882)
- تمت إضافة إمكانية استخدام مَعلمات filltype على مسارات الرسومات المتجهة لإتاحة قص الأشكال وفقًا لقواعد تعبئة المسار evenOdd أو NonZero. (I43dd2)
- أصبح كل من Uptime وVelocity الآن فئتين مضمّنتين (I48f4a)
- أصبحت المدة الآن فئة مضمّنة (I565eb)
- أضِف دالة ردّ الاتصال لإرسال إشعار إلى المالك عند تغيير حدود layoutnode. (Ic40b3)
تم إصلاح مشكلة كانت تؤدي إلى إنشاء الدالة الإنشائية Rect مع الإزاحة ونصف القطر بالترتيب التالي: يسار، يمين، أعلى، أسفل، بدلاً من يسار، أعلى، يمين، أسفل.
تمت إزالة الطرق القديمة المصاحبة في Rect واستبدالها بمنشئات الدوال.
تمت إضافة اختبارات للتحقّق من صحة الطرق في Rect.kt (I08460 وb/165822356)
إصلاح الأخطاء
- تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
- تم استبدال Matrix4 بـ Matrix. تمت إزالة جميع الأجزاء الأخرى من حزمة vectormath. (Ibd665، b/160140398)
تم تغيير اصطلاح الاستدعاء للدوال القابلة للإنشاء. هذا تغيير ثنائي قد يؤدي إلى عطل. يجب إعادة تجميع جميع المكتبات لتعمل مع هذا الإصدار من مكوّن Compose الإضافي للمترجم.
لا يؤدي هذا التغيير إلى حدوث تغيير على مستوى المصدر لأنّ واجهات برمجة التطبيقات الوحيدة التي تم تغييرها هي واجهات برمجة التطبيقات الخاصة بالمترجم والتي تتطلّب موافقة صريحة. (I7afd2، b/158123185)
تم إصلاح عُطل كان يمكن أن يحدث عند إرسال حدث إلى PointerInputFilter، ما قد يؤدي إلى إزالة PointerInputFilter بشكل متزامن. (I58f25)
الإصدار 1.0.0-alpha01
26 آب (أغسطس) 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الإصدار 0.1.0-dev
الإصدار 0.1.0-dev17
19 آب (أغسطس) 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev17. يتضمّن الإصدار 0.1.0-dev17 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
emitViewنهائيًا. استخدِمAndroidViewبدلاً من ذلك إذا كان ذلك ممكنًا لعرض "طرق العرض" داخل Compose. يُرجى العِلم أنّه لن يكون من الممكن في المستقبل إنشاء عناصر Views وViewGroups مباشرةً إلا إذا كانت هذه العناصر عبارة عن أوراق في شجرة التركيب، وفي هذه الحالة يمكن تحقيق ذلك باستخدام AndroidView. (I29b1e، b/163871221) - تم إيقاف
FocusState2نهائيًا واستبداله بـFocusState(Ia8b79، b/160822876، b/160923332) - تمت إزالة عمليات التحميل الزائد المتوقّفة نهائيًا في AndroidView. (I946b9، b/163802393)
- يمكن الآن أن تحدّد عمليات الإرسال المخصّصة أنّه يمكن تخطّي دالة ضبط واحدة أو أكثر وإعادة تركيبها بشكل مستقل عن عملية الإرسال. (Ibbd13)
تم تغيير فئات Vector لتصبح غير مرتبطة بالبيانات، لأنّه يتم استخدام مثيل الكائن نفسه في التركيب.
تمت إضافة العلامة mutableStateOf إلى VectorPainter لإعادة الرسم بشكل مشروط في حال تغيّر محتوى المتّجه.
تمت إعادة تصميم مثيل VectorComponent ليكون جزءًا من VectorPainter لأنّه يُعاد استخدامه في جميع المكوّنات.
تم تعديل GroupComponent وPathComponent ليصبح حقل الاسم قابلاً للتعديل (Ieae45، b/151378808)
تمت إزالة
onChildPositionedوOnChildPositionedModifier. على المطوّرين استخدامonPositionedوOnPositionedModifierفي تصميم الأطفال بدلاً من ذلك. (I4522e، b/162109766)أصبح الإزاحة فئة مضمّنة (Iaec70)
تمت إضافة مَعلمة معدِّل إلى SelectionContainer (I4aada، b/161487952)
إزالة FocusModifier المتوقّف نهائيًا (I0b4ba وb/160922116 وb/160821157 وb/162441435 وb/160822875 وb/160921940)
تمت إضافة دالة lambda
mergePolicyإلىSemanticsPropertyKey. يمكن استخدامها لتحديد سياسة مخصّصة لدمج جميع العناصر الفرعية. تتمثّل السياسة التلقائية في استخدام قيمة العنصر الأصل إذا كانت متوفّرة، وإلا سيتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)أصبحت Constraints الآن فئة مضمّنة (I88736)
تمت إضافة FocusManager الذي ينقل منطق التركيز الشائع خارج AndroidComposeView (I528ef، b/161487952، b/162206799)
تم تعديل أسماء PointerEventPass لإصدار Alpha. (Ifda6f)
أصبح IntOffset الآن فئة مضمّنة (Iac0bf)
أصبح IntSize الآن فئة مضمّنة (I2bf42)
تمت إعادة تسمية
PlacementScope.placeAbsolute()إلىPlacementScope.place()، وتمت إعادة تسميةPlacementScope.place()السابقة إلىPlacementScope.placeRelative(). نتيجةً لذلك، لن تعكس الطريقةPlacementScope.place()الموضع تلقائيًا في سياقات الكتابة من اليمين إلى اليسار بعد الآن. إذا كنت تريد ذلك، استخدِمPlacementScope.placeRelative()بدلاً من ذلك. (I873ac، b/162916675)تستخدم AlertDialog الآن FlowRow للأزرار (I00ec1 وb/161809319 وb/143682374)
تمت إزالة بعض أدوات الاختبار من النطاق العام لأنّها لا تنتمي إلى المكان الذي تم وضعها فيه. سيتم إتاحتها للجميع في المستقبل. (I32ab1)
إعادة تنظيم رمز إدخال المؤشر (Ie3f45)
تم إيقاف PxBounds نهائيًا واستبداله بـ Rect. تم تعديل جميع استخدامات PxBounds باستخدام rect، وتمت إضافة تعليقات توضيحية مناسبة بشأن الإيقاف نهائيًا والاستبدال للمساعدة في عملية نقل البيانات. (I37038، b/162627058)
تمت إزالة KeyEvent2 المتوقّف نهائيًا. استخدِم KeyEvent بدلاً من ذلك. (Ied2d0، b/162097587)
يحتوي KeyEvent على سمة unicode يمكن استخدامها للحصول على حرف unicode الذي تم إنشاؤه من خلال مجموعة المفاتيح المحدّدة وحالة مفتاح meta (If3afc).
تم تحويل الحدث المخصّص DelayUp والفئات ذات الصلة إلى واجهة برمجة تطبيقات تتطلّب الموافقة، لأنّه من المرجّح جدًا أن يتم تغييرها. (I56d6f)
تمت إزالة PointerEventPasses 2 التي لم تعُد مطلوبة. (I3dd9d)
أضِف مَعلمات اللون والظل وTextDecoration إلى دالة Paragraph.paint. هذه الدالة مفيدة لتجنُّب إعادة إنشاء الفقرة بدون داعٍ. (I81689)
إصلاح الأخطاء
- تمت إزالة عمليات معاودة الاتصال onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
- تم إيقاف استخدام Modifier.drawBorder نهائيًا. استخدِم Modifier.border بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، b/158160576)
تمت إزالة طلبات FrameManager المتوقّفة نهائيًا.
تم تغيير واجهات برمجة التطبيقات الداخلية الخاصة بـ Compose لتقليل مقدار النفقات الإضافية اللازمة لتتبُّع عناصر الحالة، مثل
mutableStateof()(I80ba6).تمت إزالة VerticalScroller وHorizontalScroller. استخدِم ScrollableColumn/Row بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)
تم إصلاح مشكلة تعذُّر التطبيق عند استخدام عنصر يحفظ الحالة داخل حلقة for. أصبح من المسموح الآن استخدام المفتاح نفسه في savedInstanceState()، وتم تعديل واجهة برمجة التطبيقات UiSavedStateRegistry لتتوافق مع هذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).
تم إيقاف العنصر القابل للإنشاء
state { ... }نهائيًا، وأصبح من الأفضل استخدام استدعاءات صريحة للدالةremember { mutableStateOf(...) }لزيادة الوضوح. يؤدي ذلك إلى تقليل مساحة واجهة برمجة التطبيقات وعدد المفاهيم الخاصة بإدارة الحالة، ويتوافق مع نمطby mutableStateOf()لتفويض سمات الفئة. (Ia5727)تمت إعادة تسمية RRect إلى RoundRect لتتلاءم بشكل أفضل مع أنماط التسمية في Compose تم إنشاء دوال إنشاء مشابهة لدالة RRect وتم إيقاف دوال إنشاء RRect نهائيًا (I5d325)
الإصدار 0.1.0-dev16
5 آب (أغسطس) 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev16. يتضمّن الإصدار 0.1.0-dev16 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف OnChildPositioned نهائيًا. استخدِم OnPositioned في العنصر الفرعي بدلاً من ذلك. (I87f95، b/162109766)
- تم إيقاف setViewContent نهائيًا، ويجب استخدام setContent بدلاً منها. (I7e497، b/160335130)
- تمت إضافة واجهة برمجة التطبيقات AndroidViewBinding لتضخيم موارد التنسيق وإنشائها، استنادًا إلى ViewBinding. (I081c6)
- تم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
- تمت إضافة دعم لمفتاح الأجهزة Alt (I9036b)
- تم إيقاف FocusManager نهائيًا. استخدِم Modifier.focus() وModifier.focusObserver() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
- تتيح الدالة loadVectorResource استخدام سمات trimPath (I808fe)
- نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
- تمت إزالة PointerEventPasses 2 التي لم تعُد مطلوبة. (I33ca7)
- تم تنفيذ PointerInteropModifier الذي يوفّر إمكانية تلقّي أحداث MotionEvent والتفاعل مع Compose كما لو كنت تنفّذ Android View. (Ieb08c)
- تمت إزالة معدِّل العلامة المتوقّف نهائيًا. يُرجى استخدام layoutId بدلاً من ذلك. (Idaa05، b/162023919)
- تم تعديل واجهات برمجة التطبيقات التي تتيح استخدام اللغة من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient، ويمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)
- إتاحة قص المسار في الرسومات المتجهة (Ie16c9، b/158188351)
- تمت إضافة Modifier.layout() التي تتيح إنشاء معدِّل تخطيط مخصّص بسهولة (I73b69، b/161355194)
- تمت إضافة واجهة برمجة تطبيقات AndroidView جديدة وإيقاف واجهات برمجة التطبيقات الحالية نهائيًا. (I5bcfd)
- تم إيقاف Modifier.plus نهائيًا، يُرجى استخدام Modifier.then بدلاً من ذلك. توفّر الكلمة الأساسية "ثم" إشارة أقوى للترتيب، كما أنّها تحظر كتابة
Modifier.padding().background() + anotherModifier، ما يؤدي إلى إيقاف السلسلة ويصعّب قراءتها (Iedd58، b/161529964) - إضافة فئات فرعية من [Abstract]ComposeView View لاستضافة محتوى Compose في هيكلية طرق العرض (I46357)
- أصبحت الدالتان
RowوColumnالآن دالتين مضمّنتين، ما يقلّل بشكل كبير من تكلفة استخدامهما. (I75c10) - تمت إضافة SubcomposeLayout. وهو عنصر أساسي منخفض المستوى يتيح إنشاء العناصر الفرعية أثناء القياس إذا أردنا استخدام بعض القيم التي تتوفّر لاحقًا فقط أثناء القياس لإنشاء الشجرة الفرعية. على سبيل المثال، لم يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
- تمت إضافة
SemanticsNode.positionInRootللحصول على موضع SemanticsNode بالنسبة إلى جذر التدرّج الهرمي في Compose (Icdf26، b/161336532) - تم تمرير MotionEvents بالكامل من Android إلى Compose ثم إلى Android مرة أخرى. (I14be8، b/158034713)
- تمت إزالة dropdownPopup. (I00430)
- تم إصلاح موضع النافذة المنبثقة الثابت على الشاشات التي تحتوي على فتحة. (Idd7dd)
- إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
- تمت إضافة RemeasurementModifier. يسمح بإعادة قياس التنسيق بشكل متزامن. بشكل عام، لن تحتاج إليها أبدًا لأنّ إعادة القياس/إعادة التنسيق تتم تلقائيًا، ولكنّنا نستخدمها داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)
- إزالة getLineEllipsisOffset/getLineEllipsisCount استخدِم getLineVisibleEnd/getLineEnd/isLineEllipsized بدلاً من ذلك. (I85aa2)
- أضِف بعض العلامات/التعليقات التوضيحية لسبب أفضل الممارسات. (I66b20)
- عرض المزيد من واجهات برمجة التطبيقات للسطر في TextLayoutResult (I79bd2)
- يمكن الآن الوصول إلى أدوات تحويل المتجهات المضمّنة لتحويل الوحدات المضمّنة من خلال Foo.VectorConverter، مثل Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter وما إلى ذلك (I3e273).
إصلاح الأخطاء
- إصلاحات واسعة النطاق في واجهة برمجة التطبيقات (I077bc)
- إزالة واجهة OffsetBase غير المستخدَمة
- مواءمة فئتَي Offset وIntOffset للحصول على مساحة سطح متسقة لواجهة برمجة التطبيقات
- إعادة تسمية IntOffset.Origin إلى IntOffset.Zero لضمان التوافق مع Offset API
- نقل طريقة nativeCanvas من واجهة Canvas لإتاحة إنشاء مستهلكين لنسخ Canvas الخاصة بهم
- تم إنشاء فئة EmptyCanvas فارغة لإعادة تصميم DrawScope لكي تكون مَعلمة غير فارغة بدلاً من lateinit وضمان عدم إمكانية أن يكون الحقل فارغًا
- تمت إعادة تسمية تعدادات ClipOp لتصبح Pascal Case
- إعادة تسمية تعدادات FilterQuality لتصبح Pascal Case
- تمت إعادة تسمية تعدادات StrokeJoin لتصبح Pascal Case
- إعادة تسمية تعداد PointMode ليكون Pascal Case
- تمت إعادة تسمية تعدادات PaintingStyle لتصبح Pascal Case
- تمت إعادة تسمية تعدادات PathFillType لتصبح Pascal Case
- تمت إعادة تسمية تعداد StrokeCap إلى Pascal Case
- تم تعديل تنفيذ DrawCache لكي لا يستخدم مَعلمات lateinit
- تم تعديل DrawScope لكي لا يستخدم التفويض الكسول للمعلَمات الداخلية fillPaint وstrokePaint
- تم تعديل دالة Image القابلة للإنشاء لتجنُّب استخدام Box لتقليل الحمل الزائد
- تعديل فئة "المخطّط التفصيلي" لتضمين التعليقات التوضيحية @Immutable
- تم تعديل PathNode لتضمين التعليقات التوضيحية @Immutable لكل تعليمات مسار
- تم تعديل التركيبة الفرعية Vector لإزالة عمليات التحقّق الشرطية المكرّرة من المساواة، لأنّ عملية الإنشاء تتعامل معها
- تم إيقاف طرق إنشاء Rect المصاحبة نهائيًا واستبدالها بطرق إنشاء الدوال.
- تم تعديل فئات Brush ومنشئات الدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
- تم تعديل تعداد VertexMode ليكون PascalCase
- تم تعديل طريقة selectPaint في DrawScope لتعديل مَعلمات ضربات الفرشاة بشكل شرطي في اللوحة إذا تم تغييرها
- تم تعديل الحجم لإضافة واجهة برمجة تطبيقات تفكيك البنية، وإعادة تسمية UnspecifiedSize إلى Unspecified، وإزالة الطرق غير المستخدَمة
- تم تعديل طريقة استخدام واجهة برمجة التطبيقات BlendMode في Compose لربط BlendModes في إطار عمل Android بأوضاع PorterDuff بشكل سليم استنادًا إلى مستوى واجهة برمجة التطبيقات. تم طرح واجهة برمجة التطبيقات BlendMode#isSupported للعمل كطلب بحث عن الإمكانات لتحديد ما إذا كان BlendMode متوافقًا مع الجهاز قبل استخدامه. (I0ef42)
- تمت إضافة LazyItemScope إلى المَعلمة itemContent في القوائم الكسولة. توفّر هذه السمة معدِّلات لملء الحد الأقصى لحجم العنصر الرئيسي، ما يحلّ حالة الاستخدام عندما يجب أن يملأ العنصر إطار العرض ولا تعمل السمة Modifier.fillMaxSize() العادية لأنّه يتم قياس العنصر باستخدام قيود لانهائية. (Ibd3b2، b/162248854)
- تمت إزالة
SemanticsNodeInteraction.performPartialGesture. استخدِمSemanticsNodeInteraction.performGestureبدلاً من ذلك. (Id9b62) - تمت إعادة تسمية
LazyColumnItemsإلىLazyColumnFor. تمت إعادة تسميةLazyRowItemsإلىLazyRowFor(I84f84) - تم تسوية حزمة
foundation.shape.cornerإلىfoundation.share(I46491، b/161887429) - تمت إعادة تسمية
AndroidComposeTestRuleإلىcreateAndroidComposeRule. (I70aaf) - تمت إضافة المزيد من واجهات برمجة التطبيقات إلى
TextLayoutResult. (Id7e04) - تمت إعادة تسمية Material
FilledTextFieldإلىTextField، وإعادة تسمية foundationalTextFieldإلىBaseTextFieldلتسهيل العثور على أبسط واجهة برمجة تطبيقات مطلوبة واستخدامها (Ia6242، b/155482676) - تمت إعادة تسمية Modifier.drawBackground إلى Modifier.background (I13677)
الإصدار 0.1.0-dev15
22 تموز (يوليو) 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev15. يتضمّن الإصدار 0.1.0-dev15 هذه التعديلات.
تعديل التبعيات
- لاستخدام إصدار
0.1.0-dev15من Compose، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف FocusModifier نهائيًا لصالح Modifier.focus وModifier.focusRequester وModifier.focusObserver. تم إيقاف FocusState وFocusDetailedState نهائيًا واستبدالهما بـ FocusState2 (I46919 وb/160822875 وb/160922136)
- تمت إضافة أداة تعديل لمراقبة تغيير حالة التركيز. (I05866 وb/160924455 وb/160923326)
- تمت إضافة معدِّل لطلب تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
- اضبط قائمة شريط الأدوات لعرض خيارات النسخ والقص واللصق بشكل صحيح. (Id3955)
- تستخدم خصائص الدلالات ذات القيمة الواحدة الآن أسلوب استدعاء.
على سبيل المثال، تتم الآن كتابة "semantics { hidden = true }" على النحو التالي:
semantics { hidden() }. (Ic1afd، b/145951226، b/145955412) - تمت إضافة Modifier.focus الذي يحلّ محل FocusModifier. (Ib852a، b/160924778)
- إضافة FloatingToolbar لتحديد TextField (Ie8b07)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات (API) المتعلقة بإدخال المفاتيح (I53c0a)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لجميع واجهات برمجة التطبيقات ذات الصلة بميزة "التركيز" (I53b24، b/160903352)
- تمت إضافة FocusState2 التي ستحلّ محلّ FocusDetailedState (I0a3ba، b/160822595)
- تمت إضافة ExperimentalFocus، وهي تعليق توضيحي @OptIn لواجهة برمجة التطبيقات Focus API. (I1544b، b/160820961)
- تمت إضافة فئة وحدة IntBounds، وهي تمثّل حدود وحدات البكسل الصحيحة من التصميم. تم تعديل واجهة برمجة التطبيقات الخاصة بـ PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
- يتطلّب Applier الآن طريقة clear() للتخلّص من التركيبات (Ibe697)
- تم إيقاف KeyEvent نهائيًا واستبداله بـ KeyEvent2 (I68730)
- تمت إضافة علامة اختيارية جديدة useUnmergedTree إلى أدوات البحث. (I2ce48)
- إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (I4f2e9)
تمت إضافة طرق النسخ إلى أنواع مختلفة من الفئات المضمّنة، بما في ذلك:
- فرق التوقيت
- الحجم
- النطاق الجغرافي
- حركة
TransformOrigin
تم إيقاف طريقة Size.copy المصاحبة للكائن نهائيًا لصالح طريقة النسخ في مثيل (Ife290، b/159905651)
تتضمّن الآن النوافذ المنبثقة ومربّعات الحوار والقوائم السمة MaterialTheme السياقية (Ia3665، b/156527485)
تمت إعادة تسمية TextDirection إلى ResolvedTextDirection (I3ff38)
تمت إزالة مَعلمة اتجاه التنسيق من كتلة القياس الخاصة بالدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة رد الاتصال من خلال عنصر نطاق القياس (Ic7d9d).
إعادة تصميم SelectionHandles لإعادة استخدامها (I420e0)
تمت إزالة العنصر القابل للنقر. استخدام Modifier.clickable (I84bdf)
تم حذف TestTag وSemantics. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0 وb/158841414).
قبل إجراء هذا التغيير، كانت إضافة Compose البرمجية المساعدة للمترجم البرمجي تعترض بشكل غير بسيط على طلبات الدوال الإنشائية داخل دالة @Composable إذا كان هناك (I5205a، b/158123804)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط بينه وبين Modifier.testTag. (I995f0)
أصبحت مواضع خط المحاذاة Int التي يتم عرضها من Placeable#get(AlignmentLine) غير فارغة الآن. في حال عدم توفّر خط المحاذاة المطلوب البحث عنه، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)
تمت إضافة مَعلمة معدِّل إلى العنصر القابل للإنشاء AndroidView. (I48a88، b/158746303)
تم إيقاف Semantics() نهائيًا. استخدِم Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)
إضافة دالة viewModel() القابلة للإنشاء التي تتيح إنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه سابقًا بطريقة مشابهة لطريقة عمله في Activity أو Fragment (I5fdd1)
تم استبدال استخدام IntPx بـ Int، واستبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
من أجل دمج عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل العرض والارتفاع كقيم عائمة. (Ic0191)
من أجل توحيد عدد الفئات المستخدَمة لتمثيل معلومات تحديد المواقع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. ويوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحتَين x وy الممثّلتَين كقيم عائمة. (I3ad98)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل. تم حذف فئة Px بالكامل (I3ff33)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I086f4)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (Id3434)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I97a5a)
تم إيقاف TestTag نهائيًا. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)
تمت إزالة التنفيذ التلقائي لـ ParentDataModifier#modifyParentData الذي لا ينفّذ أي عملية، وكان هذا التنفيذ يعادل عدم تنفيذ الواجهة في المقام الأول. (I0deaa)
تمت إزالة ScaleFit التي تم إيقافها نهائيًا سابقًا. استخدِم ContentScale بدلاً من ذلك. (Ifbc5b)
تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I19d02)
تمت إضافة المكوّن DropdownMenu في ui-material، وهو تنفيذ لقائمة Material Design. (I9bb3d)
تمت إزالة LayoutTag() المتوقّفة نهائيًا، يُرجى استخدام Modifier.tag() بدلاً من ذلك. تمت إزالة Modifier.matchParent() المتوقّفة نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً منها. (If8044)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات وحدات البكسل (I57bff)
تمت إعادة إتاحة Modifier.semantics للسماح باستخدامها مع المكوّنات ذات المستوى العالي. (I4cfdc)
عمليات تنفيذ CanvasScope الموحّدة بحيث لا يتوفّر الآن سوى DrawScope و ContentDrawScope تمت إعادة تسمية CanvasScope إلى DrawScope. تم تعديل DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection تم حذف فئة DrawScope الفرعية في ContentDrawScope تم تعديل Painter وPainterModifier لعدم الاحتفاظ بخاصية RTL بشكل منفصل، لأنّ DrawScope يوفّرها بدون الحاجة إلى توفيرها يدويًا (I1798e)
يفرّق DoubleTapGestureFilter الآن بين SingleTapGestureFilter في جميع أنحاء الشجرة. (If92b1)
تم تعديل Alignment API وإضافة إمكانية المحاذاة المطلقة (التي لا يتم عكسها تلقائيًا في سياق الكتابة من اليمين إلى اليسار) (I38cd3)
تم تغيير واجهة برمجة التطبيقات الخاصة بمعدِّلات DrawLayer: تمت إعادة تسمية outlineShape إلى shape، وأصبحت القيمة التلقائية هي RectangleShape، كما أصبحت غير قابلة للتصغير. تمت إعادة تسمية clipToOutline إلى clip. تمت إزالة clipToBounds لأنّها مماثلة لـ clip == true مع RectangleShape (I7ef11 وb/155075735).
تم تعديل واجهات برمجة التطبيقات ذات المستوى الأعلى في Compose التي تعرض Canvas لعرض CanvasScope بدلاً من ذلك. ويؤدي ذلك إلى إزالة الحاجة إلى أن يحتفظ المستهلكون بكائنات Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا بحاجة إلى الوصول إلى Canvas، يمكنهم استخدام طريقة drawCanvas الخاصة بالإضافة التي توفّر دالة ردّ نداء لإصدار أوامر الرسم باستخدام Canvas الأساسي. (I80afd)
تم تغيير واجهة برمجة التطبيقات WithConstraints trailing lambda. بدلاً من مَعلمتَين، يتضمّن الآن نطاقًا للمستلِم يوفّر، بالإضافة إلى القيود وlayoutDirection، خصائص minWidth وmaxWidth وminHeight وmaxHeight في Dp (I91b9a وb/149979702).
تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)
تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)
تحتوي دوال القياسات الجوهرية في Layout وLayoutModifier2 الآن على أداة استقبال IntrinsicMeasureScope التي توفّر واجهة برمجة تطبيقات طلبات البحث عن القياسات الجوهرية مع اتجاه التنسيق الذي يتم نشره ضمنيًا. (Id9945)
يمكن قياس عناصر Layout وLayoutModifier الفرعية باتجاه تخطيط مختلف. (Ibd731)
تمت إضافة Modifier.zIndex() جديد للتحكّم في ترتيب رسم العناصر التابعة ضمن تنسيق العنصر الرئيسي نفسه. تمت إعادة تسمية السمة elevation في DrawLayerModifier إلى shadowElevation ولم تعُد تتحكّم في ترتيب الرسم. تم تغيير ترتيب المَعلمات في DrawShadow: أصبحت قيمة الارتفاع هي الأولى والشكل هو الثاني مع استخدام RectangleShape تلقائيًا. (I20150، b/152417501)
تمت إزالة onSizeChange وonPositionChange في Owner. (I5c718)
تمت إضافة Constraints2، وهي نسخة من Constraints لا تتوافق إلا مع قيم قيود Int بدلاً من IntPx. ستتم إزالة IntPx، وسيتم افتراض أنّ جميع قيود الأعداد الصحيحة هي وحدات بكسل مثل Android.
- تمت إضافة IntSize أيضًا، والتي ستحلّ محلّ IntPxSize في النهاية. (I4b43a)
أصبحت السمة "محاذاة" قابلة للإنشاء باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة أحادية البُعد. (Ia0c05)
تقبل السمة alignToSiblings الآن كائن Measured بدلاً من Placeable. (I5788d)
-
- تغيير اسم ScaleFit إلى ContentScale
- نقلنا ContentScale من وحدة ui-graphics إلى وحدة ui-core لتكون في الوحدة نفسها التي تتضمّن واجهة Alignment API.
- تمت إعادة تسمية FillMaxDimension إلى Crop
- تمت إعادة تسمية FillMinDimension إلى Fit
- تغيير اسم "تعبئة" إلى "داخل" لتطابق المعنى بشكل أفضل
- القيم المكافئة لـ ImageView.ScaleType
- تمت إضافة مستندات تشير إلى أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_CROP، وأنّ Fit المستخدَم مع Alignment.Center يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.FIT_CENTER، وأنّ Inside المستخدَم مع Alignment.Center يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_INSIDE.
إتاحة استخدام معدِّلات الرسم مع اللغات التي تُكتب من اليمين إلى اليسار (I0aaf9)
تم إصدار واجهة برمجة تطبيقات لتوسيع "طرق العرض" في Android من XML. يمكنك الاطّلاع على العرض التوضيحي ViewInCompose لمزيد من التفاصيل. (I42916)
تحسين واجهة برمجة التطبيقات DrawModifier:
- تم إنشاء نطاق المتلقّي للدالة draw() ContentDrawScope
- تمت إزالة جميع المَعلمات من draw()
- تتضمّن DrawScope الواجهة نفسها التي كانت تتضمّنها CanvasScope السابقة
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تمت إضافة positionInParent وboundsInParent إلى LayoutCoordinates. (Icacdd، b/152735784)
تم ضبط القيم التلقائية لكلّ من DrawLayerModifier وdrawLayer() على clipToBounds وclipToOutline لتصبح false. (I0eb8b، b/152810850)
تمت إعادة تسمية LayoutResult إلى MeasureResult. (Id8c68)
تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد معدِّلات التنسيق، وتم إيقاف LayoutModifier نهائيًا (If32ac)
استبدال المعدِّل وعلامة الجمع بدوال إضافة المصنع (I225e4)
تمت إضافة السمتَين translationX/Y لتوفير إمكانية إزاحة قائمة العرض الخاصة بأوامر الرسم لطبقة معيّنة. ويكون ذلك مفيدًا لنقل المحتوى استجابةً للصور المتحركة أو أحداث اللمس. (I8641c)
تمت إضافة المَعلمتَين pivotX وpivotY إلى واجهات برمجة التطبيقات الخاصة بالطبقات لتتيحا تدوير الطبقات وتغيير حجمها حول نقطة معيّنة في الطبقة (Icf7c3)
أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين القابلتَين للإنشاء OnPositioned وOnChildPositioned. (I2ec8f)
تمت إضافة LayerModifier، وهو معدِّل يتيح إضافة RenderNode إلى Layout. ويتيح ضبط القص والشفافية والتدوير والتوسيع والظلال. سيحلّ هذا العنصر محلّ RepaintBoundary. (I7100d، b/150774014)
تم نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العناصر الفرعية. تمت إضافة أداة تعديل اتجاه التنسيق. (I3d955)
يتوافق مكوّن الحزمة مع اتجاه الكتابة من اليمين إلى اليسار (Ic9e00)
إتاحة دعم مبدئي للغة من اليمين إلى اليسار في تصميم Compose (Ia5519)
تم دمج Density وDensityScope في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density) فقط with(density) (I11cb1)
تم تغيير LayoutCoordinates لجعل providedAlignmentLines مجموعة بدلاً من خريطة، وتم جعل LayoutCoordinates تنفّذ عامل التشغيل get() بدلاً من ذلك لاسترداد قيمة. يسهّل ذلك على المعدّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدّل. (I0245a)
لم يعُد LayoutCoordinates يتضمّن سمة موضع. لا تكون السمة position منطقية عند استخدام LayoutModifiers أو التدوير أو تغيير الحجم. بدلاً من ذلك، على المطوّرين استخدام parentCoordinates وchildToLocal() لاحتساب عملية التحويل من LayoutCoordinate إلى أخرى.
تستخدم LayoutCoordinates السمة IntPxSize للمقاس بدلاً من PxSize. تستخدِم التصميمات أحجامًا بالبكسل من الأعداد الصحيحة، لذا يجب أن تستخدِم جميع أحجام التصميمات أعدادًا صحيحة وليس قيمًا ذات فاصلة عشرية. (I9367b)
تحسينات على مساحة واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)
تم إنشاء واجهة برمجة التطبيقات CanvasScope التي تتضمّن كائن Canvas لعرض مساحة واجهة برمجة تطبيقات للرسم بدون حالة وتصريحية. يتم تضمين عمليات التحويل ضمن نطاق المستقبِل الخاص بها، كما يتم تحديد نطاق معلومات الحجم ليشمل حدود الحواف الداخلية المقابلة. ولا يتطلّب ذلك من المستهلك الاحتفاظ بكائن حالة Paint الخاص به لتحديد عمليات الرسم.
- تمت إضافة CanvasScopeSample، كما تم تعديل التطبيق التجريبي ليشمل عرضًا توضيحيًا للرسومات التعريفية (Ifd86d).
تمت إزالة واجهة برمجة التطبيقات MaskFilter غير المستخدَمة لأنّ استخدامها محدود وغير محسّن للاستفادة من تسريع الأجهزة في معظم حالات الاستخدام (I54f76)
تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات Color القابلة للتصغير في واجهة برمجة التطبيقات بأخرى غير قابلة للتصغير، واستخدام Color.Unset بدلاً من null (Iabaa7)
إضافة مَعلمة rect اختيارية إلى ImagePainter لتتيح رسم قسم فرعي من ImageAsset الأساسي (I0ea9e)
تمت إضافة "إزالة اللون" لتمثيل قيمة غير مضبوطة بدون تضمين الألوان. (If901a)
تمت إضافة طريقتَي Canvas.rotate وCanvas.scale إلى الإضافة لاستهلاك إحداثيات نقطة الارتكاز الاختيارية للتحويلات. يتم ضبط هذه القيم تلقائيًا على الزاوية العلوية اليسرى من ترجمة لوحة العرض الحالية.
تم أيضًا نقل Canvas.rotateRad ليكون طريقة إضافة للحفاظ على التناسق (Ibaca6)
تم إنشاء واجهة برمجة التطبيقات PixelMap API لتتيح الاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)
تمت إعادة تسمية toFrameworkRect/toFrameworkRectF إلى toAndroidRect/toAndroidRectF لتتوافق مع نظام التسمية لعمليات تحويل العناصر بين Compose وواجهات برمجة التطبيقات لإطار عمل Android التي تم إنشاؤها استنادًا إليها. تم أيضًا تعديل المستندات المتعلقة بواجهات برمجة التطبيقات هذه (I86337)
تمت إضافة واجهة برمجة التطبيقات VectorPainter API لاستبدال واجهة برمجة التطبيقات الحالية الخاصة بالعناصر الفرعية للرسومات المتجهة. نتيجة التركيب الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف الدوال البرمجية السابقة القابلة للإنشاء DrawVector نهائيًا واستبدالها بـ VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) إلى PaintBox(Painter) تم إنشاء عنصر Vector قابل للإنشاء يعمل مثل العنصر Image القابل للإنشاء، ولكن باستخدام VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)
تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وImage القابل للإنشاء القادم المستخدَم للمشاركة في التنسيق ورسم المحتوى. _Body:تم إنشاء طريقة إضافة Bitmap.asImageAsset() إلى android.graphics.Bitmap، لإنشاء مثيل من ImageAsset مفيد لدمج تطوير تطبيقات Android التقليدية مع إطار عمل Compose (Id5bbd)
تمت إضافة TextDirection.Content (I48f36)
تمت إضافة عامل التشغيل TextDecoration.plus (I0ad1a)
تمت إزالة
Forceمن قيم تعداد TextDirectionAlgorithm (Icc944)تمت إعادة تسمية TextDirectionAlgorithm إلى TextDirection (I75ce8)
تنفيذ LongPressAndDrag لتحديد TextField (I17919)
تمت إضافة AnnotatedString.getStringAnnotations التي تعرض جميع التعليقات التوضيحية ضمن النطاق. (I1fa00)
تم تغيير اسم الحزمة لكلّ من Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)
يحتوي مؤشر TextField على صورة متحركة وامضة (Id10a7)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) إلى annotatedString(builder: Builder). (Ia6377)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)
أعِد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)
يمكن الآن إخفاء لوحة المفاتيح البرمجية أو إظهارها باستخدام SoftwareKeyboardController الذي يتم توفيره من خلال onTextInputStarted (I8dc44، b/151860051)
تمت إضافة عامل التشغيل "زائد" إلى (Text/Paragraph/Span)Style الذي يتم تفويضه إلى الدالة merge(). (Ia1add)
لم يعُد FontWeight.lerp يلتصق. لا يزال هذا النوع من الفئات يُعدّ فئة بيانات. (I521c2)
أصبح منشئ FontWeight متاحًا للجميع، ولم يعُد فئة بيانات. (Id6b1f)
إضافة getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801)
تمت إعادة تسمية وحدة ui-text إلى ui-text-core (I57dec)
تمت إزالة فئة Size غير المستخدَمة لأنّ هناك فئة Size مكرّرة في وحدة ui-geometry يتم استخدامها. (I1b602)
تمت إضافة AdapterList، وهو مكوّن قائمة قابلة للتمرير لا يعرض سوى العناصر المرئية. تشمل المشاكل المعروفة حاليًا أنّه عمودي فقط ولا يتعامل بشكل كامل مع جميع حالات التغييرات التي تطرأ على العناصر التابعة له. (Ib351b)
إضافة معلَمات الحشو والحدود والشكل والخلفية إلى المربّع (I05027، b/148147281)
إصلاح الأخطاء
- تمت إعادة تسمية دالة onFocusChange في حقول النص إلى onFocusChanged (Ida4a1)
- تم إيقاف VerticalScroller وHoriziontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow لتوفير تجربة مدمجة مع سلوك Column/Row ومَعلماتهما، أو استخدِم Modifier.verticalScroll وModifier.horizontalScroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا واستبداله بـ ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
- تمت إعادة تسمية
runOnIdleComposeإلىrunOnIdle(I83607) - تمت إعادة تسمية العديد من واجهات برمجة التطبيقات الخاصة بالاختبار لتكون أكثر سهولة في الاستخدام. تمت إعادة تسمية جميع واجهات برمجة التطبيقات findXYZ لتصبح onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة التطبيقات doXYZ إلى performXYZ. (I7f164)
- يمكن الآن إنشاء واجهة مستخدم Compose داخل ViewGroups بدون الحاجة إلى إنشاء تركيبة جديدة. يمكنك الاطّلاع على ViewInteropDemo للحصول على مثال. (I9ab0b، b/160455080)
- تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7)
- تنفيذ مقابض سحب التحديد لتغيير التحديد في TextField (I27032)
- Removed Shader inline class that wrapped the NativeShader expect class Renamed NativeShader to Shader. لم يضِف صف Shader المضمّن أي قيمة إلى مساحة واجهة برمجة التطبيقات، وكان صفًا مضمّنًا، لذا استخدِم صف NativeShader مباشرةً. (I25e4d)
تمت إعادة تصميم PainterModifier كي لا يوفّر بعد الآن إمكانية تغيير الحجم استنادًا إلى القيود المحدّدة ومَعلمة ContentScale. يجب أن تعمل عمليات تنفيذ Painter على تغيير حجم محتوى الرسم بنفسها استنادًا إلى حجم DrawScope الذي يتم الرسم فيه.
تم إصلاح المشكلة المتمثّلة في تحديد حجم خريطة البت المخزّنة مؤقتًا في VectorPainter بحجمها التلقائي بدلاً من الحجم المحدّد للرسم فيه.
تم تعديل ImagePainter لتغيير حجم المحتوى بدلاً من الاعتماد على PainterModifier لتنفيذ ذلك نيابةً عنه. (I6ba90)
إضافة دالة withFrameNanos على المستوى الأعلى لتحديد توقيت الصورة المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِلها بـ @ComposableContract(tracked=false) (Id211e)
تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر القابلة للإنشاء TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
تم إصلاح المشكلة التي كانت تؤدي إلى تعطُّل التطبيق عند إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)
تم إصلاح المشكلة التي كانت تؤدي إلى تعطُّل التطبيق عند إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)
تمت إعادة تصميم فئة Radius لتصبح فئة مضمّنة. تمت إزالة طرق إنشاء العناصر المصاحبة لصالح دالة الإنشاء مع مَعلمة تلقائية لجعل نصف القطر على المحور y مطابقًا لنصف القطر الإلزامي للمَعلمة على المحور x.
تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتَين منفصلتَين من النوع float للنطاق الجغرافي على طول المحورَين x وy (I46d1b)
لم يعُد العنصر القابل للإنشاء Recompose تجريدًا مفيدًا. يجب أن تحدث معظم عمليات إعادة التركيب نتيجة لعمليات تعيين MutableState. بالنسبة إلى أي شيء آخر، ننصحك باستخدام الدالة
invalidateلتفعيل إعادة إنشاء النطاق الحالي. (Ifc992)تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (Iede0b)
تغيير استراتيجية إنشاء الرموز البرمجية لمترجم Compose قبل إجراء هذا التغيير، كان برنامج التجميع الخاص بـ Compose يحوّل طلبات الدوال القابلة للإنشاء. من خلال هذا التغيير، نحوّل الآن نص الدالة القابلة للإنشاء ونترك موقع الاستدعاء بدون تغيير (في الغالب).
وهذا يعني أنّ معظم منطق التواصل مع وقت تشغيل Compose يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات الإنشاء. لن يحتاج معظم مستخدمي Compose إلى تعديل أي رمز نتيجةً لهذا التغيير.
ولإتاحة هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للإنشاء. يتم تحويل دالة قابلة للإنشاء تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، وتكون المَعلمات الإضافية هي Composer وعدد صحيح "مفتاح" وعدد صحيح لقناع البت يُستخدَم لنقل البيانات الوصفية من خلال عمليات الاستدعاء.
تحوّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إضافة حمل زائد اصطناعي إضافي تلقائي للوظيفة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الوظائف.
في ما يلي التغييرات المعروفة والمقصودة في السلوك الناتجة عن ذلك:
- سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها في السابق
- أصبحت التعبيرات القابلة للإنشاء في تعبيرات الوسيطة التلقائية متاحة الآن ويمكن التعامل معها بشكل صحيح
تضمّنت هذه العملية بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال الرسم البياني لعمليات الاستدعاء إلى الدوال المركّبة الأخرى. سيؤدي ذلك إلى تقليل عمليات المقارنة في وقت التشغيل، وتقليل حجم جدول الفتحة، بالإضافة إلى تخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها سابقًا 2. لم يعُد يتمّ تخزين المَعلمات التي يتمّ تحديد أنّها "ثابتة" في وقت التجميع أو مقارنتها في وقت التشغيل. يقلّل ذلك من عدد عمليات المقارنة ومن حجم جدول الفتحات. 3- يتم استخدام بنية التحكّم في التدفق لنص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول الفتحات ويقلل من الجهد المطلوب من وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والاستقبال غير المستخدَمة للدوال في تحديد إمكانية تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.
كانت معظم التغييرات غير المتوافقة مخصّصة لواجهات برمجة التطبيقات التي يستهدفها المحول البرمجي مباشرةً، ولن يتأثّر الاستخدام العادي لـ Compose بما يلي: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة عمليات التحميل الزائد غير المتغيرة لـ
key. استخدِم الإصدارvarargمن الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي Pivotal نهائيًا. استخدِمkeyكبديل. 6. تم تغيير ScopeUpdateScope::updateScope ليتوقّع Function3 بدلاً من Function1 7. تم تعديل restartableFunction وrestartableFunctionN لتضمين مَعلمات إضافية في وقت الترجمة (I60756، b/143464846)تمت إزالة معدِّلات LayoutAlign المتوقّفة نهائيًا. (I10877)
تمت إزالة RepaintBoundary واستبدالها بـ DrawLayerModifier (I00aa4)
يحتوي كل من Button وFloatingActionButton وClickable الآن على المَعلمة
enabledالمنفصلة. تمت إعادة تسمية بعض المَعلمات في "الزر" أو إعادة ترتيبها. (I54b5a)تم استبدال ButtonStyle بوظائف مميزة وإزالة التحميل الزائد للنص (السلسلة). يمكنك الاطّلاع على نماذج محدّثة لمعلومات الاستخدام. (If63ab، b/146478620، b/146482131)
تغييرات غير متوافقة في واجهة برمجة التطبيقات ambients API راجِع مستندات السجلّ و
Ambient<T>للحصول على التفاصيل (I4c7ee، b/143769776)تم تغيير سلوك TextDirection التلقائي ليتم تحديده حسب LayoutDirection، أي إذا كان LayoutDirection من اليمين إلى اليسار، سيكون TextDirection التلقائي من اليمين إلى اليسار. كانت القيمة السابقة هي TextDirection.ContentOrLtr/Rtl (I4e803)
إصلاح الخطأ: عند تضمين وزن الخط ونمطه في AnnotatedString، لا يتم عرض النص بشكل صحيح. (I77a9d)
تضيف هذه السمة المَعلمات الشائعة الاستخدام إلى Text(). إذا كنت تنشئ حاليًا نمط نص محليًا لتمرير عدد صغير من هذه المَعلمات، مثل Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً: Text(textAlign = TextAlign.Center) (I82768)
تمت إعادة تسمية الوحدة ui-android-text إلى ui-text-android (I68cbe)