مؤسسة ComposeAllowed
التعديل الأخير | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | إصدار ألفا |
---|---|---|---|---|
20 آذار (مارس) 2024 | 1.6.4 | - | - | 1.7.0-alpha05 |
التركيبة
تشتمل ميزة Compose على 7 معرّفات مجموعات Maven ضمن androidx
. تحتوي كل مجموعة
على مجموعة فرعية مستهدفة من الوظائف، ولكل منها مجموعة خاصة من ملاحظات
الإصدار.
يوضِّح هذا الجدول المجموعات والروابط لكلّ مجموعة من ملاحظات الإصدار.
مجموعة | الوصف |
---|---|
compose.animation | يمكنك إنشاء صور متحركة في تطبيقات Jetpack Compose لتحسين تجربة المستخدم. |
compose.compiler | يمكنك تحويل دوال @Composable وتفعيل التحسينات باستخدام المكوّن الإضافي لبرنامج التحويل البرمجي للغة Kotlin. |
compose.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام الوحدات الأساسية الجاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاصة بك. |
compos.material | يمكنك إنشاء واجهات مستخدم في Jetpack Compose باستخدام مكوّنات "التصميم المتعدد الأبعاد" الجاهزة للاستخدام. هذه هي نقطة دخول المستوى الأعلى في Compose، والتي تم تصميمها لتوفير مكونات تتطابق مع تلك الموضّحة في www.material.io. |
compos.material3 | يمكنك إنشاء واجهات مستخدم في Jetpack Compose باستخدام مكونات Material Design 3، وهي التطوّر القادم للتصميم المتعدد الأبعاد. يتضمّن Material 3 مظاهر ومكوّنات معدَّلة وميزات تخصيص Material You، مثل الألوان الديناميكية، وتم تصميمه ليكون متماسكًا مع النمط المرئي الجديد في Android 12 وواجهة مستخدم النظام. |
compose.runtime | الوحدات الأساسية لنموذج البرمجة وإدارة الحالة في Compose، ووقت التشغيل الأساسي الذي يستهدفه المكوّن الإضافي Compose Compiler. |
compose.ui | المكونات الأساسية لواجهة مستخدم الإنشاء اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال. |
إعلان التبعيات
لإضافة تبعية إلى Compose، عليك إضافة مستودع Maven إلى مشروعك. لمزيد من المعلومات، يمكنك الاطّلاع على مستودع Maven من Google.
أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle
لتطبيقك أو الوحدة الخاصة بك:
رائع
dependencies { implementation "androidx.compose.foundation:foundation:1.6.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.11" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.6.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.11" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول التبعيات، انظر إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
راجِع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.
الإصدار 1.7
الإصدار 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)
المساهمة الخارجية
- تمت إضافة 2 واجهة برمجة تطبيقات جديدة
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) - في هذا CL، نضيف الإجراء الدلالي
GetScrollViewportLength
حتى نتمكن من نقل المعلومات حول المكوّنات التي يتم تمريرها في رسالة الإنشاء إلى نظام a11y. تُطبق CL أيضًا استخدام الخاصية المذكورة في القوائم القابلة للتمرير الأساسية. (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
وتخزين الإحداثيات في أحد المواقع بنفسك. (إيبا) - تحسينات الأداء في
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) - في هذا التغيير، نجعل واجهات برمجة تطبيقات Snapping مستقرة. ونعمل أيضًا على تنظيف بعض الرموز البرمجية التجريبية وإضافة المزيد من النماذج إلى ميزة Snap. (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
، نقترح ضبط قيمة فارغة.
تغييرات واجهة برمجة التطبيقات
- يمكنك طرح
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
الجديدة.
إصلاح الأخطاء
- سيتحقّق
BasicTextField
الآن بشكلٍ مسبق من صحة مجموعة صغيرة من تعيينات الإزاحة عند اجتيازVisualTransformation
. ويساعد ذلك في اكتشاف أخطاء الترميز الشائعة التي تؤدي إلى استثناءات لا يمكن استردادها في وقت لاحق أو في سحب البطاقات. من خلال رمي هذه الأخطاء أثناء الإنشاء، يزيد احتمال أن يرى المطوّرون هذه الأخطاء أثناء مرحلة التطوير للمساعدة في تجنُّب تعطُّل عمليات الإنتاج. (I0fd42) - لن يتم عرض
VisualTransformation
في حال عرض فهرس غير صالح لفهرس غير صالح (b/316401857 )
الإصدار 1.6
الإصدار 1.6.4
20 آذار (مارس) 2024
تم طرح "androidx.compose.foundation:foundation-*:1.6.4
". يتضمّن الإصدار 1.6.4 هذه الالتزامات.
إصلاح الأخطاء
- لم تعد إيماءة التحديد بالضغط مع الاستمرار ثم السحب التي تنتقل خارج حدود تنسيق النص في الإطار الأول من السحب تتعطل. (Icdf90، b/325307463)
الإصدار 1.6.3
6 مارس 2024
تم طرح "androidx.compose.foundation:foundation-*:1.6.3
". يتضمّن الإصدار 1.6.3 هذه الالتزامات.
الإصدار 1.6.2
21 شباط (فبراير) 2024
تم طرح "androidx.compose.foundation:foundation-*:1.6.2
". يتضمّن الإصدار 1.6.2 هذه الالتزامات.
إصلاح الأخطاء
- إصلاح مشكلة عدم إعادة الضبط بشكلٍ صحيح في "
AnimateContentSize
" (I07051) - يجب حل المشكلة التي يتم فيها تخزين
intrinsicHeight
من النص بشكلٍ زائد في بعض الحالات. (3cd398، b/217910352)
الإصدار 1.6.1
7 شباط (فبراير) 2024
تم طرح "androidx.compose.foundation:foundation-*:1.6.1
". يتضمّن الإصدار 1.6.1 هذه الالتزامات.
إصلاح الأخطاء
- إصلاح مقياس الشبكة المتداوَل عند تمرير مؤشر الماوس فوق الحد المسموح به (bffc39)
- أضِف فحصًا للتنسيق ذي الأبعاد الكبيرة. (e74af5)
- إصلاح موضع العناصر بحجم 0 في بداية الشبكة المتدرجة. (785f94)
- يمكنك استدعاء onRelease بنفس الترتيب مثل على onforgotten. (31ce3b)
الإصدار 1.6.0
24 كانون الثاني (يناير) 2024
تم طرح "androidx.compose.foundation:foundation-*:1.6.0
". يتضمّن الإصدار 1.6.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 1.5.0
- التعديل الجديد
Modifier.anchoredDraggable
الذي يتيح إمكانية السحب والمؤثرات الحركية بين مجموعة محددة مسبقًا من علامات الارتساء تم تصميم هذا المعدِّل ليكون بديلاً عنModifier.swipeable
. تعرَّف على كيفية استخدامها ونقل البيانات منModifier.swipeable
في دليل نقل البيانات. - تمت إضافة وظيفة السحب والإفلات بين التطبيقات والمكونات. الرجوع إلى
DragAndDropTarget
وModifier.dragAndDropSource
وواجهات برمجة التطبيقات الأخرى للبدء Modifier.draggable2D
هو المعدِّل الجديد الذي يتيح السحب الثنائي الأبعاد بسهولة. اطّلِع على النموذج.- تمت إضافة
AndroidExternalSurface
وAndroidEmbeddedExternalSurface
لتسهيل إضافة مكونات تعتمد على السطح في الإنشاء. - تغييرات وتحسينات متنوعة على واجهة برمجة التطبيقات في
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)أصبحت واجهات Foundation Tooltip API الآن
@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
API (للبطاقات والشرائح) الآن على واجهة برمجة تطبيقات مستندة إلى الخانة (وفقًا لما تنص عليه Compose) بدلاً من الحالات التي تستند إلى فئة البيانات. هذا تغيير قد يؤدي إلى عطل. يُرجى الاطّلاع على العرض التوضيحي ونموذج الرمز للحصول على أمثلة حول كيفية استخدام واجهة برمجة التطبيقات الجديدة. (Ia8943)
إصلاح الأخطاء
- تنفيذ رموز التجزئة "يساوي" و"رمز التجزئة" للسمة
PageSize.Fixed
(Ie3ede، b/300134276) - تم إصلاح خطأ يؤدي إلى عدم تقليص حجم تنسيق
BasicText
عند تغييرminWidth
وانخفاضminWidth
عن قيود القياس الأوليmaxWidth
(Idb19c). - يجب إضافة توافق العارض لـ "تدرج التدرج" في
ArcLine
. (I4d5bb) - إصلاح مشكلة التوافق الثنائي عند تغيير إدراج النافذة (Iee695)
- يمكنك إزالة الطبقة الأساسية الخاصة بشريحة/زر 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)
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة
onDrawDragShadow
lambda إلىdrawDragDecoration
فيModifier.dragAndDrawSource
، كما تمت إعادة تسمية معلَمة الحجم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
. ويجب أن يتم الحساب باستخدام معلومات التخطيط ويتم تقديمه من خلال الأسلوب أو إزاحة الانطباق. (If320c)
التغييرات في السلوك
- تستخدم ميزة Compose الآن ضبط حجم الخط غير الخطّي لتسهيل القراءة وتسهيل الاستخدام. عندما يكون حجم الخط أكبر من 100% في إعدادات النظام، سيزيد حجم النص الصغير بشكل طبيعي، ولكن سيزيد حجم النص الكبير بالفعل قليلاً. وسيتم أيضًا ضبط ارتفاعات الأسطر المحدّدة في مقدِّم الخدمة تلقائيًا لتظل متناسبة مع الارتفاع المقصود للمقياس بنسبة 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
. تحتوي ميزة Compose الآن على نسختها الخاصة منmaximumFlingVelocity
والتي تنطبق الآن علىDraggable
. (Ibf974) - تم إيقاف حِمل البيانات الزائدة في
Pager
وPagerState
نهائيًا. (Iea07e) - تمت إضافة
BasicTooltipBox
إلىcompose.foundation
وتعديلPlainTooltipBox
وRichTooltipBox
لاستخدامTooltipBox
مع العناصر الجديدةPlainTooltip
وRichTooltip
القابلة للإنشاء. (I79e1d)
الإصدار 1.6.0-alpha04
23 آب (أغسطس) 2023
تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha04
". يتضمّن الإصدار 1.6.0-alpha04 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- إضافة واجهة
ReusableComposition
لإدارة دورة الحياة وإعادة استخدام التركيبات الفرعية. (I812d1، b/252846775) - تمت ترقية
Modifier.focusGroup
إلى واجهات برمجة تطبيقات مستقرة. (I7ffa3) - أضِف أحمالًا زائدة في
BasicTextField2
تقبل قيمة غير قابلة للتغيير ومعاودة اتصال لتغيير تلك القيمة، تمامًا مثل واجهة برمجة تطبيقاتBasicTextField
الحالية. (I3f2b8) - أصبحت
GridItemSpan::currentLineSpan
الآن واجهة برمجة تطبيقات ثابتة. (Icc29c) - أصبحت لوحة الرسم التي تقبل
contentDescription
واجهة برمجة تطبيقات ثابتة الآن. (Ib3d29) - تم طرح
viewportSize
فيScrollState
، وهي طريقة لمعرفة حجمviewPort
للمكوِّن الذي يستخدمScrollState
بعد حدوث القياس. (I8b85a، b/283102682) - تم إصلاح مشكلة عدم مطابقة الجلب المُسبَق في "جهاز النداء" مع السلوك في "المشاهدات". (I93352، b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
ثابت الآن.- تمّت إزالة واجهة برمجة التطبيقات
Deprecated Modifier.consumedWindowInsets
API الآن. يمكنك استخدامModifier.consumeWindowInsets
كبديل. (Id72bb)
- تمّت إزالة واجهة برمجة التطبيقات
الإصدار 1.6.0-alpha03
9 آب (أغسطس) 2023
تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha03
". يتضمّن الإصدار 1.6.0-alpha03 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة حِمل السمة
LazyLayout
، وتقبل دالة lambdaLazyLayoutItemProvider
، وهي ليست كائنًا عاديًا كما كانت في السابق. تم إيقاف التحميل الزائد السابق. (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*
API بالكامل. (I6c93a وb/274661182 وb/267235947 وb/277380808) - لم يعُد
SoftwareKeyboardController
وLocalSoftwareKeyboardController
في مرحلة تجريبية.LocalSoftwareKeyboardController
هي أيضًا الآن قيمةCompositionLocal
مناسبة. (I4c364) - توفّر
Modifier.transformable
الآن قيمة pan 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
جديدة في الإصدار الأساسي. يمكن استخدامها لبناء مكونات يمكن سحبها بين حالات منفصلة، مثل الأوراق السفلية المشروطة. تحلّ واجهة برمجة التطبيقات هذه محلّ واجهة برمجة التطبيقاتSwipeable
في Material. (I4a2ed)
تغييرات واجهة برمجة التطبيقات
- دعم
InputConnection#requestCursorUpdates
(I0c69b) - تم تقديم
scrollAnimationSpec
للسماح بمواصفات الصور المتحركة المخصّصة. تم تعديلBringIntoViewCalculator
إلىBringIntoViewScroller
. (Idb741) - أضِف النوع
ResourceResolutionException
إلى عناصر الالتفاف التي يتم طرحها عند محاولة تحميل مواد عرض صور نقطية مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44 وb/230166331 وb/278424788) - تمت إضافة خصائص وإجراءات دلالية لإتاحة ترجمة النص. (I4a6bc)
- تم تقديم واجهة برمجة تطبيقات
BringIntoViewCalculator
يمكن استخدامها لتخصيص كيفية استجابة مكوّنات مثلScrollable
لطلباتbringIntoView
. تم تغيير الحمل الزائد القابل للتمرير لقبول مثيل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.Node
، بما في ذلكModifier.clickable
وModifier.draggable
وModifier.scrollable
ومعدِّلات التنسيق وغيرها، ما يقلّل من أعباء التعديل الأوّلي. - تحسينات في ثبات أجهزة النداء. لقد تم إصلاح العديد من الأخطاء.
- تتوفّر معلَمات
pageCount
الآن فيPagerState
بدلاً من جهاز النداء نفسه.
الإصدار 1.5.0-rc01
26 تموز (يوليو) 2023
تم طرح "androidx.compose.foundation:foundation-*:1.5.0-rc01
". يحتوي الإصدار 1.5.0-rc01 على هذه الالتزامات.
إصلاح الأخطاء
تتوفّر فحص اختياري لاقتراح نقل استدعاءات
mutableStateOf()
إلى الأنواع المتخصّصة المقابلة لها في الإصدارات الأساسية. معرِّف الوبر هوAutoboxingStateCreation
. في السابق، كان يتم تفعيل هذا الفحص تلقائيًا لجميع المشاريع. للاطّلاع على هذا التحذير في محرّر "استوديو Android" ونتائج الوراء في مشروعك، يمكنك تغيير درجة الخطورة من تحذيرية إلى تحذيرية (أو أعلى) من خلال تعريف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
عند إنشاء سلوك سريع بسرعة. استخدِم هذه المَعلمة لتحديد حدّ موضعي للانطباق القصير في جهاز النداء. (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
على جهاز النداء. (I7379e، b/275579012) - لإضافة
FlowRowScope
وFlowColumnScope
(I54fe2)
إصلاح الأخطاء
- يمكنك استخدام الطلبات للحصول على دلالات على "النص" عندما لا يحدث عطل بسبب القيود على
minWidth
وminHeight
. (Ibd072) - تم إصلاح الانحدار حيث لا تظهر لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة عنصر
Dialog
القابل للإنشاء. (I82551، b/262140644)
الإصدار 1.5.0-alpha03
19 نيسان (أبريل) 2023
تم طرح androidx.compose.foundation:foundation:1.5.0-alpha03
وandroidx.compose.foundation:foundation-layout:1.5.0-alpha03
. يتضمّن الإصدار 1.5.0-alpha03 هذه الالتزامات.
يفعِّل هذا الإصدار حزمة عرض النص الجديدة في Compose. تم تحسين أداء الحزمة الجديدة، ومن المفترض ألا تلاحظ أي تغييرات مرئية.
إذا لاحظت تغييرات في النص المعروض، يمكنك تصحيح الأخطاء من خلال ضبط NewTextRendering1_5 = false
للتأكّد من اختلاف السلوك. سيؤدي ضبط هذه الإعدادات إلى فرض إعادة التركيب. يُرجى الإبلاغ عن أي اختلافات في السلوك على أنها أخطاء.
وستتم إزالة علامة تصحيح الأخطاء قبل إطلاق الإصدار 1.5 التجريبي 1.5.(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
على نص معيّن باستخدام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
على نص معيّن باستخدام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/251429934 وb/251429934). - أصبحت الآن دالة إنشاء
AndroidFont
معvariationSettings
واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من أدوات وصف الخطوط. (I5adcc، b/261565807) - تم طرح واجهة برمجة تطبيقات
PinnableContainer
وتم نشرها من خلال القوائم البطيئة من خلال مقطوعة موسيقية محلية تسمح بتثبيت العنصر الحالي. وهذا يعني أنه لن يتم التخلص من هذا العنصر عند تمريره بعيدًا عن طريقة العرض. على سبيل المثال، سيتم تثبيت العنصر الذي يتم التركيز عليه حاليًا بواسطةModifier.focusable()
باستخدام هذه الآلية. (Ib8881 وb/259274257 وb/195049010) - تم إعادة كتابة طريقة استجابة العناصر القابلة للتمرير مع
bringIntoViewRequesters
والعناصر القابلة للتركيز من أجل وضع نموذج أفضل لتعقيد هذه العمليات والتعامل مع المزيد من الحالات الهامشية. (I2e5fe، b/241591211، b/192043120، b/237190748، b/230756508، b/239451114) - المزيد من قابلية القيم الفارغة للدوال المخفية التي تم إيقافها نهائيًا (Ibf7b0)
- تمت إضافة
TextMotion
التجريبي إلىTextStyle
لتحديد نص إما أن يكونStatic(default)
أو متحركًا. استخدِمTextMotion.Animated
إذا أردت تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7) - إضافة
TextFieldFocusModifier
لإصلاح سلوك التنقل في التركيز لنظام Android الأساسي (I00303) - تم استبدال الوسيطة
maxSize: IntSize
فيdrawText
بـsize: Size
ليتم تضمينها مع دوالDrawScope
الأخرى. تم ضبطsize
علىSize.Unspecified
تلقائيًا، وبالتالي لن يؤدي ذلك إلى تغيير السلوك التلقائي السابق. (Icd27d)
إصلاح الأخطاء
- تعديلات في قواعد الفيزياء في
SnapFlingBehaviour
لإضفاء مظهر طبيعي أكثر.
مشكلة معروفة
- عند التحديث من
androidx.compose.foundation:1.4.0-alpha03
إلىandroidx.compose.foundation:1.4.0-alpha04
، قد يظهر لك خطأjava.lang.NoSuchFieldError
. يمكنك الاطّلاع على هذا الرابط حيث تم الإبلاغ عن المشكلة منذ البداية. تم إرسال إصلاح، وسيكون متاحًا في تحديث Compose التالي. لحلّ هذه المشكلة، يُرجى تحديث مكتبتَيandroidx.compose.material
وandroidx.compose.material3
إلى أحدث إصدار(1.1.0-alpha04) أو الرجوع إلى إصدار سابق من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 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- في اختبارات واجهة المستخدم التي تستخدم قاعدة إنشاء، لن يتم إرسال عمليات المتابعة التي تم استئنافها أثناء استدعاءات
withFrameNanos
إلا بعد انتهاء تنفيذ جميع عمليات معاودة الاتصال بالإطار. يتطابق هذا الأمر مع سلوك Compose عند التشغيل بشكل طبيعي. ومع ذلك، قد لا تنجح الاختبارات التي تعتمد على السلوك القديم. من المفترض أن يؤثر ذلك فقط في الرمز الذي يستدعي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
، وهي طريقة للتحكم في طريقة عمل الانطباق في سلوك الانتقال السريع على جهاز النداء. (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
API من واجهات برمجة التطبيقات Lazy* API (I12197) - تم إدخال مَعلمة في واجهات برمجة التطبيقات Lazy API لإنشاء عناصر ووضعها خارج إطار العرض (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). - يتم الآن إنشاء الواجهات في مكتبات الإنشاء باستخدام طرق الواجهة التلقائية 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
. تسمح بتمثيل قائمة من القيم عبر فواصل زمنية متعددة. سيكون من المفيد عندما تريد تعريف dsl الخاص بك مشابهًا للتنسيق الذي يستخدمه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()
التجريبي حتى يتمكّن المطوّرون من التحكّم في أداة IME من خلال التمرير. (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) - تقبل الفقرة والفقرة المتعددة الآن المَعلمتَين 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) - أضِف خطًا جديدًا واصف الخط(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)
المساهمة الخارجية
- تم التحديث لاستخدام coroutines في Kotlinx 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
الآن استخدام تنسيق عكسي. (I6d7d7 وb/215572963 وb/211753558) - أضِف طريقة
WindowInsets.only()
للسماح للمطوّرين بتضمين أبعاد من WindowInsets فقط. (I14c94، b/217768486) تمت إضافة
ComposableTarget
وComposableTargetMarker
وComposableOpenTarget
، ما يتيح إعداد تقارير حول وقت تجميع البيانات عند استدعاء دالة قابلة للإنشاء تستهدف تطبيق لم يكن مصمّمًا لاستخدامه.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية بواسطة المكوّن الإضافي لإنشاء المحتوى، ولذلك يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً نادرًا . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام تطبيق مخصّص، أو دوال مجرّدة قابلة للإنشاء (مثل طُرق الواجهة)، أو حقول أو متغيّرات عمومية قابلة للإنشاء (يتم استنتاج المتغيرات والمَعلمات المحلية)، أو عند استخدام
ComposeNode
أو دوال ذات صلة قابلة للإنشاء.بالنسبة إلى التطبيقات المخصّصة، تحتاج الدوال القابلة للإنشاء التي تستدعي
ComposeNode
أوReusableComposeNode
إلى إضافة تعليق توضيحيCompoableTarget
للدالة وأي أنواع من مَعلمات lambda قابلة للإنشاء. ومع ذلك، ننصحك بإنشاء تعليق توضيحي يتضمّن تعليقًا توضيحيًا باستخدامComposableTargetMarker
ثم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً منComposableTarget
مباشرةً. إنّ التعليق التوضيحي القابل للإنشاء والذي تم وضع علامةComposableTargetMarker
عليه يعادلComposbleTarget
الذي يحمل اسمًا مؤهّلاً بالكامل للفئة كمَعلمة applier. للاطّلاع على مثال على استخدامComposableTargetMarker
، راجِعanroidx.compose.ui.UiComposable
. (I38f11)
إصلاح الأخطاء
- يُسمح الآن بتمرير إزاحة التمرير السلبي إلى
LazyGridState.scrollToItem()
وLazyGridState.animateScrollToItem()
. (I025c6، b/211753558) - دعم تحميل الخط غير المتزامن في حقل TextField (Icc4bf، b/214587005)
الإصدار 1.2.0-alpha03
9 شباط (فبراير) 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha03
وandroidx.compose.foundation:foundation-layout:1.2.0-alpha03
. يحتوي الإصدار 1.2.0-alpha03 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف طُرق
notifyFocusedRect
فيTextInputSession
وTextInputService
نهائيًا ولن يتم طلبها. يمكنك استخدامBringIntoViewRequester
كبديل. (Ia4302 وb/192043120 وb/216842427 وb/178211874) - تم تفعيل الرسوم المتحركة لعناصر الشبكات الكسولة باستخدام Modifier.animateItemPosition(). (Ib6621، b/211753218)
- ينشر
BringIntoViewRequester
الآن الطلبات إلى جهاز Android View المستضيف. (Ia7a51) - أصبح "
FontFamilyResolver
" متاحًا الآن عبرLocalFontFamilyResolver.current
- .
- تمت إضافة
createFontFamilyResolver(context)
وcreateFontFamilyResolver(context, coroutineScope)
لإنشاء برامج تعيين FontFamily جديدة خارج نطاق استخدام الكتابة. - أصبحت الفقرة والفقرة المتعددة الآن
FontFamily.Resolver
. - يحتوي
TextLayoutResult.layoutInput.fontFamilyResolver
الآن على برنامج التعيين المستخدَم لهذا التنسيق، وقد تم إيقافه نهائيًاTextLayoutResult.layoutInput.resourceLoader
لأنّه لم يعُد مستخدمًا. (Id5a45، b/174162090)
- تمت إضافة
- تمت إضافة
AndroidFont
، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة من أدوات وصف موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خلفية خاصة بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز اختياريًا، أو تحميل خط من مورد لا توفّره مصانع الخطوط الحالية.- تم توسيع واجهة برمجة التطبيقات
Font.ResourceLoaded
لتتيح تحميل الخطوط الاختيارية وغير المتزامنة. لا يُنصح بأن يستخدم مطوِّرو التطبيقات واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، راجع AndroidFont. - دالة الإضافة
Font.AndroidResourceLoader
تتيح إنشاءFont.ResourceLoader
عندما تكون خارج التركيب. - تمت إضافة مَعلمة
loadingStrategy
إلى الخطوط المستندة إلى الموارد للسماح بالتحميل غير المتزامن عندما تشير خطوط الموارد إلى خطوط XML قابلة للتنزيل. (Ie5aea، b/174162090)
- تم توسيع واجهة برمجة التطبيقات
- تم إيقاف الدالة الإنشائية
Typeface(FontFamily)
نهائيًا. تم استخدام هذه البيانات سابقًا لتحميل الخطوط مسبقًا، والتي قد تستغرق ما يصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. مع الخطوط القابلة للتنزيل، قد يتم حظر هذه المكالمة لمدة 10 ثوان. استخدِمFontFamilyResolver.preload
بدلاً من ذلك.- تم إيقاف
fontResource(FontFamily): Typeface
نهائيًا. تم استخدام هذه البيانات سابقًا لتحميل الخطوط مسبقًا، والتي قد تستغرق ما يصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. بدلاً من ذلك، استخدِمFontFamilyResolver.preload
(If8e7c، b/174162090).
- تم إيقاف
- يمكنك الآن تحديد نوع المحتوى للعناصر
LazyVerticalGrid
. تقبل الآن دوال السلع/العناصر علىLazyGridScope
هذه المَعلمة. يساعد توفير هذه المعلومات تركيب العنصر في إعادة استخدام المنطق لجعله أكثر كفاءة و إعادة استخدام المحتوى بين العناصر من النوع المشابه فقط. (I7b355، b/215372836) - لدى
LazyListLayoutInfo
وLazyGridLayoutInfo
الآن مواقع جديدة:viewportSize
وorientation
وreverseLayout
(Ifc8ed وb/200920410) - يمكنك الآن تحديد نوع المحتوى لعناصر LazyColumn/LazyRow - تقبل دوال العناصر/العناصر في LazyListScope هذه المَعلمة. يساعد توفير هذه المعلومات تركيب العنصر في إعادة استخدام المنطق لجعله أكثر كفاءة و إعادة استخدام المحتوى بين العناصر من النوع المشابه فقط. (I26506)
- إنّ دالة إنشاء
SubcomposeLayoutState
التي تقبلmaxSlotsToRetainForReuse
تم إيقافها نهائيًا الآن. بدلاً من ذلك، هناك دالة إنشاء جديدة تقبلSubcomposeSlotReusePolicy
- وهي واجهة جديدة تسمح بمزيد من التحكم الدقيق في الخانات التي يجب الاحتفاظ بها لإعادة الاستخدام في المستقبل. (I52c4d) - إضافة تعديلات لـ WindowInsets، لكل من المساحة المتروكة وتغيير الحجم. يسمح هذا لبعض المحتوى بالتوسع إلى منطقة البداية، مع إبقاء المحتوى الأساسي خارج منطقة الداخلية. على سبيل المثال، يمكن استخدام windowInsetsPadding لإخلاء مساحة المحتوى لتجنب المناطق التي قد تكون مغطاة كليًا أو جزئيًا. (Id0395، b/213942085)
إصلاح الأخطاء
- ستبقى الحقول النصية الآن فوق لوحة المفاتيح
عند التركيز عليها وتظهر لوحة المفاتيح، عندما يكون وضع "الإدخال الأولي" هو
ADJUST_PAN
. (I8eaeb، b/190539358، b/192043120) - يستخدم الكمبيوتر المكتبي مقطوعات موسيقية محلية لـ
FontFamily.Resolver
.- تم إيقاف سطح المكتب
FontLoader
نهائيًا - مصنع "
createFontFamilyResolver
" جديد على الكمبيوتر المكتبي (I6bbbb، b/174162090)
- تم إيقاف سطح المكتب
- لم يعُد وميض نوع إدخال لوحة المفاتيح اللينة عند تغيير التركيز بين الحقول النصية. (I1bf50، b/187746439)
- لم تعُد الحقول النصية تتطلب ضغطًا إضافيًا على الرجوع عند ظهور مقبض المؤشر. (Ideb4b، b/205726883)
- تم تحسين سلوك مكبّر اختيار النص ليلائم مكبّر النظام الأساسي. (Idd918، b/206833278)
الإصدار 1.2.0-alpha02
26 يناير 2022
تم طرح androidx.compose.foundation:foundation:1.2.0-alpha02
وandroidx.compose.foundation:foundation-layout:1.2.0-alpha02
. يحتوي الإصدار 1.2.0-alpha02 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
NonRestartableComposable
إلى الأساليب التي تحتوي على أعباء زائدة من الطرق الحالية بدون منطق معقد. وهذا من شأنه أن يقلل من عمليات التحقق من التذكر التي أنشأها التجميع البرمجي (يساوي) لجميع المعلمات التي تتكرر في الدالة الداخلية التي يتم استدعائها. (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)
التعديلات على المهام التابعة للتبعية
- وتعتمد الآن على لغة
1.6.10
في Kotlin.
الإصدار 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)
- قيمة ثابتة من RTL في
LazyVerticalGrid
(aosp/1931080، b/207510535)
الإصدار 1.1.0
9 شباط (فبراير) 2022
تم طرح androidx.compose.foundation:foundation:1.1.0
وandroidx.compose.foundation:foundation-layout:1.1.0
. يتضمّن الإصدار 1.1.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 1.0.0
- دعم ثابت لنظام التشغيل Android 12 تأثير التمرير الزائد
- تحسينات على تغيير حجم ناحية اللمس
- يُرجى العلم أنّه في ما يتعلق بالإصدار 1.0 من Compose، ستوسِّع مكوّنات Material مساحة التصميم الخاصة بها لاستيفاء إرشادات إمكانية الوصول الخاصة بمواد العرض لحجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس المستهدفة للزر إلى حدّ أدنى للحجم يبلغ 48x48 بكسل مستقل الكثافة، حتى في حال ضبط حجم الزر ليكون أصغر. يعمل هذا على مواءمة Compose Material مع سلوك مكونات التصميم المتعدد الأبعاد نفسه، مما يوفر سلوكًا متسقًا إذا كنت تمزج بين طرق العرض والإنشاء. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات تسهيل استخدام مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكونات 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 على هذه الالتزامات.
إصلاح الأخطاء
- تم التعديل لإتاحة Compose Material 1.1.0-rc03
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-rc01
وandroidx.compose.foundation:foundation-layout:1.1.0-rc01
. يحتوي الإصدار 1.1.0-rc01 على هذه الالتزامات.
إصلاح الأخطاء
- يُسمح الآن بتمرير إزاحة التمرير السلبي إلى
LazyListState.scrollToItem()
وLazyListState.animateScrollToItem()
. (Iceb90، b/184252837) - تم إصلاح خطأ أدى إلى فقدان إجراءات التمرير المتعلّق بتسهيل الاستخدام (I7cbfb)
الإصدار 1.1.0-beta04
1 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta04
وandroidx.compose.foundation:foundation-layout:1.1.0-beta04
. يتضمّن الإصدار 1.1.0-beta04 هذه الالتزامات.
الميزات الجديدة
- تم تعديل هذه الصفحة لتتوافق مع
1.6.0
لغة Kotlin.
تغييرات واجهة برمجة التطبيقات
- تم محو إمكانية القيم الفارغة في
androidx.core.view
(I7078a، b/204917439) - تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح استخدام PointerInputchange ككل أو معرفة ما إذا تم استهلاكها أم لا. (I2e59d)
- يتم عرض تطبيق مصغّر للمكبِّر عند سحب المؤشر أو مقابض الاختيار داخل الحقول النصية. (I5391e، b/203781358)
إصلاح الأخطاء
- إصلاح مقابض النص التي لا تتحرك عند تغيير مستوى رؤية أداة IME. (I25f2e)
الإصدار 1.1.0-beta03
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta03
وandroidx.compose.foundation:foundation-layout:1.1.0-beta03
. يتضمّن الإصدار 1.1.0-beta03 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دعم المسافات الأفقية إلى ميزة LazyVerticalGrid. (I7e2fa، b/176758183)
تمت إضافة إمكانية إضافة إمكانية تحريك مواضع عناصر القوائم الكسولة. يتوفّر مفتاح تعديل جديد ضمن LazyItemScope باسم
Modifier.animateItemPlacement()
. مثال على الاستخدام:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- عند توفير مفتاح من خلال
LazyListScope.item
أوLazyListScope.items
، ستفعِّل هذه الأداة الصور المتحركة لإعادة ترتيب العناصر. بالإضافة إلى إعادة ترتيب العناصر، ستتم أيضًا إضافة جميع التغييرات الأخرى في الموضع الناتجة عن أحداث مثل تغييرات الترتيب أو المحاذاة. (I59e7b، b/150812265)
- عند توفير مفتاح من خلال
الإصدار 1.1.0-beta02
3 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta02
وandroidx.compose.foundation:foundation-layout:1.1.0-beta02
. يتضمّن الإصدار 1.1.0 -beta02 هذه الالتزامات.
إصلاح الأخطاء
- ستتأخر الآن الأمواج والمؤشرات الأخرى فقط إذا كانت داخل حاوية
Modifier.scrollable()
، بدلاً من أن تتأخر دائمًا بالنسبة إلى حدث معطل. (Ibefe0، b/203141462) - تمت إضافة واجهة برمجة تطبيقات BringIntoView التجريبية التي تتيح لك إرسال طلب إلى الوالدَين ليتمكنوا من التمرير لعرض أحد العناصر (Ib918d، b/195353459).
المساهمة الخارجية
- تمت إضافة
Modifier.pointerHoverIcon
(I95f01)
الإصدار 1.1.0-beta01
27 تشرين الأول (أكتوبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-beta01
وandroidx.compose.foundation:foundation-layout:1.1.0-beta01
. يتضمّن الإصدار 1.1.0-beta01 هذه الالتزامات.
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات BringIntoView التجريبية التي تتيح لك إرسال طلب إلى الوالدَين ليتمكنوا من التمرير لعرض أحد العناصر (Ib918d، b/195353459).
الإصدار 1.1.0-alpha06
13 تشرين الأول (أكتوبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha06
وandroidx.compose.foundation:foundation-layout:1.1.0-alpha06
. يحتوي الإصدار 1.1.0-alpha06 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عبء زائد بدون أطفال في Layout، مع تحسين الكفاءة (Ib0d9a).
- تعرض
SemanticsNodeInteraction.performSemanticsAction
الآنSemanticsNodeInteraction
الذي تم استدعاء الدالة فيه. (I9e5db) - تمت إضافة
performScrollToNode(matcher: SemanticsMatcher)
الذي يمرّر حاوية قابلة للتمرير إلى المحتوى الذي تتم مطابقته من خلال المُطابق المحدد. (Ic1cb8)
الإصدار 1.1.0-alpha05
29 أيلول (سبتمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha05
وandroidx.compose.foundation:foundation-layout:1.1.0-alpha05
. يحتوي الإصدار 1.1.0-alpha05 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة المؤشرات السابقة التجريبية إلى PointerEventChange. (Ic1fd8 وb/197553056 وb/199921305)
إصلاح الأخطاء
- تم إصلاح إمكانية الوصول إلى العناصر القابلة للتمرير (الكسول وغير الكسول) في ما يتعلق بالتمرير (I6cdb0)
الإصدار 1.1.0-alpha04
15 أيلول (سبتمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha04
وandroidx.compose.foundation:foundation-layout:1.1.0-alpha04
. يحتوي الإصدار 1.1.0-alpha04 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
performGesture
وGestureScope
نهائيًا، وقد تم استبدالهما بـperformTouchInput
وTouchInjectionScope
. (Ia5f3f، b/190493367) - تمت إضافة
touchBoundsInRoot
إلىSemanticsNode
يتضمّن الحد الأدنى لحجم ناحية اللمس المستهدفة لكي يتمكّن المطوّرون من التأكّد من أنّ مساحات اللمس تستوفي الحدّ الأدنى لتسهيل الاستخدام. (I2e14b، b/197751214)
إصلاح الأخطاء
- أتحنا إمكانية الانتقال الزائد للانتقال على الأجهزة التي تعمل بنظام التشغيل Android 12. (Iccf3c، b/171682480)
الإصدار 1.1.0-alpha03
1 أيلول (سبتمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.1.0-alpha03
وandroidx.compose.foundation:foundation-layout:1.1.0-alpha03
. يتضمّن الإصدار 1.1.0-alpha03 هذه الالتزامات.
الميزات الجديدة
- تم تعديل سياسة الإنشاء
1.1.0-alpha03
للاعتماد على لغة البرمجة1.5.30
بلغة Kotlin. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تأثير التوهج للتمرير. تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة تعملOver ScrollConfiguration للسماح بضبط التأثير المرئي الذي يتم عند النقر فوقه. توفير قيمة فارغة لإيقاف تأثير التمرير الزائد. (I0c304، b/171682480)
- يحتوي AuePointerEventScope الآن على withSession() وwithSessionOrNull() (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 + الصورة لإنشاء معلَمة عاملة تصفية اختيارية (Ie4fb0، b/180311607) - يمحو TextField الآن التحديد عند الضغط على زر الرجوع، مما يتطابق مع سلوك Android EditText. (I3ca16، b/174173645)
- إضافة مقبض المؤشر. (I07a82، b/173016579)
إصلاح الأخطاء
- إنّ التنقّل من خلال الإجراءات الدلالية للقوائم البطيئة ومكوّنات التمرير العادي أصبح الآن متحركًا (Id9066، b/190742024).
المساهمة الخارجية
- تقبل
LazyVerticalGrid
الآن مَعلمات الترتيب الأفقي والرأسي على حدّ سواء. (If9c92)
الإصدار 1.0
الإصدار 1.0.5
3 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.0.5
وandroidx.compose.foundation:foundation-layout:1.0.5
. يتضمّن الإصدار 1.0.5 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مثيلات تتبُّع الأعطال المشتقّة. (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 هذه الالتزامات.
التعديلات على المهام التابعة للتبعية
- تم التعديل للاعتماد على
1.5.31
في لغة البرمجة Kotlin
الإصدار 1.0.3
29 أيلول (سبتمبر) 2021
تم طرح androidx.compose.foundation:foundation:1.0.3
وandroidx.compose.foundation:foundation-layout:1.0.3
. يتضمّن الإصدار 1.0.3 هذه الالتزامات.
التعديلات على المهام التابعة للتبعية
- تم التعديل للاعتماد على
1.5.30
في لغة البرمجة Kotlin
الإصدار 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
. لا تزال ميزة إنشاء 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 هذه الالتزامات.
التعديلات على المهام التابعة للتبعية
- تم التعديل للاعتماد على لغة
1.5.21
في Kotlin.
الإصدار 1.0.0
28 تموز (يوليو) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0
وandroidx.compose.foundation:foundation-layout:1.0.0
. يتضمّن الإصدار 1.0.0 هذه الالتزامات.
الميزات الرئيسية للإصدار 1.0.0
وهذا هو الإصدار الثابت الأول من Compose. يُرجى الاطّلاع على مدونة إصدارات Compose الرسمية لمعرفة المزيد من التفاصيل.
المشاكل المعروفة
في حال استخدام Android Studio Bumblebee Canary 4 أو AGP
7.1.0-alpha04
/7.1.0-alpha05
، قد تواجه العطل التالي: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) - تغيير enum Role Role وLiveRegionMode إلى فئات مضمّنة باستخدام دالة إنشاء خاصة (Id1890)
- يتم تحويل الكتابة بالأحرف اللاتينية الكبيرة في لوحة المفاتيح إلى فئة مضمّنة. (Id5a1c)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
إصلاح الأخطاء
- والآن، عند تحديد المفاتيح الفريدة لعناصر LazyColumn/الصف، سيتم الاحتفاظ بموضع التمرير بناءً على المفتاح، ما يعني أنه في حال إضافة/إزالة عناصر قبل العنصر المرئي الحالي، سيتم الاحتفاظ بالعنصر الذي لديه المفتاح المحدّد كأول عنصر مرئي. (Id263f، b/184257857)
- الثوابت الرئيسية هي @BETAComposeUiApi حاليًا. يمكن أن يؤدي استهلاك التعليمات البرمجية إلى إعلان ثوابت خاصة قبل الاستقرار. (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>
واصفًا للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، يجب وصف السمةLandroidx/compose/runtime/SlotTable;
للصفandroidx.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 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- يتم استبدال تعداد Nested ScrollSource بفئة مضمّنة. (Ie321b، b/187055290)
- تمت إعادة هيكلة استخدامات التعداد للفئات المضمّنة لتجنّب حدوث مشاكل ذات شمولية عند إضافة عبارات عند إضافة قيم تعداد جديدة. (I2b5eb)
- لإضافة مهلة النقر إلى المحتوى القابل للنقر / التبديل لمنع عرض تمويج أثناء التمرير / السحب (Ia2704، b/168524931)
- لم تعد خصائص ContentDescription والدلالات النصية قيمًا مفردة بل قوائم. وهذا يمكّن من دمجها كما هي بدلاً من التسلسلات. تم أيضًا توفير واجهات برمجة تطبيقات اختبارية أفضل للاستفادة من هذه التغييرات (Ica6bf، b/184825850)
- تم إيقاف
Modifier.focusModifier()
نهائيًا واستبداله بـModifier.focusTarget()
(I6c860). - يتم استبدال تعداد KeyboardType بفئة مضمّنة. (I73045، b/187055290)
- تم استبدال تعداد
FocusState
بواجهةFocusState
(Iccc1a، b/187055290). - يتم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
- أصبحت دوال
AnnotatedString.withAnnotation
الآن MetadataTextApi بدلاً من تجريبية ComposeApi. (I0cd0a)- أصبحت الآن دالة إنشاء وحدة TextUnit مع TextUnitType لهذا النوع من "تجريبية TextApi" بدلاً من تجريبية ComposeApi.
- أصبحت PaddingValues الآن
@Stable
بدلاً من@Immutable
(I88c50)
إصلاح الأخطاء
- إصلاح أعطال الضغط المطوّل على المنطقة الفارغة في نص غير فارغ. (I33ab5، b/187437299)
- إظهار شريط الأدوات بعد SelectAll (I495d9، b/185919613)
- إصلاح الحاويات القابلة للتمرير التي تقتطع عناصرها الثانوية على المحور المتقاطع. كان من السهل إعادة إنتاجه إذا كان لديك LazyRow مع عناصر البطاقة. والآن لن يتم اقتصاص الظل. (Icb635، b/186318448)
- تم إصلاح مشكلة توقُّف الموجات / المؤشرات الأخرى أحيانًا عند نقرة طويلة عند استخدام Modifier.combinedClickable (I2298c، b/186223077)
- الآن سيستفيد
detectDragGesures
وdetectVerticalGestures
وdetectHorizontalGestures
من تغيير الموضع تلقائيًا، وليس هناك حاجة إلى استدعاء change.consumePosition Change في عمليات معاودة الاتصال 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)
إصلاح الأخطاء
- سيحافظ الآن العمود الكسول/الصف على ما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (وليسان تم التخلص منهما) حتى في حال الانتقال للخارج. ويسمح هذا للمكون بإعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد مما يحسن أداء التمرير. (Ie5555)
- إزالة الخلفية بالألوان (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)
- تمت إضافة واجهات برمجة تطبيقات AccessibilityInfo وCOItemInfo API التي تتيحان وضع علامة على المجموعة وعناصرها الخاصة بخدمات تسهيل الاستخدام (Id54ef، b/180479017).
- تمت إضافة
SemanticsActions.ScrollToIndex
للانتقال إلى قائمة تضم العناصر المفهرَسة إلى العنصر الذي يحتوي على فهرس معيّن، وSemanticsProperties.IndexForKey
للحصول على فهرس العنصر في قائمة تتضمن العناصر المرتبطة بمفاتيح. يتم تنفيذ كلا الإجراءين من خلال LazyList.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndex
الذي يمرّر القائمة إلى الفهرس المحدّد، وSemanticsNodeInteraction.performScrollToKey
الذي يمرّر القائمة إلى العنصر باستخدام المفتاح المحدّد. (I4fe63 وb/178483889 وb/161584524)
- تمت إضافة
- تحفظ AnnotatedString الدعم في TextFieldValue.Saver. تمت إضافة دالتي addTtsAnnotation وwithAnnotation إلى أداة AnnotatedString.Builder (I8cbdc, b/178446304).
- تمت إضافة قيم معلَمات
0.dp
التلقائية إلىPaddingValues(horizontal, vertical)
(I05571، b/181336792)
إصلاح الأخطاء
- لم تعُد العناصر الثانوية للصفوف والأعمدة التي تحتوي على
weight(fill = false)
تجعل العنصر الرئيسي يملأ مساحة المحور الرئيسي المتاحة بالكامل. (Ied94d، b/186012444، b/184355105)
الإصدار 1.0.0-beta05
21 نيسان (أبريل) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta05
وandroidx.compose.foundation:foundation-layout:1.0.0-beta05
. يتضمّن الإصدار 1.0.0-beta05 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم الآن تمييز واجهة 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 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- أعد تسمية readSoftwareKeyboard وshowSoftwareKeyboard على
SoftwareKeyboardController إلى
hide()
وshow()
على التوالي.- قدِّم واجهة ProductionLocal الكاملة لـ LocalSoftwareKeyboardController، مع السماح بتعيينها (مفيدة بشكلٍ خاص في الاختبارات) (I579a6)
- تم تقديم
TextOverflow.Visible
. (Ic8f89) - تمّت إزالة الأحداث العلنية من
RowScope
وColumnScope
وBoxScope
وBoxWithConstraintsScope
. (I4e83e، b/181869067)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى وضع عناصر
LazyColumn
/LazyRow
على الحواف بشكل غير صحيح بعد الانتقال السريع (Ie4d13، b/183877420). قبل هذا التغيير، كانت الدوال القابلة للإنشاء المحلية قابلة للتخطّي استنادًا إلى مَعلماتها. بعد هذا التغيير، لن يتم تخطّي أي دوال محلية قابلة للإنشاء. يتم إجراء هذا التغيير لأنّه من الشائع والمتوقع أن تجمع الدوال المحلية المعلَمات من العنصر الرئيسي، ويعدّ تخطّيها مصدرًا شائعًا للأخطاء.
للتلخيص، ضع في اعتبارك المثال:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
قبل إجراء هذا التغيير، كان يتم دائمًا تخطّي الدالة القابلة للإنشاء في
ShowCount
، حتى بعد تعديل معلَمةcount
. لقد اختلف الوضع اليوم. (I5648a)
الإصدار 1.0.0-beta03
24 آذار (مارس) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta03
وandroidx.compose.foundation:foundation-layout:1.0.0-beta03
. يتضمّن الإصدار 1.0.0-beta03 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
DefaultMonotonicFrameClock
نهائيًا. عند الاتصال بالرقمwithFrameNanos
أو الرقمRecomposer.runRecomposeAndApplyChanges
بدونMonotonicFrameClock
، سيتم الآن طرح الرقمIllegalStateException
. (I4eb0d)
إصلاح الأخطاء
- يُسمى الآن
FlingBehavior.performFling()
حتى عندما تكون السرعة 0 (I0b6e5، b/181237123)
الإصدار 1.0.0-beta02
10 آذار (مارس) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta02
وandroidx.compose.foundation:foundation-layout:1.0.0-beta02
. يتضمّن الإصدار 1.0.0-beta02 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة العديد من التحسينات الصغيرة في عملية القياس المنطقية لعمود "LazyColumn" (Ic6889).
- تمت إضافة واجهة برمجة تطبيقات محلية جديدة للمقطوعة الموسيقية
LocalSoftwareKeyboardController
لتحلّ محلّ واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053) - تمت إضافة واجهة برمجة تطبيقات محلية جديدة للمقطوعة الموسيقية
LocalSoftwareKeyboardController
لتحلّ محلّ واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)
إصلاح الأخطاء
- فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29، b/174531520)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-beta01
وandroidx.compose.foundation:foundation-layout:1.0.0-beta01
. يتضمّن الإصدار 1.0.0-beta01 هذه الالتزامات.
هذا هو الإصدار الأول من الإصدار التجريبي Compose 1.0.0.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة onStart إلى العنوان
detectDragGestures
(I67269، b/179995594) - لم تعد مُعدِّلات تغيير الحجم مع القيم الأساسية تجريبية. (I15744)
- تأكيدات dp التي تمت إزالتها (I798d2)
- تمت إزالة معاودة الاتصال SoftwareKeyboard من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
- تمت إعادة تسمية MeasurementBlocks إلى MeasurementPolicy الذي تحوّل إلى واجهة ممتعة. تم تعديل / تبسيط واجهات برمجة تطبيقات التنسيق لاستخدام MeasurementPolicy. (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)
- تعرض ميزة "ableable" الآن MeasurementSize الذي يمثل الحجم الذي تم قياسه من خلال التخطيط الفرعي. قد لا يلتزم هذا الحجم بقيود القياس. (Ib2729 وb/172560206 وb/172338608)
- إضافة عنصر تعديل selectGroup الذي يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
إضافة LazyListState.animate ScrollToItem
تؤدي هذه الطريقة إلى التمرير السلس إلى عنصر معين في القائمة. (I4bfd7)
تمت إعادة تسمية ScrollableState.smoothScrollBy() إلى animate ScrollBy() تمت إعادة تسمية LazyListState.snapToItemIndex() إلى ScrollToItem() تمت إعادة تسمية ScrollState.smooth ScrollTo() إلى animate ScrollTo() (I35ded).
تم استبدال Modifier.zoomable لدي وعلى Modifier.Convertable. تمت إضافة ssmoothPanBy، sameRotationBy كوظيفة. (Ifc32b، b/175294473)
أصبح السمة
defaultFactory
للسمةcompositionLocalOf
وstaticCompositionLocalOf
مطلوبة الآن بدلاً من السمة الاختيارية.تؤدي هذه التغييرات إلى إزالة خطأ النوع المحتمل للأنواع غير القابلة للتعديل والتي لم يتم فيها توفير مصنع تلقائي. كان هذا في السابق يوفر مرجعًا فارغًا لنوع غير قابل للقيم الفارغة.
بالنسبة إلى الأنواع القابلة للقيم الفارغة، يمكنك توفير
{ null }
كمصنع تلقائي.لا ننصح باستخدام الأجهزة المحلية بأنواع غير قابلة للقيم الفارغة ما لم يتم توفير قيمة تلقائية معقولة. في حال عدم توفّر إعدادات تلقائية معقولة، يجب أن تعرض دالة
defaultFactory
lambda استثناءً. ومع ذلك، فإن طرح استثناء يعني أن المستهلكين من السكان المحليين سيكون لديهم اعتماد ضمني عليه يتم توفيره ولا يتم فرضه من قبل نظام الأنواع. (Ifbd2a)تم تغيير
Indication#createIndication()
إلىIndication#rememberUpdatedIndication(InteractionState)
وإزالة المعلَمةInteractionState
من IndicationInstance#drawIndication()
. يجب أن يكون CommunicationInstance مسؤولاً فقط عن رسم التأثيرات المرئية، وليس عن إطلاق الرسوم المتحركة / حالة الكتابة استجابةً لتغييرات InteractionState. يجب أن يتم تنفيذ هذه الرسوم المتحركة وكتابات الحالة ضمنrememberUpdatedIndication()
بدلاً من ذلك. وتم أيضًا تغيير المَعلمةindication
فيModifier.indication
لتصبح مَعلمة مطلوبة. (Ic1764، b/152525426)تعمل الإجراءات النصية الآن على التحقّق من التركيز تلقائيًا (I13777، b/179648629)
تمت إزالة
runBlockingWithManualClock
(I15cdc, b/179664814)يتم تمثيل موضع التمرير في Modifier.verticalScroll()/horizontal Scroll() مع Ints الآن (I81298).
تم تغيير حزمتَي sample ScrollBy وScrollBymethods إلى
androidx.compose.foundation.gestures.*
(I3f7c1 وb/175294473)تمت إعادة تسمية FlingConfig إلى سلوك FlingBehavior، وهي تتيح الآن تخصيص حركة التعليق المتحركة بدلاً من تناقصات البيانات المحددة مسبقًا. (I02b86، b/175294473)
تمت إعادة تسمية مفاتيح تعديل الحجم. تمت إعادة تسمية Modifier.width/height/size إلى required width/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.Favorite توفّرها/FavoriteHeight/FavoriteSize إلى العرض/الارتفاع/الحجم. (I5b414)
تمت إعادة تسمية defaultMinSizeConstraints إلى defaultMinSize. (I4eaae)
تمت إزالة Modifier.tap المحدَّدFilter. يمكنك استخدام
Modifier.pointerInput { detectTapGestures(...) }
كبديل. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. والطريقة المقترَحة لتنسيق الاستهلاك الجزئي هي Modifier.nested Scroll. (Ie9c9b)
تم نقل التوجيه إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)
تمت إزالة AnimationClockMonitorable والفئات الفرعية. تمت إزالة تعرفة AntiFloat. (Icde52، b/177457083)
يقوم drawerState.open() و drawerState.CLOSE() الآن بتعليق الدوال. استخدِم readCoroutineScope() للحصول على نطاق المقطوعة الموسيقية لطلب استدعائها (I16f60، b/175294473).
تمت إعادة تسمية مقدّمي الخدمات إلى TechnicalLocalProvider.
- لم تعُد الدالة الإنشائية للمقطوعة الموسيقية تقبل مَعلمة رئيسية، وتم إيقافها نهائيًا.
- تم تحويل CurrentsCompositeKeyHash إلى سمة من المستوى الأعلى قابلة للإنشاء بدلاً من دالة المستوى الأعلى القابلة للإنشاء.
- تم نقل ComposeData وتكوينGroup إلى مساحة الاسم androidx.compose.runtime.Tooling.
- تم تصميم ComposableLambda كواجهة بدلاً من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
- تم تصميم ComposableLambdaN كواجهة بدلاً من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
- تم نقل دالة shortcutsFlow إلى مساحة الاسم androidx.compose.runtime.
- لم تعُد طريقة الدمج لـ SnapshotMutationPolicy تجريبية.
- تمت إزالة دالة clearRoots ذات المستوى الأعلى في
@TestOnly
. لم يعد من الضروري. - تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعُد ضرورية.
- تمت إزالة Composer.collectKeySourceInfo. لم يعد من الضروري.
- تمت إزالة طرق isJoinedKey وjoinKeyLeft وjoinKeyRight. لم تعُد ضرورية.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. ونظرًا للدلالات الدلالية لفئة الملفات في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي وليس التوافق مع المصدر، لذا من المفترض ألا تكون هناك مشكلة لدى معظم المستخدمين.
- (I99b7d، b/177245490)
تمت إعادة صياغة Modifier.scrollable. وهي تستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473).
يقبل Modifier.draggable الآن أن يكون DraggableState بدلاً من دالة lambda بسيطة. ويمكنك إنشاء حالة من خلال
rememberDraggableState { delta -> }
للحصول على السلوك نفسه كما في السابق (Ica70f، b/175294473).تمت إضافة معدِّلات required width(IntrinsicSize) ومعدِّلات requiredHeight(IntrinsicSize) لتغيير الحجم المطلوب إلى الأحجام الأساسية. (I0a6b4)
تمت إزالة
emptyContent()
متوقّف نهائيًا. يمكنك استخدام{}
كبديل. (Idb33f، b/179432510)تم حذف بعض واجهات برمجة التطبيقات المتوقّفة نهائيًا في السابق (Ice5da، b/178633932).
إصلاح الأخطاء
- تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة لتركيب LocalSoftwareKeyboardController بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
الإصدار 1.0.0-alpha12
10 شباط (فبراير) 2021
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha12
وandroidx.compose.foundation:foundation-layout:1.0.0-alpha12
. يحتوي الإصدار 1.0.0-alpha12 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- يتطلب Modifier.pointerInput الآن تذكر المفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل الكوروتين لرصد إدخال المؤشر للتبعيات الجديدة. (I849cd)
- تحديث الاختبار: سيتحقق hasText() من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في الحقل النصي (Iab803)
- تمت إضافة PaddingValues.Absolute ويمكن استخدامه في واجهات برمجة التطبيقات التي تقبل PaddingValues. (Ia5f30)
- تم إيقاف onImeActionPerformed نهائيًا. يُرجى استخدام KeyboardActions بدلاً من ذلك (If0bbd ، b/179071523).
- ومن أجل مطابقة اصطلاحات التسمية مع ImageBitmap وImageVector بشكل أفضل، تمت إعادة تسمية ImagePainter إلى BitmapPainter بحيث تصبح مع VectorPainter التوازي. (Iba381، b/174565889)
- واجهات برمجة تطبيقات أفضل لاختبار السلسلة الفرعية مع سلسلة فرعية الآن كوسيطة (Icbe78)
- تم تقديم عنصر سياق الكوروتين
InfiniteAnimationPolicy
الذي سيتم تطبيقه في الصور المتحركة اللانهائية. وفقًا للإعدادات التلقائية، لا يتم تثبيت أي سياسة إلا عند إجراء اختبارات باستخدامComposeTestRule
. (I50ec4، b/151940543) - Animatable.snapTo وAnimatable.stop يتم الآن تعليق الدالتين (If4288)
- تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في وحدة androidx.activity:activity-compose. (Icf416)
- تمت إزالة طرق التدمير وcopy() من عدة فئات نادرًا ما كانت تُستخدم. (I26702، b/178659281)
تمت إضافة إمكانية استخدام المفاتيح المخصّصة في LazyColumn/LazyRow. يتيح لنا ذلك معالجة إعادة ترتيب العناصر بشكل أكثر ذكاءً. وبالتالي، سيتم نقل الحالة التي خزّنتها في كتل تذكر {} مع العنصر عند إعادة ترتيب العناصر أو إزالة العنصر من المنتصف.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
تم تغيير Indexation#createInstance ليصبح @Composable، وغيّرنا مؤشر محلي ليحتوي على مؤشر، وليس () -> مؤشر. (I5eeea، b/157150564)
تم استبدال الحقل "
Constraints.enforce
" بـ "Constraints.constrain
". (I8b8ea)تم إيقاف uploadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. تم إيقاف كل من imageResource وloadImageResource وVFontResource وloadVectorResource نهائيًا. استخدم PainterResource بدلاً من ذلك. (I6b809)
لأسباب تتعلق بالأداء، تستخدم دلالات ScrollAxisRange الآن قيم lambdas التي تعرض قيم Floats بدلاً من قيم Float المباشرة. (If4a35، b/178657186)
تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في حقل النص لإمكانية الوصول وطرق الاختبار المقابلة للتحقق من الدلالات (I8e07a)
لا يدعم Modifier.clickable الآن إمكانية النقر المزدوج والنقر المطوّل. استخدِم Modifier.combinedClickable لتحقيق هذه الوظيفة. (Iafad1)
تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
تم إيقاف Modifier.drag المحدَّدFilter نهائيًا. يمكنك استخدام
Modifier.pointerInput { detectDragGestures (...)}
كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لسحب المحور الواحد (I0ba93، b/175294473).تمت إعادة تسمية "وضع الاستراحة" ليطابق إعادة تسمية "وضع الاستراحة" -> ProductionLocal. في السابق، كان يُطلق على هذه الميزة اسم " ننصحك بإدراج اسم البيئة المحيطة"، وأصبح اسم ProductionLocals يُسمّى LocalFoo. (I2d55d)
تم نقل الاختيار إلى الأساس. (I7892b)
على غرار الطريقة التي أزلنا بها
state { 0 }
عنصر قابل للإنشاء، ونسعى الآن إلى الترويج للاستخدام مثلremember { mutableStateOf(0) }
، سنزيلsavedInstanceState { 0 }
القابل للإنشاء. يجب استخدامrememberSaveable { mutableStateOf(0) }
بدلاً من ذلك، وسيتم الحفظ واستعادتها تلقائيًا إذا كان النوع المستخدَم داخل MutableState قد تم تخزينه في الحزمة. إذا كنت تمرِّر في السابق كائن توفير مخصص، تحتاج الآن إلى استخدام حمل زائد جديد من عناصر sortable (حفظ القابلة للتذكر) والذي يحتوي على المعلمة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 لإلغاء المقارنة مع علامة الإغلاق. (Ib6d76)
تم وضع علامة على واجهات برمجة التطبيقات ذات الصلة بـ LazyVerticalGrid في الحالات التجريبية (Ia53e3، b/178519862)
تمت إعادة تسمية renameSavedInstanceState() إلى {8/}Saveable() وتم نقلها إلى androidx.compose.runtime.saveable package. (I1366e، b/177338004)
تمت إعادة تسمية RestorableStateHolder إلى SaveableStateHolder وتم نقلها إلى حزمة androidx.compose.runtime.saveable. تمت إعادة تسمية الطريقة الداخلية RestorableStateProvider إلى SaveableStateProvider. تمت إزالة النوع العام بحيث يمكنك فقط تمرير "Any" كمفتاح. لم يعُد هناك حاجة إلى التعليق التوضيحي التجريبي. (I0902e، b/174598702)
تم نقل Saver وlistSaver() وmapSaver() والحفظ التلقائي من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
تمت إعادة تسمية العنصر androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac)
يتم حذف العديد من واجهات برمجة التطبيقات المتوقّفة منذ فترة طويلة في حزمة واجهة المستخدم. (I2f2dc)
تم الآن إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)
تمت إعادة تسمية المعلَمات في RounderCornerShape وCutCornerShape وCornerBasedShape من الاسم الأيسر/الأيمن إلى البداية/النهاية من أجل دعم النسخ المطابق التلقائي للشكل في اتجاه الشاشة الكاملة. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape في الحالات التي لا يكون فيها النسخ المطابق التلقائي مطلوبًا. (I61040، b/152756983)
تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
تمت إعادة هيكلة واجهة برمجة التطبيقات التي يستهدفها المكون الإضافي Compose إلى واجهة بدلاً من فئة ملموسة. لم تعد الواجهة تستخدم معلمة نوع بعد الآن.
هذا تغيير داخلي من المفترض ألا يؤثر في توافق رمز المصدر ولكنه تغيير يتعطل في النظام الثنائي. (I3b922، b/169406779)
تمت إزالة فلتر Modifier.scaleالإيماءاتFilter. استخدِم Modifier.zoomable بدلاً من ذلك. ويمكنك بدلاً من ذلك استخدام
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1، b/175294473).لقد تمّ الآن إيقاف موضع الرسوم المتحركة أو قيمة Float نهائيًا. يُرجى استخدام رسوم متحركة بدلاً من ذلك. (I71345، b/177457083)
- تمت إزالة CoreText و CoreTextField من واجهة برمجة التطبيقات العامة.
- تمت إزالة التحميل الزائد لحاويات SelectionContainer المتوقفة نهائيًا (I99c19).
إزالة دوال التمرير غير المعلّقة التي تم إيقافها بالاستمرار مع التغييرات التي تم إجراؤها في الإصدار الأخير، تمت الآن إزالة دوال التمرير غير المعلّقة بالكامل. يرجى التحويل إلى دوال التعليق بنفس الأسماء. يمكن الحصول على نطاق الكوروتين من خلال rememberCoroutineScope(). (I3d39c, b/178169563)
تم إيقاف androidx.compose.foundation.layout.ConstraintLayout نهائيًا لصالح androidx.Restricttlayout.compose.ConstraintLayout. سوف تحتاج إلى إضافة تبعية على
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)تم إيقاف clickOptionFilter وDoubleTapOptionFilter وlongPressOptionFilter و pressNodeaitonActivityFilter نهائيًا. استخدِم Modifier.clickable أو "Modifier.pointerInput" مع وظيفة "detectTapOptions" بدلاً من ذلك. (I6baf9، b/175294473)
تمت إزالة
Recomposer.current()
. [Abstract]ComposeView الآن يتم تعيينها افتراضيًا على أدوات إعادة الإنشاء التي يتم إنشاؤها ببطء على مستوى النافذة والعاملة بواسطة ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة الإنشاء واستخدام علامات الرسوم المتحركة المستندة إلى FrameNanos مؤقتًا أثناء إيقاف دورة حياة المضيف. (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)
إيقاف الانتقال السلس بدون تعليق ننصحك الآن باستخدام دوال التعليق للتحكم في التمرير والانتظار حتى انتهاء التمرير. نحن بصدد إيقاف العمل بالإصدارات غير المعلَّقة من هذه الدوال كجزء من عملية الانتقال هذه. (I12880)
تمت إضافة معلمة وصف المحتوى إلى الصورة والرمز. ويتم استخدامه لتقديم وصف لخدمات تسهيل الاستخدام (I2ac4c).
تلقّى BasicTextField مَعلمة جديدة باسم decorationBox. ويسمح بإضافة الزخارف مثل الرموز والعنصر النائب والتسمية وما شابه ذلك لحقل النص وزيادة منطقة استهداف النتيجة فيه. (I16996)
تمت إزالة مَعلمة canDrag من Modifier.draggable (Ic4bec، b/175294473).
تمت إزالة AntiFloat.fling الذي يقبل FlingConfig. يُرجى استخدام تعليق Animatable.animateDecay بدلاً من ذلك. (I4659b، b/177457083)
تمت إزالة "
data class
" من الصفوف التالية:- محتوى النص المضمّن
- قائمة اللغة
- (I605c7)
يمكن الآن إنشاء عناصر قابلة للنقر والتبديل والاختيار خارج نطاق الإنشاء (I0a130 وb/172938345 وb/175294473).
تم إيقاف العمود القابل للتمرير/الصف. يُعد استخدام ScrollableColumn أقل كفاءة مقارنةً بـ LazyColumn عندما يكون لديك محتوى تمرير كبير لأنه باستخدام LazyColumn (بطريقة مختلفة)، يمكننا إنشاء/قياس/رسم العناصر المرئية فقط. ولمنع المستخدمين من الانتقال إلى الطريقة غير الفعّالة، قرّرنا إيقاف العمل بميزة ScrollableColumn و ScrollableRow وبدلاً من ذلك، ننصح باستخدام LazyColumn وLazyRow. يظل بإمكان المستخدمين تحديد أنّهم لا يحتاجون إلى السلوك الكسول واستخدام أدوات التعديل مباشرةً كما يلي: Column(Modifier.verticalScroll(remember ScrollState())) (Ib976b, b/170468083)
طريقة جديدة لمصنع
items(count: Int)
لنطاق LazyColumn/LazyRow/LazyVerticalGrid. أصبحتitems(items: List)
وitemsIndexed(items: List)
الآن دوال الإضافات، لذا عليك استيرادها يدويًا عند استخدامها. عمليات التحميل الزائد الجديدة للإضافة في المصفوفات: items(items: Array) وitemIndexed(Array) (I803fc، b/175562574)تمت إزالة الترتيب المطلق المتوقف نهائيًا. (Iffa96، b/177641870)
تمت إضافة المعلمة promotionMinConstraints إلى Box لتحديد ما إذا كان يجب تمرير قيود الحد الأدنى الواردة إلى محتوى Box أم لا. والقيمة التلقائية هي "خطأ". (I0125b، b/152613457)
إصلاح الأخطاء
- تم إيقاف onCommit وonDisposition وonActive لتحلّ محلّها واجهات SideEffect وDisableEffect API (If760e).
- تمت إعادة صياغة WithConstraints باسم BoxWithConstraints وتم نقلها إلى Foundation.layout. (I9420b، b/173387208)
التغييرات على الوظائف المصنعة للخط/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
من معلَمات دالة إنشاء واجهة EditorBuffer. (I326d5)
- تمت إزالة
تم الآن إيقاف in مؤخرًا وchangeReference() لتحلّ محلّهما currentRecomposeScope، وتذكُّرمراقبة التركيب على التوالي. (I583a8)
يتم تغيير AnnotatedString لتوسِّع نطاق من kotlin.CharSequence. وبالتالي، أصبح الطول والتسلسل الفرعي الآن دوال المثيلات، وتتم إزالة دوال الإضافات. (Iaf429)
سيتم استبدال المدة ومدة التشغيل بالمللي ثانية الطويلة، وستتم إزالة هذه الخطوة من اعتمادية إدخال المؤشر في تلك الفئات. (Ia33b2 وb/175142755 وb/177420019)
يحلّ جهاز تَورِيفْ ذِكْرِ قَائِمَة حِفْظْ لِبَدْءِ التَّرْجَمَة التِّلْقَائِيَّة لِتَشْغِيلِ الرَّسَائِلْ وَهْوَ يَحْتَوِي عَلَى عَلَامَةْ تَشْغِيلْLifecycleMonitorer التَّرْجَمَة الَّتِي تَمَّ قَفْلُهَا.
وتمثل
RememberObserver
بديلاً لـCompositionLifecycleObserver
بدلالات معدَّلة وطرق تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل ميكانيكي للكائنات التي يتم تذكرها مرة واحدة فقط، وهي ممارسة موصى بها ولا تزال قائمة. في المقابل، إذا تم تذكّر مرجع معيّن أكثر من مرة في مقطوعة موسيقية، يتم استدعاءonRemembered
لكل مرجع حيث يتم استدعاءonEnter
مرة واحدة فقط. تم استدعاءonEnter
عدة مرات إذا تم استخدام الكائن في تركيبات فرعية، مثلWithConstraints
وScaffold
، ما يجعل ضمان طلبonEnter
الفردي غير موثوق، وتمت إزالته فيRememberObserver
.تضيف
RememberObserver
القيمةonAbandoned
التي يتم استدعاؤها إذا تم عرض مثيلRememberObserver
من معاودة الاتصال التي تم تمريرها إلىremember
ولكن لم يتم تذكّرها في حالة التركيبة، وبالتالي لن يتم استدعاءonRemembered
مطلقًا. يمكن أن يحدث ذلك إذا أنهى أحد الاستثناءات المقطوعة قبل إتمامها أو إذا تم تجاهلها لأنّ الدولة التي تنتج مقطوعة موسيقية لم تعد سارية أو لم تعُد ضرورية. إذا كان مثالRememberObserver
الذي يلي توصية المرجع الوحيد أعلاه يتتبّع موردًا خارجيًا كلاهما، يشير كل منonForgotten
وonAbandoned
إلى أنّ المورد لم يعُد مطلوبًا. إذا كان الكائن يتتبّع العمل الذي تم بدؤه أو الموارد المخصّصة فيonRemembered
، يمكن تجاهلonAbandoned
لأنّه لن يتم طلبه في حال استدعاءonRemembered
. (I02c36)تمت إعادة تسمية TransformText.conversionedText ليصبح TransformText.text
- لم تعُد TransformText فئة بيانات (Ie672a).
لم تعُد الفئات التالية فئات بيانات:
- سلسلة تعليقات توضيحية
- نمط الفقرة
- نمط ممتد
- نمط النص
- عرض الخط
- زخرفة النص
- تحويل النص الهندسي
- فهرس النص
- نتيجة تخطيط النص
- TextLayoutInput (Iaff99)
تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f، b/170708374)
تم إيقاف طرق الإحداثيات العالمية وإنشاء طرق إحداثيات جديدة مستندة إلى النافذة. (Iee284)
يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction
- يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
تم تصنيف FocusRequester.createRefs الآن على أنها تجريبية لأنه قد تتغير. (I2d898، b/177000821)
تمت إعادة تسمية SemanticsProperty تلبيةr.hidden إلى invisibleToUser، وتم وضع علامة عليه تشير إلى @BETAComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية StateDescriptionRange إلىPROGRESSBarRangeInfo. تمت إعادة تسمية Accessibility ScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontal ScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى العمود العموديScrollAxisRange. (Id3148)
تم تغيير "التحويل المرئي" ليكون واجهة وظيفية (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.identity OffsetMobile إلى وظيفة OffsetMapping.Identity.
- لم يعد تحويل كلمة المرور من فئة البيانات
- تم نقل OffsetMapping إلى ملف خاص بها
- (I0bdf3)
- تغييرات واجهة برمجة التطبيقات EditOperations API
- تم تغيير اسم EditOperation إلى اسم "EditCommand"
- تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة في EditOperation
- لم تعُد 'EditCommand's فئات بيانات
- تمت إعادة تسمية دالة EditOperation.process لتكون "ApplyTo"
- تم تغيير اسم InEventListener إلى EnterEventCallback
- (I0a366)
- السرعة المعدلة للحصول على أجزاء مكونة وعمليات رياضية. (Ib0447)
- تم تغيير اسم علامة @BETATesting إلى علامة @BETATestApi لكي تكون متوافقة مع التعليقات التوضيحية المشابهة لواجهة برمجة التطبيقات (Ia4502 ، b/171464963)
- تمت إضافة طريقة installHeader التجريبية لـ LazyColumn/LazyRow (I0a81d)
- Ranamed Color.useOrElse() to Color.takeOrElse() (Ifdcf5)
- تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)
- إضافة مفتاح تبديل إلى Foundation Strings.kt (I4a5b7، b/172366489)
- تم نقل المعلمةNativeClass إلى وحدة واجهة المستخدم وجعلها داخلية. تم تحديث استخدامات originalClass في عمليات تنفيذ تساوي استخدام "is MyClass" بدلاً من ذلك. (I4f734)
- تم إيقاف تدفق الصف وعمود التدفق نهائيًا. يُرجى استخدام تنسيق مخصص بدلاً من ذلك. (I09027)
- تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً منها (I75a48 وb/175160751 وb/175160532 وb/175077829)
- تم تقديم SelectionRegistrar.notifySelectableChange لإشعار بالتعديلات القابلة للاختيار إلى SelectionManager. (I6ff30، b/173215242)
- تم تغيير
fun Dp.isFinite()
إلىval Dp.isFinite
(I50e00) - تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- تمت إضافة isSpecified وisUnspecified وuseOrElse للفئات المضمّنة ذات الصلة الثابتة غير المحدَّدة. (I93f7b، b/174310811)
إصلاح الأخطاء
- واجهة برمجة تطبيقات جديدة تستند إلى الكوروتين
Animatable
وتضمن الحصرية المتبادلة من بين صورها المتحركة. ميزة DecayAnimationSpec الجديدة لدعم الصور المتحركة لتوقيت نقاط الاتصال متعددة الأبعاد (I820f2، b/168014930) - تمت إضافة دعم للحقول النصية التي تم إيقافها و"للقراءة فقط" (I35279، b/171040474، b/166478534)
- تم استبدال
animate()
الآن بـanimateAsState()
، التي تعرضState<T>
بدلاً منT
. ويوفر ذلك أداءً أفضل، حيث يمكن تضييق نطاق الإبطال إلى المكان الذي تتم فيه قراءة قيمة الدولة. (Ib179e) - يمكنك إضافة واجهة برمجة تطبيقات الدور الدلالي وإضافة الدور كمَعلمة إلى أداة SemanticsModifier القابلة للنقر والاختيار والتبديل. تم تغيير Modifier.progressSemantics بحيث يمكن لشريط التمرير استخدامه أيضًا. (I216cd)
- يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.localizedKeyEvent (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 على أنه نوع شائع، ما يسمح بتنفيذ التمرير المخصَّص عبر كلا النوعين.
يؤدي ذلك أيضًا إلى نقل Sync ScrollBy إلى وظيفة إضافة على Scrollable، والاستفادة من هذه الوظيفة. (I2153b)
تمّت إضافة ميزة LazyVerticalGrid. (I17267، b/162213211)
أوقِف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed، يمكنك استخدام LazyColumn وLazyRow بدلاً من ذلك (I5b48c).
بالنسبة إلى تعليق واجهات برمجة التطبيقات الخاصة بإدخال المؤشر، تمت إعادة تسمية HandlePointerInputScope إلى AوايPointerEventScope، وإلى handlePointerInput() إلى auePointerEventScope(). (Idf0a1، b/175142755)
تمت إضافة LazyList.layoutInfo الذي يعرض قائمة الأحجام والإزاحة للعناصر المرئية حاليًا (If8678، b/170472532).
تمت إزالة التعليق التوضيحي BETAPointerInput (Ia7a24)
تمت إضافة إمكانية التفاعل مع InteractionState لـ TextFields. (I61d91)
أضِف مَعلمة renameLayout لـ LazyColumn/Row. عندما يتم إنشاء
true
عنصر من الأسفل إلى الأعلى، يعنيLazyListState.firstVisibleItemIndex == 0
أن العنصر الأول موجود في الأسفل. (I552ae، b/166589935)تمت إضافة معلَمة verticalArrangement لـ LazyColumn. تمت إضافة معلمة horizontalArrangement لـ LazyRow. يسمح لنا الترتيب بإضافة مسافة بين العناصر وتحديد ترتيب العناصر عندما لا يكون لدينا ما يكفي منها لملء الحد الأدنى للحجم بالكامل. (Icf79a، b/170394300)
تستخدم ميزة "التعرّف المتعدد على الإيماءات" الآن معاودة اتصال واحدة مع مَعلمات مدمجة للنقاط المركزية والتحريك والتكبير/التصغير والتدوير. (Ie6e1c)
تم نقل ContentDrawScope إلى وحدة رسومات واجهة المستخدم ليكون مع DrawScope. (Iee043، b/173832789)
إصلاح الأخطاء
- تعرض Lambdas في معدِّلات الإزاحة الآن Int Offset بدلاً من Float. (Ic9ee5 وb/174137212 وb/174146755)
تمت إزالة SetTable وStoReader وSlotWriter من واجهة برمجة التطبيقات العامة. وقد تم وضع علامة عليها على أنها InternalComposeAPI سابقًا. وهي الآن داخلية في وحدة الإنشاء.
تمت إضافة ComposeData وComposeGroup كبديل لواجهة برمجة التطبيقات ui-toolsing API لاستخدامها لاستخراج معلومات التركيب. هذه البيانات متاحة للجميع، ولكنها غير مخصّصة للاستخدام خارج واجهة برمجة التطبيقات لأدوات واجهة المستخدم لأنها توفر المعلومات الأولية التي تفسرها واجهة برمجة التطبيقات لأدوات واجهة المستخدم (I31a9c).
تمت إعادة هيكلة تطبيق ShaderBrush بطريقة كسول لإنشاء مثيل أداة التظليل عند إمكانية تحديد حجم معلومات بيئة الرسم. ويكون هذا مفيدًا لتحديد التدرجات التي تشغل حدود الرسم الكاملة لعنصر قابل للإنشاء في وقت الإنشاء، بدون الحاجة إلى تنفيذ عمليات تنفيذ DrawModifier مخصّصة.
تم إيقاف واجهات برمجة التطبيقات للدالة الإنشائية لدالة التدرج لصالح أساليب المصنع على كائن متدرج. (I511fc، b/173066799)
تم إيقاف Modifier.focusMonitorer نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 أو b/168511863 أو b/168511484)
أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلب الموافقة (I0a1ec)
إضافة إعلانات تدميرية لإنشاء مثيلات FocusRequester (I35d84، b/174817008)
تمت إعادة تسمية AccessibilityLabel إلى contentDescription. تمت إعادة تسمية إمكانية الوصول إلى StateDescription. (I250f2)
تم تقديم العديد من الدوال الجديدة في SelectionRegistrar وأعادت تسمية onPositionChange إلى جانب الإشعاراتPositionChange. (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" لاستخدامه في العناصر القابلة للإنشاء في الصور أو أدوات تعديل الطلاء. (I2c703، b/173818471)
تمت إضافة دالة المصنع BuildAnnotatedString من أجل إنشاء AnnotatedString. تم إيقاف دالة إنشاء annotatedString. (Idfe0b)
الإصدار 1.0.0-alpha08
2 كانون الأول (ديسمبر) 2020
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha08
وandroidx.compose.foundation:foundation-layout:1.0.0-alpha08
. يحتوي الإصدار 1.0.0-alpha08 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة معلَمة
maxLines
منCoreTextField
. إذا كنت تريد تقييد ارتفاع حقل النص بعدد السطور، استخدِمBasicTextField
بدلاً من ذلك. (Iec002) - تم تغيير طرق
await*TouchSlop()
إلى عدم رصد المؤشر للأسفل وإعادة تسميتها إلى*OrCancellation
. تمت أيضًا إزالة الحاجة إلى مَعلمةorientationLock
. (Ie96e1) - تمت إضافة التحقق من الوبر لتسمية معلمة lambda القابلة للإنشاء وموضعها، وذلك للتحقق من الاتساق مع إرشادات الإنشاء.
تم أيضًا نقل بيانات بعض واجهات برمجة التطبيقات باستخدام
children
كاسم لدالة lambda اللاحقة إلىcontent
، وفقًا لعمليات فحص الوبر والإرشادات. (Iec48e) - تم نقل واجهة برمجة تطبيقات
foundation:foundation-text
إلىfoundation:foundation
. ظلت بنية الحزمة كما هي (Id3eb2) - أداة جديدة لرصد الإيماءات المستندة إلى اللمس المتعدد، بما في ذلك أدوات مساعِدة لرصد التدوير والتكبير/التصغير والتحريك (Ic459d)
- أداة رصد إيماءة جديدة يعلّق فيها المؤشر لواجهة برمجة التطبيقات، بما في ذلك قفل الاتجاه. (Icef25)
- تمت إعادة تسمية VectorAsset ليصبح ImageVector تم نقل VectorAsset إلى أداة الإنشاء وأصبح فئة داخلية من ImageVector وفقًا لإرشادات مجلس واجهة برمجة التطبيقات. تمت إضافة النوع البديل لـ VectorAssetBuilder للربط إلى ImageVector.Builder لـ compat (Icfdc8)
- تمت إعادة تسمية ImageAsset والطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
- تم نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c).
إضافة واجهات برمجة تطبيقات التمرير المستندة إلى الكوروتين:
إضافة LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهات برمجة التطبيقات ذات المستوى الأدنى للتحكم في التمرير. توفر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكم في التمرير الذي ينتظر حتى ينتهي التمرير قبل الرجوع. (Ie5642)
تمت إضافة مَعلمة singeLine إلى BasicTextField وTextField وOutlinedTextField. اضبُط هذه المَعلمة على "صحيح" لجعل الحقل النصي سطرًا واحدًا قابلاً للتمرير أفقيًا. (I57004، b/168187755)
تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار ومؤشر الضغط باستخدام الإدخال الجديد لمؤشر التعليق. بالإضافة إلى ذلك، تمت إضافة بعض الأدوات المساعدة، ما سهّل على المطورين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
يجب إضافة Modifier.focusable ويمكنك استخدام هذه السمة لإضافة سلوك يمكن التركيز عليه إلى المكوِّن، باستخدام الدلالات الدلالية الصحيحة وإمكانية الوصول. (I41eb9 وb/152525426 وb/162865824)
تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا في السابق: تمت إزالة الحدود، ويمكنك استخدام BorderStroke بدلاً منها. تمت إزالة Modifier. drawBorder. يمكنك استخدام Modifier.الحدود بدلاً من ذلك. تمت إزالة Modifier.gravity، لذا استخدِم Modifier.محاذاة بدلاً من ذلك. تمت إزالة الحزمة، ويمكنك استخدام Box بدلاً منها (I32c2b، b/172470874)
تمت إعادة تسمية AbsoluteArrangement إلى Arrangement.Absolute. (If26f2)
إصلاح الأخطاء
- تم نقل واجهات برمجة تطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.Draw. تم إنشاء ملف DrawModifier Discovery.kt لتضمين طرق الكتابة البديلة/المساعد للمساعدة في عملية الترحيل من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا. (Id6044، b/173834241)
- تمت إعادة تسمية Modifier.DrawLayer إلى Modifier.graphicsLayer (I0bd29، b/173834241)
- تمت إزالة
<T>
من بيان SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8) - تم جعل وقت تشغيل PointerInputData وحقول الموضع غير قابلة للقيم. (Id468a)
- تضبط MaterialTheme الآن الألوان الصحيحة لمقبضات الاختيار وخلفية الاختيار. يمكن للتطبيقات غير Material استخدام ميزة مخصصة لألوان محددة من أجل تخصيص الألوان للاختيار من بينها. (I1e6f4 وb/139320372 وb/139320907)
- تمت إعادة تسمية مَعلمة المحاذاة في Box إلى contentAlignment. (I2c957)
- تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. وهي الآن تأخذ معلمات lambda بدلاً من State. (Ic3021، b/173594846)
- تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف محل التركيز، وأداة WindowFocusMonitorer التي توفّر معاودة اتصال onWinWindowFocusChanged. (I53b2a، b/170932874)
- تمت إضافة مَعلمة renameInput إلى TextInputService#onStateupdated (I3e8f5، b/172239032، b/171860947)
- تم تعديل واجهة برمجة التطبيقات TextFieldValue.
- تم جعل TextFieldValue.composition للقراءة فقط
- تم طرح استثناء تمت إزالته لنطاق التحديد غير الصالح (I4a675، b/172239032)
- "وضع عدم النشاط" الذي تم إيقافه نهائيًا باسم "
Ambient
" كلاحقة له، واستبداله بسمات جديدة مسبوقة بعبارة "وضع عدم النشاط"، وذلك باتّباع إرشادات أخرى في واجهة برمجة التطبيقات "وضع عدم النشاط" و"Compose". (I33440) - تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل خط طباعيّ Android
عبر دالة
typeface
، أيtypeface(Typeface.DEFAULT)
. تمت إعادة تسميةtypefaceFromFontFamily()
أيضًا إلىtypeface()
(I52ab7) - تمت إضافة فحص الوبر للتأكّد من أنّ مصانع التعديل تستخدم
androidx.compose.ui.composed {}
داخليًا بدلاً من وضع علامة@Composable
عليها. (I3c4bc) - تمت إضافة فحص الوبر للتأكّد من أنّ وظائف المُعدَّل الأصلية هي إضافات على جهاز التعديل، وبالتالي يمكن ربطها معًا بطلاقة. (I07981)
- تمت إعادة تسمية وسيطة دلالة الدمج AllDescendants إلى mergeDescendants. (Ib6250)
- التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماتها) الآن تجريبي (I6ef86، b/171378521)
- إزالة وحدة اختبار واجهة المستخدم القديمة وبياناتها (I3a7cb)
- تمت إعادة تسمية TextUnit.Inherited إلى TextUnit.غير محدَّد بما يتوافق مع الوحدات الأخرى. (Ifce19)
- تم تحديث واجهة المحاذاة وجعلها تعمل. (I46a07، b/172311734)
- تم دمج وحدة
foundation:foundation-text
فيfoundation:foundation
(Idac0f). - أوقِف المكان(الإزاحة) وplacePlace(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) - تم نهائيًا إيقاف الميزات الأساسية "epTextStyle" و"OfferTextStyle" و""،ampContentColor" نهائيًا. وبدلاً من ذلك، يمكنك استخدام الإصدارات الجديدة المتوفرة في مكتبة Material. بالنسبة إلى التطبيقات غير Material، عليك إنشاء نظام التصميم الخاص بك البيئات المحيطة التي يمكن استخدامها في المكونات الخاصة بك. (I74acc، b/172067770)
- Foundation.Text تم إيقاف العمل نهائيًا واستبداله بـmaterial.Text. بالنسبة إلى واجهة برمجة تطبيقات النص الأساسية غير المرئية التي لا تستهلك قيمًا من مظهر، يمكنك الانتقال إلى androidx.compose.foundation.BasicText. (If64cb)
- تمت إضافة maxLines إلى الحقول النصية (Ib2a5b).
- عدِّل الحقول النصية لقبول خيارات لوحة المفاتيح (Ida7f3).
- تمت إضافة KeyboardOptions للاستخدام في الحقول النصية (I9ca32).
- إضافة BasicText كواجهة برمجة تطبيقات غير مُعينة للتصميم للنص، بالتوازي مع BasicTextField (I28268)
- تمت إزالة التعليق التوضيحي BETALazyDsl. يمكن الآن استخدام LazyColumn/LazyRow بدون إضافة @OptIn (Idab7a, b/166584730)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- تمت إضافة BasicTextField كبديل لكل من CoreTextField وBaseTextField (Id4cea).
- إزالة ميزة LazyColumnItems/LazyRowItems المتوقفة نهائيًا (I1d8a8)
- تمت إزالة العناصر القابلة للإنشاء المتوقّفة نهائيًا لتغيير حجمها إلى قياسات أساسية. (I18537، b/171811496)
- تمت إعادة تسمية SpamPaddingFrom إلى أدناهowFrom. تمت إضافة المعدِّل addingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى الأسس الأساسية للنص. (I0440a، b/170633813)
- تمت إضافة المعلمة MatchHeightConstraintsFirst إلى معدِّل featureRatio الذي يمكن استخدامه لتحديد التعديل للحجم وفقًا لقيود الارتفاع قبل تجربة موافقات العرض. (Ie7c43، b/155290593)
- تمت إزالة DpConstraints المتوقفة. (I87884، b/171702471)
إصلاح الأخطاء
- تم تقديم فئة ScaleFactor المضمّنة لتمثيل عوامل المقياس للمحور الأفقي والرأسي مستقلاً عن بعضها البعض من أجل دعم حالات استخدام التوسيع غير المنتظم.
- تمت إضافة طريقة ComputeScaleFactor إلى ContentScale
- تمت إضافة ContentScale.FillBounds لإجراء تحجيم غير موحد لتوسيع حدود src لشغل الوجهة بالكامل.
- تمت إضافة طرق المشغلات لحساب معلمات ScaleFactor باستخدام معلمات Size.
- (Ic96a6، b/172291582)
- تم نقل releaseToBitmap إلى تَمَّ تَسْجِيلُ التَّطْبِيقَاتْ. (I86385)
- وضع علامة على CoreText كـ @InternalTextApi. يمكنك استخدام BasicText بدلاً من ذلك. (I6aaeb)
- إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
- تم نقل KeyboardType وImeAction إلى لوحة المفاتيح (I910ce).
- تم وضع علامة @InternalTextApi على CoreTextField. استخدام BasicTextField بدلاً من ذلك (Ie2469)
- تمت إزالة التعليق التوضيحي BETASubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تقديم الوحدة النمطية ui-test-junit4 (Ib91f8)
- تم تحديث واجهة برمجة التطبيقات Accessibility API لتتحول إلى اللون.غير محدد باعتباره لونًا تلوينًا محتملاً سيرسم الأصل أو الطلاء المتوفر بدون استخدام ColorFilter. كان يحاول في السابق تجاهل التلوين باستخدام اللون.وغير محدد سوف يؤدي إلى التلوين باللون الشفاف فسينتهي به الأمر بدون عرض أي شيء على الإطلاق. (I049e2، b/171624632)
- تم نقل MeasurementResult خارج MeasurementScope. (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)
- تمت إضافة SelectContainer بدون معاودة الاتصال (Ibfadb)
- إضافة اختبارات لمواضع SelectionHandles في SelectionContainer (Ie93db)
- تمت إضافة خيار أداة IME التلقائية للوحة المفاتيح (I57b8d).
الإصدار 1.0.0-alpha06
28 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha06
وandroidx.compose.foundation:foundation-layout:1.0.0-alpha06
وandroidx.compose.foundation:foundation-text:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم نقل androidx.compose.foundation.Icon إلى androidx.compose.material.Icon. يمكنك أيضًا استخدام مكوّن الصورة / Modifier.paint() مع برنامج "Painter" إذا كنت لا تريد استخدام مكتبة Material. (I9f622)
- تمت إضافةInteractState إلى Modifier.scrollable و ScrollableColumn وLazyColumnFor (I81566، b/169509805).
- تمت إضافة levelByBaseline إلى RowScope، وتمت إعادة تسمية الذي تم إعادة تسميته إلى يحصل على اختصار إلىضمن (I06503، وb/170628732).
- تم تحويل Box إلى دالة مضمّنة. (Ibce0c، b/155056091)
- تمت إضافة maxLines إلى CoreTextField (Ibee58، b/143687793).
- تمت إضافة soft wrap إلى CoreTextField. (I21a4b)
إصلاح الأخطاء
- أوقف VectorPainter لصالحتعرَّف على تذكرVectorPainter للإشارة بشكل أفضل إلى أنّ واجهة برمجة التطبيقات القابلة للإنشاء تستفيد داخليًا من عملية "تذكر" البيانات للحفاظ على البيانات عبر التركيبات. (Ifda43)
- يمكنك تفعيل عمليات الانتقال في ComposeTestRule مع مراعاة إزالة خيار تفعيل المؤشر الوامض من ComposeTestRules. (If0de3)
- تمت إضافة خيار لوحة المفاتيح من سطر واحد إلى CoreTextField (I72e6d).
- تمت إعادة تسمية واجهة برمجة تطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في Compose وثائق معدَّلة للإشارة إلى أنّ نصف قطر الزاوية السالبة مثبَّت على الصفر. (I130c7، b/168762961)
- إضافة إمكانية تحديد معلومات المفتش في معدِّل مكوّن (Idee08، b/163494569)
- تمت إضافة خيار أداة IME للكتابة بالأحرف الكبيرة للوحة المفاتيح (I8ac38).
- إصلاح موضع مقبض Rtl (I6e1e0)
- التغيير الذي قد يؤدي إلى عطل: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) نظرًا إلى أنّ القيمة الوحيدة التي يمكن تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات استهلاك PointerEvent التي تم تمريرها. (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).
نهائيًا يمكنك الوصول إلى القيمة الحالية باستخدام
.current
في سمة "وضع الإضاءة السينمائية" كما هو الحال مع أي بيئة محيطة أخرى. تم إجراء هذا التغيير من أجل الاتساق وتجنب وجود طرق متعددة لإنجاز نفس الشيء. بالإضافة إلى ذلك، ستتم إعادة تسمية بعض الخصائص في البيئة المحيطة لوصف الغرض منها بشكل أفضل على النحو التالي:- ContentColor بيّنة -> ألوان شاشة الاستراحة
- TextStyle أجواء استرخاء
- الإشارة المحيطة -> الإشارة إلى البيئة المحيطة
- التأكيد المحيط -> ampEmphasisLevels
- RippleTheme am -> sitemapRippleTheme (I37b6d)
إصلاح الأخطاء
- كجزء من توحيد قيم الروابط للفئات المضمّنة، يُرجى إعادة تسمية اللون.غير محدَّد إلى اللون.غير محدَّد للتناسق مع الفئات المضمّنة الأخرى (I97611، b/169797763)
- تمت إضافة إجراءات تسهيل الاستخدام النسخ/اللصق/القص (I6db4f).
- تم تقديم TextOverflow.لم يتم تقديم أي شيء. عندما تكون قيمة overflow (التجاوز) هي "None" (بلا)، لن يتعامل Text مع تجاوز overflow بعد ذلك، وسيتم الإبلاغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)
- تم تحديث الحجم.معلمات غير محددة لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تحديث عمليات تنفيذ الطلاء للتحقق من الحجم.غير محدد وكذلك الأحجام غير المحدودة. (I95a7e)
- تمت إضافة وحدة "الكتابة من عدد إلى صفحات" ودمج التقسيم على صفحات (Ib85da).
- تعديل LazyListScope لتلقّي قيم قابلة للقيم الفارغة (I1765b)
- تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وتمت إعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
- تمت إضافة نماذج للعمود الكسول/الصف (Idc16d).
- إصلاح طريقة العناصر وitemIndexed للسماح بالقائمة الفارغة (I06647)
- إضافة DSL لتحديد معلومات المفتش (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 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية الحزمة إلى Box. سيتم إيقاف الإصدار Foundation.Box الحالي نهائيًا لصالح Box الجديد في compose.foundation.layout. يتمثل سلوك Box الجديد في تكديس العناصر الفرعية فوق بعضها البعض عندما يكون لديه العديد من العناصر الثانوية - وهذا يختلف عن Box السابق، الذي كان يعمل مشابهًا للعمود. (I94893، b/167680279)
- تم إيقاف مَعلمات تزيين الصندوق نهائيًا. إذا كنت تريد إضافة زخارف أو مساحة متروكة في المربّع، استخدِم "المعدِّلات" بدلاً من ذلك (Modifier.background أو Modifier.الحد أو Modifier.adding) (Ibae92، b/167680279).
- أضِف فئة LazyListState الجديدة. يسمح ذلك بالملاحظة والتحكم في موضع التمرير لمكونات LazyRow وLazyColumn. يمكن إنشاء المثيلات باستخدام rememberLazyListState() وتمريره إلى معلمة الحالة للمكون. في الوقت الحالي، يمكن ملاحظة أول عنصر مرئي وإزاحة في هذا الإصدار الأولي. (Ic7cb7، b/159307669)
- يتم الآن حفظ موضع القائمة الكسول وإزاحة التمرير واستعادتها على مستوى إعادة النشاط في قسم "النشاط" (Ie045f، b/166589058).
- إضافة إجراء دلالي للنقر الطويل (I6281b، b/156468846)
- تمت إضافة أداة MutatorBlockx للاحتفاظ بوحدة تغيير واحدة للحالة المشتركة بمرور الوقت وإلغاء التغييرات المتضاربة حسب الأولوية (I3f975)
- التعليقات التوضيحية الجذرAnimationClock استمرارية، وانتقالsEnabled، وblinkingCursorEnabled، وtextInputService وعرض المواصفات
- تمت إزالة المعلمة inlineContent من النص الذي يحتوي على إدخال السلسلة. لن يتم استخدامه لأنّ inlineContent يجب أن يعمل مع AnnotatedString. (Ief403)
- تمت إزالة واجهات برمجة التطبيقات للترتيب المخصّص التي تم إيقافها نهائيًا. (Ic576d وb/168297922 وb/168297923)
- تمت إضافة المَعلمة
unbounded
إلى مفاتيح تعديل wrapContentSize، ما يتيح قياس عنصر التنسيق باستخدام قيود قصوى غير محدودة. (I77951، b/158559319) - لقد منعنا عمليات الاستيراد الثابتة لمحتويات نطاقات التنسيق (مثل وهذا النوع من المحتوى في RowScope). يجب استخدام بديل النطاق الفاضح بدلاً من ذلك:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be، b/166760797)
إصلاح الأخطاء
- تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
- تم تحديث واجهات برمجة التطبيقات للمقياس والتدوير لاستهلاك معلمة إزاحة واحدة لتمثيل الإحداثي المحوري بدلاً من المعلَمات العائمة المنفصلة للإحداثيات x/y في DrawScope وDrawTransform
- تمت إزالة الطريقتين Rect.expandToinclude وRect.join
- تم تحديث وثائق نصف القطر لتوضيح الشكل البيضاوي بالإضافة إلى البيضاوي
- الوثائق الإضافية التي تشير إلى أن الدالة الإنشائية العامة لفئة نصف القطر المضمنة لا يتم استدعاءها بشكل مباشر ولكن بدلًا من ذلك يجب إنشاء مثيل لكائنات النطاق الجغرافي من خلال الدالة الإنشائية للدوال
- تمت إزالة واجهات برمجة تطبيقات RoundRect لطلب البحث في topRight، وbottomRight، وbottomCenter، وما إلى ذلك.
- إيقاف ميزة Rect.shift نهائيًا لصالح Rect.translate
- تمت إزالة واجهات برمجة تطبيقات RoundRect.grow وRect.shrink
- تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect.
- تمت إزالة طريقتي RoundRect.mediumRect/tallMiddleRect/wideMiddleRect وRect.isStadium.
- تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxdimension.
- تم تغيير اسم RoundRect.shortestSide إلى RoundRect.minسام
- تم تغيير RoundRect.center إلى خاصية بدلاً من دالة
- تم تحديث الدالة الإنشائية RoundRect لاستهلاك خصائص نصف القطر بدلاً من المعلمات الفردية لقيم نصف القطر x/y
- تمت إزالة واجهات برمجة التطبيقات للحجم والتي افترضت أنه شكل مستطيل ذو مصدر 0,0
- تمت إضافة واجهة برمجة تطبيقات ضارة إلى Radius
- تم نقل دوال إضافات RoundRect المختلفة إلى مواقع بدلاً من ذلك
- (I8f5c7، b/168762961)
- تحسينات في الأداء على LazyColumnFor/LazyRowFor للتمرير من خلال عدم إجراء عمليات إعادة تركيب غير ضرورية أثناء كل تمرير (I64f65، b/168293643، b/167972292، b/165028371)
- تم إصلاح العُطل في LazyColumnFor/LazyRowFor بعد التمرير ثم تغيير العناصر وتم تنفيذ الانتقال التلقائي للأعلى عند إزالة العنصر المرئي سابقًا حتى لا نعرض فجوات فارغة في النهاية بعد الآن (I220ab، b/161480164، b/167855468)
- لم يعُد من الممكن السماح بدمج الحاويات القابلة للتمرير في الاتجاه نفسه، مثل ScrollableContainer وLazyColumnFor. لم يكن هذا النظام متاحًا مطلقًا وكان يكسر الفخاخ والكسل الذي يؤدي إليه إنشاء عناصر LazyColumnFor (I6e101)
- تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
- تم تحديث واجهات برمجة تطبيقات DrawScope باستخدام طرق تحويل النطاق للإشارة إلى أنّه لا يتم تطبيق التحويل إلا داخل طلب الاستدعاء وتتم إزالته بعد استدعاء الاستدعاء
- وثائقClipPath المحدّثة للإشارة إلى "المسار" بدلاً من المستطيل المستدير
- تباعد ثابت في وثائق المعلمة الصحيحة في tablePath
- تمت إعادة تسمية DrawScope.DrawCanvas إلى drawIntoCanvas وإزالة معلمة الحجم
- تمت إعادة تسمية معلمات dx/dy في طريقة الإدخال إلى الوضع الأفقي والرأسي
- تمت إضافة الحمل الزائد للداخل الذي يوفر نفس قيمة الإدخال لجميع الحدود الأربعة
- تمت إزالة الوثائق الموجودة على طريقة الإدخال التي تشير إلى أنه سيتم تطبيق الداخلية على جميع الجوانب الأربعة
- مستندات معدَّلة لفئة Rect
- تم تحديث التعليقات على معلمات Rect لمطابقة نمط kdoc
- تمت إزالة Rect.join وRect.expandToFrom
- تم إنشاء حِمل زائد لـ Rect.localized(offset) وإيقاف Rect.shift نهائيًا
- (If086a، b/167737376)
- بإضافة Accessibility ScrollState إلى خصائص الدلالات. (Ifeda9)
- يجب جعل TextRange مضمّنًا لتجنب إنشاء كائن. (Id034b)
- تمت إزالة قيود الفقرة. تم تمرير العرض مباشرةً إلى الفقرة الآن. (Ica712)
الإصدار 1.0.0-alpha03
16 أيلول (سبتمبر) 2020
تم طرح androidx.compose.foundation:foundation:1.0.0-alpha03
وandroidx.compose.foundation:foundation-layout:1.0.0-alpha03
وandroidx.compose.foundation:foundation-text:1.0.0-alpha03
. يحتوي الإصدار 1.0.0-alpha03 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية InnerPadding إلى PaddingValues. (I195f1، b/167389171)
- تمت إعادة تسمية استخدامات الجاذبية بشكل متكرر للمحاذاة أو المحاذاة في واجهات برمجة تطبيقات التصميم. (I2421a، b/164077038)
- تمت إضافة معلَمة محاذاة إلى Stack، ما يسمح بتحديد المحاذاة التلقائية لجميع عناصر Stack الثانوية. (Ie80ca، b/164085265)
إصلاح الأخطاء
- تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
- تمت إعادة تسمية المعلمتَين
minWidth
وmaxWidth
من إجماليwidthIn
إلىmin
وmax
. وبالمثل بالنسبة إلىpreferredWidthIn
وheightIn
وpreferredHeightIn
. (I0e5e1، b/167389544) - تمت إضافة onNode والطرق العامة الأخرى إلى ComposeTestRule حيث سيتم إيقاف الطرق العامة الحالية. (Ieae36)
- تم إصلاح العمليات الحسابية للحجم والموضع في ConversationScope، ما تسبّب في إنشاء إيماءات تمرير غير صالحة غير صالحة (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
عند إجراء الاختبارات التي تحتاج إلى TechnicalFrameClock.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 إلى الصف والعمود، لتمكين وضع عناصر التصميم الثانوية بتباعد ثابت. تمت إضافة الترتيب المحاذي أيضًا لتفعيل وضع عناصر التصميم الثانوية واحدًا بجانب الآخر ومحاذاته في الصف/العمود وفقًا لمحاذاة. تم إيقاف الطريقتين Arrangement.Vertical#arrange السابق و Arrangement.Horizontal#arrange السابق، ولن تتم كتابة الترتيبات المخصصة في المستقبل. (I6733d، b/161985975)
- أصبحت الإزاحة فئة مضمّنة (Iaec70)
- تمت إزالة onFocusChanged لطلبات معاودة الاتصال من TextField. استخدِم Modifier.focusMonitorer بدلاً من ذلك. (I51089، b/161297615)
- تم إيقاف Modifier.DrawBorder نهائيًا. يمكنك استخدام Modifier.الحدود بدلاً من ذلك. تم استبدال فئة البيانات الحدودية بـ BorderStroke (I4257d وb/158160576).
- تمت إزالة شريطي التمرير العمودي والتمرير الأفقي. استخدِم العمود أو الصف القابل للتمرير بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)
- يُرجى إزالة عناصر تعديل fillMax* المتوقّفة نهائيًا من LazyItemScope، لأنّها تصعِّب إضافة هذه المُعدِّلات بشكل صحيح للعناصر التي لا تُوجّه عناصر فرعية لـ LazyColumnFor (Ifa78d).
- تمت إضافة تنفيذ LazyColumn/LazyRow باعتباره DSL (I93cc6).
- أصبحت القيود الآن فئة مضمّنة (I88736)
- تمت إضافة إمكانية تحديد حجم تصميم إلى جزء صغير من المساحة المتاحة، وذلك باستخدام مُعدِّلات fillMax width وfillMaxHeight وfillMaxSize. (I945bb، b/161562591)
إصلاح الأخطاء
- تمت إضافة معلمة تعديل إلى SelectionContainer (I4aada، b/161487952)
- تمت إضافة integrationPolicy lambda إلى SemanticsPropertyKey. ويمكن استخدام ذلك لتحديد سياسة مخصصة لدمج دلالات الدمج AllDescendants. تتمثل السياسة الافتراضية في استخدام القيمة الرئيسية إذا كانت موجودة بالفعل، أو القيمة الفرعية. (Iaf6c4، b/161979921)
- تمت إعادة تسمية
PlacementScope.placeAbsolute()
إلىPlacementScope.place()
، كما تمت إعادة تسميةPlacementScope.place()
السابق إلىPlacementScope.placeRelative()
. ونتيجة لذلك، لن تعكس طريقةPlacementScope.place()
الموضع تلقائيًا في السياقات من اليمين إلى اليسار بعد الآن. إذا كنت تريد ذلك، يمكنك استخدامPlacementScope.placeRelative()
كبديل. (I873ac، b/162916675) - تمت إزالة المكوِّن FilledTextField المتوقف نهائيًا. يُرجى استخدام TextField بدلاً من ذلك للحصول على طريقة تنفيذ التصميم المتعدد الأبعاد لحقل النص المعبّأ. (I5e889)
- تمت إضافة المعلمة colorColor إلى قائمة LinearProgressPresents وإزالة المساحة المتروكة الداخلية من CircularProgressIndexator. تمت إضافة ميزة Progress لأجهزة Constants.DefaultProgressAnimationSpec الجديدة التي يمكن استخدامها كقيمة AnimationSpec التلقائية عند تحريك التقدّم بين القيم (If38b5 وb/161809914 وb/161804677)
- تم الآن إيقاف العنصر
state { ... }
القابل للإنشاء نهائيًا ليحلّ محلّه دعوات فاضحة موجّهة إلىremember { mutableStateOf(...) }
لمزيد من الوضوح. يقلل ذلك من مساحة العرض الإجمالية لواجهة برمجة التطبيقات وعدد المفاهيم لإدارة الحالة، كما يتطابق مع نمطby mutableStateOf()
لتفويض الموقع على مستوى الفئة. (Ia5727) - تمت إعادة تسمية RRect إلى RoundRect لملاءمة أنماط التسمية لإنشاء إنشاءات دوال مماثلة بشكل أفضل وإنشاء منصات إنشاء دوال RRect تم إيقافها نهائيًا (I5d325)
- تمت إزالة onChildPositioned وOnChildPositionedModifier. يجب على المطورين استخدام onPositioned وOnPositionedModifier على التخطيط الفرعي بدلاً من ذلك. (I4522e، b/162109766)
- أصبح IntSize الآن فئة مضمّنة (I2bf42).
- اضغط مع الاستمرار على المنطقة الفارغة للتعديل. (Ib1e5b)
- إخفاء شريط الأدوات العائم بعد النقر على النص (If4525)
- إخفاء FloatingToolbar عند تحديث التحديد. (I8444c)
- ألغِ اختيار "وقت التمويه". (I781a2)
الإصدار 0.1.0-dev16
5 آب (أغسطس) 2020
تم طرح androidx.compose.foundation:foundation:0.1.0-dev16
وandroidx.compose.foundation:foundation-layout:0.1.0-dev16
وandroidx.compose.foundation:foundation-text:0.1.0-dev16
. يحتوي الإصدار 0.1.0-dev16 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة LazyItemScope لمَعلمة itemContent للقوائم الكسولة. يوفّر هذا العمود تعديلات لملء الحد الأقصى للحجم الأصلي الذي يحل حالة الاستخدام التي تؤدي فيها العنصر إلى ملء إطار العرض ولا يعمل التعديل العادي Modifier.fillMaxSize() لأنّه يتم قياس العنصر باستخدام قيود لانهائية. (Ibd3b2، b/162248854)
- نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
- تمت إضافة LazyColumnForIndexed/LazyRowForIndexed - إصدارا LazyColumnFor/LazyRowFor الذي يوفر كلاً من الفهرس والعنصر في itemCallback. يكون ذلك مفيدًا عندما تحتاج إلى معرفة الفهرس الحالي بالإضافة إلى عنصر حالي. (I65ff3)
- تمت إعادة تسمية Modifier.deternimateProgress إلى Modifier.progressSemantics (I9c0b4)
- تمت إعادة تسمية LazyColumnItems إلى الاسم LazyColumnFor. تمت إعادة تسمية LazyRowItems إلى LazyRowFor (I84f84)
- أضف بعض العلامات/التعليقات التوضيحية لأسباب تتعلق بأفضل الممارسات. (I66b20)
- Foundation.shape.corner مُسطَّح على Foundation.share (I46491, b/161887429)
- تمت إضافة معلمة الجاذبية acrossaxis لـ LazyRowItems/LazyColumnItems. تتيح LazyRowItems/LazyColumnItems الآن سلوك محتوى الالتفاف. (Ib39fc)
- تمّت إعادة تسمية ZoomableState إلى ZoomableController. تمت إضافة إتاحة استخدام منحنى مخصّص لتطبيق sampleScale. تمت إضافة الوظيفة
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.absolute Offset() وModifier.absolute OffsetPx(). على عكس معدِّلات الإزاحة، لن يتم إجراء نسخ مطابق لمعدِّلات الإزاحة المطلقة تلقائيًا في السياق من اليمين إلى اليسار (I3aa21)
- أصبحت السمتان
Row
وColumn
الآن دالّة مضمّنة، ما يقلّل بشكل كبير من أعباء استخدامهما. (I75c10)
إصلاح الأخطاء
- معالجة الإصلاحات العامة لواجهة برمجة التطبيقات (I077bc)
- إزالة واجهة OffsetBase غير المستخدمة
- فئتا محاذاة الإزاحة وIntoffset للحصول على سطح واجهة برمجة تطبيقات متناسق
- أعد تسمية Int Offset.Origin إلى Int Offset.Zero ليتماشى مع واجهة برمجة التطبيقات Offset API
- تم نقل طريقة NativeCanvas خارج واجهة Canvas لدعم المستهلكين في إنشاء مثيلات خاصة بهم من Canvas.
- تم إنشاء فئة BlankCanvas لإعادة هيكلة التعليمات البرمجية DrawScope لتكون معلمة غير فارغة بدلاً من lateinit ويضمن عدم قابلية القيم الفارغة للحقل
- تمت إعادة تسمية تعدادات ClipOp إلى حالة Pascal
- تمت إعادة تسمية تعدادات FilterQuality إلى حالة Pascal
- تمت إعادة تسمية تعدادات StrokeJoin لتصبح حالة باسكال
- تمت إعادة تسمية تعدادات PointMode إلى حالة Pascal
- تمت إعادة تسمية تعدادات PaintingStyle لتصبح Pascal Case
- تمت إعادة تسمية تعدادات PathFillType إلى حالة Pascal.
- تمت إعادة تسمية تعدادات StrokeCap إلى حالة Pascal
- تم تحديث تنفيذ DrawCache بحيث يتوقف عن استخدام مَعلمات longinit
- تم تحديث DrawScope لكي يتوقف عن استخدام التفويض الكسول لمعلمات fillPaint وStrikePaint الداخلية
- صورة محدّثة قابلة للإنشاء لتجنب استخدام Box لتقليل النفقات العامة
- تم تعديل صف Outline ليشمل تعليقات توضيحية تشير إلى @Immutable.
- تم تحديث PathNode لإضافة تعليقات توضيحية @Immutable لكل تعليمات مسار
- تم تحديث التجميع الفرعي لـ Vector لإزالة عمليات التحقق الشرطية المتكررة للمساواة حيث يعالجها الإنشاء بالفعل
- طرق إنشائية رفيقة لـ Rect تم إيقافها لصالح الدوال الإنشائية للدوال
- تم تحديث فئات Brush ودوال الإنشاء للدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
- تم تعديل تعداد VertexMode ليصبح PascalCase
- تم تحديث طريقة Drawscope selectPaint لاستبدال معلمات الخط بشكل مشروط على الرسم إذا كانت قد غيّرت
- تم تحديث الحجم لإضافة واجهة برمجة تطبيقات تالفة، وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدمة
تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock في شكل AnimationClockMonitorable بين الساعات الكورروتينية الجديدة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى معاودة الاتصال.
أصبح المكافِئ MonotonicFrameClock لـ يدويAnimationClock الآن متاحاً يدويًا: يدوي إطار Clock. (I111c7، b/161247083)
تمت إزالة
SemanticsNodeInteraction.performPartialGesture
. استخدِمSemanticsNodeInteraction.performGesture
بدلاً من ذلك. (Id9b62)تمت إعادة التسمية
SemanticsNodeInteraction.getBoundsInRoot()
إلىSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf، b/161336532)تم تحديث واجهات برمجة التطبيقات للدعم من اليمين إلى اليسار. تمت إضافة LayoutDirection للانغماس، والتي يمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)
تم إيقاف Modifier.plus، لذا استخدِم Modifier.ثم بدلاً من ذلك. تقدّم القيمة "ثم" إشارة أقوى للطلب، بينما تحظر أيضًا كتابة
Modifier.padding().background() + anotherModifier
، التي تقسّم السلسلة وتصعب قراءتها (Iedd58، b/161529964)تمت إضافة
isFocused()
وisNotFocused()
SemanticsMatcher. (I0b760)تمت إضافة أداة إعادة القياس. يسمح للمستخدمين بإعادة قياس التخطيط بشكل متزامن. بشكل عام، لا تحتاج إليها أبدًا نظرًا لإجراء إعادة القياس/إعادة التخطيط تلقائيًا، ولكننا نستخدمه داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)
يستخدم isSystemInDarkTheme الآن إعداد المظهر الداكن على مستوى النظام ويتجاهل حالة توفير الطاقة قبل Q، وذلك باتّباع أحدث الإرشادات. (I0c10c)
تم إيقاف OnChildPositioned نهائيًا. استخدم OnPositioned على الطفل بدلاً من ذلك. (I87f95، b/162109766)
تمت إعادة تسمية AndroidComposeTestRule لإنشاء AndroidComposeRule. (I70aaf)
إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
الإصدار 0.1.0-dev15
22 تموز (يوليو) 2020
تم طرح androidx.compose.foundation:foundation:0.1.0-dev15
وandroidx.compose.foundation:foundation-layout:0.1.0-dev15
وandroidx.compose.foundation:foundation-text:0.1.0-dev15
. يحتوي الإصدار 0.1.0-dev15 على هذه الالتزامات.
لاستخدام إصدار 0.1.0-dev15
من Compose، عليك إجراء ما يلي:
تحديث التبعيات
- لاستخدام الإصدار
0.1.0-dev15
من Compose، عليك تعديل تبعياتك وفقًا لمقتطفات الرمز الجديدة الموضّحة أعلاه في قسم توضيح التبعيات.
تغييرات واجهة برمجة التطبيقات
- على نحو مشابه للمَعلمة الجديدة في ScrollableColumn/ScrollableRow، تحتوي LazyColumnItems/LazyRowItems الآن على معلمة contentPadding التي تسمح بإضافة مساحة متروكة للمحتوى بعد اقتصاصه، وهو أمر غير ممكن من خلال معلمة تعديل فقط. ويسمح أيضًا بإضافة تباعد قبل العنصر الأول/بعد العنصر الأخير فقط. (Ibc24e)
- onFocusChange معاودة الاتصال في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
- تم إيقاف كل من تطبيق "VerticalScroller" (التمرير العمودي) و"oriziontal Scroller" نهائيًا. يمكنك استخدام ScrollableColumn و ScrollableRow للحصول على تجربة مضمنة مع سلوك العمود/الصف والمعلمات، أو Modifier.vertical Scroll وModifier.horizontal Scroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا لصالح ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
- تمت إعادة صياغة واجهتَي برمجة التطبيقات Modifier.draggable وModifier.scrollable. تمت إزالة DragDirection لصالح ميزة "الاتجاه". تم تبسيط الحالة المطلوبة للانتقال للأعلى أو للأسفل. تمت إعادة تسمية ScrollableState لتصبح أداة ScrollableController (Iab63c، b/149460415).
- تستخدم الآن خصائص الدلالات ذات القيمة الفردية نمط استدعاء.
على سبيل المثال، تمت كتابة 'semantics { تؤثّر = true }' على النحو التالي:
semantics { hidden() }
. (Ic1afd وb/145951226 وb/145955412) - يمكن الآن أن تكون أحجام الزوايا المستخدمة في RoundedCornerShape وCutCornerShape أكبر من 50% (Id2340، b/160400213).
- تم تغيير معلمة ContentScale التلقائية للصورة القابلة للإنشاء من Inside إلى Fit. وقد تم ذلك من أجل إضفاء سلوك على توسيع نطاق الرسام الأساسي إذا كان حجم التخطيط أكبر من الحجم الأساسي للرسام مع الحفاظ على نسبة العرض إلى الارتفاع. إنّ هذا السلوك يتطابق بشكل أفضل مع التوقعات المتعلّقة بتوفير أحجام ثابتة للصورة مع عدم التأثير في السلوك التلقائي عند استخدام الحجم الأساسي فقط لحساب حجم العنصر القابل للإنشاء. (I40ae3، b/159838006)
- استخدم AnimationSpec بدلاً من AnimationBuilder في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الرسوم المتحركة الثابتة -تحسين عملية الانتقال DSL عن طريق إزالة مطلب lambda لإنشاء AnimationSpecs مثل tween أو spring. وبدلاً من ذلك، تتعامل مع المَعلمات الإنشائية مباشرةً. -تحسين سهولة استخدام دالة إنشاء AnimationSpec بدلاً من الاعتماد على منصات إنشاء (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 بـ IntPxPosition وInt Offset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
- تمت إزالة androidx.ui.foundation.shape.RectangleShape. يُرجى استخدام androidx.ui.graphics.RectangleShape (I94939، b/154507984).
- من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات المقاس، عليك توحيد استخدام فئة Size بدلاً من PxSize. يوفر هذا فوائد إحدى الفئات المضمنة للاستفادة من قيمة طويلة لحزمة 2 من القيم العائمة لتمثيل العرض والارتفاع الممثلين كأعداد عشرية. (Ic0191)
- من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد الموضع، عليك توحيد استخدام فئة الإزاحة بدلاً من PxPosition. يوفر هذا فوائد الفئة المضمنة للاستفادة من قيمة طويلة لحزمة 2 من القيم العائمة لتمثيل إزاحة x وy ممثلة كأعداد عشرية. (I3ad98)
- تمت إضافة Modifier.zoomable لوظيفة التصغير أو التكبير بإصبعين (Id5d63)
- تم إيقاف المكوِّن القابل للتبديل نهائيًا. استخدِم Modifier.toggleable بدلاً من ذلك (I35220، b/157642842)
- تم إيقاف المشارَكة الحصريةSetItem نهائيًا. استخدِم Modifier.selectable بدلاً من ذلك. (I02b47، b/157642842)
- تم إيقاف TestTag نهائيًا الآن. استخدِم Modifier.testTag بدلاً منها. (If5110، b/157173105)
- إضافة مَعلمة fontweight إلى النص الذي لم تتم إضافته عن طريق الخطأ (I56937)
- استبدل الاستخدام المستبدل لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة بناء الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (I19d02)
- يوفّر VerticalScroller الآن ميزة "العمود" بطريقة غير تقليدية. يوفّر "التمرير الأفقي" الآن ميزة "الصفوف" بطريقة مبتكرة. (Ieca5d، b/157020670)
- التعويض عن الاستخدام لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (Iede0b)
- تمت إضافة Modifier.indication إلى حزمة الأساس. استخدِم هذا الزر لإظهار الضغط/السحب/غير ذلك على العناصر المخصّصة القابلة للتفاعل (I8425f، b/155287131)
- يتيح كل من VerticalScroller وorizontal Scroller الآن استخدام التمرير العكسي. يتم ضبط الإعداد isReversed على ScrollerPosition (I953bd).
- إتاحة إضافة عناصر قابلة للإنشاء إلى تنسيق النص (I1373c)
- من خلال عمليات تنفيذ CanvasScope، أصبح هناك الآن فقط DrawScope وContentDrawScope، تم تغيير اسم تطبيق CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection وحذف الفئة الفرعية DrawScope في ContentDrawScope تم تعديل "Painter" وPainterModifier على التوقف عن الاحتفاظ بخاصية RTL في حد ذاتها، لأن DrawScope يوفّر ذلك يدويًا بدون تقديمه يدويًا (I1798e)
- تمت إزالة واجهة برمجة التطبيقات DrawBackground المتوقّفة نهائيًا لصالح واجهة برمجة التطبيقات drawBackground الخاصة بإضافات التطبيق على Modifier. عمليات إعادة تصميم الخلفية باستخدام الألوان والفرشاة والطلاء لتقليل مسارات الرموز بالإضافة إلى إزالة متطلبات إنشاء أداة التعديل كجزء من عملية الإنشاء. (I0343a)
- تم تحديث واجهات برمجة التطبيقات ذات المستوى الأعلى التي تعرض "لوحة الرسم" لعرض CanvasScope بدلاً من ذلك. يؤدي ذلك إلى إزالة حاجة المستهلكين إلى الحفاظ على كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا يطلبون الوصول إلى لوحة رسم، يمكنهم استخدام طريقة إضافة drawCanvas التي توفر معاودة اتصال لإصدار أوامر الرسم من لوحة الرسم الأساسية. (I80afd)
- لا يستعيد تطبيق "العرض الأفقي" و"أداة التمرير الرأسي" موضع التمرير باستخدام حالة المثيل المحفوظة. (Ia0fae، b/155075048)
- تمت إزالة FocusManager وضع عدم النشاط. استخدِم FocusModifier.requestFocus للحصول على التركيز. (Ic4826)
- تمت إزالة تنسيق الجدول مؤقتًا إلى أن يصبح متوفرًا مرة أخرى مع واجهة برمجة تطبيقات مُحدّثة. (Id88a7)
تم إنشاء واجهة برمجة تطبيقات CanvasScope التي تعمل على لفّ عنصر لوحة الرسم لعرض سطح واجهة برمجة تطبيقات للرسم البياني بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق الاستقبال الخاص بها، كما يتم أيضًا تحديد حجم معلومات الحجم وفقًا لحدود الداخلية المقابلة. فلا يتطلب من المستهلك الاحتفاظ بكائن حالة الطلاء الخاص به لتكوين عمليات الرسم.
تمت إضافة CanvasScopeعيّن كما تم تحديث التطبيق التجريبي لتضمين عرض توضيحي للرسومات التوضيحية (Ifd86d)
تمت إزالة ColoredRect. User Box مع أداة التعديل drawBackground بدلاً من ذلك (I983c7، b/152753731)
إضافة تخصيص لون المؤشر إلى حقل النص (I6e33f)
يمكن الآن إخفاء/إظهار لوحة مفاتيح البرامج باستخدام SoftwareKeyboardController التي يتم تقديمها بواسطة onTextInputStarted 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)استبدلت معلمة CoreTextField/TextFieldNIdentifier بقيمة FocusNode للدمج مع النظام الفرعي للتركيز. (I7ea48)
تعديل الحقل النصي: في البعد الأفقي، سيَشغل كل المساحة المتاحة الممنوحة له (Ib08df، b/154638552)
تمت إضافة InteractionState وInteraction، مما يسهل إنشاء المكونات التي تتفاعل مع تغيرات حالة واجهة المستخدم مثل الضغط والسحب (Icfe25، b/152525426)
تم نقل شكل المستطيل من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات اللون القابلة للقيم الفارغة في واجهة برمجة التطبيقات بالقيمة غير الفارغة واستخدام Color.Unset بدلاً من "فارغ" (IBAa7)
تحديث واجهة برمجة تطبيقات TextField - تم دمج استدعاءات onFocus وonBlur في معاودة اتصال onFocusChange(Boolean) واحدة مع المعلَمة (I66cd3)
تم تغيير اسم ScaleFit إلى ContentScale Moved ContentScale من رسومات واجهة المستخدم إلى وحدة ui-core، ليعيش في نفس الوحدة مثل واجهة برمجة التطبيقات API (واجهة برمجة التطبيقات). تمت إعادة تسمية FillMaxعبِّر عن الاقتصاص وأعادت تسميت FillMin الأوسط إلى Fit وأعادت تسمية Fit إلى Inside لمطابقة أفضل ImageView.ScaleType
تتم إزالة ServiceContentColor، ولكن يمكنك بدلاً من ذلك استخدام ContentColorبعث المباشر مع
Providers
(Iee942).لإضافة مَعلمة لون إلى النص، ما يتيح إلغاء لون نمط النص بدون الحاجة إلى الدمج يدويًا مع النمط المتوفّر في المظهر (I41a66)
تحسين واجهة برمجة تطبيقات DrawModifier:
- تم إنشاء نطاق المستلم لـ draw() ContentDrawScope
- تمت إزالة جميع المعلمات في draw()
- يحتوي DrawScope على الواجهة نفسها المُستخدَمة في تطبيق CanvasScope.
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تم إيقاف ColoredRect نهائيًا. يمكنك استخدام
Box(Modifier.preferredSize(width, height).drawBackground(color))
كبديل. (I499fa، b/152753731)يتم تحديث نظام تحديد المواضيع وفقًا لمواصفات Material Design. يمكنك الآن توفير أشكال صغيرة ومتوسطة وكبيرة لتستخدمها معظم المكوّنات (Ifb4d1).
تم استبدال عامل التشغيل بالإضافة إلى التعديل بوظائف الإضافة على الإعدادات الأصلية (I225e4)
تم نقل السحب إلى مفتاح التعديل (Id9b16، b/151959544)
تم نقل
Text
إلى حزمة androidx.ui.foundation، من androidx.ui.core. (I87ce5)إضافة معلمة
enabled
إلى مربّع الاختيار ومفتاح التبديل والتبديل (I41c16)أصبح تطبيق Ripple الآن "معدِّل". في حين أن الاستخدام المقترح لم يتم تحويله بعد هو "
Clickable(onClick = { ... }, modifier = ripple())
" (Ie5200، b/151331852، b/150060763)تمت إضافة واجهة برمجة التطبيقات VectorPainter لاستبدال واجهة برمجة التطبيقات للتركيبة الفرعية الحالية للرسومات المتجهة. نتيجة التركيبة الفرعية هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف عناصر قابلة للإنشاء السابقة في DrawVector لصالح VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات
Image(Painter)
إلىPaintBox(Painter)
. تم إنشاء عنصر Vector قابل للإنشاء ويتصرف مثل عنصر قابل للإنشاء للصور باستثناء عنصر VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)تم إنشاء صورة قابلة للإنشاء للتعامل مع الحجم/التخطيط بالإضافة إلى رسم ImageAsset معين على الشاشة. يتيح العنصر القابل للإنشاء أيضًا رسم أي مثيل عشوائي من فئة Painter مراعيًا حجمه الأساسي، بالإضافة إلى دعم حجم ثابت أو حد أدنى معيّن (Ibcc8f)
يحتوي الزر وFloatingActionButton وقابل للنقر الآن على معلَمة
enabled
منفصلة. تمت إعادة تسمية بعض المَعلمات على Button أو إعادة ترتيبها. (I54b5a)تمت إعادة تسمية الصورة إلى ImageAsset للتمييز بشكل أفضل بين بيانات الصورة والصورة القادمة القابلة للإنشاء والتي تستخدم للمشاركة في التخطيط ورسم المحتوى.
تم إنشاء طريقة الإضافة على android.graphics.Bitmap،
Bitmap.asImageAsset()
، لإنشاء مثيل لـ ImageAsset مفيد للجمع بين تطوير تطبيقات Android التقليدي وإطار عمل الإنشاء. (Id5bbd)تمت إزالة عنصر DrawImage القابل للإنشاء. استخدِم ImagePainter لرسم صورة على تنسيق حالي، أو SimpleImage لتقديم صورة تشغل مساحة (I595e1، b/149827027).
يدعم مكوِّن الحزم الاتجاه من اليمين إلى اليسار (Ic9e00)
تمت إضافة رمز، IconButton و IconToggleButton، يؤدي إلى إزالة AppBarIcon. يمكنك استبدال الاستخدامات الحالية لتطبيق AppBarIcon مباشرةً بـ IconButton، وسيتوفّر الآن ناحية اللمس المستهدفة الصحيحة. ويمكنك الاطّلاع على نماذج معلومات الاستخدام والاطّلاع على رموز Material Codes المقدَّمة والتي يمكنك استخدامها مباشرةً مع هذه المكونات. (I96849)
تمت إزالة عنصر DrawShape القابل للإنشاء. يمكنك استخدام أداة التعديل في DrawBackground بدلاً من ذلك. (I7ceb2)
تمت إضافة AdapterList، وهو مكون من مكونات قائمة التمرير الذي ينشئ العناصر المرئية ويحددها فقط. تتضمن المشكلات المعروفة حاليًا أنه يتم عرضه في الوضع العمودي فقط ولا يعالج بشكل كامل جميع حالات التغييرات التي تطرأ على عناصره الثانوية. (Ib351b)
تمت إضافة مكوِّن قابل للتمرير، ما يسمح بإنشاء برامج تمرير/قوائم مخصّصة (I5fd37).
تمت إعادة تسمية الخلفية إلى DrawBackground وجعلها قابلة لحفظها بشكل تلقائي (Ia0bd3).
إضافة المسافات المتروكة والحدود والشكل والخلفية إلى Box (I05027، b/148147281)
تمت إضافة مكون "لوحة الرسم". يأخذ هذا العنصر القابل للإنشاء بعض الحجم (يوفّره المستخدم) ويسمح لك بالرسم باستخدام CanvasScope (I0d622).
إعادة تسمية عنصر التعديل
Border
إلىDrawBorder
(I8ffcc)تمت إضافة مكون Box للجمع بين وظائف التخطيط والرسم الشائعة. (I6e2a7)
تُظهر برامج التمرير الآن سلوك الحركة السريعة في نظام التشغيل Android. (I922af، b/147493715)
تم استبدال DrawBorder بمعدِّل الحدود (Id335a).
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId، لتجنّب حدوث أي التباس مع Modifier.testTag. (I995f0)
تمت إعادة تسمية مَعلمة النسبة المئوية عند إنشاء إرشادات ConstraintLayout إلى كسر. (Ida2db)
تمت إضافة دعم للهوامش الخاصة بحواجز ConstraintLayout. (I47ffe)
تم إصلاح دعم RTL في ConstraintLayout. تمت إضافة واجهات برمجة تطبيقات غير مُدركة ذات RTL. (I3b1c7)
تمت إضافة DSL جديد إلى ConstraintLayout. يُرجى الاطّلاع على النماذج للحصول على مزيد من التفاصيل. (Icaa9a)
تمت إضافة التعليق التوضيحي @SharedLayout. يتم الآن وضع علامات على ConstraintLayout وflowRow وFlowColumn مع علامة أن واجهات برمجة التطبيقات الخاصة بها ستتغير. (I412a8)
تمت إضافة "
Modifier.padding(InnerPadding)
" (I94985، b/157133803).تمت إزالة المحاذاة لصف الصفوف ومحاذاة العمود المتوقفة نهائيًا في الصف والعمود. (If60d4، b/155858731)
تمت إزالة LayoutTag() المتوقفة نهائيًا. يُرجى استخدام Modifier.tag() بدلاً من ذلك. تمت إزالة ميزة Modifier.matchParent() المتوقفة نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً من ذلك. (If8044)
تمت إضافة معدِّل تنسيق الإزاحة، الذي يمكن استخدامه لتحديد الإزاحة (الديناميكية) بالبكسل. (I5af57)
تم إيقاف نقطة التكوين القابلة للإنشاء في ControlsLine Offset نهائيًا، يُرجى استخدام عنصر التعديل المقدَّر نسبيةPaddingFrom() بدلاً من ذلك. تمت إزالة CenterAlignmentLine القابل للإنشاء. (I60107)
تمت إضافة عنصر تعديل التنسيق defaultMinSizeConstraints، الذي يضبط قيود الحجم على التخطيط الملتف فقط عند عدم تحديد القيود المقابلة الواردة (0 لقيود الحد الأدنى واللانهاية للحد الأقصى للقيود). (I311ea، b/150460257)
تمّت إزالة الحاوية. استخدام Box بدلاً من ذلك (Ibbc2b، b/151407926)
تمت إزالة مفاتيح تعديل العرض/الارتفاع/الحجم المتوقفة نهائيًا. (Ib0bc1)
تمت إضافة قيم المَعلمات التلقائية لمعدِّل الإزاحة. (I37f06)
تمت إضافة أداة تعديل المساحة المتروكة. (I39840)
تمت إزالة أداة تعديل LayoutAspectRatio المتوقفة نهائيًا. (I65a74)
تمت إزالة معدِّلات محاذاة التنسيق المتوقفة نهائيًا. (I10877)
تم إصلاح خطأ في معدِّلات العرض والارتفاع الذي كان يتسبب في قياس التخطيط الملتف بدون قيود على محور معاكس. (I210b8، b/154797971)
تمت إضافة معلمتي verticalGravity وhorizontalGravity إلى "الصف" والعمود، على التوالي. (I7dc5a)
تم تحديث wrapContentDisplay وwrapContentHeight لتوقُّع محاذاة رأسية أو أفقية بدلاً من أي محاذاة. تم تحديث مُعدِّل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تحديث الصف والعمود والحزمة لإتاحة عمليات المحاذاة المستمرة المخصّصة. (Ib0728)
تم جعل المحاذاة قابلة للتحسين باستخدام قيم عشوائية. تمت إضافة محاذاة أحادي الأبعاد. (Ia0c05)
تمت إعادة تسمية EdgeInsets إلى InnerPadding. تمت إعادة تسمية معلمة innerPadding لـ Material Buttons إلى تجليد. (I66165)
تقبل reltoSiblings الآن العنصر الذي تم قياسه بدلاً من Placeable. (I5788d)
تمت إضافة تعديلات لتغيير الحجم إلى القياسات الأساسية وإيقاف المكوّنات التي تخدم هذا الغرض نهائيًا. (I8295d)
تمت إضافة إمكانية تخصيص أبعاد العناصر الثانوية في ConstraintLayout (Idb1a5).
تمت إزالة العنصرَين القابلَين للإنشاء المتوقّفَين لكل من ميزة "الالتفاف" و"المركز". (I29e23)
تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد تعديلات التنسيق. تم إيقاف LayoutModifier نهائيًا (If32ac)
يمكن الآن الوصول إلى أعضاء RowScope والعمود "نطاق العمود" خارج الصف والعمود. (I3a641)
تم إيقاف الحاوية نهائيًا. استخدِم Box بدلاً من ذلك. (I675ce، b/151407926)
تمت إضافة معدِّل Layout Offset لإزاحة موضع التنسيق (I0b8a3).
الدعم الأولي لـ Rtl في تنسيق Compose (Ia5519)
تم تعديل التنسيق لعدم ملء المساحة المتاحة بعد الآن (I2b14f)
تمت إزالة AspectRatio القابلة للإنشاء لصالح المعدِّل. تم حذف عنصر FlexColumn القديم والعناصر القابلة للإنشاء FlexRow وأداة تعديل المسافات (Iec8a7).
تمت إزالة معدِّل LayoutInflexible للصف والعمود (I0d820).
يمكنك تنفيذ مؤشرات تحديد السحب لتغيير حقل النص. (I27032)
لتنفيذ LongPressAndDrag لتحديد حقل النص. (I17919)
إصلاح الأخطاء
- تم إيقاف FocusModifier نهائيًا لصالح Modifier.focus وModifier.focusRequester وModifier.focusMonitorer تم إيقاف FocusState وFocusStepState لتحل محله FocusState2 (I46919 وb/160822875 وb/160922136).
- تمت إعادة تسمية
runOnIdleCompose
إلىrunOnIdle
(I83607) - تمت إعادة تسمية العديد من واجهات برمجة التطبيقات التجريبية لتصبح أكثر سهولة. تمت إعادة تسمية جميع واجهات برمجة تطبيقات FindXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة تطبيقات doXYZ إلىperformXYZ. (I7f164)
- يزيل Modifier.ripple المتوقف سابقًا. تستخدم الميزة القابلة للنقر الآن تموج كمؤشر افتراضي (إذا تم تعيين MaterialTheme {} في تطبيقك) لذا في معظم الحالات يمكنك فقط استخدام إمكانية النقر والحصول على مؤشر تمويج مجانًا. إذا كنت بحاجة إلى تخصيص المعلمة color / size / bounded للتمويج، فيمكنك إنشاء RippleIndexation يدويًا وتمريره إلى أن يمكن النقر عليه كمعلمة إشارة. (I663b2، b/155375067)
- تمت إزالة واجهات برمجة التطبيقات لاختبار الحجم القديم. (Iba0a0)
- واجهة برمجة تطبيقات Made LayoutNode التجريبية (I4f2e9)
- تم تنفيذ الإصدار 1 من قفل اتجاه التمرير في Compose. (I1ce7a، b/150289741)
- تكتسب النوافذ المنبثقة ومربعات الحوار والقوائم الآن مظهر MaterialTheme السياقي (Ia3665، b/156527485)
- تمت إزالة مَعلمة اتجاه التصميم من وحدة القياس للدالة Layout(). ومع ذلك، يتوفّر اتجاه التصميم داخل معاودة الاتصال من خلال كائن نطاق القياس (Ic7d9d).
- إضافة AbsoluteArrangement - يسمح بترتيب العناصر الفرعية داخل الصف بدون النسخ المطابق التلقائي في RTL (I3a1df)
- تم إيقاف التعليق التوضيحي @غير المتتبّع. استبدال بـ @ComposableContract(tracked=false) (Id211e)
- قبل إجراء هذا التغيير، كان المكوِّن الإضافي لإنشاء المبرمج البرمجي يعترض بشكل غير معتاد عمليات الاستدعاء للدوال الإنشائية داخل دالة @Composable في حال توفُّر (I5205a، b/158123804).
- أضِف عنصر
viewModel()
قابل للإنشاء، والذي يسمح بإنشاء أو إنشاء ViewModel على نحو مماثل لطريقة العمل في "النشاط" أو "الجزء" (I5fdd1). فئة النطاق الجغرافي المُعاد تصميمها لتكون فئة مضمّنة. تمت إزالة طرق الإنشاء المصاحبة لصالح الدالة الإنشائية للدالة ذات المعلمة التلقائية لجعل نصف القطر على المحور y مطابقًا للمعلَمة الإلزامية نصف القطر للمحور x.
تم تحديث DrawScope.DrawRoundRect لاستهلاك معلَمة Radius واحدة بدلاً من قيمتَين عائمتَين منفصلتَين لنطاق القطر على طول المحورَين x وy (I46d1b)
يتم استبدال الاستخدام المستبدل لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة بناء الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل. تم حذف فئة Px بالكامل (I3ff33).
استبدل الاستخدام المستبدل لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة بناء الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (I086f4)
استبدل الاستخدام المستبدل لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة بناء الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (Id3434)
استبدل الاستخدام المستبدل لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (I97a5a)
يتضمّن مؤشر "TextField" رسمًا متحركًا وامضًا (Id10a7).
لم تعد الإيماءات الجزئية تتطلب تمرير رمز الإيماءات (Id7ae5)
يتم التعويض عن الاستخدام المستبدل لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (I57bff)
تم إيقاف ميزة Modifier.semantics نهائيًا للسماح باستخدام المكوّنات العالية المستوى. (I4cfdc)
أعد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)
تم تحديث واجهة برمجة تطبيقات المحاذاة وإضافة دعم للمحاذاة المطلقة (التي لا تعكس النسخ المطابق تلقائيًا في سياق 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-compos في مشروعك. (I32042)
runOnIdleCompose
وrunOnUiThread
هما الآن دالتان عموميتان بدلاً من الطرق في ComposeTestRules. (Icbe8f)[Mutable]تم نقل عوامل التشغيل المفوَّضة إلى المواقع الإلكترونية في الولاية إلى الإضافات لإتاحة تحسينات تفويض المواقع الإلكترونية في Kotlin 1.4. على المتصلين إضافة عمليات استيراد لمواصلة استخدام "
by state { ... }
" أو "by mutableStateOf(...)
". (I5312c)أصبح تطبيق DrawLayerModifier و drawLayer() تلقائيًا منبه بصيغة trackToBounds وClipToOutline على false. (I0eb8b، b/152810850)
تمت إعادة تسمية LayoutResult إلى MeasurementResult. (Id8c68)
عنصر قابل للإنشاء من مركز متوقّف نهائيًا. يجب استبداله إما بمعدِّل LayoutSize.Fill + Layout.Center أو بأحد العناصر القابلة للإنشاء في Box أو Stack مع تطبيق معدِّلات مناسبة (Idf5e0).
تمت إعادة تسمية Layout Flex إلى Layout Weight (وزن التخطيط). تمت إعادة تسمية المعلمة المحدودة للتعبئة. (If4738)
تم تغيير DrawVector من دالة عادية قابلة للإنشاء إلى إرجاع Modifier drawVector() التي سترسم المتجه كخلفية إلى التخطيط. (I7b8e0)
استبدل الدالة القابلة للإنشاء Clip بأداة التعديل drawClip(). يُعد DrawClipToBounds أداة تعديل ملائمة للاستخدام عندما تحتاج فقط إلى الاقتصاص إلى حدود الطبقة ذات شكل مستطيل. (If28eb)
تم استبدال دالة DrawShadow القابلة للإنشاء باستخدام معدِّل drawShadow(). يتم الآن رسم الظلال كجزء من معدِّل الطبقة. (I0317a)
تم نقل androidx.compose.ViewComposer إلى androidx.ui.node.UiComposer تمت إزالة androidx.compose.Emittable. حيث كانت متكررة مع ComponentNode. وتمت إزالة androidx.compose.ViewAdapters. ولم تعُد حالة استخدام متوافقة. تم إيقاف Compose.composeInto نهائيًا. يمكنك استخدام
setContent
أوsetViewContent
بدلاً منها. تم إيقاف Compose.disposition Compose نهائيًا. يُرجى استخدام طريقةdispose
علىComposition
التي يعرضهاsetContent
بدلاً من ذلك. تم نقل androidx.compose.Compose.subcomposeInto إلى androidx.ui.core.subcomposeIntoملف شخصي تم إيقافه نهائيًا قابل للإنشاء. ويمكن استبداله إما بمعدِّل المحاذاة أو بعنصر Stack القابل للإنشاء (Ib237f)
تم نشر اتجاه التصميم من عقدة التخطيط الرئيسية إلى العناصر الثانوية. تمت إضافة أداة تعديل اتجاه التنسيق. (I3d955)
أعِد تسمية Painter.toModifier إلى Painter.asModifier، لأنّ "التعديل" الذي تم إنشاؤه حديثًا يتضمّن إشارة إلى "Painter" الأصلي الذي يمكن مشاركته بين عدة مثيلات "التعديل" (I7195b).
إتاحة الاتجاه من اليمين إلى اليسار في أداة تعديل LayoutPadding (I9e8da)
تم دمج الكثافة وDensityScope في واجهة واحدة. يمكنك الآن استخدام Density الربط بواقع المحيطات بدلاً من استخدام "amindensity() ". بدلاً من withdensity(density) only with(density) (I11cb1)
تمت إزالة فئة ValueHolder. وفئات رسوم الرسوم المتحركة التي تمت إعادة بنائها ورسمها المتحركة لجعل حقل قيمة الرسوم المتحركة تجريديًا بحيث يمكن للفئات الفرعية مشاهدة تحديث القيمة.
- تمت إضافة فئات نماذج لـAnimationValue وAnimationFloat وما إلى ذلك.
- تمت إضافة مجموعة جديدة من واجهة برمجة التطبيقات @Composable خفيفة الوزن للتنقل بين القيم.
- (I79530)
تم إجراء تغييرات على واجهة برمجة التطبيقات في أجواء الإضاءة المحيطة. اطّلِع على السجلّ ومستندات
Ambient<T>
للحصول على التفاصيل (I4c7ee، b/143769776)مواضع Int لخط المحاذاة التي تم إرجاعها من Placeable#get(AlignmentLine) أصبحت الآن غير فارغة. إذا كان خط المحاذاة الذي تم طلبه مفقودًا، سيتم عرض AuthenticationLine.Unspecified. (I896c5، b/158134875)
تم إصلاح خطأ ConstraintLayout الذي يتسبب في حدوث عطل في عمليات إعادة الإنشاء. (Ibee5a، b/158164341)
تم تغيير واجهة برمجة التطبيقات اللاحقة لـ lambda في WithConstraints. والآن، بدلًا من معلّمتين، يتوفر نطاق للمستلم (بالإضافة إلى القيود) وLayoutDirection يوفِّر خصائص min width وmax width وminHeight وmaxHeight في Dp (I91b9a وb/149979702).
تم تغيير اسم LayoutModifier2 إلى LayoutModifier. (Id29f3)
تحتوي دوال القياس الأساسية في Layout وLayoutModifier2 على جهاز استقبال IntrinsicmeasureScope الآن يوفّر واجهة برمجة تطبيقات طلبات البحث الأساسية مع اتجاه تصميم يتم نشره بشكل ضمني. (Id9945)
تم إيقاف ميزة LayoutDirection مضمَّنة نهائيًا. لقراءة اتجاه التنسيق الذي تحدّده اللغة، استخدِم localeLayoutDirection في صفحة "الإعداد" (I851b1).
تمت إضافة positionInParent وboundsInParent لـ LayoutCoordinates. (Icacdd، b/152735784)
تم إيقاف ParentData القابل للإنشاء نهائيًا. عليك إنشاء معدِّل ينفذ واجهة ParentDataModifier أو استخدام أداة تعديل LayoutTag إذا كنت تحتاج إلى وضع علامة على عناصر التصميم الثانوية للتعرّف عليها داخل مجموعة القياس. (I51368، b/150953183)
أضف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين OnPositioned وOnChildPositioned القابل للإنشاء. (I2ec8f)
عدم السماح بالمساحة المتروكة السالبة في LayoutPadding. يجب استخدام Layout Offset بدلاً من ذلك لإزاحة الموضع السلبي. (Ifb5b1)
حصلت WithConstraints على معلمة LayoutDirection (I6d6f7)
تم تحديث العلامة
ComposeFlags.COMPOSER_PARAM
لتصبحtrue
، ما سيؤدي إلى تغيير استراتيجية إنشاء الرموز للمكوِّن الإضافي الإنشاء. يؤدي هذا المستوى العالي إلى إنشاء دوال @Composable باستخدام مَعلمة اصطناعية إضافية يتم تمريرها إلى استدعاءات @Composable اللاحقة لكي يتمكن وقت التشغيل من إدارة عملية التنفيذ بشكل صحيح. ومع ذلك، يجب أن يحافظ هذا التغيير على التوافق مع مستوى المصدر في جميع استخدامات الإنشاء الخاضعة لقيود. (I7971c)تم تغيير LayoutCoordinates لجعل المقدمةAlignmentLines مجموعة بدلاً من خريطة وتعيين LayoutCoordinates عامل التشغيل get() بدلاً من استرداد القيمة. وهذا يسهّل على المعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)
لم تعُد LayoutCoordinates خاصية الموضع. لا معنى لخاصية الموضع عند التفكير في معدِّلات التخطيط أو التدوير أو التحجيم. بدلاً من ذلك، يجب على المطورين استخدامparentCoordinates وchildToLocal() لحساب التحويل من أحد LayoutCoordinate إلى آخر.
تستخدم LayoutCoordinates IntPxSize لخاصية الحجم بدلاً من PxSize. تستخدم التخطيطات أحجام وحدات بكسل صحيحة للتخطيطات، لذا يجب أن تستخدم جميع أحجام التخطيط الأعداد الصحيحة وليس قيم النقطة العائمة. (I9367b)
تحسينات على واجهة برمجة التطبيقات للقيود (I0fd15)
تمت إضافة TextDirection.Content (I48f36)
يمكنك إلغاء الربط من قائمة شريط الأدوات لعرض النسخ والقص واللصق على نحو صحيح. (Id3955)
إضافة FloatingToolbar لتحديد حقل النص (Ie8b07)
تمت إعادة تسمية TextDirectionAlgorithm إلى TextDirection (I75ce8).
تمت إعادة تسمية TextDirection إلى resolvedTextDirection (I3ff38).
إضافة HapticFeedback إلى تحديد حقل النص (I58050)
إضافة طرق النسخ والقص واللصق إلى تحديد حقل النص. (Idb70b)
تم حذف TestTag ودلالات الدلالات. استخدام 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)
أصبح تطبيق LifecycleOwner AMP الجديد متاحًا الآن. إنّ النشاط الذي تستخدمه في واجهة المستخدم في Compose يجب أن يوسّع نطاق androidx.activity.ComponentActivity (أو AppCompatActivity). تم إيقاف سياسة setContent على android.app.Activity نهائيًا (Idb25a، b/153141084).
تم استبدال اسم الحزمة ui-android-text (androidx.text) بـ androidx.ui.text.platform للتوافق مع سياسة androidx. (I42711)