واجهة مستخدم "الإنشاء"
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(الاطّلاع على مستندات مرجع واجهة برمجة التطبيقات لجميع حِزم Compose)
| آخر تحديث | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 7 أكتوبر 2026 | 1.12.1 | - | 1.13.0-beta01 | - |
البنية
Compose هي مجموعة من 7 أرقام تعريف لمجموعات Maven ضمن androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدَفة من الوظائف، ولكل منها مجموعة خاصة من ملاحظات الإصدار.
يوضّح هذا الجدول المجموعات ويتضمّن روابط لكل مجموعة من ملاحظات الإصدار.
| مجموعة | الوصف |
|---|---|
| compose.animation | إنشاء رسوم متحركة في تطبيقات Jetpack Compose لإثراء تجربة المستخدم |
| compose.compiler | يمكنك تحويل دوال @Composable وإتاحة عمليات التحسين باستخدام إضافة لبرنامج التجميع في Kotlin. |
| compose.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء عناصر نظام التصميم الخاص بك. |
| compose.material | إنشاء واجهات مستخدم Jetpack Compose باستخدام "مكوّنات التصميم المتعدد الأبعاد" الجاهزة للاستخدام هذه هي نقطة الدخول الأعلى مستوى في Compose، وهي مصمَّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة في www.material.io. |
| compose.material3 | يمكنك إنشاء واجهات مستخدم Jetpack Compose باستخدام مكوّنات التصميم المتعدد الأبعاد 3، وهي أحدث إصدار من التصميم المتعدد الأبعاد. يتضمّن الإصدار 3 من Material تصميمًا ومكوّنات محدّثة وميزات تخصيص Material You، مثل الألوان الديناميكية، وهو مصمّم ليكون متوافقًا مع أسلوب العرض الجديد وواجهة مستخدم النظام في Android 12. |
| compose.runtime | هي اللبنات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي الذي يستهدفه المكوّن الإضافي لبرنامج تجميع Compose. |
| compose.ui | المكوّنات الأساسية لواجهة مستخدم Compose اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال |
تحديد الاعتماديات
لإضافة اعتمادية على Compose، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين أداء Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
لمزيد من المعلومات، يُرجى الاطّلاع على مستندات Issue Tracker.
الإصدار 1.13
الإصدار 1.13.0-beta01
7 أكتوبر 2026
تم طرح androidx.compose.ui:ui-*:1.13.0-beta01. يتضمّن الإصدار 1.13.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة
Modifier.interactionBarrier()من مساحة واجهة برمجة التطبيقات العامة للإصدار 1.13. (I47974، b/564575045، b/347038246) - تم تعديل واجهات برمجة التطبيقات
PolygonShape: تم نقلCornerRoundingإلى المستوى الأعلى باستخدام مصنّعيdp()وfraction()، وتم استبدال الإضافتينtransformed()وscaledToFit()بالدالتينPolygonShape.transform(PolygonShapeTransformScope.() -> Unit)وPolygonShape.copy()القابلتين للتعديل في المكان نفسه. (If5970) - أصبحت
onValueChangeالآن مَعلمة مطلوبة فيSliderوVerticalSliderوRangeSlider. تمت إزالة واجهات برمجة التطبيقات المتوقّفة نهائيًا والتي كانت مخفية سابقًا في جميع مكوّناتSliderوRangeSlider، بما في ذلك تنفيذDraggableStateعلىSliderStateوعمليات التحميل الزائد القديمةSaver. تمت إزالة "isVertical" منSliderState. تم إيقاف التحميل الزائدSliderDefaults.Thumbالذي يستخدِمSliderStateواستخدام التحميل الزائدisVerticalبدلاً منه. (I3fdc1) - تم استبدال الفئة
PostureفيMediaQueryبالفئةWindowPostureالتي تعرضWindowFolds فعلية (FoldStateوFoldOrientation). تمت إضافة السمتَينisTabletopوisFlatإلىWindowPosture، وتمت إزالة وضع "الكتاب" الصريح. (Id9e8e) - تستهدف المكتبات الآن الإصدار 2.2 من Kotlin وتتطلّب الإصدار 2.2 من kotlinc (I82396، b/498369605)
- تمت إضافة
@FloatRangeإلىBlurStop.fraction، وتغيير القيمة التلقائيةfallOffRadiusفيBlurRadiusSpec.radialGradientإلىDp.Unspecified، وتغيير اسم المَعلمةradiusفيModifier.blurإلىblurRadiusSpec، وتغيير اسمBlurScope.radiusإلىblurRadiusSpec. (I91dbc، b/556335791)
إصلاح الأخطاء
- تم إصلاح خطأ IllegalArgumentException (لم يتم العثور على LayoutNode في RectList) عند طلب خطوط المحاذاة أثناء القياس. (Icec9e، b/549552303)
- سيشارك
VectorPainterالآن مراجع الرسومات الداخلية (ImageBitmap) عند عرضImageVectorنفسه في عدة عناصر قابلة للإنشاء. يؤدي ذلك إلى تقليل عمليات تحميل النسيج المتكرّرة واستخدام الذاكرة، ما يحسّن الأداء في سيناريوهات مثل القوائم التي تستخدم رموزًا متكرّرة. يمكن إيقاف هذا التحسين من خلالComposeUiFlags.isVectorDrawCacheSharingEnabled. (I91b41) - تم إصلاح الخطأ الذي لم يؤدِّ فيه AndroidTextPaint.setTextMotion إلى محو LINEAR_TEXT_FLAG عند الانتقال إلى FontHinting أو None linearity. (I8c19c)
- تم إصلاح مشكلة كانت تؤدي إلى انتقال تركيز استكشاف اللمس في TalkBack إلى AndroidView مضمّن (مثل WebView) مغطّى بمحتوى واجهة مستخدم Compose. (I11372، b/561099702)
- تم إصلاح مشكلة كانت تؤدي إلى تعطُّل عملية استدعاء
Color.toColorLong()أو ضبط لون مركّب علىColor.Unspecifiedفي Paint مع ظهور الخطأIllegalArgumentException. (Ia365b، b/557521315) - تم تعديل الاعتمادية
androidx.lifecycle:lifecycle-runtimeإلى الإصدار 2.10.0. هذا الإصدار مطلوب لتشغيل عمليات التحقّق من أخطاء lint في وقت تشغيل حزمة Lifecycle مع الإصدار 9.5.0-alpha04 أو إصدار أحدث من "مكوّن Android الإضافي لبرنامج Gradle". (I99bfd، b/556807521) - تم إصلاح استخراج المَعلمات في الأدوات الخاصة بالعناصر القابلة للإنشاء التي تحتوي على أكثر من 10 مَعلمات. (Ib167d)
- تم إصلاح المشكلة التي كانت تتسبّب في عدم محو عُقد التنسيق غير النشطة من قائمة انتظار التنسيق، ما يؤدي إلى حدوث عُطل أثناء إعادة القياس. (Ie64a5)
الإصدار 1.13.0-alpha03
9 سبتمبر 2026
تم طرح androidx.compose.ui:ui-*:1.13.0-alpha03. يتضمّن الإصدار 1.13.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف عمليات التحميل الزائد لحقل النص Material 2 التي تقبل مَعلمات
value, onValueChangeنهائيًا. يُرجى الانتقال إلى التحميل الزائد الذي يستخدمTextFieldStateلرفع حالته. (I6b841، b/556234973) - أضِف واجهة برمجة تطبيقات شائعة لإيقاف
WindowInsetsRulersعلى مستوى العالم قبل إنشاء أول جذر Compose. إيقاف السمةComposeView.disableWindowInsetsRulers()المخصّصة لنظام التشغيل Android فقط واستخدام السمة الشائعةWindowInsetsRulers.disable()(Iadc8f) - تضيف هذه الحزمة وظائف الإضافة
PolygonShape.transformedوPolygonShape.scaledToFitفي Compose Foundation لتحويل أشكال المضلّعات وتعديلها. (I3f327) - أعاد المعدِّل تسمية الدالة "
LineHeight.Trim.isTrimLastLineBottom()" إلى "LineHeight.Trim.trimsLastLineBottom" و"LineHeight.Trim.isTrimFirstLineTop" إلى "LineHeight.Trim.trimsFirstLineTop" (I02211) - تمت إضافة
boundsAssertionToleranceإلىPlatformTestConfigضمنComposeUiTestConfig.platformللسماح للاختبارات بضبط هامش التفاوت التلقائي لتأكيد الحدود على مستوى البيئة/القاعدة. (I7819d، b/545673912) - تم إيقاف
BasicTextFieldعمليات التحميل الزائد التي تقبل مَعلماتvalue, onValueChangeنهائيًا. يُرجى نقل البيانات إلى الدالة المحمّلة بشكل زائدBasicTextFieldالتي تستخدمTextFieldStateلرفع حالتها. (I636bf، b/552879150) - بالتزامن مع إيقاف
BasicTextField(value, onValueChange)نهائيًا، تم أيضًا إيقافVisualTransformationنهائيًا لأنّه لا يتم عرضه إلا من خلال إصدارTextField. يجب نقل عمليات التحويل الحالية إلىOutputTransformation. (I636bf، b/552879150) - تمت إضافة
LineHeightStyle.Mode.PerLineلاحتساب ارتفاع السطر بشكل مستقل لكل سطر، ما يتيح استخدام أحجام خطوط مختلفة في الفقرة نفسها بدون تداخل. (I41738) - تم إيقاف توفير
LazyLayoutCacheWindowوLazyListPrefetchStrategyمن خلالLazyListStateنهائيًا، وتم استبدالهما بتوفيرLazyLayoutCacheWindowللدالة المركّبة. (I71f19) - تمت إضافة واجهة برمجة التطبيقات
Modifier.blur { ... }لدعم التمويهات التدريجية (مثل التدرجات اللونية والمظلّلات المخصّصة) (Ie6595، b/481685669) - تمت إضافة Modifier.
interactionBarrier() لحظر التفاعلات مع اللمس والتركيز وإمكانية الوصول. (I7c1b7، b/347038246) - تمت إضافة السمة الموسّعة
isCrossWindowBlurEnabledإلىWindowInfoللسماح للمطوّرين بالبحث عن حالة التمويه على مستوى جميع النوافذ ومراقبتها على Android. (If38e2، b/538405295) - تمت إضافة
LocalWindow CompositionLocalللسماح باسترداد عنصرandroid.view.Windowالحالي، ما يسهّل التحكّم في واجهات برمجة التطبيقات على مستوى النافذة من داخل العناصر القابلة للإنشاء. (I4d4ff، b/221889664)
إصلاح الأخطاء
- مفعَّل
isMinimalistLocalsEnabledتلقائيًا. (Ibb4eb، b/523295932) - تم تفعيل ميزة تحسين ارتفاع السطر الواحد تلقائيًا. وقد يؤدي ذلك إلى اختلاف بسيط في بعض مقاييس النص، مثل الارتفاع أو مسار التحديد (I5575a).
- تم تعديل
compileSdkلمكتبات Compose إلى 37.1. سيتطلّب ذلك تعديلcompileSdkبشكل متعدٍّ لجميع التطبيقات والمكتبات التي تستخدم Compose. (I05b0f) - تم إصلاح مشكلة عدم وضع علامة على مساحات
WindowInsetsRulersأداة IME الداخلية على أنّها متحركة أثناء استخدام إيماءة إظهار شاشة الرجوع، وتم إصلاح مشكلة عدم تعديلimePaddingعند تبديل التركيز بين حقول النص. (Id4562، b/537386261، b/539686000) - تم إصلاح مشكلة تجاهل إيماءات الضغط على لوحة التتبُّع عند استضافة
ComposeViewداخلViewGroupAndroid العادي. (I80f79)
المساهمة الخارجية
- تم إصلاح تسريب النشاط عند فصل
ComposeViewوإعادة ربطه ضمن إطار واحد، مثلاً عند إعادة ترتيبه باستخدامremoveViewوaddView. (Ib5129، b/547675867)
الإصدار 1.13.0-alpha02
26 أغسطس 2026
تم طرح androidx.compose.ui:ui-*:1.13.0-alpha02. يتضمّن الإصدار 1.13.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة السمة الدلالية الجديدة
BackgroundColorإلى Modifier.background (I7eec3، b/518049030) - يمكنك الآن إنشاء
Verticesمن مصفوفات الأعداد الأولية الحالية. (Ifaba8، b/496412761) - سيشارك
VectorPainterالآن مراجع الرسومات الداخلية (ImageBitmap) عند عرضImageVectorنفسه في عدة عناصر قابلة للإنشاء. يؤدي ذلك إلى تقليل عمليات تحميل النسيج المتكرّرة واستخدام الذاكرة، ما يحسّن الأداء في سيناريوهات مثل القوائم التي تستخدم رموزًا متكرّرة. يمكن إيقاف هذا التحسين من خلالComposeUiFlags.isVectorDrawCacheSharingEnabled. (I35639، b/331283180) - إضافة أداة مساعدة
requestFocusForChildInLocalBounds(Ib1a48)
الإصدار 1.13.0-alpha01
12 أغسطس 2026
تم طرح androidx.compose.ui:ui-*:1.13.0-alpha01. يتضمّن الإصدار 1.13.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف علامة الميزة
isVelocityTrackerMinSampleSizeFixEnabled(Ic9b51، b/533444810، b/533775739، b/523705159) - تمت إزالة فئة التعليقات التوضيحية القديمة
ExperimentalVelocityTrackerApi. (I6f9c6، b/483449576) - إزالة العلامة isClearNestedScrollCoroutineScopeFixEnabled (Iedfd7، b/506963276)
- يحفظ
TextFieldStateمعلومات نمط النص ويستعيدها الآن. أصبحتAnnotatedString.Annotation.Saverمتاحة للجميع الآن للسماح بحفظ واستعادة عناصرAnnotatedString.Annotation. (I8b533، b/135556699) - تمت إضافة
TestFailurePolicyوTestFailureHandlerفيComposeTestConfigلدعم معالجات أحداث الأعطال المخصّصة وسياق العنصر المتأثّر بالعطل في اختبارات واجهة مستخدم Compose. (Ib1a85 وb/414802953 وb/291106656 وb/430644575) - تمت إضافة
SemanticsProperties.alpha لعرض قيم ألفا المركّبة التي تم حلّها للعناصر الرئيسية والفرعية لعُقد التصميم بغرض الاختبار. (Ifddb6، b/524035059) - تم إيقاف التحميل الزائد
createComposeRuleوcreateAndroidComposeRuleوcreateEmptyComposeRuleنهائيًا في حزمة الإصدار الثاني منui-test-junit4التي تتضمّن مَعلمات فردية. استخدِم عمليات التحميل الزائد التي تقبلComposeUiTestConfigأو عمليات التحميل الزائد بدون مَعلمات التي تستخدم قيمة تلقائيةComposeUiTestConfig. يُرجى العِلم أنّ قيمةComposeUiTestConfigالتلقائية تضبط وضع الإدخال الأولي علىInputMode.Touchفي بداية كل اختبار. قد يؤدي ذلك إلى تعذُّر إجراء الاختبارات الحالية التي تتطلّب وضع لوحة المفاتيح (InputMode.Keyboard). لإصلاح الاختبارات المتأثّرة، عليك اجتيازComposeUiTestConfig(inputMode = InputMode.Keyboard)بشكلٍ صريح وإزالة أي منطق إعداد يدوي لأوضاع الإدخال. بدلاً من ذلك، يمكنك ضبطAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseلإيقاف ضبط وضع الإدخال التلقائي مؤقتًا في بداية كل اختبار والاحتفاظ بالسلوك القديم أثناء نقل اختباراتك. ستتم إزالة هذه العلامة في المستقبل، لذا إذا لم تنجح سوى مجموعة صغيرة من الاختبارات، ننصحك بحلّ المشاكل مباشرةً عن طريق تغيير إعداداتها بدلاً من ذلك. (Idfb86، b/504195741) - تستخدم الآن طلبات البيانات التي لا تتضمّن وسيطات إلى
createComposeRuleوcreateAndroidComposeRule(مثلcreateComposeRule()أوcreateAndroidComposeRule<MyActivity>()) قيمةComposeUiTestConfigتلقائية، ما يضبط وضع الإدخال الأوّلي علىInputMode.Touchفي بداية كل اختبار، ويضمن أن يكون الجهاز في حالة نظيفة ويمنع تسرُّب تغييرات وضع الإدخال السابقة إلى الاختبارات. ومع ذلك، قد يؤدي وضع اللمس التلقائي الجديد هذا إلى تعذُّر اجتياز الاختبارات الحالية التي تتوقّع وضع لوحة المفاتيح (InputMode.Keyboard). لإصلاح الاختبارات المتأثّرة، عليك اجتيازComposeUiTestConfig(inputMode = InputMode.Keyboard)بشكلٍ صريح وإزالة أي منطق إعداد يدوي لأوضاع الإدخال. بدلاً من ذلك، يمكنك ضبطAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseلإيقاف ضبط وضع الإدخال التلقائي مؤقتًا في بداية كل اختبار والاحتفاظ بالسلوك القديم أثناء نقل اختباراتك. ستتم إزالة هذه العلامة في المستقبل، لذا إذا لم تنجح إلا بعض الاختبارات، ننصحك بحلّ المشاكل مباشرةً عن طريق تغيير إعداداتها بدلاً من ذلك. (Idc4dd، b/267253920، b/504195741) - تمت إضافة تعليقات توضيحية إلى طرق أساسية فارغة قابلة للتجاوز في Compose باستخدام
@EmptySuperللإشارة إلى أنّه يجب ألا تستدعي عمليات التنفيذ المتجاوزة super. (Id407b) - أصبحت
ExposedDropdownMenuالآن دالة إضافة فيExposedDropdownMenuBoxScopeبدلاً من أن تكون عضوًا. قد تحتاج إلى تعديل الرمز باستخدام عملية استيراد جديدة. (Ie8a65، b/356452026) - تمت إضافة السمات
blurBehindRadiusوbackgroundBlurRadiusوscrimAlphaوwindowShapeإلىDialogProperties، بالإضافة إلىblurBehindRadiusوscrimAlphaإلىPopupProperties. يمكن للمطوّرين الآن ضبط تمويه الخلفية وتمويه النافذة وعتامة الشاشة مباشرةً في مربّعات الحوار والنوافذ المنبثقة. يسمح الإعدادwindowShapeبقصّ تمويهات خلفية مربّع الحوار إلى زوايا مستديرة. (I5d437) - تمت إزالة علامة الميزة - تحتفظ أزرار "إنشاء" الآن بتركيز تسهيل الاستخدام بشكل صحيح ولا تومض عندما تكون ميزة "الاستكشاف باللمس" مفعّلة، وذلك لأنّه يتم وضع علامة على أحداث التمرير على أنّها معالَجة بشكل صحيح. (Ib1c80)
- تمت إضافة عمليات تحميل زائدة للدمج إلى
FontVariation.Settingsلدمج مجموعات الإعدادات الأخرى أو تجاهل الإعدادات المضمّنة. (I6340c) - تم عرض
variationSettingsفي واجهة "الخط"، مع ضبط القيمة التلقائية علىFontVariation.Emptyالجديدة. تم تحسين أداة إنشاءFontVariation.Settingsvararg لاستخدامasList()لتجنُّب عمليات تخصيص نسخ المصفوفات. (I9c22f) - تم تعديل السمة
NestedScrollDispatcher.coroutineScopeلعرضCoroutineScopeتم إلغاؤه بأمان عند عدم ربطه أو فصله. (I9b112، b/535290281) - تم إيقاف التحميل الزائد
runComposeUiTestوrunAndroidComposeUiTestوAndroidComposeUiTestEnvironmentنهائيًا والذي يقبل المَعلمات الفرديةeffectContextوrunTestContextوtestTimeout. استخدِم عمليات التحميل الزائد التي تقبلComposeUiTestConfigأو عمليات التحميل الزائد بدون مَعلمات التي تستخدم قيمة تلقائيةComposeUiTestConfig. يُرجى العِلم أنّ قيمةComposeUiTestConfigالتلقائية تضبط وضع الإدخال الأولي علىInputMode.Touchفي بداية كل اختبار. قد يؤدي ذلك إلى تعذُّر إجراء الاختبارات الحالية التي تتطلّب وضع لوحة المفاتيح (InputMode.Keyboard). لإصلاح الاختبارات المتأثّرة، عليك اجتيازComposeUiTestConfig(inputMode = InputMode.Keyboard)بشكلٍ صريح وإزالة أي منطق إعداد يدوي لأوضاع الإدخال. بدلاً من ذلك، يمكنك ضبطAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseلإيقاف ضبط وضع الإدخال التلقائي مؤقتًا في بداية كل اختبار والاحتفاظ بالسلوك القديم أثناء نقل اختباراتك. ستتم إزالة هذه العلامة في المستقبل، لذا إذا لم تنجح سوى مجموعة صغيرة من الاختبارات، ننصحك بحلّ المشاكل مباشرةً عن طريق تغيير إعداداتها بدلاً من ذلك. (Ia6d55، b/504195741) - تستخدم الآن طلبات البيانات من
runComposeUiTestوrunAndroidComposeUiTestوAndroidComposeUiTestEnvironmentالتي تتضمّن تعبير lambda لاحقًا فقط قيمة تلقائيةComposeUiTestConfig، ما يضبط وضع الإدخال الأوّلي علىInputMode.Touchفي بداية كل اختبار، ويضمن أن يكون الجهاز في حالة سليمة ويمنع تسرُّب تغييرات وضع الإدخال السابقة إلى الاختبارات. ومع ذلك، قد يؤدي وضع اللمس التلقائي الجديد هذا إلى تعذُّر اجتياز الاختبارات الحالية التي تتوقّع وضع لوحة المفاتيح (InputMode.Keyboard). لإصلاح الاختبارات المتأثّرة، عليك اجتيازComposeUiTestConfig(inputMode = InputMode.Keyboard)بشكلٍ صريح وإزالة أي منطق إعداد يدوي لأوضاع الإدخال. بدلاً من ذلك، يمكنك ضبطAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseلإيقاف ضبط وضع الإدخال التلقائي مؤقتًا في بداية كل اختبار والاحتفاظ بالسلوك القديم أثناء نقل اختباراتك. ستتم إزالة هذه العلامة في المستقبل، لذا إذا لم تنجح سوى مجموعة صغيرة من الاختبارات، ننصحك بحلّ المشاكل مباشرةً عن طريق تغيير إعداداتها بدلاً من ذلك. (I8c85d، b/504195741) - تمت إضافة @
CheckResultإلىSemanticsNodeInteraction.isDisplayed() وisNotDisplayed() لضمان تأكيد القيم المعروضة، ما يمنع حدوث أعطال غير ظاهرة في الاختبارات عندما يستخدمها المطوّرون عن طريق الخطأ بدلاً من واجهات برمجة التطبيقات الخاصة بالتأكيد. (I1b447، b/508178494) - ستؤدي العلامة
AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabledإلى إنشاء مثيلViewGroupالذي يحتوي علىAndroidViewفقط عند إضافةAndroidViewلتحسين أداءComposeViewالتي لا تحتوي علىAndroidView. عند إيقاف العلامة، يتم إنشاءViewGroupالحاوية وإرفاقها عند إرفاقComposeViewبالنافذة. (I306a3، b/524283041) - نقدّم
coroutineScopeOrNull()فيNestedScrollDispatcher، وهي واجهة برمجة تطبيقات بديلة للوصول إلى نطاق الروتين الفرعي الرئيسي للمرسل. (I18c0f) - غيِّر
clearCallbacksإلىrunAndClearCallbacksللتأكّد من تنفيذ إجراءات التنظيف دائمًا. (If4720، b/526700075) - تمت إعادة تسمية
ComposeTestConfigإلىComposeUiTestConfigونقلها من حزمة الإصدار 2 إلى حزمةandroidx.compose.ui.testالرئيسية. (I1d2a1، b/504195741) - تمت إضافة المَعلمة
timeoutMillis(القيمة التلقائية هي 2000 ملي ثانية) إلىSemanticsNodeInteraction.captureToImage() للسماح بإعداد مهلة مخصّصة عند انتظار عمليات إعادة الرسم. (Ib7d62، b/249501063) - إضافة معلومات سابقة إلى التغييرات في إدخال المؤشر غير المباشر (Ie62d2، b/526961645)
- تمت إضافة السمة الدلالية
hintTextالجديدة لتمثيل نص التلميح في حقول النص، ما يؤدي إلى تحسين إمكانية الوصول من خلال الربط بـAccessibilityNodeInfo.hintText. (Ib65da، b/448376876) - تم تحسين دقة
CompositionLocalمن خلال حلّها بشكل ديناميكي منLocalOwnerوLocalAndroidComposeViewعند الطلب، ويمكن تفعيل هذا الخيار أو إيقافه باستخدامComposeUiFlags.isMinimalistLocalsEnabled. (I2bf6d) - لدى "
androidx.benchmark" الآنminSdkيبلغ 24. (Ic2a85) - تمت إضافة علامة تجريبية
isPropagateHideFromAccessibilityToMergingChildrenEnabledإلىAndroidComposeUiFlagsللتحكّم في نقلhideFromAccessibilityإلى العناصر الفرعية التي يتم دمجها. (Ie41ff، b/483506400) - تم نقل واجهات برمجة التطبيقات الخاصة باختبار
ComposeUiTestوواجهات برمجة التطبيقات ذات الصلة (بما في ذلك الإصدارانComposeTestRuleوwaitUntil) من مرحلة "تجريبية" إلى مرحلة "إصدار ثابت". (Iaec77، b/471148519، b/485124363) - تم إصلاح ترتيب التنقّل
TalkBackفي مجموعات التنقّل المدمَجة. ويمكن التراجع عن هذا التغيير إذا لزم الأمر من خلال إيقافAndroidComposeUiFlags.isTraversalGroupSortingEnabled. (I5ae09، b/285043826) - تزيل هذه السمة الدالة المساعدة التجريبية القديمة
IndirectPointerEvent. (I05dee، b/499336763، b/501098299، b/501098376، b/513249467) - استبدِل واجهة برمجة التطبيقات التجريبية @AnimationToolingApi بواجهة برمجة التطبيقات @RestrictTo التي توفّر ضمانات أكثر صرامة بشأن التتبُّع. (Ia4fd1، b/524317805)
- تمت إضافة أداة الاختيار
onDescendants()للعثور على جميع عقد الدلالات ضمن الشجرة الفرعية لعقدة معيّنة. (Id6b9b، b/444588117) - تم إيقاف واجهات برمجة التطبيقات المساعدة
waitUntilNodeCountوwaitUntilAtLeastOneExistsوwaitUntilExactlyOneExistsوwaitUntilDoesNotExistنهائيًا لأنّها لا تقبلuseUnmergedTree. تمت إضافة عمليات تحميل زائد جديدة تقبلuseUnmergedTreeللسماح بانتظار العُقد في شجرة الدلالات غير المدمجة. (If675f، b/268432145) - تمت إضافة المَعلمة
toleranceإلى تأكيدات الحجم والموضعSemanticsNodeInteraction(assertWidthIsEqualToوassertHeightIsEqualToوassertTouchWidthIsEqualToوassertTouchHeightIsEqualToوassertPositionInRootIsEqualToوassertTopPositionInRootIsEqualToوassertLeftPositionInRootIsEqualTo) للسماح للمطوّرين بضبط حد المقارنة، ما يؤدي إلى تحسين قوة الاختبار على مستوى كثافات الشاشة المختلفة. (I3a477، b/202752461) - تتيح اختبارات Compose الآن مزامنة سلسلة التعليمات الرئيسية. يمكنك الآن استدعاء واجهات برمجة التطبيقات للمزامنة (مثل
waitForIdle() وrunOnIdle()) وتنفيذ تأكيدات أو إجراءات Compose بأمان مباشرةً ضمن عمليات رد الاتصال في واجهة المستخدم أو سلسلة التعليمات الرئيسية. (I0247a، b/498478569) - تم تقديم نموذج إعداد جديد (
ComposeTestConfig) لواجهات برمجة التطبيقات الخاصة باختبار Compose من أجل تبسيط إدارة المَعلمات وتحسين قابلية التوسّع. تمت إضافة إمكانية ضبط وضع الإدخال (اللمس/لوحة المفاتيح) مباشرةً من خلالComposeTestConfig، ما يضمن الإعداد وإعادة الضبط تلقائيًا لمنع حدوث أخطاء متقطّعة في الاختبار بسبب تسرُّب الحالة. تمت إضافة عمليات تحميل زائدة جديدة للدالتينrun*ComposeUiTestوcreate*ComposeRuleتقبل العنصرComposeTestConfig. (Ia3da9، b/267253920، b/504195741) - تم إصلاح عُطل في "معاينة Compose" عند استخدام
PreviewParameterProviderمع خصائص "طلب البحث عن الوسائط" (PostureوPointerPrecisionوما إلى ذلك) من خلال تغيير التمثيل الأساسي منStringإلىInt. (Ic8f92، b/489939558) - تمت إضافة المَعلمة
includeInputTextإلىhasTextExactlyوassertTextEqualsلتفعيل المطابقة التامة للنص الخام المدخَل مع النص المرئي. (Iee329، b/519026043)
إصلاح الأخطاء
- تم تحسين
SaveableStateRegistry.performSave()لمنع عمليات تخصيصHashMap. يستخدمScatterMapداخليًا. (I7d510) - تمت إضافة ألوان النص إلى AccessibilityNodeInfo.ExtraRenderingInfo لعناصر Text Composables. (I11c94، b/518049030)
- تم إصلاح مشكلة كانت تؤدي إلى ظهور الخطأ
IllegalStateExceptionبدلاً من عرضnullعند محاولة الوصول إلىNestedScrollDispatcher.coroutineScopeOrNullأثناء فصل عقدة التنسيق. (I55634، b/533444810) - تم تحسين عملية تهيئة
compose:uiخصائص فئة القيم ذات المستوى الأعلى على مستوى الملف باستخدام دوال جلب ديناميكية. (I34184) - تحسين عملية تهيئة الكائن المرافق لفئات
ui-unitالتي تكون قيمتها أقل من 0x0A (TextUnit) باستخدام دوال الجلب الديناميكية (If4a99) - تحسين عملية تهيئة عناصر مصاحبة محسّنة لفئات قيم
ui-graphics(BlendModeوColorوما إلى ذلك) باستخدام دوال جلب ديناميكية (Iaa86a) - تم تحسين عملية تهيئة عناصر مصاحبة محسّنة ل
compose:ui:uiفئات القيم (KeyوCompositingStrategyوما إلى ذلك) من خلال استخدام دوال جلب ديناميكية. (I1a340) - تحسين عملية تهيئة عناصر مصاحبة ل
compose:uiفئات قيم النصوص (TextAlignوTextOverflowوImeActionوما إلى ذلك) من خلال استخدام دوال جلب ديناميكية (I776e0) - تم تحسين عملية تهيئة العنصر المرافق لأدوات
compose:uiوفئات قيم الاختبار (AnimatedVisibilityStateوMouseButtonوScrollWheel) من خلال استخدام أدوات جلب ديناميكية. (I23e1b) - تحسين عملية تهيئة عناصر الكائنات المصاحبة
compose:uiلفئات قيم الوحدات (DpوDpOffsetوTextUnitTypeوما إلى ذلك) من خلال استخدام دوال جلب ديناميكية (If5eb5) - تم تحسين عملية تهيئة عناصر الكائنات المصاحبة لفئات قيم الأشكال الهندسية
compose:ui(OffsetوSizeوCornerRadius) من خلال استخدام دوال الجلب الديناميكية. (I3b110) - تحسين عملية تهيئة عنصر مصاحب
compose:uiلفئات القيم (RoleوFocusDirectionوPointerEventTypeوما إلى ذلك) من خلال استخدام دوال جلب ديناميكية (Ie35dd) - التعامل بشكل صحيح مع
BaselineShift.NoneوBaselineShift.UnspecifiedوBaselineShift(0f)لتجنُّب عمليات بطيئة غير ضرورية لتحديد التصميم (I4350c) - تم إصلاح مشكلة كانت تتسبّب في اختلاف سلوك قيم Dp التي تحتوي على صفر سالب (-0.0) في عمليات المقارنة أو عمليات التحقّق من المساواة عن عمليات المقارنة أو عمليات التحقّق من المساواة في النقطة العائمة. (I7dbcf، b/525506543)
- تنظيف معلومات واجهة برمجة التطبيقات (Ia8066)
المساهمة الخارجية
- أصبحت
Alignment.topRatioوTrim.isTrimFirstLineTop()وTrim.isTrimLastLineBottom()واجهات برمجة تطبيقات عامة الآن (I84f62)
الإصدار 1.12
الإصدار 1.12.1
9 سبتمبر 2026
تم طرح androidx.compose.ui:ui-*:1.12.1. يتضمّن الإصدار 1.12.1 هذه التعديلات.
الإصدار 1.12.0
12 أغسطس 2026
تم طرح androidx.compose.ui:ui-*:1.12.0. يتضمّن الإصدار 1.12.0 هذه التعديلات.
### الخطوط المتغيّرة القابلة للتنزيل والإعداد بدون ضبط (ui-text-google-fonts)
• خطوط متغيّرة وشهادات GMS بدون إعدادات!
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontVariation
import androidx.compose.ui.text.googlefonts.Font
import androidx.compose.ui.text.googlefonts.GoogleFont
val fontFamily = FontFamily(
Font(
googleFont = GoogleFont("Google Sans Flex"),
// Automatically uses default GMS certificates!
variationSettings = FontVariation.Settings(
FontVariation.weight(900),
FontVariation.slant(0f)
)
)
)
──────
### Wide Color Gamut (WCG) Support (ui-graphics)
الحفاظ على الألوان ذات النطاق الواسع: * يتم الحفاظ على مساحات الألوان غير sRGB (مثل AdobeRgb وDisplayP3) التي تم ضبطها على Paint أو Shader في المستوى 29 من واجهة برمجة التطبيقات والإصدارات الأحدث. * يتم الرجوع إلى sRGB في مستويات واجهة برمجة التطبيقات القديمة.
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Paint
import androidx.compose.ui.graphics.colorspace.ColorSpaces
val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)
val paint = Paint().apply {
color = wcgColor // Preserved on API 29+
}
──────
### Hardware-Accelerated Mesh Gradients (ui)
• واجهة برمجة التطبيقات Painter API: تم استبدال Modifier.meshGradient بـ MeshGradientPainter، الذي يستخدم Canvas.drawMesh المتوافق مع تسريع الأجهزة.
• الاستخدام: استخدِم MeshGradientPainter داخل Modifier.paint.
import androidx.compose.ui.draw.paint
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.MeshGradientPainter
val meshPainter = remember {
MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {
setVertex(0, 0, Offset(0f, 0f), Color.Red)
setVertex(0, 1, Offset(1f, 0f), Color.Blue)
setVertex(1, 0, Offset(0f, 1f), Color.Green)
setVertex(1, 1, Offset(1f, 1f), Color.Yellow)
}
}
Box(Modifier.fillMaxSize().paint(meshPainter))
──────
### 4. دمج Credential Manager (واجهة المستخدم)
التعبئة التلقائية: * تضيف هذه السمة خاصية دلالية منخفضة المستوى credentialRequest لحقول النص في المستوى 34 من واجهة برمجة التطبيقات والإصدارات الأحدث.
import androidx.compose.ui.semantics.credentialRequest
import androidx.compose.ui.semantics.CredentialRequestData
import androidx.compose.ui.semantics.semantics
BasicTextField(
value = value,
onValueChange = onValueChange,
modifier = Modifier.semantics {
if (Build.VERSION.SDK_INT >= 34) {
credentialRequest = CredentialRequestData(request, callback)
}
}
)
──────
### 5. أصوات التفاعل التلقائي (ui)
أصوات النقر والتنقّل: * إتاحة أصوات النقر والتنقّل المتوافقة مع Android باستخدام إعدادات الصوت في النظام الأساسي * إيقاف الميزة: استخدِم برنامج تضمين SoundEffectOnInteraction لإيقاف الأصوات لشجرة فرعية.
import androidx.compose.ui.platform.SoundEffectOnInteraction
// Opt-out of sounds for everything inside
SoundEffectOnInteraction(enabled = false) {
Button(onClick = {}) {
Text("Silent Button")
}
}
### 6. دمج Espresso لهيكليات طرق العرض المختلطة (ui-test)
يمكنك حصر تفاعلات Compose على هيكلية طرق العرض المطابقة لـ ViewInteraction في Espresso.
import androidx.compose.ui.test.junit4.onRootWithViewInteraction
import androidx.test.espresso.Espresso.onView
// Match RecyclerView row using Espresso
val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))
// Scope Compose interactions to that row
composeTestRule.onRootWithViewInteraction(specificRow)
.onNodeWithTag("fav_icon")
.performClick()
الإصدار 1.12.0-rc01
29 يوليو 2026
تم طرح androidx.compose.ui:ui-*:1.12.0-rc01. يتضمّن الإصدار 1.12.0-rc01 هذه التعديلات.
الإصدار 1.12.0-beta02
01 يوليو 2026
تم طرح androidx.compose.ui:ui-*:1.12.0-beta02. يتضمّن الإصدار 1.12.0-beta02 هذه التعديلات.
الإصدار 1.12.0-beta01
17 يونيو 2026
تم طرح androidx.compose.ui:ui-*:1.12.0-beta01. يتضمّن الإصدار 1.12.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لا ينطبق (نقل علامة ميزة المطوّر الداخلي) (Iaf2c4، b/368702588)
- لا ينطبق - تم نقل علامة ميزة. (I24668، b/521811270)
- تمت إضافة علامة الميزة التجريبية
ComposeUiFlags.isTrackpadPinchReinterpretationEnabledلإعادة تفسير إيماءات التصغير أو التكبير بإصبعين على لوحة اللمس كأحداث ماوس مع عوامل قياس. (Id3477، b/478053727) - إعادة تسمية دالة الاختبار لتفعيل أحداث المؤشر غير المباشرة (I3ee35، b/509618414)
- تمت إضافة تحسين إلى
BasicTextوBasicTextFieldحيث يتم الآن احتساب ارتفاع السطر لنص softwrap=false بشكل أكثر فعالية (I2150a)
إصلاح الأخطاء
- تحسين عملية نشر حالة التقاط التمرير عبر عمليات الإنشاء الفرعية لمنع إعادة إنشاء واجهة المستخدم بشكل غير ضروري (I05830)
- تم تفعيل علامة الميزة التجريبية
ComposeUiFlags.isTrackpadPinchReinterpretationEnabledتلقائيًا. (I35ab8، b/478053727) - تم إصلاح مشكلة في تحليل موارد الرسومات المتجهة القابلة للرسم، حيث تم تجاهل عناصر
<clip-path>الرئيسية إذا كانت تحتوي على عناصر<group>متداخلة. (Id4ea9، b/474530439) - تمت إضافة إمكانية استخدام قواعد إعادة محاولة اختبار JUnit 4 العادية في
AndroidComposeTestRuleمن خلال إعادة إنشاء بيئة الاختبار الداخلية ونطاق الروتين الفرعي بين محاولات التنفيذ. (Iafaa7، b/235383900)
المساهمة الخارجية
- عرض واجهة
AndroidClipboardللاختبار من أجل توفير طريقة لمحاكاة تنفيذ الحافظة (Ie4d72، b/512924975) - إضافة توافق مع الأنظمة القديمة لأنواع
TextAttributeمنcommitText()وsetComposingText()في الإصدار 37 من حزمة تطوير البرامج (SDK) أو الإصدارات الأحدث، ستتمكّن خدمات تسهيل الاستخدام من الإعلان عمّا إذا تم اختيار نص بديل مقترَح أم لا. بالنسبة إلى الإصدارات الأقدم من 37 من حزمة تطوير البرامج (SDK)، لن يؤثّر ذلك في الملاحظات الصوتية (أي السلوك الحالي). (I90e3d، b/439879822)
الإصدار 1.12.0-alpha03
19 مايو 2026
تم طرح androidx.compose.ui:ui-*:1.12.0-alpha03. يتضمّن الإصدار 1.12.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة السمة
credentialRequestSemantics الجديدة والأداة المساعدةCredentialRequestDataفي الإصدار 34 من واجهة برمجة التطبيقات أو الإصدارات الأحدث للسماح لِحقول النص في Jetpack Compose بالاندماج مع Credential Manager في Android من خلال إطار عمل الملء التلقائي. (Ida2bf، b/488446455) - تمت إضافة دالة مصنع
ParagraphIntrinsicsتأخذ الوسيطsoftWrapمن بين وسيطات أخرى. يمكننا استخدامها داخليًا كإشارة إلى أنّ النص معروض على سطر واحد وإجراء بعض التحسينات. (I66ca4، b/485495112) - تمت إضافة إمكانية استخدام أصوات التفاعل التلقائي (النقرات والتنقّل باستخدام التركيز) إلى مكوّنات Compose، مع إضافة
SoundEffectOnInteractionComposable جديد للسماح بإيقاف هذه الميزة. يُرجى العِلم أنّه نتيجةً لهذا التغيير، يجب الآن استدعاء أدوات معالجة النقرات الدلالية من سلسلة التعليمات الرئيسية، ما قد يؤثّر في عدد صغير من حالات الاختبار. (I78f65) - دالة المصنع
Fontالثابتة التي تستخدمvariationSettings. (I183f2) - السمة
ResourceFontloadingStrategyوالإجراءcopyالثابتان (I40d84) - واجهتا برمجة التطبيقات
InterceptPlatformTextInputوPlatformTextInputInterceptorالثابتتان (Id2784) - لتحسين فصل المنصات، تم نقل
registerIdlingResourceوunregisterIdlingResourceإلى دوال الإضافة، وقد تحتاج إلى تعديل عمليات الاستيراد. (I21d3d، b/471148519) - تم تقديم
runWithoutImplicitWaitإلىComposeTestRuleوComposeUiTestلتحسين أداء الاختبار أثناء الفحص الحكومي. تتيح واجهة برمجة التطبيقات هذه تنفيذ مجموعة من الرموز البرمجية مع إيقاف المزامنة الضمنية، ما يؤدي إلى تجنُّب الحمل الزائد لعمليات المزامنة المتكررة لكل طلب بحث عن عقدة. ويؤدي ذلك إلى تنفيذ الاختبارات بشكل أسرع بكثير، خاصةً الاختبارات التي تتضمّن التنقّل يدويًا بين اللقطات وأخذ عيّنات من خصائص متعدّدة، مثل اختبارات الصور المتحرّكة. (Ie00e9، b/490270394) - يمكن الآن تطبيق التعليق التوضيحي
@PreviewWrapperعلى فئات التعليقات التوضيحيةMultiPreview، ما يتيح للمطوّرين إنشاء إعدادات معاينة قابلة لإعادة الاستخدام ومغلّفة مسبقًا. (I8ae66، b/511170361) - تمت إضافة
MeshGradientPainterلعرض تدرّجات شبكية.تمت إزالةModifier.meshGradient، لذا استخدِمMeshGradientPainterمعModifier.paintبدلاً من ذلك.MeshGradientRendererأصبح الآن داخليًا. (I2d170، b/508110246) - يمكن الآن توفير أدوات القياس بشكل فردي من خلال تقديم دالة lambda تحدّد ما إذا كان يمكن توفير أداة قياس المسافات، بالإضافة إلى دالة lambda منفصلة توفّر قيمة أداة قياس المسافات. لا يتم رصد دالة lambda
isRulerProvided، ويجب أن تكون متفائلة بشأن إمكانية توفير قيمة. تتم مراقبة دالة lambdarulerProvider، وبالتالي إذا تغيّرت أي قيمة، سيتم تعديل قيمة المسطرة وجميع القراء الذين يستخدمونها. (Ie9089) - في واجهة برمجة التطبيقات التجريبية Style API، تمّت إضافة إمكانية إنشاء أنواع أنماط مخصّصة يمكن أن تتضمّن نطاقات أنماط مخصّصة. يتيح ذلك تقسيم الخصائص التي يمكن ضبطها حسب النمط (مثل إزالة طبقة الرسومات أو خصائص النص بالكامل)، بالإضافة إلى السماح بتوسيع النطاق بشكل مستقل عن الأنماط الأخرى (مثل عدم إتاحة بنية
playing { }إلا في عنصرMediaPlayerقابل للإنشاء). يؤدي هذا التغيير إلى إيقاف التوافق الثنائي وتوافق المصدر. التغيير الأساسي الذي يؤدي إلى عدم توافق الرمز المصدري هو نقل الدوال المساعدة فيStyleScopeلتصبح دوال إضافية (على سبيل المثال، أصبحتfun contentProperty(all: Dp)الآن دالة إضافية). يجب أن يكون استيراد دوال الإضافة المطلوبة أو استيراد جميع الرموز من androidx.compose.foundation.styles هو كل ما هو مطلوب لتجميع الرمز الذي يستدعي هذه الطرق بشكل صحيح. (I1ef27، b/493676648) - تضيف هذه السمة
updatePointerBy()مع وسيط تلقائي لمعرّف المؤشر. (I99f30، b/502001776) - لم يعُد
DeferredTargetAnimationتجريبيًا، يُرجى إزالة خيار الاشتراك" إلى androidx-main - تمت إضافة العلامة
isClearNestedScrollCoroutineScopeFixEnabledللتحكّم في الإصلاح. (Ibd394، b/505343254) - لم يعُد
DeferredTargetAnimationتجريبيًا، يُرجى إزالة الموافقة على استخدامه. (I1e4ae، b/500030165) - تعداد جديد لإتاحة المشغّلات في أدوات واجهة المستخدم (I6e198، b/478807872)
- يُسمح بإنشاء
ComposeViewContextبدون إرفاق العرض المرجعي. لا يزال يتطلب إرفاق "العرض" المرجعي قبل استدعاءsetContent(). (Id0952)
إصلاح الأخطاء
- تم إصلاح مشكلة
focusRestorerعدم استعادة التركيز بشكل صحيح عند إجراء عدة عمليات حفظ للتنسيق نفسه (I10277، b/505371994) - كان لتحسين سابق في الأداء تأثير جانبي يتمثّل في عدم السماح بقياس
ComposeViewsغير المرفقة. يتيح هذا التغيير الآن إجراء ذلك بدون إعادة طرح مشكلة الأداء. (I9b2c5، b/508650647) - تتم إعادة إنشاء التركيبة الآن عند إجراء تغيير على
ComposeViewContextلتوفير وصول أسرع إلىComposeViewContext. (I3b3a8، b/487364963) - السماح لـ Compose بضبط ألوان غير sRGB على الطلاء وأداة التظليل على Android، مع الحفاظ على نطاق الألوان الواسع من خلال ربط مساحات الألوان Compose بشكل صحيح بمساحات الألوان المكافئة على النظام الأساسي سيتم الرجوع بأمان إلى مساحة الألوان Srgb في حال عدم توفّر مساحات الألوان لعمليات العرض على النظام الأساسي (مثل CIE XYZ وCIE Lab وOkLab) أو عدم توفّرها في مستوى واجهة برمجة التطبيقات الحالي. (I3efb5، b/388511109)
المساهمة الخارجية
- تم إيقاف نوع الاسم المستعار
androidx.compose.ui.platform.NativeClipboardنهائيًا، لذا استخدِمandroid.content.ClipboardManagerمباشرةً بدلاً منه (Ibc611) - استبدِل السمة
Clipboard.nativeClipboardبالامتدادClipboard.nativeClipboardManagerلتجنُّب عرض نوع النظام الأساسي في مجموعة المصادرcommonMainمن خلالtypealias(Ibc611).
الإصدار 1.12.0-alpha02
6 مايو 2026
تم طرح androidx.compose.ui:ui-*:1.12.0-alpha02. يتضمّن الإصدار 1.12.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتضمّن هذه السمة المعدِّل
MeshGradient. (Ia9a08، b/455752719) - يزيل عمليات معاودة الاتصال المضمّنة لتصحيح أخطاء الملء التلقائي. يمكن تحقيق الوظيفة نفسها من خلال تسجيل الدخول من
AutofillManager.AutofillCallback. (I631c7، b/502279690) - إتاحة إعدادات خيارات الخطوط القابلة للتنزيل (Ic25c7، b/496278020)
- تم تعديل
mediaQueryوderivedMediaQueryلعرض نوع عام بدلاً منBoolean، ما يتيح استخدامًا أكثر مرونة عند إنشاء واجهات مستخدم قابلة للتكيّف. (I93830، b/498698350)
الإصدار 1.12.0-alpha01
22 أبريل 2026
تم طرح androidx.compose.ui:ui-*:1.12.0-alpha01. يتضمّن الإصدار 1.12.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة علامة الميزة
ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled(I82be3، b/455601135) - تم تحويل
mediaQueryإلى دالة مضمّنة (Ie9457، b/498698350) - تم نقل
ComposeViewContextمن مرحلة الإصدار التجريبي، وتمت إزالة التعليق التوضيحيExperimentalComposeViewContextApi(I32eca) - لم تعُد ميزة "
ComposeView.disableWindowInsetsRulers()" تجريبية (Ia81a5) - تمت إضافة واجهة برمجة التطبيقات
hasPendingWork()للسماح بالتحقّق بشكل غير مباشر مما إذا كانت واجهة مستخدم Compose تتضمّن حاليًا عملًا في انتظار التنفيذ بدون بدء عملية انتظار أو تقديم الوقت. ويكون ذلك مفيدًا لاختبارات الساعة اليدوية لتحديد وقت انتهاء الرسوم المتحركة أو غيرها من العمليات التي تتم في الخلفية. (Ic54e3) - تمت إزالة علامة الميزة
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled(I7fd25، b/491111451) - تمت إزالة علامة الميزة
AndroidComposeUiFlags.isSharedFontEnabled(I2cebe، b/479898293) - تضيف هذه السمة خيارات
KeyboardTypeإضافية لإكمال مجموعة خيارات لوحة المفاتيح المتوافقة على Android، بما في ذلك التاريخ والوقت والتاريخ والوقت معًا والعلامة العشرية الموقّعة وغير ذلك. (I3713e، b/202353328) - تمت إزالة العلامة
AndroidComposeUiFlags.isSharedHapticsEnabled(I6a1d4، b/479895628) - تمت إزالة العلامة
AndroidComposeUiFlags.isSharedClipboardManagerEnabled(I41e3c، b/479895130) - إزالة علامة
AndroidComposeUiFlags.isSharedViewConfigurationEnabled(I6d3aa، b/479890645) - تمت إزالة علامة الميزة
AndroidComposeUiFlags.isSharedDrawingEnabled. (I27912، b/479849019) - تمت إزالة علامة الميزة
AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled(I6b726، b/479845566) - إزالة علامة
AndroidComposeUiFlags.isSharedWindowInfoEnabled(Ife9a9، b/479837249) - أزِل العلامة
AndroidComposeUiFlags.isSharedComposeViewContextEnabled. (Ic522a، b/479834257) - إضافة إعدادات خيارات لتخصيص الخطوط المتغيّرة القابلة للتنزيل (Ifdc93، b/223262013)
- إضافة إعدادات خيارات المنتج لتخصيص الخطوط المتغيّرة القابلة للتنزيل (I390af، b/223262013)
- إزالة العلامة
isTraversableDelegatesFixEnabled(Ia7dfe، b/485962494) - تم تقديم
runWhenIdleوawaitAndRunWhenIdle(النوع المعلق) فيComposeTestRuleوComposeUiTestلتحسين أداء الاختبار وثبات الحالة. تعمل واجهات برمجة التطبيقات هذه على مزامنة واجهة المستخدم مرة واحدة، ثم تنفيذ مجموعة من الرموز البرمجية بدون الحاجة إلى عمليات مزامنة متكررة لكل عملية. ويؤدي ذلك إلى تنفيذ تجريبي أسرع وأكثر استقرارًا بشكل ملحوظ، خاصةً الاختبارات التي تتضمّن العديد من السمات، مثل اختبارات الرسوم المتحركة. (Iabf66، b/490270394) - تضيف
LayerOutsetsإلىGraphicsLayerوModifier.graphicsLayer، ويمكن استخدامها لزيادة الحدود المرئية للطبقة إلى ما يتجاوز حجمها المقاس. يمكن استخدام ذلك لتجنُّب السلوك الضمنيclipToBoundsعند ترقية الطبقة إلى مخزن مؤقت خارج الشاشة. (Ic1189) - تم إيقاف تسجيل أحداث إدخال الملء التلقائي تلقائيًا. ويمكنك الآن تفعيلها من خلال الاتصال بالرقم
ComposeView.setAutofillDebugEnabled. (I5b430، b/487947860) - تم تغيير VelocityTracker لاستخدام التنفيذ الذي يوفّره إطار عمل Android (يمكن ضبطه باستخدام
AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2، b/359962905) - عندما تكون القيمة
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabledصحيحة، سيتم دائمًا استدعاء التنسيق للعناصر الفرعية من نوع "طرق العرض" بعد القياس أثناء عملية التنسيق. لا تنظّم Compose العناصر التابعة دائمًا بعد القياس، ولكن تتطلّب Views ذلك لإدارة الحالة بشكل سليم. (Ib4fe9، b/430974758) - إضافة
isVirtualإلىLayoutInfo(I3e5cd، b/494243978) - تمت إزالة العلامة
isGraphicsLayerShapeSemanticsEnabled. (I44be0، b/455600081) - تمت إضافة واجهة برمجة تطبيقات جديدة للخطوط لاستخدام الخطوط القابلة للتنزيل بدون الحاجة إلى إضافة شهادات الخطوط إلى قاعدة الرموز البرمجية يدويًا. (I30b86، b/479454159)
- تمت إضافة
onRootWithViewInteractionلتحديد نطاق عمليات البحث الدلالية في Compose لتشمل "طرق عرض" معيّنة في Android . يسهّل ذلك اختبار واجهات المستخدم المختلطة، مثلRecyclerViews، بدون الحاجة إلى علامات اختبار فريدة في رمز الإنتاج . (Ic02c4، b/175226753)
إصلاح الأخطاء
- تتيح لك واجهة برمجة التطبيقات
captureToImage()الآن التقاط نافذة منبثقة أو مربّع حوار مع عنصر الربط الخاص بهما في صورة نقطية واحدة. (I9b83a، b/443137545) - تم تعديل Compose
compileSdkإلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب استخدام الإصدار 9.2.0 أو إصدار أحدث من "مكوّن Android الإضافي" عند استخدام Compose. (Id45cd، b/413674743) - يؤدي ضبط
ContentDataType.Noneفي الدلالات الآن إلى منع Compose من إرسال أحداث الملء التلقائي. من المفترض أن يمنع ذلك تكاليف الإعداد المرتبطة بطلب خدمات الملء التلقائي. (I8fbda، b/487947860)
الإصدار 1.11
الإصدار 1.11.4
01 يوليو 2026
تم طرح androidx.compose.ui:ui-*:1.11.4. يتضمّن الإصدار 1.11.4 هذه التعديلات.
الإصدار 1.11.3
17 يونيو 2026
تم طرح androidx.compose.ui:ui-*:1.11.3. يتضمّن الإصدار 1.11.3 هذه التعديلات.
الإصدار 1.11.2
19 مايو 2026
تم طرح androidx.compose.ui:ui-*:1.11.2. يتضمّن الإصدار 1.11.2 هذه التعديلات.
الإصدار 1.11.1
6 مايو 2026
تم طرح androidx.compose.ui:ui-*:1.11.1. يتضمّن الإصدار 1.11.1 هذه التعديلات.
الإصدار 1.11.0
22 أبريل 2026
تم طرح androidx.compose.ui:ui-*:1.11.0. يتضمّن الإصدار 1.11.0 هذه التعديلات.
الإصدار 1.11.0-rc01
8 أبريل 2026
تم طرح androidx.compose.ui:ui-*:1.11.0-rc01. يتضمّن الإصدار 1.11.0-rc01 هذه التعديلات.
الإصدار 1.11.0-beta02
25 مارس 2026
تم طرح androidx.compose.ui:ui-*:1.11.0-beta02. يتضمّن الإصدار 1.11.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إعادة تسمية واجهة برمجة التطبيقات Rename
PreviewWrapperلتحقيق الاتساق (I62659، b/490085948) - تسمح السمة
ComposeViewContextبإنشاءComposeViewبدون ربطها بهيكلية طرق العرض. استخدِمAbstractComposeView.createComposition(composeViewContext)لبدء إنشاء رسالة بدون إرفاقComposeView. (I46e6f) - تمت إضافة
delayMillisإلى واجهات برمجة التطبيقات لاختبار لوحة اللمس فيpanEndوscaleEnd(If80fe)
إصلاح الأخطاء
- يطلب كلّ من
ClipboardوClipboardManagerالآن خدمة تابعة لنظام التشغيل عند طلب الإجراء الأول (If0016، b/487947860) - سيتم استعادة التركيز بشكل صحيح داخل الحاويات الكسولة التي تتم فيها إعادة استخدام عقد التركيز والمجموعات (I18d36، b/481564275)
- تستخدِم النافذة المنبثقة التي تتضمّن
clippingEnabled = falseالآن حدود النافذة الكاملة بشكلٍ صحيح لعرض المحتوى من الحافة إلى الحافة (I206408، b/327017902)
الإصدار 1.11.0-beta01
11 مارس 2026
تم طرح androidx.compose.ui:ui-*:1.11.0-beta01. يتضمّن الإصدار 1.11.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دعم
windowTokenالمخصّص إلى مربّع الحوار في Jetpack Compose (Ic7728) - تمت إضافة إمكانية استخدام
windowTokenوwindowTypeمخصّصَين إلى النوافذ المنبثقة في Jetpack Compose. (I0a04f) - تقديم واجهة
PreviewWrapperوموفّر تعليقات توضيحية سيتيح ذلك للمطوّرين تضمين معايناتهم بسلاسة مع سلوك مخصّص. (I29f54، b/484306729) - عندما تكون قيمة
AndroidComposeUiFlags.isSharedFontEnabledصحيحة، يمكن مشاركة مثيلات العناصر ذات الصلة بالخطوط، مثلFontLoaderوFontFamilyResolver، بين مثيلاتComposeViewداخلComposeViewContext. (I403e8) - ستستخدم معالجات دلالات الإنشاء view.handler بدلاً من
mainLooper، ما يؤدي إلى تجنُّب الأعطال في طرق العرض التي تستخدم معالجات غير رئيسية. (I671c3، b/486235925) - تمت إضافة علامة
isSkipNonImportantSemanticsNodesHitTestEnabledتحمي إصلاح خطأ في اختبارات الوصول إلى العناصر الدلالية، ما يؤثر في ميزة "النقر للاستكشاف" فيTalkBack. (I2933f وb/481011169 وb/454377558 وb/461360154) - تمت إضافة إمكانية عرض مربّعات حوار Jetpack Compose من "خدمات Android". من خلال توفير نوع نافذة مخصّص من خلال المَعلمة الجديدة
windowTypeفيDialogProperties، يمكن للمطوّرين الآن عرض مربّعات الحوار في نوافذ متراكبة. (I7c504، b/478214962) - تعيد تسمية السمتَين
PointerInputChangeوHistoricalChangeلاسترداد قيم التكبير/التصغير والتحريك. (I989a8، b/481333653) - تضيف هذه السمة المزيد من الوظائف إلى واجهات برمجة التطبيقات الخاصة باختبار لوحة اللمس، وذلك لمحاكاة منحنيات ومدخلات مختلفة لإيماءة لوحة اللمس. (I290fb، b/473603145، b/479213358)
- تقسيم
PointerEventType.Panالجديد إلىPointerEventType.PanStartوPointerEventType.PanMoveوPointerEventType.PanEndوبالمثل، تم تقسيمPointerEventType.ScaleإلىPointerEventType.ScaleStartوPointerEventType.ScaleChangeوPointerEventType.ScaleEnd. يتيح هذا التقسيم تمرير معلومات إضافية حول بداية ونهاية إيماءات التحريك والتكبير/التصغير التي تفسّرها المنصة، ما يسمح بعد ذلك لمعالجات إدخال المؤشر في Compose باستخدام هذه المعلومات لرصد الأحداث بشكل مناسب، ومعرفة متى يتم التحريك أو التكبير/التصغير على وجه الخصوص. (I4daf6، b/479285849، b/481333653) - عندما تكون قيمة
AndroidComposeUiFlags.isSharedHapticsEnabledصحيحة، يحتويComposeViewContextعلى مثيل وحدة التحكّم المشتركة في ردود الفعل اللمسية. (Icd79a) - تم طرح واجهات برمجة التطبيقات التجريبية
mediaQueryوderivedMediaQueryوUiMediaScope(المصنّفة على أنّها@ExperimentalMediaQueryApi) لإتاحة تطوير واجهات مستخدم تكيّفية تعريفية استنادًا إلى أبعاد النافذة ووضع النافذة وإمكانات أخرى للجهاز والبيئة. (I2d21e، b/479800750)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة رسم
Modifier.dropShadowوModifier.innerShadowعلى مستوى نطاق الحظر عند تغيير مَعلمة الشكل ديناميكيًا. (Ida262، b/486202623) - تم إصلاح الخطأ الذي يتسبب في وضع المحتوى المضمّن في غير مكانه في التصاميم من اليمين إلى اليسار التي تتضمّن نصًا من اليسار إلى اليمين أو التصاميم من اليسار إلى اليمين التي تتضمّن نصًا من اليمين إلى اليسار. (I09789)
- تم إصلاح الخطأ الذي كان يتسبّب في ظهور استثناء عند استخدام
ComposeViewفي عملية انتقال جزء. (Ia425f، b/484100557)
المساهمة الخارجية
- أضِف السمة
InputTextSuggestionStateللمساعدة في تحديد الحالات المختلفة التي يمكن أن يكون فيها إدخال الكتابة الصوتية عند توفّر اقتراحات استبدال النص. تضيف هذه السمة أيضًاTextCompositionRangeلتتبُّع نطاق تركيبة النص الحالي للترجمة الصوتية، وتشير القيمة الفارغة إلى عدم توفّر أي تركيبة. (I7a67f، b/476472318)
الإصدار 1.11.0-alpha06
25 فبراير 2026
تم طرح androidx.compose.ui:ui-*:1.11.0-alpha06. يتضمّن الإصدار 1.11.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم استبدال العلامة
ComposeUiFlags.areWindowInsetsRulersEnabledبواجهة برمجة التطبيقاتComposeView.disableWindowInsetsRulers(). (Idcdb4، b/455590696) - نقلنا علامة الميزة التجريبية
isAccessibilityShowOnScreenNestedScrollingEnabledالمخصّصة لنظام Android فقط إلى (I1c13a) - إتاحة المشي صعودًا (I1c13a)
- الإبلاغ عن عُقد الدلالات خارج الشاشة التي تكون عناصر فرعية لعُقد الدمج المرئية جزئيًا في الحاويات القابلة للتمرير من أجل تحسين تجربة المستخدمين مع برامج قراءة الشاشة وخدمات تسهيل الاستخدام المشابهة (I71df9، b/434782764)
- عندما تكون قيمة
AndroidComposeUiFlags.isSharedClipboardManagerEnabledصحيحة، يمكن مشاركة مثيلات ذات صلة بالحافظة على مستوىComposeViewsباستخدامComposeViewContext(I65e2c). - تمت إزالة
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled(I6e14a، b/455601894)
الإصدار 1.11.0-alpha05
11 فبراير 2026
تم طرح androidx.compose.ui:ui-*:1.11.0-alpha05. يتضمّن الإصدار 1.11.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تنقل
AndroidComposeUiFlags.isSharedWindowInfoEnabledمعلوماتWindowInfoإلىComposeViewContext. يؤدي إيقاف العلامة إلى تركWindowInfoتحت سيطرةAndroidComposeView(I3b364) - سيتم نقل البُنى الشائعة ضمن
ComposeViewإلىComposeViewContextالمشتركة. هذا هو التغيير الأول الذي ينقلCoroutineContextإلىComposeViewContext. عندما تكون قيمةAndroidComposeUiFlags.isSharedComposeViewContextEnabledصحيحة، تتم مشاركة القيم تلقائيًا. عند ضبط القيمة على "خطأ"، لن تتم مشاركتها. (I9364d، b/461566955) - تضيف هذه السمة إمكانية استخدام إيماءات لوحة اللمس والتحويل من أحداث إدخال لوحة اللمس إلى الماوس. من خلال هذا التغيير، سيتم بشكل عام تسجيل أحداث مؤشر لوحة اللمس التي تتحكّم في المؤشر كما هو الحال في الأجهزة اللوحية أو أجهزة الكمبيوتر المحمولة كمؤشرات فأرة، ما يحسّن السلوك المتعلق بانحراف المؤشر والتمرير والتحويم. سيتم أيضًا تسجيل إيماءات التحريك والتكبير/التصغير مع توفير معلومات إضافية في تغييرات حدث المؤشر، مع الإشارة إلى أنّه سيتم ضبط هذه القيم باستخدام PointerEventType.Pan وPointerEventType.Scale الجديدَين (Id071a وb/315527861 وb/459831570).
إصلاح الأخطاء
- أرسِل
CONTENT_CHANGE_TYPE_CHECKEDلتغيير السمة القابلة للتبديل. (I6ac64، b/476894689، b/474538004، b/475754416)
المساهمة الخارجية
- تم إيقاف
androidx.compose.ui.graphics.NativePainttypealias نهائيًا، استخدِمandroid.graphics.Paintمباشرةً بدلاً من ذلك (I6303c، b/477394763) - استبدال الإضافة
Paint.asFrameworkPaint()بالإضافةPaint.nativePaintلتجنُّب عرض نوع النظام الأساسي في مجموعة المصادرcommonMainمن خلالtypealias(I6303c، b/477394763) - إضافة دعم لمفاتيح حركة
NumPad(I1ff12)
الإصدار 1.11.0-alpha04
28 يناير 2026
تم طرح androidx.compose.ui:ui-*:1.11.0-alpha04. يتضمّن الإصدار 1.11.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم عرض
TestCoroutineSchedulerلتفعيل استخدامrunCurrent()وضمان الوصول إلى مثيل أداة الجدولة المشتركة. (Iea662، b/254115946) - إضافة إمكانية التنقّل للأعلى في التمرير المتداخل استجابةً لطلب
android.R.id.accessibilityActionShowOnScreenمن "تسهيل الاستخدام" (Ib2723، b/431148846)
إصلاح الأخطاء
- تم إصلاح مشكلة تحويل مساحة ألوان RGB مخصّصة على Android. تم تحويل عمليات تحويل التدرّج الرمادي المخصّص بشكل غير صحيح بين مساحات ألوان Compose المخصّصة ومساحات ألوان Android RGB.(ebd45،b/377021410)
الإصدار 1.11.0-alpha03
14 يناير 2026
تم طرح androidx.compose.ui:ui-*:1.11.0-alpha03. يتضمّن الإصدار 1.11.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة العلامة
ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled. تستخدم واجهتا برمجة التطبيقاتrun*ComposeUiTestوcreate*ComposeRuleفي الإصدار 2 الآنStandardTestDispatcherتلقائيًا. لمواصلة استخدامUnconfinedTestDispatcher، يمكنك استخدام صيغ واجهة برمجة التطبيقات المتوقّفة نهائيًا، ولكن ننصحك بشدة بنقل البيانات إلى الإصدار 2 من واجهات برمجة التطبيقات للحصول على تحكّم أفضل في تنفيذ الروتينات الفرعية. (Iecc9c، b/455601592) - تم طرح واجهات برمجة التطبيقات
androidx.compose.ui.test.junit4.v2.create*ComposeRule. تستخدم واجهات برمجة التطبيقات الجديدة هذهStandardTestDispatcherتلقائيًا لمحاكاة سلوك الإنتاج بشكل أفضل حيث يتم وضع الروتينات الفرعية في قائمة الانتظار بدلاً من تنفيذها على الفور. لمزيد من المعلومات، راجِع إرشادات نقل البيانات. (I1870e، b/254115946) - تم طرح واجهات برمجة التطبيقات
androidx.compose.ui.test.v2.run*ComposeUiTest. تستخدم واجهات برمجة التطبيقات الجديدة هذهStandardTestDispatcherتلقائيًا لمحاكاة سلوك الإنتاج بشكل أفضل حيث يتم وضع الروتينات الفرعية في قائمة الانتظار بدلاً من تنفيذها على الفور. لمزيد من المعلومات، راجِع إرشادات نقل البيانات. (I4f782، b/254115946) - يمكن الآن مشاركة البُنى الشائعة ضمن
ComposeView. عندما تكون قيمةComposeUiFlags.isSharedComposeViewContextEnabledصحيحة، تتم مشاركة القيم تلقائيًا. عند ضبط القيمة على "خطأ"، لن تتم مشاركتها. (I0d1b4، b/463540495، b/460468959، b/461503366، b/463641813)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم إزالة المحتوى المرسوم عند إزالة كل المحتوى من
ComposeView. (I8b382، b/299503084) - تم إصلاح عُطل في التركيب القابل للإيقاف المؤقت عند تحريكه باستخدام
LookaheadScope. (I7e649، b/469669851) - تم حلّ مشكلة كانت تؤدي إلى تعطُّل خدمة الملء التلقائي عند إرسال سلاسل طويلة جدًا إليها. لمنع حدوث ذلك، يتم الآن اقتطاع النص تلقائيًا إلى طول صالح قبل إرساله.
- تم إصلاح الخطأ الذي يمكن أن يتسبّب فيه الخروج من التمرير فوق عنصر في حدوث نقرة في ظروف معيّنة جدًا (a3d5a0f)
- إصلاح عملية إرسال حدث التمرير فوق الشاشة باستخدام قلم الشاشة للاختبارات وإعداد اختبارات الماوس لاختبارات قلم الشاشة الجديدة (9ca9bc9)
- تتيح هذه السمة إمكانية إزالة عناصر واجهة المستخدم أو وضعها باستخدام إدخال المؤشر. (d0742b0، b/BUD_ID)
- تم إصلاح خطأ في Jetpack Compose
Popupكان يؤدي إلى تمرير الإحداثيات المطلقة لحدود العنصر الأساسي إلىPopupPositionProvider، ما يؤدي إلى مواضع غير صحيحة للعناصر المنبثقة. تستخدم الآن عمليات احتساب موضع النوافذ المنبثقة الإحداثيات النسبية الصحيحة.(1f7edf،b/469940907)
الإصدار 1.11.0-alpha02
17 ديسمبر 2025
تم طرح androidx.compose.ui:ui-*:1.11.0-alpha02. يتضمّن الإصدار 1.11.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبحت واجهات برمجة التطبيقات
MultiModalInjectionScopeثابتة الآن. ويشمل ذلكperformKeyInputوperformRotaryScrollInputوواجهات برمجة التطبيقات الأساسية الخاصة بهما. تمت إزالة التعليق التوضيحي التجريبي. (Ie8bbc، b/261561237) - تضيف هذه الحزمة واجهات برمجة تطبيقات لاختبار لوحة اللمس. وهي تشبه واجهات برمجة التطبيقات لاختبار الماوس، وتُدخل أحداثًا تحاكي سلوك لوحة التتبُّع على جهاز لوحي أو كمبيوتر محمول. نقطتا الدخول الأساسيتان هما
SemanticsNodeInteraction.performTrackpadInputوMultiModalInjectionScope.trackpad(I2ce67)، b/432326139.
إصلاح الأخطاء
- إصلاح إمكانية التشغيل التفاعلي لإدخال التمرير بعجلة الماوس بحيث لا يتم استخدامه إلا إذا تم استخدامه في Compose، وليس إذا تم إرساله في Compose. (I5e0c4)،
الإصدار 1.11.0-alpha01
3 ديسمبر 2025
تم طرح androidx.compose.ui:ui-*:1.11.0-alpha01. يتضمّن الإصدار 1.11.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تزيل هذه السياسة العلامة
isSemanticAutofillEnabledلواجهة المستخدم لأنّ ميزة "الملء التلقائي الدلالي" أصبحت مفعّلة تلقائيًا. (I849cf، b/455587954) - تم تغيير طريقة عثور الطريقة find
findNearestAncestorالقابلة للتنقّل على العُقد ذات الصلة. ستظهر الآن عناصر التحكّم من النوع نفسه (NodeKind) أثناء التنقّل. يتم حماية التغيير بالعلامةisTraversableDelegatesFixEnabled. (Ia3165، b/280804097) - إضافة عملية ربط
TextEntryKeyلـANI#isTextEntryKey(Ifde7b، b/399540654) - تم إيقاف
Modifier.onFirstVisible()نهائيًا لأنّ سلوكه مضلّل ولا يلتزم دائمًا بالعقد الذي يدّعي الاسم أنّه يتبعه. على سبيل المثال، عند إضافتها إلى عنصر منLazyColumn، سيتم استدعاء دالة ردّ الاتصال هذه في كل مرة يصبح فيها هذا العنصر مرئيًا بعد التمرير. وهذا ليس ما قد يتوقّعه مستخدمو المعدِّل بهذا الاسم. ننصحك باستخدامModifier.onVisibilityChanged()بدلاً من ذلك وتتبُّع ما إذا كان التنسيق مرئيًا من قبل يدويًا استنادًا إلى متطلبات حالة الاستخدام المحدّدة. (Ia7095، b/447601783) - تم تقديم
MeasuredSizeAwareModifierNode، وهو مطلوب عند الحاجة إلى معاودة الاتصالonRemeasured(). يُرجى استخدام هذه الواجهة مباشرةً بدلاً من استخدامLayoutAwareModifierNodeأكثر عمومية عندما لا تحتاج إلى عمليات ردّ الاتصال الأخرى. (If6fb0)
الإصدار 1.10
الإصدار 1.10.6
25 مارس 2026
تم طرح androidx.compose.ui:ui-*:1.10.6. يتضمّن الإصدار 1.10.6 هذه التعديلات.
الإصدار 1.10.5
11 مارس 2026
تم طرح androidx.compose.ui:ui-*:1.10.5. يتضمّن الإصدار 1.10.5 هذه التعديلات.
الإصدار 1.10.4
25 فبراير 2026
تم طرح androidx.compose.ui:ui-*:1.10.4. يتضمّن الإصدار 1.10.4 هذه التعديلات.
الإصدار 1.10.3
11 فبراير 2026
تم طرح androidx.compose.ui:ui-*:1.10.3. يتضمّن الإصدار 1.10.3 هذه التعديلات.
الإصدار 1.10.2
28 يناير 2026
تم طرح androidx.compose.ui:ui-*:1.10.2. يتضمّن الإصدار 1.10.2 هذه التعديلات.
الإصدار 1.10.1
14 يناير 2026
تم طرح androidx.compose.ui:ui-*:1.10.1. يتضمّن الإصدار 1.10.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل في التركيب القابل للإيقاف المؤقت عند تحريكه باستخدام
LookaheadScope(I7e649، b/469669851) - تم إصلاح خطأ في Jetpack Compose
Popupكان يؤدي إلى تمرير الإحداثيات المطلقة لحدود العنصر الأساسي إلىPopupPositionProvider، ما يؤدي إلى مواضع غير صحيحة للعناصر المنبثقة. تستخدم الآن عمليات احتساب موضع النوافذ المنبثقة الإحداثيات النسبية الصحيحة.(1f7edf،b/469940907)
الإصدار 1.10.0
3 ديسمبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0. يتضمّن الإصدار 1.10.0 هذه التعديلات.
الإصدار 1.10.0-rc01
19 نوفمبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-rc01. يتضمّن الإصدار 1.10.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- إرسال عمليات ردّ الاتصال
visibilityChangedبشكل صحيح مع القيمة false عندما لا تكون قيمةminDurationMsصفرًا (2ac08b8، b/456384555) - لا تستدعِ الدالة
onVisibilityChangedعند عدم ظهور العُقدة في البداية. (3969e8d، b/447364998)
الإصدار 1.10.0-beta02
5 نوفمبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-beta02. يتضمّن الإصدار 1.10.0-beta02 هذه التعديلات.
الإصدار 1.10.0-beta01
22 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-beta01. يتضمّن الإصدار 1.10.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة تحسينًا لإرسال تغيير التركيز. يمكن إيقاف هذه الميزة باستخدام
isOptimizedFocusEventDispatchEnabled = false(I919fb، b/449228515) - تعديل جميع واجهات برمجة التطبيقات التي تتضمّن اللمس غير المباشر لاستخدام اسم واجهات برمجة التطبيقات التي تتضمّن المؤشر غير المباشر لتتطابق مع واجهات برمجة التطبيقات التي تتضمّن إدخال المؤشر (I238ce، b/451607214)
- تُصدر الدوال
TextDirectionوTextAlignوHyphensوFontSynthesisوvalueOfالآن الخطأIllegalArgumentExceptionعند تلقّي قيمة غير معروفة. (I07c67) - عدِّل
CompositionDataTree.makeTreeلتمرير القيم التلقائية بدلاً من دالة التغليف. (Id64a6، b/445229688) - إنّ واجهات برمجة التطبيقات لقواعد الاختبار
createComposeRuleوcreateAndroidComposeRuleوcreateEmptyComposeRuleالتي تقبل المَعلمةeffectContextثابتة، وتكون القيمة التلقائية للمَعلمة هيEmptyCoroutineContext. (If400c، b/450540702) - تمت إعادة تسمية "
UnplacedStateAwareModifierNode" إلى "UnplacedAwareModifierNode" (I6a551، b/449719932) - التراجع عن ميزة "تحسين التقاط المحتوى" (Ic000b، b/442364065)
- تمت إضافة علامة الميزة
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. وقد أتاحت تحسين الأداء حيث تستخدم طلبات الإحداثيات، مثلLayoutCoordinates.positionInRoot()، الإزاحات المخزّنة مؤقتًا المتوفّرة لدينا فيRectManager، بدلاً من اجتياز الشجرة بأكملها في كل طلب. (Ieaadc)
إصلاح الأخطاء
- تستخدم
PlaceholderSpanالآن الضبط غير الخطي لحجم الخط بشكل صحيح (Id2ead، b/324462728) - استخدِم
ViewCompatلتنفيذ ثوابت التجاوب الحسّي التي تتوافق مع مستوى النظام الأساسي، مع الاعتماد على دعمها الاحتياطي للثوابت الأحدث. (Ib5a00)
الإصدار 1.10.0-alpha05
8 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha05. يتضمّن الإصدار 1.10.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تسبَّب في تحديد موضع غير صحيح للنوافذ المنبثقة المتداخلة في أعلى الشاشة، وأصبحت الآن مرتبطة بشكل صحيح بالنافذة المنبثقة الرئيسية. (Id4603، b/191279752)
- تم إصلاح مشكلة التفاف التركيز مع طرق العرض الأخرى في التسلسل الهرمي. (I95223، b/446028624)
- إصلاح الحقول التي تتضمّن مَعلمات مضمّنة غير متوفّرة في "نافذة الفحص" في تعبيرات lambda التي تم إنشاؤها بواسطة الإصدار 2.2.20 من Kotlin (I9855d، b/447110005)
- إصلاح مشكلة حجب أسماء موارد الملء التلقائي بين واجهة المستخدم والوحدات الأساسية (I5da5a)
المساهمة الخارجية
- تمت إعادة تسمية العنصر
UiModesإلى AndroidUiModes للإشارة إلى أنّ الثوابت الخاصة به مأخوذة من Android API. (Ia0a77)
الإصدار 1.10.0-alpha04
24 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha04. يتضمّن الإصدار 1.10.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت ترقية صيغة قاعدة اختبار Compose التي تقبل المَعلمة
CoroutineContextإلى إصدار ثابت. تمت إزالة التعليق التوضيحي التجريبي، ولم يعُد على المطوّرين الموافقة على استخدام واجهة برمجة التطبيقات هذه. (I74e6e) - تمت إزالة الحقل "
ComposeUiFlags.isRectTrackingEnabled". لا يتم تفعيل هذه المنطق دائمًا. (Id78df) - تم إيقاف التحميل الزائد المضمّن لـ
Updater#setنهائيًا لأنّه كان يغلف القيمة المقدَّمة عدة مرات (Id679e) - وضع علامة على السمة الدلالية
onAutofillTextعلى أنّها متوقّفة نهائيًا (I6f81c) - تم طرح
UnplacedStateAwareModifierNode. توفّر هذه السمة دالة ردّ يتم استدعاؤها عندما لا يكون التصميم الذي تم وضعه سابقًا موضوعًا بعد الآن. (I8fdd8، b/309776096) - تم تصحيح المحتوى المتعلق بالسمة
RetainObserver.onRetainedوإضافة السمةRetainObserver.onUnusedالتي تشبه السمةRememberObserver.onAbandoned. (Ia6fc5) - تمت إضافة
onVisibilityChangedNode()، وهو ينتجModifier.Node، ويستخدمهModifier.onVisibilityChanged()من خلال التفويض، ما يتيح التوسّع في هذه الوظيفة فيModifier.Nodeالمخصّص. (I70d84، b/443001320)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عرض المحتوى المضمّن عند وضعه على السطر الأخير من النص المتعدد الأسطر الذي تم اقتطاعه باستخدام علامات الحذف، على الرغم من أنّ العنصر النائب يسبق المنطقة التي تم اقتطاعها. (I76aaf، b/441829208)
الإصدار 1.10.0-alpha03
10 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha03. يتضمّن الإصدار 1.10.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تعيد تسمية
DelegatableNode.invalidateLayoutForSubtreeإلىDelegatableNode.invalidateMeasurementForSubtree. (I94257، b/430106107) - يزيل أداة مطابقة
isInHiddenAccessibilitySubtreeالمكرّرة. (I4476c، b/443792965) - تتضمّن هذه الإصدارات تتبُّع تسلسل استدعاء الدوال البرمجية المستند إلى مفتاح المجموعة والمفعَّل تلقائيًا لجميع التطبيقات التي تم تصغيرها. سيتم إنشاء ملف ربط Proguard لهذه التتبُّعات من خلال المكوّن الإضافي Compose Compiler Gradle بدءًا من الإصدار 2.3.0 من Kotlin. (Ifbcb5)
- تستخدم
Modifier.skipToLookaheadSizeالآن دالة lambda مفعَّلة تلقائيًا لا تتيح تخطّي تغيير الحجم إلا عندما يكون الانتقال المشترَك نشطًا، تمامًا مثلModifier.skipToLookaheadPosition. (Ibe0f5، b/432485585) - تمت إزالة
ComposeUiFlags.isOutOfFrameDeactivationEnabledوأصبحت هذه الوظيفة مفعَّلة دائمًا. (I421ed) - نقل دوال المصنع لإنشاء مثيلات
FillableDataإلى العنصر المرافق بدلاً من استدعاءFillableData(value)، استخدِم طرق المصنع الجديدة:FillableData.createFrom(value). (I2e200، b/441719650) - إضافة
BeyondBoundsLayoutModifierNodeعقدة معدِّل جديدة لتنفيذ تخطيط خارج الحدود للبحث عن التركيز (I39be1، b/416133658) - يرسل
FocusTargetModifierNode.requestFocus()التركيز إلى أحد العناصر الفرعية عندما لا يكون قابلاً للتركيز عليه. أصبحت هذه القيمة متوافقة الآن معFocusRequester.requestFocus()وFocusRequesterModifierNode.requestFocus(). إذا لم تكن بحاجة إلى هذا السلوك، اضبط العلامةComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledعلى "خطأ" في تطبيقك. (Icca5c، b/436863604) - توفير حجم النافذة المستند إلى DP في
WindowInfo(I9322b، b/424442112) - تمت إزالة العلامة
isNestedScrollDispatcherNodeFixEnabled. (If451a) - إتاحة استخدام قيم التاريخ في ميزة "الملء التلقائي" في واجهة برمجة التطبيقات
FillableDataتمت إضافةval dateMillisValue: Longلاسترداد معلومات التاريخ، كما تمت إضافة أداة إنشاءFillableData(dateMillisValue: Long)مقابلة لإنشاء مثيلاتFillableDataمستندة إلى التاريخ. (Id072a)
المساهمة الخارجية
- تم تقديم العنصر
UiModesللإشارة إلى الثوابت المستخدَمة في التعليق التوضيحيUiMode(I03cb8)
الإصدار 1.10.0-alpha02
27 أغسطس 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha02. يتضمّن الإصدار 1.10.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- عدِّل
FillableDataليتوافق مع المكوّنات غير النصية، مثل أزرار التبديل والقوائم، بما في ذلك القيم المنطقية والصحيحة داخلFillableDataومنشئات المصنع لإنشاء مثيلات منطقية وقائمة منFillableDataالتي يتم تحويلها إلىAutofillValueفي النظام الأساسي. تتم أيضًا إضافة السمة الدلالية والإجراء ذي الصلة. (Ia8105، Icc5cf) - في وضع عدم اللمس، يحدّد نظام العرض التركيز الأوّلي/التلقائي على أحد العناصر التي يمكن التركيز عليها على الشاشة. تتم إضافة هذه الميزة إلى "الكتابة باقتناع" ويمكن تفعيلها من خلال تفعيل
ComposeUiFlags.isInitialFocusOnFocusableAvailable. (Ib9178) - تمت إزالة العلامة
isPointerInteropFilterDispatchingFixEnabled. (Iaa589) - تمت إزالة العلامة
isNestedScrollInteropPostFlingFixEnabled. (I2a756) - أضِف أدوات مطابقة دلالية لـ
isHiddenFromAccessibility()وisInHiddenAccessibilitySubtree(). (I9f5a1) - تمت إضافة
runCurrent()إلىMainTestClockلتنفيذ جميع المهام المستحقة في أداة الجدولة الأساسية. يهدف ذلك إلى إتاحة إجراء الاختبارات علىStandardTestDispatcher، حيث تتم إضافة المهام إلى أداة الجدولة بدلاً من تنفيذها على الفور عندما يكون هناك تأخير بمقدار 0 ملي ثانية. يمكن إعداد اختبار لاستخدامStandardTestDispatcherمن خلال إنشاءComposeTestRuleوتمريرStandardTestDispatcherإليه. يتم إجراء الاختبارات تلقائيًا علىUnconfinedTestDispatcher، وفي هذه الحالة لن تحتاج إلى استدعاءrunCurrent()مطلقًا. - تمت إضافة إمكانية إجراء الاختبارات على
StandardTestDispatcher. في السابق، كان يتم إعداد إطار الاختبار (ولا يزال) باستخدامUnconfinedTestDispatcher، وهو يختلف عن بيئة الإنتاج بطرق دقيقة. يمكنك الآن تغيير هذا الإعداد من خلال إنشاءStandardTestDispatcherخاص بك وإضافته إلىeffectContextعند إنشاءComposeTestRule(أو عند استدعاء runComposeUiTest). (I334d0، b/254115946) - عدِّل الرمز البرمجي لإنشاء شجرة من العُقد من
SlotTree. (I997d3)
إصلاح الأخطاء
- تثبِّت واجهة مستخدم Compose الآن
RetainScopesالمتوافق مع مراحل النشاط على Android. سيستمر السلوك التلقائي الآن في الاحتفاظ بالقيم التي تمretainها عند إجراء تغييرات في الإعدادات. (Id4a09، b/177562901)
المساهمة الخارجية
- تضيف هذه السمة إمكانية احتساب سرعة المؤشر استنادًا إلى أحداث المؤشر التي يتم تتبّعها باستخدام سلوك خاص بالمنصة.
VelocityTracker(I621e8)
الإصدار 1.10.0-alpha01
13 أغسطس 2025
تم طرح androidx.compose.ui:ui-*:1.10.0-alpha01. يتضمّن الإصدار 1.10.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- سيؤدي الآن الضغط على مؤشر الماوس أو لوحة اللمس في
ComposeViewإلى إزالة التركيز تلقائيًا إذا لم يحدث الضغط ضمن حدود العقدة المركّز عليها. وينتج عن ذلك تجربة مستخدم "النقر لمسح التركيز" التي تكون أكثر توقعًا من السلوك الحالي عند استخدام أجهزة إدخال المؤشر. يمكن إيقاف هذا السلوك باستخدام واجهة برمجة تطبيقاتAbstractComposeView.isClearFocusOnPointerDownEnabledجديدة. (I6322b، b/282963174) - إضافة واجهة
FillableDataلتوفير أنواع مختلفة من مكوّنات التعبئة التلقائية، بالإضافة إلى النص (If9bd2) - واجهة برمجة تطبيقات جديدة تتيح تفعيل العناصر المشترَكة وإيقافها ديناميكيًا، كما تتيح احتساب ما إذا كان هناك انتقال مستمر للعناصر المشترَكة. واجهة برمجة تطبيقات جديدة لإعداد حدود مستهدَفة بديلة عند التخلّص من العنصر المشترَك المستهدَف أثناء الانتقال واجهة برمجة تطبيقات جديدة للحصول على
LayoutCoordinatesالخاص بـLookaheadScope(I18dd4، b/409819304، b/395670637) - إضافة العلامة
isNestedScrollInteropIntegerPropagationEnabledللتحكّم في تجربة إرسال الأعداد الصحيحة إلى ميزة التوافق مع التمرير المتداخل (If8316) - تمت إضافة
requestFocusForChildInRootBounds()إلىDelegatableNodeلنقل التركيز إلى عنصر ثانوي يتداخل مع المستطيل المحدّد. (I001ef) - تمت إزالة العلامات
isOnScrollChangedCallbackEnabledوisAdjustPointerInputChangeOffsetForVelocityTrackerEnabledوisFlingContinuationAtBoundsEnabledوisAutomaticNestedPrefetchEnabledوDragGesturePickUpEnabledوisPointerInteropFilterDispatchingFixEnabledوisNestedScrollInteropPostFlingFixEnabledوisNestedScrollDispatcherNodeFixEnabled(I36c18) - تمت إضافة التعليق التوضيحي
@CheckResultإلى دالتَي البحث والاختيارSemanticsNodeلفرض استخدام القيم التي يتم عرضها. (I6f86e، b/201652748) - تحسين أداء عملية تسجيل المحتوى (I3c7c0)
- تم تقديم
CompositionLocalالتي يمكن استخدامها لتعديل فرشاة تمييز الملء الناجح في ميزة "الملء التلقائي". (I52329) - تم تقديم واجهة Interpolatable جديدة تتيح الاستيفاء التلقائي بين الأنواع المختلفة، على افتراض أنّ أحد الأنواع يعرف كيفية التحويل من النوع الآخر. يتم الاستفادة من هذه الواجهة في العديد من أنواع الإنشاء، مثل Brush وShape، ولكن يمكن استخدامها خارجيًا أيضًا. (I58eab)
- تتيح الآن ميزة Scrollable إمكانية التعامل بشكل أفضل مع أحداث التمرير باستخدام عجلة الماوس الثنائية الأبعاد. تم إطلاق واجهة برمجة تطبيقات اختبار جديدة للمساعدة في اختبار حالات الاستخدام في
MouseInjectionScope. لقد أضفنا أيضًا حمولة زائدة جديدة لطُرق التمرير فيMouseInjectionScopeوعلامة للتحكّم في السلوك الجديد تُسمّىisMouseWheel1DAxisLockingEnabled(I136df). - إضافة
DeviceConfigurationOverridesلنوع لوحة المفاتيح وحالتها، ونوع التنقّل وحالته، وحالة شاشة اللمس، ونوع وضع واجهة المستخدم (I282f0) - تمت إضافة
LineHeightStyle.Modeجديد باسمTight. يساعد هذا الوضع في فرض ارتفاعات أسطر أصغر حتى عندما يكون من المحتمل أن تقطع الرموز الرسومية الأطول. (Id3849) - يحتوي النوع
BaselineShiftالآن على قيمة "غير محدّد" لمنع التعبئة. يحتوي النوعBaselineShiftوHyphensوLineBreakوTextAlignوTextDirectionالآن علىisSpecifiedدوال مساعِدة. يحتوي النوعHyphensوTextAlignوTextDecorationوTextDirectionالآن على طريقتَيvalueOf()وvalue اللتين تتيحان نشر البيانات على نحو متسلسِل/إلغاء النشر على نحو متسلسِل بكفاءة. (I8d44c) - تمت إضافة واجهة طريقة
getDisplayNameجديدة للسماح بأسماء عرض مخصّصة لمثيلات مَعلمات المعاينة. (I19bdf، b/241699422) - عند مقارنة قيم Dp بالقيمة Unspecified باستخدام علامة أصغر من أو أكبر من، يتم الآن عرض القيمة false دائمًا. يؤدي استخدام
Dp.compareTo(Unspecified)دائمًا إلى عرض القيمة 0. سيؤدي ضبط العلامةComposeUiUnitFlags.isDpCompareToChangedعلى "خطأ" إلى إعادةDp.compareTo()إلى سلوكه السابق، حيث لا يؤدي دائمًا إجراء مقارنة بين Unspecified وless-than وgreater-than إلى عرض القيمة "خطأ"، كما أنّcompareTo()مع Unspecified يتطابق مع سلوكFloat.compareTo(). (Ifa88b، b/429221319)
إصلاح الأخطاء
- تغيير الحد الأدنى التلقائي لإصدار SDK من الإصدار 21 من واجهة برمجة التطبيقات إلى الإصدار 23 من واجهة برمجة التطبيقات (Ibdfca، b/380448311، b/435705964، b/435705223)
- تم إصلاح مشكلة كانت تمنع إنشاء
AndroidComposeViewsجديدة أثناء إجراء انتقال. (I2e23e، b/340894487، b/287484338) - إصلاح خطأ في الألوان عند استخدام متّجه قابل للرسم يستخدِم لونًا واحدًا ويكون
fillColorغير معتم أو شفاف تمامًا (I3b041، b/328677973) - تم إصلاح مشكلة عدم تعديل الرموز التي تم تحميلها من خلال
painterResourceباستخدام ألوان خاصة بالمظهر عند تغيير المظهر. (I85ea0، b/424416571) - إضافة دلالات
onFillDataوfillableData(I45d9e) - يتم الآن تفعيل ترميز الحالة الخاص بالمنصة دائمًا في
StateRestorationTester. يتوافق ذلك مع سلوك الاختبار عند استعادة حالة التطبيق الفعلية، مثل عملية Parcelization على Android. (I38211، b/408154192، b/382294247) - إصلاح الأعطال العرضية عند طلب التركيز (57b31a11، b/431111149)
الإصدار 1.9
الإصدار 1.9.5
19 نوفمبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.5. يتضمّن الإصدار 1.9.5 هذه التعديلات.
الإصدار 1.9.4
22 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.4. يتضمّن الإصدار 1.9.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة اختفاء محتوى النص المضمّن إذا كان في السطر الأخير من نص متعدد الأسطر تم اقتطاعه باستخدام علامة الحذف، حتى إذا لم يكن المحتوى المضمّن في المنطقة التي تم اقتطاعها. (I76aaf، b/441829208)
- تم إصلاح مشكلة عدم استدعاء عمليات رد الاتصال الخاصة بأداة التعديل
onLayoutRectChangedدائمًا عندما لا تكون قيمةdebounceMillisصفرًا. (72aba47، b/445324854)
الإصدار 1.9.3
8 أكتوبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.3. يتضمّن الإصدار 1.9.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يتسبّب في عدم تلقّي معدِّلات
onVisibilityChanged/onFirstVisible/onLayoutRectChangedلعمليات معاودة الاتصال إذا كان التصميم الذي يتم نقله يحتوي على أكثر من 170 عنصرًا فرعيًا. (4f2fdd، b/445356774)
الإصدار 1.9.2
24 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.2. يتضمّن الإصدار 1.9.2 هذه التعديلات.
إصلاح الأخطاء
- يتم الآن تنشيط
Modifier.onVisibilityChanged()بشكل صحيح عند فصل عقدة أو إعادة استخدامها. (Ic5ce20) - تعالج السمتان
Modifier.onVisibilityChanged()وonLayoutRectChanged()الآن تخطيطات العناصر الرئيسية بشكل صحيح باستخدامplaceWithLayer()لوضع العناصر الفرعية. (Ia05ac9) - بالنسبة إلى
Modifier.onVisibilityChanged()وonLayoutRectChanged()، يجب إرسال إشعار بشكل صحيح في الحالات الحدّية، مثل إزالة طبقة أو معدِّل طبقة أو تعديل خصائص الطبقة. (Ia05ac)
الإصدار 1.9.1
10 سبتمبر 2025
تم طرح androidx.compose.ui:ui-*:1.9.1. يتضمّن الإصدار 1.9.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح خطأ في الألوان عند استخدام متّجه قابل للرسم يستخدِم لونًا واحدًا ويكون
fillColorغير معتم أو شفاف تمامًا (I3b041، b/328677973)
الإصدار 1.9.0
13 أغسطس 2025
تم طرح androidx.compose.ui:ui-*:1.9.0. يتضمّن الإصدار 1.9.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.8.0
- يمكنك الاطّلاع على التغييرات المهمة في الإصدار 1.9.0 في مشاركة المدونة هذه.
- تتطلّب عمليات فحص Lint المضمّنة في Compose الآن الإصدار 8.2.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحدّ أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) فيgradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث. - تغيير غير متوافق: تنفّذ عُقد المعدِّل
graphicsLayerالآنSemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافةSemanticsNodesجديدة إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تضع افتراضات بشأن بنية شجرة الدلالات. على سبيل المثال، قد تفشل الاختبارات التي تستخدمonChildوonParentوonSiblingوطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لحلّ حالات الفشل هذه هي إضافةtestTagإلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثلonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
الإصدار 1.9.0-rc01
30 يوليو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-rc01. يتضمّن الإصدار 1.9.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تعديل الرموز التي يتم تحميلها من خلال
painterResourceبألوان خاصة بالمظهر عند تغيير مظهر النظام. (I85ea0، b/424416571) - إصلاح الأخطاء في الإصدارَين 21(Lollipop) و28(Pie) من واجهة برمجة التطبيقات حيث تمت إعادة تسمية طرق الرسومات المهمة أثناء تحسينها. (Iebf99، b/425120571، b/420462749)
- تأكَّد من أنّه يتم استدعاء المعدِّلات التي تم إدراجها حديثًا
onLayoutRectChangedفي البداية. (l9aa91)، (lb348a) - تم إصلاح مشكلة عدم إبطال صحة ذاكرة التخزين المؤقت للإزاحة بشكل صحيح، ما يؤدي إلى استدعاء أدوات التعديل
onLayoutRectChangedبإحداثيات غير صحيحة (ibd4cd)، (lddc57) - حلّ لمشكلة تلقّي التصاميم التي تم تدويرها أو تحريفها إحداثيات غير صحيحة من خلال المعدِّلات
onLayoutRectChanged(lddc57، b/426750475)
المساهمة الخارجية
- تم إصلاح مشكلة اختفاء عناصر
dragAndDropSourceفيLazyListعند التمرير. شكرًا "فيكتور رندينا". (dc3bcd3، b/425894792)
الإصدار 1.9.0-beta03
16 يوليو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-beta03. يتضمّن الإصدار 1.9.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحرّك الظلال الداخلية المموّهة بشكلٍ موحّد بشكلٍ صحيح مع الإزاحة.
الإصدار 1.9.0-beta02
2 يوليو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-beta02. يتضمّن الإصدار 1.9.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تغيير الكائن المصاحب إلى تجريبي ليتطابق مع الفئة (I8452a)
- تمت إزالة العلامة التجريبية
isTrackFocusEnabled(I003fd)
إصلاح الأخطاء
- عندما لا يكون هناك أي
WindowInsetsيقتطع من محتوىComposeView، لا يتم تقديم قيمWindowInsetsRulers. (I71221)
الإصدار 1.9.0-beta01
18 يونيو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-beta01. يتضمّن الإصدار 1.9.0-beta01 هذه التعديلات.
التغييرات التي قد تؤدي إلى أعطال
- تنفّذ عُقد المعدِّل
graphicsLayerالآنSemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافةSemanticsNodesجديدة إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تضع افتراضات بشأن بنية شجرة الدلالات. على سبيل المثال، قد تفشل الاختبارات التي تستخدمonChildوonParentوonSiblingوطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لحلّ حالات الفشل هذه هي إضافةtestTagإلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثلonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
تغييرات واجهة برمجة التطبيقات
- تم تغيير
ShadowContextليصبح واجهة محكمة (I3ce40) - إضافة طريقة متعددة الوحدات لإنشاء حدث لمس غير مباشر (للاختبار) (I22e4c)
- يجعل
IndirectTouchEvent.nativeEventتجريبيًا. (I6fda5) - تعديل مساحة واجهة برمجة التطبيقات استنادًا إلى ملاحظات مجلس واجهة برمجة التطبيقات (Ibf378)
- إزالة الثابت
FrameRateCategory.NoPreferenceتمّت إعادة تسميةModifier.requestedFrameRateإلىModifier.preferredFrameRate. (I2f976) -
WindowInsetsRulers: تم تغييرrulersIgnoringVisibilityإلى الحد الأقصى. تم تغييرgetDisplayCutoutBounds()لتصبح دالة إضافية منPlacementScope. تم تغييرWindowInsetsAnimationPropertiesإلىWindowInsetsAnimation، وتم تغييرgetAnimationProperties()إلىgetAnimation(). (I3816f) - تم تغيير الفئة من
ShadowParamsإلىShadow(I11cca) - تغيير حزمة واجهة برمجة التطبيقات الخاصة بعدد اللقطات في الثانية من
androidx.compose.ui.uiإلىandroidx.compose.ui(I8994e) - تم تغيير
InsetsRulersليكون في الرمز المشترك مع الاسمWindowInsetsRulers. تم تبسيط واجهة برمجة التطبيقات بحيث تكون جميع عمليات الإدراجWindowInsetsRulers. تم استخراج خصائص الصورة المتحركة غير الخاصة بالمسطرة إلى فئةAnimationProperties. يمكن استخدامWindowInsetsRulers.innermostOf()لدمج عدةWindowInsetsRulers. (I2f0c6، b/415012444) - تمت إضافة واجهة برمجة تطبيقات للأدوات من أجل تحليل معلومات المصدر التي أضافها برنامج التجميع في Compose. (Iceaf9، b/408492167)
إصلاح الأخطاء
- تمت إزالة علامة
isGetFocusedRectReturnEmptyEnabledبعد أن تم التحقّق من الميزة بالكامل. (Ife722) - تم إصلاح خطأ في
performScrollToNode، والذي لم يكن يصل في بعض الحالات إلى العقدة المستهدَفة. باستخدام هذا الإصلاح، من المفترض أن يصل دائمًا إلى العقدة المستهدَفة في هذه الحالات. من الآثار الجانبية لهذا التغيير أنّ موضع التمرير الدقيق في نهاية الإجراء قد يختلف الآن، ما يؤثّر في اختبارات لقطات الشاشة والاختبارات التي تفترض موضع التمرير الدقيق. (I2c8a1)
الإصدار 1.9.0-alpha04
4 يونيو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha04. يتضمّن الإصدار 1.9.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة واجهات برمجة تطبيقات معدِّلة للظلال القابلة للتخصيص. (I2058d، b/160665122)
- أضِف السمة
SemanticsModifierNode.isImportantForBoundsالتي تحدّد ما إذا كان يجب أخذ العقدة في الاعتبار عند احتساب الحدود. تكون السمة صحيحة تلقائيًا ويمكن ضبطها على "خطأ" للإشارة إلى أنّه يجب عدم أخذ العقدة في الاعتبار بالنسبة إلى الحدود. (I7ebec) - أضِف دالة مصنع
SemanticsPropertyKeyللإعلان عن خصائص دلالية خاصة بنظام Android يتم توفيرها كإضافات تسهيل الاستخدام يتم عرضها من خلالAccessibilityNodeInfo.getExtras. (I2ed51) - تمت إزالة استخدامات
ComposeUiFlags.isRemoveFocusedViewFixEnabledوإيقاف العلامة نهائيًا. (I50328) - تقديم إطار عمل جديد قابل للتخصيص للظلال يشمل ذلك
DropShadowPainterوInnerShadowPainterبالإضافة إلى تبعياتDropShadow/InnerShadow. تتم مشاركة البنية الأساسية للظلال بحيث يمكن مشاركة الظلال نفسها التي تم إنشاؤها في مواقع متعددة بدون الحاجة إلى إعادة إنشاء الظلال n مرة. (I24f7a، b/160665122) - نقدّم
CompositeShaderوCompositeShaderBrushاللذين ينشئان نتيجة مركّبة بين برنامجَي تظليل. أضِف أيضًاShaderBrush#transformلضبط مصفوفة تحويل للتظليل. (I2621a، b/160665122)
إصلاح الأخطاء
- تم إصلاح خطأ في
NestedScrollInteropConnectionحيث كانت ترتيب طرق الإشارة غير صحيح بالنسبة إلى طرق العرض. (I56ad4) - في السابق، لم تكن مربّعات الحوار التي تظهر بملء الشاشة تظهر ضمن منطقة صورة مقطوعة للشاشة. تم إصلاح هذا الخطأ حتى تتمكّن مربّعات الحوار التي تتضمّن
decorFitsSystemWindows = falseوusePlatformDefaultWidth = falseمن الاستفادة من منطقة الصورة المقطوعة للشاشة. (I9e975) - تم إصلاح الخطأ الذي لم يتم فيه رسم مؤشر التركيز الأخضر في
TalkBackبعد تفعيله أثناء تشغيل تطبيق Compose في الخلفية. (Ifd12a)
الإصدار 1.9.0-alpha03
20 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha03. يتضمّن الإصدار 1.9.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضمن العلامة
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledأنّه عندما لا يكون هناك أي عنصر قابل للتركيز فيComposeView، يتم ضبط المستطيل على قيمة فارغة. يمنع ذلك عملية البحث المركّز من اختيار "العرض" الذي سيتم التركيز عليه. ويكون ذلك مهمًا بشكل خاص عندما يتضمّن محرر أسلوب الإدخال خيار NEXT (التالي) الذي قد يحاول التركيز علىComposeView، ولكن يتعذّرrequestFocus()ذلك. (Ibd0e2، b/369256395) - إضافة العلامة
isNestedScrollDispatcherNodeFixEnabled(I0d24a) - إعادة تسمية
DialogProperties'dialogContentTitleإلىwindowTitle(Ibd27b) - تم تقديم المعدّلين
Modifier.onFirstVisibleوModifier.onVisibilityChanged، وهما معدّلان رفيعا المستوى يستندان إلىModifier.onLayoutRectChanged. تم تصميم هذه المعدّلات خصيصًا للتعامل مع العديد من متطلبات التطبيقات الشائعة، مثل تسجيل مرّات الظهور وتشغيل الفيديوهات تلقائيًا وما إلى ذلك. وقد تم تصميمها مع مراعاة الأداء لكي يمكن استخدامها في السيناريوهات المهمة المستندة إلى القوائم بدون خطر التأثير في أداء التمرير. بالإضافة إلى واجهات برمجة التطبيقات الخاصة بأدوات التعديل هذه، تمت إضافة واجهات برمجة تطبيقات أخرى إلىRelativeLayoutBoundsمن أجل توفير حالات الاستخدام هذه، فضلاً عن تسهيل مهمة المطوّرين في إنشاء أدوات تعديل مخصّصة مشابهة تناسب حالة الاستخدام الخاصة بهم تمامًا. (I759b8) - غيِّر القيمة
setDiagnosticStackTraceEnabledإلى "تجريبي" لتوضيح أنّ هذه الميزة ستخضع للتطوير في المستقبل. (I11db3) - إضافة
Modifier.scrollable2DوScrollable2DStateوواجهات برمجة التطبيقات المصاحبة لإنشاء الحالة تم أيضًا تقديم دوال إضافية شائعة للتمرير. (Ic61c8، b/214410040) - لا يمكن مقارنة قيم الألوان في Compose ذات 64 بت مباشرةً مع قيم الألوان في Android
ColorLongsلأنّ أرقام تعريف مساحات الألوان غير مرتبة لبعض مساحات الألوان. لتحويل مساحات الألوان في Android، تمت إضافة واجهتَي برمجة تطبيقات جديدتَين:toColorLong()وfromColorLong(). (I36899) - تمت إضافة
ViewConfiguration.minimumFlingVelocityللسماح بالتحكّم في الحد الأدنى لسرعة التمرير السريع. (I11aab)
الإصدار 1.9.0-alpha02
7 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha02. يتضمّن الإصدار 1.9.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أضِف
dialogContentTitleإلىDialogProperties، ما يضبط عنوان نافذة المحتوى. bf9d670
إصلاح الأخطاء
- تم إيقاف مساطر Window Insets مؤقتًا أثناء إصلاح الاختبارات الداخلية. 8d1402
- تم إصلاح طريقة إضافة التغييرات في إدخال المؤشر إلى
VelocityTrackerفيDragGestureNode، ويمكن التحكّم في ذلك باستخدام العلامة الجديدةisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb
الإصدار 1.9.0-alpha01
23 أبريل 2025
تم طرح androidx.compose.ui:ui-*:1.9.0-alpha01. يتضمّن الإصدار 1.9.0-alpha01 هذه التعديلات.
التغييرات في السلوك
- تتطلّب عمليات فحص Lint المضمّنة في Compose الآن الإصدار 8.2.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحدّ أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) فيgradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
تغييرات واجهة برمجة التطبيقات
- يزيل العلامة لتفعيل عبارات التتبُّع لأداة تتبُّع مسار النتائج (تصحيح الأخطاء). (I1b2a1)
- تم تغيير
InnerRectRulersوOuterRectRulesإلى طُرق بدلاً من ذلك. تمت إزالة المَعلمة name من واجهة برمجة التطبيقات العامةRectRulers. أصبحتDerivedRulersخيارًا في أداة الإنشاء لكلّ من "المسطرة العمودية" و"المسطرة الأفقية". تم استبدالMergedHorizontalRulersوMergedVerticalRulersبالطريقتَينminOfوmaxOfلإنشاء مثيلات. (Iee89f، b/408192133) - إيقاف
androidx.compose.ui.LocalSavedStateRegistryOwnerنهائيًا واستخدامandroidx.savedstate.compose.LocalSavedStateRegistryOwnerبدلاً منه (I5439f، b/377946781) - أضِف
Modifier.keepScreenOnلضبط الشاشة على عدم إيقافها مؤقتًا أثناء العرض (Ib5af4، b/408284174) - أضِف سمة دلالية جديدة
Shape، والتي يمكن ضبطها عندما يختلف شكل عنصر في واجهة المستخدم عن المستطيل المحيط به، مثل المستطيل ذي الزوايا الدائرية. (I1376f) - تم إصلاح مشكلة إرسال أحداث المؤشر في
AndroidViewsوإضافة العلامةisPointerInteropFilterDispatchingFixEnabledلحماية التغييرات. (I0e272، b/372055500، b/408002332) - لم يعُد
FocusRestorerيثبّت العنصر الذي تم التركيز عليه سابقًا. على المستخدمين استخدام مفتاح لضمان أنّ العنصر الذي تم التركيز عليه سابقًا يتضمّن تجزئة التركيب نفسها، وذلك لاستعادة التركيز بنجاح. (I4203b، b/330696779) - السماح لـ "الكتابة الذكية" بتفعيل
ViewTreeObserver.OnScrollChangedيتم تقديم هذا السلوك ضمن العلامةisOnScrollChangedCallbackEnabled. أضفنا أيضًا وظيفة موسّعة للسمةDelegatableNode dispatchOnScrollChanged. (I34b9d، b/238109286) - تم إيقاف
currentCompositeKeyHashنهائيًا. يمكنك استخدامcurrentCompositeKeyHashCodeكبديل. تشفّر واجهة برمجة التطبيقات البديلة التجزئة نفسها باستخدام عدد أكبر من البتات، ما يقلّل بشكل كبير من احتمال أن يكون لمجموعتين عشوائيتين غير مرتبطتين في التسلسل الهرمي للتركيب مفتاح التجزئة نفسه. (I4cb6a، b/177562901) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5)
- تمت إضافة إمكانية إجراء فحص lint للرمز
FocusRequesterللتأكّد من تذكّره داخل التركيب (I6bf91) - تمت إضافة إمكانية ضبط عدد اللقطات المفضّل في الثانية أو فئة عدد اللقطات في الثانية التي يجب عرضها على العنصر القابل للإنشاء (Ie5201)
- عرض
MotionEventعلى Android (I17286) - إضافة
getChecked() + setChecked(int)وإيقافisChecked + setChecked(boolean)نهائيًا (Iaac9d) - يقبل المعدِّل
graphicsLayerالآنblendModeوcolorFilter(Iab0e6) - تمت إضافة
LocalResourcescomposition local للاستعلام عن "الموارد". ستتم إعادة إنشاءLocalResources.currentعند تغيُّر الإعدادات، لذا ستعرض طلبات البيانات من واجهات برمجة التطبيقات، مثلstringResource()، قيمًا معدَّلة. (I50c13، b/274786917) - عرض واجهة برمجة تطبيقات تجريبية للعناصر القابلة للإنشاء من أجل التعامل مع أحداث اللمس غير المباشرة (Icff57)
- يحسّن هذا الإصدار عملية إعداد التقارير عن الاستثناءات التي لم تتم معالجتها والتي تم طرحها أثناء مرحلتَي التنسيق والرسم للمحتوى القابل للإنشاء. في السابق، كان حدوث استثناء غير معالج هنا يؤدي إلى تعطُّل أداة تنفيذ الاختبار وإنهاء حزمة الاختبار قبل الأوان. يمكن الآن تسجيل هذه الاستثناءات بشكل أفضل بدون إنهاء مجموعة الاختبارات. (I9928b، b/314128080)
- تم إيقاف واجهة برمجة التطبيقات التجريبية
GlobalAssertionsنهائيًا. وكان الغرض من استخدامه هو إجراء عمليات التحقّق من إمكانية الوصول، لذا ننصحك باستخدامenableAccessibilityChecks()لهذا الغرض بدلاً من ذلك. (I50aa5) - لم يعُد
SemanticsNodeInteraction.performTextInputSelectionتجريبيًا، وأصبح يتيح الآن مَعلمةrelativeToOriginalإضافية تتيح لك تطبيق التحديد على النص الأصلي غير المحوّل أو النص المحوّل. (I3a905، b/261561038، b/277018945) - إضافة واجهة برمجة تطبيقات لإنشاء قوائم نقطية مخصّصة من خلال
AnnotatedString(I1d066، b/383269496، b/139326648) - إيقاف
runWithTimingDisabledنهائيًا واستخدامrunWithMeasurementDisabledبدلاً منه، لأنّه يصف السلوك بشكل أكثر وضوحًا، أي أنّه يتم إيقاف جميع المقاييس مؤقتًا. بالإضافة إلى ذلك، يجب عرض الفئة الرئيسيةMicrobenchmarkScopeلأنّه لا يمكن إعادة تعريف الدالةrunWithMeasurementDisabledلفتح الوصول، لأنّها مضمّنة. (I9e23b، b/389149423، b/149979716) - تم تعديل واجهة برمجة التطبيقات ui-tooling Devices API لتشمل أجهزة أحدث. (Ia2ac1)
- إضافة وضع "الجهاز اللوحي في الوضع العمودي" إلى مجموعة أحجام "شاشة المعاينة" لمساعدة المطوّر على مراعاة النوافذ الأكبر حجمًا (Ia1976)
- إضافة واجهة برمجة تطبيقات لقيمة التتبُّع من أجل وضع علامة على عملية التتبُّع أو تسجيلها مع قيم في نقطة زمنية معيّنة تظهر قيم التتبُّع في Prefetto كمسار جديد يمكن الاطّلاع عليه من خلال المخطط الزمني لعملية التتبُّع. على أجهزة Android، يتم تنفيذها باستخدام
Trace.setCounter. (Idcf48)
إصلاح الأخطاء
- إصلاح عملية إرسال المراقبين الذين تم تذكّرهم في التركيب القابل للإيقاف المؤقت لتجنُّب إرسال المراقبين الذين تم تذكّرهم أو نسيانهم في عملية التطبيق نفسها (I570b2، b/404645679، b/407931790)
- يمكن الآن ضبط
android:dialogThemeللتحكّم في خصائص مربّع الحوار عندما تكون قيمةdecorFitsSystemWindowsهي false (I7922f، b/246909281) - تم إصلاح الخلل الذي كان يؤدي إلى إغلاق أي مربّع حوار عند رصد أي مسجّل حركات خارجه. (Ia78fd)
- تتطلّب عمليات التحقّق من أخطاء Compose الآن الحدّ الأدنى من إصدار "مكوّن Android الإضافي لنظام Gradle" وهو 8.8.2 من سطر الأوامر، والإصدار Ladybug من "استوديو Android" على الأقل للاستفادة من ميزات بيئة التطوير المتكاملة. إذا كنت تستخدم إصدارًا قديمًا من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، يمكنك ضبط
android.experimental.lint.version=8.8.2في ملف gradle.properties لترقية إصدار Lint بدون التأثير في "المكوّن الإضافي لنظام Gradle المتوافق مع Android". (I6f2a8) - تمت إضافة سمة دلالية جديدة
InputTextتسجّل قيمةtextfieldقبل تطبيق عملية تحويل الإخراج. (Iae46a، b/395911609، b/176949051) - تم نقل واجهة برمجة التطبيقات
enableAccessibilityChecks()التي تفعّل "عمليات التحقّق من إمكانية الوصول" على Android إلى حِزم منفصلة تكونcompose:ui:ui-test-accessibilityإذا كنت لا تستخدمTestRuleوcompose:ui:ui-test-junit4-accessibilityعند طلبTestRule(I3c318، b/391560768) - إتاحة تتبُّع تسلسل استدعاء الدوال البرمجية في
LaunchedEffectوrememberCoroutineScope(I705c0، b/354163858)
المساهمة الخارجية
- تغيير الدالة التجريبية
runComposeUiTestلقبول حظر التعليق تمت أيضًا إضافة دالةrunComposeUiTestمتوقّفة نهائيًا لتوافق الرمز الثنائي (I3b88c، b/361577328)
الإصدار 1.8
الإصدار 1.8.3
18 يونيو 2025
تم طرح androidx.compose.ui:ui-*:1.8.3. يتضمّن الإصدار 1.8.3 هذه التعديلات.
إصلاح الأخطاء
- تمت إزالة علامة
isGetFocusedRectReturnEmptyEnabledبعد أن تم التحقّق من الميزة بالكامل. (Ife722) - تضمن العلامة
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledأنّه عندما لا يكون هناك أي عنصر قابل للتركيز فيComposeView، يتم ضبط المستطيل على قيمة فارغة. يمنع ذلك عملية البحث المركّز من اختيار "العرض" الذي سيتم التركيز عليه. ويكون ذلك مهمًا بشكل خاص عندما يكون لدى أداة IME خيار NEXT (التالي) حيث قد تحاول التركيز علىComposeViewوrequestFocus()قد يتعذّر ذلك. (Ibd0e2، b/369256395)
الإصدار 1.8.2
20 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.8.2. يتضمّن الإصدار 1.8.2 هذه التعديلات.
إصلاح الأخطاء
- إصلاح خطأ NPE عند إزالة مربّع الحوار أثناء بث الأحداث النشط في مربّع الحوار (6a7e7f)
- إصلاح مشكلة عدم تعديل
onLayoutRectChangeوفقًا للمخطط الزمني المحدود عند حدوث تعديلات على الرسم فقط (03b82d)
الإصدار 1.8.1
7 مايو 2025
تم طرح androidx.compose.ui:ui-*:1.8.1. يتضمّن الإصدار 1.8.1 هذه التعديلات.
إصلاح الأخطاء
- حلّ بعض المشاكل في
onLayoutRectChangedوLazyLayoutd791b11 - تخطّي طلبات إعادة القياس للعناصر المُعدّة مسبقًا أثّرت هذه المشكلة في أداء التمرير في التنسيقات الكسولة لأنّ الجلب المُسبَق لم يكن يعمل بكفاءة في بعض الحالات، وكان القياس يتم داخل الإطار. 742087a
الإصدار 1.8.0
23 أبريل 2025
تم طرح androidx.compose.ui:ui-*:1.8.0. يتضمّن الإصدار 1.8.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.7.0
- يتضمّن الإصدار 1.8 من Compose ميزة الملء التلقائي الدلالي التي تمت إضافتها حديثًا. تأكَّد من أنّ إصدارات واجهة المستخدم وFoundation التي تستخدمها هي الإصدار 1.8 أو إصدار أحدث، لأنّ الملء التلقائي لمكوّنات النص يتطلّب أحدث إصدارات كلا الوحدتَين. لمزيد من التفاصيل حول استخدام واجهة برمجة التطبيقات والأمثلة، يُرجى الرجوع إلى مستندات ميزة "الملء التلقائي" هنا.
- يتوافق الإصدار 1.8 من Compose مع أنواع إضافية من التجاوب الحسّي:
ConfirmوContextClickوGestureEndوGestureThresholdActivateوRejectوSegmentFrequentTickوSegmentTickوToggleOnوToggleOffوVirtualKey. يمكن الوصول إلى هذه الميزة من خلالLocalHapticFeedback، وتتوفّر تلقائيًا على أجهزة Android عندما تشير Vibrator API إلى أنّ اللمسات متوافقة. - أصبحت واجهات برمجة تطبيقات Focus المتعددة ثابتة الآن، بما في ذلك
Modifier.focusRestorer()وonEnterوonExitFocusProperties(I6e667). يمكنك الآن تحديدFocusDirectionعند الاتصال بالرقمrequestFocus. أضفنا واجهة برمجة تطبيقاتrequestFocus(FocusDirection)إلى كل منfocusRequesterوFocusTargetModifierNodeللسماح بالتركيز في اتجاه معيّن. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
الإصدار 1.8.0-rc03
9 أبريل 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-rc03. يتضمّن الإصدار 1.8.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- يؤدي ذلك إلى إيقاف بعض إصلاحات التوافق مع وضع التركيز التي تسبّبت في حدوث تراجع. (b9d998 وb/369256395 وb/378570682 وb/376142752 وb388590015/ وb/389994198 وb/391378895)
الإصدار 1.8.0-rc02
26 مارس 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-rc02. يتضمّن الإصدار 1.8.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى إعادة إنشاء التركيب عند إزالة العرض المركّز من قائمة lazylist، وذلك عندما تكون طرق العرض المركّزة مضمّنة في بنية Compose الهرمية. (765562)
الإصدار 1.8.0-rc01
12 مارس 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-rc01. يتضمّن الإصدار 1.8.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح تعطُّل يحدث عند إزالة
AndroidViewتم التركيز عليه مع تفعيل لوحة مفاتيح افتراضية. (Ic725a) - إصلاح بعض المشاكل في عملية تنفيذ معالجة حالة التركيز الجديدة (b/395895685)
- تم إصلاح مشكلة تمنع ميزة "الملء التلقائي" عند استخدام
LaunchedEffectلطلب التركيز على حقل نصي. (b/392539099)
الإصدار 1.8.0-beta03
26 فبراير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-beta03. يتضمّن الإصدار 1.8.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل واجهة برمجة التطبيقات
enableAccessibilityChecks()التي تفعّل "عمليات التحقّق من إمكانية الوصول" في Android إلى حِزم منفصلة، وهيcompose:ui:ui-test-accessibilityإذا كنت لا تستخدم TestRule، وcompose:ui:ui-test-junit4-accessibilityعند استدعاءTestRule(I547ef، b/391560768) - تمت إضافة سمة دلالية جديدة
InputTextتسجّل قيمة حقل نصي قبل تطبيق عملية تحويل الإخراج. (Iae46a)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبب في حفظ خدمات الملء التلقائي للنص المحوّل بدلاً من النص الأصلي. (Iae46a، b/395911609، b/176949051)
الإصدار 1.8.0-beta02
12 فبراير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-beta02. يتضمّن الإصدار 1.8.0-beta02 هذه التعديلات.
الميزات الجديدة
- تمت إضافة عملية فحص باستخدام أداة Lint للتحذير من إجراء طلبات إلى
Configuration#screenWidth/heightDp، ويمكن استخدامLocalWindowInfo.current.containerSizeبدلاً من ذلك لاسترداد حجم النافذة الحالية.
الإصدار 1.8.0-beta01
29 يناير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-beta01. يتضمّن الإصدار 1.8.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة "متوقّف نهائيًا" على السمتَين
ContextualFlowRowوContextualFlowColumn. تم طرح هذا المكوّن التجريبي في الإصدار 1.7 ولم يتم تثبيته بعد، وتم اعتبار عملية التنفيذ غير مرغوب فيها. في المستقبل، قد يتم توفير مكوّن يحلّ حالات الاستخدام التي كان من المفترض أن يحلّها هذا المكوّن.- تحتوي
FlowRowوFlowColumnعلى عمليات تحميل تجريبية تم تقديمها في الإصدار 1.7 وتتضمّن المَعلمةoverflow. تم إيقاف استخدام هذه المَعلمة نهائيًا، ويمكن استخدام عمليات التحميل الزائد بدون هذه المَعلمة بدلاً منها. سيكون السلوك التلقائي "للتجاوز" في هذه الحالات هو "القص"، كما كان منذ طرحه. - يمكن تحقيق العديد من حالات استخدام
ContextualFlowRowباستخدام FlowRow، ولكننا ندرك أنّ هذا ليس صحيحًا بشكل عام. يمكن تنفيذContextualFlowRowبالكامل في مساحة المستخدم، ويمكن محاولة نسخ عملية التنفيذ وتعديلها إذا لزم الأمر. نأمل في المستقبل أن نجد طريقة مختلفة لحلّ حالات الاستخدام هذه. (Ibafec)
- تحتوي
- تمّت إزالة
SemanticsNodeInteraction.semanticsId(). يمكنك استخدامSemanticsNodeInteraction.fetchSemanticsNode().idكبديل. (Ie397a) - تم إيقاف واجهات برمجة التطبيقات القديمة الخاصة بميزة "الملء التلقائي" نهائيًا. يمكنك استخدام واجهة برمجة التطبيقات الجديدة المستندة إلى الدلالات بدلاً من ذلك. (I943ff)
- إعادة كتابة واجهة برمجة التطبيقات
requestAutofillلتكون خارج مدير الملء التلقائي (Id1929)
إصلاح الأخطاء
- تم إصلاح مشكلة التركيز التي كانت تؤدي إلى تخطّي
ComposeViewعند استخدامrequestFocus()مع المَعلمةpreviouslyFocusedRectغير المنطقية (المتعلّقة باتجاه التركيز). (Ifdc2f، b/388590015) - تم إصلاح خطأ NPE الذي كان يظهر أحيانًا عند استخدام
GraphicsLayer.record { this@ContentDrawScope.drawContent() }. إذا كنت تسجّلdrawContent()بهذه الطريقة، احرص على استخدام دالة الإضافةGraphicsLayer#recordداخلDrawScope، وليس دالة العنصر فيGraphicsLayer. (I75fc0، b/389046242) - تم إصلاح مشكلة تخطيط النص التي تؤدي أحيانًا إلى ترجمة علامة الحذف الإيجازي بشكل غير صحيح أثناء الرسوم المتحركة. يمكنك الاطّلاع على b/389707025 لمزيد من المعلومات (Ie55b1، b/389707025)
الإصدار 1.8.0-alpha08
15 يناير 2025
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha08. يتضمّن الإصدار 1.8.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- جعل
AutofillManagerفئة مجرّدة (I0a3b0) - تم إصلاح العديد من المشاكل المتعلّقة بالتركيز، بما في ذلك حالات التعطّل عند محاولة أداة IME التركيز على
ComposeViewبدون عناصر يمكن التركيز عليها، وتغيير التركيز داخل العنصر الفرعيAndroidViews، وطلب التركيز الذي يتركAndroidView. (Ia03c3، b/369256395، b/378570682، b/376142752) - تغيير
FocusEnterExitScope.cancelFocus()إلىcancelFocusChange()(I89959) - يمكنك الآن حساب عمليات الإخفاء القابلة للتركيب باستخدام
RectInfo.calculateOcclusions(). - تمت إضافة دالة إضافة إلى
DelegatableNodeلتسجيل أداة معالجة لتغييرات التنسيق العام. (I68b59)
إصلاح الأخطاء
- يستخدم النشاط الذي يتم استخدامه كمضيف للدالة المركّبة قيد الاختبار عند استخدام
ComposeContentTestRule.setContentالآن المظهرTheme.Material.Light.NoActionBar، وذلك لتجنُّب تداخلActionBarمع محتوى الاختبار عند استهداف الإصدار 35 من حزمة تطوير البرامج (SDK). لإيقاف هذا السلوك، يمكنك إزالة الاعتمادية فيui-test-manifestوإضافة إدخال نشاط في ملف AndroidManifest.xml الخاص بتطبيق الاختبار لـComponentActivityباستخدام المظهر الذي تختاره. (I7ae1b، b/383368165) - ستتجنّب خطوط الموارد التي تتضمّن إعدادات الصيغة نفسها الآن التخزين المؤقت الزائد الذي يؤدي إلى تطبيق إعدادات الصيغة غير الصحيحة. (If3dff، b/372044241)
- تتيح
AnnotatedString.fromHtmlالآن استخدام علامات<ul>/<li>. (I7c2fe، b/299662276، b/139326648)
المساهمة الخارجية
- تمت إضافة واجهة Clipboard جديدة وعنصر CompositionLocal لها. (I80809)
الإصدار 1.8.0-alpha07
11 ديسمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha07. يتضمّن الإصدار 1.8.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم عرض المالك من
LayoutNodeللأدوات. (I26f7f) - يجب أن تستخدم السمة
LocalAutofillHighlightColorcomposition المحلية نوع Color. (I0e05b) - احتفظ بالرمز
UrlAnnotationالمتوقّف نهائيًا وطرق استخدامه مصنّفة على أنّها تجريبية. (Ic0021)
إصلاح الأخطاء
- تم إصلاح عُطل
IndexOutOfBoundsExceptionعند استخدامLinkAnnotationداخل العنصر المركّبBasicTextأو Text (be7605، b/374115892) - تم إصلاح المشكلة المتمثّلة في عدم قص خط المؤشر في حقول النص المملوءة ذات الشكل المخصّص. (I4f87f، b/380704151)
- تم إصلاح مشكلة عدم ظهور الخلفيات في لقطات الشاشة الطويلة. (I4d57a)
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن إمكانية القيم الفارغة في JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (Idfef8، b/326456246) - تعديل توافق Compose مع الألوان ذات النطاق الواسع والألوان بتقنية HDR عند التشغيل على الإصدار Android Q والإصدارات الأحدث (Icd8be، b/379135036)
- سيتم الآن الرجوع تلقائيًا إلى الخط التلقائي عند تعذُّر تحميل خطوط الموارد، بدلاً من السلوك السابق الذي كان يتمثل في طرح استثناء في القياس. (Ib6a49)
- تم إصلاح مشكلة فقدان التركيز عند فصل
AndroidViewوإعادة ربطه. (I53446) - قبول
requestFocus()من إجراء تخطيط خارج الحدود (Ia8461)
المساهمة الخارجية
- أضِف
BringIntoViewResponderModifierNodeإلى واجهة المستخدم، ما يوفّر طريقة جديدة لتنفيذ وظيفة "إظهار العنصر في إطار العرض"، كما يتيح تنفيذها على مستوى النظام الأساسي. (Ia6dd8)
الإصدار 1.8.0-alpha06
13 نوفمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha06. يتضمّن الإصدار 1.8.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة معدِّل
stylusHoverIcon. (Iff20a، b/331289114) - تغيير "مدير الملء التلقائي" ليكون واجهة (I84914، b/376080755)
- يضيف
requestFocus(FocusDirection)إلى كل منfocusRequesterوFocusTargetModifierNodeللسماح بالتركيز في اتجاه معيّن. (I5d9ec، b/245755256) - تم استبدال
FocusProperties.enterوFocusProperties.exitبـonEnterوonExit، وذلك باستخدام نطاق جهاز استقبال بدلاً من المَعلمةFocusDirection. (I6e667) - إضافة ميزة "الملء التلقائي" في شريط أدوات النص (Ie6a4c)
- تغييرات واجهة برمجة التطبيقات على
Modifier.focusRestorer()(I99c03):- تم تغيير اسم المَعلمة إلى "fallback"
- المَعلمة هي الآن
FocusRequesterوليست دالة lambda - أصبحت المَعلمة غير فارغة مع ضبط القيمة التلقائية على "تلقائي"
- إزالة التعليق التوضيحي
@Experimentalمن واجهة أداة إدارة الملء التلقائي لا تزال الميزة قيد التطوير لاستهداف هذا الإصدار، ولكننا لا نريد طرح واجهة برمجة التطبيقات التجريبية (Id8398). - توفّر السمة
LocalHapticFeedbackالآن عملية تنفيذ تلقائيةHapticFeedbackعندما تشير واجهة برمجة التطبيقات Vibrator API إلى إمكانية استخدام ردود الفعل اللمسية. تمت إضافة ما يلي إلىHapticFeedbackType-ConfirmوContextClickوGestureEndوGestureThresholdActivateوRejectوSegmentFrequentTickوSegmentTickوToggleOnوToggleOffوVirtualKey. تنفّذ الآن مكوّنات Wear Compose التي يمكن النقر عليها مطوّلاً، مثلButtonوIconButtonوTextButtonوCard، عمليةLONG_PRESSباللمس عند توفير معالج للنقر المطوَّل. (I5083d) - تتم إزالة
OverscrollConfigurationوLocalOverscrollConfiguration، وإضافةrememberPlatformOverscrollFactoryلإنشاء مثيل من عملية التنفيذ التلقائية لتجاوز حد التمرير أو تخصيص مَعلماتها. لإيقاف تجاوز حد التمرير، استخدِمLocalOverscrollFactory provides nullبدلاً منLocalOverscrollConfiguration provides null. لتغيير لون التوهّج أو المساحة المتروكة، استخدِمLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)بدلاً منLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9 وb/255554340 وb/234451516) - تمت إزالة واجهة برمجة التطبيقات التجريبية
GlobalAssertions. كان الغرض من استخدامه هو إجراء عمليات التحقّق من إمكانية الوصول، لذا يمكنك استخدامenableAccessibilityChecks()لهذا الغرض بدلاً من ذلك. (I59322)
الإصدار 1.8.0-alpha05
30 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha05. يتضمّن الإصدار 1.8.0-alpha05 هذه التعديلات.
الميزات الجديدة
تتوفّر ميزة "الملء التلقائي" في هذا الإصدار خلف علامة ميزة. نحن نعمل على تحسين الأداء، ونسعى إلى تلقّي ملاحظات مبكرة بشأن واجهات برمجة التطبيقات. من المتوقّع أن تتطوّر واجهات برمجة التطبيقات قبل أن تصبح مستقرة استنادًا إلى الملاحظات.
- لتفعيل ميزة "الملء التلقائي"، اضبط قيمة
ComposeUiFlags.isSemanticAutofillEnabledعلى true فيonCreateواستخدِم أحدث إصدار من Compose Snapshot. - يتيح هذا الإصدار من ميزة "الملء التلقائي" حفظ بيانات الاعتماد يدويًا ومن خلال ميزة "اقتراح كلمة مرور قوية" ومن خلال التنقّل. تتيح هذه الميزة أيضًا التعبئة عندما يركّز المستخدم على حقل يمكن تعبئته تلقائيًا أو عندما يتم تفعيل ميزة "التعبئة التلقائية" من خلال شريط أدوات النص في مكوّنات النص. سيتم تمييز المكوّن للإشارة إلى اكتمال عملية الملء التلقائي.
تغييرات واجهة برمجة التطبيقات
- تعديل واجهة "الملء التلقائي" لتتّبع بنية
expect/actual(I22dce) - إضافة
CompositionLocalالتي يمكن استخدامها لتعديل درجة لون التمييز الذي يظهر عند نجاح عملية الملء التلقائي (I32092) - تمت إضافة واجهة برمجة التطبيقات
Modifier.onRectChanged، وهي واجهة برمجة تطبيقات تتيح للمستخدم الاشتراك في الموضع والحجم النسبيين للجذر/النافذة/الشاشة فيLayoutNode. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المعدِّلonGloballyPositionedالحالي، ولكنها تفعل ذلك مع تقليل النفقات العامة بشكل كبير، وتتضمّن واجهة برمجة التطبيقات تسهيلات لإزالة التكرار وتقييد عدد مرات معاودة الاتصال وفقًا لما تتطلبه حالة الاستخدام. (Id28c7 وb/372765423 وb/372757007 وb/372994338) - توسيع نطاق "مدير الملء التلقائي" ليشمل واجهتَي برمجة التطبيقات
commit()وcancel()اللتين تساعدان المستخدمين في حفظ بيانات الاعتماد التي تم إدخالها حديثًا (I2da00) - تتضمّن هذه السمة واجهة
AutofillManagerجديدة يمكن استخدامها لتحسين رحلة المستخدمين في ميزة "الملء التلقائي"، بالإضافة إلى العلامةisSemanticAutofillEnabledلتفعيل هذا الإصدار الجديد من ميزة "الملء التلقائي". (I9d484) - تمت إضافة واجهة برمجة التطبيقات
Modifier.onRectChanged، وهي واجهة برمجة تطبيقات تتيح للمستخدم الاشتراك في الموضع والحجم النسبيين للجذر/النافذة/الشاشة الخاصين بـLayoutNode. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المعدِّلonGloballyPositionedالحالي، ولكنها تفعل ذلك مع تقليل النفقات العامة بشكل كبير، وتتضمّن واجهة برمجة التطبيقات تسهيلات لإزالة التكرار وتقييد عدد مرات معاودة الاتصال وفقًا لما تتطلبه حالة الاستخدام. (I3c8fa) - أضِف السمات الدلالية وأنواع البيانات لتوفير دعم موسّع لميزة "الملء التلقائي". (I52c7d)
- أصبحت جميع الطرق في أداة إنشاء
AnnotatedStringغير تجريبية الآن (Ia89c8، b/261561823)
إصلاح الأخطاء
- يمكن الآن أن تتلقّى طرق العرض المضمّنة في الإنشاء أحداثًا متعلقة بأداة التدوير إذا كانت في المقدّمة (I4d53a، b/320510084).
- تم إصلاح مشكلة عدم تعديل أنواع الموارد المختلفة عند إجراء تغييرات في الإعدادات (Ia9b99، b/352336694)
- تم حلّ مشكلة كانت تمنع
TextFieldمن العمل بشكل صحيح عند استخدام لوحة المفاتيح اليابانية POBox على بعض أجهزة Sony القديمة. (Ia9b99، b/373743376) - تم إصلاح مشكلة ظهور مربّعات الحوار في أسفل الشاشة بدلاً من توسيطها (Ia2ec، b/373093006)
- لم يعُد استهداف المستوى 35 أو أعلى لواجهة برمجة التطبيقات يفرض ضبط قيمة
decorFitsSystemWindowsعلى "خطأ" في مربّعات الحوار. (Ibc94، b/364492593) - تم إصلاح عُطل يحدث عند نقل الطبقات بين النوافذ (مثل مربّع الحوار والمحتوى الرئيسي) (I675ba، b/330955281)
الإصدار 1.8.0-alpha04
16 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha04. يتضمّن الإصدار 1.8.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة عمليات ردّ الاتصال
DelegatableNode#onDensityChangeوDelegatableNode#onLayoutDirectionChangeللسماح بتعديل حالة العقدة عند تغيُّرها (I04f3e، b/340662451) - تضيف هذه السمة
WindowInfo#containerSizeلتوفير حجم حاوية المحتوى في النافذة الحالية. يمكن استردادها باستخدامLocalWindowInfo. (Idc38c، b/369334429، b/360343819) - إصلاح المشكلة المتعلّقة بعناصر قابلة للتمرير متداخلة تتم إزالتها من شجرة العُقد أثناء عملية تمرير الإصبع ثم رفعه بسرعة مستمرة. ستلغي هذه العُقد الآن عملية التحريك السريع وسترسل حدث
onPostFlingبشكل صحيح مع السرعة المتبقية. نقدّم أيضًا العلامةNewNestedScrollFlingDispatchingEnabledللتحكّم في السلوك في حال حدوث تراجعات. ستتم إزالة العلامة قبل الإصدار التجريبي. (I05c37، b/371168883) - تم تقديم
PointerInputModifierNode#touchBoundsExpansion، والذي يمكن استخدامه لتكبير حدود اللمس لمعدِّل إدخال مؤشر واحد. (Iccf02، b/335339283) - تضيف هذه السمة
WindowInfo#containerSizeلتوفير حجم حاوية المحتوى في النافذة الحالية. يمكن استردادها باستخدامLocalWindowInfo. (I27767، b/369334429، b/360343819) - أزِل
readOnlyمنTextFields' لتثبيت الإصدار الأساسي الثابت. (I3aaba) - تتلقّى السمتان
ParagraphوParagraphIntrinsicsالآن قائمة بجميع التعليقات التوضيحية المطبّقة علىAnnotatedString، بينما كانت تتلقّى في السابق قائمة بـSpanStylesفقط (I12f80)
إصلاح الأخطاء
- تم تعديل طريقة التعامل مع الفقرات في
AnnotatedString. في السابق، كان بإمكانك إنشاء فقرات غير متداخلة فقط. أصبح بإمكانAnnotatedStringالآن السماح بفقرات متداخلة بالكامل سيتم دمجها معًا، وفقرات متداخلة سيتم تقسيم الفقرة الخارجية على حدود الفقرة الداخلية، وسيتم دمج نمط الفقرة الداخلية مع نمط الفقرة الخارجية (Ic9554) - إصلاح عُطل في
AnnotatedStringمعLinkAnnotationبطول صفر (89aac6)
الإصدار 1.8.0-alpha03
2 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha03. يتضمّن الإصدار 1.8.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تحديث إصدار Kotlin إلى 1.9 (I1a14c)
- تم تقديم دور دلالي جديد باسم "لوحة عرض دوّارة" لمحاكاة سلوك القائمة في أدوات "التنقل بين الصفحات" لخدمات تسهيل الاستخدام. (Id354b، b/354109776، b/239672673)
- تمّت إعادة تسمية
invisibleToUser()إلىhideFromAccessibility. وستبقى وظيفتها كما هي. يمكنك الاطّلاع على المستندات لمزيد من التفاصيل. (Ib43a3)
إصلاح الأخطاء
- تعديل المستندات الخاصة بأداة التعديل
SensitiveContent(Ib0442) - تم إصلاح المشكلة المتمثّلة في تجاهل بعض مقاطع المخطط التفصيلي العامة عند استخدامها مع ظلال الارتفاع في بعض إصدارات Android
- تم إصلاح المشكلة التي كانت تؤدي إلى تطبيق مقاطع فارغة عند تحديد مقاطع عامة ذات مخطط تفصيلي على إصدارات معيّنة من Android.
- تم إصلاح الخطأ الذي يحدث عند تفعيل "محرّك طرق الإدخال" (IME) على "عرض" خارجي واستخدام الإجراء "التالي" لتفعيل التركيز على
ComposeView. يتوافق سلوكclearFocus()مع سلوك العرض على الإصدارات الأقدم من 28 من واجهة برمجة التطبيقات، حيث يمكن أن يؤديclearFocus()إلى التركيز على العرض التلقائي. - تم إصلاح مشكلة ظهور موضع الإعلان في عقد منفصلة في
LazyListمن خلال فصل إدارة التركيب الفرعي عن عمليات التنسيق المختلفة. - تم إصلاح مشكلة كانت تتسبب في وميض لوحة المفاتيح على الشاشة عند التبديل من
TextFieldإلىEditTextأو أي محرر آخر مستند إلى طريقة العرض. - سترسل الآن عقد Nested Scroll أحداث
onPostFlingبشكل صحيح بعد فصلها. - تحسينات عامة على الأداء
الإصدار 1.8.0-alpha02
18 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha02. يتضمّن الإصدار 1.8.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتوفّر الآن الرمز
TextOverflow.StartEllipsisوالرمزTextOverflow.MiddleEllipsisاللذان يتيحان وضع علامة الحذف في بداية سطر النص الفردي أو وسطه. (I38913، b/185418980)
إصلاح الأخطاء
- إصلاح مربع الحوار
dismissOnClickoutside(39a3d، b/364508685) - عدم قصّ ظلال محتوى الحوار (e8e2f، b/363027803)
- إصلاح السلوك الخاطئ عند انتقال البحث المركّز بين Compose وView (58377، b/350534714)
المساهمة الخارجية
- يقبل
AlignmentLinesMapالآن النوعَين المحددينVerticalAlignmentLineأوHorizontalAlignmentLine. (I02912) - طريقة
ByteArray.decodeToImageBitmap(): ImageBitmapشائعة جديدة (I83c21)
الإصدار 1.8.0-alpha01
4 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha01. يتضمّن الإصدار 1.8.0-alpha01 هذه التعديلات.
الإصدار 1.7
الإصدار 1.7.8
12 فبراير 2025
تم طرح androidx.compose.ui:ui-*:1.7.8. يتضمّن الإصدار 1.7.8 هذه التعديلات.
الإصدار 1.7.7
29 يناير 2025
تم طرح androidx.compose.ui:ui-*:1.7.7. يتضمّن الإصدار 1.7.7 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ
IndexOutOfBoundsExceptionعند تمريرAnnotatedStringمعLinkAnnotationإلى العنصر القابل للإنشاء Text. (Ic96d2) - تم إصلاح مشكلة انتهاء المهلة في الاختبارات في بعض الحالات النادرة عند استخدام
LinkAnnotationفيAnnotatedString. (I04a03)
الإصدار 1.7.6
11 ديسمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.6. يتضمّن الإصدار 1.7.6 هذه التعديلات.
إصلاح الأخطاء
- في السابق، كنّا نطرح خطأً كلّما صادفنا حدثًا رئيسيًا عندما كان نظام التركيز يتضمّن عمليات إبطال معلّقة. نحن الآن نسجّل خطأً بدلاً من ذلك (I7ea0، b/346370327).
- تمت إزالة التعليق التوضيحي التجريبي من
SemanticsPropertyReceiver.invisibleToUser(). سيتم إيقاف هذا الحقل نهائيًا في الإصدار 1.8 واستبداله بالحقلSemanticsPropertyReceiver.hideFromAccessibility(). (I448f0، b/376479686) - تم إصلاح مشكلة كانت تمنع
TextFieldمن العمل بشكل صحيح عند استخدام لوحة مفاتيح POBox اليابانية على بعض أجهزة Sony القديمة. (I94e0e، b/373743376) - تم إصلاح مشكلة متعلّقة بإمكانية الوصول حيث لم يعلن
TalkBackعن inlineContent الخاص بـBasicText. (I67bcb، b/376479686)
الإصدار 1.7.5
30 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.5. يتضمّن الإصدار 1.7.5 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح المشاكل التي تمنع عرض الارتفاع والقص بشكلٍ صحيح باستخدام المخططات التفصيلية المخصّصة.
- تم إصلاح مشكلة تعطُّل النص التي تحدث مع
LinkAnnotationبعرض صفر. (Ic1e2e) - يتم إصلاح إشعار في
Talkbackالزر عند إنشائه كعنصر Text قابل للنقر. (I1f588)
الإصدار 1.7.4
16 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.4. يتضمّن الإصدار 1.7.4 هذه التعديلات.
الإصدار 1.7.3
2 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.3. يتضمّن الإصدار 1.7.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تؤدي إلى ظهور حدود مقطع فارغة عند تحديد مقطع عام على بعض إصدارات Android.
- تم إصلاح الخطأ الذي يحدث عند تفعيل "محرّك طرق الإدخال" (IME) على "عرض" خارجي واستخدام الإجراء "التالي" لتفعيل التركيز على
ComposeView. يتوافق سلوكclearFocus()مع سلوك العرض على الإصدارات الأقدم من 28 من واجهة برمجة التطبيقات، حيث يمكن أن يؤديclearFocus()إلى التركيز على العرض التلقائي. - تم إصلاح مشكلة استخدام
placeOrderغير صحيح لإبطال صحة البحث المسبق، وبالتالي تم إصلاح حالة حدودية تم فيها تخطّي موضع البحث المسبق.
الإصدار 1.7.2
18 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.2. يتضمّن الإصدار 1.7.2 هذه التعديلات.
إصلاح الأخطاء
- تحسين أداء معلومات عقدة تسهيل الاستخدام وأحداث الدلالات من خلال إزالة التتبُّع المطوّل (I89156، b/362530618)
- لن يتعطّل
ComposeViewبعد الآن عند تمرير حجم قياس كبير بشكل استثنائي (da5db، b/347036173) - تم إصلاح مشكلة في إمكانية الوصول إلى برامج قراءة الشاشة حيث لم يتم إصدار إشعارات
LiveRegionعلى الأزرار. (f66fa7، b/348590026)
الإصدار 1.7.1
10 سبتمبر 2024
- لم يتم إجراء أي تغييرات على عناصر Android. تمت إزالة
-desktopعنصر وإضافة العنصرين-jvmStubsو-linuxx64Stubs. لا يُفترض استخدام أي من هذه الأهداف، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose.
الإصدار 1.7.0
4 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.0.
التغييرات المهمة منذ الإصدار 1.6.0
يمكنك الاطّلاع على التغييرات المهمة في الإصدار 1.7.0 في مشاركة المدونة هذه.
الإصدار 1.7.0-rc01
21 أغسطس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-rc01. يتضمّن الإصدار 1.7.0-rc01 هذه التعديلات.
التغييرات البارزة
- يفرض الآن الوحدة ui:ui شرط توفّر الإصدار 1.7.0-rc01 أو إصدار أحدث من foundation:foundation كحدّ أدنى. يتم فرض ذلك لمعالجة عدم توافق السلوك بين واجهة المستخدم والطبقة الأساسية في ما يتعلق بتغييرات
NestedScrollSourceالتي حدثت في وقت مبكر أثناء الإصدار 1.7.0-alpha01.
الإصدار 1.7.0-beta07
7 أغسطس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta07. يتضمّن الإصدار 1.7.0-beta07 هذه التعديلات.
إصلاح الأخطاء
- ستعرض الآن دوال إدخال النص ذات الصلة
SemanticsNodeInteractionperformTextReplacementوperformTextInputوperformTextClearanceأخطاء تأكيد عند طلبها فيTextFieldsللقراءة فقط. (I4ae8f)
الإصدار 1.7.0-beta06
24 يوليو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta06. يتضمّن الإصدار 1.7.0-beta06 هذه التعديلات.
الإصدار 1.7.0-beta05
10 يوليو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta05. يتضمّن الإصدار 1.7.0-beta05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخلل الذي كان يؤدي إلى عدم قبول
TextFieldللإدخال من لوحة المفاتيح الافتراضية الجديدة إلى أن يتم فقدان التركيز واستعادته عند تغيير لوحة المفاتيح الافتراضية. - تم إصلاح مشكلة كانت تؤدي فيها محاولات الاحتفاظ بمحتوى الطبقة إلى حدوث آثار جانبية غير مقصودة عند العرض باستخدام محتوى
SurfaceView.
الإصدار 1.7.0-beta04
26 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta04. يتضمّن الإصدار 1.7.0-beta04 هذه التعديلات.
إصلاح الأخطاء
- تجنُّب الأعطال عند قياس أسطر نصية كبيرة جدًا (مثل 10 آلاف حرف) (8157ab)
- أوقِف إمكانية عرض البرامج لواجهة برمجة التطبيقات
GraphicsLayer. (35ddd8) - تم إصلاح عُطل في منطق استمرار الطبقة. (70b13e)
- تم التراجع عن تحسين إعادة استخدام عناصر الطبقة، لأنّه تسبّب في مشاكل في العرض. (70b13e)
الإصدار 1.7.0-beta03
12 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta03. يتضمّن الإصدار 1.7.0-beta03 هذه التعديلات.
الإصدار 1.7.0-beta02
29 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta02. يتضمّن الإصدار 1.7.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
SemanticsProperties.EditableإلىIsEditableوتغييرSemanticsPropertyReceiver.editableإلى القيمةisEditable. أصبحت السمة الآن قيمة منطقية ويتم تحديدها دائمًا من خلال حقول النص. (I8acd8) - إعادة تسمية مَعلمة قياس أداء تسهيل الاستخدام (I3d440)
- تم تعديل واجهة برمجة التطبيقات لتصميم الروابط: أصبح
TextLinkStylesالآن جزءًا من الدالة الإنشائيةLinkAnnotationوالطريقةAnnotatedString.fromHtml(I90b2b). تمت أيضًا إزالةTextDefaultsمن المادة (I5477b)
إصلاح الأخطاء
- تمت إعادة تسمية
LayoutCoordinates.introducesFrameOfReferenceإلىLayoutCoordinates.introducesMotionFrameOfReferenceلتعكس الغرض منها بشكل أفضل. تمت إعادة تسمية الدالة ذات الصلة لحساب الإحداثيات استنادًا إلى هذا العلامة. (I3a330)
الإصدار 1.7.0-beta01
14 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta01. يتضمّن الإصدار 1.7.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية "
performCustomAccessibilityActionLabelled" إلى "performCustomAccessibilityActionWithLabel" و"performCustomAccessibilityActionWhere" إلى "performCustomAccessibilityActionWithLabelMatching". (I5387f) - "
AnnotatedString.hasEqualsAnnotations" أصبح الآن "hasEqualAnnotations" (I685c0) - تم تعديل واجهة برمجة التطبيقات للحصول على روابط ذات تصميم Material في النص. على وجه التحديد، تمت إزالة الطرق من
TextDefaultsلإنشاءLinkAnnotationsذات سمات وتحليل HTML باستخدام روابط ذات سمات. بدلاً من ذلك، تمت إضافة فئةTextLinkStylesتتيح تنسيق الروابط كمَعلمة إلى العنصر Text القابل للإنشاء. (I31b93)
إصلاح الأخطاء
- إصلاح حالات استخدام إضافية عند إضافة معدِّلات إدخال المؤشر ديناميكيًا أثناء الأحداث 63e1504
الإصدار 1.7.0-alpha08
1 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha08. يتضمّن الإصدار 1.7.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة إمكانية استخدام عمليات تنفيذ الأشكال القابلة للتغيير. يمكن الآن ملاحظة
Shape#createOutlineداخل طبقات الرسومات، لذا ستؤدي قراءة قيم الحالة داخلها إلى إبطالها عند تغيُّر الحالة، ما يتيح إنشاء رسوم متحركة أكثر فعالية للأشكال. (Id1629، b/326070216) - تمت إعادة تسمية "
isPositionedByParentWithDirectManipulation" إلى "introducesFrameOfReference". يُرجى العِلم أنّ هذا الإعداد أصبح له تأثير معاكس، ما يعني أنّه بشكلٍ تلقائي، تقدّم معظمLayoutCoordinatesإطارًا مرجعيًا، ولن تكون السمة خطأ إلا عند وضعها تحت التلاعب المباشر. للاستعلام عن الموضع باستخدام العناصر التي تقدّم إطارًا مرجعيًا فقط، استخدِمpositionInLocalFrameOfReference(...). أوpositionInLocalLookaheadFrameOfReferenceمنLookaheadScope(Ifc5f7) LookaheadScopeتم توفير واجهات برمجة التطبيقات بشكل ثابت (I21507)- تغيير دالة lambda للإجراء
getScrollViewportLengthوفقًا لملاحظات مجلس API. (Ibc74a) - تم تعديل واجهات برمجة التطبيقات الخاصة بمخطط
GraphicsLayerلاستخدام مَعلمات ذات قيمة عشرية بدلاً من مَعلمات ذات قيمة عدد صحيح. تمت إزالة قيمUnsetOffset/UnsetSize IntSizeالخاصة بالقيم الحدّية لصالح الثوابت غير المحدّدة المتوفّرة حاليًا في الفئات المضمّنة الخاصة بالإزاحة والحجم المستندة إلى القيم العشرية (I2fb03 وb/333863462). - عند إدخال بيانات الماوس أثناء الاختبارات، تقبل الآن
MouseInjectionScope.click()وMouseInjectionScope.doubleClick()وMouseInjectionScope.tripleClick()وMouseInjectionScope.longClick()المَعلمةbutton: MouseButtonلجعلها قابلة للتطبيق على نطاق أوسع. القيمة التلقائية هيMouseButton.Primaryلجميع الطرق. (I31a23، b/190493367، b/261439695) - تمت إعادة تسمية
onClickedإلىonClickداخلLinkInteractionListener. (Iaa35c) - تمّت إعادة تسمية
TextInclusionStrategy.isInsideإلىisIncluded. اجعل نوع القيمة التي تم إرجاعها فيParagraph/MultiParagraph#getRangeForRect()غير قابل لأن يكون فارغًا. (I51f26)
إصلاح الأخطاء
- تم إصلاح مشكلة التقاط لقطة شاشة طويلة للحاويات التي يمكن التمرير فيها باستخدام
reverseScrolling=true. (I7c59c)
المساهمة الخارجية
- تمت إضافة إمكانية جلب البيانات مسبقًا للعناصر في
LazyListsالمتداخلة (مثلLazyColumnيعرضLazyRowsمتداخلة). من المتوقّع أن يقلّل هذا التغيير من انخفاض عدد اللقطات في الثانية أثناء التمرير فيLazyListsهذه. الإعداد التلقائي للتنفيذ هو الجلب المسبق لأول عنصرَين متداخلَين، ولكن يمكن التحكّم في هذا السلوك من خلال واجهتَي برمجة التطبيقات الجديدتَينLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)وLazyListPrefetchStrategy#onNestedPrefetch. (I51952)
الإصدار 1.7.0-alpha07
17 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha07. يتضمّن الإصدار 1.7.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة "متوقّف نهائيًا" على
ClickableText. لإضافة روابط إلى النص، أنشئAnnotatedStringمعLinkAnnotationيتوافق مع الرابط، ثم مرِّرAnnotatedStringإلى العنصر القابل للإنشاء Text. (I34d4b، b/323346994) - إضافة
ViewConfiguration.HandwritingGestureLineMarginلإيماءات الكتابة بخط اليد إتاحة إيماءةJoinOrSplitلتنفيذBasicTextField(Ie6e13، b/325660505) - لم يعُد
FocusProperties.enterوFocusProperties.exitميزتَين تجريبيتَين. لم يعُدFocusDirection.EnterوFocusDirection.Exitميزتَين تجريبيتَين. لم يعُدFocusRequester.Cancelتجريبيًا (I461a1، b/261564106) - عند طلب إحداثيات Layout، يمكنك الآن استخدام الوسيطة
excludeDirectManipulationOffsetلاستبعاد الإزاحة التي تم ضبطها بواسطة Layouts الرئيسية التي وضعت العناصر التابعة لها باستخدامPlaceable.PlacementScope.withDirectManipulationPlacement. وبالمثل، قد يضع الآن Layout العناصر التابعة له التي تغيّر موضعها بشكل متكرر باستخدامwithDirectManipulationPlacement(مثل Scroll، الذي يتم تنفيذه تلقائيًا). يساعد ذلك في جعل الصور المتحركة المستندة إلىapproachLayoutأكثر سهولة في الاستخدام، إذ يمكن الآن التمييز بين الإزاحة التي سيتم تحريكها والإزاحة التي سيتم تطبيقها مباشرةً عند اتّخاذ قرار بتحريك طريقة العرض. (I60ec7) - تمت إزالة علامة الميزة الخاصة بلقطات الشاشة الطويلة. (I28648، b/329128246)
- ستعرض
LazyColumnالآن العناوين الثابتة بشكل صحيح في لقطات الشاشة الطويلة. (I8d239، b/329296635) NestedScrollيتم استبدال مصادر السحب والإفلات (Drag and Fling) بمصدرَيUserInputوSideEffectلاستيعاب التعريف الموسّع لهذه المصادر الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput). (I40579)- أصبحت الرموز
ApproachLayoutModifierNodeوModifier.approachLayoutثابتة الآن، وتمت إضافة الرمزين الجديدينisMeasurementApproachInProgress()وisPlacementApproachInProgress()ليحلا محل الرمزين القديمينisMeasurementApproachComplete()وisPlacementApproachComplete()على التوالي. - تمت إزالة المبدّل
intermediateLayoutالمتوقّف نهائيًا. (I3e91c) - أعِد تسمية
GraphicsLayer#buildLayerإلى record لتعكس طريقتَي begin/endRecording في واجهات برمجة التطبيقات المستندة إلى Displaylist، مثلRenderNodeوPicture. - تم تعديل
rememberGraphicsLayerللاستفادة منrememberObserver. (I312c1، b/288494724، b/330758155) - تم إيقاف
UrlAnnotationنهائيًا، لذا يُرجى استخدامLinkAnnotation.Urlبدلاً منها. إذا كنت تستخدم "تحديد نسق المواد"، استخدِم العنصرTextDefaultsلإنشاء التعليق التوضيحي مع تطبيق "تحديد نسق المواد" عليه (I8d180، b/323346545). - تمت إضافة خيار تنسيق حالة الضغط إلى الروابط النصية، بالإضافة إلى التنسيق العادي وتنسيقَي التمرير والتركيز (I5f864، b/139312671)
- تمت إعادة تسمية
String.parseAsHtmlإلىAnnotatedString.Companion.fromHtml. (I43dcd) - تمت إضافة وسيطات التنسيق (
linkStyleوfocusedLinkStyleوhoveredLinkStyle) وأداة معالجة تفاعلات الروابط إلى الطريقةparseAsHtml. عند تحليل السلسلة الموسومة بتنسيق HTML باستخدام علامات<a>، ستنشئ الطريقةLinkAnnotation.Urlلكل علامة من هذا النوع وتمرّر عناصر التصميم ومستمع التفاعل مع الروابط إلى كل تعليق توضيحي. (I7c977) - تتلقّى
LinkAnnotationالآن وسيطات التنسيق المستندة إلى الحالة وLinkInteractionListener. أضِف هذه التعليق التوضيحي إلىAnnotatedStringللحصول على رابط تشعّبي. من خلال تمريرfocusedStateو/أوhoveredState، يمكنك تحديدconfigurationالمرئي للروابط عند التركيز عليها و/أو تمرير مؤشر الماوس فوقها. (I81ce4، b/139312671) - لم يعُد
ImeOptions.hintLocalesيقبل القيمة الخالية. إذا أردت تمرير قائمة Locale فارغة، يُرجى استخدامLocaleList.Empty. (Ic5bc4)
إصلاح الأخطاء
- التعامل بشكل سليم مع بيانات أحداث الإدخال السابقة غير الصالحة أو التالفة (تجاهل بيانات الإزاحة غير الصالحة)
- إصلاح أحداث المؤشر غير المتوقّعة عند إضافة أداة تعديل إدخال المؤشر بشكل ديناميكي قبل أداة تعديل إدخال مؤشر أخرى أثناء بث حدث إدخال مؤشر نشط (على سبيل المثال، بين حدثَي "المرور فوق العنصر" و"الخروج من العنصر" [الماوس/القلم]).
الإصدار 1.7.0-alpha06
3 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha06. يتضمّن الإصدار 1.7.0-alpha06 هذه التعديلات.
الميزات الجديدة
- تمت إضافة طريقة
parseAsHtmlللسلاسل ذات التنسيق: تتيح هذه الطريقة تحويل سلسلة مميّزة بعلامات HTML إلىAnnotatedString. يُرجى العِلم أنّ بعض العلامات غير متوافقة، مثلاً لن تتمكّن بعد من عرض قوائم نقطية. (I84d3d، I30626، b/139326648) - تمّت إضافة دعم تجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة التطبيقات الرسمية لنظام التشغيل Android (
ScrollCaptureCallback). هذه الميزة تجريبية وقد لا تتعامل حاليًا مع جميع الحالات بشكل صحيح. لهذا السبب، يتم إيقافها تلقائيًا في الوقت الحالي. للموافقة على هذه الميزة، اضبط العلامةComposeFeatureFlag_LongScreenshotsEnabledعلى "صحيح". (I2b055، b/329296471)
تغييرات واجهة برمجة التطبيقات
- تم تغيير
fun ClipEntry.getMetadata()إلىval ClipEntry.clipMetadata. (I50155) - تمت إزالة الدالتَين
ClipboardManager.getClipMetadataوClipboardManager.hasClip. يُرجى استخدامclipEntry.getMetadata()لقراءة البيانات الوصفية الخاصة بإدخال المقطع الحالي. تحقَّق أيضًا من نتيجةClipboardManager.getClipلمعرفة ما إذا كانت فارغة أم لا، وذلك لتحديد ما إذا كانت "الحافظة" تتضمّن مقطعًا حاليًا. (I50498) - يمكنك الآن تمرير عناصر
GraphicsLayerإلى دوالplaceable.placeWithLayer()(I1b22f) - يقبل
ClipboardManager.setClipالآن القيمة الخالية لتتمكّن من محو الحافظة. (I7d2e9) - تمت إضافة أرقام تعريف الموارد للمساعدة في إخفاء طرق العرض المستخدَمة كتفاصيل التنفيذ ضمن أدوات الإنشاء (I99531)
- تمت إضافة طريقة تعليق
GraphicsLayer#toImageBitmapلإتاحة عرض محتويات صورة نقطية فيGraphicsLayer. هذه عملية عرض يتم تسريعها من خلال الأجهزة على مستوى واجهة برمجة التطبيقات 22 أو أعلى (بما في ذلك المستوى 22)، وتتوافق مع أكثر من% 99 من جميع أجهزة Android. في المستوى 21 من واجهة برمجة التطبيقات في Android، يتم الرجوع إلى العرض البرمجي. (I9e114) - طريقة مساعدة لتحويل
RectFفي Android إلىComposeRect(I39925، b/325660505) - تحتوي جميع المَعلمات
KeyboardOptionsالآن على قيمة غير محدّدة تلقائيًا. تمت إضافة طريقة الدفعKeyboardOptions.merge. - تمت إعادة تسمية
KeyboardOptions.autoCorrectإلىautoCorrectEnabledوتمّت إتاحة إمكانية ضبطها على قيمة فارغة، حيث تشير القيمة الفارغة إلى عدم تحديد أي قيمة. (Ia8ba0، b/295951492) - يستخدم المتغير
BasicTextField(state)والمتغيرBasicSecureTextFieldالآنKeyboardActionHandlerبدلاً منKeyboardActionsلمعالجة الإجراءات التي يتم اتخاذها باستخدام لوحة مفاتيح افتراضية. (I58dda)
الإصدار 1.7.0-alpha05
20 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha05. يتضمّن الإصدار 1.7.0-alpha05 هذه التعديلات.
الميزات الجديدة
- إطلاق واجهة برمجة التطبيقات
GraphicsLayerالجديدة لتسجيل أوامر الرسم في قائمة العرض، بالإضافة إلى سمات إضافية تؤثّر في عرض قائمة العرض يوفر ذلك حدودًا لعزل المشهد المعقّد وتقسيمه إلى أجزاء أصغر يمكن تعديلها بشكل منفصل عن بعضها البعض بدون إعادة إنشاء المشهد بأكمله. يمكن إجراء عمليات تحويل علىGraphicsLayerبدون إعادة تسجيل قائمة العرض. على عكسModifier.graphicsLayer، يتيحGraphicsLayerعرض محتوى قابل للإنشاء في أماكن أخرى، وهو مفيد في حالات الاستخدام المتحركة التي يُتوقّع فيها عرض المحتوى في مشاهد مختلفة.
تغييرات واجهة برمجة التطبيقات
- لم يعُد
GraphicsLayer.draw(Canvas)واجهة برمجة تطبيقات متاحة للجميع. يُرجى استخدام دالة الإضافةDrawScope.drawLayer(GraphicsLayer)بدلاً من ذلك لرسم الطبقة. (I7a7c0) - تقسيم
restrictedConstraints()إلى طريقتَين:fitPrioritizingWidth()وfitPrioritizingHeight()(I6d7fd) - تمت إضافة
HardwareCanvasرمز بديل لاستخدام Android L (I1c3b5، b/288494724) - تعديل إطار عمل Compose لعرض
GraphicsContextcomposition local بالإضافة إلى تعديل عمليات تنفيذ Owner وDelegateableNodeوdrawWithCacheModifier لعرض إذن الوصول إلىGraphicsContextمن أجل الوصول المحدود النطاق الذي سيؤدي تلقائيًا إلى تنظيف مثيلاتGraphicsLayerعند إيقاف Modifiers. (I64a2f، b/288494724) - تم تقديم
InterceptPlatformTextInputللمساعدة في كتابة اختبارات منخفضة المستوى ذات صلة بطرق الإدخال وغيرها من حالات الاستخدام المنخفضة المستوى لطرق الإدخال. تم إيقافPlatformTextInputTestOverrideنهائيًا. (I862ed، b/322680547) - تمت إضافة دالة الإضافة
GraphicsLayer.setOutline(Outline). (Ib81f4) - إضافة أداة إنشاء الدالة
GraphicsContextلإنشاء مصنع لإنشاء مثيلاتGraphicsLayer(Ib98d6، b/288494724) - تم توفير واجهة برمجة التطبيقات
GraphicsLayerلمنح المطوّرين مرونة محدّدة في تسجيل أوامر الرسم التي يمكن استخدامها للرسم في مكان آخر، بالإضافة إلى تطبيق مؤثرات مرئية مختلفة على النتيجة النهائية. (I80245، b/288494724) - نقدّم
Paragraph#getRangeForRectالتي تعرض نطاقًا من النص الذي تغطيه مساحة مستطيلة معيّنة. (Iee516، b/325660505) - تمت إزالة الإعداد التجريبي التلقائي لـ
BasicTextباستخدام الوسيطةonLinkClicked. سيتم توفير واجهة برمجة تطبيقات بديلة لدعم الروابط التشعبية في المستقبل. (I107d5)
إصلاح الأخطاء
- تمت إضافة تعريف واجهة برمجة التطبيقات
GraphicsLayerexpect/actual لإتاحة تسجيل أو إعادة تشغيل أوامر الرسم مع تأثيرات مرئية اختيارية للتركيب والتحويلات. تقديم واجهةGraphicsContextلاحتواء تبعيات الرسومات، بما في ذلك إنشاء وإدارة مثيلاتGraphicsLayer(I4a8d6، b/288494724) - تم إصلاح مشكلة عدم توافق مع البحث عن التركيز الأحادي الأبعاد، حيث كان التركيز يتعذّر الخروج من
ComposeViewمضمّن بين طرق عرض أخرى. (I08fd4)
المساهمة الخارجية
- تم نقل
LocalLifecycleOwnerمن واجهة مستخدم Compose إلىlifecycle-runtime-composeحتى يمكن استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة مستخدم Compose. نشكر "جيك وارتون" على مساهمته. (I6c41b، b/328263448) - عرض خصائص الانحياز العائم باستمرار على جميع الأنواع الفرعية للمحاذاة المستندة إلى الانحياز (I69f0f، b/328088992)
الإصدار 1.7.0-alpha04
6 آذار (مارس) 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha04. يتضمّن الإصدار 1.7.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إتاحة ميزة الكتابة بخط اليد باستخدام قلم الشاشة في BasicTextField2 على الأجهزة التي تعمل بالإصدارات الأحدث من Android U (I002e4)
- في هذا التغيير، نضيف الإجراء الدلالي
GetScrollViewportLengthحتى نتمكّن من نقل معلومات حول المكوّنات التي يتمّ تصفّحها في Compose إلى نظام تسهيل الاستخدام. ينطبق هذا التغيير أيضًا على استخدام السمة المذكورة في "القوائم القابلة للتمرير" في Foundation. (Ic5fa2) - أصبحت
FocusRequester.createRefsالآن إصدارًا ثابتًا (I4d92c، b/261436820) - تمت إضافة
DelegatableNode.requireView()للسماح لعُقد المعدِّل بالحصول علىViewالحالي لنظام التشغيل Android بدون قراءة التركيبة المحلية. (I40768) - واجهة برمجة التطبيقات الجديدة
Path.reverse()لعكس اتجاه المسار (I36348) - تمت إضافة
hintLocalesإلىKeyboardOptionsلتزويدTextFieldsبإمكانية إرسال تلميحات إلى محرّرات طرق الإدخال (IME) تتضمّن إعدادات محلية معيّنة لضبط لغة مفضَّلة مسبقًا. - عرض السمة
platformLocaleمنLocaleالتي تعرض عنصر النظام الأساسي الأساسي، مثلjava.util.Locale(I921c6)
الإصدار 1.7.0-alpha03
21 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha03. يتضمّن الإصدار 1.7.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- نقدّم لك
ContextualFlowRowوFlowRow/Columnالمحسّنة مع MaxLines وOverflow. يسرّنا الإعلان عن تحسينات علىFlowRowوFlowColumnالتجريبيتين، إذ تتضمّنان الآن ميزة maxLines وإمكانية التعامل مع المحتوى الزائد، بالإضافة إلى طرحContextualFlowRowوContextualFlowColumnلأول مرة. تم تصميم هذا التحديث لتوفير مكوّنات ذات أداء مثالي، حيث إنّContextualFlow*مثالية لعدد كبير من العناصر التي تستخدم إعداداتmaxLinesصغيرة وأزرار ديناميكية +N "عرض المزيد"، بينماFlowRowوFlowColumnمثاليتان لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRowأوFlowColumnحيث يتم إنشاء جميع العناصر بغض النظر عما إذا كانت تتناسب مع الحد الأقصى للمحور المتقاطع، اضبطoverflowعلىFlowRowOverflow.VisibleأوFlowColumnOverflow.Visibleأثناء عملية التهيئة. يمكنك الاطّلاع علىContextualFlowRowSampleوFlowRowSampleللحصول على أمثلة على هذه الميزات الجديدة أثناء عملها. (Ib9135، b/293577082) - أضِف السمة الدلالية
maxTextLengthالتي يجب ضبطها في الحقول النصية التي تفلتر الحد الأقصى المسموح به لعدد الأحرف. (I24d9f، b/170648072) - تم إيقاف وحدة التغليف
Modifier.inspectableنهائيًا. ستؤدي واجهة برمجة التطبيقات هذه إلى إبطال المعدِّل أكثر من اللازم، لذا لم يعُد يُنصح باستخدامها. ننصح المطوّرين بتنفيذ طريقةinspectableProperties()علىModifierNodeElementإذا كانوا يريدون عرض خصائص المعدِّل للأدوات. (Ib3236) - دالة إنشاء جديدة لـ
PopupPropertiesتتيح التحكّم الكامل في علاماتWindowManager.LayoutParams. (Ibb33e، b/312485503) - تم تقديم
DelegatableNode.requireLayoutCoordinates()كطريقة للحصول علىLayoutCoordinatesالحالي الخاص بـModifier.Nodeبدون الحاجة إلى إلغاءonPlacedوتخزين الإحداثيات في خاصية بنفسك. (Ia8657) - تم تقديم
DelegatableNode.currentLayoutCoordinatesكطريقة للحصول علىLayoutCoordinatesالحالي الخاص بـModifier.Nodeبدون الحاجة إلى إلغاءonPlacedوتخزين الإحداثيات في عنصر بنفسك. (Iaebaa) - تم نقل واجهة برمجة التطبيقات
BasicTextField2وواجهات برمجة التطبيقات ذات الصلة ضمن حزمةandroidx.compose.foundation.text2إلىandroidx.compose.foundation.text. (I9f635) - تمت إضافة واجهة برمجة تطبيقات
ApproachLayoutModifierNodeجديدة تتيح إنشاء منطق مخصّص للتعامل مع الطلبات في عقدة معدِّل صريحة. تم أيضًا إضافة واجهة برمجة تطبيقات تجريبية جديدةDeferredTargetAnimationللرسوم المتحركة التي يكون هدفها غير معروف عند إنشاء مثيل. (I60745) - واجهات برمجة تطبيقات
Pathجديدة للاستعلام عن اتجاه مسار واستخراج خطوط كفاف منPath(I63d04) - تمت إضافة
PathHitTestوPath.contains(Offset)للتحقّق مما إذا كانPathيحتوي على نقطة معيّنة. (I3b218) - تعرض السمة
TextLayoutResultالآن الطريقةgetLineBaseline(lineIndex). يتيح ذلك قراءة خط الأساس لأي سطر من النص بالإضافة إلى سمات الملاءمة الحاليةfirstBaselineوlastBaseline. (Ide4e8، b/237428541) - تمت إضافة طريقة لمقارنة التعليقات التوضيحية لاثنتين من
AnnotatedStringsفقط. (I32659)
إصلاح الأخطاء
- تم إصلاح مشكلة في التوافق مع الإصدارات القديمة من
SemanticsPropertyReceiver.performImeActionوSemanticsActions.PerformImeAction. (Id0528، b/322269946)
الإصدار 1.7.0-alpha02
7 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha02. يتضمّن الإصدار 1.7.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة في توافق الرمز الثنائي مع
SemanticsPropertyReceiver.performImeAction. (I65865، b/322269946) - لم يعُد منشئ
PopupPropertiesالذي يأخذ المَعلمةusePlatformDefaultWidthتجريبيًا. (I8f8d2) - تمت إضافة تحميل زائد للدالة
ComposeTestRule.waitUntilيأخذ وصفًا نصيًا للحالة المطلوب تضمينها في رسالة المهلة. (I9413e) - واجهة برمجة تطبيقات جديدة للدلالات
unset()لإزالة خصائص الدلالات التي تتم إضافتها في سلسلة المعدِّل نفسها سمة دلالية جديدةisOpaque(I8c583، b/317966058، b/246056649) - تمت إزالة
originalEventPositionمن طريقة النسخ في واجهة برمجة التطبيقات العامة الخاصة بـPointerInputChange. (I7bead)
إصلاح الأخطاء
- تم إصلاح خطأ في إمكانية الوصول كان يسمح بالنقر على عناصر غير علامات التبويب وأزرار الاختيار عند تحديدها. (I2181c)
- سيتضمّن الإصدار
VelocityTrackerالآن إصلاحًا يتيح إضافة النقاط تلقائيًا. يمكنك إيقاف الإصلاح من خلال ضبطVelocityTrackerAddPointsFixعلى "خطأ" في حال حدوث أي مشاكل. (Ib3877، b/269487059) - تم إصلاح عدم التوافق الثنائي مع الإصدارات القديمة في
TextStyleوParagraphStyle. (I179f0، b/320819734)
المساهمة الخارجية
- تمت إضافة أداة إنشاء
DialogPropertiesجديدة بدون مَعلمات خاصة بالنظام الأساسي. (I45829) - تمت إضافة أداة إنشاء
PopupPropertiesجديدة بدون مَعلمات خاصة بالنظام الأساسي. (I9a038)
الإصدار 1.7.0-alpha01
24 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha01. يتضمّن الإصدار 1.7.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم توسيع
ClipboardManagerمن خلال إضافةClipEntryوClipMetadataلدعم المحتوى العشوائي، مثل الصور. - تضيف واجهة برمجة التطبيقات
DeviceConfigurationOverrideإلىui-testللسماح بتجاوز سلوك المحتوى قيد الاختبار محليًا، مثل تحديد حجم متاح أو لغة أو اتجاه التنسيق أو مقياس الخط أو المظهر.
الإصدار 1.6
الإصدار 1.6.8
12 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.6.8. يتضمّن الإصدار 1.6.8 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح حالات عدم الاتساق في تغيير حجم الخط عندما يكون مقياس الخط أقل من الحد الأدنى للجدول المحدّد. في هذه الحالة، يتم الآن الاستيفاء بين المقياس الخطي 1x وأدنى جدول محدّد، بحيث يزداد حجم الخط بشكل رتيب مع زيادة المقاييس. (Icbae3)
الإصدار 1.6.7
1 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.6.7. يتضمّن الإصدار 1.6.7 هذه التعديلات.
الإصدار 1.6.6
17 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.6.6. يتضمّن الإصدار 1.6.6 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل نادر في
BasicTextField
الإصدار 1.6.5
3 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.6.5. يتضمّن الإصدار 1.6.5 هذه التعديلات.
الإصدار 1.6.4
20 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.6.4. يتضمّن الإصدار 1.6.4 هذه التعديلات.
الإصدار 1.6.3
6 آذار (مارس) 2024
تم طرح androidx.compose.ui:ui-*:1.6.3. يتضمّن الإصدار 1.6.3 هذه التعديلات.
الإصدار 1.6.2
21 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.6.2. يتضمّن الإصدار 1.6.2 هذه التعديلات.
الإصدار 1.6.1
7 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.6.1. يتضمّن الإصدار 1.6.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في التوافق مع الإصدارات القديمة من
SemanticsPropertyReceiver.performImeActionوSemanticsActions.PerformImeAction. (Ie0bb2، b/322269946) - تعرض التصاميم الآن خطأ أثناء القياس عندما يعرض أحدها حجمًا كبيرًا بشكل غير طبيعي. يحدث هذا النوع من الأخطاء عادةً عندما تستخدم القياسات الحد الأقصى للقيود مباشرةً بدون التحقّق من
Constraints.Infinity. سيساعد هذا الفحص المطوّرين في العثور على مشاكل في التنسيق الذي يحتوي على حجم غير صحيح بدلاً من التنسيق الذي يتضمّنه. (I339a9)
الإصدار 1.6.0
24 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.6.0. يتضمّن الإصدار 1.6.0 هذه التعديلات.
الإصدار 1.6.0-rc01
10 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.6.0-rc01. يتضمّن الإصدار 1.6.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم تحسين تنفيذ الرسومات المتجهة لتحسين الأداء من خلال تقليل عمليات إعادة التركيب الإضافية.
الإصدار 1.6.0-beta03
13 ديسمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta03. يتضمّن الإصدار 1.6.0-beta03 هذه التعديلات.
الميزات الجديدة
- يمكن الآن فصل
LayoutCoordinatesبدون فصل العقدة. يمكنك الحماية من ذلك في "أداة فحص تنسيق Compose" (If693).
إصلاح الأخطاء
- أصبح
PlatformImeOptionsالآن فئة ملموسة بدلاً من واجهة. (If40a4) - تم إصلاح عمليات إعادة التركيب الإضافية الثابتة التي تحدث بسبب توفير قيم جديدة لـ
LocalSoftwareKeyboardControllerوLocalTextInputServiceفي كل مرة تتم فيها إعادة تركيب العنصر الجذر. (I42190، b/310510985)
الإصدار 1.6.0-beta02
29 نوفمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta02. يتضمّن الإصدار 1.6.0-beta02 هذه التعديلات.
الإصدار 1.6.0-beta01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta01. يتضمّن الإصدار 1.6.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يأخذ المعدِّل
DragAndDropTargetالآنDragAndDropTargetالمستلِم بشكلٍ صريح ويتضمّن تعبير lambda للموافقة على جلسة السحب والإفلات. تتوفّر الآن دالتان مصنع لـDragAndDropModifierNode. أحدهما لتلقّي عمليات النقل والآخر لنقل البيانات (I69481) - تم تعديل
maximumFlingVelocityليتم تمثيله كعدد عشري. تم تعديل المستندات لتكون أكثر وضوحًا بشأنmaximumFlingVelocity. (I8adc7) - تمت إعادة تسمية
onDragAndDropStartفي مصنعDragAndDropModifierNodeإلىacceptDragAndDropTransfer.تمت إضافةacceptsDragAndDropTransferإلى أداة التعديلdragAndDropTargetلقبول المحتوى من جلسة سحب وإفلات. تعرض دالة lambda هذه قيمةDragAndDropTargetصالحة إذا كنت مهتمًا بجلسة السحب والإفلات. تم استبدال دوال lambda الأخرى لمعالجة أحداث السحب بهذه الدالة. تمت إضافة دالة مصنعDragAndDropTargetلتلقّي البيانات من جلسات السحب والإفلات (Iebf3a). تمت إزالة
DragAndDropInfoكنوع، ويتم الآن استخدامDragAndDropModifierNode.dragمع مَعلماتtransferDataوحجم الزخرفة ووظيفة lambdaDrawScopeالخاصة بسحب الزخرفةيحتوي
DragAndDropTargetعلى طرق لأحداث معيّنة للسحب والإفلات بدلاً من أن يكون طريقة مجرّدة واحدةتمت إعادة تسمية
onDragAndDropEventفي دالة المصنع الخاصة بـDragAndDropModifierNodeإلىonDragAndDropStartلتوضيح أنّDragAndDropTargetالمقدَّم صالح لجلسة سحب وإفلات معيّنة فقطتمت إزالة
DragAndDropEventType(I645b1)تمت إعادة تسمية "
PlatformTextInputModifierNode.runTextInputSession" إلى "establishTextInputSession". (I03cd0)تحسين أسماء واجهات برمجة التطبيقات الخاصة بالعُقد القابلة للاجتياز لجعلها أكثر وضوحًا (Ia4474)
استبدِل
OriginalTextبـTextSubstitution. (Ifa5a8)تمت إعادة تسمية "
PlatformTextInputModifierNode.textInputSession" إلى "runTextInputSession". (Ie9c6b)يتم اعتبار العناصر الفرعية من
SubcomposeLayout(والتنسيقات المشابهة مثلLazyColumnالمستندة إليها) التي يتم الاحتفاظ بها لإعادة استخدامها في المستقبل غير نشطة. تم تقديم واجهة برمجة تطبيقات جديدة لاختبارassertIsDeactivated()لاختبار هذه العُقد. ستستبعد بقية واجهات برمجة التطبيقات التجريبية العُقد التي تم إيقافها تلقائيًا. (I2ef84، b/187188981)تمت إزالة
FocusDirection.InوFocusDirection.OutواستخدامFocusDirection.EnterوFocusDirection.Exitبدلاً منهما (I2f660)تعتمد واجهات برمجة التطبيقات الخاصة بـ Material
SwipeToReveal(للبطاقات والرقائق) الآن على واجهة برمجة تطبيقات مستندة إلى الخانات (كما هو مقترَح في Compose) بدلاً من مثيلات مستندة إلى فئة البيانات لإنشاء هذه الخانات. هذا تغيير غير متوافق مع الإصدارات السابقة، لذا يُرجى الاطّلاع على العرض التوضيحي والرمز النموذجي للحصول على أمثلة حول كيفية استخدام واجهة برمجة التطبيقات الجديدة. (Ia8943)تم إيقاف الدالة الإنشائية
FontStyle(int)نهائيًا، لذا يُرجى استخدامFontStyle.NormalأوFontStyle.Italicبدلاً منها. (I66610)تمت إعادة تسمية واجهة
FontScalableإلىFontScaling(Ie804a)
إصلاح الأخطاء
- لن يعرض
SoftwareKeyboardController.show()لوحة مفاتيح افتراضية إذا لم يكن هناك محرِّر نصوص مركّز عليه. (I2165a، b/301477279) - سيتم الآن تجاهل أحداث "التحرير" لمفاتيح الأجهزة التي لم تتلقَّ حدث "الضغط" في "طريقة العرض Compose" نفسها. (Ib37b4، b/305518328)
- إضافة إمكانية استخدام أداة العرض لـ "تدرّج الألوان الدائري" في
ArcLine(I4d5bb) - نفِّذ الدالتَين equals وhashcode للسمة
PageSize.Fixed. (Ie3ede، b/300134276) - إصلاح مشكلة توافق البرنامج الثنائي مع تغيير مساحة النافذة الداخلية (Iee695)
- أزِل طبقة Material الأساسية من Material3 Chip/Button لأنّ اختبارات الأداء الدقيقة تُظهر أداءً أفضل بدونها. (I55555)
- سيتم الآن استخدام
TestDispatchers التي تم تمريرها كـeffectContextإلى اختبارات Compose لإنشاء اختبارات وساعات إطار. (Ia7178)
الإصدار 1.6.0-alpha08
18 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha08. يتضمّن الإصدار 1.6.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة lambda
onDrawDragShadowفيModifier.dragAndDrawSourceإلىdrawDragDecoration، كما تمت إعادة تسمية مَعلمة الحجم فيDragAndDropInfoإلىdragDecorationSize. (Id0e30، b/303904810) - إضافة
SemanticsNodeInteraction.isDisplayed()وSemanticsNodeInteraction.isNotDisplayed()للتحقّق مما إذا كانت العقدة المطابقة مرئية أم لا بدون التأكيد عليها أيضًا (I2c196، b/302100809) - تم تقديم القيمة الخاصة
UnspecifiedللحقولTextAlignوTextDirectionوHyphensوLineBreakمنParagraphTextStyleلاستبدالnull. بما أنّ هذه الفئات هي فئات مضمّنة، نتجنّب تضمين النوع الأساسي من خلال استبدال القيمة القابلة للتصغير بالقيمة Unspecified. تم تعديل أدوات الإنشاء وعناصر الجلب والطرق الأخرى فيTextStyleو"نمط الفقرة" لقبول المَعلمات المذكورة كأنواع غير قابلة للقيم الخالية. (I4197e، b/299490814) - أضِف حمولة زائدة
GoogleFontلقراءةGoogleFontمن XML. (If8f59) - تم إنشاء
LoremIpsumPreviewParameterProviderكصف مفتوح. (I41bf5، b/266918816، b/300116360)
إصلاح الأخطاء
- تستخدم
FontFamilyResolverالآنDispatchers.Mainلروتينات مشتركة لإدارة ذاكرة التخزين المؤقت. (Ie8dd9) - تزيل
AndroidViewBindingالآن بشكل متزامن مثيلاتFragmentالتي تم تضخيمها من خلال تضمينFragmentContainerViewفي التصميم كجزء منonReleaseباستخدامcommitNow(بدلاً منcommitالتي كانت تستخدمها سابقًا)، وبالتالي إصلاح المشاكل المتعلّقة بطريقة "التعديل المباشر" مع استبدال التركيبة عند إجراء تغييرات. (I58fbf)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha07. يتضمّن الإصدار 1.6.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم
PlatformTextInputMethodTestOverrideلكتابة اختبارات لمحرّرات النصوص المخصّصة. (Id159b) - تضيف هذه السمة المعدِّل
dragAndDropSourceلبدء جلسات السحب والإفلات، والمعدِّلdragAndDropTargetلتلقّي البيانات من جلسات السحب والإفلات. (Ib7828، b/286038936) - تمت إضافة مجموعتَي
ColorListوColorSetاللتين تتجنّبان عمليات التخصيص. (I744bd) - تمت إضافة العلامة المؤقتة
DisableNonLinearFontScalingInComposeلإيقاف الضبط غير الخطي لحجم الخط. اضبطDisableNonLinearFontScalingInCompose = trueفي اختباراتك إذا كنت بحاجة إلى وقت لتنظيفها. ستتم إزالة هذا الخيار في الإصدار 1.6.0-beta01 من Compose. (Ic9486)
إصلاح الأخطاء
- تحسين تحليل الرسومات المتجهة القابلة للرسم بتنسيق XML (Ibb015)
الإصدار 1.6.0-alpha06
20 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha06. يتضمّن الإصدار 1.6.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تحسينات إضافية على رموز Material (I3e08d)
- تضيف هذه السمة إمكانية التنقّل للأعلى أو للأسفل في شجرة المعدِّلات للعثور على عُقد مشابهة. (I2d234)
- تمت إضافة معاودة الاتصال
onRestoreFailed()إلى أداة التعديلfocusRestorer()(Ie1d43) - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorIntوFloatRangeوIntRangeوSizeوغير ذلك. (Id65c8، b/290950582) - إضافة
showSystemUi=trueإلى تعريفPreviewScreenSizes(Ib61d3)
التغييرات في السلوك
- تستخدم ميزة "الكتابة الذكية" الآن ضبطًا غير خطّي لحجم الخط لتسهيل القراءة والاستخدام. عندما يكون حجم الخط > %100 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ طبيعي، ولكن النص الكبير سيزداد حجمه قليلاً فقط. بالإضافة إلى ذلك، سيتم تعديل ارتفاعات الأسطر المحدّدة في SP تلقائيًا لتبقى متناسبة مع الارتفاع المقصود بنسبة% 100. يمكنك الاطّلاع على أفضل الممارسات المتعلّقة بتغيير حجم الخط للحصول على مزيد من المعلومات. (I11518)
الإصدار 1.6.0-alpha05
6 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha05. يتضمّن الإصدار 1.6.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- فعِّل ميزة "التقاط المحتوى" في
AndroidComposeViewAccessibilityDelegateCompat. (Ib2969) - يتم تحديد الحد الأقصى لسرعات التحريك السريع في مكوّنات العرض، مثل
ScrollViewوRecyclerView، عندViewConfiguration.ScaledMaximumFlingVelocity. يتضمّن تطبيق "إنشاء" الآن إصدارًا خاصًا به منmaximumFlingVelocityينطبق علىDraggable. (Ibf974) - تضيف هذه الحزمة عملية إنشاء أساسية لدعم واجهات برمجة التطبيقات التي تتيح السحب والإفلات على المنصات. (If84ce)
- إضافة
deviceIdإلىRotaryScrollEvent(Iba3bf) - تم تعديل واجهة برمجة التطبيقات
ui-toolingDevices API لتشمل أجهزة أحدث (Ib25b4)
الإصدار 1.6.0-alpha04
23 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha04. يتضمّن الإصدار 1.6.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أضفنا طريقة لإيقاف
ReusableComposition، ما يؤدي إلى إزالة الملاحظات مع الإبقاء على العُقد. يمكن إعادة تفعيل التركيب الذي تم إيقافه من خلال استدعاءsetContent. (Ib7f31) - إضافة واجهة
ReusableCompositionلإدارة مراحل النشاط وإعادة استخدام التركيبات الفرعية (I812d1، b/252846775) - تمت ترقية
Modifier.focusGroupإلى واجهات برمجة تطبيقات ثابتة. (I7ffa3) - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorIntوFloatRangeوIntRangeوSizeوغير ذلك. (I70487، b/290950582) - تم تعديل واجهة برمجة التطبيقات
ColorFilterلتضمين أنواع فئات فرعية ملموسة من أجل تحسين إمكانية فحص المَعلمات. (I5fe29) - إضافة مكتبة wear-tooling-preview لعرض قائمة بأجهزة Wear OS الصالحة التي يمكن استخدامها لمعاينات واجهة المستخدم (Ib036e)
- تم إنشاء واجهة
FontScalableللتعامل مع جزء تغيير حجم الخط في واجهة "الكثافة". (I2cf3f)
الإصدار 1.6.0-alpha03
9 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha03. يتضمّن الإصدار 1.6.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- نوع جديد من انتقالات الدخول/الخروج التي توسّع المحتوى أو تقلّصه استنادًا إلى حجم الحاوية المتحركة أثناء حركة الدخول والخروج أصبحت واجهة
LookaheadScopeComposable fun الآن ثابتة. (Ifb2ce) - تمت إضافة إمكانية ضبط
privateImeOptions(Idb772)
إصلاح الأخطاء
- سيعدّل
PopupPositionProvider.calculatePositionالآن تلقائيًا موضع النافذة المنبثقة عند تغيير حالة القراءة في عملية الحساب. (I676a1، b/292257547) - تم إصلاح الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة
readOnlyصحيحة. تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير قيمةreadOnlyمن "صحيح" إلى "خطأ" أثناء التركيز. (I34a19، b/246909589) - توسيع نطاق استخدام تأكيدات عامة في اختبار واجهة المستخدم (I1f90d)
الإصدار 1.6.0-alpha02
26 تموز (يوليو) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha02. يتضمّن الإصدار 1.6.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة أداة تحديد موقع الخدمة التي يمكن أن ينفّذها منفّذو Composition، ما يسمح بتنفيذ Composition الذي يفوّض عمليات البحث عن خدمة تفويض أخرى إلى Composition الأصلي. يجب عدم استدعاء هذه الدالة مباشرةً، ويتم استخدامها لتفعيل إنشاء واجهات برمجة تطبيقات تجريبية في وقت التشغيل يمكن العثور عليها من الإصدارات المُغلَّفة من أداة الإنشاء، مثلما تفعل وحدة واجهة المستخدم. (I296b9)
- إعادة تصميم واجهة برمجة التطبيقات
PlatformTextInput*بالكامل (I6c93a، b/274661182، b/267235947، b/277380808) - لم يعُد
SoftwareKeyboardControllerوLocalSoftwareKeyboardControllerميزتَين تجريبيتَين. أصبحLocalSoftwareKeyboardControllerالآنCompositionLocalمناسبًا أيضًا. (I4c364) - تم إيقاف
LookaheadLayoutوLookaheadLayoutScopeنهائيًا في بعض الإصدارات السابقة، وتمت إزالتهما الآن. واجهات برمجة التطبيقات البديلة هيLookaheadScopeالتي يمكنها العمل مع أي تنسيق. (I12ac3) - تمت إضافة
SemanticsNodeInteraction.requestFocusكطريقة أكثر ملاءمة وسهولة لاكتشاف كيفية طلب التركيز في الاختبارات. (Ie8722) - إضافة واجهات برمجة تطبيقات تجريبية لتسجيل تأكيدات عامة، لاستخدامها من قِبل أُطر الاختبار في المستقبل (I12d77)
إصلاح الأخطاء
- سيتم الآن تأجيل الاستدعاء الأول
updateللدالةAndroidViewإلى حين ربط العرض، بدلاً من تنفيذه عند تطبيق التركيبة التي تقدّمAndroidView. يحلّ هذا الخطأ مشكلة عدم إبطال معاودة الاتصالupdateإذا تم تغيير حالة تمت قراءتها على الفور من خلال تأثير. (Ie9438، b/291094055)
الإصدار 1.6.0-alpha01
21 حزيران (يونيو) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha01. يتضمّن الإصدار 1.6.0-alpha01 هذه التعديلات.
الميزات الجديدة
- إتاحة البحث المسبق في
LazyListيسمح ذلكLazyListفي عملية البحث المسبق بتجاوز أي صورة متحركة (مثل صورة متحركة لوضع العناصر،AnimatedVisibility، وما إلى ذلك) واحتساب حجم وموضع البحث المسبق لجميع العناصر الفرعية. بعد عملية التمرير المسبق، يمكن للأطفال فيLazyListتحريك الشخصيات بشكل مستقل بما يتوافق مع الواقع كما يظهر في عملية التمرير المسبق.
تغيير في السلوك: تم ضبط قيمة includeFontPadding على false تلقائيًا في Compose
أصبحت قيمة includeFontPadding الآن false تلقائيًا (21d806) في Compose.
includeFontPadding هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة متروكة إضافية أعلى السطر الأول وأسفل السطر الأخير من النص لاستيعاب أي أحرف قد تمتد فوق خطوط الأساس أو تحتها.
سيؤدي تعديل إصدار Compose هذا إلى تغيير طريقة عرض جميع النصوص في واجهة المستخدم من خلال إزالة المساحة المتروكة الإضافية أعلى السطر الأول والسطر الأخير من كل نص تعرضه.
واعتمادًا على متطلبات واجهة المستخدم ومقاييس الخطوط التي تستخدمها، يجب أن تكون التغييرات بسيطة. ومع ذلك، قد تواجه بعض المشاكل، مثل: - تعطُّل اختبارات لقطات الشاشة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور المرجعية. - النص غير محاذٍ قليلاً. أزِل أي مسافات سالبة مخصّصة أو أضِف مسافة إذا لزم الأمر.
يمكنك الموافقة على includeFontPadding باستخدام PlatformTextStyle لكل نص:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
يمكنك تفعيل includeFontPadding لجميع نصوصك من خلال ضبط أنماط Material. يُرجى العِلم أنّ أسماء المَعلمات ستختلف بين M2 وM3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
يمكنك الاطّلاع على مزيد من المعلومات حول Compose includeFontPadding في مستندات المطوّرين ومنشور المدوّنة هذا.
إذا واجهت مشاكل أو أخطاء مرتبطة بهذا التغيير، يمكنك تسجيل خطأ باستخدام أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- دعم
InputConnection#requestCursorUpdates(I0c69b) - تمت إضافة
FocusRequester.saveFocusedChildوFocusRequester.restoreFocusedChild(Ic557e وb/272302679 وb/275157318) - أضِف النوع
ResourceResolutionExceptionلتضمين العناصر القابلة للرمي التي يتم طرحها عند محاولة تحميل مواد عرض الصور النقطية مع وصف لمسار مادة العرض التي تعذّر تحميلها. (I19f44، b/230166331، b/278424788) - تم تحسين إمكانية الوصول إلى الذاكرة وتخصيصها لتحسين الأداء. (Iede48)
- أضفنا خصائص ودلالات وإجراءات لدعم ترجمة النصوص. (I4a6bc)
- سمة جديدة في
IntrinsincMeasureScopeوعمليات تنفيذها (مثلMeasureScope) للإشارة إلى ما إذا كانت عملية قياس المقياس الحالية هي عملية بحث مسبق. (I7a812) - تم تعديل واجهة برمجة التطبيقات
DrawScopeلإتاحة إمكانية إعادة استهداف العرض في لوحة عرض مختلفة باستخدام كثافة/اتجاه تخطيط وحجم بديلَين. - تم تعديل
DrawContextلإتاحة ضبط الكثافة واتجاه التصميم، بالإضافة إلى إمكانية ضبط لوحة العرض. (Ie1f9b، b/225408150) - تمت إضافة
Paragraph#fillBoundingBoxesلاحتساب مربّعات الحدود الخاصة بالأحرف. (If30ee) - تمت إضافة مجموعة من
MultiPreviewsالشائعة (Ia5a27)
إصلاح الأخطاء
- تمت إضافة واجهة
FocusTargetModifierNodeيمكن استخدامها لإنشاءFocusTargetمخصّص. (I9790e) - تمت إعادة تسمية المَعلمات
fallback*في الدالة الإنشائيةTextMeasurerإلىdefault*. (I940a5) - تمت إعادة تسمية "
SemanticsPropertyReceiver.performImeAction" إلى "onImeAction" و"SemanticsActions.PerformImeAction" إلى "OnImeAction". (I8e841) - تضيف هذه السمة "العجلة" للتمييز بين التمرير باستخدام الماوس والسحب في التمرير المتداخل (في
NestedScrollConnectionتحديدًا). (Ie57e4) - تمت إضافة واجهة برمجة التطبيقات
asComposePaintلاستبدالtoComposePaintلأنّ العنصر الذي يتم عرضه يغلّفandroid.graphics.Paintالأصلي (I22b4c) - إيقاف
SemanticsProperties.imeActionنهائيًا واستبداله بمعلَمة جديدة فيSemanticsActions.performImeAction(I4a587) - تمت إضافة إمكانية التحديد باستخدام الماوس. سيتوسّع التحديد المستند إلى اللمس بمقدار كلمة، وسيتقلّص بمقدار حرف. (Ic0c6c، b/180639271)
- تُطلق الآن طرق
Paragraphالتي كانت تُطلقAssertionErrorلإزاحات خارج الحدود الخطأIllegalArgumentExceptionكما تفعلMultiParagraph. (I549d3، b/243338896)
الإصدار 1.5
الإصدار 1.5.4
18 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.4. يتضمّن الإصدار 1.5.4 هذه التعديلات.
الإصدار 1.5.3
4 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.3. يتضمّن الإصدار 1.5.3 هذه التعديلات.
إصلاح الأخطاء
- (b/301209788) كان
TextFieldفي بعض الأحيان يطبّق الأوامر السابقة بشكل غير صحيح عند التركيز على الإدخال باللغة الكورية وإدخاله، ما يؤدي إلى فقدان الأحرف.
الإصدار 1.5.2
27 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.2. يتضمّن الإصدار 1.5.2 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة حلّ بديل للأعطال التي تحدث عند الوصول إلى واجهة برمجة تطبيقات التمرير للأعلى أو للأسفل من سلسلة الخلفية.
- إصلاح مشكلة إضافة العُقد غير المرفقة إلى شجرة الدلالات
الإصدار 1.5.1
6 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.1. يتضمّن الإصدار 1.5.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة
readOnlyصحيحة. تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير قيمةreadOnlyمن "صحيح" إلى "خطأ" أثناء التركيز. (I34a19، b/246909589)
الإصدار 1.5.0
9 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.5.0. يتضمّن الإصدار 1.5.0 هذه التعديلات.
الإصدار 1.5.0-rc01
26 تموز (يوليو) 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-rc01. يتضمّن الإصدار 1.5.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل يحدث عند استخدام
SubcomposeLayoutداخلmovableContentOf().
الإصدار 1.5.0-beta03
28 حزيران (يونيو) 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta03. يتضمّن الإصدار 1.5.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصّص. (Ifb1d6)
- تم إصلاح مشكلة في عناصر Dialog وPopup القابلة للإنشاء قد تؤدي إلى عدم تغيير حجم النافذة الفرعية على النحو المتوقّع عند استخدام
usePlatformDefaultWidth=true. (I112ee)
الإصدار 1.5.0-beta02
7 يونيو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta02. يتضمّن الإصدار 1.5.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
asComposePaintلإتاحة استخدام مثيلandroid.graphics.Paintفي Compose
إصلاح الأخطاء
- تمت إضافة واجهة برمجة التطبيقات
asComposePaintلاستبدالtoComposePaintلأنّ العنصر الذي يتم عرضه يغلّفandroid.graphics.Paintالأصلي (I22b4c)
الإصدار 1.5.0-beta01
24 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta01. يتضمّن الإصدار 1.5.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة عمليات التخصيص في إعادة التركيب، والصور المتحركة للألوان، و
AndroidComposeView(Ib2bfa) - إضافة وظيفة مساعدة
CacheDrawModifierNode()للسماح بالتفويض (Icf8f9) - نقدّم السمة
isLookingAheadالتي يمكن الوصول إليها منMeasureScopeلمراقبة نتائج البحث المسبق والتأثير في عملية الفحص الرئيسية إذا أردت ذلك. (Ibf4c3) - سمة دلالية جديدة
traversalIndex، وهي عدد عائم يُستخدَم لإعادة ترتيب العُقد في عملية اجتيازTalkBack(تأتي القيم الأصغر أولاً). (I9a81b، b/186443263) - إعادة تسمية السمة "الدلالات"
isContainerإلىisTraversalGroup(I121f6) - تم الآن منح "
ColorProducer" دورoperator fun invokeبدلاً منproduce(I4a9a2) - أضِف
Pathtransform API لتطبيق عمليات تحويل الترجمة/الحجم/التدوير على عناصر المسار. (I23434، b/233772232) - تُعرف طريقة
ColorProducerباسمproduce. (I78bde) - تمّت إعادة تسمية "
toFrameworkColorSpace" إلى "toAndroidColorSpace" (I4f547) - تمّت إعادة تسمية
ColorLambdaإلىColorProducer. (I73b1a) - إضافة واجهات برمجة تطبيقات للتحويل بين أنواع مساحات الألوان في Android وCompose (Ie7db4، b/279979665)
- تمت إضافة مَعلمة لون إلى
BasicTextللسماح بتحريك لون النص أو ضبطه بكفاءة. (Iffd88، b/246961787) - تمت إعادة تسمية "
TextRange.constrain" إلى "TextRange.coerceIn". (I31be2) - تمّت إضافة
TextStyle.merge(...)محسَّنة مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تم تثبيت العديد من واجهات برمجة التطبيقات الخاصة بالنصوص والتي تتضمّن
BrushوDrawStyleوTextMotionوDrawScope.drawTextوParagraph.paint(Brush)وMultiParagraph.paint(Brush). (I2f740، b/261581564، b/261581931، b/261561245) - تمت إعادة تفعيل
PlatformTextStyle.includeFontPadding. كانت نيتنا الأصلية هي إزالة الحقل، ولكن تشير الملاحظات إلى أنّ المطوّرين يحتاجون إلى خيار الإعداد هذا. لذلك، أزلنا الإيقاف النهائي من الحقل (I98e96، b/277703184). - تمت إضافة طريقة
TextRange.constrainالعامة. (I97912) - يمكن الآن فتح
UrlAnnotationفيAnnotatedStringمن خلال خدمات تسهيل الاستخدام، مثلTalkBack. (If4d82، b/253292081) - تمت إضافة إجراء
InsertTextAtCursorالدلالي لحقول النص. (I11ed5) - تمت ترقية الدالة الإنشائية
LineHeightStyle.Alignment(topRatio)إلى واجهة برمجة تطبيقات ثابتة. (I79c32، b/261565383) - لم تعُد واجهة برمجة التطبيقات
TextMeasurerوالواجهات ذات الصلة بها تجريبية. (I74647، b/261581753) - تمت إضافة إجراء
PerformImeActionالدلالي لاستدعاء إجراء محرر أسلوب الإدخال على عقد محرر النصوص. (Ic606f، b/269633506) - لم تعُد واجهات برمجة التطبيقات
PlatformTextInputتجريبية على Android. (I668eb) - تم تغيير اسم مَعلمة القيمة
Enum.valueOf(Ia9b89) - المزيد من الاستثناءات التي تم طرحها من enum valueOf (I818fe)
- تم تقديم واجهة برمجة التطبيقات الجديدة
PlatformTextInputAdapterالمنخفضة المستوى لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة التطبيقات الخاصة بالمنصة. (I58df4) - تمت إضافة المَعلمة
BlendModeإلى الطرقDrawScope.drawTextوParagraph.paintوMultiParagraph.paintلتوفير خوارزميات دمج مختلفة عند رسم نص على Canvas. (I57508) - تمّت إعادة تسمية
Font.MaximumAsyncTimeoutإلىFont.MaximumAsyncTimeoutMillis. إعادة التسمية فقط (I07af5) - تعديل قيم النقاط لكل بوصة لأجهزة
@Previewالمرجعية (Id6151، b/254528382) - أضِف المَعلمتَين
brushوalphaإلىBasicTextللسماح بتحريك النص أو ضبط فرشاة النص بكفاءة. - تحديد أنواع lambda غير المعبأة لكل من Float وDouble وLong وInt وShort في :ui:ui-unit (I6f18d وb/246961787)
إصلاح الأخطاء
- تمت إزالة عمليات تخصيص متعدّدة في تتبُّع سرعة المؤشر (I26bae)
- تقليل عمليات التخصيص في إدارة تخطيطات الإدخال باستخدام المؤشر (I5333a)
- تحسين استخدام ذاكرة Vector وعرض الإطارات الأولى (I2f3c6)
- تمت إزالة عمليات التخصيص عند رسم خطوط ونقاط باستخدام Canvas (I9f535)
- إضافة مستندات لـ
AndroidFont.fontVariationSettings(I7d9e2)
المساهمة الخارجية
- تحسين الأداء وتقليل عمليات التخصيص في Vector APIs (I906cb)
الإصدار 1.5.0-alpha04
10 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha04. يتضمّن الإصدار 1.5.0-alpha04 هذه التعديلات.
الميزات الجديدة
Modifier.Nodeتحسينات على التفويض تمت إضافة إمكانية محسّنة للتفويض إلى مثيلاتModifier.Nodeأخرى منDelegatingNode. يمكن إجراء ذلك باستخدام واجهتَي برمجة التطبيقاتdelegateوundelegate. قبل هذا التغيير، كان يجب تفويض كل واجهة برمجة تطبيقات من العقدة المفوضة بشكلٍ صريح إلى العقدة المفوض إليها. بعد هذا التغيير، سيتم تفويض واجهات العُقد ضمنيًا ما لم يتم إلغاؤها صراحةً باستخدامDelegatingNode. (67352bc)
تغييرات واجهة برمجة التطبيقات
- قدِّم
NestedScrollModifierNode، وهوNestedScroll Modifier.Nodeيمكن تفويضه. (I69513) - تمت إضافة المَعلمتَين
onResetوonReleaseإلى الدالة المركّبةAndroidViewBinding، ما يطابق الدالة المركّبةAndroidViewويتيح إمكانية إعادة استخدام العرض باستخدامViewBinding. (I00b1e، b/276802519) - تم تعديل واجهة برمجة التطبيقات Compose Path API لتتيح عمليات الترجيع من أجل دعم حالات الاستخدام التي تتضمّن تعديلاً متكررًا على المسار مع إعادة استخدام أسرع. (I7b797)
- تمّت إضافة
TextStyle.merge(...)محسَّنة مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تم تثبيت العديد من واجهات برمجة التطبيقات الخاصة بالنصوص والتي تتضمّن
BrushوDrawStyleوTextMotionوDrawScope.drawTextوParagraph.paint(Brush)وMultiParagraph.paint(Brush). (I2f740، b/261581564، b/261581931، b/261561245) - تمت إعادة تفعيل
PlatformTextStyle.includeFontPadding. كانت نيتنا الأصلية هي إزالة الحقل، ولكن تشير الملاحظات إلى أنّ المطوّرين يحتاجون إلى خيار الإعداد هذا. لذلك، أزلنا الإيقاف النهائي من الحقل (I98e96، b/277703184).
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ظهور لوحة المفاتيح في الحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها باستخدام العنصر القابل للإنشاء
Dialog. (I82551، b/262140644)
الإصدار 1.5.0-alpha03
19 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه التعديلات.
الميزات الجديدة
- السلوك التلقائي الجديد لـ
SubcomposeLayoutفيLookaheadScope: تعمل الآنSubcomposeLayoutsالتي لا تحتوي على خانات مشروطة (مثلTabRowوScaffoldوBoxWithConstraintsوما إلى ذلك) بشكل جيد مع الرسوم المتحركة المسبقة.
تغييرات واجهة برمجة التطبيقات
- تتيح السمة التلقائية الجديدة
intermediateMeasurePolicyالتي تعيد استخدام سياسة القياس من عملية البحث المسبق إمكانية استخدام الأنواع الفرعيةSubcomposeLayoutبدون خانات مشروطة، مثلScaffoldوTabRowوBoxWithConstraints، مع عملية البحث المسبق تلقائيًا. (Id84c8) - سيحظر أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android المكالمات الواردة إلى
withFrameNanosفقط بدلاً من كل المحتوى المركّب عند تلقّي إشعارON_STOP. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقّفة ستستمر في إعادة الإنشاء عند حدوث تغييرات في البيانات، ولكن سيتم حظر الحركات أو أيّ برنامج آخر يستدعيwithFrameNanos. (Id9e7f، b/240975572) - تغيير
motionEventSpyإلى الإصدار الثابت (Ic5ec4، b/261560988) - تمت إضافة طريقة
TextRange.constrainالعامة. (I97912) - لم يعُد
PlatformTextStyle.includeFontPaddingمتوقفًا نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة التطبيقات المتوافقة هذه للتبديل واختبار ضبطincludeFontPaddingعلى "خطأ". (I98e96، b/277703184)
الإصدار 1.5.0-alpha02
5 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- واجهة برمجة التطبيقات
SubcomposeLayoutالجديدة التي تتضمّن سياسة وسيطة إضافية للتعامل مع منطق القياس/التنسيق أثناء الرسوم المتحركة المستندة إلى التوقّع المسبق. (I017d3) - أصبحت السمة PointerInput الآن تعمل بشكل غير متزامن وتستخدم Modifier.Node لتحسين الأداء (مزيد من المعلومات عن التغيير الطفيف في السلوك). (15dab9)
- تغيير واجهات برمجة التطبيقات التجريبية إلى واجهات ثابتة باستخدام الأحداث الرئيسية (I9c7d8، b/261566839، b/261567368)
- تغيير واجهات برمجة التطبيقات التجريبية إلى إصدار ثابت في
PointerInputChange(I1b543، b/261560988، b/261565762، b/261565749) - تضيف هذه السمة طريقة لإنشاء مثيل من
SuspendingPointerInputModifierNodeلتنفيذ عملياتModifier.Nodeأكثر تعقيدًا. (Ic4933) - يمكن الآن فتح
UrlAnnotationفيAnnotatedStringمن خلال خدمات تسهيل الاستخدام، مثلTalkBack. (If4d82، b/253292081) - تمت إضافة واجهة برمجة تطبيقات لاعتراض مفاتيح الأجهزة قبل إرسالها إلى لوحة المفاتيح الافتراضية (I4f4c6، b/186800395)
- تمت إضافة إجراء
InsertTextAtCursorالدلالي لحقول النص. (I11ed5) - ستطلب الآن إجراءات الاختبار المتعلّقة بالنصوص (مثل
performTextInput) التركيز مباشرةً، باستخدام الإجراء الدلالي، بدلاً من النقر على الحقل. (I6ed05)
إصلاح الأخطاء
- تتطلّب إجراءات اختبار النص الآن تفعيل حقول النص. (Iab328)
الإصدار 1.5.0-alpha01
22 مارس 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم يعُد Modifier.intermediateLayout يتطلّب LookaheadScope صريحًا. يحتوي حظر القياس في intermediateLayout على IntermediateMeasureScope كمستقبِل، ما يوفّر CoroutineScope وLookaheadScope وMeasureScope بشكل مناسب.(Ibe2e5)
- تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد Layout. يتيح ذلك التحكّم مباشرةً في محتوى الطفل في LookaheadScope من خلال MeasurePolicy الخاص بالوالد. (Ibe2e5)
- تضيف هذه السمة
Modifier.Node#coroutineScopeللسماح لـ Modifier.Nodes بتشغيل إجراءات روتينية. (I76ef9) - السماح لفئة Modifier.Nodes بقراءة CompositionLocals من خلال تنفيذ واجهة CompositionLocalConsumerModifierNode (Ib44df)
- نقل فئة @Deprecated إلى السمة (I882d1)
الإصدار 1.4
الإصدار 1.4.3
3 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.4.3. يتضمّن الإصدار 1.4.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عرض
AndroidViewبشكلٍ صحيح عند استخدامه مع بعض المعدِّلات. (I4dc77، b/274797771) - تم إصلاح خطأ في ميزة "البحث مع التركيز الثنائي الأبعاد" كان يؤثر في
DropDownالقوائم (b/276811828) - تم إصلاح خطأ في خصائص الدخول/الخروج من التركيز المخصّص التي لم يتم تشغيل كتلة الدخول/الخروج إلا في المرة الأولى التي تم فيها استدعاء تعبير lambda (b/277234245)
- تم إصلاح مشكلة في نظام التركيز تسبّبت في حدوث تعطُّل أثناء قراءة
focusProperties. (b/271324781 وb/274897776)
الإصدار 1.4.2
19 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.4.2. يتضمّن الإصدار 1.4.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة استخدام
AndroidViewللمعدِّلات بشكلٍ صحيح، ما قد يؤدي إلى حدوث سلوك غير متوقّع وتعطُّل. (Ib67ee، b/275919849) - تم إصلاح مشكلة تراجع حيث لم تكن لوحة المفاتيح تظهر للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للإنشاء
Dialog(I82551، b/262140644)
الإصدار 1.4.1
5 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.4.1. يتضمّن الإصدار 1.4.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تأثير
ParentDataModifierفيAndroidView(b/274797771)
الإصدار 1.4.0
22 مارس 2023
تم طرح androidx.compose.ui:ui-*:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.3.0
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainerجديدة تتيح تثبيت عناصر القائمة الكسولة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، تستخدمModifier.focusable()هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881، b/259274257، b/195049010) - تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة
Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589) - تمت إضافة السمة الدلالية
IsContainerإلى "الأسطح". سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب الانتقال استنادًا إلى المعنى الدلالي للعناصر، مثل المساحات. (I63379) - تمت إضافة دور جديد لتسهيل الاستخدام
DropdownList. يمكن استخدام هذا الخيار لتكرار سلوكTalkBackعند التركيز علىandroid.widget.Spinner. (I177e5، b/236159001) - يمكنك الآن استخدام
PlatformTextStyle(emojiSupportMatch)لإيقاف معالجة الرموز التعبيرية بشكل اختياري لفقرة واحدة. (Ia7100، b/139326806) - ستنفِّذ الآن اختبارات واجهة المستخدم في Android Compose عمليات تمرير التنسيق لكل إطار عند تنفيذ الإطارات للوصول إلى حالة عدم النشاط (على سبيل المثال، من خلال
waitForIdle). وقد يؤثّر ذلك في الاختبارات التي تؤكّد على إطارات فردية من الرسوم المتحركة للتنسيق. (I8ea08، b/222093277) - تمت إضافة
TextMotionتجريبية إلىTextStyleلتحديد ما إذا كان النصStatic(default)أو متحركًا. استخدِمTextMotion.Animatedإذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره باستخدام رسوم متحركة. (I24dd7)
الإصدار 1.4.0-rc01
8 مارس 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-rc01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تحميل زائد للدالة المركّبة
AndroidView، والتي تقبل المَعلمةonReset. يسمح بإعادة استخدام مثيلات View عندما يتم تجاهل عقدتها في التركيب وإعادة استخدامها بطريقة متوافقة. ويفيد ذلك بشكل خاص فيLazyRowsوLazyColumnsمن المشاهدات. (I3f10d، b/230099236) - تم تقديم واجهة برمجة التطبيقات الجديدة
PlatformTextInputAdapterالمنخفضة المستوى لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة التطبيقات الخاصة بالمنصة. (I58df4)
إصلاح الأخطاء
- سيعدّل الإجراء الدلالي
BasicTextFieldفيSetTextالآن مخزن النص المؤقت باستخدام مسار الرمز البرمجي نفسه المستخدَم في تعديلات IME ووظائف الاختبار (مثلperformTextReplacement). - تستخدم دوال اختبار النصوص
performTextClearanceوperformTextReplacementوperformTextSelectionالآنSemanticsActions. (I0807d، b/269633168، b/269624358)
الإصدار 1.4.0-beta02
22 فبراير 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-beta02. يتضمّن الإصدار 1.4.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات
modifierElementOf(). يُرجى تمديدها منModifierNodeElementمباشرةً بدلاً من ذلك. (I2256b) - تمت إضافة دالة ردّ نداء جديدة
Modifier.Node.onReset()تتيح لك إعادة ضبط بعض الحالات المحلية للتعامل بشكل صحيح مع الحالة التي سيتم فيها إعادة استخدامLayout(على سبيل المثال، كعنصر منLazyColumn). تم إصلاحFocusTargetModifierNodeلإعادة ضبط وضع التركيز بشكل صحيح. (I65495، b/265201972) - تمت إضافة المَعلمة
BlendModeإلى الطرقDrawScope.drawTextوParagraph.paintوMultiParagraph.paintلتوفير خوارزميات دمج مختلفة عند رسم نص على Canvas. (I57508)
إصلاح الأخطاء
- تم تحسين خوارزمية ترتيب التركيز على إمكانية الوصول، على سبيل المثال، تتم قراءة الأشرطة العلوية/السفلية غالبًا أولاً/أخيرًا على التوالي (74e9c5)
الإصدار 1.4.0-beta01
8 فبراير 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية "
PinnableContainer.PinnedHandle.unpin()" إلى "release()" (I4667a) - تمت إضافة
waitUntilNodeCountوwaitUntilAtLeastOneExistsوwaitUntilExactlyOneExistsوwaitUntilDoesNotExistكواجهة برمجة تطبيقات تجريبية إلىComposeTestRule، ما يؤدي إلى توسيع نطاق واجهة برمجة التطبيقاتwaitUntilلقبول أي أداة مطابقة وأي عدد من العُقد. يمكنك الاطّلاع علىComposeTestRuleللحصول على مستندات إضافية. (Ifa1b9، b/226934294) - تمّت إعادة تسمية
Font.MaximumAsyncTimeoutإلىFont.MaximumAsyncTimeoutMillis. (I07af5) - تمت إزالة
GoogleFont.Provider.AllFontsListUriوتمت إضافة رابط يؤدي إليها في ktdoc بدلاً من ذلك. (I16f29)
إصلاح الأخطاء
- إضافة مستندات لـ
AndroidFont.fontVariationSettings(I7d9e2)
الإصدار 1.4.0-alpha05
25 يناير 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم عمليات تحميل تجريبية جديدة للدالة
runComposeUiTestوالدالتينcreate*ComposeRuleاللتين تقبلان المَعلماتCoroutineContext. سيتم استخدام السياق في تركيبة الاختبار وأي طلباتLaunchedEffectوrememberCoroutineScope()في التركيبة. (I10614، b/265177763) - إضافة واجهة برمجة تطبيقات جديدة لتتبُّع السرعة الأحادية البُعد (If5a82)
- تم الآن وضع علامة
@Stableعلى "FocusRequester". (I580ee) - أزِل تعليقًا توضيحيًا تجريبيًا من الدالة الإنشائية
DialogPropertiesالتي تأخذ المَعلمةusePlatformDefaultWidth. (Ic4048) - تمت إضافة دالة لاحتساب الموضع والمماس على مسافة معيّنة على مسار باستخدام
PathMeasure.getPosition()وPathMeasure.getTangent()(I3b47c) - تمت إزالة أداة ضبط عامة تم عرضها عن طريق الخطأ في
PlatformParagraphStyle. (I07f47) - المزيد من أنواع/إمكانية قبول القيم الفارغة للدوال المضمّنة/المخفية التي تم إيقافها نهائيًا (I24f91)
- أضِف
AnnotatedString.hasStringAnnotationsلطلب البحث عن التعليقات التوضيحية التي تتضمّن عمليات تخصيص بقيمة صفر. (I94dfe، b/246960758) - تمت إضافة تحميل زائد جديد للدالة
TextMeasurer.measureيقبلStringكنص. (I47b2d، b/242705342) - تمت ترقية واجهتَي برمجة التطبيقات
LineBreakوHyphensفي TextStyle إلى إصدار ثابت. (Ic1e1d)
المساهمة الخارجية
- لن يتم إيقاف طريقتَي
notifyFocusedRectفيTextInputSessionوTextInputServiceنهائيًا مرة أخرى. (I23a04، b/262648050)
الإصدار 1.4.0-alpha04
11 يناير 2023
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainerجديدة تتيح تثبيت عناصر القائمة الكسولة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، تستخدمModifier.focusable()هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881، b/259274257، b/195049010) - تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة
Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589) - تمت إضافة السمة الدلالية
IsContainerإلى "الأسطح". سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب الانتقال استنادًا إلى المعنى الدلالي للعناصر، مثل المساحات. (I63379) - تمت إضافة دور جديد لتسهيل الاستخدام
DropdownList. يمكن استخدام هذا الخيار لتكرار سلوكTalkBack'sعند التركيز علىandroid.widget.Spinner. (I177e5، b/236159001) - يمكنك الآن استخدام
PlatformTextStyle(emojiSupportMatch)لإيقاف معالجة الرموز التعبيرية بشكل اختياري لفقرة واحدة. (Ia7100، b/139326806) - ستنفِّذ الآن اختبارات واجهة المستخدم في Android Compose عمليات تمرير التنسيق لكل إطار عند تنفيذ الإطارات للوصول إلى حالة عدم النشاط (على سبيل المثال، من خلال
waitForIdle). وقد يؤثّر ذلك في الاختبارات التي تؤكّد على إطارات فردية من الرسوم المتحركة للتنسيق. (I8ea08، b/222093277) - تمت إضافة
TextMotionتجريبية إلىTextStyleلتحديد ما إذا كان النصStatic(default)أو متحركًا. استخدِمTextMotion.Animatedإذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره باستخدام رسوم متحركة. (I24dd7)
تغييرات واجهة برمجة التطبيقات
- تم استبدال الوسيطة
maxSize: IntSizeفيdrawTextبالوسيطةsize: Sizeلتكون متوافقة مع دوالDrawScopeالأخرى. يتم ضبطsizeعلىSize.Unspecifiedتلقائيًا، ما يعني أنّه لن يتم تغيير السلوك التلقائي السابق. (Icd27d) - تمت إزالة أداة إنشاء الخط التجريبية المتوقّفة نهائيًا. (I8a724، b/261435386)
- يحتوي الآن فئة بيانات أدوات واجهة المستخدم
Groupعلى حقلisInlineيشير إلى ما إذا كانت المجموعة مخصّصة لاستدعاء دالة قابلة للإنشاء مضمّنة. إذا كانت قيمةisInlineهيtrue، يعني ذلك أنّ الاستدعاء يتم لدالة مركّبة مضمّنة. ومع ذلك، قد تكون القيمة خطأ بالنسبة إلى عمليات استدعاء الدوال المركّبة المضمّنة من الوحدات التي يتم تجميعها باستخدام إصدار من مكوّن Compose الإضافي للمجمّع لا ينشئ معلومات الدالة المضمّنة. (Idb846) - نقل عدد من واجهات برمجة التطبيقات التجريبية السابقة إلى الإصدار الثابت
- أصبح Rotary Scroll Event API ثابتًا الآن (I42ad3، b/261561229)
- أصبحت واجهة برمجة التطبيقات
FontVariationثابتة الآن (I8779f، b/241016309) - أصبحت جميع أدوات إنشاء
Font()الآن واجهة برمجة تطبيقات ثابتة (I5948b وb/261435386) - أصبحت
DeviceFontFamilyNameالآن إصدارًا ثابتًا (I8b640، b/261435386) - أصبحت الدالة الإنشائية
AndroidFontالتي تتضمّنvariationSettingsالآن واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من واصفات الخطوط. (I5adcc، b/261565807) - أصبحت واجهة برمجة التطبيقات
createFontFamilyResolverAPI ثابتة الآن. يمكن استخدام هذا الإعداد لرصد الاستثناءات غير المعالَجة أثناء تحميل الخطوط بشكل غير متزامن. (Ibb481، b/261435386) - أصبحت واجهة برمجة التطبيقات
Font.loadingStrategyAPI ثابتة الآن. (I5937c، b/261435386) - أصبحت واجهة برمجة التطبيقات
GoogleFontAPI ثابتة الآن. (Ic90b0، b/261435386) - أصبحت واجهة برمجة التطبيقات
TextUnit(float, TextUnitType)الآن واجهة برمجة تطبيقات ثابتة. (I90c84، b/261561612) - أصبحت واجهة برمجة التطبيقات
pluralStringResourceالآن واجهة برمجة تطبيقات ثابتة. (I09849، b/261439703)
الإصدار 1.4.0-alpha03
7 ديسمبر 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ExperimentalComposeUiApiمنPointerIcon(I23af8) - إضافة إجراءات تسهيل استخدام الصفحة:
PageUpوPageDownوPageLeftوPageRightيُرجى العِلم أنّ هذه الميزات متاحة فقط بدءًا من المستوى 29 لواجهة برمجة التطبيقات. (Ida4ab) - تم تعديل طريقة عرض المَعلمة
rememberNestedScrollConnectionمن العرض الجذر إلى عرض المضيف. (Ia5200) - تمت إضافة Modifier API للاستعلام عن معلومات التمرير الخاصة بالعناصر الرئيسية. (I2ba9d، b/203141462)
- يُستخدَم في
Clickableلتأخير التفاعلات مع الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث تمرير. - تم إصلاح المشكلة التي كانت تتسبّب في عدم تأخير تأثيرات التموّج بشكل صحيح عند استخدام
ClickablesداخلScrollable ViewGroup. - تم تعديل الأدراج وأوراق البيانات لتأخير الضغطات بشكل صحيح في حال إمكانية تحوّل الإيماءات إلى أحداث تمرير.
- تمت إعادة تسمية
CompositingStrategy.AlwaysإلىOffscreenللإشارة إلى أنّه سيتم دائمًا عرضgraphicsLayerفي مخزن مؤقت وسيط (I47dc1) - أصبح التحميل الزائد للتنسيق مع خانات محتوى متعدّدة ثابتًا الآن (I10566، b/248294649)
- تمت إضافة واجهتَي برمجة تطبيقات تجريبيتين جديدتين
PerfettoTrace.record {}وPerfettoTraceRuleلتسجيل بيانات تتبُّع Perfetto (المعروفة أيضًا باسم "بيانات تتبُّع النظام") كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16) - في اختبارات واجهة المستخدم التي تستخدم قاعدة Compose، لن يتم إرسال عمليات الاستئناف التي تم استئنافها أثناء عمليات معاودة الاتصال
withFrameNanosإلا بعد انتهاء جميع عمليات معاودة الاتصال بإطارات التشغيل. يتطابق هذا مع سلوك الإنشاء عند التشغيل بشكل طبيعي. ومع ذلك، قد يتعذّر إجراء الاختبارات التي تعتمد على السلوك القديم. من المفترض أن يؤثر ذلك فقط في الرموز التي تستدعيwithFrameNanosأوwithFrameMillisمباشرةً، والتي تتضمّن منطقًا خارج دالة رد الاتصال التي تم تمريرها إلى هاتين الدالتين، وقد تحتاج إلى نقلها إلى داخل دوال رد الاتصال. يمكنك الاطّلاع على التغييرات في اختبار الصورة المتحركة في طلب التغيير هذا للحصول على أمثلة. - تمت إضافة المَعلمة الاختيارية
onPerformTraversals: (Long) -> Unitإلى الدالة الإنشائيةTestMonotonicFrameClockودالة المصنع لتشغيل الرمز بعد عمليات رد الاتصالwithFrameNanosولكن قبل استئناف إجراءات الروتين الفرعي للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670) - إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806)
- تمت إضافة مَعلمة خلفية جديدة إلى
@Previewلإتاحة الألوان الديناميكية (I9f512)
إصلاح الأخطاء
- يتم الآن إرسال إشعارات تطبيق اللقطة بعد انتهاء
Recomposerمن تطبيق التغييرات. (Iad6c0، b/222093277) - تم إجراء تغييرات في
captureToImageللسماح بالتقاط لقطات شاشة في النوافذ المتعددة. ويكون ذلك مفيدًا لاختبارات لقطات الشاشة التي تستخدم PopUp في Compose. (I169c5)
تحديثات الاعتماديات
- تعتمد مكتبتا Compose UI وCompose Material الآن على الإصدار 2.5.1 من Lifecycle. (I05ab0، b/258038814)
الإصدار 1.4.0-alpha02
9 نوفمبر 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تعديل
GraphicsLayerScopeلعرض الحجم الحالي لـgraphicsLayer. ويكون ذلك مفيدًا لاحتساب عمليات تحويلgraphicsLayerكدالة لحجم Composable. (If8c43،b/181387080) - تمت إضافة
CompositingStrategyلتحديد وقت استخدام طبقة تركيب خارج الشاشة لعرض محتوىgraphicsLayer. تحتفظ السمة Auto بالسلوك التلقائي الذي يستفيد داخليًا من طبقة إذا تم تطبيق ألفا أوRenderEffect/Overscroll. سيؤدي ضبط القيمة على "دائمًا" إلى إنشاء مخزن مؤقت خارج الشاشة، حيث سيتجنّبModulateAlphaاستخدام مخزن مؤقت خارج الشاشة، وبدلاً من ذلك سيعدّل كل تعليمات الرسم المسجّلة ضمنgraphicsLayer. سيظل استخدامModulateAlphaيستفيد من المخزن المؤقت خارج الشاشة لاستخداماتRenderEffect/Overscroll(I25e82، b/256382834) - تمت إضافة
invalidateSubtree()إلىModifier.Nodeللسماح بإبطال التسلسلات الهرمية بأكملها للتنسيق والرسم. (I4bd90) - ترقية
rememberNestedScrollInteropConnectionإلى الإصدار الثابت تم توفير إمكانية تمرير طريقة عرض جذر إلىrememberNestedScrollInteropConnection. يمكن أن يساعد ذلك في أن تتفاعل طريقة العرض المخصّصة بشكل أفضل مع قيود التمرير، خاصةً في طرق العرض غير العادية (مثلModalBottomSheetDialog). (I9e107) - تمت إضافة واجهة
ObserverNodeالتي يمكن استخدامها من خلال عمليات تنفيذModifier.Nodeالتي يجب إعلامها عند تغيير قيمة سبق أن قرأتها (I5728b، b/247716483) - تمت إضافة منشئ جديد إلى
Paintيقبلandroid.graphics.Paintأصليًا. تمت أيضًا إضافة دالة إضافيةtoComposePaint()تحوّل عنصر Paint أصليًا حاليًا إلى Compose Paint. (Ica91b) - أضِف
FontFamily.Resolver.resolveAsTypefaceجديدًا لاستخدامه على Android. (I8950b) - إضافة
ToolingStateللسماح للأدوات بتغيير الحالات الداخلية لـ Composable (Ie6614) - إعادة تصميم الأدوات لتوفير دعم أفضل للرسوم المتحركة الجديدة المضافة (I8677b)
- تمت إضافة المَعلمة
minLinesإلى النص في Material وMaterial3، وTextFieldوOutlinedTextField، ما يتيح ضبط الحد الأدنى لارتفاع المكوّن من حيث عدد الأسطر (I4af1d)
الإصدار 1.4.0-alpha01
24 أكتوبر 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة جديدة،
awaitEachGesture()، لأدوات رصد الإيماءات. تعمل هذه السمة بشكل مشابه للسمةforEachGesture()، ولكنّ حلقة الإيماءات تعمل بالكامل ضمنAwaitPointerEventScope، وبالتالي لا يمكن فقدان الأحداث بين التكرارات. - تم إيقاف
forEachGesture()نهائيًا واستبداله بـawaitEachGesture()لأنّه يسمح بفقدان الأحداث بين الإيماءات. (Iffc3f، b/251260206) - إيقاف إعادة استخدام عناصر تسهيل الاستخدام نهائيًا في androidx لقد تبيّن لنا أنّ التغييرات في الأداء لا تُذكر حتى في أقدم الإصدارات المتوافقة. (I0a961)
- تمت إضافة
DrawStyleكسمة تجريبية إلىTextStyleوSpanStyleلتفعيل رسم نص محدّد. (If24b8، b/155421273) - تستخدم
AnnotatedString.Builderالآنkotlin.text.Appendable. (I1a061، b/231030444) - يحتوي
AnnotatedString.Builderالآن على طريقةappend(AnnotatedString, start: Int, end: Int)لإلحاق سلسلة فرعية منAnnotatedStringوالأنماط المتقاطعة. - تمت إضافة المَعلمة
DrawStyleإلى دالتَي الطلاءParagraphوMultiParagraphاللتين تتيحان رسم نص محدّد. (Ic8102، b/155421273)
المساهمة الخارجية
- شكرًا على
vighneshلإضافة أجهزة التلفزيون إلى المعاينات (Ie15cd)
الإصدار 1.3
الإصدار 1.3.3
11 يناير 2023
تم طرح androidx.compose.ui:ui-*:1.3.3. يتضمّن الإصدار 1.3.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل كان يحدث أحيانًا على Android 9 عندما يحفظ النشاط حالة "عرض Compose". (I0b755، b/260322832)
الإصدار 1.3.2
7 ديسمبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.2. يتضمّن الإصدار 1.3.2 هذه التعديلات.
إصلاح الأخطاء
- تم تعديلها لاستخدام الإصدار 3.21.8 من Profobuf، ما يمنع ظهور تنبيه أمني في
protobuf-javalite:3.19.4(CVE-2022-3171) (b/255545055)
الإصدار 1.3.1
9 نوفمبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.1. يتضمّن الإصدار 1.3.1 هذه التعديلات.
الإصدار 1.3.0
24 أكتوبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.2.0
- مجموعة جديدة تجريبية من واجهات برمجة التطبيقات
LookaheadLayout(تتيح سلوكيات رسوم متحركة لم يكن من الممكن تنفيذها سابقًا) - مجموعة جديدة تجريبية من واجهات برمجة التطبيقات
Modifier.Node(بديلModifier.composedذو أداء أفضل) - تحسين توافُق حواف النوافذ
- إتاحة التركيز على لوحة المفاتيح الخارجية ولوحات التحكّم الاتجاهية في LazyLists
- تم تقليل الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة إلى 8 وحدات بكسل (تغيير في السلوك يؤدي إلى حدوث مشاكل في بعض أنظمة التصميم المخصّصة – الأساس المنطقي في ملاحظات الإصدار beta01)
- العديد من التحسينات البسيطة غير المتوافقة مع الإصدارات السابقة في واجهة برمجة التطبيقات
- إصلاح العديد من الأخطاء وتحسينات في الأداء
الإصدار 1.3.0-rc01
5 أكتوبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات التجريبية الجديدة Hyphens لإتاحة التقطيع التلقائي للكلمات في النص (Iaa869)
إصلاح الأخطاء
- لن يتم ضبط إعدادات
wghtوitalالمتغيرة تلقائيًا على خطوطDeviceFontFamilyName، بل سيتم استخدام إعدادات النظام الأساسي لخطوطTypefaceالمحمَّلة. (Ia7a6d، b/246989332) - تم إصلاح تسريب الذاكرة
LazyColumn- لم يتم استدعاءonModifierLocalsUpdatedبالقيمة التلقائية عند إعادة استخدام المعدِّلات (b/230168389)
الإصدار 1.3.0-beta03
21 سبتمبر 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-beta03. يتضمّن الإصدار 1.3.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة خيارات لتخصيص تقسيم الأسطر في "النص" (I86907)
- تم تغيير وسيطة
size:IntSizeإلىconstraints: Constraintsفي طريقةTextMeasurer.measureلتوفير قيود الحد الأدنى للعرض. (I37530، b/242707525)
إصلاح الأخطاء
- تعمل واجهة برمجة التطبيقات
BackHandlerالخاصة بـ AndroidX Activity الآن ضمن عنصرDialogقابل للإنشاء. (I35342)
الإصدار 1.3.0-beta02
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تحميل تجريبي زائد للسمة Layout يقبل قائمة من عدة دوال لامدا قابلة للإنشاء، ما يتيح التعامل مع العناصر القابلة للقياس التي يتم وضعها في دوال لامدا مختلفة للمحتوى بشكل مختلف (Ic1b4e)
التغييرات في واجهات برمجة التطبيقات التجريبية الخاصة بميزة "التركيز":
- تم إيقاف
FocusDirection.InوFocusDirection.Outنهائيًا واستبدالهما بـFocusDirection.EnterوFocusDirection.Exit. (Ia4262، b/183746982) - تمت إضافة سمتَي التركيز الجديدتَين enter وexit لتحديد سلوك مخصّص للعنصرَين
FocusManager.moveFocus(Enter)وFocusManager.moveFocus(Exit). (I5f3f9، b/183746982) - يمكنك الآن استخدام
FocusRequester.Cancelلإلغاء حركة التركيز. يمكن استخدامFocusRequester.Cancelفي أي من خصائص التركيز التالية: up وdown وleft وright وnext وprevious وstart وend وenter وexit. (Ib300f)
الإصدار 1.3.0-beta01
24 أغسطس 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.
إعادة هيكلة عقدة المعدِّل
تمت إعادة تصميم الطبقة التي تتعامل مع مثيلات Modifier/Modifier.Element وتنسّق سلوكها على LayoutNodes بشكل كبير. في الوقت الحالي، كان هذا إعادة تصميم لم تؤثّر في واجهة برمجة التطبيقات العامة لأي من المعدِّلات العديدة في Compose، ويمكن اعتبارها تغييرًا على مستوى التنفيذ فقط. مع ذلك، هذا تغيير مهم لعدة أسباب. (Ie4313)
ملخّص التغييرات
توفّر واجهات برمجة التطبيقات التجريبية Modifier.Node المُضافة تجريدًا يسمح بالحفاظ على الحالة في مثيل سيتم الاحتفاظ به مع دورة حياة عقدة التصميم، وسيتم تخصيصه لكل عقدة تصميم ولكل استخدام للعنصر Modifier.Element المقابل الذي أنشأه.
وبشكل عام، يوفّر هذا التجريد آلية بديلة لإنشاء معدِّلات ذات حالة بدون الاعتماد على آليات واجهة برمجة التطبيقات Modifier.composed.
المخاطرة
يتوافق هذا التغيير تمامًا مع الإصدارات السابقة، ويهدف إلى التوافق مع الإصدارات القديمة من حيث السلوك الملحوظ قدر الإمكان والمعقول. ومع ذلك، هناك بعض الأنظمة الفرعية في Compose لم يتأثر بها هذا التعديل، ومن المحتمل أن يكون السلوك قد تغيّر بطرق لم تغطّها اختباراتنا ولم يتم العثور عليها وإصلاحها بعد.
يُرجى الترقية إلى هذا الإصدار بحذر. إذا كنت تعتقد أنّ هذا التغيير قد أثّر سلبًا في تجربتك، يُرجى إعلامنا بذلك.
واجهات برمجة التطبيقات التجريبية
تمت إضافة واجهات برمجة تطبيقات تجريبية مختلفة، وكلها مرتبطة بالمفهوم الجديد "عقدة المعدِّل". يتم إنشاء Modifier.Node’s نتيجةً لما يلي:
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
تغيير في السلوك يؤدي إلى حدوث خطأ
تم خفض الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة إلى 8 وحدات بكسل مستقلة الكثافة.
تم خفض الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة في Compose من 30dp إلى 8dp. يؤثّر هذا التغيير في مربّعات الحوار المخصّصة والنوافذ المنبثقة لكلّ من Material وUI. تم إجراء هذا التغيير للحدّ من خطأ في إمكانية الوصول على إصدارات Android الأقدم من الإصدار S، ولضمان قدرة خدمات تسهيل الاستخدام داخل هذه النوافذ على التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.
لن يؤثّر هذا التغيير فيك إلا إذا كنت تنشئ تنفيذًا مخصّصًا لمربّع حوار أو نافذة منبثقة مع ضبط مستوى الارتفاع على أكثر من 8 وحدات بكسل مستقلة عن الكثافة. ننصحك بخفض مستوى ارتفاع مربّع الحوار أو النافذة المنبثقة. إذا كنت بحاجة إلى إيقاف هذا السلوك الجديد، يمكنك إنشاء نسخة من مربّع الحوار أو النافذة المنبثقة مع ضبط مستوى الارتفاع المطلوب. لا يُنصح بذلك، لأنّ ذلك قد يؤثّر سلبًا في إمكانية الوصول، ويقع على المطوّر مسؤولية ضمان إمكانية التفاعل مع الجزء السفلي من مربّع الحوار أو النافذة المنبثقة وإمكانية قراءته من خلال خدمات تسهيل الاستخدام.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة عدم تعديل
painterResourceعند إجراء تغييرات في الإعدادات (I58e73، b/228862715) - لم يعُد
rememberTextMeasurerيقبل المَعلماتFontFamily.ResolverأوDensityأوLayoutDirection. يُرجى استخدام أداة الإنشاءTextMeasurerلتقديم قيم مخصّصة لهذه المَعلمات. (Ia1da3) - تمت إضافة السمة
DialogProperties.decorFitsSystemWindowsلإتاحة استخدامWindowInsetsفي مربّعات الحوار. (I57742، b/229378542) - تم نقل دوال إنشاء الخطوط إلى ملف Kotlin الأصلي للحفاظ على التوافق الثنائي. لم يطرأ أي تغيير مقارنةً بآخر إصدار ثابت. (Ieb2f3)
- تمت إزالة عامل غير ضروري من عدة تعريفات للمساواة، وهذا ليس له أي تأثير. (I6c309)
-
FontVariation.Settingهي واجهة محكمة الإغلاق، وذلك للسماح بواجهات برمجة تطبيقات مستقبلية للحدّ من التتبُّع. (I11021، b/143703328) - أضِف
CompositionGroup.findParametersإلىSlotTree.kt. يتيح ذلك للأدوات استرداد مَعلماتCompositionGroupبدون الحاجة إلى تحليل جدول الخانات الإعلانية بالكامل. (I124fe)
الإصدار 1.3.0-alpha03
10 أغسطس 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبحت
LayoutCoordinates.findRootCoordinates()متاحة للجميع (I7fa37، b/204723384) - تمت إضافة واجهة برمجة تطبيقات تجريبية للحصول على
LayoutCoordinatesفيPlacementScope. يتيح ذلك للمطوّرين معرفة مكان التنسيق الحالي لوضع العناصر الثانوية بالنسبة إلى موضعها. (I5482b، b/238632578) - تمت إضافة
LayoutCoordinates.transformFromللحصول على تحويل المصفوفة منLayoutCoordinatesإلى أخرى. (Ic5ab1، b/238632578) - تم إيقاف
SemanticsModifier.idنهائيًا ونقل رقم تعريف الدلالات إلىLayoutInfo.semanticsIdبدلاً من ذلك. (Iac808، b/203559524) - تتيح خطوط الموارد الآن ضبط إعدادات تنويع الخطوط (المستوى 26 من واجهة برمجة التطبيقات أو أعلى). (I900dd، b/143703328)
- إتاحة الخطوط المتغيّرة في
DeviceFontFamilyNameFont(Ic1279، b/143703328) - تقبل الآن أدوات إنشاء الخطوط قائمة
FontVariation.Settingلإعداد الخطوط المتغيرة على الأجهزة التي تعمل بالإصدار Android 8.0 (O) والإصدارات الأحدث. (I11a9d، b/143703328) - تمت إضافة واجهة برمجة التطبيقات
FontVariationلتحديد الخطوط المتغيرة واستخدامها. (I3c40c، b/143703328) - أصبح الدالة الإنشائية
LineHeightStyle.Alignmentالآن متاحة للجميع (تجريبية) (I4bbbe، b/235876330) - تم الآن تحديد الفقرة على أنّها expected|actual لكل من Android وأجهزة الكمبيوتر. (Id387e، b/239962983)
- أصبحت واجهة Paragraph الآن واجهة Paragarph محكمة الإغلاق. لا توجد حالة استخدام لتصنيف الفقرة، وننصحك بالتواصل معنا إذا كان هذا التغيير يؤثر فيك. (If5247، b/239962983)
- تمت إزالة التعليق التوضيحي التجريبي من
PlatformTextStyleوLineHeightStyle. (I64bef) - إيقاف
TextInputService.show|hideSoftwareKeyboardيُرجى استخدامSoftwareKeyboardControllerبدلاً من ذلك في رمز التطبيق وTextInputSessionفي رمز إدارة محرّك طرق الإدخال. (I14e4c، b/183448615) - إضافة واجهة برمجة تطبيقات جديدة لأنواع الرسوم المتحركة الحالية (I26179)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermissionإلى واجهات برمجة التطبيقات التي تتطلّب منح إذنPOST_NOTIFICATIONSعلى الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 1.3.0-alpha02
27 يوليو 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة السمة الجديدة
PointerInputChange#pressureلاسترداد الضغط. (I45a5e، b/205164819) - تمت إضافة
rememberTextMeasurerلتسهيل إنشاء مثيلاتTextMeasurerوتذكُّرها في التجميع. (I8d66e) - تتوافق
RectوRoundRectوMutableRectالآن مع بنيةinفي Kotlin لاستدعاء الدالةcontains. (Ie42b0، b/238642990) - أزِل الوظائف غير الضرورية من
KeyInjectionScope، لأنّه يمكن تنفيذها بسهولة باستخدام أجزاء أبسط من واجهة برمجة التطبيقات. تشمل الدوال التي تمت إزالتهاpressKeysوkeysDownوkeysUp. (I81d77) - تمت إعادة تصميم أسماء الثوابت والمَعلمات في
KeyInjectionScopeلتضمين اللاحقة "Millis" حيث تكون وحدات الثوابت والمَعلمات المذكورة بالملّي ثانية. (Iabef5) - تمت إضافة الطريقة
toStringForLog()إلىEditCommandللمساعدة في تحديد المشاكل وحلّها المتعلّقة بتعديل النصوص. (I53354، b/228862731) - تمت إضافة دالة الإضافة
drawTextإلىDrawScopeلتوفير طريقة لرسم نص متعدد الأنماط على العناصر القابلة للإنشاء والمعدِّلات التي تعمل علىDrawScopeمثلCanvasوdrawBehind. (I16a62، b/190787898) - نقدّم واجهة برمجة تطبيقات تجريبية جديدة باسم
TextMeasurerتتيح احتساب تخطيط نص عشوائي يؤدي إلى نتائج مطابقة لنتائجBasicText، بغض النظر عن وقت تشغيل Compose. (I17101) - أضِف
mapTreeإلىSlotTree.kt. يسمح ذلك للأدوات بفحصSlotTreeبدون إنشاء نسخة في الذاكرة أولاً، كما يفعل asTree. بالنسبة إلى "أداة فحص التصميم"، يؤدي ذلك إلى تحسين الأداء بمقدار 10 مرّات تقريبًا. (I5e113) - تم تغيير "معاينة الإنشاء" ليتم تخزينها في ملفات الإخراج الثنائية، وذلك للسماح للمطوّرين بكتابة وإعادة استخدام تعليقات توضيحية
MultiPreviewمن المكتبات. (I85699، b/233511976)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChangeإلى أداة التتبُّعVelocity، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكلٍ صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدَف (Icea9d، b/216582726، b/223440806، b/227709803). - تم إصلاح خطأ NPE الناتج عن
AnnotatedString.toUpperCaseعند توفّر التعليقات التوضيحية. (I0aca2، b/210899140)
الإصدار 1.3.0-alpha01
29 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
LookaheadLayoutجديد يتيح إجراء عملية بحث مسبق قبل القياس أو التخطيط الفعلي. يسمح ذلك بإجراء عملية حسابية مسبقة للتصميم عند تغيُّره، مع السماح للمقياس/التصميم بعد التوقّع المسبق باستخدام الحجم/الموضع المحسوب مسبقًا لتحريك الحجم والمواضع نحو الهدف. لا تتوفّرSubcomposeLayoutsبعد، ولكن ستتوفّر في إصدار قادم. (I477f5)- أضِف مَعلمة ألفا اختيارية إلى نكهة الفرشاة
TextStyleوSpanStyleلتعديل عتامةTextبالكامل. (Ic2fac، b/234117635) - تم تقديم نوع التعليق التوضيحي
UrlAnnotationوالطُرق المرتبطة به لتوفير إمكانية استخدام الروابطTalkBackفيAnnotatedString. (I1c754، b/231495122) - نقل وظائف الأداة إلى وقت التشغيل (I4f729)
إصلاح الأخطاء
TextLayoutResult.getLineForOffsetلا يطرح. (Idc5d6، b/235876324)
المساهمة الخارجية
- تمت إضافة واجهة برمجة تطبيقات جديدة
WindowInfo.keyboardModifiersلمراقبة حالتها ضمن الدوال القابلة للإنشاء أو من خلال snapshotFlow (Icdb8a)
الإصدار 1.2
الإصدار 1.2.1
10 أغسطس 2022
تم طرح androidx.compose.ui:ui-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ nullpointer في أداة الفحص (b/237987764)
- تم إصلاح استثناء تحويل الفئة أثناء التذكير في "أداة الفحص" (b/235526153)
الإصدار 1.2.0
27 يوليو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.1.0
تحسينات في التنقّل بين العناصر باستخدام التركيز:
- أصبح بإمكانك الآن استخدام ميزة التمرير المستند إلى التركيز في القوائم الكسولة، وذلك باستخدام واجهة برمجة التطبيقات
BeyondBoundsLayoutالأساسية الجديدة. - واجهات برمجة التطبيقات الجديدة لتخصيص السلوك في
FocusOrderوFocusProperties - تحسين الأداء عند استخدام لوحة مفاتيح خارجية أو جهاز تحكّم عن بُعد للتلفزيون
- أصبح بإمكانك الآن استخدام ميزة التمرير المستند إلى التركيز في القوائم الكسولة، وذلك باستخدام واجهة برمجة التطبيقات
واجهات برمجة التطبيقات الجديدة لما يلي:
- حواف النوافذ
- العناصر الأساسية للرسوم المتحركة التي تعتمد على الإيماءات وغير المحدودة وتلك المتعلّقة بالتصميم
- إمكانات
GraphicsLayer، بما في ذلكRenderEffect
إصلاح العديد من الأخطاء وتحسينات في الأداء
الإصدار 1.2.0-rc03
29 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc03. يتضمّن الإصدار 1.2.0-rc03 هذه التعديلات.
- لم يتم إجراء أي تغييرات منذ الإصدار 1.2.0-rc02.
الإصدار 1.2.0-rc02
22 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc02. يتضمّن الإصدار 1.2.0-rc02 هذه التعديلات.
الإصدار 1.2.0-rc01
15 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبحت الواجهات في مكتبات Compose يتم إنشاؤها الآن باستخدام طرق الواجهة التلقائية في الإصدار 8 من حزمة تطوير البرامج (JDK) (I5bcf1).
- تمت إضافة وظائف من الدرجة العليا إلى
KeyInjectionScopeلإدخال ضغطات المفاتيح أثناء الضغط مع الاستمرار على مفاتيح أخرى أو تفعيلها. وتشمل هذه الدوالwithKeysDownوwithKeysToggledوما إلى ذلك. أضفنا أيضًا خصائص للتحقّق مما إذا كان مفتاح وصف معيّن مضغوطًا، على سبيل المثال،isCtrlDownللتحقّق مما إذا كان أي من مفتاحي التحكّم مضغوطًا. يمكنك الرجوع إلىKeyInjectionScopeللاطّلاع على مستندات حول كل دالة. (I9f6cd، b/229831515) - تم تقديم
OverscrollEffectتجريبي للسماح بتأثيرات تجاوز حد التمرير المخصّصة، بالإضافة إلى عمليات التحميل الزائدModifier.scrollableالتي تقبلها. - تم نقل
LocalOverScrollConfigurationالتجريبي منfoundation.gestureإلى حزمة الأساس وإعادة تسميته إلىLocalOverscrollConfiguration(If19fb، b/204650733) - تمت إعادة تسمية
runComposeUiTestWithoutActivity {}إلىrunEmptyComposeUiTest {}، ما يجعله متوافقًا معcreateEmptyComposeRule()(I6fed7)
الإصدار 1.2.0-beta03
1 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
pressKeyTimesوisCapsLockOnوالأصدقاء إلىKeyInjectionScopeبالإضافة إلى ذلك، تتيح واجهة برمجة التطبيقات الآن أنماط إدخال مجمّعة للماوس ولوحة المفاتيح، مثل النقر على زر الماوس مع الضغط باستمرار على مفتاح meta. (I4c8da، b/229831515) - تمت إضافة دعم تجريبي لإدخال الأحداث الرئيسية. استخدِم
performKeyInputلإرسال الأحداث الرئيسية، أو أرسِلها من خلال السمةkeyالخاصة بالعنصرMultiModalInjectionScopeأثناء إيماءة إدخال متعدّدة الوسائط باستخدامperformMultiModalInput. يمكنك الاطّلاع علىKeyInjectionScopeللحصول على مستندات حول واجهة برمجة التطبيقات. (Ic5000، b/229831515) - أضِف
GoogleFont.Provider.AllFontsListUriلاسترداد مصدر الإنترنت الأساسي لخطوط Google المتوافقة مع Android. - تحسين رسائل الخطأ التي يتم إعادة طرحها عندما يتعذّر تحميل GoogleFonts في Compose (I0416c)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChangeإلى أداة Velocity Tracker، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدف (I51ec3 وb/216582726 وb/223440806 وb/227709803). - سيتم الآن تطبيق إعداد
Show Layout Boundsعلى العناصر القابلة للإنشاء مباشرةً بعد تفعيله أو إيقافه من مربّع الإعدادات السريعة، بدون الحاجة إلى الخروج من النشاط وإعادة الدخول إليه. (I843d5، b/225937688) - لا يؤدي البحث عن سلسلة تسهيل الاستخدام إلى بدء تحميل الخط. في السابق، كان يتم محاولة تحميل الخطوط الخاصة بـ
StyleSpans، ما كان يؤدي إلى حدوث أعطال إذا تمت الكتابة فوقFontFamily.Resolver. (I4609d) - لن يؤدي الضغط على مفتاح الحذف للأمام عندما يكون المؤشر في نهاية حقل نص إلى حدوث عطل.
- يتطلّب كل من
DeleteSurroundingTextCommandوDeleteSurroundingTextInCodePointsCommandالآن أن تكون وسيطات الدالة الإنشائية غير سالبة. (Ica8e6، b/199919707)
الإصدار 1.2.0-beta02
18 مايو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إعادة استخدام الوظائف في أنواع المعاينات الأخرى (I19f39)
إصلاح الأخطاء
- تمت إعادة تسمية
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerإلىDisposeOnDetachedFromWindowOrReleasedFromPoolلتعكس بشكل أفضل الحالات التي يتم فيها التخلص من الموارد، بدلاً من الحالات التي لا يتم فيها التخلص من الموارد. (If15ca)
الإصدار 1.2.0-beta01
11 مايو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
الميزات الجديدة
- هذا هو الإصدار التجريبي الأول من الإصدار 1.2.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة
BeyondBoundsIntervalتجريبية يمكن استخدامها من خلال عمليات التنفيذ المخصّصة لـLazyListعندما يتم تخطيط العناصر خارج الحدود المرئية (Ifabfb، b/184670295) - أصبحت الإصدارات التي تتضمّن مفاتيح من
Modifier.composedواجهة برمجة تطبيقات ثابتة (Ie65e4، b/229988420) - تم تبسيط واجهة برمجة التطبيقات
rememberNestedScrollConnectionلاستخدام متغيرات محلية للتركيب من أجل الحصول على معلومات العرض الحالية (I67ca7) - يمكن الآن استخدام التعليق التوضيحي
@ComposableTargetوالتعليقات التوضيحية التي تحمل العلامة@ComposableTargetMarkerفي نطاق الملف باستخدام البادئة@file. سيؤدي استخدام تعليق توضيحي مستهدَف على مستوى نطاق الملف إلى افتراض أنّ جميع الدوال القابلة للإنشاء في الملف تهدف إلى استهداف أداة التطبيق المرتبطة. على سبيل المثال، يؤدي استخدام@file:UiComposableإلى الإعلان بأنّ جميع دوال@Composableتستهدف أداة تطبيق واجهة مستخدم Compose. يجب أن توفّر الدالة التي تحتاج إلى استهداف أداة تطبيق أخرى بشكل صريح التعليق التوضيحي الخاص بعلامة الاستهداف لأداة التطبيق المطلوبة. (I40804) تم طرح واجهة برمجة تطبيقات تجريبية جديدة ومستقلة عن النظام الأساسي للاختبار:
interface ComposeUiTestوfun runComposeUiTest(block: ComposeUiTest.() -> Unit)، ويمكن استخدامهما لتشغيل اختبارات واجهة مستخدم Compose بدون الحاجة إلىTestRule. لتنفيذ اختبار بدونComposeTestRule، مرِّر الاختبار كدالة lambda إلىrunComposeUiTest، واستخدِم الطرق والعناصر في نطاق جهاز الاستقبالComposeUiTest، وهي نفسها الموجودة فيComposeContentTestRule.تتم إضافة
interface AndroidComposeUiTestوfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)الخاصتَين بنظام التشغيل Android لتوفير إمكانية الوصول إلى النشاط الأساسي، على غرارAndroidComposeTestRule. للحصول على المزيد من التحكّم، يمكنك إنشاءclass AndroidComposeUiTestEnvironmentبنفسك.تكون عملية التنفيذ على الكمبيوتر المكتبي
class DesktopComposeUiTest، ولكن لا تتوفّر حاليًا أي دوال تشغيل خاصة بالكمبيوتر المكتبي.يمكن نقل اختبار من
ComposeTestRuleإلىComposeUiTestباتّباع الخطوات التالية (مثال على نظام التشغيل Android). من:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }إلى:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }في الوقت الحالي، لا تتضمّن
ComposeContentTestRuleوComposeTestRuleميزاتComposeUiTest، ما يعني أنّه لا يمكن بعد استدعاء دوال الإضافة علىComposeUiTestمن واجهةTestRule. عندما تنتقلComposeUiTestإلى واجهة برمجة تطبيقات ثابتة، سيتم تغييرComposeContentTestRuleوComposeTestRuleليتم تمديدهما منComposeUiTest. (Ib4e90)تمت إعادة تسمية "
LineHeightBehavior" إلى "LineHeightStyle"تمت إعادة تسمية "
LineVerticalAlignment" إلى "LineHeightStyle.Alignment"تمت إعادة تسمية
LineHeightTrimإلىLineHeightStyle.Trimتمت إزالة قيم أداة الإنشاء التلقائية من
LineHeightStyle(I582bf، b/181155707)تمت إضافة
BrushإلىTextStyleوSpanStyleلتوفير طريقة لرسم نص بألوان متدرّجة. (I53869، b/187839528)تم تغيير السمتَين
trimFirstLineTopوtrimLastLineBottomالخاصتَين بالعنصرLineHeightBehaviorإلى قيمة تعدادية واحدة:LineHeightTrim. تحتويLineHeightTrimعلى 4 حالات محدّدة بقيمتَين منطقيتَين:FirstLineTopوLastLineBottomوBoth وNone (Ifc6a5 وb/181155707)تمت إضافة "
LineHeightBehavior" إلى "TextStyle" و"ParagraphStyle". تتحكّم السمةLineHeightBehaviorفي ما إذا كان سيتم تطبيق ارتفاع السطر على أعلى السطر الأول وأسفل السطر الأخير. ويحدّد أيضًا محاذاة السطر في المساحة التي يوفّرهاTextStyle(lineHeight).على سبيل المثال، يمكن الحصول على سلوك مشابه لما تحدّده خدمة CSS من خلال
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).لا تعمل إعدادات
trimFirstLineTopوtrimLastLineBottomبشكل صحيح إلا عندما تكون قيمةincludeFontPaddingهي "خطأ". (I97332، b/181155707)تم تغيير الدالتَين
PlatformParagraphStyle.lerpوPlatformSpanStyle.lerpليصبحا دالتَين من المستوى الأعلى (I9a268).
إصلاح الأخطاء
- توضّح مستندات
PointerInputChange::copyالآن بشكل صحيح أنّها نسخة سطحية. (I182f5) - إتاحة علامة الحذف الإيجازي عندما يكون الارتفاع محدودًا ولا يتسع لجميع أسطر النص (Ie528c، b/168720622)
- تم تفعيلها تلقائيًا في
includeFontPadding. يمكنك إيقافincludeFontPaddingباستخدام السمةTextStyle.platformTextStyle. في المستقبل القريب، سنغيّر السلوك التلقائي، ولكن إلى أن يحين ذلك الوقت، سيسمح لنا هذا التغيير بدمج تحسينات ارتفاع الأسطر بشكل أفضل (aosp/2058653) وحلّ مشاكل الاقتصاصTextField. (I01423، b/171394808)
المساهمة الخارجية
- تم الآن عكس اتجاه
MouseInjectionScope.scroll(delta = someDelta)على أجهزة Android عند التمرير عموديًا (إذا كانت قيمة someDelta موجبة، سيتم التمرير للأسفل) (Ifb697، b/224992993)
الإصدار 1.2.0-alpha08
20 أبريل 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha08. يتضمّن الإصدار 1.2.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تصنيف وظائف
pluralStringResourceعلى أنّها تجريبية من أجل السماح بتطويرها لتوفير دعم أفضل للغة العربية في المستقبل. (If24e4) - تقبل الآن الفقرة وMultiParagraph مَعلمة Constraints. لا يؤدي تمرير
Constraints.maxHeightإلى تنفيذ أي عملية في الوقت الحالي، ولكنّه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل حذف بعض الأحرف استنادًا إلى الارتفاع. (I6afee، b/168720622) - تقبل السمة
SubcomposeSlotReusePolicy.getSlotsToRetain()الآن فئة مخصّصة تشبه MutableSet ولا تسمح بإضافة عناصر جديدة إليها. (Icd314) - أصبح PointerIcon الآن واجهة
@Stable(I9dafe) - تم إيقاف الاستهلاك الجزئي (النزول أو الموضع) نهائيًا في
PointerInputChange. يمكنك استخدامconsume()لاستهلاك التغيير بالكامل. يمكنك استخدامisConsumedلتحديد ما إذا كان مستخدم آخر قد استهلك التغيير من قبل أم لا. - تنشئ الدالة
PointerInputChange::copy()الآن نسخة سطحية دائمًا. وهذا يعني أنّه سيتم استخدام نُسخPointerInputChangeعند استخدام إحدى النُسخ. إذا أردت إنشاءPointerInputChangeغير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674) - تفعيل إمكانية التشغيل التفاعلي لميزة "التمرير المتداخل" بين Compose وView في الاتجاه Compose > View وهذا يعني أنّ العنصر الرئيسي الذي يتضمّن عناصر Compose سيتمكّن من تلقّي دلتا التمرير المتداخل من طريقة عرض التمرير المتداخل. (If7949، b/174348612)
SemanticsProperty testTagsAsResourceIdالجديدة، والتي يمكن استخدامها لجعل Compose متوافقًا مع اختبارات UIAutomator المصمَّمة لنظام View (I39c20)- عرض جميع الأوزان المتاحة لخطوط النظام على Android عند استخدام
FontFamily.SansSerifسيتم استخدام أسماء الخطوط الاحتياطية، مثل sans-serif-medium، داخليًا على الإصدارات من 21 إلى 28 من واجهة برمجة التطبيقات. هذا تغيير في السلوك، لأنّه في السابق كان يتم توفير الأوزان 400 و700 فقط على الإصدارات من 21 إلى 28 من واجهة برمجة التطبيقات. (I380fe، b/156048036، b/226441992) - أعاد المدرّبون "فقرة" و"فقرات متعدّدة" ترتيب الوسيطات الموضعية لتكون قبل الوسيطات الاختيارية. (Idafaa)
- تتلقّى السمة
AndroidFontالآن typefaceLoader كمَعلمة منشئ. (I2c971)
الإصدار 1.2.0-alpha07
6 أبريل 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الدالة الجديدة
Snapshot.withoutReadObservation { ... }. يسمح هذا الإجراء للمستخدمين بتنفيذ lambda الذي تم تمريره بدون الاشتراك في تغييرات قيم الحالة التي تمت قراءتها أثناء هذا الحظر. قد يكون هذا الخيار مفيدًا في حالات الاستخدام التي تريد فيها الاستفادة من عمليات الكتابة والقراءة الآمنة في سلاسل المحادثات المستندة إلى اللقطات، ولكنك تريد أن تتمكّن من قراءة القيمة بدون التسبّب في إعادة إنشاء أو إعادة قياس غير ضرورية. (I9f365، b/214054486) - تتيح السمة
consumeWindowInsetsللإضافة فيComposeViewللمطوّرين إيقاف استخدامWindowInsetsعلى Android. يسمح ذلك بتطبيقWindowInsetsبشكل منفصل على كلComposeViewsفي التسلسل الهرمي بدون أن يتداخل بعضها مع بعض. (I0ef08، b/220943142) - تمت إضافة
KeyboardType.Decimalكبديل لـKeyboard.Numberلتضمين الفاصل العشري تحديدًا في محرر أسلوب الإدخال (IME). (Iec4c8، b/209835363) - أصبحت واجهتا برمجة التطبيقات
PointerEventType.ScrollوPointerEvent.scrollDeltaثابتتَين الآن (I574c5، b/225669674) - تفعيل إمكانية التشغيل التفاعلي للتمرير المتداخل بين View وCompose لفئات View المتوافقة وهذا يعني أنّ Compose يمكنه الآن إرسال دلتا التمرير إلى عنصر رئيسي (متعاون) في View. (I5d1ac، b/174348612)
- تم تعديل
FontFamily.Resolverلدمج إعداد تسهيل استخدام ميزة "تغميق النص" على مستوى النظام (I6c1e7) - تم إيقاف
Font(AssetManager, String, ...)نهائيًا واستبداله بـFont(String, AssetManager, ...). هذه واجهة برمجة تطبيقات تجريبية. (I1c7a4) - أضِف واصف خط جديدًا
Font(DeviceFontFamilyName)للبحث اختياريًا عن الخطوط المثبَّتة على النظام أثناء سلاسل الخطوط الاحتياطية. (I30468، b/219754572) - تمت إضافة إعدادات توافق مؤقتة لـ
includeFontPaddingفي TextStyle/ParagraphStyle. يمكن تغييرincludeFontPaddingمن خلالTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). هذا خيار إعداد مؤقت لتفعيل عملية نقل البيانات، وسيتم إزالته. (If47be، b/171394808) - أضِف إضافة
GoogleFont.Provider.isAvailableOnDeviceللحصول على المساعدة في تصحيح الأخطاء. (I64e31) - إضافة أداة إنشاء
GoogleFont.Providerلاستخدامها مع@ArrayRes(Ic5ee1، b/225984280) - تمت إعادة تسمية
Compose GoogleFontإلىFont(GoogleFont)، وستظل واجهة برمجة التطبيقات ثابتة في ما عدا ذلك. (I125f2)
إصلاح الأخطاء
- تمت إضافة عملية فحص lint إلى material/Scaffold للتأكّد من استخدام المساحة المتروكة الداخلية (Ifb111)
الإصدار 1.2.0-alpha06
23 مارس 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إجراء
RequestFocusالدلالي لطلب التركيز على العنصر المستهدف القابل للتركيز. (I17b71) - تم تعديل عملية تحليل الرسومات المتجهة القابلة للرسم لتتيح عكس المحتوى تلقائيًا في
VectorPainterإذا كان اتجاه التنسيق الحالي من اليمين إلى اليسار. (I79cd9، b/185760237) تم تعديل ألوان الظل/الإضاءة المحيطة لتصبح مَعلمات لاحقة للرمز
Modifier.graphicsLayerمن أجل التوافق مع واجهة برمجة التطبيقات (I3f864، b/160665122)تمت إضافة عمليات تنفيذ تلقائية للون الظل/الخلفية في
GraphicsLayerScopeلضمان عدم حدوث تغييرات غير متوافقة في واجهة برمجة التطبيقات.تمت إضافة وقت الحدث إلى أحداث RSB (Ief8ae)
تم الآن دمج "
FocusOrder" في "FocusProperties"، وأصبحت "focusProperties()" تتضمّن الآن جميع إمكانات "focusOrder()". تم إيقافFocusOrderوfocusOrder()نهائيًا. يجب استبدالfocusOrder()الذي يقبلfocusRequesterبمعدِّلfocusRequester()معfocusProperties(). يتيح ذلك للمعدّلات فصل الاهتمامات بشكل أفضل. (I601b7)ستؤدي ترقية كلّ من
RecyclerViewوComposeالآن إلى تحسين أداء التمرير في RecyclerViews التي تتضمّن طرق عرض Compose كعناصر فرعية.إضافة
ViewCompositionStrategy.Defaultكوسيلة لاسترداد الاستراتيجية التلقائية المضمّنةأضِف
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer، وهي الاستراتيجية التلقائية الجديدة التي تتعامل بشكل صحيح مع حاويات التجميع، مثل RecyclerView. (If7282)تمت إضافة إمكانية إضافة تعليقات توضيحية إلى فئات التعليقات التوضيحية باستخدام @Preview كخطوة أولى لإضافة ميزة "المعاينة المتعددة". يمكن استخدام هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى طرق Composable أو فئات التعليقات التوضيحية الأخرى، والتي يمكن اعتبارها بعد ذلك كتعليقات توضيحية غير مباشرة باستخدام @Preview المحدّدة. (I12eff)
تمت إضافة أجهزة مرجعية إلى قائمة الأجهزة في @Preview (I071c9)
إصلاح الأخطاء
- تم تعديل واجهات برمجة تطبيقات الرسومات المتجهة لاستخدام التعليق التوضيحي القابل للإنشاء المناسب @VectorComposable بدلاً من @UiComposable (I942bc)
- إزالة crossinline من
AnnotatedString.Builder.withStyle(If84d5)
المساهمة الخارجية
- compose-ui: إضافة السمتَين
ambientShadowColorوspotShadowColorإلىGraphicsLayerScope(I1ba1a، b/160665122) - أصبحت الموارد بصيغة الجمع متاحة الآن من خلال دوال
pluralStringResource. (Ib2f23، b/191375123)
الإصدار 1.2.0-alpha05
9 مارس 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتلقّى
TextToolbarالآن وسيطات lambda بدلاً منActionCallback. (Ib2eb9، b/197950089) - تم تعديل إمكانية القيم الخالية في حزمتَي core وappcompat لتتوافق مع الإصدار التجريبي الثاني من Tiramisu (I0cbb7)
- تعرض الواجهة التي تم قياسها الآن السمة parentData (I3313f)
- أصبحت اللغة
Modifier.onPlacedوواجهةOnPlacedModifierثابتتَين الآن. (Ib5482) - خبر سار! يتيح إنشاء الصور المتحركة الآن استخدام إعداد "مقياس مدة الرسوم المتحركة" من "خيارات المطوّرين". (I5a4fc، b/161675988)
- تمت إضافة معدِّل
BeyondBoundsLayoutمحلي (If8b51، b/184670295) - النص: تم الآن إيقاف السمة includeFontPadding تلقائيًا. تم حلّ مشاكل الاقتصاص الناتجة عن
includeFontPadding=false، ولن يحدث أي اقتصاص للنصوص البرمجية الطويلة. (I31c84، b/171394808)
إصلاح الأخطاء
- سيؤدي الآن استدعاء
ComposeContentTestRule.setContentإلى طرحIllegalStateExceptionإذا حاولت ضبط المحتوى عندما يكون هناك محتوى حالي. (I888a5، b/199631334) - تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة من الحافظة على جهاز Android. (I06020، b/197769306)
- تحسين عيّنات التمرير في "الملخّصات من Google" (I6a596)
المساهمة الخارجية
- تم تعديلها لاستخدام الإصدار 1.6.0 من أنماط "كوروتين" في Kotlinx (I3366d)
الإصدار 1.2.0-alpha04
23 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
تمت إضافة
ComposableTargetوComposableTargetMarkerوComposableOpenTargetالتي تتيح إعداد تقارير في وقت التجميع عن الحالات التي يتم فيها استدعاء دالة مركّبة تستهدف واجهة تطبيقية (applier) لم يتم تصميمها لاستخدامها.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لبرنامج التجميع الخاص بـ Compose، لذا يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً أمرًا نادرًا . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام واجهة تطبيقية (applier) مخصّصة، أو دوال مركّبة مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عمومية تكون تعبيرات لامدا قابلة للإنشاء (يتم استنتاج المتغيرات والمعلمات المحلية)، أو عند استخدام
ComposeNodeأو دوال مركّبة ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب أن تضيف الدوال القابلة للإنشاء التي تستدعي
ComposeNodeأوReusableComposeNodeتعليقًا توضيحيًاComposableTargetللدالة وأي أنواع مَعلمات lambda قابلة للإنشاء. ومع ذلك، يُنصح بإنشاء تعليق توضيحي يتضمّنComposableTargetMarker، ثم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً منComposableTargetمباشرةً. تكون التعليقات التوضيحية القابلة للإنشاء المميّزة بـComposableTargetMarkerمكافئة لـComposbleTargetمع الاسم المؤهَّل بالكامل لفئة السمة كمعلَمة مطبِّقة. للاطّلاع على مثال حول استخدامComposableTargetMarker، يُرجى الرجوع إلىanroidx.compose.ui.UiComposable. (I38f11)تتلقّى السمة
Font(resId, ...)الآن loadingStrategy على واجهة برمجة التطبيقات الثابتة. (Ief3d2)أصبحت واجهة برمجة التطبيقات
FontLoadingStrategyالآن واجهة برمجة تطبيقات ثابتة. (I1ee35، b/174162090)إتاحة تحميل الخطوط بشكل غير متزامن في "النص" (I77057، b/214587005)
إضافة واجهة برمجة تطبيقات وسيطة لتحويل
Font.ResourceLoaderالمخصّص إلىFontFamily.Resolver(Ia0060)
إصلاح الأخطاء
- يتم تمرير
FontFamily.Resolverإلى التركيبات الفرعية، مثل Popup. - يتم تمرير
Font.ResourceLoaderإلى التركيبات الفرعية، مثل Popup. (I48fa5)
الإصدار 1.2.0-alpha03
9 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف طُرق
notifyFocusedRectنهائيًا فيTextInputSessionوTextInputService، ولن يتم استدعاؤها. يُرجى استخدامBringIntoViewRequesterبدلاً من ذلك. (Ia4302، b/192043120، b/216842427، b/178211874) - تمت إضافة طريقة
destroyDisplayListDataإلى فئةRenderNodeالصورية (I1e659، b/216660268) - تمت إضافة واجهة برمجة تطبيقات جديدة تتيح قياس حجم العناصر الفرعية التي تم إنشاؤها مسبقًا في
SubcomposeLayout. (I857ea) تمت إضافة
movableContentOfالتي تحوّل دالة lambda قابلة للإنشاء إلى دالة lambda تنقل حالتها والعُقد المقابلة إلى أي موقع جديد يتم استدعاؤها فيه. عندما تنتهي المكالمة السابقة من التركيب، يتم الاحتفاظ بالحالة مؤقتًا، وإذا انضمت مكالمة جديدة إلى التركيب، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. إذا لم تتم إضافة أي مكالمة جديدة، ستتم إزالة الحالة نهائيًا وسيتم إعلام المراقبين المسجّلين.إذا تم استدعاء دالة
movableContentOflambda عدة مرات في التركيبة نفسها، يتم إنشاء حالة وعُقد جديدة لكل عملية استدعاء، وعندما تغادر عمليات الاستدعاء التركيبة وتدخل عمليات استدعاء جديدة، يتم نقل الحالة من عمليات الاستدعاء الأولى التي تغادر إلى عمليات الاستدعاء التي تدخل بالترتيب الذي يتم استدعاؤها به. تتم إزالة جميع الحالات التي لم تتم المطالبة بها من خلال المكالمات الجديدة بشكل دائم. (Ib4850)أصبحت "
FontFamilyResolver" متاحة الآن من خلالLocalFontFamilyResolver.currentتمت إضافة
createFontFamilyResolver(context)وcreateFontFamilyResolver(context, coroutineScope)لإنشاء أدوات تحليل جديدة خاصة بـ FontFamily خارج نطاق استخدام Compose.تتلقّى الفقرة وMultiParagraph الآن
FontFamily.Resolverيحتوي
TextLayoutResult.layoutInput.fontFamilyResolverالآن على برنامج التعيين المستخدَم في هذا التنسيق، وتم إيقافTextLayoutResult.layoutInput.resourceLoaderنهائيًا لأنّه لم يعُد مستخدَمًا. (Id5a45، b/174162090)إتاحة تحميل الخطوط بشكل غير متزامن واختياري، مع سلوك احتياطي يتم استخدام هذا المسار من خلال Text وTextField، ويتم عرضه من خلال FontFamilyResolver.
إتاحة التحميل المُسبَق للخطوط من خلال
FontFamilyResolver.preloadتسمح السمة
FontFamilyResolver.setAsyncLoadContextبضبط سياق الروتين الفرعي العام المستخدَم لتحميل الخطوط غير المتزامنة. (I87fe8، b/174162090)تمت إضافة
AndroidFont، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة من واصفات موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خادم خلفي خاص بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز فقط بشكل اختياري، أو تحميل خط من مصدر غير متوفّر من خلال مصانع الخطوط الحالية.تمت إضافة ميزات إلى واجهة برمجة التطبيقات
Font.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).تم إيقاف الدالة الإنشائية
SubcomposeLayoutStateالتي تقبلmaxSlotsToRetainForReuseنهائيًا. بدلاً من ذلك، هناك أداة إنشاء جديدة تقبلSubcomposeSlotReusePolicy، وهي واجهة جديدة تتيح تحكّمًا أكثر دقة في الفتحات التي يجب الاحتفاظ بها لإعادة استخدامها في المستقبل. (I52c4d)تعرض هذه السمة دالتَي HSV وHSL في
Colorكواجهة برمجة تطبيقات غير تجريبية. أصبحت مساحة الألوان Oklab واجهة برمجة تطبيقات عامة. (I08fb6، b/180731008)تم إيقاف
AndroidComposeTestRule.AndroidComposeStatementنهائيًا، وهي لم تكن مخصّصة لواجهة برمجة التطبيقات العامة ولم تقدّم لك أي فائدة على أي حال. (Ibc46b)إعادة تسمية فئة kt التي تم إنشاؤها داخليًا (Ia0b9e، b/174162090)
تمت إزالة
FontLoadingStrategy.values(I42a9d، b/174162090)أصبح اسم أداة تحميل الخطوط العامة الآن
FontFamilyResolver. (I4f773، b/174162090)استخدام نظام جديد لتحميل الخطوط على أجهزة الكمبيوتر (I9ce5c، b/174162090)
FontFamily.Resolver.resolvereturnsState<Any>(I4406c, b/174162090)
إصلاح الأخطاء
- سيتم الآن إبقاء حقول TextField فوق لوحة المفاتيح عند التركيز عليها وعند عرض لوحة المفاتيح، وذلك عندما يكون وضع الإدخال السلس
ADJUST_PAN. (I8eaeb، b/190539358، b/192043120) - يستخدم الكمبيوتر المكتبي التركيبة المحلية لـ
FontFamily.Resolver - تم إيقاف ميزة "
FontLoader" نهائيًا على أجهزة الكمبيوتر - مصنع
createFontFamilyResolverالجديد على الكمبيوتر المكتبي (I6bbbb، b/174162090) - لم يعُد نوع إدخال لوحة المفاتيح الافتراضية يومض عند تغيير التركيز بين حقول النص. (I1bf50، b/187746439)
الإصدار 1.2.0-alpha02
26 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.onRotaryScrollEvent()وModifier.onPreRotaryScrollEvent()لأجهزة Wear التي تحتوي على زر جانبي دوّار (I18bf5، b/210748686) - إضافة إضافة تجريبية
View.createLifecycleAwareRecomposer(I0cde6)
المساهمة الخارجية
- تم الآن عكس قيمة
PointerEvent.scrollDelta.yعلى أجهزة Android (تعرض الآن القيمة 1 بدلاً من -1 إذا أملنا عجلة الماوس إلى اليمين) (Ia9811)
الإصدار 1.2.0-alpha01
12 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
FontFamily.canLoadSynchronouslyنهائيًا. لا تحمل هذه السمة أي معنى دلالي. (Ica5ef) - تمت إضافة حقل المعرّف إلى
CompositionDataلإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e) - تمت إضافة أرقام تعريف أجهزة Wear OS إلى قائمة أجهزة الإصدارات التجريبية (I93232)
تحديثات الاعتماديات
- يعتمد الآن على Kotlin
1.6.10.
الإصدار 1.1
الإصدار 1.1.1
23 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح
NullPointerExceptionفيandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059 وb/206677462) - تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة من الحافظة على جهاز Android. (I06020، b/197769306)
- تم إصلاح مشكلة عرض النص من اليمين إلى اليسار في
LazyVerticalGrid(aosp/1931080 وb/207510535)
الإصدار 1.1.0
9 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.0.0
- إتاحة تأثير تجاوز حد التمرير في Android 12 بشكل ثابت
- تحسينات على حجم مساحة اللمس
- يُرجى العِلم أنّه في ما يتعلّق بالإصدار 1.0 من Compose، ستوسّع مكوّنات Material مساحة التنسيق لتلبية إرشادات تسهيل الاستخدام في Material بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حد أدنى يبلغ 48×48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر على قيمة أصغر. يؤدي ذلك إلى توافق Compose Material مع السلوك نفسه الذي تتّبعه "مكوّنات التصميم المتعدد الأبعاد"، ما يوفّر سلوكًا متسقًا في حال استخدام كلّ من Views وCompose. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكوّنات Compose Material.
- إتاحة شريط التنقّل بشكل ثابت
- نقل عدد من واجهات برمجة التطبيقات التجريبية السابقة إلى الإصدار الثابت
- التوافق مع الإصدارات الأحدث من Kotlin
الإصدار 1.1.0-rc03
26 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.1.0-rc03. يتضمّن الإصدار 1.1.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- تم التحديث لإتاحة استخدام الإصدار 1.1.0-rc03 من Compose Material
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ تسبّب في عدم توفّر إجراءات التمرير الخاصة بتسهيل الاستخدام (I7cbfb)
- ستعمل
SemanticsNodeInteraction.captureToImage()أيضًا إذا كانت قيمةHardwareRenderer.isDrawingEnabled()هيfalse، وذلك من خلال تفعيلها لمدة المكالمة (Idf3d0).
الإصدار 1.1.0-beta04
1 ديسمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta04. يتضمّن الإصدار 1.1.0-beta04 هذه التعديلات.
الميزات الجديدة
- تم تعديلها لتكون متوافقة مع الإصدار
1.6.0من Kotlin
تغييرات واجهة برمجة التطبيقات
- تمت إزالة القيم الفارغة في
androidx.core.view(I7078a، b/204917439) - تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح للمستخدمين استخدام PointerInputchange ككل أو التحقّق مما إذا تم استخدامه أم لا. (I2e59d)
- تضيف هذه السمة إمكانية التعامل مع أحداث عجلة التمرير في الماوس في طبقة واجهة المستخدم. (Ia14eb، b/198214718)
- أضِف عمليات تحميل زائدة تجريبية
Modifier.composedتقبل المفاتيح للمقارنة من أجل المساواة والتأهّل لتخطّي عمليات التحسين. (Ice799، b/205851704) - أصبح نطاق
ComposeNotIdleExceptionيمتد منExceptionبدلاً منThrowableمباشرةً. يُرجى العِلم أنّ هذا يعني أنّ عبارات الالتقاط التي كانت تلتقطExceptionقد تلتقط الآنComposeNotIdleException، في حين لم يكن ذلك ممكنًا في السابق. (I9c217)
إصلاح الأخطاء
- إصلاح مشكلة عدم تحرُّك مقابض النص عند تغيُّر مستوى ظهور محرر أسلوب الإدخال (IME) (I25f2e)
الإصدار 1.1.0-beta03
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta03. يتضمّن الإصدار 1.1.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة معدِّل جديد Modifier.onPlaced للسماح بمراقبة تغيير موضع العنصر. وبالتالي، يمكن إجراء تغييرات إضافية على إزاحة المعدِّل الفرعي استنادًا إلى التغيير الملحوظ في موضع الإعلان. (I558fd)
- تمت إزالة
InjectionScope.flush()وInjectionScope.dispose(). يتم الآن إفراغ جميع الأحداث وإلغاء النطاق في نهاية طريقة perform*Input() التي تم استدعاؤها، كما كان يحدث من قبل. (I2bed8) - تمت إزالة
MultiModalInjectionScope.TouchوMultiModalInjectionScope.Mouse. لإدخال أحداث اللمس والماوس لإيماءات متعدّدة الأوضاع، يمكنك الآن استخدامMultiModalInjectionScope.touch()وMultiModalInjectionScope.mouse()، وكلاهما يقبلان تعبير lambda يتضمّن نطاق المستلِم لهذا الوضع. (Idde18)
إصلاح الأخطاء
- يتم الآن احتساب القيمة التلقائية لـ
durationMillisفيTouchInjectionScope.swipeWithVelocityبطريقة تتيح إمكانية التمرير السريع. (I19deb)
الإصدار 1.1.0-beta02
3 نوفمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta02. يتضمّن الإصدار 1.1.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات التجريبية BringIntoView التي تتيح لك إرسال طلب إلى العناصر الرئيسية لكي يتم التمرير لعرض عنصر (Ib918d، b/195353459)
- واجهات برمجة تطبيقات جديدة للصور المتحركة لدعم الأدوات على وجه التحديد، تتيح هذه السمة للأدوات فحص الصور المتحركة وإعداداتها في Transitions. (I4116e)
المساهمة الخارجية
- تمت إضافة Modifier.pointerHoverIcon (I95f01)
الإصدار 1.1.0-beta01
27 أكتوبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات التجريبية
BringIntoViewالتي تتيح لك إرسال طلب إلى الأهل ليتمكّنوا من التمرير لعرض عنصر معيّن (Ib918d، b/195353459) - واجهات برمجة تطبيقات جديدة للصور المتحركة لدعم الأدوات على وجه التحديد، تتيح هذه السمة للأدوات فحص الصور المتحركة وإعداداتها في Transitions. (I4116e)
الإصدار 1.1.0-alpha06
13 أكتوبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha06. يتضمّن الإصدار 1.1.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ExperimentalComposeUiApiمنViewRootForInspectorوLayoutInfo.ownerViewId(I5c2e3) - تمت إضافة حمل زائد بدون عنصر فرعي إلى Layout، مع تحسين الكفاءة (Ib0d9a)
- تمت إزالة
InternalCompilerApiمن دوال Composer التي يجب استدعاؤها على مستوى الوحدات (I1aa0b) - تعرض الدالة
SemanticsNodeInteraction.performSemanticsActionالآنSemanticsNodeInteractionالذي تم استدعاء الدالة عليه. (I9e5db) - تمت إضافة LocalInputModeManager CompositionLocal لرصد TouchMode/NonTouchMode. (I6a83c، b/175899786)
- تمت إضافة
viewConfiguration: ViewConfigurationإلىLayoutInfoللسماح للمستهلكين بالحصول على القيمة الصحيحة لأشياء مثل مهلة الضغط مع الاستمرار. (I76ca6)- تمت إضافة
viewConfiguration: ViewConfigurationإلىInjectionScopeللسماح للاختبارات بتعديل عملية إدخال البيانات استنادًا إلى عوامل مثل مهلة الضغط مع الاستمرار أو مسافة اللمس. - تم تغيير المدة التلقائية للنقر مع الاستمرار والنقر مرّتين لكل من الإدخال باللمس والماوس لتستند إلى القيم الواردة في
InjectionScope.viewConfiguration.
- تمت إضافة
- تنفيذ ExposedDropdownMenu استنادًا إلى ExposedDropdownMenuBox مع TextField وDropdownMenu في الداخل (If60b2)
- تمت إضافة dismissOnOutsideClick إلى PopupProperties، ما أدّى إلى استبدال dismissOnClickOutside التي لم تعُد متاحة. يتلقّى العنصر الجديد موضع النقرة وحدود العنصر الثابت، ما يتيح تحكّمًا أفضل في ما إذا كان يجب استدعاء onDismissRequest أم لا. على سبيل المثال، يمكن أن يكون ذلك مفيدًا لمنع إغلاق العنصر الثابت عند النقر عليه.
- تمت إضافة updateAndroidWindowManagerFlags إلى PopupProperties، ما يتيح التحكّم على مستوى منخفض في العلامات التي يمرّرها العنصر المنبثق إلى Android WindowManager. ستكون مَعلمة دالة lambda هي العلامات المحسوبة من قيم PopupProperties التي تؤدي إلى علامات WindowManager، مثل focusable. ستكون نتيجة الدالة lambda هي العلامات النهائية التي سيتم تمريرها إلى WindowManager في Android. سيؤدي استدعاء updateAndroidWindowManagerFlags تلقائيًا إلى عدم تغيير العلامات المحسوبة من المَعلمات. يجب استخدام واجهة برمجة التطبيقات هذه بحذر، وفقط في الحالات التي تتطلّب فيها النافذة المنبثقة سلوكًا محدّدًا جدًا. (I6e9f9)
- تم إيقاف
Recomposer.stateنهائيًا واستبداله بـRecomposer.currentStateلتغيير نوعه إلى StateFlow (Ic2ab3، b/197773820) - تمّت إضافة
flush()وdispose()إلىInjectionScope. استخدِمها عندما تريد إفراغ جميع الأحداث التي تمّت إضافتها إلى قائمة الانتظار على الفور وعندما تريد التخلّص من النطاق، على التوالي. (Ifb73a) - تمت إضافة
performScrollToNode(matcher: SemanticsMatcher)التي تنقل الحاوية القابلة للتمرير إلى المحتوى الذي يتطابق مع أداة المطابقة المحدّدة. (Ic1cb8) - تتيح
InjectionScopeالآن استخدامDensity، ما يتيح لك التحويل بسهولة بين وحدتَي البكسل (px) والبكسل المستقل عن الكثافة (dp) فيperformTouchInputوغيرها. (I8fe1f)
إصلاح الأخطاء
- تعمل السمة AndroidView الآن على نشر LocalLifecycleOwner وLocalSavedStateRegistryOwner إلى العرض الخاص بها من خلال ViewTreeLifecycleOwner وViewTreeSavedStateRegistryOwner. (I38f96، b/179708470)
- إصلاح مشكلة عدم معالجة WearOS SwipeToDismissBox أحيانًا لعمليات التمرير السريع (I9387e)
- تم تغيير الوقت التلقائي بين أحداث الإدخال التي تم إدخالها من 10 ملي ثانية إلى 16 ملي ثانية. قد يؤدي ذلك إلى تغيير نتيجة الاختبارات التي تنفّذ إيماءات إدخال، مثل التمرير السريع بشكل محدّد. (I829fd)
الإصدار 1.1.0-alpha05
29 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha05. يتضمّن الإصدار 1.1.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية التواصل بين المعدِّلات (Id5467، b/198826874)
- تمت إضافة مؤشرات تجريبية سابقة إلى PointerEventChange. (Ic1fd8 وb/197553056 وb/199921305)
- تمّت إضافة
density: DensityوlayoutDirection: LayoutDirectionإلىLayoutInfo. يتيح ذلك لمستهلكيLayoutInfoتفسير الأبعاد والموضع المعروضَين فيLayoutInfoبشكل صحيح. (I002f1) - تمت إضافة دعم تجريبي لإدخال أحداث الماوس. استخدِم
performMouseInputلبدء إرسال أحداث الماوس، أو أرسِل أحداث الماوس من خلال السمةMouseالخاصة بالعنصرMultiModalInjectionScopeأثناء إيماءة إدخال متعددة الوسائط باستخدامperformMultiModalInput. يمكنك الاطّلاع علىMouseInjectionScopeللحصول على مستندات حول واجهة برمجة التطبيقات المتاحة. (Iaa4a8، b/190493367)
إصلاح الأخطاء
- تم إصلاح مشكلة إمكانية الوصول إلى العناصر القابلة للتمرير (التي يتم تحميلها عند الحاجة وغير القابلة للتمرير) عند التمرير (I6cdb0)
- تم تحسين
TouchInjectionScope.swipeWithVelocity. أصبح بإمكانها الآن قبول مجموعة أكبر من متغيّرات الإدخال، وستقترح تغييرات على الإدخال إذا تعذّر إنشاء تمرير سريع (I40fbe، b/182477143).
الإصدار 1.1.0-alpha04
15 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha04. يتضمّن الإصدار 1.1.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتضمّن
PointerEventالآنPointerEventTypeلإتاحة أحداث التمرير فوق العناصر. (I091fa) - السماح للأطفال بقبول إدخال المؤشر خارج حدود إدخال المؤشر الخاص بالعنصر الرئيسي يمكن للوالدَين اعتراض هذه الطلبات باستخدام السمة PointerInputScope.alwaysInterceptChildEvents (I9eae3، b/192479655).
- تم إيقاف
performGestureوGestureScopeنهائيًا واستبدالهما بـperformTouchInputوTouchInjectionScope. (Ia5f3f، b/190493367) - تمت إضافة
touchBoundsInRootإلىSemanticsNodeالتي تتضمّن الحد الأدنى لحجم مساحة اللمس، وذلك ليتأكّد المطوّرون من أنّ مساحات اللمس تستوفي الحد الأدنى من متطلبات تسهيل الاستخدام. (I2e14b، b/197751214) - إعادة تنفيذ ميزة "قابلة للفحص" (I927bc، b/191017532)
- تم تغيير اسم مَعلمة العنصر القابل للفحص ليتطابق مع العنصر الذي تم إنشاؤه (I3a482، b/191017532)
تم تقديم
performTouchInputوTouchInjectionScopeكبديلَين لـperformTouchInputوTouchInjectionScope، ما يمهّد الطريق لاستخدام طرق إدخال أخرى (مثل الماوس).تتضمّن
TouchInjectionScopeالطرق نفسها التي تتضمّنهاGestureScope، باستثناءmovePointerToوmovePointerByاللتين تمت إعادة تسميتهما إلىupdatePointerToوupdatePointerBy. وجميع الطرق الأخرى هي نفسها.يتشابه سلوك
TouchInjectionScopeمع سلوكGestureScopeبشكل كبير، مع اختلاف بسيطَين:- عند إرسال حدث down أثناء تحريك المؤشرات بدون إرسال حدث move (بمعنى آخر، تم استخدام
updatePointerTo()، ولكن ليسmove()، ثم تم استدعاءdown())، كان التنفيذ السابق يقدّم وقت الحدث ويرسل حدث move قبل إرسال حدث down. سيظل التنفيذ الجديد يرسل حدث move، ولكنّه لن يقدّم وقت الحدث في هذه الحالة المحدّدة. - عند إرسال حدث "رفع" أثناء تحريك المؤشرات بدون إرسال حدث "تحريك" (كما هو موضح أعلاه)، كان التنفيذ السابق يقدّم وقت الحدث ويرسل حدث "تحريك" قبل إرسال حدث "رفع". لا تنفّذ عملية التنفيذ الجديدة أيًا مما سبق، ولن تظهر المواضع الجديدة للمؤشرات إلا من خلال حدث "الأعلى".
أخيرًا، تقدّم
TouchInjectionScopeطريقة جديدةcurrentPosition(pointerId: Int)للحصول على الموضع الحالي للمؤشر المحدّد. (If1191، b/190493367)- عند إرسال حدث down أثناء تحريك المؤشرات بدون إرسال حدث move (بمعنى آخر، تم استخدام
إصلاح الأخطاء
- السماح بتوسيع حدود مساحة اللمس إلى ما بعد منطقة القص لأغراض الحد الأدنى لمساحة اللمس (I43e10، b/171509422)
- تمت إضافة دعم تجاوز حد التمرير على أجهزة Android 12. (Iccf3c، b/171682480)
الإصدار 1.1.0-alpha03
1 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تم تعديل Compose
1.1.0-alpha03ليعتمد على Kotlin1.5.30. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.inspectableلتضمين معدِّلات أخرى. (I1909b، b/191017532) - تمت إضافة واجهة برمجة التطبيقات
BlurredEdgeTreatmentلتسهيل حالات استخدام التمويه إلى مجموعات أكثر شيوعًا من علامات المقاطع وTileModes. تتضمّن معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلية وتطبيق التمويه على المناطق خارج هذه الحدود باستخدام اللون الأسود الشفاف، أو قص المحتوى إلى حدود المحتوى مع أخذ عيّنات من الحافة الأقرب لنواة التمويه التي تتجاوز حدود المحتوى. (I6b4b7، b/166927547) - تمت إضافة إمكانية استخدام RenderEffect في Compose Desktop. تمت إضافة OffsetEffect بالإضافة إلى أداة تعديل التمويه كطريقة بسيطة لإضافة مؤثرات بصرية مموّهة إلى جزء من التسلسل الهرمي للتركيبة. (I0f6aa، b/166927547)
- تم تقديم واجهة برمجة التطبيقات RenderEffect التي يمكن ضبطها اختياريًا على
Modifier.graphicsLayerلتغيير محتوى الطبقة نفسها. يمكن استخدامها لتمويه محتويات دالة مركّبة ودوال مركّبة تابعة ضمن تسلسل هرمي للتكوين. (I47c4d، b/166927547) - يتضمّن AwaitPointerEventScope الآن الدالتَين withTimeout() وwithTimeoutOrNull() (I507f0 وb/179239764 وb/182397793)
- تمت إضافة الحد الأدنى لحجم مساحة اللمس إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)
- إضافة إمكانية استخدام TileMode.Decal التي تفيد في تحديد سلوك الحواف بالنسبة إلى RenderEffects المستندة إلى التمويه (I7e8ed، b/166927547)
- أصبحت
performScrollToIndexوperformScrollToKeyوhasScrollToIndexActionوhasScrollToKeyActionواجهات برمجة تطبيقات ثابتة الآن (I142ae، b/178483889) - تمت إضافة طريقة اختبار للحصول على الحدود المقتصة. (I6b28e)
إصلاح الأخطاء
- تمت إزالة طريقة isBounded من BlurredEdgeTreatment واستبدالها بالتحقّق بشكل صريح مما إذا كانت المَعلمة shape فارغة. (I85d68)
الإصدار 1.1.0-alpha02
18 أغسطس 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتيح PointerEvent الآن قراءة حالة زر الماوس وحالة مفتاح التعديل في لوحة المفاتيح. (I6310c، b/180075467)
- تستخدم الإيماءات التي يتم إدخالها الآن وقت MainTestClock كمصدر موثوق للوقت. سيتم ضبط الوقت الحالي للأحداث التي تم إدخالها في
performGestureعلى الوقت الحالي لـ MainTestClock. (Ifb364، b/192064452) - تمت إضافة أداة إنشاء
DpRect(DpOffset, DpSize)(I2cf16، b/194219828) - تمت إضافة فئة DpSize (I7abb1، b/194219828)
إصلاح الأخطاء
- تم تعديل تحليل XML لرسومات المتجهات من أجل إتاحة استخدام ColorStateLists كخصائص تلوين جذرية في VectorDrawables. (I86915، b/195668138)
الإصدار 1.1.0-alpha01
4 أغسطس 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تقبل السمة
RelocationRequester.bringIntoViewالآن مستطيلاً كمعلَمة تتيح لنا عرض جزء من دالة مركّبة (Ice2c5، b/194330245) - أصبحت السمة
AnimatedImageVectorوواجهات برمجة التطبيقات ذات الصلة مضمّنة الآن في وحدةandroidx.compose.animation:animation-graphicsالجديدة. (I60873) - تمت إضافة أداة تعديل تجريبية للتعامل مع طلبات النقل. (I65a97، b/178211874)
تم تقديم واجهة برمجة التطبيقات BrushPainter لإتاحة رسم أي Brush ضمن Painter، على غرار ColorPainter
تم تعديل Brush API لتضمين مَعلمة حجم أساسي يتم طلبها ضمن BrushPainter (Ia2752، b/189466433)
تم تعديل طريقة DrawScope#drawImage التي تستهلك مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterQuality اختيارية. ويفيد ذلك في فن البكسل الذي يهدف إلى أن يكون منقطًا عند تكبيره لإنشاء فن يعتمد على البكسل. تم تعديل BitmapPainter وImage composable ليستهلكا أيضًا مَعلمة FilterQuality اختيارية (Ie4fb0، b/180311607)
تمت إضافة طريقة
GestureScope.advanceEventTimeلمنح المستخدمين تحكّمًا أكبر في توقيت الأحداث في الإيماءة (Ibf3e2)
إصلاح الأخطاء
- لتحسين إمكانية ربط معدِّلات العرض، تأكَّد من أنّ عملية تنفيذ Modifier.paint تستدعي drawsContent.
في السابق، كان من المتوقّع أن يكون Modifier.paint عقدة فرعية في سلسلة المعدِّلات، ولكنّ ذلك يمنع ضبطها على حاوية قابلة للإنشاء (مثل مربّع) أو إضافة عناصر تزيين إضافية في الأعلى، مثل
Modifier.paint().border(). من خلال استدعاء Modifier.paint للدالة drawContent بعد رسم محتويات الرسام المحدّد، نحصل على اتساق أفضل في السلوك مع نمط المعدِّل. (Ibb2a7، b/178201337، b/186213275) - تتّبع مربّعات الحوار الآن سلوك تغيير الحجم الخاص بالمنصّة. اضبط قيمة
usePlatformDefaultWidthعلى false لإلغاء هذا السلوك. (Iffaed، b/192682388) - نقل
InfiniteAnimationPolicyإلى :compose:ui (I5eb09، b/160602714) - أصبحت عملية التمرير من خلال الإجراءات الدلالية للقوائم الكسولة ومكوّنات التمرير العادية متحركة الآن (Id9066، b/190742024)
الإصدار 1.0
الإصدار 1.0.5
3 نوفمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.5. يتضمّن الإصدار 1.0.5 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تتبُّع الأعطال في مثيلات derivedStateOf. (aosp/1792247)
الإصدار 1.0.4
13 أكتوبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.4. يتضمّن الإصدار 1.0.4 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.31من Kotlin
الإصدار 1.0.3
29 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.3. يتضمّن الإصدار 1.0.3 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.30من Kotlin
الإصدار 1.0.2
1 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.2. يتضمّن الإصدار 1.0.2 هذه التعديلات.
تم تعديلها لتتوافق مع الإصدار 1.0.2 من Compose. لا يزال الإصدار 1.0.2 من Compose متوافقًا مع الإصدار 1.5.21 من Kotlin.
الإصدار 1.0.1
4 أغسطس 2021
تم طرح androidx.compose.ui:ui-*:1.0.1. يتضمّن الإصدار 1.0.1 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.21من Kotlin.
الإصدار 1.0.0
28 يوليو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.
الميزات الرئيسية في الإصدار 1.0.0
هذا هو الإصدار الثابت الأول من Compose. يُرجى الاطّلاع على مدوّنة إصدار Compose الرسمية لمزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم الإصدار 4 من استوديو Android Bumblebee Canary أو الإصدار
7.1.0-alpha04/7.1.0-alpha05من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، قد تواجه التعطّل التالي:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف
build.gradle. سيتم حلّ هذه المشكلة في الإصدار التالي من Android Studio Bumblebee و7.1. (b/194289155)
الإصدار 1.0.0-rc02
14 يوليو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تتّبع مربّعات الحوار الآن سلوك تغيير الحجم الخاص بالمنصّة. اضبط قيمة
usePlatformDefaultWidthعلى false لإلغاء هذا السلوك. (Iffaed، b/192682388)
الإصدار 1.0.0-rc01
1 يوليو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
الميزات الجديدة
- تقسيم وحدة ui-tooling إلى
ui-toolingوui-tooling-preview(Iefa28، b/190649014)
تغييرات واجهة برمجة التطبيقات
- إزالة الميزتَين التجريبيتَين القديمتَين
FocusManager#moveFocusInوFocusManager#moveFocusOut(I227d7 وb/170154986 وb/186567354 وb/168510304) - تتيح Canvas الآن استخدام المَعلمة contentDescription لتسهيل الاستخدام. (Ib547c)
- تم تغيير اسم "
useDefaultMaxWidth" فيPopupPropertiesإلى "usePlatformDefaultWidth". (I05710) - يمكن الآن استخدام عرض الشاشة بالكامل في مربّعات الحوار. (I83929، b/190810877)
- تمت إضافة دعم تجريبي لتمثيلات ألوان HSV وHSL. (Id7cf8، b/180731008)
التغييرات في السلوك
- توفّر أداة Compose
@PreviewالآنLocalActivityResultRegistryOwnerتتيح لك معاينة العناصر القابلة للإنشاء التي تستخدم واجهات برمجة تطبيقات مثلrememberLauncherForActivityResult()التي تعتمد على توفّر هذا المالك. (Ib13d1، b/185693006) - توفّر Compose
@PreviewالآنLocalOnBackPressedDispatcherOwnerتتيح لك معاينة العناصر القابلة للإنشاء التي تستخدم واجهات برمجة تطبيقات مثلBackHandlerالتي تعتمد على توفّر هذا المالك. (Ia1c05، b/185693006)
إصلاح الأخطاء
- تم نقل
InfiniteAnimationPolicyإلىandroidx.compose.ui:ui(I5eb09، b/160602714) - تمت إزالة AnimatedImageVector مؤقتًا من أجل تغيير بنية الوحدة. (I41906، b/160602714)
الإصدار 1.0.0-beta09
16 يونيو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta09. يتضمّن الإصدار 1.0.0-beta09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تغيير تعداد Role وLiveRegionMode إلى فئات مضمّنة مع دالة إنشاء خاصة (Id1890)
- يتم تحويل KeyboardCapitalization إلى فئة مضمّنة. (Id5a1c)
- غيِّر HapticFeedbackType إلى فئة مضمّنة. (I255ec)
- Modifier.pointerInteropFilter هو @ExperimentalComposeUiApi. (Iede6c)
- أصبحت TextAlign وFontSynthesis وTextDirection الآن فئات مضمّنة. (I212fe)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
- أصبح FontStyle الآن فئة مضمّنة. (I9e48b)
إصلاح الأخطاء
- الثوابت الرئيسية هي @ExperimentalComposeUiApi في الوقت الحالي. يمكن أن يعرّف رمز الاستخدام الثوابت الخاصة قبل الاستقرار. (Ia5d48)
- يمكن الآن إجراء اختبارات Compose على Robolectric. تم رصد القيود التالية حتى الآن:
- لا تتوفّر خريطة بتات أصلية، لذا يؤدي
ImageBitmap()إلى NullPointerException. - لا يوجد رسم، لذا ستنتظر
captureToImage()إلى أجل غير مسمى عملية الرسم التالية (أي سيحدث توقّف تام). - لم يتم تحميل أي خط، لذا سيتم قياس أي نص بشكل غير صحيح. يبلغ الارتفاع الثابت لكل الأحرف حوالي 20 بكسل والعرض 1 بكسل.
- لا تنفّذ
ComposeTestRule.waitUntil {}سلسلة التعليمات الرئيسية أثناء انتظارها، ما يجعلها مماثلة تمامًاComposeTestRule.mainClock.advanceTimeUntil {}من المتوقّع تحديد المزيد من القيود في المستقبل. (I284fa)
- لا تتوفّر خريطة بتات أصلية، لذا يؤدي
قواعد الملفات الشخصية المُضافة
يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
ما هي قواعد الملف الشخصي؟
يتم تحديد قواعد الملف الشخصي لمكتبة في ملف نصي
baseline-prof.txtموجود في الدليلsrc/mainأو دليل مكافئ. يحدّد الملف قاعدة لكل سطر، حيث تكون القاعدة في هذه الحالة عبارة عن نمط للمطابقة مع الطرق أو الفئات في المكتبة. بنية هذه القواعد هي مجموعة فرعية من تنسيق ملف ART الشخصي القابل للقراءة الذي يتم استخدامه عند استخدامadb shell profman --dump-classes-and-methods .... تتّخذ هذه القواعد أحد الشكلَين التاليَين لاستهداف الطرق أو الفئات.ستتّبع قاعدة الطريقة النمط التالي:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>وستتّبع قاعدة الفئة النمط التالي:
<CLASS_DESCRIPTOR>هنا،
<FLAGS>هو واحد أو أكثر من الأحرفHوSوPللإشارة إلى ما إذا كان يجب تصنيف هذه الطريقة على أنّها "نشطة" أو "بدء التشغيل" أو "بعد بدء التشغيل".<CLASS_DESCRIPTOR>هو واصف الفئة التي ينتمي إليها الأسلوب المستهدَف. على سبيل المثال، سيكون للفئةandroidx.compose.runtime.SlotTableواصفLandroidx/compose/runtime/SlotTable;.
<METHOD_SIGNATURE>هي توقيع الطريقة، وتشمل الاسم وأنواع المَعلمات وأنواع الإرجاع الخاصة بالطريقة. على سبيل المثال، يتضمّن الإجراءfun isPlaced(): BooleanفيLayoutNodeالتوقيعisPlaced()Z.يمكن أن تتضمّن هذه الأنماط أحرف بدل (
**و*و?) لكي تشمل قاعدة واحدة طرقًا أو فئات متعدّدة.
ما هي وظيفة القواعد؟
تشير الطريقة التي تتضمّن العلامة
Hإلى أنّ هذه الطريقة هي طريقة "نشطة"، ويجب تجميعها مسبقًا.تشير الطريقة التي تحمل العلامة
Sإلى أنّها طريقة يتم استدعاؤها عند بدء التشغيل، ويجب تجميعها مسبقًا لتجنُّب تكلفة التجميع وتفسير الطريقة عند بدء التشغيل.تشير الطريقة التي تحتوي على العلامة
Pإلى أنّها طريقة يتم استدعاؤها بعد بدء التشغيل.يشير أحد الصفوف المتوفّرة في هذا الملف إلى أنّه يتم استخدامه أثناء بدء التشغيل ويجب تخصيصه مسبقًا في الذاكرة المؤقتة لتجنُّب تكلفة تحميل الصف.
آلية العمل
- يمكن للمكتبات تحديد هذه القواعد التي سيتم تضمينها في عناصر AAR. عند إنشاء تطبيق يتضمّن هذه العناصر، يتم دمج هذه القواعد معًا واستخدام القواعد المدمجة لإنشاء ملف ثنائي مضغوط خاص بالتطبيق في ART. ويمكن أن يستفيد ART من هذا الملف عند تثبيت التطبيق على الأجهزة من أجل تجميع مجموعة فرعية محدّدة من التطبيق مسبقًا لتحسين أداء التطبيق، وخاصةً عند تشغيله للمرة الأولى. يُرجى العِلم أنّ هذا الإجراء لن يؤثر في التطبيقات التي يمكن تصحيح أخطائها.
الإصدار 1.0.0-beta08
2 يونيو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta08. يتضمّن الإصدار 1.0.0-beta08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم استبدال تعداد
NestedScrollSourceبفئة مضمّنة. (Ie321b، b/187055290) - تمت إعادة تسمية "
FocusManager.clearFocus(forcedClear = true)" إلى "FocusManager.clearFocus(force = true)" (Ia0c41) - تمت إعادة تصميم استخدامات التعداد لتصبح فئات مضمّنة لتجنُّب المشاكل المتعلّقة بعبارات when الشاملة عند إضافة قيم تعداد جديدة. (I2b5eb)
- ستتم إزالة
@ExperimentalComposeUiApiمنPopupProperties. (I01fa6) - تم تغيير
PointerTypeمن تعداد إلى فئة مضمّنة (If5058) - لم تعُد خصائص ContentDescription وText الدلالية قيمًا فردية، بل أصبحت قوائم. يتيح ذلك دمجها كما هي بدلاً من تسلسلها. تم أيضًا توفير واجهات برمجة تطبيقات أفضل للاختبار من أجل الاستفادة من هذه التغييرات (Ica6bf وb/184825850).
- تم إيقاف
Modifier.focusModifier()نهائيًا واستبداله بـModifier.focusTarget()(I6c860) - لم يعُد يتم تضمين الدالتَين
Modifier.onSizeChanged()وModifier.onGloballyPositioned()في التعليمات البرمجية (I727f6، b/186109675) - تم استبدال تعداد
KeyboardTypeبفئة مضمّنة. (I73045، b/187055290) - تم استبدال تعداد
FocusStateبواجهةFocusState(Iccc1a، b/187055290) - تم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
- يتم تحويل
PlaceholderVerticalAlignإلى فئة مضمّنة. (If6290) - أصبح TextUnitType الآن فئة مضمّنة. (I4cba9)
- أصبحت دوال
AnnotatedString.withAnnotationتابعة لواجهة برمجة التطبيقات ExperimentalTextApi بدلاً من ExperimentalComposeApi. (I0cd0a)- أصبح منشئ TextUnit الذي يتضمّن TextUnitType هو ExperimentalTextApi بدلاً من ExperimentalComposeApi.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تم تقديمه في الإصدار التجريبي 07 والذي كان يتسبّب في عرض عناصر LazyColumn/Row بشكل جزئي بعد التمرير (I8c9ac، b/188566058)
- ستستهلك الآن
detectDragGesuresوdetectVerticalGesturesوdetectHorizontalGesturesتغيير الموضع تلقائيًا، ولن تحتاج إلى استدعاء change.consumePositionChange في عمليات إعادة الاستدعاء onDrag (I42fc4 وb/185096350 وb/187320697). - تم إصلاح LayoutModifiers التي توفّر خطوط المحاذاة. تم إصلاح خطأ كان يتسبّب في عدم إعادة قياس العنصر الرئيسي عند تغيير خطوط محاذاة العناصر الفرعية. (I4401f، b/174315652)
- تم تغيير
Modifier.onGloballyPositioned()للإبلاغ عن إحداثيات أداة التعديل هذه في سلسلة أدوات التعديل، وليس إحداثيات التصميم بعد تطبيق جميع أدوات التعديل. وهذا يعني أنّ ترتيب المعدِّلات يؤثّر الآن في الإحداثيات التي سيتم تسجيلها. (Ieb67d، b/177926591)
الإصدار 1.0.0-beta07
18 مايو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta07. يتضمّن الإصدار 1.0.0-beta07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة
ViewRootForInspectorلاستخدامها في "أداة الفحص" (Ib70df) - يتيح
SubcomposeLayoutStateالآن ضبط عدد الخانات القابلة لإعادة الاستخدام. سيحافظ التصميم على عدد الخانات النشطة هذا بدلاً من التخلص منها لإعادة استخدام الخانة في المرة التالية التي نحتاج فيها إلى خانة جديدة (Ieb981). - تم استبدال تعداد KeyEventType بفئة مضمّنة. (Id670a، b/187055290)
- تم استبدال تعداد
FocusDirectionبفئة مضمّنة. (Ib6d03، b/187055290، b/184086802) - تتيح هذه الميزة إمكانية نقل حالة SubcomposeLayout، ما يسمح لك بتجهيز المحتوى مسبقًا في slotId مطلوب، ما يؤدي إلى تسريع عملية القياس التالية، لأنّه عند محاولة إنشاء تركيبة فرعية باستخدام slotId المحدّد في المرة التالية، لن تكون هناك حاجة إلى إنشاء تركيبة. (I42580، b/184940225)
- إضافة مقبض اختيار المقطع (Iff80d، b/183408447)
- تمت إزالة واجهات برمجة التطبيقات غير المستخدَمة ذات الصلة بتوافق LayoutInspector. (I2ac78)
إصلاح الأخطاء
- ستحتفظ السمة LazyColumn/Row الآن بما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (لم يتم التخلص منهما) حتى عند إيقاف التمرير. يتيح ذلك للمكوّن إعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد، ما يحسّن أداء التمرير. (Ie5555)
- سيتم تطبيق
TextGeomerticTransformوTextDecorationعلىAnnotatedStringعلى النحو المحدّد. (I61900، b/184760917)
الإصدار 1.0.0-beta06
5 مايو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta06. يتضمّن الإصدار 1.0.0-beta06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- حلّ التعارض مع إيماءة التنقّل (I1145e)
- لم يعُد
@ComposeCompilerApi@RequiresOptIn(Iab690) - تمت إضافة واجهات برمجة تطبيقات تسهيل الاستخدام CollectionInfo وCollectionItemInfo التي تتيح وضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (Id54ef وb/180479017).
- تمت إضافة
SemanticsActions.ScrollToIndexلتمرير قائمة تتضمّن عناصر مفهرسة إلى العنصر الذي يتضمّن فهرسًا معيّنًا، وSemanticsProperties.IndexForKeyللحصول على فهرس عنصر في قائمة تتضمّن عناصر مفتاحية. يتم تنفيذ كلا الإجرائين من خلال LazyList.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndexالتي تنقل قائمة إلى الفهرس المحدّد، وSemanticsNodeInteraction.performScrollToKeyالتي تنقل قائمة إلى العنصر الذي يتضمّن المفتاح المحدّد. (I4fe63، b/178483889، b/161584524)
- تمت إضافة
- تمت إضافة ownerViewId إلى GraphicLayerInfo (I19f62)
- تمت إضافة عمليات تحميل زائدة إلى Font() لتحميل الخطوط من مواد العرض والملفات وFileDescriptor (I5d382)
- تمت إضافة واجهة برمجة تطبيقات تسهيل الاستخدام
errorالتي تتيح وضع علامة على عقدة تحتوي على إدخال غير صالح (I12997، b/180584804، b/182142737) - تمت إضافة
Font()حمولات زائدة لتحميل الخطوط من مواد العرض والملفات وFileDescriptor (I43007) - إتاحة حفظ AnnotatedString في
TextFieldValue.Saverتمّت إضافة الدالتَينaddTtsAnnotationوwithAnnotation إلىAnnotatedString.Builder(I8cbdc، b/178446304) - تمت إضافة دالة إنشاء TextUnit
TextUnit(value: Float, type: TextUnitType)(I7ecce، b/178446304)
الإصدار 1.0.0-beta05
21 أبريل 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta05. يتضمّن الإصدار 1.0.0-beta05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة
FocusManager.moveFocus(In)وFocusManager.moveFocus(Out)التجريبيتين (Ic5534، b/183746743) - تمت إضافة واجهة برمجة التطبيقات التجريبية
performTextInputSelection(I2dcbb، b/178510628) - تم إيقاف واجهة
InputEventCallbackنهائيًا. لم يكن من الممكن استخدام الواجهة في أي واجهة برمجة تطبيقات عامة، ولم يتم استخدامها في الرمز البرمجي. (I34a02، b/184003208) - تم إيقاف الدالة
TextLayoutResult/createTextLayoutResultنهائيًا. وهي دالة عامة غير مستخدَمة تمت إضافتها لأغراض الاختبار. لا تنفّذ الدالة أي إجراء قابل للاستخدام مع واجهات برمجة التطبيقات النصية في Compose. تم إيقاف هذه الوظيفة نهائيًا وستتم إزالتها لاحقًا. (I80413)
إصلاح الأخطاء
- تم إصلاح إجراءات التمرير الخاصة بتسهيل الاستخدام في
ACTION_SCROLL_FORWARDوACTION_SCROLL_BACKWARDوaccessibilityActionScrollLeftوaccessibilityActionScrollUpوaccessibilityActionScrollRightوaccessibilityActionScrollDown. بدلاً من التمرير إلى نهاية المحتوى القابل للتمرير، سيتم الآن التمرير بمقدار شاشة واحدة في الاتجاه المحدّد. (Ieccb0) - أصبحت ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع Android 12 (I6f9de وb/184718994).
الإصدار 1.0.0-beta04
7 أبريل 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta04. يتضمّن الإصدار 1.0.0-beta04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أعِد تسمية
hideSoftwareKeyboardوshowSoftwareKeyboardفيSoftwareKeyboardControllerإلىhide()وshow()على التوالي.- توفير واجهة CompositionLocal الكاملة لـ LocalSoftwareKeyboardController، ما يسمح بضبطها (مفيد بشكل خاص في الاختبارات) (I579a6)
- تمت إضافة واجهة برمجة التطبيقات LiveRegion التي تتيح استخدام أدوات تسهيل الاستخدام. إذا تم وضع علامة على العقدة كمحتوى ديناميكي متغيّر، ستُعلم خدمات تسهيل الاستخدام المستخدم تلقائيًا بالتغييرات التي تطرأ عليها (Idcf6f، b/172590946).
- تم تقديم TextOverflow.Visible. (Ic8f89)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى تحديد موضع عناصر
LazyColumn/LazyRowالموجودة على الحواف بشكل غير صحيح بعد إجراء عملية نقل سريع (Ie4d13، b/183877420) - تزيل
AndroidViewBindingالآن بشكل صحيح الأجزاء التي تم تضخيمها من خلالFragmentContainerViewعند إزالةAndroidViewBindingمن التسلسل الهرمي لـ Compose. (Ib0248، b/179915946) - يمكن الآن تضمين
AndroidViewBindingبشكل صحيح في الأجزاء التي يتم تضخيمها من خلالFragmentContainerViewعندما يكونComposeViewضمنFragment، ما يحلّ المشاكل المتعلّقة بحفظ حالة هذه الأجزاء واستعادتها. (I70eb0، b/179915946) - تعتمد Compose ViewBinding الآن على
Fragment
1.3.2وتعرض الآن باستمرار الأجزاء التي تم تضخيمها من خلالFragmentContainerViewبعد تغييرات الإعدادات. (I0743d، b/179915946)
الإصدار 1.0.0-beta03
24 مارس 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta03. يتضمّن الإصدار 1.0.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- التحقّق المؤجّل من التبعيات في ViewTree الخاصة بـ ComposeView (I8dbbf، b/182466548)
- تمت إضافة المَعلمتَين الاختياريتَين
startX/endXوstartY/endYإلى الدوالswipeUp/swipeDown/swipeLeft/swipeRightفيGestureScope. (I49e2d، b/182063305)
الإصدار 1.0.0-beta02
10 آذار (مارس) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta02. يتضمّن الإصدار 1.0.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053) - تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053) - تمت إزالة
SemanticsMatchers التالية:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)-
hasBottomPosition(bottom, tolerance)(If16bd)
- تم وضع علامة
SemanticsMatchersعلى ما يلي @ExperimentalTestApi:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- تمت إضافة
SemanticsMatchers التالية:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)-
hasBottomPosition(bottom, tolerance)(I2f502)
إصلاح الأخطاء
- فرض قيود على الاستخدام العام لواجهات برمجة التطبيقات التجريبية (I6aa29 وb/174531520)
- لم يعُد
androidx.compose.ui:uiيعتمد على AppCompat أو Fragment. إذا كنت تستخدم ComposeView في تطبيقك، وكنت تستخدم Fragment و/أو AppCompat، تأكَّد من استخدام AppCompat 1.3+ أو Fragment 1.3+، فهذه الإصدارات مطلوبة لضبط مالكي مراحل النشاط والحالة المحفوظة اللازمين لـ ComposeView بشكلٍ صحيح. (I1d6fa، b/161814404) - إصلاح المشكلة في
rememberSaveable { mutableStateOf(0) }عند استخدامه داخل وجهة في Navigation-compose (I1312b، b/180042685، b/180701630) - تمّت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardControllerمحلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053) - تم إصلاح خطأ NoSuchElementException النادر في
ComposeRootRegistry'stearDownRegistry()(Iddce1)
الإصدار 1.0.0-beta01
24 فبراير 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
هذا هو الإصدار الأول من الإصدار التجريبي 1.0.0 من Compose.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عملية الاستدعاء onStart إلى
detectDragGestures(I67269، b/179995594) - لم تعُد المعدّلات الخاصة بتحديد الحجم وفقًا للخصائص التجريبية. (I15744)
- تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy، وأصبحت واجهة ممتعة. تم تعديل / تبسيط واجهات برمجة التطبيقات الخاصة بالتصميم لاستخدام MeasurePolicy. (Icab48، b/167662468، b/156751158)
- تم استبدال "
InteractionState" بـ "[Mutable]InteractionSource"- تكون الواجهات مسؤولة عن إصدار أحداث التفاعل وجمعها.
- بدلاً من تمرير
interactionState = remember { InteractionState() }إلى مكوّنات مثلButtonوModifier.clickable()، استخدِمinteractionSource = remember { MutableInteractionSource() }. - بدلاً من:
Interaction.Pressed in interactionState، يجب استخدام دوال الإضافة في InteractionSource، مثل InteractionSource.collectIsPressedAsState(). - بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة سلسلة التفاعلات. اطّلِع على مستندات InteractionSource وأمثلتها للحصول على مزيد من المعلومات.
- (I85965، b/152525426، b/171913923، b/171710801، b/174852378)
- إضافة واجهة AccessibilityMananger وLocalAccessibilityMananger في CompositionLocals (I53520)
- تمت إزالة طرق LayoutCoordinates المتوقّفة نهائيًا، واستخدام الدالة بدلاً من السمة لكل من positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755)
- تم استبدال أسماء الأنواع المستعارة بالأنواع الأساسية:
- "
ColorStop" أصبح الآن "Pair<Float, Color>" - أصبحت
SpanStyleRangeالآن `AnnotatedString.Range - "
ParagraphStyleRange" أصبح الآن "AnnotatedString.Range<ParagraphStyle>" - "
StringAnnotation" أصبح الآن "AnnotatedString.Range<String>" - (I8dd1a)
- "
- تم إنشاء TextInputSession جديد لجلسات الإدخال من مكوّنات النص ذات المستوى المنخفض، مثل CoreTextField. (I8817f، b/177662148)
- تعرض السمة Placeable الآن السمة measuredSize، التي تمثّل الحجم الذي تم قياس تنسيق العنصر الفرعي به فعليًا. قد لا يلتزم هذا الحجم بقيود القياس. (Ib2729، b/172560206، b/172338608)
- إضافة معدِّل selectionGroup الذي يتيح وضع علامة على مجموعة من علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
أصبح من الضروري الآن إدخال
defaultFactoryالخاص بـcompositionLocalOfوstaticCompositionLocalOfبدلاً من أن يكون اختياريًا.يزيل هذا التغيير خطأ محتملاً في النوع للأنواع غير القابلة للتصنيف حيث لم يتم توفير إعدادات المصنع التلقائية. في السابق، كان هذا الإجراء يؤدي إلى توفير مرجع فارغ لنوع غير قابل للقيم الفارغة.
بالنسبة إلى الأنواع القابلة للتصغير، ننصحك بتوفير
{ null }كإعداد تلقائي للمصنع.لا ننصح باستخدام متغيرات محلية مع أنواع غير قابلة للتصغير إلا إذا كان من الممكن توفير قيمة تلقائية معقولة. إذا لم تتوفّر قيمة تلقائية منطقية، يجب أن تعرض الدالة
defaultFactorylambda استثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستهلكي اللغة المحلية سيكون لديهم تبعية ضمنية على توفيرها، وهي تبعية لا يفرضها نظام الأنواع. (Ifbd2a)تمت إزالة الطرق المتوقّفة نهائيًا من وحدات واجهة المستخدم (I646f6)
تمت إعادة تسمية عناصر تعديل الحجم. تمت إعادة تسمية Modifier.width/height/size إلى requiredWidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.preferredWidth/preferredHeight/preferredSize إلى width/height/size. (I5b414)
تمّت إزالة
Modifier.tapGestureFilter. يمكنك استخدامModifier.pointerInput { detectTapGestures(...) }كبديل. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. الطريقة المقترَحة لتنسيق الاستهلاك الجزئي هي Modifier.nestedScroll. (Ie9c9b)
تم نقل الاتجاه إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)
أصبحت imageResource وvectorResource الآن دالتَين إضافيتَين في ImageBitmap وImageVector على التوالي. تم حذف
load{Image,Vector,Font}Resourceدالة. (I89130)تمت إزالة AnimationClockObservable والفئات الفرعية. تمت إزالة AnimatedFloat. (Icde52، b/177457083)
تمت إعادة تسمية Providers إلى CompositionLocalProvider
- لم يعُد منشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة مركّبة ذات مستوى أعلى بدلاً من دالة مركّبة ذات مستوى أعلى.
- تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم تحويل ComposableLambda إلى واجهة بدلاً من فئة ملموسة، ولم يعُد يتضمّن مَعلمات أنواع.
- تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة ملموسة، ولم يعُد يتضمّن مَعلمات أنواع.
- تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime
- لم يعُد دمج طريقة SnapshotMutationPolicy تجريبيًا
- تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعُد ذلك ضروريًا.
- تمت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد ضرورية.
- تمت إزالة Composer.collectKeySourceInformation. لم يعُد ذلك ضروريًا.
- تمت إزالة الطرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد ضرورية.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي بدون إيقاف التوافق مع المصدر، لذا لن يسبّب ذلك مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
تمت إزالة
ComponentActivity.setContent()من compose:ui. استخدِم الرمز منandroidx.activity:activity-compose:1.3.0-alpha01. تمت إزالةviewModel()وLocalViewModelStoreOwnerمن compose:ui. استخدِم تلك الواردة فيandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b).تمت إعادة تصميم Modifier.scrollable. يستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473).
تمت إزالة إمكانية استخدام CustomEvens من PointerInputModifier (I02707، b/175294473)
لم يعُد SnapshotStateObserver تجريبيًا (Id2e6a)
تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)
تمت إزالة longPressGestureFilter وdoubleClickGestureFilter. استخدِم Modifier.pointerInput مع دوال مساعدة، مثل detectTapGestures (I2fedf، b/175294473).
تمت إزالة واجهة برمجة التطبيقات String.format، وتمت إعادة تصميم الاستخدامات في طرق toString المختلفة لعدم الاستفادة من String.format داخليًا. (Id1290)
إزالة تأكيدات dp (I798d2)
إزالة androidx.compose.runtime:runtime-dispatch (I55feb)
تتحقّق الإجراءات التي يمكن تنفيذها على النص الآن من التركيز تلقائيًا (I13777، b/179648629)
تمت الإزالة
runBlockingWithManualClock(I15cdc، b/179664814)يتم الآن تمثيل موضع التمرير في Modifier.verticalScroll()/horizontalScroll() باستخدام أعداد صحيحة (I81298)
تمت إعادة تسمية FlingConfig إلى FlingBehavior، وهي تتيح الآن تخصيص الصورة المتحركة الخاصة بالتعليق بدلاً من عمليات التلاشي المحدّدة مسبقًا. (I02b86، b/175294473)
تمّت إضافة دالة مساعدة مفيدة لضبط الإجراء نفسه لجميع عمليات ردّ الاتصال ImeAction (I63447، b/179226323)
تمت إزالة معاودة الاتصال SoftwareKeyboardController من جميع حقول النص، وسيتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
لم يعُد يتم استخدام FontSpan وFontWeigthStyleSpan وتمت إزالتهما. (Ie5b56، b/177423444)
تم إجراء التغييرات التالية على Material API:
- تمت إضافة المَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
- تمت إعادة ترتيب المَعلمات في BackdropScaffold لتتوافق مع إرشادات واجهة برمجة التطبيقات بشأن المَعلمات المطلوبة التي تسبق المَعلمات الاختيارية.
- تم نقل المَعلمة
iconفي BottomNavigationItem لتصبح بعدselectedوonClick. - تمت إعادة تسمية المَعلمة
alwaysShowLabelsفي BottomNavigationItem إلىalwaysShowLabel. - تمت إعادة تسمية المَعلمات
bodyContentفي بعض المكوّنات إلىcontentفقط. - إعادة ترتيب المَعلمات في
ButtonDefaults.buttonColors()يُرجى العِلم أنّه بما أنّ نوع المَعلمات لم يتغيّر، لن يتسبّب ذلك في حدوث خطأ في الرمز البرمجي. يُرجى التأكّد من استخدام المَعلمات المسماة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز البرمجي بالطريقة نفسها كما كان في السابق. - تمّت إضافة المَعلمة
secondaryVariantإلىdarkColors(). يكون هذا اللون عادةً هو نفسهsecondaryفي "المظهر الداكن"، ولكن تتم إضافته لتحقيق التناسق والمزيد من التخصيص. - تمت إزالة ElevationDefaults وanimateElevation() من مساحة واجهة برمجة التطبيقات العامة لأنّهما لم يكونا شائعَي الاستخدام أو مفيدَين.
- تمت إعادة تسمية
onValueChangeEndفيSliderإلىonValueChangeFinishedوتم السماح بقيمة فارغة. - تمت إعادة تسمية المَعلمة
textفيSnackbarإلىcontentلضمان الاتساق. - تمت إضافة المَعلمة
contentPaddingإلىDropdownMenuItemللسماح بتخصيص المساحة المتروكة التلقائية، وتمّت إضافةcontentكإضافة إلىRowScope. - تمت إعادة تسمية "
ModalDrawerLayout" إلى "ModalDrawer". - تمت إعادة تسمية "
BottomDrawerLayout" إلى "BottomDrawer". - (I1cc66)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد AnimatedVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملف
<animated-vector>XML كـ AnimatedImageVector وتحريكه باستخدام painterFor (I8ea91). - تمت إضافة واجهة برمجة تطبيقات جديدة LocalSoftwareKeyboardController محلية للتركيب لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
الإصدار 1.0.0-alpha12
10 فبراير 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha12. يتضمّن الإصدار 1.0.0-alpha12 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمت إزالة الدوال البرمجية القابلة للإنشاء emitView المتوقّفة نهائيًا. (Ifb214)
- يتطلّب Modifier.pointerInput الآن مفاتيح remember للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين coroutine لرصد إدخال المؤشر من أجل التبعيات الجديدة. (I849cd)
- تمت إعادة تسمية CompositionReference إلى CompositionContext (I53fcb)
- تم تغيير اسم "الحدود" إلى DpRect (I4b32a)
- تعديل على الاختبار: ستتحقّق الدالة hasText() من نصوص الإدخال والتسمية/التلميح/العنصر النائب في حقل النص (Iab803).
- تم نقل الدالة البرمجية القابلة للإنشاء viewModel() وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. عليك الآن إضافة تبعية منفصلة androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لاستخدامها. (I7a374)
- السماح بإجراء قابل للتصغير في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى String (I0dc82)
- من أجل مطابقة اصطلاحات التسمية بشكل أفضل مع ImageBitmap وImageVector، تم تغيير اسم ImagePainter إلى BitmapPainter ليكون مشابهًا لـ VectorPainter. (Iba381، b/174565889)
- واجهات برمجة تطبيقات أفضل لاختبار السلسلة الفرعية مع السلسلة الفرعية الآن كمعلَمة (Icbe78)
- تمت إضافة
Modifier.focusOrder()يقبل FocusRequester بدون تحديد ترتيب تركيز مخصّص أو تعبير lambda. يكون ذلك مفيدًا عندما نحتاج فقط إلى تحديد مرجع وليس ترتيب تركيز مخصّصًا لعنصر قابل للإنشاء (I4f52a، b/179180978). - تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الوحدة androidx.activity:activity-compose. (Icf416)
- تمت إزالة طريقتَي التفكيك وcopy() من عدة فئات لم يتم استخدامهما فيها إلا نادرًا. (I26702، b/178659281)
- تم نقل النافذة المنبثقة لتكون خاصة بالنظام الأساسي. تمت إعادة تسمية AndroidPopupProperties إلى PopupProperties، وتم نقل
isFocusableإلى المَعلمةfocusableفيPopupProperties(Ieeea5) - تم نقل مربّع الحوار ليكون خاصًا بالنظام الأساسي. تمت إعادة تسمية AndroidDialogProperties إلى DialogProperties. (I4ef69، b/179138130)
- جعل LayoutNode داخليًا (I8a7b1، b/175103944)
- تم استبدال Constraints.enforce بـ Constraints.constrain. (I8b8ea)
- تم إيقاف loadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك، لأنّ imageResource وloadImageResource وvectorResource وloadVectorResource أصبحت غير متوافقة. استخدِم painterResource بدلاً من ذلك. (I6b809)
- لأسباب تتعلّق بالأداء، أصبحت دلالات ScrollAxisRange تقبل الآن تعبيرات lambda تعرض قيمًا من النوع Float بدلاً من قيم Float مباشرةً. (If4a35، b/178657186)
- تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في الحقل النصي لتسهيل الاستخدام وطرق الاختبار المقابلة للتحقّق من الدلالات (I8e07a)
- تم جعل OwnerLayer/OwnerScope/OwnerSnapshotObserver داخليًا (I4ffaf، b/175103944)
- تمت إعادة تسمية الدالة toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
- تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
- تم تعديل Snapshot API لتكون أكثر اتساقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات المتاحة للجميع. (Id9e32)
- تمت إضافة إجراءات دلالية للتوسيع والتصغير. إضافة expand وhalfExpand في ModalBottomSheetState (Ib5064)
- تم إيقاف Modifier.dragGestureFilter نهائيًا. يمكن استخدام
Modifier.pointerInput { detectDragGestures (...)}كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لعمليات السحب على محور واحد (I0ba93، b/175294473). - تمت إعادة تسمية Ambients لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كانت أسماء Ambients في السابق AmbientFoo، أما الآن فأسماء CompositionLocals هي LocalFoo. (I2d55d)
- تمت الآن إزالة BaseTextField التي تم إيقافها نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
- تم نقل الجزء المحدّد إلى الطبقة الأساسية. (I7892b)
- على غرار الطريقة التي أزلنا بها سابقًا الدالة القابلة للإنشاء
state { 0 }ونشجّع الآن على استخدام دوال مثلremember { mutableStateOf(0) }، سنزيل الدالة القابلة للإنشاءsavedInstanceState { 0 }. عليك استخدامrememberSaveable { mutableStateOf(0) }بدلاً من ذلك، وسيتم حفظ الحالة واستعادتها تلقائيًا إذا كان يمكن تخزين النوع المستخدَم داخل MutableState في الحزمة. إذا كنت قد مرّرت سابقًا عنصر حفظ مخصّصًا، عليك الآن استخدام تحميل زائد جديد للدالة rememberSaveable يحتوي على المَعلمةstateSaver. سيكون الاستخدام على النحو التالي:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26، b/177338004) - إضافة دلالات كلمات المرور لتسهيل الاستخدام (I231ce)
- تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدم غير المحددة لتسهيل الاستخدام (I6fe05)
- تم إيقاف الأداة المساعدة
emptyContent()والأداة المساعدة(@Composable () -> Unit).orEmpty()نهائيًا لأنّه لم يعُد لهما أي تأثير إيجابي في الأداء أو القيمة (I0484d) - لم يعُد
snapshotFlowوwithMutableSnapshotتجريبيَين (I6a45f) - يمكن الآن إغلاق أدوات إعادة التجميع. ستستمر عمليات إعادة التركيب المغلقة إلى أن تكتمل الكوروتينات الفرعية للتركيب. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينها وبين close. (Ib6d76)
- تمت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وإعادة تسمية AmbientUiSavedStateRegistry إلى AmbientSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
- تمت إعادة تسمية العنصر androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac)
- تم حذف العديد من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا منذ فترة طويلة في حزمة ui. (I2f2dc)
- تم إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime، ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)
- لم تعُد فئات Outline.* فئات بيانات (I4879e، b/178001427)
- تمت إزالة
view.captureToImage()بدون أي بديل. (I7fcd2) - تم تقديم واجهة برمجة التطبيقات ColorMatrix المستخدَمة لتعديل قيم rgb للمحتوى المصدر تمت إعادة تصميم واجهة برمجة التطبيقات ColorFilter لتصبح واجهة وتتطابق مع التنفيذ في PathEffect. (Ica1e8)
- إضافة المَعلمة layoutDirection إلى createOutline في Shape يتيح ذلك إنشاء أشكال تراعي اتجاه التنسيق. (I57c20، b/152756983)
- تم إيقاف onImeActionPerformed نهائيًا. استخدِم KeyboardActions بدلاً من ذلك (If0bbd، b/179071523)
- تم تقديم عنصر سياق روتين فرعي
InfiniteAnimationPolicyسيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء اختبارات باستخدامComposeTestRule. (I50ec4، b/151940543) - تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
- تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بإنشاء السمة parentCoordinates الجديدة. تقدّم السمة parentCoordinates الآن LayoutCoordintes الخاصة بعنصر التعديل الرئيسي. سيؤدي ذلك إلى توفير حالات استخدام أكثر اكتمالاً للدالتَين onSizeChanged() وonGloballyPositioned() (Idfbfd وb/177926591).
- تم إيقاف tapGestureFilter وdoubleTapGestureFilter وlongPressGestureFilter وpressIndicaitonGestureFilter نهائيًا. استخدِم Modifier.clickable أو Modifier.pointerInput مع الدالة detectTapGestures بدلاً من ذلك. (I6baf9، b/175294473)
- تمت إزالة unregisterProvider من SaveableStateRegistry. بدلاً من ذلك، تعرض الدالة registerProvider() الآن العنصر SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739).
- تمت إعادة تسمية rememberSavedInstanceState() إلى rememberSaveable() ونقلها إلى حزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
- تمت إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة
- إزالة التحميل الزائد المتوقّف نهائيًا لـ SelectionContainer
- (I99c19)
- أصبحت الاختبارات التي يتم فيها استخدام Compose في التسلسلات الهرمية التي تتم إضافتها/إزالتها مباشرةً من WindowManager أكثر استقرارًا. (Ie81ed، b/175765614)
- تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم إنشاؤه تلقائيًا بشكل مؤجّل، ويتم تشغيل Recomposers بنطاق النافذة من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب وعلامات الصورة المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)
- توفّر Recomposer.runningRecomposers الآن StateFlow العالمي الخاص بـ RecomposerInfo للقراءة فقط، وذلك لمراقبة حالة التركيب الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current()، التي تم إيقافها نهائيًا. (If8ebe)
- تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
- تقبل EditCommands السلسلة AnnotatedString. ومع ذلك، هذا التغيير متاح فقط في واجهة برمجة التطبيقات، ولم يتم بعد تنفيذ ميزة تعديل النصوص المتعددة الأنماط. (I4c3ea)
- تمت إزالة وقت التشغيل والمدة. (Ib9bf4، b/177420019)
- تم نقل CompositionData.asTree() وواجهات برمجة التطبيقات ذات الصلة إلى وحدة ui-tooling-data منفصلة وتم تصنيفها على أنّها تجريبية (Ic95b8)
- تمت إعادة تسمية المَعلمات في RounderCornerShape وCutCornerShape وCornerBasedShape من يسار/يمين إلى بداية/نهاية من أجل إتاحة ميزة الانعكاس التلقائي للشكل في اتجاه الكتابة من اليمين إلى اليسار. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يُراد فيها الانعكاس التلقائي. (I61040، b/152756983)
تمت إعادة تصميم واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمترجم Compose لاستخدام واجهة بدلاً من فئة مجردة. لم تعُد الواجهة تستخدم مَعلمة نوع.
هذا تغيير داخلي لا يؤثّر في توافق الرمز المصدري، ولكنّه تغيير يؤدي إلى عدم توافق الرمز الثنائي. (I3b922، b/169406779)
إزالة الدالة StringBuilder.deleteAt العامة عن غير قصد (Id6ed9)
إصلاح الأخطاء
- تستضيف الآن ComposeViews الموضوعة في تسلسلات هرمية للعرض والتي تكون عناصر فرعية لتصميم آخر، تصاميم فرعية للعناصر الأصلية (I92883)
- تم تعديل واجهة برمجة التطبيقات imageFromResource في Compose لإعادة استخدام ذاكرة التخزين المؤقت للرسومات القابلة للرسم من الموارد عند تحميل عناصر ImageBitmap. (If3627، b/178751994)
الإصدار 1.0.0-alpha11
28 يناير 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha11. يتضمّن الإصدار 1.0.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تصميم WithConstraints ليصبح BoxWithConstraints وتم نقله إلى foundation.layout. (I9420b، b/173387208)
- تم إيقاف Key.DPadUp نهائيًا. استخدِم Key.DirectionUp بدلاً من ذلك. (Iab335، b/177954892)
- ستكون واجهة المالك داخلية من الآن فصاعدًا. (If8e35)
- تمت إضافة واجهة برمجة التطبيقات FocusManager.moveFocus() لنقل التركيز آليًا. (I045cb، b/177681839)
- تغيير PopupPositionProvider لاستخدام إحداثيات نسبية للنافذة، وليس إحداثيات عامة إعادة تسمية parentGlobalBounds إلى anchorBounds، وتغيير windowGlobalBounds إلى windowSize: IntSize (I2994a)
- سيتم استبدال المدة ووقت التشغيل بالملّي ثانية الطويلة، وستؤدي هذه الخطوة إلى إزالة الاعتمادية الخاصة بإدخال المؤشر في تلك الفئات. (Ia33b2، b/175142755، b/177420019)
- تمت إضافة AmbientSavedStateRegistryOwner بشكل مشابه لـ AmbientLifecycleOwner وAmbientViewModelStoreOwner الحاليَين (I9a3e8 وb/176756365)
- تم تعديل واجهة برمجة التطبيقات للرسومات المتجهة لتتيح تحليل التلوين المطبَّق على جذر الرسومات المتجهة. (Id9d53، b/177210509)
- تمت إضافة toolType إلى PointerInputChange للتمييز بين الأجهزة (Iac787، b/175142755)
- تمت إعادة تسمية AmbientWindowManager إلى AmbientWindowInfo (I2686a وb/177084714 وb/177084983).
- تم إيقاف طرق الإحداثيات العامة نهائيًا واستبدالها بطرق إحداثيات جديدة مستندة إلى النوافذ. (Iee284)
- تمت إضافة Modifier.toolingGraphicsLayer الذي يضيف معدِّل طبقة الرسومات عند تفعيل وضع الفحص. (I315df)
- تم تصنيف FocusRequester.createRefs على أنّه تجريبي لأنّه قد يتغيّر. (I2d898، b/177000821)
- تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة @ExperimentalComposeUiApi عليها. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية stateDescriptionRange إلى progressBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange، وhorizontalAccessibilityScrollState إلى horizontalScrollAxisRange، وverticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)
- تمت إزالة PointerInputData وتعديل PointerInputChange لتضمين جميع حقول PointerInputData. تم جعل PointerInputEvent وPointerInputEventData داخليتَين لأنّهما لا تُستخدَمان في أي واجهة برمجة تطبيقات عامة. (Ifff97، b/175142755)
- تم تعديل تنفيذ GraphicsLayerScope density لإتاحة تحويل وحدات dp إلى وحدات بكسل أولية. (Ied528، b/176819695)
- تم تعديل واجهة برمجة التطبيقات الخاصة بالمصفوفة لتتّبع الترتيب الرئيسي للصفوف وتوفير ثوابت الفهرس للمساعدة في عمليات التحويل بين تمثيلات المصفوفات المختلفة لتتطابق مع منطق التحويل في إطار العمل بين SkMatrix وMatrix4 داخليًا. (I432e6)
- تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f وb/170708374)
- نقل الدالتَين String.fintPrecedingBreak وString.fingFollowingBreak إلى InternalTextApi (I657c4)
- تمت إزالة androidx.compose.ui.util.isSurrogatePair من واجهة برمجة التطبيقات العامة. (Ia9494)
- تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text
- لم يعُد TransformedText فئة بيانات (Ie672a)
- تمت إزالة
data classمن الصفوف التالية:- InlineTextContent
- LocaleList (I605c7)
- لم تعُد الفئات التالية فئات بيانات:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- تغيير VisualTransformation إلى واجهة وظيفية (I3bba4)
- تمت إضافة نوع مَعلمة مرجعية للدالة (I5e1bd)
- إضافة حدود محوَّلة إلى InspectorNode (Ice42f)
إصلاح الأخطاء
- تم إيقاف onCommit وonDispose وonActive نهائيًا لصالح واجهتَي برمجة التطبيقات SideEffect وDisposableEffect (If760e)
تغييرات على دوال المصنع الخاصة بـ Font/FontFamily/Typeface
- تمت إضافة دوال مصنع تبدأ بحرف لاتيني كبير
- إيقاف دوال المصنع السابقة التي تبدأ بحرف صغير
- تعرض دوال المصنع الجديدة FontFamily بدلاً من الفئات الفرعية
- إخفاء منشئات الفئات الفرعية، حتى لا يمكن إنشاؤها إلا من خلال دوال المصنع
- تمت إعادة تسمية Font.asFontFamily إلى Font.toFontFamily (I42aa7)
تم تقديم
ComposeContentTestRule، الذي يوسّع نطاقComposeTestRuleويحدّدsetContent، والذي تمت إزالته منComposeTestRule. تمت إضافة طريقة مصنعcreateEmptyComposeRule()تعرضComposeTestRuleولا تشغّل نشاطًا لك. استخدِم هذه الطريقة عندما تريد تشغيل نشاطك أثناء الاختبار، مثل استخدامActivityScenario.launch(I9d782، b/174472899)أصبح اسم animateAsState الآن animateFooAsState، حيث Foo هو نوع المتغيّر الذي يتم تحريكه، مثل Float وDp وOffset وما إلى ذلك (Ie7e25).
تمت إضافة مَعلمة وصف المحتوى إلى "الصورة" و"الرمز". يُستخدَم لتوفير وصف للخدمات المخصّصة لتسهيل الاستخدام (I2ac4c)
أزِل displaySize لأنّه يجب تجنُّبه. من الأفضل عادةً استخدام حجم onRoot() أو حجم النافذة على الأقل. (I62db4)
كانت الدالة OnSizeChanged تعرض حجم محتوى التصميم. ويعرض الآن الحجم في موضعه ضمن سلسلة المعدِّلات. (I36b78، b/177562900)
تم إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائد نهائيًا، وتمت إعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن الاسم مختلف من أجل اتّباع اصطلاحات التسمية في Compose (I4137b)
يقبل TextFieldValue السلسلة AnnotatedString. ومع ذلك، هذا التغيير متاح فقط في واجهة برمجة التطبيقات، ولم يتم بعد تنفيذ ميزة تعديل النصوص المتعددة الأنماط.
- تمّت إزالة
initialمن مَعلمات الدالة الإنشائية EditingBuffer. (I326d5)
- تمّت إزالة
تم الآن إيقاف invalidate وcompositionReference() نهائيًا واستبدالهما بـ currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)
تم تغيير AnnotatedString ليتم توسيعه من kotlin.CharSequence. لذلك، أصبحت الدالتان length وsubSequence دالتين مثيلتين، وتمت إزالة دوال الإضافة. (Iaf429)
يحلّ RememberObserver محل CompositionLifecycleObserver، وأصبح CompositionLifecycleObserver نهائيًا الآن.
RememberObserverهو بديل عنCompositionLifecycleObserverمع دلالات معدَّلة وطرق تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للكائنات التي يتم تذكّرها مرة واحدة فقط، وهو ما يظل الممارسة المُوصى بها. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاءonRememberedلكل مرجع، بينما يتم استدعاءonEnterمرة واحدة فقط. تم استدعاءonEnterعدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثلWithConstraintsوScaffold، ما جعل عملية استدعاءonEnterمرة واحدة غير موثوقة، وتمت إزالتها فيRememberObserver.تضيف
RememberObserverالدالةonAbandonedالتي يتم استدعاؤها إذا تم عرض مثيلRememberObserverمن معاودة الاتصال التي تم تمريرها إلىrememberولكن لم يتم تذكّره في حالة التركيب، وبالتالي لن يتم استدعاءonRememberedأبدًا. يمكن أن يحدث ذلك إذا أنهى استثناء عملية الإنشاء قبل اكتمالها أو إذا تم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تنتج عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كان مثيلRememberObserverالذي يلي اقتراح المرجع الفردي أعلاه يتتبّع مرجعًا خارجيًا، يشير كل منonForgottenوonAbandonedإلى أنّه لم يعُد هناك حاجة إلى المرجع. إذا كان العنصر يتتبّع العمل الذي تم البدء به أو الموارد التي تم تخصيصها فيonRemembered، يمكن تجاهلonAbandonedلأنّه لن يتم استدعاؤه إذا تم استدعاءonRemembered. (I02c36)تم إيقاف العمليات الحسابية نهائيًا بين وحدتَين نصيتَين أو أكثر. تم إيقاف الدالتَين TextUnit.Sp وTextUnit.Em نهائيًا، ويُفضَّل استخدام دوال الإضافة، مثل Int.sp وInt.em. (I48369)
أصبحت الموارد في المكتبات التي لا تتضمّن موارد عامة معرَّفة بوضوح (مثل public.xml) خاصة بشكل تلقائي. (Ia1dcc، b/170882230)
تم إيقاف ScrollableColumn/Row نهائيًا. يكون استخدام ScrollableColumn أقل كفاءة مقارنةً بـ LazyColumn عندما يكون لديك محتوى كبير قابل للتمرير، لأنّه باستخدام LazyColumn يمكننا فقط إنشاء/قياس/رسم العناصر المرئية. لمنع المستخدمين من اتّباع الطريقة غير الفعّالة، قرّرنا إيقاف ScrollableColumn وScrollableRow نهائيًا وتشجيع استخدام LazyColumn وLazyRow بدلاً منهما. سيظل بإمكان المستخدمين اختيار عدم استخدام السلوك الكسول واستخدام المعدِّلات مباشرةً على النحو التالي: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b، b/170468083)
طريقة إنشاء
items(count: Int)جديدة لنطاق LazyColumn/LazyRow/LazyVerticalGrid أصبحتitems(items: List)وitemsIndexed(items: List)الآن دالتَين إضافيتَين، لذا عليك استيرادهما يدويًا عند استخدامهما. عمليات تحميل زائدة جديدة للإضافات في المصفوفات:items(items: Array)وitemsIndexed(Array)(I803fc وb/175562574)يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction
- يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc)
استخدام TestCoroutineDispatcher في الاختبار (I532b6)
تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)
تم إيقاف عملية الانتقال المستندة إلى TransitionDefinition نهائيًا (I0ac57)
تمت إزالة TextUnitType.Inherit. يُرجى استخدام TextUnitType.Unspecified بدلاً من ذلك. (I9ff64)
الإصدار 1.0.0-alpha10
13 يناير 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha10. يتضمّن الإصدار 1.0.0-alpha10 هذه التعديلات.
تغيير قد يؤدي إلى أعطال
تتيح إعادة هيكلة واجهة برمجة التطبيقات الداخلية للمترجم تجميع التغييرات في العُقد التي تم إنشاؤها نتيجة التركيب في مرحلة "تطبيق التغييرات" من عملية التركيب، وذلك بعد اكتمال جميع دوال
@Composable.هذا تغيير غير متوافق في السلوك قد يؤثر في الرمز البرمجي للتطبيق، لأنّه لن تعود العُقد متاحة من واجهات برمجة التطبيقات الداخلية والتجريبية إلا بعد تطبيق التغييرات. يمكن عادةً حلّ هذه المشكلة من خلال إحاطة الرمز البرمجي الذي يتضمّن هذه التبعيات بعنصر
SideEffectقابل للإنشاء لتأجيل تنفيذ الرمز البرمجي إلى ما بعد إنشاء العُقد وتهيئتها. (I018da)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة Modifier.focusOrder() التي يمكن استخدامها لتحديد ترتيب مخصّص للتنقّل بين العناصر باستخدام لوحة المفاتيح (I90cf5، b/175899543، b/170155556، b/170155429)
- تمت إزالة استخدام focusObserver المتوقّف نهائيًا، واستخدام onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9، b/175156387)
- تغييرات على EditOperations API
- تمت إعادة تسمية EditOperation إلى EditCommand
- تمت إضافة لاحقة الأمر إلى عمليات التنفيذ المحدّدة لـ EditOperation
- لم تعُد EditCommand فئات بيانات
- تمت إعادة تسمية الدالة EditOperation.process إلى applyTo
- تمت إعادة تسمية InputEventListener إلى InputEventCallback
- (I0a366)
- تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَمة. تم تغيير Size.center() ليصبح سمة. (I973f7)
- سيصبح بإمكان وحدة ui-test الآن ضبط إنشاء Recomposers لواجهات المستخدم قيد الاختبار (Ibebd8)
- تم تعديل السرعة لتشمل أجزاء مكوّنة وعمليات رياضية. (Ib0447)
- تمت إعادة تسمية
@ExperimentalTestingإلى@ExperimentalTestApiلتكون متوافقة مع التعليقات التوضيحية المشابهة لواجهات برمجة التطبيقات التجريبية (Ia4502 وb/171464963) - تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
- تمت إزالة الفئات غير المستخدَمة DpInverse وDpSquared وDpCubed. (I4d62b)
- تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- أضِف دالة ردّ الاتصال لإرسال إشعار إلى المالك عند تغيير حدود layoutnode. (I72fd1)
- تمت إضافة isSpecified وisUnspecified وuseOrElse إلى الفئات المضمّنة التي تتضمّن الثابت Unspecified. (I93f7b، b/174310811)
توسيع نطاق واجهات برمجة التطبيقات [Abstract]ComposeView للسماح بإعادة استخدام طرق العرض المستندة إلى Compose، والتخلّص من تركيبها لإعادة إنشائها مرة أخرى لاحقًا إضافة واجهات برمجة تطبيقات لتثبيت Recomposers ذات النطاق المحدود واكتشافها وCompositionReferences لإنشاء تركيبات فرعية
إضافة ViewCompositionStrategy لضبط استراتيجية التخلص من التركيبة في [Abstract]ComposeViews، ويكون السلوك التلقائي هو التخلص عند فصل النافذة (I860ab)
تمت إزالة واجهة برمجة التطبيقات العامة Any.identityHashCode() (I025d7)
تمت إزالة واجهة برمجة التطبيقات toStringAsFixed واستخدام String.format بدلاً منها مباشرةً. (Iaba6b)
إضافة مفتاح تبديل إلى ملف foundation Strings.kt (I4a5b7 وb/172366489)
نقلتُ nativeClass إلى وحدة ui وجعلتُها داخلية. تم تعديل استخدامات nativeClass في عمليات تنفيذ equals لاستخدام "is MyClass" بدلاً من ذلك. (I4f734)
تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48، b/175160751، b/175160532، b/175077829)
تم تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات بتعديلات Selectable إلى SelectionManager. (I6ff30، b/173215242)
تمت إضافة السمة Outline.bounds للحصول على مستطيل الإحاطة لعمليات تنفيذ المخطّط التفصيلي المختلفة. (I16e74، b/175093504)
تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)
لم يعُد ImeOptions وKeyboardOptions فئة بيانات (I3c898، b/168684531)
التغييرات في VisualTransformation API
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم يعُد PasswordTransformation فئة بيانات
- نقل OffsetMapping إلى ملف خاص
- (I0bdf3)
تمت إعادة تسمية Position إلى DpOffset وإزالة getDistance() (Ib2dfd)
تم تغيير الدالة fun Dp.isFinite() إلى القيمة val Dp.isFinite (I50e00)
إصلاح الأخطاء
- تعرض Recomposer الآن تدفّقًا لحالتها الحالية، ما يتيح رصد نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
- يمكن الآن الوصول إلى keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).
- تم الآن استبدال
animate()بـanimateAsState()، الذي يعرضState<T>بدلاً منT. ويتيح ذلك تحسين الأداء، إذ يمكن تضييق نطاق الإبطال إلى المكان الذي تتم فيه قراءة قيمة الحالة. (Ib179e) - إضافة واجهة برمجة التطبيقات الخاصة بدور Semantics وإضافة الدور كمَعلمة إلى SemanticsModifier القابل للنقر والاختيار والتبديل تم تغيير Modifier.progressSemantics ليتمكّن شريط التمرير أيضًا من استخدامه. (I216cd)
- واجهة برمجة تطبيقات جديدة تستند إلى إجراءات روتينية مشتركة
Animatableتضمن الاستبعاد المتبادل بين الرسوم المتحركة.- DecayAnimationSpec جديد لإتاحة الصورة المتحركة متعددة الأبعاد
- (I820f2، b/168014930)
الإصدار 1.0.0-alpha09
16 ديسمبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت الآن إزالة KeyEvent.Alt المتوقّف نهائيًا. استخدِم KeyEvent.isAltPressed بدلاً من ذلك. (Idd695)
- تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter نهائيًا، ويجب استخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً منهما (Idbf1b، b/175156384).
- تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 وb/168511863 وb/168511484).
- تمت إعادة تسمية واجهات برمجة التطبيقات الخاصة بتعليق إدخال المؤشر، HandlePointerInputScope إلى AwaitPointerEventScope و handlePointerInput() إلى awaitPointerEventScope(). (Idf0a1، b/175142755)
- أصبحت واجهة برمجة التطبيقات الخاصة بميزة "الملء التلقائي" تجريبية وتتطلّب الموافقة على استخدامها (I0a1ec)
- إضافة عبارات تفكيك لإنشاء مثيلات FocuSRequester (I35d84 وb/174817008)
- تمت إعادة تسمية accessibilityLabel إلى contentDescription، وتمت إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)
- تمت إزالة الأحداث المخصّصة من واجهة برمجة التطبيقات لتعليق إدخال المؤشر (Ia54d5، b/175142755)
- تم تقديم عدة وظائف جديدة في SelectionRegistrar، كما تمّت إعادة تسمية onPositionChange إلى notifyPositionChange. (Ifbaf7)
- المزيد من أعضاء LayoutNode الذين وضعنا علامة عليهم كأعضاء داخليين (I443c6)
- تم تقديم LayoutInfo لاستخدامه في الأدوات والاختبار (I9b190)
- AndroidOwner made internal (Ibcad0, b/170296980)
- إزالة التعليق التوضيحي ExperimentalPointerInput (Ia7a24)
- تمت إضافة نظام التمرير المتداخل. راجِع Modifier.nestedScroll لمزيد من التفاصيل (I36e15 وb/162408885).
- تمت إتاحة استخدام subcomposeInto(LayoutNode) داخليًا فقط (Id724a)
تغيّرت واجهة
Applierلتسهيل إنشاء بنى تصاعدية بدلاً من التنازلية.تمت إعادة تسمية الطريقة
insert()لتصبحinsertTopDown().تمت إضافة طريقة جديدة، وهي
insertBottomUp().يُدرج التطبيق إما عُقدًا في الشجرة التي يعدّلها باستخدام
insertTopDown()أوinsertBottomUp()، وذلك حسب الأداء الأفضل.بعض البنى، مثل
LayoutNodeوView، تكون أكثر فعالية عند إنشائها من الأسفل إلى الأعلى مقارنةً بإنشائها من الأعلى إلى الأسفل. قبل هذا التغيير، كان يجب توفير مجموعة من عمليات الإدراج لتنفيذ عملية الإنشاء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كل أداة تطبيق تحتاج إلى عملية الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير، يتم استخدامApplierلإلغاءinsertBottomUp()من أجل إنشاء شجرة من الأسفل إلى الأعلى، ويتم استخدامinsertTopDown()لإنشاء الشجرة من الأعلى إلى الأسفل. (Icbdc2)تمت إضافة السمتَين dismissOnBackPress وdismissOnClickOutside إلى AndroidDialogProperties. تسمح هذه الإعدادات بضبط وقت استدعاء تعبير lambda الخاص بالدالة onDismissRequest في مربّع الحوار. (If5e17)
تمت إضافة واجهة برمجة التطبيقات painterResource للتعامل مع تحميل عناصر Painter بشكل غير شفاف من تنسيقات مواد العرض النقطية (مثل ملفات PNG) أو VectorDrawables. لم يعُد على المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم طلب هذه الطريقة للحصول على عنصر Painter لاستخدامه في عناصر Image القابلة للإنشاء أو معدِّلات Painter. (I2c703، b/173818471)
تمت إضافة Modifier.clearAndSetSemantics لمحو دلالات العناصر الفرعية وتعيين دلالات جديدة. (I277ca)
نقلتُ ContentDrawScope إلى وحدة ui-graphics لتكون مع DrawScope. (Iee043، b/173832789)
تم تقديم واجهة برمجة تطبيقات الرسومات PathEffect لتوفير أنماط مختلفة للأشكال التي تم رسم خطوطها. تم إيقاف استخدام NativePathEffect نهائيًا، ويُنصح باستخدام التنفيذ المتوقّع/الفعلي لـ PathEffect. (I5e976، b/171072166)
تمت إضافة واجهات IdlingResource إلى Compose، وذلك كإصدار متوافق مع Compose من مصادر عدم النشاط في Espresso. يمكن تسجيلها وإلغاء تسجيلها من خلال ComposeTestRule (I433f3).
إزالة عملية التسجيل (أو إلغاء التسجيل) العمومية لـ ComposeIdlingResource وعملية التسجيل (أو إلغاء التسجيل) العمومية للساعات في ComposeIdlingResource (I32660)
إصلاح الأخطاء
- تعرض دوال Lambda في أدوات تعديل الإزاحة الآن IntOffset بدلاً من Float. (Ic9ee5 وb/174137212 وb/174146755)
تمت إزالة SlotTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. وكانت هذه الأخطاء مصنّفة سابقًا على أنّها InternalComposeAPI. وهي الآن مضمّنة في وحدة Compose.
تمت إضافة CompositionData وCompositionGroup كبديل لواجهة برمجة التطبيقات ui-tooling لاستخدامها في استخراج معلومات التركيب. هذه الحقول عامة ولكنها غير مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling لأنّها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling (I31a9c).
تمت إعادة تصميم ShaderBrush لإنشاء مثيل shader بشكل غير مباشر عند توفّر معلومات تحديد الحجم لبيئة الرسم. ويكون ذلك مفيدًا لتحديد تدرّجات لونية تشغل حدود الرسم الكاملة لدالة مركّبة في وقت التكوين، بدون الحاجة إلى تنفيذ عمليات مخصّصة في DrawModifier.
تم إيقاف واجهات برمجة التطبيقات الخاصة بإنشاء دوال التدرّج اللوني واستبدالها بطُرق المصنع في عنصر Gradient. (I511fc، b/173066799)
إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed نهائيًا استخدام LazyColumn وLazyRow بدلاً من ذلك (I5b48c)
Deprecated BuildCompat.isAtLeastR (Idb37e)
تمت إضافة دالة المصنع buildAnnotatedString لإنشاء AnnotatedString. تم إيقاف الدالة الإنشائية annotatedString نهائيًا. (Idfe0b)
تمت إزالة طرق الإضافة في Float وDouble لتحويل القيم إلى وحدات راديان. تم نقلها لتصبح دالة خاصة ضمن عملية التنفيذ PathParser التي كانت المكان الوحيد الذي تم استخدامها فيه (I25f52)
الإصدار 1.0.0-alpha08
2 ديسمبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha08. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة إجراء المعاني رفض (I2b706)
- تم نقل واجهات برمجة التطبيقات DrawModifier من الحزمة androidx.compose.ui إلى الحزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifierDeprecated.kt لتضمين أسماء الأنواع المستعارة وطُرق المساعدة لتسهيل عملية نقل البيانات من واجهات برمجة التطبيقات المتوقفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
- تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer وتم أيضًا تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا للملاحظات الواردة بشأن واجهة برمجة التطبيقات. (I0bd29، b/173834241)
- تمت إضافة الطريقتَين الجديدتَين placeable.placeWithLayer() وplaceable.placeRelativeWithLayer() اللتَين تسمحان بتصميمات مخصّصة ومعدِّلات للتصميمات من أجل وضع عنصر فرعي مع تقديم طبقة رسومات للرسم. بفضل ذلك، يمكننا أولاً تحسين عمليات إعادة الرسم، وبالتالي عندما نحتاج إلى نقل عنصر فرعي، لن نضطر إلى إعادة رسم محتواه. ثانيًا، يمكننا تطبيق عمليات تحويل الرسم على عنصر فرعي (Ibd8f6 وb/170296989 وb/171493718 وb/173030831).
- تمت إزالة
<T>من تعريف SubcomposeLayout. يمكنك استخدامها بدون تحديد نوع الآن. (Ib60c8) - تمت إضافة واجهات برمجة التطبيقات Modifier.scale/rotate
لتسهيل عملية drawLayer.
- تمت إعادة تسمية "
Modifier.drawOpacity" إلى "Modifier.alpha" - تمت إعادة تسمية
Modifier.drawShadowإلىModifier.shadow(I264ca، b/173208140)
- تمت إعادة تسمية "
- تم جعل الحقلَين uptime وposition في PointerInputData غير قابلَين للتصغير. (Id468a)
- تضبط السمة MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستندة إلى Material استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في التحديد. (I1e6f4، b/139320372، b/139320907)
- تمت إضافة WindowManager.isWindowFocused للتحقّق ممّا إذا كانت نافذة المضيف محل التركيز، وWindowFocusObserver الذي يوفّر معاودة الاتصال onWindowFocusChanged. (I53b2a، b/170932874)
- تم تعديل TransformOrigin API
ليتضمّن بنية تفكيك لعرض
pivotFractionXوpivotFractionYكـcomponent1وcomponent2(If43c4، b/173586560) - تمت إضافة فحص lint لتسمية مَعلمات lambda القابلة للإنشاء وموضعها، وذلك للتحقّق من التوافق مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم
childrenكاسم لدالة lambda اللاحقة إلىcontent، وذلك وفقًا لفحص lint والإرشادات. (Iec48e) - تمت إضافة واجهة برمجة تطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال keyevent. (I50ed9)
- تمت إضافة
Modifier.drawLayer()تحميل زائد جديد. تتلقّى هذه الدالة كتلة lambda في GraphicsLayerScope جديدة تحدّد فيها مَعلمات الطبقة بطريقة تتيح تخطّي إعادة التركيب وإعادة التنسيق عند حدوث تغيير في الحالة. أصبحت السمة DrawLayerModifier داخلية الآن استعدادًا لنقل منطقها إلى طريقة placeable.placeWithLayer() في LayoutModifier (I15e9f، b/173030831) - تم إيقاف ميزة Ambients التي تحمل الاسم
Ambientكلاحقة، واستبدالها بسمات جديدة مسبوقة بـ Ambient، وذلك وفقًا لإرشادات Ambients وCompose API الأخرى. (I33440) - تم نقل "
androidx.compose.ui.text.Typeface" إلىandroidx.compose.ui.text.font.Typeface(Ic2b81) - تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants إلى mergeDescendants. (Ib6250)
- أداة رصد جديدة لإيماءات السحب تعلّق واجهة برمجة التطبيقات الخاصة بإدخال المؤشر، بما في ذلك قفل الاتجاه. (Icef25)
- تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder ليكون فئة داخلية من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة نوع الاسم المستعار VectorAssetBuilder للربط بـ ImageVector.Builder من أجل التوافق. (Icfdc8)
- تمت إعادة تسمية ImageAsset والإجراءات ذات الصلة إلى ImageBitmap. (Ia2d99)
- إضافة المَعلمة zIndex إلى الدالة place() في PlacementScope، ما يتيح استخدام Modifier.zIndex() الآن كـ LayoutModifier ويمكن لأي تخطيط مخصّص ضبط zIndexes للعناصر التابعة مباشرةً في كتلة موضع الإعلان (I711f7، b/171493718)
- نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c)
- إيقاف الدالة place(Offset) والدالة placeRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع إزاحات الأعداد الصحيحة بدلاً من ذلك (I4c5e7).
- تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا: تمت إزالة Modifier.onPositioned، يُرجى استخدام Modifier.onGloballyPositioned. تمت إزالة Modifier.onDraw، استخدِم Modifier.onDrawBehind. تمت إزالة Modifier.plus، استخدِم Modifier.then. تمت إزالة Color.Unset، يُرجى استخدام Color.Unspecified. تمت إزالة فئة PxBounds، يُرجى استخدام Rect بدلاً منها. (Ie9d02، b/172562222)
- تم تعديل واجهة "المحاذاة" وإتاحتها للاستخدام. (I46a07، b/172311734)
- تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وعرض مؤشر الضغط باستخدام ميزة إدخال المؤشر الجديد المعلق. تمت إضافة بعض الأدوات المساعدة أيضًا، ما يسهّل على المطوّرين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
- تم تغيير اسم "
id" إلى "layoutId" فيLayoutIdParentData. تم تغيير اسم "Measurable.id" إلى "Measurable.layoutId". (Iadbcb، b/172449643) - أداة رصد جديدة للإيماءات المتعددة اللمس، بما في ذلك أدوات مساعدة لرصد التدوير والتكبير والتصغير والتحريك (Ic459d)
- تم تقديم واجهات برمجة التطبيقات SweepGradientShader وSweepGradientBrush. (Ia22c1)
- أصبح التحكّم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521)
إضافة واجهات برمجة تطبيقات تستند إلى إجراءات روتينية مشتركة للتمرير:
تضيف هذه الحزمة LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهات برمجة تطبيقات منخفضة المستوى للتحكّم في التمرير. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكّم في التمرير الذي ينتظر إلى أن ينتهي التمرير قبل العودة. (Ie5642)
تمت إضافة Modifier.focusable في foundation. يُستخدَم هذا الخيار لإضافة سلوك قابل للتركيز إلى أحد المكوّنات، مع توفير دلالات وإمكانية وصول صحيحة. (I41eb9، b/152525426، b/162865824)
توفير عمليات تنفيذ تلقائية للطُرق والسمات في AnimationClockTestRule التي يمكن تفويضها إلى
clock(I7ea3d، b/173399709)يمكن الآن أن تقبل AndroidComposeTestRule مشغّلات الأنشطة المخصّصة (Ib8288 وb/153623653 وb/154135019)
تم إيقاف TextLayoutResult.getLineVisibleEnd نهائيًا. كبديل، تتضمّن الدالة TextLayoutResult.getLineEnd الآن مَعلمة جديدة هي visibleEnd. (I73282)
تعديل على واجهة برمجة التطبيقات TextFieldValue
- جعل TextFieldValue.composition للقراءة فقط
- تمت إزالة الاستثناء الذي تم طرحه لنطاق التحديد غير الصالح (I4a675، b/172239032)
إتاحة TtsAnnotation لمحرّك تحويل النص إلى كلام (I54cc6)
واجهات برمجة تطبيقات جديدة لتشغيل الرسوم المتحركة في إجراءات روتينية (Ied662)
إصلاح الأخطاء
- تمت إعادة تسمية مَعلمة المحاذاة الخاصة بـ Box إلى contentAlignment. (I2c957)
- تمت إعادة تسمية معدِّلات offsetPx إلى offset. تتلقّى هذه الدوال الآن مَعلمات lambda بدلاً من State. (Ic3021، b/173594846)
- تمت إضافة المَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
- تمت إضافة عملية فحص lint لمعلَمات Modifier في الدوال القابلة للإنشاء. يتحقّق فحص lint هذا من التسمية ونوع الإرجاع والقيمة التلقائية وترتيب المَعلمات للتأكّد من اتّساقها مع إرشادات Compose. (If493b)
- تمت إضافة خيار مؤقت للسماح بتشغيل TestAnimationClock من خلال MonotonicFrameClock (I1403b، b/173402197)
- تمت إضافة أداة تضمين Android Typeface. يمكنك تحميل Android
Typeface من خلال الدالة
typeface، أيtypeface(Typeface.DEFAULT). تمت أيضًا إعادة تسميةtypefaceFromFontFamily()إلىtypeface()(I52ab7) - تمت إضافة عملية فحص lint للتأكّد من أنّ دوال إنشاء عنصر التعديل معرَّفة كإضافات على عنصر التعديل، حتى يمكن ربطها معًا بسلاسة. (I07981)
- إزالة وحدة ui-test القديمة ورموزها (I3a7cb)
- لم يعُد Recomposer يقبل EmbeddingContext، ويتم الحصول على تبعيات الجدولة المطلوبة من effectCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تبدأ عمليات الدمج مع المنصات في معالجة اللقطات العامة الخاصة بها. (I02369)
- تمرير معلومات النمط إلى عقدة تسهيل الاستخدام (If5e8d)
- تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified لضمان الاتساق مع الوحدات الأخرى. (Ifce19)
الإصدار 1.0.0-alpha07 من Compose UI
11 تشرين الثاني (نوفمبر)، 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم فئة ScaleFactor
المضمّنة لتمثيل عوامل
القياس للمحورَين الأفقي والعمودي
بشكل مستقل عن بعضهما البعض
من أجل إتاحة حالات استخدام القياس غير المنتظم.
- تمت إضافة طريقة computeScaleFactor إلى ContentScale
- تمت إضافة ContentScale.FillBounds لتنفيذ تغيير الحجم غير المنتظم من أجل توسيع حدود src لتشغل الوجهة بالكامل.
- تمت إضافة طرق عامل التشغيل لاحتساب معلَمات ScaleFactor باستخدام معلَمات Size.
- (Ic96a6، b/172291582)
- تمت إضافة مصنعَي BiasAlignment وBiasAbsoluteAlignment لإنشاء عمليات محاذاة. (Iac836، b/169406772)
- السماح للمطوّر بإزالة التركيز بالقوة (I90372)
- تم إصلاح خطأ كان يتسبّب في عدم رسم الارتفاع للعناصر داخل Compose. (If7782)
- تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لتتوافق مع اصطلاح التسمية في Modifier.drawBehind. (I4fc3a، b/171955269)
- إضافة إمكانية استخدام مسافة الكاميرا لاستكمال عمليات التحويل ثلاثية الأبعاد rotationX/rotationY في واجهات برمجة التطبيقات الخاصة بالطبقات (I40213، b/171492100)
- تمت إضافة SelectionContainer بدون دالة معاودة الاتصال (Ibfadb)
- تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7)
- تمت إزالة مستوى التعتيم من المعدِّل drawShadow() لأنّه كان يسبّب التباسًا. (I82c62، b/171624638)
- تم نقل MeasureResult خارج MeasureScope. (Ibf96d، b/171184002)
- تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
- إزالة FocusState2 المتوقّف نهائيًا (I686cb، b/168686446)
- أصبحت السمة ZIndexModifier داخلية (I1808b، b/171493718)
- تم تعديل نوع القيمة التي تم إرجاعها لطريقة lerp في مَعلمات Size لعرض قيمة Size غير فارغة لتجنُّب التغليف غير الضروري. (Ib0044)
- تمت إضافة TestMonotonicFrameClock لاختبار الرمز البرمجي الذي يعتمد على MonotonicFrameClock في Compose لانتظار أحداث إطار الإنشاء باستخدام runBlockingTest من kotlinx-coroutines-test (I4402f)
- إزالة GestureScope.localToGlobal (I15299، b/171462785)
- تمت إضافة أداة البحث
onAllNodesWithSubstring(I81dd7، b/171462889) - تم إيقاف الوحدة androidx.ui.test نهائيًا. يُرجى نقل البيانات إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8)
إصلاح الأخطاء
- تم نقل captureToBitmap إلى captureToImage. (I86385)
- تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية وغير مشروطة لا تستهلك قيمًا من سمة، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
- تعديل حقول النص لقبول KeyboardOptions (Ida7f3)
- إعادة تسمية KeyboardOptions إلى ImeOptions (I82f36)
- نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
- تمت إضافة provideDefault كبديل لتوفير البيانات المحيطة، ويمكن استخدامه لتحديد قيم البيانات المحيطة التي سيتم ضبطها فقط عندما لا تكون هناك قيمة بيانات محيطة متوفّرة. (Id6635، b/171024925)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- إضافة الوحدة ui-test-junit4 (Ib91f8)
- تم تغيير اسم "
relativePaddingFrom" إلى "paddingFrom". تمت إضافة المعدِّلpaddingFromBaselineلتسهيل تحديد المسافات من حدود التصميم إلى خطوط الأساس للنص. (I0440a، b/170633813) - تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لضمان الاتساق مع واجهتَي برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدون مَعلمات الموضوع لتشجيع أفضل الممارسات. (Ifd3d4)
- تم تقديم عنصر Resources القابل للإنشاء الذي يعيد إنشاء نفسه عند تعديل الإعدادات. (I6387c، b/167352819)
- يتطلّب Recomposer الآن CoroutineContext عند الإنشاء (Ic4610)
- اجمع قيم
zIndexعند تطبيقModifier.zIndex()متعددة. في السابق، كان الفائز هو أول من يرسل الرد. (Ic514c، b/170623936) - تغييرات على التنفيذ الداخلي لـ SlotTable، والتي من المفترض ألا تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
- تمت إضافة خيار "التصحيح التلقائي للوحة المفاتيح" في "محرّك أسلوب الإدخال" (I57b8d)
- تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
- تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات العامة. (Ic2e45)
المساهمة الخارجية
- تم إيقاف نشر العنصر الداخلي androidx.compose.ui:ui-text-android (Ib93fa)
الإصدار 1.0.0-alpha06
28 أكتوبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبحت Recomposer الآن CompositionReference ووالدًا صالحًا للتكوين. أصبح استخدام Explicit Recomposer مطلوبًا في أماكن أقل. (I4036f)
- إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لتوضيح أنّ واجهة برمجة التطبيقات القابلة للإنشاء تستخدم داخليًا الدالة remember للاحتفاظ بالبيانات على مستوى عمليات الإنشاء. (Ifda43)
- تم تعديل واجهة برمجة التطبيقات Modifier.drawWithCache لإتاحة ContentDrawScope كنطاق مستقبِل بدلاً من DrawScope من أجل منح عمليات التنفيذ القدرة على إعادة ترتيب أوامر الرسم. ويكون ذلك مفيدًا في حالات استخدام المزج/التلوين التي يجب فيها عرض وحدات البكسل الخاصة بالمحتوى أولاً لكي يتم تطبيق خوارزمية وضع المزج المقابل بشكل صحيح. (Ie7ec8)
- نقل SimpleContainer إلى ملف PopupTestUtils.kt (I78c57)
- لم يعُد ConsumedData فئة بيانات. لمزيد من التفاصيل، يُرجى الاطّلاع على https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- إصلاح موضع مقبض الكتابة من اليمين إلى اليسار (I6e1e0)
- تمت إعادة تصميم DrawScope وContentDrawScope ليصبحا واجهتَين بدلاً من فئتَين مجرّدتَين
- Created CanvasDrawScope implementation of DrawScope
- إعادة تصميم عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً منها
- تم إنشاء DrawContext لتضمين التبعيات في DrawScope
- تمت إزالة الطرق المتوقّفة نهائيًا في DrawScope (I56f5e)
- تغيير غير متوافق: تمت إزالة قيمة العرض من
PointerInputFilter.onPointerEvent(...)لأنّ القيمة الوحيدة التي يجب أن يكون من الممكن تغييرها في أحداث المؤشر هي بيانات الاستخدام. بدلاً من عرض البيانات منPointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات الاستخدام الخاصة بأحداث PointerEvents التي تم تمريرها. (I6acd0) - تم تحويل MeasureScope وIntrinsicMeasureScope إلى واجهات. (I1a087، b/170461665)
- تم إخفاء دالة الدمج الخاصة بـ AlignmentLine. (I9da1a، b/170612900، b/170611568)
- إضافة إمكانية تحديد معلومات أداة الفحص في المعدِّل المركّب (Idee08، b/163494569)
- تمت إضافة الخيار "اختيار الكل" إلى قائمة التحديد (Ief02b)
- تم تعديل DrawTransform.rotate لتضمين
معلَمة محورية تلقائية في المنتصف لتتطابق مع
المستندات.
- تم تعديل DrawScope.rotateRad لاستخدام إزاحة لنقطة الارتكاز لتتطابق مع طرق التحويل الأخرى.
- تم إيقاف التحميل الزائد DrawScope.rotateRad نهائيًا والذي كان يستهلك أرقامًا عائمة لإحداثيات x وy لنقطة الارتكاز.
- (Iffcbb، b/170434992)
إصلاح الأخطاء
- تم تفعيل فحص API lint للخطأ MissingGetterMatchingBuilder في androidx (I4bbea وb/138602561)
- أضِف اختبارًا. (I6b8ae)
- تفعيل عمليات الانتقال في ComposeTestRule وإزالة خيار تفعيل مؤشر الكتابة الوامض من ComposeTestRule (If0de3)
- تمت إضافة خيار KeyboardCapitalization IME (I8ac38)
- تمت إضافة خيار لوحة المفاتيح ذات السطر الواحد إلى CoreTextField (I72e6d)
- نقل SimpleContainer إلى ملف PopupTestUtils.kt (I65c3e)
- تمت إعادة تسمية واجهة برمجة التطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن طريقة استخدامها في جميع أنحاء Compose. عدّلنا المستندات للإشارة إلى أنّ نصف قطر الزاوية السالبة يتم ضبطه على صفر. (I130c7، b/168762961)
- تحسين التوافق مع Android من خلال مواصلة إرسال MotionEvents إلى "عناصر العرض" الفرعية في Android التي تعرض القيمة "خطأ" في onTouchEvent لجميع الإجراءات باستثناء
ACTION_DOWN(I94c5a، b/170320973) - تم تحويل المربع إلى دالة مضمّنة. (Ibce0c، b/155056091)
المساهمة الخارجية
- إتاحة لغات مختلفة لكل من
AnnotatedString.capitalizeوAnnotatedString.decapitalize(I4aa7f)
الإصدار 1.0.0-alpha05
14 أكتوبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha05. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة لغة خاصة بالمجال لتحديد معلومات المدقّق (Ic9a22)
- نقل LongPress إلى Text (Iff2bc)
- Experimental Modifier.pointerInput تعليق معدِّل الإدخال (Ia77d2)
- تمت إضافة إجراءات تسهيل الاستخدام "نسخ" و"لصق" و"قص" (I6db4f)
- تمت إزالة أداة الإنشاء العامة لفئة AndroidOwner (Iacaef)
- تكتسب النوافذ المنبثقة ومربّعات الحوار الآن علامة FLAG_SECURE من النافذة الرئيسية. تمت أيضًا إضافة خيار لضبط ذلك بشكل صريح (I64966، b/143778148، b/143778149)
أصبحت بيانات الاستهلاك قابلة للتغيير الآن. بالإضافة إلى ذلك، لم تعُد طلبات الدوال الإضافية التي تنفّذ عملية الاستهلاك تعرض PointerInputChange جديدًا، بل تعدّل PointerInputChange المقدَّم.
هذه هي الخطوة الأولى في عملية من خطوتين تهدف إلى جعل بيانات PointerEvent قابلة للتغيير، وذلك لكي لا يتمكّن رمز المستخدم من تعديل بيانات المؤشر الأخرى. ستكون الخطوة الثانية هي إزالة نوع القيمة التي تم إرجاعها
List<PointerInputChange>منPointerInputFilter.onPointerEvent(...). (Id067e)إيقاف ميزة "تحديد النص" في العرض التوضيحي (Ie7e97)
تم تحويل Made onGloballyPositioned إلى دالة مضمّنة (I15830)
تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وإعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
تمت إضافة السمة hasPendingMeasureOrLayout إلى Owner، لتحديد ما إذا كان Owner لديه أي عمل تخطيط معلّق. (I3d9f8، b/169038599)
تمت إضافة واجهة برمجة تطبيقات لمحو التركيز آليًا (Ie1dc2، b/161487952)
تمت إزالة جهة الاتصال "
PointerInputFilter.onPointerInput(...)". يجب استخدامPointerInputFilter.onPointerEvent(...)بدلاً من ذلك. (I6f04a)التغييرات في الحجم
- تمت إزالة Size.getFlipped
- Removed Size.rem
- Removed Size.truncDiv (Ief44d, b/169790720)
في إطار توحيد قيم الحراسة لفئات مضمّنة، تمت إعادة تسمية Color.Unset إلى Color.Unspecified لتحقيق الاتساق مع الفئات المضمّنة الأخرى (I97611 وb/169797763).
تمت إضافة TextOverflow.None. عندما تكون قيمة overflow هي None، لن يتعامل عنصر Text مع المحتوى الزائد بعد الآن، وسيُبلغ LayoutNode عن حجمه الفعلي. (I175c9، b/158830170)
تمت إعادة تسمية المَعلمة "النطاق" ضِمن AnnotatedString.Builder.addStringAnnotation إلى "علامة" من أجل اتّساق واجهة برمجة التطبيقات. (I7c8cb)
إصلاح الأخطاء
- تم تحسين أداء التمرير في LazyColumn/Row من خلال تقليل العمل في التركيب الفرعي عند كل تمرير. تمت إضافة طريقة hasInvalidations() الجديدة إلى فئة Composition. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
- تم تعديل معلَمات Size.Unspecified لتصبح Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى الأحجام غير المحدودة. (I95a7e)
- يحدّد ترتيب طلبات place() في التنسيقات المخصّصة الآن ترتيب الرسم للعناصر الفرعية (Ibc9f6)
- إتاحة تحويل AnnotatedString إلى SpannableString لتسهيل الاستخدام (Ief907)
- تمت إضافة رموز أساسية لفئات Android المتوفّرة على المنصات القديمة لتجنُّب استخدام الانعكاس عند الإمكان. (Ia1790)
- تم إصلاح الخلل التالي: إذا أدّى عرض لوحة المفاتيح الافتراضية إلى ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)
الإصدار 1.0.0-alpha04
1 أكتوبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة OwnerScope للسماح بجمع نطاقات مراقبة التنسيق والرسم بعد أن تصبح غير صالحة. (Ic4cf8)
- تمت إضافة OnRemeasuredModifier وonSizeChanged() لتلقّي ردّ عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
- إضافة إجراء دلالات النقر مع الاستمرار (I6281b، b/156468846)
- تم جعل FocusManager خاصًا. (I7872f)
تم تعديل عملية التنفيذ لإنشاء عملية تنفيذ مخصّصة لـ DrawCacheModifier بدلاً من إضافة سمات اختيارية إلى DrawModifier.
تعديل المستندات الخاصة بطُرق مختلفة (Ibd166)
اجعل TextRange مضمّنًا لتجنُّب إنشاء عنصر. (Id034b)
لم يعُد من الممكن قراءة PlacementScope#parentWidth وPlacementScope#parentLayoutDirection من موضع الإعلان في تصميم مخصّص. (Icc1ae، b/168295623)
إضافة AccessibilityScrollState إلى خصائص الدلالات (Ifeda9)
تمت إضافة Modifier.drawWithCache لإتاحة إنشاء عنصر رسم يعيد إنشاء التبعيات بشكل مشروط التي تعتمد على معلومات الحجم/الحالة (I376dc)
تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (Ica712)
إصلاح الأخطاء
- تعديل العديد من واجهات برمجة التطبيقات الخاصة بالرسومات
- تم تعديل واجهات برمجة التطبيقات الخاصة بعمليات التحويل المتعلقة بالتوسيع والتدوير لتستهلك مَعلمة إزاحة واحدة تمثّل إحداثيات نقطة الارتكاز بدلاً من مَعلمات عائمة منفصلة لإحداثيات س/ص في DrawScope وDrawTransform
- تمت إزالة الطريقتَين Rect.expandToInclude وRect.join
- عدّلنا مستندات "النطاق الجغرافي" لتوضيح أنّ الشكل بيضوي بالإضافة إلى الشكل الإهليلجي
- تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء الدالة الإنشائية العامة لفئة Radius المضمّنة مباشرةً، بل يجب إنشاء مثيلات لعناصر Radius من خلال دوالها الإنشائية.
- تمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن topRight وbottomRight وbottomCenter وما إلى ذلك.
- إيقاف Rect.shift نهائيًا واستخدام Rect.translate بدلاً منه
- إزالة واجهتَي برمجة التطبيقات RoundRect.grow وRect.shrink
- تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
- تمت إزالة طُرق RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
- تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
- تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
- تم تغيير RoundRect.center ليصبح سمة بدلاً من دالة
- تم تعديل الدالة الإنشائية RoundRect لتستهلك خصائص Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y
- إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي كانت تفترض أنّها مستطيل بنقطة أصل عند 0,0
- تمت إضافة واجهة برمجة تطبيقات لإيقاف Radius
- نقلنا العديد من دوال إضافة RoundRect لتصبح خصائص بدلاً من ذلك
- (I8f5c7، b/168762961)
- تم إيقاف foundation.Box نهائيًا. يُرجى استخدام foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
- تمت إعادة تسمية "الحزمة" إلى "المربع". سيتم إيقاف Box السابق نهائيًا واستخدام Box الجديد في compose.foundation.layout. سلوك المربّع الجديد هو ترتيب العناصر الفرعية بعضها فوق بعض عندما يحتوي على عناصر فرعية متعددة، وهذا يختلف عن المربّع السابق الذي كان يتصرف بشكل مشابه للعمود. (I94893، b/167680279)
- تم إيقاف مَعلمات تزيين المربّعات نهائيًا. إذا كنت تريد إضافة زخارف أو مساحة فارغة إلى المربّع، استخدِم المعدِّلات بدلاً من ذلك (Modifier.background وModifier.border وModifier.padding) (Ibae92 وb/167680279).
- تعديل العديد من واجهات برمجة التطبيقات الخاصة بالرسومات
- تم تعديل واجهات برمجة التطبيقات DrawScope لتتضمّن طرق تحويل محدودة النطاق للإشارة إلى أنّ عملية التحويل يتم تطبيقها فقط ضمن دالّة رد الاتصال ويتم إزالتها بعد استدعاء دالّة رد الاتصال.
- عدّلنا مستندات clipPath للإشارة إلى Path بدلاً من المستطيل الدائري
- تم إصلاح التباعد في مستندات المَعلمة right في clipPath
- تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة مَعلمة الحجم
- تمت إعادة تسمية المَعلمتَين dx/dy في طريقة inset إلى horizontal وvertical
- تمت إضافة دالة تحميل زائدة للداخل توفّر قيمة الداخل نفسها لجميع الحدود الأربعة
- تمت إزالة المستندات المتعلقة بطريقة الإدراج التي تشير إلى أنّه سيتم تطبيق الإدراج على جميع الجوانب الأربعة
- عدّلنا مستندات فئة Rect
- تم تعديل التعليقات على مَعلمات Rect لتتوافق مع نمط kdoc
- إزالة Rect.join وRect.expandToInclude
- تم إنشاء تحميل زائد للدالة Rect.translate(offset) وتم إيقاف الدالة Rect.shift نهائيًا
- (If086a، b/167737376)
- إضافة التعليقات التوضيحية إلى rootAnimationClockFactory وtransitionsEnabled وblinkingCursorEnabled وtextInputServiceFactory باستخدام @VisibleForTesting، وتحويلها إلى واجهة برمجة تطبيقات داخلية وإخفاء مستندات kdoc الخاصة بها (I554eb وb/168308412)
- أزِل SelectionContainer من الأعلى لإيقاف التحديد التلقائي وتجنُّب السلوك غير المتوقّع. يمكن استخدام SelectionContainer تحديدًا لتضمين المحتوى الذي يجب أن يكون قابلاً للتحديد بدلاً من ذلك. (I8dfe0، b/158459594)
الإصدار 1.0.0-alpha03
16 أيلول (سبتمبر) 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة إجراءات دلالات التمرير للأمام/للخلف تمت إضافة خطوات في AccessibilityRangeInfo. (Ia47b0)
- تمت إزالة
onInvalidate()منOwner. يتولّىOwnedLayerعملية الإبطال. (Ica72b، b/162061312) تمت إزالة طرق عامل التشغيل في واجهة برمجة التطبيقات Size<0x0A> التي تستخدم مَعلمات الإزاحة. نتيجة هذه العمليات غير واضحة، ونوع النتيجة غير متوقّع بالنسبة إليها. على سبيل المثال، هل يجب أن تعرض الدالة size - offset إزاحة أو نتيجة حجم مع الفرق؟
تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة Size. (Iec902، b/166514214)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عرض عناصر LazyColumn بشكل صحيح في بعض الأحيان، ما كان يؤدي أيضًا إلى حدوث أعطال في بعض الحالات. (Ibcf17، b/163066980، b/165921895)
- تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
- تم نقل
createAndroidComposeRuleوAndroidInputDispatcherمنandroidx.ui.test.androidإلىandroidx.ui.test(Idef08 وb/164060572) - تمت إعادة تسمية استخدامات الجاذبية بشكل متّسق لتصبح محاذاة أو محاذاة في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
- تمت إضافة onNode وطُرق أخرى عامة إلى ComposeTestRule لأنّ الطرق العامة الحالية سيتم إيقافها نهائيًا. (Ieae36)
الإصدار 1.0.0-alpha02
2 سبتمبر 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة دالة معاودة الاتصال لإرسال إشعار إلى المالك عند تغيير حدود layoutnode. (If654e، b/166106882)
- تمت إضافة إمكانية استخدام مَعلمات filltype في مسارات الرسومات المتجهة لإتاحة قص الأشكال وفقًا لقواعد تعبئة المسار evenOdd أو NonZero. (I43dd2)
- أصبح كلّ من "وقت التشغيل" و"السرعة" الآن فئتَين مضمّنتَين (I48f4a)
- أصبحت المدة الآن فئة مضمّنة (I565eb)
- أضِف دالة ردّ الاتصال لإرسال إشعار إلى المالك عند تغيير حدود layoutnode. (Ic40b3)
تم إصلاح مشكلة كانت تؤدي إلى إنشاء الدالة الإنشائية Rect التي تتضمّن الإزاحة ونصف القطر للرمز Rect بالترتيب التالي: يسار، يمين، أعلى، أسفل، بدلاً من يسار، أعلى، يمين، أسفل.
تمت إزالة الطرق المتوقّفة نهائيًا في Rect واستبدالها بمنشئات الدوال.
تمت إضافة اختبارات للتحقّق من صحة الطرق في Rect.kt (I08460، b/165822356)
إصلاح الأخطاء
- تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
- تم استبدال Matrix4 بـ Matrix. تمت إزالة جميع الأجزاء الأخرى من حزمة vectormath. (Ibd665، b/160140398)
تم تغيير اصطلاح الاستدعاء للدوال القابلة للإنشاء. هذا تغيير قد يؤدي إلى عطل في البرنامج الثنائي. يجب إعادة تجميع جميع المكتبات لتعمل مع هذا الإصدار من مكوّن Compose الإضافي للمترجم.
لا يؤدي هذا التغيير إلى حدوث تغيير على مستوى المصدر، لأنّ واجهات برمجة التطبيقات الوحيدة التي تم تغييرها هي واجهات برمجة التطبيقات الخاصة بالمترجم والتي تتطلّب موافقة صريحة. (I7afd2، b/158123185)
تم إصلاح عُطل كان يمكن أن يحدث عندما يؤدي إرسال حدث إلى PointerInputFilter إلى إزالة PointerInputFilter بشكل متزامن. (I58f25)
الإصدار 1.0.0-alpha01
26 أغسطس 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الإصدار 0.1.0-dev
الإصدار 0.1.0-dev17
19 أغسطس 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev17. يتضمّن الإصدار 0.1.0-dev17 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
emitViewنهائيًا. استخدِمAndroidViewبدلاً من ذلك إذا أمكن لعرض "طرق العرض" داخل Compose. يُرجى العِلم أنّه لن يكون متاحًا في المستقبل إنشاء Views وViewGroups مباشرةً إلا إذا كانت هذه العناصر عبارة عن أوراق في شجرة الإنشاء، وفي هذه الحالة يمكن تحقيق ذلك باستخدام AndroidView. (I29b1e، b/163871221) - تم إيقاف
FocusState2نهائيًا واستبداله بـFocusState(Ia8b79، b/160822876، b/160923332) - تمت إزالة عمليات التحميل الزائد المتوقّفة نهائيًا في AndroidView. (I946b9، b/163802393)
- يمكن الآن أن تحدّد عمليات الإرسال المخصّصة أنّه يمكن تخطّي دالة تحديد القيمة واحدة أو أكثر وإعادة التكوين بشكل مستقل عن عملية الإرسال. (Ibbd13)
تم تغيير فئات Vector لتصبح غير مرتبطة بالبيانات، لأنّه يتم استخدام مثيل الكائن نفسه في التركيب.
تمت إضافة العلامة mutableStateOf إلى VectorPainter لإعادة الرسم بشكل مشروط في حال تغيّر محتوى المتّجه.
تمت إعادة تصميم نسخة VectorComponent لتكون جزءًا من VectorPainter لأنّه يتم إعادة استخدامها في جميع التركيبات.
تم تعديل GroupComponent وPathComponent ليصبح حقل الاسم قابلاً للتعديل (Ieae45، b/151378808)
تمت إزالة "
onChildPositioned" و"OnChildPositionedModifier". على المطوّرين استخدامonPositionedوOnPositionedModifierفي تصميم العناصر الفرعية بدلاً من ذلك. (I4522e، b/162109766)أصبحت الإزاحة فئة مضمّنة (Iaec70)
تمت إضافة مَعلمة معدِّل إلى SelectionContainer (I4aada، b/161487952)
إزالة FocusModifier المتوقّف نهائيًا (I0b4ba وb/160922116 وb/160821157 وb/162441435 وb/160822875 وb/160921940)
تمت إضافة دالة lambda
mergePolicyإلىSemanticsPropertyKey. يمكن استخدام ذلك لتحديد سياسة مخصّصة لدمج دلالات mergeAllDescendants. تتمثّل السياسة التلقائية في استخدام قيمة العنصر الأصل إذا كانت متوفّرة، وإلا يتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)أصبحت Constraints الآن فئة مضمّنة (I88736)
تمت إضافة FocusManager الذي ينقل منطق التركيز الشائع خارج AndroidComposeView (I528ef، b/161487952، b/162206799)
تم تعديل أسماء PointerEventPass للإصدار الأوّلي. (Ifda6f)
أصبح IntOffset الآن فئة مضمّنة (Iac0bf)
أصبح IntSize الآن فئة مضمّنة (I2bf42)
تمت إعادة تسمية "
PlacementScope.placeAbsolute()" إلى "PlacementScope.place()"، وتمت إعادة تسمية "PlacementScope.place()" السابقة إلى "PlacementScope.placeRelative()". نتيجةً لذلك، لن تعكس طريقةPlacementScope.place()الموضع تلقائيًا في سياقات الكتابة من اليمين إلى اليسار بعد الآن. إذا كنت تريد ذلك، استخدِمPlacementScope.placeRelative()بدلاً من ذلك. (I873ac، b/162916675)يستخدم AlertDialog الآن FlowRow للأزرار (I00ec1 وb/161809319 وb/143682374)
تمت إزالة بعض أدوات الاختبار من النطاق العام لأنّها لا تنتمي إلى هذا النطاق. سيتم عرضها بشكل علني في المستقبل. (I32ab1)
إعادة تنظيم رمز إدخال المؤشر. (Ie3f45)
تم إيقاف PxBounds نهائيًا واستبداله بـ Rect. تم تعديل جميع استخدامات PxBounds لتشمل rect، وتمت إضافة تعليقات توضيحية مناسبة بشأن الإيقاف النهائي والاستبدال للمساعدة في عملية نقل البيانات. (I37038، b/162627058)
تمت إزالة KeyEvent2 المتوقّف نهائيًا. استخدِم KeyEvent بدلاً من ذلك. (Ied2d0، b/162097587)
يحتوي KeyEvent على سمة يونيكود يمكن استخدامها للحصول على رمز يونيكود الذي تم إنشاؤه من خلال مجموعة المفاتيح المحدّدة وحالة مفتاح الوصف (If3afc).
تم تحويل الحدث المخصّص DelayUp والفئات ذات الصلة إلى واجهة برمجة تطبيقات تتطلّب الموافقة، لأنّه من المرجّح جدًا أن يتم تغييرها. (I56d6f)
تمت إزالة PointerEventPasses 2 التي لم تعُد مطلوبة. (I3dd9d)
أضِف مَعلمات اللون والظل وTextDecoration إلى Paragraph.paint. هذه الدالة مفيدة لتجنُّب إعادة إنشاء الفقرة بدون داعٍ. (I81689)
إصلاح الأخطاء
- تمت إزالة عمليات معاودة الاتصال onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
- تم إيقاف Modifier.drawBorder نهائيًا. استخدِم Modifier.border بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، b/158160576)
تمت إزالة طلبات FrameManager التي تم إيقافها نهائيًا.
تم تغيير واجهات برمجة التطبيقات الداخلية الخاصة بـ Compose لتقليل مقدار الحمل الزائد اللازم لتتبُّع عناصر الحالة، مثل
mutableStateof()(I80ba6).تمت إزالة VerticalScroller وHorizontalScroller. استخدِم ScrollableColumn/Row بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)
تم إصلاح مشكلة التعطُّل التي كانت تحدث عند استخدام عنصر يحفظ الحالة داخل حلقة for. أصبح من المسموح به الآن استخدام المفتاح نفسه في savedInstanceState()، وتم تعديل واجهة برمجة التطبيقات UiSavedStateRegistry لتتوافق مع هذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).
تم إيقاف الدالة المركّبة
state { ... }نهائيًا، وأصبح من الأفضل استخدام استدعاءات صريحة إلىremember { mutableStateOf(...) }لمزيد من الوضوح. يقلّل ذلك من مساحة واجهة برمجة التطبيقات الإجمالية وعدد المفاهيم المتعلّقة بإدارة الحالة، ويتوافق مع نمطby mutableStateOf()لتفويض خصائص الفئة. (Ia5727)تمت إعادة تسمية RRect إلى RoundRect لتتلاءم بشكل أفضل مع أنماط التسمية في Compose تم إنشاء دوال إنشاء مشابهة لدالة RRect وتم إيقاف دوال إنشاء RRect نهائيًا (I5d325)
الإصدار 0.1.0-dev16
5 أغسطس 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev16. يتضمّن الإصدار 0.1.0-dev16 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف OnChildPositioned نهائيًا. استخدِم OnPositioned في العنصر الفرعي بدلاً من ذلك. (I87f95، b/162109766)
- تم إيقاف setViewContent نهائيًا، ويجب استخدام setContent بدلاً منها. (I7e497، b/160335130)
- تمت إضافة واجهة برمجة التطبيقات AndroidViewBinding لتضخيم موارد التنسيق وإنشائها، استنادًا إلى ViewBinding. (I081c6)
- تم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
- تمت إضافة دعم لمفتاح Alt الخارجي (I9036b)
- تم إيقاف FocusManager نهائيًا. استخدِم Modifier.focus() وModifier.focusObserver() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
- تتيح السمة loadVectorResource استخدام سمات trimPath (I808fe)
- نقل مربّع الحوار إلى واجهة المستخدم (I47fa6)
- تمت إزالة PointerEventPasses 2 التي لم تعُد مطلوبة. (I33ca7)
- تم تنفيذ PointerInteropModifier الذي يوفّر إمكانية تلقّي أحداث MotionEvent والتفاعل مع Compose كما لو كنت تستخدم تطبيق Android View. (Ieb08c)
- تمت إزالة معدِّل العلامة المتوقّف نهائيًا. يُرجى استخدام layoutId بدلاً من ذلك. (Idaa05، b/162023919)
- تم تعديل واجهات برمجة التطبيقات التي تتيح استخدام اللغة من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient، ويمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)
- إتاحة اقتطاع المسار في الرسومات المتّجهة (Ie16c9، b/158188351)
- تمت إضافة Modifier.layout() التي تتيح إنشاء معدِّل تخطيط مخصّص بسهولة (I73b69، b/161355194)
- تمت إضافة واجهة برمجة تطبيقات AndroidView جديدة وإيقاف واجهات برمجة التطبيقات الحالية نهائيًا. (I5bcfd)
- تم إيقاف Modifier.plus نهائيًا، يُرجى استخدام Modifier.then بدلاً منه. توفّر الكلمة الأساسية "ثم" إشارة أقوى إلى الترتيب، كما أنّها تحظر كتابة
Modifier.padding().background() + anotherModifier، ما يؤدي إلى إيقاف السلسلة ويصعّب قراءتها (Iedd58، b/161529964) - إضافة فئات فرعية من [Abstract]ComposeView View لاستضافة محتوى Compose في هيكلية طرق العرض. (I46357)
- أصبحت الدالتان
RowوColumnالآن دالتين مضمّنتين، ما يقلّل بشكل كبير من تكلفة استخدامهما. (I75c10) - تمت إضافة SubcomposeLayout. وهي عنصر أساسي منخفض المستوى يتيح إنشاء العناصر الفرعية أثناء القياس إذا أردنا استخدام بعض القيم المتاحة لاحقًا فقط أثناء القياس لإنشاء الشجرة الفرعية. على سبيل المثال، لم يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
- تمت إضافة
SemanticsNode.positionInRootللحصول على موضع SemanticsNode بالنسبة إلى جذر التسلسل الهرمي لـ Compose (Icdf26، b/161336532) - تم تمرير أحداث MotionEvent بالكامل من Android إلى Compose ثم إلى Android مرة أخرى. (I14be8، b/158034713)
- تمت إزالة dropdownPopup. (I00430)
- موضع النافذة المنبثقة الثابت على الشاشات التي تحتوي على صورة مقطوعة (Idd7dd)
- إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
- تمت إضافة RemeasurementModifier. يتيح ذلك إعادة قياس التنسيق بشكل متزامن. بشكل عام، لن تحتاج إليها أبدًا لأنّ إعادة القياس/إعادة التنسيق تتم تلقائيًا، ولكنّنا نستخدمها داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)
- إزالة getLineEllipsisOffset/getLineEllipsisCount يمكنك استخدام getLineVisibleEnd أو getLineEnd أو isLineEllipsized بدلاً من ذلك. (I85aa2)
- أضِف بعض العلامات/التعليقات التوضيحية لسبب أفضل الممارسات. (I66b20)
- عرض المزيد من واجهات برمجة التطبيقات للسطر في TextLayoutResult (I79bd2)
- يمكن الآن الوصول إلى أدوات تحويل المتجهات المضمّنة لتحويل الوحدات المضمّنة من خلال Foo.VectorConverter، مثل Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter وما إلى ذلك (I3e273).
إصلاح الأخطاء
- إصلاحات واسعة النطاق لواجهة برمجة التطبيقات (I077bc)
- إزالة واجهة OffsetBase غير المستخدَمة
- مواءمة فئتَي Offset وIntOffset للحصول على مساحة سطح متسقة لواجهة برمجة التطبيقات
- إعادة تسمية IntOffset.Origin إلى IntOffset.Zero لضمان التوافق مع Offset API
- تم نقل طريقة nativeCanvas من واجهة Canvas لإتاحة إنشاء مثيلات Canvas خاصة بالمستهلكين
- تم إنشاء رمز بديل لفئة EmptyCanvas لإعادة هيكلة DrawScope ليكون مَعلمة غير فارغة بدلاً من lateinit وضمان عدم إمكانية قبول القيم الفارغة للحقل
- تمت إعادة تسمية تعدادات ClipOp لتصبح Pascal Case
- إعادة تسمية تعدادات FilterQuality لتصبح Pascal Case
- إعادة تسمية تعدادات StrokeJoin لتكون Pascal Case
- إعادة تسمية تعداد PointMode ليكون Pascal Case
- تمت إعادة تسمية تعداد PaintingStyle ليصبح Pascal Case
- تمت إعادة تسمية تعداد PathFillType ليصبح Pascal Case
- إعادة تسمية تعدادات StrokeCap لتصبح Pascal Case
- تم تعديل تنفيذ DrawCache لكي لا يستخدم مَعلمات lateinit
- تم تعديل DrawScope لكي لا يستخدم التفويض الكسول للمَعلمات الداخلية fillPaint وstrokePaint
- تم تعديل الدالة البرمجية القابلة للإنشاء Image لتجنُّب استخدام Box لتقليل الحمل الزائد
- تم تعديل فئة Outline لتضمين التعليقات التوضيحية @Immutable
- تم تعديل PathNode لتضمين التعليقات التوضيحية @Immutable لكل تعليمات مسار
- تم تعديل التركيبة الفرعية Vector لإزالة عمليات التحقّق الشرطية المكرّرة من المساواة، لأنّ Compose يتعامل معها تلقائيًا.
- إيقاف نهائي لطُرق إنشاء Rect المتوافقة واستخدام دوال الإنشاء بدلاً منها
- تعديل فئات Brush ومنشئات الدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
- تم تعديل تعداد VertexMode ليكون PascalCase
- تم تحديث طريقة selectPaint في DrawScope لاستبدال مَعلمات حدود الرسم في الطلاء بشكل شرطي إذا تم تغييرها
- تم تعديل الحجم لإضافة واجهة برمجة تطبيقات تفكيك وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدَمة
- تم تعديل استخدام واجهة برمجة التطبيقات BlendMode في Compose لربط BlendModes في إطار عمل Android بأوضاع PorterDuff بشكل صحيح استنادًا إلى مستوى واجهة برمجة التطبيقات. تم طرح واجهة برمجة التطبيقات BlendMode#isSupported API لتكون بمثابة طلب بحث عن إمكانية تحديد ما إذا كان BlendMode متوافقًا مع الجهاز قبل استخدامه. (I0ef42)
- تمت إضافة LazyItemScope إلى المَعلمة itemContent الخاصة بالقوائم Lazy. توفّر هذه السمة معدِّلات لملء الحد الأقصى لحجم العنصر الرئيسي، ما يحلّ حالة الاستخدام التي يجب فيها أن يملأ العنصر إطار العرض، ولا تعمل السمة Modifier.fillMaxSize() العادية لأنّه يتم قياس العنصر باستخدام قيود لانهائية. (Ibd3b2، b/162248854)
- تمت إزالة جهة الاتصال "
SemanticsNodeInteraction.performPartialGesture". يُرجى استخدامSemanticsNodeInteraction.performGestureبدلاً من ذلك. (Id9b62) - تم تغيير اسم "
LazyColumnItems" إلى "LazyColumnFor". تمت إعادة تسمية "LazyRowItems" إلى "LazyRowFor" (I84f84) - تمت تسوية حزمة
foundation.shape.cornerإلىfoundation.share(I46491، b/161887429) - تمت إعادة تسمية "
AndroidComposeTestRule" إلى "createAndroidComposeRule". (I70aaf) - تمت إضافة المزيد من واجهات برمجة التطبيقات إلى
TextLayoutResult. (Id7e04) - تمت إعادة تسمية Material
FilledTextFieldإلىTextField، وإعادة تسمية foundationalTextFieldإلىBaseTextFieldلتسهيل العثور على أبسط واجهة برمجة تطبيقات مطلوبة واستخدامها (Ia6242، b/155482676) - تمت إعادة تسمية Modifier.drawBackground إلى Modifier.background (I13677)
الإصدار 0.1.0-dev15
22 يوليو 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev15. يتضمّن الإصدار 0.1.0-dev15 هذه التعديلات.
تعديل المهام التابعة
- لاستخدام إصدار
0.1.0-dev15من Compose، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف FocusModifier نهائيًا لصالح Modifier.focus وModifier.focusRequester وModifier.focusObserver. تم إيقاف FocusState وFocusDetailedState نهائيًا واستبدالهما بـ FocusState2 (I46919 وb/160822875 وb/160922136)
- تمت إضافة أداة تعديل لمراقبة تغيير حالة التركيز. (I05866 وb/160924455 وb/160923326)
- تمت إضافة معدِّل لطلب تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
- اضبط قائمة شريط الأدوات لعرض خيارات النسخ والقص واللصق بشكل صحيح. (Id3955)
- تستخدم خصائص الدلالات ذات القيمة الواحدة الآن نمطًا للاتصال.
على سبيل المثال، تتم كتابة "semantics { hidden = true }" الآن على النحو التالي:
semantics { hidden() }. (Ic1afd، b/145951226، b/145955412) - تمت إضافة Modifier.focus الذي يحلّ محل FocusModifier. (Ib852a، b/160924778)
- إضافة FloatingToolbar لتحديد TextField (Ie8b07)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات بشأن واجهة برمجة التطبيقات ذات الصلة بإدخال المفاتيح (I53c0a)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لجميع واجهات برمجة التطبيقات ذات الصلة بميزة "التركيز" (I53b24 وb/160903352)
- تمت إضافة FocusState2 التي ستحلّ محلّ FocusDetailedState (I0a3ba، b/160822595)
- تمت إضافة ExperimentalFocus، وهي تعليق توضيحي @OptIn لواجهة برمجة التطبيقات Focus. (I1544b، b/160820961)
- تمت إضافة فئة وحدة IntBounds، وهي تمثّل حدود وحدات البكسل الصحيحة من التصميم. تم تعديل واجهة برمجة التطبيقات PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
- يتطلّب Applier الآن طريقة clear() للتخلّص من التركيبات (Ibe697)
- تم إيقاف KeyEvent نهائيًا واستبداله بـ KeyEvent2 (I68730)
- تمت إضافة علامة اختيارية جديدة useUnmergedTree إلى أدوات البحث الاختبارية. (I2ce48)
- تمت إضافة واجهة برمجة تطبيقات تجريبية إلى LayoutNode (I4f2e9)
تمت إضافة طرق النسخ إلى أنواع مختلفة من الفئات المضمّنة، بما في ذلك:
- إزاحة
- الحجم
- نصف القطر
- حركة
TransformOrigin
تم إيقاف طريقة Size.copy المصاحبة للكائن نهائيًا واستبدالها بطريقة نسخة الكائن (Ife290، b/159905651)
تتضمّن الآن النوافذ المنبثقة ومربّعات الحوار والقوائم سمة MaterialTheme السياقية (Ia3665، b/156527485)
تمت إعادة تسمية TextDirection إلى ResolvedTextDirection (I3ff38)
تمت إزالة مَعلمة اتجاه التنسيق من كتلة القياس الخاصة بالدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة رد الاتصال من خلال عنصر نطاق القياس (Ic7d9d).
إعادة هيكلة SelectionHandles لإعادة استخدامها (I420e0)
تمت إزالة العنصر القابل للنقر. استخدام Modifier.clickable (I84bdf)
تم حذف TestTag وSemantics. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).
قبل إجراء هذا التغيير، كان المكوّن الإضافي لبرنامج تجميع Compose يعترض بشكل غير بسيط على طلبات المنشئات داخل دالة مركّبة إذا كان هناك (I5205a، b/158123804)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط بينه وبين Modifier.testTag. (I995f0)
أصبحت مواضع خط المحاذاة Int التي يتم عرضها من Placeable#get(AlignmentLine) غير فارغة الآن. في حال عدم توفّر خط المحاذاة المطلوب البحث عنه، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)
تمت إضافة مَعلمة معدِّل إلى العنصر القابل للإنشاء AndroidView. (I48a88، b/158746303)
تم إيقاف Semantics() نهائيًا. استخدِم Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)
إضافة دالة viewModel() القابلة للإنشاء التي تتيح إنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه من قبل بطريقة مشابهة لطريقة عملها في Activity أو Fragment (I5fdd1)
تم استبدال استخدام IntPx بـ Int، واستبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
من أجل دمج عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة من أجل حزم قيمتَين عائمتَين لتمثيل العرض والارتفاع كقيم عائمة. (Ic0191)
من أجل دمج عدد الفئات المستخدَمة لتمثيل معلومات تحديد المواقع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين من النوع float لتمثيل الإزاحتَين x وy الممثّلتَين كقيمتَين من النوع float. (I3ad98)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلَمات البكسل. تم حذف فئة Px بالكامل (I3ff33)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I086f4)
تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (Id3434)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I97a5a)
تم إيقاف TestTag نهائيًا. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)
تمت إزالة التنفيذ التلقائي لـ ParentDataModifier#modifyParentData، والذي لا ينفّذ أي عملية. كان هذا التنفيذ يعادل عدم تنفيذ الواجهة في المقام الأول. (I0deaa)
تم سابقًا إيقاف ScaleFit نهائيًا وإزالته. استخدِم ContentScale بدلاً من ذلك. (Ifbc5b)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (I19d02)
تمت إضافة المكوّن DropdownMenu في ui-material، وهو تنفيذ لقائمة التصميم المتعدد الأبعاد. (I9bb3d)
تمت إزالة LayoutTag() المتوقّفة نهائيًا، يُرجى استخدام Modifier.tag() بدلاً منها. تمت إزالة Modifier.matchParent() المتوقّفة نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً منها. (If8044)
تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلَمات البكسل (I57bff)
تمت إعادة إتاحة Modifier.semantics للسماح باستخدامها مع المكوّنات ذات المستوى العالي. (I4cfdc)
تم دمج عمليات تنفيذ CanvasScope بحيث أصبح هناك DrawScope وContentDrawScope فقط تمت إعادة تسمية CanvasScope إلى DrawScope. تم تعديل DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection تم حذف فئة DrawScope الفرعية في ContentDrawScope تم تعديل Painter وPainterModifier لعدم الاحتفاظ بسمة RTL بأنفسهما لأنّ DrawScope توفّرها بالفعل بدون الحاجة إلى توفيرها يدويًا (I1798e)
تعمل السمة DoubleTapGestureFilter الآن على إزالة الغموض عن SingleTapGestureFilter في جميع أنحاء الشجرة. (If92b1)
تم تعديل Alignment API وإضافة إمكانية المحاذاة المطلقة (التي لا يتم عكسها تلقائيًا في سياق الكتابة من اليمين إلى اليسار) (I38cd3)
تم تغيير واجهة برمجة التطبيقات الخاصة بمعدِّلات DrawLayer: تمت إعادة تسمية outlineShape إلى shape، وأصبحت القيمة التلقائية هي RectangleShape، وأصبحت القيمة غير قابلة للتصغير. تمت إعادة تسمية clipToOutline إلى clip. تمت إزالة clipToBounds لأنّها مماثلة لـ clip == true مع RectangleShape (I7ef11 وb/155075735).
تم تعديل واجهات برمجة التطبيقات ذات المستوى الأعلى في Compose التي تعرض Canvas لعرض CanvasScope بدلاً من ذلك. ويؤدي ذلك إلى عدم حاجة المستهلكين إلى الاحتفاظ بكائنات Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا بحاجة إلى الوصول إلى Canvas، يمكنهم استخدام طريقة drawCanvas الإضافية التي توفّر برنامج معالجة لإصدار أوامر الرسم باستخدام Canvas الأساسي. (I80afd)
تم تغيير واجهة برمجة التطبيقات WithConstraints trailing lambda. بدلاً من مَعلمتَين، أصبح يتضمّن الآن نطاقًا للمستقبِل يوفّر، بالإضافة إلى القيود وlayoutDirection، الخصائص minWidth وmaxWidth وminHeight وmaxHeight بوحدات بكسل مستقلة الكثافة (I91b9a وb/149979702).
تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)
تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)
تحتوي دوال القياسات الجوهرية في Layout وLayoutModifier2 الآن على أداة استقبال IntrinsicMeasureScope التي توفّر واجهة برمجة تطبيقات طلبات البحث عن القياسات الجوهرية مع اتجاه التنسيق الذي يتم نشره ضمنيًا. (Id9945)
يمكن قياس العناصر الفرعية Layout وLayoutModifier باتجاه تنسيق مختلف. (Ibd731)
تمت إضافة Modifier.zIndex() جديد للتحكّم في ترتيب رسم العناصر التابعة ضمن تنسيق العنصر الرئيسي نفسه. تمت إعادة تسمية السمة elevation في DrawLayerModifier إلى shadowElevation ولم تعُد تتحكّم في ترتيب الرسم. تم تغيير ترتيب المَعلمات في DrawShadow: أصبحت قيمة الارتفاع هي الأولى والشكل هو الثاني مع استخدام RectangleShape كقيمة تلقائية. (I20150، b/152417501)
تمت إزالة onSizeChange وonPositionChange في Owner. (I5c718)
تمت إضافة Constraints2، وهي نسخة من Constraints لا تتوافق إلا مع قيم قيود Int بدلاً من IntPx. ستتم إزالة IntPx وسيتم افتراض أنّ جميع قيود الأعداد الصحيحة هي وحدات بكسل، كما هو الحال في Android.
- تمت إضافة IntSize أيضًا، والذي سيحلّ محلّ IntPxSize في النهاية. (I4b43a)
أصبحت السمة "محاذاة" قابلة للإنشاء باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة أحادية البُعد. (Ia0c05)
تقبل السمة alignToSiblings الآن كائن Measured بدلاً من Placeable. (I5788d)
-
- تمت إعادة تسمية ScaleFit إلى ContentScale
- نقلنا ContentScale من وحدة ui-graphics إلى وحدة ui-core لتكون في الوحدة نفسها التي تتضمّن واجهة Alignment API.
- تمت إعادة تسمية FillMaxDimension إلى Crop
- تمت إعادة تسمية FillMinDimension إلى Fit
- تغيير اسم "تعبئة الشاشة" إلى "ملاءمة الشاشة" لتكون أكثر ملاءمة
- القيم المكافئة لـ ImageView.ScaleType
- تمت إضافة مستندات تشير إلى أنّ الجمع بين "القص" و"محاذاة إلى الوسط" يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_CROP، وأنّ استخدام "الملاءمة" مع "محاذاة إلى الوسط" يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.FIT_CENTER، وأنّ استخدام "الداخل" مع "محاذاة إلى الوسط" يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_INSIDE.
إتاحة استخدام معدِّلات الرسم مع اللغات التي تُكتب من اليمين إلى اليسار (I0aaf9)
تم إصدار واجهة برمجة تطبيقات لتوسيع "طرق عرض Android" من XML. يمكنك الاطّلاع على العرض التوضيحي ViewInCompose لمزيد من التفاصيل. (I42916)
تحسين واجهة برمجة التطبيقات DrawModifier API:
- تم إنشاء نطاق المتلقّي للدالة draw() باسم ContentDrawScope
- تمت إزالة جميع المَعلمات في draw()
- تتضمّن DrawScope الواجهة نفسها التي كانت تتضمّنها CanvasScope السابقة
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تمت إضافة positionInParent وboundsInParent إلى LayoutCoordinates. (Icacdd، b/152735784)
أصبح clipToBounds وclipToOutline في DrawLayerModifier وdrawLayer() مضبوطَين تلقائيًا على "خطأ". (I0eb8b، b/152810850)
تمت إعادة تسمية LayoutResult إلى MeasureResult. (Id8c68)
تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد معدِّلات التنسيق، وتم إيقاف LayoutModifier نهائيًا (If32ac)
تم استبدال المعدِّل وعلامة الجمع بدوال إضافية للمصنع (I225e4)
تمت إضافة السمتَين translationX/Y لدعم إزاحة قائمة العرض الخاصة بأوامر الرسم لطبقة معيّنة. ويكون ذلك مفيدًا لنقل المحتوى استجابةً للصور المتحركة أو أحداث اللمس. (I8641c)
تمت إضافة المَعلمتَين pivotX وpivotY إلى واجهات برمجة التطبيقات الخاصة بالطبقات لتتيحا إمكانية التدوير والتوسيع أو التصغير حول نقطة معيّنة في إحدى الطبقات (Icf7c3)
أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين القابلتَين للإنشاء OnPositioned وOnChildPositioned. (I2ec8f)
تمت إضافة LayerModifier، وهو معدِّل يتيح إضافة RenderNode إلى Layout. ويتيح ضبط القص والشفافية والتدوير والتوسيع والظلال. سيحلّ هذا العنصر محلّ RepaintBoundary. (I7100d، b/150774014)
تم نشر اتجاه التنسيق من عقدة تصميم العنصر الرئيسي إلى العناصر الفرعية. تمت إضافة أداة تعديل اتجاه التنسيق. (I3d955)
يتيح مكوّن "الحزمة" اتجاه الكتابة من اليمين إلى اليسار (Ic9e00)
توفير الدعم الأوّلي للغة من اليمين إلى اليسار في تصميم Compose (Ia5519)
تم دمج Density وDensityScope في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density)، استخدِم with(density) (I11cb1)
تم تغيير LayoutCoordinates لجعل providedAlignmentLines Set بدلاً من Map، ولجعل LayoutCoordinates تنفّذ عامل التشغيل get() بدلاً من ذلك لاسترداد قيمة. يسهّل ذلك على المعدِّلين تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)
لم يعُد LayoutCoordinates يتضمّن السمة position. لا تكون السمة position منطقية عند مراعاة LayoutModifiers أو التدوير أو تغيير الحجم. بدلاً من ذلك، على المطوّرين استخدام parentCoordinates وchildToLocal() لاحتساب عملية التحويل من LayoutCoordinate إلى أخرى.
تستخدِم LayoutCoordinates السمة IntPxSize للمقاس بدلاً من PxSize. تستخدِم التصميمات أحجامًا عددية بالبكسل، لذا يجب أن تستخدِم جميع أحجام التصميمات أعدادًا صحيحة وليس قيمًا عشرية. (I9367b)
تحسينات على مساحة واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)
تم إنشاء واجهة برمجة التطبيقات CanvasScope التي تتضمّن عنصر Canvas لعرض مساحة واجهة برمجة تطبيقات للرسم بدون حالة وتصريحية. يتم تضمين عمليات التحويل ضمن نطاق جهاز الاستقبال الخاص بها، كما يتم تحديد نطاق معلومات الحجم ضمن حدود الحواف الداخلية المقابلة. ولا يتطلّب ذلك من المستهلك الاحتفاظ بكائن حالة Paint الخاص به لتحديد عمليات الرسم.
- تمت إضافة CanvasScopeSample، كما تم تعديل التطبيق التجريبي ليشمل عرضًا توضيحيًا للرسومات التعريفية (Ifd86d).
تمت إزالة واجهة برمجة التطبيقات MaskFilter غير المستخدَمة لأنّ استخدامها محدود وغير محسّن لتسريع الأجهزة في معظم حالات الاستخدام (I54f76).
تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات Color القابلة للتصغير في واجهة برمجة التطبيقات بقيم غير قابلة للتصغير، وتم استخدام Color.Unset بدلاً من القيمة الخالية (Iabaa7)
إضافة مَعلمة rect اختيارية إلى ImagePainter لإتاحة رسم قسم فرعي من ImageAsset الأساسي (I0ea9e)
تمت إضافة "إزالة اللون" لتمثيل قيمة غير مضبوطة بدون وضع الألوان في مربّعات. (If901a)
تمت إضافة طريقتَي Canvas.rotate وCanvas.scale إلى الإضافات لاستهلاك إحداثيات نقطة الارتكاز الاختيارية للتحويلات. يتم ضبط هذه القيم تلقائيًا على الزاوية العلوية اليسرى من ترجمة لوحة العرض الحالية.
تم أيضًا نقل Canvas.rotateRad ليكون طريقة إضافة للحفاظ على الاتساق (Ibaca6)
تم إنشاء واجهة برمجة التطبيقات PixelMap API لتتيح الاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)
تمت إعادة تسمية toFrameworkRect/toFrameworkRectF إلى toAndroidRect/toAndroidRectF لتتوافق مع نظام التسمية لعمليات تحويل العناصر بين Compose وواجهات برمجة تطبيقات Android التي تم إنشاؤها استنادًا إليها. تم أيضًا تعديل المستندات المتعلقة بواجهات برمجة التطبيقات هذه (I86337).
تمت إضافة VectorPainter API لاستبدال واجهة برمجة التطبيقات الحالية الخاصة بالتركيب الفرعي للرسومات المتجهة. نتيجة التركيب الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف الدوال البرمجية السابقة القابلة للإنشاء DrawVector نهائيًا واستبدالها بـ VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) إلى PaintBox(Painter) تم إنشاء عنصر Vector قابل للإنشاء يعمل مثل العنصر Image القابل للإنشاء، ولكن مع VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)
تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وImage القابل للإنشاء القادم الذي سيتم استخدامه للمشاركة في التصميم ورسم المحتوى. _Body:تم إنشاء طريقة ملحقة في android.graphics.Bitmap باسم Bitmap.asImageAsset() لإنشاء مثيل من ImageAsset مفيد لدمج تطوير تطبيقات Android التقليدية مع إطار عمل Compose (Id5bbd)
تمت إضافة TextDirection.Content (I48f36)
تمت إضافة عامل التشغيل TextDecoration.plus (I0ad1a)
تمت إزالة
Forceمن قيم تعداد TextDirectionAlgorithm (Icc944)تمت إعادة تسمية TextDirectionAlgorithm إلى TextDirection (I75ce8)
تنفيذ LongPressAndDrag لتحديد TextField (I17919)
تمت إضافة AnnotatedString.getStringAnnotations التي تعرض جميع التعليقات التوضيحية ضمن النطاق. (I1fa00)
تم تغيير اسم الحزمة لكلّ من Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)
يحتوي مؤشر TextField على صورة متحركة وامضة (Id10a7)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) إلى annotatedString(builder: Builder). (Ia6377)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)
تمت إعادة تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)
أصبح بإمكانك الآن إخفاء لوحة المفاتيح الافتراضية أو إظهارها باستخدام SoftwareKeyboardController الذي يتم توفيره من خلال معاودة الاتصال onTextInputStarted (I8dc44 وb/151860051).
تمت إضافة عامل التشغيل "زائد" إلى (Text/Paragraph/Span)Style الذي يتم تفويضه إلى الدالة merge(). (Ia1add)
لم يعُد FontWeight.lerp يلتصق. ولا يزال هذا النوع من الفئات يُعدّ فئة بيانات. (I521c2)
أصبح منشئ FontWeight متاحًا للجميع، ولم يعُد فئة بيانات. (Id6b1f)
إضافة getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801)
تمت إعادة تسمية وحدة ui-text لتصبح ui-text-core (I57dec)
تمت إزالة فئة Size غير المستخدَمة لأنّ هناك فئة Size مكرّرة في وحدة ui-geometry يتم استخدامها. (I1b602)
تمت إضافة AdapterList، وهو مكوّن قائمة قابلة للتمرير يعرض العناصر المرئية فقط. تشمل المشاكل المعروفة حاليًا أنّه عمودي فقط ولا يتعامل بشكل كامل مع جميع حالات التغييرات التي تطرأ على العناصر التابعة له. (Ib351b)
إضافة معلَمات الحشو والحدود والشكل والخلفية إلى المربّع (I05027، b/148147281)
إصلاح الأخطاء
- تمت إعادة تسمية دالة onFocusChange في حقول النص إلى onFocusChanged (Ida4a1)
- تم إيقاف VerticalScroller وHoriziontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك Column/Row ومَعلماتهما، أو Modifier.verticalScroll وModifier.horizontalScroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا واستبداله بـ ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
- تمت إعادة تسمية
runOnIdleComposeإلىrunOnIdle(I83607) - تمت إعادة تسمية العديد من واجهات برمجة التطبيقات الخاصة بالاختبار لتكون أكثر سهولة. تمت إعادة تسمية جميع واجهات برمجة التطبيقات findXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة التطبيقات doXYZ إلى performXYZ. (I7f164)
- يمكن الآن إنشاء واجهة مستخدم Compose داخل ViewGroups بدون الحاجة إلى إنشاء تركيبة جديدة. راجِع ViewInteropDemo للاطّلاع على مثال. (I9ab0b، b/160455080)
- تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7)
- تنفيذ "مقابض تحديد السحب" لتغيير التحديد في TextField (I27032)
- تمت إزالة فئة Shader المضمّنة التي كانت تتضمّن فئة NativeShader المتوقّعة، وتمت إعادة تسمية NativeShader إلى Shader. لم يضِف الصف المضمّن Shader أي قيمة إلى مساحة واجهة برمجة التطبيقات، وكان صفًا مضمّنًا، لذا استخدِم الصف NativeShader مباشرةً. (I25e4d)
تمت إعادة تصميم PainterModifier كي لا يوفّر التحجيم استنادًا إلى القيود المحدّدة ومَعلمة ContentScale. يجب أن تعمل عمليات تنفيذ Painter على تغيير حجم محتوى الرسم بنفسها استنادًا إلى حجم DrawScope الذي يتم الرسم فيه.
تم إصلاح المشكلة التي كان يتم فيها تحديد حجم خريطة البت المخزّنة مؤقتًا في VectorPainter على أساس الحجم التلقائي بدلاً من الحجم المحدّد للرسم.
تم تعديل ImagePainter لتغيير حجم المحتوى بدلاً من الاعتماد على PainterModifier لتنفيذ ذلك نيابةً عنه. (I6ba90)
إضافة دالة withFrameNanos ذات المستوى الأعلى لتحديد توقيت الصورة المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِلها بـ @ComposableContract(tracked=false) (Id211e)
تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف دوال TextField وFilledTextField وCoreTextField القابلة للإنشاء نهائيًا، والتي تستخدم هذا النوع. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
تم إصلاح المشكلة التي كان يؤدي فيها إرسال بيانات إدخال المؤشر إلى حدوث تعطُّل إذا تمت إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)
تم إصلاح المشكلة التي كانت تؤدي إلى تعطُّل التطبيق عند إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)
تمت إعادة تصميم فئة Radius لتصبح فئة مضمّنة. تمت إزالة طرق إنشاء العناصر المصاحبة واستبدالها بدالة إنشائية مع مَعلمة تلقائية ليكون نصف القطر على المحور y مطابقًا لنصف القطر الإلزامي على المحور x.
تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتَين منفصلتَين من النوع float للنطاق الجغرافي على طول المحورَين x وy (I46d1b)
لم يعُد العنصر القابل للإنشاء Recompose تجريدًا مفيدًا. يجب أن تحدث معظم عمليات إعادة التركيب نتيجة لعمليات تعيين MutableState. بالنسبة إلى أي شيء آخر، يُنصح باستخدام الدالة
invalidateلتفعيل إعادة إنشاء النطاق الحالي. (Ifc992)تم استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلَمات البكسل (Iede0b)
تغيير استراتيجية إنشاء الرموز البرمجية لمترجم Compose قبل إجراء هذا التغيير، كان برنامج التجميع Compose يحوّل طلبات الدوال القابلة للإنشاء. من خلال هذا التغيير، أصبحنا الآن نحوّل نص الدالة المركّبة ونترك موقع الاستدعاء بدون تغيير (في الغالب).
وهذا يعني أنّ معظم منطق التواصل مع وقت تشغيل Compose يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات الإنشاء. لن يحتاج معظم مستخدمي Compose إلى تعديل أي رمز نتيجةً لهذا التغيير.
ولإتاحة هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للإنشاء. يتم تحويل الدالة المركّبة التي تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، وتكون المَعلمات الإضافية هي Composer، وهو عدد صحيح "مفتاح"، وعدد صحيح لقناع البت يُستخدَم لنقل البيانات الوصفية من خلال عمليات الاستدعاء.
تحوّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة مركّبة. ويتم ذلك بدون إضافة حمل زائد اصطناعي إضافي تلقائي للوظيفة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الوظائف.
في ما يلي التغييرات المعروفة والمقصودة في السلوك الناتجة عن ذلك:
- سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها سابقًا
- أصبحت التعبيرات القابلة للإنشاء في تعبيرات الوسيطة التلقائية متاحة الآن ويمكن التعامل معها بشكل صحيح
تضمّنت هذه التعديلات بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال الرسم البياني لعمليات الاستدعاء إلى الدوال الأخرى القابلة للإنشاء. سيؤدي ذلك إلى تقليل عمليات المقارنة في وقت التشغيل، وتقليل حجم جدول الفتحات، بالإضافة إلى تخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها سابقًا. لم يعُد يتمّ تخزين المَعلمات التي يتمّ تحديد أنّها "ثابتة" في وقت الترجمة أو مقارنتها في وقت التشغيل. يقلّل ذلك من عدد عمليات المقارنة ويقلّل من حجم جدول الفتحات. 3- يتم استخدام بنية التحكّم في سير عمل نص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول المواضع، ما يقلّل من الجهد المطلوب من وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والاستقبال غير المستخدَمة للدوال في تحديد ما إذا كان يمكن تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.
كانت معظم التغييرات غير المتوافقة مخصّصة لواجهات برمجة التطبيقات التي يستهدفها المحوّل البرمجي مباشرةً، ولن يتأثّر الاستخدام العادي لـ Compose بما يلي: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة عمليات التحميل الزائد غير المتغيرة لـ
key. استخدِم الإصدارvarargمن الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي "مهم" نهائيًا. استخدِمkeyكبديل. 6. تم تغيير ScopeUpdateScope::updateScope ليتوقّع Function3 بدلاً من Function1 7. تم تعديل restartableFunction وrestartableFunctionN لتضمين مَعلمات إضافية في وقت الترجمة (I60756، b/143464846)تمت إزالة معدِّلات LayoutAlign المتوقّفة نهائيًا. (I10877)
تمت إزالة RepaintBoundary واستخدام DrawLayerModifier بدلاً منها (I00aa4)
يحتوي كل من Button وFloatingActionButton وClickable الآن على المَعلمة
enabledالمنفصلة. تمت إعادة تسمية بعض المَعلمات في الزر أو إعادة ترتيبها. (I54b5a)تم استبدال ButtonStyle بدوال مميزة وإزالة التحميل الزائد للنص (السلسلة). اطّلِع على نماذج معدَّلة للحصول على معلومات حول الاستخدام. (If63ab، b/146478620، b/146482131)
تغييرات قد تؤدي إلى أعطال في واجهة برمجة التطبيقات ambients API راجِع مستندات السجلّ و
Ambient<T>للحصول على التفاصيل (I4c7ee، b/143769776)تم تغيير سلوك TextDirection التلقائي ليتم تحديده حسب LayoutDirection، أي إذا كان LayoutDirection من اليمين إلى اليسار، سيكون TextDirection التلقائي من اليمين إلى اليسار. كانت القيمة السابقة هي TextDirection.ContentOrLtr/Rtl (I4e803)
إصلاح الخطأ: عند تضمين وزن الخط ونمطه في AnnotatedString، لا يتم عرض النص بشكل صحيح. (I77a9d)
تضيف هذه السمة المَعلمات الشائعة الاستخدام إلى Text(). إذا كنت تنشئ حاليًا نمط نص محليًا لتمرير عدد صغير من هذه المَعلمات، مثل Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً: Text(textAlign = TextAlign.Center) (I82768)
تمت إعادة تسمية الوحدة ui-android-text إلى ui-text-android (I68cbe)