واجهة مستخدم إنشاء الرسائل
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(الاطّلاع على المستندات المرجعية لواجهة برمجة التطبيقات لكل حزم الإنشاء)
آخر تعديل | الإصدار المستقر | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
30 أكتوبر 2024 | 1.7.5 | - | - | 1.8.0-alpha05 |
البنية
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
لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.7.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول العناصر الاعتمادية، يُرجى الاطّلاع على إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.
راجِع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.
الإصدار 1.8
الإصدار 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+ يفرض ضبط
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)
إصلاح الأخطاء
- إصلاح Dalog
dismissOnClickoutside
(39a3d، b/364508685) - لا تقطع ظلال محتوى المحادثة (e8e2f، b/363027803)
- إصلاح السلوك غير الصحيح عند نقل البحث عن التركيز بين ميزة "الإنشاء" وعرض (58377، b/350534714)
المساهمة الخارجية
- يقبل
Map
فيAlignmentLines
الآن أنواع الخرسانة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.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). - تم تحديث واجهة برمجة التطبيقات للحصول على روابط ذات طابع متعدد الأبعاد في نص. على وجه التحديد، تمّت إزالة الطرق من
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). - عند إدخال البيانات بالماوس أثناء الاختبارات، يتم الآن قبول معلَمة
button: MouseButton
فيMouseInjectionScope.click()
وMouseInjectionScope.doubleClick()
وMouseInjectionScope.tripleClick()
وMouseInjectionScope.longClick()
لجعلها أكثر قابلية للتطبيق على مستوى العالم. القيمة التلقائية هيMouseButton.Primary
لجميع الطرق. (I31a23 وb/190493367 وb/261439695) - تمت إعادة تسمية
onClicked
إلىonClick
داخلLinkInteractionListener
. (Iaa35c) - إعادة تسمية "
TextInclusionStrategy.isInside
" إلى "isIncluded
" اجعل نوع الإرجاعParagraph/MultiParagraph#getRangeForRect()
غير قابل للحذف. (I51f26)
إصلاح الأخطاء
- تم إصلاح مشكلة التقاط لقطات شاشة طويلة للحاويات التي يتم التمرير فيها باستخدام
reverseScrolling=true
. (I7c59c)
مساهمة خارجية
- تمت إضافة إمكانية الجلب المسبق للعناصر في
LazyLists
المدمَجة (مثلLazyColumn
الذي يعرضLazyRows
المدمَجة). ومن المتوقّع أن يؤدي هذا التغيير إلى تقليل انخفاض اللقطات أثناء الانتقال إلىLazyLists
. الإعداد التلقائي لتنفيذ الميزة هو التحميل المُسبَق للعنصرَين المتداخلَين الأولَين، ولكن يمكن التحكّم في هذا السلوك من خلال واجهات برمجة التطبيقات الجديدةLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
وLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
الإصدار 1.7.0-alpha07
17 نيسان (أبريل) 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha07
. يتضمّن الإصدار 1.7.0-alpha07 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة متوقّفة نهائيًا على تطبيق
ClickableText
. لإضافة روابط إلى النص، أنشئAnnotatedString
يتضمّنLinkAnnotation
يتوافق مع الرابط وأرسِل هذا العنصرAnnotatedString
إلى عنصر "النص القابل للتركيب". (I34d4b، b/323346994) - أدخِل
ViewConfiguration.HandwritingGestureLineMargin
لإيماءات الكتابة بخط اليد. إتاحة إيماءةJoinOrSplit
لنظام التشغيلBasicTextField
(Ie6e13، b/325660505) - لم تعُد
FocusProperties.enter
وFocusProperties.exit
ميزتَين تجريبيتَين. لم تعُدFocusDirection.Enter
وFocusDirection.Exit
ميزتَين تجريبيتَين.FocusRequester.Cancel
لم يعد تجريبيًا (I461a1، b/261564106) - عند طلب إحداثيات التنسيق، يمكنك الآن استخدام الوسيطة
excludeDirectManipulationOffset
لاستبعاد القيمة المُعدَّة من خلال تنسيقات العناصر الرئيسية التي وضعت عناصرها الفرعية باستخدامPlaceable.PlacementScope.withDirectManipulationPlacement
. وبالمثل، يمكن أن يضع الآن التنسيق الذي يغيّر موضع عناصره الفرعية بشكل متكرّر باستخدامwithDirectManipulationPlacement
(مثل 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
" وجعلته قابلة للإلغاء، حيث تشير القيمة "فارغ" إلى عدم تحديد أي قيمة. (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) - يجب تعديل إطار عمل الإنشاء لعرض المقطوعة الموسيقية
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)
- في CL هذا، نضيف الإجراء الدلالي
GetScrollViewportLength
حتى نتمكن من تمرير المعلومات حول المكوّنات التي يتم تمريرها في إنشاء إلى نظام a11y. تطبّق قائمة المحتوى هذه أيضًا استخدام السمة المذكورة في قوائم 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
صغيرة وزرّات عرض المزيد الديناميكية التي تتضمّن الرمز +N، ويكونFlowRow
وFlowColumn
مثاليَين لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي فيFlowRow
أوFlowColumn
حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تلائم الحد الأقصى للمحور المتقاطع، اضبطoverflow
علىFlowRowOverflow.Visible
أوFlowColumnOverflow.Visible
أثناء الإعداد. يمكنك الاطّلاع علىContextualFlowRowSample
وFlowRowSample
للحصول على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082) - أضِف سمة دلالات
maxTextLength
التي يجب ضبطها في حقول النصوص التي تعمل على فلترة الحد الأقصى المسموح به من عدد الأحرف. (I24d9f، b/170648072) - تم إيقاف حزمة
Modifier.inspectable
نهائيًا. ستؤدي واجهة برمجة التطبيقات هذه إلى إلغاء صلاحية المُعدِّل أكثر من اللازم، لذا لا يُنصح باستخدامها الآن. ننصح المطوّرين بتنفيذ طريقةinspectableProperties()
فيModifierNodeElement
إذا أرادوا عرض سمات المُعدِّل للأدوات. (Ib3236) - طريقة وضع تصميم جديدة لـ
PopupProperties
تتيح التحكّم الكامل في علاماتWindowManager.LayoutParams
(Ibb33e، b/312485503) - تمّ تقديم
DelegatableNode.requireLayoutCoordinates()
كطريقة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في عنصر بنفسك. (Ia8657) - تمّ تقديم
DelegatableNode.currentLayoutCoordinates
كطريقة للحصول علىLayoutCoordinates
الحالي لـModifier.Node
بدون الحاجة إلى إلغاءonPlaced
وتخزين الإحداثيات في عنصر بنفسك. (Iaebaa) - تم نقل
BasicTextField2
وواجهات برمجة التطبيقات ذات الصلة ضمن حزمةandroidx.compose.foundation.text2
إلىandroidx.compose.foundation.text
. (I9f635) - تمت إضافة واجهة برمجة تطبيقات
ApproachLayoutModifierNode
جديدة لإتاحة إنشاء منطق نهج مخصّص في عقدة معدِّل واضحة. تمت أيضًا إضافة واجهة برمجة تطبيقاتDeferredTargetAnimation
تجريبية جديدة للصور المتحركة التي يكون هدفها غير معروف في إنشاء المثيل. (I60745) - واجهات برمجة تطبيقات جديدة لـ
Path
من أجل طلب الاتجاه لمسار واستخراج الخطوط الخارجية منPath
(I63d04) - تمت إضافة
PathHitTest
وPath.contains(Offset)
للتحقّق مما إذا كانPath
يحتوي على نقطة معيّنة. (I3b218) - يعرِض العنصر
TextLayoutResult
الآن طريقةgetLineBaseline(lineIndex)
. يتيح ذلك قراءة قاعدة سطر عشوائي من النص بالإضافة إلى السمتَين الحاليتَينfirstBaseline
وlastBaseline
. (Ide4e8، b/237428541) - تمت إضافة طريقة لمقارنة التعليقات التوضيحية لصفحتَي
AnnotatedStrings
فقط. (I32659)
إصلاح الأخطاء
- تم حلّ مشكلة التوافق مع الإصدارات القديمة في
SemanticsPropertyReceiver.performImeAction
وSemanticsActions.PerformImeAction
. (Id0528، b/322269946)
الإصدار 1.7.0-alpha02
7 فبراير 2024
تم طرح androidx.compose.ui:ui-*:1.7.0-alpha02
. يحتوي الإصدار 1.7.0-alpha02 على هذه المراجعات.
التغييرات في واجهة برمجة التطبيقات
- تم حلّ مشكلة التوافق مع الثنائي
SemanticsPropertyReceiver.performImeAction
. (I65865، b/322269946) - إنّ الدالة الإنشائية
PopupProperties
التي تستخدم مَعلمةusePlatformDefaultWidth
لم تعُد تجريبية. (I8f8d2) - تمت إضافة حمولة زائدة
ComposeTestRule.waitUntil
تأخذ وصفًا لسلاسل من الشرط لتضمينه في رسالة المهلة. (I9413e) - واجهة برمجة تطبيقات جديدة للدلالات
unset()
لإزالة سمات الدلالات التي تمت إضافتها في سلسلة المُعدِّلات نفسها سمة دلالية جديدةisOpaque
(I8c583، وb/317966058، وb/246056649) - تمت إزالة
originalEventPosition
من طريقة النسخ في واجهة برمجة التطبيقات العامةPointerInputChange
. (I7bead)
إصلاح الأخطاء
- تم إصلاح خطأ في معايير 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)
- إزالة الطبقة الأساسية المادية لرقاقة/زر 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 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ طبيعي، ولكن لن يزداد حجم النص الكبير إلا قليلاً. إضافةً إلى ذلك، سيتم ضبط ارتفاعات الأسطر المحدّدة في مقدِّم الخدمة تلقائيًا لتظل متناسبة مع الارتفاع المقصود بالمقياس بنسبة 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 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة أداة البحث عن الخدمة التي يمكن لمطوّري المكونات تنفيذها، ما يسمح بتنفيذ عنصر تركيب يفوّض إلى عنصر تركيب آخر البحث عن الخدمات المفوَّضة في عنصر التركيب الأصلي. ويجب ألا يكون هذا الاسم يسمى Directory، ويتم استخدامه لتمكين إنشاء واجهات برمجة تطبيقات تجريبية في بيئة التشغيل والتي يمكن العثور عليها من الإصدارات الملتفة من المؤلف، كما هو الحال في وحدة واجهة المستخدم. (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
ثانية، يمكن للأطفال تحريك العناصر بشكل مستقل عن الواقع كما هو موضّح في لقطة النظر إلى المستقبل.
تغيير السلوك: أصبحت addFontPadding خطأ تلقائيًا في Compose
أصبحت قيمة includeFontPadding
الآن خطأ تلقائيًا (21d806) في ميزة "الإنشاء".
includeFontPadding
هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة إضافية فوق السطر الأول والسطر الأخير من النص أم لا لاستيعاب أي أحرف قد تمتد فوق خطوط الأساس للنص أو تحتها.
سيؤدي تحديث إصدار Compose هذا إلى تعديل كيفية عرض كل النصوص في واجهة المستخدم من خلال إزالة المساحة المتروكة الإضافية أعلى السطر الأول والسطر الأخير من كل نص تعرضه.
ويجب أن تكون التغييرات طفيفة استنادًا إلى متطلبات واجهة المستخدم ومقاييس الخطوط التي تستخدمها. ومع ذلك، قد تحدث مشاكل في الحظر، مثل: - اختبارات لقطات الشاشة معطّلة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور الذهبية. - النص غير محاذٍ بشكلٍ كامل. أزِل أيّ مساحات تملأ المساحة الفارغة في الأعلى أو الأسفل أو أضِف مساحة إذا لزم الأمر.
يمكنك تفعيل includeFontPadding
باستخدام PlatformTextStyle
لكل نص:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
يمكنك تفعيل includeFontPadding
لجميع النصوص من خلال ضبط أنماط Material. يُرجى العلم أنّ أسماء المَعلمات ستختلف بين M2 وM3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
يمكنك الاطّلاع على مزيد من المعلومات حول ميزة "الكتابة الذكية" includeFontPadding
في مستندات المطوّرين ومشاركة المدونة هذه.
إذا واجهت مشاكل أو أخطاء مرتبطة بهذا التغيير، يُرجى إرسال تقرير خطأ باستخدام أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- دعم
InputConnection#requestCursorUpdates
(I0c69b) - تمّت إضافة
FocusRequester.saveFocusedChild
وFocusRequester.restoreFocusedChild
(Ic557e وb/272302679 وb/275157318) - أضِف النوع
ResourceResolutionException
إلى العناصر القابلة للالتفاف التي يتم إطلاقها عند محاولة تحميل مواد عرض الصور النقطية مع وصف مسار مادة العرض الذي تعذّر تحميله. (I19f44، b/230166331، b/278424788) - تحسين إمكانية الاستخدام لتحسين الأداء وعمليات تخصيص الذاكرة (Iede48)
- تمت إضافة سمات وإجراءات دلالية لإتاحة ترجمة النصوص. (I4a6bc)
- خاصية جديدة في
IntrinsincMeasureScope
وعمليات تنفيذها (مثلMeasureScope
) للإشارة إلى ما إذا كانت عملية قياس الأداء الحالية هي عملية قياس أداء استباقي (I7a812) - تم تعديل واجهة برمجة التطبيقات
DrawScope
لتوفير إمكانية إعادة توجيه العرض إلى لوحة مختلفة بكثافة/اتجاه تنسيق وحجم بديلَين. - تم تعديل
DrawContext
للسماح بضبط الكثافة واتجاه التنسيق بالإضافة إلى إتاحة ضبط اللوحة. (Ie1f9b، b/225408150) - تمت إضافة
Paragraph#fillBoundingBoxes
لاحتساب المربعات التي تحيط بالأحرف. (If30ee) - تمت إضافة مجموعة من
MultiPreviews
الشائعة (Ia5a27)
إصلاح الأخطاء
- تمت إضافة واجهة
FocusTargetModifierNode
التي يمكن استخدامها لإنشاءFocusTarget
مخصّص. (I9790e) - تمت إعادة تسمية مَعلمات
fallback*
في أداة الإنشاءTextMeasurer
إلىdefault*
. (I940a5) - تمت إعادة تسمية
SemanticsPropertyReceiver.performImeAction
إلىonImeAction
وSemanticsActions.PerformImeAction
إلىOnImeAction
. (I8e841) - إضافة عجلة لتمييز تمرير الماوس عن السحب في التمرير المتداخل (على وجه التحديد في
NestedScrollConnection
). (Ie57e4) - تمت إضافة واجهة برمجة التطبيقات
asComposePaint
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
لاستبدالtoComposePaint
لأنّ العنصر المعروض يلتف علىandroid.graphics.Paint
الأصلي (I22b4c).
الإصدار 1.5.0-beta01
24 أيار (مايو) 2023
تم طرح androidx.compose.ui:ui-*:1.5.0-beta01
. يحتوي الإصدار 1.5.0-beta01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة عمليات التوزيع في عمليات إعادة التركيب والصور المتحركة بالألوان و
AndroidComposeView
(Ib2bfa). - إضافة ميزات مساعد
CacheDrawModifierNode()
للسماح بالتفويض (Icf8f9) - نقدّم لك سمة
isLookingAhead
التي يمكن الوصول إليها منMeasureScope
لمراقبة نتائج النظرة إلى المستقبل والتأثير في المرور الرئيسي إذا أردت ذلك. (Ibf4c3) - السمة الدلالية الجديدة
traversalIndex
، وهي قيمة عائمة تُستخدم لإعادة ترتيب العُقد في اجتيازTalkBack
(القيم الأدنى تسبقها). (I9a81b، b/186443263) - إعادة تسمية موقع الدلالات
isContainer
إلىisTraversalGroup
(I121f6) - تم منح
ColorProducer
الآنoperator fun invoke
بدلاً منproduce
(I4a9a2). - أضِف
Path
transform API لتطبيق عمليات التحويل/التكبير/التصغير/الدوران على عناصر المسار. (I23434، b/233772232) - تُسمى طريقة
ColorProducer
produce
. (I78bde) - إعادة تسمية
toFrameworkColorSpace
إلىtoAndroidColorSpace
(I4f547) - أعِد تسمية
ColorLambda
إلىColorProducer
. (I73b1a) - قدِّم واجهات برمجة التطبيقات (API) للتحويل بين أنواع مساحات الألوان في Android وCompose. (Ie7db4، b/279979665)
- تمت إضافة مَعلمة لون إلى
BasicText
للسماح بإضافة تأثيرات متحركة إلى النص أو ضبط لونه بفعالية. (Iffd88، b/246961787) - تمت إعادة تسمية
TextRange.constrain
إلىTextRange.coerceIn
. (I31be2) - تمت إضافة
TextStyle.merge(...)
محسّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787) - تحسين أداء العديد من واجهات برمجة التطبيقات 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 بدون صندوق للصفحات العائمة والمزدوجة والطويلة والقصيرة والقصيرة باستخدام :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) - تم تثبيت العديد من واجهات برمجة التطبيقات النصية التي تشمل
Brush
وDrawStyle
وTextMotion
وDrawScope.drawText
وParagraph.paint(Brush)
وMultiParagraph.paint(Brush)
. (I2f740، وb/261581564، وb/261581931، وb/261561245) - تم إيقاف
PlatformTextStyle.includeFontPadding
نهائيًا. كان الهدف الأصلي هو إزالة الحقل، ولكن تبيّن لنا من خلال الملاحظات أنّ المطوّرين يحتاجون إلى خيار الضبط هذا. وبالتالي، تتم إزالة الإيقاف النهائي من الحقل (I98e96، b/277703184).
إصلاح الأخطاء
- تم إصلاح مشكلة التراجع التي كانت تؤدي إلى عدم ظهور لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للتجميع
Dialog
. (I82551، b/262140644)
الإصدار 1.5.0-alpha03
19 نيسان (أبريل) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha03
. يحتوي الإصدار 1.5.0-alpha03 على هذه عمليات التنفيذ.
الميزات الجديدة
- السلوك التلقائي الجديد لعنصر
SubcomposeLayout
فيLookaheadScope
:SubcomposeLayouts
التي لا تحتوي على خانات شرطية (مثلTabRow
وScaffold
وBoxWithConstraints
وما إلى ذلك) تعمل الآن بشكل جيد مع الرسوم المتحرّكة التي تستبِق المحتوى.
تغييرات واجهة برمجة التطبيقات
- إنّ القيمة التلقائية الجديدة
intermediateMeasurePolicy
التي تعيد استخدام سياسة القياس من عملية التقديم إلى الأمام تسمح لأنواعSubcomposeLayout
الفرعية التي لا تحتوي على خانات شرطية، مثلScaffold
وTabRow
وBoxWithConstraints
، بالعمل مع ميزة "النظر إلى المستقبل" تلقائيًا. (Id84c8) - ستحظر الآن أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android المكالمات إلى
withFrameNanos
فقط بدلاً من حظر جميع المقطوعات الموسيقية عند تلقّي إشعارON_STOP
. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقفة ستستمر في إعادة التركيب لتغييرات البيانات، ولكن سيتم حظر الصور المتحركة أو أي عنصر آخر يستدعيwithFrameNanos
. (Id9e7f، b/240975572) - تغييرات
motionEventSpy
إلى الإصدار الثابت (Ic5ec4، b/261560988) - تمت إضافة طريقة
TextRange.constrain
علنية. (I97912) - لم تعُد واجهة برمجة التطبيقات
PlatformTextStyle.includeFontPadding
متوقفة نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة تطبيقات التوافق هذه للتبديل واختبار الإعدادincludeFontPadding
false. (I98e96، b/277703184)
الإصدار 1.5.0-alpha02
5 نيسان (أبريل) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha02
. يحتوي الإصدار 1.5.0-alpha02 على هذه عمليات التنفيذ.
تغييرات واجهة برمجة التطبيقات
- واجهة برمجة تطبيقات
SubcomposeLayout
جديدة تتّبع سياسة قياس وسيطة إضافية لمعالجة منطق القياس/التنسيق أثناء الرسوم المتحرّكة المستندة إلى التوقّع (I017d3) - أصبح PointerInput الآن بطيئًا ويستخدم Modifier.Node لتحسين الأداء (اطّلِع على معلومات عن التغيير الطفيف في السلوك). (15dab9)
- تغيير واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة باستخدام الأحداث الرئيسية (I9c7d8، b/261566839، b/261567368)
- تغيير واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة في
PointerInputChange
(I1b543، b/261560988، b/261565762، b/261565749) - يمكن إضافة طريقة لإنشاء مثيل
SuspendingPointerInputModifierNode
لعمليات تنفيذModifier.Node
الأكثر تعقيدًا. (Ic4933) - يمكن الآن فتح
UrlAnnotation
فيAnnotatedString
من خلال خدمات تسهيل الاستخدام مثلTalkBack
. (If4d82، b/253292081) - تمت إضافة واجهة برمجة تطبيقات لاعتراض مفاتيح الأجهزة قبل إرسالها إلى لوحة المفاتيح الافتراضية (I4f4c6 وb/186800395).
- تمت إضافة إجراء دلالات
InsertTextAtCursor
للحقول النصية. (I11ed5) - ستطلب الآن الإجراءات الاختبارية ذات الصلة بالنص (مثل
performTextInput
) التركيز مباشرةً، باستخدام إجراء دلالي، بدلاً من النقر على الحقل. (I6ed05)
إصلاح الأخطاء
- تتطلّب إجراءات اختبار النصوص الآن تفعيل الحقول النصية. (Iab328)
الإصدار 1.5.0-alpha01
22 آذار (مارس) 2023
تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha01
. يحتوي الإصدار 1.5.0-alpha01 على هذه عمليات التنفيذ.
تغييرات واجهة برمجة التطبيقات
- لا يتطلّب Modifier.intermediateLayout الآن استخدام LookaheadScope صريح. تحتوي وحدة القياس في intermediateLayout على IntermediateMeasureScope كمستلِم، ما يوفر CoroutineScope وLookaheadScope وMeasureScope بشكل ملائم.(Ibe2e5)
- تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد عنصر تنسيق. يتيح ذلك التحكّم مباشرةً في المحتوى الفرعي في LookaheadScope من خلال MeasurePolicy الخاصة بالعنصر الرئيسي. (Ibe2e5)
- تُضيف
Modifier.Node#coroutineScope
للسماح لـ Modifier.Nodes بتشغيل وظائف التشغيل المتعدّد. (I76ef9) - اسمح لـ Modifier.Nodes بقراءة ChocolateLocals من خلال تنفيذ واجهة ChocolateLocalConsumerModifierNode. (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) - ستعمل اختبارات واجهة مستخدم Compose في Android الآن على تشغيل بطاقات التنسيق لكل إطار عند تنفيذ الإطارات للانتقال إلى وضع عدم النشاط (على سبيل المثال، عبر
waitForIdle
). وقد يؤثر ذلك في الاختبارات التي تؤكد على الإطارات الفردية للصور المتحركة للتنسيق. (I8ea08، b/222093277) - تمت إضافة
TextMotion
التجريبي إلىTextStyle
لتحديد النص على أنّهStatic(default)
أو متحرك. استخدِمTextMotion.Animated
إذا سيتم تحجيم النص أو ترجمته أو تدويره من خلال الصورة المتحركة. (I24dd7)
تغييرات واجهة برمجة التطبيقات
- تم استبدال وسيطة
maxSize: IntSize
فيdrawText
بـsize: Size
لتصبح متوافقة مع دوالDrawScope
الأخرى. يتم ضبطsize
علىSize.Unspecified
تلقائيًا، ما من شأنه تغيير السلوك التلقائي السابق. (Icd27d) - تمت إزالة أداة إنشاء الخطوط التجريبية المتوقّفة نهائيًا. (I8a724، b/261435386)
- تحتوي فئة بيانات أدوات واجهة المستخدم
Group
الآن على حقلisInline
يشير إلى ما إذا كانت المجموعة مخصّصة لاستدعاء دالة قابلة للتجميع مضمّنة. إذا كانت قيمةisInline
هيtrue
، يكون الاستدعاء إلى دالة مضمّنة قابلة للإنشاء. ومع ذلك، قد تكون القيمة خطأ لطلبات الدوال المُركّبة المضمّنة التي تأتي من وحدات تم تجميعها باستخدام إصدار من المكوّن الإضافي لمجمّع الإنشاء الذي لا يُنشئ معلومات الدالة المضمّنة. (Idb846) - طرح عدد من واجهات برمجة التطبيقات التجريبية سابقًا كإصدارات رسمية
- أصبحت واجهة برمجة التطبيقات Rotary Scroll Event API مستقرة الآن (I42ad3، b/261561229).
FontVariation
أصبحت واجهة برمجة التطبيقات الآن ثابتة (I8779f، b/241016309)- أصبحت جميع دوال إنشاء
Font()
الآن واجهة برمجة تطبيقات ثابتة (I5948b، b/261435386). DeviceFontFamilyName
ثابت الآن (I8b640، b/261435386)- أصبحت الدالة الإنشائية
AndroidFont
معvariationSettings
الآن واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من أوصاف الخطوط. (I5adcc، b/261565807) - أصبحت واجهة برمجة التطبيقات
createFontFamilyResolver
مستقرة الآن. يمكن استخدام هذا الإجراء لرصد الاستثناءات غير التي تمّ رصدها أثناء تحميل الخطوط غير المتزامنة. (Ibb481، b/261435386) - أصبحت واجهة برمجة التطبيقات
Font.loadingStrategy
مستقرة الآن. (I5937c، b/261435386) - أصبحت واجهة برمجة التطبيقات
GoogleFont
مستقرة الآن. (Ic90b0، b/261435386) - أصبحت واجهة برمجة التطبيقات
TextUnit(float, TextUnitType)
مستقرة الآن. (I90c84، b/261561612) - أصبحت واجهة برمجة التطبيقات
pluralStringResource
مستقرة الآن. (I09849، b/261439703)
الإصدار 1.4.0-alpha03
7 كانون الأول (ديسمبر) 2022
تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha03
. يحتوي الإصدار 1.4.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- إزالة
ExperimentalComposeUiApi
منPointerIcon
(I23af8) - تقديم إجراءات تسهيل الاستخدام إلى الصفحة:
PageUp
وPageDown
وPageLeft
وPageRight
يُرجى العلم أنّ هذه العناصر لا تتوفّر إلا من واجهة برمجة التطبيقات 29. (Ida4ab) - تم تعديل عرض معلَمة
rememberNestedScrollConnection
من العرض الجذر إلى عرض المضيف. (Ia5200) - تمت إضافة واجهة برمجة تطبيقات Modifier API لطلب معلومات الانتقال للأعلى أو للأسفل في العناصر السابقة. (I2ba9d، b/203141462)
- تُستخدَم في
Clickable
لتأخير التفاعلات الناتجة عن الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث انتقال. - تم إصلاح مشكلة عدم تأخير
Clickables
للتأثيرات المتموّجة بشكلٍ صحيح عند استخدامها داخلScrollable ViewGroup
. - تم تعديل "الأدراج" و"جداول بيانات Google" لتأخير الضغطات بشكل صحيح في حال تحولت الإيماءات إلى أحداث تمرير.
- تمت إعادة تسمية
CompositingStrategy.Always
إلىOffscreen
للإشارة إلى أنّه سيتم دائمًا عرضgraphicsLayer
في ذاكرة تخزين مؤقتة وسيطة (I47dc1). - أصبح الأداء الآن ثابتًا في ما يتعلّق بزيادة عدد مساحات المحتوى في التنسيق (I10566، b/248294649).
- تمت إضافة واجهتَي برمجة تطبيقات تجريبيتَين
PerfettoTrace.record {}
وPerfettoTraceRule
لتسجيل عمليات تتبُّع Perfetto (المعروفة أيضًا باسم "تتبُّع أداء النظام") كجزء من الاختبار لفحص سلوك الاختبار وأدائه. (I3ba16) - في اختبارات واجهة المستخدم التي تستخدم قاعدة الإنشاء، لن يتم إرسال عمليات المتابعة التي تم استئنافها أثناء عمليات استدعاء
withFrameNanos
إلا بعد انتهاء تشغيل جميع استدعاءات الإطارات. ويطابق هذا السلوك سلوك ميزة "الإنشاء" عند تشغيلها بشكلٍ طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. من المفترض ألا يؤثر ذلك إلا في الرمز البرمجي الذي يستدعيwithFrameNanos
أوwithFrameMillis
مباشرةً، والذي يتضمّن منطقًا خارج ردّ الاتصال ويتم تمريره إلى تلك الدوالّ التي قد تحتاج إلى نقلها داخل دوالّ ردّ الاتصال. راجِع التغييرات في اختبار الصور المتحركة في هذا الإصدار من الإصدار العلني للحصول على أمثلة. - تمت إضافة المَعلمة الاختيارية
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 على هذه المراجعات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة حِمل زائد تجريبي إلى التنسيق الذي يقبل قائمة lambdas متعددة المحتوى القابل للإنشاء، ما يسمح بدمج عناصر تهديد قابلة للقياس في محتوى lambdas مختلفة (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، والتأكّد من أنّ خدمات تسهيل الاستخدام في هذه النوافذ يمكنها التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.
لن يؤثر هذا التغيير عليك إلا في حال إنشاء مربّع حوار مخصّص أو تنفيذ نافذة منبثقة مع ضبط مسقط رأسي على مستويات أعلى من 8 بكسل مستقل الكثافة (dp). ننصحك بخفض ارتفاع مربّع الحوار أو النافذة المنبثقة. إذا كنت بحاجة إلى إيقاف هذا السلوك الجديد، ننصحك بإنشاء نسخة من مربّع الحوار أو النافذة المنبثقة مع ضبط الارتفاع المطلوب. لا يُنصح بذلك، لأنّ سهولة الاستخدام قد تتأثر سلبًا، وعلى المطوّر التأكّد من أنّ الجزء السفلي من مربّع الحوار أو النافذة المنبثقة يمكن التفاعل معه وقراءته من خلال خدمات تسهيل الاستخدام.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة عدم تعديل
painterResource
عند إجراء تغييرات على الإعدادات (I58e73، b/228862715) - لم تعد
rememberTextMeasurer
تستخدم المَعلماتFontFamily.Resolver
أوDensity
أوLayoutDirection
. يُرجى استخدام أداة الإنشاءTextMeasurer
لتقديم قيم مخصّصة لهذه المَعلمات. (Ia1da3) - تمت إضافة السمة
DialogProperties.decorFitsSystemWindows
للسماح لمربّعات الحوار باستخدامWindowInsets
. (I57742، b/229378542) - تم نقل منصات إنشاء الخطوط إلى ملف kotlin الأصلي للحفاظ على التوافق الثنائي. لم يحدث أي تغيير مقارنةً بالإصدار الثابت الأخير. (Ieb2f3)
- تمت إزالة عامل التشغيل غير الضروري من عدة تعريفات يساوي، وليس لذلك أي تأثير. (I6c309)
FontVariation.Setting
هي واجهة مغلقة للسماح بواجهات برمجة تطبيقات الالتقاط في المستقبل. (I11021، b/143703328)- إضافة
CompositionGroup.findParameters
إلىSlotTree.kt
يتيح ذلك للأدوات استرداد مَعلماتCompositionGroup
بدون الحاجة إلى تحليل جدول الفتحات بالكامل. (I124fe)
الإصدار 1.3.0-alpha03
10 آب (أغسطس) 2022
تم طرح androidx.compose.ui:ui-*:1.3.0-alpha03
. يحتوي الإصدار 1.3.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم إدراج
LayoutCoordinates.findRootCoordinates()
بشكل علني (I7fa37، وb/204723384) - تمت إضافة واجهة برمجة تطبيقات تجريبية لتوفير
LayoutCoordinates
فيPlacementScope
. يتيح ذلك للمطوّرين معرفة موضع التنسيق الحالي لوضع العناصر الثانوية بالنسبة إلى موضعه. (I5482b، b/238632578) - تمت إضافة
LayoutCoordinates.transformFrom
للحصول على تحويل المصفوفة منLayoutCoordinates
إلى آخر. (Ic5ab1، b/238632578) - تم إيقاف
SemanticsModifier.id
نهائيًا ونقل معرّف الدلالات إلىLayoutInfo.semanticsId
بدلاً من ذلك. (Iac808، b/203559524) - توفِّر Resource Fonts الآن إعدادات تنوع الخط (واجهة برمجة التطبيقات 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 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- يتم الآن إنشاء الواجهات في مكتبات الإنشاء باستخدام طرق الواجهة التلقائية 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 إذا انتقلنا رأسيًا (إذا كانت بعض Delta موجبة، سيتم الانتقال للأسفل) (Ifb697، b/224992993)
الإصدار 1.2.0-alpha08
20 نيسان (أبريل) 2022
تم طرح androidx.compose.ui:ui-*:1.2.0-alpha08
. يحتوي الإصدار 1.2.0-alpha08 على هذه عمليات التنفيذ.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة على دالات
pluralStringResource
كتجريبية للسماح بالتطوير من أجل تعزيز التدويل بشكل أفضل في المستقبل. (If24e4) - يقبل الآن تطبيق "الفقرة" و"متعدد الفقرات" معلمة القيود. لا يؤدي تمرير القيمة
Constraints.maxHeight
إلى إجراء أيّ عملية في الوقت الحالي، ولكنّه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل اقتطاع النص استنادًا إلى الارتفاع. (I6afee، b/168720622) - يقبل
SubcomposeSlotReusePolicy.getSlotsToRetain()
الآن فئة مخصَّصة تشبه MutableSet لا تسمح بإضافة عناصر جديدة إليها. (Icd314) - أصبح رمز المؤشر الآن واجهة
@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)- يمكنك تفعيل إمكانية التشغيل التفاعلي لالتمرير المدمَج بين "العرض" و"إنشاء" للتعاون في صفوف طريقة العرض. وهذا يعني أنّه يمكن الآن لميزة "الإنشاء" إرسال بيانات اختلافات الانتقال إلى أعلى أو أسفل الصفحة إلى عنصر عرض رئيسي (متعاون). (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 كخطوة أولى لإضافة ميزة "المعاينة المتعدّدة". يمكن استخدام مثل هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى الطرق القابلة للتعديل أو فئات التعليقات التوضيحية الأخرى، والتي يمكن اعتبارها على أنها تعليقات توضيحية بشكل غير مباشر باستخدام @المعاينة المحددة. (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)
- تحسين نماذج التمرير RSB. (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
التي تتضمّن الاسم المؤهّل بالكامل لفئة السمة كمَعلمة applier. للحصول على مثال على استخدام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).
تعديلات على التبعيات
- تعتمد الآن على لغة
1.6.10
بلغة Kotlin.
الإصدار 1.1
الإصدار 1.1.1
23 شباط (فبراير) 2022
تم إصدار androidx.compose.ui:ui-*:1.1.1
. يحتوي الإصدار 1.1.1 على هذه المراجعات.
إصلاح الأخطاء
- حلّ المشكلة
NullPointerException
في الإصدارandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059، b/206677462) - إصلاح مشكلة تعطُّل التطبيق بسبب محتوى الحافظة أثناء القراءة من الحافظة على Android (I06020، b/197769306)
- تم إصلاح اتجاه النص من اليمين إلى اليسار في
LazyVerticalGrid
(aosp/1931080 وb/207510535)
الإصدار 1.1.0
9 شباط (فبراير) 2022
تم طرح androidx.compose.ui:ui-*:1.1.0
. يحتوي الإصدار 1.1.0 على عمليات الالتزام هذه.
التغييرات المهمة منذ الإصدار 1.0.0
- إتاحة تأثير التمرير السريع بشكل ثابت في Android 12
- تحسينات على حجم مساحات اللمس
- تجدر الإشارة إلى أنّه بالنسبة إلى Compose 1.0، ستوسّع مكونات 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)
إصلاح الأخطاء
- إصلاح مقابض النص التي لا تتحرك عندما يتغير مستوى رؤية أداة IME. (I25f2e)
الإصدار 1.1.0-beta03
17 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-beta03
. يحتوي الإصدار 1.1.0-beta03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مفتاح التعديل الجديد Modifier.onPlaced للسماح برصد تغيير موضع العنصر. وبالتالي، يمكن إجراء تغييرات إضافية على إزاحة المُعدِّل الفرعي استنادًا إلى تغيير موضع الإعلان المرصود. (I558fd)
- تمت إزالة
InjectionScope.flush()
وInjectionScope.dispose()
. يحدث الآن مسح جميع الأحداث والتخلص من النطاق في نهاية طريقة التنفيذ*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) - تمت إضافة أحمال زائدة أقل من الأطفال لتنسيق "التنسيق"، مع تحسين الكفاءة (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 على هذه المراجعات.
الميزات الجديدة
- تم تعديل سياسة ComposeAllowed التي تم تحديثها
1.1.0-alpha03
للاعتماد على لغة1.5.30
في لغة Kotlin. (I74545)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة السمة
Modifier.inspectable
لتضمين مفاتيح التعديل الأخرى. (I1909b، b/191017532) - تمت إضافة
BlurredEdgeTreatment
API لتبسيط حالات استخدام التمويه إلى مجموعات أكثر استخدامًا من علامات القطع وTileModes. تتضمن معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي وتمويه المناطق خارج هذه الحدود باستخدام اللون الأسود الشفاف، أو اقتصاص المحتوى إلى حدود المحتوى من خلال أخذ عيّنة من أقرب حافة لنواة التمويه التي تتجاوز حدود المحتوى. (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 لرسومات المتجهات ليتيح استخدام ColorStateLists كسمات أساسية لدرجة لون الأساس في VectorDrawables. (I86915، b/195668138)
الإصدار 1.1.0-alpha01
4 آب (أغسطس) 2021
تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha01
. يحتوي الإصدار 1.1.0-alpha01 على هذه المراجعات.
التغييرات في واجهة برمجة التطبيقات
- تقبل
RelocationRequester.bringIntoView
الآن المستطيل كمعلمة تتيح لنا عرض جزء من عنصر قابل للإنشاء (Ice2c5، b/194330245). - أصبحت
AnimatedImageVector
وواجهات برمجة التطبيقات ذات الصلة متوفّرة الآن في وحدةandroidx.compose.animation:animation-graphics
الجديدة. (I60873) - تمت إضافة مفتاح تعديل تجريبي للتعامل مع طلبات النقل. (I65a97، b/178211874)
تم تقديم واجهة برمجة تطبيقات BrushPainter لدعم رسم فرشاة عشوائية داخل رسام، على غرار ColorPainter
تم تعديل Brush API لإضافة مَعلمة حجم أساسي يتم الاستعلام عنها ضمن BrushPainter (Ia2752، b/189466433)
تم تعديل طريقة 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 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مثيلات الحالة المستمدة من تتبُّع الأعطال. (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). - تدعم لوحة الرسم الآن معلمة contentDescription لإمكانية الوصول. (Ib547c)
- تمت إعادة تسمية
useDefaultMaxWidth
فيPopupProperties
إلىusePlatformDefaultWidth
. (I05710) - يمكن الآن للمربّعات الحوار استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
- تمت إضافة دعم تجريبي لتمثيلات ملفّات bmp بتنسيقَي HSV وHSL. (Id7cf8، b/180731008)
التغييرات في السلوك
- توفّر ميزة "الإنشاء"
@Preview
الآنLocalActivityResultRegistryOwner
يتيح لك معاينة العناصر القابلة للتجميع التي تستخدم واجهات برمجة التطبيقات مثلrememberLauncherForActivityResult()
التي تعتمد على توفّر هذا المالك. (Ib13d1، b/185693006) - يوفّر خيار إنشاء
@Preview
الآنLocalOnBackPressedDispatcherOwner
يتيح لك معاينة العناصر القابلة للإنشاء التي تستخدم واجهات برمجة تطبيقات مثلBackHandler
التي تعتمد على ذلك المالك الحالي. (Ia1c05، b/185693006)
إصلاح الأخطاء
- تم نقل
InfiniteAnimationPolicy
إلىandroidx.compose.ui:ui
(I5eb09، b/160602714) - تمّت إزالة AnimatedImageVector مؤقتًا لتغيير بنية الوحدة. (I41906، b/160602714)
الإصدار 1.0.0-beta09
16 حزيران (يونيو) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta09
. يحتوي الإصدار 1.0.0-beta09 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تغيير دور التعداد وLiveRegionMode إلى فئات مضمّنة بدالة إنشاء خاصة (Id1890)
- يتم تحويل KeyboardCapitalization إلى فئة مضمّنة. (Id5a1c)
- غيِّر HapticFeedbackType إلى فئة مضمّنة. (I255ec)
- العنوان Modifier.pointerInteropFilter هو @experimentalComposeUiApi. (Iede6c)
- تُعد Textمحاذاة وFontSynthesis وTextDirection فئات مضمّنة الآن. (I212fe)
- تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
- أصبح FontStyle الآن فئة مضمّنة. (I9e48b)
إصلاح الأخطاء
- في الوقت الحالي، الثابتة الرئيسية هي @ExperimentalComposeUiApi. يمكن للرمز المستخدِم أن يُعرِّف الثوابت الخاصة قبل استقرارها. (Ia5d48)
- يمكن الآن إجراء اختبارات الإنشاء على Robolectric. تم تحديد
القيود التالية حتى الآن:
- ما مِن صورة نقطية أصلية، لذا يؤدي
ImageBitmap()
إلى NullPointerException. - لا يتمّ إجراء أيّ رسم، لذا سينتظر
captureToImage()
إلى أجل غير مسمى مرحلة الرسم التالية (أيّ أنّه سيتوقّف عن العمل). - لم يتم تحميل أيّ خط، لذا سيتم قياس أيّ نص بشكل غير صحيح. يكون ارتفاع كل الشخصيات ثابتًا ويتراوح بين 20 و25 بكسل، وعرضها بين 1 و1.5 بكسل.
- لا يشغّل
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
functions ب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)
إصلاح الأخطاء
- سيحتفظ العمود الكسول/الصف الآن بما يصل إلى عنصرَين نشطَين سابقًا (لا يتم التخلص منه) حتى عند الانتقال للأسفل أو للأعلى. يتيح ذلك للمكوّن إعادة استخدام العناصر الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد يُحسِّن أداء الانتقال للأعلى أو للأسفل. (Ie5555)
- سيتم تطبيق
TextGeomerticTransform
وTextDecoration
علىAnnotatedString
كما هو موضّح. (I61900، b/184760917)
الإصدار 1.0.0-beta06
5 أيار (مايو) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta06
. يحتوي الإصدار 1.0.0-beta06 على هذه المراجعات.
التغييرات في واجهة برمجة التطبيقات
- حلّ تعارض مع رمز التنقّل بالإيماءات (I1145e)
- لم تعُد
@ComposeCompilerApi
@RequiresOptIn
(Iab690) - تمت إضافة واجهتَي برمجة تطبيقات لأدوات تسهيل الاستخدام "مجموعة معلومات" و"مجموعة معلومات عنصر" تسمحان بوضع علامة على المجموعة وعناصرها في الخدمات المخصصة لتسهيل الاستخدام (Id54ef وb/180479017).
- تمت إضافة
SemanticsActions.ScrollToIndex
لتمرير قائمة تتضمن عناصر مفهرسة إلى العنصر باستخدام فهرس معين، وSemanticsProperties.IndexForKey
للحصول على فهرس لعنصر في قائمة تتضمن عناصر رئيسية. يتم تنفيذ كلا الإجراءَين من خلال LazyList.- تمت إضافة
SemanticsNodeInteraction.performScrollToIndex
الذي يمرِّر قائمة إلى الفهرس المحدّد، وSemanticsNodeInteraction.performScrollToKey
الذي ينقل القائمة إلى العنصر باستخدام المفتاح المحدّد. (I4fe63 وb/178483889 وb/161584524)
- تمت إضافة
- تمت إضافة ownerViewId إلى GraphicLayerInfo (I19f62)
- تمت إضافة أحمال Font() لتحميل الخطوط من مواد العرض وFile وFileDescriptor (I5d382).
- تمت إضافة واجهة برمجة التطبيقات لإمكانية الوصول
error
التي تسمح بوضع علامة على عقدة تحتوي على إدخال غير صالح (I12997 وb/180584804 وb/182142737). - تمت إضافة
Font()
طريقة تحميل خطوط إضافية من مواد العرض وFile وFileDescriptor (I43007) - إتاحة حفظ AnnotatedString في
TextFieldValue.Saver
تمت إضافةaddTtsAnnotation
ودوالّ withAnnotation إلىAnnotatedString.Builder
(I8cbdc، b/178446304) - تمت إضافة دالة إنشاء الوحدات النصية
TextUnit(value: Float, type: TextUnitType)
(I7ecce، b/178446304)
الإصدار 1.0.0-beta05
21 نيسان (أبريل) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-beta05
. يحتوي الإصدار 1.0.0-beta05 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الإصدارَين التجريبيَين
FocusManager.moveFocus(In)
وFocusManager.moveFocus(Out)
(Ic5534 وb/183746743) - تمت إضافة واجهة برمجة التطبيقات التجريبية
performTextInputSelection
(I2dcbb، b/178510628) - تم إيقاف واجهة
InputEventCallback
نهائيًا. تعذّر استخدام الواجهة في أي واجهة برمجة تطبيقات عامة، ولم يتم استخدام الواجهة في التعليمات البرمجية. (I34a02، b/184003208) - دالة
TextLayoutResult/createTextLayoutResult
متوقفة نهائيًا وهي دالة عامة غير مستخدَمة تمت إضافتها للاختبار. لا تُجري الدالة أيّ إجراء قابل للاستخدام في واجهات برمجة التطبيقات لإنشاء النصوص. تم إيقاف هذه الوظيفة نهائيًا وستتم إزالتها في وقت لاحق. (I80413)
إصلاح الأخطاء
- تم إصلاح إجراءات الانتقال للأعلى أو للأسفل باستخدام
ACTION_SCROLL_FORWARD
وACTION_SCROLL_BACKWARD
accessibilityActionScrollLeft
وaccessibilityActionScrollUp
accessibilityActionScrollRight
وaccessibilityActionScrollDown
. بدلاً من الانتقال إلى نهاية المحتوى المعروض على الشاشة، سيتم الآن الانتقال إلى شاشة واحدة في الاتجاه المحدّد. (Ieccb0) - أصبحت ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع نظام التشغيل Android 12 (I6f9de وb/184718994).
الإصدار 1.0.0-beta04
7 نيسان (أبريل) 2021
تم إصدار androidx.compose.ui:ui-*:1.0.0-beta04
. يحتوي الإصدار 1.0.0-beta04 على عمليات التنفيذ هذه.
تغييرات واجهة برمجة التطبيقات
- أعِد تسمية
hideSoftwareKeyboard
وshowSoftwareKeyboard
فيSoftwareKeyboardController
إلىhide()
وshow()
على التوالي.- توفير واجهة 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) - يعتمد إنشاء 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) }
عند استخدامه داخل وجهة تركيب التنقّل (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)
- تمت إعادة تسمية تطبيق MeasurementBlocks ليصبح MeasurementPolicy، والذي أصبح واجهة ممتعة. تم تعديل أو تبسيط واجهات برمجة التطبيقات للتصميم لاستخدام MeasurementPolicy. (Icab48، b/167662468، b/156751158)
- تم استبدال
InteractionState
بـ[Mutable]InteractionSource
- تتحمّل الواجهات مسؤولية إصدار أحداث التفاعل أو جمعها.
- بدلاً من تمرير
interactionState = remember { InteractionState() }
إلى مكوّنات مثلButton
وModifier.clickable()
، استخدِمinteractionSource = remember { MutableInteractionSource() }
. - بدلاً من:
Interaction.Pressed in interactionState
، يجب استخدام دوالّ الإضافة في InteractionSource، مثل InteractionSource.collectIsPressedAsState(). - بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة بث التفاعلات. اطّلِع على مستندات InteractionSource وعينات منها للحصول على مزيد من المعلومات.
- (I85965 وb/152525426 وb/171913923 وb/171710801 وb/174852378)
- إضافة واجهة AccessibilityMananger و LocalAccessibilityMananger في 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)
- تعرض ميزة "العناصر القابلة للوضع" الآن المقاس الذي تم قياسه، ما يمثّل المقاس الذي تم قياسه بتصميم التصميم الفرعي. قد لا يراعي هذا الحجم قيود القياس. (Ib2729 وb/172560206 وb/172338608)
- إضافة معدِّل selectGroup يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (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.nested Scroll. (Ie9c9b)
تم نقل الاتجاه إلى حزمة الأساس. تم نقل أداة VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8 وb/175294473)
تُعد imageResource وectResource الآن دوال إضافة على الأدوات المصاحبة لـ ImageBitmap وImageVector على التوالي. تم حذف
load{Image,Vector,Font}Resource
دالة. (I89130)تمت إزالة AnimationClockObservable وفئاتها الفرعية. تمت إزالة AnimatedFloat. (Icde52، b/177457083)
تمت إعادة تسمية Providers إلى CompositionLocalProvider.
- لم تعد طريقة إنشاء المقطوعة الموسيقية تقبل معلَمة رئيسية، وتم إيقافها نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة قابلة للتجميع من المستوى الأعلى بدلاً من دالة قابلة للتجميع من المستوى الأعلى.
- تم نقل GenreData وSurfaceGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم تحويل ComposableLambda إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات أنواع.
- تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات نوع.
- تم نقل الدالة sampleFlow إلى مساحة الاسم 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 داخليًا. (رقم تعريف 1290)
تمّت إزالة التأكيدات على 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)
تمت إزالة معاودة الاتصال لبرنامج SoftwareControllerController من جميع الحقول النصية لاستبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (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). - تمت إضافة واجهة برمجة تطبيقات محلية جديدة لتركيب LocalSoftwareMonitorController لاستبدال واجهة SoftwareboardController السابقة في 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 الآن قيم lambdas التي تعرض أعداد عائمة بدلاً من قيم عائمة مباشرة. (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.dragالإيماءاتFilter نهائيًا. استخدِم
Modifier.pointerInput { detectDragGestures (...)}
بدلاً من ذلك. بدلاً من ذلك، استخدِم Modifier.draggable لسحب محور واحد (I0ba93، b/175294473). - أُعيدت تسمية "الأجواء المحيطة" لتتطابق مع "وضع الاستراحة" -> ChocolateLocal. كان يُطلق على الخلفيات اسم AmbientFoo، والآن يُطلق على CompositionLocals اسم LocalFoo. (I2d55d)
- تمت إزالة BaseTextField المتوقّف نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
- تم نقل التحديد إلى الأساس. (I7892b)
- على غرار الطريقة التي أزلنا بها سابقًا
state { 0 }
composable وبدأنا الآن الترويج لاستخدامremember { mutableStateOf(0) }
، سنزيلsavedInstanceState { 0 }
composable. يجب استخدام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)
- تمت إعادة تسمية Artefact 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 في الشكل. يتيح ذلك إنشاء أشكال تراعي اتجاه التنسيق. (I57c20، b/152756983)
- تم إيقاف onImeActionPerformed نهائيًا. يمكنك استخدام "إجراءات لوحة المفاتيح" بدلاً منها (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 مع وظيفتَيdetectTapالإيماءات بدلاً من ذلك. (I6baf9، b/175294473)
- تمت إزالة عنصر unregisterProvider الخاص بـ SaveableStateRegistry. بدلاً من ذلك، تُعرِض الآن دالة registerProvider() عنصر SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739).
- تم تغيير اسم SavedInstanceState() لتذكُّر Saveable() ونقله إلى الحزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
- تمت إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة.
- إزالة التحميل الزائد لـ SelectionContainer المتوقف نهائيًا
- (I99c19)
- أصبحت الاختبارات التي يتم فيها استخدام Compose في التسلسلات الهرميّة التي تتم إضافتها أو إزالتها مباشرةً إلى WindowManager أكثر ثباتًا. (Ie81ed، b/175765614)
- تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم تلقائيًا ضبط إعدادات Recomposer على مستوى النافذة التي تم إنشاؤها بشكل كسول والتي يتم تفعيلها من خلال 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)
إصلاح الأخطاء
- عناصر ComposeView الموضوعة في تسلسل هرمي للعرض هي عناصر تابعة لمقطوعة موسيقية أخرى تستضيف الآن مقطوعات موسيقية تابعة لأسلافها (I92883)
- تم تعديل واجهة برمجة التطبيقات imageFromResource في أداة الإنشاء لإعادة استخدام ذاكرة التخزين المؤقت للعناصر القابلة للرسم في الموارد عند تحميل عناصر ImageBitmap. (If3627، b/178751994)
الإصدار 1.0.0-alpha11
28 كانون الثاني (يناير) 2021
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha11
. يحتوي الإصدار 1.0.0-alpha11 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة صياغة WithConstraints لتكون BoxWithConstraints وتم نقلها إلى foundation.layout. (I9420b، b/173387208)
- تم إيقاف Key.DPadUp نهائيًا. استخدِم Key.DirectionUp بدلاً من ذلك. (Iab335، b/177954892)
- واجهة المالك من الآن فصاعدًا داخلية. (If8e35)
- تمت إضافة واجهة برمجة التطبيقات FocusManager.moveFocus() لنقل التركيز آليًا. (I045cb، b/177681839)
- يغيّر PopupPositionProvider لاستخدام الإحداثيات النسبية للنافذة، وليس الإحداثيات الشاملة. إعادة تسمية parentGlobalBounds إلى anchorBounds، وتغيير windowGlobalBounds ليصبح windowSize: IntSize (I2994a)
- سيتم استبدال 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 إلى promotionBarRangeInfo. تمت إعادة تسمية 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
- كثافة الخط
- TextDecoration
- TextGeometricTransform
- فهرس النص
- 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 أقل فعالية مقارنةً بـ 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)
- تمت إزالة استخدام showObserver المتوقّف على 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 بدلاً من ذلك مباشرةً. (Iama6b)
إضافة مفتاح تبديل إلى المؤسسة 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 وKeyOptions فئة بيانات (I3c898 وb/168684531)
التغييرات في واجهة برمجة التطبيقات VisualTransformation API
- تمت إعادة تسمية OffsetMap إلى OffsetMapping
- تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
- لم يعد تحويل كلمات المرور من فئة البيانات
- تم نقل 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)
- تمت إعادة تسمية تسهيل الوصول إلى سمة 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. تتيح هذه الإعدادات ضبط وقت استدعاء دالة onResumeRequest lambda في مربّع الحوار. (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)
تمت إزالة TableauTable وStotReader و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. تم إنشاء ملف DrawModifier off.kt لتضمين طرق typealiases/helper للمساعدة في النقل من واجهات برمجة التطبيقات المتوقّفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
- تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer كما تم تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا لملاحظات الواردة من واجهة برمجة التطبيقات. (I0bd29، b/173834241)
- تمت إضافة طرق جديدة Placeable.placeWithLayer() وplaceable.place تقريبًاWithLayer() تسمح للتنسيقات المخصصة ومفاتيح تعديل التنسيق بوضع عنصر ثانوي مع تقديم طبقة رسومات للرسم. بعد ذلك، يمكننا تحسين عمليات إعادة الرسم أولاً، لكي لا نضطر إلى إعادة رسم المحتوى عندما نحتاج إلى نقل عنصر فرعي، وثانيًا، يمكننا تطبيق عمليات تحويل الرسم على العنصر الفرعي (Ibd8f6 وb/170296989 وb/171493718 وb/173030831).
- تمت إزالة
<T>
من بيان SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8) - تمت إضافة واجهات برمجة التطبيقات Modifier.scale/rotate
لتسهيل استخدام drawLayer.
- تمت إعادة تسمية
Modifier.drawOpacity
إلىModifier.alpha
- تمت إعادة تسمية
Modifier.drawShadow
إلىModifier.shadow
(I264ca، b/173208140)
- تمت إعادة تسمية
- جعلت حقلَي 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) - تمت إضافة فحص Lint لتسمية مَعلمات 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 لـ compat. (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.ثم. تمت إزالة 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)
إصلاح الأخطاء
- تمت إعادة تسمية معلَمة المحاذاة في Box إلى contentAlignment. (I2c957)
- تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. تأخذ الآن معلمات lambda بدلاً من State. (Ic3021، b/173594846)
- تمت إضافة مَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
- تمت إضافة فحص أخطاء لإعدادات المُعدِّل في الدوالّ القابلة للتجميع. تتحقق أداة Lint هذه من التسمية ونوع الإرجاع والقيمة الافتراضية وترتيب المعلمة للتأكد من الاتساق مع إرشادات 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.اكتساب (اكتساب) إلى TextUnit.لم يتم تحديده لضمان الاتساق مع الوحدات الأخرى. (Ifce19)
الإصدار 1.0.0-alpha07 لواجهة مستخدم ميزة "الإنشاء"
11 تشرين الثاني (نوفمبر) 2020
تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة فئة ScaleFactor
المضمّنة لتمثيل عوامل التكبير
للمحورين الأفقي وعمودي
بشكل مستقلّ عن بعضهما البعض بغرض
إتاحة حالات استخدام التكبير غير الموحّد.
- تمت إضافة طريقة computeScaleFactor إلى ContentScale
- تمت إضافة ContentScale.FillBounds لإجراء عملية تكبير/تصغير غير منتظمة لتمديد حدود المصدر لكي تشغل الوجهة بالكامل.
- تمت إضافة طرق عوامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
- (Ic96a6، b/172291582)
- تمت إضافة مصنعي محاذاة التحيز ومحاذاة التحيز المطلق لإنشاء المحاذاة. (Iac836، b/169406772)
- السماح للمطوّر بإلغاء التركيز بشكلٍ قسري (I90372)
- تم إصلاح خطأ يتسبب في عدم رسم ارتفاع المشاهدات داخل Compose. (If7782)
- تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
- يمكنك إضافة دعم مسافة الكاميرا لتتكامل مع عمليات التحويل الثلاثية الأبعاد rotationX/rotationY على واجهات برمجة التطبيقات ذات الطبقات. (I40213، b/171492100)
- تمت إضافة SelectionContainer بدون دالة ردّ الاتصال (Ibfadb)
- تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
- تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7).
- تمت إزالة التعتيم من المُعدِّل drawShadow() لأنّه كان مربِكًا. (I82c62، b/171624638)
- تم نقل MeasureResult خارج MeasureScope. (Ibf96d، b/171184002)
- تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
- تمّت إزالة FocusState2 (I686cb، b/168686446) التي تمّ إيقافها نهائيًا.
- أصبح مُعدِّل "فهرس المستوى" داخليًا الآن (I1808b، b/171493718)
- تم تعديل نوع الإرجاع لطريقة lerp في مَعلمات Size لعرض قيمة مقاس غير صفرية لتجنُّب التفاف غير الضروري. (Ib0044)
- تمت إضافة TestMonotonicFrameClock لاختبار الرمز البرمجي الذي يعتمد على MonotonicFrameClock لانتظار أحداث إطار التركيب باستخدام runBlockTest التابع لـ kotlinx-coroutines-test (I4402f).
- تمت إزالة GestureScope.localToGlobal (I15299، b/171462785)
- تمت إضافة أداة البحث
onAllNodesWithSubstring
(I81dd7، b/171462889) - تم إيقاف وحدة androidx.ui.test نهائيًا. يُرجى نقل الإصدار إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8).
إصلاح الأخطاء
- تم نقل captureToBitmap إلى captureToImage. (I86385)
- تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية غير معرَّفة لا تستهلك قيمًا من مظهر معيّن، يُرجى الانتقال إلى androidx.compose.foundation.BasicText. (If64cb)
- تعديل TextFields لقبول KeyboardOptions (Ida7f3)
- إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
- تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
- تمت إضافة provideDefault كبديل لتقديم القيم المحيطة، ويمكن استخدامه لتحديد القيم المحيطة التي لن يتم ضبطها إلا في حال عدم توفّر قيمة محيطة مقدَّمة من قبل. (Id6635، b/171024925)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- تقديم وحدة ui-test-junit4 (Ib91f8)
- تمت إعادة تسمية "
relativePaddingFrom
" إلى "paddingFrom
". تمت إضافة المُعدِّلpaddingFromBaseline
لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813) - تمت إعادة تسمية LaunchedTask إلى LaunchedEffect للحفاظ على الاتساق مع واجهات برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدون معلمات موضوع بهدف التشجيع على أفضل الممارسات. (Ifd3d4)
- تمّت إضافة موارد قابلة للتجميع يمكن إعادة تركيبها عند تعديل الإعدادات. (I6387c، b/167352819)
- تتطلّب أداة إعادة الإنشاء الآن توفُّر CoroutineContext عند الإنشاء (Ic4610).
- تجميع قيم
zIndex
عند تطبيق عدّةModifier.zIndex()
في السابق، كان الخيار الأول هو الخيار الفائز. (Ic514c، b/170623936) - تغييرات على طريقة تنفيذ SlotTable الداخلية التي من المفترض ألا تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
- تمت إضافة خيار IME للتصحيح التلقائي للوحة المفاتيح (I57b8d)
- تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
- تمت إزالة BoardOptions.toImeOptions من واجهة برمجة التطبيقات العامة. (Ic2e45)
المساهمة الخارجية
- تم إيقاف نشر العنصر الداخلي androidx.compose.ui:ui-text-android (Ib93fa)
الإصدار 1.0.0-alpha06
28 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.ui:ui-*:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أصبحت الآن أداة إعادة الإنشاء مرجعًا للمقطوعة الموسيقية وعنصرًا رئيسيًا صالحًا للتركيب. أصبح استخدام ميزة "إعادة التركيب الصريح" مطلوبًا الآن في عدد أقل من الأماكن. (I4036f)
- إيقاف VectorPainter نهائيًا واستخدام 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) - تم إنشاء واجهتين لـ MeasurementScope و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 الثانوية التي تعرض خطأ 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 للتحقق من المقاس.غير محدَّد، بالإضافة إلى الأحجام غير المحدودة. (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)
لم يعد من الممكن قراءة positionScope#parentRate و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 لإنشاء طلب، topRight و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 على عمليات التنفيذ هذه.
تغييرات واجهة برمجة التطبيقات
- إزالة رد الاتصال لإشعار المالك عند تغيير حدود عقدة التخطيط. (If654e، b/166106882)
- تمت إضافة إمكانية استخدام مَعلمات نوع الملء في مسارات الرسومات المتجهّة لإتاحة اقتطاع الأشكال وفقًا لقواعد ملء المسار evenOdd أو NonZero. (I43dd2)
- أصبحت Uptime وVelocity الآن صفوفًا مضمّنة (I48f4a).
- أصبحت المدة الآن فئة مضمّنة (I565eb).
- أضِف دالة استدعاء لإعلام المالك عند تغيير حدود layoutnode. (Ic40b3)
تم إصلاح المشكلة التي كانت فيها الدالة الإنشائية لدالة Rect مع الإزاحة ونصف القطر قد تنشئ المستطيل بالترتيب الأيسر، الأيمن، الأعلى، السفلي بدلاً من اليسار، الأعلى، اليمين، الأسفل.
تمّت إزالة طرق المرافق المتوقّفة نهائيًا في Rect واستخدام وظائف الإنشاء بدلاً منها.
تمت إضافة اختبارات للتحقّق من الطرق في Rect.kt (I08460 وb/165822356).
إصلاح الأخطاء
- تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
- تم استبدال Matrix4 بـ Matrix. تمت إزالة جميع الأجزاء الأخرى من حزمة ectmath. (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
بدلاً من ذلك إن أمكن لعرض المشاهد داخل أداة "الإنشاء". يُرجى العِلم أنّه لن يكون من الممكن في المستقبل إنشاء عناصر 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)القيود الآن هي فئة مضمّنة (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 على خاصية يونيكود يمكن استخدامها لإنشاء حرف يونيكود الذي يتم إنشاؤه بواسطة تركيبة المفتاح وحالة المفتاح الوصفية المحددة (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. استخدِم عمودًا/صفًا قابلاً للتمرير بدلاً من ذلك. تمت إزالة 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)
- تمت إزالة 2 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 جديدة وإيقاف التطبيقات الحالية نهائيًا. (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. استخدم getLineVisualEnd/getLineEnd/isLineEllipsize بدلاً من ذلك. (I85aa2)
- أضِف بعض العلامات أو التعليقات التوضيحية وفقًا لأفضل الممارسات. (I66b20)
- إتاحة المزيد من واجهات برمجة التطبيقات للسطور في TextLayoutResult (I79bd2)
- يمكن الآن الوصول إلى محوِّلات المتجهات المضمّنة لتحويل الوحدات المضمّنة من خلال Foo.VectorConverter، مثل Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter وما إلى ذلك (I3e273).
إصلاح الأخطاء
- معالجة إصلاحات واسعة النطاق لواجهات برمجة التطبيقات (I077bc)
- إزالة واجهة OffsetBase غير المستخدمة
- مواءمة فئتَي Offset وIntOffset للحصول على سطح واجهة برمجة تطبيقات متّسق
- إعادة تسمية IntOffset.Origin إلى IntOffset.Zero ليكون متوافقًا مع Offset API
- تم نقل طريقة nativeCanvas من واجهة Canvas لمساعدة المستهلكين على إنشاء مثيلات Canvas الخاصة بهم.
- تم إنشاء فئة EmptyCanvas مجردة لإعادة هيكلة DrawScope لتكون مَعلمة غير صفرية بدلاً من lateinit وضمان عدم توفُّر قيمة صفرية للحقل
- تمت إعادة تسمية قوائم القيم المحددة لـ ClipOp لتكون بتنسيق Pascal Case
- تمت إعادة تسمية القيم المحددة مسبقًا لـ FilterQuality لتكون بتنسيق Pascal Case
- تمت إعادة تسمية قوائم StrokeJoin المحددة لتكون بتنسيق Pascal Case
- تمت إعادة تسمية القيم المحددة في PointMode لتكون بتنسيق Pascal Case
- تمت إعادة تسمية تعداد PaintingStyle ليصبح Pascal Case.
- تمت إعادة تسمية القيم المحددة لـ PathFillType لتكون بالتنسيق Pascal Case
- تمت إعادة تسمية قوائم StrokeCap المحددة لتكون بتنسيق Pascal Case
- تم تعديل تنفيذ DrawCache ليصبح لا يستخدم مَعلمات lateinit
- تم تعديل DrawScope كي لا يستخدم التفويض البطيء للمَعلمتَين الداخليتَين fillPaint وstrokePaint.
- تم تعديل ميزة "إنشاء الصور" لتجنُّب استخدام Box لخفض التكاليف غير الضرورية
- تم تعديل فئة المخطّط لإضافة التعليقات التوضيحية @Immutable
- تم تعديل PathNode لإضافة تعليقات توضيحية من النوع @Immutable لكل تعليمات مسار.
- تم تعديل التركيب الفرعي للشكل المتجه لإزالة عمليات التحقّق المتكرّرة الشرطية من المساواة لأنّ عملية الإنشاء تتعامل مع هذه العمليات
- طرق إنشاء العنصر المصاحب Rect المتوقّفة نهائيًا لصالح طرق إنشاء الدوالّ
- تم تعديل فئات Brush ووظائف الإنشاء باستخدام واجهتَي برمجة التطبيقات @Immutable و @Stable
- تم تعديل النطاق المحدَّد VertexMode ليكون PascalCase
- تم تعديل طريقة DrawScope selectPaint لإعادة كتابة مَعلمات الخطوط على الطلاء بشكل مشروط في حال تغيّرت
- تم تعديل الحجم لإضافة واجهة برمجة التطبيقات للتدمير، يُرجى إعادة تسمية UnspecifiedSize إلى Unspecified and عنصر "الطرق غير المستخدمة" التي تمت إزالتها.
- تم تعديل استخدام واجهة برمجة التطبيقات 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 وFocusDetailsState لصالح FocusState2 (I46919، b/160822875، b/160922136)
- تمت إضافة أداة تعديل لتتبُّع التغيير في حالة التركيز. (I05866، b/160924455، b/160923326)
- تمت إضافة مُعدِّل لطلب تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
- عدِّل قائمة شريط الأدوات لعرض عمليات النسخ والقطع واللصق بشكل صحيح. (Id3955)
- تستخدم الآن سمات الدلالات ذات القيمة الواحدة أسلوبًا للاتّصال.
على سبيل المثال، يتم الآن كتابة "semantics { hidden = true }" على النحو التالي:
semantics { hidden() }
. (Ic1afd، b/145951226، b/145955412) - تمت إضافة Modifier.focus الذي يحلّ محلّ FocusModifier. (Ib852a، b/160924778)
- إضافة FloatingToolbar لتحديد حقل النص (Ie8b07)
- تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لواجهة برمجة التطبيقات ذات الصلة بإدخال المفاتيح (I53c0a)
- تمت إضافة تعليق توضيحي تجريبي لواجهات برمجة التطبيقات لجميع واجهات برمجة التطبيقات ذات الصلة بخدمة "التركيز" (I53b24، b/160903352)
- تمت إضافة FocusState2 الذي سيحل محل FocusDetailsState (I0a3ba، b/160822595)
- تمت إضافة TestingalFocus، وهي عبارة عن تعليق توضيحي @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).
قبل إجراء هذا التغيير، كان المكوّن الإضافي لمحرِّر Compose يعرقل بشكلٍ غير بسيط طلبات إنشاء العناصر داخل دالة @Composable في حال توفّر (I5205a، b/158123804)
تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط مع Modifier.testTag. (I995f0)
إنّ مواضع Int لخط المحاذاة التي يتم عرضها من Placeable#get(AlignmentLine) ليست فارغة الآن. إذا لم يكن خطّ المحاذاة الذي تم الاستعلام عنه متوفّرًا، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)
تمت إضافة مَعلمة تعديل في AndroidView القابل للإنشاء. (I48a88، b/158746303)
تم إيقاف Semantics() نهائيًا. يمكنك استخدام Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)
إضافة عنصر viewModel() composable الذي يتيح إنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه مسبقًا على غرار طريقة عمله في Activity أو Fragment (I5fdd1)
تم استبدال استخدام IntPx بـ Int. وتم استبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يوفر هذا مزايا الفئة المضمنة للاستفادة من القيمة الطويلة لحزمة قيمتين عائمتين لتمثيل العرض والارتفاع ممثلين بأعداد عشرية. (Ic0191)
من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد المكانة، عليك توحيد استخدام فئة الإزاحة بدلاً من PxPosition. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحة x وإزاحة y التي تم تمثيلها كقيم عائمة. (I3ad98)
تم استبدال الاستخدام لفئة Px في فئات إنشاء مختلفة كجزء من جهود إعادة البناء الكبيرة للاعتماد فقط على أنواع 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).
تمت إضافة مكون Dropdown Menu في مادة ui-material، وهو تنفيذ لقائمة التصميم المتعدد الأبعاد. (I9bb3d)
تمّت إزالة الدالة LayoutTag() التي تمّ إيقافها نهائيًا، يُرجى استخدام Modifier.tag() بدلاً منها. تمت إزالة Modifier.matchParent() المتوقّف نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً منه. (If8044)
تم استبدال الاستخدام لفئة Px في فئات إنشاء مختلفة كجزء من جهود إعادة البناء الكبيرة للاعتماد فقط على أنواع Dp والأنواع الأساسية لمعلمات البكسل (I57bff)
تم إلغاء إيقاف Modifier.semantics نهائيًا للسماح باستخدامات المكونات عالية المستوى. (I4cfdc)
تم دمج عمليات تنفيذ CanvasScope ليصبح لدينا الآن DrawScope و ContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة الكثافة وتوفير الفئة الفرعية 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. يلغي ذلك حاجة المستهلكين إلى صيانة كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين يحتاجون إلى الوصول إلى Canvas ، يمكنهم استخدام أسلوب إضافة drawCanvas الذي يقدّم طلب استدعاء لإصدار تعليمات الرسم باستخدام Canvas الأساسية. (I80afd)
تم تغيير واجهة برمجة تطبيقات lambda اللاحقة بالقيود الخاصة بالقيود المفروضة على واجهة برمجة تطبيقات lambda. فبدلاً من مَعلمتَين، أصبح لديه نطاق للمستلِم، بالإضافة إلى القيود وLayoutDirection الذي يوفّر خصائص minRate وmaxwidth وminHeight وmaxHeight في Dp (I91b9a، وb/149979702)
تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)
تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)
تتضمّن دوال القياسات الجوهرية في كل من Layout وLayoutModifier2 أداة استقبال IntrinsicmeasureScope تقدم الآن واجهة برمجة تطبيقات لطلبات البحث الجوهرية مع اتجاه التنسيق الذي يتم نشره بشكل ضمني. (Id9945)
يمكن قياس عناصر Layout وLayoutModifier باستخدام اتجاه تنسيق مختلف. (Ibd731)
تمت إضافة دالة Modifier.zIndex() الجديدة للتحكّم في ترتيب رسم العناصر الفرعية ضمن تنسيق العنصر الرئيسي نفسه. تمت إعادة تسمية سمة elevation في DrawLayerModifier إلى shadowElevation، ولم تعُد تتحكّم في ترتيب الرسم. تم تغيير ترتيب المَعلمات في DrawShadow: أصبح الارتفاع هو المَعلمة الأولى والشكل هو المَعلمة الثانية مع الشكل التلقائي RectangleShape. (I20150، b/152417501)
تمت إزالة onSizeChange وonPositionChange في Owner. (I5c718)
تمت إضافة Constraints2، وهي نسخة من Constraints لا تسمح سوى بقيَم قيود Int بدلاً من IntPx. ستتم إزالة IntPx ، وسيتم افتراض أنّ جميع قيود الأعداد الصحيحة هي بكسل مثل Android.
- تمت إضافة IntSize أيضًا، والذي سيحلّ محلّ IntPxSize في النهاية. (I4b43a)
جعل المحاذاة قابلة للتكرار باستخدام قيم عشوائية. تمت إضافة محاذاة أحادية الأبعاد. (Ia0c05)
تقبل \nToSiblings الآن القيمة Measuremented بدلاً من Placeable. (I5788d)
-
- تمت إعادة تسمية ScaleFit إلى ContentScale
- تم نقل ContentScale من ui-graphics إلى وحدة ui-core لتكون في الوحدة نفسها التي تتضمّن Alignment API.
- تمت إعادة تسمية FillMaxDimension إلى Crop
- تمت إعادة تسمية fillMinDimension إلى Fit.
- تم تغيير اسم ميزة "الملاءمة للداخل" إلى "الملاءمة للشاشة" لتناسب الشاشة بشكل أفضل.
- مكافئات ImageView.ScaleType
- تمت إضافة مستندات تشير إلى أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_CROP وFit المستخدَم مع Alignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.FIT_CENTER Inside المستخدَم مع Alignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_INSIDE
إتاحة اتجاه 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 لتصميم. ويتيح ضبط القطع والشفافية والدوران والتكبير/التصغير والظلال. سيحلّ هذا الإجراء محلّ RepaintBoundary. (I7100d، b/150774014)
تم نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العناصر الثانوية. تمت إضافة معدِّل اتجاه التنسيق. (I3d955)
يتيح مكوّن "الحزمة" الاتجاه من اليمين إلى اليسار (Ic9e00).
الدعم الأولي لـ Rtl في تنسيق Compose (Ia5519)
تم دمج الكثافة ونطاق الكثافة في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density)، يمكنك استخدام with(density) فقط (I11cb1).
تم تغيير LayoutCoordinates لجعل providedAlignmentLines مجموعة بدلاً من خريطة، وجعل LayoutCoordinates تنفِّذ عامل التشغيل get() بدلاً من استرداد قيمة. ويسهّل هذا على المعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)
لم تعُد سمة LayoutCoordinates تحتوي على سمة position. لا يكون لخاصية الموضع معنى عند التفكير في LayoutModifiers أو التدوير أو التحجيم. بدلاً من ذلك، يجب على المطورين استخدام parentCoordinates وchildToLocal() لحساب التحويل من LayoutCoordinate إلى آخر.
تستخدم LayoutCoordinates IntPxSize لخاصية الحجم بدلاً من PxSize. تستخدم التخطيطات أحجام وحدات بكسل صحيحة للتخطيطات، لذلك يجب أن تستخدم جميع أحجام التخطيط الأعداد الصحيحة وليس قيم النقطة العائمة. (I9367b)
تحسينات على واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)
تم إنشاء واجهة برمجة التطبيقات CanvasScope API التي تُغلِّف كائن canvas لعرض سطح واجهة برمجة تطبيقات رسومات تعريفية بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق المستلِم الخاص بها، ويتم أيضًا تحديد نطاق معلومات الحجم لحدود الحشو المقابلة. ولا يتطلّب ذلك من المستخدِم الاحتفاظ بحالة الطلاء الخاصة به لضبط عمليات الرسم.
- تمت إضافة 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 لدعم الاستعلام عن معلومات البكسل من 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.getStringتعليقات توضيحية تعرض جميع التعليقات التوضيحية داخل النطاق. (I1fa00)
تم تغيير اسم حزمة Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)
يحتوي مؤشر حقل النص على صورة متحركة وامضة (Id10a7)
تغيير واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) ليصبح خاصًا بالتعليقات التوضيحية(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)
إضافة المساحات المتروكة والحدود والشكل ومَعلمة الخلفية إلى Box (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)
إعادة بناء فئة نصف القطر ليكون فئة مضمّنة. تمت إزالة methods لإنشاء الأشكال المصاحبة واستخدام دالة باني الدوال مع مَعلمة تلقائية لكي يتطابق نصف القطر على محور y مع مَعلمة نصف القطر الإلزامية على محور x.
تم تحديث DrawScope.dropRect لاستهلاك معلَمة Radius واحدة بدلاً من قيمتين عائمتين منفصلتين للنطاق الجغرافي على طول المحورين x وy (I46d1b).
لم تعُد ميزة Recompose composable عنصرًا مجردًا مفيدًا. من المفترض أن تحدث معظم عمليات إعادة التركيب نتيجة عمليات تعيين MutableState. لأيّ شيء آخر، ننصحك باستخدام الدالة
invalidate
لإعادة تكوين النطاق الحالي. (Ifc992)تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Iede0b)
يغيّر استراتيجية إنشاء الرموز البرمجية لمجمّع Compose. قبل التغيير، كان مُجمِّع الإنشاء يحوّل المكالمات إلى دوال قابلة للتركيب. من خلال هذا التغيير، نُحوّل الآن نص الدالة القابلة للتجميع ونترك موقع الاستدعاء بدون تغيير (في الغالب).
وهذا يعني أنّ معظم المنطق الذي يتواصل مع وقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات Compose. يجب ألا يضطر معظم مستخدمي واجهة برمجة التطبيقات إلى تحديث أي رمز نتيجة لهذا التغيير.
ولتفعيل هذا الإجراء، تم تغيير توقيع JVM لجميع الدوال القابلة للتجميع. يتم تحويل دالة قابلة للتجميع تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، والمَعلمات الإضافية هي "المُنشئ"، وهو عدد صحيح "مفتاح"، وعدد صحيح لقناع بتات يُستخدَم لنشر البيانات الوصفية من خلال طلبات البيانات.
تعمل ميزة "الإنشاء" الآن أيضًا على تحويل الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إدخال حمولة زائدة تلقائية اصطناعية إضافية للدالة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوالّ.
التغييرات السلوكية المتعمّدة المعروفة الناتجة عن ذلك:
- سيتم تخطّي بعض المكالمات إلى الأماكن التي لم يكن ممكنًا إجراؤها سابقًا
- تم الآن الاشتراك في التعبيرات القابلة للتجميع في تعبيرات الوسائط التلقائية ومعالجتها بشكل صحيح.
شمل هذا العمل بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال مخطّط استدعاء الدوال إلى الدوال الأخرى القابلة للتجميع. سيؤدي ذلك إلى إجراء عدد أقل من المقارنات أثناء التشغيل، وإلى تقليل حجم جدول الفتحات، بالإضافة إلى زيادة عدد عمليات تخطّي الدوالّ القابلة للتجميع التي لم يتم تخطّيها في السابق 2. لا تتمّ مقارنة المَعلمات التي يتمّ تحديدها على أنّها "ثابتة" في وقت الترجمة أو تخزينها في وقت التشغيل. ويؤدي ذلك إلى تقليل عدد المقارنات وحجم جدول الفتحات. 3- يتم استخدام بنية تدفّق التحكّم في نص الدوالّ لتقليل عدد المجموعات التي يتم إنشاؤها. ويؤدي ذلك إلى تقليل حجم جدول الفتحات ويؤدي إلى تقليل العمل الذي يُجريه وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والمُستلِم غير المستخدَمة في الدوالّ عند تحديد إمكانية تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.
كانت معظم التغييرات التي قد تؤدي إلى أعطال في واجهات برمجة التطبيقات التي يستهدفها المحول البرمجي بشكل مباشر، ولن يتأثر الاستخدام المعتاد للإنشاء: 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)