واجهة مستخدم الإنشاء
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(اطّلِع على مستندات مرجع واجهة برمجة التطبيقات لجميع حِزم Compose)
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
2 يوليو 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
البنية
Compose هي مجموعة من 7 أرقام تعريف لمجموعات Maven ضِمن androidx
. تحتوي كل مجموعة على مجموعة فرعية مستهدَفة من الوظائف، ولكل منها مجموعة خاصة من ملاحظات الإصدار.
يوضّح هذا الجدول المجموعات ويتضمّن روابط لكل مجموعة من ملاحظات الإصدار.
مجموعة | الوصف |
---|---|
compose.animation | إنشاء رسوم متحركة في تطبيقات Jetpack Compose لإثراء تجربة المستخدم |
compose.compiler | تحويل دوال @Composable وتفعيل عمليات التحسين باستخدام مكوّن إضافي لمترجم Kotlin |
compose.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء عناصر نظام التصميم الخاص بك. |
compose.material | يمكنك إنشاء واجهات مستخدم Jetpack Compose باستخدام "مكوّنات Material Design" الجاهزة للاستخدام. هذه هي نقطة الدخول الأعلى مستوى في Compose، وهي مصمَّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة في www.material.io. |
compose.material3 | يمكنك إنشاء واجهات مستخدم Jetpack Compose باستخدام "مكوّنات Material Design 3"، وهي التطوّر التالي في Material Design. يتضمّن الإصدار 3 من Material تصميمات ومكوّنات محدّثة وميزات تخصيص Material You، مثل الألوان الديناميكية، وهو مصمّم ليكون متوافقًا مع الأسلوب المرئي الجديد وواجهة مستخدم النظام في Android 12. |
compose.runtime | الوحدات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي الذي يستهدفه مكوّن Compose الإضافي للمترجم. |
compose.ui | المكوّنات الأساسية لواجهة مستخدم Compose اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال |
تعريف التبعيات
لإضافة تبعية على Compose، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle
لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول العناصر التابعة، يُرجى الاطّلاع على إضافة عناصر تابعة للإنشاء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.9
الإصدار 1.9.0-beta02
2 يوليو 2025
تم طرح androidx.compose.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 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم تغيير
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.8.2 من "مكوّن Android الإضافي لنظام Gradle" كحد أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية 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) - السماح لـ "الكتابة بذكاء" بتفعيل
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) - تمت إضافة
LocalResources
composition 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) - تم تعديل واجهة برمجة التطبيقات Devices في ui-tooling لتشمل أجهزة أحدث. (Ia2ac1)
- إضافة "الجهاز اللوحي في الوضع العمودي" إلى مجموعة أحجام "شاشة المعاينة" لمساعدة المطوّر على مراعاة النوافذ الأكبر (Ia1976)
- إضافة واجهة برمجة تطبيقات لقيمة التتبُّع من أجل وضع علامة على عملية التتبُّع أو تسجيلها مع قيم في نقطة زمنية معيّنة تظهر قيم التتبُّع في Prefetto كمسار جديد يمكن الاطّلاع عليه من خلال المخطط الزمني لعملية التتبُّع. على أجهزة Android، يتم تنفيذها باستخدام
Trace.setCounter
. (Idcf48)
إصلاح الأخطاء
- إصلاح عملية إرسال المراقبين الذين تم تذكّرهم في التركيب القابل للإيقاف المؤقت لتجنُّب إرسال المراقبين الذين تم تذكّرهم أو نسيانهم في عملية التطبيق نفسها (I570b2، b/404645679، b/407931790)
- يمكن الآن ضبط
android:dialogTheme
للتحكّم في خصائص مربّع الحوار عندما تكون قيمةdecorFitsSystemWindows
هي "خطأ" (I7922f، b/246909281) - تم إصلاح الخطأ الذي كان يؤدي إلى إغلاق مربّع الحوار عند رصد أي حدث حركة خارجه. (Ia78fd)
- تتطلّب عمليات التحقّق من أخطاء Compose البرمجية الآن الحدّ الأدنى من إصدار "مكوّن Android الإضافي لنظام Gradle" (AGP) وهو 8.8.2 من سطر الأوامر، والإصدار Ladybug من Android Studio على الأقل للحصول على دعم بيئة التطوير المتكاملة. إذا كنت تستخدم إصدارًا قديمًا من "مكوّن 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
. يمنع ذلك عملية البحث المركّز من اختيار العرض الذي سيتم التركيز عليه. ويكون ذلك مهمًا بشكل خاص عندما يكون لدى محرر أسلوب الإدخال خيار "التالي" حيث قد يحاول التركيز على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 ميزة الإكمال التلقائي الدلالي التي تمت إضافتها حديثًا. تأكَّد من أنّ إصدارَي UI وFoundation اللذين تستخدمهما هما الإصدار 1.8 أو إصدار أحدث، لأنّ التعبئة التلقائية لمكوّنات النص تتطلّب أحدث إصدارات كلا الوحدتَين. لمزيد من التفاصيل حول استخدام واجهة برمجة التطبيقات والأمثلة، يُرجى الرجوع إلى مستندات ميزة "الملء التلقائي" هنا.
- يتوافق الإصدار 1.8 من Compose مع أنواع إضافية من الملاحظات الحسية:
Confirm
وContextClick
وGestureEnd
وGestureThresholdActivate
وReject
وSegmentFrequentTick
وSegmentTick
وToggleOn
وToggleOff
وVirtualKey
. يمكن الوصول إلى هذا الإعداد من خلالLocalHapticFeedback
، ويتوفّر تلقائيًا على أجهزة Android عندما تشير Vibrator API إلى إمكانية استخدام ردود الفعل اللمسية. - أصبحت واجهات برمجة تطبيقات Focus المتعددة ثابتة الآن، بما في ذلك
Modifier.focusRestorer()
وonEnter
وonExit
FocusProperties
(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 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبّب في إعادة إنشاء التركيب عند إزالة العرض المركّز من قائمة كسولة، وذلك عندما تتم إزالة العروض المركّزة المضمّنة في بنية 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) - تم إصلاح العديد من المشاكل المتعلّقة بالتركيز، بما في ذلك الأعطال عند محاولة محرر أسلوب الإدخال التركيز على
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 مع الألوان ذات التدرّج اللوني الواسع وألوان HDR عند التشغيل على Android Q والإصدارات الأحدث (Icd8be، b/379135036)
- سيتم الآن إعادة ضبط خطوط الموارد التي يتعذّر تحميلها تلقائيًا على الخط التلقائي، بدلاً من السلوك السابق الذي كان يعرض استثناءً في القياس. (Ib6a49)
- تم إصلاح مشكلة فقدان التركيز عند فصل
AndroidView
وإعادة ربطه. (I53446) - قبول
requestFocus()
من إجراء تخطيط خارج الحدود (Ia8461)
المساهمة الخارجية
- أضِف
BringIntoViewResponderModifierNode
إلى واجهة المستخدم، ما يوفّر طريقة جديدة لتنفيذ وظيفة "إظهار العنصر في العرض"، كما يسمح بتنفيذها على مستوى النظام الأساسي. (Ia6dd8)
الإصدار 1.8.0-alpha06
13 نوفمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha06
. يحتوي الإصدار 1.8.0-alpha06 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة المعدِّل
stylusHoverIcon
. (Iff20a، b/331289114) - تغيير مدير الملء التلقائي ليكون واجهة (I84914، b/376080755)
- يضيف
requestFocus(FocusDirection)
إلى كلّ منfocusRequester
وFocusTargetModifierNode
للسماح بالتركيز في اتجاه معيّن. (I5d9ec، b/245755256) - تم استبدال
FocusProperties.enter
وFocusProperties.exit
بـonEnter
وonExit
، باستخدام نطاق جهاز استقبال بدلاً من المَعلمةFocusDirection
. (I6e667) - إضافة ميزة الملء التلقائي إلى شريط أدوات النص (Ie6a4c)
- تغييرات واجهة برمجة التطبيقات على
Modifier.focusRestorer()
(I99c03):- تم تغيير اسم المَعلمة إلى "fallback"
- أصبحت المَعلمة الآن
FocusRequester
وليست دالة lambda - أصبحت المَعلمة غير فارغة مع ضبط القيمة التلقائية على "تلقائي"
- إزالة التعليق التوضيحي
@Experimental
من واجهة أداة إدارة الملء التلقائي لا تزال الميزة قيد التطوير لاستهداف هذا الإصدار، ولكننا لا نريد تقديم واجهة برمجة التطبيقات @Expemiental API (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)
المساهمة الخارجية
- يقبل
AlignmentLines
Map
الآن النوعَين المحددينVerticalAlignmentLine
أوHorizontalAlignmentLine
. (I02912) - طريقة
ByteArray.decodeToImageBitmap(): ImageBitmap
جديدة وشائعة (I83c21)
الإصدار 1.8.0-alpha01
4 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.8.0-alpha01
. يحتوي الإصدار 1.8.0-alpha01 على عمليات الدمج هذه.
الإصدار 1.7
الإصدار 1.7.8
12 فبراير 2025
تم طرح androidx.compose.ui:ui-*:1.7.8
. يحتوي الإصدار 1.7.8 على عمليات الدمج هذه.
الإصدار 1.7.7
29 يناير 2025
تم طرح androidx.compose.ui:ui-*:1.7.7
. يحتوي الإصدار 1.7.7 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح
IndexOutOfBoundsException
عند تمريرAnnotatedString
معLinkAnnotation
إلى العنصر القابل للإنشاء Text. (Ic96d2) - تم إصلاح مشكلة انتهاء المهلة في الاختبارات في بعض الحالات النادرة عند استخدام
LinkAnnotation
فيAnnotatedString
. (I04a03)
الإصدار 1.7.6
11 ديسمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.6
. يحتوي الإصدار 1.7.6 على عمليات الدمج هذه.
إصلاح الأخطاء
- كنّا في السابق نعرض خطأً كلّما صادفنا حدثًا رئيسيًا عندما كان نظام التركيز يتضمّن عمليات إبطال معلّقة. نحن الآن نسجّل خطأ بدلاً من ذلك (I7ea0، b/346370327).
- تمت إزالة التعليق التوضيحي التجريبي من
SemanticsPropertyReceiver.invisibleToUser()
. سيتم إيقاف هذه السمة نهائيًا في الإصدار 1.8 واستبدالها بالسمةSemanticsPropertyReceiver.hideFromAccessibility()
. (I448f0، b/376479686) - تم إصلاح مشكلة كانت تمنع
TextField
من العمل بشكل صحيح عند استخدام لوحة مفاتيح POBox اليابانية على بعض أجهزة Sony القديمة. (I94e0e، b/373743376) - تم إصلاح مشكلة متعلّقة بإمكانية الوصول، وهي عدم إعلان
TalkBack
عن inlineContent الخاص بـBasicText
. (I67bcb، b/376479686)
الإصدار 1.7.5
30 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.5
. يحتوي الإصدار 1.7.5 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح المشاكل التي لا يتم فيها عرض الارتفاع والقص بشكلٍ صحيح باستخدام المخططات التفصيلية المخصّصة.
- تم إصلاح مشكلة تعطُّل النص التي تحدث مع
LinkAnnotation
بعرض صفر. (Ic1e2e) - إصلاح إشعار في
Talkback
للزر عند إنشائه كعنصر Text قابل للإنشاء وقابل للنقر (I1f588)
الإصدار 1.7.4
16 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.4
. يحتوي الإصدار 1.7.4 على عمليات الدمج هذه.
الإصدار 1.7.3
2 أكتوبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.3
. يحتوي الإصدار 1.7.3 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى ظهور حدود مقطع فارغة على بعض إصدارات Android عند تحديد مقطع عام للمخطط التفصيلي.
- تم إصلاح الخطأ الذي يحدث عند تفعيل "محرّر طريقة الإدخال" (IME) على "عرض" خارجي واستخدام الإجراء "التالي" لتحديد التركيز على
ComposeView
. يتوافق سلوكclearFocus()
مع سلوك العرض على الإصدارات الأقدم من 28 لواجهة برمجة التطبيقات، حيث يمكن أن يؤديclearFocus()
إلى التركيز على العرض التلقائي. - تم إصلاح مشكلة استخدام
placeOrder
غير صحيح لإبطال صحة البحث المسبق، وبالتالي تم إصلاح حالة حدودية تم فيها تخطّي موضع البحث المسبق.
الإصدار 1.7.2
18 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.2
. يحتوي الإصدار 1.7.2 على عمليات الدمج هذه.
إصلاح الأخطاء
- تحسين أداء معلومات عقدة تسهيل الاستخدام وأحداث الدلالات من خلال إزالة التتبُّع المطوّل (I89156، b/362530618)
- لن يتعطّل
ComposeView
بعد الآن عند تمرير حجم قياس كبير بشكل استثنائي (da5db، b/347036173) - تم إصلاح مشكلة في إمكانية الوصول إلى برامج قراءة الشاشة حيث لم يتم إصدار إشعارات
LiveRegion
على الأزرار. (f66fa7, b/348590026)
الإصدار 1.7.1
10 سبتمبر 2024
- لم يتم إجراء أي تغييرات على عناصر Android. تمت إزالة
-desktop
من العناصر وإضافة-jvmStubs
و-linuxx64Stubs
من العناصر. لا يُفترض استخدام أي من هذه الأهداف، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose.
الإصدار 1.7.0
4 سبتمبر 2024
تم طرح androidx.compose.ui:ui-*:1.7.0
.
التغييرات المهمة منذ الإصدار 1.6.0
يمكنك الاطّلاع على التغييرات المهمة في الإصدار 1.7.0 في مشاركة المدونة هذه.
الإصدار 1.7.0-rc01
21 أغسطس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-rc01
. يحتوي الإصدار 1.7.0-rc01 على عمليات الدمج هذه.
التغييرات البارزة
- تفرض وحدة ui:ui الآن شرط توفّر إصدار 1.7.0-rc01 أو إصدار أحدث من foundation:foundation كحدّ أدنى. يتم فرض ذلك لمعالجة عدم توافق السلوك بين واجهة المستخدم والمكتبة الأساسية في ما يتعلق بتغييرات
NestedScrollSource
التي حدثت في وقت مبكر أثناء الإصدار 1.7.0-alpha01.
الإصدار 1.7.0-beta07
7 أغسطس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta07
. يحتوي الإصدار 1.7.0-beta07 على عمليات الإيداع هذه.
إصلاح الأخطاء
- ستعرض الآن دوال
SemanticsNodeInteraction
إدخال النص ذات الصلةperformTextReplacement
و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
API في عرض البرامج. (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
إلى "تسجيل" لتعكس طريقتَي begin/endRecording في واجهات برمجة التطبيقات المستندة إلى Displaylist، مثلRenderNode
وPicture. - تم تعديل
rememberGraphicsLayer
للاستفادة منrememberObserver
. (I312c1، b/288494724، b/330758155) - تم إيقاف
UrlAnnotation
نهائيًا، لذا يُرجى استخدامLinkAnnotation.Url
بدلاً منها. إذا كنت تستخدم "تحديد نسق المواد"، استخدِم العنصرTextDefaults
لإنشاء التعليق التوضيحي مع تطبيق "تحديد نسق المواد" عليه (I8d180، b/323346545). - تمت إضافة خيار نمط حالة الضغط إلى الروابط النصية بالإضافة إلى النمط العادي ونمط التمرير والتركيز (I5f864، b/139312671)
- تمت إعادة تسمية
String.parseAsHtml
إلىAnnotatedString.Companion.fromHtml
. (I43dcd) - تمت إضافة وسيطات التنسيق (
linkStyle
وfocusedLinkStyle
وhoveredLinkStyle
) وأداة معالجة تفاعلات الروابط إلى الطريقةparseAsHtml
. عند تحليل السلسلة التي تمّت إضافة علامات HTML إليها باستخدام علامات<a>
، ستنشئ الطريقةLinkAnnotation.Url
لكل علامة من هذا النوع وتمرّر عناصر التصميم ومستمع التفاعل مع الروابط إلى كل تعليق توضيحي. (I7c977) - تتلقّى الدالة
LinkAnnotation
الآن وسيطتَي التنسيق المستند إلى الحالة وLinkInteractionListener
. أضِف هذا التعليق التوضيحي إلىAnnotatedString
للحصول على رابط تشعّبي. من خلال تمريرfocusedState
و/أوhoveredState
، يمكنك تحديدconfiguration
المرئي للروابط عند التركيز عليها و/أو التمرير فوقها. (I81ce4، b/139312671) - لم يعُد
ImeOptions.hintLocales
يقبل القيمة الخالية. إذا أردت تمرير قائمة فارغة من اللغات المحلية، يُرجى استخدام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
stub لاستخدام Android L (I1c3b5، b/288494724) - تعديل إطار عمل Compose لعرض
GraphicsContext
composition local بالإضافة إلى تعديل عمليات تنفيذ Owner وDelegateableNode
وdrawWithCache
Modifier لعرض إذن الوصول إلىGraphicsContext
من أجل الوصول المحدود النطاق الذي سيؤدي تلقائيًا إلى تنظيف مثيلاتGraphicsLayer
عند إيقاف Modifiers. (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)
إصلاح الأخطاء
- تمت إضافة تعريف واجهة برمجة التطبيقات
GraphicsLayer
expect/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()
كطريقة للحصول علىModifier.Node
الحاليLayoutCoordinates
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في خاصية بنفسك. (Ia8657) - تم تقديم
DelegatableNode.currentLayoutCoordinates
كطريقة للحصول علىModifier.Node
الحاليLayoutCoordinates
بدون الحاجة إلى إلغاء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
تم إصدار التحديث androidx.compose.ui:ui-*:1.6.1
في 7 فبراير 2024. يحتوي الإصدار 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
وحجم الزخرفة ووظيفة lambda الخاصة بزخرفة السحب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) - سيتم الآن تجاهل أحداث الضغط على مفتاح الجهاز للأزرار التي لم تتلقَّ حدث الضغط في "طريقة العرض Compose" نفسها. (Ib37b4، b/305518328)
- إضافة إمكانية استخدام أداة العرض لإنشاء تدرّج لوني دائري في
ArcLine
(I4d5bb) - نفِّذ الدالتَين equals وhashcode للسمة
PageSize.Fixed
. (Ie3ede، b/300134276) - حلّ مشكلة توافق الرمز الثنائي مع تغيير Window Inset (Iee695)
- إزالة الطبقة الأساسية للمادة من أجل Material3 Chip/Button لأنّ اختبارات الأداء الدقيقة تُظهر أداءً أفضل بدونها. (I55555)
- سيتم الآن استخدام قيمة
TestDispatcher
s التي تم تمريرها كـeffectContext
إلى اختبارات Compose لإنشاء الاختبار وساعات الإطار. (Ia7178)
الإصدار 1.6.0-alpha08
18 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha08
. يحتوي الإصدار 1.6.0-alpha08 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة lambda
onDrawDragShadow
إلىdrawDragDecoration
فيModifier.dragAndDrawSource
، كما تمت إعادة تسمية مَعلمة الحجم إلىdragDecorationSize
فيDragAndDropInfo
. (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) - تم جعل الصف
LoremIpsum
PreviewParameterProvider
صفًا مفتوحًا. (I41bf5 وb/266918816 وb/300116360)
إصلاح الأخطاء
- تستخدم
FontFamilyResolver
الآنDispatchers.Main
لروتينات مشتركة لإدارة ذاكرة التخزين المؤقت. (Ie8dd9) - تزيل
AndroidViewBinding
الآن بشكل متزامن مثيلاتFragment
التي تم تضخيمها من خلال تضمينFragmentContainerView
في التصميم كجزء منonRelease
باستخدامcommitNow
(بدلاً منcommit
التي كانت تستخدمها سابقًا)، وبالتالي إصلاح المشاكل المتعلّقة بطريقة "التعديل المباشر" في استبدال التركيبة عند إجراء تغييرات. (I58fbf)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha07
. يحتوي الإصدار 1.6.0-alpha07 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم تقديم
PlatformTextInputMethodTestOverride
لكتابة اختبارات لمحرّرات النصوص المخصّصة. (Id159b) - تضيف
dragAndDropSource
Modifier لبدء جلسات السحب والإفلات، وdragAndDropTarget
Modifier لتلقّي البيانات من جلسات السحب والإفلات. (Ib7828 وb/286038936) - تمت إضافة مجموعتَي
ColorList
وColorSet
اللتين تتجنّبان عمليات التخصيص. (I744bd) - تمت إضافة العلامة المؤقتة
DisableNonLinearFontScalingInCompose
لإيقاف الضبط غير الخطي لحجم الخط. اضبطDisableNonLinearFontScalingInCompose = true
في اختباراتك إذا كنت بحاجة إلى وقت لتنظيفها. ستتم إزالة هذه العلامة في الإصدار 1.6.0-beta01 من Compose. (Ic9486)
إصلاح الأخطاء
- تحسين تحليل المتجهات القابلة للرسم بتنسيق XML (Ibb015)
الإصدار 1.6.0-alpha06
20 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha06
. يحتوي الإصدار 1.6.0-alpha06 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تحسينات إضافية على رموز Material. (I3e08d)
- تضيف هذه السمة إمكانية التنقّل للأعلى/للأسفل في شجرة المعدِّلات للعثور على عُقد مشابهة. (I2d234)
- تمت إضافة معاودة الاتصال
onRestoreFailed()
إلى المعدِّلfocusRestorer()
(Ie1d43) - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorInt
وFloatRange
وIntRange
وSize
وغير ذلك. (Id65c8، b/290950582) - إضافة
showSystemUi=true
إلى تعريفPreviewScreenSizes
(Ib61d3)
التغييرات في السلوك
- تستخدم ميزة "الكتابة الذكية" الآن ضبطًا غير خطّي لحجم الخط لتحسين إمكانية القراءة وتسهيل الاستخدام. عندما يكون مقياس الخط > %100 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ عادي، ولكن سيزداد حجم النص الكبير قليلاً فقط. بالإضافة إلى ذلك، سيتم تعديل ارتفاعات الأسطر المحدّدة في SP تلقائيًا لتبقى متناسبة مع الارتفاع المقصود بنسبة% 100. يمكنك الاطّلاع على أفضل الممارسات المتعلّقة بتغيير حجم الخط للحصول على مزيد من المعلومات. (I11518)
الإصدار 1.6.0-alpha05
6 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha05
. يحتوي الإصدار 1.6.0-alpha05 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تفعيل ميزة "تصوير المحتوى" في
AndroidComposeViewAccessibilityDelegateCompat
(Ib2969) - يتم تحديد الحد الأقصى لسرعات التحريك السريع في مكوّنات العرض، مثل
ScrollView
وRecyclerView
، عندViewConfiguration.ScaledMaximumFlingVelocity
. يتضمّن تطبيق "إنشاء" الآن إصدارًا خاصًا به منmaximumFlingVelocity
ينطبق الآن علىDraggable
. (Ibf974) - تضيف هذه الإضافة عملية إنشاء أساسية لدعم واجهات برمجة التطبيقات الخاصة بالسحب والإفلات على المنصة. (If84ce)
- إضافة
deviceId
إلىRotaryScrollEvent
(Iba3bf) - تعديل واجهة برمجة التطبيقات
ui-tooling
Devices API لتضمين أجهزة أحدث (Ib25b4)
الإصدار 1.6.0-alpha04
23 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha04
. يحتوي الإصدار 1.6.0-alpha04 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة لإيقاف
ReusableComposition
، ما يؤدي إلى إزالة الملاحظات مع إبقاء العُقد في مكانها. يمكن إعادة تفعيل التجميع الذي تم إيقافه من خلال استدعاءsetContent
. (Ib7f31) - إضافة واجهة
ReusableComposition
لإدارة دورة الحياة وإعادة استخدام التركيبات الفرعية (I812d1، b/252846775) - تمت ترقية
Modifier.focusGroup
إلى واجهات برمجة تطبيقات ثابتة. (I7ffa3) - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorInt
وFloatRange
وIntRange
وSize
وغير ذلك. (I70487، b/290950582) - تم تعديل واجهة برمجة التطبيقات
ColorFilter
لتضمين أنواع فئات فرعية ملموسة من أجل تحسين إمكانية فحص المَعلمات. (I5fe29) - إضافة مكتبة wear-tooling-preview لعرض قائمة بأجهزة Wear OS الصالحة التي يمكن استخدامها لمعاينات واجهة المستخدم (Ib036e)
- تم إنشاء واجهة
FontScalable
للتعامل مع جزء تغيير حجم الخط في واجهة "الكثافة". (I2cf3f)
الإصدار 1.6.0-alpha03
9 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha03
. يحتوي الإصدار 1.6.0-alpha03 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- نوع جديد من انتقالات الدخول/الخروج التي توسّع المحتوى أو تقلّصه استنادًا إلى حجم الحاوية المتحركة أثناء حركة الدخول والخروج أصبحت واجهة
LookaheadScope
Composable ممتعة وثابتة الآن. (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 أخرى إلى Composition الأصلي. يجب عدم استدعاء هذه الدالة مباشرةً، ويتم استخدامها لتفعيل إنشاء واجهات برمجة تطبيقات تجريبية في وقت التشغيل يمكن العثور عليها من الإصدارات المغلفة من أداة الإنشاء، مثلما تفعل وحدة واجهة المستخدم. (I296b9)
- إعادة تصميم واجهة برمجة التطبيقات
PlatformTextInput*
بالكامل (I6c93a وb/274661182 وb/267235947 وb/277380808) - لم يعُد
SoftwareKeyboardController
وLocalSoftwareKeyboardController
ميزتَين تجريبيتَين. أصبحLocalSoftwareKeyboardController
الآنCompositionLocal
مناسبًا أيضًا. (I4c364) - تم إيقاف
LookaheadLayout
وLookaheadLayoutScope
نهائيًا في بعض الإصدارات السابقة، وتمت إزالتهما الآن. واجهات برمجة التطبيقات البديلة هيLookaheadScope
التي يمكنها العمل مع أي تنسيق. (I12ac3) - تمت إضافة
SemanticsNodeInteraction.requestFocus
كطريقة أسهل وأكثر قابلية للاكتشاف لطلب التركيز في الاختبارات. (Ie8722) - إضافة واجهات برمجة تطبيقات تجريبية لتسجيل تأكيدات عامة، لاستخدامها من قِبل أُطر الاختبار في المستقبل (I12d77)
إصلاح الأخطاء
- سيتم الآن تأجيل الاستدعاء الأول
update
لوظيفةAndroidView
إلى حين ربط العرض، بدلاً من تنفيذه عند تطبيق التركيبة التي تقدّمAndroidView
. يحلّ هذا الإصلاح خطأً كان يؤدي إلى عدم إبطال معاودة الاتصالupdate
إذا تم تغيير حالة تمت قراءتها على الفور من خلال تأثير. (Ie9438، b/291094055)
الإصدار 1.6.0-alpha01
21 حزيران (يونيو) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha01
. يحتوي الإصدار 1.6.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
- إتاحة البحث المسبق في
LazyList
يسمح ذلك لـLazyList
في عملية البحث المسبق بتجاوز أي صورة متحركة (مثل صورة متحركة لوضع العناصر،AnimatedVisibility
، وما إلى ذلك) ولاحتساب حجم وموضع البحث المسبق لجميع العناصر الفرعية. بعد تمرير التوقّع، يمكن للأطفال في الفئة العمريةLazyList
تحريك الشخصيات بشكل مستقل عن الواقع كما يظهر في تمرير التوقّع.
تغيير في السلوك: تم ضبط قيمة includeFontPadding على false تلقائيًا في Compose
أصبحت قيمة includeFontPadding
الآن false تلقائيًا (21d806) في Compose.
includeFontPadding
هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة متروكة إضافية أعلى السطر الأول وأسفل السطر الأخير من النص لاستيعاب أي أحرف قد تمتد فوق خطوط الأساس أو تحتها.
سيؤدي تعديل إصدار Compose هذا إلى تغيير طريقة عرض جميع النصوص في واجهة المستخدم من خلال إزالة المساحة المتروكة الإضافية أعلى السطر الأول والأخير من كل نص تعرضه.
واعتمادًا على متطلبات واجهة المستخدم ومقاييس الخطوط التي تستخدمها، يجب أن تكون التغييرات بسيطة. ومع ذلك، قد تواجه عوائق مثل: - تعذُّر إجراء اختبارات لقطات الشاشة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور الأساسية. - النص غير محاذٍ قليلاً. أزِل أي مسافات سالبة مخصّصة أو أضِف مسافة إذا لزم الأمر.
يمكنك الموافقة على includeFontPadding
باستخدام PlatformTextStyle
لكل نص:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
يمكنك تفعيل includeFontPadding
لجميع النصوص من خلال ضبط أنماط Material. يُرجى العِلم أنّ أسماء المَعلمات ستختلف بين الإصدارَين M2 وM3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
يمكنك الاطّلاع على مزيد من المعلومات حول Compose includeFontPadding
في مستندات المطوّرين ومنشور المدونة هذا.
إذا واجهت مشاكل أو أخطاء مرتبطة بهذا التغيير، يمكنك إبلاغنا عن خطأ باستخدام أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- دعم
InputConnection#requestCursorUpdates
(I0c69b) - تمت إضافة
FocusRequester.saveFocusedChild
وFocusRequester.restoreFocusedChild
(Ic557e وb/272302679 وb/275157318) - أضِف النوع
ResourceResolutionException
لتضمين العناصر القابلة للرمي التي يتم طرحها عند محاولة تحميل مواد عرض الصور النقطية مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44 وb/230166331 وb/278424788) - تم تحسين إمكانية الوصول لتعزيز الأداء وعمليات تخصيص الذاكرة. (Iede48)
- تمت إضافة خصائص ودلالات وإجراءات لدعم ترجمة النصوص. (I4a6bc)
- خاصية جديدة في
IntrinsincMeasureScope
وعمليات تنفيذها (مثلMeasureScope
) للإشارة إلى ما إذا كانت عملية القياس الحالية هي عملية بحث مسبق. (I7a812) - تم تعديل واجهة برمجة التطبيقات
DrawScope
لإتاحة إمكانية إعادة استهداف العرض في لوحة عرض مختلفة باستخدام كثافة/اتجاه تخطيط وحجم بديلَين. - تم تعديل
DrawContext
لتوفير إمكانية ضبط الكثافة واتجاه التصميم، بالإضافة إلى إمكانية ضبط لوحة العرض. (Ie1f9b، b/225408150) - تمت إضافة
Paragraph#fillBoundingBoxes
لاحتساب مربّعات الإحاطة بالأحرف. (If30ee) - تمت إضافة مجموعة من
MultiPreviews
الشائعة (Ia5a27)
إصلاح الأخطاء
- تمت إضافة واجهة
FocusTargetModifierNode
يمكن استخدامها لإنشاءFocusTarget
مخصّص. (I9790e) - تمت إعادة تسمية المَعلمات
fallback*
في الدالة الإنشائيةTextMeasurer
إلىdefault*
. (I940a5) - تمت إعادة تسمية "
SemanticsPropertyReceiver.performImeAction
" إلى "onImeAction
" و"SemanticsActions.PerformImeAction
" إلى "OnImeAction
". (I8e841) - تضيف هذه السمة عجلة للتمييز بين التمرير باستخدام الماوس والسحب في التمرير المتداخل (في
NestedScrollConnection
تحديدًا). (Ie57e4) - تمت إضافة واجهة برمجة التطبيقات
asComposePaint
لاستبدالtoComposePaint
لأنّ العنصر الذي يتم عرضه يغلّفandroid.graphics.Paint
الأصلي (I22b4c) - إيقاف
SemanticsProperties.imeAction
نهائيًا واستبداله بمعلَمة جديدة فيSemanticsActions.performImeAction
(I4a587) - تمت إضافة إمكانية التحديد باستخدام الماوس. سيتم توسيع التحديد المستند إلى اللمس بمقدار كلمة، وتصغيره بمقدار حرف. (Ic0c6c، b/180639271)
- تُصدر الآن طرق
Paragraph
التي كانت تُصدرAssertionError
لإزاحات خارج الحدود الخطأIllegalArgumentException
كما تفعلMultiParagraph
. (I549d3، b/243338896)
الإصدار 1.5
الإصدار 1.5.4
18 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.4
. يحتوي الإصدار 1.5.4 على عمليات الإيداع هذه.
الإصدار 1.5.3
4 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.3
. يحتوي الإصدار 1.5.3 على عمليات الإيداع هذه.
إصلاح الأخطاء
- (b/301209788) كان
TextField
في بعض الأحيان يطبّق الأوامر السابقة بشكل غير صحيح عند التركيز على النص وإدخال نص باللغة الكورية، ما يؤدي إلى فقدان بعض الأحرف.
الإصدار 1.5.2
27 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.2
. يحتوي الإصدار 1.5.2 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تمت إضافة حلّ بديل للأعطال التي تحدث عند الوصول إلى واجهة برمجة التطبيقات الخاصة بالتمرير للأعلى أو للأسفل من سلسلة التعليمات في الخلفية.
- إصلاح مشكلة إضافة العُقد غير المرتبطة إلى شجرة الدلالات
الإصدار 1.5.1
6 سبتمبر 2023
تم طرح androidx.compose.ui:ui-*:1.5.1
. يحتوي الإصدار 1.5.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح الحقول النصية الثابتة التي تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة
readOnly
هي "صحيح". تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير قيمةreadOnly
من "صحيح" إلى "خطأ" أثناء التركيز. (I34a19، b/246909589)
الإصدار 1.5.0
9 أغسطس 2023
تم طرح androidx.compose.ui:ui-*:1.5.0
. يحتوي الإصدار 1.5.0 على عمليات الإيداع هذه.
الإصدار 1.5.0-rc01
26 يوليو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-rc01
. يحتوي الإصدار 1.5.0-rc01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح عُطل يحدث عند استخدام
SubcomposeLayout
داخلmovableContentOf()
.
الإصدار 1.5.0-beta03
28 يونيو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta03
. يحتوي الإصدار 1.5.0-beta03 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصّص. (Ifb1d6)
- تم إصلاح مشكلة في عناصر Dialog وPopup القابلة للإنشاء قد تؤدي إلى عدم تغيير حجم النافذة الفرعية على النحو المتوقّع عند استخدام
usePlatformDefaultWidth=true
. (I112ee)
الإصدار 1.5.0-beta02
7 يونيو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta02
. يحتوي الإصدار 1.5.0-beta02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
asComposePaint
لتفعيل استخدام مثيلandroid.graphics.Paint
في Compose
إصلاح الأخطاء
- تمت إضافة واجهة برمجة التطبيقات
asComposePaint
لاستبدالtoComposePaint
لأنّ العنصر الذي يتم عرضه يغلّفandroid.graphics.Paint
الأصلي (I22b4c)
الإصدار 1.5.0-beta01
24 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta01
. يحتوي الإصدار 1.5.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة عمليات التخصيص في إعادة التركيب والصور المتحركة الملوّنة و
AndroidComposeView
(Ib2bfa) - إضافة وظيفة مساعدة
CacheDrawModifierNode()
للسماح بالتفويض (Icf8f9) - نقدّم لك السمة
isLookingAhead
التي يمكن الوصول إليها منMeasureScope
لمراقبة نتائج البحث المسبق والتأثير في عملية الفحص الرئيسية إذا أردت ذلك. (Ibf4c3) - السمة الدلالية الجديدة
traversalIndex
، وهي عدد عائم يُستخدم لإعادة ترتيب العُقد في عملية اجتيازTalkBack
(تأتي القيم الأصغر أولاً). (I9a81b، b/186443263) - إعادة تسمية السمة "الدلالات"
isContainer
إلىisTraversalGroup
(I121f6) - لدى
ColorProducer
الآنoperator fun invoke
بدلاً منproduce
(I4a9a2) - أضِف واجهة برمجة التطبيقات
Path
transform لتطبيق عمليات التحويل الخاصة بالترجمة أو تغيير الحجم أو التدوير على عناصر المسار. (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
لتوفير خوارزميات دمج مختلفة عند رسم نص على لوحة الرسم. (I57508) - أعِد تسمية
Font.MaximumAsyncTimeout
إلىFont.MaximumAsyncTimeoutMillis
. إعادة التسمية فقط (I07af5) - تم تعديل قيم DPI للأجهزة المرجعية
@Preview
(Id6151، b/254528382) - أضِف المَعلمتَين
brush
وalpha
إلىBasicText
للسماح بتحريك النص أو ضبط فرشاة النص بكفاءة. - تحديد أنواع lambda غير المعبأة لكل من Float وDouble وLong وInt وShort في :ui:ui-unit (I6f18d وb/246961787)
إصلاح الأخطاء
- تمت إزالة عمليات تخصيص متعدّدة في تتبُّع سرعة المؤشر (I26bae)
- تقليل عمليات التخصيص في إدارة تخطيط الشاشة وإدخال المؤشر (I5333a)
- تحسين استخدام ذاكرة Vector وعرض الإطارات الأولى (I2f3c6)
- تمت إزالة عمليات التخصيص عند رسم الخطوط والنقاط باستخدام "لوحة الرسم" (I9f535)
- إضافة مستندات لـ
AndroidFont.fontVariationSettings
(I7d9e2)
المساهمة الخارجية
- تحسين الأداء وتقليل عمليات التخصيص في Vector APIs (I906cb)
الإصدار 1.5.0-alpha04
10 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha04
. يحتوي الإصدار 1.5.0-alpha04 على عمليات الإيداع هذه.
الميزات الجديدة
Modifier.Node
تحسينات على التفويض تمت إضافة إمكانية محسّنة للتفويض إلى مثيلاتModifier.Node
أخرى منDelegatingNode
. يمكن إجراء ذلك باستخدام واجهتَي برمجة التطبيقاتdelegate
وundelegate
. قبل هذا التغيير، كان يجب تفويض كل واجهة برمجة تطبيقات من العقدة المفوضة إلى العقدة المفوض إليها بشكل صريح. بعد هذا التغيير، سيتم تفويض واجهات العُقد ضمنيًا ما لم يتم إلغاؤها بشكل صريح باستخدامDelegatingNode
. (67352bc)
تغييرات واجهة برمجة التطبيقات
- تُعرّف هذه السمة
NestedScrollModifierNode
على أنّهاNestedScroll Modifier.Node
يمكن تفويضها. (I69513) - تمت إضافة المَعلمتَين
onReset
وonRelease
إلى العنصر القابل للإنشاءAndroidViewBinding
، ما يطابق العنصر القابل للإنشاءAndroidView
ويتيح إمكانية إعادة استخدام العرض باستخدامViewBinding
. (I00b1e، b/276802519) - تم تعديل واجهة برمجة التطبيقات Compose Path API لتتيح عمليات الترجيع من أجل دعم حالات الاستخدام التي تتضمّن تعديلاً متكررًا على المسار مع إعادة استخدام أسرع. (I7b797)
- تمّت إضافة
TextStyle.merge(...)
محسَّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تم تثبيت العديد من واجهات برمجة التطبيقات الخاصة بالنصوص والتي تتضمّن
Brush
وDrawStyle
وTextMotion
وDrawScope.drawText
وParagraph.paint(Brush)
وMultiParagraph.paint(Brush)
. (I2f740 وb/261581564 وb/261581931 وb/261561245) - تم إيقاف إيقاف
PlatformTextStyle.includeFontPadding
نهائيًا. كانت نيتنا الأصلية هي إزالة الحقل، ولكن تشير الملاحظات إلى أنّ المطوّرين يحتاجون إلى خيار الإعداد هذا. لذلك، تمت إزالة الإيقاف النهائي للحقل (I98e96، b/277703184).
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ظهور لوحة المفاتيح في الحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها باستخدام العنصر القابل للإنشاء
Dialog
. (I82551، b/262140644)
الإصدار 1.5.0-alpha03
19 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha03
. يحتوي الإصدار 1.5.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- السلوك التلقائي الجديد لـ
SubcomposeLayout
فيLookaheadScope
: إنّSubcomposeLayouts
التي لا تحتوي على خانات مشروطة (مثلTabRow
وScaffold
وBoxWithConstraints
وما إلى ذلك) تعمل الآن بشكل جيد مع الرسوم المتحركة التي تتضمّن ميزة "التحميل المسبق".
تغييرات واجهة برمجة التطبيقات
- تتيح قيمة
intermediateMeasurePolicy
التلقائية الجديدة التي تعيد استخدام سياسة القياس من عملية البحث المسبق عمل الأنواع الفرعيةSubcomposeLayout
بدون خانات مشروطة مثلScaffold
وTabRow
وBoxWithConstraints
مع البحث المسبق تلقائيًا. (Id84c8) - لن يحظر أداة إعادة التركيب التي تم إنشاؤها لنافذة Android الآن سوى طلبات
withFrameNanos
بدلاً من جميع عمليات الإنشاء عند تلقّي إشعارON_STOP
. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقّفة ستستمر في إعادة الإنشاء عند حدوث تغييرات في البيانات، ولكن سيتم حظر الرسوم المتحركة أو أي برنامج آخر يستدعيwithFrameNanos
. (Id9e7f، b/240975572) - تغيير
motionEventSpy
إلى الإصدار الثابت (Ic5ec4، b/261560988) - تمت إضافة طريقة
TextRange.constrain
العلنية. (I97912) - لم يعُد
PlatformTextStyle.includeFontPadding
متوقفًا نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة التطبيقات المتوافقة هذه للتبديل إلى الإعدادincludeFontPadding
واختباره على أنّه خطأ. (I98e96، b/277703184)
الإصدار 1.5.0-alpha02
5 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha02
. يحتوي الإصدار 1.5.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- واجهة برمجة التطبيقات الجديدة
SubcomposeLayout
التي تتّبع سياسة إجراء وسيط إضافي للتعامل مع منطق القياس/التنسيق أثناء الرسوم المتحركة المستندة إلى البحث المسبق (I017d3) - أصبحت PointerInput الآن تعمل بشكل غير متزامن وتستخدم Modifier.Node لتحسين الأداء (مزيد من المعلومات عن التغيير الطفيف في السلوك). (15dab9)
- تغيير واجهات برمجة التطبيقات التجريبية إلى واجهات ثابتة باستخدام الأحداث الرئيسية (I9c7d8، b/261566839، b/261567368)
- تغيير واجهات برمجة التطبيقات التجريبية إلى إصدار ثابت في
PointerInputChange
(I1b543 وb/261560988 وb/261565762 وb/261565749) - تضيف هذه السمة طريقة لإنشاء مثيل من
SuspendingPointerInputModifierNode
لتنفيذModifier.Node
أكثر تعقيدًا. (Ic4933) - يمكن الآن فتح
UrlAnnotation
فيAnnotatedString
باستخدام خدمات تسهيل الاستخدام، مثلTalkBack
. (If4d82، b/253292081) - تمت إضافة واجهة برمجة تطبيقات لاعتراض مفاتيح الأجهزة قبل إرسالها إلى لوحة المفاتيح البرمجية (I4f4c6، b/186800395)
- تمت إضافة إجراء
InsertTextAtCursor
الدلالي للحقول النصية. (I11ed5) - ستطلب إجراءات الاختبار المتعلّقة بالنص (مثل
performTextInput
) الآن التركيز مباشرةً، باستخدام إجراء الدلالات، بدلاً من النقر على الحقل. (I6ed05)
إصلاح الأخطاء
- تتطلّب إجراءات الاختبار النصية الآن تفعيل حقول النص. (Iab328)
الإصدار 1.5.0-alpha01
22 مارس 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-alpha01
. يحتوي الإصدار 1.5.0-alpha01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- لم يعُد Modifier.intermediateLayout يتطلّب LookaheadScope صريحًا. يحتوي حظر القياس في intermediateLayout على IntermediateMeasureScope كمستقبِل، ما يوفّر CoroutineScope وLookaheadScope وMeasureScope بشكل ملائم.(Ibe2e5)
- تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد Layout. يتيح ذلك التحكّم مباشرةً في محتوى الطفل في LookaheadScope من خلال MeasurePolicy الخاص بالعنصر الأصل. (Ibe2e5)
- تضيف هذه السمة
Modifier.Node#coroutineScope
للسماح لـ Modifier.Nodes بتشغيل إجراءات روتينية. (I76ef9) - السماح لـ Modifier.Nodes بقراءة CompositionLocals من خلال تنفيذ واجهة CompositionLocalConsumerModifierNode (Ib44df)
- نقل فئة @Deprecated إلى السمة (I882d1)
الإصدار 1.4
الإصدار 1.4.3
3 مايو 2023
تم طرح androidx.compose.ui:ui-*:1.4.3
. يتضمّن الإصدار 1.4.3 عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إمكانية عرض
AndroidView
بشكل صحيح عند استخدامه مع بعض المعدِّلات. (I4dc77، b/274797771) - تم إصلاح خطأ في ميزة "البحث مع التركيز" الثنائية الأبعاد كان يؤثر في
DropDown
القوائم (b/276811828) - تم إصلاح خطأ في خصائص الدخول إلى التركيز المخصّص والخروج منه، والتي لم يتم تشغيلها إلا في المرة الأولى التي تم فيها استدعاء تعبير lambda (b/277234245).
- تم إصلاح مشكلة في نظام التركيز تسبّبت في حدوث تعطُّل أثناء قراءة
focusProperties
. (b/271324781، b/274897776)
الإصدار 1.4.2
19 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.4.2
. يتضمّن الإصدار 1.4.2 عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة استخدام
AndroidView
للمعدِّلات بشكلٍ صحيح، ما قد يؤدي إلى سلوك غير متوقّع وتعطُّل التطبيق. (Ib67ee، b/275919849) - تم إصلاح مشكلة تراجع حيث لم تكن لوحة المفاتيح تظهر للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للإنشاء
Dialog
(I82551، b/262140644)
الإصدار 1.4.1
5 أبريل 2023
تم طرح androidx.compose.ui:ui-*:1.4.1
. يحتوي الإصدار 1.4.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تأثُّر
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
الآن مخزن النص المؤقت باستخدام مسار الرمز نفسه المستخدَم في تعديلات IME ووظائف الاختبار (مثلperformTextReplacement
).SetText
- تستخدم دوال اختبار النصوص
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
لتوفير خوارزميات دمج مختلفة عند رسم نص على لوحة الرسم. (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) - المزيد من أنواع/قيم null للدوال المضمّنة/المخفية التي تم إيقافها نهائيًا (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 UI وCompose Material الآن على الإصدار 2.5.1 من Lifecycle. (I05ab0، b/258038814)
الإصدار 1.4.0-alpha02
9 نوفمبر 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha02
. يحتوي الإصدار 1.4.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم تعديل
GraphicsLayerScope
لعرض الحجم الحالي لـgraphicsLayer
. ويكون ذلك مفيدًا لاحتساب عمليات التحويلgraphicsLayer
كدالة لحجم Composable. (If8c43،b/181387080) - تم تقديم
CompositingStrategy
لتحديد وقت الاستفادة من طبقة تركيب خارج الشاشة لعرض محتوىgraphicsLayer
. تحتفظ السمة Auto بالسلوك التلقائي الذي يستفيد داخليًا من طبقة إذا تم تطبيق قناة ألفا أوRenderEffect/Overscroll
. سيؤدي 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
عالي الأداء) - تحسين توافُق حواف النوافذ
- إتاحة التركيز على لوحات مفاتيح الأجهزة ولوحات الاتجاهات في 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 يقبل قائمة بملفات lambda متعددة قابلة للإنشاء، ما يسمح بمعاملة العناصر القابلة للقياس التي يتم وضعها في ملفات lambda مختلفة بشكل مختلف (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(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
تغيير في السلوك يؤدي إلى حدوث خطأ
تم تقليل الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة إلى 8 وحدات بكسل مستقلة الكثافة.
تم خفض الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة في Compose من 30dp إلى 8dp. يؤثّر هذا التغيير في مربّعات الحوار المخصّصة والنوافذ المنبثقة لكلّ من Material وUI. تم إجراء هذا التغيير للحدّ من خطأ في إمكانية الوصول على إصدارات Android الأقدم من الإصدار S، ولضمان قدرة خدمات تسهيل الاستخدام داخل هذه النوافذ على التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.
لن يؤثّر هذا التغيير فيك إلا إذا كنت بصدد إنشاء تنفيذ مخصّص لمربّع حوار أو نافذة منبثقة مع ضبط مستوى الارتفاع على مستويات أعلى من 8dp. ننصحك بخفض مستوى ارتفاع مربّع الحوار أو النافذة المنبثقة. إذا كنت بحاجة إلى إيقاف هذا السلوك الجديد، يمكنك إنشاء مربّع حوار أو نافذة منبثقة خاصة بك مع ضبط مستوى الارتفاع المطلوب. لا يُنصح بذلك، لأنّ ذلك قد يؤثّر سلبًا في إمكانية الوصول، ويقع على المطوّر مسؤولية ضمان إمكانية التفاعل مع الجزء السفلي من مربّع الحوار أو النافذة المنبثقة وأن يكون قابلاً للقراءة من خلال خدمات تسهيل الاستخدام.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة عدم تعديل
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 الآن واجهة الفقرة المحكمة. لا توجد حالة استخدام لتصنيف الفقرة، وننصحك بالتواصل معنا إذا كان هذا التغيير يؤثر فيك. (If5247، b/239962983)
- تمت إزالة التعليق التوضيحي التجريبي من
PlatformTextStyle
وLineHeightStyle
. (I64bef) - إيقاف
TextInputService.show|hideSoftwareKeyboard
يُرجى استخدامSoftwareKeyboardController
بدلاً من ذلك في رمز التطبيق وTextInputSession
في رمز إدارة محرر أسلوب الإدخال. (I14e4c، b/183448615) - إضافة واجهة برمجة تطبيقات جديدة لأنواع الرسوم المتحركة الحالية (I26179)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذنPOST_NOTIFICATIONS
على الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 1.3.0-alpha02
27 يوليو 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha02
. يحتوي الإصدار 1.3.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة السمة الجديدة
PointerInputChange#pressure
لاسترداد الضغط. (I45a5e، b/205164819) - تمت إضافة
rememberTextMeasurer
لتسهيل إنشاء تكراراتTextMeasurer
وتذكُّرها في عملية الإنشاء. (I8d66e) - تتوافق
Rect
وRoundRect
وMutableRect
الآن مع بنيةin
في Kotlin لاستدعاء الدالةcontains
. (Ie42b0، b/238642990) - إزالة الدوال غير الضرورية من
KeyInjectionScope
، لأنّه يمكن تنفيذها بسهولة باستخدام أجزاء أبسط من واجهة برمجة التطبيقات تشمل الدوال التي تمت إزالتهاpressKeys
وkeysDown
وkeysUp
. (I81d77) - تمت إعادة تصميم أسماء الثوابت والمَعلمات في
KeyInjectionScope
لتضمين اللاحقة "Millis" حيث تكون وحدات الثوابت والمَعلمات المذكورة بالملّي ثانية. (Iabef5) - تمت إضافة الطريقة
toStringForLog()
إلىEditCommand
للمساعدة في تحديد المشاكل وحلّها المتعلّقة بتعديل النصوص. (I53354، b/228862731) - تمت إضافة دالة الإضافة
drawText
إلىDrawScope
لتوفير طريقة لرسم نص متعدد الأنماط على العناصر القابلة للإنشاء والمعدِّلات التي تعمل علىDrawScope
مثلCanvas
وdrawBehind
. (I16a62، b/190787898) - نقدّم واجهة برمجة تطبيقات تجريبية جديدة باسم
TextMeasurer
تتيح احتساب تنسيق نص عشوائي ينتج عنه نتائج مطابقة لنتائجBasicText
، بغض النظر عن وقت تشغيل Compose. (I17101) - إضافة
mapTree
إلىSlotTree.kt
يتيح ذلك للأدوات فحصSlotTree
بدون إنشاء نسخة في الذاكرة أولاً كما تفعل asTree. بالنسبة إلى "أداة فحص التصميم"، يؤدي ذلك إلى تحسين الأداء بمقدار 10 مرّات تقريبًا. (I5e113) - تم تغيير "معاينة الإنشاء" ليتم تخزينها في ملفات الإخراج الثنائية، وذلك للسماح للمطوّرين بكتابة تعليقات توضيحية
MultiPreview
وإعادة استخدامها من المكتبات. (I85699، b/233511976)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChange
إلى أداة التتبُّعVelocity
، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكلٍ صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدَف (Icea9d، b/216582726، b/223440806، b/227709803). - تم إصلاح خطأ NPE الناتج عن
AnnotatedString.toUpperCase
عند توفّر التعليقات التوضيحية. (I0aca2، b/210899140)
الإصدار 1.3.0-alpha01
29 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha01
. يحتوي الإصدار 1.3.0-alpha01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
LookaheadLayout
جديد يتيح إجراء تمريرة بحث مسبق قبل القياس أو التخطيط الفعلي. يسمح ذلك بإجراء عملية حسابية مسبقة للتنسيق عند تغييره، مع السماح للمقياس/التنسيق بعد البحث المسبق باستخدام الحجم/الموضع المحسوب مسبقًا لتحريك الحجم والمواضع نحو الهدف. لا تتوفّرSubcomposeLayouts
بعد، ولكن ستتوفّر في إصدار قادم. (I477f5)- أضِف مَعلمة ألفا اختيارية إلى نكهة "الفرشاة" في
TextStyle
وSpanStyle
لتعديل مستوى التعتيم فيText
بالكامل. (Ic2fac، b/234117635) - تم تقديم نوع التعليق التوضيحي
UrlAnnotation
والطُرق المرتبطة به لتوفير إمكانية استخدام الروابطTalkBack
فيAnnotatedString
. (I1c754، b/231495122) - نقل وظائف الأداة إلى وقت التشغيل (I4f729)
إصلاح الأخطاء
- لا يعرض
TextLayoutResult.getLineForOffset
أي خطأ. (Idc5d6، b/235876324)
المساهمة الخارجية
- تمت إضافة واجهة برمجة تطبيقات جديدة
WindowInfo.keyboardModifiers
لمراقبة حالتها ضمن الدوال القابلة للإنشاء أو من خلال snapshotFlow (Icdb8a)
الإصدار 1.2
الإصدار 1.2.1
10 أغسطس 2022
تم طرح androidx.compose.ui:ui-*:1.2.1
. يحتوي الإصدار 1.2.1 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ nullpointer في أداة الفحص (b/237987764)
- تم إصلاح خطأ في تحويل الفئة أثناء التذكير في "أداة الفحص" (b/235526153)
الإصدار 1.2.0
27 يوليو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0
. يتضمّن الإصدار 1.2.0 عمليات الإيداع هذه.
التغييرات المهمة منذ الإصدار 1.1.0
تحسينات في التنقّل بين العناصر باستخدام التركيز:
- أصبح بإمكانك الآن استخدام ميزة التمرير المستند إلى التركيز في القوائم الكسولة، وذلك باستخدام واجهة برمجة التطبيقات الأساسية الجديدة
BeyondBoundsLayout
- واجهات برمجة تطبيقات جديدة لتخصيص السلوك في
FocusOrder
وFocusProperties
- تحسين السلوك باستخدام لوحة مفاتيح خارجية أو جهاز تحكّم عن بُعد للتلفزيون
- أصبح بإمكانك الآن استخدام ميزة التمرير المستند إلى التركيز في القوائم الكسولة، وذلك باستخدام واجهة برمجة التطبيقات الأساسية الجديدة
واجهات برمجة التطبيقات الجديدة لما يلي:
- إطارات النوافذ
- عناصر أساسية للرسوم المتحركة التي لا تنتهي والتي تعتمد على الإيماءات والتنسيق
GraphicsLayer
، بما في ذلكRenderEffect
إصلاح العديد من الأخطاء وتحسينات في الأداء
الإصدار 1.2.0-rc03
29 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc03
. يحتوي الإصدار 1.2.0-rc03 على عمليات الإيداع هذه.
- لم يتم إجراء أي تغييرات منذ الإصدار 1.2.0-rc02.
الإصدار 1.2.0-rc02
22 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc02
. يحتوي الإصدار 1.2.0-rc02 على عمليات الإيداع هذه.
الإصدار 1.2.0-rc01
15 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- يتم الآن إنشاء الواجهات في مكتبات Compose باستخدام طرق الواجهة التلقائية في الإصدار 8 من حزمة تطوير البرامج (JDK) (I5bcf1).
- تمت إضافة وظائف من الدرجة الأعلى إلى
KeyInjectionScope
لإدخال ضغطات المفاتيح أثناء الضغط مع الاستمرار على مفاتيح أخرى أو تفعيلها. وتشمل هذه الدوالwithKeysDown
وwithKeysToggled
وما إلى ذلك. تمت أيضًا إضافة خصائص للتحقّق مما إذا كان مفتاح وصف معيّن مضغوطًا، على سبيل المثال،isCtrlDown
للتحقّق مما إذا كان أي من مفتاحي التحكّم مضغوطًا. يمكنك الرجوع إلىKeyInjectionScope
للاطّلاع على مستندات حول كل دالة. (I9f6cd, b/229831515) - تم تقديم
OverscrollEffect
تجريبي للسماح بتأثيرات التمرير الزائد المخصّصة، بالإضافة إلى عمليات التحميل الزائدModifier.scrollable
التي تقبلها. - تم نقل
LocalOverScrollConfiguration
التجريبية منfoundation.gesture
إلى حزمة الأساس وإعادة تسميتها إلىLocalOverscrollConfiguration
(If19fb، b/204650733) - إعادة تسمية
runComposeUiTestWithoutActivity {}
إلىrunEmptyComposeUiTest {}
، ما يجعله متوافقًا معcreateEmptyComposeRule()
(I6fed7)
الإصدار 1.2.0-beta03
1 يونيو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta03
. يحتوي الإصدار 1.2.0-beta03 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
pressKeyTimes
وisCapsLockOn
والأصدقاء إلىKeyInjectionScope
. بالإضافة إلى ذلك، تتيح واجهة برمجة التطبيقات الآن أنماط إدخال مجمّعة للماوس ولوحة المفاتيح، مثل النقر على زر الماوس مع الضغط باستمرار على مفتاح meta. (I4c8da، b/229831515) - تمت إضافة دعم تجريبي لإدخال الأحداث الرئيسية. استخدِم
performKeyInput
لإرسال الأحداث الرئيسية، أو أرسِلها من خلال السمةkey
الخاصة بالعنصرMultiModalInjectionScope
أثناء إيماءة إدخال متعددة الوسائط باستخدامperformMultiModalInput
. يمكنك الاطّلاع علىKeyInjectionScope
للحصول على مستندات حول واجهة برمجة التطبيقات. (Ic5000، b/229831515) - أضِف
GoogleFont.Provider.AllFontsListUri
لاسترداد مصدر الإنترنت الأساسي لخدمة Google Fonts المتوافق مع Android. - تحسين رسائل الخطأ التي يتم إعادة طرحها عندما يتعذّر تحميل GoogleFonts في Compose (I0416c)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChange
إلى أداة Velocity Tracker، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكلٍ صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدف (I51ec3 وb/216582726 وb/223440806 وb/227709803). - سيتم الآن تطبيق الإعداد
Show Layout Bounds
على العناصر القابلة للإنشاء فورًا بعد تفعيله أو إيقافه من مربّع الإعدادات السريعة، بدون الحاجة إلى الخروج من النشاط وإعادة الدخول إليه. (I843d5، b/225937688) - لا يؤدي البحث عن سلسلة تسهيل الاستخدام إلى بدء تحميل الخط. في السابق، كان يحاول تحميل الخطوط لـ
StyleSpans
، ما كان يؤدي إلى حدوث أعطال إذا تمت الكتابة فوقFontFamily.Resolver
. (I4609d) - لن يؤدي الضغط على مفتاح الحذف للأمام عندما يكون المؤشر في نهاية حقل نص إلى حدوث عطل.
- تتطلّب الفئتان
DeleteSurroundingTextCommand
وDeleteSurroundingTextInCodePointsCommand
الآن أن تكون وسيطات الدالة الإنشائية غير سالبة. (Ica8e6، b/199919707)
الإصدار 1.2.0-beta02
18 مايو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta02
. يحتوي الإصدار 1.2.0-beta02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- إعادة استخدام الوظائف في أنواع المعاينة الأخرى (I19f39)
إصلاح الأخطاء
- تمت إعادة تسمية
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
إلىDisposeOnDetachedFromWindowOrReleasedFromPool
لتعكس بشكل أفضل الحالات التي يتم فيها التخلص من البيانات، بدلاً من الحالات التي لا يتم فيها التخلص من البيانات. (If15ca)
الإصدار 1.2.0-beta01
11 مايو 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-beta01
. يحتوي الإصدار 1.2.0-beta01 على عمليات الإيداع هذه.
الميزات الجديدة
- هذا هو الإصدار التجريبي الأول من الإصدار 1.2.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
BeyondBoundsInterval
التجريبية التي يمكن استخدامها في عمليات التنفيذ المخصّصة لـLazyList
عند ترتيب العناصر خارج الحدود المرئية (Ifabfb، b/184670295) - أصبحت الإصدارات التي تتضمّن مفتاحًا من
Modifier.composed
واجهة برمجة تطبيقات ثابتة (Ie65e4، b/229988420) - تم تبسيط واجهة برمجة التطبيقات
rememberNestedScrollConnection
لاستخدام متغيرات محلية للتركيب من أجل الحصول على معلومات العرض الحالية (I67ca7) - يمكن الآن استخدام التعليق التوضيحي
@ComposableTarget
والتعليقات التوضيحية التي تحمل العلامة@ComposableTargetMarker
على مستوى الملف باستخدام البادئة@file
. سيؤدي استخدام تعليق توضيحي مستهدَف على مستوى نطاق الملف إلى افتراض أنّ جميع الدوال القابلة للإنشاء في الملف تهدف إلى استهداف أداة التطبيق المرتبطة. على سبيل المثال، يؤدي استخدام@file:UiComposable
إلى الإعلان عن أنّ جميع دوال@Composable
تستهدف أداة تطبيق واجهة المستخدم في Compose. يجب أن توفّر الدالة التي تحتاج إلى استهداف أداة تطبيق أخرى بشكلٍ صريح التعليق التوضيحي الخاص بعلامة الاستهداف لأداة التطبيق المطلوبة. (I40804) تم طرح واجهة برمجة تطبيقات اختبار تجريبية جديدة مستقلة عن النظام الأساسي:
interface ComposeUiTest
وfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
، يمكن استخدامهما لتشغيل اختبارات واجهة مستخدم Compose بدون الحاجة إلىTestRule
. لتنفيذ اختبار بدونComposeTestRule
، مرِّر الاختبار كدالة lambda إلىrunComposeUiTest
، واستخدِم الطرق والعناصر في نطاق جهاز الاستقبالComposeUiTest
، وهي نفسها الموجودة فيComposeContentTestRule
.تتم إضافة
interface AndroidComposeUiTest
وfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
الخاصتَين بنظام التشغيل Android لتوفير إمكانية الوصول إلى النشاط الأساسي، على غرارAndroidComposeTestRule
. للحصول على المزيد من التحكّم، يمكنك إنشاءclass AndroidComposeUiTestEnvironment
بنفسك.إنّ عملية التنفيذ على أجهزة الكمبيوتر المكتبي هي
class DesktopComposeUiTest
، ولكن لا تتوفّر حاليًا أي دوال تشغيل خاصة بأجهزة الكمبيوتر المكتبي.يمكن نقل اختبار من
ComposeTestRule
إلىComposeUiTest
باتّباع الخطوات التالية (مثال على نظام التشغيل Android). من:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
إلى:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
في الوقت الحالي، لا يتم توسيع نطاق
ComposeContentTestRule
وComposeTestRule
منComposeUiTest
، ما يعني أنّه لا يمكن بعد استدعاء دوال الإضافة علىComposeUiTest
في واجهةTestRule
. عندما تنتقلComposeUiTest
إلى واجهة برمجة تطبيقات ثابتة، سيتم تغييرComposeContentTestRule
وComposeTestRule
ليتم تمديدهما منComposeUiTest
. (Ib4e90)تمت إعادة تسمية
LineHeightBehavior
ليصبحLineHeightStyle
تمت إعادة تسمية
LineVerticalAlignment
ليصبحLineHeightStyle.Alignment
تمت إعادة تسمية
LineHeightTrim
إلىLineHeightStyle.Trim
تمت إزالة قيم الدالة الإنشائية التلقائية من
LineHeightStyle
(I582bf، b/181155707)تمت إضافة
Brush
إلىTextStyle
وSpanStyle
لتوفير طريقة لرسم نص بألوان متدرّجة. (I53869، b/187839528)تم تغيير السمتَين
trimFirstLineTop
وtrimLastLineBottom
الخاصتَين بـLineHeightBehavior
إلى تعداد واحد:LineHeightTrim
.LineHeightTrim
لها 4 قيم تحدّدها قيمتان منطقيتان:FirstLineTop
وLastLineBottom
وBoth وNone (Ifc6a5 وb/181155707)تمت إضافة
LineHeightBehavior
إلىTextStyle
وParagraphStyle
. تتحكّمLineHeightBehavior
في ما إذا كان سيتم تطبيق ارتفاع السطر على أعلى السطر الأول وأسفل السطر الأخير. يحدّد هذا العنصر أيضًا محاذاة السطر في المساحة التي يوفّرهاTextStyle(lineHeight)
.على سبيل المثال، يمكن الحصول على سلوك مشابه لما تحدّده CSS من خلال
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.تعمل إعدادات
trimFirstLineTop
وtrimLastLineBottom
بشكل صحيح فقط عندما تكون قيمةincludeFontPadding
هي "خطأ". (I97332، b/181155707)تم تغيير الدالتَين
PlatformParagraphStyle.lerp
وPlatformSpanStyle.lerp
ليصبحا دالتَين من المستوى الأعلى (I9a268)
إصلاح الأخطاء
- توضّح مستندات
PointerInputChange::copy
الآن بشكل صحيح أنّها نسخة سطحية. (I182f5) - إتاحة علامة الحذف الإيجازي عندما يكون الارتفاع محدودًا ولا يتسع لجميع أسطر النص (Ie528c، b/168720622)
- تم تفعيل الإعداد التلقائي
includeFontPadding
. يمكن إيقافincludeFontPadding
باستخدام السمةTextStyle.platformTextStyle
. في المستقبل القريب، سنغيّر السلوك التلقائي، ولكن إلى أن يحين ذلك الوقت، يتيح لنا هذا التغيير دمج تحسينات ارتفاع الأسطر (aosp/2058653) وحلّ مشاكلTextField
الاقتصاص. (I01423، b/171394808)
المساهمة الخارجية
- تم الآن عكس اتجاه التمرير في
MouseInjectionScope.scroll(delta = someDelta)
على أجهزة Android عند التمرير عموديًا (إذا كانت قيمة someDelta موجبة، سيتم التمرير للأسفل) (Ifb697، b/224992993)
الإصدار 1.2.0-alpha08
20 أبريل 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha08
. يحتوي الإصدار 1.2.0-alpha08 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم تصنيف وظائف
pluralStringResource
على أنّها تجريبية من أجل السماح بتطويرها لتوفير دعم أفضل للغة العالمية في المستقبل. (If24e4) - تقبل الآن كلّ من Paragraph و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.setContent
IllegalStateException
إذا حاولت ضبط المحتوى عندما يكون هناك محتوى بالفعل. (I888a5، b/199631334) - تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة منها على جهاز Android. (I06020، b/197769306)
- تحسين عيّنات التمرير في "شريط البحث السريع" (I6a596)
المساهمة الخارجية
- تم تعديلها لاستخدام الإصدار 1.6.0 من Kotlinx coroutines (I3366d)
الإصدار 1.2.0-alpha04
23 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha04
. يحتوي الإصدار 1.2.0-alpha04 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
تمت إضافة
ComposableTarget
وComposableTargetMarker
وComposableOpenTarget
التي تتيح إعداد تقارير في وقت الترجمة عن الحالات التي يتم فيها استدعاء دالة قابلة للإنشاء تستهدف أداة تطبيق لم يتم تصميمها لاستخدامها.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لمترجم Compose، لذا يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً أمرًا نادرًا . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة، أو دوال قابلة للإنشاء مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عامة تكون تعبيرات lambda قابلة للإنشاء (يتم استنتاج المتغيرات والمعلَمات المحلية)، أو عند استخدام
ComposeNode
أو دوال قابلة للإنشاء ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب إضافة التعليق التوضيحي
ComposableTarget
إلى الدوال القابلة للإنشاء التي تستدعيComposeNode
أوReusableComposeNode
، وإلى أي أنواع مَعلمات lambda قابلة للإنشاء. ومع ذلك، يُنصح بإنشاء تعليق توضيحي يتضمّنComposableTargetMarker
، ثم استخدام التعليق التوضيحي الذي يتضمّنComposableTarget
بدلاً منComposableTarget
مباشرةً. تكون التعليقات التوضيحية القابلة للإنشاء المميّزة بـComposableTargetMarker
مكافئة لـComposbleTarget
مع الاسم المؤهّل بالكامل لفئة السمة كالمَعلمة المطبِّقة. للاطّلاع على مثال لاستخدامComposableTargetMarker
، يُرجى الاطّلاع علىanroidx.compose.ui.UiComposable
. (I38f11)تتضمّن السمة
Font(resId, ...)
الآن loadingStrategy في واجهة برمجة التطبيقات الثابتة. (Ief3d2)أصبحت واجهة برمجة التطبيقات
FontLoadingStrategy
الآن واجهة برمجة تطبيقات ثابتة. (I1ee35، b/174162090)إتاحة تحميل الخطوط بشكل غير متزامن في أداة "النص" (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 تنقل حالتها والعُقد المقابلة إلى أي موقع جديد يتم استدعاؤها فيه. عندما تغادر المكالمة السابقة التركيب، يتم الحفاظ على الحالة مؤقتًا، وإذا دخلت مكالمة جديدة إلى التركيب، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. إذا لم تتم إضافة أي مكالمة جديدة، ستتم إزالة الحالة نهائيًا وسيتم إعلام المراقبين المسجّلين.إذا تم استدعاء دالة
movableContentOf
lambda عدة مرات في التركيب نفسه، يتم إنشاء حالة وعُقد جديدة لكل عملية استدعاء، وعندما تغادر عمليات الاستدعاء التركيب وتدخل عمليات استدعاء جديدة، يتم نقل الحالة من عمليات الاستدعاء الأولى التي تغادر إلى عمليات الاستدعاء التي تدخل بالترتيب الذي يتم استدعاؤها به. تتم إزالة جميع الحالات التي لم تتم المطالبة بها من خلال المكالمات الجديدة بشكل نهائي. (Ib4850)يتوفّر
FontFamilyResolver
الآن من خلالLocalFontFamilyResolver.current
تمت إضافة
createFontFamilyResolver(context)
وcreateFontFamilyResolver(context, coroutineScope)
لإنشاء أدوات تحليل جديدة خاصة بـ FontFamily خارج نطاق استخدام Compose.تتلقّى السمتان "فقرة" و"فقرات متعددة" الآن القيمة
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
API لدعم تحميل الخطوط بشكل اختياري وغير متزامن. ولا يُنصح مطوّري التطبيقات باستخدام واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، اطّلِع علىAndroidFont
.تسمح دالة الإضافة
Font.AndroidResourceLoader
بإنشاءFont.ResourceLoader
خارج التركيب.تمت إضافة المَعلمة
loadingStrategy
إلى الخطوط المستندة إلى الموارد، وذلك للسماح بالتحميل غير المتزامن عندما يشير مرجع خط المورد إلى ملف XML للخطوط القابلة للتنزيل. (Ie5aea، b/174162090)تم إيقاف طريقة وضع تصميم
Typeface(FontFamily)
نهائيًا. كانت هذه السمة تُستخدم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك مدة تصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. باستخدام الخطوط القابلة للتنزيل، قد يتم حظر هذا الطلب لمدة 10 ثوانٍ. استخدِمFontFamilyResolver.preload
بدلاً من ذلك.تم إيقاف
fontResource(FontFamily): Typeface
نهائيًا. كانت هذه السمة تُستخدم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك مدة تصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. بدلاً من ذلك، استخدِمFontFamilyResolver.preload
(If8e7c، b/174162090).تم إيقاف طريقة وضع تصميم
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.resolve
returnsState<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()
لأجهزة Wear التي تحتوي على زر جانبي دوّار (I18bf5، b/210748686) - إضافة
View.createLifecycleAwareRecomposer
تجريبية (I0cde6)
المساهمة الخارجية
- تم الآن عكس قيمة
PointerEvent.scrollDelta.y
على أجهزة Android (تعرض الآن القيمة 1 بدلاً من -1 إذا أملنا عجلة الماوس إلى اليمين) (Ia9811)
الإصدار 1.2.0-alpha01
12 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha01
. يحتوي الإصدار 1.2.0-alpha01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
FontFamily.canLoadSynchronously
نهائيًا. لا تحمل هذه السمة أي معنى دلالي. (Ica5ef) - تمت إضافة حقل المعرّف إلى
CompositionData
لإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e) - تمت إضافة أرقام تعريف أجهزة Wear OS إلى قائمة أجهزة المعاينة (I93232)
تحديثات التبعيات
- يعتمد الآن على Kotlin
1.6.10
.
الإصدار 1.1
الإصدار 1.1.1
23 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.1.1
. يحتوي الإصدار 1.1.1 على عمليات الإيداع هذه.
إصلاح الأخطاء
- حلّ المشكلة في
NullPointerException
فيandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059 وb/206677462) - تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة منها على جهاز Android. (I06020، b/197769306)
- تم إصلاح مشكلة عرض النصوص من اليمين إلى اليسار في
LazyVerticalGrid
(aosp/1931080، b/207510535)
الإصدار 1.1.0
9 فبراير 2022
تم طرح androidx.compose.ui:ui-*:1.1.0
. يحتوي الإصدار 1.1.0 على عمليات الإيداع هذه.
التغييرات المهمة منذ الإصدار 1.0.0
- إتاحة تأثير التمرير السريع في Android 12 بشكل ثابت
- تحسينات على حجم مساحة اللمس
- يُرجى العِلم أنّه في ما يتعلّق بالإصدار 1.0 من Compose، ستوسّع مكوّنات Material مساحة التنسيق لتلبية إرشادات تسهيل الاستخدام في Material بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حدّ أدنى يبلغ 48x48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر على قيمة أصغر. يتوافق ذلك مع سلوك "مكوّنات Material Design" نفسه، ما يوفّر سلوكًا متسقًا في حال استخدام كلّ من "طرق العرض" و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 على عمليات الإيداع هذه.
الميزات الجديدة
- تم تعديلها لتكون متوافقة مع Kotlin
1.6.0
تغييرات واجهة برمجة التطبيقات
- إصلاح مشاكل القيم الفارغة في
androidx.core.view
(I7078a، b/204917439) - تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح للمستخدمين استهلاك PointerInputchange ككل أو التحقّق مما إذا كان قد تم استهلاكه أم لا. (I2e59d)
- تضيف هذه السمة إمكانية استخدام عجلة التمرير في الماوس في طبقة واجهة المستخدم. (Ia14eb، b/198214718)
- أضِف عمليات تحميل زائدة تجريبية
Modifier.composed
تقبل المفاتيح للمقارنة من أجل المساواة والتأهّل لتخطّي عمليات التحسين. (Ice799، b/205851704) - تمتد فترة
ComposeNotIdleException
الآن منException
بدلاً منThrowable
مباشرةً. يُرجى العِلم أنّ هذا يعني أنّ عبارات الالتقاط التي كانت تلتقط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)
- تم تغيير اسم مَعلمة العنصر القابل للفحص ليتطابق مع العنصر المركّب (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 على عمليات الإيداع هذه.
الميزات الجديدة
- تم تعديل الإصدار
1.1.0-alpha03
من Compose ليعتمد على الإصدار1.5.30
من Kotlin. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.inspectable
لتضمين معدِّلات أخرى. (I1909b، b/191017532) - تمت إضافة واجهة برمجة التطبيقات
BlurredEdgeTreatment
لتبسيط حالات استخدام التمويه إلى مجموعات أكثر شيوعًا من علامات المقاطع وTileModes. تتضمّن معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي وتطبيق التمويه على المناطق خارج هذه الحدود باستخدام اللون الأسود الشفاف، أو قص المحتوى إلى حدود المحتوى مع أخذ عينات من الحافة الأقرب لنواة التمويه التي تتجاوز حدود المحتوى. (I6b4b7، b/166927547) - تمت إضافة إمكانية استخدام RenderEffect في Compose Desktop. تمت إضافة OffsetEffect بالإضافة إلى أداة تعديل التمويه كطريقة بسيطة لإضافة تأثيرات مرئية للتمويه إلى جزء من التسلسل الهرمي للتصميم. (I0f6aa، b/166927547)
- تم تقديم واجهة برمجة التطبيقات RenderEffect التي يمكن ضبطها اختياريًا على
Modifier.graphicsLayer
لتغيير محتوى الطبقة نفسها. يمكن استخدامها لتشويش محتوى عنصر قابل للإنشاء وعناصر قابلة للإنشاء تابعة ضمن تسلسل هرمي للتركيب. (I47c4d، b/166927547) - يتضمّن AwaitPointerEventScope الآن الدالتَين withTimeout() وwithTimeoutOrNull() (I507f0 وb/179239764 وb/182397793)
- تمت إضافة الحدّ الأدنى لحجم مساحة اللمس إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)
- إضافة إمكانية استخدام TileMode.Decal وهي مفيدة في تحديد سلوك الحواف بالنسبة إلى RenderEffects المستندة إلى التمويه (I7e8ed، b/166927547)
- أصبحت واجهات برمجة التطبيقات
performScrollToIndex
وperformScrollToKey
وhasScrollToIndexAction
وhasScrollToKeyAction
ثابتة الآن (I142ae، b/178483889) - تمت إضافة طريقة اختبار للحصول على الحدود المقتصة. (I6b28e)
إصلاح الأخطاء
- تمت إزالة طريقة isBounded من BlurredEdgeTreatment واستبدالها بالتحقّق بشكل صريح مما إذا كانت مَعلمة الشكل فارغة. (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 Release الرسمية لمزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم الإصدار 4 من Android Studio Bumblebee Canary أو الإصدار
7.1.0-alpha04
/7.1.0-alpha05
من "مكوّن Android الإضافي في Gradle"، قد تواجه الخطأ التالي:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف
build.gradle
. سيتم حلّ هذه المشكلة في الإصدار التالي من Android Studio Bumblebee وAGP7.1
. (b/194289155)
الإصدار 1.0.0-rc02
14 تموز (يوليو) 2021
تم طرح androidx.compose.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) - تتيح لوحة العرض الآن استخدام المَعلمة contentDescription لتسهيل الاستخدام. (Ib547c)
- تمت إعادة تسمية
useDefaultMaxWidth
فيPopupProperties
إلىusePlatformDefaultWidth
. (I05710) - يمكن الآن استخدام عرض الشاشة بالكامل في مربّعات الحوار. (I83929، b/190810877)
- تمت إضافة دعم تجريبي لتمثيلات ألوان HSV وHSL. (Id7cf8، b/180731008)
التغييرات في السلوك
- توفّر أداة Compose
@Preview
الآنLocalActivityResultRegistryOwner
تتيح لك معاينة عناصر Composables التي تستخدم واجهات برمجة تطبيقات مثل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 مطلوب، ما يؤدي إلى تسريع عملية القياس التالية، لأنّه عند محاولة إنشاء SubcomposeLayout باستخدام 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
من التسلسل الهرمي للتأليف. (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)
- تمت إضافة
SemanticsMatcher
s التالية:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
إصلاح الأخطاء
- فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29 وb/174531520)
androidx.compose.ui:ui
لم يعُد يعتمد على AppCompat أو Fragment. إذا كنت تستخدم ComposeView في تطبيقك، وكنت تستخدم Fragment و/أو AppCompat، تأكَّد من استخدام AppCompat 1.3+ أو Fragment 1.3+، فهذه الإصدارات مطلوبة لضبط مالكي مراحل النشاط والحالة المحفوظة اللازمين لـ ComposeView بشكل صحيح. (I1d6fa، b/161814404)- إصلاح المشكلة في
rememberSaveable { mutableStateOf(0) }
عند استخدامه داخل وجهة في Navigation Compose (I1312b وb/180042685 وb/180701630) - تمت إضافة واجهة برمجة تطبيقات جديدة
LocalSoftwareKeyboardController
محلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053) - تم إصلاح خطأ NoSuchElementException نادر في
ComposeRootRegistry
tearDownRegistry()
(Iddce1)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على عمليات الإيداع هذه.
هذا هو الإصدار الأول من الإصدار التجريبي 1.0.0 من Compose.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الاستدعاء onStart إلى
detectDragGestures
(I67269 وb/179995594) - لم تعُد المعدّلات الخاصة بتحديد الحجم حسب الخصائص التجريبية. (I15744)
- تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy، وأصبحت واجهة ممتعة. تم تعديل / تبسيط واجهات برمجة التطبيقات الخاصة بالتصميم لاستخدام MeasurePolicy. (Icab48 وb/167662468 وb/156751158)
- تم استبدال "
InteractionState
" بـ "[Mutable]InteractionSource
"- الواجهات مسؤولة عن إصدار / جمع أحداث التفاعل.
- بدلاً من تمرير
interactionState = remember { InteractionState() }
إلى مكوّنات مثلButton
وModifier.clickable()
، استخدِمinteractionSource = remember { MutableInteractionSource() }
. - بدلاً من:
Interaction.Pressed in interactionState
، يجب استخدام دوال الإضافة في InteractionSource، مثل InteractionSource.collectIsPressedAsState(). - بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة سلسلة التفاعلات. اطّلِع على مستندات InteractionSource وأمثلتها للحصول على مزيد من المعلومات.
- (I85965 وb/152525426 وb/171913923 وb/171710801 وb/174852378)
- إضافة واجهة AccessibilityMananger وLocalAccessibilityMananger في CompositionLocals (I53520)
- تمت إزالة طرق LayoutCoordinates المتوقّفة نهائيًا، واستخدام الدالة بدلاً من السمة لكل من positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755)
- تم استبدال أسماء الأنواع بأنواع أساسية:
- "
ColorStop
" أصبح الآن "Pair<Float, Color>
" -
SpanStyleRange
أصبحت الآن `AnnotatedString.Range - "
ParagraphStyleRange
" أصبح الآن "AnnotatedString.Range<ParagraphStyle>
" - "
StringAnnotation
" أصبح الآن "AnnotatedString.Range<String>
" - (I8dd1a)
- "
- تم إنشاء TextInputSession جديد لجلسات الإدخال من مكوّنات النص ذات المستوى المنخفض، مثل CoreTextField. (I8817f، b/177662148)
- تعرض السمة Placeable الآن السمة measuredSize التي تمثّل الحجم الذي تم قياس تنسيق العنصر الفرعي به فعليًا. قد لا يلتزم هذا الحجم بقيود القياس. (Ib2729 وb/172560206 وb/172338608)
- إضافة معدِّل selectionGroup الذي يتيح وضع علامة على مجموعة من علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
أصبح من الضروري الآن تقديم
defaultFactory
لـcompositionLocalOf
وstaticCompositionLocalOf
بدلاً من أن يكون اختياريًا.يزيل هذا التغيير خطأ محتملاً في النوع بالنسبة إلى الأنواع غير القابلة للتصغير التي لم يتم توفير أي مصنع تلقائي لها. في السابق، كان هذا الإجراء يؤدي إلى توفير مرجع فارغ لنوع غير قابل للتصغير.
بالنسبة إلى الأنواع التي تقبل القيم الخالية، ننصحك بتوفير
{ null }
كإعداد تلقائي للمصنع.لا ننصح باستخدام متغيرات محلية مع أنواع غير قابلة للتصغير إلا إذا كان من الممكن توفير قيمة تلقائية معقولة. إذا لم تكن هناك قيمة تلقائية منطقية، يجب أن تعرض دالة lambda
defaultFactory
استثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستهلكي اللغة المحلية سيكون لديهم اعتماد ضمني على توفيرها، وهو اعتماد لا يفرضه نظام النوع. (Ifbd2a)تمت إزالة الطرق المتوقّفة نهائيًا من وحدات واجهة المستخدم (I646f6)
تمت إعادة تسمية مُعدِّلات الحجم. تمت إعادة تسمية Modifier.width/height/size إلى requiredWidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.preferredWidth/preferredHeight/preferredSize إلى width/height/size. (I5b414)
تمت إزالة
Modifier.tapGestureFilter
. يمكنك استخدامModifier.pointerInput { detectTapGestures(...) }
كبديل. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. الطريقة المقترَحة لتنسيق الاستهلاك الجزئي هي Modifier.nestedScroll. (Ie9c9b)
تم نقل الاتجاه إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)
أصبحت imageResource وvectorResource الآن دالتَين إضافيتَين في فئتَي ImageBitmap وImageVector على التوالي. تم حذف
load{Image,Vector,Font}Resource
دالة. (I89130)تمت إزالة AnimationClockObservable والفئات الفرعية. تمت إزالة AnimatedFloat. (Icde52، b/177457083)
تمت إعادة تسمية Providers إلى CompositionLocalProvider
- لم يعُد منشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة مركّبة ذات مستوى أعلى بدلاً من دالة مركّبة ذات مستوى أعلى.
- تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم تحويل ComposableLambda إلى واجهة بدلاً من فئة ملموسة، ولم يعُد يتضمّن مَعلمات أنواع.
- تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة مجردة، ولم يعُد يتضمّن مَعلمات النوع.
- تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime
- لم يعُد أسلوب الدمج في SnapshotMutationPolicy تجريبيًا
- تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعُد ذلك ضروريًا.
- تمت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد ضرورية.
- تمت إزالة Composer.collectKeySourceInformation. لم يعُد ذلك ضروريًا.
- تمت إزالة الطرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد ضرورية.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى عدم توافق الرمز الثنائي ولكنّه لن يؤدي إلى عدم توافق الرمز المصدر، لذا لن يسبّب مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
تمت إزالة
ComponentActivity.setContent()
من compose:ui. استخدِم الرمز منandroidx.activity:activity-compose:1.3.0-alpha01
. تمت إزالةviewModel()
وLocalViewModelStoreOwner
من compose:ui. استخدِم تلك الواردة منandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)تمت إعادة تصميم Modifier.scrollable. تستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473)
تمت إزالة إمكانية استخدام CustomEvens من PointerInputModifier (I02707، b/175294473)
لم يعُد SnapshotStateObserver تجريبيًا (Id2e6a)
تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)
تمت إزالة longPressGestureFilter وdoubleClickGestureFilter. استخدِم Modifier.pointerInput مع الدوال المساعدة، مثل detectTapGestures (I2fedf وb/175294473).
تمت إزالة واجهة برمجة التطبيقات String.format، وتمت إعادة تصميم الاستخدامات في طرق toString المختلفة لعدم الاستفادة من String.format داخليًا. (Id1290)
إزالة تأكيدات dp (I798d2)
إزالة androidx.compose.runtime:runtime-dispatch (I55feb)
تتحقّق ميزة "الإجراءات التي يمكن تنفيذها على النص" الآن من التركيز تلقائيًا (I13777، b/179648629)
تمت إزالة
runBlockingWithManualClock
(I15cdc، b/179664814)يتم الآن تمثيل موضع التمرير في Modifier.verticalScroll()/horizontalScroll() باستخدام أعداد صحيحة (I81298)
تمت إعادة تسمية FlingConfig إلى FlingBehavior، وتتيح الآن تخصيص الصورة المتحركة الخاصة بالتعليق بدلاً من عمليات التلاشي المحدّدة مسبقًا. (I02b86، b/175294473)
تمت إضافة دالة مساعدة مفيدة لضبط الإجراء نفسه لجميع عمليات ردّ الاتصال ImeAction (I63447 وb/179226323)
تمت إزالة معاودة الاتصال SoftwareKeyboardController من جميع حقول النص، وسيتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
لم يعُد يتم استخدام FontSpan وFontWeigthStyleSpan وتمت إزالتهما. (Ie5b56، b/177423444)
أجرينا التغييرات التالية على Material API:
- تمت إضافة المَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
- تمت إعادة ترتيب المَعلمات في BackdropScaffold لتتوافق مع إرشادات واجهة برمجة التطبيقات بشأن المَعلمات المطلوبة التي تسبق المَعلمات الاختيارية.
- تم نقل المَعلمة
icon
في BottomNavigationItem لتصبح بعدselected
وonClick
. - تمت إعادة تسمية المَعلمة
alwaysShowLabels
في BottomNavigationItem إلىalwaysShowLabel
. - تمت إعادة تسمية مَعلمات
bodyContent
في بعض المكوّنات إلىcontent
فقط. - تمت إعادة ترتيب المَعلمات في
ButtonDefaults.buttonColors()
. يُرجى العِلم أنّه بما أنّ نوع المَعلمات لم يتغيّر، لن يتسبّب ذلك في حدوث خطأ في الرمز. يُرجى التأكّد من أنّك تستخدم مَعلمات مسماة أو تعدّل الترتيب يدويًا، وإلا لن يعمل الرمز بالطريقة نفسها كما كان في السابق. - تمت إضافة المَعلمة
secondaryVariant
إلىdarkColors()
. يكون هذا اللون عادةً هو نفسهsecondary
في "المظهر الداكن"، ولكن تتم إضافته لتحقيق التناسق والمزيد من التخصيص. - تمت إزالة ElevationDefaults وanimateElevation() من مساحة واجهة برمجة التطبيقات العامة لأنّهما لم يكونا مستخدَمَين أو مفيدَين بشكل شائع.
- تمت إعادة تسمية
onValueChangeEnd
فيSlider
إلىonValueChangeFinished
وتم السماح بقيمة فارغة. - تمت إعادة تسمية المَعلمة
text
فيSnackbar
إلىcontent
لضمان الاتساق. - تمت إضافة المَعلمة
contentPadding
إلىDropdownMenuItem
للسماح بتخصيص المساحة المتروكة التلقائية، وتمّت إضافةcontent
كإضافة علىRowScope
. - تمت إعادة تسمية "
ModalDrawerLayout
" إلى "ModalDrawer
". - تمت إعادة تسمية "
BottomDrawerLayout
" إلى "BottomDrawer
". - (I1cc66)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد AnimatedVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملف
<animated-vector>
XML كـ AnimatedImageVector وتحريكه باستخدام painterFor (I8ea91) - تمت إضافة واجهة برمجة تطبيقات جديدة محلية باسم LocalSoftwareKeyboardController للاستبدال بواجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
الإصدار 1.0.0-alpha12
10 شباط (فبراير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha12
. يحتوي الإصدار 1.0.0-alpha12 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمت إزالة الدوال البرمجية القابلة للإنشاء emitView المتوقّفة نهائيًا. (Ifb214)
- يتطلّب Modifier.pointerInput الآن مفاتيح remember للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين pointer input detection المشترك لإنشاء تبعيات جديدة. (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 API المستخدَمة لتعديل قيم الأحمر والأخضر والأزرق للمحتوى المصدر، وتمت إعادة تصميم واجهة برمجة التطبيقات ColorFilter API لتصبح واجهة وتتطابق مع تنفيذ 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 module من ضبط إنشاء 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)
- يمكن الآن الوصول إلى nativeKeyEvent من خلال 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)
- أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الموافقة (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 نهائيًا. تمت إضافة المَعلمة visibleEnd الجديدة إلى TextLayoutResult.getLineEnd. (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 للتأكّد من أنّ دوال إنشاء Modifier معرَّفة كإضافات على Modifier، حتى يمكن ربطها بسلاسة. (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 لتنفيذ تغيير الحجم غير المنتظم من أجل توسيع حدود المصدر لتشغل الوجهة بالكامل.
- تمت إضافة طرق عامل التشغيل لاحتساب مَعلمات 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)
- تم تقديم عنصر Resources القابل للإنشاء الذي يعيد إنشاء نفسه عند تعديل الإعدادات. (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 وCompositionParent صالحًا. أصبح استخدام Explicit Recomposer مطلوبًا في عدد أقل من المواضع. (I4036f)
- إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لتوضيح أنّ واجهة برمجة التطبيقات القابلة للإنشاء تستخدم داخليًا الدالة remember للاحتفاظ بالبيانات على مستوى عمليات الإنشاء. (Ifda43)
- تم تعديل واجهة برمجة التطبيقات Modifier.drawWithCache لإتاحة ContentDrawScope كنطاق مستقبِل بدلاً من DrawScope، وذلك لمنح عمليات التنفيذ القدرة على إعادة ترتيب أوامر الرسم. ويكون ذلك مفيدًا في حالات استخدام المزج/التلوين التي يجب فيها عرض وحدات البكسل الخاصة بالمحتوى أولاً لكي يتم تطبيق خوارزمية وضع المزج المقابل بشكل صحيح. (Ie7ec8)
- نقل SimpleContainer إلى ملف PopupTestUtils.kt (I78c57)
- لم يعُد ConsumedData فئة بيانات. لمزيد من التفاصيل، يُرجى الاطّلاع على https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- تثبيت موضع أداة التحكم في اتجاه الكتابة من اليمين إلى اليسار (I6e1e0)
- إعادة تصميم DrawScope وContentDrawScope ليصبحا واجهتَين بدلاً من فئتَين مجرّدتَين
- تم إنشاء تنفيذ 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 إلى 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)
- معدِّل تجريبي يعلّق معدِّل الإدخال pointerInput (Ia77d2)
- تمت إضافة إجراءات تسهيل الاستخدام للنسخ واللصق والقص (I6db4f)
- تمت إزالة الدالة الإنشائية العامة لفئة AndroidOwner (Iacaef)
- تكتسب النوافذ المنبثقة ومربّعات الحوار الآن قيمة FLAG_SECURE من النافذة الرئيسية. تمت أيضًا إضافة خيار لضبط هذا الإعداد بشكل صريح (I64966 وb/143778148 وb/143778149)
أصبحت بيانات الاستهلاك قابلة للتغيير الآن. بالإضافة إلى ذلك، لم تعُد طلبات الدوال الإضافية التي تنفّذ عملية الاستهلاك تعرض PointerInputChange جديدًا، بل تعدّل PointerInputChange المقدَّم.
هذه هي الخطوة الأولى في عملية من خطوتين تهدف إلى جعل بيانات PointerEvent قابلة للتغيير، بحيث لا يمكن تعديل بيانات المؤشر الأخرى بواسطة رمز المستخدم. ستكون الخطوة الثانية هي إزالة نوع الإرجاع
List<PointerInputChange>
منPointerInputFilter.onPointerEvent(...)
. (Id067e)إيقاف ميزة "تحديد النص"، وعرض توضيحي (Ie7e97)
تحويل Made onGloballyPositioned إلى دالة مضمّنة (I15830)
تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وإعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
تمت إضافة السمة hasPendingMeasureOrLayout إلى Owner، لتحديد ما إذا كان Owner لديه أي عمل تخطيط معلّق. (I3d9f8، b/169038599)
تمت إضافة واجهة برمجة تطبيقات لمحو التركيز آليًا (Ie1dc2، b/161487952)
تمت إزالة
PointerInputFilter.onPointerInput(...)
. يجب استخدامPointerInputFilter.onPointerEvent(...)
بدلاً من ذلك. (I6f04a)التغييرات على الحجم
- تمت إزالة Size.getFlipped
- Removed Size.rem
- Removed Size.truncDiv (Ief44d, b/169790720)
في إطار توحيد قيم الحراسة لفئات مضمّنة، تمت إعادة تسمية Color.Unset إلى Color.Unspecified لتحقيق التناسق مع الفئات المضمّنة الأخرى (I97611 وb/169797763).
تم تقديم TextOverflow.None. عندما تكون قيمة overflow هي None، لن يتعامل عنصر Text مع المحتوى الزائد بعد الآن، وسيُبلغ LayoutNode عن حجمه الفعلي. (I175c9، b/158830170)
تمت إعادة تسمية المَعلمة "النطاق" ضِمن AnnotatedString.Builder.addStringAnnotation إلى "علامة" من أجل اتّساق واجهة برمجة التطبيقات. (I7c8cb)
إصلاح الأخطاء
- تم تحسين أداء التمرير في LazyColumn/Row من خلال تقليل العمل في التركيب الفرعي عند كل تمرير. تمت إضافة طريقة hasInvalidations() جديدة إلى فئة Composition. تمت إعادة تسمية الطريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371).
- تم تعديل معلَمات Size.Unspecified لتصبح Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى الأحجام غير المحدودة. (I95a7e)
- يحدّد ترتيب طلبات place() في التصاميم المخصّصة الآن ترتيب الرسم للعناصر الثانوية (Ibc9f6)
- إتاحة تحويل AnnotatedString إلى SpannableString لتسهيل الاستخدام (Ief907)
- تمت إضافة رموز صورية لفئات Android المتوفّرة على الأنظمة الأساسية القديمة لتجنُّب استخدام الانعكاس قدر الإمكان. (Ia1790)
- تم إصلاح الخطأ التالي: إذا كان ظهور لوحة المفاتيح على الشاشة يتسبّب في ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)
الإصدار 1.0.0-alpha04
1 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha04
. يحتوي الإصدار 1.0.0-alpha04 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة OwnerScope للسماح بجمع نطاقات مراقبة التنسيق والرسم بعد أن تصبح غير صالحة. (Ic4cf8)
- تمت إضافة OnRemeasuredModifier وonSizeChanged() لتلقّي ردّ عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
- إضافة إجراء دلالات النقر مع الاستمرار (I6281b، b/156468846)
- تم ضبط FocusManager على خاص. (I7872f)
تم تعديل التنفيذ لإنشاء تنفيذ DrawCacheModifier مخصّص بدلاً من إضافة خصائص اختيارية إلى DrawModifier.
تم تعديل مستندات طرق مختلفة (Ibd166)
اجعل TextRange مضمّنًا لتجنُّب إنشاء كائن. (Id034b)
لم يعُد من الممكن قراءة PlacementScope#parentWidth وPlacementScope#parentLayoutDirection من موضع الإعلان في تصميم مخصّص. (Icc1ae، b/168295623)
إضافة AccessibilityScrollState إلى خصائص الدلالات (Ifeda9)
تمت إضافة Modifier.drawWithCache لإتاحة إنشاء عنصر رسم يعيد إنشاء التبعيات بشكل مشروط التي تعتمد على معلومات الحجم/الحالة (I376dc)
تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (Ica712)
إصلاح الأخطاء
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة التطبيقات الخاصة بتحويلات تغيير الحجم والتدوير لتستهلك مَعلمة إزاحة واحدة لتمثيل إحداثيات نقطة الارتكاز بدلاً من مَعلمات عائمة منفصلة لإحداثيات س/ص في DrawScope وDrawTransform
- تمت إزالة الطريقتَين Rect.expandToInclude وRect.join
- عدّلنا مستندات "نصف القطر" لتشير إلى الشكل البيضوي بالإضافة إلى الشكل الإهليلجي
- تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء الدالة الإنشائية العامة لفئة Radius المضمّنة مباشرةً، بل يجب إنشاء عناصر Radius من خلال دوالها الإنشائية.
- تمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن topRight وbottomRight وbottomCenter وما إلى ذلك.
- إيقاف Rect.shift نهائيًا واستخدام Rect.translate بدلاً منه
- إزالة واجهتَي برمجة التطبيقات RoundRect.grow وRect.shrink
- تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
- تمت إزالة طرق RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
- تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
- تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
- تم تغيير RoundRect.center ليكون سمة بدلاً من دالة
- تم تعديل الدالة الإنشائية RoundRect لتستهلك خصائص Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y
- تمت إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي افترضت أنّها مستطيل بنقطة بداية عند 0,0
- تمت إضافة واجهة برمجة تطبيقات لتدمير البيانات إلى Radius
- نقلنا العديد من دوال إضافة RoundRect إلى خصائص بدلاً من ذلك
- (I8f5c7، b/168762961)
- تم إيقاف foundation.Box نهائيًا. يُرجى استخدام foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
- تمت إعادة تسمية الحزمة لتصبح Box. سيتم إيقاف Box القديم نهائيًا واستخدام 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 إلى أفقية وعمودية
- تمت إضافة تحميل زائد للداخل يوفّر قيمة الداخل نفسها لجميع الحدود الأربعة
- تمت إزالة المستندات المتعلقة بطريقة الإدراج التي تشير إلى أنّه سيتم تطبيق الإدراج على جميع الجوانب الأربعة
- تعديل المستندات الخاصة بفئة 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.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
. يمكن استخدامها لتحديد سياسة مخصّصة لدمج جميع العناصر الفرعية. تتمثّل السياسة التلقائية في استخدام قيمة العنصر الأصل إذا كانت متوفّرة، وإلا سيتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)أصبحت Constraints الآن فئة مضمّنة (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 بدلاً من ذلك. توفّر الكلمة الأساسية "ثم" إشارة أقوى للترتيب، كما أنّها تحظر كتابة
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 لإزالة عمليات التحقّق الشرطية المكرّرة من المساواة، لأنّ عملية الإنشاء تتعامل معها
- إيقاف نهائي لطُرق إنشاء Rect المصاحبة واستخدام طرق إنشاء الدوال بدلاً منها
- تم تعديل فئات Brush ومنشئات الدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
- تم تعديل تعداد VertexMode ليكون PascalCase
- تم تعديل طريقة selectPaint في DrawScope لتعديل مَعلمات ضربات الفرشاة في الطلاء بشكل مشروط إذا تم تغييرها
- تم تعديل الحجم لإضافة واجهة برمجة تطبيقات تفكيك البنية، وإعادة تسمية UnspecifiedSize إلى Unspecified، وإزالة الطرق غير المستخدَمة
- تم تعديل استخدام واجهة برمجة التطبيقات BlendMode في Compose لربط أوضاع BlendMode في إطار عمل 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
Deprecated Size.copy companion object method favor of instance copy method (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 البرمجية المساعدة للمترجم البرمجي تعترض بشكل غير بسيط على طلبات الدوال الإنشائية داخل دالة @Composable إذا كان هناك (I5205a، b/158123804)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId، وذلك لتجنُّب حدوث أي التباس مع Modifier.testTag. (I995f0)
أصبحت مواضع خط المحاذاة Int التي يتم عرضها من Placeable#get(AlignmentLine) غير فارغة الآن. في حال عدم توفّر خط المحاذاة المطلوب البحث عنه، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)
تمت إضافة مَعلمة معدِّل إلى العنصر القابل للإنشاء AndroidView. (I48a88، b/158746303)
تم إيقاف Semantics() نهائيًا. استخدِم Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)
إضافة دالة viewModel() قابلة للإنشاء تتيح إنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه سابقًا بطريقة مشابهة لطريقة عملها في Activity أو Fragment (I5fdd1)
تم استبدال استخدام IntPx بـ Int، واستبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
من أجل دمج عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من نوع بيانات طويل لتضمين قيمتَين عائمتَين لتمثيل العرض والارتفاع كقيم عائمة. (Ic0191)
من أجل توحيد عدد الفئات المستخدَمة لتمثيل معلومات تحديد المواقع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من نوع بيانات طويل لتعبئة قيمتَين عائمتَين لتمثيل الإزاحتَين 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، وهو تنفيذ لقائمة Material Design. (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 API.
- تمت إعادة تسمية FillMaxDimension إلى Crop
- تمت إعادة تسمية FillMinDimension إلى Fit
- تغيير اسم "تعبئة" إلى "داخل" لتطابق المعنى بشكل أفضل
- القيم المكافئة لـ ImageView.ScaleType
- تمت إضافة مستندات تشير إلى أنّ الجمع بين 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)
تحسينات على مساحة واجهة برمجة التطبيقات الخاصة بالقيود (Constraints) (I0fd15)
تم إنشاء واجهة برمجة التطبيقات CanvasScope التي تتضمّن كائن Canvas لعرض مساحة واجهة برمجة تطبيقات للرسم بدون حالة وبطريقة تعريفية. يتم تضمين عمليات التحويل ضمن نطاق جهاز الاستقبال الخاص بها، كما يتم تحديد نطاق معلومات الحجم ضمن حدود الإدراج المقابلة. ولا يتطلّب ذلك من المستهلك الاحتفاظ بكائن حالة Paint الخاص به لتحديد عمليات الرسم.
- تمت إضافة CanvasScopeSample، كما تم تعديل التطبيق التجريبي ليشمل عرضًا توضيحيًا للرسومات التعريفية (Ifd86d).
تمت إزالة واجهة برمجة التطبيقات MaskFilter غير المستخدَمة لأنّ استخدامها محدود وغير محسّن للاستفادة من تسريع الأجهزة في معظم حالات الاستخدام (I54f76)
تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات Color القابلة للتصغير في واجهة برمجة التطبيقات بأخرى غير قابلة للتصغير، واستخدام Color.Unset بدلاً من القيمة الخالية (Iabaa7)
إضافة مَعلمة rect اختيارية إلى ImagePainter لتتيح رسم قسم فرعي من ImageAsset الأساسي (I0ea9e)
تمت إضافة "لون غير مضبوط" لتمثيل قيمة غير مضبوطة بدون تضمين الألوان. (If901a)
تمت إضافة طريقتَي Canvas.rotate وCanvas.scale إلى الإضافة لاستهلاك إحداثيات نقطة الارتكاز الاختيارية للتحويلات. يتم ضبط هذه القيم تلقائيًا على الزاوية العلوية اليسرى من ترجمة لوحة العرض الحالية.
تم أيضًا نقل Canvas.rotateRad ليكون طريقة إضافة للحفاظ على الاتساق (Ibaca6)
تم إنشاء واجهة برمجة التطبيقات PixelMap API لتتيح الاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)
تمت إعادة تسمية toFrameworkRect/toFrameworkRectF إلى toAndroidRect/toAndroidRectF لتتوافق مع اصطلاح التسمية لعمليات تحويل الكائنات بين Compose وواجهات برمجة التطبيقات لإطار عمل Android التي تم إنشاؤها استنادًا إليها. تم أيضًا تعديل المستندات المتعلقة بواجهات برمجة التطبيقات هذه (I86337)
تمت إضافة واجهة برمجة التطبيقات VectorPainter API لاستبدال واجهة برمجة التطبيقات الحالية الخاصة بالعناصر الفرعية للرسومات المتجهة. نتيجة التركيب الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف الدوال البرمجية السابقة القابلة للإنشاء DrawVector واستبدالها بـ VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) إلى PaintBox(Painter) تم إنشاء عنصر Vector قابل للإنشاء يعمل مثل العنصر Image القابل للإنشاء، ولكن باستخدام VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)
تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وImage القابل للإنشاء القادم والمستخدَم للمشاركة في التنسيق ورسم المحتوى. _Body:تم إنشاء طريقة إضافة Bitmap.asImageAsset() إلى android.graphics.Bitmap لإنشاء مثيل من 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)
- Removed Shader inline class that wrapped the NativeShader expect class Renamed NativeShader to Shader. لم يضِف صف Shader المضمّن أي قيمة إلى مساحة واجهة برمجة التطبيقات، وكان صفًا مضمّنًا، لذا استخدِم صف NativeShader مباشرةً. (I25e4d)
تمت إعادة تصميم PainterModifier كي لا يوفّر بعد الآن إمكانية تغيير الحجم استنادًا إلى القيود المحدّدة ومَعلمة ContentScale. يجب أن تعمل عمليات تنفيذ Painter على تغيير حجم محتوى الرسم بنفسها استنادًا إلى حجم DrawScope الذي يتم الرسم فيه.
تم إصلاح المشكلة التي كان يتم فيها تحديد حجم خريطة البت المخزّنة مؤقتًا في VectorPainter بحجمها التلقائي بدلاً من الحجم المحدّد للرسم.
تم تعديل ImagePainter لتغيير حجم محتواه بدلاً من الاعتماد على PainterModifier لتنفيذ ذلك نيابةً عنه. (I6ba90)
إضافة دالة withFrameNanos ذات المستوى الأعلى لتحديد توقيت الصورة المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِلها بـ @ComposableContract(tracked=false) (Id211e)
تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر القابلة للإنشاء TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
تم إصلاح المشكلة التي كانت تؤدي إلى تعطُّل التطبيق عند إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)
تم إصلاح المشكلة التي كانت تؤدي إلى تعطُّل التطبيق عند إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)
تمت إعادة تصميم فئة Radius لتصبح فئة مضمّنة. تمت إزالة طرق إنشاء العناصر المصاحبة لصالح دالة الإنشاء مع مَعلمة تلقائية لجعل نصف القطر على المحور y مطابقًا لنصف القطر الإلزامي للمَعلمة على المحور x.
تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتَين منفصلتَين من النوع float للنطاق الجغرافي على طول المحورَين x وy (I46d1b)
لم يعُد العنصر Recompose القابل للإنشاء تجريدًا مفيدًا. يجب أن تحدث معظم عمليات إعادة التركيب نتيجة لعمليات تعيين MutableState. بالنسبة إلى أي شيء آخر، ننصحك باستخدام الدالة
invalidate
لتفعيل إعادة إنشاء النطاق الحالي. (Ifc992)استبدال استخدام فئة Px في العديد من فئات Compose كجزء من عملية إعادة البناء الكبيرة للاعتماد فقط على Dp والأنواع الأساسية لمعلمات البكسل (Iede0b)
تغيير استراتيجية إنشاء الرموز البرمجية لمترجم Compose قبل هذا التغيير، كان محرِّر Compose البرمجي يحوّل طلبات الدوال القابلة للإنشاء. من خلال هذا التغيير، أصبحنا الآن نحوّل نص الدالة القابلة للإنشاء ونترك موقع الاستدعاء بدون تغيير (في الغالب).
وهذا يعني أنّ معظم منطق التواصل مع وقت تشغيل Compose يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات الإنشاء. لن يحتاج معظم مستخدمي Compose إلى تعديل أي رمز نتيجةً لهذا التغيير.
ولإتاحة هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للإنشاء. يتم تحويل دالة قابلة للإنشاء تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، وتكون المَعلمات الإضافية هي Composer وعدد صحيح "مفتاح" وعدد صحيح لقناع البت يُستخدَم لنقل البيانات الوصفية من خلال عمليات الاستدعاء.
تحوّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إضافة حمل زائد اصطناعي إضافي تلقائيًا إلى الدالة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوال.
في ما يلي التغييرات المعروفة المقصودة في السلوك الناتجة عن ذلك:
- سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها في السابق
- أصبحت الآن التعبيرات القابلة للإنشاء في تعبيرات الوسيطة التلقائية يتم الاشتراك فيها والتعامل معها بشكل صحيح
تضمّنت هذه العملية بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال الرسم البياني لعمليات الاستدعاء إلى الدوال الأخرى القابلة للإنشاء. سيؤدي ذلك إلى تقليل عدد عمليات المقارنة في وقت التشغيل، وتقليل حجم جدول الفتحة، بالإضافة إلى تخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها سابقًا 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 API اطّلِع على سجلّات
Ambient<T>
ومستنداتها للحصول على التفاصيل (I4c7ee، b/143769776).تم تغيير سلوك TextDirection التلقائي ليتم تحديده حسب LayoutDirection، أي إذا كان LayoutDirection من اليمين إلى اليسار، سيكون TextDirection التلقائي من اليمين إلى اليسار. كانت القيمة السابقة هي TextDirection.ContentOrLtr/Rtl (I4e803)
إصلاح الخطأ: عند تضمين وزن الخط ونمطه في AnnotatedString، لا يتم عرض النص بشكل صحيح. (I77a9d)
تضيف هذه السمة المَعلمات الشائعة الاستخدام إلى دالة Text(). إذا كنت تنشئ حاليًا نمط نص محليًا لتمرير عدد صغير من هذه المَعلمات، مثل Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً: Text(textAlign = TextAlign.Center) (I82768)
تمت إعادة تسمية الوحدة ui-android-text إلى ui-text-android (I68cbe)