إنشاء واجهة المستخدم
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(الاطّلاع على المستندات المرجعية لواجهة برمجة التطبيقات لكل حِزم الإنشاء)
التعديل الأخير | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
21 آب (أغسطس) 2024 | 1.6.8 | 1.7.0-rc01 | - | - |
البنية
الإنشاء عبارة عن مزيج من 7 معرّفات مجموعات Maven ضمن androidx
. كل مجموعة
يحتوي على مجموعة فرعية مستهدفة من الوظائف، لكل منها مجموعة من الوظائف
الملاحظات.
يوضح هذا الجدول المجموعات والروابط لكل مجموعة من ملاحظات الإصدار.
مجموعة | الوصف |
---|---|
compos.animation | يمكنك إنشاء صور متحركة في تطبيقات Jetpack Compose لإثراء تجربة المستخدم. |
compose.compiler | يمكنك تحويل دوال @Composable وتفعيل التحسينات باستخدام المكون الإضافي لبرنامج التحويل البرمجي لـ Kotlin. |
composation.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام الوحدات الأساسية الجاهزة للاستخدام وتوسيع الأساس لإنشاء أجزاء نظام التصميم الخاصة بك. |
compose.material | يمكنك إنشاء واجهات المستخدم في Jetpack Compose باستخدام عناصر التصميم المتعدد الأبعاد. وهي نقطة الدخول ذات المستوى الأعلى في Compose، والتي تم تصميمها لتوفير مكونات تطابق العناصر المذكورة في www.material.io. |
compose.material3 | يمكنك إنشاء واجهات المستخدم في Jetpack Compose باستخدام مكونات Material Design 3، وهي المراحل المتطوّرة التالية في Material Design. تتضمّن المادة 3 تصاميم ومكوّنات محدّثة وميزات تخصيص Material You مثل الألوان الديناميكية، وهي مصممة لتكون متوافقة مع النمط المرئي الجديد في Android 12 وواجهة مستخدم النظام. |
compose.runtime | هي الوحدات الأساسية التي يستند إليها نموذج البرمجة وإدارة الحالة في Compose، بالإضافة إلى وقت التشغيل الأساسي الذي يستهدفه المكوِّن الإضافي Compose Compiler Plugin. |
compos.ui | يجب استخدام المكونات الأساسية لواجهة مستخدم الإنشاء للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال. |
إعلان التبعيات
لإضافة تبعية إلى Compose، يجب إضافة مستودع Google Maven إلى مشروعك. الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle
لـ
لتطبيقك أو الوحدة التي تستخدمها:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول العناصر الاعتمادية، يُرجى الاطّلاع على إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى إلقاء نظرة على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية عن طريق بالنقر فوق زر النجمة.
يُرجى الاطّلاع على مستندات أداة تتبُّع المشاكل. لمزيد من المعلومات.
الإصدار 1.7
الإصدار 1.7.0-rc01
21 آب (أغسطس) 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-rc01
. يحتوي الإصدار 1.7.0-rc01 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta07
7 أغسطس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta07
. يحتوي الإصدار 1.7.0-beta07 على عمليات الالتزام هذه.
إصلاح الأخطاء
- ستعرض دوال
SemanticsNodeInteraction
ذات الصلة بالإدخال النصيperformTextReplacement
وperformTextInput
وperformTextClearance
أخطاء تأكيد عند استدعائها في قسم "القراءة فقط"TextFields
. (I4ae8f)
التغييرات الملحوظة
- تشترط وحدة ui:ui الآن أن يكون الحد الأدنى من إصدار الأساس 1.7.0-rc01 على الأقل أو إصدار أحدث. يتم فرض ذلك لحلّ مشكلة عدم توافق السلوك بين واجهة المستخدم والمؤسسة في ما يتعلّق بتغييرات
NestedScrollSource
التي حدثت في وقت مبكر من 1.7.0 إلى alpha01.
الإصدار 1.7.0-beta06
24 يوليو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta06
. يحتوي الإصدار 1.7.0-beta06 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta05
10 يوليو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta05
. يحتوي الإصدار 1.7.0-beta05 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يؤدي فيه تغيير لوحة مفاتيح البرنامج إلى عدم قبول تطبيق
TextField
لإدخالات من لوحة المفاتيح الجديدة إلى أن يتم فقدان التركيز واستعادته. - تم إصلاح مشكلة تسبب محاولات الاحتفاظ بمحتوى الطبقة في حدوث آثار جانبية غير مقصودة عند العرض مع محتوى
SurfaceView
.
الإصدار 1.7.0-beta04
26 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta04
. يحتوي الإصدار 1.7.0-beta04 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تجنُّب الأعطال عند قياس أسطر النص الكبيرة جدًا (على سبيل المثال، 10 آلاف حرف) (8157ab)
- إيقاف إتاحة عرض البرامج لواجهة برمجة تطبيقات
GraphicsLayer
(35ddd8) - إصلاح عطل في منطق ثبات الطبقة. (70b13e)
- تم التراجع عن إعادة استخدام تحسين عناصر الطبقات، لأنّ ذلك تسبّب في حدوث مشاكل في العرض. (70b13e)
الإصدار 1.7.0-beta03
12 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta03
. يحتوي الإصدار 1.7.0-beta03 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta02
29 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta02
. يحتوي الإصدار 1.7.0-beta02 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية
SemanticsProperties.Editable
إلىIsEditable
وتغييرSemanticsPropertyReceiver.editable
إلى قيمةisEditable
. أصبحت السمة الآن منطقية ويتم تحديدها دائمًا من خلال حقول نصية. (I8acd8) - أعِد تسمية مَعلمة قياس أداء تسهيل الاستخدام. (I3d440)
- تم تعديل واجهة برمجة التطبيقات لتنسيق الروابط: أصبحت
TextLinkStyles
الآن جزءًا من الدالة الإنشائيةLinkAnnotation
والطريقةAnnotatedString.fromHtml
(I90b2b). تمت إزالةTextDefaults
من المادة أيضًا (I5477b).
إصلاح الأخطاء
- تمت إعادة تسمية "
LayoutCoordinates.introducesFrameOfReference
" إلى "LayoutCoordinates.introducesMotionFrameOfReference
" لتوضيح الغرض منه بشكل أفضل. تمت إعادة تسمية الدالة ذات الصلة لاحتساب الإحداثيات بناءً على تلك العلامة. (I3a330)
الإصدار 1.7.0-beta01
14 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-beta01
. يحتوي الإصدار 1.7.0-beta01 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية "
performCustomAccessibilityActionLabelled
" إلى "performCustomAccessibilityActionWithLabel
" و"performCustomAccessibilityActionWhere
" إلى "performCustomAccessibilityActionWithLabelMatching
". (I5387f) - أصبح اسم "
AnnotatedString.hasEqualsAnnotations
" الآنhasEqualAnnotations
(I685c0). - تم تحديث واجهة برمجة التطبيقات للحصول على روابط ذات طابع متعدد الأبعاد في نص. وعلى وجه التحديد، تمت إزالة الطرق من
TextDefaults
لإنشاءLinkAnnotations
ذي موضوع معيّن وتحليل رموز HTML باستخدام روابط ذات مواضيع محدّدة. بدلاً من ذلك، تمت إضافة فئةTextLinkStyles
تسمح بتصميم الروابط كمَعلمة في النص القابل للإنشاء. (I31b93)
إصلاح الأخطاء
- إصلاح حالات الاستخدام الإضافية عند إضافة مفاتيح تعديل إدخال المؤشر ديناميكيًا أثناء الأحداث 63e1504
الإصدار 1.7.0-alpha08
1 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha08
. تحتوي الإصدار 1.7.0-alpha08 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- يضيف دعمًا لعمليات تنفيذ الأشكال القابلة للتغيير. تتم ملاحظة
Shape#createOutline
الآن داخل طبقات الرسومات، لذا ستؤدي قراءة قيم الحالة بالداخل إلى إلغاء عمليات الإلغاء عند تغيير الحالة، ما يتيح إنشاء صور متحركة بشكل أفضل. (Id1629، b/326070216) - تمت إعادة تسمية "
isPositionedByParentWithDirectManipulation
" إلى "introducesFrameOfReference
". يُرجى العِلم أنّ لهذه السياسة الآن تأثير عكسي، أي أنّ معظمLayoutCoordinates
تقدِّم تلقائيًا إطارًا مرجعيًا، وتكون السمة "خطأ" فقط عندما يتم وضعها تحت التلاعب المباشر. لطلب البحث عن موضع مع تلك التي تقدم إطارًا مرجعيًا فقط، استخدِمpositionInLocalFrameOfReference(...)
. أوpositionInLocalLookaheadFrameOfReference
منLookaheadScope
. (Ifc5f7) - تم جعل
LookaheadScope
واجهة برمجة تطبيقات ثابتة (I21507) - تغيير الإجراء lambda في
getScrollViewportLength
وفقًا لملاحظات مجلس واجهة برمجة التطبيقات. (Ibc74a) - تم تعديل واجهات برمجة التطبيقات لمخطط
GraphicsLayer
لاستهلاك المعلَمات العائمة بدلاً من int. تمت إزالة قيم حارسUnsetOffset/UnsetSize IntSize
لصالح الثوابت غير المحدَّدة المتوفّرة حاليًا في فئات المحتوى المضمّن والمعادلة المستندة إلى القيمة العائمة (I2fb03 وb/333863462). - عند إدخال البيانات بالماوس أثناء الاختبارات، يتم الآن قبول معلَمة
button: MouseButton
فيMouseInjectionScope.click()
وMouseInjectionScope.doubleClick()
وMouseInjectionScope.tripleClick()
وMouseInjectionScope.longClick()
لجعلها أكثر قابلية للتطبيق على مستوى العالم. القيمة التلقائية هيMouseButton.Primary
لجميع الطرق. (I31a23، وb/190493367، وb/261439695) - تمت إعادة تسمية "
onClicked
" إلى "onClick
" داخلLinkInteractionListener
. (Iaa35c) - إعادة تسمية "
TextInclusionStrategy.isInside
" إلى "isIncluded
" جعل نوع الإرجاعParagraph/MultiParagraph#getRangeForRect()
غير قابل للقيم الفارغة. (I51f26)
إصلاح الأخطاء
- تم إصلاح التقاط لقطات شاشة طويلة في حاويات التمرير باستخدام
reverseScrolling=true
. (I7c59c)
مساهمة خارجية
- تمت إضافة إمكانية الجلب المسبق للعناصر في
LazyLists
المدمجة (مثلLazyColumn
الذي يعرضLazyRows
مدمَجة). من المتوقّع أن يؤدي هذا التغيير إلى تقليل انخفاض عدد اللقطات في الثانية أثناء التمرير لهذهLazyLists
. الإعداد التلقائي للتنفيذ هو جلب أول عنصرين مدمجين، ولكن يمكن التحكّم في هذا السلوك من خلال واجهتَي برمجة التطبيقاتLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
وLazyListPrefetchStrategy#onNestedPrefetch
الجديدتَين. (I51952)
الإصدار 1.7.0-alpha07
17 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha07
. يحتوي الإصدار 1.7.0-alpha07 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تم وضع علامة متوقّفة نهائيًا على تطبيق
ClickableText
. لإضافة روابط إلى النص، يمكنك إنشاءAnnotatedString
معLinkAnnotation
يقابل الرابط وتمريرAnnotatedString
إلى النص القابل للإنشاء. (I34d4b، b/323346994) - أدخِل
ViewConfiguration.HandwritingGestureLineMargin
لإيماءات الكتابة بخط اليد. دعم إيماءة "JoinOrSplit
" للوحدة التنظيمية "BasicTextField
" (Ie6e13، وb/325660505) - لم يعُد
FocusProperties.enter
وFocusProperties.exit
في مرحلة تجريبية. لم يعُدFocusDirection.Enter
وFocusDirection.Exit
في مرحلة تجريبية.FocusRequester.Cancel
لم يعد تجريبيًا (I461a1، b/261564106) - عند طلب البحث عن إحداثيات التنسيق، يمكنك الآن استخدام الوسيطة
excludeDirectManipulationOffset
لاستبعاد الإزاحة التي تم ضبطها من خلال التنسيقات الرئيسية التي وضعت عناصرها الثانوية باستخدامPlaceable.PlacementScope.withDirectManipulationPlacement
. وبالمثل، فإنّ التنسيق الذي يغيِّر موضع العناصر الثانوية كثيرًا قد يضعها الآن باستخدام ميزة "withDirectManipulationPlacement
" (مثل "التمرير"، يتم تنفيذها تلقائيًا). يساعد هذا الإجراء في جعل الصور المتحركة المستندة إلىapproachLayout
أكثر سهولة، وأصبح بإمكان المستخدم الآن التمييز بين التعويض الذي سيتم إنشاؤه من خلال الصور المتحركة، والعناصر التي يمكن تطبيقها مباشرةً عند اتخاذ قرار تعديل أسلوب الحركة. (I60ec7) - تمّت إزالة علامة الميزة الخاصة بلقطات الشاشة الطويلة. (I28648، b/329128246)
- سيعرض تطبيق
LazyColumn
الآن العناوين الثابتة بشكل صحيح في لقطات الشاشة الطويلة. (I8d239، b/329296635) - سيتم استبدال ميزة "السحب والنقل" لـ
NestedScroll
بـUserInput
وSideEffect
لاستيعاب التعريف الموسّع لهذه المصادر التي تتضمن الآن الصور المتحركة (التأثير الجانبي) وعجلة الماوس ولوحة المفاتيح (UserInput
). (I40579) - أصبح
ApproachLayoutModifierNode
وModifier.approachLayout
ثابتًا الآن، وتحلّisMeasurementApproachInProgress()
وisPlacementApproachInProgress()
محلّisMeasurementApproachComplete()
وisPlacementApproachComplete()
القديم على التوالي. - تمت إزالة مفتاح التعديل
intermediateLayout
المتوقّف نهائيًا. (I3e91c) - أعِد تسمية "
GraphicsLayer#buildLayer
" للتسجيل بهدف محاكاة طريقتَي البدء/endRecording لواجهات برمجة التطبيقات المتوافقة مع قائمة العرض، مثلRenderNode
وPicture. - تم تعديل
rememberGraphicsLayer
للاستفادة منrememberObserver
. (I312c1، b/288494724، b/330758155) - تم إيقاف
UrlAnnotation
نهائيًا، ويمكنك استخدامLinkAnnotation.Url
بدلاً منه. إذا كنت تستخدم تصاميم "المادة الأساسية"، استخدِم كائنTextDefaults
لإنشاء تعليق توضيحي مع تطبيق "نسق المواد" عليه (I8d180 وb/323346545). - تم توفير خيار نمط حالة الضغط على الروابط النصية بالإضافة إلى النمط العادي، حيث تم التمرير والتركيز على الروابط النصية (I5f864، b/139312671).
- تمت إعادة تسمية "
String.parseAsHtml
" إلى "AnnotatedString.Companion.fromHtml
". (I43dcd) - تمت إضافة وسيطات النمط (
linkStyle
،focusedLinkStyle
،hoveredLinkStyle
) وأداة استماع للتفاعل مع الرابط إلى طريقةparseAsHtml
. عند تحليل السلسلة التي تحمل علامة HTML باستخدام علامات<a>
، ستنشئ الطريقةLinkAnnotation.Url
لكل علامة من هذا النوع وتمرر كائنات الأنماط وأداة استماع التفاعل للرابط إلى كل تعليق توضيحي. (I7c977) - يحصل
LinkAnnotation
الآن على وسيطات النمط المستندة إلى الحالة وLinkInteractionListener
. أضِف هذا التعليق التوضيحي إلىAnnotatedString
للحصول على رابط تشعّبي. من خلال تمريرfocusedState
و/أوhoveredState
، يمكنك تحديد السمةconfiguration
المرئية للروابط عندما يتم التركيز عليها و/أو تمرير مؤشر الماوس فوقها. (I81ce4، b/139312671) - لم يعُد
ImeOptions.hintLocales
قابلاً للقيم الفارغة. إذا أردت تمرير قائمة لغة فارغة، يُرجى استخدامLocaleList.Empty
. (Ic5bc4)
إصلاح الأخطاء
- تتعامل بسلاسة مع بيانات أحداث الإدخال السابقة السيئة أو التالفة (وتتجاهل بيانات الإزاحة السيئة).
- إصلاح أحداث المؤشر غير المتوقعة عند إضافة معدِّل إدخال المؤشر ديناميكيًا قبل معدِّل إدخال مؤشر آخر أثناء بث أحداث إدخال مؤشر نشط (على سبيل المثال، بين إدخال تمرير وخروج مرِّر [الماوس/قلم الشاشة]).
الإصدار 1.7.0-alpha06
3 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha06
. تحتوي الإصدار 1.7.0-alpha06 على عمليات التنفيذ هذه.
الميزات الجديدة
- تمت إضافة طريقة
parseAsHtml
للسلاسل ذات الأنماط: تسمح بتحويل السلسلة التي تم وضع علامات HTML عليها إلىAnnotatedString
. يُرجى ملاحظة أنّه لا تتوفّر كل العلامات، على سبيل المثال، لن تتمكّن من عرض قوائم التعداد النقطي بعد. (I84d3d، وI30626، وb/139326648) - تم تنفيذ الدعم التجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة تطبيقات Android الرسمية (
ScrollCaptureCallback
). هذه الميزة تجريبية وقد لا تتعامل حاليًا مع جميع الحالات بشكل صحيح. ولهذا السبب، تم إيقاف الميزة تلقائيًا في الوقت الحالي. للموافقة، اضبط علامةComposeFeatureFlag_LongScreenshotsEnabled
على "صحيح". (I2b055، b/329296471)
التغييرات في واجهة برمجة التطبيقات
- تم تغيير قيمة
fun ClipEntry.getMetadata()
إلىval ClipEntry.clipMetadata
. (I50155) - تمت إزالة الدالتَين
ClipboardManager.getClipMetadata
وClipboardManager.hasClip
. يُرجى استخدامclipEntry.getMetadata()
لقراءة البيانات الوصفية لإدخال المقطع الحالي. تحقَّق أيضًا من نتيجةClipboardManager.getClip
إذا كانت فارغة أو لا لمعرفة ما إذا كانت الحافظة تتضمّن مقطعًا حاليًا. (I50498) - يمكنك الآن تمرير كائنات
GraphicsLayer
إلى دوالplaceable.placeWithLayer()
(I1b22f) - يقبل
ClipboardManager.setClip
الآن القيمة "فارغة" لتتمكّن من محو الحافظة. (I7d2e9) - إضافة أرقام تعريف الموارد للمساعدة في إخفاء الملفات الشخصية المستخدمة كتفاصيل تنفيذ ضمن أدوات التصميم (I99531)
- تمت إضافة طريقة التعليق
GraphicsLayer#toImageBitmap
لدعم عرض محتوى الصورة النقطية فيGraphicsLayer
. يوفّر ذلك عملية عرض مسرَّعة للأجهزة على المستوى 22 من واجهة برمجة التطبيقات أو الإصدارات الأحدث (شاملةً) التي تتوافق مع أكثر من 99% من جميع أجهزة Android. وفي المستوى 21 من واجهة برمجة تطبيقات Android، يعود ذلك إلى عرض البرامج. (I9e114) - طريقة مساعدة لتحويل
RectF
من جهاز Android إلىComposeRect
(I39925 وb/325660505) - تحتوي جميع مَعلمات
KeyboardOptions
الآن على قيمة غير محدّدة تلقائيًا. تمت إضافة طريقةKeyboardOptions.merge
. - تمت إعادة تسمية "
KeyboardOptions.autoCorrect
" إلى "autoCorrectEnabled
" وجعلها قابلة للإلغاء، حيث تشير القيمة "فارغ" إلى عدم تحديد أي قيمة. (Ia8ba0، b/295951492) - يستخدم كل من الصيغة
BasicTextField(state)
وBasicSecureTextField
الآنKeyboardActionHandler
بدلاً منKeyboardActions
لمعالجة الإجراءات التي تتخذها لوحة المفاتيح البرمجية. (I58dda)
الإصدار 1.7.0-alpha05
20 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha05
. تحتوي الإصدار 1.7.0-alpha05 على عمليات التنفيذ هذه.
الميزات الجديدة
- تم إدخال واجهة برمجة تطبيقات
GraphicsLayer
جديدة لتسجيل أوامر الرسم في قائمة العرض، بالإضافة إلى السمات الإضافية التي تؤثر في عرض قائمة العرض. يوفر ذلك حدودًا منعزلة لتقسيم مشهد معقد إلى أجزاء أصغر يمكن تعديلها كل على حدة دون إعادة إنشاء المشهد بأكمله. ويمكن إجراء عمليات التحويل إلىGraphicsLayer
بدون إعادة تسجيل قائمة العرض. على عكسModifier.graphicsLayer
، يسمحGraphicsLayer
بعرض المحتوى القابل للإنشاء في مكان آخر، كما يكون مفيدًا في حالات استخدام الرسوم المتحركة حيث من المتوقّع عرض المحتوى في مشاهد مختلفة.
التغييرات في واجهة برمجة التطبيقات
- لم يعد
GraphicsLayer.draw(Canvas)
واجهة برمجة تطبيقات عامة. يُرجى استخدام دالة الامتدادDrawScope.drawLayer(GraphicsLayer)
بدلاً من ذلك لرسم الطبقة. (I7a7c0) - تقسيم
restrictedConstraints()
إلى طريقتَين:fitPrioritizingWidth()
وfitPrioritizingHeight()
(I6d7fd) - تم تقديم مستند تعريف الارتباط
HardwareCanvas
لاستخدام Android L (I1c3b5، b/288494724) - يجب تعديل إطار عمل الإنشاء لعرض المقطوعة الموسيقية
GraphicsContext
على الجهاز مع تعديل عمليات تنفيذ معدِّلات المالك وDelegateableNode
وdrawWithCache
، وذلك من أجل عرض إذن الوصول إلىGraphicsContext
للوصول على مستوى نطاق واسع، ما سيؤدي إلى محوGraphicsLayer
حالة تلقائيًا عند إيقاف مفاتيح التعديل. (I64a2f، b/288494724) - تم تقديم
InterceptPlatformTextInput
للمساعدة في كتابة الاختبارات المنخفضة المستوى المتعلّقة بأداة IME وغيرها من حالات الاستخدام المنخفضة المستوى الخاصة بأداة IME. تم إيقافPlatformTextInputTestOverride
نهائيًا. (I862ed، b/322680547) - تم إضافة دالة الإضافة
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - إدخال الدالة الإنشائية للدالة
GraphicsContext
لإنشاء مثيلات بالآلةGraphicsLayer
(Ib98d6 وb/288494724) - تم عرض واجهة برمجة التطبيقات
GraphicsLayer
لتوفير المرونة التي يحدّدها المطوّر في تسجيل أوامر الرسم التي يمكن استخدامها للرسم في أماكن أخرى وتطبيق تأثيرات مرئية مختلفة على النتيجة النهائية. (I80245، b/288494724) - قدِّم
Paragraph#getRangeForRect
الذي يعرض نطاقًا من النصوص يغطيه مساحة مستطيل معيَّن. (Iee516، b/325660505) - تمت إزالة الإلغاء التجريبي للسمة
BasicText
مع الوسيطةonLinkClicked
. وسيتم في المستقبل استخدام واجهة برمجة تطبيقات بديلة لإتاحة الروابط التشعّبية. (I107d5)
إصلاح الأخطاء
- تمت إضافة تعريف واجهة برمجة التطبيقات المتوقعة/الفعلية في
GraphicsLayer
لإتاحة التقاط أوامر الرسم وإعادة تشغيلها، مع إمكانية تركيب تأثيرات مرئية وعمليات تحويل اختيارية. إدخال واجهةGraphicsContext
تحتوي على اعتماديات الرسومات، بما في ذلك إنشاء مثيلاتGraphicsLayer
وإدارتها. (I4a8d6، b/288494724) - تم إصلاح مشكلة إمكانية التشغيل التفاعلي في البحث عن التركيز أحادي البُعد، حيث يكون التركيز عالقًا داخل
ComposeView
مضمّن بين طرق عرض أخرى. (I08fd4)
مساهمة خارجية
- تم نقل
LocalLifecycleOwner
من واجهة مستخدم Compose إلىlifecycle-runtime-compose
كي يتم استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة Compose. شكرًا لـ "جيك وارتون" على هذه المساهمة. (I6c41b، b/328263448) - اعرض بشكل ثابت الخصائص العائمة للتحيز على جميع الأنواع الفرعية للمحاذاة القائمة على التحيز. (I69f0f، b/328088992)
الإصدار 1.7.0-alpha04
6 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha04
. يحتوي الإصدار 1.7.0-alpha04 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- إتاحة ميزة الكتابة بخط اليد بقلم الشاشة في BasicTextField2 على الأجهزة بعد Android U (I002e4)
- في CL هذا، نضيف الإجراء الدلالي
GetScrollViewportLength
حتى نتمكن من تمرير المعلومات حول المكوّنات التي يتم تمريرها في إنشاء إلى نظام a11y. تُطبق CL هذه أيضًا استخدام الخاصية المذكورة في قوائم الوظائف القابلة للتمرير في الأساس. (Ic5fa2) FocusRequester.createRefs
ثابت الآن (I4d92c، b/261436820)- تم تقديم
DelegatableNode.requireView()
للسماح لعُقد التعديل بالحصول على الإصدارView
الحالي من نظام Android بدون قراءة تركيبة محلية. (I40768) - واجهة برمجة التطبيقات
Path.reverse()
الجديدة لعكس اتجاه المسار (I36348) - تمت إضافة
hintLocales
إلىKeyboardOptions
لإتاحةTextFields
لتعديل أدوات IME بلغات معيّنة لضبط لغة مفضّلة. - اعرض السمة
platformLocale
منLocale
الذي يعرض كائن النظام الأساسي الأساسي، على سبيل المثال.java.util.Locale
(I921c6)
الإصدار 1.7.0-alpha03
21 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha03
. يحتوي الإصدار 1.7.0-alpha03 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- نقدّم لك
ContextualFlowRow
وميزةFlowRow
/Column
المحسّنة مع MaxLines و Overflow. يسرّنا الإعلان عن تحسينات على الإصدارَين التجريبيَينFlowRow
وFlowColumn
، اللذان يتضمّنان الآن maxLines وإمكانية تجاوز الميزات، وذلك بالتزامن مع إطلاق الإصدارَينContextualFlowRow
وContextualFlowColumn
. تم تصميم هذا التحديث لتوفير أفضل أداء ممكن، حيث تُعدّ السمةContextualFlow*
مثالية لعدد كبير من العناصر التي تستخدم إعدادmaxLines
صغيرًا، بينما تعرض ميزتا +N الديناميكي عددًا أكبر من الأزرار، ويشكّل كل منFlowRow
وFlowColumn
خيارَين مثاليَين لعدد صغير من العناصر التي تقلّ عن 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRow
أوFlowColumn
حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتوافق مع الحد الأقصى للمحور المتقاطع، اضبطoverflow
علىFlowRowOverflow.Visible
أوFlowColumnOverflow.Visible
أثناء الإعداد. يمكنك استكشافContextualFlowRowSample
وFlowRowSample
للحصول على أمثلة على هذه الميزات الجديدة عمليًا. (Ib9135، b/293577082) - أضِف سمة دلالات
maxTextLength
التي يجب ضبطها في حقول النصوص التي تعمل على فلترة الحد الأقصى المسموح به من عدد الأحرف. (I24d9f، b/170648072) - تم إيقاف برنامج تضمين
Modifier.inspectable
نهائيًا. ستؤدي واجهة برمجة التطبيقات هذه إلى إنشاء عدد أكبر من عمليات إلغاء التعديل الخاصة بك أكثر من اللازم، لذا لا يُنصح باستخدامها الآن. ننصح المطوّرين بتنفيذ طريقةinspectableProperties()
علىModifierNodeElement
إذا أرادوا عرض سمات التعديل للأدوات. (Ib3236) - دالة إنشاء جديدة لـ
PopupProperties
تتيح التحكم الكامل في علاماتWindowManager.LayoutParams
. (Ibb33e، b/312485503) - تم تقديم
DelegatableNode.requireLayoutCoordinates()
كوسيلة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في الموقع بنفسك. (Ia8657) - تم تقديم
DelegatableNode.currentLayoutCoordinates
كوسيلة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في الموقع بنفسك. (إيبا) - تم نقل
BasicTextField2
وواجهات برمجة التطبيقات ذات الصلة ضمن الحزمةandroidx.compose.foundation.text2
إلىandroidx.compose.foundation.text
. (I9f635) - تمت إضافة واجهة برمجة تطبيقات
ApproachLayoutModifierNode
جديدة لإتاحة إنشاء منطق نهج مخصّص في عقدة معدِّل واضحة. تمت أيضًا إضافة واجهة برمجة تطبيقاتDeferredTargetAnimation
تجريبية جديدة للصور المتحركة التي يكون هدفها غير معروف في إنشاء المثيل. (I60745) - واجهات برمجة تطبيقات
Path
جديدة للاستعلام عن اتجاه المسار واستخراج الحدود منPath
. (I63d04) - تمت إضافة
PathHitTest
وPath.contains(Offset)
للتحقّق مما إذا كانت قيمة السمةPath
تحتوي على نقطة معيّنة. (I3b218) - تعرض
TextLayoutResult
الآن الطريقةgetLineBaseline(lineIndex)
. ويتيح ذلك قراءة الخط الأساسي لسطر عشوائي من النص بالإضافة إلى الخاصيتينfirstBaseline
وlastBaseline
الحاليتين. (Ide4e8، b/237428541) - تمت إضافة طريقة لمقارنة تعليقين توضيحيين فقط من
AnnotatedStrings
. (I32659)
إصلاح الأخطاء
- تم إصلاح مشكلة التوافق مع الأنظمة القديمة في
SemanticsPropertyReceiver.performImeAction
وSemanticsActions.PerformImeAction
. (Id0528، b/322269946)
الإصدار 1.7.0-alpha02
7 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha02
. يحتوي الإصدار 1.7.0-alpha02 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم إصلاح مشكلة التوافق الثنائي مع
SemanticsPropertyReceiver.performImeAction
. (I65865، b/322269946) - إنّ دالة الإنشاء
PopupProperties
التي تستخدم معلمةusePlatformDefaultWidth
لم تعد تجريبية. (I8f8d2) - تمت إضافة تحميل زائد لـ
ComposeTestRule.waitUntil
يأخذ وصف سلسلة للشرط لتضمينه في رسالة المهلة. (I9413e) - واجهة برمجة التطبيقات semantics الجديدة:
unset()
لإزالة السمات الدلالية التي تتم إضافتها في سلسلة التعديل نفسها السمة الدلالية الجديدةisOpaque
. (I8c583، وb/317966058، وb/246056649) - تمت إزالة
originalEventPosition
من طريقة النسخ في واجهة برمجة التطبيقات العامة لـPointerInputChange
. (I7bead)
إصلاح الأخطاء
- تم إصلاح خطأ a11y يسمح بأن تكون الأزرار التي لا تحتوي على علامات تبويب وغير أزرار الاختيار قابلة للنقر عند تحديدها. (I2181c)
- سيكون بإمكان "
VelocityTracker
" الآن حلّ مشكلة إضافة النقاط بشكل تلقائي. يمكنك إيقاف هذا الخيار من خلال ضبط السمةVelocityTrackerAddPointsFix
على "خطأ" إذا حدثت أي مشاكل. (Ib3877، b/269487059) - تم إصلاح عدم التوافق الثنائي مع الأنظمة القديمة في
TextStyle
وParagraphStyle
. (I179f0، b/320819734)
مساهمة خارجية
- تمت إضافة دالة إنشاء
DialogProperties
جديدة بدون معلَمات خاصة بالنظام الأساسي. (I45829) - تمت إضافة دالة إنشاء
PopupProperties
جديدة بدون معلَمات خاصة بالنظام الأساسي. (I9a038)
الإصدار 1.7.0-alpha01
24 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha01
. يحتوي الإصدار 1.7.0-alpha01 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم توسيع
ClipboardManager
من خلال إضافةClipEntry
وClipMetadata
لإتاحة المحتوى العشوائي، مثل الصور. - إضافة واجهة برمجة تطبيقات
DeviceConfigurationOverride
إلىui-test
للسماح بها على الجهاز تجاوز سلوك المحتوى قيد الاختبار، مثل تحديد خيار متاح الحجم أو اللغة أو اتجاه التخطيط أو مقياس الخط أو المظهر.
الإصدار 1.6
الإصدار 1.6.8
12 يونيو 2024
تم طرح androidx.compose.ui:ui-*:1.6.8
. يحتوي الإصدار 1.6.8 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح عدم الاتساق في تغيير حجم الخط عندما يكون حجم الخط أقل من أقل جدول محدد. في هذه الحالة، يتم الآن إضافة المقياس الخطي 1x إلى أدنى جدول محدد، بحيث يزداد حجم الخط بشكل رتيب مع زيادة المقاييس. (Icbae3)
الإصدار 1.6.7
1 مايو 2024
تم طرح androidx.compose.ui:ui-*:1.6.7
. يحتوي الإصدار 1.6.7 على عمليات الالتزام هذه.
الإصدار 1.6.6
17 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.6.6
. يحتوي الإصدار 1.6.6 على عمليات الالتزام هذه.
إصلاح الأخطاء
- إصلاح عطل نادر في
BasicTextField
.
الإصدار 1.6.5
3 أبريل 2024
تم طرح androidx.compose.ui:ui-*:1.6.5
. يحتوي الإصدار 1.6.5 على عمليات الالتزام هذه.
الإصدار 1.6.4
20 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.6.4
. يحتوي الإصدار 1.6.4 على عمليات الالتزام هذه.
الإصدار 1.6.3
6 مارس 2024
تم طرح androidx.compose.ui:ui-*:1.6.3
. يحتوي الإصدار 1.6.3 على عمليات الالتزام هذه.
الإصدار 1.6.2
21 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.6.2
. يحتوي الإصدار 1.6.2 على هذه الالتزامات.
الإصدار 1.6.1
7 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.6.1
. يحتوي الإصدار 1.6.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة التوافق مع الأنظمة القديمة في
SemanticsPropertyReceiver.performImeAction
وSemanticsActions.PerformImeAction
. (Ie0bb2، b/322269946) - تصدر التخطيطات الآن خطأً أثناء القياس عندما يعرض أحدها حجمًا كبيرًا بشكل غير طبيعي. يحدث هذا النوع من الأخطاء عادةً عندما يستخدم القياس الحدّ الأقصى للقيود مباشرةً بدون التحقّق من
Constraints.Infinity
. بهذه الطريقة، سيتمكّن المطوّرون من العثور على مشاكل متعلّقة بالتصميم ذي الحجم الخاطئ وليس في تنسيق يحتوي عليه. (I339a9)
الإصدار 1.6.0
24 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.6.0
. يحتوي الإصدار 1.6.0 على هذه الالتزامات.
الإصدار 1.6.0-rc01
10 يناير 2024
تم طرح androidx.compose.ui:ui-*:1.6.0-rc01
. يحتوي الإصدار 1.6.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم تحسين تنفيذ رسومات المتجهات لتحسين الأداء من خلال تقليل عمليات إعادة الإنشاء الإضافية.
الإصدار 1.6.0-beta03
13 كانون الأول (ديسمبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta03
. يحتوي الإصدار 1.6.0-beta03 على هذه الالتزامات.
الميزات الجديدة
- يمكن الآن فصل
LayoutCoordinates
بدون فصل العقدة. احذر من ذلك في أداة فحص تصميم الإنشاء (If693)
إصلاح الأخطاء
- أصبحت
PlatformImeOptions
الآن فئة ملموسة بدلاً من واجهة. (If40a4) - تم إصلاح عمليات إعادة التركيب الإضافية للتنزيلات الناتجة عن
LocalSoftwareKeyboardController
وLocalTextInputService
يتم تقديم قيم جديدة في كل مرة تتم فيها إعادة إنشاء جذر. (I42190، b/310510985)
الإصدار 1.6.0-beta02
29 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta02
. يحتوي الإصدار 1.6.0-beta02 على هذه الالتزامات.
الإصدار 1.6.0-beta01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-beta01
. يحتوي الإصدار 1.6.0-beta01 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
- يستخدم مفتاح التعديل
DragAndDropTarget
الآن عنصرDragAndDropTarget
المستلِم بشكل صريح ولديه دالة lambda لتفعيل جلسة السحب والإفلات. هناك وظيفتان في المصنع لجهاز "DragAndDropModifierNode
". أحدهما لاستلام عمليات النقل والآخر لنقل البيانات (I69481) - تم تعديل
maximumFlingVelocity
ليتم تمثيله كعدد عائم. تم تعديل المستندات لتكون أكثر وضوحًا بشأن توحيدmaximumFlingVelocity
. (I8adc7) - تمت إعادة تسمية "
onDragAndDropStart
" في مصنع "DragAndDropModifierNode
" إلى "acceptDragAndDropTransfer
".تمت إضافةacceptsDragAndDropTransfer
إلى معدِّلdragAndDropTarget
للقبول من جلسة السحب والإفلات. تعرض دالة lambda هذهDragAndDropTarget
صالحة إذا كنت مهتمًا بجلسة السحب والإفلات. تم استخدام هذا بدلاً من دالة lambda الأخرى التي تُستخدم لمعالجة أحداث السحب. تمت إضافة دالة المصنع لـDragAndDropTarget
للاستلام من جلسات السحب والإفلات (Iebf3a). تمت إزالة
DragAndDropInfo
كنوعDragAndDropModifierNode.drag
الآن، وتأخذ الآن المَعلَمات للدالةtransferData
وحجم الديكور وسحب الديكور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) - سيتم الآن تجاهل أحداث مفتاح Up في الأجهزة التي لم تتلقَّ حدث "أسفل" في طريقة عرض الإنشاء نفسها. (Ib37b4، b/305518328)
- إضافة دعم العارض من خلال ميزة "Sweep Gتدرّج" في
ArcLine
(I4d5bb) - نفِّذ قيمة يساوي ورمز التجزئة لـ
PageSize.Fixed
. (Ie3ede، b/300134276) - إصلاح مشكلة التوافق الثنائي مع تغيير النافذة الداخلية (Iee695)
- إزالة الطبقة الأساسية المادية لرقاقة/زر Material3 حيث تُظهر مقاييس الأداء الدقيقة أداءً أفضل بدونها. (I55555)
- سيتم الآن استخدام
TestDispatcher
التي تم اجتيازها خلال اختباراتeffectContext
to Compose لإنشاء ساعات الاختبار والإطار. (Ia7178)
الإصدار 1.6.0-alpha08
18 تشرين الأول (أكتوبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha08
. يحتوي الإصدار 1.6.0-alpha08 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة lambda
onDrawDragShadow
إلى "Modifier.dragAndDrawSource
" إلىdrawDragDecoration
، وتم إعادة تسمية مَعلمة الحجم للسمةDragAndDropInfo
إلىdragDecorationSize
. (Id0e30، b/303904810) - قدِّم
SemanticsNodeInteraction.isDisplayed()
وSemanticsNodeInteraction.isNotDisplayed()
لمعرفة ما إذا كانت العقدة المطابِقة مرئية أم لا بدون تأكيدها أيضًا. (I2c196، b/302100809) - تم إدخال قيمة
Unspecified
خاصة للحقولTextAlign
وTextDirection
وHyphens
وLineBreak
فيParagraphTextStyle
لاستبدالnull
. نظرًا لأن هذه الفئات هي فئات مضمّنة، فإننا نتجنب الملاكمة من النوع الأساسي، وذلك عن طريق استبدال nullable بـ Unspecified. تم تعديل طرق الإنشاء ودالة get وأساليب أخرى فيTextStyle
ونمط الفقرة لقبول المعلَمات المذكورة كأنواع غير فارغة. (I4197e، b/299490814) - أضِف حِملًا زائدًا بقيمة
GoogleFont
لقراءةGoogleFont
من ملف XML. (If8f59) - تم جعل
LoremIpsum
PreviewParameterProvider
صفًا مفتوحًا. (I41bf5 وb/266918816 وb/300116360)
إصلاح الأخطاء
- يستخدم
FontFamilyResolver
الآنDispatchers.Main
في الكوروتينات لإدارة ذاكرة التخزين المؤقت. (Ie8dd9) - يزيل تطبيق "
AndroidViewBinding
" الآنFragment
مثيلات مضخمة من خلال تضمينFragmentContainerView
في تنسيق "onRelease
" في إطار "onRelease
"، وذلك باستخدام "commitNow
" (بدلاً منcommit
الذي كان يستخدمها سابقًا)، ما يؤدي إلى إصلاح المشاكل في طريقة "التعديل المباشر" باستبدال التركيبة عند إجراء التغييرات. (I58fbf)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha07
. يحتوي الإصدار 1.6.0-alpha07 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم تقديم
PlatformTextInputMethodTestOverride
لكتابة الاختبارات لمحرّري النصوص المخصّصة. (Id159b) - تتم إضافة معدِّل
dragAndDropSource
لبدء جلسات السحب والإفلات، ومعدِّلdragAndDropTarget
للاستلام من جلسات السحب والإفلات. (Ib7828، b/286038936) - تمت إضافة المجموعات
ColorList
وColorSet
التي لا تتطلّب عمليات تخصيص. (I744bd) - تمت إضافة علامة
DisableNonLinearFontScalingInCompose
مؤقتة لإيقاف الضبط غير الخطّي لحجم الخط. حدِّدDisableNonLinearFontScalingInCompose = true
في اختباراتك إذا كنت بحاجة إلى وقت للحذف. ستتم إزالة هذه العلامة في الإصدار 1.6.0-beta01 من Compose. (Ic9486)
إصلاح الأخطاء
- تحليل محسَّن للعناصر القابلة للرسم لمتّجهات XML (Ibb015)
الإصدار 1.6.0-alpha06
20 أيلول (سبتمبر) 2023
تم طرح androidx.compose.ui:ui-*:1.6.0-alpha06
. يحتوي الإصدار 1.6.0-alpha06 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تحسينات إضافية على رموز المواد (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
. تحتوي ميزة "إنشاء" الآن على إصدارها الخاص من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) - تقديم مكتبة معاينة واجهة المستخدم لإدراج الأجهزة الصالحة للارتداء التي يمكن استخدامها في معاينات واجهة المستخدم (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*
API بالكامل. (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
" إنشاء تأثيرات متحركة بشكل مستقل إلى الواقع كما هو موضّح في بطاقة التعريف.
تغيير السلوك: أصبحت addFontPadding خطأ تلقائيًا في Compose
قيمة includeFontPadding
هي خطأ تلقائيًا الآن (21d806) في Compose.
includeFontPadding
هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة متروكة إضافية أعلى السطر الأول والسطر الأخير من النص لاستيعاب أي أحرف قد تمتد فوق أو أسفل القيَم الأساسية للنص.
سيؤدي تحديث إصدار Compose هذا إلى تعديل كيفية عرض كل النصوص في واجهة المستخدم من خلال إزالة المساحة المتروكة الإضافية أعلى السطر الأول والسطر الأخير من كل نص تعرضه.
اعتمادًا على متطلبات واجهة المستخدم ومقاييس الخط التي تستخدمها، يجب أن تكون التغييرات بسيطة. ومع ذلك، قد تواجه أدوات حظر، مثل: - اختبارات لقطات الشاشة غير صالحة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور الذهبية. - عدم محاذاة النص قليلاً. أزل أي مساحات متروكة سلبية مخصصة أو أضف مساحة متروكة إذا لزم الأمر.
يمكنك الموافقة على includeFontPadding
باستخدام PlatformTextStyle
لكل نص:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
يمكنك تفعيل ميزة includeFontPadding
لجميع النصوص من خلال ضبط أنماط Material. يُرجى العلم أنّ أسماء المَعلمات ستختلف بين M2 وM3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
يمكنك العثور على مزيد من المعلومات حول ميزة "إنشاء" 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 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تمت إضافة حل بديل للأعطال التي تحدث عند الوصول إلى واجهة برمجة التطبيقات Accessibility scroll API من سلسلة محادثات في الخلفية.
- إصلاح العُقد غير المرتبطة التي تتم إضافتها إلى شجرة الدلالات.
الإصدار 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
transform API لتطبيق عمليات تحويل الترجمة/التحجيم/التدوير على عناصر المسار. (I23434، b/233772232) - ويُطلق على طريقة
ColorProducer
اسمproduce
. (I78bde) - إعادة تسمية "
toFrameworkColorSpace
" إلى "toAndroidColorSpace
" (I4f547) - إعادة تسمية "
ColorLambda
" إلى "ColorProducer
" (I73b1a) - قدِّم واجهات برمجة التطبيقات (API) للتحويل بين أنواع مساحات الألوان في Android وCompose. (Ie7db4، وb/279979665)
- تمت إضافة مَعلمة لون إلى
BasicText
للسماح بتحريك النص أو ضبطه بكفاءة. (Iffd88 وb/246961787) - تمت إعادة تسمية "
TextRange.constrain
" إلى "TextRange.coerceIn
". (I31be2) - تمت إضافة
TextStyle.merge(...)
المحسّنة مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تم تثبيت العديد من واجهات برمجة التطبيقات النصية التي تشمل
Brush
وDrawStyle
وTextMotion
وDrawScope.drawText
وParagraph.paint(Brush)
وMultiParagraph.paint(Brush)
. (I2f740، وb/261581564، وb/261581931، وb/261561245) - تم إيقاف
PlatformTextStyle.includeFontPadding
نهائيًا. كان هدفنا الأصلي إزالة الحقل، غير أنّ الملاحظات توضح أنّ المطوّرين بحاجة إلى خيار الإعداد هذا. لذلك، تمت إزالة الإيقاف من الحقل (I98e96 وb/277703184) - تمت إضافة طريقة
TextRange.constrain
العلنية. (I97912) - يمكن الآن فتح
UrlAnnotation
فيAnnotatedString
من خلال خدمات تسهيل الاستخدام مثلTalkBack
. (If4d82، b/253292081) - تمت إضافة إجراء دلالات
InsertTextAtCursor
للحقول النصية. (I11ed5) - تمت ترقية الدالة الإنشائية
LineHeightStyle.Alignment(topRatio)
إلى واجهة برمجة تطبيقات ثابتة. (I79c32، b/261565383) - لم يعُد
TextMeasurer
وواجهات برمجة التطبيقات ذات الصلة في مرحلة تجريبية. (I74647، b/261581753) - تمت إضافة إجراء دلالات
PerformImeAction
لاستدعاء إجراء IME على عُقد محرّر النصوص. (Ic606f، b/269633506) - لم تعُد واجهات برمجة تطبيقات "
PlatformTextInput
" تجريبية لنظام التشغيل Android. (I668eb) - تم تغيير اسم معلمة القيمة
Enum.valueOf
(Ia9b89) - المزيد من الاستثناءات من enum valueOf (I818fe)
- تم تقديم واجهة برمجة تطبيقات
PlatformTextInputAdapter
جديدة منخفضة المستوى لإنشاء عمليات تنفيذ إدخال نصية مخصّصة تتيح التواصل مباشرةً مع واجهات برمجة تطبيقات النظام الأساسي. (I58df4) - تمت إضافة مَعلمة
BlendMode
إلى طرقDrawScope.drawText
وParagraph.paint
وMultiParagraph.paint
لإتاحة خوارزميات مزج مختلفة عند رسم نص على "لوحة الرسم". (I57508) - إعادة تسمية "
Font.MaximumAsyncTimeout
" إلى "Font.MaximumAsyncTimeoutMillis
" إعادة التسمية فقط. (I07af5) - قيم DPI المعدّلة لعدد
@Preview
من الأجهزة المرجعية (Id6151، b/254528382) - يمكنك إضافة المَعلمتَين
brush
وalpha
إلىBasicText
للسماح بتحريك فرشاة النص أو ضبطها بكفاءة. - حدِّد أنواع lambda الخالية من الصناديق للقيم العائمة والمزدوجة والطويلة والقصيرة والقصيرة باستخدام :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
false. (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. تشتمل كتلة القياس في averageLayout على IntermediateMeasurementScope كجهاز استقبال، وهو ما يوفّر سهولة استخدام CoroutineScope وLookaheadScope وMeasurementScope.(Ibe2e5).
- تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد تنسيقًا. ويسمح هذا الإجراء بالتحكّم مباشرةً في المحتوى غير الموجّه في LookaheadScope من خلال سياسة MeasurementPolicy الرئيسية. (Ibe2e5)
- تتم إضافة
Modifier.Node#coroutineScope
للسماح لـ Modifier.Nodes بتشغيل الكوروتينات. (I76ef9) - اسمح لـ Modifier.Nodes بقراءة ChocolateLocals من خلال تنفيذ واجهة ChocolateLocalConsumerModifierNode. (Ib44df)
- نشر فئة تم إيقافها نهائيًا إلى الموقع (I882d1)
الإصدار 1.4
الإصدار 1.4.3
3 أيار (مايو) 2023
تم طرح androidx.compose.ui:ui-*:1.4.3
. يحتوي الإصدار 1.4.3 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في احتمال عدم تنسيق
AndroidView
بشكل صحيح عند استخدامه مع بعض المعدِّلات. (I4dc77، b/274797771) - تم إصلاح خطأ في ميزة "البحث عن التركيز" الثنائية الأبعاد التي أثّرت في
DropDown
قائمة (b/276811828). - تم إصلاح خطأ في سمات الإدخال/الخروج المخصّصة للتركيز الذي كان يؤدي إلى تشغيل حظر الدخول/الخروج فقط في المرة الأولى التي تم فيها استدعاء lambda (b/277234245)
- تم إصلاح تراجع في نظام التركيز تسبّب في حدوث عطل أثناء قراءة
focusProperties
. (b/271324781، b/274897776)
الإصدار 1.4.2
19 نيسان (أبريل) 2023
تم طرح androidx.compose.ui:ui-*:1.4.2
. يحتوي الإصدار 1.4.2 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في عدم إعادة استخدام
AndroidView
لتعديلاته بشكل صحيح، ما قد يؤدي إلى حدوث مشاكل وأعطال غير متوقّعة. (Ib67ee، b/275919849) - تم إصلاح الانحدار حيث لا تظهر لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها من خلال عنصر
Dialog
القابل للإنشاء (I82551، b/262140644)
الإصدار 1.4.1
5 نيسان (أبريل) 2023
تم طرح androidx.compose.ui:ui-*:1.4.1
. يحتوي الإصدار 1.4.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- يعمل على إصلاح مشكلة في "
ParentDataModifier
" لا تؤثّر في "AndroidView
" (b/274797771)
الإصدار 1.4.0
22 آذار (مارس) 2023
تم طرح androidx.compose.ui:ui-*:1.4.0
. يحتوي الإصدار 1.4.0 على عمليات الالتزام هذه.
تغييرات مهمة منذ الإصدار 1.3.0
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainer
جديدة تسمح بتثبيت عناصر القوائم الكسولة، حتى لا يتم التخلص منها عند الانتقال إلى خارج الحدود. على سبيل المثال، تستخدمModifier.focusable()
هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881، b/259274257، b/195049010) - تتم إعادة كتابة نظام التركيز باستخدام واجهات برمجة تطبيقات
Modifier.Node
التجريبية الجديدة. (I7f4d7، وb/247708726، وb/255352203، وb/253043481، وb/247716483، وb/254529934، وb/251484، وb/2514184 - تمت إضافة البيانات في سمة دلالية واحدة (
IsContainer
) على مساحات العرض. سيتم استخدام هذه السمة في تغيير لاحق يحدد ترتيب الاجتياز بناءً على المعنى الدلالي لعناصر مثل الأسطح. (I63379) - تمت إضافة دور جديد لتسهيل الاستخدام "
DropdownList
". ويمكن استخدام ذلك لتكرار سلوكTalkBack
عند التركيز علىandroid.widget.Spinner
. (I177e5، b/236159001) - يمكنك الآن استخدام السمة
PlatformTextStyle(emojiSupportMatch)
لإيقاف معالجة دعم الرموز التعبيرية لفقرة واحدة، إذا أردت ذلك. (Ia7100، b/139326806) - ستعمل اختبارات واجهة مستخدم Compose في Android الآن على تشغيل بطاقات التنسيق لكل إطار عند تنفيذ الإطارات للانتقال إلى وضع عدم النشاط (على سبيل المثال، عبر
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/251484، وb/2514184 - تمت إضافة البيانات في سمة دلالية واحدة (
IsContainer
) على مساحات العرض. سيتم استخدام هذه السمة في تغيير لاحق يحدد ترتيب الاجتياز بناءً على المعنى الدلالي لعناصر مثل الأسطح. (I63379) - تمت إضافة الدور الجديد لتسهيل الاستخدام
DropdownList
. ويمكن استخدام ذلك لتكرار سلوكTalkBack's
عند التركيز علىandroid.widget.Spinner
. (I177e5، b/236159001) - يمكنك الآن استخدام السمة
PlatformTextStyle(emojiSupportMatch)
لإيقاف معالجة دعم الرموز التعبيرية لفقرة واحدة، إذا أردت ذلك. (Ia7100، b/139326806) - ستعمل اختبارات واجهة مستخدم Compose في Android الآن على تشغيل بطاقات التنسيق لكل إطار عند تنفيذ الإطارات للانتقال إلى وضع عدم النشاط (على سبيل المثال، عبر
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
مستقرة الآن (I8779f، b/241016309) - أصبحت جميع دوال إنشاء
Font()
الآن واجهة برمجة تطبيقات ثابتة (I5948b، b/261435386). DeviceFontFamilyName
ثابت الآن (I8b640، b/261435386)- أصبحت الآن دالة إنشاء
AndroidFont
التي تتضمنvariationSettings
واجهة برمجة تطبيقات ثابتة ويمكن استخدامها لإنشاء أنواع جديدة من أدوات وصف الخطوط. (I5adcc، b/261565807) - واجهة برمجة تطبيقات
createFontFamilyResolver
مستقرة الآن. ويمكن استخدام ذلك لرصد الاستثناءات غير المرصودة أثناء تحميل الخط غير المتزامن. (Ibb481، b/261435386) - واجهة برمجة تطبيقات
Font.loadingStrategy
مستقرة الآن. (I5937c، b/261435386) - واجهة برمجة تطبيقات
GoogleFont
مستقرة الآن. (Ic90b0، b/261435386) - أصبحت واجهة برمجة التطبيقات
TextUnit(float, TextUnitType)
مستقرة الآن. (I90c84، b/261561612) - أصبحت واجهة برمجة التطبيقات
pluralStringResource
مستقرة الآن. (I09849، b/261439703)
الإصدار 1.4.0-alpha03
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha03
. يحتوي الإصدار 1.4.0-alpha03 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- جارٍ إزالة "
ExperimentalComposeUiApi
" منPointerIcon
(I23af8) - تقديم إجراءات تسهيل الاستخدام إلى الصفحة:
PageUp
وPageDown
وPageLeft
وPageRight
يُرجى العلم أنّ هذه لا تتوفّر إلا من خلال واجهة برمجة التطبيقات 29. (Ida4ab) - تم تعديل عرض معلَمة
rememberNestedScrollConnection
من العرض الجذر إلى عرض المضيف. (Ia5200) - تمت إضافة واجهة برمجة تطبيقات Modifier API لطلب معلومات الانتقال للأعلى أو للأسفل في الإصدارات القديمة. (I2ba9d، b/203141462)
- يتم استخدام هذه البيانات في
Clickable
لتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تتحوّل الإيماءات إلى أحداث تمرير. - تم إصلاح مشكلة "
Clickables
" التي لا تؤخّر الموجات بشكل صحيح، عند استخدامها داخلScrollable ViewGroup
. - تم تعديل "الأدراج" و"جداول بيانات Google" لتأخير الضغطات بشكل صحيح في حال تحولت الإيماءات إلى أحداث تمرير.
- تمت إعادة تسمية
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)
التحديثات المتعلقة بالاعتمادية
- تعتمد واجهة مستخدم Compose ومواد Compose الآن على Lifecycle 2.5.1. (I05ab0، b/258038814)
الإصدار 1.4.0-alpha02
9 تشرين الثاني (نوفمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.4.0-alpha02
. يحتوي الإصدار 1.4.0-alpha02 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم تعديل
GraphicsLayerScope
لعرض الحجم الحالي لجهازgraphicsLayer
. ويكون ذلك مفيدًا لاحتساب عمليات تحويلgraphicsLayer
كدالة للحجم القابل للتعديل. (If8c43،b/181387080) - تم تقديم
CompositingStrategy
لتحديد الوقت المناسب للاستفادة من طبقة تركيب خارج الشاشة لعرض محتوىgraphicsLayer
. تحتفظ Auto بالسلوك التلقائي الذي يستفيد داخليًا من إحدى الطبقات إذا تم تطبيق ألفا أوRenderEffect/Overscroll
. ستوفّر دائمًا مخزنًا مؤقتًا خارج الشاشة يتجنّب فيهاModulateAlpha
الاستفادة من المخزن المؤقت خارج الشاشة وسيعدّل بدلاً من ذلك كل من تعليمات الرسم المسجّلة فيgraphicsLayer
. سيستمر استخدامModulateAlpha
في الاستفادة من المخزن المؤقت خارج الشاشة لحالات استخدامRenderEffect/Overscroll
(I25e82، وb/256382834). - تمت إضافة
invalidateSubtree()
إلىModifier.Node
للسماح بإلغاء صلاحية التدرّجات الهرمية بأكملها للتنسيق والرسم. (I4bd90) - ترقية
rememberNestedScrollInteropConnection
إلى الإصدار الثابت. تم تقديم إمكانية تمرير طريقة عرض الجذر إلىrememberNestedScrollInteropConnection
. يمكن أن يساعد ذلك طريقة العرض المخصّصة في التفاعل بشكل أفضل مع قيود التنقّل، لا سيما في طرق العرض غير العادية (مثلModalBottomSheetDialog
). (I9e107) - تمت إضافة واجهة
ObserverNode
يمكن استخدامها من خلال عمليات تنفيذModifier.Node
التي يجب أن يتم إشعارها عند تغيير قيمة سبق الاطّلاع عليها (I5728b، b/247716483) - تمت إضافة دالة إنشاء جديدة إلى
Paint
تقبلandroid.graphics.Paint
أصلية. تمت أيضًا إضافة دالة الإضافةtoComposePaint()
التي تحوِّل كائن Paint الأصلي الحالي إلى Compose Paint. (Ica91b) - يمكنك إضافة بطاقة
FontFamily.Resolver.resolveAsTypeface
جديدة لاستخدامها على Android. (I8950b) - إضافة
ToolingState
للسماح للأدوات بتغيير الحالات الداخلية القابلة للتعديل (Ie6614) - إعادة ضبط الأدوات للحصول على دعم أفضل للصور المتحركة المضافة الجديدة (I8677b)
- تمت إضافة المعلمة
minLines
إلى نص المادة و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
9 تشرين الثاني (نوفمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.3.1
. يحتوي الإصدار 1.3.1 على عمليات الالتزام هذه.
الإصدار 1.3.0
24 تشرين الأول (أكتوبر) 2022
تم طرح androidx.compose.ui:ui-*:1.3.0
. يحتوي الإصدار 1.3.0 على هذه عمليات التنفيذ.
تغييرات مهمة منذ الإصدار 1.2.0
- حزمة واجهة برمجة تطبيقات تجريبية جديدة
LookaheadLayout
(تفعيل سلوكيات الصور المتحركة التي كانت مستحيلة سابقًا) - حزمة واجهة برمجة تطبيقات تجريبية جديدة
Modifier.Node
(بديل عالي الأداء لـModifier.composed
) - تم تحسين إمكانية إدراج النوافذ.
- التركيز على دعم لوحات التحكّم ولوحة مفاتيح الأجهزة في قوائم LazyLists
- تم تقليل الحد الأقصى للارتفاع المدعوم في مربّعات الحوار والنوافذ المنبثقة إلى 8dp (تغيير في السلوك لبعض أنظمة التصميم المخصّصة - الأسباب المنطقية في ملاحظات إصدارقود بيتا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" الآن ضمنDialog
قابل للإنشاء. (I35342)
الإصدار 1.3.0-beta02
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-beta02
. يحتوي الإصدار 1.3.0-beta02 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة حِمل زائد تجريبي إلى التنسيق الذي يقبل قائمة lambdas متعددة المحتوى القابل للإنشاء، ما يسمح بدمج عناصر تهديد قابلة للقياس في محتوى lambdas مختلفة (Ic1b4e).
التغييرات التي تم إجراؤها على واجهات Focus API التجريبية:
- تم إيقاف
FocusDirection.In
وFocusDirection.Out
واستبدالهما بـFocusDirection.Enter
وFocusDirection.Exit
. (Ia4262، b/183746982) - تمت إضافة خاصيتَي تركيز جديدتين للدخول والخروج لتحديد سلوك مخصّص لكل من
FocusManager.moveFocus(Enter)
وFocusManager.moveFocus(Exit)
. (I5f3f9، b/183746982) - يمكنك الآن استخدام ميزة "
FocusRequester.Cancel
" لإلغاء عملية نقل التركيز. يمكن استخدامFocusRequester.Cancel
في أي من خصائص التركيز التالية: السهم المتجه للأعلى وللأسفل ولليسار ولليمين والتالي والسابق وبداية ونهاية ومفتاح Enter وخروج. (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
تغيير قد يؤدي إلى كسر السلوك
تم تقليل الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة إلى 8dp.
تم تقليل الحد الأقصى المسموح به للارتفاع لمربعات الحوار والنوافذ المنبثقة في "إنشاء" من 30dp إلى 8dp. يؤثر هذا التغيير في النوافذ المنبثقة ومربّعات الحوار المخصصة للمواد وواجهة المستخدم. تم إجراء هذا التغيير للتخفيف من حدوث خطأ في تسهيل الاستخدام على إصدارات 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) - تتيح "خطوط الموارد" الآن ضبط إعدادات تنوع الخطوط (API 26+). (I900dd، b/143703328)
- إتاحة الخطوط المتغيّرة في
DeviceFontFamilyNameFont
(Ic1279، b/143703328) - تقبل منصات إنشاء الخطوط الآن قائمة
FontVariation.Setting
لضبط الخطوط المتغيّرة على أجهزة O+. (I11a9d، b/143703328) - أضِف
FontVariation
API لتحديد الخطوط المتغيّرة واستخدامها. (I3c40c، b/143703328) - الدالة الإنشائية
LineHeightStyle.Alignment
أصبحت الآن عامة (تجريبية) (I4bbbe، b/235876330) - من المفترض أن تكون الفقرة الآن متوقعة|فعلية ومحدّدة لنظامَي التشغيل Android والكمبيوتر المكتبي. (Id387e، b/239962983)
- تم إغلاق "فقرة الواجهة" الآن، وهي "فقرة" للواجهة. ما مِن حالة استخدام للتصنيف الفرعي للفقرة، وننصحك بالتواصل معك إذا كان هذا التغيير يؤثّر عليك. (If5247، وb/239962983)
- تمت إزالة التعليق التوضيحي التجريبي من
PlatformTextStyle
وLineHeightStyle
. (I64bef) - إيقاف
TextInputService.show|hideSoftwareKeyboard
يُرجى استخدامSoftwareKeyboardController
بدلاً من ذلك في رمز التطبيق وTextInputSession
في رمز إدارة IME. (I14e4c، b/183448615) - إضافة واجهة برمجة تطبيقات جديدة لأنواع الصور المتحركة الحالية (I26179)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح إذنPOST_NOTIFICATIONS
في الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 1.3.0-alpha02
27 تموز (يوليو) 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha02
. يحتوي الإصدار 1.3.0-alpha02 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة خاصية جديدة
PointerInputChange#pressure
لاسترداد الضغط. (I45a5e، b/205164819) - تمت إضافة
rememberTextMeasurer
لإنشاء وتذكُّرTextMeasurer
مثيل في المقطوعة الموسيقية بسهولة. (I8d66e) - تتوافق
Rect
وRoundRect
وMutableRect
الآن مع بنيةin
في Kotlin لاستدعاء الدالةcontains
. (Ie42b0، b/238642990) - أزِل الدوال غير الضرورية من
KeyInjectionScope
، لأنّه يمكن تنفيذها بسهولة باستخدام أجزاء أبسط من واجهة برمجة التطبيقات. تشمل الدوال التي تمت إزالتهاpressKeys
وkeysDown
وkeysUp
. (I81d77) - تمت إعادة تحديد أسماء المعلَمات الثابتة والثابتة في
KeyInjectionScope
لتشمل اللاحقة "Millis". حيث تكون وحدات الثوابت والمعلمات المذكورة هي ملي ثانية. (Iabef5) - تمت إضافة طريقة
toStringForLog()
إلىEditCommand
للمساعدة في تحديد المشاكل المتعلّقة بتعديل النص وحلّها. (I53354، b/228862731) - تمت إضافة دالة الإضافة
drawText
فيDrawScope
لتوفير طريقة لرسم نص متعدد الأنماط على العناصر القابلة للإنشاء والتعديل التي تعمل علىDrawScope
مثلCanvas
وdrawBehind
. (I16a62، b/190787898) - تم تقديم واجهة برمجة تطبيقات تجريبية جديدة اسمها
TextMeasurer
تتيح احتساب تنسيق النص العشوائي وإنشاء نتائج متطابقة معBasicText
، بشكل مستقل عن وقت تشغيل Compose. (I17101) - إضافة
mapTree
إلىSlotTree.kt
ويتيح ذلك للأدوات فحص "SlotTree
" بدون إنشاء نسخة في الذاكرة أولاً كما تفعل شبكة AsTree. وبالنسبة إلى Layout Inspector (عارض التخطيط)، فإن ذلك يمنحنا تحسينًا في الأداء بحوالي العامل 10. (I5e113) - تم تغيير معاينة Compose التي سيتم تخزينها في ملفات الإخراج الثنائية من أجل السماح لمطوّري البرامج بكتابة تعليقات
MultiPreview
التوضيحية وإعادة استخدامها من المكتبات. (I85699، b/233511976)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChange
إلى أداة التتبُّعVelocity
، سنعتبر دلتا الآن بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكل صحيح لجميع الحالات حتى إذا تحرّك العنصر المستهدف (Icea9d، وb/216582726، وb/223440806، وb/227709803) - إصلاح NPE الناتج عن
AnnotatedString.toUpperCase
عند وجود تعليقات توضيحية. (I0aca2، b/210899140)
الإصدار 1.3.0-alpha01
29 حزيران (يونيو) 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha01
. يحتوي الإصدار 1.3.0-alpha01 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
LookaheadLayout
جديد يتيح استخدام بطاقة معاينة قبل المقياس أو التنسيق الفعلي يتيح ذلك إجراء حساب مسبق للتصميم عند تغييره، مع السماح للمقياس/التصميم ما بعد النظر باستخدام الحجم/الموضع المحسوب مسبقًا لتحريك الحجم والمواقع نحو الهدف. لا تتوفّر ميزة "SubcomposeLayouts
" بعد، ولكنّها ستكون في إصدار قادم. (I477f5)- يمكنك إضافة مَعلمة ألفا اختيارية إلى صيغة فرشاة
TextStyle
وSpanStyle
لتعديل مدى تعتيمText
. (Ic2fac، b/234117635) - تم تقديم نوع التعليق التوضيحي
UrlAnnotation
والطرق المرتبطة به لإتاحة روابطTalkBack
فيAnnotatedString
. (I1c754، b/231495122) - نقل وظيفة الأداة إلى بيئة التشغيل (I4f729)
إصلاح الأخطاء
TextLayoutResult.getLineForOffset
لا يرمي. (Idc5d6، b/235876324)
مساهمة خارجية
- تمت إضافة واجهة برمجة تطبيقات
WindowInfo.keyboardModifiers
جديدة لتتبُّع حالتها ضمن الدوال القابلة للإنشاء أو عبر PixelbookFlow (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. إنّ الدالة التي تحتاج إلى استهداف تطبيق آخر يجب أن توفّر بشكل صريح التعليق التوضيحي للعلامة المستهدفة للتطبيق المطلوب. (I40804) تم تقديم واجهة برمجة تطبيقات تجريبية جديدة ومستقلة عن النظام الأساسي:
interface ComposeUiTest
وfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
، التي يمكن استخدامها لإجراء اختبارات واجهة المستخدم في Compose بدون الحاجة إلىTestRule
. لإجراء اختبار بدونComposeTestRule
، اجتياز الاختبار بوصفه lambda في "runComposeUiTest
" واستخدامه الطرق والأعضاء في نطاق المُستلِمComposeUiTest
، وهي هي نفسها كما فيComposeContentTestRule
.إنّ
interface AndroidComposeUiTest
وfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
المحدّدَين لنظام التشغيل Android هما تتم إضافتها لتوفير إمكانية الوصول إلى النشاط الأساسي، على غرارAndroidComposeTestRule
لمزيد من التحكم، يمكنك إنشاء مثيلclass AndroidComposeUiTestEnvironment
بنفسك.التنفيذ المتوافق مع أجهزة الكمبيوتر المكتبي هو
class DesktopComposeUiTest
، ولكن لا يتم تقديم وظائف التشغيل الخاصة بأجهزة الكمبيوتر المكتبي في الوقت الحالي.يمكن نقل اختبار من
ComposeTestRule
إلىComposeUiTest
. هكذا (مثال Android). من:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
إلى:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
في الوقت الحالي، لا تمتد الإضافتان
ComposeContentTestRule
وComposeTestRule
منComposeUiTest
، ما يعني أنّه لا يمكن استدعاء دوال الإضافات فيComposeUiTest
بعد في واجهةTestRule
. عند ترقيةComposeUiTest
إلى واجهة برمجة تطبيقات ثابتة، سيتم تغييرComposeContentTestRule
وComposeTestRule
ليشملاComposeUiTest
. (Ib4e90)تمت إعادة تسمية "
LineHeightBehavior
" باسم "LineHeightStyle
".تمت إعادة تسمية "
LineVerticalAlignment
" باسم "LineHeightStyle.Alignment
".تمت إعادة تسمية "
LineHeightTrim
" لتصبح "LineHeightStyle.Trim
"تمت إزالة قيم الدالة الإنشائية التلقائية من
LineHeightStyle
(I582bf، b/181155707).تمت إضافة
Brush
إلىTextStyle
وSpanStyle
لتوفير طريقة لرسم نص باستخدام تلوين التدرج. (I53869، b/187839528)trimFirstLineTop
،trimLastLineBottom
سمة من تم تغييرLineHeightBehavior
إلى تعداد واحد:LineHeightTrim
. تتضمنLineHeightTrim
قيمًا لأربع حالات يتم تحديدها بواسطة منطقيتين: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 إذا انتقلنا رأسيًا (إذا كانت بعض Delta موجبة، سيتم الانتقال للأسفل) (Ifb697، b/224992993)
الإصدار 1.2.0-alpha08
20 نيسان (أبريل) 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha08
. يحتوي الإصدار 1.2.0-alpha08 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم وضع علامة على دالات
pluralStringResource
كتجريبية للسماح بالتطوير من أجل تعزيز التدويل بشكل أفضل في المستقبل. (If24e4) - يقبل الآن تطبيق "الفقرة" و"متعدد الفقرات" معلمة القيود. لا يمكن تجاوز
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()
نهائيًا. يجب استبدالfocusOrder()
الذي يقبل السمةfocusRequester
بمفتاح تعديلfocusRequester()
إلى جانبfocusProperties()
. يسمح هذا للمُعدِّلات بفصل المخاوف بشكلٍ أقوى. (I601b7)ستؤدي ترقية كل من
RecyclerView
وCompose
الآن إلى تحسين أداء التمرير في RecyclerViews باستخدام طرق عرض ميزة "إنشاء" كأطفال.يمكنك إضافة
ViewCompositionStrategy.Default
كوسيلة لاسترداد الاستراتيجية المضمَّنة التلقائية.أضِف
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
، وهي الاستراتيجية التلقائية الجديدة التي تعالج بشكل صحيح حاويات التجميع مثل RecyclerView. (If7282)تمت إضافة دعم لإضافة تعليقات توضيحية إلى فئات التعليقات التوضيحية باستخدام علامة @المعاينة كخطوة أولى لإضافة ميزة المعاينة المتعددة. يمكن استخدام مثل هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى الطرق القابلة للتعديل أو فئات التعليقات التوضيحية الأخرى، والتي يمكن اعتبارها على أنها تعليقات توضيحية بشكل غير مباشر باستخدام @المعاينة المحددة. (I12eff)
الإشارة إلى الأجهزة المرجعية التي تمت إضافتها إلى قائمة الأجهزة لـ @Preview (I071c9)
إصلاح الأخطاء
- تم تعديل واجهات برمجة التطبيقات لرسومات Vector لاستخدام التعليق التوضيحي المناسب القابل للإنشاء @VectorComposable بدلاً من @UiComposable (I942bc).
- إزالة Crossinline من
AnnotatedString.Builder.withStyle
(If84d5)
مساهمة خارجية
- Compose-ui: أضِف السمتَين
ambientShadowColor
وspotShadowColor
إلىGraphicsLayerScope
(I1ba1a وb/160665122). - أصبحت الموارد المجمّعة متاحة الآن باستخدام دوال
pluralStringResource
. (Ib2f23، b/191375123)
الإصدار 1.2.0-alpha05
9 آذار (مارس) 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha05
. يحتوي الإصدار 1.2.0-alpha05 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تستخدم
TextToolbar
الآن وسيطات lambda بدلاً منActionCallback
(Ib2eb9، b/197950089) - تعديل قابلية القيم الفارغة في Core وappcompat لتتوافق مع Tiramisu DP2 (I0cbb7)
- تعرض الواجهة التي تم قياسها الآن خاصية parentData (I3313f)
Modifier.onPlaced
وواجهةOnPlacedModifier
هما مستقرة الآن. (Ib5482)- رائع! ميزة إنشاء الصور المتحركة متاحة الآن "مقياس مدة الرسوم المتحركة" من "خيارات المطوّرين". (I5a4fc, b/161675988)
- تمت إضافة مفتاح تعديل
BeyondBoundsLayout
محلي (If8b51، b/184670295) - النص: تم الآن إيقاف التضمين تلقائيًا. تشير رسالة الأشكال البيانية
تتم معالجة مشاكل اقتصاص المحتوى الناتجة عن
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
أو دوال ذات صلة قابلة للإنشاء.بالنسبة إلى التطبيقات المخصصة، تُستخدم الدوال القابلة للإنشاء التي تستدعي يجب على
ComposeNode
أوReusableComposeNode
إضافة التعليق التوضيحيComposableTarget
للدالة وأي أنواع معلمات lambda القابلة للإنشاء. ومع ذلك، يوصى لإنشاء تعليق توضيحي قد تمت إضافة تعليقات توضيحية إليهComposableTargetMarker
ثم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً منComposableTarget
مباشرةً. تعليق توضيحي قابل للإنشاء تم وضع علامةComposableTargetMarker
على أنه يعادلComposbleTarget
مع اسم السمة المؤهل بالكامل الفئة باعتبارها معلمة applier. للحصول على مثال على استخدامComposableTargetMarker
يُرجى الاطّلاع علىanroidx.compose.ui.UiComposable
. (I38f11)تستخدم
Font(resId, ...)
الآن استراتيجية التحميل على واجهة برمجة التطبيقات الثابتة. (Ief3d2)أصبحت واجهة برمجة التطبيقات
FontLoadingStrategy
مستقرة الآن. (I1ee35، b/174162090)دعم تحميل الخط غير المتزامن في Text (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 في المقطوعة الموسيقية ثم الولاية يتم نقل العُقد إلى موقع الاستدعاء الجديد. في حال عدم إجراء مكالمة جديدة تمت إزالة الحالة نهائيًا وتذكر أن المراقبين بشكل أفضل.إذا تم استدعاء دالة
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، ويتم عرضه من خلال FontFamilyعطل
إتاحة التحميل المُسبق للخطوط من خلال
FontFamilyResolver.preload
يسمح
FontFamilyResolver.setAsyncLoadContext
بإعداد سياق الكوروتين العالمي المستخدم لتحميل الخطوط غير المتزامنة. (I87fe8، b/174162090)تمت إضافة
AndroidFont
، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة أدوات وصف موارد الخطوط على Android على سبيل المثال، يؤدي تحميل الخطوط من خلفية خاصة بالتطبيق، واختيار تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز فقط، أو تحميل خط من مورد غير متوفر من خلال شركات الخطوط.تم توسيع واجهة برمجة تطبيقات
Font.ResourceLoaded
لتوفير الميزات الاختيارية وغير المتزامنة. جارٍ تحميل الخط لا يُنصَح باستخدام مطوّري التطبيقات هذه الميزة. واجهة برمجة التطبيقات مباشرةً. لإضافة أنواع جديدة من الخطوط، يمكنك الاطّلاع علىAndroidFont
.تسمح دالة الإضافة
Font.AndroidResourceLoader
إنشاءFont.ResourceLoader
عندما يكون خارج المقطوعة الموسيقية.تمت إضافة مَعلمة
loadingStrategy
إلى الخطوط المستندة إلى موارد، وذلك للسماح. تحميل غير متزامن عندما يشير خط المورد إلى ملف XML للخطوط القابلة للتنزيل (Ie5aea، b/174162090)تم إيقاف دالة الإنشاء
Typeface(FontFamily)
نهائيًا. كان هذا المستخدم سابقًا لتحميل الخطوط مسبقًا، والذي قد يستغرق ما يصل إلى 10 ثوانٍ خطوط قابلة للتنزيل. مع الخطوط القابلة للتنزيل، قد يتم حظر هذه المكالمة لـ 10 أشخاص ثوانٍ. واستخدِمFontFamilyResolver.preload
بدلاً من ذلك.تم إيقاف
fontResource(FontFamily): Typeface
نهائيًا. كان هذا المستخدم سابقًا لتحميل الخطوط مسبقًا، والذي قد يستغرق ما يصل إلى 10 ثوانٍ خطوط قابلة للتنزيل. بدلاً من ذلك، استخدِمFontFamilyResolver.preload
(If8e7c، وb/174162090).تم إيقاف دالة الإنشاء
SubcomposeLayoutState
التي تقبلmaxSlotsToRetainForReuse
نهائيًا. بدلا من ذلك، هناك أداة إنشاء جديدة تقبلSubcomposeSlotReusePolicy
- وهي واجهة جديدة تتيح التحكم بدقة أكبر في الخانات التي يجب الاحتفاظ بها لإعادة استخدامها مستقبلاً. (I52c4d)عرض دالة HSV وHSL في
Color
كدالة غير تجريبية واجهة برمجة التطبيقات. أصبحت مساحة ألوان Oklab الآن متاحة للجميع. (I08fb6، b/180731008)تم إيقاف العمل بها في
AndroidComposeTestRule.AndroidComposeStatement
، الذي لم يكن من المفترض أن يكون في واجهة برمجة تطبيقات عامة ولم يؤدِّ أي إجراء إلى على أي حال. (Ibc46b)إعادة تسمية فئة kt الداخلية التي يتم إنشاؤها (Ia0b9e، b/174162090)
تمّت إزالة "
FontLoadingStrategy.values
" (I42a9d، وb/174162090).يُطلق الآن على برنامج تحميل الخط العام اسم
FontFamilyResolver
. (I4f773، b/174162090)استخدام نظام تحميل الخط الجديد لسطح المكتب (I9ce5c، b/174162090)
FontFamily.Resolver.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)
- تم إصلاح اليمين من اليسار في
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، ستعمل مكونات التصميم المتعدد الأبعاد على توسيع مساحة التصميم الخاصة بها لاستيفاء إرشادات تسهيل استخدام المواد من أجل حجم هدف اللمس. مثلاً، سيتم توسيع مساحة اللمس المستهدفة للزر إلى حد أدنى للحجم يبلغ 48x48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر ليكون أصغر. يؤدي ذلك إلى مواءمة مادة Compose مع سلوك مكونات التصميم المتعدد الأبعاد نفسه، ما يوفّر سلوكًا ثابتًا إذا مزجت بين طرق العرض و"الإنشاء". ويضمن هذا التغيير أيضًا استيفاء الحدّ الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكوّنات "مواد إنشاء المحتوى".
- دعم ثابت لـ شريط التنقل
- ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى إصدار مستقر
- الدعم للإصدارات الأحدث من Kotlin
الإصدار 1.1.0-rc03
26 يناير 2022
تم طرح androidx.compose.ui:ui-*:1.1.0-rc03
. يحتوي الإصدار 1.1.0-rc03 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم التحديث لدعم Compose 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()
مسح كل الأحداث والتخلص من يحدث النطاق الآن في نهاية طريقة sort*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
من طرق المؤلف التالية: مطلوب أن تُسمى "وحدات مشتركة" (I1aa0b) - يمكن الآن إرجاع المشتريات في "
SemanticsNodeInteraction.performSemanticsAction
" العلامةSemanticsNodeInteraction
التي تم استدعاء الدالة عليها. (I9e5db) - تمت إضافة LocalInputModeManager MonitorLocal لاكتشاف TouchMode/NonTouchMode. (I6a83c، b/175899786)
- تمّت إضافة
viewConfiguration: ViewConfiguration
إلىLayoutInfo
. للسماح للمستهلكين بالحصول على القيمة الصحيحة لأشياء مثل الضغط مع الاستمرار المهلة. (I76ca6)- تمت إضافة "
viewConfiguration: ViewConfiguration
" إلىInjectionScope
للسماح للاختبارات بضبط حقن الإدخالات بناءً على أشياء مثل مهلة الضغط المطول أو الانحدار باللمس. - تم تغيير المدة التلقائية للضغط المطوّل والنقر مرّتين لكليهما.
مدخلات اللمس والماوس تستند إلى القيم في
InjectionScope.viewConfiguration
- تمت إضافة "
- تنفيذ ExposedDropdownقائمة استنادًا إلى ExposedDropdownقائمةBox مع حقل TextField والقائمة المنسدلة بالداخل (If60b2)
- تمت إضافة launchOnOutClick إلى PopupProperties، ليحلّ محلّ خيار cancelOnClickOff الذي تم إيقافه نهائيًا. تتلقى الخاصية الجديدة موضع النقر وحدود علامة الارتساء، ما يوفّر إمكانية تحكّم أكثر دقة لتحديد ما إذا كان يجب استدعاء onReceivedRequest أم لا. فعلى سبيل المثال، قد يكون هذا مفيدًا لمنع إغلاق الإعلان الثابت بسبب اللمسات على المرتكز.
- تمت إضافة updateAndroidWindowManagerFlags إلى PopupProperties، ما يتيح إمكانية التحكم منخفض المستوى في العلامات التي تم تمريرها إلى النافذة المنبثقة Android WindowManager. ستكون معلمة lambda هي العلامات المحسوبة من قيم PopupProperties التي ينتج عنها علامات WindowManager: على سبيل المثال يمكن التركيز عليه. ستكون نتيجة دالة lambda هي العلامة النهائية التي سيتم تمريرها إلى Android WindowManager. بشكلٍ تلقائي، تترك updateAndroidWindowManagerFlags العلامات المحسوبة من المعلّمات بدون تغيير. ويجب استخدام واجهة برمجة التطبيقات هذه بحذر، فقط في الحالات التي يكون فيها للنافذة المنبثقة متطلبات سلوك محدّدة جدًا. (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()
)، التنفيذ من شأنه أن يقدم وقت الحدث ويرسل حدث النقل قبل إرسال الحدث لأسفل. تستمر طريقة التنفيذ الجديدة في إرسال حدث حركة، ولكنه لا يتقدم وقت الحدث في هذه السيناريو. - عند إرسال حدث لأعلى أثناء نقل المؤشرات بدون إرسال حدث نقل (على النحو الوارد أعلاه)، سيقدم وقت الحدث ويرسل حدث النقل قبل إرسال أعلى. أما طريقة التنفيذ الجديدة، فليست كذلك: فالموضوعات الجديدة ستنعكس المؤشرات فقط من خلال حدث up.
أخيرًا، يقدّم
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 على هذه عمليات التنفيذ.
الميزات الجديدة
- تم تعديل سياسة ComposeAllowed التي تم تحديثها
1.1.0-alpha03
للاعتماد على لغة1.5.30
في لغة Kotlin. (I74545)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة السمة
Modifier.inspectable
لتضمين مفاتيح التعديل الأخرى. (I1909b، b/191017532) - تمت إضافة واجهة برمجة تطبيقات
BlurredEdgeTreatment
لتبسيط حالات الاستخدام المموّهة إلى مجموعات علامات المقطع شائعة الاستخدام و TileModes. تتضمن معظم حالات الاستخدام إمّا السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي وتمويه المناطق خارج هذه الحدود باللون الأسود الشفاف أو محتوى يقصّي إلى حدود المحتوى وأخذ العينات من أقرب حافة للنواة المموّهة التي تتجاوز المحتوى . (I6b4b7، b/166927547) - إضافة دعم RenderEffect في إنشاء سطح المكتب. تم تقديم OffsetEffect بالإضافة إلى وتعديل معدل التمويه كطريقة بسيطة إضافة المؤثرات البصرية المموّهة إلى جزء في التسلسل الهرمي للمقطوعة الموسيقية. (I0f6aa، b/166927547)
- إضافة واجهة برمجة التطبيقات RenderEffect API
يمكن ضبطها بشكل اختياري على
Modifier.graphicsLayer
للتغيير محتويات الطبقة نفسها. هذا النمط يمكن استخدامها لتمويه محتوى مادة قابلة للإنشاء والعناصر الثانوية داخل مقطوعة موسيقية التسلسل الهرمي. (I47c4d، b/166927547) - يتضمّن AwaitPointerEventScope الآن withTimeout() وwithTimeOrNull() (I507f0 وb/179239764 وb/182397793)
- تمت إضافة الحدّ الأدنى لحجم ناحية اللمس المستهدفة إلى ViewConfiguration. للاستخدام في الدلالة وإدخال المؤشر لضمان سهولة الوصول. (Ie861c)
- إتاحة TileMode.Decal وهي مفيدة في تحديد الحافة السلوك الخاص بتأثيرات العرض المستندة إلى التمويه (I7e8ed، b/166927547)
performScrollToIndex
،performScrollToKey
،hasScrollToIndexAction
وhasScrollToKeyAction
هما الآن واجهة برمجة تطبيقات ثابتة (I142ae، b/178483889)- تمت إضافة طريقة اختبار للحصول على الحدود المقطوعة. (I6b28e)
إصلاح الأخطاء
- تمت إزالة طريقة isBounded من BreredEdgeTreatment لصالح من التحقق بشكل صريح مما إذا كان الشكل المعلمة خالية. (I85d68)
الإصدار 1.1.0-alpha02
18 آب (أغسطس) 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha02
. يحتوي الإصدار 1.1.0-alpha02 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- يدعم PointerEvent الآن القراءة حالة زر الماوس وحالة تعديل لوحة المفاتيح. (I6310c، b/180075467)
- تستخدم الإيماءات التي يتم إدخالها الآن وقت MainTestClock
مصدرًا للحقيقة للوقت. الوقت الحالي للأحداث التي تم إدخالها في
سيتم إعداد
performGesture
على الوقت الحالي بتاريخ MainTestClock. (Ifb364 وb/192064452) - تمت إضافة دالة إنشاء
DpRect(DpOffset, DpSize)
(I2cf16، b/194219828) - تمت إضافة فئة DpSize (I7abb1، b/194219828).
إصلاح الأخطاء
- ملف XML الذي تم تحديثه لرسومات المتجه التحليل لدعم ColorStateLists باعتباره خصائص تظليل لون الجذر في VectorDrawables. (I86915، b/195668138)
الإصدار 1.1.0-alpha01
4 آب (أغسطس) 2021
تم طرح androidx.compose.ui:ui-*:1.1.0-alpha01
. يحتوي الإصدار 1.1.0-alpha01 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تقبل
RelocationRequester.bringIntoView
الآن المستطيل كمعلمة تتيح لنا عرض جزء من عنصر قابل للإنشاء (Ice2c5، b/194330245). - تتوفر الآن واجهة برمجة التطبيقات
AnimatedImageVector
وواجهات برمجة التطبيقات ذات الصلة في الإصدار الجديد وحدةandroidx.compose.animation:animation-graphics
. (I60873) - تمت إضافة مفتاح تعديل تجريبي للتعامل مع طلبات النقل. (I65a97، b/178211874)
طرح واجهة برمجة التطبيقات BrushPainter لدعم رسم فرشاة عشوائية داخل الرسام، على غرار ColorPainter
تم تحديث واجهة Brush API للحصول على حجم أساسي المعلمة التي يتم الاستعلام عنها داخل BrushPainter (Ia2752، وb/189466433)
تم تحديث طريقة DrawScope#drawImage التي تستهلك ساحات المصدر والوجهة استهلاك نوع تصفية اختياري . يفيد ذلك في هواتف Pixel الأعمال الفنية المعدّة لتقطيعها عند توسيع نطاقها لاستخدام رسومات بكسل تعديل BitmapPainter + الصور القابلة للإنشاء أيضًا استهلاك نوع تصفية اختياري مَعلمة (Ie4fb0، وb/180311607)
تمت إضافة طريقة
GestureScope.advanceEventTime
لتقديم المزيد التحكّم في توقيت الأحداث من خلال إيماءة (Ibf3e2)
إصلاح الأخطاء
- من أجل دعم تسلسل
رسم مفاتيح التعديل، والتأكد من استخدام تطبيق Modifier.paint
يرسم المحتوى.
كان من المتوقع أن يصل Modifier.paint سابقًا إلى عقدة ورقة الشجر في
سلسلة المعدِّلات، فإن القيام بذلك يمنع
من التهيئة على حاوية قابلة للإنشاء (على سبيل المثال مربع)
أو إضافة زخارف إضافية فوقها، مثل
Modifier.paint().border()
من خلال استخدام Modifier.paint استدعاء drawContent بعد رسم محتويات المحدد لدينا تناسق سلوك أفضل في السلوك مع نمط التعديل. (Ibb2a7، b/178201337، b/186213275) - تتبع مربّعات الحوار الآن سلوك تحديد حجم المنصة. اضبط السمة
usePlatformDefaultWidth
على "خطأ" لإلغاء هذا السلوك. (Iffaed، b/192682388) - تم نقل
InfiniteAnimationPolicy
إلى :compose:ui (I5eb09، b/160602714). - الانتقال من خلال إجراءات الدلالة الخاصة بالقوائم الكسولة ومكوّنات التمرير العادي أصبحت متحركة الآن (Id9066 وb/190742024)
الإصدار 1.0
الإصدار 1.0.5
3 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.ui:ui-*:1.0.5
. يحتوي الإصدار 1.0.5 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح مثيلات الحالة المستمدة من تتبُّع الأعطال. (aosp/1792247)
الإصدار 1.0.4
13 تشرين الأول (أكتوبر) 2021
تم طرح androidx.compose.ui:ui-*:1.0.4
. يحتوي الإصدار 1.0.4 على عمليات الالتزام هذه.
التحديثات المتعلقة بالاعتمادية
- تم التعديل لكي تعتمد على
1.5.31
بلغة Kotlin.
الإصدار 1.0.3
29 أيلول (سبتمبر) 2021
تم طرح androidx.compose.ui:ui-*:1.0.3
. يحتوي الإصدار 1.0.3 على عمليات الالتزام هذه.
التحديثات المتعلقة بالاعتمادية
- تم التعديل لكي تعتمد على
1.5.30
بلغة Kotlin.
الإصدار 1.0.2
1 أيلول (سبتمبر) 2021
تم طرح androidx.compose.ui:ui-*:1.0.2
. يحتوي الإصدار 1.0.2 على عمليات الالتزام هذه.
تم التعديل لإتاحة إصدار 1.0.2
لميزة Compose. لا تزال ميزة إنشاء 1.0.2
متوافقة مع لغة 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 Studio Bumblebee وAGP7.1
. (b/194289155)
الإصدار 1.0.0-rc02
14 يوليو 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-rc02
. يحتوي الإصدار 1.0.0-rc02 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تتبع مربّعات الحوار الآن سلوك تحديد حجم المنصة. اضبط السمة
usePlatformDefaultWidth
على "خطأ" لإلغاء هذا السلوك. (Iffaed، b/192682388)
الإصدار 1.0.0-rc01
1 تموز (يوليو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-rc01
. يحتوي الإصدار 1.0.0-rc01 على هذه عمليات التنفيذ.
الميزات الجديدة
- تم تقسيم وحدة أدوات واجهة المستخدم إلى
ui-tooling
وui-tooling-preview
(Iefa28، وb/190649014).
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة السمتَين التجريبيتَين
FocusManager#moveFocusIn
وFocusManager#moveFocusOut
المتوقّفتَين نهائيًا (I227d7 وb/170154986 وb/186567354 وb/168510304) - تدعم لوحة الرسم الآن معلمة contentDescription سهولة الوصول. (Ib547c)
- تمت إعادة تسمية "
useDefaultMaxWidth
" في "PopupProperties
" إلى "usePlatformDefaultWidth
". (I05710) - يمكن لمربّعات الحوار الآن استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
- إضافة دعم تجريبي للألوان HSV وHSL والتمثيليات. (Id7cf8، b/180731008)
تغييرات السلوك
- يوفر إنشاء
@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 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
- تغيير دور التعداد وLiveRegionMode إلى فئات مضمّنة مع دالة إنشاء خاصة (Id1890)
- يتم تحويل الكتابة بالأحرف الكبيرة للوحة المفاتيح إلى فئة مضمّنة. (Id5a1c)
- تغيير HapticFeedbackType إلى فئة مضمّنة (I255ec)
- Modifier.pointerInteropFilter هو @experimentalComposeUiApi. (Iede6c)
- محاذاة النص وFontSynthesis وTextDirection أصبحت مضمّنة الآن الصفوف. (I212fe)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
- أصبح FontStyle الآن فئة مضمّنة. (I9e48b)
إصلاح الأخطاء
- الثوابت الرئيسية هي @experimentalComposeUiApi في الوقت الحالي. استهلاك التعليمة البرمجية أن تعلن عن الثوابت الخاصة قبل التثبيت. (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-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime.
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- .androidx.compose.ui.util
ما هي قواعد الملف الشخصي؟
تم تحديد قواعد الملف الشخصي للمكتبة في ملف نصي
baseline-prof.txt
فيsrc/main
أو في دليل مكافئ. يحدد الملف قاعدة في كل سطر، حيث تكون القاعدة في هذه الحالة نمطًا للمطابقة مع الطرق أو الفئات في المكتبة. تعتبر بنية هذه القواعد جزءًا رئيسيًا من تنسيق الملف الشخصي ART الذي يمكن للمستخدمين قراءته، والذي يتم استخدامه عند استخدامadb shell profman --dump-classes-and-methods ...
. تتخذ هذه القواعد أحد الشكلين لاستهداف الطرق أو الفئات.سيكون لقاعدة الطريقة النمط التالي:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
وسيكون لقاعدة الفئة النمط التالي:
<CLASS_DESCRIPTOR>
تتضمّن
<FLAGS>
حرفًا واحدًا أو أكثر من الرموزH
وS
وP
للإشارة إلى ما إذا كان يجب وضع علامة على هذه الطريقة على أنّها "سريعة" أو "بدء تشغيل" أو "ما بعد بدء التشغيل".تمثّل السمة
<CLASS_DESCRIPTOR>
وصفًا للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، يجب أن يكون للفئةandroidx.compose.runtime.SlotTable
واصف للقيمةLandroidx/compose/runtime/SlotTable;
.تمثّل السمة
<METHOD_SIGNATURE>
توقيع الطريقة وتتضمّن الاسم وأنواع المَعلمات وأنواع النتائج التي تتضمنها الطريقة. على سبيل المثال، تحتوي الطريقةfun isPlaced(): Boolean
فيLayoutNode
على التوقيعisPlaced()Z
.يمكن أن تشتمل هذه الأنماط على أحرف بدل (
**
و*
و?
) لكي تشتمل قاعدة واحدة على طرق أو فئات متعددة.
ما هي وظيفة القواعد؟
تشير الطريقة التي تتضمّن العلامة
H
إلى أنّ هذه الطريقة "مهمة". وينبغي تجميعها مسبقًا.تشير الطريقة التي تحمل العلامة
S
إلى أنّها طريقة يتم استدعاؤها عند بدء التشغيل، ويجب تجميعها مسبقًا لتجنُّب تكلفة التجميع وتفسير الطريقة في وقت بدء التشغيل.تشير الطريقة التي تحمل العلامة
P
إلى أنّ هذه الطريقة يتم طلبها بعد بدء التشغيل.تشير الفئة المتوفّرة في هذا الملف إلى أنّه يتم استخدامه أثناء بدء التشغيل ويجب تخصيصها مسبقًا في الذاكرة لتجنُّب تحمُّل تكلفة تحميل الفئة.
آلية العمل
- يمكن للمكتبات تحديد هذه القواعد التي سيتم جمعها في عناصر AAR. عندما يتم بعد ذلك إنشاء تطبيق يتضمن هذه العناصر، يتم دمج هذه القواعد معًا ويتم استخدام القواعد المدمجة لإنشاء ملف شخصي ثنائي ART مُدمَج خاص بالتطبيق. ويمكن لـ ART بعد ذلك الاستفادة من ملف التعريف هذا عند تثبيت التطبيق على الأجهزة من أجل تجميع مجموعة فرعية محددة من التطبيق مسبقًا لتحسين أداء التطبيق، وخاصة عملية التشغيل الأولى. يُرجى العلم أنّ ذلك لن يؤثر في التطبيقات التي يمكن تصحيح الأخطاء بها.
الإصدار 1.0.0-beta08
2 حزيران (يونيو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta08
. يحتوي الإصدار 1.0.0-beta08 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تم استبدال تعداد
NestedScrollSource
بفئة مضمّنة. (Ie321b، b/187055290) - تمت إعادة تسمية "
FocusManager.clearFocus(forcedClear = true)
" إلى "FocusManager.clearFocus(force = true)
" (Ia0c41). - إعادة احتساب استخدامات التعداد في الفئات المضمَّنة لتجنُّب بعبارات تتضمن عبارات شاملة عند إضافة قيم enum جديدة. (I2b5eb)
- إزالة
@ExperimentalComposeUiApi
منPopupProperties
(I01fa6) - تم تغيير
PointerType
من تعداد إلى فئة مضمّنة (If5058). - لم تعُد خصائص ContentDescription وText دلالات قيم فردية ولكن القوائم. يتيح ذلك دمجها كما هي بدلاً من ذلك التجميعات. وتم أيضًا تقديم واجهات برمجة تطبيقات اختبارية أفضل للاستفادة من هذه التغييرات (Ica6bf، b/184825850)
- تم إيقاف
Modifier.focusModifier()
نهائيًا واستبداله بـModifier.focusTarget()
(I6c860). - لم تعد
Modifier.onSizeChanged()
وModifier.onGloballyPositioned()
دالتين مضمَّنتين (I727f6 وb/186109675) - تم استبدال تعداد
KeyboardType
بفئة مضمّنة. (I73045، b/187055290) - تم استبدال تعداد
FocusState
بواجهةFocusState
(Iccc1a، وb/187055290). - يتم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
- يتم تحويل
PlaceholderVerticalAlign
إلى فئة مضمّنة. (If6290) - TextUnitType هي فئة مضمّنة الآن. (I4cba9)
- دوال
AnnotatedString.withAnnotation
هي الآن TestalTextApi بدلاً من تجريبيComposeApi. (I0cd0a)- دالة إنشاء TextUnit مع TextUnitType أصبحت الآن تجريبيTextApi بدلاً من تجريبيComposeApi.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تم طرحه في version07 حيث كان يتم عرض عناصر LazyColumn/Row جزئيًا بعد الانتقال للأسفل (I8c9ac، وb/188566058).
- الآن، ستستهلك
detectDragGesures
وdetectVerticalGestures
وdetectHorizontalGestures
تغيير الموضع تلقائيًا، ولن تحتاج إلى استدعاء change.consumePositionChange في استدعاءات onDrag (I42fc4 وb/185096350 وb/187320697) - تم إصلاح أدوات LayoutModifiers التي توفر خطوط المحاذاة. تم إصلاح خطأ يتسبب في عدم إعادة قياس الوالدين عند تغيير خطوط المحاذاة للأطفال. (I4401f، b/174315652)
- تم تغيير
Modifier.onGloballyPositioned()
للإبلاغ عن إحداثيات هذا التعديل في سلسلة مفاتيح التعديل، وليس إحداثيات التنسيق بعد تطبيق جميع مفاتيح التعديل. وهذا يعني أن ترتيب المعدِّلات يؤثر الآن في الإحداثيات التي سيتم الإبلاغ عنها. (Ieb67d، b/177926591)
الإصدار 1.0.0-beta07
18 أيار (مايو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta07
. يحتوي الإصدار 1.0.0-beta07 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة واجهة
ViewRootForInspector
للاستخدام في أداة الفحص (Ib70df). - يتيح تطبيق "
SubcomposeLayoutState
" الآن ضبط عدد الخانات القابلة لإعادة الاستخدام. سيحافظ التنسيق على ما يصل إلى خانات العدد هذه نشطة بدلاً من التخلص منها لإعادة استخدام الخانة في المرة القادمة التي نحتاج فيها إلى خانة جديدة (Ieb981). - يتم استبدال تعداد KeyEventType بفئة مضمّنة. (Id670a، b/187055290)
- تم استبدال تعداد
FocusDirection
بفئة مضمّنة. (Ib6d03، وb/187055290، وb/184086802) - تتيح هذه الميزة إمكانية رفع حالة SubcomposeLayout التي تسمح لك بتركيب المحتوى مسبقًا في شريحة SIM مطلوبة، ما يجعل المقياس التالي يسير بشكل أسرع بمجرد محاولة الإنشاء الفرعي باستخدام رقم تعريف مضمّن في المرة القادمة لن تكون هناك حاجة إلى أي تركيبة. (I42580، b/184940225)
- تمت إضافة مقبض اختيار المقطع (Iff80d، وb/183408447)
- تمت إزالة واجهات برمجة التطبيقات غير المستخدمة والمرتبطة بدعم LayoutInspector. (I2ac78)
إصلاح الأخطاء
- سيحتفظ العمود الكسول/الصف الآن بما يصل إلى عنصرَين نشطَين سابقًا (لا يتم التخلص منه) حتى عند الانتقال للأسفل أو للأعلى. يسمح هذا للمكون بإعادة استخدام الإنشاءات الفرعية النشطة عندما سنحتاج إلى إنشاء عنصر جديد يحسن أداء التمرير. (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)- تمت إضافة واجهتَي برمجة تطبيقات لأدوات تسهيل الاستخدام "مجموعة معلومات" و"مجموعة معلومات عنصر" تسمحان بوضع علامة على المجموعة وعناصرها في الخدمات المخصصة لتسهيل الاستخدام (Id54ef وb/180479017).
- تمت إضافة "
SemanticsActions.ScrollToIndex
" للتمرير في القائمة باستخدام العناصر المفهرسة إلى العنصر بفهرس معين،SemanticsProperties.IndexForKey
للحصول على فهرس عنصر في قائمة بالعناصر الرئيسية. تنفِّذ ميزة LazyList كلا الإجراءَين.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndex
الذي بالتمرير القائمة إلى الفهرس المحدد،SemanticsNodeInteraction.performScrollToKey
الذي ينقل القائمة إلى بالمفتاح المعين. (I4fe63، وb/178483889، وb/161584524)
- تمت إضافة
- تمت إضافة ownerViewId إلى GraphicLayerInfo (I19f62)
- تمت إضافة أحمال Font() لتحميل الخطوط من مواد العرض، وFile وFileDescriptor (I5d382)
- تمت إضافة واجهة برمجة التطبيقات Accessibility API
error
التي تسمح بوضع علامة على عقدة تحتوي على إدخال غير صالح (I12997، b/180584804، b/182142737) - تمت إضافة
Font()
أحمال زائدة لتحميل الخطوط. من مواد العرض، File وFileDescriptor (I43007) - إتاحة حفظ AnnotatedString في
TextFieldValue.Saver
تاريخ الإضافة:addTtsAnnotation
و withAnnotationAnnotatedString.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
الأخرى. وهي دالة عامة غير مستخدمة تمت إضافتها للاختبار. لا تفعل الدالة أي شيء قابل للاستخدام واجهات برمجة تطبيقات إنشاء النصوص تم إيقاف هذه الدالة الآن إزالتها لاحقًا. (I80413)
إصلاح الأخطاء
- السعر الثابت
ACTION_SCROLL_FORWARD
وACTION_SCROLL_BACKWARD
accessibilityActionScrollLeft
،accessibilityActionScrollUp
،accessibilityActionScrollRight
وaccessibilityActionScrollDown
إجراءات التمرير لإمكانية الوصول. وبدلاً من التمرير إلى نهاية قابل للتمرير، سيتم الآن تمريره بشاشة واحدة في الاتجاه المحدد. (Ieccb0) - يمكن الاطلاع على ملفات AndroidManifest من ملف ui-test-manifest تتوافق أداة ui-tooling-data الآن مع نظام التشغيل Android 12 (I6f9de وb/184718994).
الإصدار 1.0.0-beta04
7 نيسان (أبريل) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta04
. يحتوي الإصدار 1.0.0-beta04 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- إعادة تسمية
hideSoftwareKeyboard
وshowSoftwareKeyboard
في منSoftwareKeyboardController
إلىhide()
وshow()
على التوالي.- توفير واجهة ChocolateLocal الكاملة LocalSoftwareControllerController، مع السماح بتعيينها (بشكل خاص مفيدة في الاختبارات) (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) - يعتمد إنشاء ViewBinding الآن على
القسم
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
على الجهاز واجهة برمجة التطبيقات لاستبدال واجهة SoftwareboardController السابقة على حقل النص. (I5951e، b/168778053) - تمت إضافة مقطوعة موسيقية جديدة باللغة
LocalSoftwareKeyboardController
على الجهاز واجهة برمجة التطبيقات لاستبدال واجهة SoftwareboardController السابقة على حقل النص. (I84472، b/168778053) - تمت إزالة
SemanticsMatcher
التالية:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- تم وضع علامة على
SemanticsMatchers
التالي بأنّه @experimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- تمت إضافة
SemanticsMatcher
التالية:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
إصلاح الأخطاء
- فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29 وb/174531520)
- لم تعُد الإضافة "
androidx.compose.ui:ui
" تعتمد على AppCompat أو Fragment. إذا كنت تستخدم ComposeView في تطبيقك، وكنت تستخدم Fragment و/أو AppCompat، فتأكد من استخدام AppCompat 1.3 أو إصدار أحدث أو Fragment 1.3 أو إصدار أحدث. يجب توفير هذه الإصدارات لضبط مراحل النشاط ومالكي الحالة المحفوظة المطلوبين لـ ComposeView بشكل صحيح. (I1d6fa، وb/161814404) - إصلاح
rememberSaveable { mutableStateOf(0) }
المعطّل عند استخدامه داخل وجهة إنشاء التنقل. (I1312b، وb/180042685، وb/180701630) - تمت إضافة مقطوعة موسيقية جديدة باللغة
LocalSoftwareKeyboardController
على الجهاز واجهة برمجة التطبيقات لاستبدال واجهة SoftwareboardController السابقة على حقل النص. (I658b6، b/168778053) - إصلاح NoSuchElementException نادر في
ComposeRootRegistry
tearDownRegistry()
(Iddce1)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على عمليات التنفيذ هذه.
هذا هو الإصدار الأول من الإصدار التجريبي من Compose 1.0.0.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة معاودة الاتصال onStart إلى
detectDragGestures
(I67269، b/179995594) - لم تعد معدِّلات الحجم إلى الأساسيات تجريبية. (I15744)
- تمت إعادة تسمية MeasurementBlocks ليصبح measurePolicy، وقد أصبح واجهة ممتعة. تم تعديل أو تبسيط واجهات برمجة التطبيقات للتصميم لاستخدام 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 in ConfigureLocals (I53520)
- تمت إزالة طرق LayoutCoordinates، ويمكنك استخدام الدالة بدلاً من السمة for 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)
- تعرض ميزة "العناصر القابلة للوضع" الآن المقاس الذي تم قياسه، ما يمثّل المقاس الذي تم قياسه بتصميم التصميم الفرعي. قد لا يراعي هذا الحجم قيود القياس. (Ib2729 وb/172560206 وb/172338608)
- إضافة معدِّل selectGroup يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
defaultFactory
لـcompositionLocalOf
staticCompositionLocalOf
مطلوب الآن بدلاً من اختيارية.تؤدي هذه التغييرات إلى إزالة خطأ نوع محتمل لعناصر غير قابلة للقيم الفارغة التي لم يتم فيها توفير مصنع افتراضي. في السابق سيوفر مرجعًا فارغًا لنوع غير قابل للقيم الفارغة.
بالنسبة إلى الأنواع القابلة للقيم الفارغة، ننصحك بتقديم
{ null }
كإعداد تلقائي. المصنع.لا ننصح باستخدام مساحات محلية بأنواع غير قابلة للقيم الفارغة ما لم توفير طريقة افتراضية معقولة. إذا لم يكن هناك أي جهاز افتراضي معقول، يجب أن تطرح دالة
defaultFactory
lambda استثناءً. مع ذلك طرح استثناء يعني أن المستهلكين المحليين سيكون لديهم تبعية ضمنية يتم تقديمها ولا يتم فرضها من خلال نظام الكتابة. (Ifbd2a)تمت إزالة الطُرق المتوقّفة نهائيًا من وحدات واجهة المستخدم (I646f6).
تمت إعادة تسمية معدِّلات الحجم. تمت إعادة تسمية Modifier.width/height/size لتصبح مطلوبةwidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.FavoriteDetails/FavoriteHeight/FavoriteSize إلى العرض/الارتفاع/الحجم. (I5b414)
تمت إزالة
Modifier.tapGestureFilter
. يمكنك استخدامModifier.pointerInput { detectTapGestures(...) }
كبديل. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. والطريقة المقترحة لتنسيق الاستهلاك الجزئي هي Modifier.nested Scroll. (Ie9c9b)
تم نقل التوجيه إلى حزمة الأساس. تم نقل أداة VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8 وb/175294473)
imageResource وectResource هما الآن دالتان للإضافات على الأدوات المصاحبة لـ ImageBitmap وImageVector على التوالي. تم حذف
load{Image,Vector,Font}Resource
دالة. (I89130)وقد تم إدراج AnimationClockObserverable والفئات الفرعية تمت إزالته. تمت إزالة الصور المتحركة العائمة. (Icde52، b/177457083)
تمت إعادة تسمية مقدّمي الخدمات إلى HeadlineLocalProvider.
- لم تعد طريقة إنشاء المقطوعة الموسيقية تقبل معلَمة رئيسية، وتم إيقافها نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة مستوى أعلى قابلة للإنشاء بدلاً من دالة مستوى أعلى قابلة للإنشاء.
- تم نقل GenreData وSurfaceGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم إنشاء واجهة ComposableLambda بدلاً من فئة خرسانة ولم تعد تحتوي على معلمات من النوع.
- تم إنشاء واجهة ComposableLambdaN بدلاً من فئة خرسانية ولم تعد تحتوي على معلمات من النوع.
- تم نقل الدالة sampleFlow إلى مساحة الاسم androidx.compose.runtime.
- فطريقة دمج SnapshotMutationPolicy لم تعد تجريبية
- تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعد من الضروري استخدامه.
- تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعد ضرورية.
- تمت إزالة Composer.collectKeySource Information. لم يعد من الضروري استخدامه.
- تمت إزالة طرق 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).
SnapshotStateObserver لم يعد تجريبيًا (Id2e6a)
تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da، وb/178633932).
تمت إزالة longPressإيماءةFilter ومزدوجة ClickإيماءةFilter. استخدام Modifier.pointerInput مع الدوال المساعدة، مثل install TapIMAPs (I2fedf وb/175294473)
تمت إزالة واجهة برمجة التطبيقات String.format API. حالات إعادة الهيكلة في مختلف طرق toString التي لا يمكن الاستفادة منها String.format داخليًا. (رقم تعريف 1290)
تأكيدات dp التي تمت إزالتها (I798d2)
تمت إزالة androidx.compose.runtime:runtime-dispatch (I55feb).
تعمل الإجراءات النصية الآن على التحقّق من التركيز تلقائيًا (I13777، b/179648629)
تمت إزالة
runBlockingWithManualClock
(I15cdc، b/179664814).يتم تمثيل موضع التمرير في Modifier.vertical scroll()/horizontal scroll() باستخدام Ints now (I81298).
تمت إعادة تسمية FlingConfig ليصبح FlingBehavior يتيح الآن تخصيص الرسوم المتحركة المعلّقة بدلاً من التراجع المحدد مسبقًا. (I02b86، b/175294473)
أضفتَ دالة مساعدة مفيدة اضبط الإجراء نفسه لجميع استدعاءات ImeAction (I63447، b/179226323).
تمت إزالة معاودة الاتصال لـ SoftwareControllerController من كل النص التي سيتم استبدالها قريبًا بواجهة برمجة تطبيقات جديدة. (Iae869، b/168778053)
لم يعُد FontSpan وFontWeigthStyleSpan مُستخدَمًا وتمّت إزالتهما. (Ie5b56، b/177423444)
تم إجراء التغييرات التالية على Material API:
- تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
- المعلَمات المُعاد ترتيبها في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات للمَعلمات المطلوبة قبل المَعلمات الاختيارية.
- تم نقل المعلمة
icon
في Bottom NavigationItem ليكون بعدselected
وonClick
. - تمت إعادة تسمية المعلَمة
alwaysShowLabels
في Bottom NavigationItem إلىalwaysShowLabel
. - تمت إعادة تسمية معلَمات
bodyContent
في بعض المكوّنات لتصبحcontent
فقط. - تم إعادة ترتيب المعلمات في
ButtonDefaults.buttonColors()
. تجدر الإشارة إلى أنّه نظرًا لعدم تغيير نوع المَعلمات، لن يتسبب ذلك في حدوث خطأ في الرمز، لذا يُرجى التأكد من استخدام المَعلمات المُسَمّاة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز كما كان في السابق. - تمت إضافة المَعلمة
secondaryVariant
إلىdarkColors()
. عادةً ما يكون هذا اللون هو نفسه اللونsecondary
في المظهر الداكن، ولكنّه تتم إضافته لتوفير المزيد من الاتّساق وتخصيص المحتوى. - تمت إزالة EliffationDefaults وanimateEliffation() من واجهة برمجة التطبيقات العامة نظرًا لعدم استخدامهما بشكل شائع أو الاستفادة منهما.
- تمت إعادة تسمية
onValueChangeEnd
فيSlider
إلىonValueChangeFinished
وجعله قابلاً للقيم الفارغة. - تمت إعادة تسمية المعلَمة
text
فيSnackbar
إلىcontent
لتحقيق الاتساق. - تمت إضافة المَعلمة
contentPadding
إلىDropdownMenuItem
للسماح بتخصيص المساحة المتروكة التلقائية وتم جعلcontent
إضافة فيRowScope
. - تمت إعادة تسمية "
ModalDrawerLayout
" إلى "ModalDrawer
". - تمت إعادة تسمية "
BottomDrawerLayout
" إلى "BottomDrawer
". - (I1cc66)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد SpamVectorDrawable في Compose. استخدام
ملف animatedVectorResource لتحميل ملف XML بتنسيق
<animated-vector>
بتنسيق ImageVector وتحريكه مع PainterFor (I8ea91) - تمت إضافة مقطوعة موسيقية جديدة من LocalSoftwareControlController على الجهاز. واجهة برمجة التطبيقات لاستبدال واجهة SoftwareboardController السابقة على حقل النص. (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)
- تمت إعادة تسمية GenreReference إلى ChocolateContext (I53fcb)
- تمت إعادة تسمية Bounds إلى DpRect (I4b32a).
- اختبار التحديث: ستبحث hasText() عن كلٍّ من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803).
- تم نقل ملف viewModel() القابل للإنشاء وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. وعليك الآن إضافة تبعية منفصلة هي androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 للتمكّن من استخدامها. (I7a374)
- السماح باتخاذ إجراء قابل للقيم الفارغة في AccessibilityAction، تغيير الإجراء التسمية في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى سلسلة (I0dc82)
- من أجل مطابقة أفضل للتسمية باستخدام ImageBitmap وImageVector، تمّت إعادة تسمية ImagePainter ليصبح BitmapPainter إلى جانب VectorPainter. (Iba381، b/174565889)
- استخدام واجهات برمجة تطبيقات أفضل لاختبار السلاسل الفرعية مع استخدام سلسلة فرعية كوسيطة (Icbe78)
- تمت إضافة
Modifier.focusOrder()
تقبل FocusRequester بدون تحديد ترتيب تركيز مخصص a 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.Restrict. (I8b8ea)
- تم إيقافloadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. imageResource وloadImageResource و"مُتّجهات" و"loadVectorResource" نهائيًا. يُرجى استخدام PainterResource بدلاً من ذلك. (I6b809)
- لأسباب تتعلق بالأداء، تتخذ دلالات ScrollAxisRange الآن دالة lambdas التي تعرض قيمًا عائمة بدلاً من قيم عائمة مباشرة. (If4a35 وb/178657186)
- تمت إضافة دلالات EditableText لتمييز نص الإدخال القابل للتعديل في حقل النص لإمكانية الوصول وطرق الاختبار المقابلة للتحقق من الدلالة (I8e07a).
- تم إنشاء OwnerLayer/OwnerScope/OwnerSnapshotObserver داخليًا (I4ffaf، وb/175103944)
- تمت إعادة تسمية toIntPx() إلىRoundToPx(). (I9b7e4، b/173502290)
- تم تغيير اسم IntBounds إلى IntRect وتحسين واجهة برمجة التطبيقات. (I1f6ff)
- تم تحديث Snapshot API لتصبح أكثر اتّساقًا مع إرشادات واجهة برمجة التطبيقات بالإضافة إلى إخفاء فئات التنفيذ الداخلي من واجهة برمجة التطبيقات العامة. (Id9e32)
- تمت إضافة إجراءات الدلالة لتوسيع وتصغيرها. تمت الإضافة التوسيع ونصف التوسعة في ModalBottomSheetState (Ib5064)
- تم إيقاف Modifier.dragالإيماءاتFilter نهائيًا. يمكنك استخدام
Modifier.pointerInput { detectDragGestures (...)}
كبديل. بدلاً من ذلك، يمكنك استخدام Modifier.draggable لسحب محور واحد (I0ba93، وb/175294473). - تمت إعادة تسمية "وضع الاستراحة" ليتوافق مع "وضع الاستراحة" -> إعادة تسمية GenreLocal. كان يُطلق على "الأحياء" اسم AmbientFoo، أمّا الآن GenreLocals، فهو يطلق عليه LocalFoo. (I2d55d)
- تمت الآن إزالة قاعدة BaseTextField المتوقّفة نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
- تم نقل الاختيار إلى الأساس. (I7892b)
- وعلى غرار الطريقة التي أزلنا بها سابقًا عنصر
state { 0 }
القابل للإنشاء، ونعمل الآن على تعزيز الاستخدام، مثلremember { mutableStateOf(0) }
، سنزيلsavedInstanceState { 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، وتمت إعادة تسمية AmbientUiSavedStateRegistry إلى AmbientSaveableStateRegistry ونقل كل منهما إلى الحزمة androidx.compose.runtime.saveable. (I30224)
- تمت إعادة تسمية Artefact androidx:compose:runtime:runtime-saved-instance-state ليصبح androidx:compose:runtime:runtime-saveable (I6dcac).
- يتم حذف العديد من واجهات برمجة التطبيقات المتوقّفة نهائيًا في حزمة واجهة المستخدم. (I2f2dc)
- تم إيقاف العنصرCompose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في إنشاء:وقت التشغيل يمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)
- لم تعد فئات Outline.* فئات بيانات بعد الآن (I4879e وb/178001427)
- تمت إزالة "
view.captureToImage()
" بدون أي بديل. (I7fcd2) - تم إدخال واجهة برمجة التطبيقات ColorMatrix إلى لتعديل قيم ألوان الأحمر والأخضر والأزرق للمحتوى المصدر واجهة برمجة تطبيقات ColorFilter التي تمت إعادة هيكلتها واجهة وتتوافق مع التنفيذ لـ PathEffect. (Ica1e8)
- أضِف مَعلمةLayoutDirection إلى CreateOutline في الشكل. يسمح ذلك بإنشاء أشكال تراعي اتجاه التخطيط. (I57c20، b/152756983)
- تم إيقاف onImeActionPerformed نهائيًا. يمكنك استخدام إجراءات لوحة المفاتيح بدلاً من ذلك (If0bbd وb/179071523)
- تم تقديم سياق حول الكوروتينات في السمة
InfiniteAnimationPolicy
العنصر الذي سيتم تطبيقه في الرسوم المتحركة اللانهائية. "لا" بشكل تلقائي يتم تثبيت السياسة، إلا عند إجراء اختبارات باستخدامComposeTestRule
. (I50ec4، b/151940543) - تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
- تمت إعادة تسمية LayoutCoordinates.parentCoordinates يساعد LayoutCoordinates.parentLayoutCoordinates في مساحة جديدة الأصل. خاصية parentCoordinates الآن LayoutCoordintes للمعدل الأصلي. سيؤدي هذا إلى حالات استخدام أكثر اكتمالاً لـ onSizeChanged() onGloballyPositioned() (Idfbfd, b/177926591)
- تم نهائيًا إيقاف بكل من AccessibilityFilter و Double TapشيءFilter وlongPressTokenFilter وPressIndicaiton بتطبيقFilter. يمكنك استخدام Modifier.clickable أو Modifier.pointerInput مع وظيفتَي الرمز ExploreTapالإيماءات بدلاً من ذلك. (I6baf9، b/175294473)
- تمت إزالة عنصر unregisterProvider الخاص بـ SaveableStateRegistry. بدلاً من ذلك، تعرض القيمة recordProvider() الآن الكائن SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، وb/178583739).
- تم تغيير اسم SavedInstanceState() لتذكُّر Saveable() ونقله إلى الحزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
- تمت إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة.
- تمت إزالة التحميل الزائد من SelectionContainer المتوقّف نهائيًا
- (I99c19)
- الاختبارات التي يتم فيها استخدام Compose في تسلسلات هرمية التي تمت إضافتها/إزالتها مباشرةً إلى WindowManager أصبحت الآن أكثر ثباتًا. (Ie81ed، b/175765614)
- تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم ضبط الإعدادات التلقائية على أدوات إعادة إنشاء على مستوى النافذة بشكل كسول والمستندة إلى ViewTreeLifecycleOwner للنافذة. إعادة التركيب يتم إيقاف علامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء فترة حياة المضيف متوقف. (I38e11)
- توفّر Recomposer.runningRecomposers الآن سلسلة StateFlow العالمية من RecomposerInfo للقراءة فقط لمراقبة حالة المقطوعة الموسيقية المستمرة في العملية. تفضيل واجهة برمجة التطبيقات هذه على Recomposer.current()، والتي أصبحت الآن نهائيًا. (If8ebe)
- تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6).
- تقبل EditCommands من AnnotatedString. ومع ذلك، فهذه تغيير في واجهة برمجة التطبيقات فقط ولا يمكن تعديل النصوص متعددة الأنماط تنفيذها حتى الآن. (I4c3ea)
- تمت إزالة مدة التشغيل والمدة. (Ib9bf4، b/177420019)
- تم نقل ChocolateData.asTree() وواجهات برمجة التطبيقات ذات الصلة لفصل وحدة بيانات ui-tooling-data ووضع علامة عليها كتجريبية (Ic95b8)
- تمت إعادة تسمية المعلمات على RounderCornerShape وCutCornerShape وCornerbasedShape من اليسار/اليمين إلى البداية/النهاية لدعم الانعكاس التلقائي للشكل في الاتجاه rtl. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا تكون فيها ميزة "المزامنة التلقائية" مطلوبة. (I61040، b/152756983)
واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي للمحول البرمجي في Compose تمت إعادة هيكلته لاستخدام واجهة بدلاً من ملموسة. لم تعد الواجهة تستخدم معلمة نوع.
هذا تغيير داخلي يجب ألا يؤثر في المصدر التوافق مع التعليمات البرمجية ولكنه تغيير فاصل ثنائي. (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)
- تمّت إضافة AmbientSavedStateRegistryOwner بشكل مشابه للمستخدم الحالي من AmbientLifecycleOwner وAmbientViewModelStoreOwner (I9a3e8، وb/176756365).
- تم تحديث الرسومات المتجهة واجهة برمجة تطبيقات لدعم تحليل التلوين تطبيقها على جذر الرسومات المتجهة. (Id9d53، b/177210509)
- تمت إضافة toolType إلى PointerInputChange للتفريق بين الأجهزة (Iac787 وb/175142755)
- تمت إعادة تسمية AmbientWindowManager ليصبح AmbientWindowInfo (I2686a وb/177084714 وb/177084983).
- تم إيقاف طرق الإحداثيات العامة التي تم إيقافها طرق جديدة للإحداثيات المستندة إلى النوافذ. (Iee284)
- تمت إضافة Modifier.toolingGraphicsLayer الذي يضيف أداة تعديل طبقة الرسومات عند تفعيل الفحص. (I315df)
- تم الآن وضع علامة على عنصر FocusRequester.createrefs باعتباره تجريبيًا لأنه قد يتغير. (I2d898، b/177000821)
- تمت إعادة تسمية SemanticsPropertyReceiver.hidden لتصبح غير مرئيةToUser وتم وضع علامة @experimentalComposeUiApi على الحساب. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تم تغيير اسم StateDescriptionRange إلى promotionBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibility scrollState إلى horizontal scrollAxisRange. تمت إعادة تسمية verticalAccessibility scrollState إلى vertical ScrollAxisRange. (Id3148)
- تمت إزالة بيانات PointerInputData وتعديل بيانات PointerInputChange لمنحه جميع حقول PointerInputData. Made PointerInputEvent وPointerInputEventData داخليًا لأنه لا يتم استخدامها في أي واجهة برمجة تطبيقات عامة. (Ifff97، وb/175142755)
- تنفيذ GraphicsLayerScope المعدَّل الكثافة لدعم عمليات تحويل البيانات من نقطة إلى بكسل إلى وحدات البكسل الأولية. (Ied528، b/176819695)
- تم تعديل واجهة برمجة تطبيقات المصفوفة لمتابعة الصف. الترتيب الرئيسي وتوفير ثوابت الفهرس للمساعدة في الإحالات الناجحة بين مختلف تمثيلات المصفوفة لمطابقة إطار العمل منطق التحويل بين SkMatrix والمصفوفة داخليًا. (I432e6)
- تمت إزالة الطرق التجريبية monotonicFrameAnimationClockOf (Ib753f وb/170708374).
- انقل String.fintPrecedingBreak وString.fingFollowingBreak إلى InterTextApi. (I657c4)
- تمت إزالة androidx.compose.ui.util.isSurrogate مستندات ، من واجهة برمجة التطبيقات العامة. (Ia9494)
- تمت إعادة تسمية TransformText.transformedText إلى TransformedText.text.
- لم تعد TransformText فئة بيانات (Ie672a)
- تمت إزالة "
data class
" من الصفوف التالية:- InlineTextContent
- LocaleList (I605c7)
- لم تعُد الفئات التالية فئات بيانات:
- سلسلة تعليقات توضيحية
- نمط الفقرة
- نمط الإسبريسو
- نمط النص
- كثافة الخط
- زخرفة النص
- تحويل النص الهندسي
- فهرس النص
- نتيجة نصية
- TextLayoutInput (Iaff99)
- تغيير التحويل المرئي ليصبح واجهة وظيفية (I3bba4)
- تمت إضافة نوع مَعلمة مرجع دالة (I5e1bd).
- إضافة حدود محوّلة إلى InspectorNode (Ice42f)
إصلاح الأخطاء
- تم إيقاف onCommit وonDispose وonActive نهائيًا لصالح واجهات برمجة التطبيقات SideEffect وDisposableEffect API (If760e).
تغييرات على وظائف Font/FontFamily/Typeface (الخط الطباعي)
- تمت إضافة دوال المصنع التي تبدأ بحرف كبير
- تم إيقاف وظائف المصنع السابقة نهائيًا مع أحرف صغيرة الأحرف الأولى
- تقوم وظائف المصنع الجديدة بإرجاع FontFamily بدلاً من الفئات الفرعية
- أخفى الإنشاءات للفئات الفرعية بحيث يمكن أن يتم إنشاؤها من خلال وظائف المصنع فقط.
- تمت إعادة تسمية Font.asFontFamily إلى Font.toFontFamily (I42aa7).
تم تقديم
ComposeContentTestRule
، والذي يمتد وتحدّدComposeTestRule
السمةsetContent
، والتي تمت إزالتها منComposeTestRule
تمت إضافة طريقة المصنعcreateEmptyComposeRule()
تعرضComposeTestRule
ولا تؤدي إلى تشغيل أي نشاط يناسبك ذلك. يمكنك استخدام هذا الخيار عندما تريد تفعيل سجلّ "نشاطك" أثناء الاختبار، مثلاً: باستخدامActivityScenario.launch
(I9d782، b/174472899)أصبحت animateAsState الآن animateFooAsState، حيث Foo هو ونوع المتغير الذي يكون متحركًا. مثلاً: التعويم، Dp، الإزاحة، وما إلى ذلك (Ie7e25)
تمت إضافة مَعلمة وصف المحتوى إلى الصورة والرمز. تُستخدم لتقديم وصف لخدمات تسهيل الاستخدام (I2ac4c).
أزِل DisplaySize لأنّه يجب تجنبه. عادةً ما تكون من الأفضل استخدام حجم onRoot() أو حجم النافذة على الأقل. (I62db4)
كان OnSizeChanged يُبلغ عن حجم مخطط المحتوى. وهي الآن تقوم بالإبلاغ عن الحجم في موضعه داخل سلسلة تعديل. (I36b78، b/177562900)
تم نهائيًا إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائدة وإعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن باسم مختلف فقط لاتباع اصطلاحات التسمية في Compose (I4137b)
يقبل TextFieldValue إمكانية إضافة التعليقات التوضيحية. ومع ذلك، فهذه تغيير في واجهة برمجة التطبيقات فقط ولا يمكن تعديل النصوص متعددة الأنماط تنفيذها حتى الآن.
- تمت إزالة
initial
من معلَمات الدالة الإنشائية تحريرية. (I326d5)
- تمت إزالة
تم إيقافableate وCompateReference() نهائيًا لصالح currentRecomposeScope و"تذكُّر لبطاقة تحكُّم مستخدمة" على التوالي. (I583a8)
تم تغيير AnnotatedString لتوسيع نطاقه من kotlin.CharSequence. وبالتالي، فإن الطول والتسلسل الفرعي هما الآن دوال مثيل، وتتم إزالة دوال الإضافات. (Iaf429)
يستبدل trebserver منصة MonitorLifecycleObserver وقد تم إيقاف ConnectionLifecycleObserver نهائيًا.
يُعد
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.Inherit. يُرجى استخدام TextUnitType.غير محدَّد بدلاً من ذلك. (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)
- تمت إزالة استخدام showObserver المتوقّف على onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9 وb/175156387)
- تغييرات في واجهة برمجة التطبيقات EditOperations API
- تمت إعادة تسمية EditOperation باسم EditCommand
- تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة في EditOperation
- لم تعد EditCommand فئات بيانات
- تمت إعادة تسمية الدالة EditOperation.process إلىapplyTo
- تمت إعادة تسمية InsertEventListener إلى enterEventCallback
- (I0a366)
- تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَم. تم تغيير Size.center() لتكون ملكية. (I973f7)
- ستتمكن وحدة اختبار ui الآن من ضبط إنشاء أدوات إعادة إنشاء واجهات المستخدم التي تخضع للاختبار (Ibebd8)
- سرعة معدلة لتحتوي على أجزاء مكونة ورياضية العمليات التجارية. (Ib0447)
- تمت إعادة تسمية "
@ExperimentalTesting
" إلى "@ExperimentalTestApi
" متسقة مع التعليقات التوضيحية المشابهة لواجهة برمجة التطبيقات (Ia4502، b/171464963) - تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
- تمت إزالة فئات DpInverse وDpSquared وDpCubed غير المستخدَمة. (I4d62b)
- تمت إعادة تسمية Contraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- أضِف رد اتصال لإشعار المالك عند تغيير حدود عقدة التخطيط. (I72fd1)
- تمت إضافة isSpecified وisUnspecified وUseOrElse. الفئات المضمنة ذات ثابت غير محدد. (I93f7b، b/174310811)
توسيع واجهات برمجة تطبيقات ComposeView للسماح بإعادة التدوير مشاهدات من خلال التأليف مع عرض المقطوعات الموسيقية لإعادة ابتكارها لاحقًا. إضافة واجهات برمجة تطبيقات لتثبيت أدوات إعادة الإنشاء على مستوى النافذة واكتشافها و ComposeReferences لإنشاء مقطوعات موسيقية فرعية.
أضِف ViewCoverStrategy لإعداد ميزة التخلّص من المقطوعة الموسيقية. استراتيجية [Abstract]ComposeViews السلوك الافتراضي هو التخلص من من بين النوافذ. (I860ab)
تمت إزالة واجهة برمجة تطبيقات Any.identityHashCode() العامة (I025d7)
تمت إزالة toStringAsFixed واجهة برمجة التطبيقات لصالح استخدام String.format بدلاً من ذلك مباشرةً. (Iama6b)
إضافة مفتاح تبديل إلى المؤسسة Strings.kt (I4a5b7، b/172366489)
تم نقل NativeClass إلى وجعلته داخلية. تم تعديل الاستخدامات المتعلقة بـNativeClass في تساوي عمليات التنفيذ "is MyClass" بدلاً من ذلك. (I4f734)
تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. بدلاً من ذلك، استخدِم Modifier.focusModifier() وModifier.focusReference() . (I75a48 وb/175160751 وb/175160532 وb/175077829)
تم تقديم SelectionRegistrar.notifySelectableChange لإعلام بالتحديثات القابلة للاختيار إلى SelectionManager. (I6ff30، b/173215242)
تم تقديم Outline.bounds الخاصية للحصول على المستطيل المحاط لاستخدامات المخططات المختلفة. (I16e74، b/175093504)
تم إيقاف TestUiDispatcher. يمكنك استخدام Dispatchers.Main بدلاً من ذلك (Ic171f وb/175385255).
لم تعد ImeOptions وKeyOptions فئة بيانات (I3c898 وb/168684531)
التغييرات في VisualTransformation API
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم يعد تحويل كلمات المرور من فئة البيانات
- تم نقل OffsetMapping إلى ملفها الخاص
- (I0bdf3)
تمت إعادة تسمية موضع الإعلان إلى DpOffset وإزالة getمسافة() (Ib2dfd).
تم تغيير Dp.isFinite() الممتع إلى val Dp.isFinite (I50e00).
إصلاح الأخطاء
- تعرض أداة إعادة الإنشاء الآن تدفقًا لحالتها الحالية، ما يسمح مراقبة نشاطه ونشاط التأثيرات المرتبطة به. (Ifb2b9)
- يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397)
- تم الآن استبدال
animate()
بـanimateAsState()
، التي تعرضState<T>
بدلاً منT
. يتيح ذلك تحسينًا الأداء، حيث يمكن تضييق نطاق إبطال إلى حيث يتم قراءة قيمة الدولة. (Ib179e) - إضافة واجهة برمجة تطبيقات الدور الدلالي وإضافة دور كمَعلمة إلى مفتاح دلالات قابل للنقر وقابل للاختيار والتبديل. تمّ التغيير 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 بدلاً من ذلك. (Idd695)
- تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter نهائيًا باستخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً من ذلك (Idbf1b وb/175156384).
- تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 وb/168511863 وb/168511484)
- بالنسبة إلى تعليق واجهات برمجة التطبيقات لإدخال المؤشر، تمت إعادة تسميتها HandlePointerInputScope إلى AwaitPointerEventScope و HandPointerInput() إلى awaitPointerEventScope() (Idf0a1، b/175142755)
- أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية تتطلب الموافقة (I0a1ec).
- إضافة تعريفات التدمير لإنشاء مثيلات FocuSRequester (I35d84 وb/174817008)
- تمت إعادة تسمية AccessibilityLabel إلى contentDescription. تمت إعادة تسميةAccessibilityValue إلى StateDescription. (I250f2)
- تمت إزالة الأحداث المخصّصة من واجهة برمجة تطبيقات إدخال المؤشر المعلّقة (Ia54d5 وb/175142755).
- تم إدخال العديد من الدوال الجديدة في SelectionRegistrar، وتم أيضًا تغيير اسم onPositionChange إلى notificationsPositionChange. (Ifbaf7)
- المزيد من أعضاء LayoutNode الذي وضعنا علامة عليه كـ داخلي (I443c6)
- تم تقديم LayoutInfo لاستخدامها من خلال الأدوات والاختبار (I9b190)
- AndroidOwner تم إنشاؤه داخليًا (Ibcad0، b/170296980)
- تمت إزالة التعليق التوضيحي TestingalPointerInput (Ia7a24)
- تمت إضافة نظام التمرير المُدمج. يمكنك الرجوع إلى Modifier.nested Scroll لمزيد من التفاصيل (I36e15 وb/162408885).
- تم إنشاء subcomposeInto(LayoutNode) داخليًا (Id724a)
تم تغيير الواجهة
Applier
لتبسيط بناء الأشجار من أسفل إلى أعلى بدلاً من من أعلى إلى أسفل.تمت إعادة تسمية الطريقة
insert()
إلىinsertTopDown()
.تمت إضافة طريقة جديدة،
insertBottomUp()
.يُدرج التطبيق العُقد في الشجرة التي يعدّلها استخدام
insertTopDown()
أوinsertBottomUp()
حسب أيهما أفضل أداءًبعض الأشجار، مثل
LayoutNode
وView
، أكبر بكثير أكثر كفاءة في البناء من أسفل إلى أعلى من إنشاءه من أعلى إلى أسفل. قبل هذا التغيير، كان هناك حاجة إلى حزمة من الإدخالات لتنفيذ التغييرات من الأسفل إلى الأعلى يجب نسخه إلى كل تطبيق يحتاج إلى ترتيب الإنشاء من أجل الأداء. مع هذا التغيير،Applier
تلغيinsertBottomUp()
لإنشاء ترتيب متدرج من الأسفل إلى الأعلىinsertTopDown()
لبناء الشجرة من أعلى إلى أسفل (Icbdc2)تمت إضافة خاصيتَي إزالةOnBackPress ومسحOnClickOff إلى AndroidDialogProperties. تتيح هذه الإعدادات ضبط وقت استدعاء دالة onReceivedRequest lambda في مربع الحوار. (If5e17)
تمت إضافة PainterResource API معالجة كائنات الطلاء التي يتم تحميلها بشكل غير شفاف من تنسيقات مواد العرض التي تم بكسلتها (مثل ملفات 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)
تمت إزالة التسجيل العام (غير) لـ ComposeIdlingResource و التسجيل العام (إلغاء) للساعات في ComposeIdlingResource (I32660)
إصلاح الأخطاء
- أصبحت ملفات Lambdas بمعدِّلات الإزاحة تعرض الآن IntOffset بدلاً من Float. (Ic9ee5، b/174137212، b/174146755)
تمت إزالة سلوت Table وقارئ خانة TableauWriter من واجهة برمجة التطبيقات العامة. تم وضع علامة على هذه المهام على أنها داخلية ComposeAPI سابقًا. وهي الآن داخلية إلى وحدة الإنشاء.
تمّت إضافة لأجهزة ComposeData وSurface Group كـ لاستبدال واجهة برمجة تطبيقات أدوات ui لاستخدامها من أجل استخراج المقطوعة الموسيقية. هذه الإعلانات متاحة للجميع، ولكنّها ليست مُعَدة للاستخدام خارج واجهة برمجة تطبيقات ui-tooling API، وذلك لأنها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling API (I31a9c)
تمت إعادة ضبط ShaderBrush على بإنشاء مثيل تظليل، معلومات تغيير حجم الرسم متوفر. وهذا مفيد لتحديد التدرجات التي تحت حدود الرسم الكاملة لعنصر قابل للإنشاء في وقت التأليف، دون الحاجة إلى تنفيذ عمليات تنفيذ DrawModifier المخصصة.
واجهات برمجة التطبيقات الخاصة بأداة إنشاء دالة التدرج التي تم إيقافها نهائيًا لصالح طرق المصنع على كائن متدرج. (I511fc، b/173066799)
إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed. استخدام LazyColumn وLazyRow بدلاً من ذلك (I5b48c)
BuildCompat.isAtLeastR (Idb37e) متوقفة نهائيًا
تمت إضافة دالة itemAnnotatedString الأصلية بالترتيب. لإنشاء AnnotatedString. سلسلة تعليقات توضيحية متوقفة نهائيًا منشئ المشروع. (Idfe0b)
طرق الإضافات التي تمت إزالتها في Float ومزدوج لتحويل القيم إلى راديان. تم نقلها لتكون دالة خاصة ضمن أداة 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.place تقريبًاWithLayer() تسمح للتنسيقات المخصصة ومفاتيح تعديل التنسيق بوضع عنصر ثانوي مع تقديم طبقة رسومات للرسم. ذلك أنه يمكننا أولاً تحسين عمليات إعادة الرسم، وبالتالي عندما نحتاج إلى نقل عنصر ثانوي لا نضطر إلى إعادة رسم محتواه، ثانيًا يمكننا تطبيق عمليات تحويل لطفل (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 الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير متعددة الأبعاد استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في الاختيار. (I1e6f4 وb/139320372 وb/139320907)
- تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف هي محل التركيز، ونافذة WindowFocusObserver التي توفر استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
- تم تعديل واجهة برمجة التطبيقات TransformOrigin
إتلاف بناء الجملة لعرض
pivotFractionX
وpivotFractionY
باسمcomponent1
وcomponent2
(If43c4 وb/173586560) - تمت إضافة فحص Lint لتسمية مَعلمات lambda القابلة للإنشاء وتحديد موضعها، وذلك للتحقّق من الاتساق مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات باستخدام
children
كاسم لملف lambda اللاحقة إلىcontent
، وفقًا لفحص Lint والإرشادات. (Iec48e) - تمت إضافة واجهة برمجة تطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث رئيسي. (I50ed9)
- تمت إضافة حمل زائد جديد بقيمة
Modifier.drawLayer()
. يتم استخدام كتلة lambda في GraphicsLayerScope جديد حيث يمكنك تحديد معلمات الطبقة بطريقة تسمح بتخطي إعادة التركيب والإرسال عند حدوث تغيير الحالة. تطبيق DrawLayerModifier داخلي الآن في مرحلة الاستعداد لنقل منطقه إلى طريقةplaceable.placeWithLayer() في LayoutModifier (I15e9f, b/173030831) - تم إيقاف "وضع الاستراحة" نهائيًا باستخدام اللاحقة
Ambient
، واستبدلها بسمات جديدة تبدأ بـ "وضع الاستراحة"، وذلك وفقًا لإرشادات واجهة برمجة التطبيقات الخاصة بميزة "بيئة المحيطة" و"Compose" الأخرى. (I33440) - تم نقل
androidx.compose.ui.text.Typeface
إلىandroidx.compose.ui.text.font.Typeface
(Ic2b81) - تمت إعادة تسمية وسيطة integrationAllDescendants للدلالات إلى integrationDescendants. (Ib6250)
- أداة جديدة لرصد إيماءات السحب التي تعلّق مؤشر الماوس واجهة برمجة تطبيقات الإدخال، بما في ذلك قفل الاتجاه. (Icef25)
- تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset إلى "Builder" وإعادة تسميته إلى فئة داخلية من ImageVector وفقًا إرشادات واجهة برمجة التطبيقات. تمت إضافة typealias من VectorAssetBuilder إلى إلى ImageVector.Builder for compat. (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.ثم. تمت إزالة Color.Unset، يُرجى استخدام Color.Unspecified. تمت إزالة فئة PxBounds، استخدِم Rect بدلاً من ذلك. (Ie9d02، b/172562222)
- تم تحديث واجهة المحاذاة وجعلها تعمل. (I46a07، b/172311734)
- أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وتمت إضافة مؤشر صحفي باستخدام مؤشر التعليق الجديد إدخال. تمت إضافة بعض برامج الخدمات لتسهيل عملية للمطورين كتابة أدوات الكشف عن الإيماءات الخاصة بهم. (I00807)
- تم تغيير اسم "
id
" إلى "layoutId
" لحساب "LayoutIdParentData
". تمت إعادة تسمية "Measurable.id
" إلى "Measurable.layoutId
". (Iadbcb, b/172449643) - أداة جديدة لرصد إيماءات اللمس المتعدد، بما في ذلك مساعدًا في اكتشاف الدوران والتكبير/التصغير والتحريك. (Ic459d)
- تم إطلاق برنامج SweepGRadentShader وواجهات برمجة تطبيقات SweepGadaentBrush. (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.getLineمرئيEnd نهائيًا. كبديل TextLayoutResult.getLineEnd يحتوي الآن على معلمة جديدة visibleEnd. (I73282)
واجهة برمجة تطبيقات TextFieldValue المُحدَّثة
- تم إعداد TextFieldValue.composition للقراءة فقط.
- تمت إزالة استثناء تم طرحه لنطاق تحديد غير صالح (I4a675، b/172239032)
دعم TtsAnnotation لمحرك تحويل النص إلى كلام (I54cc6)
واجهات برمجة تطبيقات جديدة لتشغيل الصور المتحركة في الكوروتينات (Ied662)
إصلاح الأخطاء
- تمت إعادة تسمية معلَمة المحاذاة في Box إلى contentAlignment. (I2c957)
- تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. تأخذ الآن معلمات lambda بدلاً من State. (Ic3021، b/173594846)
- تمت إضافة مَعلمة renameInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947).
- تمت إضافة فحص Lint لمعلمات أداة التعديل في الدوال القابلة للتعديل. تتحقق أداة Lint هذه من التسمية ونوع الإرجاع والقيمة الافتراضية وترتيب المعلمة للتأكد من تناسقها مع إرشادات الإنشاء. (If493b)
- خيار مُضاف مؤقتًا للسماح بتشغيل TestAnimationClock مشغّل بواسطة MonotonicFrameClock (I1403b، b/173402197)
- تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل ملف Android
الخط الطباعي عبر دالة
typeface
، أيtypeface(Typeface.DEFAULT)
. تمت إعادة تسميةtypefaceFromFontFamily()
أيضًا إلىtypeface()
(I52ab7). - تمت إضافة فحص الوبر للتأكد من أن وظائف أداة التعديل المصنعة محددة كإضافات في أداة التعديل، بحيث يمكن ربطها معًا بطلاقة. (I07981)
- إزالة وحدة اختبار واجهة المستخدم القديمة وأذرعها (I3a7cb)
- لم تعد أداة إعادة الإنشاء تقبل EmbeddingContext. مطلوب تحديد خيار من تبعيات الجدولة التي يتم الحصول عليها من eventCoroutineContext. تم إيقاف FrameManager نهائيًا. ينبغي أن تبدأ عمليات تكامل النظام الأساسي طريقة معالجتها للّقطات العالمية. (I02369)
- تمرير معلومات النمط إلى عقدة إمكانية الوصول. (If5e8d)
- تمت إعادة تسمية TextUnit.اكتساب (اكتساب) إلى TextUnit.لم يتم تحديده لضمان الاتساق مع الوحدات الأخرى. (Ifce19)
الإصدار 1.0.0-alpha07 من واجهة المستخدم
11 تشرين الثاني (نوفمبر) 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم تقديم ScaleFactor
فئة مضمّنة لتمثيل المقياس
العوامل الأفقية والرأسية
محاور مستقلة عن بعضها البعض بالترتيب
لدعم حالات الاستخدام غير الموحّدة للتحجيم.
- تمت إضافة طريقة computeScaleFactor إلى مقياس المحتوى
- تمت إضافة ContentScale.FillBounds للأداء. تحجيم غير منتظم لتوسيع src لتشغل الوجهة بالكامل.
- تمت إضافة طرق عامل التشغيل للاحتساب. مَعلمات ScaleFactor مع مَعلمات Size.
- (Ic96a6، b/172291582)
- تمت إضافة مصنعي محاذاة التحيز ومحاذاة التحيز المطلق لإنشاء المحاذاة. (Iac836، b/169406772)
- تسمح هذه الميزة للمطوِّر بمحو التركيز بشكل إجباري. (I90372)
- تم إصلاح خطأ يتسبب في عدم رسم ارتفاع المشاهدات داخل Compose. (If7782)
- تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
- إضافة دعم لمسافة الكاميرا لاستكمال التحويلات ثلاثية الأبعاد الدورانX/rotationY على واجهات برمجة التطبيقات ذات الطبقات. (I40213، b/171492100)
- تمت إضافة SelectionContainer بدون معاودة الاتصال (Ibfadb)
- تمت إزالة التعليق التوضيحي DemoalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7)
- تمت إزالة التعتيم من مفتاح التعديل drawShadow() كما كان. أمرًا مربكًا. (I82c62، b/171624638)
- تم نقل MeasurementResult من MeasurementScope. (Ibf96d، b/171184002)
- تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
- تمت إزالة FocusState2 (I686cb وb/168686446)
- ZIndexModifier داخلي الآن (I1808b، b/171493718)
- تم تعديل نوع إرجاع lerp. الإجراء في مَعلمات Size لعرضه حجم غير فارغ لتجنب الحاجة غير الضرورية الملاكمة. (Ib0044)
- تمت إضافة TestMonotonicFrameClock لاختبار التعليمة البرمجية التي تعتمد على حزمة MonotonicFrameClock في Compose تنتظرك أحداث إطار المقطوعة الموسيقية باستخدام kotlinx-coroutines-test's run{2/}Test (I4402f)
- تمت إزالة PlaceScope.localToGlobal (I15299، وb/171462785)
- تمت إضافة أداة البحث
onAllNodesWithSubstring
(I81dd7، b/171462889) - تم إيقاف الوحدة androidx.ui.test نهائيًا. يُرجى النقل إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8)
إصلاح الأخطاء
- تم نقل CapToBitmap إلى CapToImage. (I86385)
- تم إيقاف Foundation.Text نهائيًا واستبداله بـmaterial.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية غير معرَّفة لا تستهلك قيمًا من مظهر معيّن، يُرجى الانتقال إلى androidx.compose.foundation.BasicText. (If64cb)
- تعديل TextFields لقبول TableOptions (Ida7f3)
- إعادة تسمية خيارات لوحة المفاتيح باسم ImeOptions (I82f36)
- تم نقل boardType وImeAction إلى لوحة المفاتيحOptions (I910ce)
- تمت إضافة ميزة provideDefault كبديل لتوفير البيئة المحيطة، ويمكن استخدامها لتحديد القيم المحيطة التي يتم ضبطها فقط في حال عدم توفّر قيمة محيطة. (Id6635، b/171024925)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- تقديم وحدة ui-test-junit4 (Ib91f8)
- تمت إعادة تسمية "
relativePaddingFrom
" إلى "paddingFrom
". تمت إضافة مفتاح التعديلpaddingFromBaseline
لتسهيل تحديد المسافات من حدود التنسيق إلى الأسس النصية. (I0440a، b/170633813) - تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق الاتساق مع واجهتَي برمجة التطبيقات SideEffect وDiveEffect. LaunchedEffect بدون لا يُسمح بمعلمات الموضوع للتشجيع على أفضل الممارسات. (Ifd3d4)
- تم تقديم موارد قابلة للإنشاء ويمكن إعادة إنشائها عند تعديل الإعدادات. (I6387c، b/167352819)
- تتطلّب أداة إعادة الإنشاء الآن توفُّر CoroutineContext عند الإنشاء (Ic4610).
- مجموع
zIndex
عند تطبيقModifier.zIndex()
متعددة. سبق أن كانت اللعبة الأولى هي الفائزة. (Ic514c، b/170623936) - التغييرات التي تطرأ على تنفيذ جدول الشريحة الداخلية في واجهة برمجة التطبيقات العامة. (If9828)
- تمت إضافة خيار IME للتصحيح التلقائي في لوحة المفاتيح (I57b8d)
- تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
- تمت إزالة MonitorOptions.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 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- أصبحت الآن أداة إعادة إنشاء مرجعًا تابعًا للمقطوعة الموسيقية الأصل للمقطوعة الموسيقية. أصبحت أداة إعادة الإنشاء الصريح مطلوبة الآن في عدد أقل من الأماكن. (I4036f)
- إيقاف العمل بأداة VectorPainter في فخدمة تذكرVectorPainter لتحسين الإشارة إلى أن واجهة برمجة التطبيقات القابلة للإنشاء داخليًا يستفيد من فكرة "تذكّر" للاحتفاظ بالبيانات عبر والمقطوعات الموسيقية. (Ifda43)
- تم تحديث واجهة برمجة التطبيقات Modifier.DrawWithcache لعرض ContentDrawScope كنطاق للمستقبل بدلاً من DrawScope القدرة على إعادة ترتيب أوامر الرسم. يكون هذا مفيدًا لمزج حالات استخدام درجات الألوان التي يجب فيها أن تكون وحدات بكسل المحتوى سيتم عرضه أولاً من أجل تطبيق خوارزمية وضع المزج بشكل صحيح. (Ie7ec8)
- نقل SimpleContainer إلى PopupTestUtils.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(...)
، أصبح بإمكانك الآن تغيير بيانات الاستهلاك الخاصة بأحداث Pointerالأحداث التي تم تمريرها. (I6acd0) - تم إنشاء واجهتين لـ MeasurementScope وIntrinsicmeasureScope. (I1a087، b/170461665)
- تم إخفاء دالة الدمج لـخط المحاذاة. (I9da1a، وb/170612900، وb/170611568)
- إضافة إمكانية تحديد معلومات أداة الفحص في مفتاح التعديل المكتوب (Idee08 وb/163494569)
- تمت إضافة خيار SelectAll إلى قائمة التحديد (Ief02b).
- تم تعديل ملف DrawTransform.rotate لتنفيذه
معلمة محورية افتراضية للوسط لمطابقة
الوثائق.
- تم تحديث DrawScope.rotateRad لاستخدام إزاحة محورية لمطابقة طرق التحويل الأخرى.
- الإيقاف النهائي لتقنية DrawScope.rotateRad التي تم استهلاكها عدد عشري للإحداثيين x وy للمحور.
- (Iffcbb، b/170434992)
إصلاح الأخطاء
- تم تفعيل "فحص أداة Lint API" لـ LostGetterMatchingBuilder لنظام التشغيل androidx (I4bbea، b/138602561).
- إضافة اختبار. (I6b8ae)
- تفعيل الانتقالات في ComposeTestRule إزالة الخيار إلى تفعيل المؤشر الوامض من ComposeTestRule. (If0de3)
- تمت إضافة خيار محرر أسلوب الإدخال (IME) الخاص بالكتابة بالأحرف اللاتينية الكبيرة في لوحة المفاتيح (I8ac38)
- تمت إضافة خيار لوحة مفاتيح سطر واحد إلى CoreTextField (I72e6d).
- نقل SimpleContainer إلى PopupTestUtils.kt (I65c3e)
- تمت إعادة تسمية واجهة برمجة تطبيقات Radius API إلى نصف قطر الزاوية للتعبير بشكل أفضل وكيف يتم استخدامها خلال 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)
وفي إطار توحيد المعايير قيم الحارس للفئات المضمنة، تغيير اسم اللون.بدون ضبط إلى لون.غير محدد لتحقيق الاتساق مع الفئات الأخرى المضمَّنة (I97611، وb/169797763)
تم تقديم TextOverflow.None. عندما يكون التجاوز "None" ("بدون")، لن يتعامل "النص" مع التجاوز بعد الآن، وسيبلغ LayoutNode بحجمه الفعلي. (I175c9، b/158830170)
تمت إعادة تسمية مَعلمة النطاق ضمن AnnotatedString.Builder.addStringAnnotation لتكون علامة للحفاظ على اتساق واجهة برمجة التطبيقات. (I7c8cb)
إصلاح الأخطاء
- يتم تحسين أداء التمرير في العمود LazyColumn/Row من خلال تقليل العمل في الإنشاء الفرعي في كل تمرير. تمت إضافة طريقة hasbodyations() الجديدة لفئة المقطوعة الموسيقية. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasValidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
- الحجم المحدّث.غير محدَّد المتغيرة لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter إلى يمكنك التحقّق من المقاس.غير محدَّد أيضًا كأحجام غير محدودة. (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#parent الشامل وplacementScope#parentLayoutDirection من كتلة مواضع الإعلانات للتخطيط المخصّص. (Icc1ae، b/168295623)
إضافة Accessibility scrollState إلى خصائص الدلالة. (Ifeda9)
تم إطلاق Modifier.drawWithcache لدعم إنشاء كائن رسم تعيد إنشاء التبعيات بشكل مشروط التي تعتمد على معلومات الحجم/الحالة (I376dc)
تمت إزالة قيود الفقرات. يتم تمرير "العرض" مباشرةً إلى الفقرة الآن. (Ica712)
إصلاح الأخطاء
- تم تحديث العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل المقياس والتدوير. التحويل من واجهات برمجة التطبيقات إلى استهلاك معلمة الإزاحة لتمثيل المحور الإحداثيات بدلاً من الأعداد العائمة المنفصلة معاملات للإحداثيات س/ص في DrawScope وDrawTransform
- تمت إزالة Rect.expandToInclude وRect.join طرق
- تم تعديل مستندات "النطاق الجغرافي" للإشارة إلى الشكل البيضاوي. بالإضافة إلى جهاز الحركة البيضاوية
- تمت إضافة وثائق للإشارة إلى الدالة الإنشائية العامة للنطاق الجغرافي المضمّن في الفئة، حيث لن يتم استدعاءها مباشرةً يجب إنشاء مثيل لكائنات النطاق الجغرافي من خلال دوال إنشاء الدوال
- تمت إزالة واجهات برمجة تطبيقات RoundRect لاستعلام أعلى يمين أسفل يمنى أسفل المنتصف، وما إلى ذلك
- تم إيقاف Rect.shift لصالح Rect.translate
- تمت إزالة واجهتَي برمجة تطبيقات RoundRect.grow وRect.shrink
- تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect.
- تمت إزالة RoundRect.mediumRect/tallMiddleRect/wideMiddleRect وطرق Rect.isStadium
- تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension.
- تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension.
- تم تغيير RoundRect.center إلى خاصية بدلاً من دالة.
- تم تعديل الدالة الإنشائية RoundRect لاستخدام خصائص النطاق الجغرافي. بدلاً من المعلمات الفردية لقيم نصف القطر x/y
- تمت إزالة واجهات برمجة التطبيقات ذات الحجم التي افترضت أنها كانت مستطيلة ذات نقطة الانطلاق عند 0,0
- تمت إضافة واجهة برمجة تطبيقات مدمرة إلى Radius
- تم نقل دوال إضافات RoundRect المتعددة التي سيتم المواقع بدلاً من ذلك
- (I8f5c7، b/168762961)
- تم إيقاف Foundation.Box نهائيًا. يُرجى استخدام Foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
- تمت إعادة تسمية الحزمة إلى Box. وسيتم إيقاف Box الحالي نهائيًا لصالح Box الجديد في compose.foundation.layout. يتمثّل سلوك Box الجديد في تكديس العناصر الثانوية واحدًا فوق الآخر عندما يكون له عدة عناصر فرعية، وهذا يختلف عن المربع السابق، الذي كان يعمل بشكل مشابه للعمود. (I94893، b/167680279)
- تم إيقاف معلمات تزيين الصندوق نهائيًا. إذا أردت إضافة زخارف/مساحة متروكة على العلبة، يمكنك استخدام Modifiers بدلاً من ذلك (Modifier.background, Modifier.للحدّ، أو Modifier.حشو) (Ibae92، b/167680279)
- تم تحديث العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات DrawScope API من خلال إضافة النطاق المستهدَف. طرق التحويل للإشارة إلى أن يتم التحويل إلا في عملية معاودة الاتصال وتتم إزالتها بعد استدعاء الاتصال
- تم تعديل وثائق postPath للإشارة إلى المسار بدلاً من المستطيل المستدير
- تم إصلاح تباعد في الوثائق للمعلمة الصحيحة في trackPath
- تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas و تمت إزالة معلَمة الحجم
- تمت إعادة تسمية معلمات dx/dy في طريقة الإدخال إلى أفقي ورأسي
- إضافة إدراج زائد يوفر نفس إدخال قيمة لكل الحدود الأربعة
- تمت إزالة المستندات المتعلقة بطريقة الإدخال التي تشير إلى سيتم تطبيق هذه المساحة الداخلية على جميع الجوانب الأربعة
- تم تعديل المستندات الخاصة بصف Rect.
- تم تعديل التعليقات على معلَمات Rect لتتطابق مع kdoc النمط
- تمت إزالة Rect.join وRect.expandToInclude
- تم إنشاء حمل زائد لـ Rect.translate(offset) و تم إيقاف Rect.shift نهائيًا
- (If086a وb/167737376)
- ، blinkingCursorEnabled وtextInputService كلمة المرور @visibleForTesting، جعلهم واجهة برمجة تطبيقات داخلية وإخفاء kdoc (I554eb، b/168308412)
- أزل SelectionContainer من الجزء العلوي لإيقاف التحديد التلقائي وتجنُّب السلوك غير المتوقع. يمكن للمرء أن يستخدم 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) تمت إزالة طرق عامل التشغيل في المقاس واجهة برمجة التطبيقات التي تستهلك مَعلمات Offset تشير رسالة الأشكال البيانية نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقع لذلك. على سبيل المثال: يجب الحجم - إرجاع الإزاحة نتيجة إزاحة أو حجم مع الفرق؟
تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة المقاس. (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)
- إضافة دعم لـ filltype المعلمات على مسارات الرسومات المتجهة لدعم صور الأشكال وفقًا إلى قواعد ملء المسار الفردي أو غير الصفري (I43dd2)
- أصبح وقت التشغيل والسرعة فئتين مضمَّنتين (I48f4a)
- أصبحت المدة الآن فئة مضمّنة (I565eb)
- أضِف رد اتصال لإشعار المالك عند تغيير حدود عقدة التخطيط. (Ic40b3)
تم إصلاح مشكلة الدالة الإنشائية لدالة Rect باستخدام الإزاحة ونصف القطر يُنشئ المستطيل في الترتيب من اليسار، اليمين، الأعلى، الأسفل بدلاً من إلى اليسار، أعلى، يمين، أسفل.
تمت إزالة الطرق المصاحبة المتوقّفة نهائيًا على Rect في لصالح أنظمة إنشاء الدوال.
تمت إضافة اختبارات للتحقق من الطرق في Rect.kt (I08460 وb/165822356)
إصلاح الأخطاء
- تمت إضافة MutableRect، مستطيل يمكن تعديله. (I71bd2، b/160140398)
- تم استبدال المصفوفة 4 بالمصفوفة. جميع الأجزاء الأخرى إزالة حزمة ectmath. (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
بدلاً من ذلك إن أمكن لإرسال طرق العرض داخل Compose. تجدر الإشارة إلى أنّه لن تتوفّر إمكانية إنشاء "طرق العرض" و"ViewGroups" مباشرةً في المستقبل ما لم تتم إزالتها في شجرة الإنشاء، في حال توفّرت هذه الطريقة في AndroidView. (I29b1e، b/163871221) - تم إيقاف
FocusState2
نهائيًا واستبداله بـFocusState
(Ia8b79، وb/160822876، وb/160923332). - تمت إزالة أحمال AndroidView الزائدة المتوقّفة. (I946b9، b/163802393)
- يمكن للأجهزة المخصّصة الآن الإعلان عن أنّ أداة واحدة أو أكثر من أدوات التثبيت الخاصة بها يمكن تخطيه وإعادة إنشائه بشكل مستقل عن الإرسال. (Ibbd13)
تم تغيير فئات Vector إلى فئات بيانات لأن نفس مثيل الكائن يُستخدم في التأليف.
تمت إضافة علامة mutableStateOf إلى VectorPainter على إعادة الرسم بشكل مشروط إذا كان محتوى تغيير الخط المتجه.
يجب إعادة بناء مثيل Vectoror جزء من VectorPainter عند إعادة استخدامه عبر المقطوعات الموسيقية.
تم تعديل GroupComponent وPathComponent. أن تكون حقول الأسماء قابلة للتغيير (Ieae45، b/151378808)
تمّت إزالة "
onChildPositioned
" و"OnChildPositionedModifier
". على المطوّرين استخدامonPositioned
وOnPositionedModifier
. على التخطيط الفرعي بدلاً من ذلك. (I4522e، b/162109766)أصبحت فئة Outset فئة مضمّنة (Iaec70)
تمت إضافة مَعلمة تعديل إلى SelectionContainer (I4aada، وb/161487952).
تمت إزالة FocusModifier المتوقّف نهائيًا (I0b4ba، وb/160922116، وb/160821157، وb/162441435، وb/160822875، وb/160921940)
تمت إضافة
mergePolicy
lambda إلىSemanticsPropertyKey
. يمكن أن تظهر فائدة هذا بوضوح أكبر تُستخدَم لتحديد سياسة مخصّصة للدلالات الدلالية الخاصة بـ integrationAllDescendants الاندماج. والسياسة التلقائية هي استخدام القيمة الرئيسية إذا سبق موجودة، وإلا فإن القيمة الثانوية. (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)تستخدم أداة BalanceDialog الآن للأزرار (I00ec1 وb/161809319 وb/143682374)
جعل بعض برامج الخدمات التجريبية غير عام لأنهم ليسوا في المكان الذي وتنتمي. سيصبح علنيًا في المستقبل. (I32ab1)
تنظيم إدخال المؤشر بإعادة العوامل الرمز. (Ie3f45)
PxBounds متوقفة في لصالح المستطيل تم تحديث جميع حالات الاستخدام معامل pxBounds مع المستطيل والمضاف إيقاف/استبدال بشكل مناسب التعليقات التوضيحية للمساعدة في وترحيلها. (I37038، b/162627058)
تمت إزالة KeyEvent2 المتوقفة. استخدِم KeyEvent بدلاً من ذلك. (Ied2d0، b/162097587)
يحتوي KeyEvent على خاصية يونيكود يمكن استخدامها لإنشاء حرف يونيكود الذي يتم إنشاؤه بواسطة تركيبة المفتاح وحالة المفتاح الوصفية المحددة (If3afc).
تم إنشاء حدث DelayUp المخصّص. والفئات ذات الصلة بالاشتراك في واجهة برمجة التطبيقات نظرًا من المرجح جدًا أن يتغير. (I56d6f)
تمت إزالة اثنين من بطاقات PointerEventPasss لم تعُدهما. احتاجت. (I3dd9d)
إضافة لون المعلَمة والظل وTextDecoration إلى Paragraph.paint مفيدًا لتجنُّب إعادة إنشاء الفقرة غير الضرورية. (I81689)
إصلاح الأخطاء
- تمت إزالة استدعاءات onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
- تم إيقاف Modifier.DrawBorder نهائيًا. يمكنك استخدام Modifier.party بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، وb/158160576).
تمت إزالة طلبات FrameManager المتوقّفة نهائيًا.
تم تغيير واجهات برمجة تطبيقات الإنشاء الداخلية لتقليل مقدار تتبُّع كائنات الحالة مثل
mutableStateof()
(I80ba6)تمت إزالة Vertical Scroller وHorizontal Scroller. استخدِم عمودًا/صفًا قابلاً للتمرير بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)
يحدث عطل عندما يتم استخدام عنصر يحفظ الحالة داخل التكرار الحلقي for. يُسمح الآن باستخدام المفتاح نفسه في savedInstanceState() ، وقد تم تعديل واجهة برمجة تطبيقات UiSavedStateRegistry لهذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).
تم الآن إيقاف العنصر
state { ... }
القابل للإنشاء نهائيًا لصالح الطلبات الصريحة إلىremember { mutableStateOf(...) }
لمزيد من الوضوح. ويقلل هذا من إجمالي مساحة عرض واجهة برمجة التطبيقات وعدد مفاهيم الحالة وتتطابق مع نمطby mutableStateOf()
للفئة تفويض الممتلكات. (Ia5727)تمت إعادة تسمية RRect إلى RoundRect. لتناسب أنماط التسمية بشكل أفضل تم إنشاء طرق إنشاء دوال مشابهة إلى RRect ودالة RRect المتوقّفة نهائيًا المرادات الإنشاء (I5d325)
الإصدار 0.1.0-dev16
5 آب (أغسطس) 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev16
. يحتوي الإصدار 0.1.0-dev16 على هذه العمليات.
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف OnChildPositioned نهائيًا. استخدام OnPositioned على الطفل بدلاً من ذلك (I87f95، b/162109766)
- تم إيقاف setViewContent نهائيًا. استخدام setContent بدلاً من ذلك. (I7e497، b/160335130)
- تمت إضافة واجهة برمجة التطبيقات AndroidViewBinding API لزيادة موارد التنسيق وإنشائها استنادًا إلى ViewBinding. (I081c6)
- يتم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
- إضافة دعم لمفتاح الجهاز البديل (I9036b)
- تم إيقاف FocusManager. استخدِم Modifier.focus() وModifier.focusObserver() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
- لتحميل VectorResource يتوافق مع سمات trimPath (I808fe)
- نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
- تمت إزالة اثنين من بطاقات PointerEventPasss لم تعُدهما. احتاجت. (I33ca7)
- تم تنفيذ PointerInteropModifier الذي يوفر والقدرة على تلقّي أحداث Motion Events والتفاعل مع ميزة Compose كما لو كنت تطبق طريقة عرض Android. (Ieb08c)
- تمت إزالة معدِّل العلامة المتوقّف نهائيًا. يُرجى استخدام رقم تعريف التنسيق بدلاً من ذلك. (Idaa05، b/162023919)
- تم تحديث واجهات برمجة التطبيقات التي تتيح الدعم من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient الذي يمكن استخدامه لقراءة اتجاه التنسيق وتغييره. تمت إزالة 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) - إضافة الفئات الفرعية [Abstract]ComposeView View لاستضافة Compose المحتوى في تسلسل هرمي للعرض. (I46357)
- الدالة
Row
وColumn
هما الآن دالتان مضمّنتان إلى حد كبير مما يقلل من النفقات العامة لاستخدامها. (I75c10) - تمت إضافة SubcomposeLayout. وهي دالة بدائية منخفضة المستوى تتيح تكوين الأطفال أثناء القياس إذا أردنا استخدام بعض القيم المتاحة فقط في وقت لاحق أثناء قياس تكوين الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
- تمت إضافة
SemanticsNode.positionInRoot
للحصول على موضع عقدة دلالية مرتبطة بجذر التسلسل الهرمي Compose (Icdf26، b/161336532) - لقد مرّت أحداث Motion Events على طول الطريق بدءًا من Android إلى Compose إلى Android. (I14be8، b/158034713)
- تمت إزالة النافذة المنبثقة المنسدلة. (I00430)
- تم تثبيت موضع النافذة المنبثقة على شاشات العرض المقطوعة. (Idd7dd)
- إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
- تمت إضافة RemeasurementModifier. فهي تسمح بإعادة قياس التخطيط بشكل متزامن. بشكل عام، لا تحتاج إليها أبدًا لأنّ عملية إعادة القياس/الإرسال تحدث تلقائيًا، لكنّنا نستخدمها في LazyColumnItems أثناء التنقّل. (I5f331، b/160791058)
- أزِل getLineEllipsisOffset/getLineEllipsisCount. استخدام getLineمرئيEnd/getLineEnd/isLineEllipsize بدلاً من ذلك. (I85aa2)
- أضف بعض العلامات/التعليقات التوضيحية لتفسير أفضل الممارسات. (I66b20)
- عرض المزيد من واجهات برمجة التطبيقات الخاصة بالخطوط في TextLayoutResult. (I79bd2)
- محوّلات متجهات مضمَّنة لتحويل البيانات يمكن الوصول إلى الوحدات عبر Foo.VectorConverter. مثلاً: وDp.VectorConverter وColor.VectorConverter Float.VectorConverter، إلخ (I3e273)
إصلاح الأخطاء
- معالجة عمليات الإصلاح الواسعة النطاق لواجهة برمجة التطبيقات (I077bc)
- إزالة واجهة OffsetBase غير المستخدمة
- محاذاة فئات الإزاحة وIntOffset للحصول على مساحة متّسقة لواجهة برمجة التطبيقات
- إعادة تسمية IntOffset.Origin إلى IntOffset.Zero للتوافق مع واجهة برمجة تطبيقات Offset
- تم نقل طريقة "NativeCanvas" - خارج "لوحة الرسم" واجهة لمساعدة المستهلكين على إنشاء مثيلات "لوحة الرسم" الخاصة بك
- تم إنشاء فئة nullCanvas لإعادة هيكلة أن تكون DrawScope معلمة غير فارغة بدلاً من Lainit والتأكد من عدم قبول القيم الفارغة للحقل
- إعادة تسمية تعدادات ClipOp لتصبح Pascal Case
- تمت إعادة تسمية تعدادات filterQuality على شكل Pascal Case
- تمت إعادة تسمية تعدادات Stroke Join لتصبح Pascal Case
- تمت إعادة تسمية تعدادات PointMode إلى Pascal Case
- تمت إعادة تسمية تعداد PaintingStyle ليصبح Pascal Case.
- تمت إعادة تسمية تعدادات PathFillType لتصبح Pascal Case
- تمت إعادة تسمية تعدادات StrokeCap ليصبح Pascal Case
- تم تحديث تنفيذ Drawcache إلى لم يعد استخدام مَعلمات Lainit
- تم تعديل DrawScope إلى عدم استخدام التفويض الكسول بعد الآن. للمعلمات الداخلية fillPaint و النتيجة
- تم تعديل الصورة القابلة للإنشاء لتجنُّب استخدام Box. بتكلفة عامة أقل
- تم تعديل فئة Outline لتتضمّن تعليقات @Immutable توضيحية.
- تم تحديث PathNode لتتضمن تعليقات @Immutable التوضيحية تعليمات كل مسار
- تعديل تركيبة المتجه الفرعية لإزالة التكرار عمليات تحقق شرطية من أجل المساواة لأن إنشاء عناوين cannot translate
- طرق الدالة الإنشائية المصاحبة في Rect التي تم إيقافها نهائيًا لصالح الدالة الإنشائية للدوال
- تم تحديث فئات الفرشاة ودوال إنشاء الدوال باستخدام @Immutable و @Stable APIs
- تم تحديث تعداد VertexMode ليصبح PascalCase
- تم تعديل طريقة DrawScope selectPaint إلى "مشروطة" فاستبدل معلمات الحد الخارجي على الطلاء إذا كان لديهم تم التغيير
- تم تحديث الحجم لإضافة واجهة برمجة التطبيقات التالفة، ثم إعادة التسمية غير محدد إلى طرق غير محددة وتمت إزالتها
- تعديل استهلاك واجهة برمجة التطبيقات BlendMode في إنشاء الرسالة للتعيين بشكل صحيح بين BlendModes ضمن إطار عمل Android ووضع PorterDuff على أساس مستوى واجهة برمجة التطبيقات. تم تقديم BlendMode#isSupported API لاتخاذ إجراء كاستعلام إمكانية لتحديد ما إذا كان 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. drawBackground إلى Modifier.background (I13677).
الإصدار 0.1.0-dev15
22 تموز (يوليو) 2020
تم طرح androidx.compose.ui:ui-*:0.1.0-dev15
. يحتوي الإصدار 0.1.0-dev15 على هذه العمليات.
تحديث التبعيات
- لاستخدام إصدار
0.1.0-dev15
من Compose، عليك تعديل العناصر الاعتمادية. وفقًا لمقتطفات الرمز الجديدة الموضّحة أعلاه في بيان التبعيات.
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف FocusModifier لصالح Modifier.focus، وModifier.focusRequester، وModifier.focusObserver. تم إيقاف FocusState وFocusDetailsState لصالح FocusState2 (I46919، b/160822875، b/160922136)
- تمت إضافة أداة تعديل لتتبُّع التغيير في حالة التركيز. (I05866، b/160924455، b/160923326)
- تمت إضافة أداة تعديل لطلب إجراء تغييرات على التركيز (I8dd73 وb/161182057 وb/160924778).
- عليك تعديل قائمة شريط الأدوات لعرض النسخ والقص واللصق بشكل صحيح. (Id3955)
- تستخدم الآن خصائص الدلالة الأحادية القيمة أسلوب استدعاء.
على سبيل المثال، 'semantics {hidden = true }' يُكتب الآن على النحو التالي:
semantics { hidden() }
(Ic1afd، b/145951226، b/145955412) - تمت إضافة Modifier.focus الذي سيحل محل FocusModifier. (Ib852a، b/160924778)
- إضافة FloatingToolbar لتحديد حقل النص (Ie8b07)
- تمت إضافة تعليق توضيحي لواجهة برمجة التطبيقات ذات الصلة بالإدخال الأساسي (I53c0a).
- تمت إضافة تعليق توضيحي لواجهة برمجة التطبيقات التجريبية لجميع واجهات برمجة التطبيقات Focus-related API (I53b24 وb/160903352).
- تمت إضافة FocusState2 الذي سيحل محل FocusDetailsState (I0a3ba، b/160822595)
- تمت إضافة TestingalFocus، وهي عبارة عن تعليق توضيحي @OptIn لـ Focus API. (I1544b، b/160820961)
- تمت إضافة فئة وحدة IntBounds، والتي تمثّل عددًا صحيحًا من حدود البكسل من التخطيط. تم تحديث واجهة برمجة التطبيقات PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
- يتطلب Applier الآن طريقة clear() للتخلص من المقطوعات الموسيقية (Ibe697)
- تم إيقاف KeyEvent واستبداله بـ KeyEvent2 (I68730).
- تمت إضافة علامة جديدة اختيارية UseUnmergedTree إلى أدوات البحث عن الاختبار. (I2ce48)
- تم تصميم واجهة برمجة التطبيقات LayoutNode تجريبية (I4f2e9)
تمت إضافة طرق النسخ إلى مختلف تشمل أنواع الفئات المضمَّنة:
- فرق التوقيت
- حجم الملف
- النطاق الجغرافي
- الحركة
TransformOrigin
طريقة العنصر المصاحب Size.copy المتوقفة لصالح طريقة نسخ المثيل (Ife290 وb/159905651)
تكتسِب النوافذ المنبثقة ومربّعات الحوار والقوائم الآن MaterialTheme السياقي (Ia3665 وb/156527485)
تمت إعادة تسمية TextDirection باسم FixdTextDirection (I3ff38).
تمت إزالة معلمة اتجاه التصميم من كتلة القياس للدالة Layout(). في المقابل، يتوفّر اتجاه التنسيق داخل عنصر الاستدعاء من خلال عنصر نطاق القياس (Ic7d9d).
أعِد ضبط عناصر SelectHandles لإعادة استخدامها. (I420e0)
تمت إزالة إمكانية النقر. استخدام Modifier.clickable (I84bdf)
تم حذف TestTag ودلالات. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0 وb/158841414).
قبل هذا التغيير، كان المكون الإضافي لبرنامج التحويل البرمجي يعترض بطريقة غير تافهة الطلبات الواردة إلى دوال الإنشاء داخل الدالة @Composable في حالة وجود (I5205a، b/158123804)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب حدوث أي التباس مع Modifier.testTag. (I995f0)
إن المواضع Int لخط المحاذاة التي تم إرجاعها من Placeable#get(AlignmentLine) أصبحت الآن غير خالية. إذا كان خط المحاذاة الذي تم طلبه مفقودًا، سيتم عرض LineLine.Unspecified. (I896c5، b/158134875)
تمت إضافة مَعلمة تعديل في AndroidView القابل للإنشاء. (I48a88، b/158746303)
تم إيقاف Semantics() نهائيًا. يمكنك استخدام Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)
إضافة طريقة عرض viewModel() القابلة للإنشاء والتي تسمح بإنشاء View Model أو إنشاؤه مسبقًا بطريقة مشابهة لطريقة عمله في النشاط أو جزء من الصفحة (I5fdd1)
تم استبدال استخدام IntPx بـ Int. موضع IntPxPosition الذي تم استبداله باستخدام IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
من أجل دمج عدد الفئات المستخدمة لتمثيل تحديد حجم المعلومات، وتوحيد عند استخدام فئة الحجم بدلاً من PxSize. فهذا يوفر مزايا لفئةٍ مضمنة للاستفادة من بيانات إلى حزمة 2 قيمتين عائمتين لتمثيل العرض والارتفاع ممثلين بأعداد عشرية. (Ic0191)
من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات عن المكانة في السوق، وتوحيد عند استخدام فئة Offset بدلاً من ذلك لـ PxPosition. فهذا يوفر مزايا لفئةٍ مضمنة للاستفادة من بيانات إلى حزمة 2 قيم عائمة لتمثيل x وإزاحة ص الممثلة على شكل أعداد عشرية. (I3ad98)
تم استبدال استخدام فئة Px في مختلف لإنشاء فئات كجزء من جهود إعادة البناء للاعتماد على Dp فقط والأنواع الأولية لمعلمات البكسل. تم حذف فئة Px بالكامل (I3ff33)
تم استبدال استخدام فئة Px في مختلف لإنشاء فئات كجزء من جهود إعادة البناء للاعتماد على Dp فقط والأنواع الأساسية لمعلمات البكسل (I086f4)
تم استبدال استخدام فئة Px في مختلف لإنشاء فئات كجزء من جهود إعادة البناء للاعتماد على Dp فقط والأنواع الأساسية لمَعلمات البكسل (Id3434)
تم استبدال استخدام فئة Px في مختلف لإنشاء فئات كجزء من جهود إعادة البناء للاعتماد على Dp فقط والأنواع الأساسية لمعلمات البكسل (I97a5a)
تم إيقاف TestTag نهائيًا الآن. يُرجى استخدام Modifier.testTag بدلاً من ذلك. (If5110، وb/157173105)
لقد تمت إزالة التنفيذ التلقائي لـ ParentDataModifier#modifyParentData، وهو ما يعني عدم تنفيذ الواجهة في المقام الأول. (I0deaa)
تم إيقاف ScaleFit نهائيًا سابقًا تمت إزالته. يمكنك استخدام ContentScale بدلاً من ذلك. (Ifbc5b)
تم استبدال استخدام فئة Px في مختلف لإنشاء فئات كجزء من جهود إعادة البناء للاعتماد على Dp فقط والأنواع الأساسية لمعلمات البكسل (I19d02)
تمت إضافة مكون Dropdown Menu في مادة ui-material، وهو تنفيذ لقائمة التصميم المتعدد الأبعاد. (I9bb3d)
تمت إزالة LayoutTag() المتوقّفة، يُرجى استخدام Modifier.tag() بدلاً منه. تمت إزالة Modifier.matchParent() نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً منه (If8044)
تم استبدال استخدام فئة Px في مختلف لإنشاء فئات كجزء من جهود إعادة البناء للاعتماد على Dp فقط والأنواع الأساسية لمعلمات البكسل (I57bff)
لم يتم إيقاف Modifier.semantics نهائيًا للسماح باستخدامات المكوّنات عالية المستوى. (I4cfdc)
عمليات التنفيذ الموحدة في CanvasScope لذلك لا يوجد الآن سوى DrawScope نطاق رسم المحتوى تمت إعادة تسمية CanvasScope إلى DrawScope. تم تعديل DrawScope لتنفيذ الكثافة. وتوفير LayoutDirection تم حذف الفئة الفرعية DrawScope في ContentDrawScope تم تعديل Painter وPainterModifier. عدم الاحتفاظ بخاصية RTL بعد الآن أنفسهم لأن DrawScope يوفر هذا بالفعل بدون تقديمها يدويًا (I1798e)
Double TapإيماءةFilter الآن التمييز بين فلاتر الإيماءة المنفردة على مستوى الشجرة. (If92b1)
تم تعديل واجهة برمجة تطبيقات المحاذاة ودعم المحاذاة المطلقة (التي لا تتم مزامنتها تلقائيًا في سياق Rtl) (I38cd3).
تم تغيير واجهة برمجة تطبيقات معدِّلات DrawLayer: تمت إعادة تسمية outlineShape إلى الشكل وله القيمة التلقائية RectangleShape وأصبحت الآن غير قابلة للقيم الفارغة؛ تمت إعادة تسمية lineToOutline إلى مقطع؛ تمت إزالة musicToBounds لأنّه مماثل للمقطع == true مع RectangleShape (I7ef11، b/155075735).
تم تعديل المستوى الأعلى. لإنشاء واجهات برمجة تطبيقات تعرض لوحة رسم عرض CanvasScope بدلاً من ذلك. سيؤدي هذا إلى إزالة حاجة المستهلكين إلى الحفاظ على طلاء الكائنات. بالنسبة إلى المستهلكين الذين لا تزال بحاجة إلى الوصول إلى لوحة رسم يمكنه استخدام إضافة drawCanvas توفر رد الاتصال للمشكلة أوامر الرسم باستخدام الدالة لوحة. (I80afd)
تم تغيير واجهة برمجة تطبيقات lambda اللاحقة بالقيود الخاصة بالقيود المفروضة على واجهة برمجة تطبيقات lambda. فبدلاً من مَعلمتَين، أصبح لديه نطاق للمستلِم، بالإضافة إلى القيود وLayoutDirection الذي يوفّر خصائص minRate وmaxwidth وminHeight وmaxHeight في Dp (I91b9a، وb/149979702)
تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)
تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)
تتضمّن دوال القياسات الجوهرية في كل من "التنسيق" و"LayoutModifier2" مستقبلًا IntrinsicMeasurementScope. (Id9945)
يمكن قياس العناصر الثانوية للتصميم وLayoutModifier من خلال اتجاه تنسيق مختلف. (Ibd731)
تتم إضافة Modifier.zIndex() الجديد للتحكم في ترتيب رسم العناصر الفرعية ضمن نفس التنسيق الرئيسي. تمت إعادة تسمية خاصية الارتفاع في DrawLayerModifier إلى shadowE Liftation ولم تعُد تتحكّم في ترتيب الرسم. تم تغيير ترتيب المعلمات لـ DrawShadow: المسقط الرأسي هو الأول والشكل الثاني مع RectangleShape الافتراضي. (I20150، b/152417501)
تمت إزالة onSizeChange وonPositionChange من المالك. (I5c718)
تمت إضافة القيود 2، وهي نسخة من القيود التي تدعم قيم قيود Int فقط بدلاً من IntPx. IntPx ستتم إزالته وسيتم افتراض جميع قيود الأعداد الصحيحة تكون وحدات البكسل مثل Android.
- تمت أيضًا إضافة IntSize، والتي ستحل محل IntPxSize. (I4b43a)
جعل المحاذاة قابلة للتكرار باستخدام قيم عشوائية تمت إضافة محاذاة أحادية الأبعاد. (Ia0c05)
تقبل \nToSiblings الآن القيمة Measuremented بدلاً من Placeable. (I5788d)
-
- تمت إعادة تسمية ScaleFit إلى ContentScale
- تم نقل ContentScale من رسومات واجهة المستخدم إلى واجهة المستخدم الأساسية لتتواجد في نفس الوحدة التي توجد بها أدوات المحاذاة واجهة برمجة التطبيقات.
- تمت إعادة تسمية fillMaxDimension إلى "الاقتصاص"
- تمت إعادة تسمية fillMinDimension إلى Fit.
- تمت إعادة تسمية Google Fit إلى Inside لمطابقته بشكل أفضل.
- مكافئات ImageView.ScaleType
- تمت إضافة مستندات تشير إلى أنّ الدمج يحقق كل من اقتصاص ومحاذاة.Center النتيجة نفسها كـ ImageView.ScaleType.CENTER_CROP وFit المستخدم مع Adjust.Center إلى النتيجة نفسها التي حقّقها ImageView.ScaleType.FIT_CENTER يحقق العنصر الداخلي المستخدم مع pivot.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() الآن مقطعًا افتراضيًا مقطعًا ToBounds. و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)
تم دمج الكثافة ونطاق الكثافة في واجهة واحدة. يمكنك الآن استخدام الدالة Densityambient.current بدلاً منبينDensity() . بدلاً من withDensity(density) only with(density) (I11cb1)
تم تغيير LayoutCoordinates لتقديم خطوط المحاذاة المقدمة مجموعة بدلاً من خريطة وجعل LayoutCoordinates تعمل على تنفيذ get() بدلاً من ذلك لاسترداد قيمة. يسهل ذلك أن تعدل مفاتيح التعديل قيمة واحدة أو أكثر من قيمة المجموعة دون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)
لم تعد LayoutCoordinates لها خاصية موضع. تشير رسالة الأشكال البيانية غير مفهوم عند التفكير في LayoutModifiers، أو الدوران أو التحجيم. بدلاً من ذلك، يجب على المطوّرين استخدام parentCoordinates وchildToLocal() لحساب التحويل من واحد LayoutCoordinate إلى آخر.
تستخدم LayoutCoordinates IntPxSize لخاصية الحجم بدلاً من PxSize. تستخدم التخطيطات أحجام وحدات بكسل صحيحة للتنسيقات، بحيث تكون جميع أحجام التخطيط يجب أن تستخدم الأعداد الصحيحة وليس قيم النقاط العائمة. (I9367b)
تحسينات على واجهة برمجة التطبيقات للقيود (I0fd15)
تم إنشاء واجهة برمجة تطبيقات CanvasScope التي تضم عنصر لوحة لكشف بيان عديم الحالة رسم واجهة برمجة التطبيقات. يتم تضمين عمليات التحويل ضمن نطاق المتلقي الخاص بها وتحديد حجم المعلومات يتم أيضًا تحديد نطاقه على الحدود الداخلية المقابلة. لا تتطلّب من المستهلك الحفاظ على حالة "الطلاء" الخاصة به. لتكوين عمليات الرسم.
- تمت إضافة CanvasScopeSample بالإضافة إلى حدّث التطبيق التجريبي ليشمل رسومات تعريفية تجريبي (Ifd86d)
تمت إزالة MaskFilter API غير المستخدَم لأنّ استخدامه محدود وغير محسَّن لتسريع الأجهزة في معظم حالات الاستخدام (I54f76)
تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات الألوان القابلة للقيم الفارغة في واجهة برمجة التطبيقات بـ غير قابلة للقيم الفارغة وتستخدم Color.Unset بدلاً من null (Iamaa7)
تقديم مستطيل اختياري إضافي إلى ImagePainter لدعم رسم قسم فرعي من ImageAsset الأساسي (I0ea9e)
تمت إضافة "لون غير محدَّد" لتمثيل قيمة غير محدَّدة بدون ضبط. ألوان الملاكمة. (If901a)
تمت إضافة Canvas.rotate طرق الإضافة Canvas.scale إلى إحداثيات محورية اختيارية والتحولات. هذه الإعدادات التلقائية إلى أعلى الجانب الأيسر من ترجمة اللوحة الحالية.
تم أيضًا نقل Canvas.rotateRad لتكون طريقة الإضافة لتحقيق الاتساق (Ibaca6)
تم إنشاء واجهة برمجة التطبيقات PixelMap للدعم للاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)
تمت إعادة تسمية toFrameworkRect/toFrameworkRectF إلى toAndroidRect/toAndroidRectF لمطابقة اصطلاح التسمية للإحالات الناجحة للكائنات بين نافذة Compose وAndroid لواجهات برمجة التطبيقات التي تم إنشاؤها فوقها. تم تعديلها أيضًا مستندات حول واجهات برمجة التطبيقات هذه (I86337)
تمت إضافة واجهة برمجة تطبيقات VectorPainter إلى استبدال واجهة برمجة تطبيقات الإنشاء الفرعي الحالية الرسومات المتجهة. نتيجة التركيب الفرعي هو كائن VectorPainter بدلاً من DrawModifier. تم إيقاف DrawVector السابق القابلة للإنشاء لصالح VectorPainter.
تمت إعادة تسمية واجهة برمجة تطبيقات الصورة(Painter) إلى PaintBox(Painter) تم إنشاء متجه قابل للإنشاء يعمل مثل صورة قابلة للإنشاء باستثناء مادة عرض VectorAsset من ImageAsset (I9af9a، b/149030271)
تمت إعادة تسمية الصورة إلى ImageAsset بغرض التمييز بشكل أفضل بين بيانات "الصورة" و"الصورة القابلة للإنشاء" القادمة، والمستخدمة للمشاركة في تصميم المحتوى ورسمه. _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 لإضافة سلسلة Annotation. (I5059e)
يمكن الآن إخفاء/إظهار لوحة مفاتيح البرامج باستخدام وحدة تحكّم البرامج في لوحة المفاتيح التي يتم تقديمها من خلال onTextInputStarted رد الاتصال (I8dc44، b/151860051)
تمت إضافة عامل تشغيل زائد للنمط (نص/فقرة/نطاق) الذي يفوض بدالة integration(). (Ia1add)
لم يعُد التنسيق Fontweight.lerp متاحًا. لا تزال فئة بيانات. (I521c2)
أصبحت الدالة الإنشائية Font weight الآن عامة، ولم تعد فئة بيانات. (Id6b1f)
أضِف getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801)
تمت إعادة تسمية وحدة ui-text باسم ui-text-core (I57dec).
تمت إزالة فئة المقاس غير المستخدَمة نظرًا لوجود فئة حجم مكررة في الوحدة الهندسية لواجهة المستخدم والتي المستهلكون. (I1b602)
تمت إضافة AdapterList، وهو مكون قائمة تمرير لإنشاء العناصر المرئية وتخطيطها. المشاكل المعروفة حاليًا أن يكون عموديًا فقط ولا يعالج جميع حالات التغييرات في عناصرها الثانوية. (Ib351b)
إضافة المساحات المتروكة والحدود والشكل ومَعلمة الخلفية إلى Box (I05027 وb/148147281)
إصلاح الأخطاء
- معاودة الاتصال onFocusChange في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
- تم إيقاف Vertical Scroller وHoriziontalScroller نهائيًا. يمكنك استخدام ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك ومعلَمات العمود/الصف، أو Modifier.verticalportrait وModifier.horizontal scroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا لصالح ScrollState' (I400ce وb/157225838 وb/149460415 وb/154105299)
- تمت إعادة تسمية
runOnIdleCompose
إلىrunOnIdle
(I83607). - تمت إعادة تسمية العديد من واجهات برمجة تطبيقات الاختبار لتصبح أكثر سهولة. الكل تمت إعادة تسمية واجهات برمجة تطبيقات findXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة تطبيقات doXYZ إلى تنفيذ XYZ. (I7f164)
- يمكن الآن إنشاء واجهة مستخدم ضمن ViewGroups بدون الحاجة إلى تركيبة جديدة. راجع ViewInteropDemo للاطّلاع على مثال. (I9ab0b، b/160455080)
- تمت إضافة sortWith وRemoveRange إلى MutableVector (Icccf7)
- تنفيذ مقابض تحديد السحب لتغيير التحديد لحقل النص. (I27032)
- تمت إزالة فئة Shader المضمنة التي تم تضمين فئة NativeShader المتوقعة تمت إعادة تسمية NativeShader ليصبح Shader. قامت فئة Shader المضمَّنة الملفوفة عدم إضافة أي معلومات قيّمة إلى مساحة عرض واجهة برمجة التطبيقات وكانت فئة مضمّنة، لذا يجب استخدام NativeShader الفصل الدراسي مباشرةً. (I25e4d)
مُعدَّل الطلاء المُعاد تصنيعه عدم توفير التوسيع بناءً على القيود المحددة وContentScale . عمليات تنفيذ أداة Painter هي توسيع نطاق محتوى الرسم نفسها بناءً على الحجم المعين DrawScope الذي يدرجون فيه.
تم إصلاح المشكلة المتمثلة في ذاكرة التخزين المؤقت لـ VectorPainter تم تغيير حجم الصورة النقطية إلى حجمها التلقائي بدلاً من الحجم المحدد للرسم فيه.
تم تعديل أداة ImagePainter لتوسيع نطاقها المحتوى بدلاً من الاعتماد على PainterModifier للقيام بذلك نيابةً عنها. (I6ba90)
إضافة دالة withFrameNanos ذات المستوى الأعلى لتوقيت الصورة المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked نهائيًا. الاستبدال بـ @Composable خطوات(tracked=false) (Id211e)
androidx.ui.foundation.TextFieldValue و تم إيقاف androidx.ui.input.EditorValue نهائيًا. حقل نصي، العناصر القابلة للإنشاء FileedTextField وCoreTextField التي تستخدم تم أيضًا إيقاف هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
تم إصلاح المشكلة المتمثلة في إدخال المؤشر الإرسال إلى حدوث عطل إذا تمت إزالة فلاتر إدخال المؤشر عبر التركيب الفرعي أثناء الفصل. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)
تم حل مشكلة إرسال بيانات المؤشر في العطل إذا تمت إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الفصل. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)
أن تكون فئة نصف القطر المعاد توزيعها فئة تضمين. تمت إزالة إنشاء الإعلان المصاحب. الطرق لصالح الدالة الإنشائية للدالة مع المعلمة الافتراضية ليتضمن نصف القطر radius على طول المحور ص في نفس النقطة معلمة نصف القطر x للمحور x.
تم تعديل DrawScope. drawRoundRect ليتم استخدامه. معلمة نصف قطر واحدة بدلاً من معاملين منفصلين القيم العائمة لنصف القطر المحوري x وy المحور (I46d1b)
لم يعد العنصر "إعادة التركيب" تجريدًا مفيدًا. يُفترض أن تحدث معظم عمليات إعادة التركيب نتيجة تعيينات MutableState. لإجراء ذلك، ننصحك باستخدام الدالة
invalidate
لإعادة تركيب النطاق الحالي. (Ifc992)تم استبدال استخدام فئة Px في مختلف لإنشاء فئات كجزء من جهود إعادة البناء للاعتماد على Dp فقط والأنواع الأساسية لمعلمات البكسل (Iede0b)
يغيّر استراتيجية إنشاء الرموز البرمجية للمحول البرمجي في Compose. قبل التغيير، كان المحول البرمجي للإنشاء يحول الاستدعاءات إلى دوال قابلة للإنشاء. مع هذا التغيير، نحوّل الآن نص دالة قابلة للإنشاء ونترك موقع الاتصال بدون تعديل (في الغالب).
هذا يعني أن معظم المنطق الذي يتواصل مع بيئة تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاتصال.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات Compose. يجب ألا يضطر معظم مستخدمي واجهة برمجة التطبيقات إلى تحديث أي رمز نتيجة لهذا التغيير.
ولدعم هذا العمل، تغيّر توقيع JVM لجميع الدوال القابلة للإنشاء. تتحول الدالة القابلة للتعديل التي تقبل معلمة واحدة إلى دالة تقبل 3 معلمات، والمعلمات الإضافية هي Composer، وهو عدد صحيح 'key'. عدد صحيح لقناع البت يُستخدم لنشر البيانات الوصفية عبر الاستدعاءات.
تعمل ميزة "إنشاء" الآن على تحويل الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إدخال حِمل زائد اصطناعي إضافي تلقائي على الدالة نفسها، وبالتالي سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوال.
التغييرات السلوكية المقصودة المعروفة الناتجة عن ما يلي:
- سيتم تخطّي بعض المكالمات إلى الأماكن التي لم يكن ممكنًا إجراؤها سابقًا
- التعبيرات القابلة للإنشاء في تعبيرات الوسيطات التلقائية مشتركة الآن وتعالجها بشكل صحيح
وتضمّن هذا العمل بعض التحسينات: 1- يتم نشر نتيجة مقارنات المعلَمات من خلال الرسم البياني للاستدعاء إلى دوال أخرى قابلة للإنشاء. سيؤدي ذلك إلى تقليل المقارنات في وقت التشغيل، وتقليل حجم جدول الخانة، وتخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها في السابق. 2- إنّ المقاييس التي يتم تحديدها على أنّها "ثابتة" في وقت التجميع لا تتم مقارنتها أو تخزينها في بيئة التشغيل بعد الآن. وهذا ما يقلّل من عدد المقارنات ويقلّل حجم جدول الخانة. 3- يتم استخدام هيكل تدفق التحكم في نص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يقلل هذا من حجم جدول الخانة ويؤدي إلى تقليل العمل في بيئة التشغيل 4- لا يتم تضمين معلمات الإرسال والاستقبال غير المستخدمة للدوال في تحديد قابلية تخطي الدالة في حال عدم استخدامها داخل نص الدالة.
كانت معظم التغييرات التي قد تؤدي إلى أعطال في واجهات برمجة التطبيقات التي يستهدفها المحول البرمجي بشكل مباشر، ولن يتأثر الاستخدام المعتاد للإنشاء: 1- تمت إزالة Composer::startExpr. 2- تمت إزالة Composer::endExpr. 3- تم إيقاف Compose::call نهائيًا 4- تمّت إزالة الأحمال الزائدة للسمة
key
والتي لا تتضمّن أيّ اختلافات. وسيتم استخدام إصدارvararg
من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي المحوري نهائيًا. يمكنك استخدامkey
كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقُّع دالة 3 بدلاً من Function1. 7. تم تحديث autoableFunction وacceptableFunctionN بحيث تتضمن معلمات إضافية لوقت التجميع. (I60756، b/143464846)تمت إزالة معدِّلات Layout الأغنية المتوقّفة نهائيًا. (I10877)
تمت إزالة RepaintBoundary لصالح DrawLayerModifier (I00aa4)
يتوفّر الآن للزر وFloatingActionButton والقابل للنقر معلَمة
enabled
منفصلة. تمت إعادة تسمية بعض المَعلمات على Button أو إعادة ترتيبها. (I54b5a)تم استبدال ButtonStyle بدوال مميّزة وإزالة الحمل الزائد للنص (السلسلة). يمكنك الاطّلاع على النماذج المعدّلة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)
تغييرات قد تؤدي إلى تغيُّر واجهة برمجة تطبيقات البيئة المحيطة يمكنك الاطّلاع على مستندات "
Ambient<T>
" والسجلّ للحصول على التفاصيل (I4c7ee، وb/143769776).تم تغيير سلوك TextDirection التلقائي ليتم تحديده بواسطة LayoutDirection. أي إذا كان LayoutDirection هو من اليمين إلى اليسار، يكون الوضع التلقائي سيكون اتجاه النص من اليمين إلى اليسار. في السابق 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).