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)
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
2 يوليو 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
البنية
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.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول العناصر التابعة، يُرجى الاطّلاع على إضافة عناصر تابعة للإنشاء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.9
الإصدار 1.9.0-beta02
2 يوليو 2025
تم طرح 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
لإضافة عناصر وإزالتها في قائمة السياق. وأتحنا أيضًا واجهات برمجة التطبيقات الأساسية التالية للجميع حتى يتمكّن المستخدم من إنشاء قائمة سياقية مخصّصة:TextContextMenuProvider
TextContextMenuDataProvider
TextContextMenuData
TextContextMenuComponent
LocalTextContextMenuDropdownProvider
LocalTextContextMenuToolbarProvider
(I1b7b0)
- تثبيت
LazyLayoutItemProvider
(Icce09، b/261565751) - تم تقديم ميزات "الاختيار الذكي" على Android التي يمكن تفعيلها أو إيقافها من خلال
ComposeFoundationFlags.isSmartSelectionEnabled
. كما أنّه يعرضLocalTextClassifierCoroutineContext
compositionLocal
ثابتًا يمكن استخدامه لتحديد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.8.2 من "مكوّن Android الإضافي لنظام Gradle" كحد أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية 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) - السماح لـ "الكتابة بذكاء" بتفعيل
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
لتنفيذ Density (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 جديدة وعنصر CompositionLocal لها. (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
، ننصحك بتمرير القيمة null بدلاً من تمريرremember { MutableInteractionSource() }
. - تم إيقاف
Indication#rememberUpdatedInstance
نهائيًا. ويؤدي إلى انخفاض كبير في الأداء لا يمكن تجنّبه، كما يمنع إجراء تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقات الجديدةIndicationNodeFactory
.
- تمت إضافة واجهة برمجة تطبيقات جديدة للإشارات،
- أصبح استخدام
BasicTextField
TextFieldState
ثابتًا الآن، وننصح جميع المواقع الإلكترونية التي تستخدم ميزة الاتصال بالبدء في نقل البيانات من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
لاستيعاب التعريف الموسّع لهذه المصادر الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (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) - تمت إعادة تسمية المَعلمة
basicMarquee
delayMillis
إلىrepeatDelayMillis
. (I12ff6) - تعديل واجهة برمجة التطبيقات لتصميم الروابط: تم نقل
TextLinkStyles
إلىTextStyle
وإزالةTextDefaults
من Material (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
أكبر من القيود الواردة. يفرض عنصر التحكّم في تقسيم المحتوى على صفحات الآن القيم السالبة التي يتم عرضها منPageSize
إلى 0. (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
وLocalContextMenuTheme
ProvidableCompositionLocal
المرتبطَين به. يمكن تعديل ألوان قائمة الاختيارات في حقول النص والنص القابل للتحديد من خلال توفير التركيبة المحلية. (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
يقبل القيمة الخالية. إذا أردت تمرير قائمة فارغة من اللغات المحلية، يُرجى استخدام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()
كطريقة للحصول علىModifier.Node
الحاليLayoutCoordinates
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في خاصية بنفسك. (Ia8657) - تم تقديم
DelegatableNode.currentLayoutCoordinates
كطريقة للحصول علىModifier.Node
الحاليLayoutCoordinates
بدون الحاجة إلى إلغاء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) - تمت إضافة
LocalTextLinkStyle
composition 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
إلىdragAndDropTarget
Modifier
لقبولها من جلسة سحب وإفلات. تعرض هذه الدالة لامدا قيمة صالحة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 Studio وفي نواتج 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
إلى إصدار ثابت تحدّدFixedSize
LazyGrid
حيث تأخذ كل خلية حجمًا دقيقًا على المحور العرضي، مع توزيع المساحة المتبقية حسب ترتيب المحور العرضي. (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
لتوفير خوارزميات دمج مختلفة عند رسم نص على لوحة الرسم. (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، ويمكن استخدامها لإنشاء لوحة عرض دوّارة مثل أدوات Pager. تم تقديم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
وwaitForUpOrCancellation
الآن القيمةPointerEventPass
لتوفير مرونة أكبر. (I7579a، b/212091796) - إرجاع واجهة برمجة التطبيقات
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.imeAnimationSourc
e و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
إلى طرق الكثافة لتسهيل عمليات التحويل بين 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)
إصلاح الأخطاء
- يمكن الآن تحريك
BasicTextField
cursorBrush
بدون إعادة تشغيل مؤقّت المؤشر. (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) - تقبل الآن كلّ من Paragraph و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
للمطوّرين إيقاف استخدام WindowInsets في Android. يسمح ذلك بتطبيق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، لذا يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً أمرًا نادرًا . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة، أو دوال قابلة للإنشاء مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عامة تكون تعبيرات lambda قابلة للإنشاء (يتم استنتاج المتغيرات والمعلَمات المحلية)، أو عند استخدام
ComposeNode
أو دوال قابلة للإنشاء ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب إضافة التعليق التوضيحي
CompoableTarget
إلى الدوال القابلة للإنشاء التي تستدعيComposeNode
أوReusableComposeNode
، وإلى أي أنواع مَعلمات lambda قابلة للإنشاء. ومع ذلك، يُنصح بإنشاء تعليق توضيحي يتضمّنComposableTargetMarker
، ثم استخدام التعليق التوضيحي الذي يتضمّنComposableTarget
بدلاً من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. - تتلقّى السمتان "فقرة" و"فقرات متعددة" الآن القيمة
FontFamily.Resolver
- يحتوي
TextLayoutResult.layoutInput.fontFamilyResolver
الآن على برنامج التعيين المستخدَم في هذا التصميم، وتم إيقافTextLayoutResult.layoutInput.resourceLoader
نهائيًا لأنّه لم يعُد مستخدَمًا. (Id5a45، b/174162090)
- تمت إضافة
- تمت إضافة
AndroidFont
، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة من واصفات موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من الخلفية الخاصة بالتطبيق، وتحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز بشكل اختياري، أو تحميل خط من مصدر غير متوفّر من خلال مصانع الخطوط الحالية.- تمت إضافة
Font.ResourceLoaded
API لدعم تحميل الخطوط بشكل اختياري وغير متزامن. ولا يُنصح مطوّري التطبيقات باستخدام واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، راجِع 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 بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حدّ أدنى يبلغ 48x48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر على قيمة أصغر. يتوافق ذلك مع سلوك "مكوّنات 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)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحرّك مقابض النص عند تغيُّر إذن الوصول إلى "محرّك طرق الإدخال". (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 الآن التحديد عند الضغط على زر الرجوع، وهو ما يتوافق مع سلوك Android EditText. (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 Release الرسمية لمزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم الإصدار 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 Studio Bumblebee وAGP7.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 على عمليات الإيداع هذه.
هذا هو الإصدار الأول من الإصدار التجريبي 1.0.0 من Compose.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الاستدعاء 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 تجريبيًا
- تمت إزالة الدالة
@TestOnly
clearRoots ذات المستوى الأعلى. لم يعُد ذلك ضروريًا. - تمت إزالة الدالتَين 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 غير المعلقة ننصحك الآن باستخدام الدوال المعلقة للتحكّم في التمرير وانتظار انتهاء التمرير. سنوقف نهائيًا إصدارات هذه الدوال التي لا تتضمّن suspend كجزء من عملية الانتقال هذه. (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
- تمت إعادة تسمية 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 للتأكّد من أنّ أدوات إنشاء المعدِّلات تستخدم
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 إلى حقول النص (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 لتنفيذ تغيير الحجم غير المنتظم من أجل توسيع حدود المصدر لتشغل الوجهة بالكامل.
- تمت إضافة طرق عامل التشغيل لاحتساب مَعلمات 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. سيتم إيقاف استخدام 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 إلى أفقية وعمودية
- تمت إضافة تحميل زائد للداخل يوفّر قيمة الداخل نفسها لجميع الحدود الأربعة
- تمت إزالة المستندات المتعلقة بطريقة الإدراج التي تشير إلى أنّه سيتم تطبيق الإدراج على جميع الجوانب الأربعة
- تعديل المستندات الخاصة بفئة 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)
- Hide FloatingToolbar When Updating the Selection. (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 بدلاً من القيمة الخالية (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
إلى مربّع الاختيار ومفتاح التبديل والعنصر القابل للتبديل (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 composable القادم الذي سيتم استخدامه للمشاركة في تصميم المحتوى ورسمه.
تم إنشاء طريقة إضافة في 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)
تمت إضافة مكوّن "لوحة العرض". تستهلك هذه الدالة البرمجية القابلة للإنشاء بعض المساحة (التي يوفّرها المستخدم) وتتيح لك الرسم باستخدام 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" إلى paddding. (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 تم إنشاؤه من قبل بطريقة مشابهة لطريقة عمله في 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)تم نقل عوامل تشغيل تفويض السمة 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 الأصلي الذي يمكن مشاركته بين مثيلات Modifier متعددة (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)
تحسينات على مساحة واجهة برمجة التطبيقات الخاصة بالقيود (Constraints) (I0fd15)
تمت إضافة TextDirection.Content (I48f36)
اضبط قائمة شريط الأدوات لعرض خيارات النسخ والقص واللصق بشكل صحيح. (Id3955)
إضافة FloatingToolbar لتحديد TextField (Ie8b07)
تمت إعادة تسمية TextDirectionAlgorithm إلى TextDirection (I75ce8)
تمت إعادة تسمية TextDirection إلى ResolvedTextDirection (I3ff38)
إضافة HapticFeedback إلى عملية اختيار TextField (I58050)
إضافة طُرق النسخ والقص واللصق إلى تحديد TextField (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)