إنشاء واجهة المستخدم
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(يمكنك الاطّلاع على المستندات المرجعية لواجهة برمجة التطبيقات لجميع حزم الإنشاء)
آخر تعديل | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | الإصدار الأولي |
---|---|---|---|---|
29 تشرين الثاني (نوفمبر) 2023 | 1.5.4 | - | الإصدار التجريبي 1.6.0-02 | - |
التركيبة
تشتمل ميزة "الإنشاء" على 7 معرّفات مجموعة Maven في androidx
. تحتوي كل مجموعة على مجموعة فرعية مستهدفة من الوظائف، ولكل منها مجموعة خاصة بها من ملاحظات الإصدار.
يشرح هذا الجدول المجموعات والروابط لكل مجموعة من ملاحظات الإصدار.
مجموعة | الوصف |
---|---|
compose.animation | يمكنك إنشاء صور متحركة في تطبيقات Jetpack Compose لتحسين تجربة المستخدم. |
compose.compiler | يمكنك تحويل الدوال @Composable وتفعيل التحسينات باستخدام المكوِّن الإضافي لبرنامج المحول البرمجي بلغة Kotlin. |
compose.foundation | اكتب تطبيقات Jetpack Compose مع الوحدات الأساسية الجاهزة للاستخدام ووسِّع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاصة بك. |
compose.material | يمكنك إنشاء واجهات مستخدم في Jetpack Compose تتضمّن مكونات جاهزة للاستخدام. هذه هي نقطة الدخول ذات المستوى الأعلى في Compose، والتي تم تصميمها لتوفير مكوّنات تتوافق مع تلك الموضّحة في www.material.io. |
compospos.material3 | أنشئ واجهات مستخدم في Jetpack Compose باستخدام مكونات Material Design 3، وهي التطوّر التالي للتصميم المتعدد الأبعاد. يتضمّن Material 3 تصميمات ومكوّنات محدّثة وميزات تخصيص Material You، مثل الألوان الديناميكية، وهي مصممة لتكون متناسقة مع النمط المرئي الجديد في Android 12 وواجهة مستخدم النظام. |
compose.runtime | الوحدات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي للمكوّن الإضافي Compose Compiler لاستهدافه. |
compose.ui | يلزم استخدام المكونات الأساسية لواجهة المستخدم الإنشاء للتفاعل مع الجهاز، بما في ذلك التخطيط والرسم والإدخال. |
تعريف التبعيات
لإضافة تبعية إلى Compose، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven الذي يضم أدوات Google للحصول على مزيد من المعلومات.
أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle
لتطبيقك أو وحدتك:
رائع
dependencies { implementation "androidx.compose.ui:ui:1.5.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.6" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.5.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.6" } kotlinOptions { jvmTarget = "1.8" } }
ولمزيدٍ من المعلومات عن التبعيات، يُرجى الاطّلاع على مقالة إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
راجع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.
الإصدار 1.6
الإصدار 1.6.0-beta02
29 تشرين الثاني (نوفمبر) 2023
تم إصدار "androidx.compose.ui:ui-*:1.6.0-beta02
". يتضمّن الإصدار 1.6.0-beta02 هذه الالتزامات.
الإصدار 1.6.0-beta01
15 تشرين الثاني (نوفمبر) 2023
تم إصدار "androidx.compose.ui:ui-*:1.6.0-beta01
". يتضمّن الإصدار 1.6.0-beta01 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- يستقبل مفتاح التعديل
DragAndDropTarget
الآن وظيفة الاستلامDragAndDropTarget
بشكل صريح، ويحتوي على دالة lambda لتفعيل جلسة السحب والإفلات. تتوفّر الآن وظيفتان على الإعدادات الأصلية لجهاز "DragAndDropModifierNode
". واحد لاستلام عمليات النقل والآخر لنقل البيانات (I69481) - تم تعديل السمة
maximumFlingVelocity
ليتم تمثيلها على أنّها عائمة. تم تعديل المستندات لتكون أكثر وضوحًا بشأن توحيدmaximumFlingVelocity
. (I8adc7) - تمت إعادة تسمية "
onDragAndDropStart
" في مصنع "DragAndDropModifierNode
" ليصبح "acceptDragAndDropTransfer
".تمت إضافة "acceptsDragAndDropTransfer
" إلى "معدِّلdragAndDropTarget
" لقبوله من جلسة سحب وإفلات. تعرِض دالة lambda هذه قيمةDragAndDropTarget
صالحة إذا كانت مهتمة بجلسة سحب وإفلات. وتم استبدال أجهزة lambda أخرى لمعالجة أحداث السحب بهذه الطريقة. وتمت إضافة وظيفة ضبط الإعدادات الأصليةDragAndDropTarget
لتلقّيها من جلسات السحب والإفلات (Iebf3a). تمت إزالة
DragAndDropInfo
كنوعDragAndDropModifierNode.drag
، وهي الآن تأخذ مَعلمات لقيمةtransferData
وحجم الزخارف وسحب الزينةDrawScope
lambdaتحتوي
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) - سيتم الآن تجاهل أحداث "مفتاح الجهاز" للمفاتيح التي لم تتلقَّ حدث "أسفل" في طريقة عرض الإنشاء نفسها. (Ib37b4، b/305518328)
- يجب إضافة توافق العرض مع تدرج العرض في
ArcLine
. (I4d5bb) - نفِّذ عبارة يساوي ورمز التجزئة لـ
PageSize.Fixed
. (Ie3ede، b/300134276) - إصلاح مشكلة التوافق الثنائي عند تغيير إدراج النافذة (Iee695)
- إزالة الطبقة الأساسية لشريحة Material3/الزر لأنّ مقاييس الأداء المصغّرة تظهر أداءً أفضل بدونها. (I55555)
- إنّ المقياس
TestDispatcher
الذي تم اجتيازه بعد إجراء اختباراتeffectContext
لإنشاء المحتوى سيُستخدَم الآن لإنشاء ساعات الاختبار وتحديد الإطارات. (Ia7178)
الإصدار 1.6.0-alpha08
18 تشرين الأول (أكتوبر) 2023
تم إصدار "androidx.compose.ui:ui-*:1.6.0-alpha08
". يحتوي الإصدار 1.6.0-alpha08 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة
Modifier.dragAndDrawSource
lambdaonDrawDragShadow
إلىdrawDragDecoration
، كما تمت إعادة تسمية مَعلمة الحجمDragAndDropInfo
إلىdragDecorationSize
. (Id0e30، b/303904810) - أدخِل
SemanticsNodeInteraction.isDisplayed()
وSemanticsNodeInteraction.isNotDisplayed()
للتحقّق مما إذا كانت العقدة المطابقة مرئية أم لا بدون التأكيد عليها أيضًا. (I2c196، b/302100809) - تم إدخال قيمة
Unspecified
خاصة للحقولTextAlign
وTextDirection
وHyphens
وLineBreak
فيParagraphTextStyle
لاستبدالnull
. بما أنّ هذه الفئات هي فئات مضمّنة، نتجنّب الملاكمة ذات النوع الأساسي من خلال استبدال القيم القابلة للقيم بـ "غير محدّد". تم تعديل الدالّات والمؤشرات والطرق الأخرى في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
لبدء جلسات السحب والإفلات، ومعدِّلdragAndDropTarget
للاستلام من جلسات السحب والإفلات. (Ib7828، b/286038936) - تمت إضافة مجموعتَي
ColorList
وColorSet
التي يتم تجنُّب توزيعها. (I744bd) - تمت إضافة علامة
DisableNonLinearFontScalingInCompose
المؤقتة لإيقاف الضبط غير الخطّي للخط. يمكنك ضبطDisableNonLinearFontScalingInCompose = true
في الاختبارات إذا كنت بحاجة إلى بعض الوقت لحذفها. ستتم إزالة هذه العلامة في الإصدار التجريبي 1.6.0 من 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% في إعدادات النظام، سيزداد حجم النص الصغير بشكل طبيعي، إلا أن النص الكبير بالفعل سيزيد قليلاً. كذلك، سيتم ضبط ارتفاع الأسطر المحددة في مقدِّم الخدمة تلقائيًا حتى تظل متناسبة مع الارتفاع المقصود للمقياس بنسبة 100%. راجع أفضل ممارسات تحجيم الخطوط لمزيد من المعلومات. (I11518)
الإصدار 1.6.0-alpha05
6 أيلول (سبتمبر) 2023
تم إصدار "androidx.compose.ui:ui-*:1.6.0-alpha05
". يحتوي الإصدار 1.6.0-alpha05 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تفعيل تسجيل المحتوى في
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - إنّ سرعة الانتقال في عناصر العرض، مثل
ScrollView
وRecyclerView
، أقصى سرعة عندViewConfiguration.ScaledMaximumFlingVelocity
. تحتوي ميزة Compose الآن على النسخة الخاصة بها منmaximumFlingVelocity
والتي تنطبق الآن علىDraggable
. (Ibf974) - تتم إضافة العملية الأولية لدعم واجهات برمجة التطبيقات للسحب والإفلات في النظام الأساسي. (If84ce)
- إضافة
deviceId
إلىRotaryScrollEvent
(Iba3bf) - تم تحديث واجهة برمجة تطبيقات أجهزة
ui-tooling
لتشمل الأجهزة الأحدث (Ib25b4).
الإصدار 1.6.0-alpha04
23 آب (أغسطس) 2023
تم إصدار "androidx.compose.ui:ui-*:1.6.0-alpha04
". يحتوي الإصدار 1.6.0-alpha04 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة لإيقاف
ReusableComposition
، مع إزالة الملاحظات مع الحفاظ على العُقد في مكانها. يمكنك إعادة تفعيل المقطوعة الموسيقية التي تم إيقافها من خلال الاتصال بالرقمsetContent
. (Ib7f31) - إضافة واجهة
ReusableComposition
لإدارة دورة الحياة وإعادة استخدام التركيبات الفرعية (I812d1، b/252846775) - تمت ترقية
Modifier.focusGroup
إلى واجهات برمجة تطبيقات مستقرة. (I7ffa3) - تمت إضافة تعليقات androidx التوضيحية إلى واجهات برمجة تطبيقات مختلفة للرسومات لتحديد
ColorInt
وFloatRange
وIntRange
وSize
والمزيد. (I70487، b/290950582) - تم تعديل واجهة برمجة التطبيقات
ColorFilter
لتتضمّن أنواع فئات فرعية ملموسة لتحسين إمكانية فحص المعلَمات. (I5fe29) - يمكنك تقديم مكتبة معاينة أدوات Wear لعرض بيانات أجهزة Wear الصالحة التي يمكن استخدامها في معاينات واجهة المستخدم (Ib036e).
- تم إنشاء واجهة
FontScalable
لمعالجة جزء ضبط حجم الخط في واجهة الكثافة. (I2cf3f)
الإصدار 1.6.0-alpha03
9 آب (أغسطس) 2023
تم إصدار "androidx.compose.ui:ui-*:1.6.0-alpha03
". يحتوي الإصدار 1.6.0-alpha03 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- نوع جديد من انتقال الدخول والخروج يعمل على تغيير حجم المحتوى استنادًا إلى حجم الحاوية المتحركة أثناء حركة الدخول والخروج.
LookaheadScope
أصبح بالإمكان إنشاء محتوى ممتع وواجهة ثابتة. (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 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة لمحدِّد موقع الخدمة يمكن تنفيذها من قِبل منفّذي المقطوعة الموسيقية، ما يتيح استخدام مقطوعة موسيقية تتيح للمستخدمين تفويض مستخدم آخر بإجراء عمليات بحث عن المقطوعة الموسيقية الأصلية. لا ينبغي أن يسمى هذا العنوان directy (توجيه) ويستخدمه لتفعيل إنشاء واجهات برمجة تطبيقات تجريبية في وقت التشغيل، والتي يمكن العثور عليها من الإصدارات التي يتم لفّها للمؤلف، كما هو الحال في وحدة واجهة المستخدم. (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 على "خطأ" تلقائيًا في Compose
أصبحت includeFontPadding
الآن "خطأ" تلقائيًا (21d806) في "إنشاء".
includeFontPadding
هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة متروكة إضافية في أعلى السطر الأول والسطر الأخير من النص لاستيعاب أي أحرف قد تمتد فوق أو أسفل الأسس النصية.
سيؤدي تحديث إصدار "إنشاء" هذا إلى تعديل كيفية عرض جميع النصوص في واجهة المستخدم عن طريق إزالة المساحة المتروكة الإضافية أعلى السطر الأول والسطر الأخير من كل نص تعرضه.
بناءً على متطلبات واجهة المستخدم ومقاييس الخط التي تستخدمها، من المفترض أن تكون التغييرات بسيطة. مع ذلك، قد تواجه أدوات حظر مثل: - اختبارات لقطات الشاشة المعطّلة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور الذهبية. - محاذاة النص بشكل غير صحيح قليلاً. أزِل أي مساحات متروكة سالبة مخصّصة أو أضِف مساحة متروكة إذا لزم الأمر.
يمكنك الموافقة على includeFontPadding
باستخدام PlatformTextStyle
لكل نص:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
يمكنك تفعيل "includeFontPadding
" لكل النصوص من خلال ضبط أنماط المواد. يُرجى العلم أنّ أسماء المَعلمات ستختلف بين M2 وM3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
يمكنك العثور على مزيد من المعلومات حول إنشاء 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)
- تم إصلاح مشكلة في عناصر مربّع الحوار والنوافذ المنبثقة، والتي قد تؤدي إلى عدم تغيير حجم النافذة الفرعية على النحو المتوقع عند
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
لتطبيق عمليات التحويل/التحجيم/التناوب على عناصر المسارات. (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) - المزيد من الاستثناءات من قيمة التعداد (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 والمزدوج والطول الطويل وInt وInt وShorts في :ui:ui-unit (I6f18d وb/246961787)
إصلاح الأخطاء
- تمت إزالة عمليات التوزيع المتعددة في تتبُّع سرعة المؤشر (I26bae).
- تقليل عمليات التخصيص في إدارة إدخال المؤشر والمؤشر (I5333a)
- تحسين استخدام ذاكرة المتجه وعرض الإطارات الأولى (I2f3c6)
- تمت إزالة عمليات التوزيع عند رسم الخطوط والنقاط باستخدام لوحة الرسم (I9f535).
- إضافة مستندات عن
AndroidFont.fontVariationSettings
(I7d9e2)
المساهمة الخارجية
- تحسين الأداء وتقليل التوزيعات في واجهات برمجة تطبيقات Vector (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. تحتوي مجموعة القياس في midLayout على IntermediatemeasureScope على دور الاستقبال، وهو ما يوفّر طريقة ملائمة لـ CoroutineScope وLookaheadScope وMeasurementScope.(Ibe2e5)
- تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد تنسيقًا. يسمح هذا الإجراء بالتحكّم مباشرةً في المحتوى الصغير في LookaheadScope، باستخدام سياسة MeasurementPolicy الرئيسية. (Ibe2e5)
- تتم إضافة
Modifier.Node#coroutineScope
للسماح للعقد بتشغيل coroutines. (I76ef9) - السماح لـ Modifier.Nodes بقراءة بيانات AnalyzeLocals من خلال تنفيذ واجهة AnalyzeLocalConsumerModifierNode. (Ib44df)
- نشر فئة موقوفة على الموقع الإلكتروني: (I882d1)
الإصدار 1.4
الإصدار 1.4.3
3 أيار (مايو) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.3
". يتضمّن الإصدار 1.4.3 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في عدم عرض
AndroidView
بشكل صحيح عند استخدامه مع معدِّلات معينة. (I4dc77، b/274797771) - تم إصلاح خطأ في 2D Focus Search الذي أثر في قوائم
DropDown
(b/276811828) - إصلاح خطأ في خصائص الدخول/الخروج من التركيز المخصَّص التي تُشغّل مجموعة الدخول/الخروج فقط في أول مرة تم فيها استدعاء lambda (b/277234245)
- تم إصلاح التراجع في نظام التركيز الذي تسبّب في حدوث عطل أثناء قراءة
focusProperties
. (b/271324781، b/274897776)
الإصدار 1.4.2
19 نيسان (أبريل) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.2
". يتضمّن الإصدار 1.4.2 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثّلة في عدم إعادة استخدام
AndroidView
للمعدِّلات بشكل صحيح، ما قد يؤدي إلى حدوث أعطال وسلوك غير متوقّع. (Ib67ee، b/275919849) - تم إصلاح التراجع الذي لم تكن فيه لوحة المفاتيح تظهر للحقول النصية داخل مربعات الحوار التي لم يتم إنشاؤها بواسطة
Dialog
القابل للإنشاء (I82551، b/262140644)
الإصدار 1.4.1
5 نيسان (أبريل) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.1
". يتضمّن الإصدار 1.4.1 هذه الالتزامات.
إصلاح الأخطاء
- إصلاح مشكلة في
ParentDataModifier
لا تؤثر فيAndroidView
(b/274797771)
الإصدار 1.4.0
22 آذار (مارس) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.0
". يحتوي الإصدار 1.4.0 على هذه الالتزامات.
تغييرات مهمة منذ الإصدار 1.3.0
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainer
جديدة تسمح بتثبيت عناصر القائمة الكسولة حتى لا يتم التخلص منها عند تمريرها خارج الحدود. على سبيل المثال، يستخدمModifier.focusable()
هذه الآلية لتثبيت العنصر محل التركيز حاليًا. (Ib8881 وb/259274257 وb/195049010) - تتم إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة في
Modifier.Node
. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/2515/25184}b/15184}b/92184} - تمت إضافتها في سمة دلالات
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
. ويسمح هذا الإجراء بإعادة استخدام مثيلات العرض عند تجاهل العُقد في المقطوعة الموسيقية وإعادة استخدامها بطريقة متوافقة. ويُعدّ ذلك مفيدًا بشكلٍ خاص لكلّ منLazyRows
وLazyColumns
من المشاهدات. (I3f10d، b/230099236) - تم تقديم واجهة برمجة تطبيقات
PlatformTextInputAdapter
جديدة منخفضة المستوى لإنشاء عمليات تنفيذ إدخال نص مخصَّص تتحدث مباشرةً إلى واجهات برمجة تطبيقات النظام الأساسي. (I58df4)
إصلاح الأخطاء
- سيؤدي إجراء دلالات
SetText
فيBasicTextField
إلى تعديل المخزن المؤقت للنص باستخدام مسار الرمز نفسه المُستخدَم في تحديثات أداة IME ووظائف الاختبار (مثلperformTextReplacement
). - تستخدم دوال اختبار النص
performTextClearance
وperformTextReplacement
وperformTextSelection
الآنSemanticsActions
. (I0807d، b/269633168، b/269624358)
الإصدار 1.4.0-beta02
22 شباط (فبراير) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.0-beta02
". يتضمّن الإصدار 1.4.0-beta02 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة واجهة برمجة التطبيقات
modifierElementOf()
. يُرجى تمديد الفترة منModifierNodeElement
مباشرةً بدلاً من ذلك. (I2256b) - تمت إضافة استدعاء
Modifier.Node.onReset()
جديد يتيح لك إعادة ضبط حالة محلية للتعامل مع الحالة بشكل صحيح عند إعادة استخدامLayout
(على سبيل المثال كعنصرLazyColumn
). تم إصلاحFocusTargetModifierNode
لإعادة ضبط حالة التركيز بشكل صحيح. (I65495، b/265201972) - تمت إضافة المَعلمة
BlendMode
إلى طرقDrawScope.drawText
وParagraph.paint
وMultiParagraph.paint
لإتاحة خوارزميات الدمج المختلفة عند رسم نص على "لوحة الرسم". (I57508)
إصلاح الأخطاء
- تم تحسين خوارزمية ترتيب التركيز في تسهيل الاستخدام، على سبيل المثال، تتم قراءة الأشرطة العلوية/السفلى غالبًا في المقام الأول أو الأخير على التوالي (74e9c5)
الإصدار 1.4.0-beta01
8 شباط (فبراير) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.0-beta01
". يتضمّن الإصدار 1.4.0-beta01 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمّت إعادة تسمية
PinnableContainer.PinnedHandle.unpin()
إلىrelease()
(I4667a). - تمت إضافة
waitUntilNodeCount
وwaitUntilAtLeastOneExists
وwaitUntilExactlyOneExists
وwaitUntilDoesNotExist
كواجهة برمجة تطبيقات تجريبية إلىComposeTestRule
، وتوسيع واجهة برمجة تطبيقاتwaitUntil
لقبول أي مطابقة وأي عدد من العُقد. يُرجى مراجعةComposeTestRule
للحصول على مزيد من المستندات. (Ifa1b9، b/226934294) - إعادة تسمية
Font.MaximumAsyncTimeout
إلىFont.MaximumAsyncTimeoutMillis
. (I07af5) - تمت إزالة
GoogleFont.Provider.AllFontsListUri
ووضع رابط إليه في ktdoc بدلاً من ذلك. (I16f29)
إصلاح الأخطاء
- إضافة مستندات عن
AndroidFont.fontVariationSettings
(I7d9e2)
الإصدار 1.4.0-alpha05
25 كانون الثاني (يناير) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.0-alpha05
". يحتوي الإصدار 1.4.0-alpha05 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم إدخال عمليات تحميل زائدة تجريبية جديدة للدالة
runComposeUiTest
ودوالcreate*ComposeRule
التي تقبل المعلَماتCoroutineContext
. سيتم استخدام السياق للمقطوعة الموسيقية الاختبارية وأي طلبات متعلقة بالسمتَينLaunchedEffect
وrememberCoroutineScope()
في المقطوعة الموسيقية. (I10614، b/265177763) - إضافة واجهة برمجة تطبيقات جديدة لتتبّع السرعة ثلاثية الأبعاد (If5a82)
- تم الآن وضع علامة
@Stable
علىFocusRequester
. (I580ee) - أزِل تعليقًا توضيحيًا تجريبيًا من الدالة الإنشائية
DialogProperties
التي تأخذ المعلَمةusePlatformDefaultWidth
. (Ic4048) - تمت إضافة دالة إلى موضع الحساب وظل الزاوية على مسافة على مسار ما - بـ
PathMeasure.getPosition()
وPathMeasure.getTangent()
(I3b47c). - تمت إزالة الإعدادات العامة التي تم الكشف عنها عن طريق الخطأ في
PlatformParagraphStyle
. (I07f47) - المزيد من نوع/قابلية إبطال الدوال المضمنة/التي تم إيقافها نهائيًا (I24f91)
- أضِف
AnnotatedString.hasStringAnnotations
إلى طلب البحث عن التعليقات التوضيحية التي لا تخضع لعمليات تخصيص صفرية. (I94dfe، b/246960758) - تمت إضافة حمل زائد جديد لدالة
TextMeasurer.measure
التي تأخذString
كنص. (I47b2d، b/242705342) - تمت ترقية واجهات برمجة التطبيقات
LineBreak
وHyphens
في TextStyle إلى المستوى الثابت. (Ic1e1d)
المساهمة الخارجية
- لم يتم إيقاف طرق
notifyFocusedRect
فيTextInputSession
وTextInputService
مرة أخرى. (I23a04، b/262648050)
الإصدار 1.4.0-alpha04
11 كانون الثاني (يناير) 2023
تم إصدار "androidx.compose.ui:ui-*:1.4.0-alpha04
". يحتوي الإصدار 1.4.0-alpha04 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainer
جديدة تسمح بتثبيت عناصر القائمة الكسولة حتى لا يتم التخلص منها عند تمريرها خارج الحدود. على سبيل المثال، يستخدمModifier.focusable()
هذه الآلية لتثبيت العنصر محل التركيز حاليًا. (Ib8881 وb/259274257 وb/195049010) - تتم إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة في
Modifier.Node
. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/2515/25184}b/15184}b/92184} - تمت إضافتها في سمة دلالات
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
، يكون الاستدعاء ناتجًا عن دالة قابلة للتركيب. ومع ذلك، قد تكون القيمة خاطئة لاستدعاء الدوالّ المضمّنة القابلة للإنشاء والتي تكون من وحدات يتمّ تجميعها باستخدام إصدار من المكوِّن الإضافي لإنشاء المحوِّل البرمجي لا ينشئ معلومات الدالة المضمّنة. (Idb846) - تم ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى القناة الثابتة
- واجهة برمجة تطبيقات Rotary Scroll Event API متوفّرة الآن (I42ad3، b/261561229).
FontVariation
API مستقرة الآن (I8779f، b/241016309)- جميع دوال إنشاء
Font()
أصبحت الآن واجهة برمجة تطبيقات ثابتة (I5948b، b/261435386) DeviceFontFamilyName
ثابت الآن (I8b640، b/261435386)- أصبحت الآن دالة إنشاء
AndroidFont
معvariationSettings
واجهة برمجة تطبيقات مستقرة، ويمكن استخدامها لإنشاء أنواع جديدة من أدوات وصف الخطوط. (I5adcc، b/261565807) - أصبحت واجهة برمجة التطبيقات
createFontFamilyResolver
API ثابتة الآن. ويمكن استخدام هذه الطريقة لرصد الاستثناءات غير المرصودة أثناء التحميل غير المتزامن للخط. (Ibb481 ، b/261435386) - أصبحت واجهة برمجة التطبيقات
Font.loadingStrategy
API ثابتة الآن. (I5937c، b/261435386) - أصبحت واجهة برمجة التطبيقات
GoogleFont
API ثابتة الآن. (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 API. (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) - في اختبارات واجهة المستخدم التي تستخدم قاعدة الإنشاء، لن يتم إرسال عمليات الاستئناف أثناء استدعاءات
withFrameNanos
إلا بعد انتهاء تنفيذ جميع استدعاءات الإطار. يتطابق هذا مع سلوك الإنشاء عند التشغيل بشكل طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. من المفترَض أن يؤثر ذلك فقط في الرمز الذي يستدعيwithFrameNanos
أوwithFrameMillis
مباشرةً، ويكون له منطقي خارج نطاق معاودة الاتصال الذي يتم تمريره إلى تلك الدوال التي قد تحتاج إلى نقلها داخل عمليات الاستدعاء. يمكنك الاطّلاع على أمثلة عن التغييرات في اختبار الصور المتحركة في CL هذا للاطّلاع على أمثلة. - تمت إضافة مَعلمة
onPerformTraversals: (Long) -> Unit
اختيارية إلى الدالة الإنشائيةTestMonotonicFrameClock
والدالة الأصلية لتشغيل الرمز بعدwithFrameNanos
استدعاءات ولكن قبل استئناف الكوروتينات الخاصة بالمتصلين. (Idb413 وb/254115946 وb/222093277 وb/255802670) - تمت إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806).
- تمت إضافة مَعلمة خلفية جديدة إلى
@Preview
لإتاحة الألوان الديناميكية (I9f512).
إصلاح الأخطاء
- يتم الآن إرسال الإشعارات الخاصة بتطبيق اللقطة بعد انتهاء
Recomposer
من تطبيق التغييرات. (Iad6c0، b/222093277) - تم إدخال تغييرات في
captureToImage
للسماح بالتقاط لقطات شاشة لنوافذ متعددة. وهذا مفيد في اختبارات لقطات الشاشة التي تستخدم إنشاء نوافذ منبثقة. (I169c5)
تعديلات التبعية
- تعتمد واجهة المستخدم لإنشاء المحتوى ومواد الإنشاء الآن على دورة الحياة 2.5.1. (I05ab0، b/258038814)
الإصدار 1.4.0-alpha02
تشرين الثاني (نوفمبر) 2022
تم إصدار "androidx.compose.ui:ui-*:1.4.0-alpha02
". يحتوي الإصدار 1.4.0-alpha02 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم تعديل
GraphicsLayerScope
لعرض المقاس الحالي لـgraphicsLayer
. وهذا مفيد لاحتساب عمليات التحويلgraphicsLayer
كدالة للحجم القابل للتكوين. (If8c43,b/181387080) - تم تقديم
CompositingStrategy
لتحديد متى يمكن الاستفادة من طبقة تركيب خارج الشاشة لعرض محتوىgraphicsLayer
. تحافظ ميزة "تلقائي" على السلوك التلقائي الذي يستفيد داخليًا من طبقة ما في حال تطبيق ألفا أوRenderEffect/Overscroll
. سيتم دائمًا توفير مورد احتياطي خارج الشاشة، بحيث يتجنبModulateAlpha
استخدام مخزن مؤقت خارج الشاشة، وسيعدّل بدلاً من ذلك كل تعليمات الرسم المسجّلة فيgraphicsLayer
. سيظل استخدامModulateAlpha
يستخدم المورد الاحتياطي خارج الشاشة لاستخداماتRenderEffect/Overscroll
(I25e82، b/256382834) - تمت إضافة
invalidateSubtree()
إلىModifier.Node
للسماح بإلغاء التدرّجات الهرمية بأكملها للتنسيق والرسم. (I4bd90) - ترقية
rememberNestedScrollInteropConnection
إلى المستوى الثابت. تم تقديم إمكانية تمرير عرض جذر إلىrememberNestedScrollInteropConnection
. يمكن أن يساعد هذا العرض المخصص في التفاعل بشكل أفضل مع قيود التمرير، خاصة في طرق العرض غير العادية (مثلModalBottomSheetDialog
). (I9e107) - تمت إضافة واجهة
ObserverNode
يمكن استخدامها بواسطة عمليات تنفيذModifier.Node
التي تحتاج إلى إشعار عند تغيُّر قيمة كانت مقروءة مسبقًا (I5728b، b/247716483) - تمت إضافة دالة إنشاء جديدة إلى
Paint
تقبل السمةandroid.graphics.Paint
الأصلية. تمت أيضًا إضافة دالة الإضافةtoComposePaint()
التي تحوِّل كائن "الطلاء" الأصلي الحالي إلى Compose Paint. (Ica91b) - يمكنك إضافة
FontFamily.Resolver.resolveAsTypeface
جديد لاستخدامه على Android. (I8950b) - يمكنك إضافة
ToolingState
للسماح للأداة بتغيير الحالات الداخلية للمكوّن الإضافي (Ie6614). - أدوات إعادة الهيكلة للحصول على دعم أفضل للصور المتحركة المضافة الجديدة (I8677b)
- تمت إضافة المعلمة
minLines
إلى Material3 و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 عندما يحفظ "النشاط" حالة "عرض الإنشاء". (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
تشرين الثاني (نوفمبر) 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 بكسل مستقل الكثافة (dp (تغيير في تعطُّل بعض أنظمة التصميم المخصّصة – أسباب الإصدار التجريبي في ملاحظات الإصدار التجريبي 01)
- العديد من التحسينات الثانوية وغير المتكررة في واجهة برمجة التطبيقات
- العديد من إصلاحات الأخطاء وتحسينات الأداء
الإصدار 1.3.0-rc01
5 تشرين الأول (أكتوبر) 2022
تم إصدار "androidx.compose.ui:ui-*:1.3.0-rc01
". يحتوي الإصدار 1.3.0-rc01 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واصلات تجريبية جديدة لواجهة برمجة التطبيقات لإتاحة الواصلة التلقائية في النص (Iaa869).
إصلاح الأخطاء
- لن تعمل الخطوط
DeviceFontFamilyName
تلقائيًا على ضبط إعدادات الشكلَينwght
وital
، بدلاً من استخدام إعداد النظام الأساسي للخطوط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) - تمت إضافة خاصيتَي تركيز جديدتَين، وهما الدخول والخروج لتحديد سلوك مخصّص لكل من
FocusManager.moveFocus(Enter)
وFocusManager.moveFocus(Exit)
. (I5f3f9، b/183746982) - يمكنك الآن استخدام
FocusRequester.Cancel
لإلغاء نقل التركيز. يمكن استخدامFocusRequester.Cancel
في أي من خصائص التركيز التالية: لأعلى ولأسفل ويسار ويمين والتالي والسابق وبداية ونهاية ودخول وخروج. (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 نتيجة لـ
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 وحدات بكسل مستقلة الكثافة.
تم خفض الحد الأقصى للارتفاع المسموح به لمربّعات حوار الإنشاء والنوافذ المنبثقة من 30 بكسل مستقل الكثافة إلى 8 وحدات بكسل مستقلة الكثافة. يؤثر هذا التغيير في كل من مربعات الحوار والنوافذ المنبثقة المخصصة في واجهة المستخدم والمواد. يتم إجراء هذا التغيير للحدّ من أخطاء إمكانية الوصول على إصدارات Android الأقدم من S، والتأكّد من أنّ خدمات تسهيل الاستخدام ضمن تلك النوافذ قادرة على التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.
لن تتأثر بهذا التغيير إلا إذا كنت بصدد إنشاء مربّع حوار مخصّص أو تنفيذ نافذة منبثقة مع ضبط المسقط الرأسي على مستويات أعلى من 8 وحدات بكسل مستقلة الكثافة (dp). فكّر في خفض ارتفاع مربع الحوار أو النافذة المنبثقة. إذا كنت بحاجة إلى إيقاف هذا السلوك الجديد، يمكنك تقسيم مربع الحوار أو النافذة المنبثقة الخاصة بك مع تعيين المسقط الرأسي المطلوب. لا ننصح بتنفيذ هذا الإجراء، لأنّه قد تتأثر إمكانية الوصول سلبًا، وعلى مطوّر البرامج التأكّد من أنّ الجزء السفلي من مربّع الحوار أو النافذة المنبثقة قابلان للتفاعل والقراءة من خلال خدمات تسهيل الاستخدام.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح المشكلة المتمثلة في عدم تحديث
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) - الفقرة الآن متوقَّعة|صحيحة ومحدّدة لنظام التشغيل Android وأجهزة الكمبيوتر المكتبي. (Id387e، b/239962983)
- أصبحت فقرة الواجهة محمية الآن ضِمن واجهة برمجة التطبيقات Paragarph. لا توجد حالة استخدام للفقرة الفرعية، ونوصي بالتواصل معنا إذا كان هذا التغيير يؤثر عليك. (If5247، b/239962983)
- تمت إزالة التعليق التوضيحي التجريبي من
PlatformTextStyle
وLineHeightStyle
. (I64bef) - إيقاف
TextInputService.show|hideSoftwareKeyboard
يُرجى استخدامSoftwareKeyboardController
بدلاً من ذلك في رمز التطبيق وTextInputSession
في رمز إدارة أداة IME. (I14e4c، b/183448615) - إضافة واجهة برمجة تطبيقات جديدة لأنواع الرسوم المتحركة الحالية (I26179)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلب منح إذنPOST_NOTIFICATIONS
على حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (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
واجهة برمجة تطبيقات جديدة لملاحظة حالتها ضمن الدوال القابلة للتعديل أو من خلالره (Icdb8a).
الإصدار 1.2
الإصدار 1.2.1
10 آب (أغسطس) 2022
تم إصدار "androidx.compose.ui:ui-*:1.2.1
". يتضمّن الإصدار 1.2.1 هذه الالتزامات.
إصلاح الأخطاء
- قيمة فارغة في أداة الفحص (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 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم إنشاء الواجهات في مكتبات الإنشاء الآن باستخدام طرق الواجهة الافتراضية في jdk8 (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
. بالإضافة إلى ذلك، تتيح واجهة برمجة التطبيقات الآن استخدام أنماط الحقن المجمّعة بالماوس ولوحة المفاتيح، مثل النقر على زر ماوس مع الاستمرار في الضغط على مفتاح وصفي. (I4c8da، b/229831515) - تمت إضافة دعم تجريبي لإدخال الأحداث الرئيسية. يمكنك استخدام
performKeyInput
لإرسال الأحداث الرئيسية، أو إرسالها من خلال السمةkey
فيMultiModalInjectionScope
أثناء إدخال إيماءة إدخال متعدد الوسائط باستخدامperformMultiModalInput
. يمكنك الاطّلاع علىKeyInjectionScope
للحصول على مستندات حول واجهة برمجة التطبيقات. (Ic5000، b/229831515) - يمكنك إضافة
GoogleFont.Provider.AllFontsListUri
جديد لاسترداد مصدر الإنترنت الأساسي لخطوط Google Fonts المتوافق مع Android. - يمكنك تحسين رسائل الخطأ التي تتم إعادة عرضها عند تعذّر تحميل GoogleFonts في نافذة الإنشاء. (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 UI. يجب أن توفر الدالة التي تحتاج إلى استهداف تطبيق آخر بشكل صريح التعليق التوضيحي لعلامة الهدف مع التطبيق المطلوب. (I40804) تم طرح واجهة برمجة تطبيقات تجريبية جديدة ومستقلة عن النظام الأساسي، وهي واجهة برمجة تطبيقات تجريبية تشمل
interface ComposeUiTest
وfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
يمكن استخدامها لإجراء اختبارات Compose Ui بدون الحاجة إلى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
و"بدون" و"بدون" (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) - يتم الآن قبول معلمة Constraints في الفقرة والفقرة المتعددة. اجتياز
Constraints.maxHeight
هو أمر محظور في الوقت الحالي، ولكنه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل الحذف بناءً على الارتفاع. (I6afee، b/168720622) - يقبل
SubcomposeSlotReusePolicy.getSlotsToRetain()
الآن فئة مخصصة تشبه MutableSet لا تسمح بإضافة عناصر جديدة فيها. (Icd314) - أصبحت PointerIcon الآن واجهة
@Stable
(I9dafe) - تم إيقاف الاستهلاك الجزئي (خفض أو الموضع) نهائيًا في
PointerInputChange
. يمكنك استخدامconsume()
للاطّلاع على كل التغييرات. يمكنك استخدامisConsumed
لتحديد ما إذا كان شخص آخر قد استهلك التغيير في السابق أم لا. - تنشئ "
PointerInputChange::copy()
" الآن نسخة سطحية دائمًا. وهذا يعني أنه سيتم استهلاك نُسخ منPointerInputChange
بعد استهلاك إحدى هذه النُسخ. إذا كنت تريد إنشاءPointerInputChange
غير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674) - يمكنك تفعيل إمكانية التشغيل التفاعلي للتمرير المتداخلة بين "إنشاء" و"عرض" في الاتجاه "إنشاء" > "عرض". وهذا يعني أن عنصر الإنشاء الرئيسي سيكون قادرًا على تلقي دلتا تمرير مدمجة من عرض تمرير متداخل. (If7949، b/174348612)
- ميزة
SemanticsProperty testTagsAsResourceId
الجديدة، التي يمكن استخدامها لجعل ميزة "الإنشاء" متوافقة مع اختبارات UIAutomator المصمّمة لنظام العرض (I39c20) - يمكنك عرض جميع الأوزان المتاحة لخطوط الأنظمة على Android عند استخدام
FontFamily.SansSerif
. سيؤدي هذا الإجراء إلى استخدام أسماء خطوط احتياطية، مثل sans-serif-medium داخليًا على واجهات برمجة التطبيقات 21-28. وهذا يعتبر تغييرًا في السلوك، إذ كان المقياسان اللذان كانا 400 و700 فقط يدعمان واجهة برمجة التطبيقات 21-28. (I380fe، b/156048036، b/226441992) - أعاد معلّمو الفقرة والمتعددة الفقرات ترتيب الوسيطات الموضعية قبل الوسيطات الاختيارية. (إيدافا)
- تستخدم
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
للمطوّرين بإيقاف استخدام AndroidWindowInsets
. ويسمح ذلك باستخدامComposeViews
منفصلة في التسلسل الهرمي لتطبيقWindowInsets
بدون تداخلها مع بعضها البعض. (I0ef08، b/220943142) - تمت إضافة
KeyboardType.Decimal
كبديل لـKeyboard.Number
لتضمين الفاصل العشري في أداة IME على وجه التحديد. (Iec4c8، b/209835363) PointerEventType.Scroll
وPointerEvent.scrollDelta
هما واجهات برمجة تطبيقات مستقرة الآن (I574c5، b/225669674)- تفعيل إمكانية التشغيل التفاعلي للتمرير المتداخلة بين العرض والإنشاء لفئات العرض التعاوني. وهذا يعني أنّ ميزة "إنشاء" قادرة الآن على نقل قيم دلتا التمرير إلى طريقة عرض رئيسية (متعاونة). (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)
إصلاح الأخطاء
- تمت إضافة فحص الوبر إلى المادة/النقش لضمان استخدام المساحة المتروكة الداخلية (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()
نهائيًا. يجب استخدام معدِّلfocusRequester()
معfocusProperties()
بدلاً منfocusOrder()
الذي يقبل عنصرfocusRequester
. ويتيح هذا لمُعدِّلات الفصل أقوى بين المخاوف. (I601b7)ستؤدي ترقية كل من
RecyclerView
وCompose
الآن إلى تحسين أداء التمرير في RecyclerViews التي تتضمّن طرق عرض Compose في مرحلة الأطفال.إضافة
ViewCompositionStrategy.Default
كوسيلة لاسترداد الاستراتيجية التلقائية المضمّنةأضِف
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
، وهي الاستراتيجية التلقائية الجديدة وتتعامل بشكل سليم مع حاويات التجميع، مثل RecyclerView. (If7282)تمت إضافة إمكانية إضافة التعليقات التوضيحية إلى فئات التعليقات التوضيحية باستخدام @Preview كخطوة أولى لإضافة ميزة المعاينة المتعددة. يمكن استخدام هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى الطرق القابلة للتعديل أو فئات التعليقات التوضيحية الأخرى، والتي يمكن اعتبارها بعد ذلك كتعليق توضيحي غير مباشر باستخدام @Preview المحددة. (I12eff)
الأجهزة المرجعية المضافة إلى قائمة الأجهزة لـ @Preview (I071c9)
إصلاح الأخطاء
- تم تعديل واجهات برمجة تطبيقات رسومات Vector لاستخدام التعليق التوضيحي المناسب للربط بـ @VectorComposable بدلاً من @UiComposable (I942bc)
- إزالة علامة زائد مضمَّن من
AnnotatedString.Builder.withStyle
(If84d5)
المساهمة الخارجية
- إنشاء-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) - تم تعديل إمكانية إلغاء القيم في النظام الأساسي وAppcompat لتتوافق مع Tiramisu DP2 (I0cbb7).
- تعرض الواجهة التي تم قياسها الآن موقعparentData (I3313f)
- أصبحت واجهة
Modifier.onPlaced
وواجهةOnPlacedModifier
مستقرة الآن. (Ib5482) - رائع يتوافق إنشاء الصور المتحركة الآن مع إعداد "مقياس مدة الرسوم المتحركة" من "خيارات المطوّرين". (I5a4fc، b/161675988)
- تمت إضافة معدِّل محلي باستخدام
BeyondBoundsLayout
(If8b51، b/184670295) - النص: تكون ميزة "تضمين FontPadding" غير مفعّلة الآن تلقائيًا. تتم معالجة مشاكل القطع الناتجة عن
includeFontPadding=false
ويجب ألا يتم اقتطاع أي نصوص برمجية طويلة. (I31c84، b/171394808)
إصلاح الأخطاء
- سيطرح
ComposeContentTestRule.setContent
الآن الخطأIllegalStateException
إذا حاولت ضبط المحتوى عند توفُّر محتوى. (I888a5، b/199631334) - إصلاح العطل الناتج عن محتوى الحافظة أثناء القراءة من الحافظة على Android. (I06020، b/197769306)
- تحسين نماذج تمرير RSB. (I6a596)
المساهمة الخارجية
- تم التحديث لاستخدام الكوروتينات في Kotlinx 1.6.0 (I3366d).
الإصدار 1.2.0-alpha04
23 شباط (فبراير) 2022
تم إصدار "androidx.compose.ui:ui-*:1.2.0-alpha04
". يحتوي الإصدار 1.2.0-alpha04 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
تمت إضافة
ComposableTarget
وComposableTargetMarker
وComposableOpenTarget
، وهي ميزة تتيح إعداد تقارير وقت التجميع للحالات التي تُسمّى فيها وظيفة قابلة للتكوين استهداف تطبيق لم يتم تصميمه لاستخدامه.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية بواسطة المكوِّن الإضافي لإنشاء التجميع، لذا يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً نادر الحدوث . والحالات التي لا يمكن استنتاجها تشمل إنشاء واستخدام محرِّر مخصّص أو دوال مجرّدة قابلة للتعديل (مثل طرق الواجهة) أو حقول أو متغيرات عمومية يمكن إنشاؤها (يتم استنتاج المتغيرات والمعلَمات المحلية) أو عند استخدام
ComposeNode
أو دوال ذات صلة قابلة للتعديل.بالنسبة إلى التطبيقات المخصّصة، يجب إضافة تعليق توضيحي بشأن
ComposableTarget
الدوال القابلة للتعديل والتي تستدعيComposeNode
أوReusableComposeNode
للدالة وأي أنواع من مَعلمات lambda مجمَّعة. ونقترح عليك مع ذلك إنشاء تعليق توضيحي يتضمن تعليقات توضيحية باستخدامComposableTargetMarker
، ثم يتم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً منComposableTarget
مباشرةً. إنّ التعليق التوضيحي القابل للإنشاء الذي تم وضع علامةComposableTargetMarker
عليه يساويComposbleTarget
الذي يحمل اسمًا مؤهلاً بالكامل لفئة السمة كمَعلمة applier. للاطّلاع على مثال على استخدامComposableTargetMarker
، راجِعanroidx.compose.ui.UiComposable
. (I38f11)بإمكان "
Font(resId, ...)
" الآن ضبط استراتيجية التحميل على واجهة برمجة التطبيقات الثابتة. (Ief3d2)أصبحت
FontLoadingStrategy
الآن واجهة برمجة تطبيقات ثابتة. (I1ee35، b/174162090)إتاحة تحميل الخط غير المتزامن في النص (I77057، b/214587005)
أضِف واجهة برمجة تطبيقات Bridge API لتحويل
Font.ResourceLoader
مخصّصة إلىFontFamily.Resolver
. (Ia0060)
إصلاح الأخطاء
- يتم تمرير
FontFamily.Resolver
المقدمة إلى مركّبات فرعية مثل النافذة المنبثقة. - يتم تمرير
Font.ResourceLoader
المقدمة إلى مركّبات فرعية مثل النافذة المنبثقة. (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 التي تنقل حالتها والعُقد المقابلة لها، إلى أي موقع جديد يتم استدعائها. عندما تغادر المكالمة السابقة المقطوعة الموسيقية، يتم الاحتفاظ بالحالة مؤقتًا وإذا دخلت مكالمة جديدة إلى دالة lambda، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. إذا لم تتم إضافة مكالمة جديدة، تتم إزالة الحالة نهائيًا وتذكر أنه يتم إبلاغ المراقبين.إذا تم استدعاء دالة
movableContentOf
lambda عدة مرات في البنية نفسها، يتم إنشاء حالة وعُقد جديدة لكل استدعاء، وعندما تخرج المكالمات من التركيبة وتدخل المكالمات الجديدة، يتم نقل الحالة من أول استدعاءات الخروج إلى الطلبات المدخلة بترتيب استدعائها. تتم إزالة جميع الولايات التي لم تتم المطالبة بها من خلال المكالمات الجديدة نهائيًا. (Ib4850)"
FontFamilyResolver
" متوفّر الآن عبرLocalFontFamilyResolver.current
.تمت إضافة
createFontFamilyResolver(context)
وcreateFontFamilyResolver(context, coroutineScope)
لإنشاء برامج تعيين FontFamily جديدة خارج نطاق استخدام ميزة الإنشاء.تستغرق الفقرة والفقرات المتعددة الآن
FontFamily.Resolver
يحتوي
TextLayoutResult.layoutInput.fontFamilyResolver
الآن على برنامج التعيين المستخدَم لهذا التنسيق، وقد تم إيقافه نهائيًاTextLayoutResult.layoutInput.resourceLoader
لأنّه لم يعُد مستخدمًا. (Id5a45، b/174162090)دعم تحميل الخط غير المتزامن والاختياري، مع سلوك احتياطي. يتم استخدام هذا المسار بواسطة Text وTextField، ويتم عرضه من خلال FontFamilySolutionr
دعم التحميل المسبَق للخطوط عبر
FontFamilyResolver.preload
تسمح
FontFamilyResolver.setAsyncLoadContext
بضبط سياق الكوروتين العام المستخدم لتحميل الخطوط غير المتزامنة. (I87fe8، b/174162090)تمت إضافة
AndroidFont
، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة من أدوات وصف موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خلفية خاصة بالتطبيق، أو تحديد الموقع الجغرافي للخطوط المثبَّتة مسبقًا على الجهاز، اختياريًا، أو تحميل خط من مورد لا توفّره مصانع Font الحالية.تم توسيع واجهة برمجة تطبيقات
Font.ResourceLoaded
لإتاحة إمكانية تحميل الخطوط الاختيارية وغير المتزامنة. لا يوصى بأن يستخدم مطورو التطبيقات واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، يُرجى الاطّلاع علىAndroidFont
.دالة الإضافة
Font.AndroidResourceLoader
تسمح بإنشاءFont.ResourceLoader
عندما تكون خارج التركيبة.تمت إضافة مَعلمة
loadingStrategy
إلى الخطوط المستندة إلى الموارد للسماح بالتحميل غير المتزامن عندما تشير خطوط الموارد إلى خطوط XML قابلة للتنزيل. (Ie5aea، b/174162090)تم إيقاف الدالة الإنشائية
Typeface(FontFamily)
نهائيًا. كانت هذه الطريقة تُستخدم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك ما يصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. باستخدام الخطوط القابلة للتنزيل، قد يتم حظر هذه المكالمة لمدة 10 ثوانٍ. واستخدِمFontFamilyResolver.preload
بدلاً من ذلك.تم إيقاف
fontResource(FontFamily): Typeface
نهائيًا. كانت هذه الطريقة تُستخدم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك ما يصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. بدلاً من ذلك، استخدِمFontFamilyResolver.preload
(If8e7c، b/174162090).إن دالة إنشاء
SubcomposeLayoutState
التي تقبلmaxSlotsToRetainForReuse
أصبحت متوقفة الآن. بدلاً من ذلك، تتوفر دالة إنشاء جديدة تقبلSubcomposeSlotReusePolicy
، وهي واجهة جديدة تسمح بالتحكم الدقيق في الخانات التي يجب الاحتفاظ بها لإعادة الاستخدام في المستقبل. (I52c4d)تعرض دالة HSV وHSL في
Color
كواجهة برمجة تطبيقات غير تجريبية. مساحة لون Oklab هي الآن واجهة برمجة تطبيقات عامة. (I08fb6، b/180731008)تم إيقاف
AndroidComposeTestRule.AndroidComposeStatement
نهائيًا، والذي لم يكن من المفترض أن يكون في واجهة برمجة تطبيقات متاحة للجميع، ولم يقدّم لك أي إجراء على أي حال. (Ibc46b)إعادة تسمية فئة kt تم إنشاؤها داخليًا (Ia0b9e، b/174162090)
تمت إزالة
FontLoadingStrategy.values
(I42a9d، b/174162090)تم الآن تغيير اسم برنامج تحميل الخطوط العام إلى
FontFamilyResolver
. (I4f773، b/174162090)استخدام نظام جديد لتحميل الخطوط على أجهزة الكمبيوتر المكتبي (I9ce5c، b/174162090)
FontFamily.Resolver.resolve
يعرضState<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 OS مع زر جانبي دوار (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).
تعديلات التبعية
- تعتمد هذه الطريقة الآن على لغة
1.6.10
في لغة البرمجة Kotlin.
الإصدار 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)
- تنسيق RTL ثابت في
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
- تحسينات على تحديد حجم مساحة اللمس
- تجدر الإشارة إلى أنّه في ما يتعلّق بـ Compose 1.0، ستوسِّع مكوّنات Material من مساحة التنسيق الخاصة بها لاستيفاء إرشادات إمكانية الوصول المتعلّقة بمواد العرض حجم هدف اللمس. على سبيل المثال، سيتم توسيع هدف لمس الزر إلى أدنى حجم يبلغ 48x48dp، حتى في حال ضبط حجم الزر ليكون أصغر. يؤدي هذا إلى مواءمة Compose Material مع السلوك نفسه لمكونات التصميم المتعدد الأبعاد، مما يوفر سلوكًا متسقًا إذا قمت بمزج طرق العرض والإنشاء. ويضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكونات مادة الإنشاء.
- دعم ثابت لشريط التنقّل
- تم ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى القناة الثابتة
- الدعم مع الإصدارات الأحدث من لغة Kotlin
الإصدار 1.1.0-rc03
26 يناير 2022
تم إصدار "androidx.compose.ui:ui-*:1.1.0-rc03
". يحتوي الإصدار 1.1.0-rc03 على هذه الالتزامات.
إصلاح الأخطاء
- تم التحديث للتوافق مع Compose Material 1.1.0-rc03
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.1.0-rc01
". يحتوي الإصدار 1.1.0-rc01 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح الخلل الذي تسبَّب في عدم توفُّر إجراءات التمرير ضمن أدوات تسهيل الاستخدام (I7cbfb)
- سيعمل
SemanticsNodeInteraction.captureToImage()
الآن أيضًا إذا كانت قيمةHardwareRenderer.isDrawingEnabled()
هيfalse
، من خلال تفعيله طوال مدة المكالمة (Idf3d0).
الإصدار 1.1.0-beta04
1 كانون الأول (ديسمبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.1.0-beta04
". يتضمّن الإصدار 1.1.0-beta04 هذه الالتزامات.
الميزات الجديدة
- تم تعديلها لتتوافق مع لغة
1.6.0
في Kotlin.
تغييرات واجهة برمجة التطبيقات
- تم محو إمكانية القيم الفارغة في
androidx.core.view
(I7078a، b/204917439) - تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح للمستخدمين استخدام PointerInputchange ككل أو التحقق مما إذا تم استهلاكها أم لا. (I2e59d)
- لإضافة دعم لأحداث عجلة تمرير الماوس في طبقة واجهة المستخدم. (Ia14eb، b/198214718)
- أضِف أحمال
Modifier.composed
الزائدة التجريبية التي تقبل المفاتيح للمقارنة من أجل المساواة والتأهُّل لتخطّي التحسينات. (Ice799، b/205851704) ComposeNotIdleException
يمتد الآن منException
بدلاً منThrowable
مباشرةً. هذا يعني أنّ العبارات الالتقاطية التي كانت تلتقطException
قد تلتقط الآنComposeNotIdleException
والجُمل التي لم تكن تجمّلها سابقًا. (I9c217)
إصلاح الأخطاء
- إصلاح مقابض النص لا تتحرك عند تغيير مستوى رؤية أداة IME. (I25f2e)
الإصدار 1.1.0-beta03
17 تشرين الثاني (نوفمبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.1.0-beta03
". يتضمّن الإصدار 1.1.0-beta03 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عنصر تعديل جديد باسم Modifier.onPlaced للسماح بملاحظة تغيير الموضع. وبالتالي يمكن إجراء تغييرات إضافية على إزاحة التعديل الفرعي بناءً على تغيير الموضع المرصود. (I558fd)
- تمت إزالة
InjectionScope.flush()
وInjectionScope.dispose()
. يحدث التخلص من جميع الأحداث والتخلص من النطاق الآن في نهاية طريقة rental*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).
- واجهات برمجة تطبيقات جديدة للصور المتحركة لدعم الأدوات. على وجه التحديد، تسمح الأدوات بفحص الرسوم المتحركة وتكويناتها في الانتقالات. (I4116e)
المساهمة الخارجية
- تمت إضافة Modifier.pointerHoverIcon (I95f01).
الإصدار 1.1.0-beta01
27 تشرين الأول (أكتوبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.1.0-beta01
". يتضمّن الإصدار 1.1.0-beta01 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة تطبيقات
BringIntoView
تجريبية تسمح لك بإرسال طلب إلى الوالدَين للانتقال إلى وضع العرض (Ib918d، b/195353459). - واجهات برمجة تطبيقات جديدة للصور المتحركة لدعم الأدوات. على وجه التحديد، تسمح الأدوات بفحص الرسوم المتحركة وتكويناتها في الانتقالات. (I4116e)
الإصدار 1.1.0-alpha06
13 تشرين الأول (أكتوبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.1.0-alpha06
". يحتوي الإصدار 1.1.0-alpha06 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ExperimentalComposeUiApi
منViewRootForInspector
وLayoutInfo.ownerViewId
(I5c2e3) - تمت إضافة حمل زائد أقل الأطفال للتنسيق، مع كفاءة محسَّنة (Ib0d9a)
- تمت إزالة
InternalCompilerApi
من طرق Composer التي يجب أن يتم استدعائها على مستوى الوحدات المتعددة (I1aa0b) - تعرض
SemanticsNodeInteraction.performSemanticsAction
الآنSemanticsNodeInteraction
الذي تم استدعاء الدالة فيه. (I9e5db) - تمت إضافة LocalInputModeManager ImplementLocal لاكتشاف TouchMode/NonTouchMode. (I6a83c، b/175899786)
- تمت إضافة
viewConfiguration: ViewConfiguration
إلىLayoutInfo
للسماح للمستهلكين بالحصول على القيمة الصحيحة لأشياء مثل مهلة الضغط الطويل. (I76ca6)- تمت إضافة "
viewConfiguration: ViewConfiguration
" إلى "InjectionScope
" للسماح للاختبارات بتعديل إدخال البيانات استنادًا إلى عوامل مثل مهلة الضغط الطويل أو الميل باللمس. - تم تغيير المدة التلقائية للضغط مع الاستمرار والنقر مرّتين
على كل من الإدخال باللمس والماوس استنادًا إلى القيم في
InjectionScope.viewConfiguration
.
- تمت إضافة "
- تنفيذ ExposedDropdownList استنادًا إلى ExposedDropdownListBox مع إدراج "TextField" و"قائمة منسدلة" داخل (If60b2)
- تمت إضافة PauseOnخارجClick إلى PopupProperties، بدلاً من PauseOnClickخارج الذي تم إيقافه. يتلقّى الموقع الجديد موضع النقر وحدود الارتساء، ما يوفّر تحكّمًا أفضل في ما إذا كان يجب استدعاء onRejectRequest أم لا. على سبيل المثال، قد يكون ذلك مفيدًا لمنع إغلاق المرساة عند لمسها.
- تمت إضافة updateAndroidWindowManagerFlags إلى PopupProperties، ما يوفّر مستوى منخفض من التحكّم في العلامات التي يتم تمريرها عن طريق النافذة المنبثقة إلى Android WindowManager. ستكون مَعلمة lambda هي العلامات التي يتمّ احتسابها من قيم PopupProperties التي تؤدي إلى ظهور علامات WindowManager: على سبيل المثال، searchable. ستكون نتيجة دالة lambda هي العلامات النهائية التي سيتم تمريرها إلى مدير النوافذ في Android. سيؤدي تحديث AndroidWindowManagerFlags تلقائيًا إلى ترك العلامات المحسوبة من المَعلمات بدون تغيير. يجب استخدام واجهة برمجة التطبيقات هذه بحذر، فقط في الحالات التي تنطوي فيها النافذة المنبثقة على متطلبات سلوك محدّدة للغاية. (I6e9f9)
- تم إيقاف
Recomposer.state
نهائيًا واستبداله بـRecomposer.currentState
لتغيير نوعه إلى StateFlow (Ic2ab3، b/197773820). - تمت إضافة "
flush()
" و"dispose()
" إلى "InjectionScope
". استخدمها عندما تريد مسح جميع الأحداث المدرجة في قائمة الانتظار على الفور، وعندما تريد التخلص من النطاق، على التوالي. (Ifb73a) - تمت إضافة
performScrollToNode(matcher: SemanticsMatcher)
الذي يمرّر حاوية قابلة للتمرير إلى المحتوى الذي يطابقه المُطابق المحدد. (Ic1cb8) - ينفِّذ
InjectionScope
الآنDensity
، ما يتيح لك التحويل بسهولة بين البكسل وdp فيperformTouchInput
والأصدقاء. (I8fe1f)
إصلاح الأخطاء
- ينشر AndroidView الآن LocalLifecycleOwner وLocalSavedStateRegistryOwner في العرض من خلال ViewTreeLifecycleOwner وViewTreeSavedStateRegistryOwner. (I38f96، b/179708470)
- يجب إصلاح التطبيق الذي لا يعالج التمريرات السريعة على نظام التشغيل WearOS ScrollToRejectBox أحيانًا. (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
، مع ملاحظتين صغيرتين:- عند إرسال حدث للأسفل أثناء نقل المؤشرات بدون
إرسال حدث نقل (بعبارة أخرى، تم استخدام
updatePointerTo()
، ولكن ليسmove()
، ثم يتم استدعاءdown()
)، ستتقدّم عملية التنفيذ السابقة في وقت الحدث وترسل حدث النقل قبل إرسال حدث الانتقال إلى الأسفل. لا يزال التنفيذ الجديد يرسل حدث النقل، لكنه لا يتقدم في وقت الحدث في هذا السيناريو المحدد. - عند إرسال حدث لأعلى في حين تم نقل المؤشرات بدون إرسال حدث نقل (كما هو موضح أعلاه)، ستعمل عملية التنفيذ السابقة على زيادة وقت الحدث وإرسال حدث نقل قبل إرسال حدث النقل. وعملية التنفيذ الجديدة لا تؤثّر فيهما، بل ستنعكس مواضع المؤشرات الجديدة فقط من خلال الحدث الأعلى.
أخيرًا، تقدّم
TouchInjectionScope
طريقة جديدةcurrentPosition(pointerId: Int)
للحصول على الموضع الحالي للمؤشر المقدم. (If1191، b/190493367)- عند إرسال حدث للأسفل أثناء نقل المؤشرات بدون
إرسال حدث نقل (بعبارة أخرى، تم استخدام
إصلاح الأخطاء
- اسمح للمقطع بتوسيع حدود هدف اللمس إلى ما بعد منطقة المقطع لأغراض الحد الأدنى من أهداف اللمس. (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
للاعتماد على لغة البرمجة1.5.30
في Kotlin. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.inspectable
لإحاطة مفاتيح التعديل الأخرى. (I1909b، b/191017532) - تمت إضافة واجهة برمجة التطبيقات
BlurredEdgeTreatment
API لتبسيط حالات استخدام التمويه إلى مجموعات شائعة الاستخدام من علامات المقاطع وTieModes. تتضمن معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي وتمويه المناطق خارج هذه الحدود بعرض أسود شفاف، أو قطع المحتوى إلى حدود المحتوى مع أخذ عينات من أقرب حافة لنواة التمويه التي تتجاوز حدود المحتوى. (I6b4b7، b/166927547) - تمت إضافة دعم RenderEffect في إنشاء سطح المكتب. تم تقديم OffsetEffect بالإضافة إلى معدِّل التمويه كطريقة بسيطة لإدخال تأثيرات بصرية للتمويه على جزء من التسلسل الهرمي للتركيب. (I0f6aa، b/166927547)
- تم تقديم RenderEffect API
ويمكن ضبطها اختياريًا على
Modifier.graphicsLayer
لتغيير محتوى الطبقة نفسها. يمكن استخدام هذا لتمويه محتوى مادة مركّبة وتصميم ثانوي ضمن تسلسل هرمي. (I47c4d، b/166927547) - يحتوي AWayPointerEventScope الآن على withTimeout() وwithTimeoutOrNull() (I507f0 وb/179239764 وb/182397793)
- تمت إضافة الحد الأدنى لحجم هدف اللمس إلى ViewConfiguration للاستخدام في دلالات الألفاظ وإدخال المؤشر لضمان سهولة الوصول. (Ie861c)
- أضف دعم TileMode.Decal وهو مفيد في تحديد سلوك الحافة لتأثيرات RenderEffect المستندة إلى التمويه. (I7e8ed، b/166927547)
performScrollToIndex
وperformScrollToKey
وhasScrollToIndexAction
وhasScrollToKeyAction
أصبحت الآن واجهة برمجة تطبيقات ثابتة (I142ae، b/178483889)- تمت إضافة طريقة اختبار للحصول على الحدود المقتطعة. (I6b28e)
إصلاح الأخطاء
- تمت إزالة طريقة isBounded من FloodredEdgeTreatment لصالح التحقق الصريح مما إذا كانت معلمة الشكل فارغة أم لا. (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 الخاص برسومات Vector من أجل دعم 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 لدعم رسم فرشاة عشوائية داخل الرسام، على غرار ColorPainter
تم تحديث Brush API بحيث تحتوي على معلَمة حجم أساسية يتم الاستعلام عنها ضمن BrushPainter (Ia2752، b/189466433)
طريقة DrawScope#drawImage المحدّثة التي تستهلك مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterValue اختيارية. يفيد ذلك في فن البكسل الذي يهدف إلى وحدات البكسل عند تكبيره ليناسب فن البكسل. تم تعديل BitmapPainter + الصورة التي يمكن إنشاؤها أيضًا لاستهلاك مَعلمة Filterquality الاختيارية (Ie4fb0، b/180311607)
تمت إضافة طريقة
GestureScope.advanceEventTime
لمنح المزيد من التحكّم في توقيت الأحداث باستخدام إيماءة (Ibf3e2)
إصلاح الأخطاء
- من أجل دعم تسلسل معدِّلات الرسم بشكل أفضل، تأكد من أن استدعاءات تنفيذ Modifier.paint ترسم المحتوى.
في السابق، كان من المتوقّع إضافة Modifier.paint إلى جزء ورقة في سلسلة "معدِّلات"، ولكنّ ذلك يمنع إعداده على حاوية قابلة للتركيب (مثل صندوق) أو إضافة زخارف إضافية في الأعلى، مثل
Modifier.paint().border()
. من خلال استخدام Modifier.paint call 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 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مثيلاتStateOf المستمَدة من تتبُّع الأعطال. (aosp/1792247)
الإصدار 1.0.4
13 تشرين الأول (أكتوبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.0.4
". يحتوي الإصدار 1.0.4 على هذه الالتزامات.
تعديلات التبعية
- تم تعديل البيانات للاعتماد على لغة
1.5.31
في لغة البرمجة Kotlin.
الإصدار 1.0.3
29 أيلول (سبتمبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.0.3
". يحتوي الإصدار 1.0.3 على هذه الالتزامات.
تعديلات التبعية
- تم تعديل البيانات للاعتماد على لغة
1.5.30
في لغة البرمجة Kotlin.
الإصدار 1.0.2
1 أيلول (سبتمبر) 2021
تم إصدار "androidx.compose.ui:ui-*:1.0.2
". يحتوي الإصدار 1.0.2 على هذه الالتزامات.
تم التعديل للتوافق مع إصدار الإنشاء 1.0.2
. لا يزال إنشاء 1.0.2
متوافقًا مع لغة البرمجة 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 الرسمية للحصول على مزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم Android Studio Bumblebee Canary 4 أو AGP
7.1.0-alpha04
/7.1.0-alpha05
، قد تواجه العطل التالي:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف
build.gradle
. سيتم حلّ هذه المشكلة في الإصدار التالي من "استوديو Android" 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-preview
(Iefa28، b/190649014)
تغييرات واجهة برمجة التطبيقات
- تمت إزالة الإصدار التجريبي المتوقف
FocusManager#moveFocusIn
وFocusManager#moveFocusOut
(I227d7 وb/170154986 وb/186567354 وb/168510304). - يدعم Canvas الآن معلمة contentDescription لإمكانية الوصول. (Ib547c)
- تمت إعادة تسمية
useDefaultMaxWidth
فيPopupProperties
إلىusePlatformDefaultWidth
. (I05710) - يمكن لمربعات الحوار الآن استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
- تمت إضافة دعم تجريبي لتصورات ألوان HSV وHSL. (Id7cf8، b/180731008)
التغييرات في السلوك
- يوفر رمز الإنشاء
@Preview
الآن العنصرLocalActivityResultRegistryOwner
الذي يتيح لك معاينة العناصر التي تستخدم واجهات برمجة تطبيقات، مثلrememberLauncherForActivityResult()
، تعتمد على هذا المالك الحالي. (Ib13d1، b/185693006) - يوفر رمز الإنشاء
@Preview
الآن العنصرLocalOnBackPressedDispatcherOwner
الذي يسمح لك بمعاينة المحتوى الذي يستخدم واجهات برمجة تطبيقات مثلBackHandler
والتي تعتمد على ذلك المالك الحالي. (Ia1c05، b/185693006)
إصلاح الأخطاء
- تم نقل
InfiniteAnimationPolicy
إلىandroidx.compose.ui:ui
(I5eb09، b/160602714) - تمت إزالة رسوم متحركة ImageVector مؤقتًا لتغيير بنية الوحدة. (I41906، b/160602714)
الإصدار 1.0.0-beta09
16 حزيران (يونيو) 2021
تم إصدار "androidx.compose.ui:ui-*:1.0.0-beta09
". يتضمّن الإصدار 1.0.0-beta09 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تغيير دور enum وLiveRegionMode إلى فئات مضمّنة باستخدام دالة إنشاء خاصة (Id1890)
- يتم تحويل الكتابة بالأحرف اللاتينية الكبيرة على لوحة المفاتيح إلى فئة مضمّنة. (Id5a1c)
- تغيير HapticFeedbackType إلى فئة مضمّنة (I255ec)
- Modifier.pointerInteropFilter هو @SpecialComposeUiApi. (Iede6c)
- أصبحت TextAlign وFontSynthesis وTextDirection الآن فئات مضمّنة. (I212fe)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
- FontStyle الآن هو فئة مضمّنة. (I9e48b)
إصلاح الأخطاء
- الثوابت الرئيسية هي @GeneralComposeUiApi في الوقت الحالي. يمكن أن يعلن استهلاك التعليمات البرمجية عن ثوابت خاصة قبل التثبيت. (Ia5d48)
- يمكن الآن إجراء اختبارات الإنشاء على 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-Formatting
- 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
للإشارة إلى ما إذا كان يجب وضع علامة على هذه الطريقة باعتبارها "Hot" أو "Startup" (بدء التشغيل) أو "Post Startup" (بدء التشغيل).تمثّل السمة
<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). - إعادة هيكلة استخدامات التعداد للصفوف المضمّنة لتجنب مشاكل متعلقة بالشاملة عند إضافة قيم تعداد جديدة. (I2b5eb)
- إزالة
@ExperimentalComposeUiApi
منPopupProperties
(I01fa6) - تم تغيير
PointerType
من تعداد إلى فئة مضمّنة (If5058) - لم تعد خصائص ContentDescription و"النص" الدلالي قيمًا فردية بل قوائم. وهذا يتيح دمجها كما هي بدلاً من التسلسلات. تم أيضًا توفير واجهات برمجة تطبيقات اختبارية أفضل للاستفادة من هذه التغييرات (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
الآن تجريبيةTextApi بدلاً من تجريبية ComposeApi. (I0cd0a)- أصبحت الدالة الإنشائية TextUnit مع TextUnitType الآن IndividualTextApi بدلاً من تجريبية ComposeApi.
إصلاح الأخطاء
- إصلاح الخطأ الذي تم طرحه في الإصدار التجريبي 07 حيث تم عرض عناصر LazyColumn/Row جزئيًا بعد الانتقال (I8c9ac، b/188566058)
- سيستخدم كل من
detectDragGesures
وdetectVerticalGestures
وdetectHorizontalGestures
الآن التغيير في الموضع تلقائيًا، بدون الحاجة إلى استدعاء change.consumePositionChange في عمليات رد الاتصال onDrag (I42fc4 وb/185096350 وb/187320697) - تم إصلاح معدِّلات التخطيط التي توفر خطوط المحاذاة. تم إصلاح خطأ تسبّب في عدم إعادة قياس الوالدَين عند تغيير خطوط المحاذاة لدى الأطفال. (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 التي تسمح لك بإنشاء المحتوى مسبقًا في نطاق تحديد خانة تعريف مطلوب، ما يجعل إجراء القياس التالي أسرع كلما حاولنا التجميع الفرعي باستخدام معرّف شريحة معيّنة في المرّة القادمة لن تكون هناك حاجة إلى أي تركيبة. (I42580، b/184940225)
- تمت إضافة مقبض اختيار المقطع (Iff80d، b/183408447).
- تمت إزالة واجهات برمجة التطبيقات غير المستخدمة ذات الصلة بدعم Layout Inspector. (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) - تمت إضافة واجهات برمجة تطبيقات AccessibilityInfo وCollectionItemInfo API التي تسمح بوضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (Id54ef، b/180479017).
- تمت إضافة
SemanticsActions.ScrollToIndex
لتمرير قائمة تحتوي على العناصر المفهرَسة إلى العنصر باستخدام فهرس محدد، وSemanticsProperties.IndexForKey
للحصول على فهرس العنصر في قائمة تتضمن عناصر أساسية. يتم تنفيذ كلا الإجراءين بواسطة LazyList.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndex
الذي يمرّر القائمة إلى الفهرس المحدّد وSemanticsNodeInteraction.performScrollToKey
الذي يمرّر القائمة إلى العنصر باستخدام المفتاح المحدّد. (I4fe63، b/178483889، b/161584524)
- تمت إضافة
- تمت إضافة ownerViewId إلى GraphicLayerInfo (I19f62).
- تمت إضافة Font() بالتحميل الزائد لتحميل الخطوط من الأصول وFile وFileDescriptor (I5d382)
- تمت إضافة واجهة برمجة التطبيقات لتسهيل الاستخدام
error
والتي تسمح بوضع علامة على عقدة تحتوي على إدخال غير صالح (I12997، b/180584804، b/182142737) - تمت إضافة حمل
Font()
زائد لتحميل الخطوط من الأصول وFile و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 text. تم إيقاف الدالة الآن وستتم إزالتها لاحقًا. (I80413)
إصلاح الأخطاء
- تم إصلاح إجراءات التمرير السريع في إمكانية الوصول
ACTION_SCROLL_FORWARD
وACTION_SCROLL_BACKWARD
وaccessibilityActionScrollLeft
وaccessibilityActionScrollUp
وaccessibilityActionScrollRight
وaccessibilityActionScrollDown
. فبدلاً من التمرير إلى نهاية الجزء القابل للتمرير، سيتم تمريره الآن بشاشة واحدة في الاتجاه المحدد. (Ieccb0) - ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع الإصدار 12 من نظام التشغيل Android (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()
على التوالي.- توفير واجهة AnalyzeLocal الكاملة لـ 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 ViewSelecting الآن على
الأجزاء
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
التالية باعتبارها @experimentApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- تمت إضافة عناصر
SemanticsMatcher
التالية: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 أو الإصدارات الأحدث / الإصدار 1.3 والإصدارات الأحدث من Fragment، فهذه الإصدارات لازمة لضبط مراحل نشاط المستخدم والحفاظ على مالكي الحالة المحفوظين المطلوبين لتطبيق ComposeView بشكلٍ صحيح. (I1d6fa، b/161814404) - إصلاح أعطال
rememberSaveable { mutableStateOf(0) }
عند استخدامها داخل وجهة إنشاء التنقل. (I1312b وb/180042685 وb/180701630) - تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة للمقطوعة الموسيقية
LocalSoftwareKeyboardController
بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053) - تم إصلاح NoSuchElementException النادرة في
tearDownRegistry()
فيComposeRootRegistry
(Iddce1)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم إصدار "androidx.compose.ui:ui-*:1.0.0-beta01
". يتضمّن الإصدار 1.0.0-beta01 هذه الالتزامات.
هذا هو الإصدار الأول من Compose 1.0.0 التجريبي.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة رد الاتصال onStart إلى
detectDragGestures
(I67269، b/179995594) - لم تعد مُعدّلات تغيير الحجم حسب القيم الأساسية تجريبية. (I15744)
- تمت إعادة تسمية measureBlocks إلى MeasurementPolicy الذي أصبح واجهة ممتعة. تم تحديث / تبسيط واجهات برمجة تطبيقات التنسيق لاستخدام MeasurementPolicy. (Icab48 وb/167662468 وb/156751158)
- تم استبدال الحقل "
InteractionState
" بـ "[Mutable]InteractionSource
"- تكون الواجهات مسؤولة عن إصدار أحداث التفاعل أو جمعها.
- وبدلاً من تمرير
interactionState = remember { InteractionState() }
إلى مكوّنات مثلButton
وModifier.clickable()
، استخدِمinteractionSource = remember { MutableInteractionSource() }
. - بدلاً من:
Interaction.Pressed in interactionState
، عليك استخدام دوال الإضافات في InteractionSource، مثل InteractionSource.collectIsPressedAsState(). - في حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة تدفق التفاعلات. لمزيد من المعلومات، يمكنك الاطّلاع على مستندات InteractionSource ونماذجها.
- (I85965 وb/152525426 وb/171913923 وb/171710801 وb/174852378)
- إضافة واجهة AccessibilityMananger و LocalAccessibilityMananger في تكوينLocals (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" الآن حجم "MeasurementSize" الذي يمثل الحجم الذي تم قياس التصميم الفرعي له بالفعل. قد لا يراعي هذا الحجم قيود القياس. (Ib2729 وb/172560206 وb/172338608)
- إضافة عنصر تعديل مجموعة selectGroup الذي يسمح بوضع علامة على مجموعة من علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
إنّ السمة
defaultFactory
فيcompositionLocalOf
وstaticCompositionLocalOf
مطلوبة الآن بدلاً من أنّها اختيارية.تؤدي هذه التغييرات إلى إزالة خطأ النوع المحتمل للأنواع غير القابلة للقيم التي لم يتم توفير مصنع تلقائي فيها. كان هذا في السابق يوفر مرجعًا فارغًا لنوع غير قابل للقيم الفارغة.
بالنسبة إلى الأنواع القابلة للقيم الفارغة، يمكنك تقديم
{ null }
كمعامل تلقائي.لا ننصح باستخدام الأنواع المحلية غير القابلة للقيم الفارغة ما لم يتم توفير طريقة تلقائية معقولة. في حال عدم توفُّر إعدادات تلقائية معقولة، يجب أن تعرض دالة
defaultFactory
lambda استثناء. ومع ذلك، فإنّ طرح استثناء يعني أنّ المستهلكين المحليين سيعتمدون بشكل ضمني على المنتجات التي يتم تقديمها ولا يتم فرضها من خلال نظام النوع. (Ifbd2a)تمت إزالة الطرق المتوقفة نهائيًا من وحدات واجهة المستخدم (I646f6).
تمت إعادة تسمية أدوات تعديل الحجم. تمت إعادة تسمية Modifier.width/height/size إلى requiredSetup/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.PreferredOffer/FavoriteHeight/PreferredSize إلى العرض/الارتفاع/الحجم. (I5b414)
تمّت إزالة
Modifier.tapGestureFilter
. يمكنك استخدامModifier.pointerInput { detectTapGestures(...) }
كبديل. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. الطريقة المقترحة لتنسيق الاستهلاك الجزئي هي تمرير Modifier.nested Scroll. (Ie9c9b)
تم نقل الاتجاه إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)
imageResource وvector هما الآن دالتا إضافة على ImageBitmap وImageVector المصاحبَين على التوالي. تم حذف
load{Image,Vector,Font}Resource
دالة. (I89130)تمت إزالة AnimationClockMonitorable والفئات الفرعية. تمت إزالة صورة متحركة Float. (Icde52، b/177457083)
تمت إعادة تسمية مقدّمي الخدمات إلى MembershipLocalProvider.
- لم تعُد الدالة الإنشائية للمقطوعة الموسيقية تقبل مَعلمة رئيسية، وقد تم إيقافها نهائيًا.
- تم تحويل ترميز Currents المُركّب إلى سمة من المستوى الأعلى بدلاً من دالة المستوى الأعلى المركّبة.
- تم نقل بيانات التركيبة والمقطوعة الموسيقية إلى مساحة الاسم androidx.compose.runtime.tooling.
- تم تصميم ComposableLambda كواجهة بدلًا من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
- تم تصميم ComposableLambdaN كواجهة بدلًا من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
- تم نقل دالة drawFlow إلى مساحة الاسم androidx.compose.runtime.
- لم تعُد طريقة دمج SnapshotMutationPolicy تجريبية
- تمت إزالة دالة @TestOnly في المستوى الأعلى clearRoots. لم يعد من الضروري.
- تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعد ضرورية.
- تمت إزالة Composer.collectKeySourceInformation. لم يعد من الضروري.
- تمت إزالة طرق isJoinedKey وjoinKeyLeft وjoinKeyRight. لم تعد ضرورية.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. ونظرًا لدلالات فئة ملف 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. وهو يستخدم الآن واجهة قابلة للتمرير بدلاً من فئة ScrollableController (I4f5a5 ، b/174485541، وb/175294473)
تمت إزالة دعم CustomEvens من PointerInputModifier (I02707، b/175294473).
لم يعُد SnapshotStateMonitorer تجريبيًا بعد الآن (Id2e6a)
حذف بعض واجهات برمجة التطبيقات التي تم إيقافها سابقًا (Ice5da، b/178633932)
تمت إزالة longPressTypeFilter وdodClickOptionFilter. استخدِم Modifier.pointerInput مع الوظائف المساعدة، مثل findTapActivitys (I2fedf، b/175294473).
تمت إزالة الاستخدامات المعادة لهيكلة واجهة برمجة التطبيقات String.format API في العديد من طرق toString لعدم الاستفادة من String.format داخليًا. (Id1290)
تمت إزالة تأكيدات dp (I798d2)
تمت إزالة androidx.compose.runtime:runtime-dispatch (I55feb).
تعمل إجراءات النص الآن على التحقّق من التركيز تلقائيًا (I13777 ، b/179648629)
تمت إزالة
runBlockingWithManualClock
(I15cdc, b/179664814)يتم تمثيل موضع التمرير في Modifier.vertical Scroll()/horizontal Scroll() باستخدام Ints الآن (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
في BottomالتنقلItem إلى ما بعدselected
وonClick
. - تمت إعادة تسمية المعلَمة
alwaysShowLabels
في Bottom NavigationItem إلى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)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة التطبيقات لاستخدام موارد InteractiveVectorDrawable في Compose. استخدِم
animatedVectorResource لتحميل ملف XML بتنسيق
<animated-vector>
كـAnimationImageVector وإضفاء المؤثر الحركي عليه باستخدام 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 الآن تذكُّر مفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل الكوروتين الخاص برصد إدخالات المؤشر في التبعيات الجديدة. (I849cd)
- تمت إعادة تسمية التركيبة الموسيقية إلى تكوين Context (I53fcb).
- تمّت إعادة تسمية الحدود إلى DpRect (I4b32a).
- تحديث الاختبار: سيتحقق hasText() من كل من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803)
- تم نقل viewModel() الذي تم إنشاؤه وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. ستحتاج الآن إلى إضافة تبعية منفصلة androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لاستخدامها. (I7a374)
- السماح باتخاذ إجراء قابل للقيم الفارغة في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من Char منشئي المحتوى إلى سلسلة (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.restricted. (I8b8ea)
- تم إيقاف uploadFontResource. استخدِم fontResource بدلاً من ذلك. تم إيقاف "imageResource" وloadImageResource و"fontResource" و"loadVectorResource" نهائيًا. استخدم PainterResource بدلاً من ذلك. (I6b809)
- لأسباب تتعلق بالأداء، تستخدم الآن دلالات ScrollAxisRange قيم lambdas التي تعرض قيم Floats بدلاً من قيم Float المباشرة. (If4a35، b/178657186)
- تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في حقل النص لإمكانية الوصول وطرق الاختبار المقابلة للتحقق من المعنى (I8e07a)
- تم إنشاء OwnerLayer/OwnerScope/OwnerSnapshotMonitorer داخليًا (I4ffaf، b/175103944)
- تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
- تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
- تم تحديث Snapshot API ليكون أكثر تناسقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات العامة. (Id9e32)
- تمت إضافة إجراءات دلالات "توسيع وتصغير". تمت إضافة عرض "عرض" و"أفني موسّعة" في ModalBottomSheetState (Ib5064)
- تم إيقاف واجهة برمجة التطبيقات Modifier.dragActivityFilter نهائيًا. يمكنك استخدام
Modifier.pointerInput { detectDragGestures (...)}
كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لسحب محور واحد (I0ba93، b/175294473). - تمت إعادة تسمية "وضع الإضاءة السينمائية" لتتناسب مع إعادة تسمية "وضع الاستراحة" -> تكوين محلية. كان يُطلق اسم "أمبيانت" على البيئة المحيطة، أما الآن يُطلق اسم EnvironmentLocals على اسم LocalFoo. (I2d55d)
- تمّت الآن إزالة حقل BaseTextField المتوقّف نهائيًا. يمكنك استخدام BasicTextField بدلاً من ذلك. (I71368)
- تم نقل التحديد إلى الأساس. (I7892b)
- سنزيل
savedInstanceState { 0 }
كتلك التي تتضمنها فيديوهاتك، وذلك مثلما أزلناstate { 0 }
كتلك التي كانت تُستخدَم في السابق، ونحن نعمل حاليًا على الترويج للاستخدام، مثلremember { mutableStateOf(0) }
. يجب استخدامrememberSaveable { mutableStateOf(0) }
بدلاً من ذلك، وسيتم الحفظ والاستعادة تلقائيًا إذا كان النوع المستخدَم داخل MutableState مخزّنًا في الحزمة. إذا كنت تُمرِّر في السابق كائن توفير مخصّص، يجب الآن استخدام حمل زائد جديد للتذكر المحفوظ في الملف الذي يحتوي على معلَمة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 لإلغاء التبديل مع وضع الإغلاق. (Ib6d76)
- تمت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وتمت إعادة تسمية SPACEUiSavedStateRegistry إلى ampSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
- تمت إعادة تسمية Artefact androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac)
- يتم حذف العديد من واجهات برمجة التطبيقات القديمة والمتوقّفة نهائيًا في حزمة واجهة المستخدم. (I2f2dc)
- تم إيقاف عنصر Compose:runtime-dispatch نهائيًا الآن. يمكن الآن العثور على MonotonicFrameClock في الحقل compose:runtime ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)
- إنّ فئات Outline.* لم تعُد فئات بيانات (I4879e، b/178001427)
- تمت إزالة
view.captureToImage()
بدون أي بديل. (I7fcd2) - تم تقديم واجهة برمجة التطبيقات ColorMatrix API المستخدمة لتعديل قيم rgb لمحتوى المصدر Refactored ColorFilter API لتكون واجهة ومطابقة تنفيذ PathEffect. (Ica1e8)
- أضف معلمة schemaDirection إلى سمة createOutline في الشكل. يسمح هذا بإنشاء أشكال تراعي اتجاه التخطيط. (I57c20، b/152756983)
- تم إيقاف onImeActionPerform نهائيًا. يُرجى استخدام Keyboard Actions بدلاً من ذلك (If0bbd وb/179071523).
- وتم طرح عنصر سياق الكوروتين
InfiniteAnimationPolicy
الذي سيتم تطبيقه على الصور المتحركة اللانهائية. وفقًا للإعدادات التلقائية، لا يتم تثبيت أي سياسة إلا عند إجراء الاختبارات باستخدامComposeTestRule
. (I50ec4، b/151940543) - تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
- تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بخاصيةparentCoordinates جديدة. تقدم خاصية parentCoordinates الآن LayoutCoordintes لمعدل التعديل الرئيسي. وهذا سيجعل حالات استخدام أكثر اكتمالاً لـ onSizeChanged() وonGloballyPositioned() (Idfbfd, b/177926591)
- تم إيقاف clickOptionFilter وDoubleTap إِلَىFilterFilter وlongPressOptionFilter و press متصفِّحaitonAnimationFilter نهائيًا. ويمكنك استخدام Modifier.clickable أو Modifier.pointerInput مع وظيفة revealTapالإيماءات بدلاً من ذلك. (I6baf9، b/175294473)
- تمت إزالة الإجراء unregisterProvider الخاص بـ SaveableStateRegistry. بدلاً من ذلك فإن recordProvider() تعرض الآن الكائن SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739)
- renameSavedInstanceState() (I1366e، b/177338004)
- تمت إزالة CoreText و CoreTextField من واجهة برمجة التطبيقات العامة.
- تمت إزالة الحمل الزائد لحاويات التحديد المتوقفة نهائيًا
- (I99c19)
- أصبحت الاختبارات التي يتم فيها استخدام ميزة "الكتابة" في التسلسلات الهرمية التي تتم إضافتها أو إزالتها مباشرةً إلى WindowsManager أكثر ثباتًا. (Ie81ed، b/175765614)
- تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم ضبطه تلقائيًا على أدوات إعادة الإنشاء التي تم إنشاؤها باستخدام طريقة كسول والتي يتم إنشاؤها على نطاق النافذة استنادًا إلى ViewTreeLifecycleOwner للنافذة. يتم إيقاف علامات الرسوم المتحركة المستندة إلى FrameNanos وإعادة الإنشاء مؤقتًا أثناء إيقاف دورة حياة المضيف. (I38e11)
- توفّر Recomposer.runningRecomposers الآن حالة عامة على StateFlow من نوع RecomposerInfo المخصصة للقراءة فقط لمراقبة حالة الإنشاء المستمرة في العملية. أفضّل واجهة برمجة التطبيقات هذه على Recomposer.current() ، والتي تم إيقافها الآن. (If8ebe)
- تم نقل Saver وlistSaver() وmapSaver() والحفظ التلقائي من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
- تقبل أوامر الأمر AnnotatedString. يُرجى العلم أنّ هذا التغيير مخصّص فقط لواجهة برمجة التطبيقات، ولم يتم بعد تنفيذ تعديل النصوص متعددة الأنماط. (I4c3ea)
- تمت إزالة "وقت التشغيل" و"المدة". (Ib9bf4، b/177420019)
- تم نقل AnalyzeData.asTree() وواجهات برمجة التطبيقات ذات الصلة إلى وحدة بيانات ui-tooling-data منفصلة، ووضع علامة عليها تشير إلى أنّها تجريبية (Ic95b8).
- تمت إعادة تسمية معلمات RounderCornerShape وCutCornerShape وCornerBasedShape من اليسار/اليمين إلى البداية/النهاية من أجل دعم النسخ المطابق التلقائي للشكل في اتجاه rtl. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يكون فيها النسخ المطابق التلقائي مطلوبًا. (I61040، b/152756983)
تمت إعادة هيكلة واجهة برمجة التطبيقات التي يستهدفها المكوِّن الإضافي Compose لاستخدام واجهة بدلاً من فئة ملموسة. لم تعد الواجهة تستخدم معلمة type بعد الآن.
هذا تغيير داخلي من المفترض ألا يؤثر في توافق رمز المصدر ولكنه تغيير عطل ثنائي. (I3b922، b/169406779)
إزالة الدالة StringBuilder.deleteAt العامة بدون قصد (Id6ed9)
إصلاح الأخطاء
- تستضيف ComposeView ضمن العروض الهرمية، وهي عناصر فرعية لمقطوعة أخرى، مقطوعات موسيقية فرعية تابعة للأسلاف (I92883).
- تم تحديث واجهة برمجة تطبيقات ImageFromResource الإنشاء لإعادة استخدام ذاكرة التخزين المؤقت القابلة للرسم للموارد عند تحميل كائنات 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)
- تمت إضافة amtiveSavedStateRegistryOwner بشكل مشابه لـ "آمبيانت ليفيك مول" وحساب "أمبيانت فيو ريموللاك" (I9a3e8، b/176756365).
- تم تحديث واجهة برمجة تطبيقات الرسومات المتجهة لدعم تحليل التلوين الخفيف المطبق على جذر الرسومات المتجهة. (Id9d53، b/177210509)
- تمت إضافة ToolType إلى PointerInputChange للتفريق بين الأجهزة (Iac787، b/175142755).
- تمت إعادة تسمية DebianWindowManager إلى ننصحك (I2686a، b/177084714، b/177084983).
- تم إيقاف طرق الإحداثيات العالمية وطرق إحداثيات جديدة مستندة إلى النافذة. (Iee284)
- تمت إضافة Modifier.toolingGraphicsLayer، ما يؤدي إلى إضافة أداة تعديل لطبقة الرسومات عند تفعيل الفحص. (I315df)
- تم تصنيف FocusRequester.createRefs الآن على أنها تجريبية لأنه قد تتغير. (I2d898، b/177000821)
- تمت إعادة تسمية SemanticsProperty إعلانيr.hidden إلى invisibleToUser وتم وضع علامة عليه @PersonalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية StateDescriptionRange لتصبح progressBarRangeInfo. تمت إعادة تسمية Accessibility ScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibility ScrollState إلى horizontal ScrollAxisRange. ثم تمت إعادة تسمية verticalAccessibility ScrollState إلى vertical ScrollAxisRange. (Id3148)
- تمت إزالة PointerInputData وتعديل PointerInputChange لمنحه جميع حقول PointerInputData. تم جعل PointerInputEvent وPointerInputEventData داخليًا بسبب عدم استخدامهما في أي واجهة برمجة تطبيقات عامة. (Ifff97، b/175142755)
- يستخدم GraphicsLayerScope المُحدَّث الكثافة لدعم عمليات تحويل وحدات البكسل غير المرتبطة بالكثافة إلى وحدات البكسل الأولية. (Ied528، b/176819695)
- تم تحديث واجهة برمجة تطبيقات المصفوفة لاتباع ترتيب الصفوف الرئيسي وتوفير ثوابت الفهرس للمساعدة في الإحالات الناجحة بين تمثيلات المصفوفة المختلفة لمطابقة منطق التحويل لإطار العمل بين SkMatrix وMatrix4 داخليًا. (I432e6)
- تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f، b/170708374)
- نقل String.fintPrecedingBreak وString.fingFollowingBreak إلى عبارة "internalTextApi". (I657c4)
- تمت إزالة androidx.compose.ui.util.isSurrogateزوج من واجهة برمجة التطبيقات العامة. (Ia9494)
- تمت إعادة تسمية TransformText.TransportedText ليصبح TransformText.text.
- لم تعُد TransformText فئة بيانات (Ie672a).
- تمت إزالة "
data class
" من الصفَّين التاليَين:- InlineTextContent
- LocaleList (I605c7)
- لم تعُد الفئات التالية فئات بيانات بعد الآن:
- سلسلة AnnotatedString
- نمط الفقرة
- نمط ممتد
- نمط النص
- عرض الخط
- زخرفة النص
- تحويل النص الهندسي
- فهرس النص
- نتيجة تنسيق النص
- TextLayoutInput (Iaff99)
- تغيير VisualTransform ليصبح واجهة وظيفية (I3bba4)
- تمت إضافة نوع معلَمة مرجع الدالة (I5e1bd).
- إضافة حدود تم تحويلها إلى InspectorNode (Ice42f)
إصلاح الأخطاء
- تم إيقاف onCommit وonDispose وonActive لتصبح واجهات برمجة تطبيقات SideEffect وDeposableEffect (If760e)
التغييرات التي طرأت على الوظائف الأصلية للخط/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
من معلَمات دالة الإنشاء في EditBuffer. (I326d5)
- تمت إزالة
تم الآن إيقاف الحلّ المستقل والمؤلف من () الدمج ()) الحاليَين لصالح العنصرَين الحاليَّين الحاليَين (currentRecomposeScope) و"تذكُّر حساب التركيب" ( باعث) على التوالي. (I583a8)
تم تغيير AnnotatedString بحيث يتم توسيعها من kotlin.CharSequence. وبالتالي، أصبحت دوال الطول والتسلسل الفرعي الآن دوال المثيلات، وتتم إزالة دوال الإضافات. (Iaf429)
يحلّ محل SpeakMonitorer محلّ AssessLifecycleMonitorer وتم الآن إيقاف سيطرته AssessLifecycleMonitorer نهائيًا.
RememberObserver
هي بديل لـCompositionLifecycleObserver
بدلالات معدّلة وطرق تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة آليًا للكائنات التي يتم تذكرها مرة واحدة فقط، وهي الممارسة المقترحة ولا تزال. في المقابل، إذا تم تذكّر مرجع معيّن أكثر من مرة في مقطوعة موسيقية معيّنة، سيتم استدعاءonRemembered
لكل مرجع حيث يتم استدعاءonEnter
مرة واحدة فقط. تم استدعاءonEnter
عدة مرات إذا تم استخدام الكائن في تركيبات فرعية، مثلWithConstraints
وScaffold
، ما يجعل ضمان طلبonEnter
الفردي غير موثوق، وتمت إزالته منRememberObserver
.تضيف
RememberObserver
السمةonAbandoned
التي يتم استدعاؤها إذا تم عرض المثيلRememberObserver
من معاودة الاتصال التي تم تمريرها إلىremember
ولكن لم يتم تذكّره في حالة الإنشاء، وبالتالي لن يتم استدعاءonRemembered
مطلقًا. يمكن أن يحدث ذلك إذا أنهى أحد الاستثناءات مقطوعة موسيقية قبل إكمالها أو إذا تم تجاهل المقطوعة الموسيقية لأنّ الدولة تنتج عنها لم تعد سارية أو لم تعُد بحاجة إليها. إذا كان المثال الذي يليRememberObserver
لاقتراح المرجع الواحد أعلاه يتتبّع موردًا خارجيًا بكل منonForgotten
وonAbandoned
، يشير كلٌّ منهما إلى أنّ المورد لم يعُد مطلوبًا. إذا كان الكائن يتتبّع العمل الذي تم بدؤه أو الموارد المخصصة فيonRemembered
، يمكن تجاهلonAbandoned
لأنّه لن يتم طلبه في حال استدعاءonRemembered
. (I02c36)تم إيقاف العمليات الحسابية بين وحدتين نصيتين أو أكثر. تم إيقاف الدالتين TextUnit.Sp وTextUnit.Em مع تفضيل وظائف الإضافات مثل Int.sp وInt.em. (I48369)
أصبحت الموارد في المكتبات التي لا تتضمّن موارد علنية مُعلَنة (على سبيل المثال، عبر public.xml) خاصة تلقائيًا. (Ia1dcc، b/170882230)
تم إيقاف العمل بعمود قابل للتمرير/الصف. يُعدّ استخدام ScrollableColumn أقل كفاءة مقارنةً بـ LazyColumn عندما يكون لديك محتوى تمرير كبير لأنه باستخدام LazyColumn يمكننا إنشاء/قياس/رسم عناصر مرئية فقط. لمنع المستخدمين من اتّباع الطريقة غير الفعّالة، قرّرنا إيقاف العمل بميزة ScrollableColumn و ScrollableRow والترويج لاستخدامات LazyColumn وLazyRow بدلاً من ذلك. سيظل بإمكان المستخدمين اتّخاذ قرار عدم حاجتهم إلى طريقة العمل الكسول، واستخدام أدوات التعديل مباشرةً على النحو التالي: Column(Modifier.vertical Scroll(remember ScrollState())) (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.Inherited. يُرجى استخدام 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)
- تمت إزالة ميزة findMonitorer المتوقفة نهائيًا والتي تستخدم onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9، b/175156387)
- تغييرات واجهة برمجة التطبيقات (EditOperations API)
- تم تغيير اسم الأداة (EditOperation) باسم (EditCommand)
- تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة لـ EditOperation
- لم تعُد فئات البيانات EditCommand's فئات بيانات
- تمت إعادة تسمية دالة EditOperation.process لتطبيق "ApplyTo"
- تمت إعادة تسمية InEventListener إلى enterEventCallback
- (I0a366)
- تمت إزالة عناصر PxSquared وPxCubed وPxInverse غير المستخدمة. تم تغيير Size.center() ليكون خاصية. (I973f7)
- ستتمكن وحدة اختبار واجهة المستخدم الآن من ضبط عملية إنشاء أدوات إعادة التثبيت لواجهات المستخدم التي تخضع للاختبار (Ibebd8)
- السرعة المعدلة للحصول على أجزاء مكونة وعمليات رياضية. (Ib0447)
- تمت إعادة تسمية
@ExperimentalTesting
إلى@ExperimentalTestApi
للتوافق مع التعليقات التوضيحية التجريبية المشابهة لواجهة برمجة التطبيقات (Ia4502، b/171464963) - تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
- تمت إزالة فئات DpInverse وDpSquared وDpCubed غير المستخدمة. (I4d62b)
- تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- إضافة معاودة اتصال لإعلام المالك عند تغيير حدود عقدة التنسيق. (I72fd1)
- تمت إضافة isSpecified وisUnspecificified وuseOrElse في الفئات المضمّنة ذات الثابت غير المحدّد (I93f7b، b/174310811)
توسيع [Abstract]واجهات برمجة تطبيقات ComposeView للسماح بإعادة تدويرها طريقة العرض المستندة إلى الإنشاء، مع التخلص من المقطوعات الموسيقية لإعادة إنشائها لاحقًا أضِف واجهات برمجة تطبيقات لتثبيت "أدوات إعادة الإنشاء" و"مراجع المقطوعات الموسيقية" على مستوى النافذة واكتشافها لإنشاء مقطوعات موسيقية فرعية.
يمكنك إضافة ViewCreationStrategy لإعداد استراتيجية التخلص من المقطوعات الموسيقية لـ [Abstract]ComposeViews؛ حيث يتم التخلص من السلوك التلقائي عند فصل النوافذ. (I860ab)
تمت إزالة Any.identityHashCode() من واجهة برمجة التطبيقات العامة (I025d7).
تمت إزالة toStringAsFixed API لصالح استخدام String.format بدلاً من ذلك مباشرةً. (Iaba6b)
إضافة مفتاح التبديل إلى Foundation Strings.kt (I4a5b7، b/172366489)
تم نقل تقنية originalClass إلى وحدة واجهة المستخدم وجعلها داخلية. تم تحديث استخدامات NativeClass في عمليات تنفيذ تساوي استخدام "is MyClass" بدلاً من ذلك. (I4f734)
تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48 وb/175160751 وb/175160532 وb/175077829)
تم تقديم SelectRegistrar.notifySelectableChange لإبلاغ التحديثات القابلة للاختيار إلى SelectionManager. (I6ff30، b/173215242)
تم إدخال خاصية Outline.bounds للحصول على مستطيل الحدود لعمليات تنفيذ المخططات التفصيلية المختلفة. (I16e74، b/175093504)
TestUiDispatcher تم إيقافه نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)
ImeOptions وKeyboardOptions ليست مرة أخرى فئة بيانات (I3c898، b/168684531)
التغييرات في واجهة برمجة التطبيقات VisualTransformation
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم يعد تحويل كلمة المرور من فئة البيانات
- تم نقل OffsetMapping إلى الملف الخاص بها
- (I0bdf3)
تمت إعادة تسمية الموضع إلى DpOffset وإزالة getمفتاح() (Ib2dfd)
تم تغيير المرح Dp.isFinite() إلى val Dp.isFinite (I50e00).
إصلاح الأخطاء
- تعرض أداة إعادة الإنشاء الآن تدفقًا لحالتها الحالية، مما يسمح بمراقبة نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
- يمكن الآن الوصول إلى keyEvent الأصلي من خلال keyEvent.localizedKeyEvent (I87c57، b/173086397)
- تم استبدال
animate()
الآن بـanimateAsState()
، التي تعرضState<T>
بدلاً منT
. ويتيح ذلك أداءً أفضل، لأنّه يمكن تضييق نطاق الإبطال إلى المكان الذي تتم فيه قراءة قيمة "الحالة". (Ib179e) - أضِف واجهة برمجة تطبيقات دور دلالات الألفاظ، وأضِف الدور كمَعلمة إلى أداة تعديل SemanticsModifier القابلة للنقر والقابلة للاختيار والتبديل. تم تغيير تعديل Modifier.progressSemantics بحيث يمكن لتطبيق Slider استخدامه أيضًا. (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 بدلاً من ذلك. (رقم التعريف: 695)
- تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter، باستخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً من ذلك (Idbf1b، b/175156384)
- تم إيقاف Modifier.focusMonitorer نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 أو b/168511863 أو b/168511484)
- بالنسبة إلى تعليق واجهات برمجة التطبيقات الخاصة بإدخال المؤشر، تمت إعادة تسمية HandlePointerInputScope إلى A وهذا الطلب وhandlePointerInput() إلى a تحققPointerEventScope(). (Idf0a1، b/175142755)
- أصبحت واجهة برمجة التطبيقات للملء التلقائي الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الحصول على موافقة (I0a1ec)
- إضافة إعلانات تدميرية لإنشاء مثيلات FocuSRequester (I35d84، b/174817008)
- تمت إعادة تسمية AccessibilityLabel إلى contentDescription. تمت إعادة تسمية AccessibilityValue إلى StateDescription. (I250f2)
- تمت إزالة الأحداث المخصَّصة من واجهة برمجة التطبيقات الخاصة بإدخال المؤشر (Ia54d5، b/175142755).
- تم تقديم العديد من الدوال الجديدة في SelectionRegistrar وإعادة تسمية ميزة onPositionChange إلى الإشعارPositionChange. (Ifbaf7)
- تم وضع علامة على المزيد من أعضاء LayoutNode كداخلي (I443c6)
- تم تقديم LayoutInfo لاستخدامه من خلال الأدوات والاختبار (I9b190).
- تم إنشاء AndroidOwner داخليًا (Ibcad0، b/170296980)
- تمت إزالة التعليق التوضيحي لـ experimentPointerInput (Ia7a24).
- تمت إضافة نظام التمرير المدمج. يُرجى الرجوع إلى Modifier.nested Scroll لمزيد من التفاصيل (I36e15 ، b/162408885).
- تم إجراء subcomposeInto(LayoutNode) داخليًا (Id724a)
تم تغيير واجهة
Applier
لتبسيط بناء الأشجار من أسفل إلى أعلى بدلاً من الانتقال من الأعلى إلى الأسفل.تمت إعادة تسمية الطريقة
insert()
لتصبحinsertTopDown()
.تمت إضافة طريقة جديدة، وهي
insertBottomUp()
.يدرج تطبيق التطبيق العُقد في الشجرة التي يعدِّلها باستخدام
insertTopDown()
أوinsertBottomUp()
بناءً على أيهما أفضل أداءً.بعض الأشجار، مثل
LayoutNode
وView
، تكون أكثر فعالية بكثير في الإنشاء من أسفل إلى أعلى من أعلى إلى أسفل. قبل هذا التغيير، كانت هناك حاجة إلى حزمة من الإدخالات لتنفيذ الإجراءات من أسفل إلى أعلى، وبالتالي كان يتعيّن نسخها إلى كل تطبيق يحتاج إلى بنية من أسفل إلى أعلى لتعزيز الأداء. بعد إجراء هذا التغيير، ستلغيApplier
insertBottomUp()
لتشكّل شجرة من أسفل إلى أعلى وinsertTopDown()
لبناء الشجرة من أعلى إلى أسفل. (Icbdc2)تمت إضافة خاصيتَي EscOnBackPress و فاخرOnClickOut إلى AndroidDialogProperties. تسمح هذه الإعدادات بالإعداد عند استدعاء onRejectRequest lambda لمربّع الحوار. (If5e17)
تمت إضافة PainterResource API لمعالجة كائنات Painter التي يمكن تحميلها بشكل مبهم من تنسيقات مواد العرض النقطية (مثل PNG) أو VectorDrawables. لم يعُد بإمكان المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم طلب هذه الطريقة للحصول على كائن "Painter" لاستخدامه في مواد الصور أو أدوات تعديل الطلاء. (I2c703، b/173818471)
تمت إضافة Modifier.clearAndSetSemantics لإزالة دلالات التوازي وضبط دلالات جديدة. (I277ca)
تم نقل ContentDrawScope إلى وحدة رسومات واجهة المستخدم لتكون باستخدام DrawScope. (Iee043، b/173832789)
تم تقديم واجهة برمجة تطبيقات رسومات PathEffect لتوفير أنماط مختلفة للأشكال المحددة. تم إيقاف استخدام NativePathEffect لصالح التنفيذ المتوقع/الفعلي لـ PathEffect. (I5e976، b/171072166)
تمت إضافة واجهات IdlingResource إلى Compose، باعتبارها صيغة متغيرة مدعومة في Compose لموارد عدم النشاط في Espresso. يمكن تسجيلها وإلغاء تسجيلها من خلال ComposeTestRule (I433f3).
تمت إزالة التسجيل العام (un) لـ ComposeIdlingResource والتسجيل (un) العام للساعات في ComposeIdlingResource (I32660)
إصلاح الأخطاء
- تعرض منصات Lambdas في معدِّلات الإزاحة الآن IntOffset بدلاً من Float. (Ic9ee5 وb/174137212 وb/174146755)
تمت إزالة واجهة OpenTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. تم وضع علامة عليها سابقًا على أنها internalComposeAPI سابقًا. وهي الآن داخلية في وحدة الإنشاء.
تمت إضافة التركيبة والتكوين التركيبة لها كبديل لواجهة برمجة تطبيقات أدوات واجهة المستخدم لاستخراج معلومات حول التركيبة. وتكون هذه البيانات علنية، ولكن ليس الغرض منها استخدامها خارج واجهة برمجة تطبيقات ui-tooling، لأنّها توفر المعلومات الأولية التي تفسرها واجهة برمجة تطبيقات أداة واجهة المستخدم (I31a9c).
ShaderBrush، بطريقة كسولة، لإنشاء مثيل تظليل عند توفر معلومات تحديد حجم بيئة الرسم. ويفيد هذا في تحديد التدرجات التي تشغل حدود الرسم الكاملة للمادة قابلة للإنشاء في وقت التركيب، بدون الحاجة إلى تنفيذ عمليات تنفيذ DrawModifier مخصّصة.
تم إيقاف واجهات برمجة التطبيقات لإنشاء دالة التدرج لصالح أساليب المصنع على كائن التدرج. (I511fc، b/173066799)
أغلق LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed. استخدِم LazyColumn وLazyRow بدلاً من ذلك (I5b48c).
تم إيقاف العمل بـ BuildCompat.isAtLeastR (Idb37e) نهائيًا
تمت إضافة وظيفة المصنع إلى BuildAnnotatedString من أجل إنشاء 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. تم إنشاء ملف DrawModifier مخطط.kt لتضمين أساليب الكتابة/أساليب المساعدة للمساعدة في عملية الانتقال من واجهة برمجة التطبيقات المتوقفة الحالية إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
- تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer. تم أيضًا تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا لملاحظات واجهة برمجة التطبيقات. (I0bd29، b/173834241)
- تمت إضافة طريقتين جديدتينplaceable.placeWithLayer() وplaceable.placePlaceWithLayer() مما يسمح للتنسيقات المخصصة ومعدِّلات التنسيق بوضع عنصر ثانوي يقدم طبقة رسومات للرسم. بعد أن نتمكن أولاً من تحسين عمليات إعادة الرسم، وعندما نحتاج إلى نقل طفل، لا نضطر إلى إعادة رسم المحتوى، ثانيًا يمكننا تطبيق عمليات تحويل الرسم لطفل (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 الآن يحدد الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستنِدة إلى مواد مختلفة استخدام ألوان EntertainmentTextSelectionColors يدويًا لتخصيص الألوان التي يتم استخدامها للاختيار. (I1e6f4، b/139320372، b/139320907)
- تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف محل التركيز، وأداة WindowFocusMonitorer التي توفر استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
- تم تحديث TransformOrigin API
بحيث تتوفر بنية تدميرية لعرض
pivotFractionX
وpivotFractionY
كـcomponent1
وcomponent2
(If43c4، b/173586560) - تمت إضافة التحقق من الوبر لتحديد تسمية مَعلمات lambda وموضعها للتأكّد من توافقها مع إرشادات الإنشاء.
تم أيضًا نقل بيانات بعض واجهات برمجة التطبيقات باستخدام
children
كاسم لدالة lambda اللاحقة إلىcontent
، وفقًا لعمليات التحقّق من الوبر والإرشادات. (Iec48e) - تمت إضافة واجهة برمجة تطبيقات للتحقق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث رئيسي. (I50ed9)
- تمت إضافة حمل
Modifier.drawLayer()
زائد جديد. حيث يأخذ كتلة lambda في GraphicsLayerScope الجديدة، حيث تُحدِّد معلَمات الطبقة بطريقة تسمح بتخطي إعادة الإنشاء وإعادة التنسيق عند حدوث تغيير الحالة. أصبح DrawLayerModifier الآن داخليًا استعدادًا لنقل منطقه إلى طريقةplaceable.placeWithLayer() من LayoutModifier (I15e9f، b/173030831) - تم إيقاف ميزات "وضع عدم النشاط" التي تحمل اسم "
Ambient
" كلاحقة لها، واستبدلتها بسمات جديدة مسبوقة بعبارة "وضع عدم النشاط"، وذلك باتّباع إرشادات أخرى حول عناصر المحيط والكتابة في واجهة برمجة التطبيقات. (I33440) - تم نقل
androidx.compose.ui.text.Typeface
إلىandroidx.compose.ui.text.font.Typeface
(Ic2b81) - تمت إعادة تسمية وسيطة Sementics integrationAllDescendants إلى mergeDescendants. (Ib6250)
- أداة رصد إيماءة السحب الجديدة التي تعلّق واجهة برمجة التطبيقات للإدخال، بما في ذلك قفل الاتجاه. (Icef25)
- تم تغيير اسم VectorAsset ليصبح ImageVector تم نقله وإعادة تسمية VectorAsset إلى Builder ليكون فئة داخلية من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة typealias لـ VectorAssetBuilder للربط بـ ImageVector.Builder للمطابقة. (Icfdc8)
- أعدت تسمية ImageAsset والطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
- أضِف مَعلمة zIndex لـ PlaceScope() حتى يعمل Modifier.zIndex() الآن كأداة LayoutModifier، ويمكن لأي تنسيق مخصّص ضبط zIndexes لأغراضها الثانوية مباشرةً في مجموعة مواضع الإعلان (I711f7، b/171493718).
- تم نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c)
- تجنَّب استخدام المكان(الإزاحة) والمكان نسبي(الإزاحة). استخدام أحمال زائدة مع إزاحة Int بدلاً من ذلك (I4c5e7)
- تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا: تمت إزالة Modifier.onPositioned، ويمكنك استخدام Modifier.onGloballyPositioned. تمت إزالة Modifier.onDraw، يُرجى استخدام Modifier.onDrawBehind. تمت إزالة Modifier.plus. يُرجى استخدام Modifier.then. تمت إزالة اللون.لم يتم تحديده، يمكن استخدام اللون.غير محدد. تمت إزالة فئة PxBounds، لذا استخدِم Rect بدلاً من ذلك. (Ie9d02، b/172562222)
- تم تحديث واجهة المحاذاة وجعلها تعمل. (I46a07، b/172311734)
- تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار ومؤشر الضغط باستخدام الإدخال الجديد لمؤشر التعليق. بالإضافة إلى ذلك، تمت إضافة بعض الأدوات، ما سهّل على المطورين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
- تمت إعادة تسمية
id
إلىlayoutId
للنطاقLayoutIdParentData
. تمت إعادة تسميةMeasurable.id
إلىMeasurable.layoutId
. (Iadbcb، b/172449643) - أداة جديدة للكشف عن الإيماءات باللمس المتعدّد، تشمل أدوات مساعدة لرصد التدوير والتكبير/التصغير والتحريك. (Ic459d)
- تم تقديم واجهات برمجة تطبيقات SweepGRadentShader وSweepGRadentBrush. (Ia22c1)
- التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماتها) أصبح تجريبيًا الآن (I6ef86، b/171378521)
إضافة واجهات برمجة تطبيقات التمرير المستندة إلى الكوروتين:
لإضافة LazyListState.snapToItem وLazyListState.smooth ScrollBy، بالإضافة إلى واجهات برمجة تطبيقات ذات مستوى أقل للتحكم في التمرير. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكم في التمرير الذي ينتظر حتى ينتهي الانتقال قبل الرجوع إليه. (Ie5642)
يجب إضافة Modifier.focusable إلى "الأساس". واستخدِم هذه السمة لإضافة سلوك يمكن التركيز عليه في المكوِّن، مع استخدام دلالات دقيقة وإمكانية الوصول الصحيحة. (I41eb9 وb/152525426 وb/162865824)
توفير عمليات التنفيذ التلقائية للطرق والسمات في AnimationClockTestRule التي يمكن تفويضها إلى
clock
(I7ea3d، b/173399709)يمكن الآن لـ AndroidComposeTestRule قبول مشغّلات الأنشطة المخصّصة (Ib8288 وb/153623653 وb/154135019)
تم إيقاف TextLayoutResult.getLineVisualEnd نهائيًا. بدلاً من ذلك، يحتوي TextLayoutResult.getLineEnd على معلمة جديدة visibleEnd. (I73282)
واجهة برمجة التطبيقات المُعدَّلة لحقل TextFieldValue
- تم جعل TextFieldValue.composition للقراءة فقط
- تمت إزالة الاستثناء لنطاق التحديد غير الصالح (I4a675، b/172239032)
دعم TtsAnnotation لمحرك تحويل النص إلى كلام. (I54cc6)
واجهات برمجة تطبيقات جديدة لتشغيل الصور المتحركة في الكوروتينات (Ied662)
إصلاح الأخطاء
- تمت إعادة تسمية مَعلمة المحاذاة في Box لتصبح contentAlignment. (I2c957)
- تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. وهي تأخذ الآن معلَمات lambda بدلاً من "الحالة". (Ic3021، b/173594846)
- تمت إضافة المعلمة renameInput إلى TextInputService#onStateupdated (I3e8f5، b/172239032، b/171860947)
- تمت إضافة التحقق من الوبر لمعلمات التعديل في الدوال القابلة للتعديل. تتحقّق عملية التحقّق من الوبر هذه من التسمية ونوع العرض والقيمة التلقائية وترتيب المَعلمة من أجل التوافق مع إرشادات الإنشاء. (If493b)
- تمت إضافة خيار مؤقتًا للسماح بتشغيل TestAnimationClock من خلال MonotonicFrameClock (I1403b، b/173402197)
- تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل نمط الخط Android
عبر دالة
typeface
، أيtypeface(Typeface.DEFAULT)
. تمت أيضًا إعادة تسميةtypefaceFromFontFamily()
إلىtypeface()
(I52ab7) - تمت إضافة فحص الوبر للتأكّد من أنّ وظائف "المعدِّل" الأصلية هي إضافات في "المعدِّل"، وبالتالي يمكن ربطها معًا بطلاقة. (I07981)
- إزالة وحدة اختبار واجهة المستخدم القديمة وملفاتها (I3a7cb)
- لم تعد أداة إعادة الإنشاء تقبل embeddingContext، إذ يتم الحصول على التبعيات المطلوبة الجدولة من activityCoroutineContext. تم إيقاف FrameManager، ويجب أن تؤدي عمليات دمج النظام الأساسي إلى تهيئة معالجة اللقطات العامة. (I02369)
- تمرير معلومات النمط إلى عقدة إمكانية الوصول. (If5e8d)
- تمت إعادة تسمية TextUnit.Inherited إلى TextUnit.غير محدَّد للتناسق مع الوحدات الأخرى. (Ifce19)
إنشاء واجهة المستخدم الإصدار 1.0.0-alpha07
11 تشرين الثاني (نوفمبر) 2020
تم إصدار "androidx.compose.ui:ui-*:1.0.0-alpha07
". يحتوي الإصدار 1.0.0-alpha07 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم فئة مضمّنة في ScaleFactor لتمثيل عوامل قياس للمحورين الأفقي والرأسي
مستقلة عن بعضها البعض من أجل دعم حالات استخدام التدريج غير المُوحّد.
- تمت إضافة طريقةcomputeScaleFactor إلى ContentScale
- تمت إضافة ContentScale.FillBounds لإجراء تحجيم غير موحد لتوسيع حدود src لشغل الوجهة بالكامل.
- تمت إضافة طرق عوامل التشغيل لحساب معاملات ScaleFactor باستخدام مُعلَّمات الحجم.
- (Ic96a6، b/172291582)
- تمت إضافة معاملَي المحاذاة والانحياز والانحياز لإنشاء المحاذاة. (Iac836، b/169406772)
- السماح للمطور بتوضيح التركيز بقوة. (I90372)
- تم إصلاح خطأ يتسبب في عدم رسم الارتفاع لالمشاهدات داخل الإنشاء. (If7782)
- تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
- أضف دعمًا لمسافة الكاميرا لإكمال التحويلات الثلاثية الأبعاد rotationX/rotationY على واجهات برمجة التطبيقات للطبقة. (I40213، b/171492100)
- تمت إضافة حاوية التحديد بدون معاودة الاتصال (Ibfadb).
- تمت إزالة التعليق التوضيحي experimentSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.لاستخدامها (Ied2e7)
- تمت إزالة التعتيم من معدِّل drawShadow() لأنه كان مربكًا. (I82c62، b/171624638)
- تم نقل MeasurementResult خارج MeasurementScope. (Ibf96d، b/171184002)
- تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.caption.ui. (I0fa98، b/170475424)
- تمت إزالة FocusState2 المتوقفة (I686cb ، b/168686446)
- تطبيق ZIndexModifier الآن داخلي (I1808b، b/171493718)
- تم تحديث نوع الإرجاع لطريقة lerp في معلمات الحجم لعرض حجم غير فارغ لتجنب الصناديق غير الضرورية. (Ib0044)
- تمت إضافة TestMonotonicFrameClock لاختبار التعليمات البرمجية التي تعتمد على MonotonicFrameClock من Compose لانتظار أحداث إطار تركيبة الصورة باستخدام اختبار runblockTest في kotlinx-coroutines-test (I4402f).
- تمت إزالة الإيماءاتScope.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 لقبول خيارات لوحة المفاتيح (Ida7f3)
- إعادة تسمية KeyboardOptions بتنسيق ImeOptions (I82f36)
- تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce).
- تمت إضافة "توفيرDefault" كبديل لتوفير "البيئة المحيطة"، ويمكن استخدامه لتحديد القيم المحيطة التي سيتم ضبطها فقط عند عدم تحديد قيمة محيطة. (Id6635، b/171024925)
- تم إيقاف BaseTextField نهائيًا. يمكنك استخدام BasicTextField بدلاً من ذلك. (I896eb)
- تقديم وحدة ui-test-junit4 (Ib91f8)
- تمت إعادة تسمية
relativePaddingFrom
إلىpaddingFrom
. تمت إضافة مفتاح التعديلpaddingFromBaseline
لتسهيل تحديد المسافات من حدود التصميم إلى الأسس النصية الأساسية. (I0440a، b/170633813) - تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق التناسق مع واجهة برمجة تطبيقات SideEffect وDisableEffect. لا يُسمح بـ LaunchedEffect بدون مَعلمات موضوع لتشجيع أفضل الممارسات. (Ifd3d4)
- تم إدخال موارد قابلة لإعادة الإنشاء عند تحديث الإعدادات. (I6387c، b/167352819)
- تتطلب أداة إعادة التركيب الآن CoroutineContext في الإنشاء (Ic4610)
- جمع قيم
zIndex
عند تطبيق قيمModifier.zIndex()
متعدّدة. في السابق، كانت النتيجة الأولى هي الفوز. (Ic514c، b/170623936) - التغييرات التي ستطرأ على طريقة حساب الشرائح الداخلية التي من المفترَض ألا تؤثر في واجهة برمجة التطبيقات العامة. (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 الآن مرجعًا للمقطوعة الموسيقية وأصل مؤلف صالح. يجب الآن إعداد "أداة إعادة إنشاء المحتوى الفاضح" في عدد أقل من الأماكن. (I4036f)
- استبعد VectorPainter لتفضّل تذكرVectorPainter للإشارة بشكل أفضل إلى أن واجهة برمجة التطبيقات القابلة للتكوين "تتذكر" الاحتفاظ بالبيانات عبر التركيبات. (Ifda43)
- تم تحديث واجهة برمجة التطبيقات Modifier.drawWithCache API لعرض ContentDrawScope كنطاق للمستلم بدلاً من DrawScope بهدف توفير إمكانية إعادة ترتيب أوامر الرسم في عمليات التنفيذ. ويفيد هذا في حالات استخدام المزج/التلوين التي يجب فيها عرض وحدات بكسل المحتوى أولاً من أجل تطبيق خوارزمية وضع المزج المقابلة بشكل صحيح. (Ie7ec8)
- نقل SimpleContainer إلى PopupTestUtills.kt (I78c57)
- لم تعُد ConsumedData ضمن فئة البيانات. يمكنك الانتقال إلى https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 للحصول على التفاصيل (I1737f).
- إصلاح موضع مقبض Rtl (I6e1e0)
- إعادة ضبط DrawScope وContentDrawScope ليكونا واجهات
بدلاً من فئات مجرّدة
- تم إنشاء تطبيق CanvasDrawScope لتطبيق DrawScope
- تمت إعادة هيكلة عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً من ذلك
- تم إنشاء DrawContext لتضمين التبعيات في DrawScope
- تمت إزالة الطرق التي تم إيقافها نهائيًا في DrawScope (I56f5e)
- تغيير قد يؤدي إلى عطل: تمت إزالة القيمة المعروضة من
PointerInputFilter.onPointerEvent(...)
لأنّ القيمة الوحيدة التي يمكن تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات منPointerInputFilter.onPointerEvent(...)
، يمكنك الآن تغيير بيانات استهلاك PointerEvents التي تم تمريرها. (I6acd0) - تم إنشاء واجهات MeasurementScope وIntrinsicmeasureScope (I1a087، b/170461665)
- تم إخفاء دالة الدمج لـ SpamLine. (I9da1a وb/170612900 وb/170611568)
- إضافة إمكانية تحديد معلومات المفتش في مفتاح التعديل المركَّب (Idee08، b/163494569)
- تمت إضافة خيار "اختيار الكل" إلى قائمة التحديد (Ief02b).
- تم تحديث DrawTransform.rotate لوضع معلمة محورية افتراضية للوسط لمطابقة الوثائق.
- تم تحديث DrawScope.rotateRad لاستهلاك إزاحة للنقطة المحورية لمطابقة طرق التحويل الأخرى.
- حمل DrawScope.rotateRad المتوقف نهائيًا الذي استهلك أعداد عشرية للإحداثيين س وص للمحور.
- (Iffcbb، b/170434992)
إصلاح الأخطاء
- تم تفعيل واجهة برمجة التطبيقات للتحقق من عدم وجود أخطاء في واجهة برمجة التطبيقات لنظام التشغيل androidx (I4bbea ، b/138602561)
- إضافة اختبار. (I6b8ae)
- يمكنك تفعيل عمليات الانتقال في ComposeTestRule، وإزالة خيار تفعيل المؤشر الوامض من ComposeTestRule. (If0de3)
- تمت إضافة خيار أداة IME للغة لوحة المفاتيح (I8ac38).
- تمت إضافة خيار لوحة المفاتيح ذات السطر الواحد إلى CoreTextField (I72e6d).
- نقل SimpleContainer إلى PopupTestUtills.kt (I65c3e)
- تمت إعادة تسمية واجهة برمجة تطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامه في Compose. مستندات محدَّثة للإشارة إلى أن نصف قطر الزاوية السالبة مُثبَّت بصفر. (I130c7، b/168762961)
- تحسين إمكانية التشغيل التفاعلي لنظام التشغيل Android من خلال مواصلة إرسال MotionEvents إلى مشاهدات Android الثانوية التي تعرض قيمة خاطئة onTouchEvent لكل الإجراءات باستثناء
ACTION_DOWN
(I94c5a، b/170320973) - تم تحويل Box إلى دالة مضمنة. (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 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- إضافة DSL لتحديد معلومات المفتش (Ic9a22)
- نقل ضغطة طويلة إلى نص (Iff2bc)
- معدِّل الإدخال التجريبي "Modifier.pointerInput" (Ia77d2)
- تمت إضافة إجراءات تسهيل الاستخدام النسخ/اللصق/القص (I6db4f).
- تمت إزالة أداة الإنشاء العامة لـ AndroidOwner (Iacaef).
- تكتسب النوافذ المنبثقة ومربّعات الحوار الآن FLAG_SECURE من النافذة الرئيسية. إضافة خيار أيضًا لضبط هذا الإعداد صراحةً (I64966، b/143778148، b/143778149)
أصبحت بيانات الاستهلاك الآن قابلة للتغيير. كذلك، لم تعُد استدعاءات دوال الإضافات التي تستخدم الاستهلاك تعرض الآن PointerInputChange الجديد، ولكن بدلاً من ذلك تغيّر PointerInputChange المُقدَّم.
هذه هي الخطوة الأولى في عملية من خطوتين لجعل بيانات PointerEvent قابلة للتغيير بحيث لا يمكن تعديل بيانات المؤشر الأخرى بواسطة رمز المستخدم. والخطوة الثانية هي إزالة نوع العرض
List<PointerInputChange>
منPointerInputFilter.onPointerEvent(...)
. (Id067e)إيقاف التحديد في النص، والعرض التوضيحي. (Ie7e97)
Made onGloballyPositioned دالة مضمّنة (I15830)
تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier و تمت إعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
تمت إضافة الخاصية hasPendingmeasureOrLayout إلى المالك، لإعلام ما إذا كان لدى المالك أي أعمال تخطيط معلقة. (I3d9f8، b/169038599)
تمت إضافة واجهة برمجة التطبيقات إلى التركيز الواضح آليًا (Ie1dc2، b/161487952)
تمت إزالة
PointerInputFilter.onPointerInput(...)
. يجب استخدام السمةPointerInputFilter.onPointerEvent(...)
بدلاً منها. (I6f04a)التغييرات في الحجم
- تمت إزالة Size.getFlipped
- تمت إزالة Size.rem
- تمت إزالة Size.truncDiv (Ief44d، b/169790720).
كجزء من توحيد قيم العنوان للفئات المضمّنة، يمكنك إعادة تسمية اللون.Unset to Color.غير محدد لالاتساق مع الفئات المضمّنة الأخرى (I97611، b/169797763)
تم تقديم TextOverflow.لا يتم تقديم أي شيء. عندما تكون قيمة overflow هذه بدون قيمة، لن يتعامل Text مع تجاوز overflow بعد ذلك، وسيبلغ حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)
تتم إعادة تسمية مَعلمة النطاق AnnotatedString.Builder.addStringAnnotation إلى علامة من أجل اتساق واجهة برمجة التطبيقات. (I7c8cb)
إصلاح الأخطاء
- يتم تحسين أداء التمرير في LazyColumn/Row من خلال القيام بجهد أقل في الإنشاء الفرعي في كل تمرير. تمت إضافة طريقة hasInvalidations() لفئة التركيب. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
- تم تحديث الحجم.معلمات غير محددة لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تحديث عمليات تنفيذ الطلاء للتحقق من المقاس.غير محدد كذلك للأحجام غير المحدودة. (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)
لم يعد من الممكن قراءة positionScope#parentDisplay وplacementScope#parentLayoutDirection من مجموعة مواضع الإعلانات في التنسيق المخصص. (Icc1ae، b/168295623)
إضافة Accessibility ScrollState إلى خصائص الدلالات. (Ifeda9)
تم تقديم Modifier.drawWithCache لدعم إنشاء كائن رسم يعيد إنشاء التبعيات المشروطة التي تعتمد على معلومات الحجم/الحالة (I376dc)
تمت إزالة قيود الفقرة. يتم تمرير العرض مباشرةً إلى الفقرة الآن. (Ica712)
إصلاح الأخطاء
- تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
- تم تحديث واجهات برمجة التطبيقات للمقياس والتدوير لاستهلاك معلمة الإزاحة واحدة لتمثيل الإحداثي المحوري بدلاً من المعلَمات العائمة المنفصلة للإحداثيات x/y في DrawScope وDrawTransform
- تمت إزالة طريقتي Rect.expandToFrom وRect.join
- تم تحديث وثائق نصف القطر بحيث تشير إلى الشكل البيضاوي بالإضافة إلى جهاز الحركة البيضاوية
- تمت إضافة وثائق للإشارة إلى أن المنشئ العام لفئة نصف القطر المضمَّن لا يتم استدعاءه مباشرةً ولكن يجب إنشاء مثيل لكائنات نصف القطر من خلال الدالة الإنشائية للدوال
- وتمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن topRight وbottomRight وbottomCenter وما إلى ذلك.
- تم إيقاف Rect.shift نهائيًا لصالح Rect.translate
- تمت إزالة واجهات برمجة تطبيقات RoundRect.grow وRect.shrink
- إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
- تمت إزالة طريقتي RoundRect.midRect/tallMiddleRect/wideMiddleRect وRect.isStadium.
- تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
- تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.min متصفّح
- تم تغيير RoundRect.center إلى خاصية بدلاً من دالة
- تم تحديث الدالة الإنشائية RoundRect لاستهلاك خصائص نصف القطر بدلاً من المعلمات الفردية لقيم نصف القطر x/y
- تمت إزالة واجهات برمجة التطبيقات للحجم التي افترضت أنها كانت مستطيلة بالمصدر 0,0
- تمت إضافة واجهة برمجة تطبيقات تخريبي إلى نصف القطر.
- تم نقل دوال إضافات RoundRect المختلفة إلى مواقع بدلاً من ذلك
- (I8f5c7، b/168762961)
- تم إيقاف Foundation.Box نهائيًا. يُرجى استخدام Foundation.Layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
- تمت إعادة تسمية الحزمة إلى Box. سيتم إيقاف الإصدار السابق من Box لصالح Box الجديد في compose.foundation.Formatting. يتمثل سلوك Box الجديد في تكديس العناصر الثانوية واحدة فوق الأخرى إذا كان لديها عدة عناصر فرعية - يختلف هذا عن Box السابق، الذي كان يعمل مشابهًا لعمود. (I94893، b/167680279)
- تم إيقاف مَعلمات زخرفة المربّع نهائيًا. إذا أردت إضافة زخارف أو مساحة متروكة في المربّع، استخدِم "معدلات تعديل" بدلاً من ذلك (Modifier.background أو Modifier.border أو Modifier.adding) (Ibae92 وb/167680279)
- تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
- تم تحديث واجهات برمجة تطبيقات DrawScope بأساليب تحويل النطاق للإشارة إلى أنّه يتم تطبيق التحويل فقط ضمن رد الاتصال وتتم إزالته بعد استدعاء الاستدعاء
- تم تحديث وثائق cutPath للإشارة إلى "المسار" بدلاً من المستطيل الدائري
- التباعد الثابت في وثائق المعلمة اليمنى في ClapPath
- تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة معلمة الحجم
- تمت إعادة تسمية معلمات dx/dy في طريقة الإدراج إلى أفقي وعمودي
- تمت إضافة التحميل الزائد للداخل الذي يوفر نفس قيمة الإدخال لجميع الحدود الأربعة
- تمت إزالة الوثائق المتعلقة بطريقة الإدراج التي تشير إلى أنه سيتم تطبيقه على جميع الجوانب الأربعة
- مستندات معدَّلة لفئة Rect
- تم تحديث التعليقات على معلمات Rect لتتطابق مع نمط kdoc
- تمت إزالة Rect.join وRect.expandToتضمين
- تم إنشاء الحمل الزائد لـ Rect.translate(offset) وإيقاف Rect.shift
- (If086a، b/167737376)
- Annotated الجذرAnimationClockوصوء الانتقالات وblinkingCursorEnabled وtextInputServicefactory باستخدام @VisualForTesting، وجعلها واجهة برمجة تطبيقات داخلية وإخفاء ملفات kdoc (I554eb، b/168308412)
- أزِل حاوية Selectioner (حاويات التحديد) من الجزء العلوي لإيقاف الاختيار التلقائي وتجنُّب السلوك غير المتوقَّع. يمكن للمرء أن يستخدم على وجه التحديد SelectContainer لتضمين المحتوى الذي يجب أن يكون قابلاً للاختيار بدلاً من ذلك. (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) تمت إزالة طرق المشغل في واجهة برمجة تطبيقات الحجم التي تستهلك معلمات الإزاحة. نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقع لها. على سبيل المثال، هل يجب أن يكون الحجم - الإزاحة تُرجع إزاحة أو نتيجة حجم بالفرق؟
تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة المقاس. (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 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- إزالة معاودة الاتصال لإبلاغ المالك عند تغيير حدود عقدة التصميم. (If654e، b/166106882)
- تمت إضافة دعم لمعلمات نوع التعبئة على مسارات الرسومات المتجهة لدعم قطع الأشكال وفقًا لقواعد تعبئة المسار الزوجي أو غير الصفري. (I43dd2)
- أصبح وقت التشغيل والسرعة فئات مضمّنة الآن (I48f4a).
- أصبحت المدة الآن صفًا مضمّنًا (I565eb).
- إضافة معاودة اتصال لإعلام المالك عند تغيير حدود عقدة التنسيق. (Ic40b3)
تم إصلاح مشكلة كانت فيها الدالة الإنشائية لدالة المستطيل التي تعتمد على الإزاحة ونصف القطر قد تُنشئ المستطيل بترتيب اليسار، اليمين، الأعلى، السفلي بدلاً من اليسار، الأعلى، الأيمن، السفلي.
تمت إزالة الطرق المصاحبة المتوقفة نهائيًا في Rect لصالح دوال إنشاء الدوال.
إضافة اختبارات للتحقّق من الطرق في Rect.kt (I08460، b/165822356)
إصلاح الأخطاء
- تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
- تم استبدال المصفوفة 4 بالمصفوفة. تمت إزالة جميع الأجزاء الأخرى من حزمة المتجه. (Ibd665، b/160140398)
لقد تغير اصطلاح الاستدعاء للدوال المكونة. هذا تغيير عطل ثنائي. يجب إعادة تجميع كل المكتبات للعمل مع هذا الإصدار من المكوِّن الإضافي لإنشاء المحول البرمجي.
لا يؤدي هذا التغيير إلى حدوث تغيير في عطل على مستوى المصدر لأن واجهات برمجة التطبيقات التي تم تغييرها هي فقط واجهات برمجة تطبيقات المحول البرمجي التي تحتوي على موافقة صريحة. (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
بدلاً من ذلك إن أمكن لإصدار طرق العرض داخل ميزة "إنشاء". تجدر الإشارة إلى أنّ إنشاء طرق عرض ومجموعات عرض بشكل مباشر لن يكون متاحًا في المستقبل ما لم يتم تركها في شجرة المقطوعات الموسيقية، في حال كان ذلك ممكنًا باستخدام AndroidView. (I29b1e، b/163871221) - تم إيقاف
FocusState2
نهائيًا واستبداله بـFocusState
(Ia8b79 وb/160822876 وb/160923332). - تمت إزالة أعباء AndroidView المتوقفة نهائيًا. (I946b9، b/163802393)
- يمكن أن تشير الانبعاثات المخصّصة الآن إلى أنّه يمكن تخطّي عنصر واحد أو أكثر من أدوات الضبط الخاصة بها وإعادة تركيبها بشكل مستقل عن الانبعاث. (Ibbd13)
تم تغيير فئات المتجه إلى لم تعد فئات بيانات حيث يتم استخدام نفس مثيل الكائن للتكوين.
تمت إضافة علامة 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
تمّت إضافة
mergePolicy
لامدا إلىSemanticsPropertyKey
. ويمكن استخدام هذا لتحديد سياسة مخصّصة لدمج دلالات الدمج AllDescendants. والسياسة التلقائية هي استخدام القيمة الرئيسية إذا كانت موجودة من قبل، وإلا تكون القيمة الفرعية. (Iaf6c4، b/161979921)أصبحت القيود الآن فئة مضمّنة (I88736).
تمت إضافة FocusManager الذي ينقل منطق التركيز الشائع من AndroidComposeView (I528ef، b/161487952، b/162206799).
تم تعديل أسماء PointerEventPass لإصدار "الإصدار الأولي". (Ifda6f)
IntOffset الآن عبارة عن فئة مضمّنة (Iac0bf)
أصبحت IntSize الآن فئة مضمّنة (I2bf42).
تمت إعادة تسمية
PlacementScope.placeAbsolute()
إلىPlacementScope.place()
، كما تمت إعادة تسميةPlacementScope.place()
السابق إلىPlacementScope.placeRelative()
. ونتيجةً لذلك، لن تُظهر طريقةPlacementScope.place()
الموضع تلقائيًا في السياقات من اليمين إلى اليسار بعد الآن. ويمكنك استخدامPlacementScope.placeRelative()
بدلاً من ذلك إذا كنت تريد ذلك. (I873ac، b/162916675)يستخدم تطبيقalertDialog الآن FlowRow للأزرار (I00ec1، b/161809319، b/143682374)
تم جعل بعض مرافق الاختبار غير عامة لأنها ليست في المكان الذي تنتمي إليه. سيتم نشرها بشكل علني في المستقبل. (I32ab1)
إعادة تنظيم رمز إدخال المؤشر. (Ie3f45)
PxBounds المتوقف لصالح Rect. تم تحديث جميع استخدامات PxBounds باستخدام مستطيل وإضافة إيقاف/استبدال مناسب بالتعليقات التوضيحية للمساعدة في عملية الانتقال. (I37038، b/162627058)
تمت إزالة KeyEvent2 المتوقفة نهائيًا. يمكنك استخدام KeyEvent كبديل. (Ied2d0، b/162097587)
يحتوي حدث KeyEvent على خاصية يونيكود يمكن استخدامها للحصول على حرف يونيكود الذي يتم إنشاؤه من خلال مجموعة المفتاح المحددة وحالة المفتاح الوصفي (If3afc)
جعل الحدث المخصّص DelayUp والفئات ذات الصلة موافقة على واجهة برمجة التطبيقات لأنه من المرجَّح أن يتم تغييره. (I56d6f)
تمت إزالة 2 PointerEventPasss اللذين لم يعودا بحاجة إليهما. (I3dd9d)
إضافة لون المعلمة والظل وTextDecoration إلى Paragraph.paint، وهذه الدالة مفيدة لتجنب إعادة إنشاء فقرة بشكل غير ضروري. (I81689)
إصلاح الأخطاء
- تمت إزالة onFocusChanged لمعاودة الاتصال من TextField. استخدِم Modifier.focusMonitorer بدلاً من ذلك. (I51089، b/161297615)
- تم إيقاف Modifier.drawBorder نهائيًا. يمكنك استخدام Modifier.الحد بدلاً من ذلك. تم استبدال فئة البيانات الحدودية بـ BorderStroke (I4257d, b/158160576).
تمت إزالة طلبات FrameManager المتوقفة نهائيًا.
تم تغيير واجهات برمجة التطبيقات الداخلية للإنشاء لتقليل مقدار النفقات العامة لتتبُّع كائنات الحالة مثل
mutableStateof()
(I80ba6)تمت إزالة كل من شريط التمرير العمودي وشريط التمرير الأفقي. وبدلاً من ذلك، يمكنك استخدام ScrollableColumn/Row. تمت إزالة Modifier.drawBack. استخدِم Modifier.background (I73b0d، b/163019183)
يحدث التعطُّل عند إصلاح عنصر يحفظ الحالة داخل حلقة التكرار for. يُسمح الآن باستخدام المفتاح نفسه فيsaveInstanceState()، ويتم الآن ضبط واجهة برمجة تطبيقات UiSavedStateRegistry لهذا الشرط الجديد (I4ab76، b/160042650، b/156853976، b/159026663، b/154920561)
تم إيقاف واجهة برمجة التطبيقات
state { ... }
نهائيًا بهدف إرسال طلبات فاضحة إلىremember { mutableStateOf(...) }
بغرض التوضيح. ويؤدي ذلك إلى تقليل المساحة الإجمالية لواجهة برمجة التطبيقات وعدد المفاهيم لإدارة الحالة، كما يتطابق مع نمطby mutableStateOf()
لتفويض خصائص الفئة. (Ia5727)تمت إعادة تسمية RRect إلى RoundRect ليتناسب بشكل أفضل مع أنماط تسمية الإنشاء تم إنشاء دوال إنشاء وظائف مشابهة للدوال 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)
- تمت إضافة واجهة برمجة التطبيقات AndroidViewSlideing API لتضخيم موارد التنسيق وإنشائها، استنادًا إلى ViewVersioning. (I081c6)
- يتم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
- تمت إضافة توافق مع مفتاح الجهاز البديل (I9036b).
- تم إيقاف FocusManager. استخدِم Modifier.focusRequester() وModifier.focusMonitorer() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
- يتوافق uploadVectorResource مع سمات trimPath (I808fe)
- نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
- تمت إزالة 2 PointerEventPasss اللذين لم يعودا بحاجة إليهما. (I33ca7)
- تم تنفيذ PointerInteropModifier التي توفر القدرة على استقبال MotionEvents والتفاعل مع Compose كما لو كنت تنفذ إحدى طرق عرض Android. (Ieb08c)
- تمت إزالة أداة تعديل العلامة التي تم إيقافها نهائيًا. يُرجى استخدام رقم تعريف التنسيق بدلاً من ذلك. (Idaa05، b/162023919)
- تم تحديث واجهات برمجة التطبيقات للدعم من اليمين إلى اليسار. تمت إضافة ميزة LayoutDirection الإضافية التي يمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)
- قطع مسار الدعم في الرسومات الموجّهة (Ie16c9، b/158188351)
- تمت إضافة Modifier.Layout() الذي يسمح بإنشاء معدِّل تنسيق مخصّص بشكل ملائم (I73b69، b/161355194)
- تمت إضافة واجهة برمجة تطبيقات AndroidView جديدة وإيقاف واجهات برمجة التطبيقات الحالية نهائيًا. (I5bcfd)
- تم إيقاف Modifier.plus نهائيًا، لذا استخدِم Modifier.ثم بدلاً من ذلك. تقدّم علامة "بعد ذلك" إشارة أقوى للطلب، بينما تحظر أيضًا كتابة
Modifier.padding().background() + anotherModifier
، ما يعطّل السلسلة ويصعب قراءتها (Iedd58، b/161529964) - إضافة الفئات الفرعية لعرض ComposeView لاستضافة محتوى Compose في التدرج الهرمي للعرض (I46357)
- أصبحت الترميزات
Row
وColumn
الآن دالّة مضمّنة تقلّل بشكل كبير من عبء استخدامهما. (I75c10) - تمت إضافة SubcomposeLayout. إنها مجموعة أولية منخفضة المستوى تسمح بتكوين العناصر الثانوية أثناء القياس إذا أردنا استخدام بعض القيم المتاحة فقط في وقت لاحق أثناء قياس تركيبة الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
- تمت إضافة
SemanticsNode.positionInRoot
للحصول على موضعSemanticsNode مقارنةً بجذر التسلسل الهرمي Compose (Icdf26, b/161336532) - كانت ميزة MotionEvents من Android إلى Compose، ثم إلى Android مرة أخرى. (I14be8، b/158034713)
- تمت إزالة القائمة المنسدلة. (I00430)
- موضع النافذة المنبثقة ثابت على الشاشات المقصوصة. (Idd7dd)
- إضافة إجراء إمكانية الوصول للحصول على TextLayoutResult (I9d6e6)
- تمت إضافة معدِّل إعادة القياس، وهو يسمح بإعادة قياس التصميم بشكل متزامن. بشكل عام، لا تحتاج إليها أبدًا حيث تحدث إعادة القياس/إعادة التخطيط تلقائيًا، ولكننا نستخدمها داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)
- أزِل getLineEllipsisOffset/getLineEllipsisCount. استخدم getLineVisualEnd/getLineEnd/isLineEllipized بدلاً من ذلك. (I85aa2)
- أضِف بعض "العلامات/التعليقات التوضيحية" لمعرفة أفضل الممارسات. (I66b20)
- عرض المزيد من واجهات برمجة التطبيقات للسطور في TextLayoutResult. (I79bd2)
- يمكن الآن استخدام محوّلات المتجهات المضمّنة لتحويل الوحدات المدمجة من خلال Foo.Vectorconversioner. على سبيل المثال: Dp.Vectorconversioner وColor.VectorAdapter وFloat.Vectorconversioner وما إلى ذلك (I3e273)
إصلاح الأخطاء
- معالجة الإصلاحات العامة لواجهة برمجة التطبيقات (I077bc)
- إزالة واجهة OffsetBase غير المستخدمة
- فئات "محاذاة الإزاحة" و"IntOffset" للحصول على واجهة برمجة تطبيقات متناسقة
- أعد تسمية IntOffset.Origin إلى IntOffset.Zero لتكون متوافقة مع Offset API
- تم نقل طريقة NativeCanvas خارج واجهة Canvas لمساعدة المستهلكين في إنشاء مثيلات Canvas الخاصة بهم
- تم إنشاء فئة stub BlankCanvas لإعادة ضبط DrawScope ليكون معلَمة غير فارغة بدلاً من lateinit مع ضمان عدم إمكانية القيم الفارغة للحقل
- تمت إعادة تسمية تعدادات ClipOp لتصبح حالة Pascal
- تمت إعادة تسمية تعدادات FilterValue لتصبح حالة Pascal
- تمت إعادة تسمية تعدادات Stroke Join إلى حالة Pascal
- تمت إعادة تسمية تعدادات PointMode إلى حالة Pascal
- تمت إعادة تسمية تعدادات PaintingStyle لتصبح Pascal Case
- تمت إعادة تسمية تعدادات PathFillType إلى حالة Pascal
- تمت إعادة تسمية تعدادات StrokeCap لتصبح حالة Pascal
- تم تحديث تنفيذ DrawCache بحيث لا يتم استخدام مَعلمات lastinit بعد ذلك
- تم تحديث DrawScope بحيث لا يستخدم التفويض الكسول للمعلمات الداخلية fillPaint وCTRLPaint
- إمكانية إنشاء صورة معدَّلة لتجنُّب استخدام Box مع تكاليف أقل
- تم تعديل صف Outline لتتضمّن التعليقات التوضيحية @Immutable.
- تم تحديث PathNode ليتضمن تعليقات توضيحية @Immutable لكل تعليمة مسار
- تم تحديث الطفرة الفرعية لـ Vector لإزالة عمليات التحقق الشرطية المتكررة للمساواة حيث يعالجها الإنشاء بالفعل
- طرق إنشاء دالة إنشاء مرافقة مستطيلة تم إيقافها لصالح الدوال الإنشائية للدوال
- تم تحديث فئات Brush ودوال إنشاء الدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable.
- تم تعديل تعداد VertexMode ليصبح PascalCase
- تم تحديث طريقة Drawscope selectPaint لاستبدال معلمات الحد الخارجي بشكل مشروط على الطلاء إذا كانت قد غيّرت
- تم تحديث الحجم لإضافة واجهة برمجة تطبيقات تدمير، ثم إعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدمة
- تم تعديل استهلاك واجهة برمجة التطبيقات BlendMode للربط بشكل صحيح بين وضعَي BlendModes في إطار عمل Android وPorterDuff بناءً على مستوى واجهة برمجة التطبيقات. تم تقديم واجهة برمجة تطبيقات BlendMode#isSupported لتعمل كاستعلام إمكانية لتحديد ما إذا كان BlendMode متوفرًا على الجهاز قبل استخدامه. (I0ef42)
- تمت إضافة LazyItemScope لمَعلمة itemContent للقوائم الكسولة. ويوفّر هذا الوضع تعديلات لملء الحد الأقصى للحجم الرئيسي الذي يحلّ حالة الاستخدام عندما يجب أن يملأ العنصر إطار العرض، ولا يعمل Modifier.fillMaxSize() العادي، لأنّ العنصر يُقاس بقيود اللانهاية. (Ibd3b2، b/162248854)
- تمت إزالة
SemanticsNodeInteraction.performPartialGesture
. يمكنك استخدامSemanticsNodeInteraction.performGesture
كبديل. (Id9b62) - تمت إعادة تسمية
LazyColumnItems
إلىLazyColumnFor
. تمت إعادة تسميةLazyRowItems
إلىLazyRowFor
(I84f84). - تم دمج حزمة
foundation.shape.corner
معfoundation.share
(I46491، b/161887429) - تمت إعادة تسمية
AndroidComposeTestRule
إلىcreateAndroidComposeRule
. (I70aaf) - تمت إضافة المزيد من واجهات برمجة التطبيقات إلى
TextLayoutResult
. (Id7e04) - تمت إعادة تسمية المادة
FilledTextField
إلىTextField
، كما تمت إعادة تسمية الإصدار الأساسيTextField
إلىBaseTextField
لتسهيل اكتشاف واستخدام واجهات برمجة التطبيقات الأكثر بساطة (Ia6242، b/155482676) - تمت إعادة تسمية Modifier.drawBack إلى 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.focusMonitorer" تم إيقاف FocusState وFocusAdvancedState لصالح FocusState2 (I46919، b/160822875، b/160922136)
- تمت إضافة معدِّل لملاحظة التغيُّر في حالة التركيز. (I05866، b/160924455، b/160923326)
- تمت إضافة أداة تعديل لطلب إجراء تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
- يمكنك تعديل قائمة شريط الأدوات لإظهار النسخ والقص واللصق بشكل صحيح. (Id3955)
- تستخدم الآن خصائص الدلالة ذات القيمة الفردية نمط استدعاء.
على سبيل المثال، تمت كتابة 'semantics { مخفية = true }' الآن على النحو التالي:
semantics { hidden() }
. (Ic1afd، b/145951226، b/145955412) - تمت إضافة عنصر Modifier.focus الذي سيحلّ محلّ FocusModifier. (Ib852a، b/160924778)
- إضافة شريط أدوات عائم لتحديد حقل النص (Ie8b07)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لواجهة برمجة التطبيقات ذات الصلة بإدخال المفاتيح (I53c0a).
- تمت إضافة تعليق توضيحي لواجهة برمجة التطبيقات التجريبية لجميع واجهات برمجة التطبيقات ذات الصلة بالتركيز (I53b24، b/160903352).
- تمت إضافة FocusState2 الذي سيحل محل FocusFeatureState (I0a3ba, b/160822595)
- تمت إضافة ميزة تجريبية Focus وهي عبارة عن تعليق توضيحي @OptIn لواجهة برمجة التطبيقات Focus API (I1544b، b/160820961)
- تمت إضافة فئة وحدة IntBounds، التي تمثل حدود وحدات بكسل صحيحة من التنسيق. تم تعديل واجهة برمجة التطبيقات لـ PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
- يتطلب Applier الآن طريقة clear() للتخلص من التراكيب (Ibe697)
- تم إيقاف KeyEvent نهائيًا واستبداله بـ KeyEvent2 (I68730).
- تمت إضافة علامة اختيارية جديدة تستخدم UnmergedTree لاختبار الباحثين. (I2ce48)
- واجهة برمجة تطبيقات Made LayoutNode التجريبية (I4f2e9)
تمت إضافة طرق نسخ إلى أنواع مختلفة من الفئات المضمنة بما في ذلك:
- فرق التوقيت
- حجم الملف
- النطاق
- الحركة
TransformOrigin
طريقة إيقاف الكائن المصاحب Size.copy المعتمَدة لطريقة النسخ من المثيل (Ife290، b/159905651)
تكتسب النوافذ المنبثقة ومربّعات الحوار والقوائم الآن مظهر MaterialTheme السياقي (Ia3665، b/156527485).
تمت إعادة تسمية TextDirection إلى resolvedTextDirection (I3ff38).
تمت إزالة مَعلمة اتجاه التصميم من كتلة القياس للدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل معاودة الاتصال من خلال كائن نطاق القياس (Ic7d9d).
إعادة ضبط الأسماء المعرِّفة لإعادة الاستخدام (I420e0)
تمت إزالة قابلية النقر. استخدام Modifier.clickable (I84bdf)
تم حذف TestTag ودلالة البيانات. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).
قبل إجراء هذا التغيير، كان المكوّن الإضافي لإنشاء المحول البرمجي يعترض بشكل غير ثلاثي عمليات استدعاء الدالة الإنشائية داخل دالة @Composable في حال وجود خطأ (I5205a، b/158123804)
تمت إعادة تسمية Modifier.tag إلى Modifier.lookupId، وذلك لتجنّب حدوث أي التباس مع Modifier.testTag. (I995f0)
مواضع خط المحاذاة Int التي تم إرجاعها من Placeable#get(AlignmentLine) أصبحت الآن غير فارغة. إذا كان خط المحاذاة الذي تم الاستعلام عنه مفقودًا، سيتم عرض ProtectedLine.غير محدد (I896c5، b/158134875)
تمت إضافة مَعلمة تعديل في العنصر AndroidView الذي تم إنشاؤه. (I48a88، b/158746303)
تم إيقاف Semantics() نهائيًا. يمكنك استخدام Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)
أضف viewModel() الذي تم إنشاؤه والذي يسمح بإنشاء أو إنشاء ViewModel سابقًا بشكل مشابه لكيفية عمله في النشاط أو الجزء (I5fdd1)
تم استبدال استخدام IntPx بـ IntPxPosition بدلاً من IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات المقاسات، عليك توحيد استخدام فئة المقاس بدلاً من PxSize. يوفر هذا مزايا الفئة المضمنة للاستفادة من القيمة الطويلة للحزمة والقيمتين العائمتين لتمثيل العرض والارتفاع ممثلين كعدد عشري. (Ic0191)
من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد الموضع، عليك توحيد استخدام فئة Offset بدلاً من PxPosition. يوفر هذا فوائد فئة مضمّنة للاستفادة من قيمة طويلة للحزمة عائمة 2 لتمثيل إزاحة س وص ممثلة كأعداد عشرية. (I3ad98)
تم استبدال استخدام فئة Px في فئات إنشاء مختلفة كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأولية لمعاملات البكسل. تم حذف فئة Px بالكامل (I3ff33).
استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I086f4)
استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (Id3434)
استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I97a5a)
تم إيقاف TestTag نهائيًا الآن. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)
تمت إزالة التنفيذ التلقائي لـ ParentDataModifier#modifyParentData، وهو الأمر الذي كان معادلاً لعدم تنفيذ الواجهة في المقام الأول. (I0deaa)
تم إيقاف ScaleFit نهائيًا سابقًا على أنها تمت إزالتها. استخدِم ContentScale بدلاً من ذلك. (Ifbc5b)
استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I19d02)
تمت إضافة مكون DropdownList في واجهة المستخدم (ui-material)، وهو تنفيذ قائمة في Material Design. (I9bb3d)
تمّت إزالة ميزة LayoutTag() المتوقفة نهائيًا. يُرجى استخدام Modifier.tag() بدلاً من ذلك. تمّت إزالة Modifier.matchParent() المتوقفة نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً من ذلك. (If8044)
استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I57bff)
تم إيقاف Modifier.semantics نهائيًا للسماح باستخدام المكوّنات العالية المستوى. (I4cfdc)
عمليات تنفيذ CanvasScope موحّدة، لذلك أصبح هناك الآن فقط DrawScope وContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة Density وتوفير فئة LayoutDD Deleted DrawScope في ContentDrawScope تم تعديل Painterainter وPainterModifier لعدم صيانته بعد ذلك بخاصية من اليمين إلى اليسار (RTL) لأنّ DrawScope يوفّر ذلك بدون تقديمه يدويًا (I1798e)
الآن يميز أداة DoubleTapActivityFilter الضوء على معلمة IndividualTapAnimationFilter. (If92b1)
تم تعديل واجهة برمجة تطبيقات المحاذاة وإضافة دعم للمحاذاة المطلقة (التي لا تتم المزامنة التلقائية في سياق Rtl) (I38cd3)
تم تغيير واجهة برمجة التطبيقات لمُعدِّلات DrawLayer: تمت إعادة تسمية outlineShape إلى شكل الشكل وأصبح له القيمة التلقائية RectangleShape وهي الآن غير قابلة للقيم الفارغة، وتمت إعادة تسمية KapToOutline إلى مقطع، وتمت إزالةClipToBounds بسبب تشابهه مع المقطع == true مع RectangleShape (I7ef11، b/155075735).
تم تحديث واجهات برمجة التطبيقات ذات المستوى الأعلى التي تعرض "لوحة الرسم" لعرض "CanvasScope" بدلاً من ذلك. فهذا يلغي حاجة المستهلكين إلى الحفاظ على كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا يطلبون الوصول إلى لوحة الرسم، يمكنهم استخدام طريقة الإضافة drawCanvas التي توفّر استدعاءً لإصدار أوامر الرسم باستخدام لوحة الرسم الأساسية. (I80afd)
تم تغيير واجهة برمجة التطبيقات اللاحقة lambda API لـ WithConstraints. بدلاً من معلَمتين، تتضمن الآن نطاق مستلم، بالإضافة إلى القيود وLayoutDirection، توفر خصائص min width وmax width وminHeight وmaxHeight في Dp (I91b9a وb/149979702).
تم تغيير اسم LayoutModifier2 ليصبح LayoutModifier. (Id29f3)
تمت إزالة واجهة LayoutModifier المتوقفة. (I2a9d6)
تتضمّن دوال القياسات الأساسية في "التنسيق" و"LayoutModifier2" جهاز استقبال IntrinsicmeasureScope حاليًا الذي يوفّر واجهة برمجة تطبيقات طلبات البحث الأساسية مع اتجاه التصميم المنتشر بشكل ضمني. (Id9945)
يمكن قياس العناصر الثانوية للتصميم وLayoutModifier باستخدام اتجاه تصميم مختلف. (Ibd731)
تمت إضافة ميزة Modifier.zIndex() الجديدة للتحكم في ترتيب الرسم للعناصر الثانوية داخل نفس التنسيق الرئيسي. وتمت إعادة تسمية خاصية الارتفاع في DrawLayerModifier إلى shadowElevation ولم تعُد تلك الخاصية تتحكّم في ترتيب الرسم. تم تغيير ترتيب المعلمات لـ DrawShadow: الارتفاع هو الآن الأول والشكل هو الشكل الثاني مع ضبط بشكل تلقائي على شكل RectangleShape. (I20150، b/152417501)
تمت إزالة onSizeChange وonPositionChange في المالك. (I5c718)
تمت إضافة Constraints2، وهي نسخة من القيود التي لا تتوافق إلا مع قيم Int connstraints بدلاً من IntPx. ستتم إزالة IntPx وسيتم افتراض أن جميع قيود الأعداد الصحيحة هي وحدات بكسل مثل Android.
- تمت إضافة IntSize أيضًا، والتي ستحل في النهاية محل IntPxSize. (I4b43a)
تم جعل المحاذاة قابلة لإنشاء مثيل باستخدام قيم عشوائية. تمت إضافة محاذاةات الأبعاد الأحادية. (Ia0c05)
تقبل dateToSiblings الآن العنصر "القياس" بدلاً من "Placeable". (I5788d)
-
- تمت إعادة تسمية ScaleFit إلى ContentScale
- تم نقل ContentScale من رسومات واجهة المستخدم إلى وحدة أساسية واجهة المستخدم للتواجد في الوحدة نفسها مثل واجهة برمجة التطبيقات المحاذاة.
- تمت إعادة تسمية ميزة "FillMaxDimension" (الاقتصاص) إلى "الاقتصاص".
- تمت إعادة تسمية ميزة "FillMindimension" إلى Fit
- تم تغيير اسم Fit إلى Inside لتحقيق مطابقة أفضل
- مكافئات ImageView.ScaleType
- تمت إضافة المستندات التي تشير إلى أن الجمع بين الاقتصاص والمحاذاة يؤدي إلى تحقيق نفس النتيجة التي يحققها ImageView.ScaleType.Center_CROP وتطبيق Fit المستخدَم مع SAML.Center، كما يحققان النتيجة نفسها التي يحققها استخدام ImageView.ScaleType.FIT_CENTER يحقق Inside المستخدم مع Listings Center النتيجة نفسها التي يحققها ImageView.ScaleType.CENTER_INSIDE
دعم Rtl لمعدلات الرسم. (I0aaf9)
تم إصدار واجهة برمجة تطبيقات لزيادة عدد مشاهدات Android من ملف XML. يُرجى الاطّلاع على العرض التوضيحي لـ ViewInCompose للحصول على مزيد من التفاصيل. (I42916)
تحسين واجهة برمجة تطبيقات DrawModifier:
- تم إنشاء نطاق المتلقي لـ draw() ContentDrawScope
- تمت إزالة جميع المعلمات في draw()
- لدى DrawScope واجهة مماثلة لواجهة تطبيق CanvasScope
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تمت إضافة positionInParent وboundsInParent لـ LayoutCoordinates. (Icacdd، b/152735784)
DrawLayerModifier و drawLayer() بشكل افتراضي trimToBounds وClipToOutline على false. (I0eb8b، b/152810850)
تمت إعادة تسمية LayoutResult إلى MeasurementResult. (Id8c68)
تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد معدِّلات التنسيق، وتم إيقاف LayoutModifier (If32ac) نهائيًا
تم استبدال المشغّل بالإضافة إلى عامل التشغيل بوظائف الإضافة على الإعدادات الأصلية (I225e4).
تمت إضافة خصائص TranslateX/Y لدعم إزاحة قائمة عرض أوامر الرسم لطبقة معينة. وهذا مفيد لنقل المحتوى استجابة لالرسوم المتحركة أو أحداث اللمس. (I8641c)
تمت إضافة معلمات pivotX وpivotY إلى واجهات برمجة التطبيقات للطبقة لدعم التدوير والتحجيم حول نقطة معينة على طبقة ما (Icf7c3)
أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين OnPositioned وOnChildPositioned المكونتَين. (I2ec8f)
تمت إضافة LayerModifier، وهو مفتاح تعديل يسمح بإضافة RenderNode للتنسيق. تسمح هذه الميزة بالقطع والتعتيم والدوران والتحجيم والظلال. سيحل هذا محل RepaintBoundary. (I7100d، b/150774014)
تم جعل اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العناصر الثانوية. تمت إضافة معدِّل اتجاه التنسيق. (I3d955)
يتوافق مكوِّن التكدس مع الاتجاه من اليمين إلى اليسار (Ic9e00)
الدعم الأولي لـ Rtl في تنسيق Compose (Ia5519)
تم دمج الكثافة ونطاق الكثافة في واجهة واحدة. ويمكنك الآن استخدام DensitySPACE.current بدلاً من إلغاء appdensity() . بدلاً من withDensity(density) (الكثافة) فقط مع(density) (I11cb1)
تم تغيير LayoutCoordinates لجعل availableAlignmentLines مجموعة بدلاً من خريطة وجعل LayoutCoordinates يقوم بتنفيذ عامل التشغيل get() بدلاً من استرداد القيمة. يسهّل ذلك على المعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)
لم تعد ميزة LayoutCoordinates سمة موضع. لا معنى لخاصية الموضع عند التفكير في LayoutModifiers أو التدوير أو الضبط. بدلاً من ذلك، يجب على المطورين استخدامparentCoordinates وchildToLocal() لحساب التحويل من أحد LayoutCoordinate إلى آخر.
تستخدم LayoutCoordinates IntPxSize لخاصية الحجم بدلاً من PxSize. تستخدم التخطيطات أحجام البكسل الصحيحة للتخطيطات، لذلك يجب أن تستخدم جميع أحجام التخطيط أعدادًا صحيحة وليس قيم النقطة العائمة. (I9367b)
تحسينات على واجهة برمجة التطبيقات للقيود (I0fd15)
تم إنشاء واجهة برمجة تطبيقات CanvasScope التي تلفّ عنصر لوحة الرسم لعرض سطح واجهة برمجة تطبيقات للرسم التعريفي وبدون حالة. ويتم تضمين التحويلات ضمن نطاق المستلم الخاص بها وتحديد حجم معلومات التحجيم أيضًا إلى الحدود الداخلية المقابلة. وهي لا تتطلب من المستهلك الاحتفاظ بكائن حالة الطلاء الخاص به لتكوين عمليات الرسم.
- تمت إضافة CanvasScopeعيّن وتم تحديث التطبيق التجريبي لتضمين عرض توضيحي للرسومات (Ifd86d)
تمت إزالة واجهة برمجة تطبيقات MaskFilter API غير المستخدمة لأنها ذات استخدام محدود وليست محسّنة لتسريع الأجهزة في معظم حالات الاستخدام (I54f76).
تم نقل شكل الشكل المستطيل من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات الألوان القابلة للقيم الفارغة في واجهة برمجة التطبيقات باستخدام قيمة غير قابلة للقيم الفارغة واستخدام Color.Unset بدلاً من null (Iabaa7)
تقديم مَعلمة مستطيلة اختيارية إلى ImagePainter لإتاحة رسم قسم فرعي من ImageAsset الأساسي (I0ea9e)
تمت إضافة "عدم تعيين اللون" لتمثيل قيمة غير محددة بدون ألوان الصناديق. (If901a)
تمت إضافة طريقتي التمديد Canvas.rotate وCanvas.scale لاستهلاك الإحداثيات المحورية الاختيارية للتحويلات. يظهر هذان تلقائيًا في الزاوية اليسرى العلوية من ترجمة اللوحة الحالية.
تم أيضًا نقل Canvas.rotateRad ليكون طريقة امتداد للتناسق (Ibaca6)
تم إنشاء واجهة برمجة تطبيقات PixelMap لدعم الاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)
تمت إعادة تسمية toFrameworkRect/toFrameworkRectF ليصبح toAndroidRect/toAndroidRectF لمطابقة اصطلاح التسمية لعمليات تحويل العناصر بين الإنشاء وواجهات برمجة تطبيقات إطار عمل Android التي تم إنشاؤها فوقها. كما تم تحديث المستندات على واجهات برمجة التطبيقات هذه (I86337)
تمت إضافة واجهة برمجة التطبيقات VectorPainter لاستبدال واجهة برمجة التطبيقات للتركيب الفرعي الحالية للرسومات المتجهة. نتيجة الإنشاء الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف مواد DrawVector السابقة لصالح VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) إلى PaintBox(Painter) إنشاء عنصر Vector القابل للإنشاء الذي يعمل كعنصر قابل للإنشاء باستثناء عنصر VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)
تمت إعادة تسمية الصورة إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وصورة الصورة القادمة التي يمكن إنشاؤها للمشاركة في التخطيط والرسم. _Body:تم إنشاء طريقة إضافة على android.graphics.Bitmap، "Bitmap.asImageAsset() ، لإنشاء مثيل لـImageAsset مفيد للجمع بين تطوير تطبيق Android التقليدي وإطار عمل الإنشاء (Id5bbd)
تمت إضافة TextDirection.Content (I48f36).
تمت إضافة عامل تشغيل TextDecoration.plus (I0ad1a).
تمت إزالة
Force
من قيم تعداد TextDirectionAlgorithm (Icc944).تمت إعادة تسمية خوارزمية TextDirectionAlgorithm لتصبح TextDirection (I75ce8).
تنفيذ LongPressAndDrag لتحديد حقل النص. (I17919)
تمت إضافة التعليقات التوضيحية AnnotatedString.getString التي تعرض جميع التعليقات التوضيحية ضمن النطاق. (I1fa00)
تغيير اسم الحزمة للّغة المحلية وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)
مؤشر حقل النص يحتوي على صورة متحركة وامضة (Id10a7)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) لتصبح annotatedString(builder: Builder). (Ia6377)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)
أعد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)
من الممكن الآن إخفاء/إظهار لوحة المفاتيح البرمجية باستخدام SoftwareKeyboardController الذي يتم إرساله من خلال onTextInputStarted callback (I8dc44, b/151860051)
تمت إضافة عامل الجمع لـ (Text/Paragraph/Span)Style الذي يفوض دالة integration(). (Ia1add)
لم يعُد FontWeight.lerp ظاهرًا. لا تزال فئة بيانات. (I521c2)
أصبحت دالة إنشاء FontWeight عامة الآن، ولم تعد فئة بيانات بعد الآن. (Id6b1f)
إضافة getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801)
تمت إعادة تسمية وحدة ui-text لتصبح ui-text-core (I57dec).
تمت إزالة فئة المقاس غير المستخدمة بسبب وجود فئة حجم مكررة في وحدة هندسة واجهة المستخدم قيد الاستخدام. (I1b602)
تمت إضافة AdapterList، وهو مكون قائمة تمرير يتكون فقط من العناصر المرئية ويخطط لها. تتضمن المشكلات المعروفة حاليًا أنه يتم إعداده بالوضع العمودي فقط ولا يعالج بشكل كامل جميع حالات التغييرات التي تطرأ على عناصره الثانوية. (Ib351b)
إضافة فراغات ومَعلمة حدود وشكل وخلفية إلى Box (I05027، b/148147281)
إصلاح الأخطاء
- معاودة الاتصال onFocusChange في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
- تم إيقاف هذين التطبيقين. ويمكنك استخدام ScrollableColumn و ScrollableRow للحصول على تجربة استخدام مضمّنة مع سلوك العمود/الصف ومعلَماته، أو Modifier.vertical Scroll وModifier.horizontal Scroll على عنصرك. وبالمثل، تم إيقاف ScrollerPosition لصالح ScrollState (I400ce ، b/157225838، b/149460415، b/154105299)
- تمت إعادة تسمية
runOnIdleCompose
إلىrunOnIdle
(I83607) - تمت إعادة تسمية العديد من واجهات برمجة التطبيقات للاختبار لكي تكون أكثر سهولة. تمت إعادة تسمية جميع واجهات برمجة تطبيقات FindXYZ لتصبح onNodeXYZ تمت إعادة تسمية جميع واجهات برمجة تطبيقات doXYZ إلىperformXYZ. (I7f164)
- يمكن الآن إنشاء واجهة مستخدم الإنشاء داخل ViewGroups بدون الحاجة إلى إنشاء جديد. للحصول على مثال، يُرجى الاطّلاع على ViewInteropDemo. (I9ab0b، b/160455080)
- تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7).
- نفِّذ مقابض تحديد السحب لتغيير اختيار حقل النص. (I27032)
- تمت إزالة فئة Shader المضمنة التي تضم فئة NativeShader، من المتوقع أن تكون الفئة قد تمت إعادة تسمية NativeShader ليصبح Shader. لم تضيف فئة Shader المضمَّنة، أي شيء ذي قيمة إلى سطح واجهة برمجة التطبيقات، وكانت فئة مضمَّنة، لذا استخدم فئة NativeShader مباشرةً. (I25e4d)
PainterModifier المُعاد هيكلته بحيث لا يوفر إمكانية التوسع استنادًا إلى القيود المحددة ومعلمة ContentScale. تتمثل عمليات تنفيذ Painter في توسيع نطاق محتوى الرسم بذاته بناءً على الحجم المحدد لـ DrawScope الذي يرسمون فيه.
تم إصلاح المشكلة المتمثلة في تغيير حجم الصورة النقطية لذاكرة التخزين المؤقت في VectorPainter إلى حجمها الافتراضي بدلاً من الحجم المحدد للرسم فيه.
تم تحديث ImagePainter لتوسيع نطاق المحتوى بدلاً من الاعتماد على PainterModifier لإجراء ذلك نيابةً عنها. (I6ba90)
إضافة دالة withFrameNanos ذات المستوى الأعلى لتوقيت الرسوم المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked. استبدال بـ @ComposableContract(tracked=false) (Id211e)
تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر النصية TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005).
تم إصلاح المشكلة التي يتسبب فيها إرسال إدخال المؤشر في حدوث عطل في حالة إزالة PointerInputFilters من خلال الإنشاء الفرعي أثناء الفصل. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)
تم إصلاح المشكلة التي يتسبب فيها إرسال إدخال المؤشر في حدوث عطل إذا تمت إزالة PointerInputFilters عبر التكوين الفرعي أثناء الفصل. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)
فئة نصف القطر المعاد تصميمها لتكون فئة مضمنة. تمت إزالة طرق الإنشاء المصاحب لصالح الدالة الإنشائية للدالة ذات المعلمة الافتراضية للحصول على نصف القطر على المحور ص الذي يتطابق مع معلمة نصف القطر الإلزامية للمحور x.
تم تحديث DrawScope.drawRoundRect لاستهلاك معلَمة Radius واحدة بدلاً من قيمتين عائمتين منفصلتين لنصف القطر على طول المحورين "x" و"y" (I46d1b)
لم يعد العنصر القابل لإعادة الإنشاء فكرة عملية تجريدية مفيدة. من المفترض أن تتم معظم عمليات إعادة التركيبة كنتيجة لعمليات تخصيص حالة MutableState. بالنسبة إلى أي شيء بخلاف ذلك، ننصحك باستخدام الدالة
invalidate
لبدء إعادة تركيب النطاق الحالي. (Ifc992)استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (Iede0b)
تغيّر استراتيجية إنشاء الرموز في المحول البرمجي لـ Compose. قبل التغيير، كان المحول البرمجي لإنشاء الإنشاء يحوّل الاستدعاءات إلى دوال قابلة للإنشاء. باستخدام هذا التغيير، نحوّل الآن هيكل الدالة المركبة ونترك موقع الاستدعاء بدون تغيير (في الغالب).
وهذا يعني أن معظم المنطق الذي يتصل بوقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.
ويجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات الإنشاء. بالتالي، يجب ألا يضطر معظم مستخدمي ميزة الإنشاء إلى تعديل أي رمز نتيجة لهذا التغيير.
لدعم هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للتعديل. يتم تحويل دالة قابلة للتعديل تقبل معلَمة واحدة إلى دالة تقبل 3 معلَمات، والمعلَمات الإضافية هي Composer، وهو عدد صحيح لـ "المفتاح"، وهو عدد صحيح لقناع بت يستخدم لنشر البيانات الوصفية من خلال الاستدعاءات.
يحوِّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة قابلة للتعديل. وهو يفعل ذلك بدون تقديم حمل زائد تلقائي اصطناعي للدالة نفسها، وبالتالي سينتج عن هذا التغيير تحديد عدد أقل من الدوال.
حدوث التغييرات السلوكية المتعمّدة المعروفة الناتجة عن ما يلي:
- سيتم تخطي بعض المكالمات من حيث لم يكن يتم إجراؤها سابقًا
- يتم الآن اشتراك التعبيرات القابلة للتعديل في تعبيرات الوسيطات التلقائية ومعالجتها بشكل صحيح.
تضمن هذا العمل بعض التحسينات: 1. ويتم نشر نتيجة مقارنات المعلَمات من خلال الرسم البياني للاستدعاءات في دوال أخرى قابلة للتكوين. سيؤدّي ذلك إلى تقليل المقارنات أثناء وقت التشغيل، وتقليل حجم جدول الخانة، وزيادة تخطّي الدوال القابلة للتعديل التي لم يتم تخطّيها في السابق. 2. تجدر الإشارة إلى أنّ المعلَمات التي يتبيّن أنّها "ثابتة" في وقت التجميع لا تتم مقارنتها أو تخزينها في وقت التشغيل. ويؤدي ذلك إلى تقليل عدد المقارنات وتقليل حجم جدول الشرائح. 3. ويتم استخدام بنية تدفق التحكم في نص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول الخانة وتقليل العمل في وقت التشغيل. 4. لا يتم تضمين معلمات الإرسال والاستقبال غير المستخدمة إلى الدوال عند تحديد إمكانية تخطي الدالة إذا لم يتم استخدامها داخل نص الدالة.
معظم التغييرات التي قد تؤدي إلى أعطال كانت متعلّقة بواجهات برمجة التطبيقات التي يستهدفها المحوِّل البرمجي مباشرةً، ولن يتأثر الاستخدام المعتاد للإنشاء: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمّت إزالة الحمل الزائد لـ
key
. يُرجى استخدام إصدارvararg
من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي المحوري نهائيًا. يمكنك استخدامkey
كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقُّع دالة 3 بدلاً من Function1. 7. تم تحديث RereableFunction وresetableFunctionN لتضمين معلَمات وقت تجميع البيانات الإضافية (I60756، b/143464846)تمت إزالة معدِّلات محاذاة التنسيق المتوقفة نهائيًا. (I10877)
تمت إزالة RepaintBoundary لصالح DrawLayerModifier (I00aa4).
يتوفّر الآن لكل من الزر وFloatingActionButton والزر "قابل للنقر" مَعلمة
enabled
منفصلة. تمت إعادة تسمية بعض المعلمات على "الزر" أو إعادة ترتيبها. (I54b5a)تم استبدال ButtonStyle بدوال مميزة وإزالة الحمل الزائد للنص (السلسلة). يمكنك الاطّلاع على النماذج المحدَّثة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)
تغييرات قد تؤدي إلى أعطال في واجهة برمجة تطبيقات Accessibilitys يمكنك الاطّلاع على سجلّ ومستندات
Ambient<T>
لمعرفة التفاصيل (I4c7ee، b/143769776).تغيير سلوك TextDirection التلقائي بحيث يتم تحديده بواسطة LayoutDirection، أي إذا كان LayoutDirection هو RTL، يكون الاتجاه التلقائي TextDirection هو RTL. كانت في السابق 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).