Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(الاطّلاع على مستندات مرجع واجهة برمجة التطبيقات لجميع حِزم 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 لتطبيقك أو وحدتك:
رائع
dependencies { implementation "androidx.compose.foundation:foundation:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation: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.foundation:foundation-*:1.10.0-beta01. يتضمّن الإصدار 1.10.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تعديل جميع واجهات برمجة التطبيقات التي تعمل باللمس غير المباشر لاستخدام اسم واجهات برمجة التطبيقات التي تعمل بمؤشر غير مباشر لتتوافق مع واجهات برمجة التطبيقات التي تعمل بإدخال المؤشر (I238ce، b/451607214)
- تمت إضافة تعليق توضيحي إلى
PagerState.currentPageOffsetFractionباستخدام@FrequentlyChangingValue. (Idfaab)
إصلاح الأخطاء
- إصلاح سلوك النص المتحرك في اتجاهات التنسيق من اليمين إلى اليسار (Ib8be3)
الإصدار 1.10.0-alpha05
8 أكتوبر 2025
تم طرح androidx.compose.foundation:foundation-*:1.10.0-alpha05. يتضمّن الإصدار 1.10.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتيح
PaddingValuesالآن إمكانية الجمع والطرح لتبسيط عمليات حسابات المساحة المتروكة الشائعة. (I327e1، b/244468479)
إصلاح الأخطاء
- يتم تفعيل
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledتلقائيًا. وهو تحسين للأداء، ما يسمح لنا بتوزيع العمل الذي نحتاج إلى تنفيذه أثناء الجلب المسبق بشكل أفضل، على سبيل المثال، يمكننا تنفيذ عملية الإنشاء لأجزاء من العنصر التالي فيLazyColumnخلال إطار واحد لواجهة المستخدم، ثم مواصلة إنشاء بقية العنصر في الأُطر التالية. (I4c7fe)
الإصدار 1.10.0-alpha04
24 سبتمبر 2025
تم طرح androidx.compose.foundation:foundation-*:1.10.0-alpha04. يتضمّن الإصدار 1.10.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عملية تنفيذ
ScrollIndicatorStateإلىPagerState. (I113b7) - تمت إضافة عملية تنفيذ
ScrollIndicatorStateإلىLazyStaggeredGridState. (I1028e) - تمت إضافة عملية تنفيذ
ScrollIndicatorStateإلىLazyGridState. (I9e50c) - تمت إضافة عملية تنفيذ
ScrollIndicatorStateإلىLazyListState. (I5ee29) - تمت إضافة عملية تنفيذ
ScrollIndicatorStateإلىScrollState. (I27f66) - إضافة السمة
scrollIndicatorStateفي واجهةScrollableState(Idca93) - تمت إزالة العلامة
isWindowInsetsModifierLocalNodeImplementationEnabled(I15e8f، b/440964232) - عرض المعدِّل
scrollableArea()الذي يمكن استخدامه لجعل المكوّن قابلاً للتمرير مع سلوكيات قص المحتوى ضمن حدوده والتعامل تلقائيًا مع اتجاه تمرير المحتوى استنادًا إلى "اتجاه الشاشة" و"من اليمين إلى اليسار" والعلامةreverseScrolling(I9471b، b/316559454)
الإصدار 1.10.0-alpha03
10 سبتمبر 2025
تم طرح androidx.compose.foundation:foundation-*:1.10.0-alpha03. يتضمّن الإصدار 1.10.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ComposeFoundationFlags.isNonComposedClickableEnabled(I0dfc0، b/406228525) - نقل دوال المصنع لإنشاء مثيلات
FillableDataإلى العنصر المرافق بدلاً من استدعاءFillableData(value)، استخدِم طرق الإنشاء الجديدة:FillableData.createFrom(value). (I2e200، b/441719650) - أضِف
BeyondBoundsLayoutModifierNodeعقدة معدِّل جديدة لتنفيذ تخطيط خارج الحدود للبحث عن التركيز. (I39be1، b/416133658) - تم وضع علامة
ScrollState.valueكسمة@FrequentlyChangingValue. (I4723d) - تم تقديم
LazyLayoutKeyIndexMapومصنع لتنفيذ تلقائي. (I4fd0c، b/415038029)
إصلاح الأخطاء
- يعرض العمود والصف الآن الحجم الفعلي للعنصر بشكلٍ صحيح في
Modifier.align، ما يحلّ مشكلة تلقّي عملية التنفيذ المخصّصة لـModifier.alignالقيمة غير الصحيحة 0. (I8194f، b/439716351)
الإصدار 1.10.0-alpha02
27 أغسطس 2025
تم طرح androidx.compose.foundation:foundation-*:1.10.0-alpha02. يتضمّن الإصدار 1.10.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة العلامة
isFlingContinuationAtBoundsEnabled. (I6b84f) - تمت إزالة العلامة
isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled. (I62380) - تمت إزالة العلامة
isOnScrollChangedCallbackEnabled. (I667dc) - تمت إزالة العلامة
isAutomaticNestedPrefetchEnabled. (I4f416) - تمت إزالة العلامة
DragGesturePickUpEnabled. (Ib8500) - إضافة واجهة برمجة التطبيقات
ScrollIndicatorStateلتمثيل حالة شريط التمرير (I5e229)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم تفعيل
confirmValueChangeعند استخدامModifier.anchoredDraggable. (Iff7cc)
الإصدار 1.10.0-alpha01
13 أغسطس 2025
تم طرح androidx.compose.foundation:foundation-*:1.10.0-alpha01. يتضمّن الإصدار 1.10.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تعديل استراتيجية الجلب المُسبَق في Pager لاستخدام "نافذة التخزين المؤقت" بدلاً من العنصر التلقائي الواحد في اتجاه التمرير تم الآن تفعيل الجلب المسبق الأولي تلقائيًا في Pager، وسيكون الجلب المسبق استنادًا إلى حجم النافذة التي تبلغ قيمة إطار العرض الواحد، أي سنحاول ملء إطار عرض واحد كامل بالعناصر التي تم جلبها مسبقًا. وسيتم الاحتفاظ بالعناصر لفترة أطول أيضًا. (I4d45e، b/292136289)
- تمت إضافة العلامة
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabledللسماح بإيقاف تحسين أداءWindowInsetsفي حال تسبّب التنفيذ الجديد في تغيير سلوك. (I8e912) - تسمح السمة
SnapFlingBehaviorالآن بتجاوز مواصفات الصور المتحركة أثناء المحاذاة. يسمح ذلك مثلاً بمواصفات نابض مرن مثلsnapAnimationSpecلإنتاج صورة متحركة مرنة. سيستمر تجاهل القيم التي تتجاوز الحدّ المسموح به عند تنفيذ عملية تقريب باستخدام مواصفات المحاذاة. (I373c2) - سيؤدي الآن الضغط على مؤشر الماوس أو لوحة اللمس في
ComposeViewإلى إزالة التركيز تلقائيًا إذا لم يحدث الضغط على المؤشر في حدود العقدة التي يتم التركيز عليها. وينتج عن ذلك تجربة مستخدم "النقر لإزالة التركيز" التي تكون أكثر توقعًا من السلوك الحالي عند استخدام أجهزة إدخال المؤشر. يمكن إيقاف هذا السلوك باستخدام واجهة برمجة تطبيقاتAbstractComposeView.isClearFocusOnPointerDownEnabledجديدة. (I6322b، b/282963174) - تتيح الآن ميزة Scrollable إمكانية التعامل بشكل أفضل مع أحداث تمرير عجلة الماوس الثنائية الأبعاد. تم إطلاق واجهة برمجة تطبيقات اختبارية جديدة للمساعدة في اختبار حالات الاستخدام في
MouseInjectionScope. لقد طرحنا أيضًا حمولة زائدة جديدة لطُرق التمرير فيMouseInjectionScopeوعلامة للتحكّم في السلوك الجديد تُسمّىisMouseWheel1DAxisLockingEnabled(I136df). - تم تعديل
DragGestureNodeلاستخدام إدخال المؤشر الأولي بدلاً من تعليق إدخال المؤشر لتحسين الأداء. تتم إضافة التغييرات خلف العلامةisNonSuspendingPointerInputInDraggableEnabled(I0fa4b) - تمت إضافة التعليق التوضيحي
@FrequentlyChangingValueإلى بعض واجهات برمجة التطبيقاتAnchoredDraggable. تتغيّر قيمoffsetوrequireOffsetوprogressبشكل متكرّر، ويجب عدم قراءتها في التركيب. يُرجى الوصول إلى هذه القيم من مراحل التنسيق والرسم أو التأثيرات أو غير ذلك خارج التركيب بدلاً من ذلك. (I05539) - تمت إزالة العلامات
isOnScrollChangedCallbackEnabledوisAdjustPointerInputChangeOffsetForVelocityTrackerEnabledوisFlingContinuationAtBoundsEnabledوisAutomaticNestedPrefetchEnabledوDragGesturePickUpEnabledوisPointerInteropFilterDispatchingFixEnabledوisNestedScrollInteropPostFlingFixEnabledوisNestedScrollDispatcherNodeFixEnabled(I36c18) - تم تقديم
CompositionLocalالتي يمكن استخدامها لتعديل فرشاة تمييز الملء الناجح في ميزة "الملء التلقائي". (I52329) - تمت إضافة مستطيل تركيز قابل للتخصيص إلى
FocusProperties. يمكنك الآن تحديد منطقة تركيز مخصّصة بدلاً من استخدام مربّع الإحاطة التلقائي للعنصر القابل للتركيز. يستخدم نظام التنقّل بالتركيز ومنطق إبقاء العناصر في إطار العرض للحاويات القابلة للتمرير هذه المعلومات. (Id6555، b/368378073) - تمت إضافة
LineHeightStyle.Modeجديد باسمTight. يساعد هذا الوضع في فرض ارتفاعات أصغر للأسطر حتى عندما يكون من المحتمل أن تقطع الرموز الرسومية الأطول. (Id3849) - تم تقديم واجهة Interpolatable جديدة تتيح الاستيفاء التلقائي بين الأنواع المختلفة، على افتراض أنّ أحد الأنواع يعرف كيفية التحويل من النوع الآخر. يتم استخدام هذه الواجهة في العديد من أنواع الإنشاء، مثل "الفرشاة" و"الشكل"، ولكن يمكن استخدامها خارجيًا أيضًا. (I58eab)
- تضيف هذه السمة أحداث إدخال غير مباشرة وطريقة لتحديد محور الإحداثيات الذي سيتم استخدامه للتمرير. (I58e7c)
- إضافة واجهة برمجة التطبيقات
WindowInsets.cutoutPathالجديدة للحصول على مسار فتحة الشاشة (Ib90b1، b/279636456) - تمت إزالة العلامة
isWindowInsetsDefaultPassThroughEnabled، وتم ضبط WindowInsets تلقائيًا على عدم الاستهلاك حتى تتمكّن طرق العرض الثانوية من تلقّيWindowInsetsتلقائيًا. (I888e0، b/412469666)
إصلاح الأخطاء
- يجب إيقاف ميزة "
isNonSuspendingPointerInputInDraggableEnabled" مؤقتًا. (Ia41c4) - تغيير الحد الأدنى التلقائي لإصدار SDK من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
- تم تعديل مستندات
DraggableAnchors'minPosition/maxPositionللإشارة إلى أنّ واجهات برمجة التطبيقات هذه يجب أن تعرض القيمة Float.NaN بما يتوافق مع واجهات برمجة التطبيقات الأخرىDraggableAnchors. (I0460a) - تم إصلاح الخطأ الذي كان يتسبّب في تعطُّل
DraggableAnchors#closestAnchorإذا كانت نقاط الارتكاز فارغة (I4e646) - تحسينات على أداء
DraggableAnchors(If4065، I0460a) - لم يعُد
TextFieldState.edit { }يمحو سجلّ التراجع. بدلاً من ذلك، يتم إنشاء إدخال تراجع مستقل. إذا كان السلوك المطلوب هو محو قائمة التراجع بعد تنفيذ طلبedit، يُرجى استخدامTextFieldState.undoState.clearHistory(). (I12c14) - تمت إضافة إمكانية النقر مرّتين لتحديد كلمة في
SelectionContainerوBasicTextField(value, onValueChange). (Ibb06a) - إصلاح خطأ بسيط لجعل
AutoboxingStateValuePropertyDetectorمتوافقًا مع كل من K1 وK2 (Ie81c1) - يتم الآن نقل طلبات
requestRectangleOnScreenالتي يتم إجراؤها بواسطة AndroidViews بشكلٍ صحيح إلى Compose. يساعد ذلك في إبقاء طرق العرض، مثلEditText، على الشاشة عند التفاعل معها. (Ibbf4c) - يعرض العمود والصف الآن المقاس الفعلي للعنصر بشكلٍ صحيح في
Alignment.Vertical.alignوAlignment.Horizontal.align، ما يحلّ مشكلة تلقّي عمليات تنفيذ المحاذاة المخصّصة للقيمة 0 غير الصحيحة. (I3e460، b/349722072)
الإصدار 1.9
الإصدار 1.9.4
22 أكتوبر 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.4. يتضمّن الإصدار 1.9.4 هذه التعديلات.
الإصدار 1.9.3
8 أكتوبر 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.3. يتضمّن الإصدار 1.9.3 هذه التعديلات.
الإصدار 1.9.2
24 سبتمبر 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.2. يتضمّن الإصدار 1.9.2 هذه التعديلات.
الإصدار 1.9.1
10 سبتمبر 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.1. يتضمّن الإصدار 1.9.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل يحدث عند استخدام
LazyLayoutCacheWindowفيLazyLists(c39f5f3)
الإصدار 1.9.0
13 أغسطس 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.0. يتضمّن الإصدار 1.9.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.8.0
- تتطلّب عمليات التحقّق من Lint التي يتم شحنها مع Compose الآن توفُّر الإصدار 8.2.2 من "مكوّن Android الإضافي في Gradle" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي في Gradle"، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) فيgradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث. - تغيير غير متوافق مع الإصدارات السابقة: لا تتوافق عمليات التحميل الزائد
clickableوcombinedClickableوselectableوtoggleableوtriStateToggleableبدون مَعلمة Indication الآن إلا مع مثيلاتIndicationNodeFactoryالتي يتم توفيرها باستخدامLocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات أدوات التعديل هذه باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر عملية تنفيذ متوقّفة نهائيًا لـ Indication إلىLocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عُطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، والسماح لدوال Composable التي تستخدم أدوات التعديل هذه بالتخطّي أثناء إعادة الإنشاء. يمكنك استخدامComposeFoundationFlags.isNonComposedClickableEnabled=falseلإيقاف هذا التغيير في السلوك مؤقتًا، وذلك لتفعيل ترقية Compose بدون أن يتم حظرك من عملية النقل هذه. ستتم إزالة هذه العلامة بعد إصدار واحد ثابت. لحلّ هذه المشكلة، عليك نقل أي عمليات تنفيذ متوقّفة نهائيًا لـ Indication لاستخدامIndicationNodeFactoryبدلاً منها. يمكنك أيضًا استخدام عمليات التحميل الزائد مع مَعلمة Indication صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات غيرIndicationNodeFactoryمن Indication، على الرغم من أنّ هذا الإجراء لا يُنصح به لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333) - تمت إضافة
isFlingCancellationWithNestedScrollFixEnabledلحلّ مشكلة في نشر حركة التمرير السريع في التمرير المتداخل. في هذا التغيير، نعيد سلوك مواصلة التمرير السريع الذي تمت إزالته في I9326a. سيظل بإمكاننا إلغاء الرسوم المتحركة للتحريك السريع في حال تمت إزالة العنصر الفرعي من التركيب. (I467f4، b/405910180، b/419049142، b/416784125) - إعادة إضافة استخدام
scrollAnimationSpecفيContentInViewNodeتمت إزالة السلوك أثناء عمليةscrollAnimationSpecالإيقاف النهائي، ما أدّى إلى تعطُّل حالات الاستخدام. (I1436a، b/403301605) - متوازن
LazyLayout(If5db4)،LazyLayoutPrefetchStateوطريقة الجدولةschedulePrecompositionوschedulePrecompositionAndPremeasure. (I4362f، b/252853717) وLazyLayoutItemProvider(Icce09،b/261565751) - السماح لـ Compose بتفعيل
ViewTreeObserver.OnScrollChangedيتم تقديم هذا السلوك ضمن العلامةisOnScrollChangedCallbackEnabled. أضفنا أيضًا دالة موسّعة للسمةDelegatableNode dispatchOnScrollChanged. (I34b9d، b/238109286) - إضافة واجهات برمجة التطبيقات
Modifier.scrollable2DوScrollable2DStateوواجهات برمجة التطبيقات المصاحبة لإنشاء حالات تم أيضًا تقديم دوال شائعة خاصة بإضافة التمرير. (Ic61c8، b/214410040) - تم إيقاف
PrefetchSchedulerوالتخصيص نهائيًا لصالح التنفيذ الداخلي الذي ينفّذ كل العمليات تلقائيًا. (I3a9a6، b/420551535) - لم يعُد
TextFieldState.edit { }يمحو سجلّ التراجع. بدلاً من ذلك، يتم إنشاء إدخال تراجع مستقل. إذا كان السلوك المطلوب هو محو قائمة التراجع بعد طلب تعديل، يُرجى استخدامTextFieldState.undoState.clearHistory(). (I12c14) - تتوافق الآن كلّ من قائمة السياقات وشريط أدوات "التحديد" مع "العناصر الذكية" (التحديد الذكي)
- تمت إضافة نص منمّق
OutputTransformationللسماح بتنسيق ناتجTextFieldباستخدام التحميل الزائدstate. TextField: قائمة السياق (قائمة النقر بزر الماوس الأيمن)- عند نسخ نص من عناصر Text قابلة للإنشاء متعددة في
SelectionContainer، سيتم الآن إضافة فاصل أسطر \n بين النصوص الواردة من عناصر Text القابلة للإنشاء المنفصلة. (I25332، b/285036739) - إضافة واجهة برمجة تطبيقات لإنشاء قوائم نقطية مخصّصة من خلال
AnnotatedString(I1d066، b/383269496، b/139326648) - سيؤدي التحميل الزائد
stateلـBasicTextFieldإلى إبقاء المؤشر في نطاق العرض عند تغيُّر حجمه. (I0eb41، b/406187741) - تغيير غير متوافق: تنفّذ الآن عقدتا المعدِّل
backgroundوborderالواجهةSemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافةSemanticsNodesجديد إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تفترض بنية شجرة الدلالات. على سبيل المثال، يمكن أن تفشل الاختبارات التي تستخدمonChildوonParentوonSiblingوطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لإصلاح حالات الفشل هذه هي إضافةtestTagإلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثلonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
الإصدار 1.9.0-rc01
30 يوليو 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.0-rc01. يتضمّن الإصدار 1.9.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- لم يعُد
TextFieldState.edit { }يمحو سجلّ التراجع. بدلاً من ذلك، يتم إنشاء إدخال تراجع مستقل. إذا كان السلوك المطلوب هو محو قائمة التراجع بعد تنفيذ طلبedit، يُرجى استخدامTextFieldState.undoState.clearHistory(). (I12c14)
الإصدار 1.9.0-beta03
16 يوليو 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.0-beta03. يتضمّن الإصدار 1.9.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في إصدار سابق يؤدي إلى تعطيل سلوك العناوين الثابتة في الشبكات الكسولة عند توفير محتوى عنوان فارغ. (e3e3400)
الإصدار 1.9.0-beta02
2 يوليو 2022
تم طرح androidx.compose.foundation:foundation-*:1.9.0-beta02. يتضمّن الإصدار 1.9.0-beta02 هذه التعديلات.
الميزات الجديدة
- تتيح هذه السياسة استخدام العناصر الذكية في قائمة السياقات وشريط أدوات التحديد.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح خطأ يؤدي إلى تعذُّر نقل المؤشر في
TextFieldsالجديد باستخدام مفاتيح الاتجاهات في بعض لوحات المفاتيح الخارجية أو أجهزة التحكّم عن بُعد في التلفزيون، ويتم بدلاً من ذلك تبديل التركيز إلى عنصر آخر قابل للإنشاء. تمت إضافةComposeFoundationFlag.isTextFieldDpadNavigationFixEnabledلإتاحة إيقاف هذا الإصلاح مؤقتًا إذا تسبّب في سلوك غير مرغوب فيه بطريقة لا يمكن استردادها. (Ie1922)
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في عدم ثبات العناوين الثابتة في حال توفّر عنصر مثبّت. (I9198d، b/385006133)
- تتّبع
TextObfuscationMode.RevealLastTypedالآن إعداد النظام "TEXT_SHOW_PASSWORD". (I41c0c) - تم إصلاح الخطأ الذي كان يؤدي إلى ظهور التحذير "تم لصق المحتوى من الحافظة" بشكل خاطئ في
BasicTextFieldعند فتح شريط أدوات النص للمرة الأولى. (I5fda2)
الإصدار 1.9.0-beta01
18 يونيو 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.0-beta01. يتضمّن الإصدار 1.9.0-beta01 هذه التعديلات.
التغييرات التي قد تؤدي إلى أعطال
- تنفّذ الآن عقدتا المعدِّل
backgroundوborderالواجهةSemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافةSemanticsNodesجديد إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تفترض بنية شجرة الدلالات. على سبيل المثال، يمكن أن تفشل الاختبارات التي تستخدمonChildوonParentوonSiblingوطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لإصلاح حالات الفشل هذه هي إضافةtestTagإلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثلonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
تغييرات واجهة برمجة التطبيقات
- تمّت إعادة تسمية
Modifier.addTextContextMenuComponentsإلىappendTextContextMenuComponents. (I4c43f) - تمت إزالة
AnnotatedOutputTransformationونقل وظائفaddStyleإلىTextFieldBuffer. سيظل بإمكانك الاتصال برقمaddStyleمنOutputTransformationفقط. (I9930a، b/417991824) - تمت إعادة كتابة السمة Clickable لتجنُّب استخدام إدخال مؤشر التعليق كتحسين. يتم تفعيل هذه الميزة باستخدام علامة، ويمكنك إيقافها إذا واجهت خطأً في التنفيذ الجديد:
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65) - تمت إضافة
isFlingCancellationWithNestedScrollFixEnabledلحلّ مشكلة في نشر حركة التمرير السريع في التمرير المتداخل. في هذا التغيير، نعيد سلوك مواصلة العرض الذي تمت إزالته في aosp/3260391. سيظل بإمكاننا إلغاء الرسوم المتحركة للتحريك السريع في حال تمت إزالة العنصر الفرعي من التركيب. (I467f4، b/405910180، b/419049142، b/416784125) WindowInsetsRulers: تم تغييرrulersIgnoringVisibilityإلى الحد الأقصى. تم تغييرgetDisplayCutoutBounds()لتصبح دالة إضافية منPlacementScope. تم تغييرWindowInsetsAnimationPropertiesإلىWindowInsetsAnimation، وتم تغييرgetAnimationProperties()إلىgetAnimation(). (I3816f)- تم تغيير
InsetsRulersليكون في الرمز المشترك مع الاسمWindowInsetsRulers. تم تبسيط واجهة برمجة التطبيقات بحيث تكون جميع عمليات الإدخالWindowInsetsRulers. تم استخراج خصائص الرسوم المتحركة غير الخاصة بالمسطرة إلى فئةAnimationProperties. يمكن استخدامWindowInsetsRulers.innermostOf()لدمج عدةWindowInsetsRulers. (I2f0c6، b/415012444)
إصلاح الأخطاء
- إعادة إضافة استخدام
scrollAnimationSpecفيContentInViewNodeتمت إزالة السلوك أثناء عمليةscrollAnimationSpecالإيقاف النهائي، ما أدّى إلى تعطُّل حالات الاستخدام. (I1436a، b/403301605)
الإصدار 1.9.0-alpha04
4 يونيو 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.0-alpha04. يتضمّن الإصدار 1.9.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
PrefetchSchedulerوالتخصيص نهائيًا لصالح التنفيذ الداخلي الذي ينفّذ كل العمليات تلقائيًا. (I3a9a6، b/420551535) - تم تعديل
Scrollable2DStateلاستخدام إزاحة في طريقةcanScrollبدلاً من زاوية. (I28694، b/417268474) - تم استبدال
addAnnotationفيAnnotatedOutputTransformationبـaddStyle. (I91c6f، b/417991824) - متوازن
LazyLayout(If5db4) - تمت إضافة دالة إنشاء فارغة لـ
LazyLayoutPrefetchStateوطريقة الجدولةschedulePrecompositionوschedulePrecompositionAndPremeasure. (I4362f، b/252853717) - تم تقديم
ProcessTextKeyعلى أجهزة Android، ويُستخدم لعناصر قائمة السياق التي تتم إضافتها لإجراءات الغرضPROCESS_TEXT. (If0ac4) - إتاحة واجهات برمجة التطبيقات لقائمة السياقات للجميع تم عرض
Modifier.addTextContextMenuComponentsوModifier.filterTextContextMenuComponentsلإضافة عناصر وإزالتها في قائمة السياق. وأتحنا أيضًا واجهات برمجة التطبيقات الأساسية التالية للجميع حتى يتمكّن المستخدم من إنشاء قائمة خيارات مخصّصة:TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
- إصلاح المشكلة في
LazyLayoutItemProvider(Icce09، b/261565751) - تم طرح ميزات "الاختيار الذكي" في Android التي يمكن تفعيلها أو إيقافها من خلال
ComposeFoundationFlags.isSmartSelectionEnabled. كما أنّه يعرضLocalTextClassifierCoroutineContextcompositionLocalثابتًا يمكن استخدامه لتحديدCoroutineContextالذي يتم فيه تشغيل مهمةTextClassification. (I1dbaa، b/139321320)
الإصدار 1.9.0-alpha03
20 مايو 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.0-alpha03. يتضمّن الإصدار 1.9.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
AnnotatedOutputTransformationالتي توفّر طريقة لإضافة تعليقات توضيحية إلىTextFieldقبل العرض. (Ibc6f0، b/389978748) - إطلاق الزاحف
LazyLayoutMeasurePolicyوجعل الزاحفLazyLayoutMeasureScopeثابتًا (I8c5df، b/252853717) - تعرض
BasicSecureTextFieldالآن ScrollState الخاص بـBasicTextFieldالداخلي. (I6e576) - تم تقديم المعدِّلَين
Modifier.onFirstVisibleوModifier.onVisibilityChanged، وهما معدِّلان رفيعا المستوى يستندان إلىModifier.onLayoutRectChanged. تم تصميم هذه المعدِّلات خصيصًا للتعامل مع العديد من متطلبات التطبيقات الشائعة، مثل تسجيل مرّات الظهور وتشغيل الفيديوهات تلقائيًا وما إلى ذلك. وقد تم تصميمها مع مراعاة الأداء لكي يمكن استخدامها في سيناريوهات مهمة مستندة إلى القوائم بدون خطر التأثير في أداء التمرير. بالإضافة إلى واجهات برمجة التطبيقات الخاصة بأدوات التعديل هذه، تمت إضافة واجهات برمجة تطبيقات أخرى إلىRelativeLayoutBoundsمن أجل توفير حالات الاستخدام هذه، بالإضافة إلى تسهيل إنشاء أدوات تعديل مخصّصة مشابهة تناسب حالة الاستخدام المحدّدة للمطوّرين. (I759b8) - تم تقديم عملية تحميل زائدة
detectDragGesturesتتضمّن عناصر تحكّم في ميل اللمس وقفل الاتجاه. (Iadb0d) - إضافة واجهات برمجة التطبيقات
Modifier.scrollable2DوScrollable2DStateوواجهات برمجة التطبيقات المصاحبة لإنشاء حالات تم أيضًا تقديم دوال شائعة خاصة بإضافة التمرير. (Ic61c8، b/214410040) - لا يمكن مقارنة قيم ألوان 64 بت في Compose مباشرةً مع قيم ألوان
ColorLongsفي Android لأنّ أرقام تعريف مساحة الألوان غير مرتبة لبعض مساحات الألوان. لتحويل مساحات الألوان من Android وإليه، تمت إضافة واجهتَي برمجة تطبيقات جديدتَين:toColorLong()وfromColorLong(). (I36899)
إصلاح الأخطاء
- عند نسخ نص من عناصر Text قابلة للإنشاء متعددة في
SelectionContainer، سيتم الآن إضافة فاصل أسطر\nبين النصوص الواردة من عناصر Text القابلة للإنشاء المنفصلة. (I25332، b/285036739)
الإصدار 1.9.0-alpha02
7 مايو 2025
تم طرح androidx.compose.foundation:foundation-*:1.9.0-alpha02. يتضمّن الإصدار 1.9.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح طريقة إضافة تغييرات إدخال المؤشر إلى
VelocityTrackerفيDragGestureNode، ويمكن التحكّم في ذلك باستخدام العلامة الجديدةisOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992، b/292556787، b/236451818) - جعل
await[Vertical/Horizontal]PointerSlopOrCancellationعامًا (I6968b، b/298903681) - القيمة التلقائية لـ
AbstractComposeView.consumeWindowInsetsهي الآن "خطأ". سيتم تعديلWindowInsetsتلقائيًا ليناسب حجم الطفل وموضعه عند ضبط القيمة على "خطأ"، لذا لن يكون هناك حاجة إلى ضبط القيمة التلقائية على "صحيح" بعد الآن. يحلّ هذا الإجراء المشكلة المتمثّلة في عدم تلقّي "طرق العرض" الفرعية لتحديثاتWindowInsetsتلقائيًا. يمكن للمطوّرين إيقاف التحديث إما عن طريق تغيير قيمةComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledالتجريبية إلى true أو، والأفضل، عن طريق ضبط قيمةAbstractComposeView.consumeWindowInsetsعلى true في جميع مثيلات عرض Compose. (I6fa0a، b/411868840)
المساهمة الخارجية
- تم إصلاح عُطل Pager عند استخدام قيم كبيرة جدًا في beyondViewportPageCount (Idb2db)
الإصدار 1.9.0-alpha01
23 أبريل 2025
تم طرح androidx.compose.foundation:foundation-*: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 أو إصدار أحدث.تغيير غير متوافق مع الإصدارات السابقة: لا تتوافق عمليات التحميل الزائد
clickableوcombinedClickableوselectableوtoggleableوtriStateToggleableبدون مَعلمة Indication الآن إلا مع مثيلاتIndicationNodeFactoryالتي يتم توفيرها باستخدامLocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات أدوات التعديل هذه باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر عملية تنفيذ متوقّفة نهائيًا لـ Indication إلىLocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عُطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، والسماح للدوال القابلة للإنشاء التي تستخدم هذه المعدِّلات بتخطّي إعادة الإنشاء. يمكنك استخدامComposeFoundationFlags.isNonComposedClickableEnabled=falseلإيقاف هذا التغيير في السلوك مؤقتًا، وذلك لتفعيل ترقية Compose بدون أن يتم حظرك من عملية النقل هذه. ستتم إزالة هذه العلامة بعد إصدار واحد ثابت. لحلّ هذه المشكلة، عليك نقل أي عمليات تنفيذ متوقّفة نهائيًا لـ Indication لاستخدامIndicationNodeFactoryبدلاً منها. يمكنك أيضًا استخدام عمليات التحميل الزائد مع مَعلمة Indication صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات غيرIndicationNodeFactoryمن Indication، على الرغم من أنّ هذا الإجراء لا يُنصح به لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333)
تغييرات واجهة برمجة التطبيقات
- إضافة واجهة برمجة تطبيقات لإنشاء قوائم نقطية مخصّصة من خلال
AnnotatedString(I1d066، b/383269496، b/139326648) - السماح لـ Compose بتفعيل
ViewTreeObserver.OnScrollChangedيتم تقديم هذا السلوك ضمن العلامةisOnScrollChangedCallbackEnabled. أضفنا أيضًا دالة موسّعة للسمةDelegatableNode dispatchOnScrollChanged. (I34b9d، b/238109286) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5)
- تمت إضافة إمكانية إجراء فحص lint للرمز
TextFieldStateللتأكّد من تذكّره داخل التركيب. يمكنك استخدامrememberTextFieldStateبدلاً من ذلك. (I53d74) - تمت إضافة دعم فحص Lint لـ
FocusRequesterللتأكّد من تذكّره داخل التركيب (I6bf91) - تمت إضافة إمكانية إجراء فحص lint للرمز
BringIntoViewRequesterللتأكّد من تذكّره داخل التركيب. (Ibfba6) - تم تقديم نطاقات لطلبات
schedulePrefetchفي استراتيجيات الشبكات والقوائم لتتوافق مع إمكاناتLazyListPrefetchStateفي توفير معلومات الحجم والفهرس. (Iad80c) - تغيير غير متوافق مع الإصدارات السابقة: لا تتوافق عمليات التحميل الزائد
clickableوcombinedClickableوselectableوtoggleableوtriStateToggleableبدون مَعلمة Indication الآن إلا مع مثيلاتIndicationNodeFactoryالتي يتم توفيرها باستخدامLocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات أدوات التعديل هذه باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر عملية تنفيذ متوقّفة نهائيًا لـ Indication إلىLocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عُطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، والسماح للدوال القابلة للإنشاء التي تستخدم هذه المعدِّلات بتخطّي إعادة الإنشاء. يمكنك استخدامComposeFoundationFlags.isNonComposedClickableEnabled=falseلإيقاف هذا التغيير في السلوك مؤقتًا، وذلك لتفعيل ترقية Compose بدون أن يتم حظرك من عملية النقل هذه. ستتم إزالة هذه العلامة بعد إصدار واحد ثابت. لحلّ هذه المشكلة، عليك نقل أي عمليات تنفيذ متوقّفة نهائيًا لـ Indication لاستخدامIndicationNodeFactoryبدلاً منها. يمكنك أيضًا استخدام عمليات التحميل الزائد مع مَعلمة Indication صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات غيرIndicationNodeFactoryمن Indication، على الرغم من أنّ هذا الإجراء لا يُنصح به لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333) - إضافة علامة للتحكّم في سلوك الجلب المسبق التلقائي المتداخل:
isAutomaticNestedPrefetchEnabled(I8d448) - أضِف حمولة زائدة للدالتَين
LazyGridStateوrememberLazyGridStateتأخذLazyLayoutCacheWindow. (I51151) - تضيف هذه السمة مساطر لإزاحة النوافذ. تضيف هذه السمة
DerivedRulerللسماح باحتساب مسطرة من مسطرة أخرى. تعديلPlacmentScopeلتنفيذ "الكثافة" (I658bc، b/359260964) - تمت إضافة دالة مصنع
WindowInsets()بدون وسيط لإنشاءWindowInsetsفارغ بسهولة. (I65f62، b/395311689) - تمت إضافة
PaddingValues.ZeroإلىPaddingValuesفارغ. (If193e، b/386255688)
إصلاح الأخطاء
- سيؤدي التحميل الزائد
stateلـBasicTextFieldإلى إبقاء المؤشر في نطاق العرض عند تغيُّر حجمه. (I0eb41، b/406187741) - تم تعديل واجهات برمجة التطبيقات
onVisibleItemsUpdatedفيLazyListPrefetchStrategyوLazyGridPrefetchStrategyللإبلاغ عن الحالة الأولية. (If2cfa)
الإصدار 1.8
الإصدار 1.8.3
18 يونيو 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.3. يتضمّن الإصدار 1.8.3 هذه التعديلات.
الإصدار 1.8.2
20 مايو 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.2. يتضمّن الإصدار 1.8.2 هذه التعديلات.
إصلاح الأخطاء
- تم طرح إصلاح يمنع احتساب عدد العناصر التي سيتم تحميلها للبحث المركّز من التسبّب في القسمة على صفر. تم تطبيق عملية التحقّق على جميع التنسيقات التي تستخدم
LazyLayoutBeyondBoundsState. (8e6dc8)
الإصدار 1.8.1
7 مايو 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.1. يتضمّن الإصدار 1.8.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في
BasicTextوTextAutoSizeحيث يؤدي استخدامTextOverflow.Ellipsizeإلى ظهور نص أصغر من الحجم الأمثل. (I1e1d8، b/396582066) - تم إصلاح خطأ في
BasicTextFieldكان يؤدي إلى حدوث أعطال متفرقة عندما يتخطىTextFieldDecoratorاستدعاءinnerTextField. (I2638c)، b/308398612 - تم إصلاح خطأ في
TextFieldأدّى إلى اختفاء شريط أدوات النص ومقابض التحديد تمامًا عند تغيير مثيلTextFieldState. (I8068a)، b/390477786 - تم إصلاح خطأ في
BasicTextحيث لم يؤدِّ تغيير الحد الأدنى لعرض القيود إلى تعديل موضع النص عندما تم ضبطtextAlignعلى قيمة غير تلقائية. (I77a96), b/406305552
الإصدار 1.8.0
23 أبريل 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0. يتضمّن الإصدار 1.8.0 هذه التعديلات.
الإصدار 1.8.0-rc03
9 أبريل 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0-rc03. يتضمّن الإصدار 1.8.0-rc03 هذه التعديلات.
الإصدار 1.8.0-rc02
26 مارس 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0-rc02. يتضمّن الإصدار 1.8.0-rc02 هذه التعديلات.
الإصدار 1.8.0-rc01
12 مارس 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0-rc01. يتضمّن الإصدار 1.8.0-rc01 هذه التعديلات.
الإصدار 1.8.0-beta03
26 فبراير 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0-beta03. يتضمّن الإصدار 1.8.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة سمة دلالية جديدة
InputTextتسجّل قيمة حقل نصي قبل تطبيق عملية تحويل الإخراج. (Iae46a، b/395911609، b/176949051) - تمت إزالة عمليات التحميل الزائد
AutoSizeالتي تم إيقافها نهائيًا. يُرجى استخدام واجهات برمجة التطبيقاتTextAutoSizeالتي تؤدي الوظيفة نفسها. (I2c90f) - تم إصلاح مشكلة التخزين المؤقت في
TextAutoSizeحيث يمكن أن يؤدي تمرير تنسيق ثانٍ باستخدام القيود نفسها إلى استخدام حجم الخط الثاني الأكبر بدلاً من الأكبر. (Id367f)
الإصدار 1.8.0-beta02
12 فبراير 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0-beta02. يتضمّن الإصدار 1.8.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عمل عمليات تنفيذ التمرير الزائد باستخدام
LayoutModifierNodeبشكل صحيح داخل الحاويات القابلة للتمرير.
الإصدار 1.8.0-beta01
29 يناير 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0-beta01. يتضمّن الإصدار 1.8.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة
SemanticsNodeInteraction.semanticsId(). يمكنك استخدامSemanticsNodeInteraction.fetchSemanticsNode().idكبديل. (Ie397a) - إعادة كتابة واجهة برمجة التطبيقات
requestAutofillلتكون خارج مدير الملء التلقائي (Id1929) - تم وضع علامة "متوقّف نهائيًا" على
ContextualFlowRowوContextualFlowColumn. تم تقديم هذا المكوّن التجريبي في الإصدار 1.7 ولم يتم تثبيته بعد، وتم اعتبار تنفيذه غير مرغوب فيه. في المستقبل، قد يتم توفير مكوّن يحلّ حالات الاستخدام التي كان من المفترض أن يحلّها هذا المكوّن.- تحتوي
FlowRowوFlowColumnعلى عمليات تحميل تجريبية تم تقديمها في الإصدار 1.7 وتتضمّن المَعلمةoverflow. تم إيقاف استخدام هذه المَعلمة نهائيًا، ويمكن استخدام عمليات التحميل الزائد بدون هذه المَعلمة بدلاً منها. سيكون السلوك التلقائي "للتجاوز" في هذه الحالات هو "القص"، كما كان منذ طرحه. - يمكن تنفيذ العديد من حالات استخدام
ContextualFlowRowباستخدامFlowRow، ولكنّنا ندرك أنّ هذا لا ينطبق على جميع الحالات. يمكن تنفيذContextualFlowRowبالكامل في مساحة المستخدم، ويمكن محاولة نسخ عملية التنفيذ وتعديلها إذا لزم الأمر. نأمل في المستقبل أن نجد طريقة مختلفة لحلّ حالات الاستخدام هذه. (Ibafec)
- تحتوي
إصلاح الأخطاء
- تم إصلاح مشكلة تخطيط النص الذي يتضمّن علامة الحذف الإيجازي والذي تتم ترجمته بشكل غير صحيح أحيانًا أثناء الرسوم المتحركة. يمكنك الاطّلاع على b/389707025 لمزيد من المعلومات (Ie55b1، b/389707025)
- تم إصلاح خطأ في
BasicTextحيث تم ضبطTextAutoSizeوmaxLinesعلى 1. (Ic0450، b/376834366) - أصبح الحدّ الأدنى لارتفاع النص الداخلي يأخذ المَعلمة
minLinesفي الاعتبار. وهذا يعني أنّ الحدّ الأدنى للارتفاع الداخلي الذي تمّ تسجيله لن يكون أقل من الارتفاع المطلوب لاستيفاء المَعلمةminLines(I225f9، b/388299762).
الإصدار 1.8.0-alpha08
15 يناير 2025
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha08. يتضمّن الإصدار 1.8.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- AutoSize: تمت إعادة تسمية
AutoSizeإلىTextAutoSizeونشر واجهات برمجة التطبيقات التي تتيح إنشاء عمليات تنفيذ مخصّصة لـTextAutoSize. راجِعTextAutoSizeSampleللاطّلاع على مثال على تنفيذ حجم تلقائي مخصّص للنص. (I85756) - تم نقل علامة الميزة
DetectTapGesturesEnableNewDispatchingBehaviorإلىComposeFoundationFlagsوإعادة تسميتها إلىisDetectTapGesturesImmediateCoroutineDispatchEnabled. تم إيقاف العلامة القديمة نهائيًا، وسيتم الآن تفويضها إلىComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabledبدلاً من ذلك. (I62932)
إصلاح الأخطاء
- يتم تفعيلها
DetectTapGesturesEnableNewDispatchingBehaviorتلقائيًا. تستخدم واجهات برمجة التطبيقاتTapGestureDetectorالآن السلوك الجديد للإرسال (الإرسال الفوري) تلقائيًا. (I9f2bc، b/369648479) - تم إصلاح المعدِّلات
requiredWidth/Height/Sizeللتعامل مع الأحجام الأصلية بشكلٍ صحيح. (Ie3d7d، b/368113212)
المساهمة الخارجية
- تم توحيد
BasicTooltipفي Foundation وBasicTooltip/Tooltipفي Material3. (Ifc2e6) - تمت إضافة واجهة Clipboard جديدة وتركيبة محلية لها. (I80809)
الإصدار 1.8.0-alpha07
11 ديسمبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha07. يتضمّن الإصدار 1.8.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة العلامة
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledالتي ساعدت في التراجع عن إزالةgraphicsLayerالداخلي منBasicText. إذا كنت تستخدم هذا الخيار، يُرجى إعلامنا بالأسباب من خلال إرسال تقرير عن الخطأ. يمكنك أيضًا إدخالModifier.graphicsLayer()في مكالماتBasicTextللحصول على السلوك نفسه كما كان من قبل. (Id9f90) - تمت إضافة عملية تنفيذ تلقائية للغة
stickyHeaderالجديدة الخاصة بالنطاق. (I68986) - يجب أن يستخدم
LocalAutofillHighlightColorالتركيبة المحلية نوع Color. (I0e05b) - تمت إعادة تسمية
OverscrollEffect#withoutDrawingإلىOverscrollEffect#withoutVisualEffect. (I1a154)
إصلاح الأخطاء
- إصلاح متابعة لمشكلة في احتساب هدف
AnchoredDraggableحيث يمكن أن يستقرّ عند نقطة ارتساء خاطئة لبعض التمريرات السريعة. (I23b87، b/367660226)
المساهمة الخارجية
- إضافة
BringIntoViewResponderModifierNodeإلى واجهة المستخدم، ما يوفّر طريقة جديدة لتنفيذ وظيفة "إظهار العنصر"، بالإضافة إلى إمكانية تنفيذها على مستوى النظام الأساسي (Ia6dd8) - نحن نغيّر طريقة رسم المؤشر بشكل طفيف. يمكنك استخدام
LocalCursorBlinkEnabledلإيقاف رسم المؤشر في الاختبارات. (I4c697)
الإصدار 1.8.0-alpha06
13 نوفمبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha06. يتضمّن الإصدار 1.8.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة المعدِّل
stylusHoverIcon. (Iff20a، b/331289114) - تم إيقاف
confirmValueChangeفيAnchoredDraggableStateنهائيًا. بدلاً من رفض تغييرات الحالة، يجب ألا تكون عناصر الربط غير المسموح بها في مجموعة عناصر الربط النشطة، ويجب استخدامOverscrollEffectللإشارة إلى عدم توفّر الإجراء المطلوب. (Ia717f) - تغيير مدير الملء التلقائي ليكون واجهة (I84914، b/376080755)
- تضيف واجهتَي برمجة التطبيقات
OverscrollEffect#withoutDrawingوOverscrollEffect#withoutEventHandling، وتنشئ هاتان الواجهتان نسخة مغلفة من تأثير التمرير السريع الذي لا يرسم الأحداث أو يعالجها على التوالي، ما يتيح عرض التمرير السريع في مكوّن منفصل عن المكوّن الذي يرسل الأحداث. على سبيل المثال، إيقاف عرض التمرير الزائد داخل قائمة يتم تحميلها بشكل كسول، ثم عرض التمرير الزائد بشكل منفصل في الأعلى أو في مكان آخر (Idbb3d، b/266550551، b/204650733، b/255554340، b/229537244) - إضافة ميزة الملء التلقائي إلى شريط أدوات النص (Ie6a4c)
- يتم إيقاف
OverscrollConfigurationوLocalOverscrollConfigurationنهائيًا، ويتمّ إضافةrememberPlatformOverscrollFactoryلإنشاء مثيل من التنفيذ التلقائي للتمرير السريع أو تخصيص مَعلماته. لإيقاف التمرير الزائد، استخدِمLocalOverscrollFactory provides nullبدلاً منLocalOverscrollConfiguration provides null. لتغيير لون التوهّج أو المساحة المتروكة، استخدِمLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)بدلاً منLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9 وb/255554340 وb/234451516) - تم تغيير السمة
effectModifierفيOverscrollEffectلتصبحnode: DelegatableNode، بما يتوافق مع واجهات برمجة التطبيقات الأخرى. (Ic0b46، b/255554340) - تمت إزالة واجهة برمجة التطبيقات التجريبية
GlobalAssertions. كان الغرض من استخدامها هو إجراء عمليات التحقّق من إمكانية الوصول، لذا استخدِمenableAccessibilityChecks()لهذا الغرض بدلاً من ذلك. (I59322)
الإصدار 1.8.0-alpha05
30 أكتوبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha05. يتضمّن الإصدار 1.8.0-alpha05 هذه التعديلات.
الميزات الجديدة
- إتاحة تغيير حجم النص تلقائيًا مرِّر مثيلاً من
AutoSize(مثلAutoSize.StepBased) إلى عنصر النص القابل للإنشاء المفضّل لديك (مثلBasicText) وشاهِد حجم النص يتكيّف مع المساحة المتاحة. (Ice7e0، b/139320827) - تضيف واجهتَي برمجة التطبيقات
OverscrollFactoryوLocalOverscrollFactoryللسماح بضبط التمرير الزائد ضمن التسلسل الهرمي. سيتم تلقائيًا استخدام القيمة المقدَّمة من خلالLocalOverscrollFactoryلإنشاءOverscrollEffect. لإنشاء تأثير وحفظه من المصنع الحالي المقدَّم، استخدِمrememberOverscrollEffect(). (I51ca4، b/255554340)
تغييرات واجهة برمجة التطبيقات
- إضافة
CompositionLocalالتي يمكن استخدامها لتعديل درجة لون التمييز الذي يظهر عند نجاح عملية الملء التلقائي (I32092) - تمت إزالة
ScrollableDefaults.overscrollEffect، ويجب استخدامrememberOverscrollEffectبدلاً منها. سيؤدي ذلك إلى إنشاء مثيل من عملية التنفيذ الحالية للتمرير السريع مع توفيرLocalOverscrollFactory. (I1651a، b/255554340),(b/234451516) - تتضمّن هذه السمة واجهة
AutofillManagerجديدة يمكن استخدامها لتحسين رحلة المستخدمين في ميزة "الملء التلقائي"، بالإضافة إلى العلامةisSemanticAutofillEnabledلتفعيل هذا الإصدار الجديد من ميزة "الملء التلقائي". (I9d484) - تزيل هذه الطريقة
CombinedClickableNode. تم إتاحة واجهة برمجة التطبيقات التجريبية هذه مؤقتًا لإتاحة إمكانية تحسين الأداء، ولكن لم يعُد هناك حاجة إليها. بدلاً من ذلك، عليك استخدامModifier.combinedClickableمباشرةً كما هو الحال مع واجهات برمجة التطبيقات الأخرى الخاصة بالمعدِّلات. (I4b658) - تضيف هذه السمة عمليات تحميل زائدة إلى
horizontalScrollوverticalScrollوLazyColumnوLazyRowوLazyHorizontalGridوLazyVerticalGridوLazyHorizontalStaggeredGridوLazyVerticalStaggeredGridوHorizontalPagerوVerticalPagerمع إمكانية تحديدOverscrollEffectمخصّص. سيتلقّىOverscrollEffectالمقدَّم الأحداث، وسيتم عرضه ضمن حدود هذه المكوّنات. يُرجى العِلم أنّه لا يمكن رسمOverscrollEffectنفسه مرتين، لذا لا يمكنك رسمOverscrollEffectنفسه الذي تم توفيره لأحد هذه المكوّنات بشكل منفصل باستخدامModifier.overscroll. سيتم تناول حالة استخدام رسم التمرير الزائد خارج حدود هذه المكوّنات بشكل منفصل في المستقبل. (I2dc42 وb/266550551 وb/234274772 وb/224572538 وb/353805117)
الإصدار 1.8.0-alpha04
16 أكتوبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha04. يتضمّن الإصدار 1.8.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة دوال رد الاتصال
DelegatableNode#onDensityChangeوDelegatableNode#onLayoutDirectionChangeللسماح بتعديل حالة العقدة عند تغيُّرها. (I04f3e، b/340662451) - تتضمّن الفقرة و
ParagraphIntrinsicsالآن قائمة بجميع التعليقات التوضيحية المطبّقة علىAnnotatedString، بينما كانت تتضمّن سابقًا قائمةSpanStylesفقط. (I12f80) - تم تقديم
PointerInputModifierNode#touchBoundsExpansion، والذي يمكن استخدامه لتكبير حدود اللمس لمعدِّل إدخال مؤشر واحد. (Iccf02، b/335339283)
إصلاح الأخطاء
- تم إصلاح خطأ كان يتسبب في عدم احتساب الحدود الموضعية التي تم تمريرها إلى
AnchoredDraggableDefaults.flingBehaviorبشكل صحيح في بعض السيناريوهات. (Ifdf0d، b/367660226) - إصلاح مشكلة العناصر القابلة للتمرير المتداخلة التي تتم إزالتها من شجرة العُقد أثناء التمرير السريع الجاري. ستلغي هذه العُقد الآن حركة التمرير السريع وسترسل حدث
onPostFlingبشكل صحيح مع السرعة المتبقية. نقدّم أيضًا العلامةNewNestedScrollFlingDispatchingEnabledللتحكّم في السلوك في حال حدوث انحدارات. ستتم إزالة العلامة قبل الإصدار التجريبي. (I05c37، b/371168883) - تم إصلاح الخطأ الذي كان يؤدي إلى تلقّي
OverscrollEffectsالذي تم تمريره إلىModifier.anchoredDraggableقيم دلتا ثنائية الأبعاد بدلاً من قيم دلتا أحادية الأبعاد. (Ie52c0)
الإصدار 1.8.0-alpha03
2 أكتوبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha03. يتضمّن الإصدار 1.8.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تحديث إصدار Kotlin إلى 1.9 (I1a14c)
- تمت إضافة العلامة
DraggableAddDownEventFixEnabled(I848d5) - تم تقديم دور دلالي جديد باسم "لوحة عرض دوّارة" لمحاكاة سلوك القائمة في أدوات التقسيم إلى صفحات لخدمات تسهيل الاستخدام. (Id354b، b/354109776، b/239672673)
- تمت إزالة المعدِّل الضمني
graphicsLayerمن الدالة البرمجية القابلة للإنشاءBasicText. تمت إضافة العلامة التجريبيةComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledللتمكّن من الرجوع إلى السلوك القديم. (Ie478d) - تمت إضافة
Modifier.recalculateWindowInsets()للسماح للأطفال في التسلسل الهرمي باستخدامinsetsPaddingحتى عندما يربطهم الوالدَين بدونconsumeWindowInsets(). (I7f9e4)
إصلاح الأخطاء
- تنفيذ ميزة "الاستلام بالإيماءات" في
detectDragGesturesوالعناصر القابلة للسحب والتمرير إذا توقّف عنصر قابل للسحب خاص بالطفل عن الاستجابة لإيماءة، يمكن للعنصر الرئيسي الاستجابة لها. يتيح ذلك التعامل مع الإيماءات بشكل أكثر استمرارًا وتكاملاً. (Ic88fe) - تعديل سلوك إلغاء التمرير السريع في العناصر القابلة للتمرير الآن، إذا تم تحريك عنصر قابل للتمرير السريع ووصل إلى الحدود، سيتم نقل سرعة التمرير السريع بشكل صحيح إلى العنصر القابل للتمرير التالي في السلسلة بدلاً من مواصلة تحريك العنصر. (I9326a)
الإصدار 1.8.0-alpha02
18 سبتمبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha02. يتضمّن الإصدار 1.8.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتوفّر الآن الرمز
TextOverflow.StartEllipsisوالرمزTextOverflow.MiddleEllipsis، ما يتيح وضع علامة الحذف في بداية سطر النص الواحد أو وسطه (I38913، b/185418980).
الإصدار 1.8.0-alpha01
4 سبتمبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.8.0-alpha01. يتضمّن الإصدار 1.8.0-alpha01 هذه التعديلات.
الإصدار 1.7
الإصدار 1.7.8
12 فبراير 2025
تم طرح androidx.compose.foundation:foundation-*:1.7.8. يتضمّن الإصدار 1.7.8 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل في
BasicTextFieldمع تحويل الإدخال عند استبدال جزء من النص الذي تم لصقه. (I73702)
الإصدار 1.7.7
29 يناير 2025
تم طرح androidx.compose.foundation:foundation-*:1.7.7. يتضمّن الإصدار 1.7.7 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل
IndexOutOfBoundعند استخدام التعليقات التوضيحية للروابط. (Ic96d2) - تم إصلاح مشكلة إعادة الإنشاء اللانهائية في بعض الحالات الحدّية التي تتضمّن روابط. (I04a03)
الأخطاء المعروفة
- تم رصد خطأ يمكن أن يؤدي إلى التفاف النص بشكل غير متوقع في حالات نادرة على مستوى واجهة برمجة التطبيقات 35 في Android. لا يمكن حلّ هذه المشكلة في الإصدار 1.7، لذا سيتم حلّها في الإصدار 1.8. (b/391378120)
الإصدار 1.7.6
11 ديسمبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.6. يتضمّن الإصدار 1.7.6 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ظهور المحتوى المضمّن في النص الثابت لخدمات تسهيل الاستخدام.
- تم إصلاح المشكلة المتمثّلة في عدم إعادة ضبط
AndroidEmbeddedExternalSurfaceبشكلٍ صحيح وتعذُّر استخدامه عند إعادة الاستخدام في قائمة غير نشطة.
الإصدار 1.7.5
30 أكتوبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.5. يتضمّن الإصدار 1.7.5 هذه التعديلات.
إصلاح الأخطاء
- تأكَّد من عدم تكرار إنشاء العناصر المثبَّتة مرتين في مساحة الحشو الخاصة بالمحتوى. (Ic6224)
الإصدار 1.7.4
16 أكتوبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.4. يتضمّن الإصدار 1.7.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخلل الذي كان يتسبّب في حدوث تعطُّل نادر في حقول النص. (I475c6، b/313010266)
- تمت إزالة
ReusableContentHostفي جذر عناصر Lazy layout. كان هذا سببًا أساسيًا محتملاً لحدوث أعطال "تم استدعاء مقياس على عقدة غير نشطة". (Id6e60)
الإصدار 1.7.3
2 أكتوبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.3. يتضمّن الإصدار 1.7.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تسريب الذاكرة في
BasicTextعندما يتم ضبط minLines على قيمة غير القيمة التلقائية.
الإصدار 1.7.2
18 سبتمبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.2. يتضمّن الإصدار 1.7.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في العنصر القابل للسحب الذي كانت تنقصه أحداث النقر مع السحب، ما أدّى إلى ظهور عمليات التحريك السريع بشكل أبطأ من المعتاد.
الإصدار 1.7.1
10 سبتمبر 2024
- لم يتم إجراء أي تغييرات على عناصر Android. تمت إزالة
-desktopمن العناصر وإضافة-jvmStubsو-linuxx64Stubsمن العناصر. لا يُفترض استخدام أي من هذه الأهداف، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose.
الإصدار 1.7.0
4 سبتمبر 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0. يتضمّن الإصدار 1.7.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.6.0
- تم تحسين أداء
Modifier.clickableوModifier.focusableوModifier.indicationوModifier.scrollableوModifier.draggableبشكل كبير. في إطار هذا الجهد، تم إجراء التغييرات التالية على واجهة برمجة التطبيقات بالإضافة إلى التغييرات الداخلية- تمت إضافة واجهة برمجة تطبيقات جديدة للإشارات،
IndicationNodeFactory. يؤدي ذلك إلى تنفيذات أكثر فعالية لميزة "المؤشرات" مقارنةً بواجهة برمجة التطبيقاتrememberUpdatedInstanceالسابقة (التي تم إيقافها نهائيًا). للحصول على معلومات حول نقل البيانات، يُرجى الانتقال إلى developer.android.com. - تقبل الآن
clickable/combinedClickable/selectable/toggleableالمَعلمةMutableInteractionSourceالتي يمكن أن تكون فارغة. إذا كانت القيمة فارغة، وكان Indication المقدَّم هوIndicationNodeFactory، يمكن إنشاء Indication بشكل غير مباشر عند الحاجة فقط، ما يحسّن الأداء. إذا كنت لا تستخدم السمةMutableInteractionSource، ننصحك بتمرير قيمة فارغة بدلاً من تمريرremember { MutableInteractionSource() }. - تم إيقاف
Indication#rememberUpdatedInstanceنهائيًا. ويؤدي إلى انخفاض كبير في الأداء لا يمكن تجنّبه، كما يمنع إجراء تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقات الجديدةIndicationNodeFactory.
- تمت إضافة واجهة برمجة تطبيقات جديدة للإشارات،
- أصبح استخدام
BasicTextFieldTextFieldStateثابتًا الآن، وننصح جميع المواقع الإلكترونية التي تستخدم ميزة الاتصال بالبدء في نقل البيانات منBasicTextField(value, onValueChange)إلىBasicTextField(TextFieldState). - تم إيقاف
ClickableTextنهائيًا. لإضافة روابط قابلة للنقر إلى النص، استخدِمBasicTextمع التعليق التوضيحي الجديدLinkAnnotationفيAnnotatedString. تسمح السمةLinkAnnotationبتطبيق أنماط مخصّصة استنادًا إلى حالة الرابط (مثل التركيز أو التمرير). - نقدّم لك
ContextualFlowRowوEnhanced FlowRow/ColumnمعMaxLinesوOverflow. يسرّنا الإعلان عن تحسينات على الرمزين التجريبيينFlowRowوFlowColumn، إذ أصبحا يتضمّنان الآنmaxLinesوإمكانية عرض المحتوى الزائد، بالإضافة إلى طرح الرمزينContextualFlowRowوContextualFlowColumn. تم تصميم هذا التحديث لتوفير مكوّنات مثالية للأداء، حيث يكونContextualFlow*مثاليًا لعدد كبير من العناصر التي تستخدم إعداد maxLines صغيرًا وأزرارًا ديناميكية +N لعرض المزيد، ويكونFlowRowوFlowColumnمثاليًا لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRowأوFlowColumnحيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتناسب مع الحد الأقصى للمحور المتقاطع، اضبط قيمة تجاوز السعة علىFlowRowOverflow.VisibleأوFlowColumnOverflow.Visibleأثناء عملية التهيئة. يمكنك استكشافContextualFlowRowSampleوFlowRowSampleللاطّلاع على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082) - تمت إضافة إمكانية استخدام صور متحركة لظهور العناصر واختفائها في
LazyColumnوLazyRow. في السابق، كان من الممكن إضافة المعدِّلModifier.animateItemPlacement()من أجل إتاحة الرسوم المتحركة الخاصة بموضع الإعلان (إعادة الترتيب). أوقفنا نهائيًا استخدام معدِّل التعديل هذا وقدّمنا معدِّل تعديل جديدًا غير تجريبي باسمModifier.animateItem()يتيح لك إتاحة جميع أنواع الرسوم المتحركة الثلاثة: الظهور (التلاشي)، والاختفاء (التلاشي)، وإعادة الترتيب. (I2d7f7، b/150812265) - تم توفير دعم تجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة تطبيقات Android الرسمية (
ScrollCaptureCallback). - يتم استبدال مصادر السحب والإفلات
NestedScrollبـUserInputوSideEffectلاستيعاب التعريف الموسّع لهذه المصادر الذي يتضمّن الآن الصور المتحركة (التأثير الجانبي) وعجلة الماوس ولوحة المفاتيح (UserInput). - يمكن الآن وضع علامة "عاجل" على طلبات
LazyLayoutالمسبقة، ما يعني أنّنا نتوقّع الحاجة إلى هذا العنصر في الإطار التالي ونريد تجاهل ميزانية الإطار للتأكّد من إنجاز المزيد من العمل مسبقًا (Id513f). - تفعيل ميزة الكتابة بخط اليد باستخدام قلم الشاشة على الأجهزة التي تعمل بالإصدار Android U والإصدارات الأحدث (I002e4)
- تمت ترقية العديد من واجهات برمجة التطبيقات إلى إصدار ثابت
- أجهزة النداء، والمحاذاة، وإدراج النوافذ
الإصدار 1.7.0-rc01
21 أغسطس 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-rc01. يتضمّن الإصدار 1.7.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ برمجي كان يؤدي إلى تعطُّل التطبيق عند التركيز على أي عنصر داخل عنصر رئيسي قابل للتركيز (أو النقر) وتم إيقافه. (b/317561689)
الإصدار 1.7.0-beta07
7 أغسطس 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-beta07. يتضمّن الإصدار 1.7.0-beta07 هذه التعديلات.
إصلاح الأخطاء
- ستعرض الآن دوال
SemanticsNodeInteractionإدخال النص ذات الصلةperformTextReplacementوperformTextInputوperformTextClearanceأخطاء تأكيد عند طلبها علىTextFieldsللقراءة فقط. (I4ae8f) - تم إصلاح خلل مرئي في الروابط التشعبية. (I23311)
- تم إصلاح مشكلة عدم عمل المعدِّل
contentReceiverمع بعض برامج تحرير أسلوب الإدخال. - إنشاء السرعة: منع انتشار قيم NaN في واجهة مستخدم Compose وFoundation
الإصدار 1.7.0-beta06
24 يوليو 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-beta06. يتضمّن الإصدار 1.7.0-beta06 هذه التعديلات.
الإصدار 1.7.0-beta05
10 يوليو 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-beta05. يتضمّن الإصدار 1.7.0-beta05 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة التعامل مع قيم Nan في
SnapFlingBehaviorوPager
الإصدار 1.7.0-beta04
26 يونيو 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-beta04. يتضمّن الإصدار 1.7.0-beta04 هذه التعديلات.
إصلاح الأخطاء
- تجنُّب الأعطال عند قياس أسطر نصية كبيرة جدًا (مثل 10 آلاف حرف) (8157ab)
- إصلاح مشكلة قياس النص الكبير جدًا الذي يتسبّب في حدوث عُطل في الإصدار الجديد من
BasicTextField(6b7575) - إلغاء تغيير في السلوك في قياس الصف/العمود يؤدي إلى تعطيل استخدام النص في سيناريوهات معيّنة (69e8ba)
الإصدار 1.7.0-beta03
12 يونيو 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-beta03. يتضمّن الإصدار 1.7.0-beta03 هذه التعديلات.
الإصدار 1.7.0-beta02
29 مايو 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-beta02. يتضمّن الإصدار 1.7.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة واجهة برمجة تطبيقات تجريبية لإعداد سلوك الجلب المسبق لعنصر
LazyGridsبشكل مشابه لواجهة برمجة التطبيقات التجريبية الحالية لعنصرLazyLists. ويشمل ذلك إمكانية جلب البيانات مسبقًا للعناصر فيLazyGridsالمتداخلة. على غرارLazyListPrefetchStrategy، يكون الإعداد التلقائي للتنفيذ هو جلب أول عنصرَين متداخلَين من كل شبكة مسبقًا، ولكن يمكن ضبط ذلك باستخدام واجهتَي برمجة التطبيقات الجديدتَينLazyGridPrefetchStrategy(nestedPrefetchItemCount)وLazyListPrefetchStrategy#onNestedPrefetch. (I591c4) - تمت إعادة تسمية
SemanticsProperties.EditableإلىIsEditableوتغييرSemanticsPropertyReceiver.editableإلى القيمةisEditable. أصبحت السمة الآن قيمة منطقية ويتم تحديدها دائمًا من خلال حقول نصية. (I8acd8) - تم نقل القيم التلقائية
basicMarqueeإلى العنصرMarqueeDefaults. (I12ff6) - تمت إعادة تسمية المَعلمة
basicMarqueedelayMillisإلىrepeatDelayMillis. (I12ff6) - تعديل واجهة برمجة التطبيقات لتصميم الروابط: تم نقل
TextLinkStylesإلىTextStyleوإزالةTextDefaultsمن المواد (I5477b)
إصلاح الأخطاء
- تمت إعادة تسمية
LayoutCoordinates.introducesFrameOfReferenceإلىLayoutCoordinates.introducesMotionFrameOfReferenceلتعكس الغرض منها بشكل أفضل. تمت إعادة تسمية الدالة ذات الصلة لحساب الإحداثيات استنادًا إلى هذا العَلَم. (I3a330) - تمت إزالة "القيمة التلقائية" من سمات
MarqueeDefaults. (I1d8a0) - تمت إزالة "شريط التمرير" من مواقع
MarqueeDefaults. (Iad4f4) - تمت إزالة
TextLinkStylesمن الصفTextStyle. بدلاً من ذلك، يشكّلTextLinkStylesجزءًا من الدالة الإنشائيةLinkAnntationوالطريقةAnnotatedString.fromHtml(I90b2b). - تم إصلاح الخطأ الذي كان يؤدي إلى توقُّف Pager عند التمرير السريع نحو حدّ معيّن أثناء الاستقرار عند هذا الحدّ. (I9f373، b/339171222)
- تتضمّن لعبة BTF2 الآن إيماءات صحيحة لاختيار الماوس. (Ibe8c6)
المساهمة الخارجية
- إعادة إرسال "إجراء حسابات أكثر دقة لوقت الإنشاء/القياس استنادًا إلى نوع المحتوى في الجلب المسبق" (Iea622)
- إجراء حسابات أكثر دقةً لوقت الإنشاء/القياس استنادًا إلى نوع المحتوى في الجلب المسبق (Ibccb1)
- إتاحة أدوات تعديل
WindowInsetsPaddingمن مجموعة المصادر الشائعة (I070b2)
الإصدار 1.7.0-beta01
14 مايو 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-beta01. يتضمّن الإصدار 1.7.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة إضافة السمة
KeyboardOptions.shouldShowKeyboardOnFocusكسمة مخفية تم إيقافها نهائيًا لتوفير التوافق الثنائي. (I15cfe) - تعكس
Modifier.anchoredDraggableالآن تلقائيًا قيم التغيير في السحب للمكوّنات ذات الاتجاه الأفقي عند استخدامها في تخطيط من اليمين إلى اليسار. (I3c6d9) -
AnnotatedString.hasEqualsAnnotationsأصبح الآنhasEqualAnnotations. (I685c0) - تم تعديل واجهة برمجة التطبيقات للحصول على روابط متوافقة مع مظهر Material في النص. على وجه التحديد، تمت إزالة الطرق من
TextDefaultsلإنشاءLinkAnnotationsذات سمات معيّنة وتحليل HTML باستخدام روابط ذات سمات معيّنة. بدلاً من ذلك، تمت إضافة فئةTextLinkStylesتتيح تصميم الروابط كمعلَمة في عنصر Text القابل للإنشاء. (I31b93) - تم استبدال
onDragStartedوonDragStoppedبعمليات ردّ الاتصال غير المعلقة. (I59de8)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى تعطُّل Pager عندما يكون حجم
contentPaddingأكبر من القيود الواردة. يفرض عنصر Pager الآن القيمة 0 على القيم السالبة التي يتم عرضها منPageSize. (Iba5d8، b/314008560)
الإصدار 1.7.0-alpha08
1 مايو 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha08. يتضمّن الإصدار 1.7.0-alpha08 هذه التعديلات.
الميزات الجديدة
- تمت إضافة قائمة السياق التي تظهر عند النقر بزر الماوس الأيمن إلى
BasicTextFieldوSelectionContainerمع عناصر لإجراءات القص والنسخ واللصق واختيار الكل. (If8c93 وIa2b49 وI6f268)
تغييرات واجهة برمجة التطبيقات
- يمكن الآن وضع علامة "عاجل" على طلبات
LazyLayoutالمسبقة، ما يعني أنّنا نتوقّع الحاجة إلى هذا العنصر في الإطار التالي ونريد تجاهل ميزانية الإطار للتأكّد من إنجاز المزيد من العمل مسبقًا (Id513f). - تمت إعادة تسمية
isPositionedByParentWithDirectManipulationإلىintroducesFrameOfReference. يُرجى العِلم أنّ هذا الإعداد أصبح له تأثير معاكس، ما يعني أنّه بشكلٍ تلقائي، تقدّم معظمLayoutCoordinatesإطارًا مرجعيًا، ولن تكون القيمة خطأ إلا عند وضعها تحت التحكّم المباشر. للاستعلام عن الموضع مع العناصر التي تقدّم إطارًا مرجعيًا فقط، استخدِمpositionInLocalFrameOfReference(...). أوpositionInLocalLookaheadFrameOfReferenceمنLookaheadScope(Ifc5f7) - تمت إعادة تسمية
onClickedإلىonClickداخلLinkInteractionListener(Iaa35c) - تغيير دالة lambda الخاصة بالإجراء
getScrollViewportLengthوفقًا لملاحظات مجلس API. (Ibc74a) - تمت إعادة تسمية واجهات برمجة التطبيقات الخاصة بتفويض الكتابة بخط اليد باستخدام قلم الشاشة. (Ica45f، b/327271923)
- تمّت إعادة تسمية
TextInclusionStrategy.isInsideإلىisIncluded. اجعل نوع الإرجاع فيParagraph/MultiParagraph#getRangeForRect()غير قابل لأن يكون فارغًا. (I51f26)
إصلاح الأخطاء
- تمت إضافة الخيار "تحديد الكل" إلى جميع القوائم السياقية للنصوص في
SelectionContainer. (Ib750e، b/240143283) - تم إصلاح مشكلة التقاط لقطة شاشة طويلة للحاويات التي يمكن التمرير فيها والتي تتضمّن
reverseScrolling=true. (I7c59c) - تم إصلاح المشكلة التي كانت تؤدي إلى تغيير قيمة
currentValueالخاصة بـAnchoredDraggableStateعند الاقتراب من حدود الحالة. (Iea30b، b/333846848)
المساهمة الخارجية
- تمت إعادة تسمية
PrefetchExecutorإلىPrefetchSchedulerلتعكس مسؤولياتها بشكل أفضل. (Ib9154) - تمت إضافة إمكانية جلب العناصر مسبقًا في
LazyListsالمتداخلة (مثلLazyColumnيعرضLazyRowsمتداخلة). ومن المتوقّع أن يقلّل هذا التغيير من انخفاض عدد اللقطات في الثانية أثناء التمرير فيLazyListsهذه. الإعداد التلقائي للتنفيذ هو جلب أول عنصرَين متداخلَين مسبقًا، ولكن يمكن التحكّم في هذا السلوك من خلال واجهتَي برمجة التطبيقات الجديدتَينLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)وLazyListPrefetchStrategy#onNestedPrefetch. (I51952)
الإصدار 1.7.0-alpha07
17 أبريل 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha07. يتضمّن الإصدار 1.7.0-alpha07 هذه التعديلات.
الميزات الجديدة
- تمت إضافة عنصر
TextDefaultsيحتوي على طرق لإنشاءLinkAnnotationوتحليل سلسلة ذات علامات HTML تطبّقMaterialThemeعلى الروابط. (I98532، b/139312671) - تمت إضافة إمكانية استخدام صور متحركة لظهور العناصر واختفائها في
LazyVerticalGridوLazyHorizontalGrid. في السابق، كان من الممكن إضافة المعدِّلModifier.animateItemPlacement()من أجل إتاحة الرسوم المتحركة الخاصة بموضع الإعلان (إعادة الترتيب). أوقفنا نهائيًا استخدام معدِّل التعديل هذا وقدّمنا معدِّل تعديل جديدًا غير تجريبي باسمModifier.animateItem()يتيح لك إتاحة جميع أنواع الرسوم المتحركة الثلاثة: الظهور (التلاشي)، والاختفاء (التلاشي)، وإعادة الترتيب. (Ib7d12، b/330510929) - تمت إضافة إمكانية استخدام صور متحركة لظهور العناصر واختفائها في
LazyVerticalStaggeredGridوLazyHorizontalStaggeredGrid. في السابق، كان من الممكن إضافة المعدِّلModifier.animateItemPlacement()من أجل إتاحة الرسوم المتحركة الخاصة بموضع الإعلان (إعادة الترتيب). أوقفنا نهائيًا استخدام معدِّل التعديل هذا وقدّمنا معدِّل تعديل جديدًا غير تجريبي باسمModifier.animateItem()يتيح لك إتاحة جميع أنواع الرسوم المتحركة الثلاثة: الظهور (التلاشي)، والاختفاء (التلاشي)، وإعادة الترتيب. (I69bc9، b/330511290)
تغييرات واجهة برمجة التطبيقات
- يضيف
ContextMenuColorsوLocalContextMenuThemeProvidableCompositionLocalالمرتبطَين به. يمكن تعديل ألوان قائمة الاختيارات في حقول النصوص والنصوص القابلة للتحديد من خلال توفير التركيبة المحلية. (Ifa154) - تمت إضافة خيار نمط حالة الضغط إلى روابط النصوص، بالإضافة إلى النمط العادي ونمطَي التمرير والتركيز. (I5f864، b/139312671)
- إضافة
ViewConfiguration.HandwritingGestureLineMarginلإيماءات الكتابة بخط اليد إتاحة إيماءة الكتابة بخط اليد للغةBasicTextField(Ie6e13، b/325660505) - تمت إزالة
DelegatableNode.scrollIntoViewمن الإصدار 1.7 لأنّه لم يتوفّر لدينا الوقت الكافي لإنهاء عملية تثبيت بقية مساحة واجهة برمجة التطبيقات ذات الصلة. ستتم إعادة طرح هذه الدالة في الإصدار 1.8 (I6cf61 وb/333421581 وb/332900232). - عند طلب إحداثيات Layout، يمكنك الآن استخدام الوسيطة
excludeDirectManipulationOffsetلاستبعاد الإزاحة التي تم ضبطها بواسطة Layouts الأصلية التي وضعت العناصر التابعة لها باستخدامPlaceable.PlacementScope.withDirectManipulationPlacement. وبالمثل، يمكن الآن وضع العناصر التابعة في Layout التي تغيّر موضعها بشكل متكرّر باستخدامwithDirectManipulationPlacement(مثل Scroll، الذي يتم تنفيذه تلقائيًا). يساعد ذلك في جعل الرسوم المتحركة المستندة إلىapproachLayoutأكثر سهولة في الاستخدام، إذ يمكن الآن التمييز بين الإزاحة التي سيتم تحريكها والإزاحة التي سيتم تطبيقها مباشرةً عند اتخاذ قرار بتحريك طريقة العرض. (I60ec7) - تقديم
requestScrollToItemمقابلLazyStaggeredGridلكل عملية قياس ناجحة، يمكن للعميل الآن إيقاف الاحتفاظ بالفهرس استنادًا إلى المفتاح من خلال استدعاءrequestScrollToItem. لا يؤدي ذلك إلى تغيير السلوك الحالي بأي شكل من الأشكال ما لم يتم استدعاءrequestScrollToItem. (I63983) - تقديم
requestScrollToPageفي Pager لكل عملية قياس ناجحة، يمكن للعميل الآن إيقاف الاحتفاظ بالفهرس استنادًا إلى المفتاح من خلال استدعاءrequestScrollToPage. لا يؤدي ذلك إلى تغيير السلوك الحالي بأي شكل من الأشكال ما لم يتم استدعاءrequestScrollToPage. (Ic4213) - تم طرح
requestScrollToItemفيLazyGrids. لكل عملية قياس ناجحة، يمكن للعميل الآن إيقاف الاحتفاظ بالفهرس استنادًا إلى المفتاح من خلال استدعاءrequestScrollToItem. لا يؤدي ذلك إلى تغيير السلوك الحالي بأي شكل من الأشكال ما لم يتم استدعاءrequestScrollToItem. (I0a7a0) - تم وضع علامة "متوقّف نهائيًا" على
ClickableText. لإضافة روابط إلى النص، أنشئAnnotatedStringمعLinkAnnotationيتوافق مع الرابط، ثم مرِّرAnnotatedStringإلى العنصر القابل للإنشاءText(I34d4b، b/323346994). - تم إيقاف
UrlAnnotationنهائيًا، لذا يُرجى استخدامLinkAnnotation.Urlبدلاً منها. إذا كنت تستخدم "تحديد نسق المواد"، استخدِم العنصرTextDefaultsلإنشاء التعليق التوضيحي مع تطبيق "تحديد نسق المواد" عليه (I8d180، b/323346545). - تمت إعادة تسمية
String.parseAsHtmlإلىAnnotatedString.Companion.fromHtml(I43dcd) - تمت إضافة وسيطات التنسيق (
linkStyleوfocusedLinkStyleوhoveredLinkStyle) وأداة معالجة تفاعلات الروابط إلى الطريقةparseAsHtml. عند تحليل السلسلة التي تمّت إضافة علامات HTML إليها باستخدام علامات<a>، ستنشئ الطريقةLinkAnnotation.Urlلكلّ علامة من هذا النوع وتمرّر عناصر التصميم ومستمع التفاعل مع الروابط إلى كلّ تعليق توضيحي. (I7c977) - تتلقّى الدالة
LinkAnnotationالآن وسيطتَي التنسيق المستند إلى الحالة وLinkInteractionListener. أضِف هذا التعليق التوضيحي إلىAnnotatedStringللحصول على رابط تشعّبي. من خلال تمريرfocusedStateو/أوhoveredState، يمكنك تحديد الإعدادات المرئية للروابط عند التركيز عليها و/أو التمرير فوقها. (I81ce4، b/139312671) - تمت إزالة علامة الميزة الخاصة بلقطات الشاشة الطويلة. (I28648، b/329128246)
- سيتم الآن عرض العناوين الثابتة بشكل صحيح في لقطات الشاشة الطويلة.
LazyColumn(I8d239، b/329296635) - تم تثبيت معظم واجهات برمجة التطبيقات التجريبية المتبقية التي تم طرحها مع
BasicTextFieldالجديد. (I714e2) - تمت إضافة المَعلمة
textObfuscationCharacterإلىBasicSecureTextFieldالتي تتحكّم في الحرف الذي سيتم استخدامه أثناء إخفاء المحتوى. (I0588b) - سيتم استبدال مصادر السحب والإفلات في
NestedScrollبالمصدرَينUserInputوSideEffectلاستيعاب التعريف الموسّع لهذه المصادر الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput). (I40579) - نقدّم لك
LocalBringIntoViewSpec، وهو سلوك تمرير يعتمد على النظام الأساسي ويتم تطبيقه على مستوى أداة التعديل Scrollable. (I27aa5، b/317453911) - تمت إزالة
TextFieldCharSequence. تم استبدالTextFieldBuffer.originalValuesبـTextFieldBuffer.originalTextوTextFieldBuffer.originalSelection. (I2c7d6) - لم يعُد بإمكان
ImeOptions.hintLocalesقبول القيمة الخالية. إذا أردت تمرير قائمة Locale فارغة، يُرجى استخدامLocaleList.Empty. (Ic5bc4) - تمت إعادة تسمية
getOffsetFractionForPageإلىgetOffsetDistanceInPages. (Ia05e2)
إصلاح الأخطاء
- عند دمج
InputTransformationsمعnext، يتم الآن دمجKeyboardOptionsبشكل صحيح من خلال خيارات فردية باستخدام طريقةKeyboardOptions.mergeالجديدة. (Ie5304، b/295951492) - لم يعُد
targetValueفيAnchoredDraggableStateيأخذ في الاعتبار الحدود الدنيا للموضع. يبلغ الحدّ الضمني الآن 50%، ما يعني أنّtargetValueيتغيّر عند نقطة المنتصف بين نقطتَي ارتساء. (I82c2c)
المساهمة الخارجية
- تمت إعادة تسمية واجهتَي برمجة تطبيقات للتمرير (I56a75)
الإصدار 1.7.0-alpha06
3 أبريل 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha06. يتضمّن الإصدار 1.7.0-alpha06 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية استخدام صور متحركة لظهور العناصر واختفائها في
LazyColumnوLazyRow. في السابق، كان من الممكن إضافة المعدِّلModifier.animateItemPlacement()من أجل إتاحة الرسوم المتحركة الخاصة بموضع الإعلان (إعادة الترتيب). أوقفنا نهائيًا استخدام معدِّل التعديل هذا وقدّمنا معدِّل تعديل جديدًا غير تجريبي باسمModifier.animateItem()يتيح لك إتاحة جميع أنواع الرسوم المتحركة الثلاثة: الظهور (التلاشي)، والاختفاء (التلاشي)، وإعادة الترتيب. (I2d7f7، b/150812265) - يمكن لعملاء
LazyColumn/LazyRowالآن إيقاف الاحتفاظ بفهرس استنادًا إلى المفتاح لعملية قياس مدى فعالية الإعلانات القادمة من خلال طلبLazyListState.requestToScrollغير معلّق. (I98036، b/209652366) - تمت إضافة طريقة
parseAsHtmlللسلاسل ذات التنسيق: تتيح هذه الطريقة تحويل سلسلة مميّزة بعلامات HTML إلىAnnotatedString. يُرجى العلم أنّه لا تتوفّر جميع العلامات، على سبيل المثال، لن تتمكّن بعد من عرض القوائم النقطية. (I84d3d) - تمت إضافة دعم تجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة تطبيقات Android الرسمية (
ScrollCaptureCallback). هذه الميزة تجريبية وقد لا تتعامل حاليًا مع جميع الحالات بشكل صحيح. لهذا السبب، يتم إيقافها تلقائيًا في الوقت الحالي. للموافقة على هذه الميزة، اضبط العلامةComposeFeatureFlag_LongScreenshotsEnabledعلى "صحيح". ستتم إزالة هذه العلامة قبل الإصدار التجريبي 1.7. (I2b055، b/329296471) - إضافة واجهة برمجة تطبيقات
GraphicsLayerجديدة لتوفير المزيد من المرونة في موضع عرض مثيلاتGraphicsLayerوعرضها، وإتاحة ميزات العرض المضمّنة بدون الحاجة إلى التنسيق مع عمليات التنفيذ القابلة للإنشاء لتحديد مثيلات معدِّلGraphicsLayer.
تغييرات واجهة برمجة التطبيقات
- تتضمّن جميع المَعلمات
KeyboardOptionsالآن قيمة غير محدّدة تلقائيًا. تمّت إضافة طريقةKeyboardOptions.merge. - تمت إعادة تسمية
KeyboardOptions.autoCorrectإلىautoCorrectEnabledوتمّت إتاحة إمكانية أن تكون القيمة فارغة، حيث تشير القيمة الفارغة إلى عدم تحديد أي قيمة. (Ia8ba0، b/295951492) - تمت إعادة تسمية
outOfBoundsPageCountإلىbeyondViewportPageCount. (I129c6) - تم تغيير
fun ClipEntry.getMetadata()إلىval ClipEntry.clipMetadata. (I50155) - تمت إزالة
TextFieldState.valueAsFlow(). ننصحك باستخدامsnapshotFlow { state.text }أوsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629) - تمت إعادة تنظيم مَعلمات
InputTransformation.transformInput. تمت إزالةoriginalValue: TextFieldCharSequence. بدلاً من ذلك، تحملTextFieldBufferالآن هذه القيمة بالاسم نفسه. تمّت أيضًا إزالة المَعلمةvalueWithChanges: TextFieldBuffer.TextFieldBufferهو الآن نطاق المتلقّي في الدالة. (I919cc) - يستخدم المتغيران
BasicTextField(state)وBasicSecureTextFieldالآنKeyboardActionHandlerبدلاً منKeyboardActionsلمعالجة الإجراءات التي يتم اتخاذها باستخدام لوحة المفاتيح البرمجية. (I58dda) - واجهات برمجة تطبيقات تفويض الكتابة بخط اليد باستخدام قلم الشاشة لإتاحة الكتابة بخط اليد باستخدام قلم الشاشة في حقول إدخال النصوص "الوهمية" (I9c09c، b/327271923)
- تمت إعادة تسمية
KeyboardOptions.shouldShowKeyboardOnFocusإلىshowKeyboardOnFocus. (Ib4b7a، b/295951492) - تمت إزالة المَعلمة
hintMediaTypesمنModifier.contentReceiver. تمّ تشجيع المطوّرين من قبل على التحقّق من نوع الوسائطTransferableContentالمستلَمة لأنّها قد تكون غير متوافقة معhintMediaTypesالتي تمّ ضبطها. (I82f99) - تمت إعادة ترتيب مَعلمات
BasicSecureTextField. تمت إزالة المَعلمتَينkeyboardTypeوimeActionلصالح فئةKeyboardOptionsالكاملة مع الاحتفاظ بالإعدادات التلقائية نفسها المناسبة لـBasicSecureTextField. تمّت أيضًا إزالة المَعلمةscrollState. (Ibbfa9) - تم تغيير نوع
TextFieldState.textمنTextFieldCharSequenceإلىCharSequenceفقط. لذلك، أضفناTextFieldState.selection: TextRangeوTextFieldState.composition: TextRange?لقراءة قيم التحديد والتركيب الحالية مباشرةً من عنصر الحالة. - تمت إزالة
TextFieldState.forEachTextValue. (Idb2a2) - تمت إزالة الدالتَين
ClipboardManager.getClipMetadataوClipboardManager.hasClip. يُرجى استخدامclipEntry.getMetadata()لقراءة البيانات الوصفية لإدخال المقطع الحالي. تحقَّق أيضًا من نتيجةClipboardManager.getClipلمعرفة ما إذا كانت فارغة أم لا، وذلك لمعرفة ما إذا كانت "الحافظة" تتضمّن مقطعًا حاليًا. (I50498) - تقبل
ClipboardManager.setClipالآن القيمة الخالية لتتمكّن من محو الحافظة. (I7d2e9) - يتم تحويل
ReceiveContentListenerإلى واجهة دالة. تمت أيضًا إزالة عملية التحميل الزائدModifier.receiveContentالتي تستخدم تعبير lambda لأنّReceiveContentListenerأصبحت الآن واجهة دالة. - تمت إعادة تسمية
Modifier.receiveContentإلىModifier.contentReceiver. (I1e6af) - تمت إعادة تسمية
TransferableContent.consumeEachإلىTransferableContent.consume. (I1e462) - تمت ترقية
rememberTextFieldStateإلى واجهة برمجة تطبيقات ثابتة. (I37999)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم عمل خيار
BasicTextField(state)مع لوحات المفاتيح CJK(التي تستند إلى التركيب). (I54425) - تم إصلاح الخطأ الذي كان يؤدي إلى إمكانية إشارة
Modifier.dragAndDropTarget()إلى بيانات قديمة في سيناريوهات معيّنة مع إعادة استخدامModifier.Node. (I05bb1) - تم التراجع عن تغيير حديث في العقد حيث يتم إغلاق مكالمات
AnchoredDraggableState#anchoredDragفي نهاية عمليةanchoredDrag. (I95715)
الإصدار 1.7.0-alpha05
20 مارس 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha05. يتضمّن الإصدار 1.7.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة
LocalTextLinkStyleالتجريبية المحلية الخاصة بإنشاء الروابط التشعّبية. (Iebfa7) - تمت إزالة الإعداد التجريبي التلقائي لـ
BasicTextباستخدام الوسيطةonLinkClicked. سيتم توفير واجهة برمجة تطبيقات بديلة لدعم الروابط التشعبية في المستقبل. (I107d5) - تمت إزالة الطرق والسمات ذات الصلة بنقاط الترميز ضمن
TextFieldStateوTextFieldBuffer. تمت أيضًا إزالة اللاحقاتinCharsمن واجهات برمجة التطبيقات المتبقية ذات الصلة بالاختيار والتركيب. (Ief7ce) - سيتم الآن تعديل
currentValueفيAnchoredDraggableعند المرور بنقطة ارتساء. استخدِمsettledValueلتلقّي دلالاتcurrentValueالسابقة، مع تعديلها فقط عند الاستقرار في نقطة ارتساء. يتم الآن عرض مستوى التقدّم كدالة (تتطلّب نقطة بداية ونقطة نهاية) بدلاً من سمة. (Ibe6e8، b/318707189، b/298271489، b/294991954) - تمت ترقية
BasicTextField(state)وTextFieldStateوInputTransformationوOutputTransformationوTextFieldLineLimitsوTextFieldDecoratorإلى إصدار ثابت. (I9582b) - تم طرح
InterceptPlatformTextInputللمساعدة في كتابة اختبارات منخفضة المستوى ذات صلة بطريقة الإدخال (IME) وحالات استخدام أخرى منخفضة المستوى لطريقة الإدخال. تم إيقافPlatformTextInputTestOverrideنهائيًا. (I862ed، b/322680547) - تقسيم
restrictedConstraints()إلى طريقتَين:fitPrioritizingWidth()وfitPrioritizingHeight()(I6d7fd)
المساهمة الخارجية
- تمت إضافة واجهتَي برمجة تطبيقات جديدتَين
isLastScrollForward/isLastScrollBackwardللتحقّق من اتجاه التمرير لآخر إجراء تمرير، وسيتم عرض القيمة "false" إذا لم يتم تنفيذ أي إجراء تمرير بعد. (I63a0e)
الإصدار 1.7.0-alpha04
6 مارس 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha04. يتضمّن الإصدار 1.7.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تفعيل ميزة الكتابة بخط اليد باستخدام قلم الشاشة على الأجهزة التي تعمل بالإصدار Android U والإصدارات الأحدث (I002e4)
- تمت إضافة
hintLocalesإلىKeyboardOptionsلتزويدTextFieldsبإمكانية إرسال تلميحات إلى محرّرات طرق الإدخال (IME) باستخدام إعدادات محلية معيّنة لضبط لغة مفضّلة مسبقًا. (Id18c2) - تمت إزالة عمليات التحميل الزائد التجريبية
BasicTextField2وBasicSecureTextFieldالتي استقبلت المَعلمتَينvalue: StringوonValueChange: () -> String. (I568b4) - أضِف دالة
applySemanticsاختيارية إلىInputTransformationللتأثير في دلالاتBasicTextField2التي يتم تطبيقها عليها. (I74a2f، b/170648072) - في طلب تغيير الرمز هذا، نضيف الإجراء الدلالي
GetScrollViewportLengthحتى نتمكّن من إرسال معلومات حول المكوّنات التي يتمّ تصفّحها في Compose إلى نظام تسهيل الاستخدام. ينطبق هذا التغيير أيضًا على استخدام السمة المذكورة في "قوائم Foundation القابلة للتمرير". (Ic5fa2) - تمت إعادة تسمية
BasicTextField2إلىBasicTextField. (Ie5713) - أصبح
FocusRequester.createRefsالآن ثابتًا (I4d92c، b/261436820) - تمت إضافة
DelegatableNode.scrollIntoView()للسماح لعُقد المعدِّلات بإجراء طلباتscrollIntoViewمباشرةً. (I2b3b7، b/299939840) - تمت إضافة
DelegatableNode.requireView()للسماح لعُقد المعدِّلات بالحصول علىViewالحالي لنظام التشغيل Android بدون قراءة تركيبة محلية. (I40768) - نقدّم معلومات عن التنسيق السياقي ضمن "نطاق الصف السياقي المتدفّق" و"نطاق العمود السياقي المتدفّق"، بما في ذلك فهرس السطر والموضع والقيود المفروضة على الحد الأقصى للعرض والارتفاع للبقاء في الموضع المحدّد. قد تنتقل العناصر التي تتجاوز الحدّ الأقصى للعرض/الارتفاع إلى السطر التالي أو يتم حذفها استنادًا إلى إعدادات تجاوز السعة. (Id13f8، b/292114798)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى حدوث عُطل في بعض الحالات عند تبديل سمات
enabledأوreadOnlyالخاصة بالعنصرTextField. (Iae17b)
الإصدار 1.7.0-alpha03
21 فبراير 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha03. يتضمّن الإصدار 1.7.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم
DelegatableNode.requireLayoutCoordinates()كطريقة للحصول علىLayoutCoordinatesالحاليModifier.Nodeبدون الحاجة إلى إلغاءonPlacedوتخزين الإحداثيات في خاصية بنفسك. (Ia8657) - تم تقديم
DelegatableNode.currentLayoutCoordinatesكطريقة للحصول علىLayoutCoordinatesالحاليModifier.Nodeبدون الحاجة إلى إلغاءonPlacedوتخزين الإحداثيات في خاصية بنفسك. (Iaebaa) - تحسينات الأداء في
DraggableAnchorsالتي تستخدمهاAnchoredDraggable(I89cff) - تم نقل واجهة برمجة التطبيقات
BasicTextField2وواجهات برمجة التطبيقات ذات الصلة ضِمن حزمةandroidx.compose.foundation.text2إلىandroidx.compose.foundation.text. (I9f635) - لم يعُد
BasicTextField2يقبل المَعلمةCodepointTransformation. استخدِمBasicSecureTextFieldأوOutputTransformation. (Id34ff) - تمت إضافة طريقة لمقارنة التعليقات التوضيحية لملفَي
AnnotatedStringsفقط. (I32659) - نقدّم لك
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)
إصلاح الأخطاء
- لم يعُد مؤشر الماوس المتحرّك يطلب إطارات بين حالتي التشغيل والإيقاف. (Ia2253)
- ستنسخ الآن دوال الإنشاء الموقوفة نهائيًا في
KeyboardOptions' جميع الخصائص بشكل صحيح. (If12de)
الإصدار 1.7.0-alpha02
7 فبراير 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha02. يتضمّن الإصدار 1.7.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت ترقية
HorizontalPagerوVerticalPagerوPagerStateإلى الإصدار الثابت. (I67660، b/316966909) - تمت إضافة
LocalTextLinkStylecomposition local التي تتيح تغيير نمط الروابط في النص على مستوى التطبيق. إذا كنت تستخدم مظهرًا خاصًا بك في التطبيق، عليك ضبط هذه composition local وفقًا للمظهر الذي تستخدمه. عند استخدام مظهر Material، سيتم ضبط لون الرابط تلقائيًا على اللون الأساسي في Material. (I7eb10) - تم تقديم المعدِّل
receiveContentالذي يوفّر للمطوّرين طريقة لتلقّي محتوى غني في Jetpack Compose. - يتكامل تطبيق
receiveContentمعBasicTextField2لقبول المحتوى المنسّق الذي توفّره لوحة المفاتيح البرمجية أو من خلال إجراء اللصق من الحافظة. (I81b72) - في هذا التغيير، سنستبدل
SnapFlingBehaviorبـTargetedFlingBehaviorفي أداة التقسيم إلى صفحات لإتاحة حالات استخدام أخرى وتوفير مرونة أكبر. (I762ea) - في هذا التغيير، سنعمل على إتاحة واجهات Snapping API كإصدار ثابت. نعمل أيضًا على إزالة بعض التعليمات البرمجية التجريبية وإضافة المزيد من العيّنات إلى ميزة "المحاذاة". (Id8da9)
- نقدّم
TargetedFlingBehavior، وهوFlingBehaviorيتيح نشر معلومات حول حالة الصورة المتحركة الجارية وإزاحة التمرير المستهدَفة. (I6a207)
إصلاح الأخطاء
- تحافظ ميزة
BasicTextField2الآن على ظهور المؤشر أثناء الكتابة عندما يتم تمريره بعيدًا عن منطقة المشاهدة أو عندما ينتقل خارج منطقة المشاهدة بسبب الإدخال. (Ieb856، b/237190748)
المساهمة الخارجية
- تضيف هذه الإضافة واجهة برمجة تطبيقات تجريبية لإعداد سلوك الجلب المُسبَق لعناصر LazyList. (I022a4)
الإصدار 1.7.0-alpha01
24 يناير 2024
تم طرح androidx.compose.foundation:foundation-*:1.7.0-alpha01. يتضمّن الإصدار 1.7.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تمت إضافة
Indication APIجديد،IndicationNodeFactory. يؤدي ذلك إلى عمليات تنفيذIndicationأكثر فعالية مقارنةً بواجهة برمجة التطبيقاتrememberUpdatedInstanceالسابقة (التي تم إيقافها نهائيًا). للحصول على معلومات حول نقل البيانات، يُرجى الانتقال إلى developer.android.com. - تقبل
clickable / combinedClickable / selectable / toggleableالآن المَعلمةMutableInteractionSourceالتي يمكن أن تكون قيمتها فارغة. إذا كانت القيمة فارغة، وكانIndicationالمقدَّم هوIndicationNodeFactory، لا يمكن إنشاءIndicationبشكل غير مباشر إلا عند الحاجة إليه، ما يحسّن الأداء. إذا لم تكن تستخدمMutableInteractionSource، ننصحك بتمرير قيمة فارغة.
تغييرات واجهة برمجة التطبيقات
- نقدّم
DecayAnimationفيAnchoredDraggable، ويضيف هذا التغيير المَعلمةdecayAnimationSpecإلىAnchoredDraggableما يتيح استخدام الحركة المتلاشية عند الاستقرار على أحد عناصر الربط. يشمل التغيير أيضًا إعادة تسميةanimationSpecالحالي إلىsnapAnimationSpecللمساعدة في فهم حالة استخدام كل مواصفة. BasicTextField2متاح للاستخدام التجريبي. يجب أن يكون متوافقًا معBasicTextFieldمن حيث الميزات، وأن يكون السلوك جاهزًا للاستخدام في بيئة الإنتاج. ومع ذلك، لا تزال واجهة برمجة التطبيقات تجريبية في الوقت الحالي. قبل أن يصبح مستقرًا، ستتم إعادة تسميته إلىBasicTextFieldونقله إلى الحزمة نفسها.- تم طرح المسودة الأولى من واجهة برمجة التطبيقات
OutputTransformationلـBasicTextField2. تحلّ واجهة برمجة التطبيقات هذه محلّ معظم حالات استخدامVisualTransformationفيBasicTextFieldالقديم. ومع ذلك، لم يتم الانتهاء من هذه الواجهة بعد، وقد لا تعمل بعض الميزات بشكل صحيح، ولكننا نقدّر أي ملاحظات حول سهولة استخدام واجهة برمجة التطبيقات لحالات الاستخدام الخاصة بك. (aosp/2708848) - تمت إضافة
LinkAnnotationالتي تتيح إضافة روابط وعناصر قابلة للنقر إلى النص. لم تكتمل ميزة "الروابط" بعد، وسيتم إجراء المزيد من التغييرات على واجهة برمجة التطبيقات. - تم تقديم المعدِّل
receiveContentالذي يوفّر للمطوّرين طريقة لتلقّي محتوى غني في Jetpack Compose. - يتكامل
receiveContentمعBasicTextField2لقبول المحتوى المنسّق الذي توفّره لوحة المفاتيح البرمجية أو من خلال اللصق من الحافظة. - تتيح لك السمة
KeyboardOptions.shouldShowKeyboardOnFocusإيقاف السلوك التلقائي للسمةBasicTextFieldالمتمثل في طلب لوحة مفاتيح برمجية عند التركيز. - تم الآن إيقاف
TextInputServiceوLocalTextInputServiceنهائيًا. يمكنك استخدامPlatformTextInputModifierNodeبدلاً من ذلك للدمج مباشرةً مع واجهات برمجة التطبيقات الخاصة بطرق الإدخال في النظام الأساسي. (aosp/2862698) - تم إيقاف
Indication#rememberUpdatedInstanceنهائيًا. ويؤدي إلى انخفاض كبير في الأداء لا يمكن تجنّبه، كما يمنع إجراء تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقات الجديدةIndicationNodeFactory.
إصلاح الأخطاء
- ستعمل السمة
BasicTextFieldالآن على التحقّق مسبقًا من صحة مجموعة صغيرة من عمليات ربط الإزاحة عند تمرير السمةVisualTransformation. يساعد ذلك في رصد أخطاء الترميز الشائعة التي تؤدي إلى استثناءات غير قابلة للاسترداد في عمليات القياس أو الرسم اللاحقة. من خلال إظهار الخطأ أثناء الإنشاء، من المرجّح أن يرى المطوّرون هذه الأخطاء أثناء التطوير، ما يساعد في تجنُّب الأعطال في مرحلة الإنتاج. (I0fd42) - لن يعرض
VisualTransformationخطأً إذا عرضت فهرسًا غير صالح لفهرس غير صالح (b/316401857 )
الإصدار 1.6
الإصدار 1.6.8
12 يونيو 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.8. يتضمّن الإصدار 1.6.8 هذه التعديلات.
الإصدار 1.6.7
1 مايو 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.7. يتضمّن الإصدار 1.6.7 هذه التعديلات.
الإصدار 1.6.6
17 أبريل 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.6. يتضمّن الإصدار 1.6.6 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى حدوث عُطل في بعض الحالات عند تبديل سمات
enabledأوreadOnlyالخاصة بالعنصرTextField. (Iae17b)
الإصدار 1.6.5
3 أبريل 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.5. يتضمّن الإصدار 1.6.5 هذه التعديلات.
إصلاح الأخطاء
- إضافة سجلّات تصحيح الأخطاء إلى الأخطاء التي يصعب إعادة إنتاجها في الصف/العمود: (b/300280216 وb/297974033)
الإصدار 1.6.4
20 مارس 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.4. يتضمّن الإصدار 1.6.4 هذه التعديلات.
إصلاح الأخطاء
- لم يعُد يحدث عُطل عند استخدام إيماءة التحديد بالضغط مع السحب خارج حدود تخطيط النص في الإطار الأول من عملية السحب. (Icdf90، b/325307463)
الإصدار 1.6.3
6 مارس 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.3. يتضمّن الإصدار 1.6.3 هذه التعديلات.
الإصدار 1.6.2
21 فبراير 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.2. يتضمّن الإصدار 1.6.2 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة عدم إعادة ضبط
AnimateContentSizeبشكلٍ سليم (I07051) - تم إصلاح مشكلة التخزين المؤقت المفرط
intrinsicHeightللنص في بعض الحالات. (3cd398، b/217910352)
الإصدار 1.6.1
7 فبراير 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.1. يتضمّن الإصدار 1.6.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح قياس الشبكة المتداخلة عند التمرير إلى ما بعد الحدّ. (bffc39)
- إضافة عملية تحقّق من التنسيق ذي الأبعاد الكبيرة (e74af5)
- إصلاح موضع العناصر ذات الحجم 0 في بداية الشبكة المتداخلة (785f94)
- استدعاء دالة onRelease في الترتيب نفسه الذي تم به استدعاء onForgotten (31ce3b)
الإصدار 1.6.0
24 يناير 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.0. يتضمّن الإصدار 1.6.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.5.0
- أداة التعديل الجديدة
Modifier.anchoredDraggableالتي تتيح إمكانية السحب والتحريك بين مجموعة محدّدة مسبقًا من نقاط الارتكاز. تم تصميم هذا المعدِّل ليكون بديلاً عنModifier.swipeable. يمكنك التعرّف على كيفية استخدامه ونقل البيانات منModifier.swipeableفي دليل نقل البيانات. - تمت إضافة وظيفة السحب والإفلات بين التطبيقات والمكوّنات. يُرجى الرجوع إلى
DragAndDropTargetوModifier.dragAndDropSourceوواجهات برمجة التطبيقات الأخرى للبدء. -
Modifier.draggable2Dهو المعدِّل الجديد الذي يتيح إمكانية السحب ثنائي الأبعاد بسهولة. مثال - تمت إضافة
AndroidExternalSurfaceوAndroidEmbeddedExternalSurfaceلتسهيل إضافة المكوّنات المستندة إلى السطح في Compose - تغييرات وتحسينات متنوّعة على واجهة برمجة التطبيقات في
PagerوsnapFlingBehaviour - تمت ترقية العديد من واجهات برمجة التطبيقات الخاصة بالتركيز والنص والهوامش إلى واجهات برمجة تطبيقات ثابتة
الإصدار 1.6.0-rc01
10 يناير 2024
تم طرح androidx.compose.foundation:foundation-*:1.6.0-rc01. يتضمّن الإصدار 1.6.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة أداة إنشاء الإضافة
DragAndDropTarget(). أنشئ مثيلاً جديدًا باستخدامobject: DragAndDropTarget {}. (I32318)
الإصدار 1.6.0-beta03
13 كانون الأول (ديسمبر) 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-beta03. يتضمّن الإصدار 1.6.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل أثّر في نص كبير جدًا تم قياسه باستخدام قيود غير محدودة (I1a7df، b/312294386)
- أصبح
PlatformImeOptionsالآن فئة ملموسة بدلاً من واجهة. (If40a4)
الإصدار 1.6.0-beta02
29 نوفمبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-beta02. يتضمّن الإصدار 1.6.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة عدم تعديل قيمة
canScrollبعد التمرير الذي يتم فيه تغيير التنسيق فقط (I60a86) - إصلاح المشكلة في
Modifier.animateItemPlacement()وLookaheadScopeبعد التمرير بشكل بسيط (I3a2b7)
الإصدار 1.6.0-beta01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-beta01. يتضمّن الإصدار 1.6.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يأخذ المعدِّل
DragAndDropTargetالآنDragAndDropTargetالمستلِم بشكلٍ صريح ويتضمّن تعبير lambda للموافقة على جلسة السحب والإفلات. تتوفّر الآن دالتان لإنشاءDragAndDropModifierNode. رقم تعريف واحد لتلقّي عمليات النقل وآخر لنقل البيانات (I69481) - تم تعديل
maximumFlingVelocityليتم تمثيله كعدد عشري. تعديل المستندات لتكون أكثر وضوحًا بشأنmaximumFlingVelocityالوحدة (I8adc7) تمت إعادة تسمية
onDragAndDropStartفي مصنعDragAndDropModifierNodeليصبحacceptDragAndDropTransfer.تمت إضافة
acceptsDragAndDropTransferإلىdragAndDropTargetModifierلقبولها من جلسة سحب وإفلات. تعرض دالة lambda هذه قيمة صالحةDragAndDropTargetإذا كنت مهتمًا بجلسة سحب وإفلات. تم استبدال دوال lambda الأخرى لمعالجة أحداث السحب بهذه الدالة.تمت إضافة دالة مصنع
DragAndDropTargetلتلقّي البيانات من جلسات السحب والإفلات (Iebf3a)يؤدي عرض
startDragImmediatelyفيAnchoredDraggableإلى توفير إمكانية التحكّم في رصد إيماءات السحب عند استخدامها. من المفيد ضبطها عندما يتم تحريك الأداة إلى رابط مستهدف. مثال (Ie6d13، b/285139987)أصبحت واجهات برمجة التطبيقات الخاصة بأداة Foundation Tooltip الآن
@ExperimentalFoundationApi(I30b0b)تمت إزالة
DragAndDropInfoكنوع، ويأخذDragAndDropModifierNode.dragالآن مَعلمات لـtransferDataوحجم الزخرفة ووظيفة lambda الخاصة بزخرفة السحبDrawScopeيحتوي
DragAndDropTargetعلى طرق لأحداث معيّنة للسحب والإفلات بدلاً من أن يكون طريقة مجرّدة واحدةتمت إعادة تسمية
onDragAndDropEventفي دالة المصنع الخاصة بـDragAndDropModifierNodeإلىonDragAndDropStartلتوضيح أنّDragAndDropTargetالمقدَّم صالح لجلسة سحب وإفلات معيّنة فقطتمت إزالة
DragAndDropEventType(I645b1)تمت إعادة تسمية
PlatformTextInputModifierNode.runTextInputSessionإلىestablishTextInputSession. (I03cd0)استبدِل
OriginalTextبـTextSubstitution. (Ifa5a8)تمت إعادة تسمية
PlatformTextInputModifierNode.textInputSessionإلىrunTextInputSession. (Ie9c6b)تُعدّ العناصر الفرعية من
SubcomposeLayout(والتنسيقات المشابهة مثلLazyColumnالمستندة إليه) التي يتم الاحتفاظ بها لإعادة استخدامها في المستقبل غير نشطة. تم تقديم واجهة برمجة تطبيقات جديدةassertIsDeactivated()لاختبار هذه العُقد. ستستبعد بقية واجهات برمجة التطبيقات الاختبارية العُقد التي تم إيقافها تلقائيًا. (I2ef84، b/187188981)تمت إعادة تسمية المَعلمة
clippingEnabledالخاصة بـModifier.magnifierإلىclip.تم السماح بقيمة فارغة للمَعلمة
magnifierCenterفيModifier.magnifierمع الحفاظ على السلوك التلقائي نفسه. (I6aa66)تعتمد واجهات برمجة التطبيقات الخاصة بـ Material
SwipeToReveal(للبطاقات والرقائق) الآن على واجهة برمجة تطبيقات مستندة إلى الخانات (كما هو مقترَح في Compose) بدلاً من مثيلات مستندة إلى فئة البيانات لإنشاء هذه الخانات. هذا تغيير غير متوافق مع الإصدارات السابقة، يُرجى الاطّلاع على العرض التوضيحي والرمز النموذجي للحصول على أمثلة حول كيفية استخدام واجهة برمجة التطبيقات الجديدة. (Ia8943)
إصلاح الأخطاء
- نفِّذ الدالتَين equals وhashcode للسمة
PageSize.Fixed. (Ie3ede، b/300134276) - تم إصلاح خطأ كان يؤدي إلى عدم تصغير تنسيق
BasicTextعند تغييرminWidthوكانminWidthأقل من قيود القياس الأوليةmaxWidth(Idb19c) - إضافة إمكانية استخدام أداة العرض مع "التدرّج الدائري" في
ArcLine(I4d5bb) - حلّ مشكلة توافق الرمز الثنائي مع تغيير Window Inset (Iee695)
- إزالة الطبقة الأساسية للمادة من أجل Material3 Chip/Button لأنّ اختبارات الأداء الدقيقة تُظهر أداءً أفضل بدونها. (I55555)
الإصدار 1.6.0-alpha08
18 أكتوبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha08. يتضمّن الإصدار 1.6.0-alpha08 هذه التعديلات.
الميزات الجديدة
-
Modifier.draggable2Dهو المعدِّل الجديد الذي يتيح إمكانية السحب ثنائي الأبعاد بسهولة. يمكنك الاطّلاع على عيّنة (Id95f5، b/214412658).
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة lambda
onDrawDragShadowإلىdrawDragDecorationفيModifier.dragAndDrawSource، كما تمت إعادة تسمية مَعلمة الحجم إلىdragDecorationSizeفيDragAndDropInfo. (Id0e30، b/303904810) - تمت إعادة تسمية المَعلمة
decorationBoxالخاصة بالحدثBasicTextField2إلىdecorator. ويتم أيضًا تغيير نوعها إلى واجهة ممتعة مكافئةTextFieldDecorator. (I23c1c)
إصلاح الأخطاء
- تحسين المستندات حول
BasicTextFieldفي ما يتعلّق بمتطلباتonValueChange(I90fc9، b/160257648)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha07. يتضمّن الإصدار 1.6.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم
PlatformTextInputMethodTestOverrideلكتابة اختبارات لمحرّرات النصوص المخصّصة. (Id159b) - تمت إعادة تسمية
GraphicsSurfaceإلىAndroidExternalSurface(I11680) - تمت إضافة العلامة المؤقتة
DisableNonLinearFontScalingInComposeلإيقاف الضبط غير الخطي لحجم الخط. اضبطDisableNonLinearFontScalingInCompose = trueفي اختباراتك إذا كنت بحاجة إلى وقت لتنظيفها. ستتم إزالة هذه العلامة في الإصدار 1.6.0-beta01 من Compose. (Ic9486) - تمت إضافة مجموعتَي
ColorListوColorSetاللتين تتجنّبان عمليات التخصيص. (I744bd) - يزيل هذا التغيير
shortSnapVelocityThresholdالذي تم تحويله إلى تفاصيل تنفيذ لعمليات تنفيذSnapLayoutInfoProvider. (I65f6d) - إضافة المعدِّل
dragAndDropSourceلبدء جلسات السحب والإفلات، والمعدِّلdragAndDropTargetلتلقّي البيانات من جلسات السحب والإفلات (Ib7828، b/286038936) - تعديل مستندات
SnapPositionInLayoutوطريقة تحديد الموضع إضافة مساحات متروكة للمحتوى إلى طريقة تحديد الموضع فيSnapPositionInLayout(Id7938، b/300116110) - تمّت إضافة
UndoStateإلىTextFieldStateالتي تتيح إمكانية التراجع عن التغييرات التي أجراها المستخدم أو إعادة تنفيذها. (Icc024)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحرّك
basicMarqueeبعد تغيير السرعة. (Id2e77، b/297974036)
الإصدار 1.6.0-alpha06
20 سبتمبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha06. يتضمّن الإصدار 1.6.0-alpha06 هذه التعديلات.
الميزات الجديدة
- أغلفة Composable جديدة لتطبيقات "
SurfaceView" و"TextureView: GraphicsSurface()" و"EmbeddedGraphicsSurface()" وهي واجهة برمجة تطبيقات تجريبية وخاضعة للتغييرات والتعديلات. (I9ddb2) - أصبحت واجهة برمجة التطبيقات
Modifier.magnifier()واجهة ثابتة. ويشمل ذلك إزالةMagnifierStyleلصالح المَعلمات المضمّنة في المعدِّل نفسه. (I83bec وb/298381260 وb/262367109 وb/261438887)
تغييرات واجهة برمجة التطبيقات
- تم طرح
updateCurrentPageوupdateTargetPageفيScrollScope، وهما آخر العناصر اللازمة للسماح بتخصيص التمرير المتحرّك فيPagerState.scroll. (I9cad5، b/267744105، b/243786897) - إزالة الكثافة من
SnapFlingBehaviorتتضمّن جميع عمليات تنفيذSnapLayoutInfoProviderطريقة للوصول إلى الكثافة، ويمكن إزالة نطاق المتلقّي ما سيؤدي إلى تنفيذ أقل تعقيدًا لكل منSnapFlingBehaviorوSnapLayoutInfoProviders. (I153c3) - تم وضع علامة "مستقر" على المزيد من المعدِّلات. (I56af1، b/298046462)
- تمت إزالة
SnapStepSizeمنSnapLayoutInfoProvider. يجب إجراء عملية الاحتساب باستخدام معلومات التخطيط وتقديمها من خلال طريقة العرض أو إزاحات المحاذاة. (If320c)
التغييرات في السلوك
- تستخدم ميزة "إنشاء" الآن ضبطًا غير خطّي لحجم الخط من أجل تحسين إمكانية القراءة وتسهيل الاستخدام. عندما يكون مقياس الخط > %100 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ عادي، ولكن سيزداد حجم النص الكبير قليلاً فقط. بالإضافة إلى ذلك، سيتم تعديل ارتفاعات الأسطر المحدّدة في SP تلقائيًا لتبقى متناسبة مع الارتفاع المقصود بنسبة% 100. يمكنك الاطّلاع على أفضل الممارسات المتعلّقة بتغيير حجم الخط للحصول على مزيد من المعلومات. (I11518)
إصلاح الأخطاء
- إزالة استخدام
rememberSaveableللتلميحات (Icc131، b/299500338)
الإصدار 1.6.0-alpha05
6 سبتمبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha05. يتضمّن الإصدار 1.6.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أضِف عمليات تحميل زائدة للدالة
BasicSecureTextFieldتقبل قيمة غير قابلة للتغيير ودالة ردّ لتغيير هذه القيمة، تمامًا مثل واجهة برمجة التطبيقات الحاليةBasicTextField. (Ia4882) - أضِف
Modifier.preferKeepClear()لوضع علامة على أنّه قابل للإنشاء، وذلك لتجنُّب النوافذ العائمة على المستوى 33 لواجهة برمجة التطبيقات والإصدارات الأحدث. (Ib51d5، b/297260115) - يتم تحديد الحد الأقصى لسرعات التحريك السريع في مكوّنات العرض، مثل
ScrollViewوRecyclerView، عندViewConfiguration.ScaledMaximumFlingVelocity. يتضمّن تطبيق "الكتابة الذكية" الآن إصدارًا خاصًا به منmaximumFlingVelocityينطبق الآن علىDraggable. (Ibf974) - تمت إزالة عمليات التحميل الزائد المتوقّفة نهائيًا
PagerوPagerState. (Iea07e) - تمت إضافة
BasicTooltipBoxإلىcompose.foundationوتعديلPlainTooltipBoxوRichTooltipBoxلاستخدامTooltipBoxمع عناصرPlainTooltipوRichTooltipالجديدة القابلة للإنشاء. (I79e1d)
الإصدار 1.6.0-alpha04
23 أغسطس 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha04. يتضمّن الإصدار 1.6.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة واجهة
ReusableCompositionلإدارة دورة الحياة وإعادة استخدام الأغاني الفرعية (I812d1، b/252846775) - تمت ترقية
Modifier.focusGroupإلى واجهات برمجة تطبيقات ثابتة. (I7ffa3) - أضِف عمليات تحميل زائدة للدالة
BasicTextField2تقبل قيمة غير قابلة للتغيير ودالة ردّ لتغيير هذه القيمة، تمامًا مثل واجهة برمجة التطبيقات الحاليةBasicTextField. (I3f2b8) - أصبحت واجهة برمجة التطبيقات
GridItemSpan::currentLineSpanواجهة ثابتة. (Icc29c) - أصبحت اللوحة التي تقبل
contentDescriptionواجهة برمجة تطبيقات ثابتة. (Ib3d29) - تمّ تقديم
viewportSizeفيScrollState، وهي طريقة لمعرفة حجمviewPortللمكوّن الذي يستخدمScrollStateبعد إجراء القياس. (I8b85a، b/283102682) - تم إصلاح مشكلة عدم تطابق عملية الجلب المسبق في Pager مع السلوك في "طرق العرض". (I93352، b/289088847)
- أصبحت
Modifier.consumeWindowInsets(PaddingValues)الآن إصدارًا ثابتًا.- تمت إزالة واجهة برمجة التطبيقات
Deprecated Modifier.consumedWindowInsetsالآن. يمكنك استخدامModifier.consumeWindowInsetsكبديل. (Id72bb)
- تمت إزالة واجهة برمجة التطبيقات
الإصدار 1.6.0-alpha03
9 أغسطس 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha03. يتضمّن الإصدار 1.6.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تحميل زائد للدالة
LazyLayout، وهي تقبل تعبير lambda الخاص بالدالةLazyLayoutItemProvider، وليس كائنًا عاديًا كما كان من قبل. تم إيقاف التحميل الزائد السابق نهائيًا. (I42a5a) - تمت إضافة إمكانية ضبط
privateImeOptions(Idb772)
إصلاح الأخطاء
- تم إصلاح مشكلة الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة
readOnlyهي "صحيح". تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير قيمةreadOnlyمن "صحيح" إلى "خطأ" أثناء التركيز. (I34a19، b/246909589)
الإصدار 1.6.0-alpha02
26 يوليو 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha02. يتضمّن الإصدار 1.6.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم طرح
PagerLayoutInfoمع معلومات تم جمعها بعد اجتياز مقياس فيPager. أضفنا أيضًاPageInfo، وهي المعلومات حول صفحة واحدة تم قياسها فيPager. (Iad003، b/283098900) - تعليقات توضيحية إضافية لتحديد المدخلات المسموح بها للعناصر القابلة للإنشاء (I51109)
- تمت إضافة
SemanticsNodeInteraction.requestFocusكطريقة أسهل وأكثر قابلية للاكتشاف لطلب التركيز في الاختبارات. (Ie8722) - إعادة تصميم واجهة برمجة التطبيقات
PlatformTextInput*بالكامل (I6c93a، b/274661182، b/267235947، b/277380808) - لم يعُد
SoftwareKeyboardControllerوLocalSoftwareKeyboardControllerميزتَين تجريبيتَين. أصبحLocalSoftwareKeyboardControllerالآنCompositionLocalمناسبًا أيضًا. (I4c364) - توفّر
Modifier.transformableالآن قيمة "بان دلتا" في المَعلمةcanPanللمساعدة في تحديد اتجاه التحريك للسماح به أو حظره. (I692aa، b/266829800) - تعديل المعدِّل
consumeWindowInsetsلتوسيع الفئة الرئيسيةAbstractComposeView(Iacd74، b/269479941)
الإصدار 1.6.0-alpha01
21 حزيران (يونيو) 2023
تم طرح androidx.compose.foundation:foundation-*:1.6.0-alpha01. يتضمّن الإصدار 1.6.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تم تقديم واجهة برمجة تطبيقات
AnchoredDraggableجديدة في Foundation. يمكن استخدامها لإنشاء مكوّنات يمكن سحبها بين حالات منفصلة، مثل أوراق البيانات السفلية المشروطة. تحلّ واجهة برمجة التطبيقات هذه محل واجهة برمجة التطبيقاتSwipeableالخاصة بـ Material. (I4a2ed)
تغييرات واجهة برمجة التطبيقات
- دعم
InputConnection#requestCursorUpdates(I0c69b) - تمت إضافة
scrollAnimationSpecللسماح بمواصفات الصور المتحركة المخصّصة. تم تعديلBringIntoViewCalculatorإلىBringIntoViewScroller. (Idb741) - أضِف النوع
ResourceResolutionExceptionلتضمين العناصر القابلة للرمي التي يتم طرحها عند محاولة تحميل مواد عرض الصور النقطية مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44، b/230166331، b/278424788) - تمت إضافة خصائص ودلالات وإجراءات لدعم ترجمة النصوص. (I4a6bc)
- تم طرح واجهة برمجة التطبيقات
BringIntoViewCalculatorالتي يمكن استخدامها لتخصيص طريقة استجابة المكوّنات، مثلScrollable، لطلباتbringIntoView. تم تغيير الحمل الزائد للعنصر القابل للتمرير لقبول نسخة منBringIntoViewCalculatorبشكل اختياري. (Iaf5af)
إصلاح الأخطاء
- تمت إضافة عملية فحص lint للتحذير في حال إنشاء
MutableInteractionSourceفي التركيب بدون تذكّره، على غرار عمليات فحص lint لإنشاء حالة قابلة للتغيير أوAnimatable. (I5daae) - تمت إضافة إمكانية التحديد باستخدام الماوس. سيتوسّع التحديد المستند إلى اللمس بمقدار كلمة، وسيتقلّص بمقدار حرف. (Ic0c6c، b/180639271)
- تمت إضافة واجهة
FocusTargetModifierNodeيمكن استخدامها لإنشاءFocusTargetمخصّص. (I9790e)
الإصدار 1.5
الإصدار 1.5.4
18 أكتوبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.4. يتضمّن الإصدار 1.5.4 هذه التعديلات.
الإصدار 1.5.3
4 أكتوبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.3. لا يتضمّن هذا الإصدار أي تغييرات.
الإصدار 1.5.2
27 سبتمبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.2. يتضمّن الإصدار 1.5.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في النص كان يؤدي إلى حدوث أعطال في ظروف معيّنة عند إبطال صحة الدلالات.
الإصدار 1.5.1
6 سبتمبر 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.1. يتضمّن الإصدار 1.5.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة
readOnlyهي "صحيح". تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير قيمةreadOnlyمن "صحيح" إلى "خطأ" أثناء التركيز. (I34a19، b/246909589)
الإصدار 1.5.0
9 أغسطس 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.0. يتضمّن الإصدار 1.5.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.4.0
- تم نقل العديد من المعدِّلات الأساسية، بما في ذلك
Modifier.clickableوModifier.draggableوModifier.scrollableومعدِّل التصميم وغير ذلك، إلى واجهة برمجة التطبيقاتModifier.Node، ما يقلّل من الحمل الزائد على التركيب الأوّلي. - تحسينات على ثبات Pagers. تم إصلاح العديد من الأخطاء.
- تتوفّر مَعلمات
pageCountالآن فيPagerStateبدلاً من أداة "التنقل بين الصفحات" نفسها
الإصدار 1.5.0-rc01
26 يوليو 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.0-rc01. يتضمّن الإصدار 1.5.0-rc01 هذه التعديلات.
إصلاح الأخطاء
يتوفّر فحص اختياري لاقتراح نقل استدعاءات
mutableStateOf()إلى أنواعها المتخصّصة المقابلة للعناصر الأساسية. رقم تعريف أداة Lint هوAutoboxingStateCreation. في السابق، كان يتم تفعيل عملية الفحص هذه تلقائيًا لجميع المشاريع. لعرض هذا التحذير في محرّر "استوديو Android" ونتائج Lint في مشروعك، غيِّر مستوى خطورته من "معلومات" إلى "تحذير" (أو مستوى أعلى) من خلال تعريفwarning "AutoboxingStateCreation"داخل إعداداتbuild.gradleأوbuild.gradle.ktsفي الوحدة كما هو موضّح (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
الإصدار 1.5.0-beta03
28 حزيران (يونيو) 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.0-beta03. يتضمّن الإصدار 1.5.0-beta03 هذه التعديلات.
الإصدار 1.5.0-beta02
7 يونيو 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.0-beta02. يتضمّن الإصدار 1.5.0-beta02 هذه التعديلات.
الإصدار 1.5.0-beta01
24 مايو 2023
تم طرح androidx.compose.foundation:foundation-*:1.5.0-beta01. يتضمّن الإصدار 1.5.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- نفِّذ
PlatformDataProviderلتوفير معدّل نبضات القلب وعدد الخطوات اليومية. تمت إزالة واجهةSensorGatewayمن واجهة برمجة التطبيقات المتاحة للجميع. (I55b84)
إصلاح الأخطاء
- تقليل عمليات التخصيص أثناء قياس القوائم/الشبكات الكسولة وما إلى ذلك (Iaf9e2)
- تقليل عمليات التخصيص عند تطبيق اللقطات (I65c09)
- تمت إزالة عمليات التخصيص من الصور المتحركة النابضة (Ie9431)
- تمت إزالة التخصيص من
TextLayout(I0fd11) - تمت إزالة عمليات تخصيص متعدّدة في تتبُّع سرعة المؤشر (I26bae)
الإصدار 1.5.0-alpha04
10 مايو 2023
تم طرح androidx.compose.foundation:foundation:1.5.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha04. يتضمّن الإصدار 1.5.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة
TextStyle.merge(...)محسَّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - إضافة
SnapLayoutInfoProviderيمكن استخدامه معLazyGridState(I92134، b/269237141، b/260914964) - تمت إضافة
Modifier.animateItemPlacement()التجريبية لنطاق العناصر في الشبكات المتقطّعة الكسولة. يمكنك تطبيقها على العناصر لتحقيق تأثيرات تغيير موضع التشغيل الآلي أو إعادة ترتيب الصور المتحركة. (I4b62d، b/257034719) - ترقية
GridCells.FixedSizeإلى الإصدار الثابت تحدّدFixedSizeLazyGridحيث تأخذ كل خلية حجمًا دقيقًا على المحور العرضي، مع توزيع المساحة المتبقية حسب ترتيب المحور العرضي. (I8542f) - تمت إضافة نطاق المستقبِل
PagerScopeإلى Pager ودالة مساعدة لاحتساب إزاحة صفحة معيّنة. (If2577) - قدِّم
snapPositionalThresholdعند إنشاء سلوك "التقاط سريع". استخدِم هذه المَعلمة لتحديد حدّ موضعي للتنقل السريع في Pager. (If8f7f) - تم استبدال
SnapLayoutInfoProvider.calculateSnappingOffsetBoundsبـcalculateSnappingOffset. في هذه الطريقة الجديدة، نطلب ببساطة الإزاحة التالية التي يجب أن يتم محاذاتها. يجب إجراء عملية احتساب الحدود على مستوى التنفيذ لأنّها قد تختلف حسب الطريقة التي يجب أن يتم بها المحاذاة. (I923a4) - تمت ترقية واجهات برمجة التطبيقات
LazyStaggeredGridإلى إصدار ثابت. (I633a5) - إزالة
pageCountمنHorizontal/VerticalPagerيجب توفير ذلك عند إنشاء الحالة. تم تعديلPagerStateوrememberPagerStateلقبولpageCount. (Ieb52d، b/266965072) - إزالة
pageCountمنHorizontal/VerticalPagerيجب توفير ذلك عند إنشاء الحالة. تم تعديلPagerStateوrememberPagerStateلقبولpageCount. (Ifa3cb، b/266965072) - تقديم
shortSnapVelocityThresholdفي الصفحةSnapFlingBehaviorمن Pager (I7379e، b/275579012) - يضيف
FlowRowScopeوFlowColumnScope. (I54fe2)
إصلاح الأخطاء
- لم يعُد يحدث عطل عند إجراء مكالمات للحصول على دلالات حول النص عندما تتضمّن القيود
minWidthوminHeight. (Ibd072) - تم إصلاح مشكلة عدم ظهور لوحة المفاتيح لحقول النص داخل مربّعات الحوار التي لم يتم إنشاؤها باستخدام العنصر القابل للإنشاء
Dialog. (I82551، b/262140644)
الإصدار 1.5.0-alpha03
19 أبريل 2023
تم طرح androidx.compose.foundation:foundation:1.5.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه التعديلات.
يتيح هذا الإصدار مجموعة عرض النصوص الجديدة في Compose. تم تحسين أداء الحزمة الجديدة، ولن تلاحظ أي تغييرات مرئية.
إذا لاحظت تغييرات في النص المعروض، يمكنك تصحيح الأخطاء من خلال ضبط NewTextRendering1_5 = false لتأكيد اختلاف السلوك. سيؤدي ضبط هذا الخيار إلى فرض إعادة التركيب. يُرجى الإبلاغ عن أي اختلافات في السلوك كأخطاء.
ستتم إزالة علامة تصحيح الأخطاء قبل إصدار الإصدار التجريبي 1.5.01.(Iada23، b/246960758)
تغييرات واجهة برمجة التطبيقات
- اجعل
FlowColumn/FlowRowمضمّنًا. (Idab37)
الإصدار 1.5.0-alpha02
5 أبريل 2023
تم طرح androidx.compose.foundation:foundation:1.5.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة إمكانية استخدام خلايا ثابتة الحجم في
LazyGridوترتيبها باستخدام ترتيب المحور العرضي. (I83ed9، b/235121277، b/267942510) - تمت إضافة إمكانية استخدام مسارات ثابتة الحجم في
LazyStaggeredGridوترتيبها باستخدام ترتيب المحور العرضي. (I7d519) - يمكن الآن فتح
UrlAnnotationفيAnnotatedStringمن خلال خدمات تسهيل الاستخدام، مثلTalkBack. (If4d82، b/253292081) - تمت إضافة إجراء
InsertTextAtCursorالدلالي للحقول النصية. (I11ed5) - ستطلب إجراءات الاختبار المتعلّقة بالنص (مثل
performTextInput) الآن التركيز مباشرةً، باستخدام إجراء الدلالات، بدلاً من النقر على الحقل. (I6ed05) - إضافة دعم للمسافة/الترتيب بين المحاور باستخدام
verticalArrangementفيFlowRowوhorizontalArrangementفيFlowColumnنزيل أيضًاverticalAlignmentوhorizontalAlignmentمن المستوى الأعلى فيFlowRow/FlowColumn. يمكن للمطوّرين استخدامModifier.alignبدلاً من ذلك. يقلّل ذلك من الالتباس بين اصطلاحات التسمية الخاصة بـverticalAlignmentوverticalArrangement. (I87b60، b/268365538)
الإصدار 1.5.0-alpha01
22 مارس 2023
تم طرح androidx.compose.foundation:foundation:1.5.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تصميم النص و
BasicTextلاستخدام نظام المعدِّلات الجديد. ويؤدي ذلك إلى تحسينات كبيرة في الأداء في العديد من الحالات. لن تظهر أي تغييرات. (If1d17، b/246961435) - تمت إضافة إجراء
PerformImeActionالدلالي لاستدعاء إجراء IME على عُقد محرّر النصوص. (Ic606f، b/269633506)
إصلاح الأخطاء
- تم تعديل الأجزاء الداخلية من
Modifier.hoverable. لن يظهر المعدِّلhoverableفي "نافذة الفحص" إلا إذا كان مفعّلاً. (I82103)
الإصدار 1.4
الإصدار 1.4.3
3 مايو 2023
تم إصدار androidx.compose.foundation:foundation:1.4.3 وandroidx.compose.foundation:foundation-layout:1.4.3 بدون أي تغييرات (زيادة رقم الإصدار فقط).
الإصدار 1.4.2
19 أبريل 2023
تم طرح androidx.compose.foundation:foundation:1.4.2 وandroidx.compose.foundation:foundation-layout:1.4.2. يتضمّن الإصدار 1.4.2 هذه التعديلات.
الإصدار 1.4.1
5 أبريل 2023
تم طرح androidx.compose.foundation:foundation:1.4.1 وandroidx.compose.foundation:foundation-layout:1.4.1. يتضمّن الإصدار 1.4.1 هذه التعديلات.
الإصدار 1.4.0
22 مارس 2023
تم طرح androidx.compose.foundation:foundation:1.4.0 وandroidx.compose.foundation:foundation-layout:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.3.0
- تمت إضافة عملية دمج توافق رموز الإيموجي إلى
TextوTextField، بالإضافة إلى الفقرة ذات المستوى الأدنى. يتم تفعيلها تلقائيًا عند ضبط emojicompat. - يمكن ضبط
EmojiCompatعلى نص معيّن باستخدامPlatformParagraphStyle. - تمت إضافة دعم لمدى السطر الكامل إلى
LazyStaggeredGrid(I28252) - إضافة ميزة
onHoverالتجريبية إلىClickableText(I6938f) - تم تقديم عمليات تحميل تجريبية جديدة للدالة
runComposeUiTestوالدالتينcreate*ComposeRuleاللتين تقبلان المَعلماتCoroutineContext. سيتم استخدام السياق في تركيبة الاختبار وأي طلباتLaunchedEffectوrememberCoroutineScope()في التركيبة. (I10614، b/265177763) - تتوفّر الآن الرموز
FlowRowوFlowColumnكرموز@ExperimentalFoundationApiتتيح تخطيطًا أكثر مرونة للصفوف والأعمدة للمكوّنات التي سيتم نقلها إلى سطر جديد إذا لم تتوفّر مساحة كافية على المحور الرئيسي. (I3a7b2) - تتوفّر
Modifier.basicMarquee()كميزة تجريبية لعرض المحتوى بتأثير شريط تمرير. (I2df44، b/139321650)
الإصدار 1.4.0-rc01
8 مارس 2023
تم طرح androidx.compose.foundation:foundation:1.4.0-rc01 وandroidx.compose.foundation:foundation-layout:1.4.0-rc01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم طرح واجهة برمجة التطبيقات
PlatformTextInputAdapterالجديدة ذات المستوى المنخفض لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة التطبيقات الخاصة بالنظام الأساسي. (I58df4) - أضِفنا إمكانية عكس التنسيق إلى
LazyStaggeredGrid. (I3ef4a)
إصلاح الأخطاء
- سيعدّل الإجراء الدلالي
BasicTextFieldالآن مخزن النص المؤقت باستخدام مسار الرمز نفسه المستخدَم في تعديلات IME ووظائف الاختبار (مثلperformTextReplacement).SetText - تستخدم دوال اختبار النصوص
performTextClearanceوperformTextReplacementوperformTextSelectionالآنSemanticsActions. (I0807d، b/269633168، b/269624358)
الإصدار 1.4.0-beta02
22 فبراير 2023
تم طرح androidx.compose.foundation:foundation:1.4.0-beta02 وandroidx.compose.foundation:foundation-layout:1.4.0-beta02. يتضمّن الإصدار 1.4.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دالة ردّ نداء جديدة
Modifier.Node.onReset()تتيح لك إعادة ضبط بعض الحالات المحلية للتعامل بشكل صحيح مع الحالة التي سيتم فيها إعادة استخدامLayout(على سبيل المثال، كعنصر منLazyColumn). تم إصلاحFocusTargetModifierNodeلإعادة ضبط الحالة المركّزة بشكل صحيح. (I65495، b/265201972) - تمت إضافة المَعلمة
BlendModeإلى الطرقDrawScope.drawTextوParagraph.paintوMultiParagraph.paintلتوفير خوارزميات دمج مختلفة عند رسم نص على Canvas. (I57508) - تمت إزالة واجهة برمجة التطبيقات
modifierElementOf(). يُرجى التوسّع منModifierNodeElementمباشرةً بدلاً من ذلك. (Ie6d21)
إصلاح الأخطاء
- لم يعُد بإمكانك اختيار جزء من حرف عند تعديل مقابض التحديد. (Idedd1)
- إصلاح عُطل عند الضغط على Ctrl+Backspace في
TextFieldفارغ (I0427f، b/244185537)
الإصدار 1.4.0-beta01
8 شباط (فبراير) 2023
تم طرح androidx.compose.foundation:foundation:1.4.0-beta01 وandroidx.compose.foundation:foundation-layout:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.
الميزات الجديدة
- منذ الإصدار 1.3، تمت إضافة ميزة دمج رموز الإيموجي إلى
TextوTextField، بالإضافة إلى الفقرة ذات المستوى الأدنى. يتم تفعيلها تلقائيًا عند ضبط emojicompat. - يمكن ضبط
EmojiCompatعلى نص معيّن باستخدامPlatformParagraphStyle.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عملية تنفيذ شائعة لواجهة برمجة التطبيقات
PinnableContainerالمستخدَمة في جميعLazyLayoutsللاحتفاظ بالعناصر التي تخرج من التركيب، ولكنها لا تزال بحاجة إلى أن تكون نشطة. (If45a4) - تمت إعادة تسمية
PinnableContainer.PinnedHandle.unpin()إلىrelease()(I4667a)
المساهمة الخارجية
- تمّت إضافة السمة
mainAxisItemSpacingإلىLazyListLayoutInfoوLazyGridLayoutInfoوLazyStaggeredGridItemInfo(I52fad)
الإصدار 1.4.0-alpha05
25 كانون الثاني (يناير) 2023
تم طرح androidx.compose.foundation:foundation:1.4.0-alpha05 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 هذه التعديلات.
الميزات الجديدة
- تمت إضافة دعم لمدى السطر الكامل إلى
LazyStaggeredGrid(I28252) - إضافة
onHoverالتجريبية إلىClickableText(I6938f) - تم تقديم عمليات تحميل تجريبية جديدة للدالة
runComposeUiTestوالدالتينcreate*ComposeRuleاللتين تقبلان المَعلماتCoroutineContext. سيتم استخدام السياق في تركيبة الاختبار وأي طلباتLaunchedEffectوrememberCoroutineScope()في التركيبة. (I10614، b/265177763)
تغييرات واجهة برمجة التطبيقات
- تدمج واجهات برمجة التطبيقات السابقة واللاحقة لـ
OverscrollEffectفي وظائفapplyToScrollوapplyToFlingمدمجة "للتزيين". يمكنك الاطّلاع على النماذج المعدَّلة في المستندات للحصول على أمثلة حول كيفية تنفيذ تأثير التمرير الزائد باستخدام شكل واجهة برمجة التطبيقات الجديد. (I8a9c4، b/255554340) - المزيد من أنواع/قيم null للدوال المضمّنة/المخفية المتوقّفة نهائيًا (I24f91)
- تمت ترقية واجهتَي برمجة التطبيقات
LineBreakوHyphensفيTextStyleإلى إصدار ثابت. (Ic1e1d)
إصلاح الأخطاء
- سيظل المؤشر في حقول النص يومض حتى عند إيقاف الصور المتحركة. (I95e70، b/265177763)
- تعرض
Modifier.basicMarqueeالآن صورًا متحركة حتى عندما تكون الصور المتحركة غير مفعّلة في إعدادات النظام. (I23389، b/262298306، b/265177763)
المساهمة الخارجية
- لن يتم إيقاف الطريقتَين
notifyFocusedRectفيTextInputSessionوTextInputServiceنهائيًا مرة أخرى. (I23a04، b/262648050)
الإصدار 1.4.0-alpha04
11 يناير 2023
تم طرح androidx.compose.foundation:foundation:1.4.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 هذه التعديلات.
الميزات الجديدة
- تتوفّر الآن الرموز
FlowRowوFlowColumnكرموز@ExperimentalFoundationApiتتيح تخطيطًا أكثر مرونة للصفوف والأعمدة للمكوّنات التي سيتم نقلها إلى سطر جديد إذا لم تتوفّر مساحة كافية على المحور الرئيسي. (I3a7b2) - تتوفّر
Modifier.basicMarquee()كميزة تجريبية لعرض المحتوى بتأثير شريط تمرير. (I2df44، b/139321650)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
FocusRequesterModifierنهائيًا واستبداله بـFocusRequesterNode(I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589) - أصبحت الدالة الإنشائية
AndroidFontالتي تتضمّنvariationSettingsالآن واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من واصفات الخطوط. (I5adcc، b/261565807) - تم تقديم واجهة برمجة التطبيقات
PinnableContainerالتي يتم نشرها من خلال القوائم الكسولة عبر تركيبة محلية تتيح تثبيت العنصر الحالي. هذا يعني أنّه لن يتم التخلص من هذا العنصر عند الانتقال إلى جزء آخر من الشاشة. على سبيل المثال، سيؤدي الضغط علىModifier.focusable()إلى تثبيت العنصر الذي يتم التركيز عليه حاليًا من خلال هذه الآلية. (Ib8881، b/259274257، b/195049010) - أعدنا كتابة طريقة استجابة العناصر القابلة للتمرير إلى
bringIntoViewRequestersوطريقة استجابة العناصر القابلة للتركيز عليها من أجل تحسين نمذجة تعقيد هذه العمليات والتعامل مع المزيد من الحالات الحدّية. (I2e5fe وb/241591211 وb/192043120 وb/237190748 وb/230756508 وb/239451114) - المزيد من إمكانية قبول القيمة الخالية لأنواع الإرجاع للدوال المتوقفة نهائيًا والمخفية (Ibf7b0)
- تمت إضافة
TextMotionتجريبية إلىTextStyleلتحديد ما إذا كان النصStatic(default)أو متحركًا. استخدِمTextMotion.Animatedإذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره باستخدام الرسوم المتحركة. (I24dd7) - إضافة
TextFieldFocusModifierلإصلاح سلوك التنقّل باستخدام التركيز على نظام Android الأساسي (I00303) - تم استبدال وسيطة
maxSize: IntSizeفيdrawTextبوسيطةsize: Sizeلتكون متوافقة مع دوالDrawScopeالأخرى. يتم ضبطsizeعلىSize.Unspecifiedتلقائيًا، ما لا يؤدي إلى تغيير السلوك التلقائي السابق. (Icd27d)
إصلاح الأخطاء
- تعديلات على فيزياء الالتقاط في
SnapFlingBehaviourلتوفير تجربة أكثر طبيعية
مشكلة معروفة
- عند التحديث من
androidx.compose.foundation:1.4.0-alpha03إلىandroidx.compose.foundation:1.4.0-alpha04، قد يظهر لك الخطأjava.lang.NoSuchFieldError. هنا تم الإبلاغ عن المشكلة في الأصل. تم إرسال إصلاح لهذه المشكلة، وسيتوفّر في تحديث Compose التالي. كحلّ بديل، يمكنك تحديث مكتبتَيandroidx.compose.materialوandroidx.compose.material3إلى أحدث إصدار(1.1.0-alpha04) أو الرجوع إلى الإصدار 1.4.0-alpha03 منandroidx.compose.foundation.
الإصدار 1.4.0-alpha03
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.compose.foundation:foundation:1.4.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- في اختبارات واجهة المستخدم التي تستخدم قاعدة Compose، لن يتم إرسال عمليات الاستئناف التي تم استئنافها أثناء عمليات معاودة الاتصال
withFrameNanosإلا بعد انتهاء جميع عمليات معاودة الاتصال بالإطار. يتطابق ذلك مع سلوك Compose عند التشغيل بشكل طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. يجب أن يؤثر ذلك فقط في الرمز الذي يستدعيwithFrameNanosأوwithFrameMillisمباشرةً، ويتضمّن منطقًا خارج وظيفة رد الاتصال التي تم تمريرها إلى هاتين الدالتين، وقد يحتاج إلى نقله إلى داخل وظائف رد الاتصال. يمكنك الاطّلاع على تغييرات اختبار الصور المتحركة في طلب التغيير هذا للحصول على أمثلة. - تمت إضافة المَعلمة الاختيارية
onPerformTraversals: (Long) -> Unitإلى الدالة الإنشائيةTestMonotonicFrameClockودالة المصنع لتنفيذ الرمز بعد عمليات رد الاتصالwithFrameNanosولكن قبل استئناف إجراءات الروتين المشترك للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670) - إضافة إجراءات تسهيل استخدام الصفحة:
PageUpوPageDownوPageLeftوPageRightيُرجى العِلم أنّ هذه الميزات لا تتوفّر إلا بدءًا من الإصدار 29 من واجهة برمجة التطبيقات. (Ida4ab) - نقدّم
HorizontalPagerوVerticalPager، وهما طريقتان لعرض العناصر القابلة للإنشاء بطريقة Pager. تمت إضافةPagerStateللتحكّم في أدوات Pager بالإضافة إلى طلب معلومات عن الحالة الحالية لأداة Pager. تم تقديمPageSize، وهي طريقة للتحكّم في حجم صفحة Pager، ويمكن استخدامها لإنشاء لوحة عرض دوّارة مثل Pagers. تم تقديمPagerSnapDistance، وهي طريقة للتحكّم في طريقة عمل المحاذاة في سلوك التمرير السريع في Pager. (I01120) - تم تقديم حمولة زائدة في
SnapFlingBehavior.performFlingللمساعدة في فهم المكان الذي سيستقر فيه التحريك السريع. (I569f6) - تمت إزالة
OverscrollEffect#isEnabled. بدلاً من الحاجة إلى تذكُّر هذا العلامة وضبطها، ما عليك سوى عدم إرسال الأحداث إلى تأثير التمرير الزائد في الحالات التي لا تريد فيها ظهور التمرير الزائد (على سبيل المثال، إذا كان كل منScrollableState#canScrollForward/backwardيعرض القيمة "خطأ"). (I1a4b0، b/255554340، b/255557085) - تمت إضافة
ScrollableState#canScrollForwardوScrollableState#canScrollBackwardللاستعلام عمّا إذا كانScrollableStateيتضمّن مساحة للتمرير في أي من الاتجاهين (سواء كان في الحد الأدنى أو الأقصى لنطاقه). يكون هذا الإعداد تلقائيًا على "صحيح" للتوافق مع الأنظمة القديمة التي تستخدمScrollableState. يمكن للمستهلكين استخدام ذلك للإشارة إلى المستخدم بأنّه لا يزال هناك مساحة للتمرير، ويمكن أيضًا استخدام ذلك لتجنُّب إرسال دلتا إلىScrollableStatesالتي لا تتضمّن مساحة للتمرير في اتجاه معيّن، وذلك للحدّ من العمل غير الضروري. (Idf1a0، b/255557085) - تمت إضافة Modifier API للاستعلام عن معلومات التمرير الخاصة بالعناصر الرئيسية. (I2ba9d، b/203141462)
- يُستخدَم في
Clickableلتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث تمرير. - تم إصلاح المشكلة المتمثلة في عدم تأخير
Clickablesبشكلٍ صحيح عند استخدامه داخلScrollable ViewGroup. - تم تعديل الأدراج وأوراق البيانات لتأخير الضغطات بشكل صحيح في حال إمكانية تحوّل الإيماءات إلى أحداث تمرير.
- عدِّل تسمية
snapStepSizeلتكون متسقة مع الطرق الأخرى فيSnapLayoutInfoProvider. (Ife67c) - تمت إضافة
EmojiCompatإلىCompose(Ibf6f9، b/139326806) - تمت إعادة تسمية
consumedWindowInsets()إلىconsumeWindowInsets()وwithConsumedWindowInsets()إلىonConsumedWindowInsetsChanged()، وأصبحت "المعدّلات" متاحة للجميع. (Ie44e1)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يؤدي إلى تعذُّر التشغيل مع
Modifier.animateItemPlacement()والشبكات الكسولة. كان يحدث ذلك في بعض الحالات عندما يكون عدد العناصر الجديدة أقل من العدد السابق. (I0bcac، b/253195989)
الإصدار 1.4.0-alpha02
9 نوفمبر 2022
تم طرح androidx.compose.foundation:foundation:1.4.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تقبل الآن
awaitFirstDownوwaitForUpOrCancellationPointerEventPassلتوفير مرونة أكبر. (I7579a، b/212091796) - إزالة واجهة برمجة التطبيقات Revert
beyondBoundCountمن واجهات Lazy* APIs (I12197) - تمت إضافة مَعلمة في Lazy APIs لإنشاء عناصر خارج إطار العرض ووضعها (I69e89، b/172029355)
- تمت إضافة المَعلمة
minLinesإلىBasicTextوBasicTextField. تتيح هذه السمة ضبط الحد الأدنى لارتفاع العناصر القابلة للإنشاء هذه من حيث عدد الأسطر (I24294، b/122476634).
الإصدار 1.4.0-alpha01
24 أكتوبر 2022
تم طرح androidx.compose.foundation:foundation:1.4.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة جديدة،
awaitEachGesture()، لأدوات رصد الإيماءات. تعمل هذه الطريقة بشكل مشابه للطريقةforEachGesture()، ولكنّ حلقة الإيماءات تعمل بالكامل ضمنAwaitPointerEventScope، لذا لا يمكن فقدان الأحداث بين التكرارات. - تم إيقاف
forEachGesture()نهائيًا واستبداله بـawaitEachGesture()لأنّه يسمح بفقدان الأحداث بين الإيماءات. (Iffc3f، b/251260206) - تمت إضافة
WindowInsets.imeAnimationSource وWindowInsets.imeAnimationTargetلتحديد مدى تقدّم الحركة ومعرفة موضع محرر أسلوب الإدخال بعد اكتمال الحركة. (I356f1، b/217770337)
الإصدار 1.3
الإصدار 1.3.1
9 نوفمبر 2022
تم طرح androidx.compose.foundation:foundation:1.3.1 وandroidx.compose.foundation:foundation-layout:1.3.1. يتضمّن الإصدار 1.3.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة الأداء في
BeyondBoundsLayout(aosp/2255266) - لن يقرأ
ContentInViewModifierإحداثيات التصميم ما لم يتم إرفاقه (aosp/2241316)
الإصدار 1.3.0
24 أكتوبر 2022
تم طرح androidx.compose.foundation:foundation:1.3.0 وandroidx.compose.foundation:foundation-layout:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.2.0
- تم طرح إصدارات تجريبية من
LazyVerticalStaggeredGridوLazyHorizontalStaggeredGrid. - تمت إضافة
SnapFlingBehaviorوrememberSnapFlingBehaviorوواجهات برمجة التطبيقات الأخرى ذات الصلة كتجريبية. - تعرض الآن العناصر
Modifier.clickableوModifier.toggleableوModifier.selectableتموّجات عند النقر عليها باستخدام لوحة المفاتيح أو لوحة التحكّم الاتجاهية على جهاز التحكّم عن بُعد.
الإصدار 1.3.0-rc01
5 أكتوبر 2022
تم طرح androidx.compose.foundation:foundation:1.3.0-rc01 وandroidx.compose.foundation:foundation-layout:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم
lowVelocityAnimationSpecالذي تستخدمه خطوة الاقتراب عندما لا تكون سرعة التحريك كافية للتلاشي. (Iaeb27) - تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة باسم Hyphens لتتيح إضافة شرطات تلقائيًا في النص (Iaa869)
الإصدار 1.3.0-beta03
21 سبتمبر 2022
تم طرح androidx.compose.foundation:foundation:1.3.0-beta03 وandroidx.compose.foundation:foundation-layout:1.3.0-beta03. يتضمّن الإصدار 1.3.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة خيارات لتخصيص تقسيم الأسطر في أداة "النص" (I86907)
- يمكن الآن لـ
BringIntoViewResponderالحصول على أحدث حدود لطلب ما أثناء معالجته. (If86a5، b/241591211) - إتاحة استخدام المسافات بين العناصر في
Staggered Gridالتجريبية (I10b82) - إضافة مساحة متروكة حول المحتوى إلى التجربة
Staggered Grid(I342ea) - تم تغيير وسيطة
size:IntSizeباستخدامconstraints: Constraintsفي طريقةTextMeasurer.measureلتوفير قيود الحد الأدنى للعرض. (I37530، b/242707525) - تمت إضافة
Modifier.withConsumedWindowInsets()ليتم استهلاكWindowInsetsلاستخدامه خارجwindowInsetsPadding. - تمت إضافة
MutableWindowInsetsللسماح بتغييرWindowInsetsبسهولة بدون إعادة إنشاء. (I7fd28 وb/237019262 وb/243119659)
الإصدار 1.3.0-beta02
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.foundation:foundation:1.3.0-beta02 وandroidx.compose.foundation:foundation-layout:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- الإصدار الأوّلي من
StaggeredGridالتجريبي (Ia48be) - تمت إعادة تسمية
FocusDirection.InوFocusDirection.OutإلىFocusDirection.EnterوFocusDirection.Exit(Ia4262، b/183746982) - تم تقديم حمل زائد
rememberSnapFlingBehaviorيوفّر طريقة سريعة لتفعيل المحاذاة فيLazyLists. (Ifb48a) - تم استبدال المصنع
snapFlingBehaviorبفئةSnapFlingBehaviorملموسة. تمت إضافة طرقSnapLayoutInfoProviderمحدودة النطاق إلى Density لتسهيل عمليات التحويل بين Dp وPx لمستخدمي واجهة برمجة التطبيقات. (I54a11) - عدِّل
LazyLayoutMeasureScope.measureلعرض قائمة بالعناصر القابلة للاستبدال، مع إبراز عدم قابلية القيمة المعروضة للتغيير. (I48b7c) - تم تقديم
SnapLayoutInfoProviderالذي يأخذLazyListStateلإنشاء مثيل منSnapLayoutInfoProviderيمكن استخدامه لتفعيل لقطةFlingBehaviorلـLazyLists. (I2dd10)
إصلاح الأخطاء
- إعادة تصميم
AwaitPointerEventScope#awaitLongPressOrCancellationلتتوافق مع دوال await الأخرى (I646e6)
الإصدار 1.3.0-beta01
24 أغسطس 2022
تم طرح androidx.compose.foundation:foundation:1.3.0-beta01 وandroidx.compose.foundation:foundation-layout:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة
pointerPositionمنOverscrollEffect- يمكن للمؤثرات التي تهتم بموضع المؤشر استخدامModifier.pointerInput { }فيeffectModifierللحصول على موضع المؤشر الحالي بدلاً من ذلك. (I9f606، b/241239306) - تم عرض
AwaitPointerEventScope#awaitLongPressOrCancellationككتلة إنشاء إضافية لرصد الإيماءات الأكثر تعقيدًا (I04374، b/181577176) - تمت إضافة
lazyListSnapLayoutInfoProviderلتفعيل ميزة "المحاذاة" في "القوائم الكسولة". (I3ecdf) - تم تقديم
SnapFlingBehavior، وهو سلوك التمرير السريع الذي يتيح محاذاة القوائم. قدِّم مثيلاً منSnapLayoutInfoProviderيتضمّن معلومات عن تخطيط المحاذاة. (Ie754c)
الإصدار 1.3.0-alpha03
10 أغسطس 2022
تم طرح androidx.compose.foundation:foundation:1.3.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتيح "خطوط الموارد" الآن ضبط إعدادات تنويعات الخطوط (الإصدار 26 من واجهة برمجة التطبيقات أو الإصدارات الأحدث). (I900dd، b/143703328)
- إتاحة الخطوط المتغيّرة في
DeviceFontFamilyNameFont(Ic1279، b/143703328) - تمت إزالة التعليق التوضيحي التجريبي من
PlatformTextStyleوLineHeightStyle. (I64bef) - ستعرض حقول النص الآن استثناءات أكثر تفصيلاً عندما يعرض
OffsetMappingالذي يوفّرهVisualTransformationفهارس غير صالحة. (Ie73f9، b/229378536) - إضافة واجهات برمجة تطبيقات تجريبية لمشاركة منطق موفّر العناصر بين التصاميم الكسولة (Ic891c)
- لم تعُد ميزة
ScrollableDefaults.reverseDirection()تجريبية. (Iba646) - تم إيقاف
SemanticsModifier.idونقل رقم تعريف الدلالات إلىLayoutInfo.semanticsIdبدلاً من ذلك. (Iac808، b/203559524) - لم تعُد ميزة
checkScrollableContainerConstraints()تجريبية. (I2c290) - لم تعُد ميزة
Modifier.clipScrollableContainer()تجريبية. (Ia2b44) - إيقاف
TextInputService.show|hideSoftwareKeyboardيُرجى استخدامSoftwareKeyboardControllerبدلاً من ذلك في رمز التطبيق وTextInputSessionفي رمز إدارة طريقة الإدخال. (I14e4c، b/183448615)
الإصدار 1.3.0-alpha02
27 يوليو 2022
تم طرح androidx.compose.foundation:foundation:1.3.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دالة الإضافة
drawTextإلىDrawScopeلتوفير طريقة لرسم نص متعدد الأنماط على العناصر القابلة للإنشاء والمعدِّلات التي تعمل علىDrawScope، مثلCanvasوdrawBehind. (I16a62، b/190787898)
إصلاح الأخطاء
- سيتم الآن إخفاء لوحة المفاتيح البرمجية عند إيقاف حقل نص أثناء التركيز عليه. (I6e3e4، b/237308379)
- عند إضافة أحداث
InputEventChangeإلى أداة Velocity Tracker، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، ما يضمن احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدف (Icea9d، b/216582726، b/223440806، b/227709803). - عندما يكون للعنصر القابل للتمرير عنصر ثانوي مركّز عليه، سيتم الآن التمرير بشكل صحيح لإبقاء العنصر الثانوي المركّز عليه في العرض عند تصغير حجمه، حتى عندما يكون الحجم متحركًا. (I80867 وb/230756508 وb/220119990)
- تم إصلاح عُطل يحدث عند محو
TextFieldوإعادة ملئه أثناء تفعيل التحديد. (I1235b، b/208655565، b/214253689)
الإصدار 1.3.0-alpha01
29 يونيو 2022
تم طرح androidx.compose.foundation:foundation:1.3.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم نوع التعليق التوضيحي
UrlAnnotationوالطُرق المرتبطة به لتوفير إمكانية استخدام الروابطTalkBackفيAnnotatedString. (I1c754، b/231495122)
إصلاح الأخطاء
- يمكن الآن تحريك
BasicTextFieldcursorBrushبدون إعادة تشغيل مؤقّت المؤشر. (I812e6، b/236383522)
الإصدار 1.2
الإصدار 1.2.1
10 أغسطس 2022
تم طرح androidx.compose.foundation:foundation:1.2.1 وandroidx.compose.foundation:foundation-layout:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.
الإصدار 1.2.0
27 يوليو 2022
تم طرح androidx.compose.foundation:foundation:1.2.0 وandroidx.compose.foundation:foundation-layout:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.1.0
- أصبحت قيمتا
LazyVerticalGridوLazyHorizontalGridثابتتَين الآن. - يمكنك الآن تحديد نوع المحتوى للعناصر في القوائم والشبكات التي يتم تحميلها عند الحاجة. سيسمح ذلك للمكوّنات بإعادة استخدام العناصر بشكل أكثر كفاءة.
- تتضمّن القوائم والشبكات الكسولة الآن المَعلمة
userScrollEnabledالتي تتيح إيقاف التمرير من خلال إيماءات المستخدم. - تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة باسم
LazyLayout. وهي واجهة برمجة التطبيقات التي نستخدمها داخليًا لتشغيل القوائم والشبكات الكسولة. - تم طرح واجهة برمجة التطبيقات
OverscrollEffectكإصدار تجريبي. يمكنك تحديد تأثيرات التمرير الزائد المخصّصة، بالإضافة إلى إضافة تأثير عادي خاص بالنظام الأساسي إلى الحاويات القابلة للتمرير المخصّصة. - تم تقديم واجهات برمجة التطبيقات الخاصة بإمكانية التشغيل التفاعلي للتمرير المتداخل للسماح بإمكانية التشغيل التفاعلي بين طرق العرض وعناصر التمرير في Compose.
- تمت إضافة إمكانية التمرير باستخدام الماوس ولوحة اللمس إلى جميع الحاويات التي يمكن التمرير فيها.
الإصدار 1.2.0-rc03
29 يونيو 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-rc03 وandroidx.compose.foundation:foundation-layout:1.2.0-rc03. يتضمّن الإصدار 1.2.0-rc03 هذه التعديلات.
- لم يتم إجراء أي تغييرات منذ الإصدار 1.2.0-rc02.
الإصدار 1.2.0-rc02
22 يونيو 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-rc02 وandroidx.compose.foundation:foundation-layout:1.2.0-rc02. يتضمّن الإصدار 1.2.0-rc02 هذه التعديلات.
الإصدار 1.2.0-rc01
15 يونيو 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-rc01 وandroidx.compose.foundation:foundation-layout:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم
OverscrollEffectتجريبي للسماح بتأثيرات التمرير الزائد المخصّصة، بالإضافة إلى عمليات التحميل الزائدModifier.scrollableالتي تقبلها. - تم نقل
LocalOverScrollConfigurationالتجريبية منfoundation.gestureإلى حزمة الأساس وإعادة تسميتها إلىLocalOverscrollConfiguration(If19fb، b/204650733) - يتم الآن إنشاء الواجهات في مكتبات Compose باستخدام طرق الواجهة التلقائية في الإصدار 8 من حزمة تطوير البرامج (JDK) (I5bcf1).
- تم طرح واجهة برمجة تطبيقات تجريبية
checkScrollableContainerConstraints()تتيح التحقّق من عدم تضمين حاويات قابلة للتمرير. يمكنك استخدامها عند إنشاء تنسيقات كسولة قابلة للتمرير من خلالLazyLayout. (Id6fab، b/233352497) - تمت إزالة
LazyVerticalGridالمتوقّف نهائيًا من حزمةandroidx.compose.foundation.lazy. تتوفّر واجهة برمجة التطبيقات الثابتة الجديدة فيandroidx.compose.foundation.lazy.grid(I73c76، b/225192009)
الإصدار 1.2.0-beta03
1 يونيو 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-beta03 وandroidx.compose.foundation:foundation-layout:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة رموز تعبيرية تجريبية جديدة
IntervalListوMutableIntervalList. تتيح هذه السمة تمثيل بعض قوائم القيم من خلال فواصل زمنية متعددة. سيكون هذا مفيدًا عندما تريد تحديد لغة خاصة بالمجال مشابهة للغة المستخدَمة فيLazyColumnحيث يمكن تحديد عناصر القائمة من خلال طلبات متعددة للعنصر أو العناصر. (I2d05e، b/228580728)
إصلاح الأخطاء
- تم توضيح المستندات الخاصة بـ
WindowInsets.imeللإشارة إلى أنّه يتم تسجيل هوامشimeمنذ الإصدار 23 من واجهة برمجة التطبيقات، ولكن يتم تحريكها فقط في الإصدار 30 والإصدارات الأحدث. (Ia7fc0، b/230756508) - لن يؤدي الضغط على مفتاح الحذف للأمام عندما يكون المؤشر في نهاية حقل نص إلى حدوث عطل.
- تتطلّب الفئتان
DeleteSurroundingTextCommandوDeleteSurroundingTextInCodePointsCommandالآن أن تكون وسيطات الدالة الإنشائية غير سالبة. (Ica8e6، b/199919707)
الإصدار 1.2.0-beta02
18 مايو 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-beta02 وandroidx.compose.foundation:foundation-layout:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.
- دقة الخط القابل للتنزيل التي لا تغيّر حجم تخطيط النص أو
TextFieldلن تتم إعادة رسمها سابقًا، ما يؤدي إلى عرض خط قديم. يضمن إصلاح الخطأ هذا أن يؤدي تنسيق النص دائمًا إلى إعادة الرسم (b/229727404). (I1d49e، b/229727404)
الإصدار 1.2.0-beta01
11 مايو 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-beta01 وandroidx.compose.foundation:foundation-layout:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
الميزات الجديدة
- هذا هو الإصدار التجريبي الأول من الإصدار 1.2.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة
BeyondBoundsIntervalتجريبية يمكن استخدامها في عمليات التنفيذ المخصّصة لطريقةLazyListعند ترتيب العناصر خارج الحدود المرئية (Ifabfb، b/184670295) - تمت إعادة تسمية
LineHeightBehaviorليصبحLineHeightStyle - تمت إعادة تسمية
LineVerticalAlignmentليصبحLineHeightStyle.Alignment - تمت إعادة تسمية
LineHeightTrimإلىLineHeightStyle.Trim - تمت إزالة قيم الدالة الإنشائية التلقائية من
LineHeightStyle(I582bf، b/181155707) - تمت إضافة قيم تلقائية للعناصر الاختيارية في واجهة
LazyLayoutItemProvider. (Iba8a0) - في واجهة برمجة التطبيقات
LazyLayoutItemProvider، بدلاً من مصنع يعرض دالة lambda قابلة للإنشاء حسب الفهرس، لدينا الآن دالة قابلة للإنشاء أبسط باسم Item تقبل الفهرس. (Id2196) - تمت إعادة تسمية LazyLayoutItemsProvider إلى LazyLayoutItemProvider (I0638c)
- تمت إعادة تسمية
LazyLayoutItemsProvider.itemsCountإلىitemCount(Id409c) - تمت إضافة أداة "الفرشاة" إلى
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هي false. (I97332، b/181155707)تمت إضافة المعدِّل التجريبي
imeNestedScroll()ليتمكّن المطوّرون من التحكّم في محرر أسلوب الإدخال من خلال التمرير. (I60759)
إصلاح الأخطاء
- تم إصلاح مشكلة تراجع حيث لا تخفي الحقول النصية لوحة المفاتيح عند إزالتها من التركيب أثناء التركيز. (I7a410، b/230536793، b/225541817)
- إتاحة علامة الحذف الإيجازي عندما يكون الارتفاع محدودًا ولا يتسع لجميع أسطر النص (Ie528c، b/168720622)
- سيتم الآن تعليق
BringIntoViewRequester.bringIntoViewدائمًا إلى أن يكتمل الطلب أو يتم إيقافه بطلب أحدث لا يتداخل معه. سيتم وضع الطلبات المتداخلة في قائمة الانتظار. (I43e7f، b/216790855) - بالنسبة إلى المستطيلات المتداخلة تمامًا، لن يتم الآن قبول سوى طلب المستطيل الأكبر.
BringIntoViewRequester.bringIntoView(I34be7، b/216790855، b/184760918) - تم تفعيل الإعداد التلقائي
includeFontPadding. يمكن إيقافincludeFontPaddingباستخدام السمةTextStyle.platformTextStyle. في المستقبل القريب، سنغيّر السلوك التلقائي، ولكن إلى أن يحين ذلك الوقت، يتيح لنا هذا التغيير دمج تحسينات ارتفاع الأسطر (aosp/2058653) وحلّ مشاكلTextFieldالاقتصاص. (I01423، b/171394808) - لم يعُد
Modifier.bringIntoViewRequesterيستخدمonGloballyPositioned. (I630f5)
المساهمة الخارجية
- تم الآن عكس اتجاه التمرير في
MouseInjectionScope.scroll(delta = someDelta)على أجهزة Android عند التمرير عموديًا (إذا كانت قيمة someDelta موجبة، سيتم التمرير للأسفل) (Ifb697، b/224992993)
الإصدار 1.2.0-alpha08
20 أبريل 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha08 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha08. يتضمّن الإصدار 1.2.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- عرض جميع الأوزان المتاحة لخطوط النظام على Android عند استخدام
FontFamily.SansSerifسيؤدي ذلك إلى استخدام أسماء خطوط احتياطية، مثل sans-serif-medium، داخليًا على الإصدارات من 21 إلى 28 من واجهة برمجة التطبيقات. هذا تغيير في السلوك، لأنّه في السابق كان يتم توفير الأوزان 400 و700 فقط على الإصدارات من 21 إلى 28 من واجهة برمجة التطبيقات. (I380fe، b/156048036، b/226441992) - تقبل الفقرة وMultiParagraph الآن المَعلمة Constraints. في الوقت الحالي، لا يؤدي تمرير
Constraints.maxHeightإلى أي إجراء، ولكن سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل حذف بعض الأحرف استنادًا إلى الارتفاع. (I6afee، b/168720622) - تقبل السمة
SubcomposeSlotReusePolicy.getSlotsToRetain()الآن فئة مخصّصة تشبه MutableSet ولا تسمح بإضافة عناصر جديدة إليها. (Icd314) - تم إيقاف ميزة الاستهلاك الجزئي (النزول أو الموضع) نهائيًا في
PointerInputChange. يمكنك استخدامconsume()لاستهلاك التغيير بالكامل. يمكنك استخدامisConsumedلتحديد ما إذا كان مستخدم آخر قد استهلك التغيير من قبل أم لا. - تنشئ الدالة
PointerInputChange::copy()الآن نسخة سطحية دائمًا. وهذا يعني أنّه سيتم استهلاك نُسخPointerInputChangeبعد استهلاك إحدى النُسخ. إذا أردت إنشاءPointerInputChangeغير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674) - تم طرح واجهة برمجة تطبيقات تجريبية جديدة
LazyLayout. يتيح لك ذلك إنشاء مكوّناتك الخاصة، مثلLazyColumnمنLazyVerticalGrid. يُرجى العِلم أنّ واجهة برمجة التطبيقات في مراحلها الأولى ويمكن تغييرها في الإصدارات المستقبلية. (Iba2bc، b/166591700) - تأخذ الدالة الإنشائية
AndroidFontالآنtypefaceLoaderكمَعلمة. (I2c971) - تعرض
WindowInsetsالآن حالة الظهور (ما إذا كانت تظهر على الشاشة، بغض النظر عمّا إذا كانت تتقاطع مع النافذة) والحجم الذي يمكن أن تكون عليه إذا كانت متاحة على الجهاز، ولكنها غير نشطة حاليًا. (I65182، b/217770337)
الإصدار 1.2.0-alpha07
6 أبريل 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha07 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
PinnableParentالتي تتيح للعناصر الفرعية في التصاميم الكسولة منع التخلص من العناصر التي تم إنشاؤها حاليًا (Ibbdd0، b/184670295) - يتضمّن
LazyListLayoutInfoوLazyGridLayoutInfoالآن الحقلَينbeforeContentPaddingوafterContentPadding(I3b628، b/200920410) - تمت إضافة
KeyboardType.Decimalكبديل لـKeyboard.Numberلتضمين الفاصل العشري تحديدًا في محرر أسلوب الإدخال. (Iec4c8، b/209835363) - أضِف واصف خط جديدًا Font(DeviceFontFamilyName) للبحث اختياريًا عن الخطوط المثبَّتة على النظام أثناء سلاسل الخطوط الاحتياطية. (I30468، b/219754572)
- أصبحت
PointerEventType.ScrollوPointerEvent.scrollDeltaواجهتَي برمجة تطبيقات ثابتتَين الآن (I574c5، b/225669674) - يمكن تغيير إعدادات التوافق المؤقتة للتطبيق
includeFontPaddingفيTextStyle/ParagraphStyle. includeFontPaddingمن خلالTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). هذا خيار إعداد مؤقت لتفعيل عملية نقل البيانات، وسيتم إزالته. (If47be، b/171394808) - تم تعديل
FontFamily.Resolverلدمج إعداد تسهيل استخدام ميزة "النص الغامق" على مستوى النظام (I6c1e7) - تسمح السمة
consumeWindowInsetsللإضافةComposeViewللمطوّرين بإيقاف استخدام Android WindowInsets. يسمح ذلك بتطبيقWindowInsetsبشكل منفصل على كلComposeViewsفي التسلسل الهرمي بدون أن يتداخل بعضها مع بعض. (I0ef08، b/220943142)
الإصدار 1.2.0-alpha06
23 مارس 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha06 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إجراء دلالي
RequestFocusلطلب التركيز على العنصر المستهدف القابل للتركيز. (I17b71) - تم الآن دمج
FocusOrderفيFocusProperties، وأصبح بإمكانfocusProperties()الاستفادة من جميع إمكاناتfocusOrder(). تم إيقافFocusOrderوfocusOrder()نهائيًا. يجب استبدالfocusOrder()الذي يقبلfocusRequesterبالمعدِّلfocusRequester()معfocusProperties(). يتيح ذلك للمعدّلات فصل الاهتمامات بشكل أفضل. (I601b7) - تمت إضافة
WindowInsets.asPaddingValues(Density)للسماح للمطوّرين بإجراء التحويل بدون الحاجة إلى أن يكونوا في وضع الإنشاء. (I94c35) - تم تعديل عملية تحليل الرسومات المتجهة القابلة للرسم لتتيح عكس المحتوى تلقائيًا في
VectorPainterإذا كان اتجاه التنسيق الحالي من اليمين إلى اليسار. (I79cd9، b/185760237)
إصلاح الأخطاء
- ستؤدي معدِّلات التمرير (
Modifier.verticalScroll()وModifier.horizontalScroll()وModifier.scrollable()) الآن إلى التمرير لإبقاء العنصر القابل للإنشاء الذي تم التركيز عليه مرئيًا في حال تغيير حجم مساحة التمرير وكان العنصر القابل للإنشاء الذي تم التركيز عليه مرئيًا من قبل. - سيتم الآن إبقاء حقول النص فوق لوحة المفاتيح عند التركيز عليها وعرض لوحة المفاتيح، وذلك عندما تكون داخل عنصر قابل للتمرير غير كسول ويكون وضع الإدخال السلس
ADJUST_RESIZE. (I4a485، b/190539358، b/192043120، b/216842427)
الإصدار 1.2.0-alpha05
9 مارس 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha05 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبح الإصداران
LazyVerticalGridوLazyHorizontalGridثابتَين الآن. (I307c0) - تم استبدال
LazyGridItemInfo.Unknownبحقلَين منفصلَين هماLazyGridItemInfo.UnknownRowوLazyGridItemInfo.UnknownColumn(I56d51) - تم نقل
LazyVerticalGrid/LazyHorizontalGridوجميع واجهات برمجة التطبيقات ذات الصلة إلى الحزمة الفرعية.grid. يُرجى تعديل عمليات الاستيراد منandroidx.compose.foundation.lazyإلىandroidx.compose.foundation.lazy.grid. (I2d446، b/219942574) - تم الآن إيقاف ميزة "النص" (
includeFontPadding) تلقائيًا. تم حلّ مشاكل الاقتصاص الناتجة عنincludeFontPadding=false، ولن يحدث أي اقتصاص للنصوص البرمجية الطويلة. (I31c84، b/171394808) - تعرض الواجهة التي تم قياسها الآن السمة parentData (I3313f)
- تم تقديم
Modifier.onFocusedBoundsChangedتجريبي للسماح بمراقبة حدود العناصر القابلة للتركيز في العناصر الفرعية. (I14283، b/220030968، b/190539358، b/192043120، b/216842427) - تمت إضافة LazyHorizontalGrid. (I61ae7، b/191238807)
- تمت إضافة واجهة برمجة تطبيقات جديدة
LazyVerticalGridلتحديد أحجام المحاور المتقاطعة (I17723) - تمت إضافة معدِّل FocusGroup (I64bc0، b/213508274، b/184670295)
إصلاح الأخطاء
- ستعرض السمة
WindowInsets.toString()الآن القيم الصحيحة. (I1585d)
المساهمة الخارجية
- تم تعديلها لاستخدام الإصدار 1.6.0 من Kotlinx coroutines (I3366d)
الإصدار 1.2.0-alpha04
23 فبراير 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم يعُد مطلوبًا من
BringIntoViewRespondersتمرير الطلبات يدويًا إلى عناصر المعالجة الرئيسية، بل أصبح مطلوبًا منها بدلاً من ذلك عرض المستطيل الذي تريد أن تعرضه العناصر الرئيسية على الفور. (I8e66a) - إتاحة تحميل الخطوط بشكل غير متزامن في "النص" (I77057، b/214587005)
- يتيح
LazyVerticalGridالآن استخدامline breakingقبل العناصر التي لا يتناسب نطاقها مع السطر الحالي. (I05c40، b/207462103) - تمت إعادة تسمية
excludeFromSystemGesturesإلىsystemGesturesExclusion(I19526) - يتيح
LazyVerticalGridالآن استخدام reverseLayout. (I6d7d7، b/215572963، b/211753558) - أضِف طريقة
WindowInsets.only()للسماح للمطوّرين بتضمين الأبعاد من WindowInsets فقط. (I14c94، b/217768486) تمت إضافة
ComposableTargetوComposableTargetMarkerوComposableOpenTargetالتي تتيح إعداد تقارير في وقت الترجمة عن الحالات التي يتم فيها استدعاء دالة قابلة للإنشاء تستهدف أداة تطبيق لم يتم تصميمها لاستخدامها.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لمترجم Compose، لذا من النادر استخدام هذه التعليقات التوضيحية مباشرةً . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة، أو دوال قابلة للإنشاء مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عامة تكون تعبيرات لامدا قابلة للإنشاء (يتم استنتاج المتغيرات والمعلَمات المحلية)، أو عند استخدام
ComposeNodeأو دوال قابلة للإنشاء ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب إضافة التعليق التوضيحي
CompoableTargetإلى الدوال القابلة للإنشاء التي تستدعيComposeNodeأوReusableComposeNode، وإلى أي أنواع مَعلمات lambda قابلة للإنشاء. ومع ذلك، يُنصح بإنشاء تعليق توضيحي يتضمّن التعليق التوضيحيComposableTargetMarker، ثم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً منComposableTargetمباشرةً. تكون التعليقات التوضيحية القابلة للإنشاء المميّزة بـComposableTargetMarkerمكافئة لـComposbleTargetمع الاسم المؤهّل بالكامل لفئة السمة كمعلَمة مطبِّقة. للاطّلاع على مثال لاستخدامComposableTargetMarker، راجِعanroidx.compose.ui.UiComposable. (I38f11)
إصلاح الأخطاء
- أصبح مسموحًا الآن بتمرير إزاحات التمرير السلبية إلى
LazyGridState.scrollToItem()وLazyGridState.animateScrollToItem(). (I025c6، b/211753558) - إتاحة تحميل الخطوط غير المتزامن لعنصر TextField (Icc4bf، b/214587005)
الإصدار 1.2.0-alpha03
9 فبراير 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف الطريقتَين
notifyFocusedRectفيTextInputSessionوTextInputServiceنهائيًا ولن يتم استدعاؤهما. استخدِمBringIntoViewRequesterبدلاً من ذلك. (Ia4302، b/192043120، b/216842427، b/178211874) - تم تفعيل الرسوم المتحركة لعناصر الشبكات الكسولة باستخدام Modifier.animateItemPlacement(). (Ib6621، b/211753218)
- تعمل
BringIntoViewRequesterالآن على نشر الطلبات إلى Android View المضيف. (Ia7a51) - يتوفّر
FontFamilyResolverالآن من خلالLocalFontFamilyResolver.current- تمت إضافة
createFontFamilyResolver(context)وcreateFontFamilyResolver(context, coroutineScope)لإنشاء أدوات تحليل جديدة لـ FontFamily خارج نطاق استخدام Compose. - تتلقّى الفقرة وMultiParagraph الآن
FontFamily.Resolver - يحتوي
TextLayoutResult.layoutInput.fontFamilyResolverالآن على برنامج التعيين المستخدَم لهذا التنسيق، وتم إيقافTextLayoutResult.layoutInput.resourceLoaderنهائيًا لأنّه لم يعُد مستخدَمًا. (Id5a45، 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)
- تم إيقاف
- يمكنك الآن تحديد نوع المحتوى لعناصر دالة
LazyVerticalGrid- item/items، إذ تقبلLazyGridScopeالآن هذه المَعلمة. يساعد توفير هذه المعلومات منطق إعادة استخدام تركيبة العناصر على أن يكون أكثر فعالية، ولا يعيد استخدام المحتوى إلا بين العناصر من النوع المشابه. (I7b355، b/215372836) - تتضمّن
LazyListLayoutInfoوLazyGridLayoutInfoالآن سمات جديدة:viewportSizeوorientationوreverseLayout(Ifc8ed، b/200920410) - يمكنك الآن تحديد نوع المحتوى لعناصر دالتَي LazyColumn/LazyRow - item/items، إذ تقبل هاتان الدالتان الآن هذه المَعلمة في LazyListScope. يساعد توفير هذه المعلومات منطق إعادة استخدام تركيبة العناصر على أن يكون أكثر فعالية، ولا يعيد استخدام المحتوى إلا بين العناصر من النوع المشابه. (I26506)
- تم إيقاف طريقة وضع تصميم
SubcomposeLayoutStateالتي تقبلmaxSlotsToRetainForReuseنهائيًا. بدلاً من ذلك، هناك أداة إنشاء جديدة تقبلSubcomposeSlotReusePolicy، وهي واجهة جديدة تتيح تحكّمًا أكثر دقة في ما يجب الاحتفاظ به من مواضع الإعلانات لإعادة الاستخدام في المستقبل. (I52c4d) - تضيف هذه السمة معدِّلات WindowInsets، سواء للمساحة المتروكة أو لتحديد الحجم. يتيح ذلك لبعض المحتوى أن يمتد إلى منطقة الإزاحة، مع الحفاظ على المحتوى الأساسي خارج منطقة الإزاحة. على سبيل المثال، يمكن استخدام windowInsetsPadding لضبط مساحة الحشو في منطقة المحتوى لتجنُّب المناطق التي قد يتم تغطيتها بشكل كامل أو جزئي. (Id0395، b/213942085)
إصلاح الأخطاء
- سيتم الآن إبقاء حقول النص فوق لوحة المفاتيح عند التركيز عليها وعندما تكون لوحة المفاتيح معروضة، وذلك عندما يكون وضع الإدخال السلس
ADJUST_PAN. (I8eaeb، b/190539358، b/192043120) - يستخدم الكمبيوتر المكتبي التركيبة المحلية لـ
FontFamily.Resolver- تم إيقاف ميزة "
FontLoader" على أجهزة الكمبيوتر نهائيًا - مصنع
createFontFamilyResolverالجديد على الكمبيوتر المكتبي (I6bbbb، b/174162090)
- تم إيقاف ميزة "
- لم يعُد نوع إدخال لوحة المفاتيح على الشاشة يومض عند تغيير التركيز بين حقول النص. (I1bf50، b/187746439)
- لم تعُد الحقول النصية تتطلّب ضغطة إضافية على زر الرجوع عند ظهور مقبض المؤشر. (Ideb4b، b/205726883)
- تم تحسين سلوك المكبِّر عند تحديد النص ليتوافق مع مكبِّر النظام الأساسي. (Idd918، b/206833278)
الإصدار 1.2.0-alpha02
26 يناير 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
NonRestartableComposableإلى الطرق التي تم تحميلها بشكل زائد من الطرق الحالية بدون منطق معقّد. يقلّل ذلك من عمليات التحقّق من التخزين المؤقت التي ينشئها المترجم البرمجي (equals) لجميع المَعلمات التي تتكرّر في الدالة الداخلية التي يتم استدعاؤها. (I90490) - تمت إضافة معدِّلات
excludeFromSystemGestureلتسهيل الوصول إلىsetSystemGestureExclusionRectsفي Android (I46f07)
إصلاح الأخطاء
- تم تحسين سلوك المكبِّر عند تحديد النص ليتوافق مع مكبِّر النظام الأساسي. (Idd918، b/206833278)
- تتيح الآن الحاويات
LazyColumnوLazyRowوModifier.verticalScrollوغيرها من الحاويات التي تستخدمModifier.scrollableإمكانية التمرير باستخدام عجلة الماوس. (I2b5e1، b/198214718)
الإصدار 1.2.0-alpha01
12 يناير 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة المَعلمة الجديدة
userScrollEnabledإلىLazyColumnوLazyRowوLazyVerticalGridللسماح للمستخدمين بإيقاف التمرير الذي يبدأه المستخدم مؤقتًا أو نهائيًا من خلال إيماءات اللمس أو إجراءات تسهيل الاستخدام. سيظل مسموحًا بالتمرير بشكل آلي من خلال الطرق المتاحة في الحالة. (I7eae9، b/201150093) - أضِف وظيفة ردّ الاتصال
onSizeChangedإلى أداة تعديل المكبِّر. (I6879f) - يظهر الآن التطبيق المصغّر "المكبِّر" عند سحب مقابض التحديد في
SelectionContainer. (I30b38، b/139320979)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إخفاء مقبض المؤشر
TextFieldعند تمريره بعيدًا عن منطقة المشاهدة. (I14552، b/208883748)
تحديثات الاعتماديات
- يعتمد الآن على Kotlin
1.6.10.
الإصدار 1.1
الإصدار 1.1.1
23 فبراير 2022
تم طرح androidx.compose.foundation:foundation:1.1.1 وandroidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0 وandroidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0-rc03 وandroidx.compose.foundation:foundation-layout:1.1.0-rc03. يتضمّن الإصدار 1.1.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل التطبيق ليتوافق مع الإصدار 1.1.0-rc03 من Compose Material
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-rc01 وandroidx.compose.foundation:foundation-layout:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- أصبح مسموحًا الآن بتمرير إزاحات التمرير السلبية إلى
LazyListState.scrollToItem()وLazyListState.animateScrollToItem(). (Iceb90، b/184252837) - تم إصلاح الخطأ الذي تسبّب في عدم توفّر إجراءات التمرير الخاصة بإمكانية الوصول (I7cbfb)
الإصدار 1.1.0-beta04
1 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta04 وandroidx.compose.foundation:foundation-layout:1.1.0-beta04. يتضمّن الإصدار 1.1.0-beta04 هذه التعديلات.
الميزات الجديدة
- تم تعديلها لتكون متوافقة مع Kotlin
1.6.0
تغييرات واجهة برمجة التطبيقات
- تمت إزالة القيم الفارغة في
androidx.core.view(I7078a، b/204917439) - تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح استخدام PointerInputchange ككل أو التحقّق مما إذا تم استخدامه أم لا. (I2e59d)
- عرض أداة مكبِّر عند سحب المؤشر أو مقابض التحديد داخل حقول النص (I5391e، b/203781358)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحرّك مقابض النص عند تغيُّر إذن الوصول إلى محرر أسلوب الإدخال (IME). (I25f2e)
الإصدار 1.1.0-beta03
17 نوفمبر 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta03 وandroidx.compose.foundation:foundation-layout:1.1.0-beta03. يتضمّن الإصدار 1.1.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية استخدام مدى أفقي إلى LazyVerticalGrid. (I7e2fa، b/176758183)
تمت إضافة إمكانية تجريبية لتحريك مواضع عناصر القوائم الكسولة. يتوفّر معدِّل جديد ضمن LazyItemScope يُسمى
Modifier.animateItemPlacement(). مثال على الاستخدام:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- عند تقديم مفتاح من خلال
LazyListScope.itemأوLazyListScope.items، سيتيح معدِّل العرض هذا إمكانية عرض رسوم متحركة لإعادة ترتيب العناصر. بالإضافة إلى إعادة ترتيب العناصر، سيتم أيضًا تحريك جميع تغييرات الموضع الأخرى الناتجة عن أحداث مثل تغييرات الترتيب أو المحاذاة. (I59e7b، b/150812265)
- عند تقديم مفتاح من خلال
الإصدار 1.1.0-beta02
3 نوفمبر 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta02 وandroidx.compose.foundation:foundation-layout:1.1.0-beta02. يتضمّن الإصدار 1.1.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- لن يتم تأخير التموجات والمؤشرات الأخرى إلا إذا كانت داخل حاوية
Modifier.scrollable()، بدلاً من تأخيرها دائمًا عند وقوع حدث لأسفل. (Ibefe0، b/203141462) - تمت إضافة واجهة برمجة التطبيقات التجريبية BringIntoView التي تتيح لك إرسال طلب إلى العناصر الرئيسية ليتمكّنوا من التمرير لعرض عنصر (Ib918d، b/195353459)
المساهمة الخارجية
- تمت إضافة
Modifier.pointerHoverIcon(I95f01)
الإصدار 1.1.0-beta01
27 أكتوبر 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta01 وandroidx.compose.foundation:foundation-layout:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة واجهة برمجة التطبيقات التجريبية BringIntoView التي تتيح لك إرسال طلب إلى العناصر الرئيسية ليتمكّنوا من التمرير لعرض عنصر (Ib918d، b/195353459)
الإصدار 1.1.0-alpha06
13 أكتوبر 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha06 وandroidx.compose.foundation:foundation-layout:1.1.0-alpha06. يتضمّن الإصدار 1.1.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة حمل زائد بدون عنصر فرعي إلى Layout، مع تحسين الكفاءة (Ib0d9a)
- تعرض الدالة
SemanticsNodeInteraction.performSemanticsActionالآنSemanticsNodeInteractionالذي تم استدعاء الدالة عليه. (I9e5db) - تمت إضافة
performScrollToNode(matcher: SemanticsMatcher)التي تنقل الحاوية القابلة للتمرير إلى المحتوى المطابق باستخدام أداة المطابقة المحدّدة. (Ic1cb8)
الإصدار 1.1.0-alpha05
29 سبتمبر 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha05 وandroidx.compose.foundation:foundation-layout:1.1.0-alpha05. يتضمّن الإصدار 1.1.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مؤشرات تجريبية سابقة إلى PointerEventChange. (Ic1fd8 وb/197553056 وb/199921305)
إصلاح الأخطاء
- تم إصلاح مشكلة توافق عناصر المحتوى القابلة للتمرير (التي يتم تحميلها عند الحاجة وتلك التي لا يتم تحميلها عند الحاجة) مع أدوات تسهيل الاستخدام، وذلك فيما يتعلق بالتمرير (I6cdb0)
الإصدار 1.1.0-alpha04
15 سبتمبر 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.1.0-alpha04. يتضمّن الإصدار 1.1.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
performGestureوGestureScopeنهائيًا، وتم استبدالهما بـperformTouchInputوTouchInjectionScope. (Ia5f3f، b/190493367) - تمت إضافة
touchBoundsInRootإلىSemanticsNodeالتي تتضمّن الحدّ الأدنى لحجم مساحة اللمس، وذلك ليتأكّد المطوّرون من أنّ مساحات اللمس تستوفي الحدّ الأدنى من متطلبات تسهيل الاستخدام. (I2e14b، b/197751214)
إصلاح الأخطاء
- تمت إضافة ميزة التمرير السريع الممتد على أجهزة Android 12. (Iccf3c، b/171682480)
الإصدار 1.1.0-alpha03
1 سبتمبر 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تم تعديل الإصدار
1.1.0-alpha03من Compose ليعتمد على الإصدار1.5.30من Kotlin. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تأثير التوهّج عند التمرير. تمت إضافة واجهة برمجة التطبيقات التجريبية الجديدة OverScrollConfiguration للسماح بإعداد التأثير المرئي للتمرير السريع. قدِّم قيمة فارغة لإيقاف تأثير تجاوز حد التمرير. (I0c304، b/171682480)
- يتضمّن AwaitPointerEventScope الآن الدالتَين withTimeout() وwithTimeoutOrNull() (I507f0 وb/179239764 وb/182397793)
- تمت إضافة طريقة اختبار للحصول على الحدود المقتصة. (I6b28e)
- تمت إضافة الحد الأدنى لحجم مساحة اللمس إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)
الإصدار 1.1.0-alpha02
18 أغسطس 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إصدارات DpSize لكل من
Modifier.sizeوrequiredSize(I3fc7e، b/194219828)
الإصدار 1.1.0-alpha01
4 أغسطس 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تعديل الطريقة
DrawScope#drawImageالتي تستهلك مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterQuality اختيارية. ويفيد ذلك في إنشاء صور فن البكسل التي يُراد أن تكون منقطة عند تكبيرها. تم تعديل BitmapPainter وImage composable ليستخدما أيضًا مَعلمة FilterQuality اختيارية (Ie4fb0، b/180311607) - يزيل TextField الآن التحديد عند الضغط على زر الرجوع، وهو ما يتوافق مع سلوك EditText في Android. (I3ca16، b/174173645)
- أضِف مقبض المؤشر. (I07a82، b/173016579)
إصلاح الأخطاء
- أصبحت عملية التمرير من خلال الإجراءات الدلالية للقوائم الكسولة ومكوّنات التمرير العادية تتضمّن الآن رسومًا متحركة (Id9066، b/190742024)
المساهمة الخارجية
- تقبل
LazyVerticalGridالآن مَعلمات الترتيب الأفقي والعمودي. (If9c92)
الإصدار 1.0
الإصدار 1.0.5
3 نوفمبر 2021
تم طرح androidx.compose.foundation:foundation:1.0.5 وandroidx.compose.foundation:foundation-layout:1.0.5. يتضمّن الإصدار 1.0.5 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل تتبُّع مثيلات derivedStateOf. (aosp/1792247)
الإصدار 1.0.4
13 أكتوبر 2021
تم طرح androidx.compose.foundation:foundation:1.0.4 وandroidx.compose.foundation:foundation-layout:1.0.4. يتضمّن الإصدار 1.0.4 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على Kotlin
1.5.31
الإصدار 1.0.3
29 سبتمبر 2021
تم طرح androidx.compose.foundation:foundation:1.0.3 وandroidx.compose.foundation:foundation-layout:1.0.3. يتضمّن الإصدار 1.0.3 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على Kotlin
1.5.30
الإصدار 1.0.2
1 سبتمبر 2021
تم طرح androidx.compose.foundation:foundation:1.0.2 وandroidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.1 وandroidx.compose.foundation:foundation-layout:1.0.1. يتضمّن الإصدار 1.0.1 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.21من Kotlin.
الإصدار 1.0.0
28 يوليو 2021
تم طرح androidx.compose.foundation:foundation:1.0.0 وandroidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0-rc02 وandroidx.compose.foundation:foundation-layout:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.
- تم تعديل عرض الحدود للأشكال العامة لمعالجة المشاكل المتعلقة بالمسارات المحدّدة بأبعاد ثابتة. (aosp/1748871 وb/191817116)
الإصدار 1.0.0-rc01
1 تموز (يوليو) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-rc01 وandroidx.compose.foundation:foundation-layout:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتيح لوحة العرض الآن استخدام المَعلمة contentDescription لتسهيل الاستخدام. (Ib547c)
إصلاح الأخطاء
- سيؤدي الزر والبطاقة ومربّعات الاختيار المعطّلة و
Modifier.clickable(enabled=false)بشكل عام إلى منع وصول النقرات إلى العنصر الرئيسي. (Ic2c3b، b/183908811)
الإصدار 1.0.0-beta09
16 حزيران (يونيو) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta09 وandroidx.compose.foundation:foundation-layout:1.0.0-beta09. يتضمّن الإصدار 1.0.0-beta09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة
ManualFrameClock. إذا كنت بحاجة إلى التحكّم في الصور المتحركة، استخدِمcomposeTestRule.mainClockبدلاً من ذلك. (I3c3e8، b/189951065) - تغيير تعداد Role وLiveRegionMode إلى فئات مضمّنة مع دالة إنشاء خاصة (Id1890)
- يتم تحويل KeyboardCapitalization إلى فئة مضمّنة. (Id5a1c)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
إصلاح الأخطاء
- عند تحديد المفاتيح الفريدة لعناصر LazyColumn/Row، سيتم الاحتفاظ بموضع التمرير استنادًا إلى المفتاح، ما يعني أنّه في حال إضافة/إزالة عناصر قبل العنصر المرئي الحالي، سيتم الاحتفاظ بالعنصر الذي يتضمّن المفتاح المحدّد كأول عنصر مرئي. (Id263f، b/184257857)
- الثوابت الرئيسية هي @ExperimentalComposeUiApi في الوقت الحالي. يمكن أن تعرِّف التعليمات البرمجية المستهلكة ثوابت خاصة قبل أن تصبح ثابتة. (Ia5d48)
- تمت إضافة IdlingStrategy إلى AndroidComposeTestRule التي يمكن أن تستخدمها أُطر الاختبار لتثبيت آلية بديلة للانتظار أو تحقيق السكون. استخدِم
AndroidComposeTestRule.setIdlingStrategyFactory()قبل بدء الاختبار لتثبيت استراتيجيتك الخاصة. (I608fa)
قواعد الملفات الشخصية المُضافة
يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (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.foundation:foundation:1.0.0-beta08 وandroidx.compose.foundation:foundation-layout:1.0.0-beta08. يتضمّن الإصدار 1.0.0-beta08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم استبدال تعداد NestedScrollSource بفئة مضمّنة. (Ie321b، b/187055290)
- تمت إعادة تصميم استخدامات التعداد لتضمين الفئات المضمّنة لتجنُّب المشاكل المتعلّقة بعبارات when الشاملة عند إضافة قيم تعداد جديدة. (I2b5eb)
- إضافة مهلة نقرة إلى العناصر القابلة للنقر أو التبديل لمنع ظهور تأثير التموّج أثناء التمرير أو السحب (Ia2704، b/168524931)
- لم تعُد خصائص ContentDescription وText الدلالية قيمًا فردية، بل أصبحت قوائم. يتيح ذلك دمجها كما هي بدلاً من ربطها. قدّمنا أيضًا واجهات برمجة تطبيقات أفضل للاختبار من أجل الاستفادة من هذه التغييرات (Ica6bf وb/184825850).
- تم إيقاف
Modifier.focusModifier()نهائيًا واستبداله بـModifier.focusTarget()(I6c860) - تم استبدال تعداد KeyboardType بفئة مضمّنة. (I73045، b/187055290)
- تم استبدال التعداد
FocusStateبواجهةFocusState(Iccc1a، b/187055290) - تم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
- أصبحت الدوال
AnnotatedString.withAnnotationتابعة لواجهة برمجة التطبيقات ExperimentalTextApi بدلاً من ExperimentalComposeApi. (I0cd0a)- أصبحت دالة إنشاء TextUnit التي تتضمّن TextUnitType تابعة لواجهة برمجة التطبيقات ExperimentalTextApi بدلاً من ExperimentalComposeApi.
- أصبحت قيمة PaddingValues الآن
@Stableبدلاً من@Immutable(I88c50)
إصلاح الأخطاء
- إصلاح الأعطال عند الضغط مع الاستمرار على المساحة الفارغة في نص غير فارغ (I33ab5، b/187437299)
- عرض شريط الأدوات بعد SelectAll (I495d9، b/185919613)
- إصلاح مشكلة اقتصاص الحاويات القابلة للتمرير لأحجام العناصر التابعة لها على المحور العرضي كان من السهل إعادة إنتاجها إذا كان لديك LazyRow يحتوي على عناصر بطاقة. ولن يتم الآن اقتصاص الظل. (Icb635، b/186318448)
- تم إصلاح مشكلة تعذّر إزالة التموجات أو المؤشرات الأخرى أحيانًا عند النقر مع الاستمرار لفترة طويلة عند استخدام Modifier.combinedClickable (I2298c، b/186223077)
- سيتم الآن استهلاك تغيير الموضع تلقائيًا في
detectDragGesuresوdetectVerticalGesturesوdetectHorizontalGestures، ولن يكون عليك استدعاء change.consumePositionChange في عمليات إعادة الاستدعاء onDrag (I42fc4 وb/185096350 وb/187320697). - تم تغيير
Modifier.onGloballyPositioned()للإبلاغ عن إحداثيات أداة التعديل هذه في سلسلة أدوات التعديل، وليس إحداثيات التصميم بعد تطبيق جميع أدوات التعديل. وهذا يعني أنّ ترتيب المعدِّلات يؤثّر الآن في الإحداثيات التي سيتم تسجيلها. (Ieb67d، b/177926591)
الإصدار 1.0.0-beta07
18 أيار (مايو) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta07 وandroidx.compose.foundation:foundation-layout:1.0.0-beta07. يتضمّن الإصدار 1.0.0-beta07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم منطق الجلب المسبق للعنصر المرئي التالي في LazyColumn/Row (I8a4bc، b/184940225)
- إضافة أداة معالجة اختيار المقاطع (Iff80d، b/183408447)
إصلاح الأخطاء
- سيحتفظ العنصران LazyColumn/Row الآن بما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (غير مُتوقّفَين) حتى عند إيقاف التمرير. يتيح ذلك للمكوّن إعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد، ما يؤدي إلى تحسين أداء التمرير. (Ie5555)
- إزالة paintBackground (I38660)
- ارسم خلفية التحديد باستخدام DrawScope. (I73c61، b/186674472)
- تم إصلاح مشكلة في الإصدار التجريبي 06 تؤثر في الصف/العمود باستخدام ترتيبات spacedBy لتخطيط العناصر الفرعية الموزونة. (Ifaf8c، b/187326588)
الإصدار 1.0.0-beta06
5 أيار (مايو) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta06 وandroidx.compose.foundation:foundation-layout:1.0.0-beta06. يتضمّن الإصدار 1.0.0-beta06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- حلّ التعارض مع إيماءة التنقّل (I1145e)
- تمت إضافة واجهات برمجة تطبيقات تسهيل الاستخدام CollectionInfo وCollectionItemInfo التي تتيح وضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (Id54ef، b/180479017)
- تمت إضافة
SemanticsActions.ScrollToIndexلتمرير قائمة تتضمّن عناصر مفهرسة إلى العنصر الذي يتضمّن فهرسًا معيّنًا، وSemanticsProperties.IndexForKeyللحصول على فهرس عنصر في قائمة تتضمّن عناصر ذات مفاتيح. يتم تنفيذ كلا الإجرائين من خلال LazyList.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndexالتي تنقل قائمة إلى الفهرس المحدّد، وSemanticsNodeInteraction.performScrollToKeyالتي تنقل قائمة إلى العنصر الذي يتضمّن المفتاح المحدّد. (I4fe63، b/178483889، b/161584524)
- تمت إضافة
- إتاحة حفظ AnnotatedString في TextFieldValue.Saver تمت إضافة الدالتَين المساعدتَين addTtsAnnotation وwithAnnotation إلى AnnotatedString.Builder (I8cbdc، b/178446304)
- تمت إضافة قيم المَعلمات التلقائية
0.dpإلىPaddingValues(horizontal, vertical)(I05571، b/181336792)
إصلاح الأخطاء
- لم يعُد الأطفال في الصفوف والأعمدة الذين يحملون القيمة
weight(fill = false)يملأون مساحة المحور الرئيسي المتاحة بالكامل. (Ied94d، b/186012444، b/184355105)
الإصدار 1.0.0-beta05
21 أبريل 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta05 وandroidx.compose.foundation:foundation-layout:1.0.0-beta05. يتضمّن الإصدار 1.0.0-beta05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم الآن وضع العلامة @Stable على واجهة FlingBehavior. يجب أن تتوافق جميع عمليات التنفيذ مع عقد
@Stable. (I93354، b/184830577)
إصلاح الأخطاء
- تم إصلاح إجراءات التمرير الخاصة بإمكانية الوصول في
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.foundation:foundation:1.0.0-beta04 وandroidx.compose.foundation:foundation-layout:1.0.0-beta04. يتضمّن الإصدار 1.0.0-beta04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أعِد تسمية hideSoftwareKeyboard وshowSoftwareKeyboard في SoftwareKeyboardController إلى
hide()وshow()على التوالي.- توفير واجهة CompositionLocal الكاملة لـ LocalSoftwareKeyboardController، ما يسمح بضبطها (مفيد بشكل خاص في الاختبارات) (I579a6)
- تم تقديم
TextOverflow.Visible. (Ic8f89) - تمت إزالة النسخ العلنية من
RowScopeوColumnScopeوBoxScopeوBoxWithConstraintsScope. (I4e83e، b/181869067)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى تحديد موضع عناصر
LazyColumn/LazyRowبشكل غير صحيح على الحواف بعد الإرسال السريع (Ie4d13، b/183877420) قبل هذا التغيير، كان يمكن تخطّي الدوال البرمجية المحلية القابلة للإنشاء استنادًا إلى مَعلماتها. بعد هذا التغيير، لن يتم تخطّي أي دوال قابلة للإنشاء محلية. تم إجراء هذا التغيير لأنّه من الشائع والمتوقّع أن تحصل الدوال المحلية على مَعلمات من العنصر الأصلي، كما أنّ عدم حصولها على هذه المَعلمات هو مصدر شائع للأخطاء.
لتلخيص ذلك، ضع في اعتبارك المثال التالي:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }قبل هذا التغيير، كانت الدالة القابلة للإنشاء
ShowCountتتخطى دائمًا، حتى بعد تعديل المَعلمةcount. لم يعُد هذا هو الحال. (I5648a)
الإصدار 1.0.0-beta03
24 مارس 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta03 وandroidx.compose.foundation:foundation-layout:1.0.0-beta03. يتضمّن الإصدار 1.0.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
DefaultMonotonicFrameClockنهائيًا. سيؤدي الآن استدعاء الدالتَينwithFrameNanosأوRecomposer.runRecomposeAndApplyChangesبدونMonotonicFrameClockإلى عرض الخطأIllegalStateException. (I4eb0d)
إصلاح الأخطاء
- يتم الآن استدعاء
FlingBehavior.performFling()حتى عندما تكون السرعة 0 (I0b6e5، b/181237123)
الإصدار 1.0.0-beta02
10 مارس 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta02 وandroidx.compose.foundation:foundation-layout:1.0.0-beta02. يتضمّن الإصدار 1.0.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة العديد من التحسينات الصغيرة في منطق قياس LazyColumn (Ic6889)
- تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053) - تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)
إصلاح الأخطاء
- فرض قيود على الاستخدام العام لواجهات برمجة التطبيقات التجريبية (I6aa29، b/174531520)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta01 وandroidx.compose.foundation:foundation-layout:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
هذا هو الإصدار الأول من Compose 1.0.0 Beta.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دالة معالجة onStart إلى
detectDragGestures(I67269، b/179995594) - لم تعُد المعدّلات الخاصة بتحديد الحجم حسب الخصائص التجريبية. (I15744)
- إزالة تأكيدات dp (I798d2)
- تمت إزالة معاودة الاتصال SoftwareKeyboardController من جميع حقول النص، وسيتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
- تمت إعادة تسمية 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)
- تمت إزالة طرق LayoutCoordinates المتوقّفة نهائيًا، واستخدام الدالة بدلاً من السمة لكل من positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755)
- تم إنشاء TextInputSession جديد لجلسات الإدخال من مكوّنات النص ذات المستوى المنخفض، مثل CoreTextField. (I8817f، b/177662148)
- تعرض السمة Placeable الآن السمة measuredSize التي تمثّل الحجم الذي تم قياس تنسيق العنصر الفرعي به فعليًا. قد لا يلتزم هذا الحجم بقيود القياس. (Ib2729، b/172560206، b/172338608)
- إضافة معدِّل selectionGroup الذي يتيح وضع علامة على مجموعة من علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
إضافة LazyListState.animateScrollToItem
تؤدي هذه الطريقة إلى التمرير بسلاسة إلى عنصر معيّن في القائمة. (I4bfd7)
تمت إعادة تسمية ScrollableState.smoothScrollBy() إلى animateScrollBy() تمت إعادة تسمية LazyListState.snapToItemIndex() إلى scrollToItem() تمت إعادة تسمية ScrollState.smoothScrollTo() إلى animateScrollTo() (I35ded)
تم استبدال Modifier.zoomable بـ Modifier.transformable، وتمت إضافة smoothPanBy وsmoothRotationBy كوظيفة. (Ifc32b، b/175294473)
أصبح من الضروري تقديم
defaultFactoryلـcompositionLocalOfوstaticCompositionLocalOfبدلاً من أن يكون اختياريًا.يزيل هذا التغيير خطأ محتملاً في النوع بالنسبة إلى الأنواع غير القابلة للتصغير التي لم يتم توفير أي مصنع تلقائي لها. في السابق، كان هذا الإجراء يؤدي إلى توفير مرجع فارغ لنوع غير قابل للتصغير.
بالنسبة إلى الأنواع التي تقبل القيم الخالية، ننصحك بتوفير
{ null }كإعداد تلقائي للمصنع.لا ننصح باستخدام متغيرات محلية مع أنواع غير قابلة للتصغير إلا إذا كان من الممكن توفير قيمة تلقائية معقولة. إذا لم يكن هناك قيمة تلقائية منطقية، يجب أن تعرض دالة lambda
defaultFactoryاستثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستهلكي اللغة المحلية سيكون لديهم تبعية ضمنية على توفيرها، وهي تبعية لا يفرضها نظام الأنواع. (Ifbd2a)تم تغيير
Indication#createIndication()إلىIndication#rememberUpdatedIndication(InteractionState)وإزالة المَعلمةInteractionStateمن IndicationInstance#drawIndication(). يجب أن يكون IndicationInstance مسؤولاً فقط عن رسم المؤثرات البصرية، وليس عن تشغيل الرسوم المتحركة أو كتابة الحالة استجابةً لتغييرات InteractionState. يجب أن تحدث هذه الصور المتحركة وعمليات الكتابة في الحالة ضمنrememberUpdatedIndication()بدلاً من ذلك. تم أيضًا تغيير المَعلمةindicationفيModifier.indicationلتصبح مَعلمة مطلوبة. (Ic1764، b/152525426)تتحقّق الإجراءات التي يمكن تنفيذها على النص الآن من التركيز تلقائيًا (I13777، b/179648629)
إزالة
runBlockingWithManualClock(I15cdc، b/179664814)يتم الآن تمثيل موضع التمرير في Modifier.verticalScroll()/horizontalScroll() باستخدام أعداد صحيحة (I81298)
تم تغيير حِزم طريقتَي smoothScrollBy وscrollBy إلى
androidx.compose.foundation.gestures.*(I3f7c1، b/175294473)تمت إعادة تسمية FlingConfig إلى FlingBehavior، وتتيح الآن تخصيص الصورة المتحركة الخاصة بالتعليق بدلاً من عمليات التلاشي المحدّدة مسبقًا. (I02b86، b/175294473)
تمت إعادة تسمية مُعدِّلات الحجم. تمت إعادة تسمية Modifier.width/height/size إلى requiredWidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.preferredWidth/preferredHeight/preferredSize إلى width/height/size. (I5b414)
تمت إعادة تسمية defaultMinSizeConstraints إلى defaultMinSize. (I4eaae)
تمت إزالة Modifier.tapGestureFilter. يمكنك استخدام
Modifier.pointerInput { detectTapGestures(...) }كبديل. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. الطريقة المقترَحة لتنسيق الاستهلاك الجزئي هي Modifier.nestedScroll. (Ie9c9b)
تم نقل الاتجاه إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)
تمت إزالة AnimationClockObservable والفئات الفرعية. تمت إزالة AnimatedFloat. (Icde52، b/177457083)
أصبحت drawerState.open() وdrawerState.close() الآن دوال معلّقة. استخدِم rememberCoroutineScope() للحصول على نطاق التكوين من أجل استدعائها (I16f60 وb/175294473).
تمت إعادة تسمية Providers إلى CompositionLocalProvider
- لم يعُد منشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة قابلة للإنشاء على المستوى الأعلى بدلاً من دالة قابلة للإنشاء على المستوى الأعلى.
- تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم تحويل ComposableLambda إلى واجهة بدلاً من فئة ملموسة، ولم يعُد يتضمّن مَعلمات أنواع.
- تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة مجرّدة، ولم يعُد يتضمّن مَعلمات النوع.
- تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime
- لم تعُد طريقة الدمج في SnapshotMutationPolicy تجريبية
- تمت إزالة الدالة
@TestOnlyclearRoots ذات المستوى الأعلى. لم يعُد ذلك ضروريًا. - تمت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد ضرورية.
- تمت إزالة Composer.collectKeySourceInformation. لم يعُد ذلك ضروريًا.
- تمت إزالة الطرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد ضرورية.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي ولكن ليس التوافق مع المصدر، لذا لن يسبّب مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
تمت إعادة تصميم Modifier.scrollable. يستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473)
تقبل Modifier.draggable الآن DraggableState بدلاً من تعبير لامدا بسيط. يمكنك إنشاء حالة من خلال
rememberDraggableState { delta -> }للحصول على السلوك نفسه كما كان من قبل (Ica70f، b/175294473)تمت إضافة المعدِّلين requiredWidth(IntrinsicSize) وrequiredHeight(IntrinsicSize) لتحديد الحجم المطلوب للأحجام الأصلية. (I0a6b4)
تمت إزالة
emptyContent()المتوقّفة نهائيًا. يمكنك استخدام{}كبديل. (Idb33f، b/179432510)تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات جديدة محلية باسم LocalSoftwareKeyboardController لتحل محل واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
الإصدار 1.0.0-alpha12
10 شباط (فبراير) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha12 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha12. يتضمّن الإصدار 1.0.0-alpha12 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتطلّب Modifier.pointerInput الآن مفاتيح remember للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين pointer input detection المشترك لإنشاء تبعيات جديدة. (I849cd)
- تعديل على الاختبار: ستتحقّق الدالة hasText() من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803)
- تمت إضافة PaddingValues.Absolute ويمكن استخدامها في واجهات برمجة التطبيقات التي تقبل PaddingValues. (Ia5f30)
- تم إيقاف onImeActionPerformed نهائيًا. استخدِم KeyboardActions بدلاً من ذلك (If0bbd، b/179071523)
- من أجل مطابقة أفضل لاتفاقيات التسمية مع ImageBitmap وImageVector، تم تغيير اسم ImagePainter إلى BitmapPainter ليكون موازيًا لـ VectorPainter. (Iba381، b/174565889)
- تحسين واجهات برمجة التطبيقات لاختبار السلسلة الفرعية مع تضمين السلسلة الفرعية الآن كمعلَمة (Icbe78)
- تم تقديم عنصر سياق روتين فرعي
InfiniteAnimationPolicyسيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء اختبارات باستخدامComposeTestRule. (I50ec4، b/151940543) - أصبحت الدالتان Animatable.snapTo وAnimatable.stop دوال تعليق (If4288)
- تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الحزمة androidx.activity:activity-compose. (Icf416)
- تمت إزالة طريقتَي تفكيك البنية وcopy() من عدة فئات كانتا تُستخدمان فيها نادرًا. (I26702، b/178659281)
تمت إضافة إمكانية استخدام مفاتيح مخصّصة في LazyColumn/LazyRow. ويتيح لنا ذلك التعامل بذكاء أكبر مع إعادة ترتيب العناصر. وبالتالي، ستنتقل الحالة التي خزّنتها في كتل remember {} مع العنصر عند إعادة ترتيب العناصر أو إزالة العنصر من المنتصف.
LazyColumn { items(users, key = { user -> user.id }) { ... } }تم تغيير Indication#createInstance ليصبح @Composable، وتم تغيير LocalIndication ليحتوي على Indication، وليس () -> Indication. (I5eeea، b/157150564)
تم استبدال "
Constraints.enforce" بـ "Constraints.constrain". (I8b8ea)تم إيقاف loadFontResource نهائيًا. يجب استخدام fontResource بدلاً من ذلك. تم إيقاف imageResource وloadImageResource وvectorResource وloadVectorResource نهائيًا. استخدِم painterResource بدلاً من ذلك. (I6b809)
لأسباب تتعلّق بالأداء، أصبحت دلالات ScrollAxisRange تستخدم الآن تعبيرات lambda تعرض قيمًا من النوع Float بدلاً من قيم Float المباشرة. (If4a35، b/178657186)
تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في الحقل النصي لتسهيل الاستخدام وطرق الاختبار المقابلة للتحقّق من الدلالات (I8e07a)
لم يعُد Modifier.clickable يتيح النقر المزدوج والنقر مع الاستمرار. استخدِم Modifier.combinedClickable لتحقيق هذه الوظيفة. (Iafad1)
تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
تمت إعادة تسمية IntBounds إلى IntRect، وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
تم إيقاف Modifier.dragGestureFilter نهائيًا. يمكنك استخدام
Modifier.pointerInput { detectDragGestures (...)}كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لعمليات السحب على محور واحد (I0ba93، b/175294473).تمت إعادة تسمية Ambients لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كانت أسماء Ambients في السابق AmbientFoo، وأصبحت أسماء CompositionLocals الآن LocalFoo. (I2d55d)
تم نقل التحديد إلى الأساس. (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)
تم الآن توحيد وقت التشغيل في الصورة المتحركة إلى أجزاء من الثانية (If776a)
تم إيقاف @ComposableContract نهائيًا واستبداله بثلاث تعليقات توضيحية أكثر تحديدًا.
أصبح
@ComposableContract(restartable = false)هو@NonRestartableComposableأصبح@ComposableContract(readonly = true)هو@ReadOnlyComposableأصبح@ComposableContract(preventCapture = true)هو@DisallowComposableCallsتمت إزالة@ComposableContract(tracked = true). (I60a9d)تم إيقاف الأداتَين
emptyContent()و(@Composable () -> Unit).orEmpty()نهائيًا لأنّهما لم يعودا يحقّقان أي تأثير إيجابي في الأداء أو أي قيمة (I0484d).يمكن الآن إغلاق نوافذ إعادة التجميع. ستستمر عمليات إعادة التركيب المغلقة إلى أن تكتمل الروتينات المشتركة الفرعية للتركيب. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينها وبين close. (Ib6d76)
تم تصنيف واجهات برمجة التطبيقات ذات الصلة بـ LazyVerticalGrid على أنّها تجريبية (Ia53e3 وb/178519862).
تمت إعادة تسمية rememberSavedInstanceState() إلى rememberSaveable() ونقلها إلى حزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
تمت إعادة تسمية RestorableStateHolder إلى SaveableStateHolder ونقلها إلى حزمة androidx.compose.runtime.saveable. تمت إعادة تسمية الطريقة الداخلية RestorableStateProvider إلى SaveableStateProvider. تمت إزالة النوع العام حتى تتمكّن من تمرير Any كمفتاح. لم تعُد هناك حاجة إلى إضافة التعليق التوضيحي التجريبي. (I0902e، b/174598702)
تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
تمت إعادة تسمية العنصر 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)
تمت إعادة تسمية المَعلمات في RounderCornerShape وCutCornerShape وCornerBasedShape من يسار/يمين إلى بداية/نهاية من أجل إتاحة ميزة الانعكاس التلقائي للشكل في اتجاه الكتابة من اليمين إلى اليسار. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يُراد فيها إجراء انعكاس تلقائي. (I61040، b/152756983)
تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
تمت إعادة تصميم واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمترجم Compose لاستخدام واجهة بدلاً من فئة مجردة. لم تعُد الواجهة تستخدم مَعلمة نوع.
هذا تغيير داخلي لا يؤثر في توافق الرمز المصدري، ولكنه تغيير ثنائي يؤدي إلى حدوث خطأ. (I3b922، b/169406779)
تمت إزالة Modifier.scaleGestureFilter. استخدِم Modifier.zoomable بدلاً من ذلك. يمكنك بدلاً من ذلك استخدام
Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1، b/175294473)تم إيقاف AnimatedValue/Float نهائيًا. يُرجى استخدام Animatable بدلاً من ذلك. (I71345، b/177457083)
- إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة
- تمت إزالة التحميل الزائد المتوقّف نهائيًا لـ SelectionContainer (I99c19)
إزالة وظائف التمرير غير المعطّلة التي تم إيقافها نهائيًا استكمالاً للتغييرات التي تم إجراؤها في الإصدار الأخير، تمت الآن إزالة وظائف التمرير غير المعطّلة بالكامل. يُرجى تحويلها إلى دوال تعليق بالأسماء نفسها. يمكن الحصول على نطاق كوروتين من خلال rememberCoroutineScope(). (I3d39c، b/178169563)
تم إيقاف androidx.compose.foundation.layout.ConstraintLayout نهائيًا لصالح androidx.constraintlayout.compose.ConstraintLayout. عليك إضافة اعتمادية على
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)تم إيقاف tapGestureFilter وdoubleTapGestureFilter وlongPressGestureFilter وpressIndicaitonGestureFilter نهائيًا. استخدِم Modifier.clickable أو Modifier.pointerInput مع الدالة detectTapGestures بدلاً من ذلك. (I6baf9، b/175294473)
تمت إزالة
Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. يتم إيقاف إعادة التركيب مؤقتًا، كما يتم إيقاف مؤشرات الصورة المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)توفّر السمة Recomposer.runningRecomposers الآن StateFlow العالمي الخاص بـ RecomposerInfo للقراءة فقط، وذلك لمراقبة حالة الإنشاء الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current()، التي تم إيقافها نهائيًا. (If8ebe)
الإصدار 1.0.0-alpha11
28 يناير 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha11 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha11. يتضمّن الإصدار 1.0.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
إيقاف نهائيًا الدالة scrollBy غير المعلقة، وإزالة الدالة scrollTo غير المعلقة
ننصحك الآن باستخدام دوال تعليق للتحكّم في التمرير وانتظار اكتماله. سنوقف نهائيًا و/أو نزيل إصدارات هذه الدوال التي لا تتضمّن تعليقًا مؤقتًا كجزء من عملية الانتقال هذه. (Ie9ced)
إيقاف نهائي للدالة smoothScrollBy غير المعلقة ننصحك الآن باستخدام الدوال المعلقة للتحكّم في التمرير والانتظار إلى أن ينتهي. سنوقف نهائيًا إصدارات هذه الدوال التي لا تتضمّن تعليقًا مؤقتًا كجزء من عملية الانتقال هذه. (I12880)
تمت إضافة مَعلمة وصف المحتوى إلى "الصورة" و"الرمز". يُستخدَم لتوفير وصف للخدمات المخصّصة لتسهيل الاستخدام (I2ac4c)
تلقّى BasicTextField مَعلمة جديدة باسم decorationBox. تتيح هذه السمة إضافة عناصر زخرفية، مثل الرموز النائبة والتسميات وغيرها، إلى حقل النص وزيادة مساحة الاستهداف الخاصة به. (I16996)
تمت إزالة المَعلمة canDrag من Modifier.draggable (Ic4bec، b/175294473)
تمت إزالة AnimatedFloat.fling الذي يقبل FlingConfig. يُرجى استخدام suspend Animatable.animateDecay بدلاً من ذلك. (I4659b، b/177457083)
تمت إزالة
data classمن الصفوف التالية:- InlineTextContent
- LocaleList
- (I605c7)
يمكن الآن إنشاء عناصر قابلة للنقر والتبديل والاختيار خارج التركيب (I0a130 وb/172938345 وb/175294473)
تم إيقاف 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)تمت إزالة السمة AbsoluteArrangement المتوقّفة نهائيًا. (Iffa96، b/177641870)
تمت إضافة المَعلمة propagateMinConstraints إلى Box لتحديد ما إذا كان يجب تمرير الحد الأدنى من القيود الواردة إلى محتوى Box أم لا. القيمة التلقائية هي "خطأ". (I0125b، b/152613457)
إصلاح الأخطاء
- تم إيقاف onCommit وonDispose وonActive نهائيًا لصالح واجهتَي برمجة التطبيقات SideEffect وDisposableEffect (If760e)
- تمت إعادة تصميم WithConstraints ليصبح BoxWithConstraints ونقله إلى foundation.layout. (I9420b، b/173387208)
تغييرات على دوال المصنع الخاصة بـ 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)
أصبحت الكثافة الآن نطاقًا للمستقبِل في واجهات Arrangement. (I18aad)
يقبل TextFieldValue السلسلة AnnotatedString. ومع ذلك، هذا التغيير متاح فقط من خلال واجهة برمجة التطبيقات، ولم يتم بعد تنفيذ ميزة تعديل النصوص المتعددة الأنماط.
- تمّت إزالة
initialمن مَعلمات الدالة الإنشائية EditingBuffer. (I326d5)
- تمّت إزالة
تم الآن إيقاف invalidate وcompositionReference() نهائيًا واستبدالهما بـ currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)
تم تغيير AnnotatedString ليتم توسيعه من kotlin.CharSequence. لذلك، أصبحت length وsubSequence دالتَين خاصتَين بالكائنات، وتمت إزالة دوال الإضافة. (Iaf429)
سيتم استبدال "المدة" و"وقت التشغيل" بـ "ملّي ثانية طويلة"، وتزيل هذه الخطوة التبعية لإدخال المؤشر في تلك الفئات. (Ia33b2، b/175142755، b/177420019)
يحلّ RememberObserver محل CompositionLifecycleObserver، وأصبح CompositionLifecycleObserver نهائيًا الآن.
RememberObserverهو بديل عنCompositionLifecycleObserverمع دلالات معدَّلة وطرق تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكّرها مرة واحدة فقط، وهو ما يظل يُعدّ أفضل ممارسة. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاءonRememberedلكل مرجع، بينما يتم استدعاءonEnterمرة واحدة فقط. تم استدعاءonEnterعدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثلWithConstraintsوScaffold، ما جعل عملية الاستدعاء الفرديonEnterغير موثوقة وتمت إزالتها فيRememberObserver.تضيف
RememberObserverالدالةonAbandonedالتي يتم استدعاؤها إذا تم عرض مثيلRememberObserverمن معاودة الاتصال التي تم تمريرها إلىrememberولكن لم يتم تذكّره في حالة التركيب، وبالتالي لن يتم استدعاءonRememberedأبدًا. يمكن أن يحدث ذلك إذا أنهى استثناء عملية الإنشاء قبل اكتمالها أو إذا تم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تنتج عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كان مثيلRememberObserverالذي يلي اقتراح المرجع الفردي أعلاه يتتبّع مرجعًا خارجيًا، يشير كل منonForgottenوonAbandonedإلى أنّه لم يعُد هناك حاجة إلى المرجع. إذا كان العنصر يتتبّع العمل الذي بدأ أو الموارد المخصّصة فيonRemembered، يمكن تجاهلonAbandonedلأنّه لن يتم استدعاؤه إذا تم استدعاءonRemembered. (I02c36)تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text
- لم يعُد TransformedText فئة بيانات (Ie672a)
لم تعُد الفئات التالية فئات بيانات:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f وb/170708374)
تم إيقاف طرق الإحداثيات العامة نهائيًا واستبدالها بطرق إحداثيات جديدة مستندة إلى النوافذ. (Iee284)
يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction
- يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
تم الآن وضع علامة "تجريبي" على FocusRequester.createRefs لأنّه قد يتغيّر. (I2d898، b/177000821)
تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة @ExperimentalComposeUiApi عليه. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية stateDescriptionRange إلى progressBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange، وhorizontalAccessibilityScrollState إلى horizontalScrollAxisRange، وverticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)
تغيير VisualTransformation لتصبح واجهة وظيفية (I3bba4)
استخدام TestCoroutineDispatcher في الاختبار (I532b6)
تمت إزالة PointerInputData وتعديل PointerInputChange لإضافة جميع حقول PointerInputData إليها. تم جعل PointerInputEvent وPointerInputEventData داخليين لأنّهما غير مستخدَمَين في أي واجهة برمجة تطبيقات عامة. (Ifff97، b/175142755)
تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)
أزِل displaySize لأنّه يجب تجنُّبه. من الأفضل عادةً استخدام حجم onRoot() أو حجم النافذة على الأقل. (I62db4)
الإصدار 1.0.0-alpha10
13 كانون الثاني (يناير) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha10 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha10. يتضمّن الإصدار 1.0.0-alpha10 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم يعُد ImeOptions وKeyboardOptions فئة بيانات (I3c898، b/168684531)
- تغييرات في VisualTransformation API
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم يعُد PasswordTransformation فئة بيانات
- نقل OffsetMapping إلى ملف خاص
- (I0bdf3)
- تغييرات على EditOperations API
- تمت إعادة تسمية EditOperation إلى EditCommand
- تمت إضافة لاحقة الأمر إلى عمليات التنفيذ المحدّدة لـ EditOperation
- لم تعُد EditCommand فئات بيانات
- تمت إعادة تسمية الدالة EditOperation.process إلى applyTo
- تمت إعادة تسمية InputEventListener إلى InputEventCallback
- (I0a366)
- تم تعديل Velocity لتضمين أجزاء مكوّنة وعمليات رياضية. (Ib0447)
- تمت إعادة تسمية @ExperimentalTesting إلى @ExperimentalTestApi لتكون متوافقة مع التعليقات التوضيحية المشابهة لواجهات برمجة التطبيقات التجريبية (Ia4502 وb/171464963).
- تمت إضافة طريقة stickyHeader تجريبية إلى LazyColumn/LazyRow (I0a81d)
- تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
- تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)
- إضافة زر تبديل إلى ملف foundation Strings.kt (I4a5b7 وb/172366489)
- نقلت nativeClass إلى وحدة ui وجعلتها داخلية. تم تعديل استخدامات nativeClass في عمليات تنفيذ equals لاستخدام "is MyClass" بدلاً من ذلك. (I4f734)
- تم إيقاف FlowRow وFlowColumn نهائيًا. يُرجى استخدام تخطيط مخصّص بدلاً من ذلك. (I09027)
- تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48، b/175160751، b/175160532، b/175077829)
- تم تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات بتعديلات Selectable إلى SelectionManager. (I6ff30، b/173215242)
- تم تغيير
fun Dp.isFinite()إلىval Dp.isFinite(I50e00) - تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- تمت إضافة isSpecified وisUnspecified وuseOrElse إلى الفئات المضمّنة التي تتضمّن الثابت Unspecified. (I93f7b، b/174310811)
إصلاح الأخطاء
- واجهة برمجة تطبيقات جديدة تستند إلى إجراءات فرعية متزامنة
Animatableتضمن الاستبعاد المتبادل بين الرسوم المتحركة. تمت إضافة DecayAnimationSpec جديد لتوفير دعم للصور المتحركة المتعددة الأبعاد (I820f2، b/168014930) - تمت إضافة إمكانية استخدام حقول النص غير المفعّلة وحقول النص للقراءة فقط (I35279، b/171040474، b/166478534)
- تم الآن استبدال
animate()بـanimateAsState()، التي تعرضState<T>بدلاً منT. يسمح ذلك بتحسين الأداء، إذ يمكن تضييق نطاق الإبطال إلى المكان الذي تتم فيه قراءة قيمة الحالة. (Ib179e) - إضافة واجهة برمجة التطبيقات الخاصة بدور Semantics وإضافة الدور كمعلَمة إلى SemanticsModifier القابل للنقر والاختيار والتبديل تم تغيير Modifier.progressSemantics ليتمكّن شريط التمرير أيضًا من استخدامه. (I216cd)
- يمكن الآن الوصول إلى nativeKeyEvent من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).
الإصدار 1.0.0-alpha09
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha09 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
إضافة واجهة قابلة للتمرير
يتيح ذلك التعامل مع ScrollState وLazyListState كنوع شائع، ما يسمح بتنفيذ التمرير المخصّص على كلا النوعين.
يؤدي ذلك أيضًا إلى نقل smoothScrollBy إلى دالة إضافة في Scrollable، ما يتيح الاستفادة من هذه الوظيفة. (I2153b)
تمت إضافة LazyVerticalGrid. (I17267، b/162213211)
إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed نهائيًا استخدام LazyColumn وLazyRow بدلاً من ذلك (I5b48c)
تمت إعادة تسمية واجهات برمجة التطبيقات الخاصة بتعليق إدخال المؤشر، HandlePointerInputScope إلى AwaitPointerEventScope و handlePointerInput() إلى awaitPointerEventScope(). (Idf0a1، b/175142755)
تمت إضافة LazyListState.layoutInfo التي تعرض قائمة بأحجام وإزاحات العناصر المرئية حاليًا (If8678، b/170472532)
إزالة التعليق التوضيحي ExperimentalPointerInput (Ia7a24)
تمت إضافة إمكانية استخدام InteractionState مع حقول النص. (I61d91)
أضِف المَعلمة reverseLayout إلى LazyColumn/Row. عندما تكون القيمة
true، سيتم إنشاء العناصر من الأسفل إلى الأعلى، وعندما تكون القيمةLazyListState.firstVisibleItemIndex == 0، سيكون العنصر الأول في الأسفل. (I552ae، b/166589935)تمت إضافة المَعلمة verticalArrangement إلى LazyColumn. تمت إضافة المَعلمة horizontalArrangement إلى LazyRow. تتيح لنا ميزة "الترتيب" إضافة مسافة بين العناصر وتحديد ترتيبها عندما لا يتوفّر لدينا عدد كافٍ منها لملء الحد الأدنى للحجم بالكامل. (Icf79a، b/170394300)
تستخدِم الدالة detectMultitouchGestures الآن دالة ردّ واحدة مع مَعلمات مجمّعة للمركز الهندسي والتحريك والتكبير/التصغير والتدوير. (Ie6e1c)
تم نقل ContentDrawScope إلى وحدة ui-graphics ليكون مع DrawScope. (Iee043، b/173832789)
إصلاح الأخطاء
- تعرض دوال 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)
تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 وb/168511863 وb/168511484).
أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الموافقة على استخدامها (I0a1ec)
إضافة عبارات تفكيك لإنشاء مثيلات FocusRequester (I35d84 وb/174817008)
تمت إعادة تسمية accessibilityLabel إلى contentDescription. تمت إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)
تم تقديم العديد من الوظائف الجديدة في SelectionRegistrar، كما تمّت إعادة تسمية onPositionChange إلى notifyPositionChange. (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
دالة infiniteRepeatable جديدة لإنشاء InfiniteRepeatableSpec (I668e5)
تم تغيير واجهة
Applierلتسهيل إنشاء الأشجار من الأسفل إلى الأعلى بدلاً من الأعلى إلى الأسفل.تمت إعادة تسمية الطريقة
insert()إلىinsertTopDown().تمت إضافة طريقة جديدة، وهي
insertBottomUp().يُدرج التطبيق إما عقدًا في الشجرة التي يعدّلها باستخدام
insertTopDown()أوinsertBottomUp()، وذلك حسب الأداء الأفضل.بعض البنى الشجرية، مثل
LayoutNodeوView، تكون أكثر فعالية عند إنشائها من الأسفل إلى الأعلى مقارنةً بإنشائها من الأعلى إلى الأسفل. قبل هذا التغيير، كان يجب توفير مجموعة من عمليات الإدراج لتنفيذ عملية الإنشاء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كل أداة تطبيق تحتاج إلى عملية الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير، يتم استخدامApplierلإلغاءinsertBottomUp()من أجل إنشاء بنية شجرية من الأسفل إلى الأعلى، ويتم استخدامinsertTopDown()لإنشاء البنية الشجرية من الأعلى إلى الأسفل. (Icbdc2)تمت إضافة واجهة برمجة التطبيقات painterResource للتعامل مع تحميل كائنات Painter بشكل مبهم من تنسيقات مواد العرض النقطية (مثل ملفات PNG) أو VectorDrawables. لم يعُد على المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم استدعاء هذه الطريقة للحصول على عنصر Painter لاستخدامه في عناصر Image القابلة للإنشاء أو معدّلات Painter. (I2c703، b/173818471)
تمت إضافة دالة المصنع buildAnnotatedString لإنشاء AnnotatedString. تم إيقاف الدالة الإنشائية annotatedString نهائيًا. (Idfe0b)
الإصدار 1.0.0-alpha08
2 ديسمبر 2020
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha08 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha08. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة المَعلمة
maxLinesمنCoreTextField. إذا أردت تحديد ارتفاع حقل النص حسب عدد الأسطر، استخدِمBasicTextFieldبدلاً من ذلك. (Iec002) - تم تغيير طرق
await*TouchSlop()لكي لا ترصد الضغط على المؤشر، وتمت إعادة تسميتها إلى*OrCancellation. تم أيضًا إزالة الحاجة إلى المَعلمةorientationLock. (Ie96e1) - تمت إضافة فحص lint لأسماء مَعلمات lambda القابلة للإنشاء وموضعها، وذلك للتحقّق من التوافق مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم
childrenكاسم لدالة lambda اللاحقة إلىcontent، وذلك وفقًا لفحص lint والإرشادات. (Iec48e) - تم نقل واجهات برمجة التطبيقات
foundation:foundation-textإلىfoundation:foundation. ظلّت بنية الحزمة كما هي (Id3eb2) - أداة رصد جديدة للإيماءات المتعددة اللمس، بما في ذلك أدوات مساعدة لرصد التدوير والتكبير والتصغير والتحريك (Ic459d)
- أداة رصد جديدة لإيماءات السحب تعلّق واجهة برمجة التطبيقات لإدخال المؤشر، بما في ذلك قفل الاتجاه. (Icef25)
- تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder ليكون فئة داخلية من ImageVector وفقًا لإرشادات مجلس واجهات برمجة التطبيقات. تمت إضافة نوع الاسم المستعار VectorAssetBuilder للربط بـ ImageVector.Builder من أجل التوافق. (Icfdc8)
- تمت إعادة تسمية ImageAsset والطُرق ذات الصلة إلى ImageBitmap. (Ia2d99)
- نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c)
إضافة واجهات برمجة تطبيقات تستند إلى إجراءات روتينية متزامنة للتمرير:
تضيف هذه الحزمة LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهات برمجة تطبيقات منخفضة المستوى للتحكّم في التمرير. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكّم في التمرير الذي ينتظر إلى أن ينتهي التمرير قبل الرجوع. (Ie5642)
تمت إضافة مَعلمة singeLine إلى BasicTextField وTextField وOutlinedTextField. اضبط هذه المَعلمة على "صحيح" لجعل الحقل النصي سطرًا واحدًا يمكن تمريره أفقيًا. (I57004، b/168187755)
تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وعرض مؤشر الضغط باستخدام ميزة تعليق المؤشر الجديدة. تمت إضافة بعض الأدوات المساعدة أيضًا، ما يسهّل على المطوّرين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
تمت إضافة Modifier.focusable في foundation. يمكنك استخدام هذا الخيار لإضافة سلوك قابل للتركيز إلى أحد المكوّنات، مع توفير الدلالات وإمكانية الوصول الصحيحة. (I41eb9، b/152525426، b/162865824)
تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا: تمت إزالة Border، يُرجى استخدام BorderStroke بدلاً منها. تمت إزالة Modifier.drawBorder، لذا يُرجى استخدام Modifier.border بدلاً منها. تمت إزالة Modifier.gravity، يُرجى استخدام Modifier.align بدلاً من ذلك. تمت إزالة Stack، يُرجى استخدام Box بدلاً من ذلك (I32c2b، b/172470874)
تمت إعادة تسمية AbsoluteArrangement إلى Arrangement.Absolute. (If26f2)
إصلاح الأخطاء
- تم نقل واجهات برمجة التطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifierDeprecated.kt لتضمين أسماء الأنواع المستعارة وطُرق المساعدة لتسهيل عملية نقل البيانات من واجهات برمجة التطبيقات المتوقفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
- تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer وتم أيضًا تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا لتعليقات مجلس واجهات برمجة التطبيقات. (I0bd29، b/173834241)
- تمت إزالة
<T>من تعريف SubcomposeLayout. يمكنك استخدامها بدون تحديد نوع الآن. (Ib60c8) - تم جعل حقلَي وقت التشغيل والموضع في PointerInputData غير قابلَين للتصغير. (Id468a)
- تضبط السمة MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات التي لا تستخدم Material أن تستخدم AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في التحديد. (I1e6f4، b/139320372، b/139320907)
- تمت إعادة تسمية مَعلمة المحاذاة الخاصة بـ Box إلى contentAlignment. (I2c957)
- تمت إعادة تسمية معدِّلات offsetPx إلى offset. تتلقّى الآن مَعلمات lambda بدلاً من State. (Ic3021، b/173594846)
- تمت إضافة WindowManager.isWindowFocused للتحقّق ممّا إذا كانت نافذة المضيف في المقدّمة، وWindowFocusObserver الذي يوفّر معاودة الاتصال onWindowFocusChanged. (I53b2a، b/170932874)
- تمت إضافة المَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
- تعديل على واجهة برمجة التطبيقات TextFieldValue
- تم ضبط TextFieldValue.composition على القراءة فقط
- تم طرح استثناء تمت إزالته لنطاق التحديد غير الصالح (I4a675، b/172239032)
- تم إيقاف Ambients القديمة التي تحمل الاسم
Ambientكلاحقة، واستبدالها بخصائص جديدة تبدأ بـ Ambient، وذلك وفقًا لإرشادات Ambients الأخرى وواجهة برمجة تطبيقات Compose. (I33440) - تمت إضافة أداة تضمين Android Typeface. يمكنك تحميل Android
Typeface من خلال الدالة
typeface، أيtypeface(Typeface.DEFAULT). تمت أيضًا إعادة تسميةtypefaceFromFontFamily()إلىtypeface()(I52ab7) - تمت إضافة عملية فحص lint للتأكّد من أنّ أدوات إنشاء Modifier تستخدم
androidx.compose.ui.composed {}داخليًا، بدلاً من وضع العلامة@Composableعليها. (I3c4bc) - تمت إضافة عملية فحص Lint للتأكّد من أنّ دوال إنشاء Modifier معرَّفة كإضافات على Modifier، حتى يمكن ربطها بسلاسة معًا. (I07981)
- تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants إلى mergeDescendants. (Ib6250)
- أصبح التحكّم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521)
- إزالة وحدة ui-test القديمة ورموزها (I3a7cb)
- تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified بما يتوافق مع الوحدات الأخرى. (Ifce19)
- تم تعديل واجهة "المحاذاة" وإتاحتها للاستخدام. (I46a07، b/172311734)
- تم دمج الوحدة
foundation:foundation-textفيfoundation:foundation(Idac0f) - إيقاف الدالة place(Offset) والدالة placeRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع إزاحات الأعداد الصحيحة بدلاً من ذلك (I4c5e7).
- تمت إعادة تسمية
idإلىlayoutIdفيLayoutIdParentData. تمت إعادة تسميةMeasurable.idإلىMeasurable.layoutId. (Iadbcb، b/172449643)
الإصدار 1.0.0-alpha07
11 نوفمبر 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha07 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha07 وandroidx.compose.foundation:foundation-text:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- على غرار
Modifier.fillMaxSize[Width|Height]، أصبحنا الآن نتيح استخدام الكسور فيModifier.fillParentMaxSize[Width|Height]ضمن نطاقLazyColumn/Row(I797e2، b/166586426). - تمت إزالة
KeyboardOptions.toImeOptionsمن واجهة برمجة التطبيقات المتاحة للجميع. (Ic2e45) - تم إيقاف العناصر الأساسية AmbientTextStyle وProvideTextStyle وAmbientContentColor نهائيًا. بدلاً من ذلك، استخدِم الإصدارات الجديدة المتوفّرة في مكتبة Material. بالنسبة إلى التطبيقات غير المستندة إلى Material، عليك بدلاً من ذلك إنشاء أنظمة تصميم خاصة بها تتضمّن سمات يمكن استخدامها في مكوناتك الخاصة. (I74acc، b/172067770)
- تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية وغير متحيزة لا تستخدم قيمًا من سمة، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
- تمت إضافة maxLines إلى حقول النص (TextFields) (Ib2a5b)
- تعديل TextFields لقبول KeyboardOptions (Ida7f3)
- تمت إضافة KeyboardOptions لاستخدامها في TextFields (I9ca32)
- تضيف هذه الإضافة BasicText كواجهة برمجة تطبيقات غير مرتبطة بتصميم معيّن للنص، وهي موازية لـ BasicTextField. (I28268)
- تمت إزالة التعليق التوضيحي ExperimentalLazyDsl. يمكن الآن استخدام LazyColumn/LazyRow بدون إضافة @OptIn (Idab7a، b/166584730)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- تمت إضافة BasicTextField كبديل لكل من CoreTextField وBaseTextField (Id4cea)
- إزالة LazyColumnItems/LazyRowItems المتوقّفة نهائيًا (I1d8a8)
- تمت إزالة العناصر القابلة للإنشاء المتوقّفة نهائيًا لتحديد الحجم وفقًا للقياسات الأصلية. (I18537، b/171811496)
- تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة المعدِّل paddingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813)
- تمت إضافة المَعلمة matchHeightConstraintsFirst إلى أداة التعديل aspectRatio، والتي يمكن استخدامها لتحديد أداة التعديل التي سيتم تغيير حجمها وفقًا لقيود الارتفاع قبل تجربة العناصر المتوافقة مع العرض. (Ie7c43، b/155290593)
- تمت إزالة DpConstraints المتوقّفة نهائيًا. (I87884، b/171702471)
إصلاح الأخطاء
- تمت إضافة فئة مضمّنة ScaleFactor
لتمثيل عوامل القياس
للمحورين الأفقي والعمودي
بشكل مستقل عن بعضهما البعض
من أجل إتاحة حالات استخدام القياس غير المنتظم.
- تمت إضافة طريقة computeScaleFactor إلى ContentScale
- تمت إضافة ContentScale.FillBounds لتنفيذ تغيير الحجم غير المنتظم من أجل توسيع حدود src لتشغل الوجهة بالكامل.
- تمت إضافة طرق عامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
- (Ic96a6، b/172291582)
- تم نقل captureToBitmap إلى captureToImage. (I86385)
- تصنيف CoreText على أنّه @InternalTextApi استخدِم BasicText بدلاً من ذلك. (I6aaeb)
- إعادة تسمية KeyboardOptions إلى ImeOptions (I82f36)
- نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
- تم وضع علامة @InternalTextApi على CoreTextField. استخدام BasicTextField بدلاً من ذلك (Ie2469)
- تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- إضافة الوحدة ui-test-junit4 (Ib91f8)
- تم تعديل Icon API لتضمين Color.Unspecified كلون تلوين محتمل، ما سيؤدي إلى رسم العنصر أو أداة الرسم المقدَّمة بدون ColorFilter. في السابق، كانت محاولات تجاهل التلوين باستخدام Color.Unspecified تؤدي إلى تلوين العنصر بلون شفّاف، ما يؤدي إلى عدم عرض أي شيء على الإطلاق. (I049e2، b/171624632)
- تم نقل MeasureResult خارج MeasureScope. (Ibf96d، b/171184002)
- تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
- تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
- تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7)
- تمت إضافة SelectionContainer بدون دالة رد الاتصال (Ibfadb)
- إضافة اختبارات لمواضع SelectionHandles في SelectionContainer (Ie93db)
- تمت إضافة خيار التصحيح التلقائي للوحة المفاتيح في محرر أسلوب الإدخال (IME) (I57b8d)
الإصدار 1.0.0-alpha06
28 أكتوبر 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha06 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha06 وandroidx.compose.foundation:foundation-text:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل androidx.compose.foundation.Icon إلى androidx.compose.material.Icon. يمكنك أيضًا استخدام مكوّن الصورة / Modifier.paint() مع Painter إذا كنت لا تريد استخدام مكتبة Material. (I9f622)
- تمت إضافة interactionState إلى Modifier.scrollable وScrollableColumn وLazyColumnFor (I81566 وb/169509805)
- تمت إضافة alignByBaseline إلى RowScope وتمت إعادة تسمية alignWithSiblings إلى alignBy (I06503، b/170628732)
- تم تحويل المربع إلى دالة مضمّنة. (Ibce0c، b/155056091)
- تمت إضافة maxLines إلى CoreTextField (Ibee58، b/143687793)
- تمت إضافة softwrap إلى CoreTextField. (I21a4b)
إصلاح الأخطاء
- إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لتوضيح أنّ واجهة برمجة التطبيقات القابلة للإنشاء تستخدم داخليًا الدالة remember للاحتفاظ بالبيانات على مستوى عمليات الإنشاء. (Ifda43)
- تفعيل عمليات الانتقال في ComposeTestRule وإزالة خيار تفعيل المؤشر الوامض من ComposeTestRule (If0de3)
- تمت إضافة خيار لوحة المفاتيح ذات السطر الواحد إلى CoreTextField (I72e6d)
- تمت إعادة تسمية واجهة برمجة التطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن طريقة استخدامها في جميع أنحاء Compose. تم تعديل المستندات للإشارة إلى أنّه يتم حصر قيم نصف قطر الزوايا السالبة عند الصفر. (I130c7، b/168762961)
- إضافة إمكانية تحديد معلومات أداة الفحص في المعدِّل المركّب (Idee08، b/163494569)
- تمت إضافة خيار KeyboardCapitalization IME (I8ac38)
- تثبيت موضع أداة التحكم في اتجاه الكتابة من اليمين إلى اليسار (I6e1e0)
- تغيير غير متوافق: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) لأنّ القيمة الوحيدة التي يجب أن يكون من الممكن تغييرها في أحداث المؤشر هي بيانات الاستخدام. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات الاستخدام الخاصة بـ PointerEvents التي تم تمريرها. (I6acd0)
- تمت إضافة الخيار "اختيار الكل" إلى قائمة الاختيار (Ief02b)
الإصدار 1.0.0-alpha05
14 أكتوبر 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha05 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha05 وandroidx.compose.foundation:foundation-text:1.0.0-alpha05. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتوافق CoreTextField الآن مع وظيفة المؤشر (Id23aa)
إيقاف واجهتَي برمجة التطبيقات contentColor() وcurrentTextStyle() نهائيًا واستبدالهما بالبيئتين AmbientContentColor وAmbientTextStyle على التوالي يمكنك الوصول إلى القيمة الحالية باستخدام
.currentفي السمة المحيطة، كما هو الحال مع أي سمة محيطة أخرى. تم إجراء هذا التغيير للحفاظ على الاتساق وتجنُّب توفّر طرق متعددة لإنجاز المهمة نفسها. بالإضافة إلى ذلك، يعيد تسمية بعض السمات المحيطة لتوضيح الغرض منها بشكل أفضل على النحو التالي:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
إصلاح الأخطاء
- في إطار توحيد قيم الحراسة للفئات المضمّنة، تمت إعادة تسمية Color.Unset إلى Color.Unspecified لضمان التوافق مع الفئات المضمّنة الأخرى (I97611، b/169797763)
- تمت إضافة إجراءات تسهيل الاستخدام الخاصة بالنسخ واللصق والقص (I6db4f)
- تم تقديم TextOverflow.None. عندما تكون قيمة overflow هي None، لن يتعامل عنصر Text مع المحتوى الزائد بعد الآن، وسيُبلغ LayoutNode عن حجمه الفعلي. (I175c9، b/158830170)
- تم تعديل معلَمات Size.Unspecified لتصبح Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى الأحجام غير المحدودة. (I95a7e)
- تمت إضافة وحدة Paging Compose ودمج الترقيم (Ib85da)
- تعديل LazyListScope لتلقّي قيم تقبل القيم الخالية (I1765b)
- تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وإعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
- إضافة أمثلة إلى LazyColumn/Row (Idc16d)
- إصلاح المشكلة في الطريقتَين items وitemsIndexed للسماح باستخدام emptyList (I06647)
- إضافة لغة خاصة بالمجال لتحديد معلومات أداة الفحص (Ic9a22)
- نقل LongPress إلى Text (Iff2bc)
- إيقاف ميزة "تحديد النص"، وعرض توضيحي (Ie7e97)
- إتاحة تحويل AnnotatedString إلى SpannableString لتسهيل الاستخدام (Ief907)
- تمت إزالة
PointerInputFilter.onPointerInput(...). يجب استخدامPointerInputFilter.onPointerEvent(...)بدلاً من ذلك. (I6f04a)
الإصدار 1.0.0-alpha04
1 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha04 وandroidx.compose.foundation:foundation-text:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية الحزمة لتصبح Box. سيتم إيقاف استخدام Box القديم في foundation.Box نهائيًا واستخدام Box الجديد في compose.foundation.layout. سيتيح المربع الجديد ترتيب العناصر الفرعية فوق بعضها البعض عندما يتضمّن عدة عناصر فرعية، وهذا يختلف عن المربع السابق الذي كان يتصرف بشكل مشابه للعمود. (I94893، b/167680279)
- تم إيقاف مَعلمات تزيين المربّعات نهائيًا. إذا كنت تريد إضافة زخارف أو مساحة متروكة إلى المربّع، استخدِم المعدِّلات بدلاً من ذلك (Modifier.background وModifier.border وModifier.padding) (Ibae92 وb/167680279).
- أضِف فئة LazyListState جديدة. يتيح ذلك مراقبة موضع التمرير والتحكّم فيه في مكوّنَي LazyRow وLazyColumn. يمكن إنشاء مثيلات باستخدام rememberLazyListState() وتمريرها إلى مَعلمة الحالة في المكوّن. في الإصدار الأولي، يمكن حاليًا رصد العنصر الأول المرئي والإزاحات. (Ic7cb7، b/159307669)
- يتم الآن حفظ موضع القائمة الكسولة وإزاحة التمرير واستعادتهما عند إعادة إنشاء النشاط (Ie045f، b/166589058)
- إضافة إجراء دلالات النقر مع الاستمرار (I6281b، b/156468846)
- تمت إضافة أداة MutatorMutex للحفاظ على أداة تغيير واحدة للحالة المشتركة بمرور الوقت وإلغاء أدوات التغيير المتعارضة حسب الأولوية (I3f975)
- تمت إضافة التعليقات التوضيحية إلى rootAnimationClockFactory وtransitionsEnabled وblinkingCursorEnabled وtextInputServiceFactory باستخدام @VisibleForTesting، وتم تحويلها إلى واجهة برمجة تطبيقات داخلية وإخفاء مستندات kdoc الخاصة بها (I554eb وb/168308412)
- تمت إزالة المَعلمة inlineContent من "نص مع إدخال سلسلة". لن يتم استخدامه لأنّ inlineContent يجب أن يعمل مع AnnotatedString. (Ief403)
- تمت إزالة واجهات برمجة التطبيقات القديمة المخصّصة لـ "الترتيب". (Ic576d، b/168297922، b/168297923)
- تمت إضافة المَعلمة
unboundedإلى أدوات تعديل wrapContentSize، ما يتيح قياس عنصر التصميم باستخدام قيود قصوى غير محدودة. (I77951، b/158559319) - منعنا عمليات الاستيراد الثابتة لمحتويات نطاقات التنسيق (مثل alignWithSiblings في RowScope). يجب استخدام النطاق البديل الواضح بدلاً من ذلك:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be، b/166760797)
إصلاح الأخطاء
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة التطبيقات الخاصة بتحويل الحجم والتدوير لتستهلك مَعلمة إزاحة واحدة لتمثيل إحداثيات نقطة الارتكاز بدلاً من مَعلمات عائمة منفصلة لإحداثيات س/ص في 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)
- تحسينات الأداء في LazyColumnFor/LazyRowFor من خلال تجنُّب إعادة الإنشاء غير الضرورية أثناء كل عملية تمرير (I64f65 وb/168293643 وb/167972292 وb/165028371)
- تم إصلاح عُطل في LazyColumnFor/LazyRowFor بعد التمرير ثم تغيير العناصر، وتم تنفيذ ميزة التمرير التلقائي للأعلى عند إزالة العنصر المرئي سابقًا حتى لا نعرض فجوات فارغة في النهاية بعد الآن (I220ab وb/161480164 وb/167855468)
- لم يعُد مسموحًا بتضمين حاويات قابلة للتمرير في الاتجاه نفسه، مثل ScrollableContainer وLazyColumnFor. لم يكن هذا السلوك متاحًا في السابق، وكان يؤدي إلى إيقاف ميزة "التحريك السريع" وجميع ميزات الكسل في إنشاء عناصر LazyColumnFor (I6e101).
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة التطبيقات 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)
- إضافة AccessibilityScrollState إلى سمات الدلالات (Ifeda9)
- اجعل TextRange مضمّنًا لتجنُّب إنشاء كائن. (Id034b)
- تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (Ica712)
الإصدار 1.0.0-alpha03
16 سبتمبر 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha03 وandroidx.compose.foundation:foundation-text:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية InnerPadding إلى PaddingValues. (I195f1، b/167389171)
- تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متّسق إلى "محاذاة" أو "محاذاة" في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
- تمت إضافة مَعلمة محاذاة إلى Stack، ما يتيح تحديد المحاذاة التلقائية لجميع العناصر الفرعية في Stack. (Ie80ca، b/164085265)
إصلاح الأخطاء
- تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
- تمت إعادة تسمية المَعلمتَين
minWidthوmaxWidthفيwidthInإلىminوmax. وينطبق الأمر نفسه علىpreferredWidthInوheightInوpreferredHeightIn. (I0e5e1، b/167389544) - تمت إضافة onNode وطُرق عامة أخرى إلى ComposeTestRule لأنّ الطرق العامة الحالية سيتم إيقافها نهائيًا. (Ieae36)
- تم إصلاح عمليات احتساب الحجم والموضع في GestureScope، ما أدّى إلى حلّ مشاكل مثل إنشاء إيماءات تمرير غير صالحة (Iaf358 وb/166589947).
- تم نقل
createAndroidComposeRuleوAndroidInputDispatcherمنandroidx.ui.test.androidإلىandroidx.ui.test(Idef08، b/164060572)
الإصدار 1.0.0-alpha02
2 سبتمبر 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha02 وandroidx.compose.foundation:foundation-text:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
- تم وضع علامة "تجريبي" على TestUiDispatcher (Iae99d، b/161247083)
تمت إضافة
ManualFrameClock.hasAwaitersلمعرفة ما إذا كان هناك أي شيء ينتظر إطارًا من ساعة العرض هذه، وrunWithManualClockكبديل عنrunBlockingعند إجراء اختبارات تتطلّب ManualFrameClock، وTestUiDispatcher.Mainالذي يتيح الوصول بسهولة إلى أداة إرسال واجهة المستخدم الرئيسية في اختباراتك.مثلاً:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
الإصدار 1.0.0-alpha01
26 آب (أغسطس) 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha01 وandroidx.compose.foundation:foundation-text:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الإصدار 0.1.0-dev
الإصدار 0.1.0-dev17
19 آب (أغسطس) 2020
تم إصدار androidx.compose.foundation:foundation:0.1.0-dev17 وandroidx.compose.foundation:foundation-layout:0.1.0-dev17 وandroidx.compose.foundation:foundation-text:0.1.0-dev17. يتضمّن الإصدار 0.1.0-dev17 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة Arrangement spacedBy إلى Row وColumn، وذلك لتفعيل تحديد موضع عناصر التنسيق الفرعية بمسافة ثابتة. تمت إضافة Arrangement المحاذي أيضًا، وذلك لتفعيل وضع عناصر التنسيق بجانب بعضها البعض ومحاذاتها في الصف أو العمود وفقًا للمحاذاة. تم إيقاف الطريقتَين السابقتَين Arrangement.Vertical#arrange وArrangement.Horizontal#arrange نهائيًا، ولن يكون من الممكن إنشاء "ترتيبات" مخصّصة في المستقبل. (I6733d، b/161985975)
- أصبح الإزاحة فئة مضمّنة (Iaec70)
- تمت إزالة عمليات معاودة الاتصال onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
- تم إيقاف استخدام Modifier.drawBorder نهائيًا. استخدِم Modifier.border بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، b/158160576)
- تمت إزالة VerticalScroller وHorizontalScroller. استخدِم ScrollableColumn/Row بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)
- إزالة المعدِّلات التي تم وضع علامة عليها كمتوقّفة نهائيًا fillMax* من LazyItemScope لأنّها تجعل من الصعب إضافة هذه المعدِّلات بشكل صحيح للعناصر التي ليست عناصر فرعية مباشرة من LazyColumnFor (Ifa78d)
- إضافة تنفيذ LazyColumn/LazyRow كـ DSL (I93cc6)
- أصبحت Constraints الآن فئة مضمّنة (I88736)
- تمت إضافة إمكانية تحديد حجم التنسيق كجزء من المساحة المتاحة، وذلك باستخدام المعدِّلات fillMaxWidth وfillMaxHeight وfillMaxSize. (I945bb، b/161562591)
إصلاح الأخطاء
- تمت إضافة مَعلمة معدِّل إلى SelectionContainer (I4aada، b/161487952)
- تمت إضافة دالة lambda الخاصة بـ mergePolicy إلى SemanticsPropertyKey. يمكن استخدامها لتحديد سياسة مخصّصة لدمج جميع العناصر الفرعية. تتمثّل السياسة التلقائية في استخدام قيمة العنصر الأصل إذا كانت متوفّرة، وإلا سيتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)
- تمت إعادة تسمية
PlacementScope.placeAbsolute()إلىPlacementScope.place()، وتمت إعادة تسميةPlacementScope.place()السابقة إلىPlacementScope.placeRelative(). نتيجةً لذلك، لن تعكس الطريقةPlacementScope.place()الموضع تلقائيًا في سياقات الكتابة من اليمين إلى اليسار بعد الآن. إذا كنت تريد ذلك، استخدِمPlacementScope.placeRelative()بدلاً من ذلك. (I873ac، b/162916675) - تمت إزالة مكوّن FilledTextField المتوقّف نهائيًا. يُرجى استخدام TextField بدلاً من ذلك للحصول على تنفيذ حقل النص المملوء وفقًا لتصميم Material Design. (I5e889)
- تمت إضافة المَعلمة backgroundColor إلى LinearProgressIndicator وإزالة المساحة المتروكة الداخلية من CircularProgressIndicator. تمت إضافة ProgressIndicatorConstants.DefaultProgressAnimationSpec الجديد الذي يمكن استخدامه كـ AnimationSpec تلقائي عند تحريك مستوى التقدّم بين القيم (If38b5 وb/161809914 وb/161804677)
- تم إيقاف العنصر القابل للإنشاء
state { ... }نهائيًا، وأصبح من الأفضل استخدام استدعاءات صريحة للدالةremember { mutableStateOf(...) }لزيادة الوضوح. يؤدي ذلك إلى تقليل مساحة واجهة برمجة التطبيقات وعدد المفاهيم الخاصة بإدارة الحالة، ويتوافق مع نمطby mutableStateOf()لتفويض سمات الفئة. (Ia5727) - تمت إعادة تسمية RRect إلى RoundRect لتتلاءم بشكل أفضل مع أنماط التسمية في Compose تم إنشاء دوال إنشاء مشابهة لدالة RRect وتم إيقاف دوال إنشاء RRect نهائيًا (I5d325)
- تمت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier في تصميم العنصر الفرعي بدلاً من ذلك. (I4522e، b/162109766)
- أصبح IntSize الآن فئة مضمّنة (I2bf42)
- انقر مع الاستمرار على المساحة الفارغة للتعديل. (Ib1e5b)
- إخفاء FloatingToolbar بعد النقر على النص (If4525)
- إخفاء FloatingToolbar عند تعديل التحديد (I8444c)
- ألغِ اختيار "التمويه عند القيادة". (I781a2)
الإصدار 0.1.0-dev16
5 آب (أغسطس) 2020
تم إصدار androidx.compose.foundation:foundation:0.1.0-dev16 وandroidx.compose.foundation:foundation-layout:0.1.0-dev16 وandroidx.compose.foundation:foundation-text:0.1.0-dev16. يتضمّن الإصدار 0.1.0-dev16 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة LazyItemScope إلى المَعلمة itemContent في القوائم الكسولة. توفّر هذه السمة معدِّلات لملء الحد الأقصى لحجم العنصر الرئيسي، ما يحلّ حالة الاستخدام عندما يجب أن يملأ العنصر إطار العرض ولا تعمل السمة Modifier.fillMaxSize() العادية لأنّه يتم قياس العنصر باستخدام قيود لانهائية. (Ibd3b2، b/162248854)
- نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
- تمت إضافة LazyColumnForIndexed/LazyRowForIndexed، وهما إصداران من LazyColumnFor/LazyRowFor يوفّران كلاً من الفهرس والعنصر في itemCallback. ويكون ذلك مفيدًا عندما تحتاج إلى معرفة الفهرس الحالي بالإضافة إلى العنصر الحالي. (I65ff3)
- تمت إعادة تسمية Modifier.deternimateProgress إلى Modifier.progressSemantics (I9c0b4)
- تمت إعادة تسمية LazyColumnItems إلى LazyColumnFor. تمت إعادة تسمية LazyRowItems إلى LazyRowFor (I84f84)
- أضِف بعض العلامات/التعليقات التوضيحية لسبب أفضل الممارسات. (I66b20)
- تمت تسوية حزمة foundation.shape.corner إلى foundation.share (I46491، b/161887429)
- تمت إضافة مَعلمة сrossaxis gravity إلى LazyRowItems/LazyColumnItems. تتيح LazyRowItems/LazyColumnItems الآن سلوك التفاف المحتوى. (Ib39fc)
- تمت إعادة تسمية ZoomableState إلى ZoomableController. تمت إضافة إمكانية استخدام منحنى مخصّص مع smoothScale. تمت إضافة وظائف
enabledوonZoomStarted(If8b8f) - تمت إعادة تسمية Material FilledTextField إلى TextField، وإعادة تسمية TextField الأساسي إلى BaseTextField لتسهيل العثور على أبسط واجهة برمجة تطبيقات مطلوبة واستخدامها (Ia6242، b/155482676)
- تمت إزالة AdapterList التي تم إيقافها نهائيًا سابقًا. استخدِم LazyColumnItems بدلاً من ذلك (I12b9b)
- تمت إعادة تسمية Modifier.drawBackground إلى Modifier.background (I13677)
- تمت إزالة لغة DSL القديمة الخاصة بـ ConstraintLayout. تمت إعادة تسمية ConstraintSet2 إلى ConstraintSet. (If58d1، b/162450908)
- تمت إضافة Modifier.absoluteOffset() وModifier.absoluteOffsetPx(). على عكس أدوات تعديل الإزاحة، لن يتم تلقائيًا عكس أدوات تعديل الإزاحة المطلقة في سياق الكتابة من اليمين إلى اليسار (I3aa21)
- أصبحت الدالتان
RowوColumnالآن دالتين مضمّنتين، ما يقلّل بشكل كبير من تكلفة استخدامهما. (I75c10)
إصلاح الأخطاء
- إصلاحات واسعة النطاق في واجهة برمجة التطبيقات (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، وإزالة الطرق غير المستخدَمة
تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock كـ AnimationClockObservable لسد الفجوة بين الساعات الجديدة المستندة إلى الروتينات المشتركة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى عمليات معاودة الاستدعاء.
أصبح MonotonicFrameClock مكافئًا لـ ManualAnimationClock، وهو الآن ManualFrameClock. (I111c7، b/161247083)
تمت إزالة
SemanticsNodeInteraction.performPartialGesture. استخدِمSemanticsNodeInteraction.performGestureبدلاً من ذلك. (Id9b62)تمت إعادة تسمية
SemanticsNodeInteraction.getBoundsInRoot()إلىSemanticsNodeInteraction.getUnclippedBoundsInRoot()(Icafdf، b/161336532)تم تعديل واجهات برمجة التطبيقات التي تتيح استخدام اللغة من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient، ويمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)
تم إيقاف Modifier.plus نهائيًا، يُرجى استخدام Modifier.then بدلاً من ذلك. توفّر الكلمة الأساسية "ثم" إشارة أقوى للترتيب، كما أنّها تحظر كتابة
Modifier.padding().background() + anotherModifier، ما يؤدي إلى إيقاف السلسلة ويصعّب قراءتها (Iedd58، b/161529964)تمّت إضافة
isFocused()وisNotFocused()SemanticsMatcher. (I0b760)تمت إضافة RemeasurementModifier. يسمح هذا الإعداد للمستخدمين بإعادة قياس التنسيق بشكل متزامن. بشكل عام، لن تحتاج إليها أبدًا لأنّ إعادة القياس/إعادة التنسيق تتم تلقائيًا، ولكننا نستخدمها داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)
يأخذ isSystemInDarkTheme الآن في الاعتبار دائمًا إعداد المظهر الداكن على مستوى النظام، ويتجاهل حالة توفير البطارية قبل الإصدار Q، وذلك وفقًا لأحدث الإرشادات. (I0c10c)
تم إيقاف OnChildPositioned نهائيًا. استخدِم OnPositioned في العنصر الفرعي بدلاً من ذلك. (I87f95، b/162109766)
تمت إعادة تسمية AndroidComposeTestRule إلى createAndroidComposeRule. (I70aaf)
إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
الإصدار 0.1.0-dev15
22 تموز (يوليو) 2020
تم إصدار androidx.compose.foundation:foundation:0.1.0-dev15 وandroidx.compose.foundation:foundation-layout:0.1.0-dev15 وandroidx.compose.foundation:foundation-text:0.1.0-dev15. يتضمّن الإصدار 0.1.0-dev15 هذه التعديلات.
لاستخدام إصدار 0.1.0-dev15 من Compose، عليك إجراء ما يلي:
تعديل التبعيات
- لاستخدام إصدار
0.1.0-dev15من Compose، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.
تغييرات واجهة برمجة التطبيقات
- على غرار المَعلمة الجديدة في ScrollableColumn/ScrollableRow، تحتوي LazyColumnItems/LazyRowItems الآن أيضًا على المَعلمة contentPadding التي تتيح إضافة مساحة متروكة للمحتوى بعد اقتصاصه، وهو ما لا يمكن إجراؤه باستخدام مَعلمة المعدِّل فقط. تسمح أيضًا بإضافة مسافة بادئة قبل العنصر الأول أو بعد العنصر الأخير فقط. (Ibc24e)
- تمت إعادة تسمية دالة onFocusChange في حقول النص إلى onFocusChanged (Ida4a1)
- تم إيقاف VerticalScroller وHoriziontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow لتوفير تجربة مدمجة مع سلوك Column/Row ومَعلماتهما، أو استخدِم Modifier.verticalScroll وModifier.horizontalScroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا واستبداله بـ ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
- تمت إعادة تصميم واجهتَي برمجة التطبيقات Modifier.draggable وModifier.scrollable. تمت إزالة DragDirection لصالح Orientation. تم تبسيط حالة "مطلوب للتمرير". تمت إعادة تسمية ScrollableState إلى ScrollableController (Iab63c، b/149460415)
- تستخدم خصائص الدلالات ذات القيمة الواحدة الآن أسلوب استدعاء.
على سبيل المثال، تتم الآن كتابة "semantics { hidden = true }" على النحو التالي:
semantics { hidden() }. (Ic1afd، b/145951226، b/145955412) - يمكن الآن أن تكون أحجام الزوايا المستخدَمة في RoundedCornerShape وCutCornerShape أكبر من 50% (Id2340، b/160400213)
- تم تغيير المَعلمة التلقائية ContentScale للعنصر Image القابل للإنشاء من Inside إلى Fit. تم إجراء ذلك من أجل توسيع نطاق سلوك Painter الأساسي إذا كان حجم التنسيق أكبر من الحجم الأصلي لـ Painter مع الحفاظ على نسبة العرض إلى الارتفاع. يتوافق هذا السلوك بشكل أفضل مع التوقعات بشأن توفير أحجام ثابتة للصورة بدون التأثير في السلوك التلقائي إذا تم استخدام الحجم الأصلي فقط لاحتساب حجم العنصر القابل للإنشاء. (I40ae3، b/159838006)
- استخدِم AnimationSpec بدلاً من AnimationBuilder في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الحركة الثابتة -حسِّن لغة تصميم النطاق (DSL) الخاصة بالانتقال من خلال إزالة شرط تعبير lambda لإنشاء AnimationSpec، مثل tween وspring. بدلاً من ذلك، يتم تلقّي مَعلمات الدالة الإنشائية مباشرةً. -تحسين سهولة الاستخدام العامة لـ AnimationSpec من خلال توفير أدوات إنشاء بدلاً من الاعتماد على أدوات الإنشاء -تغيير مدة KeyFrames وTween وتأخيرهما إلى Int، ما يؤدي إلى إلغاء عمليات تحويل الأنواع غير الضرورية وتجاوز تحميل الطرق (لدعم كل من Long وInt). (Ica0b4)
- تمت إزالة العنصر القابل للنقر. استخدام Modifier.clickable (I84bdf)
- تمت إضافة LazyRowItems - نسخة أفقية من LazyColumnItems (Ibbcf7)
- تم تقديم واجهات برمجة تطبيقات لحركات بدون حالة على مستوى منخفض. واجهات برمجة التطبيقات هذه (I63bf7)
- تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر القابلة للإنشاء TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
- تم استبدال استخدام IntPx بـ Int، واستبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
- تمت إزالة androidx.ui.foundation.shape.RectangleShape؛ استخدِم androidx.ui.graphics.RectangleShape (I94939، b/154507984)
- من أجل دمج عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل العرض والارتفاع كقيم عائمة. (Ic0191)
- من أجل توحيد عدد الفئات المستخدَمة لتمثيل معلومات تحديد المواقع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. ويوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحتَين x وy الممثّلتَين كقيم عائمة. (I3ad98)
- تمت إضافة Modifier.zoomable لتوفير وظيفة التكبير والتصغير بإصبعين (Id5d63)
- تم إيقاف المكوّن القابل للتبديل نهائيًا. استخدِم Modifier.toggleable بدلاً من ذلك (I35220، b/157642842)
- تم إيقاف استخدام MutuallyExclusiveSetItem نهائيًا. استخدِم Modifier.selectable بدلاً من ذلك. (I02b47، b/157642842)
- تم إيقاف TestTag نهائيًا. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)
- إضافة المَعلمة fontWeight إلى Text، والتي لم تتم إضافتها عن طريق الخطأ في السابق (I56937)
- تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I19d02)
- توفّر أداة VerticalScroller الآن أداة Column بدون أي إعدادات إضافية. توفّر أداة HorizontalScroller الآن Row تلقائيًا. (Ieca5d، b/157020670)
- تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (Iede0b)
- تمت إضافة Modifier.indication إلى حزمة الأساس. يمكنك استخدامها لعرض مؤشر الضغط/السحب/غير ذلك على العناصر التفاعلية المخصّصة (I8425f، b/155287131).
- تتيح الآن الفئتان VerticalScroller وHorizontalScroller إمكانية التمرير المعكوس عند ضبط isReversed على ScrollerPosition (I953bd)
- إتاحة إضافة عناصر قابلة للإنشاء إلى تخطيط النص (I1373c)
- عمليات تنفيذ CanvasScope الموحّدة بحيث لا يتوفّر الآن سوى DrawScope و ContentDrawScope تمت إعادة تسمية CanvasScope إلى DrawScope. تم تعديل DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection تم حذف فئة DrawScope الفرعية في ContentDrawScope تم تعديل Painter وPainterModifier لعدم الاحتفاظ بخاصية RTL بشكل منفصل، لأنّ DrawScope يوفّرها بدون الحاجة إلى توفيرها يدويًا (I1798e)
- تمت إزالة واجهة برمجة التطبيقات DrawBackground المتوقّفة نهائيًا واستبدالها بواجهات برمجة التطبيقات الخاصة بإضافة drawBackground في Modifier. تمت إعادة تصميم عمليات تنفيذ اللون والفرشاة والرسم في الخلفية لتقليل مسارات الرموز البرمجية، بالإضافة إلى إزالة شرط إنشاء Modifier كجزء من التركيب. (I0343a)
- تم تعديل واجهات برمجة التطبيقات ذات المستوى الأعلى في Compose التي تعرض Canvas لعرض CanvasScope بدلاً من ذلك. ويؤدي ذلك إلى إزالة الحاجة إلى أن يحتفظ المستهلكون بكائنات Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا بحاجة إلى الوصول إلى Canvas، يمكنهم استخدام طريقة drawCanvas الخاصة بالإضافة التي توفّر دالة ردّ نداء لإصدار أوامر الرسم باستخدام Canvas الأساسي. (I80afd)
- لا يستعيد كلّ من HorizontalScroller وVerticalScroller موضع التمرير باستخدام حالة المثيل المحفوظة. (Ia0fae، b/155075048)
- تمت إزالة FocusManagerAmbient. استخدِم FocusModifier.requestFocus للحصول على التركيز. (Ic4826)
- تمت إزالة تخطيط الجدول مؤقتًا إلى أن نتيحه مرة أخرى من خلال واجهة برمجة تطبيقات محدَّثة. (Id88a7)
تم إنشاء واجهة برمجة التطبيقات CanvasScope التي تتضمّن كائن Canvas لعرض مساحة واجهة برمجة تطبيقات للرسم بدون حالة وتصريحية. يتم تضمين عمليات التحويل ضمن نطاق المستقبِل الخاص بها، كما يتم تحديد نطاق معلومات الحجم ليشمل حدود الحواف الداخلية المقابلة. ولا يتطلّب ذلك من المستهلك الاحتفاظ بكائن حالة Paint الخاص به لتحديد عمليات الرسم.
تمت إضافة CanvasScopeSample، كما تم تعديل التطبيق التجريبي ليشمل عرضًا توضيحيًا للرسومات التعريفية (Ifd86d).
تمت إزالة ColoredRect. استخدام معدِّل User Box مع drawBackground بدلاً من ذلك (I983c7، b/152753731)
إضافة خيار تخصيص لون المؤشر إلى TextField (I6e33f)
يمكن الآن إخفاء لوحة المفاتيح البرمجية أو إظهارها باستخدام SoftwareKeyboardController الذي يتم توفيره من خلال onTextInputStarted (I8dc44، b/151860051)
يمكن الآن استخدام TextFieldValue مع TextField عند إعادة إنشاء النشاط عند استخدامه على النحو التالي:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce، b/155075724)تضيف هذه السمة المَعلمات المستخدَمة بشكل شائع إلى Text(). إذا كنت بصدد إنشاء نمط نص محلي لتمرير عدد صغير من هذه المَعلمات، مثل
Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً:Text(textAlign = TextAlign.Center)(I82768)تم استبدال المَعلمة CoreTextField/TextField focusIdentifier بـ FocusNode من أجل الدمج مع نظام التركيز الفرعي. (I7ea48)
تعديل على TextField: سيشغل كل المساحة المتاحة المخصّصة له في الاتجاه الأفقي (Ib08df، b/154638552)
تمت إضافة InteractionState وInteraction، ما يسهّل إنشاء مكوّنات تتفاعل مع تغييرات حالة واجهة المستخدم، مثل الضغط والسحب (Icfe25 وb/152525426)
تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات Color القابلة للتصغير في واجهة برمجة التطبيقات بأخرى غير قابلة للتصغير، واستخدام Color.Unset بدلاً من null (Iabaa7)
تعديل TextField API: تم دمج عمليات معاودة الاتصال onFocus وonBlur في عملية معاودة اتصال واحدة onFocusChange(Boolean) مع مَعلمة (I66cd3)
تمت إعادة تسمية ScaleFit إلى ContentScale تم نقل ContentScale من وحدة ui-graphics إلى وحدة ui-core لتكون في الوحدة نفسها التي تتضمّن واجهة برمجة التطبيقات Alignment. تمت إعادة تسمية FillMaxDimension إلى Crop تمت إعادة تسمية FillMinDimension إلى Fit تمت إعادة تسمية Fit إلى Inside لتتطابق بشكل أفضل مع قيم ImageView.ScaleType تمت إضافة مستندات تشير إلى أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_CROP، وأنّ Fit المستخدَمة مع Alignment.Center تحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.FIT_CENTER تحقّق Inside المستخدَمة مع Alignment.Center النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_INSIDE (I45f09، b/152842521)
إزالة ProvideContentColor، واستخدام ContentColorAmbient مباشرةً مع
Providers(Iee942)تضيف هذه السمة مَعلمة اللون إلى النص، ما يتيح إلغاء لون نمط النص بدون الحاجة إلى الدمج يدويًا مع النمط المتوفّر في أحد المظاهر. (I41a66)
تحسين واجهة برمجة التطبيقات DrawModifier:
- تم إنشاء نطاق المتلقّي للدالة draw() ContentDrawScope
- تمت إزالة جميع المَعلمات من draw()
- تتضمّن DrawScope الواجهة نفسها التي كانت تتضمّنها CanvasScope السابقة
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تم إيقاف ColoredRect نهائيًا. يمكنك استخدام
Box(Modifier.preferredSize(width, height).drawBackground(color))كبديل. (I499fa، b/152753731)تم تعديل نظام سمات الأشكال وفقًا لمواصفات Material Design. يمكنك الآن توفير أشكال صغيرة ومتوسطة وكبيرة لتستخدمها معظم المكوّنات (Ifb4d1).
استبدال المعدِّل وعلامة الجمع بدوال إضافة المصنع (I225e4)
تم نقل السمة Draggable إلى المعدِّل (Id9b16، b/151959544)
تم نقل
Textإلى حزمة androidx.ui.foundation من androidx.ui.core. (I87ce5)إضافة المَعلمة
enabledإلى Checkbox وSwitch وToggleable (I41c16)أصبح Ripple الآن أداة تعديل. على الرغم من أنّه لم يتم تحويل Clickable بعد، فإنّ الاستخدام المقترَح هو
Clickable(onClick = { ... }, modifier = ripple())(Ie5200، b/151331852، b/150060763)تمت إضافة واجهة برمجة التطبيقات VectorPainter API لاستبدال واجهة برمجة التطبيقات الحالية الخاصة بالعناصر الفرعية للرسومات المتجهة. نتيجة التركيب الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف الدوال البرمجية السابقة القابلة للإنشاء DrawVector نهائيًا واستبدالها بـ VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات
Image(Painter)إلىPaintBox(Painter)تم إنشاء عنصر Vector قابل للإنشاء يعمل مثل عنصر Image القابل للإنشاء، ولكن مع VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)تم إنشاء دالة Created Image قابلة للإنشاء للتعامل مع تغيير الحجم/التنسيق بالإضافة إلى عرض ImageAsset معيّن على الشاشة. تتيح هذه الدالة البرمجية القابلة للإنشاء أيضًا رسم أي مثيل Painter عشوائي مع مراعاة حجمه الأصلي بالإضافة إلى توفير حجم ثابت أو حد أدنى للحجم (Ibcc8f).
يحتوي كل من Button وFloatingActionButton وClickable الآن على المَعلمة
enabledالمنفصلة. تمت إعادة تسمية بعض المَعلمات في "الزر" أو إعادة ترتيبها. (I54b5a)تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وImage القابل للإنشاء القادم الذي سيتم استخدامه للمشاركة في التصميم ورسم المحتوى.
تم إنشاء طريقة إضافة في android.graphics.Bitmap,
Bitmap.asImageAsset(), لإنشاء مثيل من ImageAsset مفيد للجمع بين تطوير تطبيقات Android التقليدية وإطار عمل Compose. (Id5bbd)تمت إزالة الدالة البرمجية القابلة للإنشاء DrawImage. استخدِم ImagePainter لرسم صورة على تخطيط حالي، أو SimpleImage لتقديم صورة تشغل مساحة (I595e1، b/149827027).
يتوافق مكوّن الحزمة مع اتجاه الكتابة من اليمين إلى اليسار (Ic9e00)
تمت إضافة Icon وIconButton وIconToggleButton، وإزالة AppBarIcon. يمكنك استبدال الاستخدامات الحالية لـ AppBarIcon بـ IconButton مباشرةً، وستتضمّن الآن مساحة اللمس الصحيحة. راجِع الأمثلة للحصول على معلومات حول الاستخدام، وراجِع الرموز للحصول على رموز Material Icons المتوفّرة التي يمكنك استخدامها مباشرةً مع هذه المكوّنات. (I96849)
تمت إزالة الدالة البرمجية القابلة للإنشاء DrawShape. استخدِم المعدِّل DrawBackground بدلاً من ذلك. (I7ceb2)
تمت إضافة AdapterList، وهو مكوّن قائمة قابلة للتمرير لا يعرض سوى العناصر المرئية. تشمل المشاكل المعروفة حاليًا أنّه عمودي فقط ولا يتعامل بشكل كامل مع جميع حالات التغييرات التي تطرأ على العناصر التابعة له. (Ib351b)
تمت إضافة مكوّن قابل للتمرير، ما يتيح إنشاء أدوات تمرير/قوائم مخصّصة (I5fd37)
تمت إعادة تسمية الخلفية إلى DrawBackground وتم ضبطها على التذكّر تلقائيًا (Ia0bd3)
إضافة معلَمات الحشو والحدود والشكل والخلفية إلى المربّع (I05027، b/148147281)
تمت إضافة مكوّن Canvas. تستهلك هذه الدالة البرمجية القابلة للإنشاء بعض المساحة (التي يوفّرها المستخدم) وتتيح لك الرسم باستخدام CanvasScope (I0d622).
إعادة تسمية المعدِّل
BorderإلىDrawBorder(I8ffcc)تمت إضافة مكوّن Box لدمج وظائف التخطيط والرسم الشائعة. (I6e2a7)
تعرض أدوات التمرير الآن سلوك حركة التمرير السريع الأصلي في Android. (I922af، b/147493715)
تم استبدال DrawBorder بمعدِّل الحدود (Id335a)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط بينه وبين Modifier.testTag. (I995f0)
تمت إعادة تسمية المَعلمة percent عند إنشاء خطوط إرشاد ConstraintLayout إلى fraction. (Ida2db)
تمت إضافة إمكانية استخدام هوامش حواجز ConstraintLayout. (I47ffe)
تم إصلاح مشكلة عدم التوافق مع العرض من اليمين إلى اليسار في ConstraintLayout. تمت إضافة واجهات برمجة تطبيقات لا تراعي اتجاه الكتابة من اليمين إلى اليسار. (I3b1c7)
تمت إضافة لغة نطاق خاص جديدة إلى ConstraintLayout. يُرجى الاطّلاع على العيّنات لمعرفة مزيد من التفاصيل. (Icaa9a)
تمت إضافة التعليق التوضيحي @ExperimentalLayout. تم الآن وضع علامة على ConstraintLayout وFlowRow وFlowColumn للإشارة إلى أنّ واجهات برمجة التطبيقات الخاصة بها ستتغيّر. (I412a8)
تمت إضافة
Modifier.padding(InnerPadding)(I94985، b/157133803)تمت إزالة السمتَين المتوقّفتَين RowAlign وColumnAlign من Row وColumn. (If60d4، b/155858731)
تمت إزالة LayoutTag() المتوقّفة نهائيًا، يُرجى استخدام Modifier.tag() بدلاً من ذلك. تمت إزالة Modifier.matchParent() المتوقّفة نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً منها. (If8044)
تمت إضافة أداة تعديل التنسيق offsetPx، والتي يمكن استخدامها لتحديد الإزاحات (الديناميكية) بالبكسل. (I5af57)
تم إيقاف الدالة البرمجية القابلة للإنشاء AlignmentLineOffset نهائيًا، يُرجى استخدام المعدِّل relativePaddingFrom() بدلاً منها. تمت إزالة العنصر القابل للإنشاء CenterAlignmentLine. (I60107)
تمت إضافة معدِّل التنسيق defaultMinSizeConstraints الذي يضبط قيود الحجم على التنسيق المغلَّف فقط عندما تكون القيود الواردة غير محدّدة (0 للحد الأدنى من القيود واللانهاية للحد الأقصى من القيود). (I311ea، b/150460257)
تمت إزالة الحاوية. استخدام Box بدلاً من ذلك (Ibbc2b، b/151407926)
تمت إزالة معدِّلات LayoutWidth/Height/Size المتوقّفة نهائيًا. (Ib0bc1)
تمت إضافة قيم المَعلمات التلقائية لمعدِّل الإزاحة. (I37f06)
تمت إضافة أداة تعديل المساحة المتروكة المتماثلة. (I39840)
تمت إزالة المعدِّل LayoutAspectRatio المتوقّف نهائيًا. (I65a74)
تمت إزالة معدِّلات LayoutAlign المتوقّفة نهائيًا. (I10877)
تم إصلاح خطأ في أدوات تعديل العرض والارتفاع كان يتسبّب في قياس التنسيق الملتف بدون قيود على المحور المعاكس. (I210b8، b/154797971)
تمت إضافة المَعلمتَين verticalGravity وhorizontalGravity إلى Row وColumn على التوالي. (I7dc5a)
تم تعديل wrapContentWidth وwrapContentHeight لتوقّع محاذاة عمودية أو أفقية بدلاً من أي محاذاة. تم تعديل أداة تعديل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تعديل الصف والعمود والحزمة لتتوافق مع عمليات المحاذاة المستمرة المخصّصة. (Ib0728)
أصبحت السمة "محاذاة" قابلة للإنشاء باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة أحادية البُعد. (Ia0c05)
تمت إعادة تسمية EdgeInsets إلى InnerPadding. تمت إعادة تسمية المَعلمة innerPadding لأزرار Material إلى padding. (I66165)
تقبل السمة alignToSiblings الآن كائن Measured بدلاً من Placeable. (I5788d)
تمّت إضافة معدِّلات لتحديد الحجم إلى القياسات الجوهرية، وتمّ إيقاف المكوّنات التي تخدم هذا الغرض نهائيًا. (I8295d)
تمت إضافة إمكانية تخصيص أبعاد العناصر الفرعية في ConstraintLayout (Idb1a5)
تمت إزالة دوال Wrap وCenter البرمجية القابلة للإنشاء المتوقّفة نهائيًا. (I29e23)
تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد معدِّلات التنسيق، وتم إيقاف LayoutModifier نهائيًا (If32ac)
يمكن الآن الوصول إلى عناصر RowScope وColumnScope خارج Row وColumn. (I3a641)
تم إيقاف الحاوية نهائيًا. يمكنك استخدام Box بدلاً من ذلك. (I675ce، b/151407926)
تمت إضافة المعدِّل LayoutOffset لتعويض موضع التنسيق (I0b8a3)
إتاحة دعم مبدئي للغة من اليمين إلى اليسار في تصميم Compose (Ia5519)
تم تعديل LayoutAlign لكي لا تملأ المساحة المتاحة بعد الآن (I2b14f)
تمت إزالة العنصر AspectRatio القابل للإنشاء لصالح المعدِّل. تمت إزالة عناصر FlexColumn وFlexRow القديمة القابلة للإنشاء والمعدِّل Spacing (Iec8a7)
تمت إزالة المعدِّل LayoutInflexible من Row وColumn (I0d820)
تنفيذ مقابض سحب التحديد لتغيير التحديد في TextField (I27032)
تنفيذ LongPressAndDrag لتحديد TextField (I17919)
إصلاح الأخطاء
- تم إيقاف FocusModifier نهائيًا لصالح Modifier.focus وModifier.focusRequester وModifier.focusObserver. تم إيقاف FocusState وFocusDetailedState نهائيًا واستبدالهما بـ FocusState2 (I46919 وb/160822875 وb/160922136)
- تمت إعادة تسمية
runOnIdleComposeإلىrunOnIdle(I83607) - تمت إعادة تسمية العديد من واجهات برمجة التطبيقات الخاصة بالاختبار لتكون أكثر سهولة في الاستخدام. تمت إعادة تسمية جميع واجهات برمجة التطبيقات findXYZ لتصبح onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة التطبيقات doXYZ إلى performXYZ. (I7f164)
- تزيل هذه السمة Modifier.ripple التي تم إيقافها نهائيًا سابقًا. تستخدم السمة Clickable الآن تأثير التموّج كإشارة تلقائية (إذا كان لديك MaterialTheme {} مضبوط في تطبيقك)، لذا في معظم الحالات، يمكنك استخدام السمة Clickable والحصول على إشارة التموّج مجانًا. إذا كنت بحاجة إلى تخصيص المَعلمة color / size / bounded الخاصة بالتموّج، يمكنك إنشاء RippleIndication يدويًا وتمريرها إلى clickable كمَعلمة indication. (I663b2، b/155375067)
- تمت إزالة واجهات برمجة التطبيقات القديمة لاختبار الحجم. (Iba0a0)
- إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (I4f2e9)
- تم تنفيذ الإصدار 1 من ميزة قفل اتجاه التمرير في جميع أنحاء Compose. (I1ce7a، b/150289741)
- تتضمّن الآن النوافذ المنبثقة ومربّعات الحوار والقوائم السمة MaterialTheme السياقية (Ia3665، b/156527485)
- تمت إزالة مَعلمة اتجاه التنسيق من كتلة القياس الخاصة بالدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة رد الاتصال من خلال عنصر نطاق القياس (Ic7d9d).
- إضافة AbsoluteArrangement - يسمح بترتيب العناصر الفرعية داخل الصف بدون عكس تلقائي في اتجاه الكتابة من اليمين إلى اليسار (I3a1df)
- تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِلها بـ @ComposableContract(tracked=false) (Id211e)
- قبل إجراء هذا التغيير، كانت إضافة Compose البرمجية المساعدة للمترجم البرمجي تعترض بشكل غير بسيط على طلبات الدوال الإنشائية داخل دالة @Composable إذا كان هناك (I5205a، b/158123804)
- إضافة
viewModel()قابلة للإنشاء تتيح إنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه من قبل بطريقة مشابهة لطريقة عمله في Activity أو Fragment (I5fdd1) تمت إعادة تصميم فئة Radius لتصبح فئة مضمّنة. تمت إزالة طرق إنشاء العناصر المصاحبة لصالح دالة الإنشاء مع مَعلمة تلقائية لجعل نصف القطر على المحور y مطابقًا لنصف القطر الإلزامي للمَعلمة على المحور x.
تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتَين منفصلتَين من النوع float للنطاق الجغرافي على طول المحورَين x وy (I46d1b)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل. تم حذف فئة Px بالكامل (I3ff33)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I086f4)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (Id3434)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I97a5a)
يحتوي مؤشر TextField على صورة متحركة وامضة (Id10a7)
لم تعُد الإيماءات الجزئية تتطلّب تمرير GestureToken (Id7ae5)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة التصميم الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات وحدات البكسل (I57bff)
تمت إعادة إتاحة Modifier.semantics للسماح باستخدامها مع المكوّنات ذات المستوى العالي. (I4cfdc)
أعِد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)
تم تعديل Alignment API وإضافة إمكانية المحاذاة المطلقة (التي لا يتم عكسها تلقائيًا في سياق الكتابة من اليمين إلى اليسار) (I38cd3)
يمكن قياس عناصر Layout وLayoutModifier الفرعية باتجاه تخطيط مختلف. (Ibd731)
إضافة مَعلمة rect اختيارية إلى ImagePainter لتتيح رسم قسم فرعي من ImageAsset الأساسي (I0ea9e)
تم إصلاح عُطل في AdapterList عند إزالة عناصر (Ic64b0، b/153195921)
لقد غيّرنا طريقة قياس التنسيق الأول الذي تضعه داخل كتلة activity.setContent { }. في السابق، كان يتم فرض ملء شاشة النشاط بأكملها، ولكن الآن يتم التعامل معها كما لو كنت قد وضعت التصميم داخل Stack: يمكن أن يكون أصغر من الشاشة وسيتم وضعه في أعلى يمين الشاشة. إذا أردت السلوك القديم، يمكنك تطبيق Modifier.fillMaxSize() على التصميم. (Ie88a7، b/153453714)
تمت إعادة تسمية الوحدة ui-text-compose لتصبح ui-text. تحتوي الوحدة ui-text الآن على دوال CoreText وCoreTextField القابلة للإنشاء (Ib7d47).
تمت إعادة تسمية وحدة ui-text إلى ui-text-core (I57dec)
نقلنا دوال CoreText وCoreTextField القابلة للإنشاء ضمن ui-framework/CoreText إلى ui-text-compose. يمكنك تضمين ui-text-compose في مشروعك. (I32042)
أصبح
runOnIdleComposeوrunOnUiThreadالآن دالتَين عامتَين بدلاً من طريقتَين في ComposeTestRule. (Icbe8f)تم نقل عوامل تشغيل تفويض السمة [Mutable]State إلى الإضافات لإتاحة تحسينات تفويض السمة في Kotlin 1.4. على المتصلين إضافة عمليات استيراد لمواصلة استخدام
by state { ... }أوby mutableStateOf(...). (I5312c)تم ضبط القيم التلقائية لكلّ من DrawLayerModifier وdrawLayer() على clipToBounds وclipToOutline لتصبح false. (I0eb8b، b/152810850)
تمت إعادة تسمية LayoutResult إلى MeasureResult. (Id8c68)
تم إيقاف دالة Center البرمجية القابلة للإنشاء. يجب استبدالها إما بالمعدِّل LayoutSize.Fill + LayoutAlign.Center، أو بأحد العناصر القابلة للإنشاء Box أو Stack مع تطبيق المعدِّلات المناسبة (Idf5e0).
تمت إعادة تسمية LayoutFlexible إلى LayoutWeight. تمت إعادة تسمية المَعلمة "ضيق" إلى "ملء". (If4738)
تم تغيير DrawVector من دالة قابلة للإنشاء عادية إلى عرض Modifier drawVector() الذي سيرسم المتّجه كخلفية للتصميم. (I7b8e0)
استبدِل الدالة البرمجية القابلة للإنشاء Clip بالمعدِّل drawClip(). DrawClipToBounds هو معدِّل مناسب للاستخدام عندما تحتاج فقط إلى قص المحتوى ضمن حدود الطبقة باستخدام شكل مستطيل. (If28eb)
تم استبدال الدالة drawShadow() المعدِّلة بالدالة DrawShadow القابلة للإنشاء. يتم الآن رسم الظلال كجزء من LayerModifier. (I0317a)
تم نقل androidx.compose.ViewComposer إلى androidx.ui.node.UiComposer تمت إزالة androidx.compose.Emittable. كانت هذه الفئة مكرّرة مع ComponentNode. تمت إزالة androidx.compose.ViewAdapters. لم تعُد هذه الميزة من حالات الاستخدام المتاحة. تم إيقاف Compose.composeInto نهائيًا. يمكنك استخدام
setContentأوsetViewContentبدلاً من ذلك. تم إيقاف نهائيًا استخدام Compose.disposeComposition. استخدِم طريقةdisposeفيCompositionالتي تعرضهاsetContentبدلاً من ذلك. تم نقل androidx.compose.Compose.subcomposeInto إلى androidx.ui.core.subcomposeInto تمت إعادة تسمية ComponentNode#emitInsertAt إلى ComponentNode#insertAt تمت إعادة تسمية ComponentNode#emitRemoveAt إلى ComponentNode#removeAt تمت إعادة تسمية ComponentNode#emitMode إلى ComponentNode#move (Idef00)تم إيقاف العنصر Wrap المركّب نهائيًا. يمكن استبدالها إما باستخدام المعدِّل LayoutAlign أو باستخدام العنصر القابل للإنشاء Stack (Ib237f).
تم نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العناصر الفرعية. تمت إضافة أداة تعديل اتجاه التنسيق. (I3d955)
إعادة تسمية Painter.toModifier إلى Painter.asModifier لأنّ المعدِّل الذي تم إنشاؤه حديثًا يتضمّن مرجعًا إلى Painter الأصلي الذي يمكن مشاركته في عدة مثيلات من المعدِّل (I7195b)
إتاحة الاتجاه من اليمين إلى اليسار في أداة التعديل LayoutPadding (I9e8da)
تم دمج Density وDensityScope في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density) فقط with(density) (I11cb1)
تمت إزالة فئة ValueHolder. تمت إعادة هيكلة الفئتين AnimatedValue وAnimatedFloat لجعل حقل قيمة الحركة مجرّدًا حتى تتمكّن الفئات الفرعية من مراقبة تعديل القيمة.
- تمت إضافة فئات النماذج إلى AnimatedValue وAnimatedFloat وما إلى ذلك.
- تمت إضافة مجموعة جديدة من واجهات برمجة التطبيقات @Composable خفيفة الوزن لتفعيل الرسوم المتحركة بين القيم.
- (I79530)
تغييرات غير متوافقة في واجهة برمجة التطبيقات ambients API راجِع مستندات السجلّ و
Ambient<T>للحصول على التفاصيل (I4c7ee، b/143769776)أصبحت مواضع خط المحاذاة Int التي يتم عرضها من Placeable#get(AlignmentLine) غير فارغة الآن. في حال عدم توفّر خط المحاذاة المطلوب البحث عنه، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)
تم إصلاح خطأ في ConstraintLayout يؤدي إلى تعطُّل التطبيق عند إعادة التركيب. (Ibee5a، b/158164341)
تم تغيير واجهة برمجة التطبيقات WithConstraints trailing lambda. بدلاً من مَعلمتَين، يتضمّن الآن نطاقًا للمستلِم يوفّر، بالإضافة إلى القيود وlayoutDirection، خصائص minWidth وmaxWidth وminHeight وmaxHeight في Dp (I91b9a وb/149979702).
تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)
تحتوي دوال القياسات الجوهرية في Layout وLayoutModifier2 الآن على أداة استقبال IntrinsicMeasureScope التي توفّر واجهة برمجة تطبيقات طلبات البحث عن القياسات الجوهرية مع اتجاه التنسيق الذي يتم نشره ضمنيًا. (Id9945)
تم إيقاف LayoutDirectionAmbient نهائيًا. لقراءة اتجاه التنسيق المحدّد حسب اللغة، استخدِم localeLayoutDirection في ConfigurationAmbient (I851b1).
تمت إضافة positionInParent وboundsInParent إلى LayoutCoordinates. (Icacdd، b/152735784)
تم إيقاف الدالة البرمجية القابلة للإنشاء ParentData نهائيًا. عليك إما إنشاء معدِّل ينفّذ واجهة ParentDataModifier، أو استخدام معدِّل LayoutTag إذا كنت بحاجة ببساطة إلى وضع علامة على عناصر التنسيق الفرعية للتعرّف عليها داخل كتلة القياس. (I51368، b/150953183)
أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين القابلتَين للإنشاء OnPositioned وOnChildPositioned. (I2ec8f)
عدم السماح بالمسافة السلبية في LayoutPadding يجب استخدام LayoutOffset بدلاً من ذلك لإزاحات الموضع السلبية. (Ifb5b1)
إضافة المَعلمة LayoutDirection إلى WithConstraints (I6d6f7)
تم تعديل العلامة
ComposeFlags.COMPOSER_PARAMلتصبحtrue، ما سيؤدي إلى تغيير استراتيجية إنشاء الرمز الإضافي لـ Compose. على مستوى عالٍ، يؤدي ذلك إلى إنشاء دوال @Composable مع مَعلمة اصطناعية إضافية يتم تمريرها إلى استدعاءات @Composable اللاحقة لكي يتمكّن وقت التشغيل من إدارة التنفيذ بشكلٍ سليم. هذا تغيير كبير في التوافق الثنائي، ولكن من المفترض أن يحافظ على التوافق على مستوى المصدر في جميع الاستخدامات المسموح بها لـ Compose. (I7971c)تم تغيير LayoutCoordinates لجعل providedAlignmentLines مجموعة بدلاً من خريطة، وتم جعل LayoutCoordinates تنفّذ عامل التشغيل get() بدلاً من ذلك لاسترداد قيمة. يسهّل ذلك على المعدّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدّل. (I0245a)
لم يعُد LayoutCoordinates يتضمّن سمة موضع. لا تكون السمة position منطقية عند استخدام LayoutModifiers أو التدوير أو تغيير الحجم. بدلاً من ذلك، على المطوّرين استخدام parentCoordinates وchildToLocal() لاحتساب عملية التحويل من LayoutCoordinate إلى أخرى.
تستخدم LayoutCoordinates السمة IntPxSize للمقاس بدلاً من PxSize. تستخدِم التصميمات أحجامًا بالبكسل من الأعداد الصحيحة، لذا يجب أن تستخدِم جميع أحجام التصميمات أعدادًا صحيحة وليس قيمًا ذات فاصلة عشرية. (I9367b)
تحسينات على مساحة واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)
تمت إضافة TextDirection.Content (I48f36)
اضبط قائمة شريط الأدوات لعرض خيارات النسخ والقص واللصق بشكل صحيح. (Id3955)
إضافة FloatingToolbar لتحديد TextField (Ie8b07)
تمت إعادة تسمية TextDirectionAlgorithm إلى TextDirection (I75ce8)
تمت إعادة تسمية TextDirection إلى ResolvedTextDirection (I3ff38)
إضافة HapticFeedback إلى عملية اختيار TextField (I58050)
إضافة طُرق النسخ والقص واللصق إلى تحديد النص في حقل النص (Idb70b)
تم حذف TestTag وSemantics. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0 وb/158841414).
تم تغيير اسم الحزمة لكلّ من Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية
AnnotatedString(builder: Builder)إلىannotatedString(builder: Builder). (Ia6377)تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية
AnnotatedString.ItemإلىAnnotatedString.Range. (I2d44d)إضافة شريط أدوات للعمليات ذات الصلة بالنص (I49d53)
تتوفّر الآن السمة LifecycleOwnerAmbient الجديدة. يجب الآن أن يوسّع النشاط الذي تستخدمه مع واجهة مستخدم Compose نطاق androidx.activity.ComponentActivity (أو AppCompatActivity). تم الآن إيقاف setContent نهائيًا في android.app.Activity (Idb25a، b/153141084)
تم استبدال اسم حزمة ui-android-text (androidx.text) بـ androidx.ui.text.platform من أجل الالتزام بسياسة androidx. (I42711)