واجهة مستخدم "الإنشاء"
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(الاطّلاع على مستندات مرجع واجهة برمجة التطبيقات لجميع حِزم Compose)
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
|---|---|---|---|---|
| 17 يونيو 2026 | 1.11.3 | - | 1.12.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.11.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.11.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.12
الإصدار 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 مع "مدير بيانات الاعتماد" في 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 العناصر التابعة دائمًا بعد القياس، ولكن تتطلّب طرق العرض ذلك لإدارة الحالة بشكل سليم. (Ib4fe9، b/430974758) - إضافة
isVirtualإلىLayoutInfo(I3e5cd، b/494243978) - تمت إزالة العلامة
isGraphicsLayerShapeSemanticsEnabled. (I44be0، b/455600081) - تمت إضافة واجهة برمجة تطبيقات جديدة للخطوط لاستخدام الخطوط القابلة للتنزيل بدون الحاجة إلى إضافة شهادات الخطوط إلى قاعدة الرموز يدويًا. (I30b86، b/479454159)
- تمت إضافة
onRootWithViewInteractionلتحديد نطاق عمليات البحث الدلالية في Compose لتشمل عناصر Android View معيّنة . يسهّل ذلك اختبار واجهات المستخدم المختلطة، مثل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.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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إعادة تسمية واجهة برمجة التطبيقات
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هي true، يحتوي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) - تتضمّن هذه الإصدارات تتبُّع تسلسل استدعاء الدوال البرمجية المستند إلى مفتاح المجموعة في Compose، وهو مفعَّل تلقائيًا لجميع التطبيقات التي تم تصغيرها. سيتم إنشاء ملف ربط 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) - إضافة عقدة
BeyondBoundsLayoutModifierNodeModifier جديدة لتنفيذ تخطيط خارج الحدود للبحث عن التركيز (I39be1، b/416133658) - يرسل
FocusTargetModifierNode.requestFocus()التركيز إلى أحد العناصر الفرعية عندما لا يكون قابلاً للتركيز عليه. أصبح هذا الإعداد متوافقًا الآن معFocusRequester.requestFocus()وFocusRequesterModifierNode.requestFocus(). إذا لم تكن بحاجة إلى هذا السلوك، اضبط العلامةComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledعلى "false" في تطبيقك. (Icca5c، b/436863604) - توفير حجم النافذة المستند إلى وحدات البكسل المستقلة عن الكثافة في
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) - واجهة برمجة تطبيقات جديدة تتيح تفعيل العناصر المشترَكة وإيقافها ديناميكيًا، كما تتيح احتساب ما إذا كان هناك انتقال حالي لعنصر مشترَك. واجهة برمجة تطبيقات جديدة لإعداد حدود هدف بديل عند التخلص من العنصر المشترَك المستهدَف أثناء الانتقال واجهة برمجة تطبيقات جديدة للحصول على
LayoutCoordinatesLookaheadScope(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 جديدة تتيح الاستيفاء التلقائي بين الأنواع المختلفة، على افتراض أنّ أحد الأنواع يعرف كيفية التحويل من النوع الآخر. يتم الاستفادة من هذه الواجهة في العديد من أنواع الإنشاء، مثل "الفرشاة" و"الشكل"، ولكن يمكن استخدامها خارجيًا أيضًا. (I58eab)
- تتيح الآن ميزة "قابلة للتمرير" إمكانية التعامل بشكل أفضل مع أحداث تمرير عجلة الماوس الثنائية الأبعاد. تم إطلاق واجهة برمجة تطبيقات اختبار جديدة للمساعدة في اختبار حالات الاستخدام في
MouseInjectionScope. لقد أضفنا أيضًا حمولة زائدة جديدة لطُرق التمرير فيMouseInjectionScopeوعلامة للتحكّم في السلوك الجديد تُسمّىisMouseWheel1DAxisLockingEnabled(I136df). - إضافة
DeviceConfigurationOverridesلنوع لوحة المفاتيح وحالتها، ونوع التنقّل وحالته، وحالة شاشة اللمس، ونوع وضع واجهة المستخدم (I282f0) - تمت إضافة
LineHeightStyle.Modeجديد باسمTight. يساعد هذا الوضع في فرض ارتفاعات أسطر أصغر حتى عندما يكون من المحتمل أن تقطع الرموز الرسومية الأطول. (Id3849) - يحتوي
BaselineShiftالآن على قيمة "غير محدّد" لمنع التضمين. يحتويBaselineShiftوHyphensوLineBreakوTextAlignوTextDirectionالآن على دوال مساعِدةisSpecified. يحتويHyphensوTextAlignوTextDecorationوTextDirectionالآن على طريقتَيvalueOf()والقيمة اللتين تتيحان النشر على نحو متسلسِل/إلغاء النشر على نحو متسلسِل بكفاءة. (I8d44c) - تمت إضافة واجهة طريقة
getDisplayNameجديدة للسماح بأسماء عرض مخصّصة لمثيلات مَعلمات المعاينة. (I19bdf، b/241699422) - عند مقارنة قيم Dp بالقيمة Unspecified باستخدام علامة أصغر من أو أكبر من، يتم الآن عرض القيمة false دائمًا. يؤدي استخدام
Dp.compareTo(Unspecified)دائمًا إلى عرض القيمة 0. سيؤدي ضبط العلامةComposeUiUnitFlags.isDpCompareToChangedعلى "خطأ" إلى إعادةDp.compareTo()إلى سلوكه السابق، حيث لا يؤدي دائمًا إجراء مقارنة بين Unspecified و"أقل من" و"أكبر من" إلى عرض القيمة "خطأ"، كما أنّcompareTo()مع Unspecified يتطابق مع سلوكFloat.compareTo(). (Ifa88b، b/429221319)
إصلاح الأخطاء
- تغيير الحد الأدنى التلقائي لإصدار Android من المستوى 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" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي لبرنامج Gradle"، يمكنك بدلاً من ذلك ترقية 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 يوليو 2022
تم طرح 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) - لا يمكن مقارنة قيم الألوان ذات 64 بت في Compose مباشرةً مع
ColorLongsفي Android لأنّ أرقام تعريف مساحة الألوان غير مرتّبة لبعض مساحات الألوان. لتحويل مساحات الألوان في 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" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي لبرنامج Gradle"، يمكنك بدلاً من ذلك ترقية Lint بمفرده باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) فيgradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
تغييرات واجهة برمجة التطبيقات
- تزيل هذه السمة العلامة لتفعيل عبارات التتبُّع لأداة تتبُّع مسار النتائج (تصحيح الأخطاء). (I1b2a1)
- تم تغيير
InnerRectRulersوOuterRectRulesإلى طرق بدلاً من ذلك. تمت إزالة مَعلمة الاسم من واجهة برمجة التطبيقات العامة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) - السماح لـ Compose بتشغيل
ViewTreeObserver.OnScrollChangedيتم تقديم هذا السلوك ضمن العلامةisOnScrollChangedCallbackEnabled. قدّمنا أيضًا دالة موسّعة للسمةDelegatableNode dispatchOnScrollChanged. (I34b9d، b/238109286) - تم إيقاف
currentCompositeKeyHashنهائيًا. يمكنك استخدامcurrentCompositeKeyHashCodeكبديل. تشفّر واجهة برمجة التطبيقات البديلة التجزئة نفسها باستخدام عدد أكبر من البتات، ما يقلّل بشكل كبير من احتمال أن يكون لمجموعتين عشوائيتين غير مرتبطتين في التسلسل الهرمي للتركيب مفتاح التجزئة نفسه. (I4cb6a، b/177562901) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5).
- تمت إضافة إمكانية التحقّق من أخطاء Lint في
FocusRequesterللتأكّد من تذكُّرها داخل التركيب (I6bf91) - تمت إضافة إمكانية ضبط عدد اللقطات المفضّل في الثانية أو فئة عدد اللقطات في الثانية التي يجب عرض Composable بها (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هي "خطأ" (I7922f، b/246909281) - تم إصلاح الخلل الذي كان يؤدي إلى إغلاق أي مربّع حوار عند رصد أي مسجّل حركات خارجه. (Ia78fd)
- تتطلّب عمليات التحقّق من أخطاء Compose البرمجية الآن الإصدار 8.2.2 من "مكوّن Android الإضافي لنظام Gradle" كحد أدنى من سطر الأوامر، والإصدار Ladybug من "استوديو Android" على الأقل للاستفادة من ميزات بيئة التطوير المتكاملة. إذا كنت تستخدم إصدارًا قديمًا من "مكوّن Android الإضافي في Gradle"، يمكنك ضبط
android.experimental.lint.version=8.8.2في ملف gradle.properties لترقية إصدار Lint بدون التأثير في "مكوّن Android الإضافي في Gradle". (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" و"LazyLayout" d791b11 - تخطّي طلبات إعادة القياس للعناصر المسبقة التكوين أثّر هذا الخطأ في أداء التمرير في التنسيقات الكسولة لأنّ الجلب المُسبَق لم يكن يعمل بكفاءة في بعض الحالات، وكان القياس يتم داخل الإطار. 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) - يجب أن يستخدم
LocalAutofillHighlightColorالتركيب المحلي نوع 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 مع الألوان ذات التدرّج اللوني الواسع والألوان العالية الديناميكية عند التشغيل على 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 - أصبحت المَعلمة غير فارغة (non-NULL) مع ضبط القيمة التلقائية على "تلقائي"
- إزالة التعليق التوضيحي
@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)
إصلاح الأخطاء
- يمكن الآن أن تتلقّى طرق العرض المضمّنة في Compose أحداثًا متعلقة بأداة التحكّم الدوّارة إذا كانت في وضع التركيز (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)
إصلاح الأخطاء
- إصلاح Dalog
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) - تم إصلاح مشكلة متعلّقة بإمكانية الوصول حيث لم يتم الإعلان عن inlineContent الخاص بـ
BasicTextمن خلالTalkBack. (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 كحدّ أدنى. يتم فرض ذلك لمعالجة عدم توافق السلوك بين واجهة المستخدم و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بمصدرَي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بدلاً منها. إذا كنت تستخدم Material theming، استخدِم العنصرTextDefaultsلإنشاء التعليق التوضيحي مع تطبيق Material theming عليه (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 أو أعلى (شاملة)، وتتوافق مع أكثر من% 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وdrawWithCacheعمليات تنفيذ Modifier لعرض إذن الوصول إلىGraphicsContextمن أجل الوصول المحدود النطاق الذي سيؤدي تلقائيًا إلى تنظيف مثيلاتGraphicsLayerعند إيقاف Modifier. (I64a2f، b/288494724) - تم طرح
InterceptPlatformTextInputللمساعدة في كتابة اختبارات منخفضة المستوى ذات صلة بطريقة الإدخال (IME) وحالات استخدام أخرى منخفضة المستوى لطريقة الإدخال. تم إيقاف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 14 (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لقبول المحتوى من جلسة سحب وإفلات. تعرض هذه الدالة اللامدا قيمةDragAndDropTargetصالحة إذا كنت مهتمًا بجلسة السحب والإفلات. تم استبدال دوال lambda الأخرى لمعالجة أحداث السحب بهذه الدالة. تمت إضافة دالة مصنعDragAndDropTargetلتلقّي البيانات من جلسات السحب والإفلات (Iebf3a). تمت إزالة
DragAndDropInfoكنوع، ويأخذDragAndDropModifierNode.dragالآن مَعلمات للوظيفةtransferDataوحجم الزخرفة ووظيفة سحب الزخرفةDrawScopeتحتوي
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) - سيتم الآن تجاهل أحداث الضغط على مفتاح الجهاز (Up) للمفاتيح التي لم تتلقَّ حدث الضغط (Down) في "طريقة العرض Compose" نفسها. (Ib37b4، b/305518328)
- إضافة إمكانية استخدام أداة العرض مع "التدرّج الدائري" في
ArcLine(I4d5bb) - نفِّذ الدالتَين equals وhashcode للفئة
PageSize.Fixed. (Ie3ede، b/300134276) - حلّ مشكلة توافق الثنائي مع تغيير Window Inset (Iee695)
- إزالة الطبقة الأساسية للمادة من أجل 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) - تضيف
dragAndDropSourceModifier لبدء جلسات السحب والإفلات، وdragAndDropTargetModifier لتلقّي البيانات من جلسات السحب والإفلات. (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. يتضمّن Compose الآن إصدارًا خاصًا به منmaximumFlingVelocityينطبق الآن علىDraggable. (Ibf974) - تضيف هذه الإضافة عملية إنشاء أساسية لدعم واجهات برمجة التطبيقات التي تتيح السحب والإفلات على المنصة. (If84ce)
- إضافة
deviceIdإلىRotaryScrollEvent(Iba3bf) - تم تعديل واجهة برمجة التطبيقات
ui-toolingللأجهزة لتشمل الأجهزة الأحدث (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 المرحة والثابتة متاحة. (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) - تضيف هذه السمة Wheel للتمييز بين التمرير باستخدام الماوس والسحب في التمرير المتداخل (في
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الدلالي لاستدعاء إجراء IME على عُقد محرّر النصوص. (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 لتتيح عمليات الترجيع من أجل دعم حالات الاستخدام التي تتضمّن تعديلاً متكررًا على المسار مع إعادة استخدام أسرع. (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 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تأثُّر
AndroidViewبـParentDataModifier(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) - المزيد من أنواع/قيم nullability للدوال المضمّنة/المخفية التي تم إيقافها نهائيًا (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) - أصبحت واجهة برمجة التطبيقات
createFontFamilyResolverثابتة الآن. يمكن استخدام هذا الإعداد لرصد الاستثناءات غير المعالَجة أثناء تحميل الخطوط بشكل غير متزامن. (Ibb481، b/261435386) - أصبحت واجهة برمجة التطبيقات
Font.loadingStrategyثابتة الآن. (I5937c، b/261435386) - أصبحت واجهة برمجة التطبيقات
GoogleFontثابتة الآن. (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إلا بعد انتهاء جميع عمليات معاودة الاتصال بالإطار. يتطابق ذلك مع سلوك Compose عند تشغيله بشكل طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. يجب أن يؤثر ذلك فقط في الرمز الذي يستدعي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للسماح بالتقاط لقطات شاشة في وضع النوافذ المتعددة. ويكون ذلك مفيدًا لاختبارات لقطات الشاشة التي تستخدم النوافذ المنبثقة في Compose. (I169c5)
تحديثات الاعتماديات
- تعتمد واجهة مستخدم Compose و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. سيؤدي ضبط القيمة على Always إلى إنشاء مخزن مؤقت خارج الشاشة، حيث سيتجنّب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 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل الإصدار لاستخدام Profobuf 3.21.8، ما يمنع ظهور تنبيه أمان في
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ذو أداء أعلى) - تحسين توافُق حواف النوافذ
- إتاحة التركيز على لوحات D-Pad ولوحات المفاتيح الخارجية في 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.
المخاطرة
يتوافق هذا التغيير تمامًا مع الإصدارات السابقة، ويهدف إلى التوافق مع الإصدارات القديمة من حيث السلوك الملحوظ قدر الإمكان. ومع ذلك، هناك بعض الأنظمة الفرعية التي لم يتأثر بها هذا التعديل، ومن المحتمل أن يكون السلوك قد تغيّر بطرق لم تغطّها اختباراتنا ولم يتم رصدها وإصلاحها بعد.
يُرجى الترقية إلى هذا الإصدار بحذر. إذا كنت تعتقد أنّ هذا التغيير قد أثّر سلبًا في تجربتك، يُرجى إعلامنا بذلك.
واجهات برمجة التطبيقات التجريبية
تمت إضافة واجهات برمجة تطبيقات تجريبية مختلفة، وكلها مرتبطة بالمفهوم الجديد "عقدة المعدِّل". يتم إنشاء 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لإعداد الخطوط المتغيرة على الأجهزة التي تعمل بالإصدار O+. (I11a9d، b/143703328) - تمت إضافة واجهة برمجة التطبيقات
FontVariationلتحديد الخطوط المتغيرة واستخدامها. (I3c40c، b/143703328) - أصبح الدالة الإنشائية
LineHeightStyle.Alignmentمتاحة الآن للجميع (تجريبية) (I4bbbe، b/235876330) - تم الآن تحديد الفقرة على أنّها expected|actual لكل من Android وأجهزة الكمبيوتر. (Id387e، b/239962983)
- أصبحت الفقرة Interface Paragraph الآن فقرة Interface Paragraph محكمة الإغلاق. لا توجد حالة استخدام لتصنيف الفقرة، وننصحك بالتواصل معنا إذا كان هذا التغيير يؤثر فيك. (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لتضمين اللاحقة "بالملّي ثانية" حيث تكون وحدات الثوابت والمَعلمات المذكورة بالملّي ثانية. (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) - تم تغيير "معاينة Compose" ليتم تخزينها في ملفات الإخراج الثنائية، وذلك للسماح للمطوّرين بكتابة وإعادة استخدام تعليقات توضيحية
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بنفسك.تتضمّن حزمة تطوير البرامج (SDK) الخاصة بنظام التشغيل Android إصدارًا مخصّصًا لأجهزة الكمبيوتر المكتبي، ولكن لا تتوفّر حاليًا أي وظائف تشغيل مخصّصة لأجهزة الكمبيوتر المكتبي.
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وComposeTestRuleComposeUiTest، ما يعني أنّه لا يمكن استدعاء دوال الإضافة على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) - أعاد المعلّمان Paragraph وMultiparagraph ترتيب الوسيطات الموضعية لتكون قبل الوسيطات الاختيارية. (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لتضمين الفاصل العشري تحديدًا في محرر أسلوب الإدخال. (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.setContentIllegalStateExceptionإذا حاولت ضبط المحتوى عندما يكون هناك محتوى بالفعل. (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، ثم استخدام التعليق التوضيحي الذي يتضمّنComposableTargetMarkerبدلاً منComposableTargetمباشرةً. تكون التعليقات التوضيحية القابلة للإنشاء المميّزة بـComposableTargetMarkerمكافئة لـComposbleTargetمع الاسم المؤهّل بالكامل لفئة السمة كمعلَمة مطبِّقة. للاطّلاع على مثال لاستخدامComposableTargetMarker، راجِعanroidx.compose.ui.UiComposable. (I38f11)تتلقّى السمة
Font(resId, ...)الآن loadingStrategy على واجهة برمجة التطبيقات الثابتة. (Ief3d2)أصبحت واجهة برمجة التطبيقات
FontLoadingStrategyالآن واجهة برمجة تطبيقات ثابتة. (I1ee35، b/174162090)إتاحة تحميل الخطوط بشكل غير متزامن في مكوّن Text (I77057 وb/214587005)
إضافة واجهة برمجة تطبيقات Bridge لتحويل
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)
إصلاح الأخطاء
- سيتم الآن إبقاء حقول النص فوق لوحة المفاتيح عند التركيز عليها وإظهار لوحة المفاتيح، وذلك عندما يكون وضع الإدخال السلس
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()للأجهزة القابلة للارتداء التي تحتوي على زر جانبي دوّار (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 بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حدّ أدنى يبلغ 48x48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر على قيمة أصغر. يتوافق ذلك مع سلوك "مكوّنات التصميم المتعدد الأبعاد"، ما يوفّر سلوكًا متسقًا في حال استخدام كلّ من 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مباشرةً. يُرجى العِلم أنّ هذا يعني أنّ عبارات catch التي كانت ترصدExceptionقد ترصد الآنComposeNotIdleException، في حين لم يكن ذلك ممكنًا في السابق. (I9c217)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحرّك مقابض النص عند تغيُّر حالة ظهور محرر أسلوب الإدخال. (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)
المساهمة الخارجية
- Added 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)
- تم تغيير اسم مَعلمة inspectable لتتطابق مع المَعلمة composed (I3a482، b/191017532)
تم تقديم
performTouchInputوTouchInjectionScopeكبديلَين عنperformTouchInputوTouchInjectionScope، ما يمهّد الطريق أمام وسائل إدخال أخرى (مثل الماوس).تتضمّن
TouchInjectionScopeالطرق نفسها التي تتضمّنهاGestureScope، باستثناءmovePointerToوmovePointerByاللتين تمت إعادة تسميتهما إلىupdatePointerToوupdatePointerBy. وجميع الطرق الأخرى هي نفسها.يتشابه سلوك
TouchInjectionScopeمع سلوكGestureScopeبشكل كبير، مع اختلاف بسيط في التفاصيل:- عند إرسال حدث down أثناء تحريك المؤشرات بدون إرسال حدث move (بمعنى آخر، تم استخدام
updatePointerTo()، ولكن ليسmove()، ثم تم استدعاءdown())، كان التنفيذ السابق يقدّم وقت الحدث ويرسل حدث move قبل إرسال حدث down. لا تزال عملية التنفيذ الجديدة ترسل حدث النقل، ولكنّها لا تقدّم وقت الحدث في هذه الحالة المحدّدة. - عند إرسال حدث "رفع" بينما تم تحريك المؤشرات بدون إرسال حدث "تحريك" (كما هو موضح أعلاه)، كان التنفيذ السابق يقدّم وقت الحدث ويرسل حدث "تحريك" قبل إرسال حدث "رفع". لا ينفّذ التنفيذ الجديد أيًا من الإجراءين: لن تظهر المواضع الجديدة للمؤشرات إلا من خلال حدث "التحرير".
أخيرًا، تقدّم السمة
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 التي تفيد في تحديد سلوك الحواف لتأثيرات العرض المستندة إلى التمويه (I7e8ed، b/166927547)
- أصبحت
performScrollToIndexوperformScrollToKeyوhasScrollToIndexActionوhasScrollToKeyActionواجهات برمجة تطبيقات ثابتة الآن (I142ae، b/178483889) - تمت إضافة طريقة اختبار للحصول على الحدود التي تم اقتصاصها. (I6b28e)
إصلاح الأخطاء
- تمت إزالة طريقة isBounded من BlurredEdgeTreatment واستبدالها بالتحقّق بشكل صريح مما إذا كانت مَعلمة الشكل فارغة. (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على "خطأ" لتجاوز هذا السلوك. (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 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على Kotlin
1.5.31
الإصدار 1.0.3
29 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.3. يتضمّن الإصدار 1.0.3 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على Kotlin
1.5.30
الإصدار 1.0.2
1 سبتمبر 2021
تم طرح androidx.compose.ui:ui-*:1.0.2. يتضمّن الإصدار 1.0.2 هذه التعديلات.
تم تعديلها لتتوافق مع إصدار Compose 1.0.2. لا يزال الإصدار 1.0.2 من Compose متوافقًا مع الإصدار 1.5.21 من Kotlin.
الإصدار 1.0.1
4 أغسطس 2021
تم طرح androidx.compose.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 Bumblebee و7.1من "مكوّن Android الإضافي لنظام Gradle". (b/194289155)
الإصدار 1.0.0-rc02
14 يوليو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تتّبع مربّعات الحوار الآن سلوك تحديد الحجم الخاص بالمنصّة. اضبط
usePlatformDefaultWidthعلى "خطأ" لتجاوز هذا السلوك. (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) - تمت إزالة
SemanticsMatcherالتالية: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 نادر في
ComposeRootRegistrytearDownRegistry()(Iddce1)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
هذا هو الإصدار الأول من Compose 1.0.0 Beta.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عملية الاستدعاء 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 composition محلية لاستبدال واجهة 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 للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين تحديد إدخال المؤشر المشترك لإنشاء تبعيات جديدة. (I849cd)
- تمت إعادة تسمية CompositionReference إلى CompositionContext (I53fcb)
- تمت إعادة تسمية Bounds إلى 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 التي تُستخدَم لتعديل قيم الأحمر والأخضر والأزرق للمحتوى المصدر، وتمت إعادة تصميم واجهة برمجة التطبيقات 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 الآن LayoutCoordinates الخاصة بأداة التعديل الرئيسية. سيؤدي ذلك إلى توفير حالات استخدام أكثر اكتمالاً للدالتَين 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 أو أكثر. تم إيقاف الدالتَين 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)
- تم تعديل Velocity لتضمين أجزاء مكوّنة وعمليات رياضية. (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 الآن Flow لحالتها الحالية، ما يتيح تتبُّع نشاطها ونشاط التأثيرات المرتبطة بها. (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 سابقًا. وهي الآن داخلية في وحدة الإنشاء.
تمت إضافة CompositionData وCompositionGroup كبديل لواجهة برمجة التطبيقات ui-tooling لاستخدامها في استخراج معلومات التركيب. هذه الحقول عامة ولكن ليس الغرض منها أن يتم استخدامها خارج واجهة برمجة التطبيقات ui-tooling لأنّها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling (I31a9c).
تمت إعادة تصميم ShaderBrush لإنشاء مثيل تظليل بشكل غير مباشر عند توفّر معلومات تحديد الحجم لبيئة الرسم. ويكون ذلك مفيدًا لتحديد تدرجات لونية تشغل حدود الرسم الكاملة لدالة مركّبة في وقت التكوين، بدون الحاجة إلى تنفيذ عمليات مخصّصة في DrawModifier.
تم إيقاف واجهات برمجة التطبيقات الإنشائية لدالة التدرّج اللوني واستبدالها بطُرق المصنع في عنصر Gradient. (I511fc، b/173066799)
إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed نهائيًا استخدِم LazyColumn وLazyRow بدلاً من ذلك (I5b48c)
إيقاف 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)
- تمت إعادة تسمية "
- تم جعل حقلَي وقت التشغيل والموضع في PointerInputData غير قابلَين للتصغير. (Id468a)
- تضبط السمة MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات التي لا تستخدم Material أن تستخدم AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في التحديد. (I1e6f4، b/139320372، b/139320907)
- تمت إضافة WindowManager.isWindowFocused للتحقّق ممّا إذا كانت نافذة المضيف محل التركيز، وWindowFocusObserver الذي يوفّر معاودة الاتصال onWindowFocusChanged. (I53b2a، b/170932874)
- تم تعديل واجهة برمجة التطبيقات TransformOrigin
لتضمين بنية تفكيك من أجل عرض
pivotFractionXوpivotFractionYكـcomponent1وcomponent2(If43c4، b/173586560) - تمت إضافة فحص lint لتسمية مَعلمات lambda القابلة للإنشاء وموضعها، وذلك للتحقّق من التوافق مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم
childrenكاسم لدالة lambda اللاحقة إلىcontent، وذلك وفقًا لفحص lint والإرشادات. (Iec48e) - تمت إضافة واجهة برمجة تطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث مفتاح. (I50ed9)
- تمت إضافة
Modifier.drawLayer()تحميل زائد جديد. تتلقّى هذه الدالة كتلة lambda في GraphicsLayerScope جديدة تحدّد فيها مَعلمات الطبقة بطريقة تتيح تخطّي إعادة التركيب وإعادة التنسيق عند حدوث تغيير في الحالة. أصبحت DrawLayerModifier داخلية الآن استعدادًا لنقل منطقها إلى طريقة placeable.placeWithLayer() في LayoutModifier (I15e9f، b/173030831) - تم إيقاف Ambients القديمة التي تحمل اللاحقة
Ambient، واستبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك وفقًا لإرشادات Ambients الأخرى وواجهة برمجة التطبيقات Compose. (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 في الدوال القابلة للإنشاء. يتحقّق فحص التدقيق اللغوي هذا من التسمية ونوع الإرجاع والقيمة التلقائية وترتيب المَعلمات للتأكّد من اتّساقها مع إرشادات 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)
- تعديل TextFields لقبول 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)
- تم تقديم عنصر قابل للإنشاء للموارد يعيد التركيب عند تعديل الإعدادات. (I6387c، b/167352819)
- يتطلّب Recomposer الآن CoroutineContext عند الإنشاء (Ic4610)
- تلخيص قيم
zIndexعند تطبيق عدةModifier.zIndex()في السابق، كان الفائز هو الشخص الذي يقدّم العرض الأول. (Ic514c، b/170623936) - تغييرات على التنفيذ الداخلي لـ SlotTable لا يفترض أن تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
- تمت إضافة خيار التصحيح التلقائي للوحة المفاتيح في محرر أسلوب الإدخال (IME) (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 ووالدًا صالحًا للتكوين. أصبح 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 ليصبحا واجهتَين بدلاً من فئتَين مجرّدتَين
- تم إنشاء تنفيذ CanvasDrawScope لـ 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 API إلى CornerRadius للتعبير بشكل أفضل عن طريقة استخدامه في جميع أنحاء Compose. تم تعديل المستندات للإشارة إلى أنّ قيم نصف قطر الزوايا السالبة يتم حصرها عند الصفر. (I130c7، b/168762961)
- تحسين إمكانية التشغيل التفاعلي لنظام التشغيل Android من خلال مواصلة إرسال أحداث MotionEvent إلى عناصر 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 suspending input modifier (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 القديم نهائيًا واستخدام 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)
- أصبح كلّ من Uptime وVelocity الآن من الفئات المضمّنة (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)أصبحت القيود الآن فئة مضمّنة (I88736)
تمت إضافة FocusManager الذي ينقل منطق التركيز الشائع خارج AndroidComposeView (I528ef، b/161487952، b/162206799)
تم تعديل أسماء PointerEventPass لإصدار Alpha. (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 على سمة unicode يمكن استخدامها للحصول على حرف unicode الذي تم إنشاؤه من خلال مجموعة المفاتيح المحدّدة وحالة مفتاح meta (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 بدلاً من ذلك. توفّر الكلمة الأساسية "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) - تم تمرير MotionEvents بالكامل من 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 لتقليل الحمل الزائد
- تم تعديل فئة "المخطّط التفصيلي" لتضمين التعليقات التوضيحية @Immutable
- تم تعديل PathNode لتضمين التعليقات التوضيحية @Immutable لكل تعليمات مسار
- تم تعديل التركيبة الفرعية Vector لإزالة عمليات التحقّق الشرطية المكرّرة من المساواة، لأنّ Compose يتعامل معها
- إيقاف نهائي لطُرق إنشاء كائن Rect المصاحبة واستخدام دوال إنشاء الكائن بدلاً منها
- تم تعديل فئات Brush ومنشئات الدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
- تم تعديل تعداد VertexMode ليكون PascalCase
- تم تعديل طريقة selectPaint في DrawScope لاستبدال مَعلمات ضربات الفرشاة بشكل شرطي في اللوحة إذا تم تغييرها
- تم تعديل الحجم لإضافة واجهة برمجة تطبيقات تفكيك وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدَمة
- تم تعديل استخدام واجهة برمجة التطبيقات BlendMode في Compose لربط BlendModes في إطار عمل Android بأوضاع PorterDuff بشكل سليم استنادًا إلى مستوى واجهة برمجة التطبيقات. تم طرح واجهة برمجة التطبيقات BlendMode#isSupported لتكون بمثابة طلب بحث عن الإمكانات لتحديد ما إذا كان BlendMode متوافقًا مع الجهاز قبل استخدامه. (I0ef42)
- تمت إضافة LazyItemScope إلى المَعلمة itemContent في القوائم الكسولة. توفّر هذه السمة معدِّلات لملء الحد الأقصى لحجم العنصر الرئيسي، ما يحلّ حالة الاستخدام عندما يجب أن يملأ العنصر إطار العرض ولا تعمل السمة 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 تم إنشاؤه من قبل بطريقة مشابهة لطريقة عملها في النشاط أو Fragment (I5fdd1)
تم استبدال استخدام IntPx بـ Int، واستبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
من أجل دمج عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل العرض والارتفاع كقيم عائمة. (Ic0191)
من أجل توحيد عدد الفئات المستخدَمة لتمثيل معلومات تحديد المواقع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. ويوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحتَين x وy الممثّلتَين كقيم عائمة. (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 بوحدات Dp (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.
- تمت إعادة تسمية FillMaxDimension إلى Crop
- تمت إعادة تسمية FillMinDimension إلى Fit
- تغيير اسم "الملاءمة مع الداخل" إلى "الملاءمة مع الداخل" لتكون أكثر ملاءمة
- ImageView.ScaleType equivalents
- تمت إضافة مستندات توضّح أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_CROP، وأنّ Fit المستخدَم مع Alignment.Center يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.FIT_CENTER، وأنّ Inside المستخدَم مع Alignment.Center يحقّق النتيجة نفسها التي يحقّقها ImageView.ScaleType.CENTER_INSIDE.
إتاحة استخدام معدِّلات الرسم مع اللغات من اليمين إلى اليسار (I0aaf9)
تم إصدار واجهة برمجة تطبيقات لتوسيع "طرق عرض Android" من XML. يمكنك الاطّلاع على العرض التوضيحي ViewInCompose لمزيد من التفاصيل. (I42916)
تحسين واجهة برمجة التطبيقات DrawModifier:
- تم إنشاء نطاق المتلقّي للدالة draw() ContentDrawScope
- تمت إزالة جميع المَعلمات من draw()
- تتضمّن DrawScope الواجهة نفسها التي كانت تتضمّنها CanvasScope سابقًا
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تمت إضافة positionInParent وboundsInParent إلى LayoutCoordinates. (Icacdd، b/152735784)
تم ضبط القيم التلقائية لكلّ من DrawLayerModifier وdrawLayer() على clipToBounds وclipToOutline لتكون false. (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 مجموعة بدلاً من خريطة، وتم جعل LayoutCoordinates تنفّذ عامل التشغيل get() بدلاً من ذلك لاسترداد قيمة. يسهّل ذلك على المعدّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدّل. (I0245a)
لم يعُد LayoutCoordinates يتضمّن سمة موضع. لا تكون السمة 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 لدعم الاستعلام عن معلومات البكسل من 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. لن يحتاج معظم مستخدمي Compose إلى تعديل أي رمز نتيجةً لهذا التغيير.
ولإتاحة هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للإنشاء. يتم تحويل دالة مركّبة تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، وتكون المَعلمات الإضافية هي Composer وعدد صحيح "مفتاح" وعدد صحيح لقناع البت يُستخدم لنقل البيانات الوصفية من خلال عمليات الاستدعاء.
تحوّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة مركّبة. ويتم ذلك بدون إضافة حمل زائد اصطناعي إضافي تلقائيًا إلى الدالة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوال.
في ما يلي التغييرات المعروفة والمقصودة في السلوك الناتجة عن ذلك:
- سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها في السابق
- يمكن الآن الاشتراك في التعبيرات القابلة للإنشاء في تعبيرات الوسيطة التلقائية والتعامل معها بشكل صحيح
تضمّنت هذه العملية بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال الرسم البياني لعمليات الاستدعاء إلى الدوال المركّبة الأخرى. سيؤدي ذلك إلى تقليل عمليات المقارنة في وقت التشغيل، وتقليل حجم جدول الفتحات، بالإضافة إلى تخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها سابقًا 2. لم يعُد يتم تخزين المَعلمات التي يتم تحديدها على أنّها "ثابتة" في وقت الترجمة أو مقارنتها في وقت التشغيل. يقلّل ذلك من عدد عمليات المقارنة ويصغّر حجم جدول الفترات الزمنية. 3- يتم استخدام بنية التحكّم في التدفق لنص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول المواضع ويقلّل من الجهد المطلوب من وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والاستقبال غير المستخدَمة للدوال في تحديد ما إذا كان يمكن تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.
كانت معظم التغييرات غير المتوافقة مخصّصة لواجهات برمجة التطبيقات التي يستهدفها المحول البرمجي مباشرةً، ولن يتأثّر الاستخدام العادي لـ Compose بما يلي: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة عمليات التحميل الزائد غير المتغيرة لـ
key. استخدِم الإصدارvarargمن الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي Pivotal نهائيًا. استخدِم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. راجِع مستندات السجلّ و
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)