واجهة مستخدم إنشاء الرسائل
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(اطّلِع على مستندات مرجع واجهة برمجة التطبيقات لجميع حِزم compose)
آخر تعديل | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
11 كانون الأول (ديسمبر) 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
البنية
Compose هو عبارة عن مجموعة من 7 أرقام تعريف مجموعات Maven ضمن androidx
. تحتوي كل مجموعة
على مجموعة فرعية مستهدفة من الوظائف، ولكل مجموعة مجموعة خاصة بها من ملاحظات
الإصدار.
يوضّح هذا الجدول المجموعات والروابط لكل مجموعة من ملاحظات الإصدار.
مجموعة | الوصف |
---|---|
compose.animation | إنشاء صور متحركة في تطبيقات Jetpack Compose لتحسين تجربة المستخدم |
compose.compiler | حوِّل دوالّ @Composable وفعِّل التحسينات باستخدام مكوّن إضافي لمجمّع لغة Kotlin. |
compose.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع الأساس لإنشاء أجزاء نظام التصميم الخاص بك. |
compose.material | أنشئ واجهات مستخدم Jetpack Compose باستخدام مكونات Material Design الجاهزة للاستخدام. هذه هي نقطة الدخول ذات المستوى الأعلى في أداة "الإنشاء"، وهي مصمّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة على www.material.io. |
compose.material3 | أنشئ واجهات مستخدم Jetpack Compose باستخدام مكونات Material Design 3، وهي الإصدار التالي من Material Design. يتضمّن Material 3 ميزات تخصيص Material You، مثل الألوان الديناميكية، وتصميمًا جديدًا للعناصر والمظاهر، وهو مصمّم ليتوافق مع التصميم المرئي الجديد لنظام Android 12 وواجهة مستخدم النظام. |
compose.runtime | الوحدات الأساسية لنموذج البرمجة وإدارة الحالة في Compose، ووقت التشغيل الأساسي الذي يستهدفه مكوّن Compose Compiler الإضافي |
compose.ui | المكونات الأساسية لواجهة المستخدم الخاصة بإنشاء الرسائل اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال |
الإعلان عن التبعيات
لإضافة تبعية على Compose، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle
ل
تطبيقك أو وحدتك:
رائع
dependencies { implementation "androidx.compose.ui:ui:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإنشاء.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 1.8
الإصدار 1.8.0-alpha07
11 كانون الأول (ديسمبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha07
. يتضمّن الإصدار 1.8.0-alpha07 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تم الكشف عن مالك من
LayoutNode
للأدوات. (I26f7f) - تحتوي على تركيبة
LocalAutofillHighlightColor
محلية تستخدم نوعًا من أنواع الألوان. (I0e05b) - يجب إبقاء
UrlAnnotation
المُسنَد إليه تاريخ الإيقاف النهائي وطرقه مصنّفة على أنّها تجريبية. (Ic0021)
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل
IndexOutOfBoundsException
عند استخدامLinkAnnotation
داخلBasicText
أو عنصر "نص قابل للتركيب" (be7605، b/374115892) - تم إصلاح مشكلة عدم اقتصاص خط المؤشر في حقول النصوص المعبأة ذات الشكل المخصّص. (I4f87f، b/380704151)
- تم إصلاح مشكلة عدم ظهور الخلفيات في لقطات الشاشة الطويلة. (I4d57a)
- تستخدم هذه المكتبة الآن تعليقات توضيحية حول عدم تحديد قيمة JSpecify، وهي عبارة عن استخدام للنوع. على مطوّري Kotlin استخدام مَعلمات المُجمِّع التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(Idfef8، b/326456246) - إتاحة ميزة "الإنشاء" للألوان ذات النطاق الواسع وألوان النطاق العالي الديناميكية عند التشغيل على نظام التشغيل Android Q والإصدارات الأحدث (Icd8be، b/379135036)
- في حال تعذّر تحميل خطوط الموارد، سيتم الآن استخدام الخط التلقائي بدون إشعار، بدلاً من السلوك السابق الذي كان يرمي استثناءً في القياس. (Ib6a49)
- حلّ مشكلة فقدان التركيز عند فصل
AndroidView
وإرفاقه (I53446) - قبول
requestFocus()
من إجراء التنسيق خارج الحدود (Ia8461)
المساهمة الخارجية
- إضافة
BringIntoViewResponderModifierNode
إلى واجهة المستخدم، ما يقدّم طريقة جديدة لتنفيذ وظيفة "إظهار في العرض"، بالإضافة إلى السماح بتنفيذها على مستوى المنصة (Ia6dd8)
الإصدار 1.8.0-alpha06
13 تشرين الثاني (نوفمبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha06
. يتضمّن الإصدار 1.8.0-alpha06 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- لإضافة المُعدِّل
stylusHoverIcon
(Iff20a، b/331289114) - تغيير "مدير الملء التلقائي" ليصبح واجهة (I84914، b/376080755)
- يضيف
requestFocus(FocusDirection)
إلى كل منfocusRequester
وFocusTargetModifierNode
للسماح بالتركيز في اتجاه معيّن. (I5d9ec، b/245755256) - تم استبدال
FocusProperties.enter
وFocusProperties.exit
بـonEnter
وonExit
، باستخدام نطاق مستلِم بدلاً من المَعلمةFocusDirection
. (I6e667) - إضافة ميزة الملء التلقائي في شريط أدوات النص (Ie6a4c)
- تغييرات واجهة برمجة التطبيقات إلى
Modifier.focusRestorer()
(I99c03):- تم تغيير اسم المَعلمة إلى "fallback"
- أصبحت المَعلمة الآن
FocusRequester
وليست lambda - أصبحت المَعلمة الآن غير فارغة مع Default كقيمة تلقائية.
- إزالة التعليق التوضيحي
@Experimental
من واجهة مدير الملء التلقائي لا تزال الميزة قيد التطوير وتستهدف هذا الإصدار، ولكن لا نريد طرحها في واجهة برمجة التطبيقات التجريبية @Expemiental API (Id8398). - يوفّر
LocalHapticFeedback
الآن طريقة تنفيذHapticFeedback
تلقائية عندما تشير واجهة برمجة التطبيقات Vibrator API إلى أنّ ميزة اللمس المفاجئ متاحة. تمّت إضافة العناصر التالية إلىHapticFeedbackType
:Confirm
وContextClick
وGestureEnd
وGestureThresholdActivate
وReject
وSegmentFrequentTick
وSegmentTick
وToggleOn
وToggleOff
وVirtualKey
. في تطبيق "هاتف Wear OS"، تؤدي الآن المكونات القابلة للنقر مع الاستمرار، مثلButton
وIconButton
وTextButton
وCard
، إلى التأثيرLONG_PRESS
عند توفير معالِج للنقر مع الاستمرار. (I5083d) - تزيل
OverscrollConfiguration
وLocalOverscrollConfiguration
وتضيفrememberPlatformOverscrollFactory
لإنشاء مثيل من / تخصيص مَعلمات تنفيذ التمرير السريع التلقائي. لإيقاف التمرير السريع، استخدِمLocalOverscrollFactory provides null
بدلاً منLocalOverscrollConfiguration provides null
. لتغيير لون الإضاءة / الحشو، استخدِمLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
بدلاً منLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
. (Ie71f9، b/255554340، b/234451516) - تمت إزالة واجهة برمجة التطبيقات التجريبية
GlobalAssertions
. كان الغرض من هذه السمة هو إجراء عمليات التحقّق من تسهيل الاستخدام، اطّلِع علىenableAccessibilityChecks()
لهذا الغرض بدلاً من ذلك. (I59322)
الإصدار 1.8.0-alpha05
30 تشرين الأول (أكتوبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha05
. يتضمّن الإصدار 1.8.0-alpha05 عمليات الربط هذه.
الميزات الجديدة
لا تتوفّر ميزة "الملء التلقائي" إلا بعد تفعيل علامة ميزة في هذا الإصدار. نحن نعمل على تحسين الأداء، ونبحث عن ملاحظات مبكّرة حول واجهات برمجة التطبيقات. من المتوقّع أن تتطوّر واجهات برمجة التطبيقات قبل طرحها بشكلٍ نهائي استنادًا إلى الملاحظات والآراء.
- لتفعيل ميزة "الملء التلقائي"، اضبط
ComposeUiFlags.isSemanticAutofillEnabled
على true فيonCreate
واستخدِم أحدث لقطة Compose. - يتيح هذا الإصدار من ميزة "الملء التلقائي" حفظ بيانات الاعتماد يدويًا، من خلال ميزة "اقتراح كلمة مرور قوية"، ومن خلال التنقّل. وتتيح هذه الميزة أيضًا الملء عندما يتلقّى حقل قابل للملء التركيز أو عند بدء ميزة "الملء التلقائي" من خلال شريط أدوات النص في مكوّنات النص. سيتم تمييز المكوّن للإشارة إلى اكتمال الملء التلقائي.
تغييرات واجهة برمجة التطبيقات
- عدِّل واجهة الملء التلقائي لتتوافق مع بنية
expect
/actual
. (I22dce) - تقديم
CompositionLocal
التي يمكن استخدامها لتعديل درجة لون تمييز الملء الناجح في ميزة "الملء التلقائي" (I32092) - تمت إضافة واجهة برمجة التطبيقات
Modifier.onRectChanged
التي تتيح الاشتراك في موضعLayoutNode
وحجمه بالنسبة إلى الجذر/النافذة/الشاشة. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المُعدِّلonGloballyPositioned
الحالي، ولكنّها تُجري ذلك بتكلفة أقل بكثير، كما أنّ واجهة برمجة التطبيقات تتضمّن مرافق لإزالة التأخير وتقييد المُتصل حسب ما تتطلّبه حالة الاستخدام. (Id28c7، b/372765423، b/372757007، b/372994338) - توسيع نطاق "مدير الملء التلقائي" ليشمل واجهات برمجة التطبيقات
commit()
وcancel()
اللتين تساعدان المستخدمين في حفظ بيانات الاعتماد التي تم إدخالها حديثًا (I2da00) - تقديم واجهة
AutofillManager
جديدة يمكن استخدامها لتحسين رحلة المستخدمين في ميزة "الملء التلقائي" وعلامةisSemanticAutofillEnabled
لتفعيل هذا الإصدار الجديد من ميزة "الملء التلقائي" (I9d484) - تمت إضافة واجهة برمجة التطبيقات
Modifier.onRectChanged
التي تتيح الاشتراك في موضعLayoutNode
وحجمه بالنسبة إلى الجذر/النافذة/الشاشة. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المُعدِّلonGloballyPositioned
الحالي، ولكنّها تُجري ذلك بتكلفة أقل بكثير، كما أنّ واجهة برمجة التطبيقات تتضمّن مرافق لإزالة التأخير وتقييد المُتصل حسب ما تتطلّبه حالة الاستخدام. (I3c8fa) - أضِف السمات الدلالية وأنواع البيانات لتوفير ميزة "الملء التلقائي" الموسّعة. (I52c7d)
- جميع الطرق في أداة إنشاء
AnnotatedString
ليست تجريبية الآن (Ia89c8 وb/261561823)
إصلاح الأخطاء
- يمكن الآن للعروض المضمّنة في وضع الإنشاء تلقّي أحداث دوران إذا تم التركيز عليها (I4d53a، b/320510084)
- تم حلّ مشكلة عدم تعديل أنواع الموارد المختلفة عند إجراء تغييرات على الإعدادات (Ia9b99 وb/352336694).
- تم حلّ مشكلة كانت تمنع
TextField
من العمل بشكل صحيح عند استخدام لوحة المفاتيح اليابانية POBox على بعض أجهزة Sony القديمة. (Ia9b99، b/373743376) - تم حلّ مشكلة ظهور مربّعات الحوار في أسفل الشاشة بدلاً من وضعها في المنتصف (Ia2ec، b/373093006)
- لم يعُد الإصدار 35 من Targeting API والإصدارات الأحدث يفرض ضبط
decorFitsSystemWindows
على "خطأ" في مربّعات الحوار. (Ibc94، b/364492593) - إصلاح مشكلة الأعطال عند نقل الطبقات بين النوافذ (مثل مربّع الحوار والمحتوى الرئيسي) (I675ba، b/330955281)
الإصدار 1.8.0-alpha04
16 أكتوبر 2024
تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha04
. يتضمّن الإصدار 1.8.0-alpha04 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- إضافة وظيفتَي الاستدعاء
DelegatableNode#onDensityChange
وDelegatableNode#onLayoutDirectionChange
للسماح بتعديل حالة العقدة عند تغيير هذه الوظائف (I04f3e وb/340662451) - تُضيف
WindowInfo#containerSize
لتوفير حجم حاوية محتوى النافذة الحالية. ويمكن استردادها باستخدامLocalWindowInfo
. (Idc38c، b/369334429، b/360343819) - تقديم حلّ لعناصر التمرير المُدمجة التي تتم إزالتها من شجرة العقد أثناء عملية التمرير السريع ستلغي هذه العقد الآن عملية الرمي وتُرسِل الحدث
onPostFling
بشكل صحيح مع السرعة المتبقية. سنضيف أيضًا العلامةNewNestedScrollFlingDispatchingEnabled
للتحكّم في السلوك في حال حدوث تراجعات. ستتم إزالة العلامة قبل طرح الإصدار التجريبي. (I05c37، b/371168883) - تمّ تقديم الرمز
PointerInputModifierNode#touchBoundsExpansion
الذي يمكن استخدامه لتوسيع حدود اللمس لمعدِّل إدخال مؤشر واحد. (Iccf02، b/335339283) - تُضيف
WindowInfo#containerSize
لتوفير حجم حاوية محتوى النافذة الحالية. ويمكن استردادها باستخدامLocalWindowInfo
. (I27767، b/369334429، b/360343819) - أزِل
readOnly
منTextFields
لتثبيت الإصدار الثابت من الأساس. (I3aaba) - يعرض الحقلَان
Paragraph
وParagraphIntrinsics
الآن قائمة بجميع التعليقات التوضيحية المطبَّقة علىAnnotatedString
، في حين أنّه كان يتضمّن في السابق قائمةSpanStyles
فقط (I12f80).
إصلاح الأخطاء
- تم تعديل كيفية التعامل مع الفقرات في
AnnotatedString
. في السابق، كان بإمكانك إنشاء فقرات غير متداخلة فقط. يسمح العنصرAnnotatedString
الآن بالفقرات المتداخلة بالكامل والتي سيتم دمجها معًا، والفقرات المُدمجة، وفي هذه الحالة سيتم تقسيم الفقرة الخارجية على حدود الفقرة الداخلية، وسيتم دمج نمط الفقرة الداخلية مع نمط الفقرة الخارجية (Ic9554). - حلّ مشكلة الأعطال في
AnnotatedString
باستخدامLinkAnnotation
بدون طول (89aac6)
الإصدار 1.8.0-alpha03
2 أكتوبر 2024
تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha03
. يحتوي الإصدار 1.8.0-alpha03 على عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تحديث إصدار Kotlin إلى 1.9 (I1a14c)
- تمّ تقديم دور جديد للدلالات يُسمى "لوحة العرض الدوّارة" لمحاكاة سلوك القائمة في صفحات الفهرسة لخدمات تسهيل الاستخدام. (Id354b، b/354109776، b/239672673)
- أعِد تسمية
invisibleToUser()
إلىhideFromAccessibility
. وتبقى وظيفته كما هي. يمكنك الاطّلاع على المستندات للحصول على مزيد من التفاصيل. (Ib43a3)
إصلاح الأخطاء
- تعديل المستندات الخاصة بالمعدِّل
SensitiveContent
(Ib0442) - تم إصلاح مشكلة تجاهل بعض المقاطع العامة للخطوط الخارجية مع الظلال الناتجة عن الارتفاع في بعض إصدارات Android.
- تم إصلاح مشكلة تطبيق مقاطع فارغة عند تحديد مقاطع مخطّط إجمالي عام على إصدارات معيّنة من Android.
- تم إصلاح استثناء تم طرحه عندما يكون IME مفعّلاً في عرض خارجي ويتم استخدام الإجراء التالي للتركيز على
ComposeView
. يتوافق سلوكclearFocus()
مع سلوك View في الإصدارات الأقدم من واجهة برمجة التطبيقات 28، حيث يمكن أن يؤديclearFocus()
إلى التركيز على View التلقائي. - تم حلّ مشكلة حدوث عملية وضع على عقد منفصلة في
LazyList
من خلال فصل إدارة التركيب الفرعي لمرات مرور مختلفة للتنسيق. - تم إصلاح مشكلة كانت تؤدي إلى وميض لوحة المفاتيح عند تبديل التركيز من
TextField
إلىEditText
أو أي محرِّر آخر يستند إلى العرض. - ستُرسِل الآن عقد "الانتقال المتداخل" أحداث
onPostFling
بشكل صحيح بعد فصلها. - تحسينات عامة على الأداء
الإصدار 1.8.0-alpha02
18 أيلول (سبتمبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha02
. يتضمّن الإصدار 1.8.0-alpha02 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- يتوفّر الآن الرمزان
TextOverflow.StartEllipsis
وTextOverflow.MiddleEllipsis
اللذان يتيحان وضع علامة الحذف في بداية سطر النص الفردي أو وسطه. (I38913، b/185418980)
إصلاح الأخطاء
- حلّ مشكلة الحوار
dismissOnClickoutside
(39a3d، b/364508685) - لا تقطع ظلال محتوى المحادثة (e8e2f، b/363027803)
- إصلاح السلوك غير الصحيح عند نقل البحث عن التركيز بين ميزة "الإنشاء" وعرض (58377، b/350534714)
المساهمة الخارجية
- يقبل العنصر
AlignmentLines
Map
الآن النوعَين المحدّدَينVerticalAlignmentLine
أوHorizontalAlignmentLine
. (I02912) - طريقة
ByteArray.decodeToImageBitmap(): ImageBitmap
شائعة جديدة (I83c21)
الإصدار 1.8.0-alpha01
4 أيلول (سبتمبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha01
. يتضمّن الإصدار 1.8.0-alpha01 عمليات الربط هذه.
الإصدار 1.7
الإصدار 1.7.6
11 كانون الأول (ديسمبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.6
. يتضمّن الإصدار 1.7.6 عمليات الربط هذه.
إصلاح الأخطاء
- في السابق، كنّا نُبلغ عن خطأ عند رصد حدث رئيسي عندما كان نظام التركيز يتضمّن عمليات إبطال في انتظار المراجعة. وسنسجّل الآن خطأً بدلاً من ذلك (I7ea0، b/346370327).
- تمت إزالة التعليق التوضيحي التجريبي من
SemanticsPropertyReceiver.invisibleToUser()
. سيتم إيقاف هذا الإجراء نهائيًا في الإصدار 1.8 ليتم استبداله بـSemanticsPropertyReceiver.hideFromAccessibility()
. (I448f0، b/376479686) - تم إصلاح مشكلة كانت تمنع
TextField
من العمل بشكل صحيح عند استخدام لوحة المفاتيح اليابانية POBox على بعض أجهزة Sony القديمة. (I94e0e، b/373743376) - تم إصلاح مشكلة تسهيل الاستخدام حيث لم يتم الإعلان عن
BasicText
inlineContent من قِبلTalkBack
. (I67bcb، b/376479686)
الإصدار 1.7.5
30 تشرين الأول (أكتوبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.5
. يحتوي الإصدار 1.7.5 على عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح المشاكل المتعلّقة بعدم عرض الارتفاع والقطع باستخدام المخططات التفصيلية المخصّصة بشكلٍ صحيح.
- إصلاح مشكلة تعطُّل النص التي تحدث عند استخدام
LinkAnnotation
بعرض صفري (Ic1e2e) - إصلاح إشعار في
Talkback
من الزر عند إنشائه كعنصر قابل للنقر من عنصر تركيبي للنص (I1f588)
الإصدار 1.7.4
16 أكتوبر 2024
تم إصدار androidx.compose.ui:ui-*:1.7.4
. يتضمّن الإصدار 1.7.4 عمليات الربط هذه.
الإصدار 1.7.3
2 أكتوبر 2024
تم إصدار androidx.compose.ui:ui-*:1.7.3
. يتضمّن الإصدار 1.7.3 عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تحديد مقطع مخطط عام يؤدي إلى ظهور حدود مقطع فارغة على إصدارات معيّنة من Android.
- تم إصلاح استثناء تم طرحه عندما يكون IME مفعّلاً في عرض خارجي ويتم استخدام الإجراء التالي للتركيز على
ComposeView
. يتوافق سلوكclearFocus()
مع سلوك View في الإصدارات الأقدم من واجهة برمجة التطبيقات 28، حيث يمكن أن يؤديclearFocus()
إلى التركيز على View التلقائي. - تم إصلاح مشكلة استخدام
placeOrder
غير صحيح لإبطال ميزة "النظرة إلى المستقبل"، وبالتالي إصلاح حالة متطرفة تم فيها تخطّي موضع "النظرة إلى المستقبل".
الإصدار 1.7.2
18 أيلول (سبتمبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.2
. يتضمّن الإصدار 1.7.2 عمليات الربط هذه.
إصلاح الأخطاء
- تحسين أداء معلومات عقدة تسهيل الاستخدام وأحداث الدلالات من خلال إزالة التتبّع المفصّل (I89156، b/362530618)
- لن يتعطّل
ComposeView
بعد الآن عند تمرير حجم قياس كبير بشكل استثنائي (da5db، b/347036173) - تم إصلاح مشكلة في برنامج قراءة الشاشة لتسهيل الاستخدام، حيث لم يتم الإعلان عن
LiveRegion
الأزرار. (f66fa7، b/348590026)
الإصدار 1.7.1
10 أيلول (سبتمبر) 2024
- عدم إجراء أي تغييرات على عناصر Android تمّت إزالة
-desktop
عنصر وإضافة-jvmStubs
و-linuxx64Stubs
عنصر. لا يُقصد استخدام أيّ من هذه الاستهدافات، بل هي عناصر نائبة لمساعدة جهود Jetbrains Compose.
الإصدار 1.7.0
4 أيلول (سبتمبر) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0
.
التغييرات المهمة منذ الإصدار 1.6.0
يمكنك الاطّلاع على مشاركة المدونة هذه للتعرّف على التغييرات المهمة في الإصدار 1.7.0.
الإصدار 1.7.0-rc01
21 آب (أغسطس) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-rc01
. يتضمّن الإصدار 1.7.0-rc01 عمليات الربط هذه.
التغييرات البارزة
- تفرض الآن وحدة ui:ui الحد الأدنى لإصدار foundation:foundation على أن يكون 1.7.0-rc01 أو إصدارًا أحدث. يتم فرض هذا التغيير لحلّ مشكلة عدم التوافق في السلوك بين واجهة المستخدم والقاعدة الأساسية في ما يتعلّق بتغييرات
NestedScrollSource
التي حدثت في وقت مبكر خلال الإصدار 1.7.0-alpha01.
الإصدار 1.7.0-beta07
7 آب (أغسطس) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-beta07
. يتضمّن الإصدار 1.7.0-beta07 عمليات الربط هذه.
إصلاح الأخطاء
- ستؤدي الآن دوال
SemanticsNodeInteraction
ذات الصلة بإدخال النص، وهيperformTextReplacement
وperformTextInput
وperformTextClearance
، إلى ظهور أخطاء في العبارة عند طلبها فيTextFields
للقراءة فقط. (I4ae8f)
الإصدار 1.7.0-beta06
24 تموز (يوليو) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-beta06
. يتضمّن الإصدار 1.7.0-beta06 عمليات الربط هذه.
الإصدار 1.7.0-beta05
10 تموز (يوليو) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-beta05
. يتضمّن الإصدار 1.7.0-beta05 عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى عدم قبول
TextField
الإدخال من لوحة المفاتيح الجديدة عند تغيير لوحة المفاتيح إلى أن يتم فقدان التركيز واستعادته. - تم إصلاح مشكلة كانت تؤدي إلى حدوث تأثيرات جانبية غير مقصودة عند محاولة الاحتفاظ بمحتوى الطبقة عند العرض باستخدام محتوى
SurfaceView
.
الإصدار 1.7.0-beta04
26 حزيران (يونيو) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-beta04
. يتضمّن الإصدار 1.7.0-beta04 عمليات الربط هذه.
إصلاح الأخطاء
- تجنُّب الأعطال عند قياس أسطر نصية كبيرة جدًا (مثلاً 10 آلاف حرف) (8157ab)
- أوقِف ميزة "عرض البرامج" لواجهة برمجة التطبيقات
GraphicsLayer
. (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
إلى valisEditable
. أصبحت السمة الآن منطقية ويتم تحديدها دائمًا من خلال الحقول النصية. (I8acd8) - إعادة تسمية مَعلمة قياس أداء تسهيل الاستخدام (I3d440)
- واجهة برمجة تطبيقات معدَّلة لتنسيق الروابط: أصبح
TextLinkStyles
الآن جزءًا من طريقة الإنشاءLinkAnnotation
وطريقةAnnotatedString.fromHtml
(I90b2b). تمت أيضًا إزالةTextDefaults
من المادة (I5477b).
إصلاح الأخطاء
- تمت إعادة تسمية
LayoutCoordinates.introducesFrameOfReference
إلىLayoutCoordinates.introducesMotionFrameOfReference
لتعكس الغرض منها بشكل أفضل. تمّت إعادة تسمية الدالة ذات الصلة لاحتساب التنسيقات استنادًا إلى هذا الإعداد. (I3a330)
الإصدار 1.7.0-beta01
14 أيار (مايو) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-beta01
. يتضمّن الإصدار 1.7.0-beta01 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
performCustomAccessibilityActionLabelled
إلىperformCustomAccessibilityActionWithLabel
وperformCustomAccessibilityActionWhere
إلىperformCustomAccessibilityActionWithLabelMatching
. (I5387f) -
AnnotatedString.hasEqualsAnnotations
أصبح الآنhasEqualAnnotations
(I685c0) - تم تعديل واجهة برمجة التطبيقات للحصول على روابط ذات مظهر Material في النص. على وجه التحديد، تمّت إزالة الطرق من
TextDefaults
لإنشاءLinkAnnotations
ذات طابع معيّن وتحليل HTML باستخدام روابط ذات طابع معيّن. بدلاً من ذلك، تمت إضافة فئةTextLinkStyles
تتيح تصميم الروابط كمَعلمة إلى عنصر Text composable. (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
لعرض المخططات من أجل استخدام مَعلمات float بدلاً من int. وتمّت إزالة قيمUnsetOffset/UnsetSize IntSize
التي تشير إلى الخطأ لصالح الثوابت غير المحدّدة الحالية في الفئات المضمّنة "الموضع" و"الحجم" المستندة إلى float (I2fb03 وb/333863462). - عند إدخال بيانات الماوس أثناء الاختبارات، تقبل
MouseInjectionScope.click()
وMouseInjectionScope.doubleClick()
وMouseInjectionScope.tripleClick()
وMouseInjectionScope.longClick()
الآن مَعلمةbutton: MouseButton
لجعلها قابلة للتطبيق بشكلٍ عام. القيمة التلقائية هيMouseButton.Primary
لجميع الطرق. (I31a23 وb/190493367 وb/261439695) - تمت إعادة تسمية
onClicked
إلىonClick
داخلLinkInteractionListener
. (Iaa35c) - أعِد تسمية
TextInclusionStrategy.isInside
إلىisIncluded
. اجعل نوع الإرجاعParagraph/MultiParagraph#getRangeForRect()
غير قابل للحذف. (I51f26)
إصلاح الأخطاء
- تم إصلاح مشكلة التقاط لقطة شاشة طويلة للحاويات التي يتم التمرير فيها باستخدام
reverseScrolling=true
. (I7c59c)
المساهمة الخارجية
- تمت إضافة ميزة prefetching (التحميل المُسبَق) للعناصر في
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
(مثل Scroll الذي يتم تنفيذه تلقائيًا). يساعد ذلك في أن تصبح الصور المتحرّكة المستندة إلىapproachLayout
أكثر سهولة، حيث أصبح بإمكانك الآن التمييز بين العناصر التي تريد إضافة تأثيرات متحركة إليها والعناصر التي تريد تطبيقها مباشرةً عند اتخاذ قرار بإضافة تأثيرات متحركة إلى تصميمك. (I60ec7) - تمت إزالة علامة الميزة الخاصة بلقطات الشاشة الطويلة. (I28648، b/329128246)
- سيعرض
LazyColumn
الآن العناوين الثابتة بشكل صحيح في لقطات الشاشة الطويلة. (I8d239، b/329296635) - يتم استبدال مصدرَي التفاعل Drag وFling بـ
UserInput
وSideEffect
لتلبية التعريف الموسّع لهذَين المصدرَين الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput
). (I40579)NestedScroll
- أصبح
ApproachLayoutModifierNode
وModifier.approachLayout
ثابتَين الآن، معisMeasurementApproachInProgress()
وisPlacementApproachInProgress()
الجديدَين لاستبدالisMeasurementApproachComplete()
وisPlacementApproachComplete()
القديمَين على التوالي. - تمت إزالة المُعدِّل
intermediateLayout
الذي تم إيقافه نهائيًا. (I3e91c) - أعِد تسمية
GraphicsLayer#buildLayer
لتسجيل طريقة begin/endRecording لواجهات برمجة التطبيقات المتوافقة مع Displaylist، مثلRenderNode
وPicture. - تم تعديل
rememberGraphicsLayer
للاستفادة منrememberObserver
. (I312c1، b/288494724، b/330758155) - تم إيقاف العلامة
UrlAnnotation
نهائيًا، لذا يُرجى استخدام العلامةLinkAnnotation.Url
بدلاً منها. إذا كنت تستخدم تنسيق Material، استخدِم العنصرTextDefaults
لإنشاء التعليق التوضيحي مع تطبيق تنسيق Material عليه (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) - تم توفير ميزة تجريبية لالتقاط لقطات شاشة طويلة في حاويات التمرير في ميزة "الإنشاء" باستخدام واجهة برمجة تطبيقات Android الرسمية (
ScrollCaptureCallback
). هذه الميزة تجريبية وقد لا تعالج حاليًا جميع الحالات بشكل صحيح. لهذا السبب، تكون هذه الميزة غير مفعّلة تلقائيًا في الوقت الحالي. للموافقة، اضبط العلامةComposeFeatureFlag_LongScreenshotsEnabled
على true. (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
الآن القيمة null للتمكن من محو الحافظة. (I7d2e9) - تمت إضافة أرقام تعريف الموارد للمساعدة في إخفاء "المشاهدات" المستخدَمة كتفاصيل تنفيذ ضمن أدوات الإنشاء (I99531).
- تمت إضافة طريقة تعليق
GraphicsLayer#toImageBitmap
لإتاحة عرض محتوى ملف رسومات نقطية فيGraphicsLayer
. هذه عملية عرض مُسرَّعة بالأجهزة على المستوى 22 أو أعلى لواجهة برمجة التطبيقات (شاملة) والتي تتوافق مع أكثر من% 99 من جميع أجهزة Android. في المستوى 21 لواجهة برمجة تطبيقات Android، يتم استخدام ميزة المعالجة البرمجية. (I9e114) - طريقة مساعدة لتحويل Android
RectF
إلىComposeRect
(I39925، b/325660505) - أصبحت جميع مَعلمات
KeyboardOptions
لها قيمة غير محدّدة تلقائيًا. تمّت إضافة طريقةKeyboardOptions.merge
. - تمت إعادة تسمية
KeyboardOptions.autoCorrect
إلىautoCorrectEnabled
وجعلته قابلاً للتغيير، حيث تشير القيمة null إلى عدم تحديد أي قيمة. (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
API جديدة لتسجيل أوامر الرسم في قائمة عرض بالإضافة إلى سمات إضافية تؤثّر في عرض قائمة العرض يوفر ذلك حدودًا للفصل لقسمة مشهد معقّد إلى أجزاء أصغر يمكن تعديلها بشكلٍ منفصل عن بعضها بدون إعادة إنشاء المشهد بأكمله. يمكن إجراء عمليات التحويل التي تم إجراؤها علىGraphicsLayer
بدون إعادة تسجيل قائمة العرض. على عكسModifier.graphicsLayer
، يسمحGraphicsLayer
بعرض المحتوى القابل للتجميع في مكان آخر، وهو مفيد في حالات الاستخدام التي تتضمّن صورًا متحركة حيث من المتوقّع عرض المحتوى في مشاهد مختلفة.
تغييرات واجهة برمجة التطبيقات
- لم تعُد
GraphicsLayer.draw(Canvas)
واجهة برمجة تطبيقات علنية بعد الآن. يُرجى استخدام دالة إضافةDrawScope.drawLayer(GraphicsLayer)
بدلاً من ذلك لرسم الطبقة. (I7a7c0) - تقسيم
restrictedConstraints()
إلى طريقتَين:fitPrioritizingWidth()
وfitPrioritizingHeight()
(I6d7fd) - تمّ تقديم
HardwareCanvas
stub لاستخدام Android L (I1c3b5، b/288494724) - عدِّل إطار عمل Compose لعرض
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
expect/actual لتمكين تسجيل أوامر الرسم وإعادة تشغيلها باستخدام تأثيرات مرئية وعمليات تحويل اختيارية لدمج الصور. تقديم واجهةGraphicsContext
تحتوي على تبعيات الرسومات، بما في ذلك إنشاء نُسخGraphicsLayer
وإدارتها (I4a8d6، b/288494724) - تم حلّ مشكلة التوافق مع ميزة البحث بالتركيز على عنصر واحد، حيث كان التركيز يبقى داخل
ComposeView
تم تضمينه بين طرق العرض الأخرى. (I08fd4)
المساهمة الخارجية
- تم نقل
LocalLifecycleOwner
من واجهة مستخدم Compose إلىlifecycle-runtime-compose
حتى يمكن استخدام واجهات برمجة التطبيقات المساعِدة المستندة إلى Compose خارج واجهة مستخدم Compose. نشكر "جاك وارتون" على مساهمته. (I6c41b، b/328263448) - عرض خصائص "التحيز العائم" بشكلٍ متّسق في جميع الأنواع الفرعية للمحاذاة المستندة إلى التحيز (I69f0f، b/328088992)
الإصدار 1.7.0-alpha04
6 مارس 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha04
. يتضمّن الإصدار 1.7.0-alpha04 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- إتاحة ميزة الكتابة اليدوية باستخدام قلم الشاشة لعنصر BasicTextField2 على الأجهزة التي تعمل بالإصدارات الأحدث من Android U (I002e4)
- في هذا الطلب، سنضيف الإجراء الدلالي
GetScrollViewportLength
لنتمكّن من توجيه معلومات عن المكوّنات التي يتم التمرير فيها في وضع الإنشاء إلى نظام تسهيل الاستخدام. تطبّق قائمة المحتوى هذه أيضًا استخدام السمة المذكورة في قوائم Foundation القابلة للتنقّل. (Ic5fa2) - أصبحت الإصدارات
FocusRequester.createRefs
مستقرة الآن (I4d92c، b/261436820). - تمّ تقديم
DelegatableNode.requireView()
للسماح لعقد المُعدِّلات بالحصول علىView
Android الحالي بدون قراءة تركيبة محلية. (I40768) - واجهة برمجة تطبيقات جديدة
Path.reverse()
لعكس اتجاه المسار (I36348) - تمت إضافة
hintLocales
إلىKeyboardOptions
لمنحTextFields
إمكانية التلميح إلى أنظمة IME باستخدام لغات معيّنة لضبط لغة مفضّلة مسبقًا. - اعرض السمة
platformLocale
منLocale
التي تعرض عنصر المنصة الأساسي، مثلjava.util.Locale
. (I921c6)
الإصدار 1.7.0-alpha03
21 شباط (فبراير) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha03
. يحتوي الإصدار 1.7.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- نقدّم لك
ContextualFlowRow
وFlowRow
/Column
المحسّنَين مع MaxLines وOverflow. يسرّنا الإعلان عن تحسينات علىFlowRow
وFlowColumn
التجريبيَين، حيث يتوفّر الآن خياران هما maxLines وoverflow، إلى جانب طرحContextualFlowRow
وContextualFlowColumn
لأول مرة. تم تصميم هذا التعديل لتقديم مكوّنات فعّالة، حيث يكونContextualFlow*
مثاليًا لعدد كبير من العناصر التي تستخدِم إعداداتmaxLines
صغيرة وزرّات ديناميكية لعرض المزيد من العناصر، ويكونFlowRow
وFlowColumn
مثاليَين لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRow
أوFlowColumn
حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تلائم الحد الأقصى للمحور المتقاطع، اضبطoverflow
علىFlowRowOverflow.Visible
أوFlowColumnOverflow.Visible
أثناء الإعداد. يمكنك الاطّلاع علىContextualFlowRowSample
وFlowRowSample
للحصول على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082) - أضِف سمة
maxTextLength
الدلالية التي يجب ضبطها على حقول النص التي تصفّر الحد الأقصى المسموح به لعدد الأحرف. (I24d9f، b/170648072) - تم إيقاف حزمة
Modifier.inspectable
نهائيًا. ستؤدي واجهة برمجة التطبيقات هذه إلى إلغاء صلاحية المُعدِّل أكثر من اللازم، لذا لا يُنصح باستخدامها الآن. ننصح المطوّرين بتنفيذ طريقةinspectableProperties()
فيModifierNodeElement
إذا أرادوا عرض سمات المُعدِّل للأدوات. (Ib3236) - طريقة وضع تصميم جديدة لـ
PopupProperties
تتيح التحكّم الكامل في علاماتWindowManager.LayoutParams
(Ibb33e، b/312485503) - تمّ تقديم
DelegatableNode.requireLayoutCoordinates()
كطريقة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في عنصر بنفسك. (Ia8657) - تمّ تقديم
DelegatableNode.currentLayoutCoordinates
كطريقة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في عنصر بنفسك. (Iaebaa) - تم نقل
BasicTextField2
وواجهات برمجة التطبيقات ذات الصلة ضمن حزمةandroidx.compose.foundation.text2
إلىandroidx.compose.foundation.text
. (I9f635) - تمت إضافة واجهة برمجة تطبيقات
ApproachLayoutModifierNode
جديدة للسماح بإنشاء منطق أسلوب مخصّص في "عقدة مُعدِّل" صريحة. تمت أيضًا إضافة واجهة برمجة تطبيقاتDeferredTargetAnimation
تجريبية جديدة للرسوم المتحرّكة التي يكون هدفها غير معروف عند إنشاء العنصر. (I60745) - واجهات برمجة تطبيقات جديدة لـ
Path
من أجل طلب معلومات عن اتجاه مسار واستخراج الخطوط الخارجية منPath
(I63d04) - تمت إضافة
PathHitTest
وPath.contains(Offset)
للتحقّق مما إذا كانPath
يحتوي على نقطة معيّنة. (I3b218) - يعرِض العنصر
TextLayoutResult
الآن طريقةgetLineBaseline(lineIndex)
. يتيح ذلك قراءة خط الأساس لسطر عشوائي من النص بالإضافة إلى السمتَين الحاليتَينfirstBaseline
وlastBaseline
. (Ide4e8، b/237428541) - تمت إضافة طريقة لمقارنة التعليقات التوضيحية لصفحتَي
AnnotatedStrings
فقط. (I32659)
إصلاح الأخطاء
- تم حلّ مشكلة التوافق مع الإصدارات القديمة في
SemanticsPropertyReceiver.performImeAction
وSemanticsActions.PerformImeAction
. (Id0528، b/322269946)
الإصدار 1.7.0-alpha02
7 شباط (فبراير) 2024
تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha02
. يحتوي الإصدار 1.7.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم حلّ مشكلة التوافق مع الثنائي
SemanticsPropertyReceiver.performImeAction
. (I65865، b/322269946) - لم يعُد باني
PopupProperties
الذي يأخذ مَعلمةusePlatformDefaultWidth
ميزة تجريبية. (I8f8d2) - تمت إضافة حمولة زائدة
ComposeTestRule.waitUntil
تأخذ وصفًا لسلاسل من الشرط لتضمينه في رسالة المهلة. (I9413e) - واجهة برمجة تطبيقات جديدة للدلالات
unset()
لإزالة سمات الدلالات التي تمت إضافتها في سلسلة المُعدِّلات نفسها سمة دلالية جديدةisOpaque
(I8c583، b/317966058، b/246056649) - تمت إزالة
originalEventPosition
من طريقة النسخ في واجهة برمجة التطبيقات العامةPointerInputChange
. (I7bead)
إصلاح الأخطاء
- تم إصلاح خلل في معايير a11y يسمح بإمكانية النقر على عناصر غير علامات التبويب وأزرار الاختيار عند اختيارها. (I2181c)
- سيتم الآن حلّ مشكلة إضافة النقاط تلقائيًا في
VelocityTracker
. يمكن إيقاف الإصلاح من خلال ضبطVelocityTrackerAddPointsFix
على false في حال حدوث أي مشاكل. (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
API إلى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) - سيتم الآن تجاهل أحداث "الضغط على مفتاح جهاز" للأجهزة التي لم تتلقّ حدث "رفع إصبع المستخدم عن المفتاح" في "عرض الكتابة" نفسه. (Ib37b4، b/305518328)
- إضافة إمكانية استخدام أداة التقديم والترجيع مع مظهر "التدرّج السريع" في
ArcLine
(I4d5bb) - نفِّذ الدالتَين equals وhashcode
PageSize.Fixed
. (Ie3ede، b/300134276) - حلّ مشكلة التوافق الثنائي مع تغيير "موضع النافذة" (Iee695)
- أزِل طبقة Material Core لشريحة/زر Material3 لأنّ الاختبارات الدقيقة تُظهر أداءً أفضل بدونها. (I55555)
- سيتم الآن استخدام
TestDispatcher
التي تم تمريرها كeffectContext
لاختبارات الإنشاء من أجل إنشاء ساعات الاختبار والإطار. (Ia7178)
الإصدار 1.6.0-alpha08
18 تشرين الأول (أكتوبر) 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha08
. يحتوي الإصدار 1.6.0-alpha08 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية دالة lambda
onDrawDragShadow
فيModifier.dragAndDrawSource
إلىdrawDragDecoration
، وتمّت إعادة تسمية مَعلمة size فيDragAndDropInfo
إلىdragDecorationSize
. (Id0e30، b/303904810) - استخدِم
SemanticsNodeInteraction.isDisplayed()
وSemanticsNodeInteraction.isNotDisplayed()
للتحقّق مما إذا كانت العقدة المطابقة مرئية أم لا بدون التأكيد عليها أيضًا. (I2c196، b/302100809) - تمّت إضافة قيمة
Unspecified
خاصة لحقولTextAlign
وTextDirection
وHyphens
وLineBreak
فيParagraphTextStyle
لاستبدالnull
. وبما أنّ هذه الفئات هي فئات مضمّنة، فإنّنا نتجنب استخدام الأنواع البدائية من خلال استبدال nullable بـ Unspecified. تم تعديل وظائف الإنشاء ووظائف الحصول على القيم وغيرها من الطرق فيTextStyle
وParagraph style لقبول المَعلمات المذكورة كأنواع غير فارغة. (I4197e، b/299490814) - أضِف
GoogleFont
overload لقراءةGoogleFont
من XML. (If8f59) - جعلت
LoremIpsum
PreviewParameterProvider
صفًا مفتوحًا. (I41bf5، b/266918816، b/300116360)
إصلاح الأخطاء
- يستخدم
FontFamilyResolver
الآنDispatchers.Main
لعمليات إدارة ذاكرة التخزين المؤقت. (Ie8dd9) - يزيل
AndroidViewBinding
الآن بشكل متزامن نُسخFragment
التي تم تضخيمها عن طريق تضمينFragmentContainerView
في التنسيق كجزء منonRelease
باستخدامcommitNow
(بدلاً منcommit
الذي كان يستخدمه سابقًا)، وبالتالي حلّ المشاكل المتعلقة بطريقة "التعديل المباشر" من خلال استبدال التركيبة عند إجراء تغييرات. (I58fbf)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha07
. يحتوي الإصدار 1.6.0-alpha07 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّ تقديم
PlatformTextInputMethodTestOverride
لكتابة اختبارات لمحرّري النصوص المخصّصة. (Id159b) - تضيف هذه السمة المُعدِّل
dragAndDropSource
لبدء جلسات السحب والإفلات، والمُعدِّلdragAndDropTarget
لتلقّي العناصر من جلسات السحب والإفلات. (Ib7828، b/286038936) - تمّت إضافة مجموعتَي
ColorList
وColorSet
اللتين تتجنّبان عمليات التوزيع. (I744bd) - تمت إضافة علامة مؤقتة
DisableNonLinearFontScalingInCompose
لإيقاف الضبط غير الخطّي لحجم الخط. اضبطDisableNonLinearFontScalingInCompose = true
في اختباراتك إذا كنت بحاجة إلى وقت لتنظيفها. ستتم إزالة هذا الإعداد في الإصدار 1.6.0-beta01 من تطبيق Compose. (Ic9486)
إصلاح الأخطاء
- تحليل محسّن للأشكال المتّجهة القابلة للرسم بتنسيق XML (Ibb015)
الإصدار 1.6.0-alpha06
20 أيلول (سبتمبر) 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha06
. يحتوي الإصدار 1.6.0-alpha06 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تحسينات إضافية على رموز Material (I3e08d)
- تضيف هذه الميزة إمكانية التنقّل لأعلى/أسفل شجرة المُعدِّلات للعثور على العقد المشابهة. (I2d234)
- تمت إضافة دالة معاودة الاتصال
onRestoreFailed()
إلى مُعدِّلfocusRestorer()
(Ie1d43). - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorInt
وFloatRange
وIntRange
وSize
والمزيد. (Id65c8، b/290950582) - إضافة
showSystemUi=true
إلى تعريفPreviewScreenSizes
(Ib61d3)
التغييرات في السلوك
- يستخدم تطبيق "الإنشاء" الآن ميزة "الضبط غير الخطي لحجم الخط" لتحسين إمكانية القراءة وسهولة الاستخدام. عندما يكون مقياس الخط أكبر من% 100 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ طبيعي، ولكن لن يزداد حجم النص الكبير إلا قليلاً. بالإضافة إلى ذلك، سيتم تعديل ارتفاعات السطور المحدّدة في SP تلقائيًا لتظلّ متناسبة مع الارتفاع المقصود على مقياس% 100. اطّلِع على أفضل الممارسات المتعلّقة بتوسيع نطاق الخط للحصول على مزيد من المعلومات. (I11518)
الإصدار 1.6.0-alpha05
6 أيلول (سبتمبر) 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha05
. يحتوي الإصدار 1.6.0-alpha05 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- فعِّل ميزة "التقاط المحتوى" في
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - يتمّ الحدّ من سرعات الرمي في مكوّنات العرض، مثل
ScrollView
وRecyclerView
، إلىViewConfiguration.ScaledMaximumFlingVelocity
. يحتوي تطبيق "الإنشاء" الآن على إصدار خاص به منmaximumFlingVelocity
الذي ينطبق الآن علىDraggable
. (Ibf974) - إضافة إطار عمل أولي لدعم واجهات برمجة التطبيقات الخاصة بسحب العناصر وإفلاتها على المنصة (If84ce)
- إضافة
deviceId
إلىRotaryScrollEvent
(Iba3bf) - تم تعديل واجهة برمجة التطبيقات
ui-tooling
Devices API لتضمين الأجهزة الأحدث (Ib25b4)
الإصدار 1.6.0-alpha04
23 آب (أغسطس) 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha04
. يحتوي الإصدار 1.6.0-alpha04 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة لإيقاف
ReusableComposition
، ما يؤدي إلى إزالة الملاحظات مع إبقاء العقد في مكانها. يمكن تفعيل التركيبة التي تم إيقافها مرة أخرى من خلال الاتصال بالرقمsetContent
. (Ib7f31) - إضافة واجهة
ReusableComposition
لإدارة مراحل نشاط التراكيب الفرعية وإعادة استخدامها (I812d1، b/252846775) - تمت ترقية
Modifier.focusGroup
إلى واجهات برمجة تطبيقات مستقرة. (I7ffa3) - تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد
ColorInt
وFloatRange
وIntRange
وSize
والمزيد. (I70487، b/290950582) - تم تعديل واجهة برمجة التطبيقات
ColorFilter
لتوفير أنواع فئة فرعية محدّدة لتحسين إمكانية فحص المَعلمات. (I5fe29) - تقديم مكتبة معاينة أدوات Wear لعرض أجهزة Wear الصالحة التي يمكن استخدامها لمعاينات واجهة المستخدم (Ib036e)
- تم إنشاء واجهة
FontScalable
للتعامل مع جزء تكبير الخط في واجهة "الكثافة". (I2cf3f)
الإصدار 1.6.0-alpha03
9 آب (أغسطس) 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha03
. يحتوي الإصدار 1.6.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- نوع جديد من انتقالات الدخول/الخروج الذي يغيّر حجم المحتوى استنادًا إلى حجم الحاوية التي يتم عرضها أثناء انتقالات الدخول والخروج
LookaheadScope
أصبحت الواجهة والميزات القابلة للتجميع مستقرة الآن. (Ifb2ce) - تمت إضافة إمكانية ضبط
privateImeOptions
(Idb772)
إصلاح الأخطاء
- سيعدِّل
PopupPositionProvider.calculatePosition
الآن موضع النافذة المنبثقة تلقائيًا عند تغيير الحالة المقروءة في العملية الحسابية. (I676a1، b/292257547) - تم إصلاح الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما يكون
readOnly
صحيحًا. تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغييرreadOnly
من صحيح إلى خطأ أثناء التركيز. (I34a19، b/246909589) - توسيع نطاق تطبيق الأحكام الشاملة في اختبار واجهة المستخدم (I1f90d)
الإصدار 1.6.0-alpha02
26 تموز (يوليو) 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha02
. يحتوي الإصدار 1.6.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة أداة البحث عن الخدمة التي يمكن لمطوّري المكونات تنفيذها، والتي تسمح بتنفيذ عنصر تركيب يفوّض إلى عنصر تركيب آخر البحث عن الخدمات المفوَّضة في عنصر التركيب الأصلي. يجب عدم استدعاء هذا الإجراء مباشرةً، ويتم استخدامه لتفعيل إنشاء واجهات برمجة تطبيقات تجريبية في وقت التشغيل يمكن العثور عليها من الإصدارات المُغلفة من أداة إنشاء التصاميم، مثل ما تفعله وحدة واجهة المستخدم. (I296b9)
- واجهة برمجة تطبيقات
PlatformTextInput*
التي تمت إعادة تصميمها بالكامل (I6c93a وb/274661182 وb/267235947 وb/277380808) - لم تعُد
SoftwareKeyboardController
وLocalSoftwareKeyboardController
ميزتَين تجريبيتَين. أصبحLocalSoftwareKeyboardController
الآن أيضًاCompositionLocal
صالحًا. (I4c364) - تم إيقاف
LookaheadLayout
وLookaheadLayoutScope
نهائيًا في بضعة إصدارات وتمّت إزالتهما الآن. واجهات برمجة التطبيقات البديلة هيLookaheadScope
التي يمكنها العمل مع أي تنسيق. (I12ac3) - تمت إضافة
SemanticsNodeInteraction.requestFocus
كطريقة أكثر ملاءمةً وسهولةً لطلب التركيز في الاختبارات. (Ie8722) - إضافة واجهات برمجة تطبيقات تجريبية لتسجيل الافتراضات الشاملة لاستخدامها من قِبل إطارات العمل للاختبار في المستقبل (I12d77)
إصلاح الأخطاء
- سيتم الآن تأجيل أول استدعاء لردّ الاتصال
update
فيAndroidView
إلى أن يتم إرفاق العرض، بدلاً من تشغيله عند تطبيق التركيبة التي تقدّمAndroidView
. يعالج هذا الخلل مشكلة عدم إلغاء صلاحية طلب الاستدعاءupdate
في حال تغيّر حالة قرأها على الفور بسبب تأثير. (Ie9438، b/291094055)
الإصدار 1.6.0-alpha01
21 حزيران (يونيو) 2023
تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha01
. يحتوي الإصدار 1.6.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- يتيح استخدام ميزة "النظر إلى المستقبل" في
LazyList
. يسمح هذا الإجراء لعنصرLazyList
في عملية البحث عن العناصر المستقبلية بتخطّي أي صورة متحركة (مثل الصورة المتحركة لوضع العنصر وAnimatedVisibility
وما إلى ذلك) واحتساب حجم العنصر المستقبلي وموقعه لجميع العناصر الفرعية. بعد مرورLazyList
ثانية، يمكن للأطفال تحريك العناصر بشكل مستقل عن الواقع كما هو موضّح في لقطة النظر إلى المستقبل.
تغيير في السلوك: القيمة التلقائية لـ includeFontPadding هي الآن false في Compose
أصبحت قيمة includeFontPadding
الآن خطأ تلقائيًا (21d806) في ميزة "الإنشاء".
includeFontPadding
هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة إضافية فوق السطر الأول والسطر الأخير من النص أم لا لاستيعاب أي أحرف قد تمتد فوق خطوط الأساس للنص أو تحتها.
سيؤدي تعديل هذا الإصدار من ميزة "الإنشاء" إلى تعديل طريقة عرض جميع النصوص في واجهة المستخدم من خلال إزالة الحشو الإضافي في أعلى السطر الأول والسطر الأخير من كل نص تعرضه.
ويجب أن تكون التغييرات طفيفة استنادًا إلى متطلبات واجهة المستخدم ومقاييس الخطوط التي تستخدمها. ومع ذلك، قد تواجهك مشاكل مثل: - اختبارات لقطات الشاشة غير الصالحة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور الذهبية. - النص غير محاذٍ بشكلٍ كامل. أزِل أيّ مساحات تملأ المساحة الفارغة في الأعلى أو الأسفل بشكل مخصّص أو أضِف مساحة إذا لزم الأمر.
يمكنك تفعيل 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
API لاستبدالtoComposePaint
لأنّ العنصر الذي يتم إرجاعه يُغلِّفandroid.graphics.Paint
الأصلي (I22b4c). - أوقِف استخدام
SemanticsProperties.imeAction
واستبدِلها بمَعلمة جديدةSemanticsActions.performImeAction
. (I4a587) - تمت إضافة إمكانية الاختيار باستخدام الماوس. سيتم توسيع التحديد باللمس بمقدار كلمة، وتصغيره حرفًا بحرف. (Ic0c6c، b/180639271)
- إنّ طرق
Paragraph
التي كانت تُعرِض الخطأAssertionError
عند استخدام قيم الأساس خارج الحدود تُعرِض الآن الخطأIllegalArgumentException
كما تفعلMultiParagraph
. (I549d3، b/243338896)
الإصدار 1.5
الإصدار 1.5.4
18 تشرين الأول (أكتوبر) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.4
. يحتوي الإصدار 1.5.4 على هذه المراجعات.
الإصدار 1.5.3
4 أكتوبر 2023
تم إصدار androidx.compose.ui:ui-*:1.5.3
. يحتوي الإصدار 1.5.3 على هذه المراجعات.
إصلاح الأخطاء
- (b/301209788) كان تطبيق
TextField
للأوامر السابقة بشكل غير صحيح في بعض الأحيان عند التركيز على الإدخال الكوري يؤدي إلى فقدان الأحرف.
الإصدار 1.5.2
27 أيلول (سبتمبر) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.2
. يحتوي الإصدار 1.5.2 على هذه المراجعات.
إصلاح الأخطاء
- تمت إضافة حل بديل للأعطال التي تحدث عند الوصول إلى واجهة برمجة التطبيقات الخاصة بميزة "التنقّل في واجهة المستخدم" من سلسلة مهام الخلفية.
- حلّ مشكلة إضافة العقد غير المرتبطة إلى شجرة الدلالات
الإصدار 1.5.1
6 أيلول (سبتمبر) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.1
. يحتوي الإصدار 1.5.1 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما يكون
readOnly
صحيحًا. تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغييرreadOnly
من صحيح إلى خطأ أثناء التركيز. (I34a19، b/246909589)
الإصدار 1.5.0
9 آب (أغسطس) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0
. يحتوي الإصدار 1.5.0 على هذه المراجعات.
الإصدار 1.5.0-rc01
26 تموز (يوليو) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-rc01
. يحتوي الإصدار 1.5.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح عطل يحدث عند استخدام
SubcomposeLayout
داخلmovableContentOf()
.
الإصدار 1.5.0-beta03
28 حزيران (يونيو) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-beta03
. يحتوي الإصدار 1.5.0-beta03 على هذه المراجعات.
إصلاح الأخطاء
- تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصّص. (Ifb1d6)
- تم إصلاح مشكلة في العناصر القابلة للتجميع في مربّع الحوار والنافذة المنبثقة والتي يمكن أن تؤدي إلى عدم تغيير حجم النافذة الفرعية على النحو المتوقّع عند
usePlatformDefaultWidth=true
. (I112ee)
الإصدار 1.5.0-beta02
7 حزيران (يونيو) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-beta02
. يحتوي الإصدار 1.5.0-beta02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
asComposePaint
لإتاحة استخدام مثيلandroid.graphics.Paint
في أداة "الإنشاء"
إصلاح الأخطاء
- تمت إضافة واجهة برمجة التطبيقات
asComposePaint
API لاستبدال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) - تقديم واجهات برمجة تطبيقات للتحويل بين أنواع مساحات الألوان في Android وCompose (Ie7db4، b/279979665)
- تمت إضافة مَعلمة لون إلى
BasicText
للسماح بإضافة تأثيرات متحركة إلى النص أو ضبط لونه بفعالية. (Iffd88، b/246961787) - تمت إعادة تسمية
TextRange.constrain
إلىTextRange.coerceIn
. (I31be2) - تمت إضافة
TextStyle.merge(...)
محسّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تحسين أداء العديد من واجهات برمجة التطبيقات Text API التي تشمل
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) - المزيد من الاستثناءات التي تمّ طرحها من valueOf (I818fe) في التعداد
- تمّ تقديم واجهة برمجة تطبيقات
PlatformTextInputAdapter
جديدة من المستوى الأدنى لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة تطبيقات النظام الأساسي. (I58df4) - تمت إضافة المَعلمة
BlendMode
إلى الطريقتَينDrawScope.drawText
وParagraph.paint
وMultiParagraph.paint
لتتوافق مع خوارزميات دمج مختلفة عند رسم نص على "لوحة الرسم". (I57508) - أعِد تسمية
Font.MaximumAsyncTimeout
إلىFont.MaximumAsyncTimeoutMillis
. إعادة التسمية فقط (I07af5) - تم تعديل قيم كثافة البكسل لأجهزة المراجع
@Preview
(Id6151 وb/254528382) - أضِف المَعلمتَين
brush
وalpha
إلىBasicText
للسماح بإضافة تأثيرات متحركة إلى فرشاة النص أو ضبطها بفعالية. - تحديد أنواع دالة lambda غير المضمّنة في مربّع لأنواع Float وDouble وLong وInt وShort في :ui:ui-unit (I6f18d، b/246961787)
إصلاح الأخطاء
- إزالة عمليات تخصيص متعددة في تتبُّع سرعة المؤشر (I26bae)
- خفض عمليات التوزيع في إدارة إدخال التنسيق والمؤشر (I5333a)
- تحسين استخدام ذاكرة Vector وعرض اللقطات الأولى (I2f3c6)
- إزالة التخصيصات عند رسم الخطوط والنقاط باستخدام Canvas (I9f535)
- إضافة مستندات لـ
AndroidFont.fontVariationSettings
(I7d9e2)
المساهمة الخارجية
- تحسين الأداء وتقليل عمليات التوزيع في واجهات برمجة التطبيقات Vector (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) - تحسين أداء العديد من واجهات برمجة التطبيقات Text API التي تشمل
Brush
وDrawStyle
وTextMotion
وDrawScope.drawText
وParagraph.paint(Brush)
وMultiParagraph.paint(Brush)
(I2f740 وb/261581564 وb/261581931 وb/261561245) - تم إيقاف
PlatformTextStyle.includeFontPadding
نهائيًا. كان الهدف الأصلي هو إزالة الحقل، ولكن تبيّن لنا من خلال الملاحظات أنّ المطوّرين يحتاجون إلى خيار الضبط هذا. وبالتالي، تتم إزالة إيقاف الميزة نهائيًا من الحقل (I98e96، b/277703184).
إصلاح الأخطاء
- تم إصلاح مشكلة التراجع التي كانت تؤدي إلى عدم ظهور لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للتجميع
Dialog
. (I82551، b/262140644)
الإصدار 1.5.0-alpha03
19 نيسان (أبريل) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha03
. يحتوي الإصدار 1.5.0-alpha03 على هذه المراجعات.
الميزات الجديدة
- السلوك التلقائي الجديد لعنصر
SubcomposeLayout
فيLookaheadScope
:SubcomposeLayouts
التي لا تحتوي على خانات شرطية (مثلTabRow
وScaffold
وBoxWithConstraints
وما إلى ذلك) تعمل الآن بشكل جيد مع الرسوم المتحرّكة التي تستبِق المحتوى.
تغييرات واجهة برمجة التطبيقات
- إنّ القيمة التلقائية الجديدة
intermediateMeasurePolicy
التي تعيد استخدام سياسة القياس من عملية التقديم إلى الأمام تسمح لأنواعSubcomposeLayout
الفرعية التي لا تحتوي على خانات شرطية، مثلScaffold
وTabRow
وBoxWithConstraints
، بالعمل مع ميزة "النظر إلى المستقبل" تلقائيًا. (Id84c8) - سيحظر مُعاد التركيب الذي تم إنشاؤه لإحدى نوافذ Android الآن المكالمات إلى
withFrameNanos
فقط بدلاً من جميع عمليات التركيب عند تلقّيه إشعارON_STOP
. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقفة ستستمر في إعادة التركيب لتغييرات البيانات، ولكن سيتم حظر الصور المتحركة أو أي عنصر آخر يستدعيwithFrameNanos
. (Id9e7f، b/240975572) - تغييرات
motionEventSpy
إلى الإصدار الثابت (Ic5ec4، b/261560988) - تمت إضافة طريقة
TextRange.constrain
علنية. (I97912) - لم تعُد
PlatformTextStyle.includeFontPadding
متوقّفة نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة التطبيقات هذه للتوافق للتبديل إلى الإعدادincludeFontPadding
خطأ واختباره. (I98e96، b/277703184)
الإصدار 1.5.0-alpha02
5 نيسان (أبريل) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha02
. يحتوي الإصدار 1.5.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- واجهة برمجة تطبيقات
SubcomposeLayout
جديدة تتّبع سياسة قياس وسيطة إضافية لمعالجة منطق القياس/التنسيق أثناء الرسوم المتحرّكة المستندة إلى التوقّع (I017d3) - أصبح PointerInput الآن بطيئًا ويستخدم Modifier.Node لتحسين الأداء (اطّلِع على معلومات عن التغيير الطفيف في السلوك). (15dab9)
- تغيير واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة باستخدام الأحداث الرئيسية (I9c7d8، b/261566839، b/261567368)
- تغيير واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة في
PointerInputChange
(I1b543، b/261560988، b/261565762، b/261565749) - تضيف طريقة لإنشاء مثيل
SuspendingPointerInputModifierNode
لعمليات تنفيذModifier.Node
أكثر تعقيدًا. (Ic4933) - يمكن الآن فتح
UrlAnnotation
فيAnnotatedString
من خلال خدمات تسهيل الاستخدام، مثلTalkBack
. (If4d82، b/253292081) - تمت إضافة واجهة برمجة تطبيقات لمنع وصول مفاتيح الجهاز إلى لوحة المفاتيح الافتراضية (I4f4c6، b/186800395)
- تمت إضافة إجراء الدلالات
InsertTextAtCursor
للحقول النصية. (I11ed5) - ستتطلب الآن إجراءات الاختبار ذات الصلة بالنص (مثل
performTextInput
) التركيز مباشرةً باستخدام إجراء الدلالات بدلاً من النقر على الحقل. (I6ed05)
إصلاح الأخطاء
- تتطلّب إجراءات اختبار النصوص الآن تفعيل الحقول النصية. (Iab328)
الإصدار 1.5.0-alpha01
22 آذار (مارس) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha01
. يحتوي الإصدار 1.5.0-alpha01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- لا يتطلّب Modifier.intermediateLayout الآن استخدام LookaheadScope صريح. تحتوي وحدة القياس في intermediateLayout على IntermediateMeasureScope كمستلِم، ما يوفر CoroutineScope وLookaheadScope وMeasureScope بشكل ملائم.(Ibe2e5)
- تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد عنصر تنسيق. يتيح ذلك التحكّم مباشرةً في المحتوى الفرعي في LookaheadScope من خلال MeasurePolicy الخاصة بالعنصر الرئيسي. (Ibe2e5)
- تُضيف
Modifier.Node#coroutineScope
للسماح لـ Modifier.Nodes بتشغيل وظائف التشغيل المتعدّد. (I76ef9) - اسمح لـ Modifier.Nodes بقراءة CompositionLocals من خلال تنفيذ واجهة CompositionLocalConsumerModifierNode. (Ib44df)
- نشر فئة @Deprecated إلى السمة (I882d1)
الإصدار 1.4
الإصدار 1.4.3
3 أيار (مايو) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.3
. يحتوي الإصدار 1.4.3 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عرض الرمز
AndroidView
بشكل صحيح عند استخدامه مع عناصر تعديل معيّنة. (I4dc77، b/274797771) - تم إصلاح خطأ في ميزة "البحث بالتركيز ثنائي الأبعاد" كان يؤثر في
DropDown
القوائم (b/276811828) - تم إصلاح خطأ في سمات الدخول/الخروج المخصّصة للتركيز التي كانت تُشغّل كتلة الدخول/الخروج فقط في المرة الأولى التي يتم فيها استدعاء دالة lambda (b/277234245).
- تم إصلاح مشكلة تراجع في نظام التركيز أدت إلى حدوث عطل أثناء قراءة
focusProperties
. (b/271324781، b/274897776)
الإصدار 1.4.2
19 نيسان (أبريل) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.2
. يحتوي الإصدار 1.4.2 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة استخدام
AndroidView
لمُعدِّلاته بشكلٍ صحيح، ما قد يؤدي إلى حدوث سلوك غير متوقّع وأعطال. (Ib67ee، b/275919849) - تم إصلاح مشكلة التراجع التي كانت تؤدي إلى عدم ظهور لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للتجميع
Dialog
(I82551، b/262140644)
الإصدار 1.4.1
5 نيسان (أبريل) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.1
. يحتوي الإصدار 1.4.1 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح مشكلة عدم تأثُّر
AndroidView
بـParentDataModifier
(b/274797771)
الإصدار 1.4.0
22 آذار (مارس) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.0
. يحتوي الإصدار 1.4.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 1.3.0
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainer
جديدة تتيح تثبيت عناصر القائمة غير المعروضة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، يستخدمModifier.focusable()
هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881 وb/259274257 وb/195049010) - تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة
Modifier.Node
. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589) - تمت إضافتها في سمة
IsContainer
semantics على Surfaces. سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب التنقّل استنادًا إلى المعنى الدلالي للعناصر، مثل الأسطح. (I63379) - تمت إضافة دور تسهيل الاستخدام الجديد
DropdownList
. ويمكن استخدام هذا الإجراء لتكرار سلوكTalkBack
عند التركيز علىandroid.widget.Spinner
. (I177e5، b/236159001) - يمكنك الآن استخدام
PlatformTextStyle(emojiSupportMatch)
لإيقاف معالجة ميزة الرموز التعبيرية اختياريًا في فقرة واحدة. (Ia7100، b/139326806) - ستُجري اختبارات واجهة مستخدم Android Compose الآن عمليات مرور للتخطيط لكل لقطة عند تنفيذ اللقطات للوصول إلى وضع السكون (مثلاً من خلال
waitForIdle
). وقد يؤثر ذلك في الاختبارات التي تُجري تأكيدًا على لقطات فردية من الرسوم المتحرّكة للتخطيط. (I8ea08، b/222093277) - تمت إضافة
TextMotion
التجريبي إلىTextStyle
لتحديد النص على أنّهStatic(default)
أو متحرك. استخدِمTextMotion.Animated
إذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7)
الإصدار 1.4.0-rc01
8 آذار (مارس) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.0-rc01
. يحتوي الإصدار 1.4.0-rc01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة وظائف زائدة لدالة
AndroidView
القابلة للتجميع، والتي تقبل المَعلمةonReset
. ويسمح هذا الإجراء بإعادة استخدام نُسخ "العرض" عند تجاهل عقدتها في التركيب وإعادة استخدامها بطريقة متوافقة. ويُعدّ ذلك مفيدًا بشكل خاص في ما يتعلّق بLazyRows
وLazyColumns
من المشاهدات. (I3f10d، b/230099236) - تمّ تقديم واجهة برمجة تطبيقات
PlatformTextInputAdapter
جديدة من المستوى الأدنى لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة تطبيقات النظام الأساسي. (I58df4)
إصلاح الأخطاء
- سيؤدي الآن إجراء الدلالات
SetText
فيBasicTextField
إلى تعديل مخزن النصوص باستخدام مسار الرمز البرمجي نفسه الذي تستخدمه تعديلات IME ودوال الاختبار (مثلperformTextReplacement
). - تستخدم الآن دوال اختبار النصوص
performTextClearance
وperformTextReplacement
وperformTextSelection
الرمزSemanticsActions
. (I0807d، b/269633168، b/269624358)
الإصدار 1.4.0-beta02
22 شباط (فبراير) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.0-beta02
. يحتوي الإصدار 1.4.0-beta02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات
modifierElementOf()
. يُرجى التمديد منModifierNodeElement
مباشرةً بدلاً من ذلك. (I2256b) - تمت إضافة طلب استدعاء
Modifier.Node.onReset()
جديد يتيح لك إعادة ضبط بعض الحالات المحلية للتعامل بشكل صحيح مع الحالة التي ستتم فيها إعادة استخدامLayout
(على سبيل المثال، كعنصر منLazyColumn
). تم إصلاحFocusTargetModifierNode
لإعادة ضبط الحالة التي تم التركيز عليها بشكل صحيح. (I65495، b/265201972) - تمت إضافة المَعلمة
BlendMode
إلى الطريقتَينDrawScope.drawText
وParagraph.paint
وMultiParagraph.paint
لتتوافق مع خوارزميات دمج مختلفة عند رسم نص على "لوحة الرسم". (I57508)
إصلاح الأخطاء
- تم تحسين خوارزمية ترتيب التركيز في تسهيل الاستخدام، على سبيل المثال، يتم قراءة الأشرطة العلوية/السفلية أولاً/أخيرًا في أغلب الأحيان على التوالي (74e9c5).
الإصدار 1.4.0-beta01
8 شباط (فبراير) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.0-beta01
. يحتوي الإصدار 1.4.0-beta01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
PinnableContainer.PinnedHandle.unpin()
إلىrelease()
(I4667a) - تمت إضافة
waitUntilNodeCount
وwaitUntilAtLeastOneExists
وwaitUntilExactlyOneExists
وwaitUntilDoesNotExist
كواجهات برمجة تطبيقات تجريبية إلىComposeTestRule
، ما سمح بتوسيع نطاق واجهة برمجة التطبيقاتwaitUntil
لقبول أي مطابق وعدد من العقد. يُرجى الاطّلاع علىComposeTestRule
للحصول على المزيد من المستندات. (Ifa1b9، b/226934294) - أعِد تسمية
Font.MaximumAsyncTimeout
إلىFont.MaximumAsyncTimeoutMillis
. (I07af5) - تمت إزالة
GoogleFont.Provider.AllFontsListUri
وتم الربط بها في ktdoc بدلاً من ذلك. (I16f29)
إصلاح الأخطاء
- إضافة مستندات لـ
AndroidFont.fontVariationSettings
(I7d9e2)
الإصدار 1.4.0-alpha05
25 كانون الثاني (يناير) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha05
. يحتوي الإصدار 1.4.0-alpha05 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة وظائف متعدّدة جديدة تجريبية لدالة
runComposeUiTest
ودالةcreate*ComposeRule
اللتين تقبلان مَعلماتCoroutineContext
. سيتم استخدام السياق لتركيبة الاختبار وأيّ طلباتLaunchedEffect
وrememberCoroutineScope()
في التركيبة. (I10614، b/265177763) - إضافة واجهة برمجة تطبيقات جديدة لتتبُّع سرعة أحادية البعد (If5a82)
- تم وضع علامة
@Stable
علىFocusRequester
. (I580ee) - أزِل تعليقًا توضيحيًا تجريبيًا من أداة إنشاء
DialogProperties
التي تأخذ مَعلمةusePlatformDefaultWidth
. (Ic4048) - تمّت إضافة دالة لاحتساب موضع وظلّ خط على مسافة في مسار مع
PathMeasure.getPosition()
وPathMeasure.getTangent()
(I3b47c). - تمت إزالة الإعداد العلني الذي تم عرضه عن طريق الخطأ في
PlatformParagraphStyle
. (I07f47) - المزيد من أنواع/قيم القيمة الخالية للدوالّ المضمّنة/المخفية غير المُستخدَمة (I24f91)
- أضِف
AnnotatedString.hasStringAnnotations
للبحث عن التعليقات التوضيحية التي لا تحتوي على أيّ تخصيصات. (I94dfe، b/246960758) - تمت إضافة طريقة تحميل زائدة جديدة لدالة
TextMeasurer.measure
التي تأخذString
كنص. (I47b2d، b/242705342) - تم ترقية واجهات برمجة التطبيقات
LineBreak
وHyphens
في TextStyle إلى الإصدار الثابت. (Ic1e1d)
المساهمة الخارجية
- لن يتم إيقاف استخدام طرق
notifyFocusedRect
فيTextInputSession
وTextInputService
نهائيًا مرة أخرى. (I23a04، b/262648050)
الإصدار 1.4.0-alpha04
11 كانون الثاني (يناير) 2023
تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha04
. يحتوي الإصدار 1.4.0-alpha04 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة واجهة برمجة تطبيقات
PinnableContainer
جديدة تتيح تثبيت عناصر القائمة غير المعروضة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، يستخدمModifier.focusable()
هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881 وb/259274257 وb/195049010) - تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة
Modifier.Node
. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589) - تمت إضافتها في سمة
IsContainer
semantics على Surfaces. سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب التنقّل استنادًا إلى المعنى الدلالي للعناصر، مثل الأسطح. (I63379) - تمت إضافة دور تسهيل الاستخدام الجديد
DropdownList
. ويمكن استخدام هذا الإجراء لتكرار سلوكTalkBack's
عند التركيز علىandroid.widget.Spinner
. (I177e5، b/236159001) - يمكنك الآن استخدام
PlatformTextStyle(emojiSupportMatch)
لإيقاف معالجة ميزة الرموز التعبيرية اختياريًا في فقرة واحدة. (Ia7100، b/139326806) - ستُجري اختبارات واجهة مستخدم Android Compose الآن عمليات مرور للتخطيط لكل لقطة عند تنفيذ اللقطات للوصول إلى وضع السكون (مثلاً من خلال
waitForIdle
). وقد يؤثر ذلك في الاختبارات التي تُجري تأكيدًا على لقطات فردية من الرسوم المتحرّكة للتخطيط. (I8ea08، b/222093277) - تمت إضافة
TextMotion
التجريبي إلىTextStyle
لتحديد النص على أنّهStatic(default)
أو متحرك. استخدِمTextMotion.Animated
إذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7)
تغييرات واجهة برمجة التطبيقات
- تم استبدال وسيطة
maxSize: IntSize
فيdrawText
بـsize: Size
لتصبح متوافقة مع دوالDrawScope
الأخرى. يتم ضبطsize
علىSize.Unspecified
تلقائيًا، ما من شأنه تغيير السلوك التلقائي السابق. (Icd27d) - تمت إزالة أداة إنشاء الخطوط التجريبية المتوقّفة نهائيًا. (I8a724، b/261435386)
- تحتوي فئة بيانات أدوات واجهة المستخدم
Group
الآن على حقلisInline
يشير إلى ما إذا كانت المجموعة مخصّصة لاستدعاء دالة قابلة للتجميع مضمّنة. إذا كانisInline
هوtrue
، تكون المكالمة موجّهة إلى دالة قابلة للتجميع مضمّنة. ومع ذلك، قد تكون القيمة خطأ لطلبات الدوال المُركّبة المضمّنة التي تأتي من وحدات تم تجميعها باستخدام إصدار من المكوّن الإضافي لمجمّع الإنشاء الذي لا يُنشئ معلومات الدالة المضمّنة. (Idb846) - طرح عدد من واجهات برمجة التطبيقات التجريبية سابقًا كإصدارات رسمية
- أصبحت واجهة برمجة التطبيقات Rotary Scroll Event API مستقرة الآن (I42ad3، b/261561229).
FontVariation
أصبحت واجهة برمجة التطبيقات الآن ثابتة (I8779f، b/241016309)- أصبحت جميع وظائف إنشاء
Font()
واجهة برمجة تطبيقات ثابتة الآن (I5948b وb/261435386). - أصبح الإصدار
DeviceFontFamilyName
ثابتًا الآن (I8b640، b/261435386). - أصبحت دالة الإنشاء
AndroidFont
معvariationSettings
الآن واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من أوصاف الخطوط. (I5adcc، b/261565807) - أصبحت واجهة برمجة التطبيقات
createFontFamilyResolver
مستقرة الآن. يمكن استخدام هذا الإجراء لرصد الاستثناءات غير التي تمّ رصدها أثناء تحميل الخطوط غير المتزامنة. (Ibb481، b/261435386) - أصبحت واجهة برمجة التطبيقات
Font.loadingStrategy
مستقرة الآن. (I5937c، b/261435386) - أصبحت واجهة برمجة التطبيقات
GoogleFont
مستقرة الآن. (Ic90b0، b/261435386) - أصبحت
TextUnit(float, TextUnitType)
الآن واجهة برمجة تطبيقات ثابتة. (I90c84، b/261561612) - أصبحت
pluralStringResource
الآن واجهة برمجة تطبيقات ثابتة. (I09849، b/261439703)
الإصدار 1.4.0-alpha03
7 كانون الأول (ديسمبر) 2022
تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha03
. يحتوي الإصدار 1.4.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ExperimentalComposeUiApi
منPointerIcon
(I23af8) - أدرِج إجراءات تسهيل الاستخدام في الصفحة:
PageUp
وPageDown
وPageLeft
وPageRight
. يُرجى العلم أنّ هذه العناصر لا تتوفّر إلا من واجهة برمجة التطبيقات 29. (Ida4ab) - تم تعديل طريقة عرض المَعلمة
rememberNestedScrollConnection
من طريقة العرض الجذر إلى طريقة عرض المضيف. (Ia5200) - تمت إضافة واجهة برمجة تطبيقات Modifier API لطلب معلومات عن الانتقال للأعلى أو للأسفل في الصفحة. (I2ba9d، b/203141462)
- تُستخدَم في
Clickable
لتأخير التفاعلات الناتجة عن الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث انتقال. - تم إصلاح مشكلة عدم تأخير
Clickables
للتأثيرات المتموّجة بشكلٍ صحيح عند استخدامها داخلScrollable ViewGroup
. - تم تعديل الأدراج واللوحات لتأخير الضغطات بشكل صحيح في حال إمكانية أن تصبح الإيماءات أحداث تنقّل.
- تمت إعادة تسمية
CompositingStrategy.Always
إلىOffscreen
للإشارة إلى أنّه سيتم دائمًا عرضgraphicsLayer
في ذاكرة تخزين مؤقتة وسيطة (I47dc1). - أصبح الأداء الآن ثابتًا في ما يتعلّق بزيادة عدد مساحات المحتوى في التنسيق (I10566، b/248294649).
- تمت إضافة واجهات برمجة التطبيقات الجديدة والتجريبية
PerfettoTrace.record {}
وPerfettoTraceRule
لتسجيل عمليات تتبُّع Perfetto (المعروفة أيضًا باسم عمليات تتبُّع النظام) كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16) - في اختبارات واجهة المستخدم التي تستخدِم قاعدة Compose، لن يتم إرسال عمليات المتابعة التي تم استئنافها أثناء عمليات استدعاء
withFrameNanos
إلا بعد انتهاء تنفيذ جميع عمليات استدعاء الإطارات. ويطابق هذا السلوك سلوك ميزة "الإنشاء" عند تشغيلها بشكلٍ طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. من المفترض ألا يؤثر ذلك إلا في الرمز البرمجي الذي يستدعيwithFrameNanos
أوwithFrameMillis
مباشرةً، والذي يتضمّن منطقًا خارج ردّ الاتصال ويتم تمريره إلى تلك الدوالّ التي قد تحتاج إلى نقلها داخل دوالّ ردّ الاتصال. اطّلِع على التغييرات في اختبار الصور المتحركة في هذا الإصدار من الإصدار العلني للحصول على أمثلة. - تمت إضافة المَعلمة الاختيارية
onPerformTraversals: (Long) -> Unit
إلى دالة الإنشاءTestMonotonicFrameClock
ودالة المصنع لتشغيل الرمز البرمجي بعد وظائف ردّ الاتصالwithFrameNanos
ولكن قبل استئناف عمليات التشغيل المتعدّد للوظائف المجدولة للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670) - تمت إضافة EmojiCompat إلى ميزة "الإنشاء" (Ibf6f9، b/139326806)
- تمت إضافة مَعلمة خلفية جديدة إلى
@Preview
لإتاحة الألوان الديناميكية (I9f512)
إصلاح الأخطاء
- يتم الآن إرسال إشعارات تطبيق اللقطات بعد انتهاء
Recomposer
من تطبيق التغييرات. (Iad6c0، b/222093277) - تم إدخال تغييرات في
captureToImage
للسماح بالتقاط لقطات شاشة متعددة النوافذ. يكون ذلك مفيدًا لاختبارات لقطات الشاشة التي تستخدم النوافذ المنبثقة لإنشاء الرسائل. (I169c5)
تعديلات على التبعيات
- يعتمد Compose UI وCompose Material الآن على 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
. يحافظ الوضع التلقائي على السلوك التلقائي الذي يستفيد داخليًا من طبقة إذا تم تطبيق شفافية أوRenderEffect/Overscroll
. سيقدّم "أبسط رسم" دائمًا مساحة تخزين مؤقتة خارج الشاشة حيث سيتجنّبModulateAlpha
الاستفادة من مساحة تخزين مؤقتة خارج الشاشة، وسيعدّل بدلاً من ذلك كل تعليمات الرسم المسجّلة ضمنgraphicsLayer
. سيظل استخدامModulateAlpha
يستفيد من ذاكرة تخزين مؤقت غير مرئية لعمليات استخدامRenderEffect/Overscroll
(I25e82 وb/256382834) - تمت إضافة
invalidateSubtree()
إلىModifier.Node
للسماح بإبطال التسلسلات الهرميّة بالكامل للتخطيط والرسم. (I4bd90) - ترقية الإصدار
rememberNestedScrollInteropConnection
إلى الإصدار الثابت تمّت إضافة إمكانية تمرير طريقة عرض الجذر إلىrememberNestedScrollInteropConnection
. يمكن أن يساعد ذلك العرض المخصّص على الاستجابة بشكل أفضل لقيود الانتقال للأعلى أو للأسفل، خاصةً في طرق العرض غير العادية (مثلModalBottomSheetDialog
). (I9e107) - تمت إضافة واجهة
ObserverNode
التي يمكن استخدامها من خلال عمليات تنفيذModifier.Node
التي يجب إعلامها عند تغيير قيمة سبق أن قرأتها (I5728b، b/247716483) - تمت إضافة مُنشئ جديد إلى
Paint
يقبلandroid.graphics.Paint
أصليًا. تمت أيضًا إضافة دالة إضافةtoComposePaint()
التي تحوّل عنصر Paint أصليًا حاليًا إلى Compose Paint. (Ica91b) - إضافة
FontFamily.Resolver.resolveAsTypeface
جديد لاستخدامه على Android (I8950b) - أضِف
ToolingState
للسماح للأدوات بتغيير الحالات الداخلية لـ Composable (Ie6614). - إعادة صياغة الأدوات لتوفير دعم أفضل للرسوم المتحرّكة الجديدة المُضافة (I8677b)
- تمت إضافة المَعلمة
minLines
إلى Text وTextField
وOutlinedTextField
في material وmaterial3، ما يسمح بضبط الحد الأدنى لارتفاع المكوّن من حيث عدد الأسطر (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
) - تحسين دعم الأجزاء المُدمَجة من النوافذ
- إتاحة التركيز على لوحات D-Pad ولوحات المفاتيح في LazyLists
- تم خفض الحد الأقصى المسموح به للارتفاع في مربّعات الحوار والنوافذ المنبثقة إلى 8dp (تغيير يؤثر في السلوك لبعض أنظمة التصميم المخصّصة - السبب في ملاحظات الإصدار beta01)
- العديد من التحسينات البسيطة غير المؤثرة في واجهة برمجة التطبيقات
- العديد من الإصلاحات للأخطاء وتحسينات الأداء
الإصدار 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 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة حمولة زائدة تجريبية لـ Layout تقبل قائمة بالعديد من لامدا للمحتوى القابل للتجميع، ما يسمح بمعالجة المقاييس التي تم وضعها في لامدا مختلفة للمحتوى بشكل مختلف (Ic1b4e)
التغييرات على واجهات برمجة التطبيقات التجريبية في Focus:
- تم إيقاف
FocusDirection.In
وFocusDirection.Out
نهائيًا واستبدالهما بـFocusDirection.Enter
وFocusDirection.Exit
. (Ia4262، b/183746982) - تمت إضافة سمتَي تركيز جديدتَين للدخول والخروج لتحديد سلوك مخصّص ل
FocusManager.moveFocus(Enter)
وFocusManager.moveFocus(Exit)
. (I5f3f9، b/183746982) - يمكنك الآن استخدام
FocusRequester.Cancel
لإلغاء نقل التركيز. يمكن استخدامFocusRequester.Cancel
في أيّ من سمات التركيز التالية: للأعلى أو للأسفل أو لليسار أو لليمين أو التالي أو السابق أو البداية أو النهاية أو الدخول أو الخروج. (Ib300f)
الإصدار 1.3.0-beta01
24 آب (أغسطس) 2022
تم إصدار androidx.compose.ui:ui-*:1.3.0-beta01
. يحتوي الإصدار 1.3.0-beta01 على هذه المراجعات.
إعادة صياغة عقدة المُعدِّل
تمّت إعادة صياغة الطبقة التي تتعامل مع نُسخ Modifier/Modifier.Element
وتنظّم سلوكها على LayoutNodes
بشكلٍ كبير. في الوقت الحالي، كان هذا الإجراء عبارة عن إعادة تنظيم لم يؤثّر في واجهة برمجة التطبيقات المتاحة للجميع لأي من المُعدِّلات العديدة في أداة "الإنشاء"، ويمكن اعتباره تغييرًا في التنفيذ فقط. ومع ذلك، هذا تغيير مهم لأسباب مختلفة. (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، ولضمان أن تكون خدمات تسهيل الاستخدام داخل هذه النوافذ قادرة على التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.
لن يتأثّر هذا التغيير إلا إذا كنت بصدد إنشاء مربّع حوار مخصّص أو تنفيذ نافذة منبثقة تم ضبط ارتفاعها على مستويات أعلى من 8dp. ننصحك بخفض ارتفاع مربّع الحوار أو النافذة المنبثقة. إذا كنت بحاجة إلى إيقاف هذا السلوك الجديد، ننصحك بإنشاء نسخة من مربّع الحوار أو النافذة المنبثقة مع ضبط الارتفاع المطلوب. لا يُنصح بذلك، لأنّ سهولة الاستخدام قد تتأثر سلبًا، وعلى المطوّر التأكّد من أنّ الجزء السفلي من مربّع الحوار أو النافذة المنبثقة يمكن التفاعل معه وقراءته من خلال خدمات تسهيل الاستخدام.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة عدم تعديل
painterResource
عند إجراء تغييرات على الإعدادات (I58e73، b/228862715) - لم تعُد الدالة
rememberTextMeasurer
تقبل المَعلماتFontFamily.Resolver
أوDensity
أوLayoutDirection
. يُرجى استخدام أداة الإنشاءTextMeasurer
لتقديم قيم مخصّصة لهذه المَعلمات. (Ia1da3) - تمت إضافة السمة
DialogProperties.decorFitsSystemWindows
للسماح لمربّعات الحوار باستخدامWindowInsets
. (I57742، b/229378542) - تم نقل منشئي الخطوط إلى ملف kotlin الأصلي للحفاظ على التوافق الثنائي. لم يحدث أي تغيير مقارنةً بالإصدار الثابت الأخير. (Ieb2f3)
- تمّت إزالة عامل تشغيل غير ضروري من عدّة تعريفات متساوية، ولن يؤدّي ذلك إلى أيّ تأثير. (I6c309)
FontVariation.Setting
هي واجهة مغلقة للسماح بواجهات برمجة تطبيقات الالتقاط في المستقبل. (I11021، b/143703328)- أضِف
CompositionGroup.findParameters
إلىSlotTree.kt
. يتيح ذلك للأدوات استرداد مَعلماتCompositionGroup
بدون الحاجة إلى تحليل جدول الفتحات بالكامل. (I124fe)
الإصدار 1.3.0-alpha03
10 آب (أغسطس) 2022
تم إصدار androidx.compose.ui:ui-*:1.3.0-alpha03
. يحتوي الإصدار 1.3.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أصبحت
LayoutCoordinates.findRootCoordinates()
علنية الآن (I7fa37، b/204723384) - تمت إضافة واجهة برمجة تطبيقات تجريبية للحصول على
LayoutCoordinates
فيPlacementScope
. يتيح ذلك للمطوّرين معرفة موضع التنسيق الحالي لوضع العناصر الثانوية بالنسبة إلى موضعه. (I5482b، b/238632578) - تمت إضافة
LayoutCoordinates.transformFrom
للحصول على تحويل المصفوفة منLayoutCoordinates
إلى آخر. (Ic5ab1، b/238632578) - تم إيقاف العنصر
SemanticsModifier.id
نهائيًا وتم نقل معرّف الدلالات إلىLayoutInfo.semanticsId
بدلاً من ذلك. (Iac808، b/203559524) - تتيح "الخطوط من الموارد" الآن ضبط إعدادات الصيغ المختلفة للخطوط (الإصدار 26 من واجهة برمجة التطبيقات والإصدارات الأحدث). (I900dd، b/143703328)
- إتاحة الخطوط المتغيّرة في
DeviceFontFamilyNameFont
(Ic1279، b/143703328) - تقبل الآن أدوات إنشاء الخطوط قائمة
FontVariation.Setting
لضبط الخطوط المتغيرة على أجهزة Android 10 والإصدارات الأحدث. (I11a9d، b/143703328) - إضافة واجهة برمجة تطبيقات
FontVariation
لتحديد الخطوط المتغيّرة واستخدامها (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
في حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 1.3.0-alpha02
27 تموز (يوليو) 2022
تم إصدار androidx.compose.ui:ui-*:1.3.0-alpha02
. يحتوي الإصدار 1.3.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة سمة جديدة
PointerInputChange#pressure
لاسترداد الضغط. (I45a5e، b/205164819) - تمت إضافة
rememberTextMeasurer
لإنشاء نُسخTextMeasurer
بسهولة وتذكرها في الإنشاء. (I8d66e) - تتيح الآن
Rect
وRoundRect
وMutableRect
بنيةin
في Kotlin لاستدعاء الدالةcontains
. (Ie42b0، b/238642990) - أزِل الدوال غير الضرورية من
KeyInjectionScope
، لأنّه يمكن تنفيذها بسهولة باستخدام أجزاء أبسط من واجهة برمجة التطبيقات. تشمل الدوال التي تمّت إزالتهاpressKeys
وkeysDown
وkeysUp
. (I81d77) - تمّت إعادة صياغة أسماء الثوابت والمَعلمات في
KeyInjectionScope
لتضمين اللاحقة "Millis" حيث تكون وحدات الثوابت والمَعلمات المذكورة هي المللي ثانية. (Iabef5) - تمت إضافة طريقة
toStringForLog()
إلىEditCommand
للمساعدة في تحديد مشاكل تعديل النص وحلّها. (I53354، b/228862731) - تمت إضافة دالة إضافة
drawText
إلىDrawScope
لتوفير طريقة لرسم نص بأشكال متعددة على العناصر القابلة للتجميع والمُعدِّلات التي تعمل علىDrawScope
مثلCanvas
وdrawBehind
. (I16a62، b/190787898) - تقديم واجهة برمجة تطبيقات تجريبية جديدة تُسمى
TextMeasurer
تتيح احتساب تنسيق نص عشوائي ينتج عنه نتائج مطابقة لBasicText
، مستقلة عن وقت تشغيل Compose (I17101) - أضِف
mapTree
إلىSlotTree.kt
. يتيح ذلك للأدوات فحصSlotTree
بدون إنشاء نسخة في الذاكرة أولاً كما يفعل asTree. بالنسبة إلى "أداة فحص التصميم"، يؤدي ذلك إلى تحسين الأداء بمقدار عشرة أضعاف تقريبًا. (I5e113) - تم تغيير ميزة "معاينة الإنشاء" لتتم تخزينها في ملفات الإخراج الثنائية، وذلك للسماح للمطوّرين بكتابة التعليقات التوضيحية
MultiPreview
وإعادة استخدامها من المكتبات. (I85699، b/233511976)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChange
إلى خدمة تتبُّعVelocity
، سنأخذ في الاعتبار الآن القيم المتزايدة بدلاً من مواضع العناصر، ما يضمن احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا كان العنصر المستهدَف يتحرك (Icea9d وb/216582726 وb/223440806 وb/227709803). - إصلاح الخطأ "عدم توفّر مثيل للعنصر" الذي يسببه
AnnotatedString.toUpperCase
عند توفّر تعليقات توضيحية (I0aca2، b/210899140)
الإصدار 1.3.0-alpha01
29 حزيران (يونيو) 2022
تم إصدار androidx.compose.ui:ui-*:1.3.0-alpha01
. يحتوي الإصدار 1.3.0-alpha01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
LookaheadLayout
جديدة تتيح إجراء عملية فحص مسبق قبل الإجراء/التنسيق الفعلي يتيح ذلك إجراء حساب مسبق للتنسيق عند تغييره، مع السماح للقياس/التنسيق بعد النظر إلى المستقبل باستخدام الحجم/الموضع المحسوبَين مسبقًا لتحريك الحجم والمواضع نحو الهدف. لا تتوفّرSubcomposeLayouts
بعد، ولكن سيتم توفيرها في إصدار قادم. (I477f5)- أضِف مَعلمة ألفا اختيارية إلى أسلوب الفرشاة
TextStyle
وSpanStyle
لتعديل مستوى الشفافية فيText
بالكامل. (Ic2fac، b/234117635) - تمّ تقديم نوع التعليق التوضيحي
UrlAnnotation
والأساليب المرتبطة به لإتاحة ربطTalkBack
فيAnnotatedString
. (I1c754، b/231495122) - نقل وظيفة الأداة إلى وقت التشغيل (I4f729)
إصلاح الأخطاء
- لا يتم طرح
TextLayoutResult.getLineForOffset
. (Idc5d6، b/235876324)
المساهمة الخارجية
- تمت إضافة واجهة برمجة تطبيقات جديدة
WindowInfo.keyboardModifiers
لمراقبة حالتها ضمن الدوالّ القابلة للتجميع أو من خلال snapshotFlow (Icdb8a).
الإصدار 1.2
الإصدار 1.2.1
10 آب (أغسطس) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.1
. يحتوي الإصدار 1.2.1 على عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح خطأ nullpointer في أداة الفحص (b/237987764)
- تم إصلاح استثناء تحويل الفئة أثناء التذكر في أداة الفحص (b/235526153)
الإصدار 1.2.0
27 تموز (يوليو) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0
. يحتوي الإصدار 1.2.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 1.1.0
تحسينات على التنقّل في التركيز:
- يعمل الآن الانتقال في القوائم البطيئة بالتركيز، وذلك باستخدام واجهة برمجة التطبيقات الأساسية الجديدة
BeyondBoundsLayout
. - واجهات برمجة تطبيقات جديدة لتخصيص السلوك في
FocusOrder
وFocusProperties
- سلوك محسَّن باستخدام لوحة المفاتيح الخارجية أو جهاز التحكّم عن بُعد في التلفزيون
- يعمل الآن الانتقال في القوائم البطيئة بالتركيز، وذلك باستخدام واجهة برمجة التطبيقات الأساسية الجديدة
واجهات برمجة تطبيقات جديدة لخدمة:
- أقسام النافذة
- العناصر الأساسية للرسوم المتحركة المستندة إلى الإيماءات والرسوم المتحركة التي لا تنتهي والرسوم المتحركة للتخطيط
- إمكانات
GraphicsLayer
، بما في ذلكRenderEffect
العديد من الإصلاحات للأخطاء وتحسينات الأداء
الإصدار 1.2.0-rc03
29 حزيران (يونيو) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-rc03
. يحتوي الإصدار 1.2.0-rc03 على هذه المراجعات.
- لم يتم إجراء أي تغييرات منذ الإصدار 1.2.0-rc02.
الإصدار 1.2.0-rc02
22 حزيران (يونيو) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-rc02
. يحتوي الإصدار 1.2.0-rc02 على هذه المراجعات.
الإصدار 1.2.0-rc01
15 حزيران (يونيو) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- يتم الآن إنشاء الواجهات في مكتبات Compose باستخدام طرق الواجهات التلقائية في 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" المتوافقة مع Android. - تحسين رسائل الخطأ التي يتم إعادة رميها عند تعذُّر تحميل GoogleFonts في وضع "الإنشاء" (I0416c)
إصلاح الأخطاء
- عند إضافة أحداث
InputEventChange
إلى أداة تتبُّع السرعة، سنأخذ الآن في الاعتبار الاختلافات بدلاً من المواضع، ما سيضمن احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا كان العنصر المستهدَف يتحرك (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
، مرِّر الاختبار كتعبير لاmda إلىrunComposeUiTest
، واستخدِم methods والعناصر في نطاق المستلِمComposeUiTest
، وهي العناصر نفسها المُستخدَمة فيComposeContentTestRule
.تتم إضافة
interface AndroidComposeUiTest
وfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
المخصّصَين لنظام التشغيل Android لتوفير إمكانية الوصول إلى النشاط الأساسي، على غرارAndroidComposeTestRule
. وللتحكّم بشكل أكبر، يمكنك إنشاء مثيل لمحاولةclass AndroidComposeUiTestEnvironment
بنفسك.عملية التنفيذ على الكمبيوتر المكتبي هي
class DesktopComposeUiTest
، ولكن لا يتم حاليًا استخدام الدوالّ الخاصة بتشغيل الكمبيوتر المكتبي.يمكن نقل اختبار من
ComposeTestRule
إلىComposeUiTest
على النحو التالي (مثال على Android). من:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
إلى:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
في الوقت الحالي، لا تمتد
ComposeContentTestRule
وComposeTestRule
منComposeUiTest
، ما يعني أنّه لا يمكن استدعاء وظائف الإضافات فيComposeUiTest
بعد في واجهةTestRule
. عندما تصبحComposeUiTest
واجهة برمجة تطبيقات ثابتة، سيتم تغييرComposeContentTestRule
وComposeTestRule
لتصبحا متاحتَين منComposeUiTest
. (Ib4e90)تمت إعادة تسمية
LineHeightBehavior
ليصبحLineHeightStyle
تمت إعادة تسمية
LineVerticalAlignment
ليصبحLineHeightStyle.Alignment
تمت إعادة تسمية
LineHeightTrim
إلىLineHeightStyle.Trim
تمت إزالة قيم المُنشئ التلقائية من
LineHeightStyle
(I582bf وb/181155707).تمت إضافة
Brush
إلىTextStyle
وSpanStyle
لتوفير طريقة لرسم نص باستخدام ألوان متدرجة. (I53869، b/187839528)تم تغيير سمتَي
trimFirstLineTop
وtrimLastLineBottom
فيLineHeightBehavior
إلى سمة مصنّفة واحدة:LineHeightTrim
. تحتوي السمةLineHeightTrim
على قيم 4 حالات محدّدة بعنصرَين منطقيَّين:FirstLineTop
وLastLineBottom
وكلاهما وبدون (Ifc6a5 وb/181155707)تمت إضافة
LineHeightBehavior
إلىTextStyle
وParagraphStyle
. تتحكّم السمةLineHeightBehavior
في ما إذا كان سيتم تطبيق ارتفاع السطر على أعلى السطر الأول وأسفل السطر الأخير. ويحدِّد أيضًا محاذاة السطر في المساحة التي يوفّرهاTextStyle(lineHeight)
.على سبيل المثال، من الممكن الحصول على سلوك مشابه لما تحدّده CSS من خلال
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.لا تعمل إعدادات
trimFirstLineTop
وtrimLastLineBottom
بشكل صحيح إلا عندما تكون قيمةincludeFontPadding
خطأ. (I97332، b/181155707)تم تغيير الدالتَين
PlatformParagraphStyle.lerp
وPlatformSpanStyle.lerp
لتكونا دوالّ على مستوى أعلى (I9a268).
إصلاح الأخطاء
- تشير مستندات
PointerInputChange::copy
الآن بشكل صحيح إلى أنّها نسخة سطحية. (I182f5) - السماح بعرض علامة الحذف الإيجازي عندما يكون الارتفاع محدودًا ولا يناسب جميع أسطر النص (Ie528c، b/168720622)
- تم تفعيل الإعداد التلقائي
includeFontPadding
. من الممكن إيقافincludeFontPadding
باستخدام سمةTextStyle.platformTextStyle
. سنغيّر السلوك التلقائي في المستقبل القريب، ولكن إلى ذلك الحين، سيتيح لنا هذا الإجراء دمج تحسينات على ارتفاع السطر بشكل أفضل (aosp/2058653) وحلّ مشاكلTextField
الاقتصاص. (I01423، b/171394808)
المساهمة الخارجية
- تم الآن عكس
MouseInjectionScope.scroll(delta = someDelta)
على Android في حال الانتقال عموديًا (إذا كانت someDelta موجبة، سيتم الانتقال للأسفل) (Ifb697، b/224992993)
الإصدار 1.2.0-alpha08
20 نيسان (أبريل) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha08
. يحتوي الإصدار 1.2.0-alpha08 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة على دوال
pluralStringResource
باعتبارها تجريبية للسماح بالتطور لدعم النشر على مستوى العالم بشكل أفضل في المستقبل. (If24e4) - تقبل الآن كلّ من Paragraph وMultiParagraph مَعلمة Constraints. لا يؤدي تمرير القيمة
Constraints.maxHeight
إلى إجراء أيّ عملية في الوقت الحالي، ولكنّه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل اقتطاع النص استنادًا إلى الارتفاع. (I6afee، b/168720622) - يقبل
SubcomposeSlotReusePolicy.getSlotsToRetain()
الآن فئة مخصّصة تشبه MutableSet لا تسمح بإضافة عناصر جديدة إليها. (Icd314) - أصبح رمز المؤشر الآن واجهة
@Stable
(I9dafe). - تم إيقاف الاستهلاك الجزئي (الانخفاض أو الموضع) نهائيًا في
PointerInputChange
. يمكنك استخدامconsume()
لاستخدام التغيير بالكامل. يمكنك استخدامisConsumed
لتحديد ما إذا كان شخص آخر قد استخدَم التغيير في السابق أم لا. PointerInputChange::copy()
يُنشئ الآن دائمًا نسخة سطحية. ويعني ذلك أنّه سيتم استخدام نُسخ منPointerInputChange
بعد استخدام إحدى النُسخ. إذا أردت إنشاءPointerInputChange
غير مرتبط، استخدِم طريقة الإنشاء بدلاً من ذلك. (Ie6be4، b/225669674)- فعِّل إمكانية التشغيل التفاعلي لميزة "التمرير المتداخل" بين "الإنشاء" و"العرض" في الاتجاه "الإنشاء" > "العرض". وهذا يعني أنّ العنصر الرئيسي للإنشاء سيتمكّن من تلقّي قيم تغيُّر التنقّل المتداخل من عرض التنقّل المتداخل. (If7949، b/174348612)
SemanticsProperty testTagsAsResourceId
جديدة، يمكن استخدامها لجعل ميزة "الإنشاء" متوافقة مع اختبارات UIAutomator المصمّمة لنظام View (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). - فعِّل إمكانية التشغيل التفاعلي لميزة "الانتقال المتداخل" بين View وCompose لفئات View التي تتعاون مع بعضها. وهذا يعني أنّه يمكن الآن لميزة "الإنشاء" إرسال بيانات اختلافات الانتقال إلى أعلى أو أسفل الصفحة إلى عنصر عرض رئيسي (متعاون). (I5d1ac، b/174348612)
- تم تعديل
FontFamily.Resolver
لدمج إعداد تسهيل الاستخدام للنص الغامق على مستوى النظام (I6c1e7) - تم إيقاف
Font(AssetManager, String, ...)
نهائيًا واستبداله بـFont(String, AssetManager, ...)
. هذه واجهة برمجة تطبيقات تجريبية. (I1c7a4) - أضِف وصف خط جديد
Font(DeviceFontFamilyName)
للبحث اختياريًا عن الخطوط المثبَّتة على النظام أثناء سلاسل الخطوط الاحتياطية. (I30468، b/219754572) - تمت إضافة إعدادات توافق مؤقتة لـ
includeFontPadding
في TextStyle/ParagraphStyle. يمكن تغييرincludeFontPadding
من خلالTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. هذا خيار إعداد مؤقت لتفعيل نقل البيانات وسيتمّت إزالته. (If47be، b/171394808) - يمكنك إضافة إضافة
GoogleFont.Provider.isAvailableOnDevice
للحصول على مساعدة في تصحيح الأخطاء. (I64e31) - أضِف
GoogleFont.Provider
لإنشاء عنصر@ArrayRes
(Ic5ee1، b/225984280) - تم تغيير اسم
Compose GoogleFont
إلىFont(GoogleFont)
، وتظل واجهة برمجة التطبيقات مستقرة في حال عدم إجراء هذا التغيير. (I125f2)
إصلاح الأخطاء
- تمت إضافة فحص أخطاء إلى material/Scaffold لضمان استخدام الحشو الداخلي (Ifb111).
الإصدار 1.2.0-alpha06
23 آذار (مارس) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha06
. يحتوي الإصدار 1.2.0-alpha06 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إجراء الدلالات
RequestFocus
لطلب التركيز على الهدف الذي يمكن التركيز عليه. (I17b71) - تم تعديل تحليل الرسومات المتجهّة للسماح بالمرآة التلقائية لقلب محتوى
VectorPainter
إذا كان اتجاه التنسيق الحالي هو RTL. (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)تمّت إضافة إمكانية إضافة تعليقات توضيحية إلى فئات التعليقات التوضيحية باستخدام @Preview كخطوة أولى لإضافة ميزة "المعاينة المتعدّدة". يمكن استخدام هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى طرق Composable أو فئات التعليقات التوضيحية الأخرى، والتي يمكن اعتبارها بعد ذلك مُعلَق عليها بشكل غير مباشر باستخدام العلامة @Preview المحدّدة. (I12eff)
تمّت إضافة الأجهزة المرجعية إلى قائمة الأجهزة في حساب @Preview (I071c9).
إصلاح الأخطاء
- تم تعديل واجهات برمجة تطبيقات الرسومات المتجهّة لاستخدام التعليق التوضيحي القابل للتركيب المناسب @VectorComposable بدلاً من @UiComposable (I942bc).
- إزالة المحتوى المضمّن من
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) - تم تعديل nullability في core وappcompat لمطابقة الإصدار DP2 من Tiramisu (I0cbb7)
- تعرض الواجهة المقاسة الآن سمة parentData (I3313f).
- أصبحت
Modifier.onPlaced
وواجهةOnPlacedModifier
مستقرة الآن. (Ib5482) - رائع! تتيح ميزة إنشاء الصور المتحركة الآن استخدام إعداد "طول مدة الرسوم المتحركة" من "خيارات المطوّر". (I5a4fc، b/161675988)
- تمت إضافة مُعدِّل
BeyondBoundsLayout
محلي (If8b51، b/184670295) - النص: تم إيقاف includeFontPadding الآن تلقائيًا. يتم التعامل مع
مشاكل الاقتصاص الناتجة عن
includeFontPadding=false
ولا يُفترض أن يحدث اقتصاص للنصوص البرمجية الطويلة. (I31c84، b/171394808)
إصلاح الأخطاء
- سيُرسِل
ComposeContentTestRule.setContent
الآنIllegalStateException
إذا حاولت ضبط المحتوى عندما يكون هناك محتوى. (I888a5، b/199631334) - إصلاح مشكلة تعطُّل التطبيق بسبب محتوى الحافظة أثناء القراءة من الحافظة على Android (I06020، b/197769306)
- تحسين عيّنات الانتقال للأعلى أو للأسفل في إعلانات شبكة البحث المتجاوبة (I6a596)
المساهمة الخارجية
- تم تعديله لاستخدام Kotlinx coroutines 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
التي تتيح إعداد تقارير وقت الترجمة عند استدعاء دالة مركّبة تستهدف عامل تطبيق لم يتم تصميمها لاستخدامه.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لـ compiler compose، لذا يجب استخدام هذه التعليقات التوضيحية مباشرةً بشكلٍ نادر . وتشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة أو وظائف قابلة للإنشاء مجردة (مثل methods الواردة في الواجهة) أو حقول أو متغيّرات عالمية هي دالات لامبادية قابلة للإنشاء (يتم استنتاج المتغيّرات المحلية والمَعلمات)، أو عند استخدام
ComposeNode
أو وظائف قابلة للإنشاء ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب أن تضيف الدوالّ القابلة للتجميع التي تستدعي دالة
ComposeNode
أوReusableComposeNode
تعليقًا توضيحيًاComposableTarget
للدالة وأي أنواع مَعلمات LAMBDA قابلة للتجميع. ومع ذلك، ننصح بإنشاء تعليق توضيحي تمّت الإشارة إليه باستخدامComposableTargetMarker
ثمّ استخدام التعليق التوضيحي الذي تمّت الإشارة إليه بدلاً منComposableTarget
مباشرةً. إنّ التعليق التوضيحي القابل للتجميع الذي يحمل العلامةComposableTargetMarker
يعادلComposbleTarget
مع الاسم المؤهَّل بالكامل لفئة السمة كمَعلمة المُطبِّق. للحصول على مثال لاستخدامComposableTargetMarker
، يُرجى الاطّلاع علىanroidx.compose.ui.UiComposable
. (I38f11)يستخدم
Font(resId, ...)
الآن loadingStrategy في واجهة برمجة التطبيقات الثابتة. (Ief3d2)أصبحت
FontLoadingStrategy
الآن واجهة برمجة تطبيقات ثابتة. (I1ee35، b/174162090)إتاحة تحميل الخطوط بشكل غير متزامن في Text (I77057، b/214587005)
أضِف واجهة برمجة تطبيقات الربط لتحويل
Font.ResourceLoader
المخصّصة إلىFontFamily.Resolver
. (Ia0060)
إصلاح الأخطاء
- يتم تمرير
FontFamily.Resolver
المقدَّمة إلى التركيبات الفرعية مثل النافذة المنبثقة. - يتم تمرير
Font.ResourceLoader
المقدَّمة إلى التركيبات الفرعية مثل النافذة المنبثقة. (I48fa5)
الإصدار 1.2.0-alpha03
9 شباط (فبراير) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha03
. يحتوي الإصدار 1.2.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف طرق
notifyFocusedRect
فيTextInputSession
TextInputService
نهائيًا ولن يتم استدعاؤها. استخدِمBringIntoViewRequester
بدلاً من ذلك. (Ia4302 وb/192043120 وb/216842427 وb/178211874) - تمّ تقديم
destroyDisplayListData
طريقة في فئة النموذجRenderNode
(I1e659، b/216660268) - تمت إضافة واجهة برمجة تطبيقات جديدة تتيح قياس العناصر الفرعية ل
SubcomposeLayout
التي تم إنشاؤها مسبقًا. (I857ea) تمت إضافة
movableContentOf
التي تحوّل دالة lambda قابلة للتركيب إلى دالة lambda تنقل حالتها والعقد المقابلة إلى أيّ موقع جديد يتمّ استدعاؤها فيه. عندما تغادر المكالمة السابقة التركيبة، يتم الاحتفاظ بالحالة مؤقتًا، وإذا دخلت مكالمة جديدة إلى دالة lambda في التركيبة، يتم نقل الحالة والعناصر المرتبطة بها إلى موقع المكالمة الجديدة. في حال عدم إضافة مكالمة جديدة، تتم إزالة الحالة نهائيًا ويتم إعلام المراقبين.إذا تمّ استدعاء دالة
movableContentOf
lambda عدّة مرّات في التركيب نفسه، يتمّ إنشاء حالة وعقد جديدة لكلّ استدعاء، وبينما تغادر المكالمات التركيب وتدخل مكالمات جديدة، يتمّ نقل الحالة من أوّل المكالمات التي تغادر إلى المكالمات التي تدخل بالترتيب الذي يتمّ فيه استدعاؤها. تتم إزالة كل البيانات التي لم يتمّ تأكيدها من خلال مكالمات جديدة بشكل نهائي. (Ib4850)أصبحت "
FontFamilyResolver
" متاحة الآن من خلالLocalFontFamilyResolver.current
تمت إضافة
createFontFamilyResolver(context)
وcreateFontFamilyResolver(context, coroutineScope)
لإنشاء معالجين جديدين لFontFamily خارج نطاق استخدام ميزة "الإنشاء".يأخذ كلّ من Paragraph وMultiParagraph الآن
FontFamily.Resolver
يحتوي
TextLayoutResult.layoutInput.fontFamilyResolver
الآن على برنامج التحديد المستخدَم لهذا التنسيق، والذي تم إيقافه نهائيًاTextLayoutResult.layoutInput.resourceLoader
لأنّه لم يعُد مُستخدَمًا. (Id5a45، b/174162090)إتاحة تحميل الخطوط غير المتزامن والاختياري، مع سلوك البديل يستخدم Text وTextField هذا المسار، ويتم عرضه من خلال FontFamilyResolver
إتاحة التحميل المُسبَق للخطوط من خلال
FontFamilyResolver.preload
يسمح العنصر
FontFamilyResolver.setAsyncLoadContext
بضبط سياق دالة التشغيل المتعدّد المتزامن الشاملة المستخدَمة لتحميل الخطوط غير المتزامنة. (I87fe8، b/174162090)تمت إضافة
AndroidFont
، وهي واجهة برمجة تطبيقات جديدة من المستوى الأدنى لتوفير أنواع جديدة من أوصاف موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خلفية خاصة بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز بشكل اختياري، أو تحميل خط من مورد لا يوفّره مصانع الخطوط الحالية.تم توسيع واجهة برمجة التطبيقات
Font.ResourceLoaded
لإتاحة تحميل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
من تطبيق "مساعد Google" لأجهزة الكمبيوتر المكتبي نهائيًا - مصنع
createFontFamilyResolver
جديد على الكمبيوتر المكتبي (I6bbbb، b/174162090) - لم يعُد نوع إدخال لوحة المفاتيح المتوفّرة على الشاشة يضيء ويختفي عند تغيير التركيز بين حقول النص. (I1bf50، b/187746439)
الإصدار 1.2.0-alpha02
26 كانون الثاني (يناير) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha02
. يحتوي الإصدار 1.2.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.onRotaryScrollEvent()
وModifier.onPreRotaryScrollEvent()
لأجهزة Wear التي تتضمّن زرًا جانبيًا قابلاً للدوران (I18bf5 وb/210748686) - إضافة إضافة
View.createLifecycleAwareRecomposer
تجريبية (I0cde6)
المساهمة الخارجية
- تم الآن عكس
PointerEvent.scrollDelta.y
على Android (يعرض الآن القيمة 1 بدلاً من -1 إذا تم إمالة عجلة الماوس إلى اليمين) (Ia9811)
الإصدار 1.2.0-alpha01
12 كانون الثاني (يناير) 2022
تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha01
. يحتوي الإصدار 1.2.0-alpha01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
FontFamily.canLoadSynchronously
نهائيًا. ليس لهذه السمة أيّ معنى دلالي. (Ica5ef) - تمت إضافة حقل الهوية إلى
CompositionData
لإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e) - تمت إضافة أرقام تعريف أجهزة Wear OS إلى قائمة الأجهزة المتوفّرة للتجربة (I93232)
تعديلات على التبعيات
- يعتمد الآن على Kotlin
1.6.10
.
الإصدار 1.1
الإصدار 1.1.1
23 شباط (فبراير) 2022
تم إصدار androidx.compose.ui:ui-*:1.1.1
. يحتوي الإصدار 1.1.1 على هذه المراجعات.
إصلاح الأخطاء
- حلّ المشكلة
NullPointerException
في الإصدارandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059، b/206677462) - إصلاح مشكلة تعطُّل التطبيق بسبب محتوى الحافظة أثناء القراءة من الحافظة على Android (I06020، b/197769306)
- تم إصلاح اتجاه النص من اليمين إلى اليسار في
LazyVerticalGrid
(aosp/1931080 وb/207510535)
الإصدار 1.1.0
9 شباط (فبراير) 2022
تم إصدار androidx.compose.ui:ui-*:1.1.0
. يحتوي الإصدار 1.1.0 على عمليات الربط هذه.
التغييرات المهمة منذ الإصدار 1.0.0
- إتاحة تأثير التمرير السريع بشكل ثابت في Android 12
- تحسينات على حجم مساحات اللمس
- يُرجى العلم أنّه بالنسبة إلى Compose 1.0، ستوسّع مكونات Material مساحة التنسيق لاستيفاء إرشادات تسهيل الاستخدام في Material لحجم مساحة اللمس. على سبيل المثال، سيتم توسيع ناحية اللمس المستهدَفة للزرّ إلى الحدّ الأدنى من الحجم 48x48dp، حتى إذا ضبطت حجم الزرّ على قيمة أصغر. يؤدي ذلك إلى مواءمة Compose Material مع السلوك نفسه لمكونات Material Design، ما يضمن سلوكًا متسقًا في حال خلط Views وCompose. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات تسهيل الوصول إلى مساحات اللمس عند إنشاء واجهة المستخدم باستخدام مكونات Compose Material.
- إتاحة شريط التنقّل بشكل ثابت
- ترقية عدد من واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة
- التوافق مع الإصدارات الأحدث من Kotlin
الإصدار 1.1.0-rc03
26 كانون الثاني (يناير) 2022
تم إصدار androidx.compose.ui:ui-*:1.1.0-rc03
. يحتوي الإصدار 1.1.0-rc03 على هذه المراجعات.
إصلاح الأخطاء
- تم تعديله ليتوافق مع الإصدار 1.1.0-rc03 من Compose Material
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-rc01
. يحتوي الإصدار 1.1.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ كان يتسبب في عدم توفّر إجراءات الانتقال للأعلى أو للأسفل في ميزة تسهيل الاستخدام (I7cbfb).
- سيعمل
SemanticsNodeInteraction.captureToImage()
الآن أيضًا إذا كانHardwareRenderer.isDrawingEnabled()
هوfalse
، من خلال تفعيله طوال مدة المكالمة (Idf3d0).
الإصدار 1.1.0-beta04
1 كانون الأول (ديسمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-beta04
. يحتوي الإصدار 1.1.0-beta04 على هذه المراجعات.
الميزات الجديدة
- تم تعديلها لتصبح متوافقة مع Kotlin
1.6.0
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة الأخطاء المتعلّقة بإمكانية القيمة الخالية في
androidx.core.view
(I7078a، b/204917439) - تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح للمستخدمين استخدام PointerInputchange ككل أو التحقّق مما إذا تم استخدامه أم لا. (I2e59d)
- إضافة إمكانية استخدام أحداث عجلة التمرير في الماوس في طبقة واجهة المستخدم (Ia14eb، b/198214718)
- أضِف وظائف متعدّدة
Modifier.composed
تجريبية تقبل المفاتيح للمقارنة من أجل التساوي وتكون مؤهّلة لتخطّي عمليات التحسين. (Ice799، b/205851704) - يمتدّ
ComposeNotIdleException
الآن منException
بدلاً منThrowable
مباشرةً. يشير ذلك إلى أنّ عبارات الالتقاط التي كانت تلتقطException
قد تلتقط الآنComposeNotIdleException
، وهي لم تكن تفعل ذلك في السابق. (I9c217)
إصلاح الأخطاء
- إصلاح عدم تحريك عناصر التحكم في النص عند تغيير مستوى ظهور واجهة معالجة اللغة (I25f2e)
الإصدار 1.1.0-beta03
17 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-beta03
. يحتوي الإصدار 1.1.0-beta03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مُعدِّل جديد Modifier.onPlaced للسماح برصد تغيير موضع العنصر. وبالتالي، يمكن إجراء تغييرات إضافية على إزاحة المُعدِّل الفرعي استنادًا إلى تغيير موضع الإعلان المرصود. (I558fd)
- تمت إزالة
InjectionScope.flush()
وInjectionScope.dispose()
. تتم الآن إزالة جميع الأحداث والتخلص من النطاق في نهاية طريقة perform*Input() التي تمّ استدعاؤها، تمامًا كما كان الحال في السابق. (I2bed8) - تمت إزالة
MultiModalInjectionScope.Touch
وMultiModalInjectionScope.Mouse
. لإدراج أحداث اللمس وأحداث الماوس للإيماءات المتعددة الوسائط، يمكنك الآن استخدامMultiModalInjectionScope.touch()
وMultiModalInjectionScope.mouse()
، وكلاهما يقبلان دالة lambda التي تتضمّن نطاق المستلِم لهذا الوسيط. (Idde18)
إصلاح الأخطاء
- يتم الآن احتساب القيمة التلقائية لـ
durationMillis
فيTouchInjectionScope.swipeWithVelocity
بحيث يكون التمرير السريع ممكنًا. (I19deb)
الإصدار 1.1.0-beta02
3 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-beta02
. يحتوي الإصدار 1.1.0-beta02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات التجريبية BringIntoView API التي تتيح لك إرسال طلب إلى الوالدَين لتحريك الشاشة إلى أن يظهر عنصر معيّن (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) - تمت إضافة حمولة زائدة بدون طفل لـ Layout، مع كفاءة محسّنة (Ib0d9a)
- تمت إزالة
InternalCompilerApi
من طرق Composer التي يجب استدعاؤها على مستوى الوحدات (I1aa0b) - تعرض
SemanticsNodeInteraction.performSemanticsAction
الآنSemanticsNodeInteraction
الذي تم استدعاء الدالة عليه. (I9e5db) - تمت إضافة LocalInputModeManager CompositionLocal لرصد TouchMode/NonTouchMode. (I6a83c، b/175899786)
- تمت إضافة
viewConfiguration: ViewConfiguration
إلىLayoutInfo
للسماح للمستهلكين بالحصول على القيمة الصحيحة لعناصر مثل مهلة الضغط العميق. (I76ca6)- تمت إضافة
viewConfiguration: ViewConfiguration
إلىInjectionScope
للسماح للاختبارات بتعديل إدخال الإدخال استنادًا إلى عوامل مثل مهلة الضغط لفترة طويلة أو انزلاق اللمس. - تم تغيير المدة التلقائية للضغط مع الاستمرار والنقر مرّتين لكل من
إدخالات اللمس والماوس لتستند إلى القيم الواردة في
InjectionScope.viewConfiguration
.
- تمت إضافة
- تنفيذ ExposedDropdownMenu استنادًا إلى ExposedDropdownMenuBox مع TextField وDropdownMenu بالداخل (If60b2)
- تمت إضافة dismissOnOutsideClick إلى PopupProperties، لتحلّ محلّ dismissOnClickOutside التي تم إيقافها نهائيًا. يتلقّى الموقع الجديد موضع النقرة وحدّي الربط، ما يوفر إمكانية التحكّم بشكل أدق في ما إذا كان يجب استدعاء onDismissRequest أم لا. على سبيل المثال، يمكن أن يكون ذلك مفيدًا لمنع إغلاق العنصر الأساسي عند لمسه.
- تمت إضافة updateAndroidWindowManagerFlags إلى PopupProperties، ما يوفر إمكانية التحكّم على مستوى منخفض في العلامات التي تمررها النافذة المنبثقة إلى Android WindowManager. ستكون مَعلمة دالة lambda هي العلامات المحسوبة من قيم PopupProperties التي تؤدي إلى ظهور علامات WindowManager، مثل focusable. ستكون نتيجة دالة lambda هي العلامات النهائية التي سيتم تمريرها إلى 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)
- إصلاح مشكلة عدم معالجة التمريرات السريعة في SwipeToDismissBox على نظام التشغيل WearOS في بعض الأحيان (I9387e)
- تم تغيير الوقت التلقائي بين أحداث الإدخال المُحقَّقة من 10 ملي ثانية إلى 16 ملي ثانية. وقد يؤدي ذلك إلى تغيير نتيجة الاختبارات التي تُجري إيماءات إدخال، مثل التمرير السريع باتجاه معيّن. (I829fd)
الإصدار 1.1.0-alpha05
29 أيلول (سبتمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha05
. يحتوي الإصدار 1.1.0-alpha05 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية التواصل بين المُعدِّلات (Id5467، b/198826874)
- تمت إضافة مؤشرات تجريبية لسجلّ PointerEventChange. (Ic1fd8، b/197553056، b/199921305)
- تمت إضافة
density: Density
وlayoutDirection: LayoutDirection
إلىLayoutInfo
. يتيح ذلك لمستهلكيLayoutInfo
تفسير الأبعاد والموضع المعروضَين فيLayoutInfo
بشكل صحيح. (I002f1) - تمت إضافة ميزة تجريبية لحقن أحداث الماوس. استخدِم
performMouseInput
لبدء إرسال أحداث الماوس، أو أرسِل أحداث الماوس من خلال خاصيةMouse
فيMultiModalInjectionScope
أثناء إيماءة إدخال متعددة الأوضاع باستخدامperformMultiModalInput
. يُرجى الاطّلاع علىMouseInjectionScope
للحصول على مستندات واجهة برمجة التطبيقات المتاحة. (Iaa4a8، b/190493367)
إصلاح الأخطاء
- تم إصلاح ميزة تسهيل الاستخدام للعناصر القابلة للتقديم أو الإيقاف (سواء كانت بطيئة أو سريعة) في ما يتعلق بالانتقال (I6cdb0).
- تم تحسين
TouchInjectionScope.swipeWithVelocity
. أصبح الآن يقبل نطاقًا أوسع من متغيّرات الإدخال، وسيقترح تغييرات على الإدخال إذا تعذّر إنشاء التمرير السريع (I40fbe، b/182477143)
الإصدار 1.1.0-alpha04
15 أيلول (سبتمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha04
. يحتوي الإصدار 1.1.0-alpha04 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- يتضمّن
PointerEvent
الآنPointerEventType
لتفعيل أحداث التمرير بمؤشر الماوس. (I091fa) - السماح للأطفال بقبول إدخال المؤشر خارج пределами родительского ввода указателя يمكن للوالدَين اعتراض هذه الطلبات باستخدام السمة PointerInputScope.alwaysInterceptChildEvents (I9eae3، b/192479655).
- تم إيقاف
performGesture
وGestureScope
نهائيًا، وتم استبدالهما بـperformTouchInput
وTouchInjectionScope
. (Ia5f3f، b/190493367) - تمت إضافة
touchBoundsInRoot
إلىSemanticsNode
الذي يتضمّن الحدّ الأدنى لحجم مساحة اللمس حتى يتمكّن المطوّرون من التأكّد من استيفاء مساحات اللمس للحدّ الأدنى لمتطلبات تسهيل الاستخدام. (I2e14b، b/197751214) - إعادة تنفيذ الفحص (I927bc، b/191017532)
- تم تغيير اسم المَعلمة inspectable (قابل للفحص) لتتطابق مع المَعلمة composed (مُركّب) (I3a482، b/191017532)
تمّ تقديم
performTouchInput
وTouchInjectionScope
كبديلين عنperformTouchInput
وTouchInjectionScope
، ما مهّد الطريق لظهور وسائل أخرى (مثل الماوس).تتضمّن دالة
TouchInjectionScope
الطرق نفسها التي تتضمّنها دالةGestureScope
، باستثناء دالتَيmovePointerTo
وmovePointerBy
اللتين تمت تسميتَهما مجددًا باسمَيupdatePointerTo
وupdatePointerBy
. وتبقى جميع الطرق الأخرى كما هي.يكاد سلوك
TouchInjectionScope
يكون مطابقًا لGestureScope
، مع وجود تفاصيل صغيرة:- عند إرسال حدث "الضغط لأسفل" أثناء نقل المؤشرات بدون
إرسال حدث "التحرك" (بمعنى آخر، تم استخدام
updatePointerTo()
وليسmove()
، ثم تم استدعاءdown()
)، سيؤدي التنفيذ السابق إلى تقديم وقت الحدث وإرسال حدث "التحرك" قبل إرسال حدث "الضغط لأسفل". لا يزال التنفيذ الجديد يُرسِل حدث التحرك، ولكنّه لا يُقدّم وقت الحدث في هذا السيناريو المُحدّد. - عند إرسال حدث up (الانتقال للأعلى) أثناء نقل المؤشرات بدون إرسال حدث move (الانتقال)، سيؤدي التنفيذ السابق إلى تقديم وقت الحدث وإرسال حدث move قبل إرسال حدث up. لا ينفِّذ الإجراء الجديد أيًا من ذلك: لن تظهر مواضع المؤشرات الجديدة إلا من خلال الحدث 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 على هذه المراجعات.
الميزات الجديدة
- تم تعديل Compose
1.1.0-alpha03
ليصبح يعتمد على Kotlin1.5.30
. (I74545)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Modifier.inspectable
لتغليف عوامل التعديل الأخرى. (I1909b، b/191017532) - تمت إضافة
BlurredEdgeTreatment
API لتبسيط حالات استخدام التمويه إلى مجموعات أكثر استخدامًا من علامات المقاطع ووضعيات التجانب. تتضمن معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي ومحو المناطق خارج هذه الحدود باستخدام اللون الأسود الشفاف، أو اقتصاص المحتوى إلى حدود المحتوى من خلال أخذ عيّنة من أقرب حافة لنواة التمويه التي تتجاوز حدود المحتوى. (I6b4b7، b/166927547) - تمت إضافة إمكانية استخدام RenderEffect في وضع "إنشاء" على الكمبيوتر المكتبي. تمّ تقديم OffsetEffect بالإضافة إلى معدِّل التمويه كطريقة بسيطة لتطبيق تأثيرات التمويه المرئية على جزء من التسلسل الهرمي للتركيب. (I0f6aa، b/166927547)
- تمّت إضافة RenderEffect API
التي يمكن ضبطها اختياريًا على
Modifier.graphicsLayer
لتغيير محتوى الطبقة نفسها. يمكن استخدام هذه الميزة لإخفاء محتوى عنصر تركيبي وعناصر تركيبية فرعية ضمن التسلسل الهرمي لتركيبة. (I47c4d، b/166927547) - يتضمّن AwaitPointerEventScope الآن withTimeout() وwithTimeoutOrNull() (I507f0، b/179239764، b/182397793)
- تمت إضافة الحد الأدنى لحجم مساحة اللمس المستهدفة إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان تسهيل الاستخدام. (Ie861c)
- إضافة ميزة TileMode.Decal التي تكون مفيدة في تحديد سلوك الحواف لتأثيرات RenderEffects المستندة إلى التمويه (I7e8ed، b/166927547)
- أصبحت واجهتَا برمجة التطبيقات
performScrollToIndex
وperformScrollToKey
hasScrollToIndexAction
وhasScrollToKeyAction
متوفّرتين الآن (I142ae، b/178483889). - تمت إضافة طريقة اختبار للحصول على الحدود المقتطعة. (I6b28e)
إصلاح الأخطاء
- تمّت إزالة طريقة isBounded من BlurredEdgeTreatment لصالح التحقّق صراحةً ممّا إذا كانت مَعلمة shape فارغة. (I85d68)
الإصدار 1.1.0-alpha02
18 آب (أغسطس) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha02
. يحتوي الإصدار 1.1.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- يتيح PointerEvent الآن قراءة حالة زر الماوس وحالة مُعدِّل لوحة المفاتيح. (I6310c، b/180075467)
- تستخدم الإيماءات المُدرَجة الآن وقت MainTestClock كمصدر
للحصول على الوقت. سيتمّ إعداد الوقت الحالي للأحداث المُدرَجة في
performGesture
على أنّه الوقت الحالي لمحاولة الاختبار MainTestClock. (Ifb364، b/192064452) - تمت إضافة
DpRect(DpOffset, DpSize)
(I2cf16، b/194219828) - تمت إضافة فئة DpSize (I7abb1، b/194219828)
إصلاح الأخطاء
- تم تعديل تحليل xml لرسومات المتجهات لإتاحة استخدام قوائم ColorStateList كسمات أساسية لدرجة لون الأساس في 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 API لإتاحة رسم فرشاة عشوائية داخل Painter، على غرار ColorPainter
تم تعديل Brush API لإضافة مَعلمة حجم أساسي يتم الاستعلام عنها ضمن BrushPainter (Ia2752، b/189466433)
تم تعديل طريقة drawImage في DrawScope#التي تستخدم مستطيلات المصدر والوجهة لاستخدام مَعلمة FilterQuality اختيارية. يكون ذلك مفيدًا للفن المكوّن من وحدات بكسل والذي يُفترض أن يظهر بوحدات بكسل عند تكبيره ليصبح فنًا يعتمد على وحدات البكسل. تم تعديل BitmapPainter وImage composable لاستخدام مَعلمة FilterQuality اختيارية أيضًا (Ie4fb0، b/180311607)
تمت إضافة طريقة
GestureScope.advanceEventTime
لمنح المزيد من التحكّم في توقيت الأحداث في إيماءة (Ibf3e2)
إصلاح الأخطاء
- لتسهيل تسلسل
مُعدِّلات الرسم، تأكَّد من أنّ عملية تنفيذ Modifier.paint
تستدعي drawsContent.
في السابق، كان من المتوقّع أن تكون Modifier.paint عقدة ورقة في
سلسلة Modifiers، ولكنّ ذلك يمنع
إعدادها في حاوية قابلة للتجميع (مثل المربّع)
أو إضافة زخارف إضافية في الأعلى مثل
Modifier.paint().border()
. من خلال جعل Modifier.paint يُطلِق drawContent بعد رسم محتوى الرسام المحدَّد، نحصل على اتساق أفضل في السلوك مع نمط المُعدِّل. (Ibb2a7، b/178201337، b/186213275) - تلتزم الآن المحادثات بسلوك ضبط حجم الشاشة. اضبط
usePlatformDefaultWidth
على خطأ لتجاوز هذا السلوك. (Iffaed، b/192682388) - تم نقل
InfiniteAnimationPolicy
إلى :compose:ui (I5eb09، b/160602714) - تم الآن إضافة تأثيرات متحركة إلى التمرير من خلال إجراءات الدلالات للقوائم البطيئة الموسّعة ومكونات التمرير العادي (Id9066، b/190742024).
الإصدار 1.0
الإصدار 1.0.5
3 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.5
. يحتوي الإصدار 1.0.5 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح عطل في تتبُّع حالات derivedStateOf. (aosp/1792247)
الإصدار 1.0.4
13 تشرين الأول (أكتوبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.4
. يحتوي الإصدار 1.0.4 على هذه المراجعات.
تعديلات على التبعيات
- تم تعديلها لتصبح معتمدة على Kotlin
1.5.31
الإصدار 1.0.3
29 أيلول (سبتمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.3
. يحتوي الإصدار 1.0.3 على هذه المراجعات.
تعديلات على التبعيات
- تم تعديلها لتصبح معتمدة على Kotlin
1.5.30
الإصدار 1.0.2
1 أيلول (سبتمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.2
. يحتوي الإصدار 1.0.2 على عمليات الربط هذه.
تم تعديله ليتوافق مع إصدار 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 على هذه المراجعات.
تعديلات على التبعيات
- تم تعديلها لتصبح معتمدة على Kotlin
1.5.21
.
الإصدار 1.0.0
28 تموز (يوليو) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0
. يحتوي الإصدار 1.0.0 على عمليات الربط هذه.
الميزات الرئيسية في الإصدار 1.0.0
هذا هو أول إصدار ثابت من تطبيق Compose. يُرجى الاطّلاع على مدوّنة الإصدار الرسمية من تطبيق Compose للحصول على مزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم الإصدار 4 من Android Studio Bumblebee Canary أو الإصدار
7.1.0-alpha04
/7.1.0-alpha05
من AGP، قد تواجه الخطأ التالي: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). - تتيح Canvas الآن مَعلمة contentDescription لأجل تسهيل الاستخدام. (Ib547c)
- تمت إعادة تسمية
useDefaultMaxWidth
فيPopupProperties
إلىusePlatformDefaultWidth
. (I05710) - يمكن الآن للمربّعات الحوار استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
- تمت إضافة دعم تجريبي لتمثيلات ملفّات bmp بتنسيقَي HSV وHSL. (Id7cf8، b/180731008)
التغييرات في السلوك
- توفّر ميزة "الإنشاء"
@Preview
الآنLocalActivityResultRegistryOwner
يتيح لك معاينة العناصر القابلة للتجميع التي تستخدم واجهات برمجة التطبيقات مثلrememberLauncherForActivityResult()
التي تعتمد على توفّر هذا المالك. (Ib13d1، b/185693006) - توفّر أداة Compose
@Preview
الآنLocalOnBackPressedDispatcherOwner
تتيح لك معاينة العناصر القابلة للتجميع التي تستخدم واجهات برمجة التطبيقات، مثلBackHandler
التي تعتمد على توفّر هذا المالك. (Ia1c05، b/185693006)
إصلاح الأخطاء
- تم نقل
InfiniteAnimationPolicy
إلىandroidx.compose.ui:ui
(I5eb09، b/160602714) - تمّت إزالة AnimatedImageVector مؤقتًا لتغيير بنية الوحدة. (I41906، b/160602714)
الإصدار 1.0.0-beta09
16 حزيران (يونيو) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta09
. يحتوي الإصدار 1.0.0-beta09 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تغيير النطاقين المحدَّدين Role وLiveRegionMode إلى فئات مضمّنة مع عنصر إنشاء خاص (Id1890)
- يتم تحويل KeyboardCapitalization إلى فئة مضمّنة. (Id5a1c)
- غيِّر HapticFeedbackType إلى فئة مضمّنة. (I255ec)
- Modifier.pointerInteropFilter هو @ExperimentalComposeUiApi. (Iede6c)
- أصبحت TextAlign وFontSynthesis وTextDirection الآن فئات مضمّنة. (I212fe)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
- أصبح FontStyle الآن فئة مضمّنة. (I9e48b)
إصلاح الأخطاء
- في الوقت الحالي، الثابتة الرئيسية هي @ExperimentalComposeUiApi. يمكن للرمز المستهلِك أن يُعرِّف الثوابت الخاصة قبل استقرارها. (Ia5d48)
- يمكن الآن تنفيذ اختبارات إنشاء الرسائل على Robolectric. تم تحديد
القيود التالية حتى الآن:
- لا تتوفّر صورة نقطية أصلية، لذا يؤدي
ImageBitmap()
إلىImageBitmap()
. - لا يتمّ رسم أيّ شكل، لذا سينتظر
captureToImage()
إلى أجل غير مسمى مرحلة الرسم التالية (أيّ أنّه سيتوقّف عن العمل). - لم يتم تحميل أيّ خط، لذا سيتم قياس أيّ نص بشكل غير صحيح. تبلغ قياسات كل الشخصيات 20 بكسل تقريبًا للارتفاع و1 بكسل للعرض.
- لا يشغّل
ComposeTestRule.waitUntil {}
سلسلة التعليمات الرئيسية أثناء الانتظار، ما يجعله مطابقًا بشكل فعالComposeTestRule.mainClock.advanceTimeUntil {}
من المتوقّع تحديد المزيد من القيود في المستقبل. (I284fa)
- لا تتوفّر صورة نقطية أصلية، لذا يؤدي
قواعد الملفات التجارية المُضافة
يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
ما هي قواعد الملفات الشخصية؟
يتم تحديد قواعد الملف الشخصي للمكتبة في ملف نصي
baseline-prof.txt
في الدليلsrc/main
أو الدليل المكافئ. يحدِّد الملف قاعدة لكل سطر، حيث تكون القاعدة في هذه الحالة نمطًا لمطابقة الطرق أو الفئات في المكتبة. بنية هذه القواعد هي مجموعة فائقة من تنسيق الملف الشخصي لنظام ART القابل للقراءة من قِبل المستخدمين والذي يتم استخدامه عند استخدامadb shell profman --dump-classes-and-methods ...
. تتّخذ هذه القواعد أحد شكلَين لاستهداف الطرق أو الفئات.سيكون لقاعدة الطريقة النمط التالي:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
وسيكون لنمط قاعدة الفئة الشكل التالي:
<CLASS_DESCRIPTOR>
يشير الرمز
<FLAGS>
إلى حرف واحد أو أكثر من الأحرفH
وS
وP
للإشارة إلى ما إذا كان يجب وضع علامة على هذه الطريقة على أنّها "مهام نشطة" أو "مهام بدء التشغيل" أو "مهام ما بعد بدء التشغيل".<CLASS_DESCRIPTOR>
هو الوصف للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، سيكون للفئةandroidx.compose.runtime.SlotTable
وصفLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
هو توقيع الطريقة، ويتضمّن الاسم وأنواع المَعلمات وأنواع النتائج للطريقة. على سبيل المثال، تحتوي الطريقةfun isPlaced(): Boolean
فيLayoutNode
على التوقيعisPlaced()Z
.يمكن أن تحتوي هذه الأنماط على أحرف بدل (
**
و*
و?
) لتشمل قاعدة واحدة طرقًا أو فئات متعددة.
ما هي وظيفة القواعد؟
تشير الطريقة التي تحمل العلامة
H
إلى أنّ هذه الطريقة "ساخنة"، ويجب تجميعها مسبقًا.تشير الطريقة التي تحمل العلامة
S
إلى أنّها طريقة يتمّ استدعاؤها عند بدء التشغيل، ويجب تجميعها مسبقًا لتجنّب تكلفة التجميع وتفسير الطريقة في وقت بدء التشغيل.تشير الطريقة التي تحمل العلامة
P
إلى أنّها طريقة يتمّ استدعاؤها بعد بدء التشغيل.تشير الفئة المتوفّرة في هذا الملف إلى أنّها مستخدَمة أثناء بدء التشغيل ويجب تخصيصها مسبقًا في الحِزمة لتجنب تكلفة تحميل الفئة.
آلية العمل
- يمكن للمكتبات تحديد هذه القواعد التي سيتم تجميعها في عناصر AAR. عند إنشاء تطبيق يتضمّن هذه العناصر، يتم دمج هذه القواعد معًا ويتم استخدام القواعد المدمجة لإنشاء ملف تعريف ART ثنائي مكثّف خاص بالتطبيق. ويمكن بعد ذلك لـ ART الاستفادة من هذا الملف الشخصي عند تثبيت التطبيق على الأجهزة من أجل تجميع مجموعة فرعية معيّنة من التطبيق مسبقًا لتحسين أداء التطبيق، لا سيما في التشغيل الأول. يُرجى العلم أنّ هذا الإجراء لن يؤثر في التطبيقات التي يمكن تصحيح أخطاءها.
الإصدار 1.0.0-beta08
2 حزيران (يونيو) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta08
. يحتوي الإصدار 1.0.0-beta08 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم استبدال قائمة القيم الفريدة
NestedScrollSource
بصفّة مضمّنة. (Ie321b، b/187055290) - تمت إعادة تسمية
FocusManager.clearFocus(forcedClear = true)
إلىFocusManager.clearFocus(force = true)
(Ia0c41) - تمّت إعادة صياغة استخدامات النطاقات المحدّدة إلى فئات مضمّنة لتجنُّب المشاكل المتعلّقة ببيانات when الشاملة عند إضافة قيم جديدة للنطاق المحدّد. (I2b5eb)
- أزِل
@ExperimentalComposeUiApi
منPopupProperties
. (I01fa6) - تم تغيير
PointerType
من فئة معرِّفة إلى فئة مضمّنة (If5058). - لم تعُد سمتا ContentDescription وText semantics قيمًا مفردة، بل أصبحتا قائمتَين. يتيح ذلك دمجها كما هي بدلاً من دمج السلسلة. تم أيضًا توفير واجهات برمجة تطبيقات اختبار أفضل للاستفادة من هذه التغييرات (Ica6bf وb/184825850).
- تم إيقاف
Modifier.focusModifier()
نهائيًا واستبداله بـModifier.focusTarget()
(I6c860) - لم تعُد
Modifier.onSizeChanged()
وModifier.onGloballyPositioned()
دالة مضمّنة بعد الآن (I727f6، b/186109675) - تم استبدال قائمة القيم الفريدة
KeyboardType
بصفّة مضمّنة. (I73045، b/187055290) - تم استبدال قائمة
FocusState
بواجهةFocusState
(Iccc1a، b/187055290) - تم استبدال قائمة ImeAction بصفّة مضمّنة. (I18be5، b/187055290)
- يتم تحويل
PlaceholderVerticalAlign
إلى فئة مضمّنة. (If6290) - أصبحت TextUnitType فئة مضمّنة الآن. (I4cba9)
- تم الآن استبدال دالات
AnnotatedString.withAnnotation
بـ ExperimentalTextApi بدلاً من ExperimentalComposeApi. (I0cd0a)- أصبحت دالة إنشاء TextUnit التي تستخدم TextUnitType متوفّرة الآن في ExperimentalTextApi بدلاً من ExperimentalComposeApi.
إصلاح الأخطاء
- تم إصلاح الخلل الذي ظهر في الإصدار التجريبي 07 والذي كان يؤدي إلى عرض عناصر LazyColumn/Row بشكل جزئي بعد الانتقال للأسفل أو للأعلى (I8c9ac، b/188566058)
- ستستهلك الآن
detectDragGesures
وdetectVerticalGestures
وdetectHorizontalGestures
تغيير الموضع تلقائيًا، ولن يكون هناك حاجة إلى استدعاء change.consumePositionChange في طلبات إعادة الاتصال onDrag (I42fc4 وb/185096350 وb/187320697). - تم إصلاح LayoutModifiers التي تقدّم خطوط محاذاة. تم إصلاح خطأ كان يمنع إعادة قياس العنصر الرئيسي عند تغيير خطوط المحاذاة الخاصة بالعناصر الثانوية. (I4401f، b/174315652)
- تم تغيير
Modifier.onGloballyPositioned()
للإبلاغ عن إحداثيات هذا المُعدِّل في سلسلة المُعدِّلات، وليس إحداثيات التنسيق بعد تطبيق جميع المُعدِّلات. وهذا يعني أنّ ترتيب المُعدِّلات يؤثّر الآن في الإحداثيات التي سيتم الإبلاغ عنها. (Ieb67d، b/177926591)
الإصدار 1.0.0-beta07
18 أيار (مايو) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta07
. يحتوي الإصدار 1.0.0-beta07 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة
ViewRootForInspector
لاستخدامها في أداة الفحص (Ib70df) - يتيح
SubcomposeLayoutState
الآن ضبط عدد الفتحات القابلة لإعادة الاستخدام. سيحافظ التنسيق على تفعيل ما يصل إلى هذا العدد من الخانات بدلاً من التخلص منها لإعادة استخدامها في المرة القادمة التي نحتاج فيها إلى خانة جديدة (Ieb981). - تم استبدال التعداد KeyEventType بفئة مضمّنة. (Id670a، b/187055290)
- تم استبدال قائمة القيم الفريدة
FocusDirection
بصفّة مضمّنة. (Ib6d03 وb/187055290 وb/184086802) - تمّت إضافة إمكانية رفع حالة SubcomposeLayout التي تتيح لك إنشاء تركيبة مسبقة للمحتوى في slotId يتطلّب ذلك، ما سيؤدي إلى اجتياز الإجراء التالي بشكل أسرع، لأنّه بعد محاولة إنشاء تركيبة فرعية باستخدام slotId المحدّد في المرة القادمة، لن تكون هناك حاجة إلى إنشاء تركيبة. (I42580، b/184940225)
- تمت إضافة معرّف اختيار المقطع (Iff80d، b/183408447)
- تمت إزالة واجهات برمجة التطبيقات غير المستخدَمة المرتبطة بدعم LayoutInspector. (I2ac78)
إصلاح الأخطاء
- سيحافظ الآن LazyColumn/Row على نشاط ما يصل إلى عنصرَين كانا مرئيَين سابقًا (بدون إزالتهما) حتى بعد الانتقال إلى أعلى الصفحة. يتيح ذلك للمكوّن إعادة استخدام العناصر الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد يُحسِّن أداء الانتقال للأعلى أو للأسفل. (Ie5555)
- سيتم تطبيق
TextGeomerticTransform
وTextDecoration
علىAnnotatedString
كما هو موضّح. (I61900، b/184760917)
الإصدار 1.0.0-beta06
5 أيار (مايو) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta06
. يحتوي الإصدار 1.0.0-beta06 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- حلّ تعارض مع إيماءة التنقّل (I1145e)
- لم يعُد
@ComposeCompilerApi
@RequiresOptIn
(Iab690) - تمت إضافة واجهتَي برمجة تطبيقات CollectionInfo وCollectionItemInfo لأدوات تسهيل الاستخدام تتيحان وضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (Id54ef وb/180479017)
- تمت إضافة
SemanticsActions.ScrollToIndex
للانتقال في قائمة تحتوي على عناصر مفهرَسة إلى العنصر الذي يحتوي على فهرس معيّن، وSemanticsProperties.IndexForKey
للحصول على فهرس عنصر في قائمة تحتوي على عناصر مفاتيح. يتم تنفيذ كلا الإجراءَين من خلال LazyList.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndex
التي تنتقل بقائمة إلى الفهرس المحدَّد، وSemanticsNodeInteraction.performScrollToKey
التي تنتقل بقائمة إلى العنصر الذي يحتوي على المفتاح المحدَّد. (I4fe63، b/178483889، b/161584524)
- تمت إضافة
- تمت إضافة ownerViewId إلى GraphicLayerInfo (I19f62)
- تمت إضافة طرق تحميل زائدة لواجهة Font() لتحميل الخطوط من مواد العرض وFile وFileDescriptor (I5d382)
- تمت إضافة واجهة برمجة التطبيقات لإمكانية الوصول
error
التي تسمح بوضع علامة على عقدة تحتوي على إدخال غير صالح (I12997 وb/180584804 وb/182142737). - تمت إضافة
Font()
طريقة تحميل متعدّدة لتحميل الخطوط من مواد العرض وFile وFileDescriptor (I43007) - إتاحة حفظ AnnotatedString في
TextFieldValue.Saver
تمت إضافةaddTtsAnnotation
ودوالّ المرافقة withAnnotation إلىAnnotatedString.Builder
(I8cbdc، b/178446304) - تمت إضافة دالة TextUnit لإنشاء الوحدات
TextUnit(value: Float, type: TextUnitType)
(I7ecce، b/178446304)
الإصدار 1.0.0-beta05
21 نيسان (أبريل) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta05
. يحتوي الإصدار 1.0.0-beta05 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الإصدارَين التجريبيَين
FocusManager.moveFocus(In)
وFocusManager.moveFocus(Out)
(Ic5534 وb/183746743) - تمت إضافة واجهة برمجة التطبيقات التجريبية
performTextInputSelection
(I2dcbb، b/178510628) - تم إيقاف واجهة
InputEventCallback
نهائيًا. لم يكن من الممكن استخدام الواجهة في أي واجهة برمجة تطبيقات عامة، ولم يتم استخدامها في الرمز البرمجي. (I34a02، b/184003208) - دالة
TextLayoutResult/createTextLayoutResult
متوقفة نهائيًا وهي دالة عامة غير مستخدَمة تمت إضافتها للاختبار. لا تُجري الدالة أيّ إجراء قابل للاستخدام مع IDEVELOPER_COMPOSE_TEXT_API. تم إيقاف هذه الوظيفة نهائيًا وستتم إزالتها في وقت لاحق. (I80413)
إصلاح الأخطاء
- تم إصلاح إجراءات الانتقال للأعلى أو للأسفل باستخدام
ACTION_SCROLL_FORWARD
وACTION_SCROLL_BACKWARD
accessibilityActionScrollLeft
وaccessibilityActionScrollUp
accessibilityActionScrollRight
وaccessibilityActionScrollDown
. بدلاً من الانتقال إلى نهاية المحتوى المعروض على الشاشة، سيتم الآن الانتقال إلى شاشة واحدة في الاتجاه المحدّد. (Ieccb0) - أصبحت ملفات AndroidManifest من ui-test-manifest و ui-tooling-data متوافقة الآن مع Android 12 (I6f9de، b/184718994).
الإصدار 1.0.0-beta04
7 نيسان (أبريل) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta04
. يحتوي الإصدار 1.0.0-beta04 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أعِد تسمية
hideSoftwareKeyboard
وshowSoftwareKeyboard
علىSoftwareKeyboardController
إلىhide()
وshow()
على التوالي.- توفير واجهة CompositionLocal الكاملة لأجل LocalSoftwareKeyboardController، ما يسمح بضبطها (خاصةً عند إجراء الاختبارات) (I579a6)
- تمت إضافة واجهة برمجة التطبيقات LiveRegion accessibility API. إذا تم وضع علامة على العقدة كمنطقة مباشرة، ستخطّط خدمات تسهيل الاستخدام للإشعار بالمستخدم تلقائيًا بشأن التغييرات (Idcf6f، b/172590946)
- تمّ تقديم TextOverflow.Visible. (Ic8f89)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تحدث عند وضع عناصر
LazyColumn
/LazyRow
بشكل غير صحيح على الحواف بعد التمرير السريع (Ie4d13، b/183877420) - يزيل
AndroidViewBinding
الآن بشكلٍ سليم المقاطع التي تم تضخيمها من خلالFragmentContainerView
عند إزالةAndroidViewBinding
من التسلسل الهرمي لإنشاء الرسائل. (Ib0248، b/179915946) AndroidViewBinding
الآن تُدمج بشكلٍ صحيح المقاطع التي تم تضخيمها من خلالFragmentContainerView
عندما يكونComposeView
ضمنFragment
، ما يحلّ المشاكل المتعلّقة بحفظ حالة تلك المقاطع واستعادتها. (I70eb0، b/179915946)- يعتمد Compose ViewBinding الآن على
الوحدة
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
جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053) - تمت إضافة واجهة برمجة تطبيقات
LocalSoftwareKeyboardController
جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053) - تمت إزالة
SemanticsMatcher
التالية:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- تم وضع علامة على العنصر التالي
SemanticsMatchers
على أنّه @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- تمت إضافة
SemanticsMatcher
التالية: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، تأكَّد من أنّك تستخدِم الإصدار 1.3 من AppCompat أو الإصدار 1.3 من Fragment أو الإصدارات الأحدث، لأنّ هذه الإصدارات مطلوبة لضبط دورة الحياة وأصحاب الحالة المحفوظة المطلوبة لـ ComposeView بشكلٍ صحيح. (I1d6fa، b/161814404) - إصلاح مشكلة عدم عمل الرمز
rememberSaveable { mutableStateOf(0) }
عند استخدامه داخل وجهة Compose-navigation (I1312b وb/180042685 وb/180701630) - تمت إضافة واجهة برمجة تطبيقات
LocalSoftwareKeyboardController
جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053) - تم إصلاح خطأ NoSuchElementException النادر في
ComposeRootRegistry
tearDownRegistry()
(Iddce1).
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على هذه المراجعات.
هذا هو الإصدار الأول من الإصدار التجريبي من Compose 1.0.0.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دالة الاستدعاء onStart إلى
detectDragGestures
(I67269، b/179995594) - لم تعُد المُعدِّلات لتحديد الحجم حسب السمات الأساسية تجريبية. (I15744)
- تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy التي أصبحت واجهة ممتعة. تم تعديل واجهات برمجة تطبيقات Layout API أو تبسيطها لاستخدام MeasurePolicy. (Icab48، b/167662468، b/156751158)
- تم استبدال
InteractionState
بـ[Mutable]InteractionSource
- تتحمّل الواجهات مسؤولية إصدار أحداث التفاعل أو جمعها.
- بدلاً من تمرير
interactionState = remember { InteractionState() }
إلى مكوّنات مثلButton
وModifier.clickable()
، استخدِمinteractionSource = remember { MutableInteractionSource() }
. - بدلاً من:
Interaction.Pressed in interactionState
، يجب استخدام دوالّ الإضافة في InteractionSource، مثل InteractionSource.collectIsPressedAsState(). - بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة بث التفاعلات. اطّلِع على مستندات InteractionSource وعينات منها للحصول على مزيد من المعلومات.
- (I85965 وb/152525426 وb/171913923 وb/171710801 وb/174852378)
- إضافة واجهة AccessibilityMananger و LocalAccessibilityMananger في CompositionLocals (I53520)
- تمّت إزالة طرق LayoutCoordinates المتوقّفة نهائيًا، ويمكنك استخدام الدالة بدلاً من السمة positionInParent وboundsInParent (I580ed، b/169874631، b/175142755)
- استبدال الأسماء البديلة للأنواع بأنواع أساسية:
- "
ColorStop
" أصبح الآن "Pair<Float, Color>
" -
SpanStyleRange
أصبحت الآن AnnotatedString.Range - "
ParagraphStyleRange
" أصبح الآن "AnnotatedString.Range<ParagraphStyle>
" - "
StringAnnotation
" أصبح الآن "AnnotatedString.Range<String>
" - (I8dd1a)
- "
- تم إنشاء TextInputSession جديد لجلسات الإدخال من مكوّنات نصية منخفضة المستوى، مثل CoreTextField. (I8817f، b/177662148)
- يعرِض العنصر القابل للوضع الآن measuredSize، الذي يمثّل الحجم الذي تم قياس تنسيق الطفل وفقًا له. قد لا يتوافق هذا الحجم مع قيود القياس. (Ib2729 وb/172560206 وb/172338608)
- إضافة مُعدِّل selectionGroup الذي يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
أصبح الآن استخدام
defaultFactory
لـcompositionLocalOf
وstaticCompositionLocalOf
مطلوبًا بدلاً من اختياريًا.تزيل هذه التغييرات خطأً محتمَلاً في النوع لأنواع غير القابلة للحذف التي لم يتم توفير مصنع تلقائي لها. في السابق، كان هذا الإجراء يؤدي إلى تقديم مرجع فارغ لنوع لا يمكن أن يكون فارغًا.
بالنسبة إلى الأنواع التي يمكن أن تكون فارغة، ننصحك بتوفير
{ null }
كمصنع التلقائي.لا ننصح باستخدام متغيرات محلية مع أنواع غير فارغة ما لم يكن بإمكانك توفير قيمة تلقائية معقولة. إذا لم تتوفّر قيمة تلقائية معقولة، من المفترض أن تُلقي دالة
defaultFactory
lambda استثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستخدِمي القيمة المحلية سيكون لديهم تبعية ضمنية لتقديمها لا يفرضها نظام الأنواع. (Ifbd2a)تمّت إزالة الطرق المتوقّفة نهائيًا من وحدات واجهة المستخدم (I646f6)
تمّت إعادة تسمية مُعدِّلات المقاس. تمت إعادة تسمية Modifier.width/height/size إلى requiredWidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.preferredWidth/preferredHeight/preferredSize إلى width/height/size. (I5b414)
تمّت إزالة
Modifier.tapGestureFilter
. استخدِمModifier.pointerInput { detectTapGestures(...) }
بدلاً من ذلك. (I266ed، b/175294473)تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. إنّ الطريقة المقترَحة لتنسيق الاستهلاك الجزئي هي Modifier.nestedScroll. (Ie9c9b)
تم نقل اتجاه الشاشة إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)
أصبحت imageResource وvectorResource الآن وظيفتَي إضافة في الملحقَين ImageBitmap وImageVector على التوالي. تم حذف
load{Image,Vector,Font}Resource
دالة. (I89130)تمت إزالة AnimationClockObservable وفئاتها الفرعية. تمت إزالة AnimatedFloat. (Icde52، b/177457083)
تمت إعادة تسمية Providers إلى CompositionLocalProvider.
- لم يعُد مُنشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة قابلة للتجميع من المستوى الأعلى بدلاً من دالة قابلة للتجميع من المستوى الأعلى.
- تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling.
- تم تحويل ComposableLambda إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات أنواع.
- تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات نوع.
- تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime.
- لم تعُد طريقة الدمج في SnapshotMutationPolicy تجريبية.
- تمت إزالة دالة clearRoots ذات المستوى الأعلى من العلامة @TestOnly. لم تعُد هذه الخطوة ضرورية.
- تمّت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد هذه الخطوات ضرورية.
- تمت إزالة Composer.collectKeySourceInformation. لم تعُد هذه الخطوة ضرورية.
- تمّت إزالة الطُرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد هذه الخطوات ضرورية.
- تم نقل واجهات برمجة تطبيقات مختلفة من المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب الدلالات المتعلقة بفئة الملفات في Kotlin، سيؤدي ذلك إلى إيقاف التوافق مع الثنائيات ولكن ليس مع المصدر، لذا من المفترض ألا يشكّل ذلك مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
تمت إزالة
ComponentActivity.setContent()
من compose:ui. استخدِم الرابط منandroidx.activity:activity-compose:1.3.0-alpha01
. تمت إزالةviewModel()
وLocalViewModelStoreOwner
من compose:ui. استخدِم الأرقام منandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b).تم تعديل Modifier.scrollable. يستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473)
تمت إزالة دعم CustomEvens من PointerInputModifier (I02707، b/175294473)
لم تعُد SnapshotStateObserver ميزة تجريبية (Id2e6a)
تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)
تمّت إزالة longPressGestureFilter وdoubleClickGestureFilter. استخدِم Modifier.pointerInput مع وظائف المساعدة، مثل detectTapGestures (I2fedf، b/175294473).
تمّت إزالة واجهة برمجة التطبيقات String.format وإعادة هيكلة الاستخدامات في طرق toString المختلفة لعدم الاستفادة من String.format داخليًا. (Id1290)
تمّت إزالة التأكيدات على dp (I798d2)
تمت إزالة androidx.compose.runtime:runtime-dispatch (I55feb)
تتحقّق الإجراءات النصية الآن من التركيز تلقائيًا (I13777، b/179648629)
تمت إزالة
runBlockingWithManualClock
(I15cdc وb/179664814)يتم الآن تمثيل موضع التمرير في Modifier.verticalScroll()/horizontalScroll() باستخدام الأعداد الصحيحة (I81298).
تمت إعادة تسمية FlingConfig إلى FlingBehavior، ما يتيح الآن تخصيص الصورة المتحركة للتعليق بدلاً من عمليات التحلل المحدَّدة مسبقًا. (I02b86، b/175294473)
تمت إضافة دالة مساعدة مفيدة لتحديد الإجراء نفسه لجميع عمليات ردّ الاتصال ImeAction (I63447، b/179226323)
تمت إزالة طلب الاستدعاء SoftwareKeyboardController من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
لم يعُد يتم استخدام FontSpan وFontWeigthStyleSpan وتمّت إزالتهما. (Ie5b56، b/177423444)
تم إجراء التغييرات التالية على Material API:
- تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص الحشو التلقائي.
- تم إعادة ترتيب المَعلمات في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات بأن تكون المَعلمات المطلوبة قبل المَعلمات الاختيارية.
- تم نقل المَعلمة
icon
في BottomNavigationItem لتظهر بعدselected
وonClick
. - تمت إعادة تسمية المَعلمة
alwaysShowLabels
في BottomNavigationItem إلىalwaysShowLabel
. - تمت إعادة تسمية مَعلمات
bodyContent
في بعض المكوّنات إلىcontent
فقط. - إعادة ترتيب المَعلمات في
ButtonDefaults.buttonColors()
يُرجى العِلم أنّه لن يحدث خطأ في الرمز البرمجي لأنّ نوع المَعلمات لم يتغيّر. يُرجى التأكّد من استخدام مَعلمات مُسمّاة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز البرمجي بالطريقة نفسها التي كان يعمل بها في السابق. - تمت إضافة المَعلمة
secondaryVariant
إلىdarkColors()
. يكون هذا اللون عادةً مطابقًا للونsecondary
في المظهر الداكن، ولكن يتم إضافته للحفاظ على الاتساق وإجراء المزيد من التخصيص. - تمت إزالة ElevationDefaults وanimateElevation() من واجهة برمجة التطبيقات العامة لأنّهما لم يكونا رائجَين أو مفيدين.
- تمت إعادة تسمية
onValueChangeEnd
فيSlider
إلىonValueChangeFinished
وجعلتها nullable. - تمت إعادة تسمية المَعلمة
text
فيSnackbar
إلىcontent
من أجل الاتساق. - تمت إضافة المَعلمة
contentPadding
إلىDropdownMenuItem
للسماح بتخصيص الحشو التلقائي وجعلcontent
إضافةً علىRowScope
. - تمت إعادة تسمية
ModalDrawerLayout
إلىModalDrawer
. - تمت إعادة تسمية
BottomDrawerLayout
إلىBottomDrawer
. - (I1cc66)
إصلاح الأخطاء
- تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد AnimatedVectorDrawable في Compose. استخدِم
animatedVectorResource لتحميل ملف XML بتنسيق
<animated-vector>
كملف AnimatedImageVector وحرِّكه باستخدام painterFor (I8ea91). - تمت إضافة واجهة برمجة تطبيقات جديدة لـ LocalSoftwareKeyboardController محليًا API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
الإصدار 1.0.0-alpha12
10 شباط (فبراير) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha12
. يحتوي الإصدار 1.0.0-alpha12 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمّت إزالة العناصر المركّبة emitView التي تمّ إيقافها نهائيًا. (Ifb214)
- يتطلب Modifier.pointerInput الآن تذكُّر المفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل دالة التشغيل المتعدّد لرصد إدخال المؤشر لأجل التبعيات الجديدة. (I849cd)
- تم تغيير اسم CompositionReference إلى CompositionContext (I53fcb)
- تمت إعادة تسمية Bounds إلى DpRect (I4b32a).
- تعديل على الاختبار: ستبحث الدالة hasText() عن نصوص الإدخال والنص التعريفي/التلميح/العنصر النائب في الحقل النصي (Iab803).
- تم نقل العنصر القابل للتجميع viewModel() وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. ستحتاج الآن إلى إضافة تبعية منفصلة androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لاستخدامها. (I7a374)
- السماح بإجراء nullable في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى String (I0dc82)
- لمطابقة اصطلاحات التسمية بشكل أفضل مع ImageBitmap وImageVector، تم إعادة تسمية ImagePainter ليصبح BitmapPainter للتوازي مع VectorPainter. (Iba381، b/174565889)
- تحسين واجهات برمجة التطبيقات لاختبار السلسلة الفرعية باستخدام السلسلة الفرعية الآن كوسيطة (Icbe78)
- تمت إضافة
Modifier.focusOrder()
يقبل طلبات التركيز بدون تحديد طلب تركيز مخصّص أو مقياس لامبادا. يكون ذلك مفيدًا عندما نحتاج فقط إلى تحديد مرجع وليس ترتيبًا مخصّصًا للتركيز في عنصر قابل للتركيب (I4f52a، b/179180978). - تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الوحدات androidx.activity:activity-compose. (Icf416)
- تمّت إزالة طريقتَي تحليل البنية وcopy() من عدة فئات حيث نادرًا ما كانتا تُستخدَمَين. (I26702، b/178659281)
- تم نقل النافذة المنبثقة لتصبح خاصة بمنصّة معيّنة. تمت إعادة تسمية AndroidPopupProperties إلى PopupProperties، وتم نقل
isFocusable
إلى مَعلمةfocusable
فيPopupProperties
(Ieeea5). - تم نقل مربّع الحوار ليصبح خاصًا بمنصة معيّنة. تمت إعادة تسمية AndroidDialogProperties إلى DialogProperties. (I4ef69، b/179138130)
- تمّ جعل LayoutNode داخليًا (I8a7b1، b/175103944)
- تم استبدال Constraints.enforce بـ Constraints.constrain. (I8b8ea)
- تم إيقاف loadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. تم إيقاف imageResource وloadImageResource وvectorResource وloadVectorResource نهائيًا. استخدِم painterResource بدلاً من ذلك. (I6b809)
- لأسباب تتعلّق بالأداء، أصبحت الآن دلالات ScrollAxisRange تأخذ لامدا التي تعرض قيمًا عائمة بدلاً من القيم العائمة المباشرة. (If4a35، b/178657186)
- تمت إضافة سمات EditableText لوضع علامة على نص الإدخال القابل للتعديل في الحقل النصي لتوفير إمكانية الوصول وطرق الاختبار المقابلة للتحقّق من السمات (I8e07a)
- تمّ جعل OwnerLayer/OwnerScope/OwnerSnapshotObserver داخليًا (I4ffaf، b/175103944)
- تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
- تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
- تم تعديل Snapshot API لتكون أكثر اتساقًا مع ارشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات المتاحة للجميع. (Id9e32)
- تمت إضافة إجراءات الدلالات للتوسيع والتقليص. تمت إضافة expand وhalfExpand في ModalBottomSheetState (Ib5064)
- تم إيقاف Modifier.dragGestureFilter نهائيًا. استخدِم
Modifier.pointerInput { detectDragGestures (...)}
بدلاً من ذلك. بدلاً من ذلك، استخدِم Modifier.draggable لسحب محور واحد (I0ba93، b/175294473). - تمت إعادة تسمية الخلفيات المتغيرة لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كان يُطلق على الخلفيات اسم AmbientFoo، والآن يُطلق على CompositionLocals اسم LocalFoo. (I2d55d)
- تمت إزالة BaseTextField المتوقّف نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
- تم نقل التحديد إلى الأساس. (I7892b)
- على غرار الطريقة التي أزلنا بها سابقًا مكونات
state { 0 }
وشجّعنا الآن على استخدام مكونات مثلremember { mutableStateOf(0) }
، سنزيل مكوناتsavedInstanceState { 0 }
. يجب استخدامrememberSaveable { mutableStateOf(0) }
بدلاً من ذلك، وسيتم حفظه واستعادته تلقائيًا إذا كان من الممكن تخزين النوع المستخدَم داخل MutableState في الحِزمة. إذا كنت في السابق تمرّر عنصر حفظ مخصّصًا، عليك الآن استخدام طريقة تحميل زائدة جديدة من rememberSaveable تحتوي على المَعلمةstateSaver
. سيظهر الاستخدام على النحو التالي:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26، b/177338004) - تمت إضافة دلالات كلمات المرور لتحسين إمكانية الاستخدام (I231ce)
- تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدم غير المحددة لتحسين إمكانية الاستخدام (I6fe05)
- تم إيقاف الأداتَين
emptyContent()
و(@Composable () -> Unit).orEmpty()
نهائيًا لأنّهما لم تعُد تؤثران في الأداء أو تُقدّم أي قيمة إيجابية (I0484d) - لم تعُد الإصدارات
snapshotFlow
وwithMutableSnapshot
تجريبية (I6a45f) - يمكن الآن إغلاق أدوات إعادة التركيب. سيواصل مُعادِلو التركيب المغلقين إعادة التركيب إلى أن تكتمل عمليات التشغيل المتعدّد للوظائف غير المتزامنة الفرعية للتركيب. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينه وبين close. (Ib6d76)
- تمت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وتمت إعادة تسمية AmbientUiSavedStateRegistry إلى AmbientSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
- تمت إعادة تسمية العنصر androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac).
- تم حذف العديد من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا منذ فترة طويلة في حزمة ui. (I2f2dc)
- تم إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime و AndroidUiDispatcher في compose:ui. (Ib5c36)
- لم تعُد فئات Outline.* فئات بيانات (I4879e وb/178001427)
- تمت إزالة
view.captureToImage()
بدون أي بديل. (I7fcd2) - تمّت إضافة واجهة برمجة التطبيقات ColorMatrix API المستخدَمة لتعديل قيم rgb للمحتوى المصدر، كما تمّت إعادة صياغة واجهة برمجة التطبيقات ColorFilter API لتكون واجهة وتتطابق مع تنفيذ PathEffect. (Ica1e8)
- أضِف مَعلمة layoutDirection إلى createOutline في Shape. يتيح ذلك إنشاء أشكال تراعي اتجاه التنسيق. (I57c20، b/152756983)
- تم إيقاف الإجراء onImeActionPerformed نهائيًا. استخدِم KeyboardActions بدلاً منه (If0bbd، b/179071523).
- تمّ تقديم
InfiniteAnimationPolicy
عنصر سياق coroutine الذي سيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء الاختبارات باستخدامComposeTestRule
. (I50ec4، b/151940543) - تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
- تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بإنشاء سمة parentCoordinates جديدة. تقدّم الآن سمة parentCoordinates سمة LayoutCoordintes الخاصة بالمعدِّل الرئيسي. سيؤدي ذلك إلى توفير حالات استخدام أكثر اكتمالاً لـ onSizeChanged() و onGloballyPositioned() (Idfbfd، b/177926591)
- تم إيقاف tapGestureFilter وdoubleTapGestureFilter وlongPressGestureFilter وpressIndicaitonGestureFilter نهائيًا. استخدِم Modifier.clickable أو Modifier.pointerInput مع الدالة detectTapGestures بدلاً من ذلك. (I6baf9، b/175294473)
- تمت إزالة unregisterProvider من SaveableStateRegistry. بدلاً من ذلك، تُعرِض الآن دالة registerProvider() عنصر SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739).
- تمت إعادة تسمية الدالة rememberSavedInstanceState() إلى rememberSaveable() وتم نقلها إلى الحزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
- إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة
- إزالة التحميل الزائد لـ SelectionContainer المتوقف نهائيًا
- (I99c19)
- أصبحت الاختبارات التي يتم فيها استخدام Compose في التسلسلات الهرميّة التي تتم إضافتها أو إزالتها مباشرةً إلى WindowManager أكثر ثباتًا. (Ie81ed، b/175765614)
- تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن تلقائيًا إلى Recomposers التي تم إنشاؤها بشكل كسول على مستوى النافذة ويتم تشغيلها من قِبل ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب وعلامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)
- يوفّر Recomposer.runningRecomposers الآن مسار StateFlow عالميًا لـ RecomposerInfo للقراءة فقط من أجل مراقبة حالة الإنشاء الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current() التي تم تجاهلها الآن. (If8ebe)
- تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
- تقبل EditCommands AnnotatedString. ومع ذلك، فإنّه تغيير في واجهة برمجة التطبيقات فقط ولم يتم تنفيذ ميزة تعديل النصوص بأشكال متعددة حتى الآن. (I4c3ea)
- تمت إزالة "مدّة التشغيل" و"المدة". (Ib9bf4، b/177420019)
- تم نقل CompositionData.asTree() وواجهات برمجة التطبيقات ذات الصلة لفصل وحدة ui-tooling-data وتم وضع علامة عليها كتجريبية (Ic95b8).
- تمت إعادة تسمية المَعلمات في RounderCornerShape وCutCornerShape وCornerBasedShape من left/right إلى start/end لتمكين ميزة النسخ المطابق التلقائي للشكل في الاتجاه rtl. تمّ تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يكون فيها المطلوب هو النسخ المطابق التلقائي. (I61040، b/152756983)
تمّت إعادة صياغة واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمحرِّر Compose لاستخدام واجهة بدلاً من فئة محدّدة. لم تعُد الواجهة تستخدم أيضًا مَعلمة type.
هذا تغيير داخلي من المفترض ألا يؤثر في توافق ملف رمز المصدر، ولكنه تغيير يؤدي إلى إيقاف تشغيل الإصدار الثنائي. (I3b922، b/169406779)
إزالة الدالة العامة StringBuilder.deleteAt بدون قصد (Id6ed9)
إصلاح الأخطاء
- إنّ ComposeViews التي يتم وضعها في تسلسلات هرمية للعرض تكون عناصر فرعية لمحاولة تركيب أخرى، وهي تستضيف الآن عناصر فرعية لمحاولة التركيب الأصلية (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)
- سيتم استبدال Duration وUptime بـ Long milliseconds، وتؤدي هذه الخطوة إلى إزالة الاعتماد على إدخال المؤشر في هذين الصنفين. (Ia33b2، b/175142755، b/177420019)
- تمت إضافة AmbientSavedStateRegistryOwner بشكل مشابه لـ AmbientLifecycleOwner وAmbientViewModelStoreOwner الحاليَين (I9a3e8، b/176756365)
- تم تعديل واجهة برمجة التطبيقات لرسومات المتجهات لإتاحة تحليل التلوين المُطبَّق على جذر رسومات المتجهات. (Id9d53، b/177210509)
- تمت إضافة toolType إلى PointerInputChange للتمييز بين الأجهزة (Iac787، b/175142755)
- تمت إعادة تسمية AmbientWindowManager إلى AmbientWindowInfo (I2686a وb/177084714 وb/177084983)
- إيقاف طُرق الإحداثيات العامة نهائيًا واستخدام طُرق جديدة للإحداثيات المستندة إلى النافذة (Iee284)
- تمت إضافة Modifier.toolingGraphicsLayer الذي يضيف معدِّلًا لطبقة الرسومات عند تفعيل الفحص. (I315df)
- تم وضع علامة "تجريبية" على FocusRequester.createRefs لأنّه قد يتغيّر. (I2d898، b/177000821)
- تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة عليها @ExperimentalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية stateDescriptionRange إلى progressBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontalScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)
- تمّت إزالة PointerInputData وتعديل PointerInputChange لإعطائه جميع حقول PointerInputData. تمّ جعل PointerInputEvent وPointerInputEventData داخليَين لأنّهما لا يتم استخدامهما في أيّ واجهة برمجة تطبيقات علنية. (Ifff97، b/175142755)
- تم تعديل GraphicsLayerScope لتنفيذ الكثافة لدعم عمليات تحويل وحدات dp إلى وحدات بكسل أولية. (Ied528، b/176819695)
- تم تعديل واجهة برمجة التطبيقات الخاصة بالمصفوفات لتتمكّن من اتّباع الترتيب العميق للصفوف وتوفير ثوابت الفهرس للمساعدة في عمليات التحويل بين مختلف طرق تمثيل المصفوفات لمطابقة منطق تحويل الإطار بين SkMatrix وMatrix4 بشكل داخلي. (I432e6)
- تمت إزالة الطرق التجريبية monotonicFrameAnimationClockOf (Ib753f، b/170708374)
- نقل String.fintPrecedingBreak وString.fingFollowingBreak إلى InternalTextApi (I657c4)
- تمت إزالة androidx.compose.ui.util.isSurrogatePair من واجهة برمجة التطبيقات العامة. (Ia9494)
- تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text
- لم تعُد TransformedText فئة بيانات (Ie672a)
- تمت إزالة
data class
من الصفوف التالية:- InlineTextContent
- LocaleList (I605c7)
- لم تعُد الفئات التالية فئات بيانات:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- تم تغيير VisualTransformation لتكون واجهة وظيفية (I3bba4)
- تمت إضافة نوع مَعلمة مرجع دالة (I5e1bd).
- إضافة حدود محوَّلة إلى InspectorNode (Ice42f)
إصلاح الأخطاء
- تم إيقاف وظائف onCommit وonDispose وonActive نهائيًا لصالح واجهات برمجة التطبيقات SideEffect وDisposableEffect (If760e).
تغييرات على وظائف المصنع لـ Font/FontFamily/Typeface
- تمّت إضافة دوال المصنع التي تبدأ بحرف لاتيني كبير.
- تم إيقاف دوال المصنع السابقة نهائيًا التي تحتوي على أحرف أولى صغيرة.
- تعرض وظائف المصنع الجديدة FontFamily بدلاً من الفئات الفرعية.
- تم إخفاء أدوات إنشاء الفئات الفرعية، بحيث لا يمكن إنشاؤها إلا من خلال دوال المصنع.
- تمت إعادة تسمية Font.asFontFamily إلى Font.toFontFamily (I42aa7)
تمّت إضافة
ComposeContentTestRule
التي تمتدComposeTestRule
وتحدّدsetContent
التي تمّت إزالتها منComposeTestRule
. تمت إضافة طريقة المصنعcreateEmptyComposeRule()
التي تعرضComposeTestRule
ولا تبدأ نشاطًا نيابةً عنك. استخدِم هذا الإجراء عندما تريد إطلاق نشاطك أثناء الاختبار، مثلاً باستخدامActivityScenario.launch
(I9d782، b/174472899).أصبح animateAsState الآن animateFooAsState، حيث Foo هو نوع المتغيّر الذي يتمّ تطبيق مؤثرات عليه، مثل Float وDp وOffset وما إلى ذلك (Ie7e25).
تمت إضافة مَعلمة وصف المحتوى إلى "الصورة" و"الرمز". يتم استخدامه لتوفير وصف لخدمات تسهيل الاستخدام (I2ac4c).
أزِل displaySize لأنّه يجب تجنُّبه. من الأفضل عادةً استخدام حجم onRoot() أو حجم النافذة على الأقل. (I62db4)
كان OnSizeChanged يُبلغ عن حجم محتويات التنسيق. ويُبلِغ الآن عن الحجم في موضعه ضمن سلسلة المُعدِّلات. (I36b78، b/177562900)
تم إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائد نهائيًا وتمت إعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكنّها تحمل اسمًا مختلفًا فقط لاتّباع اصطلاحات التسمية في Compose (I4137b).
يقبل TextFieldValue AnnotatedString. ومع ذلك، فإنّه تغيير في واجهة برمجة التطبيقات فقط ولم يتم تنفيذ ميزة تعديل النصوص بأشكال متعددة حتى الآن.
- تمت إزالة
initial
من مَعلمات أداة إنشاء EditingBuffer. (I326d5)
- تمت إزالة
تم إيقاف invalidate وcompositionReference() نهائيًا الآن لصالح currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)
تم تغيير AnnotatedString لتصبح ممتدة من kotlin.CharSequence. وبالتالي، أصبحت length وsubSequence الآن دوالًا فردية، وتمت إزالة دوال التوسيع. (Iaf429)
يحلّ RememberObserver محلّ CompositionLifecycleObserver ، وقد تم إيقاف CompositionLifecycleObserver نهائيًا.
RememberObserver
هو بديل لمحاولةCompositionLifecycleObserver
مع دلالات معدَّلة ومحاولة أساليب تمت إعادة تسميتها. يمكن إجراء عملية التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكُّرها مرة واحدة فقط، وهي الممارسة المُقترَحة والتي ستظل كذلك. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاءonRemembered
لكل مرجع يتم فيه استدعاءonEnter
مرة واحدة فقط. تم استدعاءonEnter
عدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثلWithConstraints
وScaffold
، ما يجعل الضمان الوحيد لonEnter
غير موثوق به وتمّت إزالته من أجلRememberObserver
.تضيف
RememberObserver
onAbandoned
التي يتمّ استدعاؤها إذا تمّت إعادة مثيلRememberObserver
من طلب الاستدعاء الذي تم تمريره إلىremember
ولكنّه لم يتمّ تذكره في حالة الإنشاء ، وبالتالي لن يتمّ استدعاءonRemembered
مطلقًا. يمكن أن يحدث ذلك إذا كان هناك استثناء ينهي عملية الإنشاء قبل اكتمالها أو يتم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تُنشئ عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كانت نسخةRememberObserver
التي تتّبع اقتراح المراجع الفردية أعلاه تتتبّع مرجعًا خارجيًا، يشير كلّ منonForgotten
وonAbandoned
إلى أنّه لم يعد هناك حاجة إلى المرجع. إذا كان الكائن يتتبّع العمل الذي بدأه أو الموارد التي تم تخصيصها فيonRemembered
، يمكن تجاهلonAbandoned
لأنّه لن يتم استدعاؤه في حال تم استدعاءonRemembered
. (I02c36)العمليات الحسابية المتوقّفة نهائيًا بين وحدتَي نص أو أكثر إيقاف الدالتَين TextUnit.Sp وTextUnit.Em نهائيًا، مع تفضيل استخدام دوال الإضافات، مثل Int.sp وInt.em (I48369)
إنّ المراجع في المكتبات التي لا تتضمّن مراجع عامة مُعلَن عنها صراحةً (مثلاً من خلال public.xml) أصبحت الآن خاصة بشكل تلقائي. (Ia1dcc، b/170882230)
تم إيقاف عنصرَي ScrollableColumn/Row نهائيًا. إنّ استخدام ScrollableColumn أقل فعالية مقارنةً بـ LazyColumn عندما يكون لديك محتوى كبير قابل للتمرير، لأنّه باستخدام LazyColumn يمكننا فقط إنشاء/قياس/رسم العناصر المرئية. لمنع المستخدمين من استخدام الطريقة غير الفعّالة، قرّرنا إيقاف ScrollableColumn وScrollableRow نهائيًا وتعزيز استخدام LazyColumn وLazyRow بدلاً من ذلك. سيظل بإمكان المستخدمين تحديد أنّهم لا يحتاجون إلى السلوك البطيء واستخدام عوامل التعديل مباشرةً على النحو التالي: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b، b/170468083)
طريقة إنشاء
items(count: Int)
جديدة لنطاق LazyColumn/LazyRow/LazyVerticalGrid أصبحت الدالتانitems(items: List)
وitemsIndexed(items: List)
الآن دوالّ إضافية، لذا عليك استيرادهما يدويًا عند استخدامهما. وظائف إضافية جديدة للمصفوفات:items(items: Array)
وitemsIndexed(Array)
(I803fc، b/175562574)يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction.
- يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
الاستفادة من TestCoroutineDispatcher في الاختبار (I532b6)
تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)
تم إيقاف العنصر Transition المستنِد إلى TransitionDefinition نهائيًا (I0ac57)
تمت إزالة TextUnitType.Inherit. يُرجى استخدام TextUnitType.Unspecified بدلاً من ذلك. (I9ff64)
الإصدار 1.0.0-alpha10
13 كانون الثاني (يناير) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha10
. يحتوي الإصدار 1.0.0-alpha10 على هذه المراجعات.
تغيير قد يؤدي إلى حدوث أعطال
تسمح إعادة هيكلة واجهة برمجة التطبيقات الخاصة بالمجمِّع الداخلي بجمع التغييرات في العقد التي تم إنشاؤها نتيجةً للتركيب في مرحلة "تطبيق التغييرات" ، بعد اكتمال جميع وظائف
@Composable
.هذا تغيير سلوكي أساسي قد يؤثر في رمز التطبيق لأنّه لم تعُد العقد متاحة من واجهات برمجة التطبيقات الداخلية والتجريبية إلى أن يتم تطبيق التغيُّرات. يمكن عادةً حلّ هذه المشكلة من خلال إحاطة الرمز البرمجي بهذه التبعيات في ملف
SideEffect
قابل للتركيب لتأجيل تنفيذ الرمز البرمجي إلى ما بعد إنشاء العقد و تهيئةها. (I018da)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة Modifier.focusOrder() التي يمكن استخدامها لتحديد ترتيب مخصّص للتنقّل في التركيز (I90cf5 وb/175899543 وb/170155556 وb/170155429)
- تمت إزالة focusObserver المتوقّف نهائيًا واستخدام onFocusChanged أو onFocusEvent بدلاً منه (I3ecb9، b/175156387)
- التغييرات في واجهة برمجة التطبيقات EditOperations API
- تمت إعادة تسمية EditOperation باسم EditCommand
- تمت إضافة اللاحقة Command لعمليات التنفيذ المحدّدة لـ EditOperation
- لم تعُد فئات البيانات هي EditCommand.
- تمت إعادة تسمية الدالة EditOperation.process إلى applyTo
- تمت إعادة تسمية InputEventListener إلى InputEventCallback
- (I0a366)
- تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَمة. تم تغيير Size.center() ليصبح سمة. (I973f7)
- ستتمكّن الآن وحدة ui-test من ضبط إنشاء أدوات إعادة التركيب لواجهات المستخدم التي يتم اختبارها (Ibebd8).
- تم تعديل Velocity ليكون لها أجزاء مكوّنة وعمليات حسابية. (Ib0447)
- تمت إعادة تسمية
@ExperimentalTesting
إلى@ExperimentalTestApi
لتكون متسقة مع التعليقات التوضيحية المشابهة لواجهة برمجة التطبيقات التجريبية (Ia4502 وb/171464963). - تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
- تمت إزالة الفئات DpInverse وDpSquared وDpCubed غير المستخدَمة. (I4d62b)
- تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
- أضِف دالة استدعاء لإعلام المالك عند تغيير حدود layoutnode. (I72fd1)
- تمت إضافة isSpecified وisUnspecified وuseOrElse لklassen المضمّنة التي تحتوي على ثابت Unspecified. (I93f7b، b/174310811)
توسيع نطاق واجهات برمجة التطبيقات [Abstract]ComposeView للسماح بإعادة استخدام المشاهد المستندة إلى Compose، مع التخلص من تركيبتها لإعادة إنشائها مجددًا لاحقًا أضِف واجهات برمجة تطبيقات لتثبيت واكتشاف أدوات إعادة التركيب على مستوى النافذة وCompositionReferences لإنشاء تركيبات فرعية.
أضِف ViewCompositionStrategy لضبط استراتيجية التخلص من التركيب في [Abstract]ComposeViews. السلوك التلقائي هو التخلص عند فصل النافذة. (I860ab)
إزالة واجهة برمجة التطبيقات العامة Any.identityHashCode() (I025d7)
تمت إزالة واجهة برمجة التطبيقات toStringAsFixed لصالح استخدام String.format بدلاً من ذلك مباشرةً. (Iaba6b)
إضافة Toggle إلى ملف foundation Strings.kt (I4a5b7، b/172366489)
تم نقل nativeClass إلى ملف برمجي ui وجعله داخليًا. تم تعديل استخدامات nativeClass في تنفيذات equals لاستخدام 'is MyClass' بدلاً من ذلك. (I4f734)
تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48 وb/175160751 وb/175160532 وb/175077829)
تمّ تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات إلى SelectionManager بشأن تعديلات Selectable. (I6ff30، b/173215242)
تمّت إضافة السمة Outline.bounds للحصول على مستطيل الحدود لعمليات تنفيذ المخططات المختلفة. (I16e74، b/175093504)
تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255).
لم تعُد فئة البيانات ImeOptions وKeyboardOptions متوفّرة (I3c898، b/168684531)
تغييرات في VisualTransformation API
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم تعُد PasswordTransformation فئة بيانات.
- تم نقل OffsetMapping إلى ملفه الخاص
- (I0bdf3)
تمت إعادة تسمية Position إلى DpOffset وإزالة getDistance() (Ib2dfd)
تم تغيير دالة fun Dp.isFinite() إلى val Dp.isFinite (I50e00)
إصلاح الأخطاء
- يعرض تطبيق Recomposer الآن مسارًا لحالته الحالية، ما يتيح مراقبة نشاطه ونشاط التأثيرات المرتبطة به. (Ifb2b9)
- يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).
- تم استبدال
animate()
الآن بـanimateAsState()
، الذي يعرضState<T>
بدلاً منT
. يتيح ذلك تحسين الأداء، لأنّه يمكن تضييق نطاق الإبطال إلى حيث تتم قراءة قيمة State. (Ib179e) - أضِف واجهة برمجة التطبيقات لدور Semantics وأضِف الدور كمَعلمة لسمة SemanticsModifier التي يمكن النقر عليها واختيارها وتبديلها. تم تغيير Modifier.progressSemantics لكي يتمكّن Slider من استخدامه أيضًا. (I216cd)
- واجهة برمجة تطبيقات جديدة مستندة إلى وظائف الاستدعاء المتعدّد
Animatable
تضمن التداخل المتبادل بين الرسومات المتحركة- سمة DecayAnimationSpec جديدة لتتوافق مع ميزة التحلل المتعدد الأبعاد
- (I820f2، b/168014930)
الإصدار 1.0.0-alpha09
16 كانون الأول (ديسمبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha09
. يحتوي الإصدار 1.0.0-alpha09 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة KeyEvent.Alt الذي تم إيقافه نهائيًا. استخدِم KeyEvent.isAltPressed بدلاً من ذلك. (Idd695)
- تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter نهائيًا، ويمكنك استخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً منهما (Idbf1b، b/175156384)
- تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17، b/168511863، b/168511484)
- بالنسبة إلى واجهات برمجة التطبيقات الخاصة بتعليق إدخال مؤشر الماوس، تمت إعادة تسمية دالة HandlePointerInputScope إلى AwaitPointerEventScope ودالة handlePointerInput() إلى awaitPointerEventScope(). (Idf0a1، b/175142755)
- أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الموافقة (I0a1ec).
- إضافة تعريفات إزالة البنية لإنشاء نُسخ من FocuSRequester (I35d84، b/174817008)
- تمت إعادة تسمية accessibilityLabel إلى contentDescription. تمت إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)
- تمت إزالة الأحداث المخصّصة من واجهة برمجة التطبيقات لتعليق إدخال المؤشر (Ia54d5، b/175142755)
- تمّت إضافة العديد من الدوالّ الجديدة في SelectionRegistrar، كما تمت إعادة تسمية onPositionChange إلى notifyPositionChange. (Ifbaf7)
- المزيد من أعضاء LayoutNode الذين وضعنا علامة "داخلي" عليهم (I443c6)
- تمّ تقديم LayoutInfo ليستخدمه فريقا الأدوات والاختبار (I9b190).
- تمّت إزالة AndroidOwner إلى ملف داخلي (Ibcad0، b/170296980)
- تمت إزالة التعليق التوضيحي ExperimentalPointerInput (Ia7a24)
- تمت إضافة نظام لتصفّح الصفحات المُدمجة. يُرجى الرجوع إلى Modifier.nestedScroll للاطّلاع على مزيد من التفاصيل (I36e15، b/162408885).
- تمّ جعل subcomposeInto(LayoutNode) داخليًا (Id724a)
تم تغيير واجهة
Applier
لتبسيط إنشاء الأشجار من الأسفل إلى الأعلى بدلاً من الأعلى إلى الأسفل.تمت إعادة تسمية الطريقة
insert()
ليصبح اسمهاinsertTopDown()
.تمت إضافة طريقة جديدة، وهي
insertBottomUp()
.يُدخل مُطبِّق العقد في الشجرة التي يعدّلها باستخدام
insertTopDown()
أوinsertBottomUp()
، وذلك استنادًا إلى الإجراء الذي يحقّق أداءً أفضل.إنّ بعض الأشجار، مثل
LayoutNode
وView
، تكون أكثر فعالية عند إنشائها من أسفل إلى أعلى مقارنةً من أعلى إلى أسفل. قبل هذا التغيير، كان مطلوبًا استخدام حزمة من عمليات الإدراج لتنفيذ الإجراء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كلّ أداة تطبيق تحتاج إلى الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير،Applier
يتجاوزinsertBottomUp()
لإنشاء شجرة من الأسفل إلى الأعلى وinsertTopDown()
لإنشاء الشجرة من الأعلى إلى الأسفل. (Icbdc2)تمت إضافة السمتَين dismissOnBackPress وdismissOnClickOutside إلى AndroidDialogProperties. تسمح هذه الإعدادات بضبط وقت استدعاء دالة onDismissRequest في مربّع الحوار. (If5e17)
تمت إضافة واجهة برمجة التطبيقات painterResource API لمعالجة تحميل عناصر Painter بشكل غير شفاف من تنسيقات مواد العرض النقطية (مثل ملفات PNG) أو VectorDrawables. لم يعُد على المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم استدعاء هذه الطريقة للحصول على عنصر Painter لاستخدامه في مكونات الصور أو عناصر تعديل Painter. (I2c703، b/173818471)
تمت إضافة Modifier.clearAndSetSemantics لمحو سمات العناصر المشتقة وضبط سمات جديدة. (I277ca)
تم نقل ContentDrawScope إلى وحدة ui-graphics لتكون مع DrawScope. (Iee043، b/173832789)
تمّ تقديم واجهة برمجة التطبيقات PathEffect graphics API لتوفير أنماط مختلفة للأشكال التي تحتوي على خطوط. تم إيقاف استخدام NativePathEffect نهائيًا لصالح التنفيذ المتوقّع/الحقيقي لـ PathEffect. (I5e976، b/171072166)
تمت إضافة واجهات IdlingResource إلى Compose، كخيار متوافق مع Compose لموارد الإستراحة في Espresso. ويمكن تسجيلها وإلغاء تسجيلها من خلال ComposeTestRule (I433f3).
تمت إزالة التسجيل (أو إلغاء التسجيل) العام لـ ComposeIdlingResource والتسجيل (أو إلغاء التسجيل) العام للساعات في ComposeIdlingResource (I32660).
إصلاح الأخطاء
- تعرِض الآن دالات Lambda في مُعدِّلات البادئة IntOffset بدلاً من Float. (Ic9ee5، b/174137212، b/174146755)
تمت إزالة SlotTable وSlotReader و SlotWriter من واجهة برمجة التطبيقات المتاحة للجميع. كانت هذه الواجهتَان تحملان سابقًا الاسم InternalComposeAPI. وهي الآن داخلية لوحدة الإنشاء.
تمّت إضافة CompositionData وCompositionGroup كبديلين لواجهة برمجة التطبيقات ui-tooling API لاستخدامهما في استخراج معلومات التركيب. هذه الواجهات برمجة تطبيقات عامة، ولكنّها ليست مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling API لأنّها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling API (I31a9c).
تم إعادة صياغة ShaderBrush لإنشاء مثيل لمخطّط الإضاءة بشكلٍ كسول عند توفّر معلومات تحديد حجم بيئة الرسم. يكون ذلك مفيدًا لتحديد التدرجات التي تشغل حدود الرسم الكاملة للعنصر القابل للتركيب في وقت التركيب، بدون الحاجة إلى تنفيذ عمليات DrawModifier مخصّصة.
واجهات برمجة التطبيقات المتوقّفة لدالة إنشاء الدالة المتدرجة بدلاً من طرق الإنشاء على عنصر Gradient (I511fc، b/173066799)
إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed نهائيًا استخدِم LazyColumn وLazyRow بدلاً من ذلك (I5b48c).
دالة BuildCompat.isAtLeastR المتوقّفة نهائيًا (Idb37e)
تمت إضافة دالة المصنع buildAnnotatedString لإنشاء AnnotatedString. دالة annotatedString builder المتوقّفة نهائيًا (Idfe0b)
تمّت إزالة طرق التوسيع في Float وDouble لتحويل القيم إلى وحدات راديان. تم نقلها لتصبح دالة خاصة ضمن التنفيذ PathParser الذي كان هو المكان الوحيد الذي تم استخدامه فيه (I25f52)
الإصدار 1.0.0-alpha08
2 كانون الأول (ديسمبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha08
. يحتوي الإصدار 1.0.0-alpha08 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- إضافة إجراء الرفض الدلالي (I2b706)
- تم نقل واجهات برمجة التطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifierDeprecated.kt لدمج طرق المساعدة/الأسماء البديلة للأنواع للمساعدة في نقل البيانات من واجهات برمجة التطبيقات المتوقفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
- تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer كما تم تعديل الصفوف ذات الصلة إلى GraphicsLayer وفقًا لملاحظات الواردة من واجهة برمجة التطبيقات. (I0bd29، b/173834241)
- تمت إضافة الطريقتَين placeable.placeWithLayer() وplaceable.placeRelativeWithLayer() اللتين تتيحان للتنسيقات المخصّصة وعوامل تعديل التنسيق وضع عنصر فرعي من خلال تقديم طبقة رسومات لرسمه. بعد ذلك، يمكننا تحسين عمليات إعادة الرسم أولاً، لكي لا نضطر إلى إعادة رسم المحتوى عندما نحتاج إلى نقل عنصر فرعي، وثانيًا، يمكننا تطبيق عمليات تحويل الرسم على العنصر الفرعي (Ibd8f6 وb/170296989 وb/171493718 وb/173030831).
- تمت إزالة
<T>
من تعريف SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8) - تمت إضافة واجهات برمجة التطبيقات Modifier.scale/rotate
لتسهيل استخدام drawLayer.
- تمت إعادة تسمية
Modifier.drawOpacity
إلىModifier.alpha
- تمت إعادة تسمية
Modifier.drawShadow
إلىModifier.shadow
(I264ca، b/173208140)
- تمت إعادة تسمية
- جعلت حقلَي uptime و position في PointerInputData غير قابلَين للحذف. (Id468a)
- يضبط MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستندة إلى لغة Material Design استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة للاختيار. (I1e6f4، b/139320372، b/139320907)
- تمت إضافة WindowManager.isWindowFocused للتحقّق مما إذا كانت نافذة المضيف في المقدّمة، وWindowFocusObserver الذي يقدّم دالة استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
- تم تعديل TransformOrigin API
لإدراج بنية تحليل لعرض
pivotFractionX
وpivotFractionY
على هيئةcomponent1
وcomponent2
(If43c4، b/173586560) - تمت إضافة فحص أخطاء لأسماء مَعلمات lambda القابلة للتركيب وموقعها، وذلك للتحقّق من اتّساقها مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم
children
كاسم لدالة lambda اللاحقة إلىcontent
، وفقًا لفحص الأخطاء الإملائية والإرشادات. (Iec48e) - تمت إضافة واجهة برمجة التطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث مفتاح. (I50ed9)
- تمت إضافة ميزة "تحميل زائد" جديدة في
Modifier.drawLayer()
. تأخذ هذه الوظيفة كتلة lambda في GraphicsLayerScope جديدة حيث تحدِّد مَعلمات الطبقة بطريقة تسمح بتخطّي إعادة التركيب وإعادة التنسيق عند حدوث تغيير في الحالة. أصبح DrawLayerModifier داخليًا الآن استعدادًا لنقل منطقه إلى طريقة placeable.placeWithLayer() في LayoutModifier (I15e9f، b/173030831) - تم إيقاف الخلفيات المُدمجة نهائيًا التي تحمل
Ambient
كلاحقة، وتم استبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك باتّباع إرشادات الخلفيات المُدمجة وCompose API الأخرى. (I33440) - تم نقل
androidx.compose.ui.text.Typeface
إلىandroidx.compose.ui.text.font.Typeface
(Ic2b81) - تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants لتصبح mergeDescendants. (Ib6250)
- أداة جديدة لرصد إيماءات السحب تعمل على تعليق واجهة برمجة التطبيقات الخاصة بالمؤشر الإدخال، بما في ذلك قفل الاتجاه (Icef25)
- تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder لتكون صفًا داخليًا من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة نوع بديل لواجهة VectorAssetBuilder لربطها بواجهة ImageVector.Builder من أجل التوافق. (Icfdc8)
- تمت إعادة تسمية ImageAsset و الطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
- أضِف مَعلمة zIndex لـ place() في PlacementScope حتى يعمل Modifier.zIndex() الآن كـ LayoutModifier ويمكن لأي تنسيق مخصّص ضبط فهرس zIndexes لأطفاله مباشرةً في قالب موضع الإعلان (I711f7، b/171493718).
- تم نقل خصائص الدلالات الأساسية إلى ui (I6f05c).
- إيقاف place(Offset) وplaceRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع وحدات الإزاحة int بدلاً من ذلك (I4c5e7).
- تمّت إزالة واجهات برمجة التطبيقات التي تمّ إيقافها نهائيًا في السابق: تمّت إزالة Modifier.onPositioned، استخدِم Modifier.onGloballyPositioned. تمّت إزالة Modifier.onDraw، استخدِم Modifier.onDrawBehind. تمّت إزالة Modifier.plus، استخدِم Modifier.then. تمت إزالة Color.Unset، استخدِم Color.Unspecified. تمّت إزالة فئة PxBounds، استخدِم Rect بدلاً من ذلك. (Ie9d02، b/172562222)
- تم تعديل واجهة "المحاذاة" وجعلها صالحة للاستخدام. (I46a07، b/172311734)
- تمّت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وإشارة الضغط باستخدام إدخال المؤشر المعلّق الجديد. تمت أيضًا إضافة بعض الأدوات التي تسهّل على المطوّرين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
- تمت إعادة تسمية
id
إلىlayoutId
فيLayoutIdParentData
. تمت إعادة تسميةMeasurable.id
إلىMeasurable.layoutId
. (Iadbcb، b/172449643) - أداة جديدة لرصد الإيماءات التي تستخدم تقنية اللمس المتعدّد، بما في ذلك مساعِد لرصد التدوير والتكبير والتصغير (Ic459d)
- تمّت إضافة واجهات برمجة التطبيقات SweepGradientShader وSweepGradientBrush. (Ia22c1)
- أصبح التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521).
إضافة واجهات برمجة تطبيقات لميزة الانتقال للأعلى أو للأسفل المستندة إلى وظائف التشغيل المتعدّد:
تضيف هذه الإضافة LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهة برمجة تطبيقات من المستوى الأدنى للتحكّم في الانتقال للأعلى أو للأسفل. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكّم في الانتقال للأعلى أو للأسفل، والتي تنتظر إلى أن ينتهي الانتقال للأعلى أو للأسفل قبل العودة. (Ie5642)
يجب إضافة Modifier.focusable في الأساس. استخدِم هذا الإجراء لإضافة سلوك قابل للتركيز إلى مكوّن، مع الدلالات وإمكانية الوصول الصحيحة. (I41eb9 وb/152525426 وb/162865824)
يجب توفير عمليات تنفيذ تلقائية للطرق والسمات في AnimationClockTestRule التي يمكن تفويضها إلى
clock
(I7ea3d، b/173399709).يمكن الآن لـ AndroidComposeTestRule قبول مشغّلات نشاط مخصّصة (Ib8288 وb/153623653 وb/154135019).
تم إيقاف TextLayoutResult.getLineVisibleEnd نهائيًا. كبديل، يحتوي TextLayoutResult.getLineEnd الآن على مَعلمة جديدة هي visibleEnd. (I73282)
واجهة برمجة التطبيقات TextFieldValue API المعدَّلة
- جعلت TextFieldValue.composition للقراءة فقط
- تمّت إزالة استثناء تمّ طرحه لنطاق اختيار غير صالح (I4a675، b/172239032)
إتاحة عنصر TtsAnnotation لمحرّك تحويل النص إلى كلام (I54cc6)
واجهات برمجة تطبيقات جديدة لتشغيل الرسوم المتحركة في وظائف التشغيل المتعدّد (Ied662)
إصلاح الأخطاء
- تمت إعادة تسمية مَعلمة alignment الخاصة بمربّع المحتوى إلى contentAlignment. (I2c957)
- تمت إعادة تسمية معدّلات offsetPx إلى offset. وهي الآن تستخدم مَعلمات lambda بدلاً من State. (Ic3021، b/173594846)
- تمت إضافة مَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
- تمت إضافة فحص أخطاء لإعدادات المُعدِّل في الدوالّ القابلة للتجميع. يتحقّق فحص الأخطاء هذا من تسمية المَعلمة ونوعها ونوع القيمة المعروضة وترتيبها للتأكّد من توافقها مع إرشادات Compose. (If493b)
- تمت إضافة خيار مؤقت للسماح لـ TestAnimationClock بالاستناد إلى MonotonicFrameClock (I1403b، b/173402197)
- تمت إضافة حزمة Android Typeface. يمكنك تحميل نوع خط Android
من خلال دالة
typeface
، أيtypeface(Typeface.DEFAULT)
. تمت أيضًا إعادة تسميةtypefaceFromFontFamily()
إلىtypeface()
(I52ab7) - تمت إضافة فحص أخطاء لضمان أنّ وظائف مصنع Modifier محدّدة كإضافات على Modifier، حتى يمكن ربطها ببعضها بسلاسة. (I07981)
- إزالة وحدة اختبار واجهة المستخدم القديمة ووحداتها النموذجية (I3a7cb)
- لم تعُد أداة Recomposer تقبل سياق EmbeddingContext، ويتم الحصول على التبعيات المطلوبة لجدولة المهام من effectCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تبدأ عمليات دمج المنصات في التعامل مع اللقطات الشاملة الخاصة بها. (I02369)
- نقْل معلومات النمط إلى عقدة تسهيل الاستخدام (If5e8d)
- تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified من أجل الاتساق مع الوحدات الأخرى. (Ifce19)
الإصدار 1.0.0-alpha07 لواجهة مستخدم ميزة "إنشاء"
11 تشرين الثاني (نوفمبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة فئة ScaleFactor
المضمّنة لتمثيل عوامل التكبير
للمحورين الأفقي وعمودي
بشكل مستقلّ عن بعضهما البعض بغرض
إتاحة حالات استخدام التكبير غير المتّسق.
- تمت إضافة طريقة computeScaleFactor إلى ContentScale
- تمت إضافة ContentScale.FillBounds لإجراء عملية تكبير/تصغير غير منتظمة لتمديد حدود المصدر لكي تشغل الوجهة بالكامل.
- تمت إضافة طرق عوامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
- (Ic96a6، b/172291582)
- تمت إضافة مصنعَي BiasAlignment وBiasAbsoluteAlignment لإنشاء Alignements. (Iac836، b/169406772)
- السماح للمطوّر بإلغاء التركيز بشكلٍ قسري (I90372)
- تم إصلاح خطأ كان يتسبب في عدم رسم الارتفاع لـ "المشاهد" داخل "الإنشاء". (If7782)
- تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
- إضافة إمكانية استخدام مسافة الكاميرا لإكمال عمليات التحويل الثلاثية الأبعاد rotationX/rotationY في واجهات برمجة التطبيقات للطبقات (I40213، b/171492100)
- تمت إضافة SelectionContainer بدون دالة ردّ الاتصال (Ibfadb)
- تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7).
- تمت إزالة التعتيم من المُعدِّل drawShadow() لأنّه كان مربِكًا. (I82c62، b/171624638)
- تم نقل MeasureResult خارج MeasureScope. (Ibf96d، b/171184002)
- تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
- تمّت إزالة FocusState2 (I686cb، b/168686446) التي تمّ إيقافها نهائيًا.
- أصبح مُعدِّل "فهرس المستوى" داخليًا الآن (I1808b، b/171493718)
- تم تعديل نوع الإرجاع لطريقة lerp في مَعلمات Size لعرض قيمة مقاس غير صفرية لتجنُّب التفاف غير الضروري. (Ib0044)
- تمت إضافة TestMonotonicFrameClock لاختبار الرمز البرمجي الذي يعتمد على MonotonicFrameClock في Compose في انتظار أحداث اللقطات في التركيب باستخدام runBlockingTest في kotlinx-coroutines-test (I4402f)
- تمت إزالة GestureScope.localToGlobal (I15299، b/171462785)
- تمت إضافة أداة البحث عن
onAllNodesWithSubstring
(I81dd7، b/171462889) - تم إيقاف وحدة androidx.ui.test نهائيًا. يُرجى نقل الإصدار إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8).
إصلاح الأخطاء
- تم نقل captureToBitmap إلى captureToImage. (I86385)
- تم إيقاف عنصر foundation.Text نهائيًا واستبداله بعنصر material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية لا تتضمّن أي آراء ولا تستخدِم قيمًا من مظهر، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
- تعديل TextFields لقبول KeyboardOptions (Ida7f3)
- إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
- تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
- تمت إضافة provideDefault كبديل لتقديم القيم المحيطة، ويمكن استخدامه لتحديد القيم المحيطة التي لن يتم ضبطها إلا في حال عدم توفّر قيمة محيطة مقدَّمة من قبل. (Id6635، b/171024925)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- تقديم وحدة ui-test-junit4 (Ib91f8)
- تمت إعادة تسمية
relativePaddingFrom
إلىpaddingFrom
. تمت إضافة المُعدِّلpaddingFromBaseline
لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813) - تمت إعادة تسمية LaunchedTask إلى LaunchedEffect للحفاظ على الاتساق مع واجهات برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدونparam subject لتعزيز أفضل الممارسات. (Ifd3d4)
- تمّت إضافة موارد قابلة للتجميع يمكن إعادة تركيبها عند تعديل الإعدادات. (I6387c، b/167352819)
- يتطلب Recomposer الآن CoroutineContext عند الإنشاء (Ic4610)
- تجميع قيم
zIndex
عند تطبيق عدّةModifier.zIndex()
في السابق، كان الخيار الأول هو الخيار الفائز. (Ic514c، b/170623936) - تغييرات على طريقة تنفيذ SlotTable الداخلية التي من المفترض ألا تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
- تمت إضافة خيار IME للتصحيح التلقائي للوحة المفاتيح (I57b8d)
- تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
- تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات العامة. (Ic2e45)
المساهمة الخارجية
- تم إيقاف نشر العنصر الداخلي androidx.compose.ui:ui-text-android (Ib93fa)
الإصدار 1.0.0-alpha06
28 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أصبح Recomposer الآن عنصر CompositionReference وأحد عناصر التكوين صالحة. أصبح استخدام ميزة "إعادة التركيب الصريح" مطلوبًا الآن في عدد أقل من الأماكن. (I4036f)
- إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لبيان بشكل أفضل أنّ واجهة برمجة التطبيقات القابلة للتركيب تستفيد من "التذكر" للحفاظ على البيانات في التراكيب (Ifda43)
- تم تعديل واجهة برمجة التطبيقات Modifier.drawWithCache لإظهار ContentDrawScope كنطاق مستلِم بدلاً من DrawScope من أجل منح عمليات التنفيذ إمكانية إعادة ترتيب أوامر الرسم. يكون ذلك مفيدًا لحالات استخدام الدمج/ التلوين التي يجب فيها أولاً عرض بكسل المحتوى كي يتم تطبيق خوارزمية وضع الدمج المقابلة بشكل صحيح. (Ie7ec8)
- نقل SimpleContainer إلى PopupTestUtils.kt (I78c57)
- لم تعُد ConsumedData فئة بيانات. لمعرفة التفاصيل، يُرجى الاطّلاع على https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- يجب تصحيح موضع الاسم المعرِّف باتجاه اليمين إلى اليسار. (I6e1e0)
- إعادة صياغة DrawScope و
ContentDrawScope لتكون واجهات
بدلاً من فئات مجردة
- تم إنشاء عملية تنفيذ CanvasDrawScope لـ DrawScope
- إعادة صياغة عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً من ذلك
- تم إنشاء DrawContext لتغليف التبعيات لـ DrawScope
- إزالة الطرق المتوقّفة نهائيًا في DrawScope (I56f5e)
- تغيير جذري: تمت إزالة القيمة المعروضة من
PointerInputFilter.onPointerEvent(...)
لأنّ القيمة الوحيدة التي من المفترض أن يكون بالإمكان تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات منPointerInputFilter.onPointerEvent(...)
، يمكنك الآن تغيير بيانات استهلاك PointerEvents التي تم تمريرها. (I6acd0) - تم تحويل MeasureScope وIntrinsicMeasureScope إلى واجهات. (I1a087، b/170461665)
- تم إخفاء دالة الدمج لعنصر AlignmentLine. (I9da1a، b/170612900، b/170611568)
- إضافة إمكانية تحديد معلومات المفتش في المُعدِّل المركب (Idee08، b/163494569)
- تمت إضافة خيار "اختيار الكل" إلى قائمة الاختيار (Ief02b).
- تم تعديل DrawTransform.rotate لتلقّي
مَعلمة محور دوران تلقائية هي المركز لمطابقة
المستندات.
- تم تعديل DrawScope.rotateRad لاستخدام إزاحة لنقطة المحور لمطابقة طرق التحويل الأخرى.
- التحميل الزائد الذي تم إيقافه نهائيًا لـ DrawScope.rotateRad والذي كان يستهلك الأرقام العائمة للإحداثيَين x وy للمحور
- (Iffcbb، b/170434992)
إصلاح الأخطاء
- تم تفعيل فحص lint لواجهة برمجة التطبيقات لـ MissingGetterMatchingBuilder في androidx (I4bbea، b/138602561)
- أضِف الاختبار. (I6b8ae)
- فعِّل الانتقالات في ComposeTestRule، وأزِل خيار تفعيل المؤشر المتمايل من ComposeTestRule. (If0de3)
- تمت إضافة خيار IME KeyboardCapitalization (I8ac38)
- تمت إضافة خيار لوحة مفاتيح ذات سطر واحد إلى CoreTextField (I72e6d)
- نقل SimpleContainer إلى PopupTestUtils.kt (I65c3e)
- تمت إعادة تسمية Radius API إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في أداة "الإنشاء". تم تعديل المستندات للإشارة إلى أنّ نصف قطر الزاوية السالب يتم تثبيته على القيمة صفر. (I130c7، b/168762961)
- تحسين إمكانية التشغيل التفاعلي لنظام التشغيل Android من خلال مواصلة إرسال أحداث MotionEvents إلى عناصر Android View الفرعية التي تُعرِض قيمة false لحدث onTouchEvent لجميع الإجراءات باستثناء
ACTION_DOWN
(I94c5a وb/170320973) - تم تحويل المربّع إلى دالة مضمّنة. (Ibce0c، b/155056091)
المساهمة الخارجية
- إتاحة لغات مختلفة لكل من
AnnotatedString.capitalize
وAnnotatedString.decapitalize
(I4aa7f)
الإصدار 1.0.0-alpha05
14 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- إضافة لغة وصفية محددة لتحديد معلومات المفتش (Ic9a22)
- انقل ميزة "الضغط مع الاستمرار" إلى "النص". (Iff2bc)
- الإصدار التجريبي من Modifier.pointerInput يوقف مؤقتًا مُعدِّل الإدخال (Ia77d2)
- تمت إضافة إجراءات تسهيل الاستخدام "النسخ/اللصق/القطع" (I6db4f)
- تمت إزالة المنشئ العام لواجهة برمجة التطبيقات AndroidOwner (Iacaef)
- اكتسبت النوافذ المنبثقة ومربعات الحوار الآن FLAG_SECURE من النافذة الرئيسية. تمت أيضًا إضافة خيار لضبط هذا الإعداد صراحةً (I64966 وb/143778148 وb/143778149).
أصبحت بيانات الاستهلاك الآن قابلة للتغيير. بالإضافة إلى ذلك، ceased طلبات الاستدعاء إلى دوال الإضافات التي تستهلك البيانات عن PointerInputChange، وأصبحت الآن تُعرِض بدلاً من ذلك PointerInputChange المقدَّم.
هذه هي الخطوة الأولى في عملية من خطوتَين لجعل بيانات PointerEvent قابلة للتغيير بحيث لا يمكن تعديل بيانات النقاط الأخرى من خلال رمز المستخدم. ستكون الخطوة الثانية هي إزالة نوع الإرجاع
List<PointerInputChange>
منPointerInputFilter.onPointerEvent(...)
. (Id067e)أوقِف ميزة "الاختيار في النص" وميزة "العرض التجريبي". (Ie7e97)
تمّ جعل onGloballyPositioned دالة مضمّنة (I15830)
تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وتمت إعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
تمت إضافة السمة hasPendingMeasureOrLayout إلى Owner، وهي تشير إلى ما إذا كان لدى Owner أي عمل مرتبط بالتنسيق في انتظار المراجعة. (I3d9f8، b/169038599)
تمت إضافة واجهة برمجة تطبيقات لمحو التركيز آليًا (Ie1dc2، b/161487952)
تمت إزالة
PointerInputFilter.onPointerInput(...)
. يجب استخدامPointerInputFilter.onPointerEvent(...)
بدلاً من ذلك. (I6f04a)التغييرات في الحجم
- تمت إزالة Size.getFlipped
- تمت إزالة Size.rem
- تمّت إزالة Size.truncDiv (Ief44d, b/169790720)
كجزء من عملية توحيد القيم المراقبة للفئات المضمّنة، أُعيد تسمية Color.Unset إلى Color.Unspecified للتماشي مع الفئات المضمّنة الأخرى (I97611 وb/169797763).
تمّ تقديم TextOverflow.None. عندما يكون overflow غير محدّد، لن يعالج Text المحتوى الزائد بعد الآن، وسيُبلغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)
تمت إعادة تسمية مَعلمة النطاق ضمن AnnotatedString.Builder.addStringAnnotation لتكون علامة من أجل الحفاظ على اتساق واجهة برمجة التطبيقات. (I7c8cb)
إصلاح الأخطاء
- تم تحسين أداء الانتقال للأعلى أو للأسفل في LazyColumn/Row من خلال إنجاز عمل أقل في التركيب الفرعي عند كل عملية انتقال. تمت إضافة الطريقة الجديدة hasInvalidations() لفئة Composition. تمت إعادة تسمية الطريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
- تم تعديل مَعلمات Size.Unspecified لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى المقاسات غير المحدودة. (I95a7e)
- يحدّد الآن ترتيب طلبات place() في التنسيقات المخصّصة ترتيب الرسم للعناصر الثانوية (Ibc9f6).
- إتاحة تحويل AnnotatedString إلى SpannableString لتسهيل الاستخدام (Ief907)
- تمت إضافة نماذج stubs لفئات Android التي تعمل على منصّات أقدم لتجنّب استخدام ميزة reflection متى أمكن. (Ia1790)
- تم إصلاح خطأ: إذا كانت لوحة المفاتيح الظاهرة على الشاشة تتسبب في ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)
الإصدار 1.0.0-alpha04
1 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha04
. يحتوي الإصدار 1.0.0-alpha04 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة OwnerScope للسماح بجمع نطاقات ملاحظات ملف الالتقاط ورسم المخططات بعد أن تصبح غير صالحة. (Ic4cf8)
- تمت إضافة OnRemeasuredModifier وonSizeChanged() لتلقّي مكالمة إعادة الاتصال عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
- إضافة إجراء دلالي للنقرة الطويلة (I6281b، b/156468846)
- تمّ جعل FocusManager خاصًا. (I7872f)
تم تعديل التنفيذ لإنشاء تنفيذ DrawCacheModifier مخصّص بدلاً من إضافة سمات اختيارية في DrawModifier.
مستندات معدَّلة لطرق مختلفة (Ibd166)
اجعل TextRange مضمّنًا لتجنُّب إنشاء كائن. (Id034b)
لم يعُد بالإمكان قراءة PlacementScope#parentWidth وPlacementScope#parentLayoutDirection من قالب موضع الإعلان لتنسيق مخصّص. (Icc1ae، b/168295623)
أضِف AccessibilityScrollState إلى سمات الدلالات. (Ifeda9)
تمّ تقديم Modifier.drawWithCache للسماح بإنشاء عنصر رسم يعيد بشكل مشروط إنشاء العناصر المُدمجة التي تعتمد على معلومات الحجم/الحالة (I376dc)
تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (Ica712)
إصلاح الأخطاء
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة التطبيقات الخاصة بتحويلات الحجم والدوران للاستخدام المشترَك لمَعلمة Offset واحدة لتمثيل إحداثي محور الدوران بدلاً من استخدام مَعلمات float منفصلة لإحداثي x/y في DrawScope وDrawTransform
- إزالة الطريقتَين Rect.expandToInclude وRect.join
- تم تعديل مستندات "النطاق الجغرافي" لتشير إلى أنّه بيضاوي بالإضافة إلى بيضاوي الشكل.
- تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء ملف الإنشاء العلني لفئة Radius المضمّنة مباشرةً، ولكن يجب بدلاً من ذلك إنشاء مثيل لعناصر Radius من خلال ملفّات إنشاء الدوالّ.
- تمت إزالة واجهات برمجة تطبيقات RoundRect API لطلب topRight، bottomRight، bottomCenter، وما إلى ذلك.
- إيقاف دالة Rect.shift نهائيًا واستبدالها بدالة Rect.translate
- إزالة واجهات برمجة التطبيقات RoundRect.grow وRect.shrink
- تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
- تمّت إزالة RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
- تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
- تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
- تم تغيير RoundRect.center ليصبح سمة بدلاً من دالة
- تم تعديل عنصر الإنشاء RoundRect لاستخدام سمات Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y.
- تمّت إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي كانت تفترض أنّه مستطيل مع أصل عند 0,0
- تمت إضافة واجهة برمجة تطبيقات لإزالة البيانات إلى Radius
- تم نقل دوالّ إضافة RoundRect المختلفة لتصبح سمات بدلاً من ذلك
- (I8f5c7، b/168762961)
- تم إيقاف foundation.Box نهائيًا. يُرجى استخدام foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
- تمت إعادة تسمية الحزمة إلى "علبة". سيتم إيقاف العنصر Box السابق نهائيًا واستبداله بالعنصر Box الجديد في compose.foundation.layout. يتمثل سلوك المربّع الجديد في تجميع العناصر الفرعية فوق بعضها عندما يكون لديه عناصر فرعية متعددة، ويختلف ذلك عن المربّع السابق الذي كان يتصرف بشكل مشابه للعمود. (I94893، b/167680279)
- تم إيقاف مَعلمات زخرفة المربّع نهائيًا. إذا كنت تريد إضافة زخارف أو مسافات على مربّعك، استخدِم عناصر التعديل بدلاً من ذلك (Modifier.background وModifier.border وModifier.padding) (Ibae92، b/167680279)
- تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
- تم تعديل واجهات برمجة تطبيقات DrawScope باستخدام طرق تحويل على مستوى النطاق للإشارة إلى أنّه لا يتم تطبيق التحويل إلا ضمن الدالة المرجعية ويتم إزالته بعد استدعاء الدالة المرجعية.
- تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من مستطيل مُعَدَّل
- تمّت إزالة المسافة في المستند للمَعلمة اليمنى في clipPath
- تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وتمت إزالة مَعلمة size.
- تمت إعادة تسمية مَعلمتَي dx/dy في طريقة inset إلى أفقي وعمودي
- تمت إضافة حمولة زائدة للاقتصاص توفّر قيمة اقتصاص متطابقة لجميع الحدود الأربعة.
- تمّت إزالة مستندات حول طريقة الحشو التي تشير إلى أنّه سيتم تطبيق الحشو على جميع الجوانب الأربعة.
- مستندات معدَّلة لفئة Rect
- تعديل التعليقات على مَعلمات Rect لمطابقة kdoc style
- تمت إزالة Rect.join وRect.expandToInclude
- تم إنشاء وظائف زائدة لواجهة Rect.translate(offset) و تم إيقاف Rect.shift نهائيًا
- (If086a، b/167737376)
- إضافة تعليقات توضيحية إلى rootAnimationClockFactory وtransitionsEnabled و blinkingCursorEnabled وtextInputServiceFactory باستخدام @VisibleForTesting، وجعلها واجهة برمجة تطبيقات داخلية وإخفاء kdoc (I554eb، b/168308412)
- أزِل SelectionContainer من الأعلى لإيقاف الاختيار التلقائي وتجنُّب السلوك غير المتوقّع. يمكن استخدام SelectionContainer على وجه التحديد لتغليف المحتوى الذي يجب أن يكون قابلاً للاختيار بدلاً من ذلك. (I8dfe0، b/158459594)
الإصدار 1.0.0-alpha03
16 أيلول (سبتمبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha03
. يحتوي الإصدار 1.0.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أزِل إجراءات الدلالات الخاصة بالتمرير للأمام/للخلف. تمت إضافة خطوات في AccessibilityRangeInfo. (Ia47b0)
- تمت إزالة
onInvalidate()
منOwner
. يعالجOwnedLayer
إبطال القيمة. (Ica72b، b/162061312) تمّت إزالة طرق المشغّل في Size API التي تستخدِم مَعلمات Offset. إنّ نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقّع بالنسبة إليها. على سبيل المثال، هل يجب أن يعرض الحجم - الإزاحة إزاحة أو نتيجة حجم مع الفرق؟
تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة Size. (Iec902، b/166514214)
إصلاح الأخطاء
- تم إصلاح مشكلة رسم عناصر LazyColumn بشكل غير صحيح في بعض الأحيان، ما كان يؤدي أيضًا إلى حدوث أعطال في بعض الحالات. (Ibcf17 وb/163066980 وb/165921895)
- تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
- تم نقل
createAndroidComposeRule
وAndroidInputDispatcher
منandroidx.ui.test.android
إلىandroidx.ui.test
(Idef08، b/164060572) - تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متسق لتصبح align أو alignment في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
- تمت إضافة onNode والطُرق الشاملة الأخرى في ComposeTestRule لأنّه سيتم إيقاف الطُرق الشاملة الحالية نهائيًا. (Ieae36)
الإصدار 1.0.0-alpha02
2 أيلول (سبتمبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha02
. يحتوي الإصدار 1.0.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- إزالة طلب إعادة الاتصال لإعلام المالك عند تغيير حدود layoutnode (If654e، b/166106882)
- تمت إضافة إمكانية استخدام مَعلمات نوع الملء في مسارات الرسومات المتجهّة لإتاحة اقتطاع الأشكال وفقًا لقواعد ملء المسار evenOdd أو NonZero. (I43dd2)
- أصبحت Uptime وVelocity الآن صفوفًا مضمّنة (I48f4a).
- أصبحت المدة الآن فئة مضمّنة (I565eb).
- أضِف دالة استدعاء لإعلام المالك عند تغيير حدود layoutnode. (Ic40b3)
تم حلّ المشكلة التي كانت تؤدي إلى إنشاء Rect في دالّة Rect باستخدام الإزاحة ونصف القطر بالترتيب التالي: لليسار واليمين والعلوي والسفلي بدلاً من لليسار والعلوي واليمين والسفلي.
تمّت إزالة طرق المرافق المتوقّفة نهائيًا في Rect واستخدام وظائف الإنشاء بدلاً منها.
تمت إضافة اختبارات للتحقّق من الطرق في Rect.kt (I08460، b/165822356)
إصلاح الأخطاء
- تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
- تم استبدال Matrix4 بـ Matrix. تمت إزالة جميع الأجزاء الأخرى من حزمة vectormath. (Ibd665، b/160140398)
لقد تغيّرت اصطلاحات استدعاء الدوالّ القابلة للتجميع. هذا تغيير يؤدي إلى إيقاف الإصدار الثنائي. يجب مجددًا compiling جميع المكتبات للعمل مع هذا الإصدار من المكوّن الإضافي لمحرِّر الترجمة.
لا يؤدي هذا التغيير إلى إنشاء تغيير فاصل على مستوى المصدر لأنّه لم يتم تغيير سوى واجهات برمجة التطبيقات الخاصة بالمنشئ التي تم تفعيلها بوضوح. (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. يُرجى العِلم أنّه لن يكون من الممكن في المستقبل إنشاء عناصر View وViewGroup مباشرةً ما لم تكن هذه العناصر أوراقًا في شجرة الإنشاء، وهو الحال الذي يمكن فيه تحقيق ذلك باستخدام AndroidView. (I29b1e، b/163871221) - تم إيقاف
FocusState2
نهائيًا واستبداله بـFocusState
(Ia8b79 وb/160822876 وb/160923332) - تمت إزالة عمليات تحميل AndroidView المتوقّفة نهائيًا. (I946b9، b/163802393)
- يمكن الآن لعمليات البث المخصّصة أن تحدّد أنّه يمكن تخطّي واحد أو أكثر من أدوات الضبط وإعادة تركيبها بشكل مستقل عن عملية البث. (Ibbd13)
تم تغيير فئات Vector ل不再تكون فئات بيانات لأنّه يتم استخدام مثيل العنصر نفسه لإنشاء التركيب.
تمت إضافة علامة mutableStateOf إلى VectorPainter لإعادة الرسم بشكل مشروط في حال تغيّر محتوى المتجه.
تمّت إعادة صياغة مثيل VectorComponent ليكون جزءًا من VectorPainter لأنّه تتم إعادة استخدامه في جميع المكوّنات.
تم تعديل GroupComponent وPathComponent ليصبح حقل الاسم قابلاً للتغيير (Ieae45، b/151378808)
تمت إزالة
onChildPositioned
وOnChildPositionedModifier
. على المطوّرين استخدامonPositioned
وOnPositionedModifier
في تنسيق الصفحة الفرعية بدلاً من ذلك. (I4522e، b/162109766)أصبح "الموضع النسبي" فئة مضمّنة (Iaec70).
تمت إضافة مَعلمة مُعدِّل إلى SelectionContainer (I4aada، b/161487952)
تمت إزالة FocusModifier (I0b4ba وb/160922116 وb/160821157 وb/162441435 وb/160822875 وb/160921940)
تمت إضافة
mergePolicy
lambda إلىSemanticsPropertyKey
. ويمكن استخدام ذلك لتحديد سياسة مخصّصة لدمج semantik mergeAllDescendants. إنّ السياسة التلقائية هي استخدام قيمة العنصر الرئيسي إذا كانت متوفرة، وإلا يتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)أصبحت Constraints الآن فئة مضمّنة (I88736).
تمت إضافة FocusManager الذي ينقل منطق التركيز الشائع خارج AndroidComposeView (I528ef وb/161487952 وb/162206799)
تم تعديل أسماء PointerEventPass للإصدار التجريبي. (Ifda6f)
أصبحت IntOffset الآن فئة مضمّنة (Iac0bf).
أصبحت IntSize الآن فئة مضمّنة (I2bf42).
تمت إعادة تسمية
PlacementScope.placeAbsolute()
إلىPlacementScope.place()
، وتمت إعادة تسميةPlacementScope.place()
السابق إلىPlacementScope.placeRelative()
. نتيجةً لذلك، لن تعكس طريقةPlacementScope.place()
تلقائيًا الموضع في السياقات من اليمين إلى اليسار بعد الآن. وإذا أردت ذلك، استخدِمPlacementScope.placeRelative()
بدلاً من ذلك. (I873ac، b/162916675)يستخدم AlertDialog الآن FlowRow للأزرار (I00ec1 وb/161809319 وb/143682374)
تم جعل بعض أدوات الاختبار غير عامة لأنّها ليست في مكانها الصحيح. ستصبح هذه المعلومات علنية في المستقبل. (I32ab1)
إعادة تنظيم رمز إدخال المؤشر (Ie3f45)
تم إيقاف PxBounds نهائيًا واستخدام Rect بدلاً منه. تم تعديل جميع استخدامات PxBounds باستخدام rect وتمت إضافة علامة توضيحية مناسبة لإيقاف الميزة نهائيًا/استبدالها بهدف المساعدة في عملية نقل البيانات. (I37038، b/162627058)
تمت إزالة KeyEvent2 المتوقّف نهائيًا. استخدِم KeyEvent بدلاً من ذلك. (Ied2d0، b/162097587)
يحتوي KeyEvent على سمة unicode يمكن استخدامها للحصول على حرف unicode الذي تم إنشاؤه من خلال مجموعة حالة المفتاح والمفتاح التعريفي المحدّدة (If3afc).
تمّ جعل الحدث المخصّص DelayUp والصفوف ذات الصلة واجهة برمجة تطبيقات اختيارية، لأنّه من المرجّح أن يتم تغييره. (I56d6f)
تمّت إزالة حدثَي PointerEventPass لم يعدا مطلوبَين. (I3dd9d)
أضِف المَعلمات color وshadow وTextDecoration إلى Paragraph.paint. هذه الدالة مفيدة لتجنُّب إعادة إنشاء Paragraph غير الضرورية. (I81689)
إصلاح الأخطاء
- تمت إزالة وظائف الاستدعاء onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
- تم إيقاف Modifier.drawBorder نهائيًا. استخدِم Modifier.border بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، b/158160576)
تمت إزالة طلبات FrameManager المتوقّفة نهائيًا.
تم تغيير واجهات برمجة التطبيقات الداخلية لإنشاء المحتوى من أجل تقليل مقدار الوقت المستغرَق لتتبُّع عناصر الحالة، مثل
mutableStateof()
(I80ba6).تمت إزالة VerticalScroller وHorizontalScroller. استخدِم ScrollableColumn/Row بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدِم Modifier.background (I73b0d، b/163019183).
تم إصلاح مشكلة تعطُّل التطبيق عند استخدام شيء يحفظ الحالة داخل حلقة for. أصبح من المسموح به الآن استخدام المفتاح نفسه في savedInstanceState()، وتم تعديل واجهة برمجة التطبيقات الخاصة بـ UiSavedStateRegistry لتلبية هذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).
تم إيقاف العنصر القابل للتجميع
state { ... }
نهائيًا، وأصبح من الأفضل استخدام طلبات صريحة لremember { mutableStateOf(...) }
من أجل الوضوح. ويؤدي ذلك إلى تقليل مساحة عرض واجهة برمجة التطبيقات الإجمالية وعدد المفاهيم المتعلّقة بإدارة الحالة، كما يتطابق مع نمطby mutableStateOf()
لمنح إذن الوصول إلى سمة الخطوة. (Ia5727)تمت إعادة تسمية RRect إلى RoundRect لتناسب أنماط تسمية الإنشاء بشكلٍ أفضل تم إنشاء وظائف إنشاء دالة مشابهة لدالة RRect ووظائف إنشاء دالة RRect المتوقّفة نهائيًا (I5d325)
الإصدار 0.1.0-dev16
5 آب (أغسطس) 2020
تم إصدار androidx.compose.ui:ui-*:0.1.0-dev16
. يحتوي الإصدار 0.1.0-dev16 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف OnChildPositioned نهائيًا. استخدِم OnPositioned على العنصر الفرعي بدلاً من ذلك. (I87f95، b/162109766)
- تم إيقاف setViewContent نهائيًا. يجب استخدام setContent بدلاً من ذلك. (I7e497، b/160335130)
- تمت إضافة واجهة برمجة التطبيقات AndroidViewBinding لتوسيع موارد التنسيق وإنشاءها، استنادًا إلى ViewBinding. (I081c6)
- تم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
- تمت إضافة دعم لمفتاح Alt الخارجي (I9036b).
- تم إيقاف FocusManager نهائيًا. استخدِم Modifier.focus() وModifier.focusObserver() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
- يتيح loadVectorResource سمات trimPath (I808fe)
- نقل مربّع الحوار إلى واجهة المستخدم (I47fa6)
- تمّت إزالة حدثَي PointerEventPass لم يعدا مطلوبَين. (I33ca7)
- تم تنفيذ PointerInteropModifier الذي يوفّر إمكانية تلقّي أحداث MotionEvent والتفاعل مع Compose كما لو كنت تُنفّذ عنصر عرض Android. (Ieb08c)
- تمت إزالة مُعدِّل العلامة الذي سيتم إيقافه نهائيًا. يُرجى استخدام layoutId بدلاً من ذلك. (Idaa05، b/162023919)
- تم تعديل واجهات برمجة التطبيقات لتوفير إمكانية الكتابة من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient، والذي يمكن استخدامه لقراءة اتجاه التنسيق وتغييره. تمّت إزالة Modifier.rtl وModifier.ltr. (I080b3)
- إتاحة اقتصاص المسار في الرسومات المتجهّة (Ie16c9، b/158188351)
- تمت إضافة Modifier.layout() التي تتيح إنشاء مُعدِّل تخطيط مخصّص بسهولة (I73b69، b/161355194)
- تمت إضافة واجهة برمجة تطبيقات AndroidView API جديدة وتم إيقاف واجهات برمجة التطبيقات الحالية نهائيًا. (I5bcfd)
- تم إيقاف Modifier.plus نهائيًا، ويمكنك استخدام Modifier.then بدلاً منه. تشير كلمة "ثم" إلى ترتيب الكلمات بشكل أقوى، كما أنّها تحظر أيضًا كتابة
Modifier.padding().background() + anotherModifier
، ما يؤدي إلى كسر السلسلة وصعوبة قراءتها (Iedd58، b/161529964) - أضِف فئات فرعية لعرض [Abstract]ComposeView لاستضافة محتوى Compose في تسلسل هرمي لعرض. (I46357)
- أصبحت الدالتان
Row
وColumn
الآن دالتَين مضمّنتَين، ما يقلل بشكل كبير من النفقات العامة لاستخدامهما. (I75c10) - تمت إضافة SubcomposeLayout. وهو عنصر أساسي منخفض المستوى يسمح بإنشاء العناصر الفرعية أثناء القياس إذا أردنا استخدام بعض القيم المتوفّرة لاحقًا فقط أثناء القياس لإنشاء الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
- تمت إضافة
SemanticsNode.positionInRoot
للحصول على موضع SemanticsNode بالنسبة إلى جذر التسلسل الهرمي Compose (Icdf26، b/161336532) - اجتازت MotionEvents الاختبار بالكامل من Android إلى Compose ثم عادت إلى Android. (I14be8، b/158034713)
- تمت إزالة dropdownPopup. (I00430)
- موضع ثابت للنوافذ المنبثقة على الشاشات المزوّدة بفتحة (Idd7dd)
- إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
- تمت إضافة RemeasurementModifier. يتيح هذا المُعدِّل إعادة قياس التنسيق بشكل متزامن. بشكل عام، لن تحتاج إلى ذلك أبدًا لأنّ إعادة القياس أو إعادة التنسيق تحدث تلقائيًا، ولكننا نستخدمها داخل LazyColumnItems أثناء الانتقال للأعلى أو للأسفل. (I5f331، b/160791058)
- أزِل getLineEllipsisOffset/getLineEllipsisCount. استخدِم getLineVisibleEnd/getLineEnd/isLineEllipsized بدلاً منه. (I85aa2)
- أضِف بعض العلامات أو التعليقات التوضيحية وفقًا لأفضل الممارسات. (I66b20)
- إتاحة المزيد من واجهات برمجة التطبيقات للسطور في TextLayoutResult (I79bd2)
- يمكن الآن الوصول إلى محوِّلات المتجهات المضمّنة لتحويل الوحدات المضمّنة من خلال Foo.VectorConverter، مثل Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter وما إلى ذلك (I3e273).
إصلاح الأخطاء
- معالجة إصلاحات واسعة النطاق لواجهات برمجة التطبيقات (I077bc)
- إزالة واجهة OffsetBase غير المستخدَمة
- مواءمة فئتَي Offset وIntOffset للحصول على سطح واجهة برمجة تطبيقات متّسق
- إعادة تسمية IntOffset.Origin إلى IntOffset.Zero ليكون متوافقًا مع Offset API
- تم نقل طريقة nativeCanvas من واجهة Canvas لمساعدة المستخدمين على إنشاء مثيلات Canvas الخاصة بهم.
- تم إنشاء فئة EmptyCanvas مجردة لإعادة هيكلة DrawScope لتكون مَعلمة غير صفرية بدلاً من lateinit وضمان عدم تساوي قيمة الحقل
- تمت إعادة تسمية قوائم القيم المحددة لـ ClipOp لتكون بتنسيق Pascal Case
- تمت إعادة تسمية القيم المحددة مسبقًا لـ FilterQuality لتكون بتنسيق Pascal Case
- تمت إعادة تسمية قوائم StrokeJoin المحددة لتكون بتنسيق Pascal Case
- تمت إعادة تسمية القيم المحددة لـ PointMode لتكون بتنسيق Pascal Case
- تمت إعادة تسمية قوائم PaintingStyle المحددة إلى Pascal Case
- تمت إعادة تسمية القيم المحددة لـ PathFillType لتكون بالتنسيق Pascal Case
- تمت إعادة تسمية قوائم StrokeCap المحددة لتكون بتنسيق Pascal Case
- تم تعديل تنفيذ DrawCache ليصبح لا يستخدم param lateinit
- تم تعديل DrawScope كي لا يستخدم التفويض البطيء للمَعلمتَين الداخليتَين fillPaint وstrokePaint.
- تم تعديل ميزة "إنشاء الصور" لتجنُّب استخدام Box لخفض التكاليف غير الضرورية
- تم تعديل فئة المخطّط لإضافة التعليقات التوضيحية @Immutable
- تم تعديل PathNode لإضافة تعليقات توضيحية من النوع @Immutable لكل تعليمات المسار.
- تم تعديل التركيب الفرعي للشكل المتجه لإزالة عمليات التحقّق المتكرّرة الشرطية من المساواة لأنّ عملية الإنشاء تتعامل مع هذه العمليات
- طرق إنشاء العنصر المصاحب Rect التي تم إيقافها نهائيًا لصالح طرق إنشاء الدوال
- تم تعديل فئات Brush ووظائف الإنشاء باستخدام واجهتَي برمجة التطبيقات @Immutable و @Stable
- تم تعديل النطاق المحدَّد VertexMode ليكون PascalCase
- تم تعديل طريقة DrawScope selectPaint لإعادة كتابة معلمات الخطوط على الطلاء بشكل مشروط في حال تغيّرت
- تم تعديل Size لإضافة واجهة برمجة تطبيقات لإعادة التشكيل، وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدَمة.
- تم تعديل استخدام واجهة برمجة التطبيقات Compose BlendMode للتعيين الصحيح بين BlendModes لإطار عمل Android وأوضاع PorterDuff استنادًا إلى مستوى واجهة برمجة التطبيقات. تمّت إضافة واجهة برمجة التطبيقات #isSupported في BlendMode لتعمل كطلب للحصول على معلومات عن الإمكانات لتحديد ما إذا كان 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 وFocusDetailedState نهائيًا واستبدالهما بـ FocusState2 (I46919 وb/160822875 وb/160922136)
- تمت إضافة مُعدِّل لمراقبة تغيير حالة التركيز. (I05866 وb/160924455 وb/160923326)
- تمت إضافة مُعدِّل لطلب تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
- عدِّل قائمة شريط الأدوات لعرض عمليات النسخ والقطع واللصق بشكل صحيح. (Id3955)
- تستخدم الآن سمات الدلالات ذات القيمة الواحدة أسلوبًا للاتّصال.
على سبيل المثال، يتم الآن كتابة "semantics { hidden = true }" على النحو التالي:
semantics { hidden() }
. (Ic1afd، b/145951226، b/145955412) - تمت إضافة Modifier.focus الذي يحلّ محلّ FocusModifier. (Ib852a، b/160924778)
- إضافة FloatingToolbar لاختيار TextField (Ie8b07)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لواجهة برمجة التطبيقات ذات الصلة بإدخال المفاتيح (I53c0a)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لجميع واجهات برمجة التطبيقات ذات الصلة بخدمة "التركيز" (I53b24، b/160903352)
- تمت إضافة FocusState2 الذي سيحلّ محلّ FocusDetailedState (I0a3ba، b/160822595)
- تمت إضافة ExperimentalFocus، وهو تعليق توضيحي على @OptIn لواجهة برمجة التطبيقات Focus API. (I1544b، b/160820961)
- تمت إضافة فئة وحدة IntBounds، التي تمثّل حدود بكسل عددية من التنسيق. تم تعديل واجهة برمجة التطبيقات PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
- يتطلب "المُطبِّق" الآن استخدام طريقة clear() للتخلص من التراكيب (Ibe697).
- تم إيقاف KeyEvent نهائيًا واستبداله بـ KeyEvent2 (I68730)
- تمت إضافة علامة اختيارية جديدة useUnmergedTree لاختبار أدوات البحث. (I2ce48)
- تمّت إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (I4f2e9)
تمت إضافة طرق نسخ إلى مختلف أنواع الفئات المضمّنة، بما في ذلك:
- فرق التوقيت
- الحجم
- النطاق الجغرافي
- الحركة
TransformOrigin
إيقاف طريقة عنصر Size.copy المصاحبة نهائيًا استخدام طريقة نسخ العنصر (Ife290، b/159905651)
ترث الآن النوافذ المنبثقة ومربّعات الحوار والقوائم مظهر MaterialTheme السياقي (Ia3665، b/156527485).
تمت إعادة تسمية TextDirection ليصبح ResolvedTextDirection (I3ff38).
تمت إزالة مَعلمة اتجاه التنسيق من مجموعة القياس لدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة الاستدعاء من خلال كائن نطاق القياس (Ic7d9d).
إعادة صياغة عناصر SelectionHandles لإعادة استخدامها (I420e0)
تمت إزالة العنصر القابل للنقر. استخدِم Modifier.clickable (I84bdf).
تم حذف TestTag وSemantics. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).
قبل إجراء هذا التغيير، كان المكوّن الإضافي لمحرِّك التحويل البرمجي لميزة "الإنشاء" يعرقل بشكلٍ غير بسيط طلبات إنشاء العناصر داخل دالة @Composable في حال توفّر (I5205a، b/158123804)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط مع Modifier.testTag. (I995f0)
إنّ مواضع Int لخط المحاذاة التي يتم عرضها من Placeable#get(AlignmentLine) ليست فارغة الآن. إذا لم يكن خطّ المحاذاة الذي تم الاستعلام عنه متوفّرًا، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)
تمت إضافة مَعلمة مُعدِّل إلى العنصر المركب AndroidView. (I48a88، b/158746303)
تم إيقاف Semantics() نهائيًا. استخدِم Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)
إضافة عنصر viewModel() composable الذي يسمح بإنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه مسبقًا على غرار طريقة عمله في Activity أو Fragment (I5fdd1)
تم استبدال استخدام IntPx بـ Int. وتم استبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من عنصر طويل لحزم قيمتَين عائمتَين لتمثيل العرض والارتفاع المقدَّمَين كقيم عائمة. (Ic0191)
لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات تحديد الموضع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحة x وإزاحة y التي تم تمثيلها كقيم عائمة. (I3ad98)
تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل. تم حذف فئة Px بالكامل (I3ff33)
تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I086f4)
تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Id3434)
تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I97a5a)
تم إيقاف TestTag نهائيًا. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)
تمت إزالة التنفيذ التلقائي غير القابل للتنفيذ لـ ParentDataModifier#modifyParentData، لأنّه كان يعادل عدم تنفيذ الواجهة في المقام الأول. (I0deaa)
تمّت إزالة ScaleFit التي سبق أن تم إيقافها نهائيًا. استخدِم ContentScale بدلاً من ذلك. (Ifbc5b)
تم استبدال استخدام فئة Px في مختلف صفوف الإنشاء كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I19d02)
تمت إضافة مكوّن DropdownMenu في ui-material، وهو عنصر لتنفيذ قائمة Material Design. (I9bb3d)
تمّت إزالة الدالة LayoutTag() التي تمّ إيقافها نهائيًا، يُرجى استخدام Modifier.tag() بدلاً منها. تمت إزالة Modifier.matchParent() المتوقف نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً منه. (If8044)
تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I57bff)
تم إلغاء إيقاف Modifier.semantics نهائيًا للسماح باستخدامات المكونات عالية المستوى. (I4cfdc)
تم دمج عمليات تنفيذ CanvasScope ليصبح لدينا الآن DrawScope و ContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تعديل DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection تم حذف الفئة الفرعية DrawScope في ContentDrawScope تم تعديل Painter وPainterModifier لإيقاف الاحتفاظ بخاصية RTL بأنفسهما لأنّ DrawScope يوفّر ذلك بدون تقديمه يدويًا (I1798e)
يزيل فلتر DoubleTapGestureFilter الآن التباس فلتر SingleTapGestureFilter في جميع أنحاء الشجرة. (If92b1)
تم تعديل Alignment API وإضافة ميزة محاذاة مطلقة (لا تتم عكسها تلقائيًا في سياق RTL) (I38cd3)
تم تغيير واجهة برمجة التطبيقات الخاصة بعناصر تعديل DrawLayer: تمت إعادة تسمية outlineShape إلى shape وأصبحت لها القيمة التلقائية RectangleShape وهي الآن غير مسموح بتركها فارغة. تمت إعادة تسمية clipToOutline إلى clip، وتمّت إزالة clipToBounds لأنّها متطابقة مع clip == true مع RectangleShape (I7ef11، b/155075735)
تم تعديل واجهات برمجة التطبيقات التي تُنشئ رسومًا أكبر حجمًا لتعرض Canvas بدلاً من CanvasScope. ويؤدي ذلك إلى عدم إلزام المستهلكين بصيانة عناصر Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين يحتاجون إلى الوصول إلى Canvas ، يمكنهم استخدام أسلوب drawCanvas الإضافة الذي يقدّم طلبًا للرجوع لإصدار رسومات باستخدام Canvas الأساسية. (I80afd)
تم تغيير واجهة برمجة التطبيقات lambda التي تلي WithConstraints. والآن، بدلاً من مَعلمتَين، يحتوي على نطاق مستلِم يقدّم، بالإضافة إلى القيود وlayoutDirection، سمات minWidth وmaxWidth وminHeight وmaxHeight في Dp (I91b9a وb/149979702).
تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)
تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)
تحتوي وظائف القياسات الأساسية في Layout وLayoutModifier2 الآن على مستلِم IntrinsicMeasureScope الذي يقدّم واجهة برمجة تطبيقات طلبات البحث عن القياسات الأساسية مع اتجاه التنسيق الذي يتم نشره بشكل ضمني. (Id9945)
يمكن قياس عناصر Layout وLayoutModifier باستخدام اتجاه تنسيق مختلف. (Ibd731)
تمت إضافة دالة Modifier.zIndex() الجديدة للتحكّم في ترتيب رسم العناصر الفرعية ضمن تنسيق العنصر الرئيسي نفسه. تمت إعادة تسمية سمة elevation في DrawLayerModifier إلى shadowElevation، ولم تعُد تتحكّم في ترتيب الرسم. تم تغيير ترتيب المَعلمات في DrawShadow: أصبح الارتفاع هو المَعلمة الأولى والشكل هو المَعلمة الثانية مع الشكل التلقائي RectangleShape. (I20150، b/152417501)
تمت إزالة onSizeChange وonPositionChange في Owner. (I5c718)
تمت إضافة Constraints2، وهي نسخة من Constraints لا تسمح سوى بقيود Int بدلاً من IntPx. ستتم إزالة IntPx ، وسيتم افتراض أنّ جميع قيود الأعداد الصحيحة هي بكسل مثل Android.
- تمت إضافة IntSize أيضًا، والذي سيحلّ محلّ IntPxSize في النهاية. (I4b43a)
تمّت إتاحة إمكانية إنشاء Alignment باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة 1D. (Ia0c05)
يقبل alignToSiblings الآن عنصرًا من النوع "مقيس" بدلاً من "قابل للوضع". (I5788d)
-
- تمت إعادة تسمية ScaleFit إلى ContentScale
- تم نقل ContentScale من ui-graphics إلى وحدة ui-core لتكون في الوحدة نفسها التي تتضمّن Alignment API.
- تمت إعادة تسمية FillMaxDimension إلى Crop
- تمت إعادة تسمية FillMinDimension إلى Fit
- تم تغيير اسم ميزة "الملاءمة للداخل" إلى "الملاءمة للداخل بشكل أفضل".
- مكافئات ImageView.ScaleType
- تمت إضافة مستندات تشير إلى أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_CROP وFit المستخدَم مع Alignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.FIT_CENTER Inside المستخدَم مع Alignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_INSIDE
إتاحة اتجاه RTL لمُعدِّلات الرسم (I0aaf9)
تم إصدار واجهة برمجة تطبيقات لتضخيم عروض Android من XML. اطّلِع على العرض التقديمي لميزة ViewInCompose للحصول على مزيد من التفاصيل. (I42916)
تحسين DrawModifier API:
- تمّ إنشاء نطاق المستلِم لـ draw() ContentDrawScope
- إزالة جميع المَعلمات في draw()
- تتضمّن DrawScope الواجهة نفسها التي كانت متوفّرة في CanvasScope سابقًا.
- تحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
تمت إضافة positionInParent وboundsInParent إلى LayoutCoordinates. (Icacdd، b/152735784)
أصبحت قيمة المَعلمتَين DrawLayerModifier وdrawLayer() التلقائية للمَعلمتَين clipToBounds وclipToOutline هي false. (I0eb8b، b/152810850)
تمت إعادة تسمية LayoutResult إلى MeasureResult. (Id8c68)
تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد عناصر تعديل التنسيق، وتم إيقاف LayoutModifier نهائيًا (If32ac).
تم استبدال عامل التشغيل "المعدِّل الإضافي" بدوالّ إضافات المصنع (I225e4)
تمت إضافة سمتَي translationX/Y للسماح بتعديل قائمة عرض أوامر الرسم الخاصة بطبقة معيّنة. يكون ذلك مفيدًا لنقل المحتوى استجابةً للصور المتحركة أو أحداث اللمس. (I8641c)
تمت إضافة مَعلمتَي pivotX وpivotY إلى واجهات برمجة تطبيقات الطبقات لإتاحة التدوير والتوسيع حول نقطة معيّنة على طبقة (Icf7c3).
أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدوال المكوّنة OnPositioned وOnChildPositioned. (I2ec8f)
تمت إضافة LayerModifier، وهو مُعدِّل يسمح بإضافة RenderNode لـ Layout. ويتيح ضبط القطع والشفافية والدوران والتكبير/التصغير والظلال. سيحلّ هذا الإجراء محلّ RepaintBoundary. (I7100d، b/150774014)
تم نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العقد الفرعية. تمت إضافة مُعدِّل اتجاه التنسيق. (I3d955)
يتيح مكوّن "الحزمة" اتجاه العرض من اليمين إلى اليسار (Ic9e00).
إتاحة RTL بشكل مبدئي في تنسيق "الإنشاء" (Ia5519)
تم دمج Density وDensityScope في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density)، يمكنك استخدام with(density) فقط (I11cb1).
تم تغيير LayoutCoordinates لجعل providedAlignmentLines مجموعة بدلاً من خريطة، وجعل LayoutCoordinates تنفِّذ عامل التشغيل get() بدلاً من استرداد قيمة. يسهّل ذلك على المُعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل مُعدِّل. (I0245a)
لم تعُد سمة LayoutCoordinates تحتوي على سمة position. لا تكون سمة position منطقية عند التفكير في LayoutModifiers أو التدوير أو التكبير/التصغير. بدلاً من ذلك، على المطوّرين استخدام parentCoordinates وchildToLocal() لاحتساب التحويل من أحد LayoutCoordinate إلى آخر.
تستخدِم LayoutCoordinates سمة IntPxSize لسمة size بدلاً من PxSize. تستخدِم التنسيقات أحجامًا صحيحة لوحدات البكسل في التنسيقات، لذا يجب أن تستخدِم جميع أحجام التنسيقات أعدادًا صحيحة وليس قيمًا بنقطة عائمة. (I9367b)
تحسينات على واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)
تم إنشاء واجهة برمجة التطبيقات CanvasScope API التي تُغلِّف كائن canvas لعرض سطح واجهة برمجة تطبيقات رسومات تعريفية بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق المستلِم الخاص بها، ويتم أيضًا تحديد نطاق معلومات الحجم لحدود الحشو المقابلة. ولا يتطلّب ذلك من المستخدِم الحفاظ على حالة العنصر Paint لضبط عمليات الرسم.
- تمت إضافة CanvasScopeSample بالإضافة إلى تعديل التطبيق التجريبي لتضمين رسومات توضيحية تجريبية (Ifd86d).
تمت إزالة واجهة برمجة التطبيقات MaskFilter API غير المستخدَمة لأنّها ذات استخدام محدود ولم يتم تحسينها لتسريع الأجهزة في معظم حالات الاستخدام (I54f76).
تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)
تم استبدال جميع استخدامات Color التي تتضمّن قيمة فارغة في واجهة برمجة التطبيقات باستخدام قيمة غير فارغة واستخدام Color.Unset بدلاً من null (Iabaa7)
تقديم مَعلمة مستطيلة اختيارية إضافية لـ ImagePainter لتتمكّن من رسم قسم فرعي من ImageAsset الأساسية (I0ea9e)
تمت إضافة "لون غير محدّد" لتمثيل قيمة غير محدّدة بدون وضع الألوان في مربّعات. (If901a)
تمت إضافة طريقتَي الإضافة Canvas.rotate و Canvas.scale لاستخدام إحداثيات محور اختيارية في عمليات التحويل. يتم ضبط هذه القيم تلقائيًا على أعلى يمين ترجمة اللوحة الحالية.
تم أيضًا نقل Canvas.rotateRad لتكون طريقة إضافة من أجل الاتساق (Ibaca6).
تم إنشاء PixelMap API لدعم طلب معلومات البكسل من ImageAsset. (I69ad6)
تمت إعادة تسمية toFrameworkRect/toFrameworkRectF إلى toAndroidRect/toAndroidRectF لمطابقة اصطلاح التسمية لتحويلات الكائنات بين أداة الإنشاء وواجهات برمجة التطبيقات لإطار عمل Android التي تم إنشاؤها استنادًا إليها. تم أيضًا تعديل المستندات حول واجهات برمجة التطبيقات هذه (I86337).
تمت إضافة VectorPainter API بهدف استبدال واجهة برمجة التطبيقات الحالية للتركيب الفرعي للرسومات المتجهّة. نتيجة التركيب الفرعي هي عنصر VectorPainter بدلاً من DrawModifier. تم إيقاف مكونات DrawVector السابقة نهائيًا لصالح VectorPainter.
تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) API إلى PaintBox(Painter) تم إنشاء عنصر مركب مكوّن من أشكال هندسية يعمل مثل العنصر المركب من الصور باستثناء استخدام عنصر VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)
تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وImage composable القادم المستخدَم للمشاركة في تنسيق المحتوى ورسمه. _Body:تم إنشاء طريقة إضافة في android.graphics.Bitmap، Bitmap.asImageAsset()، لإنشاء مثيل لملف ImageAsset مفيد لدمج تطوير تطبيقات Android التقليدي مع إطار عمل Compose (Id5bbd)
تمت إضافة TextDirection.Content (I48f36)
تمت إضافة عامل التشغيل TextDecoration.plus (I0ad1a)
تمت إزالة
Force
من قيم التعداد TextDirectionAlgorithm (Icc944).تمت إعادة تسمية TextDirectionAlgorithm باسم TextDirection (I75ce8)
تنفيذ LongPressAndDrag لاختيار TextField (I17919)
تمت إضافة AnnotatedString.getStringAnnotations التي تعرض جميع التعليقات التوضيحية ضمن النطاق. (I1fa00)
تم تغيير اسم حزمة Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)
يتضمّن مؤشر TextField تأثيرًا متحركًا للميض (Id10a7)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) إلى annotatedString(builder: Builder). (Ia6377)
تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)
أعد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)
أصبح من الممكن الآن إخفاء/إظهار لوحة المفاتيح البرمجية باستخدام SoftwareKeyboardController الذي يتم إرساله من خلال callback (I8dc44، b/151860051)
تمت إضافة عامل التشغيل "زائد" لأسلوب (Text/Paragraph/Span) الذي يفوض الدالة merge(). (Ia1add)
لم تعُد دالة FontWeight.lerp تُطبّق القيمة بشكل فوري. ولا تزال فئة بيانات. (I521c2)
أصبح مُنشئ FontWeight متاحًا للجميع، ولم يعُد فئة بيانات. (Id6b1f)
أضِف getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801).
تمت إعادة تسمية وحدة ui-text باسم ui-text-core (I57dec)
تمّت إزالة فئة المقاس غير المستخدَمة لأنّ هناك فئة مقاس مكرّرة في وحدة ui-geometry التي يتم استخدامها. (I1b602)
تمت إضافة AdapterList، وهو مكوّن قائمة لفائف يُنشئ ويُعدّ العناصر المرئية فقط. تشمل المشاكل المعروفة حاليًا أنّه عمودي فقط ولا يعالج بشكل كامل كل حالات التغييرات على العناصر الفرعية. (Ib351b)
أضِف مَعلمات الحشو والحدود والشكل والخلفية إلى المربّع (I05027، b/148147281).
إصلاح الأخطاء
- تمت إعادة تسمية دالة الاستدعاء onFocusChange في الحقول النصية إلى onFocusChanged (Ida4a1).
- تم إيقاف عنصرَي VerticalScroller وHorizontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك العمود/الصف والمَعلمات، أو استخدِم Modifier.verticalScroll وModifier.horizontalScroll في العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا واستبداله بـ ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
- تمت إعادة تسمية
runOnIdleCompose
إلىrunOnIdle
(I83607) - تمت إعادة تسمية العديد من واجهات برمجة التطبيقات للاختبار لتكون أكثر سهولة. تمت إعادة تسمية كل واجهات برمجة التطبيقات findXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة التطبيقات doXYZ إلى performXYZ. (I7f164)
- يمكن الآن إنشاء واجهة مستخدم الإنشاء داخل ViewGroups بدون الحاجة إلى إنشاء واجهة جديدة. اطّلِع على ViewInteropDemo للحصول على مثال. (I9ab0b، b/160455080)
- تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7)
- تنفيذ عناصر التحكّم في السحب لتغيير التحديد في TextField (I27032)
- تمّت إزالة فئة Shader المضمّنة التي كانت تُغلِّف فئة NativeShader المُتوقّعة وتمت إعادة تسمية NativeShader إلى Shader. لم تُضِف فئة Shader المضمّنة المُغلفة أي قيمة إلى سطح واجهة برمجة التطبيقات وكانت فئة مضمّنة، لذا استخدِم فئة NativeShader مباشرةً. (I25e4d)
تمّت إعادة صياغة PainterModifier لإيقاف توفير التكبير/التصغير استنادًا إلى القيود المحدّدة ومَعلمة ContentScale. إنّ عمليات تنفيذ Painter هي لتوسيع نطاق محتوى الرسم بأنفسهم استنادًا إلى الحجم المحدّد لـ DrawScope الذي يرسمون فيه.
تم إصلاح المشكلة التي كانت تؤدي إلى ضبط حجم ذاكرة التخزين المؤقت bitmap في VectorPainter على حجمها التلقائي بدلاً من الحجم المحدَّد للرسم.
تم تعديل ImagePainter لتوسيع نطاق المحتوى بدلاً من الاعتماد على PainterModifier للقيام بذلك نيابةً عنه. (I6ba90)
إضافة الدالة withFrameNanos من المستوى الأعلى لتحديد توقيت الصور المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِل ذلك بـ @ComposableContract(tracked=false) (Id211e)
تم إيقاف androidx.ui.foundation.TextFieldValue و androidx.ui.input.EditorValue نهائيًا. إنّ العناصر المركبة TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع متوقّفة نهائيًا أيضًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005).
تم إصلاح مشكلة كانت تؤدي إلى تعطُّل عند إرسال إدخال المؤشر في حال إزالة ملفّات ترشيح إدخال المؤشر من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)
تم إصلاح مشكلة كانت تؤدي إلى تعطُّل التطبيق عند إرسال إدخال المؤشر إذا تمّت إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)
تمّت إعادة صياغة فئة Radius لتصبح فئة مضمّنة. تمت إزالة methods لإنشاء الأشكال المصاحبة واستخدام دالة باني الدوال مع مَعلمة تلقائية لكي يتطابق نصف القطر على محور y مع مَعلمة نصف القطر الإلزامية على محور x.
تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتين منفصلتين للرقم العشري للقطر على محورَي x وy (I46d1b).
لم تعُد ميزة Recompose composable عنصرًا مجردًا مفيدًا. من المفترض أن تحدث معظم عمليات إعادة التركيب نتيجة عمليات تعيين MutableState. لأيّ شيء آخر، ننصحك باستخدام الدالة
invalidate
لإعادة تكوين النطاق الحالي. (Ifc992)تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من الجهد الكبير الذي تم بذله لإعادة صياغة الرمز البرمجي للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Iede0b)
يغيّر استراتيجية إنشاء الرموز البرمجية لمجمّع Compose. قبل التغيير، كان مُجمِّع الإنشاء يحوّل المكالمات إلى دوال قابلة للتركيب. من خلال هذا التغيير، نُحوّل الآن نصّ الدالة القابلة للتجميع ونترك موقع الاستدعاء بدون تغيير (في الغالب).
وهذا يعني أنّ معظم المنطق الذي يتواصل مع وقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات Compose. من المفترض ألّا يحتاج معظم مستخدمي ميزة "الإنشاء" إلى تعديل أي رمز نتيجةً لهذا التغيير.
ولتفعيل هذا الإجراء، تم تغيير توقيع JVM لجميع الدوال القابلة للتجميع. يتم تحويل دالة قابلة للتجميع تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، والمَعلمات الإضافية هي "المُنشئ"، وهو عدد صحيح "مفتاح"، وعدد صحيح لقناع بتات يُستخدَم لنشر البيانات الوصفية من خلال طلبات البيانات.
تعمل ميزة "الإنشاء" الآن أيضًا على تحويل الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إدخال حمولة زائدة تلقائية اصطناعية إضافية للدالة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوالّ.
التغييرات السلوكية المتعمّدة المعروفة الناتجة عن ذلك:
- سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها في السابق
- تم الآن الاشتراك في التعبيرات القابلة للتجميع في تعبيرات الوسيطة التلقائية ومعالجتها بشكل صحيح.
شمل هذا العمل بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال مخطّط استدعاء الدوال إلى الدوال الأخرى القابلة للتجميع. سيؤدي ذلك إلى إجراء عدد أقل من المقارنات أثناء التشغيل، وإلى تقليل حجم جدول الفتحات، بالإضافة إلى زيادة عدد عمليات تخطّي الدوالّ القابلة للتجميع التي لم يتم تخطّيها في السابق 2. لا تتمّ مقارنة المَعلمات التي يتمّ تحديدها على أنّها "ثابتة" في وقت الترجمة أو تخزينها في وقت التشغيل. ويؤدي ذلك إلى تقليل عدد المقارنات وحجم جدول الفتحات. 3- يتم استخدام بنية تدفّق التحكّم في نص الدوالّ لتقليل عدد المجموعات التي يتم إنشاؤها. ويؤدي ذلك إلى تقليل حجم جدول الفتحات ويؤدي إلى تقليل العمل الذي يُجريه وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والمُستلِم غير المستخدَمة في الدوالّ عند تحديد إمكانية تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.
كانت معظم التغييرات الأساسية متعلقة بواجهات برمجة التطبيقات التي يستهدفها المُجمِّع مباشرةً، ولن يتأثر الاستخدام المعتاد لـ compose: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة طرق العرض الزائدة
key
التي لا تتضمّن متغيرات عددية متغيرة. استخدِم الإصدارvararg
من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي "المحوري" نهائيًا. استخدِمkey
كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقع Function3 بدلاً من Function1 7. تم تعديل restartableFunction وrestartableFunctionN لتضمين مَعلمات إضافية في وقت الترجمة (I60756، b/143464846)تمت إزالة عوامل تعديل LayoutAlign المتوقّفة نهائيًا. (I10877)
تمت إزالة RepaintBoundary لصالح DrawLayerModifier (I00aa4)
أصبح لكل من Button وFloatingActionButton وClickable الآن مَعلمة
enabled
منفصلة. تمّت إعادة تسمية بعض المَعلمات في Button أو إعادة ترتيبها. (I54b5a)تم استبدال ButtonStyle بوظائف مختلفة وإزالة التحميل الزائد للنص (السلسلة). اطّلِع على العيّنات المعدَّلة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)
تغييرات جذرية في واجهة برمجة التطبيقات Ambients API اطّلِع على السجلّات ومستندات
Ambient<T>
للحصول على التفاصيل (I4c7ee، b/143769776).تم تغيير سلوك TextDirection التلقائي ليتم تحديده حسب LayoutDirection. على سبيل المثال، إذا كان LayoutDirection هو RTL، سيكون TextDirection التلقائي هو RTL. كان سابقًا TextDirection.ContentOrLtr/Rtl (I4e803)
إصلاح خطأ: عند تداخل وزن الخط ونمط الخط في AnnotatedString، لا يتم عرض النص بشكل صحيح. (I77a9d)
تُضيف هذه الدالة المَعلمات المستخدَمة بشكل شائع إلى Text(). إذا كنت بصدد إنشاء نمط نص محلي حاليًا لتمرير عدد صغير من هذه المَعلمات، مثل Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً: Text(textAlign = TextAlign.Center) (I82768)
تمت إعادة تسمية الوحدة ui-android-text باسم ui-text-android (I68cbe).