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)
آخر تعديل | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
13 تشرين الثاني (نوفمبر) 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
البنية
Compose هو عبارة عن مجموعة من 7 أرقام تعريف مجموعات Maven ضمن androidx
. تحتوي كل مجموعة
على مجموعة فرعية مستهدفة من الوظائف، ولكل مجموعة مجموعة خاصة بها من ملاحظات
الإصدار.
يوضّح هذا الجدول المجموعات والروابط لكل مجموعة من ملاحظات الإصدار.
مجموعة | الوصف |
---|---|
compose.animation | إنشاء صور متحركة في تطبيقات Jetpack Compose لتحسين تجربة المستخدم |
compose.compiler | حوِّل وظائف @Composable وفعِّل التحسينات باستخدام مكوّن إضافي لمجمّع Kotlin. |
compose.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع الأساس لإنشاء أجزاء نظام التصميم الخاص بك. |
compose.material | أنشئ واجهات مستخدم Jetpack Compose باستخدام مكونات Material Design الجاهزة للاستخدام. هذه هي نقطة الدخول ذات المستوى الأعلى في أداة "الإنشاء"، وهي مصمّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة على www.material.io. |
compose.material3 | أنشئ واجهات مستخدم Jetpack Compose باستخدام مكونات Material Design 3، وهي الإصدار التالي من Material Design. يتضمّن Material 3 ميزات تخصيص Material You، مثل الألوان الديناميكية، وتصميمًا جديدًا للعناصر والمظاهر، وهو مصمّم ليتوافق مع التصميم المرئي الجديد لنظام Android 12 وواجهة مستخدم النظام. |
compose.runtime | الوحدات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي الذي يستهدفه مكوّن Compose Compiler الإضافي |
compose.ui | المكونات الأساسية لواجهة مستخدم إنشاء الرسائل اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال |
الإعلان عن التبعيات
لإضافة تبعية على Compose، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle
ل
تطبيقك أو وحدتك:
رائع
dependencies { implementation "androidx.compose.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 1.8
الإصدار 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) - يعرض الآن كلّ من Paragraph و
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.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
في جذر عناصر التنسيق المُتأخّر. كان هذا السبب الأساسي المحتمَل لأعطال "تمّ استدعاء الإجراء على عقدة غير مفعّلة". (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
يمكن أن تكون فارغة. إذا كان القيمة فارغة وكان "المؤشر" المقدَّم هوIndicationNodeFactory
، يمكن إنشاء "المؤشر" بشكلٍ كسول فقط عند الحاجة، ما يؤدي إلى تحسين الأداء. إذا لم تكن بصدد تجميعMutableInteractionSource
واستخدامها، ننصحك بإرسال القيمة null بدلاً من إرسالremember { MutableInteractionSource() }
. - تم إيقاف
Indication#rememberUpdatedInstance
نهائيًا. ويؤدي ذلك إلى انخفاض كبير في الأداء لا يمكن تجنّبه، كما يمنع إجراء تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقاتIndicationNodeFactory
API الجديدة.
- تمت إضافة واجهة برمجة تطبيقات جديدة للإشارة، وهي
- أصبحت
BasicTextField
باستخدامTextFieldState
مستقرة الآن، وننصحك بجميع المواقع الإلكترونية التي تتلقّى المكالمات ببدء نقل البيانات منBasicTextField(value, onValueChange)
إلىBasicTextField(TextFieldState)
. - تم إيقاف
ClickableText
نهائيًا. لإضافة روابط قابلة للنقر إلى النص، استخدِمBasicText
مع التعليق التوضيحي الجديدLinkAnnotation
فيAnnotatedString
. يسمحLinkAnnotation
بتطبيق تصميم مخصّص استنادًا إلى حالة الرابط (مثل التركيز أو التمرير فوقه). - نعرّفك على
ContextualFlowRow
وEnhanced FlowRow/Column
معMaxLines
وOverflow
. يسرّنا الإعلان عن تحسينات علىFlowRow
وFlowColumn
التجريبيتين، اللتين تتضمّنان الآنmaxLines
ودعم المحتوى الزائد، إلى جانب طرحContextualFlowRow
وContextualFlowColumn
لأول مرة. تم تصميم هذا التعديل لتقديم مكوّنات مثالية للأداء، حيث يكونContextualFlow*
مثاليًا لعدد كبير من العناصر التي تستخدِم إعدادًا صغيرًا لعدد الأسطر الأقصى وزرّي عرض المزيد الديناميكيين +N، ويكونFlowRow
وFlowColumn
مثاليَين لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRow
أوFlowColumn
حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتناسب مع الحد الأقصى للمحور المتقاطع، اضبط العرض الفائض علىFlowRowOverflow.Visible
أوFlowColumnOverflow.Visible
أثناء الإعداد. يمكنك الاطّلاع علىContextualFlowRowSample
وFlowRowSample
للحصول على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082) - تمت إضافة إمكانية استخدام الصور المتحركة لظهور العناصر واختفائها في
LazyColumn
وLazyRow
. في السابق، كان من الممكن إضافة المُعدِّلModifier.animateItemPlacement()
لإتاحة استخدام الرسوم المتحرّكة لموضع الإعلان (إعادة الترتيب). أوقفنا هذا المُعدِّل نهائيًا وأضفنا مُعدِّلًا جديدًا غير تجريبي يُسمىModifier.animateItem()
يتيح لك استخدام جميع أنواع الصور المتحركة الثلاثة: الظهور (التلاشي) والاختفاء (التلاشي) وإعادة الترتيب. (I2d7f7، b/150812265) - تمّت إتاحة ميزة تجريبية لأخذ لقطات شاشة طويلة في حاويات التمرير في ميزة "الإنشاء" باستخدام واجهة برمجة تطبيقات Android الرسمية (
ScrollCaptureCallback
). - تم استبدال مصدرَي التفاعل "السحب" و"النقر سريعًا" في
NestedScroll
بUserInput
وSideEffect
ليشملا التعريف الموسّع لهذَين المصدرَين الذي يتضمّن الآن الصور المتحركة (تأثير جانبي) وعجلة الماوس ولوحة المفاتيح (UserInput
). - يمكن الآن وضع علامة "عاجل" على طلبات prefetch التي تبلغ
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
. ويشمل ذلك إمكانية prefetching للعناصر فيLazyGrids
المتداخلة. على غرارLazyListPrefetchStrategy
، يكون الإعداد التلقائي للتنفيذ هو التحميل المُسبَق للعنصرَين المتداخلَين الأولَين من كل شبكة، ولكن يمكن ضبط ذلك من خلال واجهات برمجة التطبيقات الجديدةLazyGridPrefetchStrategy(nestedPrefetchItemCount)
وLazyListPrefetchStrategy#onNestedPrefetch
. (I591c4) - تمت إعادة تسمية
SemanticsProperties.Editable
إلىIsEditable
وتغييرSemanticsPropertyReceiver.editable
إلى valisEditable
. أصبحت السمة الآن منطقية ويتم تحديدها دائمًا من خلال الحقول النصية. (I8acd8) - تم نقل القيم التلقائية
basicMarquee
إلى عنصرMarqueeDefaults
. (I12ff6) - تمت إعادة تسمية المَعلمة
basicMarquee
delayMillis
إلىrepeatDelayMillis
. (I12ff6) - تعديل واجهة برمجة التطبيقات لتنسيق الروابط: نقل
TextLinkStyles
إلىTextStyle
وإزالةTextDefaults
من المادة (I5477b)
إصلاح الأخطاء
- تمت إعادة تسمية
LayoutCoordinates.introducesFrameOfReference
إلىLayoutCoordinates.introducesMotionFrameOfReference
للإشارة إلى الغرض منها بشكل أفضل. تمّت إعادة تسمية الدالة ذات الصلة لاحتساب التنسيقات استنادًا إلى هذا الإعداد. (I3a330) - تمت إزالة "تلقائي" من سمات
MarqueeDefaults
. (I1d8a0) - تمت إزالة "الإعلان المتلألئ" من
MarqueeDefaults
موقعًا. (Iad4f4) - تمت إزالة
TextLinkStyles
من الصفTextStyle
. بدلاً من ذلك، يُعدّTextLinkStyles
جزءًا من طريقة الإنشاءLinkAnntation
وطريقةAnnotatedString.fromHtml
(I90b2b). - تم إصلاح خطأ كان يؤدي إلى التصاق عنصر Pager عند رميه باتجاه حدّ معيّن بعد أن كان قد وصل إلى هذا الحدّ. (I9f373، b/339171222)
- تتضمّن لعبة BTF2 الآن إيماءات اختيار الماوس الصحيحة. (Ibe8c6)
المساهمة الخارجية
- إعادة إرسال "جعل نوع المحتوى لحساب وقت الإنشاء/القياس يستند إلى التخزين المؤقت لتحسين الدقة" (Iea622)
- جعل مدة إنشاء/قياس المحتوى تعتمد على نوع المحتوى في أداة "التحميل المُسبَق" لتحسين الدقة (Ibccb1)
- إتاحة مُعدِّلات
WindowInsetsPadding
من مجموعة المصادر الشائعة (I070b2)
الإصدار 1.7.0-beta01
14 أيار (مايو) 2024
تم إصدار androidx.compose.foundation:foundation-*:1.7.0-beta01
. يتضمّن الإصدار 1.7.0-beta01 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة سمة
KeyboardOptions.shouldShowKeyboardOnFocus
مرة أخرى باعتبارها سمة متوقّفة نهائيًا ومخفية للحفاظ على التوافق مع الملفات الثنائية. (I15cfe) - يعكس
Modifier.anchoredDraggable
الآن قيم تغييرات السحب تلقائيًا للمكونات ذات الاتجاه الأفقي عند استخدامها في تنسيق RTL. (I3c6d9) - تم تغيير اسم "
AnnotatedString.hasEqualsAnnotations
" إلى "hasEqualAnnotations
". (I685c0) - تم تعديل واجهة برمجة التطبيقات للحصول على روابط ذات مظهر Material في النص. على وجه التحديد، تمّت إزالة الطرق من
TextDefaults
لإنشاءLinkAnnotations
ذات طابع معيّن وتحليل HTML باستخدام روابط ذات طابع معيّن. بدلاً من ذلك، تمت إضافة فئةTextLinkStyles
تتيح تصميم الروابط كمَعلمة إلى عنصر Text composable. (I31b93) - تم استبدال
onDragStarted
وonDragStopped
بطلبات إعادة الاتصال التي لا تتضمّن تعليقًا. (I59de8)
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى تعطُّل Pager عندما يكون
contentPadding
أكبر من القيود الواردة. يفرض Pager الآن القيم السالبة التي يتم عرضها من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)
تغييرات واجهة برمجة التطبيقات
- يمكن الآن وضع علامة "عاجل" على طلبات prefetch التي تبلغ
LazyLayout
، ما يعني أنّنا نتوقع أن يكون هذا العنصر مطلوبًا في اللقطة التالية ونريد تجاهل ميزانية اللقطة للتأكّد من إنجاز المزيد من العمل مسبقًا (Id513f). - تمت إعادة تسمية
isPositionedByParentWithDirectManipulation
إلىintroducesFrameOfReference
. يُرجى العِلم أنّه يُحدث الآن التأثير العكسي، أي أنّ معظمLayoutCoordinates
تقدّم إطارًا مرجعيًا تلقائيًا، ولن تكون الخاصية خطأ إلا عند وضعها تحت التلاعب المباشر. للبحث عن موضع باستخدام العناصر التي تقدّم إطارًا مرجعيًا فقط، استخدِمpositionInLocalFrameOfReference(...)
. أوpositionInLocalLookaheadFrameOfReference
منLookaheadScope
(Ifc5f7) - تمت إعادة تسمية
onClicked
إلىonClick
فيLinkInteractionListener
(Iaa35c) - تغيير مقياس lambda للإجراء
getScrollViewportLength
وفقًا لملاحظات مجلس واجهة برمجة التطبيقات (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) - تمت إضافة ميزة prefetching (التحميل المُسبَق) للعناصر في
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). - عند طلب إحداثيات التنسيق، يمكنك الآن استخدام الوسيطة
excludeDirectManipulationOffset
لاستبعاد القيمة المُعدَّة من خلال تنسيقات العناصر الرئيسية التي وضعت عناصرها الفرعية باستخدامPlaceable.PlacementScope.withDirectManipulationPlacement
. وبالمثل، يمكن أن يضع الآن التنسيق الذي يغيّر موضع عناصره الفرعية بشكل متكرّر باستخدام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
بدلاً منها. إذا كنت تستخدم تنسيق Material، استخدِم العنصرTextDefaults
لإنشاء التعليق التوضيحي مع تطبيق تنسيق Material عليه (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) - يتم استبدال مصدرَي التفاعل Drag وFling بـ
UserInput
وSideEffect
لاستيعاب التعريف الموسّع لهذَين المصدرَين الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput
). (I40579)NestedScroll
- يمكنك تقديم
LocalBringIntoViewSpec
، وهو سلوك التمرير بالتركيز الذي يعتمد على النظام الأساسي ويتم تطبيقه في طبقة المُعدِّل القابل للتمرير. (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) - تم توفير ميزة تجريبية لقطات الشاشة الطويلة في حاويات التمرير في ميزة "الإنشاء" باستخدام واجهة برمجة تطبيقات Android الرسمية (
ScrollCaptureCallback
). هذه الميزة تجريبية وقد لا تعالج حاليًا جميع الحالات بشكل صحيح. ولهذا السبب، تكون هذه الميزة غير مفعّلة تلقائيًا في الوقت الحالي. للموافقة، اضبط العلامةComposeFeatureFlag_LongScreenshotsEnabled
على true. ستتم إزالة هذا الشعار قبل الإصدار التجريبي 1.7. (I2b055، b/329296471) - تقديم واجهة برمجة تطبيقات
GraphicsLayer
جديدة لتوفير المزيد من المرونة في مواضع إعلاناتGraphicsLayer
وعرضها وتوفير ميزات العرض الأساسية بدون الحاجة إلى التنسيق مع عمليات التنفيذ القابلة للتجميع لتحديد نُسخ معدِّلاتGraphicsLayer
تغييرات واجهة برمجة التطبيقات
- أصبحت جميع مَعلمات
KeyboardOptions
لها قيمة غير محدّدة تلقائيًا. تمّت إضافة طريقةKeyboardOptions.merge
. - تمت إعادة تسمية
KeyboardOptions.autoCorrect
إلىautoCorrectEnabled
وجعلته قابلاً للتغيير، حيث تشير القيمة null إلى عدم تحديد أي قيمة. (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
الآن القيمة null للتمكن من محو الحافظة. (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 وحالات استخدام أخرى منخفضة المستوى لتكنولوجيا IME. تم إيقافPlatformTextInputTestOverride
نهائيًا. (I862ed، b/322680547) - تقسيم
restrictedConstraints()
إلى طريقتَين:fitPrioritizingWidth()
وfitPrioritizingHeight()
(I6d7fd)
المساهمة الخارجية
- تمت إضافة واجهتَي برمجة تطبيقات جديدتَين
isLastScrollForward
/isLastScrollBackward
للتحقّق من اتجاه الانتقال إلى أعلى أو أسفل للاطّلاع على آخر إجراء للانتقال إلى أعلى أو أسفل، وسيتم عرض قيمة خاطئة في حال عدم تنفيذ أي إجراء للانتقال إلى أعلى أو أسفل بعد. (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
لنتمكّن من توجيه معلومات عن المكوّنات التي يتم التمرير فيها في وضع الإنشاء إلى نظام تسهيل الاستخدام. تطبّق قائمة المحتوى هذه أيضًا استخدام السمة المذكورة في قوائم Foundation القابلة للتنقّل. (Ic5fa2) - تمت إعادة تسمية
BasicTextField2
إلىBasicTextField
. (Ie5713) - أصبح الإصدار
FocusRequester.createRefs
ثابتًا الآن (I4d92c، b/261436820). - تمّ تقديم
DelegatableNode.scrollIntoView()
للسماح لعقد المُعدِّلات بإجراء طلباتscrollIntoView
مباشرةً. (I2b3b7، b/299939840) - تمّ تقديم
DelegatableNode.requireView()
للسماح لعقد المُعدِّلات بالحصول علىView
Android الحالي بدون قراءة تركيبة محلية. (I40768) - تقديم معلومات التنسيق السياقي ضمن نطاق صف "التنقّل السياقي" ونطاق عمود "التنقّل السياقي"، مع عرض فهرس السطر والموقع والقيود المفروضة على الحد الأقصى للعرض والارتفاع للبقاء في موضع محدّد قد يتم نقل العناصر التي تتجاوز الحد الأقصى للعرض/الارتفاع إلى السطر التالي أو حذفها استنادًا إلى إعدادات العناصر الزائدة. (Id13f8، b/292114798)
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي في ظروف معيّنة إلى حدوث تعطُّل عند تبديل سمات
enabled
أوreadOnly
فيTextField
. (Iae17b)
الإصدار 1.7.0-alpha03
21 شباط (فبراير) 2024
تم إصدار androidx.compose.foundation:foundation-*:1.7.0-alpha03
. يحتوي الإصدار 1.7.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّ تقديم
DelegatableNode.requireLayoutCoordinates()
كطريقة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في عنصر بنفسك. (Ia8657) - تمّ تقديم
DelegatableNode.currentLayoutCoordinates
كطريقة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في عنصر بنفسك. (Iaebaa) - تحسينات الأداء في
DraggableAnchors
المستخدَمة من قِبلAnchoredDraggable
(I89cff) - تم نقل
BasicTextField2
وواجهات برمجة التطبيقات ذات الصلة ضمن حزمةandroidx.compose.foundation.text2
إلىandroidx.compose.foundation.text
. (I9f635) - لم تعُد
BasicTextField2
تقبل مَعلمةCodepointTransformation
. استخدِمBasicSecureTextField
أوOutputTransformation
. (Id34ff) - تمت إضافة طريقة لمقارنة التعليقات التوضيحية لصفحتَي
AnnotatedStrings
فقط. (I32659) - نقدّم لك
ContextualFlowRow
وFlowRow
/Column
المحسّنَين معMaxLines
وOverflow
. يسرّنا الإعلان عن تحسينات علىFlowRow
وFlowColumn
التجريبيتين، اللتين تتضمّنان الآنmaxLines
ودعم المحتوى الزائد، إلى جانب طرحContextualFlowRow
وContextualFlowColumn
لأول مرة. تم تصميم هذا التعديل لتقديم مكوّنات فعّالة، حيث يكونContextualFlow*
مثاليًا لعدد كبير من العناصر التي تستخدِم إعداداتmaxLines
صغيرة وزرّات عرض المزيد الديناميكية التي تتضمّن الرمز +N، ويكونFlowRow
وFlowColumn
مثاليَين لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRow
أوFlowColumn
حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تلائم الحد الأقصى للمحور المتقاطع، اضبطoverflow
علىFlowRowOverflow.Visible
أوFlowColumnOverflow.Visible
أثناء الإعداد. يمكنك الاطّلاع علىContextualFlowRowSample
وFlowRowSample
للحصول على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082)
إصلاح الأخطاء
- لم تعُد الصورة المتحركة للمؤشر تطلب عرض الإطارات بين حالتَي التفعيل والإيقاف. (Ia2253)
- ستنسخ الآن وظائف إنشاء النُسخ المتوقّفة نهائيًا في
KeyboardOptions
جميع السمات بشكل صحيح. (If12de)
الإصدار 1.7.0-alpha02
7 شباط (فبراير) 2024
تم إصدار androidx.compose.foundation:foundation-*:1.7.0-alpha02
. يحتوي الإصدار 1.7.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم ترقية
HorizontalPager
وVerticalPager
وPagerState
إلى الإصدار الثابت. (I67660، b/316966909) - تمت إضافة
LocalTextLinkStyle
تركيبة محلية تتيح تغيير نمط الروابط في النص في جميع أنحاء التطبيق. إذا كنت تستخدم مظهرك الخاص في التطبيق، يجب ضبط هذه التركيبة المحلية وفقًا لمظهرك. عند استخدام مظهر Material، سيتم ضبط لون الرابط تلقائيًا على اللون الأساسي لمظهر Material. (I7eb10) - تمّ تقديم المُعدِّل
receiveContent
الذي يقدّم للمطوّرين طريقة لتلقّي محتوى غني في Jetpack Compose. - يتم دمج
receiveContent
معBasicTextField2
لقبول المحتوى الغني الذي تقدّمه لوحة المفاتيح البرمجية، أو من خلال إجراء لصق الحافظة. (I81b72) - في هذا التغيير، سنستبدل
SnapFlingBehavior
بـTargetedFlingBehavior
في شريط التنقّل لتوفير حالات استخدام أخرى وتقديم مرونة أكبر. (I762ea) - في إطار هذا التغيير، سنجعل واجهات برمجة التطبيقات الخاصة بميزة "التجميع" مستقرة. نعمل أيضًا على إزالة بعض التعليمات البرمجية للاختبار وإضافة المزيد من العيّنات إلى ميزة "التثبيت". (Id8da9)
- يمكنك استخدام
TargetedFlingBehavior
، وهوFlingBehavior
يتيح نشر معلومات عن حالة الصورة المتحركة الجارية وقيمة الإزاحة المستهدفة لانتقال الصفحة. (I6a207)
إصلاح الأخطاء
- يحافظ
BasicTextField2
الآن على ظهور المؤشر أثناء الكتابة عندما يتم التمرير بعيدًا عن منطقة العرض أو عندما يتم نقله بعيدًا عن منطقة العرض بسبب الإدخال. (Ieb856، b/237190748)
المساهمة الخارجية
- إضافة واجهة برمجة تطبيقات تجريبية لضبط سلوك التحميل المُسبَق لقوائم LazyLists (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
واستخدامها، ننصحك بإرسال القيمة null.
تغييرات واجهة برمجة التطبيقات
- أدخِل
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
للدمج مباشرةً مع واجهات برمجة تطبيقات IME الخاصة بالنظام الأساسي بدلاً من ذلك. (aosp/2862698) - تم إيقاف
Indication#rememberUpdatedInstance
نهائيًا. ويؤدي ذلك إلى انخفاض كبير في الأداء لا يمكن تجنّبه، كما يمنع إجراء تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقاتIndicationNodeFactory
API الجديدة.
إصلاح الأخطاء
- سيتحقّق
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)
- حلّ مشكلة موضع العناصر التي لا تملك حجمًا في بداية الشبكة المموّهة (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
لتسهيل إضافة مكوّنات مستندة إلى السطح في وضع "الإنشاء". - تغييرات وتحسينات متنوّعة على واجهة برمجة التطبيقات في
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
للقبول من جلسة سحب وإفلات. تعرض دالة lambda هذه قيمةDragAndDropTarget
صالحة إذا كنت مهتمًا بجلسة سحب وإفلات. تم استبدال دالات lambda الأخرى لمعالجة أحداث السحب بهذه الدالة.تمت إضافة دالة
DragAndDropTarget
في المصنع لتلقّي البيانات من جلسات السحب والإفلات (Iebf3a).يؤدي عرض
startDragImmediately
فيAnchoredDraggable
إلى التحكّم في رصد إيماءات السحب عند استخدامها. من المفيد ضبطه عندما يتحرك التطبيق المصغّر بشكل متحرك إلى عنصر ربط مستهدف. راجِع النموذج. (Ie6d13، b/285139987)أصبحت واجهات برمجة التطبيقات الخاصة بميزة "التلميحات" الأساسية
@ExperimentalFoundationApi
(I30b0b)تمت إزالة
DragAndDropInfo
كنوعDragAndDropModifierNode.drag
يأخذ الآن مَعلماتtransferData
وحجم الزخرفة وزخرفة السحبDrawScope
lambdaيحتوي
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) - حلّ مشكلة التوافق الثنائي مع تغيير "موضع النافذة" (Iee695)
- أزِل طبقة Material Core لشريحة/زر Material3 لأنّ الاختبارات الدقيقة تُظهر أداءً أفضل بدونها. (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
فيModifier.dragAndDrawSource
إلىdrawDragDecoration
، وتمّت إعادة تسمية مَعلمة size فيDragAndDropInfo
إلىdragDecorationSize
. (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 على هذه المراجعات.
الميزات الجديدة
- عناصر لفّ جديدة قابلة للتجميع لـ
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
. يجب إجراء عملية الحساب باستخدام معلومات التنسيق وتقديمها من خلال النهج أو Offsets (إزاحة) الربط. (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) - أصبحت واجهة برمجة التطبيقات Canvas التي تقبل
contentDescription
واجهة برمجة تطبيقات ثابتة. (Ib3d29) - تمّ تقديم
viewportSize
فيScrollState
، وهي طريقة لمعرفة حجمviewPort
للمكوّن الذي يستخدمScrollState
بعد إجراء القياس. (I8b85a، b/283102682) - تم إصلاح مشكلة عدم تطابق التحميل المُسبَق في Pager مع السلوك في Views. (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
الآن قيمة delta للتحريك في المَعلمة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
. تم تغيير التحميل الزائد للسمة scrollable لقبول مثيل منBringIntoViewCalculator
اختياريًا. (Iaf5af)
إصلاح الأخطاء
- تمت إضافة عملية تحقّق من الأخطاء لتحذيرك في حال إنشاء
MutableInteractionSource
في التركيب بدون تذكُّره، تمامًا مثل عمليات تحقّق الأخطاء لإنشاء حالة قابلة للتغيير /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
، ما قلّل من الوقت المستغرَق في الإنشاء الأولي. - تحسينات على ثبات صفحات الفوترة تمّت معالجة العديد من الأخطاء.
- أصبحت مَعلمات
pageCount
متوفّرة الآن فيPagerState
بدلاً من Pager نفسها.
الإصدار 1.5.0-rc01
26 تموز (يوليو) 2023
تم إصدار androidx.compose.foundation:foundation-*:1.5.0-rc01
. يحتوي الإصدار 1.5.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
يتوفّر فحص اختياري لاقتراح نقل طلبات
mutableStateOf()
إلى الأنواع المخصّصة لها من العناصر الأساسية. رقم تعريف أداة تصحيح الأخطاء هو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
لوحدة التخزين المؤقت للصفحات ودالة مساعدة لاحتساب إزاحة صفحة معيّنة. (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)
إصلاح الأخطاء
- لم تعُد عمليات طلب الحصول على الدلالات في Text تتعطل عندما تحتوي القيود على
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 على هذه المراجعات.
يتيح هذا الإصدار حِزمة عرض النص الجديدة لميزة "الإنشاء". تم تحسين أداء الحزمة الجديدة، ومن المفترض ألا تلاحظ أي تغييرات مرئية.
إذا لاحظت تغييرات في النص المعروض، يمكنك تصحيح الأخطاء من خلال ضبط NewTextRendering1_5 = false
لتأكيد اختلاف السلوك. سيؤدي ضبط هذا الخيار إلى إعادة تركيب المحتوى. يُرجى الإبلاغ عن أي اختلافات في السلوك على أنّها أخطاء.
ستتم إزالة علامة تصحيح الأخطاء قبل إصدار 1.5 beta01.(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)
إصلاح الأخطاء
- سيؤدي الآن إجراء الدلالات
SetText
فيBasicTextField
إلى تعديل مخزن النصوص باستخدام مسار الرمز البرمجي نفسه الذي تستخدمه تعديلات IME ودوال الاختبار (مثلperformTextReplacement
). - تستخدم الآن دوال اختبار النصوص
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) - المزيد من أنواع/قيم القيمة الخالية للدوالّ المضمّنة/المخفية غير المُستخدَمة (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
. هنا تم الإبلاغ عن المشكلة في الأصل. تم إرسال حلّ لهذه المشكلة، وسيكون متاحًا في تحديث "الإنشاء" التالي. كحل بديل، يمكنك تحديث مكتبتَيandroidx.compose.material
وandroidx.compose.material3
إلى أحدث إصدار(1.1.0-alpha04) أو الرجوع إلى إصدارandroidx.compose.foundation
1.4.0-alpha03.
الإصدار 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
إلا بعد انتهاء تشغيل جميع عمليات استدعاء الإطارات. ويطابق هذا السلوك سلوك ميزة "الإنشاء" عند تشغيلها بشكلٍ طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. من المفترض ألا يؤثر ذلك إلا في الرمز البرمجي الذي يستدعيwithFrameNanos
أوwithFrameMillis
مباشرةً، والذي يتضمّن منطقًا خارج ردّ الاتصال ويتم تمريره إلى تلك الدوالّ التي قد تحتاج إلى نقلها داخل دوالّ ردّ الاتصال. يمكنك الاطّلاع على التغييرات في اختبار الصور المتحركة في هذا الرابط للحصول على أمثلة. - تمت إضافة المَعلمة الاختيارية
onPerformTraversals: (Long) -> Unit
إلى دالة الإنشاءTestMonotonicFrameClock
ودالة المصنع لتشغيل الرمز البرمجي بعد وظائف ردّ الاتصالwithFrameNanos
ولكن قبل استئناف عمليات التشغيل المتعدّد للوظائف المجدولة للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670) - أدرِج إجراءات تسهيل الاستخدام في الصفحة:
PageUp
وPageDown
وPageLeft
وPageRight
. يُرجى العلم أنّ هذه العناصر لا تتوفّر إلا من واجهة برمجة التطبيقات 29. (Ida4ab) - يمكنك استخدام
HorizontalPager
وVerticalPager
، وهما طريقتان لعرض العناصر القابلة للتجميع بطريقة تنقّل بين الصفحات. تمّ تقديمPagerState
للتحكّم في صفحات الفوترة بالإضافة إلى طلب معلومات عن الحالة الحالية لصفحة الفوترة. تمّ تقديمPageSize
، وهي طريقة للتحكّم في حجم صفحة "الصفحات التالية"، ويمكن استخدامها لإنشاء لوحة عرض دوّارة مثل "الصفحات التالية". تمّ تقديم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* (I12197) - تمّت إضافة مَعلمة في واجهات برمجة التطبيقات لتحميل العناصر خارج إطار العرض وعرضها (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
لتحديد مستوى تقدّم الرسوم المتحركة ومعرفة موضع IME بعد اكتمال الرسوم المتحركة. (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) - تمت إضافة شرطة جديدة تجريبية في واجهة برمجة التطبيقات لتفعيل ميزة تقسيم الكلمات تلقائيًا في النص (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
لمطابقة دوالّ الانتظار الأخرى (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
في رمز إدارة IME. (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
إلى أداة تتبُّع السرعة، سنأخذ الآن في الاعتبار الاختلافات بدلاً من المواضع، ما سيضمن احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا كان العنصر المستهدَف يتحرك (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
كإصدار تجريبي. يمكنك تحديد تأثيرات مخصّصة للانتقال السريع للأعلى أو للأسفل، بالإضافة إلى إضافة تأثير معيّن على مستوى المنصة إلى الحاويات المخصّصة القابلة للانتقال. - تمّت إتاحة واجهات برمجة التطبيقات لإمكانية التشغيل التفاعلي للتنقّل المُدمَج للسماح بإمكانية التشغيل التفاعلي بين طرق العرض وإنشاء عناصر التنقّل.
- تمت إضافة ميزة التمرير باستخدام الماوس ولوحة اللمس إلى جميع الحاويات التي تتيح التمرير.
الإصدار 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 باستخدام طرق الواجهات التلقائية في jdk8 (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 القابلة للتجميع حسب الفهرس، أصبح لدينا الآن عنصر دالة قابلة للتجميع أبسط يقبل الفهرس. (Id2196) - تمت إعادة تسمية LazyLayoutItemsProvider إلى LazyLayoutItemProvider (I0638c)
- تمت إعادة تسمية "
LazyLayoutItemsProvider.itemsCount
" إلى "itemCount
" (Id409c) - تمت إضافة أداة الفرشاة إلى
TextStyle
وSpanStyle
لتوفير طريقة لرسم نص باستخدام ألوان متدرجة. (I53869، b/187839528) - تم تغيير سمتَي
trimFirstLineTop
وtrimLastLineBottom
فيLineHeightBehavior
إلى سمة مصنّفة واحدة:LineHeightTrim
. تحتوي السمةLineHeightTrim
على قيم 4 حالات محدّدة بعنصرَين منطقيَّين:FirstLineTop
وLastLineBottom
وكلاهما وبدون (Ifc6a5 وb/181155707) تمت إضافة
LineHeightBehavior
إلىTextStyle
وParagraphStyle. LineHeightBehavior
للتحكّم في ما إذا كان سيتم تطبيق ارتفاع السطر على أعلى السطر الأول وأسفله. ويحدِّد أيضًا محاذاة السطر في المساحة التي يوفّرهاTextStyle
(lineHeight
).على سبيل المثال، من الممكن الحصول على سلوك مشابه لما تحدّده CSS من خلال
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.لا تعمل إعدادات
trimFirstLineTop
وtrimLastLineBottom
بشكلٍ صحيح إلا عندما يكونincludeFontPadding
خطأ. (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
لتضمين الفاصل العشري في IME على وجه التحديد. (Iec4c8، b/209835363) - أضِف وصف خط جديدًا Font(DeviceFontFamilyName) لمحاولة البحث عن الخطوط المثبَّتة على النظام بشكل اختياري أثناء سلاسل الخطوط الاحتياطية. (I30468، b/219754572)
- أصبحت واجهتا برمجة التطبيقات
PointerEventType.Scroll
وPointerEvent.scrollDelta
ثابتتَين الآن (I574c5 وb/225669674). - يمكن تغيير إعدادات التوافق المؤقتة التي تمت إضافتها لـ
includeFontPadding
فيTextStyle/ParagraphStyle. includeFontPadding
من خلالTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. هذا خيار إعداد مؤقت لتفعيل نقل البيانات وسيتمّت إزالته. (If47be، b/171394808) - تم تعديل
FontFamily.Resolver
لدمج إعداد تسهيل الاستخدام للنص الغامق على مستوى النظام (I6c1e7) - تسمح خاصية إضافة
consumeWindowInsets
فيComposeView
للمطوّرين بإيقاف استخدام Android WindowInsets. ويسمح ذلك لكلComposeViews
منفصل في التسلسل الهرمي بتطبيقWindowInsets
بدون التأثير في بعضها. (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
إذا كان اتجاه التنسيق الحالي هو RTL. (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)
المساهمة الخارجية
- تم تعديله لاستخدام Kotlinx coroutines 1.6.0 (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) - إتاحة تحميل الخطوط بشكل غير متزامن في Text (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
التي تتيح إعداد تقارير وقت الترجمة عند استدعاء دالة مركّبة تستهدف عامل تطبيق لم يتم تصميمها لاستخدامه.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لـ compiler compose، لذا يجب استخدام هذه التعليقات التوضيحية مباشرةً بشكلٍ نادر . وتشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة أو وظائف قابلة للإنشاء مجردة (مثل methods الواردة في الواجهة) أو حقول أو متغيّرات عالمية هي دالات لامبدا قابلة للإنشاء (يتم استنتاج المتغيّرات المحلية والمَعلمات)، أو عند استخدام
ComposeNode
أو وظائف قابلة للإنشاء ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب أن تضيف الدوالّ القابلة للتجميع التي تستدعي دالة
ComposeNode
أوReusableComposeNode
تعليقًا توضيحيًاCompoableTarget
للدالة وأي أنواع مَعلمات LAMBDA قابلة للتجميع. ومع ذلك، ننصح بإنشاء تعليق توضيحي تمّت الإشارة إليه باستخدامComposableTargetMarker
ثمّ استخدام التعليق التوضيحي الذي تمّت الإشارة إليه بدلاً منComposableTarget
مباشرةً. إنّ التعليق التوضيحي القابل للتجميع الذي يحمل العلامةComposableTargetMarker
يعادلComposbleTarget
مع الاسم المؤهَّل بالكامل لفئة السمة كمَعلمة المُطبِّق. للحصول على مثال على استخدامComposableTargetMarker
، يُرجى الاطّلاع علىanroidx.compose.ui.UiComposable
. (I38f11)
إصلاح الأخطاء
- يُسمح الآن بتمرير Offsets سلبية للانتقال إلى الأعلى أو الأسفل في
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
الآن الطلبات إلىBringIntoViewRequester
Android View المستضيف. (Ia7a51) - تتوفّر الآن
FontFamilyResolver
من خلالLocalFontFamilyResolver.current
- تمت إضافة
createFontFamilyResolver(context)
وcreateFontFamilyResolver(context, coroutineScope)
لإنشاء معالجين جديدين FontFamily خارج نطاق استخدام ميزة "الإنشاء". - يأخذ كلّ من Paragraph وMultiParagraph الآن
FontFamily.Resolver
- يحتوي
TextLayoutResult.layoutInput.fontFamilyResolver
الآن على برنامج التحديد المستخدَم لهذا التنسيق، والذي تم إيقافه نهائيًاTextLayoutResult.layoutInput.resourceLoader
لأنّه لم يعُد مُستخدَمًا. (Id5a45، b/174162090)
- تمت إضافة
- تمت إضافة
AndroidFont
، وهي واجهة برمجة تطبيقات جديدة من المستوى الأدنى لتوفير أنواع جديدة من أوصاف موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خلفية خاصة بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز بشكل اختياري، أو تحميل خط من مورد لا يوفّره مصانع الخطوط الحالية.- تم توسيع واجهة برمجة التطبيقات
Font.ResourceLoaded
لإتاحة تحميلFont.ResourceLoaded
بشكل اختياري وبدون تسلسل. لا يُنصح لمطوّري التطبيقات باستخدام واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، اطّلِع على AndroidFont. - تسمح دالة إضافة
Font.AndroidResourceLoader
بإنشاءFont.ResourceLoader
خارج التركيب. - تمت إضافة المَعلمة
loadingStrategy
إلى الخطوط المستندة إلى الموارد، للسماح بالتحميل غير المتزامن عندما يشير خط المورد إلى ملف XML للخطوط القابلة للتنزيل. (Ie5aea، b/174162090)
- تم توسيع واجهة برمجة التطبيقات
- تم إيقاف طريقة وضع تصميم
Typeface(FontFamily)
نهائيًا. كان يتم استخدام هذه الميزة في السابق لتحميل الخطوط مسبقًا، وقد يستغرق ذلك ما يصل إلى 10 ثوانٍ في حال استخدام خطوط قابلة للتنزيل. في حال استخدام الخطوط القابلة للتنزيل، قد يتم حظر هذا الطلب لمدة 10 ثواني. استخدِمFontFamilyResolver.preload
instead.- تم إيقاف
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
من تطبيق "مساعد Google" لأجهزة الكمبيوتر المكتبي نهائيًا - مصنع
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
إلى الطرق التي تُعدّ مثيلًا مفعّلاً للطرق الحالية بدون منطق معقّد. يقلل ذلك من عمليات التحقّق من ميزة "تذكُّر القيم" (العمليات التي تساوي) التي ينشئها المُجمِّع لجميع المَعلمات التي تتم تكرارها في الدالة الداخلية التي يتمّ استدعاؤها. (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
- تحسينات على حجم أهداف اللمس
- تجدر الإشارة إلى أنّه بالنسبة إلى Compose 1.0، ستوسّع مكونات Material مساحة التنسيق لاستيفاء إرشادات تسهيل الاستخدام في Material لحجم مساحة اللمس. على سبيل المثال، سيتم توسيع ناحية اللمس المستهدَفة للزرّ إلى الحدّ الأدنى من الحجم 48x48dp، حتى إذا ضبطت حجم الزرّ على قيمة أصغر. يؤدي ذلك إلى مواءمة Compose Material مع السلوك نفسه لمكونات Material Design، ما يضمن سلوكًا متسقًا في حال خلط Views و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 على هذه المراجعات.
إصلاح الأخطاء
- يُسمح الآن بتمرير Offsets سلبية للانتقال إلى الأعلى أو الأسفل في
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 API التي تتيح لك إرسال طلب إلى الوالدَين لتحريك الشاشة إلى أن يظهر عنصر معيّن (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 API التي تتيح لك إرسال طلب إلى الوالدَين لتحريك الشاشة إلى أن يظهر عنصر معيّن (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 على هذه المراجعات.
الميزات الجديدة
- تم تعديل Compose
1.1.0-alpha03
ليصبح يعتمد على Kotlin1.5.30
. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تأثير الإضاءة للانتقال للأعلى أو للأسفل. تمت إضافة واجهة برمجة التطبيقات التجريبية الجديدة OverScrollConfiguration API للسماح بضبط التأثير المرئي لميزة "الانتقال السريع للأسفل أو للأعلى". أدخِل قيمة فارغة لإيقاف تأثير التمرير السريع. (I0c304، b/171682480)
- تتضمّن AwaitPointerEventScope الآن withTimeout() وwithTimeoutOrNull() (I507f0، b/179239764، b/182397793)
- تمت إضافة طريقة اختبار للحصول على الحدود المقتطعة. (I6b28e)
- تمت إضافة الحد الأدنى لحجم مساحة اللمس المستهدفة إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان تسهيل الاستخدام. (Ie861c)
الإصدار 1.1.0-alpha02
18 آب (أغسطس) 2021
تم إصدار androidx.compose.foundation:foundation:1.1.0-alpha02
وandroidx.compose.foundation:foundation-layout:1.1.0-alpha02
. يحتوي الإصدار 1.1.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إصدارات DpSize لنظامَي التشغيل
Modifier.size
وrequiredSize
(I3fc7e وb/194219828)
الإصدار 1.1.0-alpha01
4 آب (أغسطس) 2021
تم إصدار androidx.compose.foundation:foundation:1.1.0-alpha01
وandroidx.compose.foundation:foundation-layout:1.1.0-alpha01
. يحتوي الإصدار 1.1.0-alpha01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم تعديل طريقة
DrawScope#drawImage
التي تستخدم مستطيلات المصدر والوجهة لاستخدام مَعلمة FilterQuality اختيارية. يكون ذلك مفيدًا للفن المكوّن من وحدات بكسل والذي يُفترض أن يظهر بوحدات بكسل عند تكبيره لعرضه على شاشة كبيرة. تم تعديل BitmapPainter وImage composable لاستخدام مَعلمة FilterQuality اختيارية أيضًا (Ie4fb0، b/180311607) - يُرجى العِلم أنّ TextField يُلغي التحديد الآن عند الضغط على زر الرجوع، وهو ما يتطابق مع سلوك EditText في Android. (I3ca16، b/174173645)
- أضِف اسم معرِّف المؤشر. (I07a82، b/173016579)
إصلاح الأخطاء
- تم الآن إضافة تأثيرات متحركة إلى التمرير من خلال إجراءات الدلالات للقوائم البطيئة الموسّعة ومكونات التمرير العادي (Id9066، b/190742024).
المساهمة الخارجية
- تقبل
LazyVerticalGrid
الآن مَعلمتَي الترتيب الأفقي والرأسي. (If9c92)
الإصدار 1.0
الإصدار 1.0.5
3 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.5
وandroidx.compose.foundation:foundation-layout:1.0.5
. يحتوي الإصدار 1.0.5 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح عطل في تتبُّع المثيلات derivedStateOf. (aosp/1792247)
الإصدار 1.0.4
13 تشرين الأول (أكتوبر) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.4
وandroidx.compose.foundation:foundation-layout:1.0.4
. يحتوي الإصدار 1.0.4 على هذه المراجعات.
تعديلات على التبعيات
- تم تعديلها لتصبح معتمدة على Kotlin
1.5.31
الإصدار 1.0.3
29 أيلول (سبتمبر) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.3
وandroidx.compose.foundation:foundation-layout:1.0.3
. يحتوي الإصدار 1.0.3 على هذه المراجعات.
تعديلات على التبعيات
- تم تعديلها لتصبح معتمدة على Kotlin
1.5.30
الإصدار 1.0.2
1 أيلول (سبتمبر) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.2
وandroidx.compose.foundation:foundation-layout:1.0.2
. يحتوي الإصدار 1.0.2 على عمليات الربط هذه.
تم تعديله ليتوافق مع إصدار 1.0.2
من تطبيق Compose. لا يزال الإصدار 1.0.2
من أداة الإنشاء متوافقًا مع الإصدار 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 على هذه المراجعات.
تعديلات على التبعيات
- تم تعديلها لتصبح معتمدة على Kotlin
1.5.21
.
الإصدار 1.0.0
28 تموز (يوليو) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.0
وandroidx.compose.foundation:foundation-layout:1.0.0
. يحتوي الإصدار 1.0.0 على عمليات الربط هذه.
الميزات الرئيسية في الإصدار 1.0.0
هذا هو أول إصدار ثابت من تطبيق Compose. يُرجى الاطّلاع على مدوّنة الإصدار الرسمية من تطبيق Compose للحصول على مزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم الإصدار 4 من Android Studio Bumblebee Canary أو الإصدار
7.1.0-alpha04
/7.1.0-alpha05
من AGP، قد تواجه الخطأ التالي: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 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تتيح Canvas الآن مَعلمة 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 semantics قيمًا مفردة، بل أصبحتا قائمتَين. يتيح ذلك دمجها كما هي بدلاً من عمليات التسلسل. تم أيضًا توفير واجهات برمجة تطبيقات اختبار أفضل للاستفادة من هذه التغييرات (Ica6bf وb/184825850).
- تم إيقاف
Modifier.focusModifier()
نهائيًا واستبداله بـModifier.focusTarget()
(I6c860) - تم استبدال قائمة KeyboardType بصفّة مضمّنة. (I73045، b/187055290)
- تم استبدال قائمة
FocusState
بواجهةFocusState
(Iccc1a، b/187055290) - تم استبدال قائمة ImeAction بصفّة مضمّنة. (I18be5، b/187055290)
- تم استبدال
AnnotatedString.withAnnotation
functions ب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 التي تؤثّر في الصف/العمود باستخدام ترتيبات متباعدة لتخطيط العناصر الثانوية ذات الأهمية. (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)
إصلاح الأخطاء
- لم يعُد الأطفال من النوع Row وColumn الذين لديهم
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 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة على واجهة FlingBehavior الآن باسم @Stable. يجب أن تكون جميع عمليات التنفيذ متوافقة مع عقد
@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
جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053) - تمت إضافة واجهة برمجة تطبيقات
LocalSoftwareKeyboardController
جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)
إصلاح الأخطاء
- فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29 وb/174531520)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.0-beta01
وandroidx.compose.foundation:foundation-layout:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على هذه المراجعات.
هذا هو الإصدار الأول من الإصدار التجريبي من Compose 1.0.0.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دالة الاستدعاء onStart إلى
detectDragGestures
(I67269، b/179995594) - لم تعُد المُعدِّلات لتحديد الحجم حسب السمات الأساسية تجريبية. (I15744)
- تمّت إزالة التأكيدات على dp (I798d2)
- تمت إزالة طلب الاستدعاء SoftwareKeyboardController من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
- تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy التي أصبحت واجهة ممتعة. تم تعديل واجهات برمجة تطبيقات Layout API أو تبسيطها لاستخدام 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)
- يعرِض العنصر القابل للوضع الآن 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 }
كمصنع التلقائي.لا ننصح باستخدام متغيرات محلية مع أنواع غير فارغة ما لم يكن بإمكانك توفير قيمة تلقائية معقولة. إذا لم تتوفّر قيمة تلقائية معقولة، من المفترض أن تُلقي دالة
defaultFactory
lambda استثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستخدِمي القيمة المحلية سيكون لديهم تبعية ضمنية لتقديمها لا يفرضها نظام الأنواع. (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 تجريبية.
- تمّت إزالة الدالة clearRoots من المستوى الأعلى
@TestOnly
. لم تعُد هذه الخطوة ضرورية. - تمّت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد هذه الخطوات ضرورية.
- تمت إزالة Composer.collectKeySourceInformation. لم تعُد هذه الخطوة ضرورية.
- تمّت إزالة الطُرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد هذه الخطوات ضرورية.
- تم نقل واجهات برمجة تطبيقات مختلفة من المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب الدلالات المتعلقة بفئة الملفات في Kotlin، سيؤدي ذلك إلى إيقاف التوافق مع الثنائيات ولكن ليس مع المصدر، لذا من المفترض ألا يشكّل ذلك مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
تم تعديل Modifier.scrollable. يستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473)
يقبل Modifier.draggable الآن DraggableState بدلاً من دالة lambda بسيطة. يمكنك إنشاء حالة من خلال
rememberDraggableState { delta -> }
للحصول على السلوك نفسه كما في السابق (Ica70f، b/175294473).تمّت إضافة المُعدِّلات requiredWidth(IntrinsicSize) وrequiredHeight(IntrinsicSize) للحجم المطلوب إلى الأحجام الأساسية. (I0a6b4)
تمت إزالة العنصر
emptyContent()
الذي تم إيقافه نهائيًا. استخدِم{}
بدلاً من ذلك. (Idb33f، b/179432510)تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات جديدة لـ LocalSoftwareKeyboardController محليًا API لاستبدال واجهة 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 الآن تذكُّر المفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل دالة التشغيل المتعدّد لرصد إدخال المؤشر لأجل التبعيات الجديدة. (I849cd)
- تعديل على الاختبار: ستبحث الدالة hasText() عن نصوص الإدخال والنص التعريفي/التلميح/العنصر النائب في الحقل النصي (Iab803).
- تمت إضافة PaddingValues.Absolute ويمكن استخدامه في واجهات برمجة التطبيقات التي تقبل PaddingValues. (Ia5f30)
- تم إيقاف الإجراء onImeActionPerformed نهائيًا. استخدِم KeyboardActions بدلاً منه (If0bbd، b/179071523).
- لمطابقة اصطلاحات التسمية بشكل أفضل مع ImageBitmap وImageVector، تم إعادة تسمية ImagePainter ليصبح BitmapPainter للتوازي مع VectorPainter. (Iba381، b/174565889)
- تحسين واجهات برمجة التطبيقات لاختبار السلسلة الفرعية باستخدام السلسلة الفرعية الآن كوسيطة (Icbe78)
- تمّ تقديم
InfiniteAnimationPolicy
عنصر سياق coroutine الذي سيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء الاختبارات باستخدام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 تأخذ الآن لامدا التي تعرض قيمًا عائمة بدلاً من القيم العائمة المباشرة. (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).تمت إعادة تسمية الخلفيات المتغيرة لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كان يُطلق على الخلفيات اسم AmbientFoo، والآن يُطلق على CompositionLocals اسم LocalFoo. (I2d55d)
تم نقل التحديد إلى الأساس. (I7892b)
على غرار الطريقة التي أزلنا بها سابقًا
state { 0 }
composable وبدأنا الآن الترويج لاستخدامremember { mutableStateOf(0) }
، سنزيلsavedInstanceState { 0 }
composable. يجب استخدام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 من left/right إلى start/end لتمكين ميزة "المرآة التلقائية" للشكل في الاتجاه rtl. تمّ تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يكون فيها المطلوب هو النسخ المطابق التلقائي. (I61040، b/152756983)
تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
تمّت إعادة صياغة واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمحرِّر Compose لاستخدام واجهة بدلاً من فئة محدّدة. لم تعُد الواجهة تستخدم أيضًا مَعلمة type.
هذا تغيير داخلي من المفترض ألا يؤثر في توافق ملف رمز المصدر، ولكنه تغيير يؤدي إلى إيقاف تشغيل الإصدار الثنائي. (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()
. [ملخّص]يتم الآن استخدام ComposeView بشكل تلقائي لإنشاء أدوات إعادة تركيب على مستوى النافذة يتم إنشاؤها بشكل بطيء ويتم تشغيلها من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب وعلامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)يوفّر Recomposer.runningRecomposers الآن مسار StateFlow عالميًا لـ RecomposerInfo للقراءة فقط من أجل مراقبة حالة الإنشاء الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current() التي تم تجاهلها الآن. (If8ebe)
الإصدار 1.0.0-alpha11
28 كانون الثاني (يناير) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha11
وandroidx.compose.foundation:foundation-layout:1.0.0-alpha11
. يحتوي الإصدار 1.0.0-alpha11 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
إيقاف scrollBy غير المعلّق نهائيًا، وإزالة scrollTo غير المعلّق نهائيًا
ننصحك الآن باستخدام دوال التعليق للتحكّم في الانتقال للأعلى أو للأسفل والانتظار لإنهاء الانتقال. ونحن بصدد إيقاف نهائي و/أو إزالة الإصدارات غير المعلّقة من هذه الدوالّ كجزء من عملية النقل هذه. (Ie9ced)
إيقاف دالة smoothScrollBy غير المعلّقة نهائيًا ننصح الآن باستخدام دوالّ المعلّقة للتحكّم في الانتقال للأعلى أو للأسفل والانتظار لإنهاء الانتقال. ونحن بصدد إيقاف الإصدارات غير المعلّقة من هذه الدوال نهائيًا كجزء من عملية النقل هذه. (I12880)
تمت إضافة مَعلمة وصف المحتوى إلى "الصورة" و"الرمز". يتم استخدامه لتوفير وصف لخدمات تسهيل الاستخدام (I2ac4c).
تلقّى BasicTextField مَعلمة جديدة باسم decorationBox. يسمح هذا الإجراء بإضافة الزخارف مثل الرموز والعنصر النائب والعلامة وما شابه ذلك إلى الحقل النصي وزيادة مساحة الاستهداف التي يصيبها. (I16996)
تمّت إزالة المَعلمة canDrag من Modifier.draggable (Ic4bec، b/175294473)
تمت إزالة AnimatedFloat.fling الذي يقبل FlingConfig. يُرجى استخدام suspend Animatable.animateDecay بدلاً من ذلك. (I4659b، b/177457083)
تمت إزالة
data class
من الصفوف التالية:- InlineTextContent
- LocaleList
- (I605c7)
يمكن الآن إنشاء عناصر قابلة للنقر والتبديل والاختيار خارج التركيب (I0a130 وb/172938345 وb/175294473)
تم إيقاف عنصرَي ScrollableColumn/Row نهائيًا. إنّ استخدام ScrollableColumn أقل فعالية مقارنةً بـ LazyColumn عندما يكون لديك محتوى كبير قابل للتمرير، لأنّه باستخدام LazyColumn يمكننا فقط إنشاء/قياس/رسم العناصر المرئية. لمنع المستخدمين من استخدام طريقة غير فعّالة، قرّرنا إيقاف ScrollableColumn وScrollableRow نهائيًا وتعزيز استخدام LazyColumn وLazyRow بدلاً من ذلك. سيظل بإمكان المستخدمين تحديد أنّهم لا يحتاجون إلى السلوك البطيء واستخدام عوامل التعديل مباشرةً على النحو التالي: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b، b/170468083)
طريقة إنشاء
items(count: Int)
جديدة لنطاق LazyColumn/LazyRow/LazyVerticalGrid أصبحت الدالتانitems(items: List)
وitemsIndexed(items: List)
الآن دوالّ إضافية، لذا عليك استيرادهما يدويًا عند استخدامهما. وظائف إضافية جديدة للصفائف: items(items: Array) وitemsIndexed(Array) (I803fc، b/175562574)تمت إزالة AbsoluteArrangement المتوقّفة نهائيًا. (Iffa96، b/177641870)
تمت إضافة المَعلمة propagateMinConstraints إلى المربّع لتحديد ما إذا كان يجب تمرير الحدّ الأدنى من القيود الواردة إلى محتوى المربّع أم لا. القيمة التلقائية هي false. (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).
أصبحت الكثافة الآن نطاق المستلِم لواجهات الترتيب. (I18aad)
يقبل TextFieldValue AnnotatedString. ومع ذلك، فإنّه تغيير في واجهة برمجة التطبيقات فقط، ولم يتم تنفيذ ميزة تعديل النصوص بأشكال متعددة حتى الآن.
- تمت إزالة
initial
من مَعلمات أداة إنشاء EditingBuffer. (I326d5)
- تمت إزالة
تم إيقاف invalidate وcompositionReference() نهائيًا الآن لصالح currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)
تم تغيير AnnotatedString لتصبح ممتدة من kotlin.CharSequence. وبالتالي، أصبحت length وsubSequence الآن دوالًا فردية، وتمت إزالة دوال التوسيع. (Iaf429)
سيتم استبدال Duration وUptime بـ Long milliseconds، وتؤدي هذه الخطوة إلى إزالة الاعتماد على إدخال المؤشر في هذين الصنفين. (Ia33b2، b/175142755، b/177420019)
يحلّ RememberObserver محلّ CompositionLifecycleObserver ، وقد تم إيقاف CompositionLifecycleObserver نهائيًا.
RememberObserver
هو بديل لمحاولةCompositionLifecycleObserver
مع دلالات معدَّلة ومحاولة أساليب تمت إعادة تسميتها. يمكن إجراء عملية التبديل إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكُّرها مرة واحدة فقط، وهي الممارسة المُقترَحة باستمرار. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاءonRemembered
لكل مرجع يتم فيه استدعاءonEnter
مرة واحدة فقط. تم استدعاءonEnter
عدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثلWithConstraints
وScaffold
، ما يجعل الضمان الوحيد لonEnter
غير موثوق به وتمّت إزالته من أجلRememberObserver
.تضيف
RememberObserver
onAbandoned
التي يتمّ استدعاؤها إذا تمّت إعادة مثيلRememberObserver
من دالة الاستدعاء التي تمّ تمريرها إلىremember
ولكنّه لم يتمّ تذكره في حالة الإنشاء ، وبالتالي لن يتمّ استدعاءonRemembered
مطلقًا. يمكن أن يحدث ذلك إذا كان هناك استثناء ينهي عملية الإنشاء قبل اكتمالها أو يتم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تُنشئ عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كانت نسخةRememberObserver
التي تتّبع اقتراح المراجع الفردية أعلاه تتتبّع مرجعًا خارجيًا، يشير كلّ منonForgotten
وonAbandoned
إلى أنّه لم يعد هناك حاجة إلى المرجع. إذا كان الكائن يتتبّع العمل الذي بدأه أو الموارد التي تم تخصيصها فيonRemembered
، يمكن تجاهلonAbandoned
لأنّه لن يتم استدعاؤه في حال تم استدعاءonRemembered
. (I02c36)تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text
- لم تعُد TransformedText فئة بيانات (Ie672a)
لم تعُد الفئات التالية فئات بيانات:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
تمت إزالة الطرق التجريبية monotonicFrameAnimationClockOf (Ib753f وb/170708374)
تم إيقاف طُرق الإحداثيات العامة نهائيًا وتمت إنشاء طُرق جديدة للإحداثيات المستندة إلى النافذة. (Iee284)
يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction.
- يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
تم وضع علامة "تجريبية" على FocusRequester.createRefs لأنّه قد يتغيّر. (I2d898، b/177000821)
تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة عليها @ExperimentalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية stateDescriptionRange إلى progressBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontalScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)
تم تغيير VisualTransformation لتكون واجهة وظيفية (I3bba4)
الاستفادة من TestCoroutineDispatcher في الاختبار (I532b6)
تمّت إزالة PointerInputData وتعديل PointerInputChange لإعطائه جميع حقول PointerInputData. تمّ جعل PointerInputEvent وPointerInputEventData داخليَين لأنّهما لا يتم استخدامهما في أيّ واجهة برمجة تطبيقات علنية. (Ifff97، b/175142755)
تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)
أزِل displaySize لأنّه يجب تجنُّبه. من الأفضل عادةً استخدام حجم دالة onRoot() أو حجم النافذة على الأقل. (I62db4)
الإصدار 1.0.0-alpha10
13 كانون الثاني (يناير) 2021
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha10
وandroidx.compose.foundation:foundation-layout:1.0.0-alpha10
. يحتوي الإصدار 1.0.0-alpha10 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- لم تعُد فئة البيانات ImeOptions وKeyboardOptions متوفّرة (I3c898، b/168684531)
- التغييرات في VisualTransformation API
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم تعُد PasswordTransformation فئة بيانات.
- تم نقل OffsetMapping إلى ملفه الخاص
- (I0bdf3)
- التغييرات في واجهة برمجة التطبيقات EditOperations API
- تمت إعادة تسمية EditOperation باسم EditCommand
- تمت إضافة اللاحقة Command إلى عمليات التنفيذ الملموسة لـ 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).
- إضافة Toggle إلى ملف 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 لإرسال إشعارات إلى SelectionManager بشأن تعديلات Selectable. (I6ff30، b/173215242)
- تم تغيير
fun Dp.isFinite()
إلىval Dp.isFinite
(I50e00) - تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- تمت إضافة isSpecified وisUnspecified وuseOrElse لklassen المضمّنة التي تحتوي على ثابت Unspecified. (I93f7b، b/174310811)
إصلاح الأخطاء
- واجهة برمجة تطبيقات جديدة مستندة إلى وظائف الاستدعاء المتعدّد
Animatable
تضمن التداخل المتبادل بين الرسومات المتحركة سمة DecayAnimationSpec جديدة لتتوافق مع الصور المتحركة المتعدّدة الأبعاد (I820f2، b/168014930) - تمت إضافة إمكانية استخدام حقول النصوص المتوقفة عن العمل والقابلة للقراءة فقط (I35279 وb/171040474 وb/166478534)
- تم استبدال
animate()
الآن بـanimateAsState()
، الذي يعرضState<T>
بدلاً منT
. يتيح ذلك تحسين الأداء، لأنّه يمكن تضييق نطاق الإبطال إلى حيث تتم قراءة قيمة State. (Ib179e) - أضِف واجهة برمجة التطبيقات لدور Semantics وأضِف الدور كمَعلمة إلى SemanticsModifier الذي يمكن النقر عليه واختياره وتبديله. تم تغيير Modifier.progressSemantics لكي يتمكّن Slider من استخدامه أيضًا. (I216cd)
- يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال 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 إلى TextFields. (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 API لاستخدامهما في استخراج معلومات التركيب. هذه الواجهات برمجة تطبيقات عامة، ولكنّها ليست مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling API لأنّها تقدّم المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling API (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 (Ibcad0، b/170296980)
دالة infiniteRepeatable جديدة لإنشاء InfiniteRepeatableSpec (I668e5)
تم تغيير واجهة
Applier
لتبسيط إنشاء الأشجار من الأسفل إلى الأعلى بدلاً من الأعلى إلى الأسفل.تمت إعادة تسمية الطريقة
insert()
ليصبح اسمهاinsertTopDown()
.تمت إضافة طريقة جديدة، وهي
insertBottomUp()
.يُدخل مُطبِّق العقد في الشجرة التي يعدّلها باستخدام
insertTopDown()
أوinsertBottomUp()
، وذلك استنادًا إلى الإجراء الذي يحقّق أداءً أفضل.إنّ بعض الأشجار، مثل
LayoutNode
وView
، تكون أكثر فعالية عند إنشائها من أسفل إلى أعلى مقارنةً من أعلى إلى أسفل. قبل هذا التغيير، كان مطلوبًا استخدام حزمة من عمليات الإدراج لتنفيذ الإجراء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كلّ أداة تطبيق تحتاج إلى الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير،Applier
يتجاوزinsertBottomUp()
لإنشاء شجرة من الأسفل إلى الأعلى وinsertTopDown()
لإنشاء الشجرة من الأعلى إلى الأسفل. (Icbdc2)تمت إضافة واجهة برمجة التطبيقات painterResource API لمعالجة تحميل عناصر Painter بشكل غير شفاف من تنسيقات مواد العرض النقطية (مثل ملفات PNG) أو VectorDrawables. لم يعُد على المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم استدعاء هذه الطريقة للحصول على عنصر Painter لاستخدامه في مكونات الصور أو عناصر تعديل Painter. (I2c703، b/173818471)
تمت إضافة دالة المصنع buildAnnotatedString من أجل إنشاء AnnotatedString. دالة annotatedString builder المتوقّفة نهائيًا (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) - تمت إضافة فحص أخطاء لأسماء مَعلمات lambda القابلة للتركيب وموقعها، وذلك للتحقّق من اتّساقها مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم
children
كاسم لدالة lambda اللاحقة إلىcontent
، وفقًا لفحص الأخطاء الإملائية والإرشادات. (Iec48e) - تم نقل
foundation:foundation-text
واجهة برمجة تطبيقات إلىfoundation:foundation
. ظلت بنية الحزمة كما هي (Id3eb2). - أداة جديدة لرصد الإيماءات التي تستخدم تقنية اللمس المتعدّد، بما في ذلك مساعِد لرصد التدوير والتكبير والتصغير (Ic459d)
- أداة جديدة لرصد إيماءات السحب تعمل على تعليق واجهة برمجة التطبيقات الخاصة بالمؤشر الإدخال، بما في ذلك قفل الاتجاه (Icef25)
- تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder لتكون صفًا داخليًا من ImageVector وفقًا لإرشادات مجلس واجهة برمجة التطبيقات. تمت إضافة نوع بديل لواجهة VectorAssetBuilder لربطها بواجهة ImageVector.Builder من أجل التوافق. (Icfdc8)
- تمت إعادة تسمية ImageAsset و الطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
- تم نقل خصائص الدلالات الأساسية إلى ui (I6f05c).
إضافة واجهات برمجة تطبيقات لميزة الانتقال للأعلى أو للأسفل المستندة إلى وظائف التشغيل المتعدّد:
تضيف هذه الإضافة LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهة برمجة تطبيقات من المستوى الأدنى للتحكّم في الانتقال للأعلى أو للأسفل. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكّم في الانتقال للأعلى أو للأسفل، والتي تنتظر إلى أن ينتهي الانتقال للأعلى أو للأسفل قبل العودة. (Ie5642)
تمت إضافة مَعلمة singeLine إلى BasicTextField وTextField وOutlinedTextField. اضبط هذه المَعلمة على true لجعل الحقل النصي سطرًا واحدًا قابلاً للتنقّل أفقيًا. (I57004، b/168187755)
تمّت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وإشارة الضغط باستخدام إدخال المؤشر المعلّق الجديد. تمت أيضًا إضافة بعض الأدوات التي تسهّل على المطوّرين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
يجب إضافة Modifier.focusable في الأساس. استخدِم هذا الإجراء لإضافة سلوك قابل للتركيز إلى مكوّن مع دلالات وإمكانية وصول صحيحة. (I41eb9 وb/152525426 وb/162865824)
تمّت إزالة واجهات برمجة التطبيقات التي تمّ إيقافها نهائيًا في السابق: تمّت إزالة Border، ويمكنك استخدام BorderStroke بدلاً منها. تمت إزالة Modifier.drawBorder، استخدِم Modifier.border بدلاً منه. تمت إزالة Modifier.gravity، استخدِم Modifier.align بدلاً من ذلك. تمت إزالة الحزمة، استخدِم المربّع بدلاً من ذلك (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) - جعلت حقلَي uptime و position في PointerInputData غير قابلَين للحذف. (Id468a)
- يضبط MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستندة إلى لغة Material Design استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة للاختيار. (I1e6f4، b/139320372، b/139320907)
- تمت إعادة تسمية مَعلمة alignment الخاصة بمربّع إلى 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 API المعدَّلة
- جعلت TextFieldValue.composition للقراءة فقط
- تمّت إزالة استثناء تمّ طرحه لنطاق اختيار غير صالح (I4a675، b/172239032)
- تم إيقاف الخلفيات المُدمجة نهائيًا التي تحمل
Ambient
كلاحقة، وتم استبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك باتّباع إرشادات الخلفيات المُدمجة وCompose API الأخرى. (I33440) - تمت إضافة حزمة Android Typeface. يمكنك تحميل نوع خط Android
من خلال دالة
typeface
، أيtypeface(Typeface.DEFAULT)
. تمت أيضًا إعادة تسميةtypefaceFromFontFamily()
إلىtypeface()
(I52ab7). - تمت إضافة فحص أخطاء لضمان استخدام مصانع المُعدِّلات
androidx.compose.ui.composed {}
داخليًا، بدلاً من وضع علامة عليها@Composable
. (I3c4bc) - تمت إضافة فحص أخطاء لضمان أنّ وظائف مصنع Modifier محدّدة كإضافات على Modifier، حتى يمكن ربطها ببعضها بسلاسة. (I07981)
- تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants لتصبح mergeDescendants. (Ib6250)
- أصبح التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521).
- إزالة وحدة اختبار واجهة المستخدم القديمة ووحداتها النموذجية (I3a7cb)
- تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified بما يتوافق مع الوحدات الأخرى. (Ifce19)
- تم تعديل واجهة "المحاذاة" وجعلها صالحة للاستخدام. (I46a07، b/172311734)
- تم دمج وحدة
foundation:foundation-text
فيfoundation:foundation
(Idac0f). - إيقاف place(Offset) وplaceRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع وحدات الإزاحة int بدلاً من ذلك (I4c5e7).
- تمت إعادة تسمية
id
إلىlayoutId
فيLayoutIdParentData
. تمت إعادة تسميةMeasurable.id
إلىMeasurable.layoutId
. (Iadbcb، b/172449643)
الإصدار 1.0.0-alpha07
11 تشرين الثاني (نوفمبر) 2020
تم إصدار androidx.compose.foundation:foundation:1.0.0-alpha07
وandroidx.compose.foundation:foundation-layout:1.0.0-alpha07
وandroidx.compose.foundation:foundation-text:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- على غرار
Modifier.fillMaxSize[Width|Height]
، نتيح الآن استخدام الكسور فيModifier.fillParentMaxSize[Width|Height]
ضمن نطاقLazyColumn/Row
(I797e2 وb/166586426). - تمت إزالة
KeyboardOptions.toImeOptions
من واجهة برمجة التطبيقات المتاحة للجميع. (Ic2e45) - تم إيقاف العناصر الأساسية AmbientTextStyle وProvideTextStyle وAmbientContentColor نهائيًا. بدلاً من ذلك، استخدِم الإصدارات الجديدة المتوفّرة في مكتبة Material. بالنسبة إلى التطبيقات غير المستندة إلى لغة Material، عليك بدلاً من ذلك إنشاء أنظمة تصميم خاصة بك لإنشاء تصاميم مناسبة للاستخدام في مكوناتك. (I74acc، b/172067770)
- تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية لا تتضمّن أي آراء ولا تستخدِم قيمًا من مظهر، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
- تمت إضافة maxLines إلى TextFields (Ib2a5b)
- تعديل TextFields لقبول KeyboardOptions (Ida7f3)
- تمت إضافة KeyboardOptions لاستخدامها في TextFields (I9ca32)
- تضيف BasicText كواجهة برمجة تطبيقات غير منحازة للتصميم للنص، بالتوازي مع BasicTextField. (I28268)
- تمت إزالة التعليق التوضيحي ExperimentalLazyDsl. يمكن الآن استخدام LazyColumn/LazyRow بدون إضافة @OptIn (Idab7a، b/166584730)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- تمت إضافة BasicTextField كبديل لكل من CoreTextField وBaseTextField (Id4cea)
- إزالة LazyColumnItems/LazyRowItems المتوقّفة نهائيًا (I1d8a8)
- تمت إزالة العناصر القابلة للتجميع التي تم إيقافها نهائيًا لتحديد الحجم وفقًا للقياسات الأساسية. (I18537، b/171811496)
- تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة المُعدِّل paddingFromBaseline، وذلك لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813)
- تمت إضافة المَعلمة matchHeightConstraintsFirst إلى مُعدِّل نسبة العرض إلى الارتفاع، والذي يمكن استخدامه لتحديد المُعدِّل لفرض قيود على الحجم والارتفاع قبل تجربة المراسلات المتعلّقة بالعرض. (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)
- تم وضع علامة على CoreTextField باسم @InternalTextApi. استخدِم BasicTextField بدلاً من ذلك (Ie2469).
- تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تقديم وحدة ui-test-junit4 (Ib91f8)
- تم تعديل Icon API لقبول Color.Unspecified كلون صبغة محتمل سيرسم المادّة الأساسية أو الرسام المقدَّم بدون فلتر لون. في السابق، كانت محاولات تجاهل التلوين باستخدام 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)
- أضِف اختبارات لمواضع عناصر اختيار العناصر في 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. يمكنك أيضًا استخدام مكوّن Image أو 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)
- تمت إضافة ميزة "اللفّ التلقائي" إلى CoreTextField. (I21a4b)
إصلاح الأخطاء
- إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لتحديد بشكل أفضل أنّ واجهة برمجة التطبيقات القابلة للتركيب تستفيد من "التذكر" للحفاظ على البيانات في التراكيب (Ifda43)
- فعِّل الانتقالات في ComposeTestRule، وأزِل خيار تفعيل المؤشر المتمايل من ComposeTestRule. (If0de3)
- تمت إضافة خيار لوحة مفاتيح ذات سطر واحد إلى CoreTextField (I72e6d)
- تمت إعادة تسمية Radius API إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في أداة "الإنشاء". تم تعديل المستندات للإشارة إلى أنّ نصف قطر الزاوية السالب يتم تثبيته على القيمة صفر. (I130c7، b/168762961)
- إضافة إمكانية تحديد معلومات المفتش في المُعدِّل المركب (Idee08، b/163494569)
- تمت إضافة خيار IME KeyboardCapitalization (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
في السمة ambient، كما هو الحال مع أيّ سمة ambient أخرى. تم إجراء هذا التغيير من أجل الاتساق وتجنُّب توفُّر طرق متعدّدة لتحقيق النتيجة نفسها. بالإضافة إلى ذلك، تمت إعادة تسمية بعض السمات المحيطة لوصف الغرض منها بشكل أفضل على النحو التالي:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
إصلاح الأخطاء
- كجزء من عملية توحيد القيم المراقبة للفئات المضمّنة، أُعيد تسمية Color.Unset إلى Color.Unspecified للتطابق مع الفئات المضمّنة الأخرى (I97611 وb/169797763).
- تمت إضافة إجراءات تسهيل الاستخدام "النسخ/اللصق/القطع" (I6db4f)
- تمّ تقديم TextOverflow.None. عندما يكون overflow غير محدّد، لن يعالج Text المحتوى الزائد بعد الآن، وسيُبلغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)
- تم تعديل مَعلمات Size.Unspecified لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى المقاسات غير المحدودة. (I95a7e)
- تمت إضافة وحدة كتابة الصفحات والدمج مع ميزة تقسيم الصفحات (Ib85da)
- تعديل LazyListScope لتلقّي قيم فارغة (I1765b)
- تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وonPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
- تمت إضافة نماذج لعنصر LazyColumn/Row (Idc16d)
- حلّ لمنهجَي items وitemsIndexed للسماح باستخدام emptyList (I06647)
- إضافة لغة وصفية محددة لتحديد معلومات المفتش (Ic9a22)
- انقل رمز الضغط مع الاستمرار إلى رمز النص. (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 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية الحزمة إلى "علبة". سيتم إيقاف العنصر 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 من عنصر Text الذي يتضمن إدخالًا من النوع String. ولن يتم استخدامه لأنّه يجب أن يعمل عنصر inlineContent مع AnnotatedString. (Ief403)
- تمت إزالة واجهات برمجة التطبيقات لميزة "الترتيبات المخصّصة" التي سيتم إيقافها نهائيًا. (Ic576d، b/168297922، b/168297923)
- تمت إضافة المَعلمة
unbounded
إلى مُعدِّلات wrapContentSize، ما يتيح قياس عنصر التنسيق بحدود قصوى غير محدودة. (I77951، b/158559319) - منعنا عمليات الاستيراد الثابتة لمحتوى نطاقات التنسيق (مثل alignWithSiblings في RowScope). يجب استخدام البديل الصريح للنطاق بدلاً من ذلك:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be، b/166760797)
إصلاح الأخطاء
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة التطبيقات الخاصة بتحويلات الحجم والدوران للاستخدام المشترَك لمَعلمة Offset واحدة لتمثيل إحداثي محور الدوران بدلاً من استخدام مَعلمات float منفصلة لإحداثي x/y في DrawScope وDrawTransform
- إزالة الطريقتَين Rect.expandToInclude وRect.join
- تم تعديل مستندات "النطاق الجغرافي" لتشير إلى أنّه بيضاوي بالإضافة إلى بيضاوي الشكل.
- تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء ملف الإنشاء العلني لفئة Radius المضمّنة مباشرةً، ولكن يجب بدلاً من ذلك إنشاء مثيلات لعناصر Radius من خلال ملفّات إنشاء الدوالّ.
- تمت إزالة واجهات برمجة تطبيقات RoundRect API لطلب البحث عن 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)
- تحسينات الأداء لميزة "الانتقال السلس للأعمدة/الصفوف" من خلال عدم إجراء عمليات إعادة تركيب غير ضرورية أثناء كل عملية انتقال (I64f65 وb/168293643 وb/167972292 وb/165028371)
- تم إصلاح الأعطال في LazyColumnFor/LazyRowFor بعد الانتقال للأعلى أو للأسفل ثم تغيير العناصر، وتم تنفيذ الانتقال التلقائي للأعلى عند إزالة العنصر المرئي سابقًا حتى لا نعرض فجوات فارغة في النهاية بعد الآن (I220ab وb/161480164 وb/167855468)
- لم يعُد مسموحًا بتداخل الحاويات القابلة للتقديم أو الإيقاف في الاتجاه نفسه، مثل ScrollableContainer وLazyColumnFor. لم يكن هذا الإجراء متوافقًا مطلقًا وكان يتسبب في حدوث أخطاء في الأداء وجميع عمليات إنشاء عناصر LazyColumnFor (I6e101) بشكلٍ غير مدروس.
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة تطبيقات DrawScope باستخدام طرق تحويل على مستوى النطاق للإشارة إلى أنّه لا يتم تطبيق التحويل إلا ضمن الدالة المخصّصة للردّ، ويتم إزالته بعد استدعاء الدالة المخصّصة للردّ.
- تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من مستطيل مُعَدَّل
- تباعُد ثابت في المستند للمَعلمة اليمنى في clipPath
- تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وتمت إزالة مَعلمة size.
- تمت إعادة تسمية مَعلمتَي dx/dy في طريقة inset إلى أفقي وعمودي
- تمت إضافة حمولة زائدة للاقتصاص توفّر قيمة اقتصاص متطابقة لجميع الحدود الأربعة.
- تمّت إزالة مستندات حول طريقة الحشو التي تشير إلى أنّه سيتم تطبيق الحشو على جميع الجوانب الأربعة.
- مستندات معدَّلة لفئة Rect
- تعديل التعليقات على مَعلمات Rect لمطابقة kdoc style
- تمت إزالة 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)
- تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متسق لتصبح align أو alignment في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
- تمت إضافة مَعلمة alignment إلى 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 على عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الترتيب spacedBy للصف والعمود، وذلك لتفعيل موضع عناصر التنسيق الفرعية بمسافة ثابتة. تمت أيضًا إضافة الترتيب المُحاذاة، لتفعيل موضع عناصر التنسيق الفرعية بجانب بعضها البعض ومحاذاة الصف/العمود وفقًا لعملية محاذاة. تم إيقاف الطريقتَين 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)
- أصبحت القيود الآن فئة مضمّنة (I88736).
- تمت إضافة إمكانية ضبط حجم التنسيق على جزء من المساحة المتوفّرة باستخدام المُعدِّلات fillMaxWidth وfillMaxHeight وfillMaxSize. (I945bb، b/161562591)
إصلاح الأخطاء
- تمت إضافة مَعلمة مُعدِّل إلى SelectionContainer (I4aada، b/161487952)
- تمت إضافة دالة lambda لسياسة الدمج إلى SemanticsPropertyKey. ويمكن استخدام ذلك لتحديد سياسة مخصّصة لدمج semantik mergeAllDescendants. إنّ السياسة التلقائية هي استخدام قيمة العنصر الرئيسي إذا كانت متوفرة، وإلا يتم استخدام قيمة العنصر الفرعي. (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 لتناسب أنماط تسمية الإنشاء بشكلٍ أفضل تم إنشاء وظائف إنشاء دالة مشابهة لدالة RRect ووظائف إنشاء دالة RRect المتوقّفة نهائيًا (I5d325)
- تمّت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier في تنسيق العنصر الفرعي بدلاً من ذلك. (I4522e، b/162109766)
- أصبح IntSize الآن فئة مضمّنة (I2bf42).
- اضغط مع الاستمرار على المنطقة الفارغة المطلوب تعديلها. (Ib1e5b)
- إخفاء شريط الأدوات العائم بعد النقر على النص (If4525)
- إخفاء شريط الأدوات العائم عند تعديل الاختيار (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)
- تمت إضافة مَعلمة الجاذبية على محور x لعناصر 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)
- تمت إزالة لغة ConstraintLayout DSL القديمة. تمت إعادة تسمية ConstraintSet2 إلى ConstraintSet. (If58d1، b/162450908)
- تمت إضافة Modifier.absoluteOffset() وModifier.absoluteOffsetPx(). وعلى عكس مُعدِّلات ال offset، لن تتم تلقائيًا مرآة مُعدِّلات ال offset المطلق في السياق من اليمين إلى اليسار (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.
- تم تعديل ميزة "إنشاء الصور" لتجنُّب استخدام Box لخفض التكاليف غير الضرورية
- تم تعديل فئة المخطّط لإضافة التعليقات التوضيحية @Immutable
- تم تعديل PathNode لإضافة تعليقات توضيحية من النوع @Immutable لكل تعليمات مسار.
- تم تعديل التركيب الفرعي للشكل المتجه لإزالة عمليات التحقّق المتكرّرة الشرطية من المساواة لأنّ عملية الإنشاء تتعامل مع هذه العمليات
- طرق إنشاء العنصر المصاحب Rect المتوقّفة نهائيًا لصالح طرق إنشاء الدوالّ
- تم تعديل فئات Brush ووظائف الإنشاء باستخدام واجهتَي برمجة التطبيقات @Immutable و @Stable
- تم تعديل النطاق المحدَّد VertexMode ليكون PascalCase
- تم تعديل طريقة DrawScope selectPaint لإعادة كتابة مَعلمات الخطوط على الطلاء بشكل مشروط في حال تغيّرت
- تم تعديل Size لإضافة واجهة برمجة تطبيقات لإعادة التشكيل، وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدَمة.
تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock كعنصر AnimationClockObservable لسد الفجوة بين الساعات الجديدة المستندة إلى وحدات معالجة المهام المتزامنة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى callback.
أصبح العنصر ManualFrameClock هو العنصر المكافئ لعنصر MonotonicFrameClock في ManualAnimationClock. (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
من تطبيق "الكتابة"، عليك إجراء ما يلي:
تعديل التبعيات
- لاستخدام الإصدار
0.1.0-dev15
من Compose، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.
تغييرات واجهة برمجة التطبيقات
- على غرار المَعلمة الجديدة في ScrollableColumn/ScrollableRow، تتضمّن الآن LazyColumnItems/LazyRowItems أيضًا المَعلمة contentPadding التي تسمح بإضافة مسافة بادئة للمحتوى بعد اقتصاصه، وهو أمر غير ممكن من خلال مَعلمة مُعدِّلة فقط. ويسمح أيضًا بإضافة مسافة قبل العنصر الأول أو بعد العنصر الأخير فقط. (Ibc24e)
- تمت إعادة تسمية دالة الاستدعاء onFocusChange في الحقول النصية إلى onFocusChanged (Ida4a1).
- تم إيقاف عنصرَي VerticalScroller وHorizontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك العمود/الصف والمَعلمات، أو استخدِم 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 composable من Inside إلى Fit. تم إجراء ذلك لأجل الحصول على سلوك لتوسيع نطاق الرسام الأساسي إذا كان حجم التنسيق أكبر من الحجم الأساسي للرسام مع الحفاظ على نسبة العرض إلى الارتفاع. يتوافق هذا السلوك بشكلٍ أفضل مع التوقعات بشأن توفير أحجام ثابتة للصورة مع عدم التأثير في السلوك التلقائي إذا تم استخدام الحجم الأساسي فقط لاحتساب حجم العنصر القابل للتجميع. (I40ae3، b/159838006)
- استخدِم AnimationSpec بدلاً من AnimationBuilder في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الرسوم المتحركة الثابتة - تحسين لغة وصف برمجة التطبيقات الخاصة بالانتقالات من خلال إزالة شرط استخدام دالة lambda ل إنشاء مواصفات حركات مثل tween وspring بدلاً من ذلك، يتم استخدامparamمّات المُنشئ مباشرةً. -تحسين سهولة استخدام 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 الآن العمود بشكل تلقائي. يقدّم عنصر HorizontalScroller الآن صفًا تلقائيًا. (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 API المتوقّفة نهائيًا لصالح واجهات برمجة تطبيقات إضافة drawBackground API في "المعدِّل". تمّت إعادة صياغة تنفيذات drawBackground لللون والفرشاة والطلاء بهدف تقليل مسارات الرموز البرمجية، فضلاً عن إزالة شرط إنشاء Modifier كجزء من التركيب. (I0343a)
- تم تعديل واجهة برمجة التطبيقات التي تُنشئ مكونات من المستوى الأعلى لتعرض Canvas بدلاً من CanvasScope. ويؤدي ذلك إلى عدم إلزام المستهلكين بصيانة عناصر Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين يحتاجون إلى الوصول إلى Canvas ، يمكنهم استخدام أسلوب إضافة drawCanvas الذي يقدّم طلب استدعاء لإصدار تعليمات الرسم باستخدام Canvas الأساسية. (I80afd)
- لا يعيد عنصرَا HorizontalScroller وVerticalScroller موضع التمرير باستخدام حالة العنصر المحفوظة. (Ia0fae، b/155075048)
- تمت إزالة FocusManagerAmbient. استخدِم FocusModifier.requestFocus للحصول على التركيز. (Ic4826)
- تمت إزالة تنسيق الجدول مؤقتًا إلى أن نوفّره مرة أخرى من خلال واجهة برمجة تطبيقات معدَّلة. (Id88a7)
تم إنشاء واجهة برمجة التطبيقات CanvasScope API التي تُغلِّف كائن canvas لعرض سطح واجهة برمجة تطبيقات رسومات تعريفية بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق المستلِم الخاص بها، ويتم أيضًا تحديد نطاق معلومات الحجم لحدود الحشو المقابلة. ولا يتطلّب ذلك من المستخدِم الاحتفاظ بحالة الطلاء الخاصة به لضبط عمليات الرسم.
تمت إضافة CanvasScopeSample بالإضافة إلى تعديل التطبيق التجريبي لتضمين رسومات توضيحية تجريبية (Ifd86d).
تمت إزالة ColoredRect. استخدام User Box مع مُعدِّل drawBackground بدلاً من ذلك (I983c7، b/152753731)
إضافة تخصيص لون المؤشر إلى TextField (I6e33f)
أصبح من الممكن الآن إخفاء/إظهار لوحة المفاتيح البرمجية باستخدام SoftwareKeyboardController الذي يتم إرساله من خلال callback (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).تم استبدال مَعلمة focusIdentifier في CoreTextField/TextField بمَعلمة FocusNode من أجل الدمج مع النظام الفرعي للتركيز. (I7ea48)
تعديل TextField: في السمة الأفقية، سيشغل الحقل كل المساحة المتاحة الممنوحة له (Ib08df، b/154638552)
تمت إضافة InteractionState وInteraction، ما يسهّل إنشاء مكوّنات تستجيب لتغييرات حالة واجهة المستخدم، مثل الضغط والسحب (Icfe25، b/152525426)
تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات Color التي تتضمّن قيمة فارغة في واجهة برمجة التطبيقات باستخدام قيمة غير فارغة واستخدام Color.Unset بدلاً من null (Iabaa7)
تعديل في واجهة برمجة التطبيقات TextField API: دمج وظيفتَي الاستدعاء onFocus وonBlur في وظيفة استدعاء واحدة onFocusChange(Boolean) بالمَعلمة (I66cd3)
تمت إعادة تسمية ScaleFit إلى ContentScale وتم نقل ContentScale من وحدة ui-graphics إلى وحدة ui-core لكي تظهر في الوحدة نفسها التي تتضمّن واجهة برمجة التطبيقات Alignment. تمت إعادة تسمية FillMaxDimension إلى Crop تمت إعادة تسمية FillMinDimension إلى Fit تمت إعادة تسمية Fit إلى Inside لمطابقة مثيلات ImageView.ScaleType بشكل أفضل تمت إضافة مستندات تشير إلى أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_CROP وFit يحقّق استخدام Alignment.Center النتيجة نفسها مثل ImageView.ScaleType.FIT_CENTER يحقّق استخدام Inside مع Alignment.Center النتيجة نفسها مثل ImageView.ScaleType.CENTER_INSIDE (I45f09، b/152842521)
إزالة ProvideContentColor، وبدلاً من ذلك، استخدِم ContentColorAmbient مباشرةً مع
Providers
(Iee942)تُضيف مَعلمة اللون إلى النص، ما يسمح بإلغاء لون نمط النص بدون الحاجة إلى الدمج يدويًا مع النمط المقدَّم في المظهر. (I41a66)
تحسين واجهة برمجة التطبيقات DrawModifier API:
- تمّ إنشاء نطاق المستلِم لـ draw() ContentDrawScope
- إزالة جميع المَعلمات في draw()
- تتضمّن DrawScope الواجهة نفسها التي كانت متوفّرة في CanvasScope سابقًا.
- تحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تم إيقاف ColoredRect نهائيًا. استخدِم
Box(Modifier.preferredSize(width, height).drawBackground(color))
بدلاً من ذلك. (I499fa، b/152753731)تم تعديل نظام تخصيص شكل العناصر وفقًا لمواصفات التصميم المتعدد الأبعاد. يمكنك الآن تقديم أشكال صغيرة ومتوسطة وكبيرة لاستخدامها في معظم المكوّنات (Ifb4d1).
تم استبدال عامل التشغيل "المعدِّل الإضافي" بدوالّ إضافة المصنع (I225e4)
تم نقل العنصر القابل للسحب إلى المُعدِّل (Id9b16، b/151959544)
تم نقل
Text
من حزمة androidx.ui.core إلى حزمة androidx.ui.foundation. (I87ce5)إضافة المَعلمة
enabled
إلى مربّع الاختيار ومفتاح التبديل والعنصر القابل للتبديل (I41c16)أصبح تأثير التموج الآن مُعدِّلاً. في حين أنّ العنصر القابل للنقر لم يتم تحويله بعد، فإنّ الاستخدام المقترَح هو
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200 وb/151331852 وb/150060763).تمت إضافة VectorPainter API بهدف استبدال واجهة برمجة التطبيقات الحالية للتركيب الفرعي للرسومات المتجهّة. نتيجة التركيب الفرعي هي عنصر VectorPainter بدلاً من DrawModifier. تم إيقاف مكونات DrawVector السابقة نهائيًا لصالح VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات
Image(Painter)
إلىPaintBox(Painter)
تم إنشاء عنصر مركب متحرك يشبه العنصر المركب المتحرك للصور، باستثناء أنّه يستخدم مادة عرض رسومات فنية بدلاً من مادة عرض صورة (I9af9a، b/149030271)تم إنشاء عنصر Image قابل للتركيب من أجل التعامل مع الحجم/التنسيق بالإضافة إلى رسم ملف ImageAsset معيّن على الشاشة. يتيح هذا العنصر القابل للتركيب أيضًا رسم أي مثيل مرغوب فيه من مثيلات Painter مع مراعاة حجمه الأساسي ، بالإضافة إلى السماح بحجم ثابت معيّن أو حجم أدنى (Ibcc8f).
أصبح لكل من Button وFloatingActionButton وClickable الآن مَعلمة
enabled
منفصلة. تمّت إعادة تسمية بعض المَعلمات في Button أو إعادة ترتيبها. (I54b5a)تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين الفرق بين بيانات Image وملف Composed Image القادم المُستخدَم للمشاركة في تنسيق ورسم المحتوى.
تم إنشاء طريقة إضافة في android.graphics.Bitmap،
Bitmap.asImageAsset()
، لإنشاء مثيل لملف ImageAsset مفيد لدمج تطوير تطبيقات Android التقليدي مع إطار عمل Compose. (Id5bbd)تمّت إزالة العنصر القابل للتجميع DrawImage. استخدِم ImagePainter لرسم صورة على التنسيق الحالي، أو SimpleImage لعرض صورة تشغل مساحة (I595e1، b/149827027).
يتيح مكوّن "الحزمة" الاتجاه من اليمين إلى اليسار (Ic9e00).
تمت إضافة Icon وIconButton وIconToggleButton، مع إزالة AppBarIcon. يمكنك استبدال استخدامات AppBarIcon الحالية مباشرةً بـ IconButton، وسيكون لها الآن مساحة اللمس الصحيحة. اطّلِع على العيّنات للحصول على معلومات عن الاستخدام، وعلى رموز Icons for Material Icon التي يمكنك استخدامها مباشرةً مع هذه المكوّنات. (I96849)
تمت إزالة العنصر القابل للتجميع DrawShape. استخدِم المُعدِّل DrawBackground بدلاً من ذلك. (I7ceb2)
تمت إضافة AdapterList، وهو مكوّن قائمة لفائف يُنشئ ويُعدّ العناصر المرئية فقط. تشمل المشاكل المعروفة حاليًا أنّه عمودي فقط ولا يعالج بشكل كامل كل حالات التغييرات على العناصر الفرعية. (Ib351b)
تمت إضافة مكوّن قابل للتقديم/الترجيع، ما يتيح إنشاء قوائم/أداة تنقّل مخصّصة (I5fd37)
تمت إعادة تسمية الخلفية إلى DrawBackground وجعلها محفوظة تلقائيًا (Ia0bd3)
أضِف مَعلمات الحشو والحدود والشكل والخلفية إلى المربّع (I05027، b/148147281).
تمت إضافة مكوّن "لوحة". يشغل هذا المكوّن القابل للتجميع مساحة معيّنة (يوفّرها المستخدم) ويسمح لك بالرسم باستخدام CanvasScope (I0d622).
إعادة تسمية عنصر التعديل
Border
إلىDrawBorder
(I8ffcc)تمت إضافة مكوّن "المربّع" لدمج وظائف التنسيق والرسم الشائعة. (I6e2a7)
تعرض الآن أشرطة التمرير سلوكًا أصليًا لحركة التمرير السريع في Android. (I922af، b/147493715)
تم استبدال DrawBorder بمُعدِّل الحدود (Id335a)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط مع Modifier.testTag. (I995f0)
تمت إعادة تسمية مَعلمة النسبة المئوية عند إنشاء إرشادات ConstraintLayout إلى fraction. (Ida2db)
تمت إضافة إمكانية استخدام الهوامش في الحواجز في ConstraintLayout. (I47ffe)
تم إصلاح إتاحة اتجاه النص من اليمين إلى اليسار في ConstraintLayout. تمّت إضافة واجهات برمجة تطبيقات لا تراعي اتجاه النص من اليمين إلى اليسار. (I3b1c7)
تمت إضافة لغة وصفية جديدة لـ ConstraintLayout. يُرجى الاطّلاع على العيّنات لمعرفة المزيد من التفاصيل. (Icaa9a)
تمت إضافة التعليق التوضيحي @ExperimentalLayout. تم وضع علامة عليه الآن في ConstraintLayout وFlowRow وFlowColumn للإشارة إلى أنّ واجهات برمجة التطبيقات الخاصة بهم ستتغيّر. (I412a8)
تمت إضافة
Modifier.padding(InnerPadding)
(I94985، b/157133803)تمت إزالة RowAlign وColumnAlign في الصف والعمود، لأنّهما عنصران متوقّفان نهائيًا. (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)
تمّت إتاحة إمكانية إنشاء Alignment باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة 1D. (Ia0c05)
تمت إعادة تسمية EdgeInsets إلى InnerPadding. تمت إعادة تسمية مَعلمة innerPadding في Buttons Material إلى paddding. (I66165)
يقبل alignToSiblings الآن عنصرًا من النوع "مقيس" بدلاً من "قابل للوضع". (I5788d)
تمت إضافة مُعدِّلات لتحديد الحجم إلى القياسات الأساسية وتم إيقاف المكوّنات التي تخدم هذا الغرض نهائيًا. (I8295d)
تمت إضافة إمكانية تخصيص سمات عناصر ConstraintLayout (Idb1a5)
تمت إزالة العنصرَين "التفاف" و"وسط" اللذَين تم إيقافهما نهائيًا. (I29e23)
تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد عناصر تعديل التنسيق، وتم إيقاف LayoutModifier نهائيًا (If32ac).
يمكن الآن الوصول إلى أعضاء RowScope وColumnScope خارج Row وColumn. (I3a641)
تم إيقاف الحاوية نهائيًا. استخدِم Box بدلاً من ذلك. (I675ce، b/151407926)
تمت إضافة المُعدِّل LayoutOffset لإزاحة موضع التنسيق (I0b8a3)
إتاحة RTL بشكل مبدئي في تنسيق "الإنشاء" (Ia5519)
تم تعديل LayoutAlign كي لا تملأ المساحة المتوفّرة بعد الآن (I2b14f)
تمت إزالة العنصر القابل للتجميع AspectRatio لصالح المُعدِّل. تم حذف العناصر المركّبة FlexColumn وFlexRow القديمة ومحرّر Spacing (Iec8a7)
تمت إزالة المُعدِّل LayoutInflexible للصف والعمود (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 التي تم إيقافها نهائيًا في السابق يستخدم العنصر القابل للنقر الآن تأثير التموج كإشارة تلقائية (إذا كان لديك عنصر MaterialTheme {} محدّد في تطبيقك)، لذا في معظم الحالات، يمكنك استخدام العنصر القابل للنقر والحصول على إشارة التموج مجانًا. إذا كنت بحاجة إلى تخصيص مَعلمة اللون / الحجم / الحدود لموجة الصدمة، يمكنك إنشاء عنصر RippleIndication يدويًا ونقله إلى عنصر clickable كمَعلمة indication. (I663b2، b/155375067)
- تمت إزالة واجهات برمجة التطبيقات القديمة لاختبار الحجم. (Iba0a0)
- تمّت إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (I4f2e9)
- تم تنفيذ الإصدار 1 من ميزة قفل اتجاه التمرير في ميزة "الإنشاء". (I1ce7a، b/150289741)
- ترث الآن النوافذ المنبثقة ومربّعات الحوار والقوائم مظهر MaterialTheme السياقي (Ia3665، b/156527485).
- تمت إزالة مَعلمة اتجاه التنسيق من مجموعة القياس لدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة الاستدعاء من خلال كائن نطاق القياس (Ic7d9d).
- إضافة AbsoluteArrangement: يسمح بترتيب العناصر الفرعية داخل الصف بدون النسخ التلقائي في RTL (I3a1df)
- تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِل ذلك بـ @ComposableContract(tracked=false) (Id211e).
- قبل إجراء هذا التغيير، كان المكوّن الإضافي لمحرِّر Compose يعرقل بشكلٍ غير بسيط طلبات إنشاء العناصر داخل دالة @Composable في حال توفّر (I5205a، b/158123804)
- إضافة
viewModel()
composable التي تسمح بإنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه مسبقًا على نحو مشابه لطريقة عملها في Activity أو Fragment (I5fdd1) تمّت إعادة صياغة فئة Radius لتصبح فئة مضمّنة. تمت إزالة methods لإنشاء الأشكال المصاحبة واستخدام دالة باني الدوال مع مَعلمة تلقائية لكي يتطابق نصف القطر على محور y مع مَعلمة نصف القطر الإلزامية على محور x.
تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتين منفصلتين للرقم العشري للقطر على طول محوري 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 وإضافة ميزة محاذاة مطلقة (لا تتم عكسها تلقائيًا في سياق RTL) (I38cd3)
يمكن قياس عناصر Layout وLayoutModifier باستخدام اتجاه تنسيق مختلف. (Ibd731)
تقديم مَعلمة مستطيلة اختيارية إضافية لـ ImagePainter لتتمكّن من رسم قسم فرعي من ImageAsset الأساسية (I0ea9e)
تم إصلاح عطل في AdapterList عند إزالة العناصر (Ic64b0، b/153195921)
لقد غيّرنا طريقة قياس التنسيق الأول الذي تضعه داخل العنصر activity.setContent { }. في السابق، كان يتم ملء شاشة النشاط بالكامل، والآن يعمل العنصر كما لو كنت قد وضعت التنسيق داخل حزمة: يمكن أن يكون أصغر من الشاشة وسيتم وضعه في أعلى يمين الشاشة. إذا أردت السلوك القديم، يمكنك تطبيق Modifier.fillMaxSize() على التنسيق. (Ie88a7، b/153453714)
تمت إعادة تسمية وحدة ui-text-compose باسم ui-text. تحتوي وحدة ui-text الآن على عنصرَي التركيب CoreText وCoreTextField (Ib7d47).
تمت إعادة تسمية وحدة ui-text باسم ui-text-core (I57dec)
تم نقل مكونات ui-framework/CoreText وCoreTextField القابلة للتجميع ضمن ui-text-compose. قد تحتاج إلى تضمين ui-text-compose في مشروعك. (I32042)
أصبحت
runOnIdleCompose
وrunOnUiThread
الآن دالة كليتين بدلاً من طريقتَين في ComposeTestRule. (Icbe8f)[قابلة للتغيير]تم نقل عوامل تشغيل تفويض حالة العنصر إلى الإضافات لإتاحة تحسينات تفويض العنصر في Kotlin 1.4. على المتصلين إضافة عمليات الاستيراد لمواصلة استخدام
by state { ... }
أوby mutableStateOf(...)
. (I5312c)أصبحت قيمة المَعلمتَين DrawLayerModifier وdrawLayer() التلقائية للمَعلمتَين clipToBounds وclipToOutline هي false. (I0eb8b، b/152810850)
تمت إعادة تسمية LayoutResult إلى MeasureResult. (Id8c68)
عنصر قابل للتجميع في "المركز" تم إيقافه نهائيًا. يجب استبداله إما بالمعدِّل LayoutSize.Fill + LayoutAlign.Center أو بأحد العناصر القابلة للإنشاء Box أو Stack مع تطبيق مُعدِّلات مناسبة (Idf5e0).
تمت إعادة تسمية LayoutFlexible إلى LayoutWeight. تمت إعادة تسمية المَعلمة tight إلى fill. (If4738)
تم تغيير DrawVector من دالة مؤلفة عادية إلى دالة تعرض مُعدِّل drawVector() الذي سيرسم الخطّ المتّجه كخلفية لتنسيق. (I7b8e0)
استبدِل الدالة القابلة للتجميع Clip بالمعدِّل drawClip(). إنّ DrawClipToBounds هو مُعدِّل مناسب للاستخدام عندما تحتاج فقط إلى الاقتصاص إلى حدود الطبقة باستخدام شكل مستطيل. (If28eb)
تم استبدال الدالة القابلة للتجميع DrawShadow بالمعدِّل drawShadow() . يتم الآن رسم الظلال كجزء من LayerModifier. (I0317a)
تم نقل androidx.compose.ViewComposer إلى androidx.ui.node.UiComposer تمت إزالة androidx.compose.Emittable. كان هذا العنصر متكررًا مع ComponentNode. تمت إزالة androidx.compose.ViewAdapters. لم تعُد هذه الحالات من حالات الاستخدام المتوافقة. تم إيقاف Compose.composeInto نهائيًا. استخدِم
setContent
أوsetViewContent
بدلاً من ذلك. تم إيقاف Compose.disposeComposition نهائيًا. استخدِم طريقةdispose
علىComposition
التي تم إرجاعها بواسطةsetContent
بدلاً من ذلك. تم نقل androidx.compose.Compose.subcomposeInto إلى androidx.ui.core.subcomposeInto تم تغيير اسم ComponentNode#emitInsertAt إلى ComponentNode#insertAt تم تغيير اسم ComponentNode#emitRemoveAt إلى ComponentNode#removeAt تم تغيير اسم ComponentNode#emitMode إلى ComponentNode#move (Idef00)عنصر Wrap المركّب الذي تم إيقافه نهائيًا ويمكن استبداله إما باستخدام المُعدِّل LayoutAlign أو باستخدام العنصر القابل للتجميع Stack (Ib237f).
تمّ نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العقد الفرعية. تمت إضافة مُعدِّل اتجاه التنسيق. (I3d955)
أعِد تسمية Painter.toModifier إلى Painter.asModifier لأنّ أداة التعديل التي تم إنشاؤها حديثًا تحتوي على إشارة إلى Painter الأصلية التي يمكن مشاركتها في عدّة حالات من أداة التعديل (I7195b).
إتاحة الاتجاه من اليمين إلى اليسار في مُعدِّل LayoutPadding (I9e8da)
تم دمج Density وDensityScope في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density)، يمكنك استخدام with(density) فقط (I11cb1).
تمّت إزالة فئة ValueHolder. تمّت إعادة هيكلة فئة AnimatedValue وفئة AnimatedFloat لجعل حقل قيمة الرسوم المتحركة مجردًا حتى تتمكّن الفئات الفرعية من مراقبة تعديل القيمة.
- تمت إضافة فئات نماذج لـ AnimatedValue وAnimatedFloat وما إلى ذلك.
- تمت إضافة مجموعة جديدة من واجهة برمجة التطبيقات @Composable API خفيفة الوزن لإضافة تأثيرات متحركة بين القيم.
- (I79530)
تغييرات جذرية في واجهة برمجة التطبيقات Ambients API اطّلِع على السجلّات ومستندات
Ambient<T>
للحصول على التفاصيل (I4c7ee، b/143769776).إنّ مواضع Int لخط المحاذاة التي يتم عرضها من Placeable#get(AlignmentLine) ليست فارغة الآن. إذا لم يكن خطّ المحاذاة الذي تم الاستعلام عنه متوفّرًا، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)
تم إصلاح خطأ في ConstraintLayout كان يتسبب في حدوث عطل عند إعادة التركيب. (Ibee5a، b/158164341)
تم تغيير واجهة برمجة التطبيقات lambda التي تلي WithConstraints. والآن، بدلاً من مَعلمتَين، يحتوي على نطاق مستلِم يقدّم، بالإضافة إلى القيود و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)
تلقّى WithConstraints مَعلمة LayoutDirection (I6d6f7)
تم تعديل العلامة
ComposeFlags.COMPOSER_PARAM
لتصبحtrue
، ما سيؤدي إلى تغيير استراتيجية إنشاء الرموز البرمجية لمكوّن الإنشاء الإضافي. على مستوى عالٍ، يؤدي ذلك إلى إنشاء دوالّ @Composable باستخدام مَعلمة اصطناعية إضافية، ويتم تمريرها إلى عمليات استدعاء @Composable اللاحقة لكي يتمكّن وقت التشغيل من إدارة التنفيذ بشكلٍ سليم. هذا تغيير مهمّ يتسبب في إيقاف الإصدار الثنائي، ولكن من المفترض أن يحافظ على التوافق على مستوى المصدر في جميع حالات استخدام compose المسموح بها. (I7971c)تم تغيير LayoutCoordinates لجعل providedAlignmentLines مجموعة بدلاً من خريطة، وجعل LayoutCoordinates تنفِّذ عامل التشغيل get() بدلاً من استرداد قيمة. يسهّل ذلك على المُعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل مُعدِّل. (I0245a)
لم تعُد سمة LayoutCoordinates تحتوي على سمة position. لا تكون سمة position منطقية عند التفكير في LayoutModifiers أو التدوير أو التكبير/التصغير. بدلاً من ذلك، على المطوّرين استخدام parentCoordinates وchildToLocal() لاحتساب التحويل من أحد LayoutCoordinate إلى آخر.
تستخدِم LayoutCoordinates سمة IntPxSize لسمة size بدلاً من PxSize. تستخدِم التنسيقات أحجام وحدات بكسل صحيحة للتنسيقات، لذا يجب أن تستخدِم جميع أحجام التنسيقات أعدادًا صحيحة وليس قيمًا بنقطة عائمة. (I9367b)
تحسينات على واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)
تمت إضافة TextDirection.Content (I48f36)
عدِّل قائمة شريط الأدوات لعرض عمليات النسخ والقطع واللصق بشكل صحيح. (Id3955)
إضافة FloatingToolbar لاختيار TextField (Ie8b07)
تمت إعادة تسمية TextDirectionAlgorithm باسم TextDirection (I75ce8)
تمت إعادة تسمية TextDirection ليصبح ResolvedTextDirection (I3ff38).
أضِف HapticFeedback إلى TextField Selection. (I58050)
أضِف طرق "النسخ" و"القص" و"اللصق" إلى عنصر "اختيار نص في حقل نص". (Idb70b)
تم حذف TestTag وSemantics. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).
تم تغيير اسم حزمة Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية
AnnotatedString(builder: Builder)
إلىannotatedString(builder: Builder)
. (Ia6377)تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية
AnnotatedString.Item
إلىAnnotatedString.Range
. (I2d44d)إضافة شريط أدوات للعمليات المتعلّقة بالنص (I49d53)
أصبح LifecycleOwnerAmbient الجديد متاحًا الآن. يجب الآن أن يمتد النشاط الذي تستخدمه مع واجهة Compose UI إلى androidx.activity.ComponentActivity (أو AppCompatActivity). تم إيقاف setContent على android.app.Activity نهائيًا (Idb25a، b/153141084).
تم استبدال اسم حزمة ui-android-text (androidx.text) ب androidx.ui.text.platform من أجل التوافق مع سياسة androidx. (I42711)