واجهة مستخدم إنشاء الرسائل

المكونات الأساسية لواجهة المستخدم الخاصة بإنشاء الرسائل اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
11 كانون الأول (ديسمبر) 2024 1.7.6 - - 1.8.0-alpha07

البنية

Compose هو عبارة عن مجموعة من 7 أرقام تعريف مجموعات Maven ضمن androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدفة من الوظائف، ولكل مجموعة مجموعة خاصة بها من ملاحظات الإصدار.

يوضّح هذا الجدول المجموعات والروابط لكل مجموعة من ملاحظات الإصدار.

مجموعةالوصف
compose.animationإنشاء صور متحركة في تطبيقات Jetpack Compose لتحسين تجربة المستخدم
compose.compilerحوِّل دوالّ @Composable وفعِّل التحسينات باستخدام مكوّن إضافي لمجمّع لغة Kotlin.
compose.foundationيمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع الأساس لإنشاء أجزاء نظام التصميم الخاص بك.
compose.materialأنشئ واجهات مستخدم Jetpack Compose باستخدام مكونات Material Design الجاهزة للاستخدام. هذه هي نقطة الدخول ذات المستوى الأعلى في أداة "الإنشاء"، وهي مصمّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة على www.material.io.
compose.material3أنشئ واجهات مستخدم Jetpack Compose باستخدام مكونات Material Design 3، وهي الإصدار التالي من Material Design. يتضمّن Material 3 ميزات تخصيص Material You، مثل الألوان الديناميكية، وتصميمًا جديدًا للعناصر والمظاهر، وهو مصمّم ليتوافق مع التصميم المرئي الجديد لنظام Android 12 وواجهة مستخدم النظام.
compose.runtimeالوحدات الأساسية لنموذج البرمجة وإدارة الحالة في Compose، ووقت التشغيل الأساسي الذي يستهدفه مكوّن Compose Compiler الإضافي
compose.uiالمكونات الأساسية لواجهة المستخدم الخاصة بإنشاء الرسائل اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال

الإعلان عن التبعيات

لإضافة تبعية على Compose، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle ل تطبيقك أو وحدتك:

رائع

dependencies {
    implementation "androidx.compose.ui:ui:1.7.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.7.5")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإنشاء.

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.

إنشاء مشكلة جديدة

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 1.8

الإصدار 1.8.0-alpha07

11 كانون الأول (ديسمبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha07. يتضمّن الإصدار 1.8.0-alpha07 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تم الكشف عن مالك من LayoutNode للأدوات. (I26f7f)
  • تحتوي على تركيبة LocalAutofillHighlightColor محلية تستخدم نوعًا من أنواع الألوان. (I0e05b)
  • يجب إبقاء UrlAnnotation المُسنَد إليه تاريخ الإيقاف النهائي وطرقه مصنّفة على أنّها تجريبية. (Ic0021)

إصلاح الأخطاء

  • تم إصلاح مشكلة تعطُّل IndexOutOfBoundsException عند استخدام LinkAnnotation داخل BasicText أو عنصر "نص قابل للتركيب" (be7605، b/374115892)
  • تم إصلاح مشكلة عدم اقتصاص خط المؤشر في حقول النصوص المعبأة ذات الشكل المخصّص. (I4f87f، b/380704151)
  • تم إصلاح مشكلة عدم ظهور الخلفيات في لقطات الشاشة الطويلة. (I4d57a)
  • تستخدم هذه المكتبة الآن تعليقات توضيحية حول عدم تحديد قيمة JSpecify، وهي عبارة عن استخدام للنوع. على مطوّري Kotlin استخدام مَعلمات المُجمِّع التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Idfef8، b/326456246)
  • إتاحة ميزة "الإنشاء" للألوان ذات النطاق الواسع وألوان النطاق العالي الديناميكية عند التشغيل على نظام التشغيل Android Q والإصدارات الأحدث (Icd8be، b/379135036)
  • في حال تعذّر تحميل خطوط الموارد، سيتم الآن استخدام الخط التلقائي بدون إشعار، بدلاً من السلوك السابق الذي كان يرمي استثناءً في القياس. (Ib6a49)
  • حلّ مشكلة فقدان التركيز عند فصل AndroidView وإرفاقه (I53446)
  • قبول requestFocus() من إجراء التنسيق خارج الحدود (Ia8461)

المساهمة الخارجية

  • إضافة BringIntoViewResponderModifierNode إلى واجهة المستخدم، ما يقدّم طريقة جديدة لتنفيذ وظيفة "إظهار في العرض"، بالإضافة إلى السماح بتنفيذها على مستوى المنصة (Ia6dd8)

الإصدار 1.8.0-alpha06

13 تشرين الثاني (نوفمبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha06. يتضمّن الإصدار 1.8.0-alpha06 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • لإضافة المُعدِّل stylusHoverIcon (Iff20a، b/331289114)
  • تغيير "مدير الملء التلقائي" ليصبح واجهة (I84914، b/376080755)
  • يضيف requestFocus(FocusDirection) إلى كل من focusRequester وFocusTargetModifierNode للسماح بالتركيز في اتجاه معيّن. (I5d9ec، b/245755256)
  • تم استبدال FocusProperties.enter وFocusProperties.exit بـ onEnter وonExit، باستخدام نطاق مستلِم بدلاً من المَعلمة FocusDirection. (I6e667)
  • إضافة ميزة الملء التلقائي في شريط أدوات النص (Ie6a4c)
  • تغييرات واجهة برمجة التطبيقات إلى Modifier.focusRestorer() (I99c03):
    • تم تغيير اسم المَعلمة إلى "fallback"
    • أصبحت المَعلمة الآن FocusRequester وليست lambda
    • أصبحت المَعلمة الآن غير فارغة مع Default كقيمة تلقائية.
  • إزالة التعليق التوضيحي @Experimental من واجهة مدير الملء التلقائي لا تزال الميزة قيد التطوير وتستهدف هذا الإصدار، ولكن لا نريد طرحها في واجهة برمجة التطبيقات التجريبية ‎ @Expemiental API (Id8398).
  • يوفّر LocalHapticFeedback الآن طريقة تنفيذ HapticFeedback تلقائية عندما تشير واجهة برمجة التطبيقات Vibrator API إلى أنّ ميزة اللمس المفاجئ متاحة. تمّت إضافة العناصر التالية إلى HapticFeedbackType: Confirm وContextClick وGestureEnd وGestureThresholdActivate وReject وSegmentFrequentTick وSegmentTick وToggleOn وToggleOff وVirtualKey. في تطبيق "هاتف Wear OS"، تؤدي الآن المكونات القابلة للنقر مع الاستمرار، مثل Button وIconButton وTextButton وCard، إلى التأثير LONG_PRESS عند توفير معالِج للنقر مع الاستمرار. (I5083d)
  • تزيل OverscrollConfiguration وLocalOverscrollConfiguration وتضيف rememberPlatformOverscrollFactory لإنشاء مثيل من / تخصيص مَعلمات تنفيذ التمرير السريع التلقائي. لإيقاف التمرير السريع، استخدِم LocalOverscrollFactory provides null بدلاً من LocalOverscrollConfiguration provides null. لتغيير لون الإضاءة / الحشو، استخدِم LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) بدلاً من LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9، b/255554340، b/234451516)
  • تمت إزالة واجهة برمجة التطبيقات التجريبية GlobalAssertions. كان الغرض من هذه السمة هو إجراء عمليات التحقّق من تسهيل الاستخدام، اطّلِع على enableAccessibilityChecks() لهذا الغرض بدلاً من ذلك. (I59322)

الإصدار 1.8.0-alpha05

30 تشرين الأول (أكتوبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha05. يتضمّن الإصدار 1.8.0-alpha05 عمليات الربط هذه.

الميزات الجديدة

لا تتوفّر ميزة "الملء التلقائي" إلا بعد تفعيل علامة ميزة في هذا الإصدار. نحن نعمل على تحسين الأداء، ونبحث عن ملاحظات مبكّرة حول واجهات برمجة التطبيقات. من المتوقّع أن تتطوّر واجهات برمجة التطبيقات قبل طرحها بشكلٍ نهائي استنادًا إلى الملاحظات والآراء.

  • لتفعيل ميزة "الملء التلقائي"، اضبط ComposeUiFlags.isSemanticAutofillEnabled على true في onCreate واستخدِم أحدث لقطة Compose.
  • يتيح هذا الإصدار من ميزة "الملء التلقائي" حفظ بيانات الاعتماد يدويًا، من خلال ميزة "اقتراح كلمة مرور قوية"، ومن خلال التنقّل. وتتيح هذه الميزة أيضًا الملء عندما يتلقّى حقل قابل للملء التركيز أو عند بدء ميزة "الملء التلقائي" من خلال شريط أدوات النص في مكوّنات النص. سيتم تمييز المكوّن للإشارة إلى اكتمال الملء التلقائي.

تغييرات واجهة برمجة التطبيقات

  • عدِّل واجهة الملء التلقائي لتتوافق مع بنية expect/actual. (I22dce)
  • تقديم CompositionLocal التي يمكن استخدامها لتعديل درجة لون تمييز الملء الناجح في ميزة "الملء التلقائي" (I32092)
  • تمت إضافة واجهة برمجة التطبيقات Modifier.onRectChanged التي تتيح الاشتراك في موضع LayoutNode وحجمه بالنسبة إلى الجذر/النافذة/الشاشة. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المُعدِّل onGloballyPositioned الحالي، ولكنّها تُجري ذلك بتكلفة أقل بكثير، كما أنّ واجهة برمجة التطبيقات تتضمّن مرافق لإزالة التأخير وتقييد المُتصل حسب ما تتطلّبه حالة الاستخدام. (Id28c7، b/372765423، b/372757007، b/372994338)
  • توسيع نطاق "مدير الملء التلقائي" ليشمل واجهات برمجة التطبيقات commit() وcancel() اللتين تساعدان المستخدمين في حفظ بيانات الاعتماد التي تم إدخالها حديثًا (I2da00)
  • تقديم واجهة AutofillManager جديدة يمكن استخدامها لتحسين رحلة المستخدمين في ميزة "الملء التلقائي" وعلامة isSemanticAutofillEnabled لتفعيل هذا الإصدار الجديد من ميزة "الملء التلقائي" (I9d484)
  • تمت إضافة واجهة برمجة التطبيقات Modifier.onRectChanged التي تتيح الاشتراك في موضع LayoutNode وحجمه بالنسبة إلى الجذر/النافذة/الشاشة. تحلّ واجهة برمجة التطبيقات العديد من حالات الاستخدام التي يحلّها المُعدِّل onGloballyPositioned الحالي، ولكنّها تُجري ذلك بتكلفة أقل بكثير، كما أنّ واجهة برمجة التطبيقات تتضمّن مرافق لإزالة التأخير وتقييد المُتصل حسب ما تتطلّبه حالة الاستخدام. (I3c8fa)
  • أضِف السمات الدلالية وأنواع البيانات لتوفير ميزة "الملء التلقائي" الموسّعة. (I52c7d)
  • جميع الطرق في أداة إنشاء AnnotatedString ليست تجريبية الآن (Ia89c8 وb/261561823)

إصلاح الأخطاء

  • يمكن الآن للعروض المضمّنة في وضع الإنشاء تلقّي أحداث دوران إذا تم التركيز عليها (I4d53a، b/320510084)
  • تم حلّ مشكلة عدم تعديل أنواع الموارد المختلفة عند إجراء تغييرات على الإعدادات (Ia9b99 وb/352336694).
  • تم حلّ مشكلة كانت تمنع TextField من العمل بشكل صحيح عند استخدام لوحة المفاتيح اليابانية POBox على بعض أجهزة Sony القديمة. (Ia9b99، b/373743376)
  • تم حلّ مشكلة ظهور مربّعات الحوار في أسفل الشاشة بدلاً من وضعها في المنتصف (Ia2ec، b/373093006)
  • لم يعُد الإصدار 35 من Targeting API والإصدارات الأحدث يفرض ضبط decorFitsSystemWindows على "خطأ" في مربّعات الحوار. (Ibc94، b/364492593)
  • إصلاح مشكلة الأعطال عند نقل الطبقات بين النوافذ (مثل مربّع الحوار والمحتوى الرئيسي) (I675ba، b/330955281)

الإصدار 1.8.0-alpha04

16 أكتوبر 2024

تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha04. يتضمّن الإصدار 1.8.0-alpha04 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • إضافة وظيفتَي الاستدعاء DelegatableNode#onDensityChange وDelegatableNode#onLayoutDirectionChange للسماح بتعديل حالة العقدة عند تغيير هذه الوظائف (I04f3e وb/340662451)
  • تُضيف WindowInfo#containerSize لتوفير حجم حاوية محتوى النافذة الحالية. ويمكن استردادها باستخدام LocalWindowInfo. (Idc38c، b/369334429، b/360343819)
  • تقديم حلّ لعناصر التمرير المُدمجة التي تتم إزالتها من شجرة العقد أثناء عملية التمرير السريع ستلغي هذه العقد الآن عملية الرمي وتُرسِل الحدث onPostFling بشكل صحيح مع السرعة المتبقية. سنضيف أيضًا العلامة NewNestedScrollFlingDispatchingEnabled للتحكّم في السلوك في حال حدوث تراجعات. ستتم إزالة العلامة قبل طرح الإصدار التجريبي. (I05c37، b/371168883)
  • تمّ تقديم الرمز PointerInputModifierNode#touchBoundsExpansion الذي يمكن استخدامه لتوسيع حدود اللمس لمعدِّل إدخال مؤشر واحد. (Iccf02، b/335339283)
  • تُضيف WindowInfo#containerSize لتوفير حجم حاوية محتوى النافذة الحالية. ويمكن استردادها باستخدام LocalWindowInfo. (I27767، b/369334429، b/360343819)
  • أزِل readOnly من TextFields لتثبيت الإصدار الثابت من الأساس. (I3aaba)
  • يعرض الحقلَان Paragraph وParagraphIntrinsics الآن قائمة بجميع التعليقات التوضيحية المطبَّقة على AnnotatedString، في حين أنّه كان يتضمّن في السابق قائمة SpanStyles فقط (I12f80).

إصلاح الأخطاء

  • تم تعديل كيفية التعامل مع الفقرات في AnnotatedString. في السابق، كان بإمكانك إنشاء فقرات غير متداخلة فقط. يسمح العنصر AnnotatedString الآن بالفقرات المتداخلة بالكامل والتي سيتم دمجها معًا، والفقرات المُدمجة، وفي هذه الحالة سيتم تقسيم الفقرة الخارجية على حدود الفقرة الداخلية، وسيتم دمج نمط الفقرة الداخلية مع نمط الفقرة الخارجية (Ic9554).
  • حلّ مشكلة الأعطال في AnnotatedString باستخدام LinkAnnotation بدون طول (89aac6)

الإصدار 1.8.0-alpha03

2 أكتوبر 2024

تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha03. يحتوي الإصدار 1.8.0-alpha03 على عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تحديث إصدار Kotlin إلى 1.9 (I1a14c)
  • تمّ تقديم دور جديد للدلالات يُسمى "لوحة العرض الدوّارة" لمحاكاة سلوك القائمة في صفحات الفهرسة لخدمات تسهيل الاستخدام. (Id354b، b/354109776، b/239672673)
  • أعِد تسمية invisibleToUser() إلى hideFromAccessibility. وتبقى وظيفته كما هي. يمكنك الاطّلاع على المستندات للحصول على مزيد من التفاصيل. (Ib43a3)

إصلاح الأخطاء

  • تعديل المستندات الخاصة بالمعدِّل SensitiveContent (Ib0442)
  • تم إصلاح مشكلة تجاهل بعض المقاطع العامة للخطوط الخارجية مع الظلال الناتجة عن الارتفاع في بعض إصدارات Android.
  • تم إصلاح مشكلة تطبيق مقاطع فارغة عند تحديد مقاطع مخطّط إجمالي عام على إصدارات معيّنة من Android.
  • تم إصلاح استثناء تم طرحه عندما يكون IME مفعّلاً في عرض خارجي ويتم استخدام الإجراء التالي للتركيز على ComposeView. يتوافق سلوك clearFocus() مع سلوك View في الإصدارات الأقدم من واجهة برمجة التطبيقات 28، حيث يمكن أن يؤدي clearFocus() إلى التركيز على View التلقائي.
  • تم حلّ مشكلة حدوث عملية وضع على عقد منفصلة في LazyList من خلال فصل إدارة التركيب الفرعي لمرات مرور مختلفة للتنسيق.
  • تم إصلاح مشكلة كانت تؤدي إلى وميض لوحة المفاتيح عند تبديل التركيز من TextField إلى EditText أو أي محرِّر آخر يستند إلى العرض.
  • ستُرسِل الآن عقد "الانتقال المتداخل" أحداث onPostFling بشكل صحيح بعد فصلها.
  • تحسينات عامة على الأداء

الإصدار 1.8.0-alpha02

18 أيلول (سبتمبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha02. يتضمّن الإصدار 1.8.0-alpha02 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • يتوفّر الآن الرمزان TextOverflow.StartEllipsis وTextOverflow.MiddleEllipsis اللذان يتيحان وضع علامة الحذف في بداية سطر النص الفردي أو وسطه. (I38913، b/185418980)

إصلاح الأخطاء

  • حلّ مشكلة الحوار dismissOnClickoutside (39a3d، b/364508685)
  • لا تقطع ظلال محتوى المحادثة (e8e2f، b/363027803)
  • إصلاح السلوك غير الصحيح عند نقل البحث عن التركيز بين ميزة "الإنشاء" وعرض (58377، b/350534714)

المساهمة الخارجية

  • يقبل العنصر AlignmentLines Map الآن النوعَين المحدّدَين VerticalAlignmentLine أو HorizontalAlignmentLine. (I02912)
  • طريقة ByteArray.decodeToImageBitmap(): ImageBitmap شائعة جديدة (I83c21)

الإصدار 1.8.0-alpha01

4 أيلول (سبتمبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.8.0-alpha01. يتضمّن الإصدار 1.8.0-alpha01 عمليات الربط هذه.

الإصدار 1.7

الإصدار 1.7.6

11 كانون الأول (ديسمبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.6. يتضمّن الإصدار 1.7.6 عمليات الربط هذه.

إصلاح الأخطاء

  • في السابق، كنّا نُبلغ عن خطأ عند رصد حدث رئيسي عندما كان نظام التركيز يتضمّن عمليات إبطال في انتظار المراجعة. وسنسجّل الآن خطأً بدلاً من ذلك (I7ea0، b/346370327).
  • تمت إزالة التعليق التوضيحي التجريبي من SemanticsPropertyReceiver.invisibleToUser(). سيتم إيقاف هذا الإجراء نهائيًا في الإصدار 1.8 ليتم استبداله بـ SemanticsPropertyReceiver.hideFromAccessibility(). (I448f0، b/376479686)
  • تم إصلاح مشكلة كانت تمنع TextField من العمل بشكل صحيح عند استخدام لوحة المفاتيح اليابانية POBox على بعض أجهزة Sony القديمة. (I94e0e، b/373743376)
  • تم إصلاح مشكلة تسهيل الاستخدام حيث لم يتم الإعلان عن BasicTextinlineContent من قِبل TalkBack. (I67bcb، b/376479686)

الإصدار 1.7.5

30 تشرين الأول (أكتوبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.5. يحتوي الإصدار 1.7.5 على عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح المشاكل المتعلّقة بعدم عرض الارتفاع والقطع باستخدام المخططات التفصيلية المخصّصة بشكلٍ صحيح.
  • إصلاح مشكلة تعطُّل النص التي تحدث عند استخدام LinkAnnotation بعرض صفري (Ic1e2e)
  • إصلاح إشعار في Talkback من الزر عند إنشائه كعنصر قابل للنقر من عنصر تركيبي للنص (I1f588)

الإصدار 1.7.4

16 أكتوبر 2024

تم إصدار androidx.compose.ui:ui-*:1.7.4. يتضمّن الإصدار 1.7.4 عمليات الربط هذه.

الإصدار 1.7.3

2 أكتوبر 2024

تم إصدار androidx.compose.ui:ui-*:1.7.3. يتضمّن الإصدار 1.7.3 عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح مشكلة تحديد مقطع مخطط عام يؤدي إلى ظهور حدود مقطع فارغة على إصدارات معيّنة من Android.
  • تم إصلاح استثناء تم طرحه عندما يكون IME مفعّلاً في عرض خارجي ويتم استخدام الإجراء التالي للتركيز على ComposeView. يتوافق سلوك clearFocus() مع سلوك View في الإصدارات الأقدم من واجهة برمجة التطبيقات 28، حيث يمكن أن يؤدي clearFocus() إلى التركيز على View التلقائي.
  • تم إصلاح مشكلة استخدام placeOrder غير صحيح لإبطال ميزة "النظرة إلى المستقبل"، وبالتالي إصلاح حالة متطرفة تم فيها تخطّي موضع "النظرة إلى المستقبل".

الإصدار 1.7.2

18 أيلول (سبتمبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.2. يتضمّن الإصدار 1.7.2 عمليات الربط هذه.

إصلاح الأخطاء

  • تحسين أداء معلومات عقدة تسهيل الاستخدام وأحداث الدلالات من خلال إزالة التتبّع المفصّل (I89156، b/362530618)
  • لن يتعطّل ComposeView بعد الآن عند تمرير حجم قياس كبير بشكل استثنائي (da5db، b/347036173)
  • تم إصلاح مشكلة في برنامج قراءة الشاشة لتسهيل الاستخدام، حيث لم يتم الإعلان عن LiveRegion الأزرار. (f66fa7، b/348590026)

الإصدار 1.7.1

10 أيلول (سبتمبر) 2024

  • عدم إجراء أي تغييرات على عناصر Android تمّت إزالة -desktop عنصر وإضافة -jvmStubs و-linuxx64Stubs عنصر. لا يُقصد استخدام أيّ من هذه الاستهدافات، بل هي عناصر نائبة لمساعدة جهود Jetbrains Compose.

الإصدار 1.7.0

4 أيلول (سبتمبر) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0.

التغييرات المهمة منذ الإصدار 1.6.0

يمكنك الاطّلاع على مشاركة المدونة هذه للتعرّف على التغييرات المهمة في الإصدار 1.7.0.

الإصدار 1.7.0-rc01

21 آب (أغسطس) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-rc01. يتضمّن الإصدار 1.7.0-rc01 عمليات الربط هذه.

التغييرات البارزة

  • تفرض الآن وحدة ui:ui الحد الأدنى لإصدار foundation:foundation على أن يكون 1.7.0-rc01 أو إصدارًا أحدث. يتم فرض هذا التغيير لحلّ مشكلة عدم التوافق في السلوك بين واجهة المستخدم والقاعدة الأساسية في ما يتعلّق بتغييرات NestedScrollSource التي حدثت في وقت مبكر خلال الإصدار 1.7.0-alpha01.

الإصدار 1.7.0-beta07

7 آب (أغسطس) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-beta07. يتضمّن الإصدار 1.7.0-beta07 عمليات الربط هذه.

إصلاح الأخطاء

  • ستؤدي الآن دوال SemanticsNodeInteraction ذات الصلة بإدخال النص، وهي performTextReplacement وperformTextInput وperformTextClearance، إلى ظهور أخطاء في العبارة عند طلبها في TextFields للقراءة فقط. (I4ae8f)

الإصدار 1.7.0-beta06

24 تموز (يوليو) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-beta06. يتضمّن الإصدار 1.7.0-beta06 عمليات الربط هذه.

الإصدار 1.7.0-beta05

10 تموز (يوليو) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-beta05. يتضمّن الإصدار 1.7.0-beta05 عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح خطأ كان يؤدي إلى عدم قبول TextField الإدخال من لوحة المفاتيح الجديدة عند تغيير لوحة المفاتيح إلى أن يتم فقدان التركيز واستعادته.
  • تم إصلاح مشكلة كانت تؤدي إلى حدوث تأثيرات جانبية غير مقصودة عند محاولة الاحتفاظ بمحتوى الطبقة عند العرض باستخدام محتوى SurfaceView.

الإصدار 1.7.0-beta04

26 حزيران (يونيو) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-beta04. يتضمّن الإصدار 1.7.0-beta04 عمليات الربط هذه.

إصلاح الأخطاء

  • تجنُّب الأعطال عند قياس أسطر نصية كبيرة جدًا (مثلاً 10 آلاف حرف) (8157ab)
  • أوقِف ميزة "عرض البرامج" لواجهة برمجة التطبيقات GraphicsLayer. (35ddd8)
  • إصلاح مشكلة تعطُّل في منطق ثبات الطبقات (70b13e)
  • تمّت إعادة استخدام تحسينات عناصر الطبقات، لأنّها تسبّبت في حدوث مشاكل في العرض. (70b13e)

الإصدار 1.7.0-beta03

12 يونيو 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-beta03. يتضمّن الإصدار 1.7.0-beta03 هذه المراجعات.

الإصدار 1.7.0-beta02

29 أيار (مايو) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-beta02. يتضمّن الإصدار 1.7.0-beta02 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية SemanticsProperties.Editable إلى IsEditable وتغيير SemanticsPropertyReceiver.editable إلى val isEditable. أصبحت السمة الآن منطقية ويتم تحديدها دائمًا من خلال الحقول النصية. (I8acd8)
  • إعادة تسمية مَعلمة قياس أداء تسهيل الاستخدام (I3d440)
  • واجهة برمجة تطبيقات معدَّلة لتنسيق الروابط: أصبح TextLinkStyles الآن جزءًا من طريقة الإنشاء LinkAnnotation وطريقة AnnotatedString.fromHtml (I90b2b). تمت أيضًا إزالة TextDefaults من المادة (I5477b).

إصلاح الأخطاء

  • تمت إعادة تسمية LayoutCoordinates.introducesFrameOfReference إلى LayoutCoordinates.introducesMotionFrameOfReference لتعكس الغرض منها بشكل أفضل. تمّت إعادة تسمية الدالة ذات الصلة لاحتساب التنسيقات استنادًا إلى هذا الإعداد. (I3a330)

الإصدار 1.7.0-beta01

14 أيار (مايو) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-beta01. يتضمّن الإصدار 1.7.0-beta01 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية performCustomAccessibilityActionLabelled إلى performCustomAccessibilityActionWithLabel وperformCustomAccessibilityActionWhere إلى performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations أصبح الآن hasEqualAnnotations (I685c0)
  • تم تعديل واجهة برمجة التطبيقات للحصول على روابط ذات مظهر Material في النص. على وجه التحديد، تمّت إزالة الطرق من TextDefaults لإنشاء LinkAnnotations ذات طابع معيّن وتحليل HTML باستخدام روابط ذات طابع معيّن. بدلاً من ذلك، تمت إضافة فئة TextLinkStyles تتيح تصميم الروابط كمَعلمة إلى عنصر Text composable. (I31b93)

إصلاح الأخطاء

  • إصلاح حالات استخدام إضافية عند إضافة عوامل تعديل إدخال المؤشر ديناميكيًا أثناء الأحداث 63e1504

الإصدار 1.7.0-alpha08

1 مايو 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha08. يتضمّن الإصدار 1.7.0-alpha08 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • إضافة إمكانية استخدام أشكال قابلة للتغيير يتم الآن رصد Shape#createOutline داخل طبقات الرسومات، لذا فإنّ قراءة قيم الحالة داخلها ستؤدي إلى إلغاء عمليات التحقق عند تغيير الحالة، ما يتيح الحصول على صور متحركة للأشكال ذات الأداء الأفضل. (Id1629، b/326070216)
  • تمت إعادة تسمية isPositionedByParentWithDirectManipulation إلى introducesFrameOfReference. يُرجى العِلم أنّه يُحدث الآن التأثير العكسي، ما يعني أنّ معظم LayoutCoordinates تقدّم إطارًا مرجعيًا تلقائيًا، ولن تكون الخاصية خطأ إلا عند وضعها تحت التلاعب المباشر. للبحث عن موضع باستخدام العناصر التي تقدّم إطارًا مرجعيًا فقط، استخدِم positionInLocalFrameOfReference(...). أو positionInLocalLookaheadFrameOfReference من LookaheadScope (Ifc5f7)
  • LookaheadScope تم تحسين ثبات واجهات برمجة التطبيقات (I21507)
  • تغيير مقياس lambda للإجراء getScrollViewportLength وفقًا لملاحظات مجلس واجهة برمجة التطبيقات (Ibc74a)
  • تم تعديل واجهات برمجة التطبيقات GraphicsLayer لعرض المخططات من أجل استخدام مَعلمات float بدلاً من int. وتمّت إزالة قيم UnsetOffset/UnsetSize IntSize التي تشير إلى الخطأ لصالح الثوابت غير المحدّدة الحالية في الفئات المضمّنة "الموضع" و"الحجم" المستندة إلى float (I2fb03 وb/333863462).
  • عند إدخال بيانات الماوس أثناء الاختبارات، تقبل MouseInjectionScope.click() وMouseInjectionScope.doubleClick() وMouseInjectionScope.tripleClick() وMouseInjectionScope.longClick() الآن مَعلمة button: MouseButton لجعلها قابلة للتطبيق بشكلٍ عام. القيمة التلقائية هي MouseButton.Primary لجميع الطرق. (I31a23 وb/190493367 وb/261439695)
  • تمت إعادة تسمية onClicked إلى onClick داخل LinkInteractionListener. (Iaa35c)
  • أعِد تسمية TextInclusionStrategy.isInside إلى isIncluded. اجعل نوع الإرجاع Paragraph/MultiParagraph#getRangeForRect() غير قابل للحذف. (I51f26)

إصلاح الأخطاء

  • تم إصلاح مشكلة التقاط لقطة شاشة طويلة للحاويات التي يتم التمرير فيها باستخدام reverseScrolling=true. (I7c59c)

المساهمة الخارجية

  • تمت إضافة ميزة prefetching (التحميل المُسبَق) للعناصر في LazyLists المتداخلة (مثل LazyColumn الذي يعرض LazyRows متداخلة). من المتوقّع أن يؤدي هذا التغيير إلى تقليل انخفاض عدد اللقطات أثناء الانتقال إلى هذه LazyLists. الإعداد التلقائي لتنفيذ الميزة هو التحميل المُسبَق للعنصرَين المتداخلَين الأولَين، ولكن يمكن التحكّم في هذا السلوك من خلال واجهات برمجة التطبيقات الجديدة LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) وLazyListPrefetchStrategy#onNestedPrefetch. (I51952)

الإصدار 1.7.0-alpha07

17 نيسان (أبريل) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha07. يتضمّن الإصدار 1.7.0-alpha07 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تم وضع علامة "تم إيقافه نهائيًا" على ClickableText. لإضافة روابط إلى النص، أنشئ AnnotatedString يتضمّن LinkAnnotation يتوافق مع الرابط وأرسِل هذا العنصر AnnotatedString إلى عنصر "النص القابل للتركيب". (I34d4b، b/323346994)
  • تقديم ViewConfiguration.HandwritingGestureLineMargin لإيماءات الكتابة بخط اليد إتاحة إيماءة JoinOrSplit لنظام التشغيل BasicTextField (Ie6e13، b/325660505)
  • لم تعُد FocusProperties.enter وFocusProperties.exit ميزتَين تجريبيتَين. لم تعُد FocusDirection.Enter وFocusDirection.Exit ميزتَين تجريبيتَين. لم تعُد الإصدارات FocusRequester.Cancel تجريبية (I461a1 وb/261564106).
  • عند طلب إحداثيات التنسيق، يمكنك الآن استخدام الوسيطة excludeDirectManipulationOffset لاستبعاد القيمة المُعدَّة من خلال تنسيقات العناصر الرئيسية التي وضعت عناصرها الفرعية باستخدام Placeable.PlacementScope.withDirectManipulationPlacement. وبالمثل، يمكن الآن أن يضع تنسيق يغيّر موضع عناصره الفرعية بشكل متكرّر هذه العناصر باستخدام withDirectManipulationPlacement (مثل Scroll الذي يتم تنفيذه تلقائيًا). يساعد ذلك في أن تصبح الصور المتحرّكة المستندة إلى approachLayout أكثر سهولة، حيث أصبح بإمكانك الآن التمييز بين العناصر التي تريد إضافة تأثيرات متحركة إليها والعناصر التي تريد تطبيقها مباشرةً عند اتخاذ قرار بإضافة تأثيرات متحركة إلى تصميمك. (I60ec7)
  • تمت إزالة علامة الميزة الخاصة بلقطات الشاشة الطويلة. (I28648، b/329128246)
  • سيعرض LazyColumn الآن العناوين الثابتة بشكل صحيح في لقطات الشاشة الطويلة. (I8d239، b/329296635)
  • يتم استبدال مصدرَي التفاعل Drag وFling بـ UserInput وSideEffect لتلبية التعريف الموسّع لهذَين المصدرَين الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput). (I40579)NestedScroll
  • أصبح ApproachLayoutModifierNode وModifier.approachLayout ثابتَين الآن، مع isMeasurementApproachInProgress() وisPlacementApproachInProgress() الجديدَين لاستبدال isMeasurementApproachComplete() وisPlacementApproachComplete() القديمَين على التوالي.
  • تمت إزالة المُعدِّل intermediateLayout الذي تم إيقافه نهائيًا. (I3e91c)
  • أعِد تسمية GraphicsLayer#buildLayer لتسجيل طريقة begin/endRecording لواجهات برمجة التطبيقات المتوافقة مع Displaylist، مثل RenderNode وPicture.
  • تم تعديل rememberGraphicsLayer للاستفادة من rememberObserver. (I312c1، b/288494724، b/330758155)
  • تم إيقاف العلامة UrlAnnotation نهائيًا، لذا يُرجى استخدام العلامة LinkAnnotation.Url بدلاً منها. إذا كنت تستخدم تنسيق Material، استخدِم العنصر TextDefaults لإنشاء التعليق التوضيحي مع تطبيق تنسيق Material عليه (I8d180، b/323346545).
  • تمّ توفير خيار تنسيق حالة الضغط على روابط النصوص بالإضافة إلى التنسيق العادي، وتنسيق التمرير فوق الرابط والتركيز عليه (I5f864، b/139312671)
  • تمت إعادة تسمية String.parseAsHtml إلى AnnotatedString.Companion.fromHtml. (I43dcd)
  • تمت إضافة وسيطات التصميم (linkStyle وfocusedLinkStyle وhoveredLinkStyle) ومستمع تفاعل مع الرابط إلى طريقة parseAsHtml. عند تحليل السلسلة المُشارَك فيها علامات HTML باستخدام علامات <a>، ستنشئ الطريقة LinkAnnotation.Url لكل علامة من هذه العلامات وتُمرِّر عناصر التصميم ومستمع تفاعل الروابط إلى كل تعليق توضيحي. (I7c977)
  • يقبل LinkAnnotation الآن وسيطات التصميم المستندة إلى الحالة وLinkInteractionListener. أضِف هذا التعليق التوضيحي إلى AnnotatedString للحصول على رابط تشعّبي. من خلال تمرير focusedState و/أو hoveredState، يمكنك تحديد configuration المرئي للروابط عند التركيز عليها و/أو تمرير مؤشر الماوس فوقها. (I81ce4، b/139312671)
  • لم يعُد العمود ImeOptions.hintLocales قابلاً للحذف. إذا أردت إرسال قائمة فارغة للّغات، يُرجى استخدام LocaleList.Empty. (Ic5bc4)

إصلاح الأخطاء

  • يعالج بسلاسة بيانات الأحداث السابقة التي تم إدخالها بشكل غير صحيح أو تالف (يتجاهل بيانات البدء غير الصالحة).
  • تصحيح أحداث مؤشر غير متوقّعة عند إضافة مُعدِّل إدخال مؤشر ديناميكيًا قبل مُعدِّل إدخال مؤشر آخر أثناء بث حدث إدخال مؤشر نشط (على سبيل المثال، بين الدخول بالمرور فوق العنصر والخروج بالمرور فوقه [الماوس/قلم الشاشة])

الإصدار 1.7.0-alpha06

3 نيسان (أبريل) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha06. يتضمّن الإصدار 1.7.0-alpha06 عمليات الربط هذه.

الميزات الجديدة

  • تمت إضافة طريقة parseAsHtml للسلاسل ذات الأنماط: فهي تسمح بتحويل سلسلة تم وضع علامات HTML عليها إلى AnnotatedString. يُرجى العلم أنّ بعض العلامات غير متوافقة، على سبيل المثال، لن تتمكّن من عرض قوائم بنقاط حتى الآن. (I84d3d وI30626 وb/139326648)
  • تم توفير ميزة تجريبية لالتقاط لقطات شاشة طويلة في حاويات التمرير في ميزة "الإنشاء" باستخدام واجهة برمجة تطبيقات Android الرسمية (ScrollCaptureCallback). هذه الميزة تجريبية وقد لا تعالج حاليًا جميع الحالات بشكل صحيح. لهذا السبب، تكون هذه الميزة غير مفعّلة تلقائيًا في الوقت الحالي. للموافقة، اضبط العلامة ComposeFeatureFlag_LongScreenshotsEnabled على true. (I2b055، b/329296471)

تغييرات واجهة برمجة التطبيقات

  • تم تغيير fun ClipEntry.getMetadata() إلى val ClipEntry.clipMetadata. (I50155)
  • تمّت إزالة الدالتَين ClipboardManager.getClipMetadata وClipboardManager.hasClip. يُرجى استخدام clipEntry.getMetadata() لقراءة البيانات الوصفية لبيانات المقطع الحالية. تحقَّق أيضًا من نتيجة ClipboardManager.getClip لمعرفة ما إذا كانت فارغة أم لا لمعرفة ما إذا كانت الحافظة تحتوي على مقطع حالي. (I50498)
  • يمكنك الآن تمرير عناصر GraphicsLayer إلى دوال placeable.placeWithLayer() (I1b22f).
  • يقبل ClipboardManager.setClip الآن القيمة null للتمكن من محو الحافظة. (I7d2e9)
  • تمت إضافة أرقام تعريف الموارد للمساعدة في إخفاء "المشاهدات" المستخدَمة كتفاصيل تنفيذ ضمن أدوات الإنشاء (I99531).
  • تمت إضافة طريقة تعليق GraphicsLayer#toImageBitmap لإتاحة عرض محتوى ملف رسومات نقطية في GraphicsLayer. هذه عملية عرض مُسرَّعة بالأجهزة على المستوى 22 أو أعلى لواجهة برمجة التطبيقات (شاملة) والتي تتوافق مع أكثر من% 99 من جميع أجهزة Android. في المستوى 21 لواجهة برمجة تطبيقات Android، يتم استخدام ميزة المعالجة البرمجية. (I9e114)
  • طريقة مساعدة لتحويل Android RectF إلى ComposeRect (I39925، b/325660505)
  • أصبحت جميع مَعلمات KeyboardOptions لها قيمة غير محدّدة تلقائيًا. تمّت إضافة طريقة KeyboardOptions.merge.
  • تمت إعادة تسمية KeyboardOptions.autoCorrect إلى autoCorrectEnabled وجعلته قابلاً للتغيير، حيث تشير القيمة null إلى عدم تحديد أي قيمة. (Ia8ba0، b/295951492)
  • يستخدم الإصداران BasicTextField(state) وBasicSecureTextField الآن KeyboardActionHandler بدلاً من KeyboardActions لمعالجة الإجراءات التي تتّخذها لوحة المفاتيح البرمجية. (I58dda)

الإصدار 1.7.0-alpha05

20 مارس 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha05. يتضمّن الإصدار 1.7.0-alpha05 عمليات الربط هذه.

الميزات الجديدة

  • تقديم واجهة برمجة تطبيقات GraphicsLayer API جديدة لتسجيل أوامر الرسم في قائمة عرض بالإضافة إلى سمات إضافية تؤثّر في عرض قائمة العرض يوفر ذلك حدودًا للفصل لقسمة مشهد معقّد إلى أجزاء أصغر يمكن تعديلها بشكلٍ منفصل عن بعضها بدون إعادة إنشاء المشهد بأكمله. يمكن إجراء عمليات التحويل التي تم إجراؤها على GraphicsLayer بدون إعادة تسجيل قائمة العرض. على عكس Modifier.graphicsLayer، يسمح GraphicsLayer بعرض المحتوى القابل للتجميع في مكان آخر، وهو مفيد في حالات الاستخدام التي تتضمّن صورًا متحركة حيث من المتوقّع عرض المحتوى في مشاهد مختلفة.

تغييرات واجهة برمجة التطبيقات

  • لم تعُد GraphicsLayer.draw(Canvas) واجهة برمجة تطبيقات علنية بعد الآن. يُرجى استخدام دالة إضافة DrawScope.drawLayer(GraphicsLayer) بدلاً من ذلك لرسم الطبقة. (I7a7c0)
  • تقسيم restrictedConstraints() إلى طريقتَين: fitPrioritizingWidth() وfitPrioritizingHeight() (I6d7fd)
  • تمّ تقديم HardwareCanvas stub لاستخدام Android L (I1c3b5، b/288494724)
  • عدِّل إطار عمل Compose لعرض GraphicsContext تركيبة محلية إلى جانب تعديل عمليات تنفيذ "المالك" وDelegateableNode وdrawWithCache لعرض إمكانية الوصول إلى GraphicsContext للوصول على مستوى النطاق الذي سيؤدي تلقائيًا إلى تنظيف مثيلات GraphicsLayer عند إلغاء "المعدِّلات". (I64a2f، b/288494724)
  • تمّ تقديم InterceptPlatformTextInput للمساعدة في كتابة اختبارات منخفضة المستوى ذات صلة بواجهة IME وحالات استخدام أخرى منخفضة المستوى لواجهة IME. تم إيقاف PlatformTextInputTestOverride نهائيًا. (I862ed، b/322680547)
  • تمت إضافة دالة الإضافة GraphicsLayer.setOutline(Outline). (Ib81f4)
  • تقديم GraphicsContext لإنشاء مصنع لإنشاء مثيلات GraphicsLayer (Ib98d6، b/288494724)
  • تمّ عرض واجهة برمجة التطبيقات GraphicsLayer لتوفير مرونة محدّدة للمطوّر في تسجيل أوامر الرسم التي يمكن استخدامها للرسم في مكان آخر، وكذلك تطبيق تأثيرات مرئية مختلفة على النتيجة النهائية. (I80245، b/288494724)
  • يمكنك استخدام Paragraph#getRangeForRect لعرض نطاق نص يغطّيه مستطيل معيّن. (Iee516، b/325660505)
  • تمت إزالة الإعداد التجريبي الذي يتجاهل BasicText باستخدام الوسيطة onLinkClicked. وسيتم توفير واجهة برمجة تطبيقات بديلة لدعم الروابط التشعبية في المستقبل. (I107d5)

إصلاح الأخطاء

  • تمت إضافة تعريف واجهة برمجة التطبيقات GraphicsLayer expect/actual لتمكين تسجيل أوامر الرسم وإعادة تشغيلها باستخدام تأثيرات مرئية وعمليات تحويل اختيارية لدمج الصور. تقديم واجهة GraphicsContext تحتوي على تبعيات الرسومات، بما في ذلك إنشاء نُسخ GraphicsLayer وإدارتها (I4a8d6، b/288494724)
  • تم حلّ مشكلة التوافق مع ميزة البحث بالتركيز على عنصر واحد، حيث كان التركيز يبقى داخل ComposeView تم تضمينه بين طرق العرض الأخرى. (I08fd4)

المساهمة الخارجية

  • تم نقل LocalLifecycleOwner من واجهة مستخدم Compose إلى lifecycle-runtime-compose حتى يمكن استخدام واجهات برمجة التطبيقات المساعِدة المستندة إلى Compose خارج واجهة مستخدم Compose. نشكر "جاك وارتون" على مساهمته. (I6c41b، b/328263448)
  • عرض خصائص "التحيز العائم" بشكلٍ متّسق في جميع الأنواع الفرعية للمحاذاة المستندة إلى التحيز (I69f0f، b/328088992)

الإصدار 1.7.0-alpha04

‫6 مارس 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha04. يتضمّن الإصدار 1.7.0-alpha04 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • إتاحة ميزة الكتابة اليدوية باستخدام قلم الشاشة لعنصر BasicTextField2 على الأجهزة التي تعمل بالإصدارات الأحدث من Android U (I002e4)
  • في هذا الطلب، سنضيف الإجراء الدلالي GetScrollViewportLength لنتمكّن من توجيه معلومات عن المكوّنات التي يتم التمرير فيها في وضع الإنشاء إلى نظام تسهيل الاستخدام. تطبّق قائمة المحتوى هذه أيضًا استخدام السمة المذكورة في قوائم Foundation القابلة للتنقّل. (Ic5fa2)
  • أصبحت الإصدارات FocusRequester.createRefs مستقرة الآن (I4d92c، b/261436820).
  • تمّ تقديم DelegatableNode.requireView() للسماح لعقد المُعدِّلات بالحصول على View Android الحالي بدون قراءة تركيبة محلية. (I40768)
  • واجهة برمجة تطبيقات جديدة Path.reverse() لعكس اتجاه المسار (I36348)
  • تمت إضافة hintLocales إلى KeyboardOptions لمنح TextFields إمكانية التلميح إلى أنظمة IME باستخدام لغات معيّنة لضبط لغة مفضّلة مسبقًا.
  • اعرض السمة platformLocale من Locale التي تعرض عنصر المنصة الأساسي، مثل java.util.Locale. (I921c6)

الإصدار 1.7.0-alpha03

21 شباط (فبراير) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha03. يحتوي الإصدار 1.7.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • نقدّم لك ContextualFlowRow وFlowRow/Column المحسّنَين مع MaxLines وOverflow. يسرّنا الإعلان عن تحسينات على FlowRow وFlowColumn التجريبيَين، حيث يتوفّر الآن خياران هما maxLines وoverflow، إلى جانب طرح ContextualFlowRow وContextualFlowColumn لأول مرة. تم تصميم هذا التعديل لتقديم مكوّنات فعّالة، حيث يكون ContextualFlow* مثاليًا لعدد كبير من العناصر التي تستخدِم إعدادات maxLines صغيرة وزرّات ديناميكية لعرض المزيد من العناصر، ويكون FlowRow وFlowColumn مثاليَين لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي في FlowRow أو FlowColumn حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تلائم الحد الأقصى للمحور المتقاطع، اضبط overflow على FlowRowOverflow.Visible أو FlowColumnOverflow.Visible أثناء الإعداد. يمكنك الاطّلاع على ContextualFlowRowSample وFlowRowSample للحصول على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082)
  • أضِف سمة maxTextLength الدلالية التي يجب ضبطها على حقول النص التي تصفّر الحد الأقصى المسموح به لعدد الأحرف. (I24d9f، b/170648072)
  • تم إيقاف حزمة Modifier.inspectable نهائيًا. ستؤدي واجهة برمجة التطبيقات هذه إلى إلغاء صلاحية المُعدِّل أكثر من اللازم، لذا لا يُنصح باستخدامها الآن. ننصح المطوّرين بتنفيذ طريقة inspectableProperties() في ModifierNodeElement إذا أرادوا عرض سمات المُعدِّل للأدوات. (Ib3236)
  • طريقة وضع تصميم جديدة لـ PopupProperties تتيح التحكّم الكامل في علامات WindowManager.LayoutParams (Ibb33e، b/312485503)
  • تمّ تقديم DelegatableNode.requireLayoutCoordinates() كطريقة للحصول على LayoutCoordinates الحالي لـ Modifier.Node بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في عنصر بنفسك. (Ia8657)
  • تمّ تقديم DelegatableNode.currentLayoutCoordinates كطريقة للحصول على LayoutCoordinates الحالي لـ Modifier.Node بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في عنصر بنفسك. (Iaebaa)
  • تم نقل BasicTextField2 وواجهات برمجة التطبيقات ذات الصلة ضمن حزمة androidx.compose.foundation.text2 إلى androidx.compose.foundation.text. (I9f635)
  • تمت إضافة واجهة برمجة تطبيقات ApproachLayoutModifierNode جديدة للسماح بإنشاء منطق أسلوب مخصّص في "عقدة مُعدِّل" صريحة. تمت أيضًا إضافة واجهة برمجة تطبيقات DeferredTargetAnimation تجريبية جديدة للرسوم المتحرّكة التي يكون هدفها غير معروف عند إنشاء العنصر. (I60745)
  • واجهات برمجة تطبيقات جديدة لـ Path من أجل طلب معلومات عن اتجاه مسار واستخراج الخطوط الخارجية من Path (I63d04)
  • تمت إضافة PathHitTest وPath.contains(Offset) للتحقّق مما إذا كان Path يحتوي على نقطة معيّنة. (I3b218)
  • يعرِض العنصر TextLayoutResult الآن طريقة getLineBaseline(lineIndex). يتيح ذلك قراءة خط الأساس لسطر عشوائي من النص بالإضافة إلى السمتَين الحاليتَين firstBaseline وlastBaseline. (Ide4e8، b/237428541)
  • تمت إضافة طريقة لمقارنة التعليقات التوضيحية لصفحتَي AnnotatedStrings فقط. (I32659)

إصلاح الأخطاء

  • تم حلّ مشكلة التوافق مع الإصدارات القديمة في SemanticsPropertyReceiver.performImeAction وSemanticsActions.PerformImeAction. (Id0528، b/322269946)

الإصدار 1.7.0-alpha02

7 شباط (فبراير) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha02. يحتوي الإصدار 1.7.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم حلّ مشكلة التوافق مع الثنائي SemanticsPropertyReceiver.performImeAction. (I65865، b/322269946)
  • لم يعُد باني PopupProperties الذي يأخذ مَعلمة usePlatformDefaultWidth ميزة تجريبية. (I8f8d2)
  • تمت إضافة حمولة زائدة ComposeTestRule.waitUntil تأخذ وصفًا لسلاسل من الشرط لتضمينه في رسالة المهلة. (I9413e)
  • واجهة برمجة تطبيقات جديدة للدلالات unset() لإزالة سمات الدلالات التي تمت إضافتها في سلسلة المُعدِّلات نفسها سمة دلالية جديدة isOpaque (I8c583، b/317966058، b/246056649)
  • تمت إزالة originalEventPosition من طريقة النسخ في واجهة برمجة التطبيقات العامة PointerInputChange. (I7bead)

إصلاح الأخطاء

  • تم إصلاح خلل في معايير a11y يسمح بإمكانية النقر على عناصر غير علامات التبويب وأزرار الاختيار عند اختيارها. (I2181c)
  • سيتم الآن حلّ مشكلة إضافة النقاط تلقائيًا في VelocityTracker. يمكن إيقاف الإصلاح من خلال ضبط VelocityTrackerAddPointsFix على false في حال حدوث أي مشاكل. (Ib3877، b/269487059)
  • تمّ إصلاح مشكلة عدم التوافق مع الإصدارات القديمة من الملفات الثنائية في TextStyle وParagraphStyle. (I179f0، b/320819734)

المساهمة الخارجية

  • تمت إضافة مُنشئ DialogProperties جديد بدون مَعلمات خاصة بالنظام الأساسي. (I45829)
  • تمت إضافة مُنشئ PopupProperties جديد بدون مَعلمات خاصة بالنظام الأساسي. (I9a038)

الإصدار 1.7.0-alpha01

24 كانون الثاني (يناير) 2024

تم إصدار androidx.compose.ui:ui-*:1.7.0-alpha01. يحتوي الإصدار 1.7.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم توسيع نطاق سمة ClipboardManager من خلال إضافة ClipEntry وClipMetadata للسماح بمحتوى عشوائي، مثل الصور.
  • إضافة DeviceConfigurationOverride API إلى ui-test للسماح محليًا بتجاوز سلوك المحتوى الذي يتم اختباره، مثل تحديد حجم أو لغة أو اتجاه تنسيق أو مقياس خط أو مظهر متاح

الإصدار 1.6

الإصدار 1.6.8

12 يونيو 2024

تم إصدار androidx.compose.ui:ui-*:1.6.8. يتضمّن الإصدار 1.6.8 عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح التناقضات في تغيير حجم الخط عندما يكون حجم الخط أقل من أدنى جدول محدّد. في هذه الحالة، نستخدم الآن الاستقراء بين المقياس الخطي 1x والجدول الأدنى المحدَّد، لكي يزداد حجم الخط بشكلٍ منتظم مع زيادة المقاييس. (Icbae3)

الإصدار 1.6.7

1 مايو 2024

تم إصدار androidx.compose.ui:ui-*:1.6.7. يتضمّن الإصدار 1.6.7 عمليات الربط هذه.

الإصدار 1.6.6

17 نيسان (أبريل) 2024

تم إصدار androidx.compose.ui:ui-*:1.6.6. يتضمّن الإصدار 1.6.6 عمليات الربط هذه.

إصلاح الأخطاء

  • إصلاح مشكلة نادرة تتعلّق بتعطُّل BasicTextField

الإصدار 1.6.5

3 نيسان (أبريل) 2024

تم إصدار androidx.compose.ui:ui-*:1.6.5. يتضمّن الإصدار 1.6.5 عمليات الربط هذه.

الإصدار 1.6.4

20 مارس 2024

تم إصدار androidx.compose.ui:ui-*:1.6.4. يتضمّن الإصدار 1.6.4 عمليات الربط هذه.

الإصدار 1.6.3

‫6 مارس 2024

تم إصدار androidx.compose.ui:ui-*:1.6.3. يحتوي الإصدار 1.6.3 على عمليات الربط هذه.

الإصدار 1.6.2

21 شباط (فبراير) 2024

تم إصدار androidx.compose.ui:ui-*:1.6.2. يحتوي الإصدار 1.6.2 على هذه المراجعات.

الإصدار 1.6.1

7 شباط (فبراير) 2024: androidx.compose.ui:ui-*:1.6.1 يتم طرح الإصدار. يحتوي الإصدار 1.6.1 على هذه المراجعات.

إصلاح الأخطاء

  • تم حلّ مشكلة التوافق مع الإصدارات القديمة في SemanticsPropertyReceiver.performImeAction وSemanticsActions.PerformImeAction. (Ie0bb2، b/322269946)
  • تُصدر التنسيقات الآن خطأ أثناء القياس عندما يعرض أحدها حجمًا كبيرًا بشكل غير طبيعي. يحدث هذا النوع من الأخطاء عادةً عندما يستخدِم القياس الحد الأقصى من القيود مباشرةً بدون التحقّق من Constraints.Infinity. وسيساعد هذا الفحص المطوّرين في العثور على المشاكل في التنسيق الذي يحتوي على مقاس غير صحيح بدلاً من التنسيق الذي يحتوي عليه. (I339a9)

الإصدار 1.6.0

24 كانون الثاني (يناير) 2024

تم إصدار androidx.compose.ui:ui-*:1.6.0. يحتوي الإصدار 1.6.0 على هذه المراجعات.

الإصدار 1.6.0-rc01

10 كانون الثاني (يناير) 2024

تم إصدار androidx.compose.ui:ui-*:1.6.0-rc01. يحتوي الإصدار 1.6.0-rc01 على هذه المراجعات.

إصلاح الأخطاء

  • تنفيذ محسّن للرسومات المتجهّة لتحسين الأداء من خلال تقليل عمليات إعادة التركيب الإضافية

الإصدار 1.6.0-beta03

13 كانون الأول (ديسمبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-beta03. يحتوي الإصدار 1.6.0-beta03 على هذه المراجعات.

الميزات الجديدة

  • أصبح من الممكن الآن فصل LayoutCoordinates بدون فصل العقدة. احرِص على تجنُّب ذلك في أداة فحص التنسيق (If693) ضمن ميزة "إنشاء".

إصلاح الأخطاء

  • أصبحت PlatformImeOptions الآن فئة محدّدة بدلاً من واجهة. (If40a4)
  • تمّ إصلاح عمليات إعادة التركيب الإضافية في مرحلة ما بعد المعالجة الناتجة عن تقديم قيم جديدة لكلّ من LocalSoftwareKeyboardController وLocalTextInputService في كلّ مرّة تتم فيها إعادة تركيب الجذر. (I42190، b/310510985)

الإصدار 1.6.0-beta02

29 تشرين الثاني (نوفمبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-beta02. يحتوي الإصدار 1.6.0-beta02 على هذه المراجعات.

الإصدار 1.6.0-beta01

15 تشرين الثاني (نوفمبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-beta01. يحتوي الإصدار 1.6.0-beta01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • يتلقّى مُعدِّل DragAndDropTarget الآن DragAndDropTarget المستلِم صراحةً، ويحتوي على متغيّر lambda للموافقة على جلسة السحب والإفلات. تتوفّر الآن دالتَان مصنعتان لعنصر DragAndDropModifierNode. أحدهما لتلقّي عمليات النقل والآخر لنقل البيانات (I69481)
  • تم تعديل maximumFlingVelocity لتمثيلها كقيمة قابلة للتغيير. تم تعديل المستندات لتكون أكثر وضوحًا بشأن maximumFlingVelocity. (I8adc7)
  • تمت إعادة تسمية onDragAndDropStart في المصنع DragAndDropModifierNode إلى acceptDragAndDropTransfer.تمت إضافة acceptsDragAndDropTransfer إلى المُعدِّل dragAndDropTarget للقبول من جلسة سحب وإفلات. تعرض دالة lambda هذه DragAndDropTarget صالحة إذا كنت مهتمًا بجلسة سحب وإفلات. تم استبدال دوالّ LAMBDA الأخرى لمعالجة أحداث السحب بهذه الدالة. تمت إضافة دالة DragAndDropTarget لتلقّي الجلسات التي تتضمّن عمليات السحب والإفلات (Iebf3a).
  • تمت إزالة DragAndDropInfo كنوع DragAndDropModifierNode.drag يأخذ الآن مَعلمات transferData وحجم الزخرفة وزخرفة السحب DrawScope lambda

    يحتوي DragAndDropTarget على طرق لأحداث سحب وإفلات معيّنة بدلاً من أن يكون طريقة مجردة واحدة.

    تم تغيير اسم onDragAndDropEvent في دالة المصنع الخاصة بـ DragAndDropModifierNode إلى onDragAndDropStart للإشارة بشكل أفضل إلى أنّ DragAndDropTarget المقدَّم صالح لجلسة سحب وإفلات معيّنة فقط.

    تمّت إزالة DragAndDropEventType (I645b1)

  • تمت إعادة تسمية PlatformTextInputModifierNode.runTextInputSession إلى establishTextInputSession. (I03cd0)

  • تحسين أسماء واجهات برمجة التطبيقات للعقد القابلة للتنقّل لجعلها أكثر سهولة في الفهم (Ia4474)

  • استبدِل OriginalText بـ TextSubstitution. (Ifa5a8)

  • تمت إعادة تسمية PlatformTextInputModifierNode.textInputSession إلى runTextInputSession. (Ie9c6b)

  • إنّ العناصر الفرعية لـ SubcomposeLayout (والتصاميم مثل LazyColumn المستندة إليها) التي يتم الاحتفاظ بها لإعادة استخدامها في المستقبل تُعدّ غير مفعّلة. تمّ تقديم واجهة برمجة تطبيقات اختبار assertIsDeactivated() جديدة لاختبار هذه العقد. ستستبعد بقية واجهات برمجة التطبيقات الاختبارية العقد غير النشطة تلقائيًا. (I2ef84، b/187188981)

  • تمّت إزالة FocusDirection.In وFocusDirection.Out، استخدِم FocusDirection.Enter وFocusDirection.Exit بدلاً منهما (I2f660)

  • تعتمد واجهات برمجة تطبيقات Material SwipeToReveal (للبطاقات والرقائق) الآن على واجهة برمجة تطبيقات مستندة إلى خانة (كما ينصح تطبيق Compose) بدلاً من النُسخ المستندة إلى فئة البيانات لإنشاء هذه الخانات. هذا تغيير جذري، يُرجى الاطّلاع على العرض التجريبي ونموذج الرمز للحصول على أمثلة حول كيفية استخدام واجهة برمجة التطبيقات الجديدة. (Ia8943)

  • تم إيقاف باني FontStyle(int) نهائيًا، لذا استخدِم FontStyle.Normal أو FontStyle.Italic بدلاً منه. (I66610)

  • تمت إعادة تسمية واجهة FontScalable إلى FontScaling (Ie804a)

إصلاح الأخطاء

  • لن يعرض SoftwareKeyboardController.show() لوحة المفاتيح البرمجية بعد الآن إذا لم يكن هناك محرِّر نص مُركّز عليه. (I2165a، b/301477279)
  • سيتم الآن تجاهل أحداث "الضغط على مفتاح جهاز" للأجهزة التي لم تتلقّ حدث "رفع إصبع المستخدم عن المفتاح" في "عرض الكتابة" نفسه. (Ib37b4، b/305518328)
  • إضافة إمكانية استخدام أداة التقديم والترجيع مع مظهر "التدرّج السريع" في ArcLine (I4d5bb)
  • نفِّذ الدالتَين equals وhashcode PageSize.Fixed. (Ie3ede، b/300134276)
  • حلّ مشكلة التوافق الثنائي مع تغيير "موضع النافذة" (Iee695)
  • أزِل طبقة Material Core لشريحة/زر Material3 لأنّ الاختبارات الدقيقة تُظهر أداءً أفضل بدونها. (I55555)
  • سيتم الآن استخدام TestDispatcher التي تم تمريرها كeffectContext لاختبارات الإنشاء من أجل إنشاء ساعات الاختبار والإطار. (Ia7178)

الإصدار 1.6.0-alpha08

18 تشرين الأول (أكتوبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha08. يحتوي الإصدار 1.6.0-alpha08 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية دالة lambda onDrawDragShadow في Modifier.dragAndDrawSource إلى drawDragDecoration، وتمّت إعادة تسمية مَعلمة size في DragAndDropInfo إلى dragDecorationSize. (Id0e30، b/303904810)
  • استخدِم SemanticsNodeInteraction.isDisplayed() وSemanticsNodeInteraction.isNotDisplayed() للتحقّق مما إذا كانت العقدة المطابقة مرئية أم لا بدون التأكيد عليها أيضًا. (I2c196، b/302100809)
  • تمّت إضافة قيمة Unspecified خاصة لحقول TextAlign وTextDirection وHyphens وLineBreak في ParagraphTextStyle لاستبدال null. وبما أنّ هذه الفئات هي فئات مضمّنة، فإنّنا نتجنب استخدام الأنواع البدائية من خلال استبدال nullable بـ Unspecified. تم تعديل وظائف الإنشاء ووظائف الحصول على القيم وغيرها من الطرق في TextStyle وParagraph style لقبول المَعلمات المذكورة كأنواع غير فارغة. (I4197e، b/299490814)
  • أضِف GoogleFont overload لقراءة GoogleFont من XML. (If8f59)
  • جعلت LoremIpsum PreviewParameterProvider صفًا مفتوحًا. (I41bf5، b/266918816، b/300116360)

إصلاح الأخطاء

  • يستخدم FontFamilyResolver الآن Dispatchers.Main لعمليات إدارة ذاكرة التخزين المؤقت. (Ie8dd9)
  • يزيل AndroidViewBinding الآن بشكل متزامن نُسخ Fragment التي تم تضخيمها عن طريق تضمين FragmentContainerView في التنسيق كجزء من onRelease باستخدام commitNow (بدلاً من commit الذي كان يستخدمه سابقًا)، وبالتالي حلّ المشاكل المتعلقة بطريقة "التعديل المباشر" من خلال استبدال التركيبة عند إجراء تغييرات. (I58fbf)

الإصدار 1.6.0-alpha07

‫4 أكتوبر 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha07. يحتوي الإصدار 1.6.0-alpha07 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمّ تقديم PlatformTextInputMethodTestOverride لكتابة اختبارات لمحرّري النصوص المخصّصة. (Id159b)
  • تضيف هذه السمة المُعدِّل dragAndDropSource لبدء جلسات السحب والإفلات، والمُعدِّل dragAndDropTarget لتلقّي العناصر من جلسات السحب والإفلات. (Ib7828، b/286038936)
  • تمّت إضافة مجموعتَي ColorList وColorSet اللتين تتجنّبان عمليات التوزيع. (I744bd)
  • تمت إضافة علامة مؤقتة DisableNonLinearFontScalingInCompose لإيقاف الضبط غير الخطّي لحجم الخط. اضبط DisableNonLinearFontScalingInCompose = true في اختباراتك إذا كنت بحاجة إلى وقت لتنظيفها. ستتم إزالة هذا الإعداد في الإصدار 1.6.0-beta01 من تطبيق Compose. (Ic9486)

إصلاح الأخطاء

  • تحليل محسّن للأشكال المتّجهة القابلة للرسم بتنسيق XML (Ibb015)

الإصدار 1.6.0-alpha06

20 أيلول (سبتمبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha06. يحتوي الإصدار 1.6.0-alpha06 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تحسينات إضافية على رموز Material (I3e08d)
  • تضيف هذه الميزة إمكانية التنقّل لأعلى/أسفل شجرة المُعدِّلات للعثور على العقد المشابهة. (I2d234)
  • تمت إضافة دالة معاودة الاتصال onRestoreFailed() إلى مُعدِّل focusRestorer() (Ie1d43).
  • تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد ColorInt وFloatRange وIntRange وSize والمزيد. (Id65c8، b/290950582)
  • إضافة showSystemUi=true إلى تعريف PreviewScreenSizes (Ib61d3)

التغييرات في السلوك

  • يستخدم تطبيق "الإنشاء" الآن ميزة "الضبط غير الخطي لحجم الخط" لتحسين إمكانية القراءة وسهولة الاستخدام. عندما يكون مقياس الخط أكبر من% 100 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ طبيعي، ولكن لن يزداد حجم النص الكبير إلا قليلاً. بالإضافة إلى ذلك، سيتم تعديل ارتفاعات السطور المحدّدة في SP تلقائيًا لتظلّ متناسبة مع الارتفاع المقصود على مقياس% 100. اطّلِع على أفضل الممارسات المتعلّقة بتوسيع نطاق الخط للحصول على مزيد من المعلومات. (I11518)

الإصدار 1.6.0-alpha05

6 أيلول (سبتمبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha05. يحتوي الإصدار 1.6.0-alpha05 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • فعِّل ميزة "التقاط المحتوى" في AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • يتمّ الحدّ من سرعات الرمي في مكوّنات العرض، مثل ScrollView وRecyclerView، إلى ViewConfiguration.ScaledMaximumFlingVelocity. يحتوي تطبيق "الإنشاء" الآن على إصدار خاص به من maximumFlingVelocity الذي ينطبق الآن على Draggable. (Ibf974)
  • إضافة إطار عمل أولي لدعم واجهات برمجة التطبيقات الخاصة بسحب العناصر وإفلاتها على المنصة (If84ce)
  • إضافة deviceId إلى RotaryScrollEvent (Iba3bf)
  • تم تعديل واجهة برمجة التطبيقات ui-tooling Devices API لتضمين الأجهزة الأحدث (Ib25b4)

الإصدار 1.6.0-alpha04

23 آب (أغسطس) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha04. يحتوي الإصدار 1.6.0-alpha04 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة طريقة لإيقاف ReusableComposition، ما يؤدي إلى إزالة الملاحظات مع إبقاء العقد في مكانها. يمكن تفعيل التركيبة التي تم إيقافها مرة أخرى من خلال الاتصال بالرقم setContent. (Ib7f31)
  • إضافة واجهة ReusableComposition لإدارة مراحل نشاط التراكيب الفرعية وإعادة استخدامها (I812d1، b/252846775)
  • تمت ترقية Modifier.focusGroup إلى واجهات برمجة تطبيقات مستقرة. (I7ffa3)
  • تمت إضافة تعليقات توضيحية androidx إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد ColorInt وFloatRange وIntRange وSize والمزيد. (I70487، b/290950582)
  • تم تعديل واجهة برمجة التطبيقات ColorFilter لتوفير أنواع فئة فرعية محدّدة لتحسين إمكانية فحص المَعلمات. (I5fe29)
  • تقديم مكتبة معاينة أدوات Wear لعرض أجهزة Wear الصالحة التي يمكن استخدامها لمعاينات واجهة المستخدم (Ib036e)
  • تم إنشاء واجهة FontScalable للتعامل مع جزء تكبير الخط في واجهة "الكثافة". (I2cf3f)

الإصدار 1.6.0-alpha03

9 آب (أغسطس) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha03. يحتوي الإصدار 1.6.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • نوع جديد من انتقالات الدخول/الخروج الذي يغيّر حجم المحتوى استنادًا إلى حجم الحاوية التي يتم عرضها أثناء انتقالات الدخول والخروج LookaheadScope أصبحت الواجهة والميزات القابلة للتجميع مستقرة الآن. (Ifb2ce)
  • تمت إضافة إمكانية ضبط privateImeOptions (Idb772)

إصلاح الأخطاء

  • سيعدِّل PopupPositionProvider.calculatePosition الآن موضع النافذة المنبثقة تلقائيًا عند تغيير الحالة المقروءة في العملية الحسابية. (I676a1، b/292257547)
  • تم إصلاح الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما يكون readOnly صحيحًا. تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير readOnly من صحيح إلى خطأ أثناء التركيز. (I34a19، b/246909589)
  • توسيع نطاق تطبيق الأحكام الشاملة في اختبار واجهة المستخدم (I1f90d)

الإصدار 1.6.0-alpha02

26 تموز (يوليو) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha02. يحتوي الإصدار 1.6.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة واجهة أداة البحث عن الخدمة التي يمكن لمطوّري المكونات تنفيذها، والتي تسمح بتنفيذ عنصر تركيب يفوّض إلى عنصر تركيب آخر البحث عن الخدمات المفوَّضة في عنصر التركيب الأصلي. يجب عدم استدعاء هذا الإجراء مباشرةً، ويتم استخدامه لتفعيل إنشاء واجهات برمجة تطبيقات تجريبية في وقت التشغيل يمكن العثور عليها من الإصدارات المُغلفة من أداة إنشاء التصاميم، مثل ما تفعله وحدة واجهة المستخدم. (I296b9)
  • واجهة برمجة تطبيقات PlatformTextInput* التي تمت إعادة تصميمها بالكامل (I6c93a وb/274661182 وb/267235947 وb/277380808)
  • لم تعُد SoftwareKeyboardController وLocalSoftwareKeyboardController ميزتَين تجريبيتَين. أصبح LocalSoftwareKeyboardController الآن أيضًا CompositionLocal صالحًا. (I4c364)
  • تم إيقاف LookaheadLayout وLookaheadLayoutScope نهائيًا في بضعة إصدارات وتمّت إزالتهما الآن. واجهات برمجة التطبيقات البديلة هي LookaheadScope التي يمكنها العمل مع أي تنسيق. (I12ac3)
  • تمت إضافة SemanticsNodeInteraction.requestFocus كطريقة أكثر ملاءمةً وسهولةً لطلب التركيز في الاختبارات. (Ie8722)
  • إضافة واجهات برمجة تطبيقات تجريبية لتسجيل الافتراضات الشاملة لاستخدامها من قِبل إطارات العمل للاختبار في المستقبل (I12d77)

إصلاح الأخطاء

  • سيتم الآن تأجيل أول استدعاء لردّ الاتصال update في AndroidView إلى أن يتم إرفاق العرض، بدلاً من تشغيله عند تطبيق التركيبة التي تقدّم AndroidView. يعالج هذا الخلل مشكلة عدم إلغاء صلاحية طلب الاستدعاء update في حال تغيّر حالة قرأها على الفور بسبب تأثير. (Ie9438، b/291094055)

الإصدار 1.6.0-alpha01

‫21 حزيران (يونيو) 2023

تم إصدار androidx.compose.ui:ui-*:1.6.0-alpha01. يحتوي الإصدار 1.6.0-alpha01 على هذه المراجعات.

الميزات الجديدة

  • يتيح استخدام ميزة "النظر إلى المستقبل" في LazyList. يسمح هذا الإجراء لعنصر LazyList في عملية البحث عن العناصر المستقبلية بتخطّي أي صورة متحركة (مثل الصورة المتحركة لوضع العنصر وAnimatedVisibility وما إلى ذلك) واحتساب حجم العنصر المستقبلي وموقعه لجميع العناصر الفرعية. بعد مرور LazyList ثانية، يمكن للأطفال تحريك العناصر بشكل مستقل عن الواقع كما هو موضّح في لقطة النظر إلى المستقبل.

تغيير في السلوك: القيمة التلقائية لـ includeFontPadding هي الآن false في Compose

أصبحت قيمة includeFontPadding الآن خطأ تلقائيًا (21d806) في ميزة "الإنشاء".

includeFontPadding هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين مساحة إضافية فوق السطر الأول والسطر الأخير من النص أم لا لاستيعاب أي أحرف قد تمتد فوق خطوط الأساس للنص أو تحتها.

سيؤدي تعديل هذا الإصدار من ميزة "الإنشاء" إلى تعديل طريقة عرض جميع النصوص في واجهة المستخدم من خلال إزالة الحشو الإضافي في أعلى السطر الأول والسطر الأخير من كل نص تعرضه.

ويجب أن تكون التغييرات طفيفة استنادًا إلى متطلبات واجهة المستخدم ومقاييس الخطوط التي تستخدمها. ومع ذلك، قد تواجهك مشاكل مثل: - اختبارات لقطات الشاشة غير الصالحة. أصلِح واجهة المستخدم إذا لزم الأمر، وأعِد إنشاء الصور الذهبية. - النص غير محاذٍ بشكلٍ كامل. أزِل أيّ مساحات تملأ المساحة الفارغة في الأعلى أو الأسفل بشكل مخصّص أو أضِف مساحة إذا لزم الأمر.

يمكنك تفعيل includeFontPadding باستخدام PlatformTextStyle لكل نص:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

يمكنك تفعيل includeFontPadding لجميع النصوص من خلال ضبط أنماط Material. يُرجى العلم أنّ أسماء المَعلمات ستختلف بين M2 وM3.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /**/,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /**/
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

يمكنك الاطّلاع على مزيد من المعلومات حول ميزة "الكتابة الذكية" includeFontPadding في مستندات المطوّرين ومشاركة المدونة هذه.

إذا واجهت مشاكل أو أخطاء مرتبطة بهذا التغيير، يُرجى إرسال تقرير خطأ باستخدام أداة تتبُّع المشاكل.

تغييرات واجهة برمجة التطبيقات

  • فريق الدعم InputConnection#requestCursorUpdates (I0c69b)
  • تمّت إضافة FocusRequester.saveFocusedChild وFocusRequester.restoreFocusedChild (Ic557e وb/272302679 وb/275157318)
  • أضِف نوع ResourceResolutionException لتغليف الأخطاء التي تمّ طرحها عند محاولة تحميل مواد عرض الصور الممسوحة ضوئيًا مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44، b/230166331، b/278424788)
  • تحسين إمكانية الاستخدام لتحسين الأداء وعمليات تخصيص الذاكرة (Iede48)
  • تمت إضافة خصائص وإجراءات دلالية لدعم ترجمة النصوص. (I4a6bc)
  • خاصية جديدة في IntrinsincMeasureScope وعمليات تنفيذها (مثل MeasureScope) للإشارة إلى ما إذا كانت عملية قياس الأداء الحالية هي عملية قياس أداء استباقي (I7a812)
  • تم تعديل واجهة برمجة التطبيقات DrawScope لتوفير إمكانية إعادة توجيه العرض إلى لوحة مختلفة بكثافة/اتجاه تنسيق وحجم بديلَين.
  • تم تعديل DrawContext للسماح بضبط الكثافة واتجاه التنسيق بالإضافة إلى إتاحة إمكانية ضبط اللوحة. (Ie1f9b، b/225408150)
  • تمت إضافة Paragraph#fillBoundingBoxes لاحتساب مربّعات محيط الأحرف. (If30ee)
  • تمت إضافة مجموعة من MultiPreviews الشائعة (Ia5a27)

إصلاح الأخطاء

  • تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصّص. (I9790e)
  • تمت إعادة تسمية مَعلمات fallback* في أداة الإنشاء TextMeasurer إلى default*. (I940a5)
  • تمت إعادة تسمية SemanticsPropertyReceiver.performImeAction إلى onImeAction وSemanticsActions.PerformImeAction إلى OnImeAction. (I8e841)
  • إضافة عجلة لتمييز التمرير باستخدام الماوس عن السحب في التمرير المُدمَج (على وجه التحديد، في NestedScrollConnection) (Ie57e4)
  • تمت إضافة واجهة برمجة التطبيقات asComposePaint API لاستبدال toComposePaint لأنّ العنصر الذي يتم إرجاعه يُغلِّف android.graphics.Paint الأصلي (I22b4c).
  • أوقِف استخدام SemanticsProperties.imeAction واستبدِلها بمَعلمة جديدة SemanticsActions.performImeAction. (I4a587)
  • تمت إضافة إمكانية الاختيار باستخدام الماوس. سيتم توسيع التحديد باللمس بمقدار كلمة، وتصغيره حرفًا بحرف. (Ic0c6c، b/180639271)
  • إنّ طرق Paragraph التي كانت تُعرِض الخطأ AssertionError عند استخدام قيم الأساس خارج الحدود تُعرِض الآن الخطأ IllegalArgumentException كما تفعل MultiParagraph. (I549d3، b/243338896)

الإصدار 1.5

الإصدار 1.5.4

18 تشرين الأول (أكتوبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.4. يحتوي الإصدار 1.5.4 على هذه المراجعات.

الإصدار 1.5.3

‫4 أكتوبر 2023

تم إصدار androidx.compose.ui:ui-*:1.5.3. يحتوي الإصدار 1.5.3 على هذه المراجعات.

إصلاح الأخطاء

  • (b/301209788) كان تطبيق TextField للأوامر السابقة بشكل غير صحيح في بعض الأحيان عند التركيز على الإدخال الكوري يؤدي إلى فقدان الأحرف.

الإصدار 1.5.2

27 أيلول (سبتمبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.2. يحتوي الإصدار 1.5.2 على هذه المراجعات.

إصلاح الأخطاء

  • تمت إضافة حل بديل للأعطال التي تحدث عند الوصول إلى واجهة برمجة التطبيقات الخاصة بميزة "التنقّل في واجهة المستخدم" من سلسلة مهام الخلفية.
  • حلّ مشكلة إضافة العقد غير المرتبطة إلى شجرة الدلالات

الإصدار 1.5.1

6 أيلول (سبتمبر) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.1. يحتوي الإصدار 1.5.1 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح الحقول النصية التي تعرض لوحة المفاتيح ويمكن تعديلها عندما يكون readOnly صحيحًا. تم أيضًا إصلاح مشكلة عدم ظهور لوحة المفاتيح عند تغيير readOnly من صحيح إلى خطأ أثناء التركيز. (I34a19، b/246909589)

الإصدار 1.5.0

9 آب (أغسطس) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0. يحتوي الإصدار 1.5.0 على هذه المراجعات.

الإصدار 1.5.0-rc01

26 تموز (يوليو) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-rc01. يحتوي الإصدار 1.5.0-rc01 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح عطل يحدث عند استخدام SubcomposeLayout داخل movableContentOf().

الإصدار 1.5.0-beta03

28 حزيران (يونيو) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-beta03. يحتوي الإصدار 1.5.0-beta03 على هذه المراجعات.

إصلاح الأخطاء

  • تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصّص. (Ifb1d6)
  • تم إصلاح مشكلة في العناصر القابلة للتجميع في مربّع الحوار والنافذة المنبثقة والتي يمكن أن تؤدي إلى عدم تغيير حجم النافذة الفرعية على النحو المتوقّع عند usePlatformDefaultWidth=true. (I112ee)

الإصدار 1.5.0-beta02

7 حزيران (يونيو) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-beta02. يحتوي الإصدار 1.5.0-beta02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة التطبيقات asComposePaint لإتاحة استخدام مثيل android.graphics.Paint في أداة "الإنشاء"

إصلاح الأخطاء

  • تمت إضافة واجهة برمجة التطبيقات asComposePaint API لاستبدال toComposePaint لأنّ العنصر الذي يتم إرجاعه يُغلِّف android.graphics.Paint الأصلي (I22b4c).

الإصدار 1.5.0-beta01

24 أيار (مايو) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-beta01. يحتوي الإصدار 1.5.0-beta01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمّت إزالة عمليات التوزيع في إعادة التركيب والصور المتحركة بالألوان وAndroidComposeView (Ib2bfa)
  • إضافة ميزة "مساعد مرح" CacheDrawModifierNode() للسماح بالتفويض (Icf8f9)
  • نقدّم لك سمة isLookingAhead التي يمكن الوصول إليها من MeasureScope لمراقبة نتائج النظرة إلى المستقبل والتأثير في المرور الرئيسي إذا أردت ذلك. (Ibf4c3)
  • سمة الدلالات الجديدة traversalIndex، وهي عدد عائم يُستخدَم لإعادة ترتيب العقد في عملية التنقّل TalkBack (تظهر القيم الأقل أولاً). (I9a81b، b/186443263)
  • إعادة تسمية موقع الدلالات isContainer إلى isTraversalGroup (I121f6)
  • تم منح ColorProducer الآن operator fun invoke بدلاً من produce (I4a9a2).
  • أضِف Path transform API لتطبيق عمليات التحويل/التكبير/التصغير/الدوران على عناصر المسار. (I23434، b/233772232)
  • تُعرف طريقة ColorProducer باسم produce. (I78bde)
  • إعادة تسمية toFrameworkColorSpace إلى toAndroidColorSpace (I4f547)
  • أعِد تسمية ColorLambda إلى ColorProducer. (I73b1a)
  • تقديم واجهات برمجة تطبيقات للتحويل بين أنواع مساحات الألوان في Android وCompose (Ie7db4، b/279979665)
  • تمت إضافة مَعلمة لون إلى BasicText للسماح بإضافة تأثيرات متحركة إلى النص أو ضبط لونه بفعالية. (Iffd88، b/246961787)
  • تمت إعادة تسمية TextRange.constrain إلى TextRange.coerceIn. (I31be2)
  • تمت إضافة TextStyle.merge(...) محسّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787)
  • تحسين أداء العديد من واجهات برمجة التطبيقات Text API التي تشمل Brush وDrawStyle وTextMotion وDrawScope.drawText وParagraph.paint(Brush) وMultiParagraph.paint(Brush) (I2f740 وb/261581564 وb/261581931 وb/261561245)
  • تم إيقاف PlatformTextStyle.includeFontPadding نهائيًا. كان الهدف الأصلي هو إزالة الحقل، ولكن تبيّن لنا من خلال الملاحظات أنّ المطوّرين يحتاجون إلى خيار الضبط هذا. وبالتالي، تتم إزالة إيقاف الميزة نهائيًا من الحقل (I98e96، b/277703184).
  • تمت إضافة طريقة TextRange.constrain علنية. (I97912)
  • يمكن الآن فتح UrlAnnotation في AnnotatedString من خلال خدمات تسهيل الاستخدام، مثل TalkBack. (If4d82، b/253292081)
  • تمت إضافة إجراء الدلالات InsertTextAtCursor للحقول النصية. (I11ed5)
  • تمت ترقية طريقة وضع تصميم LineHeightStyle.Alignment(topRatio) إلى واجهة برمجة تطبيقات مستقرة. (I79c32، b/261565383)
  • لم تعُد واجهات برمجة التطبيقات TextMeasurer وواجهات برمجة التطبيقات ذات الصلة تجريبية. (I74647، b/261581753)
  • تمت إضافة إجراء الدلالات PerformImeAction لتشغيل إجراء IME على عقد محرِّر النصوص. (Ic606f، b/269633506)
  • PlatformTextInput لم تعُد واجهات برمجة التطبيقات تجريبية على Android. (I668eb)
  • تم تغيير اسم مَعلمة القيمة للمَعلمة Enum.valueOf (Ia9b89)
  • المزيد من الاستثناءات التي تمّ طرحها من valueOf (I818fe) في التعداد
  • تمّ تقديم واجهة برمجة تطبيقات PlatformTextInputAdapter جديدة من المستوى الأدنى لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة تطبيقات النظام الأساسي. (I58df4)
  • تمت إضافة المَعلمة BlendMode إلى الطريقتَين DrawScope.drawText وParagraph.paint وMultiParagraph.paint لتتوافق مع خوارزميات دمج مختلفة عند رسم نص على "لوحة الرسم". (I57508)
  • أعِد تسمية Font.MaximumAsyncTimeout إلى Font.MaximumAsyncTimeoutMillis. إعادة التسمية فقط (I07af5)
  • تم تعديل قيم كثافة البكسل لأجهزة المراجع @Preview (Id6151 وb/254528382)
  • أضِف المَعلمتَين brush وalpha إلى BasicText للسماح بإضافة تأثيرات متحركة إلى فرشاة النص أو ضبطها بفعالية.
  • تحديد أنواع دالة lambda غير المضمّنة في مربّع لأنواع Float وDouble وLong وInt وShort في :ui:ui-unit (I6f18d، b/246961787)

إصلاح الأخطاء

  • إزالة عمليات تخصيص متعددة في تتبُّع سرعة المؤشر (I26bae)
  • خفض عمليات التوزيع في إدارة إدخال التنسيق والمؤشر (I5333a)
  • تحسين استخدام ذاكرة Vector وعرض اللقطات الأولى (I2f3c6)
  • إزالة التخصيصات عند رسم الخطوط والنقاط باستخدام Canvas (I9f535)
  • إضافة مستندات لـ AndroidFont.fontVariationSettings (I7d9e2)

المساهمة الخارجية

  • تحسين الأداء وتقليل عمليات التوزيع في واجهات برمجة التطبيقات Vector (I906cb)

الإصدار 1.5.0-alpha04

10 أيار (مايو) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha04. يحتوي الإصدار 1.5.0-alpha04 على هذه المراجعات.

الميزات الجديدة

  • Modifier.Node تحسينات على التفويض تمت إضافة قدرة محسّنة على تفويض مثيلات Modifier.Node أخرى من DelegatingNode. ويمكن تنفيذ ذلك باستخدام واجهات برمجة التطبيقات delegate وundelegate. قبل هذا التغيير، كان يجب تفويض كل واجهة برمجة تطبيقات من العقدة المفوّضة إلى العقدة المفوّضة بشكل صريح. بعد هذا التغيير، سيتم تفويض واجهات العقد بشكل ضمني ما لم تلغيها DelegatingNode بشكل صريح. (67352bc)

تغييرات واجهة برمجة التطبيقات

  • تعرَّف على NestedScrollModifierNode، وهو NestedScroll Modifier.Node يمكن تفويضه. (I69513)
  • تمت إضافة المَعلمتَين onReset وonRelease إلى العنصر القابل للتجميع AndroidViewBinding، ما يعكس العنصر القابل للتجميع AndroidView ويفعّل إعادة استخدام "العرض" باستخدام ViewBinding. (I00b1e، b/276802519)
  • تم تعديل واجهة Compose Path API لدعم عمليات ترجيع الشريط لتلبية حالات الاستخدام المتعلّقة بتعديل المسار بشكل متكرّر مع إعادة الاستخدام بشكل أسرع. (I7b797)
  • تمت إضافة TextStyle.merge(...) محسّن مع قائمة المَعلمات الكاملة. (Iad234، b/246961787)
  • تحسين أداء العديد من واجهات برمجة التطبيقات Text API التي تشمل Brush وDrawStyle وTextMotion وDrawScope.drawText وParagraph.paint(Brush) وMultiParagraph.paint(Brush) (I2f740 وb/261581564 وb/261581931 وb/261561245)
  • تم إيقاف PlatformTextStyle.includeFontPadding نهائيًا. كان الهدف الأصلي هو إزالة الحقل، ولكن تبيّن لنا من خلال الملاحظات أنّ المطوّرين يحتاجون إلى خيار الضبط هذا. وبالتالي، تتم إزالة إيقاف الميزة نهائيًا من الحقل (I98e96، b/277703184).

إصلاح الأخطاء

  • تم إصلاح مشكلة التراجع التي كانت تؤدي إلى عدم ظهور لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للتجميع Dialog. (I82551، b/262140644)

الإصدار 1.5.0-alpha03

19 نيسان (أبريل) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha03. يحتوي الإصدار 1.5.0-alpha03 على هذه المراجعات.

الميزات الجديدة

  • السلوك التلقائي الجديد لعنصر SubcomposeLayout في LookaheadScope: SubcomposeLayouts التي لا تحتوي على خانات شرطية (مثل TabRow وScaffold وBoxWithConstraints وما إلى ذلك) تعمل الآن بشكل جيد مع الرسوم المتحرّكة التي تستبِق المحتوى.

تغييرات واجهة برمجة التطبيقات

  • إنّ القيمة التلقائية الجديدة intermediateMeasurePolicy التي تعيد استخدام سياسة القياس من عملية التقديم إلى الأمام تسمح لأنواع SubcomposeLayout الفرعية التي لا تحتوي على خانات شرطية، مثل Scaffold وTabRow وBoxWithConstraints، بالعمل مع ميزة "النظر إلى المستقبل" تلقائيًا. (Id84c8)
  • سيحظر مُعاد التركيب الذي تم إنشاؤه لإحدى نوافذ Android الآن المكالمات إلى withFrameNanos فقط بدلاً من جميع عمليات التركيب عند تلقّيه إشعار ON_STOP. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقفة ستستمر في إعادة التركيب لتغييرات البيانات، ولكن سيتم حظر الصور المتحركة أو أي عنصر آخر يستدعي withFrameNanos. (Id9e7f، b/240975572)
  • تغييرات motionEventSpy إلى الإصدار الثابت (Ic5ec4، b/261560988)
  • تمت إضافة طريقة TextRange.constrain علنية. (I97912)
  • لم تعُد PlatformTextStyle.includeFontPadding متوقّفة نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة التطبيقات هذه للتوافق للتبديل إلى الإعداد includeFontPadding خطأ واختباره. (I98e96، b/277703184)

الإصدار 1.5.0-alpha02

5 نيسان (أبريل) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha02. يحتوي الإصدار 1.5.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • واجهة برمجة تطبيقات SubcomposeLayout جديدة تتّبع سياسة قياس وسيطة إضافية لمعالجة منطق القياس/التنسيق أثناء الرسوم المتحرّكة المستندة إلى التوقّع (I017d3)
  • أصبح PointerInput الآن بطيئًا ويستخدم Modifier.Node لتحسين الأداء (اطّلِع على معلومات عن التغيير الطفيف في السلوك). (15dab9)
  • تغيير واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة باستخدام الأحداث الرئيسية (I9c7d8، b/261566839، b/261567368)
  • تغيير واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة في PointerInputChange (I1b543، b/261560988، b/261565762، b/261565749)
  • تضيف طريقة لإنشاء مثيل SuspendingPointerInputModifierNode لعمليات تنفيذ Modifier.Node أكثر تعقيدًا. (Ic4933)
  • يمكن الآن فتح UrlAnnotation في AnnotatedString من خلال خدمات تسهيل الاستخدام، مثل TalkBack. (If4d82، b/253292081)
  • تمت إضافة واجهة برمجة تطبيقات لمنع وصول مفاتيح الجهاز إلى لوحة المفاتيح الافتراضية (I4f4c6، b/186800395)
  • تمت إضافة إجراء الدلالات InsertTextAtCursor للحقول النصية. (I11ed5)
  • ستتطلب الآن إجراءات الاختبار ذات الصلة بالنص (مثل performTextInput) التركيز مباشرةً باستخدام إجراء الدلالات بدلاً من النقر على الحقل. (I6ed05)

إصلاح الأخطاء

  • تتطلّب إجراءات اختبار النصوص الآن تفعيل الحقول النصية. (Iab328)

الإصدار 1.5.0-alpha01

22 آذار (مارس) 2023

تم إصدار androidx.compose.ui:ui-*:1.5.0-alpha01. يحتوي الإصدار 1.5.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • لا يتطلّب Modifier.intermediateLayout الآن استخدام LookaheadScope صريح. تحتوي وحدة القياس في intermediateLayout على IntermediateMeasureScope كمستلِم، ما يوفر CoroutineScope وLookaheadScope وMeasureScope بشكل ملائم.(Ibe2e5)
  • تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد عنصر تنسيق. يتيح ذلك التحكّم مباشرةً في المحتوى الفرعي في LookaheadScope من خلال MeasurePolicy الخاصة بالعنصر الرئيسي. (Ibe2e5)
  • تُضيف Modifier.Node#coroutineScope للسماح لـ Modifier.Nodes بتشغيل وظائف التشغيل المتعدّد. (I76ef9)
  • اسمح لـ Modifier.Nodes بقراءة CompositionLocals من خلال تنفيذ واجهة CompositionLocalConsumerModifierNode. (Ib44df)
  • نشر فئة @Deprecated إلى السمة (I882d1)

الإصدار 1.4

الإصدار 1.4.3

3 أيار (مايو) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.3. يحتوي الإصدار 1.4.3 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم عرض الرمز AndroidView بشكل صحيح عند استخدامه مع عناصر تعديل معيّنة. (I4dc77، b/274797771)
  • تم إصلاح خطأ في ميزة "البحث بالتركيز ثنائي الأبعاد" كان يؤثر في DropDown القوائم (b/276811828)
  • تم إصلاح خطأ في سمات الدخول/الخروج المخصّصة للتركيز التي كانت تُشغّل كتلة الدخول/الخروج فقط في المرة الأولى التي يتم فيها استدعاء دالة lambda (b/277234245).
  • تم إصلاح مشكلة تراجع في نظام التركيز أدت إلى حدوث عطل أثناء قراءة focusProperties. (b/271324781، b/274897776)

الإصدار 1.4.2

19 نيسان (أبريل) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.2. يحتوي الإصدار 1.4.2 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم إعادة استخدام AndroidView لمُعدِّلاته بشكلٍ صحيح، ما قد يؤدي إلى حدوث سلوك غير متوقّع وأعطال. (Ib67ee، b/275919849)
  • تم إصلاح مشكلة التراجع التي كانت تؤدي إلى عدم ظهور لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة العنصر القابل للتجميع Dialog (I82551، b/262140644)

الإصدار 1.4.1

5 نيسان (أبريل) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.1. يحتوي الإصدار 1.4.1 على هذه المراجعات.

إصلاح الأخطاء

  • إصلاح مشكلة عدم تأثُّر AndroidView بـ ParentDataModifier (b/274797771)

الإصدار 1.4.0

22 آذار (مارس) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.0. يحتوي الإصدار 1.4.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 1.3.0

  • تمت إضافة واجهة برمجة تطبيقات PinnableContainer جديدة تتيح تثبيت عناصر القائمة غير المعروضة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، يستخدم Modifier.focusable() هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881 وb/259274257 وb/195049010)
  • تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589)
  • تمت إضافتها في سمة IsContainer semantics على Surfaces. سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب التنقّل استنادًا إلى المعنى الدلالي للعناصر، مثل الأسطح. (I63379)
  • تمت إضافة دور تسهيل الاستخدام الجديد DropdownList. ويمكن استخدام هذا الإجراء لتكرار سلوك TalkBack عند التركيز على android.widget.Spinner. (I177e5، b/236159001)
  • يمكنك الآن استخدام PlatformTextStyle(emojiSupportMatch) لإيقاف معالجة ميزة الرموز التعبيرية اختياريًا في فقرة واحدة. (Ia7100، b/139326806)
  • ستُجري اختبارات واجهة مستخدم Android Compose الآن عمليات مرور للتخطيط لكل لقطة عند تنفيذ اللقطات للوصول إلى وضع السكون (مثلاً من خلال waitForIdle). وقد يؤثر ذلك في الاختبارات التي تُجري تأكيدًا على لقطات فردية من الرسوم المتحرّكة للتخطيط. (I8ea08، b/222093277)
  • تمت إضافة TextMotion التجريبي إلى TextStyle لتحديد النص على أنّه Static(default) أو متحرك. استخدِم TextMotion.Animated إذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7)

الإصدار 1.4.0-rc01

8 آذار (مارس) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.0-rc01. يحتوي الإصدار 1.4.0-rc01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة وظائف زائدة لدالة AndroidView القابلة للتجميع، والتي تقبل المَعلمة onReset. ويسمح هذا الإجراء بإعادة استخدام نُسخ "العرض" عند تجاهل عقدتها في التركيب وإعادة استخدامها بطريقة متوافقة. ويُعدّ ذلك مفيدًا بشكل خاص في ما يتعلّق بLazyRows وLazyColumns من المشاهدات. (I3f10d، b/230099236)
  • تمّ تقديم واجهة برمجة تطبيقات PlatformTextInputAdapter جديدة من المستوى الأدنى لإنشاء عمليات تنفيذ مخصّصة لإدخال النصوص تتواصل مباشرةً مع واجهات برمجة تطبيقات النظام الأساسي. (I58df4)

إصلاح الأخطاء

  • سيؤدي الآن إجراء الدلالات SetText في BasicTextField إلى تعديل مخزن النصوص باستخدام مسار الرمز البرمجي نفسه الذي تستخدمه تعديلات IME ودوال الاختبار (مثل performTextReplacement).
  • تستخدم الآن دوال اختبار النصوص performTextClearance وperformTextReplacement وperformTextSelection الرمز SemanticsActions. (I0807d، b/269633168، b/269624358)

الإصدار 1.4.0-beta02

22 شباط (فبراير) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.0-beta02. يحتوي الإصدار 1.4.0-beta02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة واجهة برمجة التطبيقات modifierElementOf(). يُرجى التمديد من ModifierNodeElement مباشرةً بدلاً من ذلك. (I2256b)
  • تمت إضافة طلب استدعاء Modifier.Node.onReset() جديد يتيح لك إعادة ضبط بعض الحالات المحلية للتعامل بشكل صحيح مع الحالة التي ستتم فيها إعادة استخدام Layout (على سبيل المثال، كعنصر من LazyColumn). تم إصلاح FocusTargetModifierNode لإعادة ضبط الحالة التي تم التركيز عليها بشكل صحيح. (I65495، b/265201972)
  • تمت إضافة المَعلمة BlendMode إلى الطريقتَين DrawScope.drawText وParagraph.paint وMultiParagraph.paint لتتوافق مع خوارزميات دمج مختلفة عند رسم نص على "لوحة الرسم". (I57508)

إصلاح الأخطاء

  • تم تحسين خوارزمية ترتيب التركيز في تسهيل الاستخدام، على سبيل المثال، يتم قراءة الأشرطة العلوية/السفلية أولاً/أخيرًا في أغلب الأحيان على التوالي (74e9c5).

الإصدار 1.4.0-beta01

8 شباط (فبراير) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.0-beta01. يحتوي الإصدار 1.4.0-beta01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية PinnableContainer.PinnedHandle.unpin() إلى release() (I4667a)
  • تمت إضافة waitUntilNodeCount وwaitUntilAtLeastOneExists وwaitUntilExactlyOneExists وwaitUntilDoesNotExist كواجهات برمجة تطبيقات تجريبية إلى ComposeTestRule، ما سمح بتوسيع نطاق واجهة برمجة التطبيقات waitUntil لقبول أي مطابق وعدد من العقد. يُرجى الاطّلاع على ComposeTestRule للحصول على المزيد من المستندات. (Ifa1b9، b/226934294)
  • أعِد تسمية Font.MaximumAsyncTimeout إلى Font.MaximumAsyncTimeoutMillis. (I07af5)
  • تمت إزالة GoogleFont.Provider.AllFontsListUri وتم الربط بها في ktdoc بدلاً من ذلك. (I16f29)

إصلاح الأخطاء

  • إضافة مستندات لـ AndroidFont.fontVariationSettings (I7d9e2)

الإصدار 1.4.0-alpha05

25 كانون الثاني (يناير) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha05. يحتوي الإصدار 1.4.0-alpha05 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمّت إضافة وظائف متعدّدة جديدة تجريبية لدالة runComposeUiTest ودالة create*ComposeRule اللتين تقبلان مَعلمات CoroutineContext. سيتم استخدام السياق لتركيبة الاختبار وأيّ طلبات LaunchedEffect وrememberCoroutineScope() في التركيبة. (I10614، b/265177763)
  • إضافة واجهة برمجة تطبيقات جديدة لتتبُّع سرعة أحادية البعد (If5a82)
  • تم وضع علامة @Stable على FocusRequester. (I580ee)
  • أزِل تعليقًا توضيحيًا تجريبيًا من أداة إنشاء DialogProperties التي تأخذ مَعلمة usePlatformDefaultWidth. (Ic4048)
  • تمّت إضافة دالة لاحتساب موضع وظلّ خط على مسافة في مسار مع PathMeasure.getPosition() وPathMeasure.getTangent() (I3b47c).
  • تمت إزالة الإعداد العلني الذي تم عرضه عن طريق الخطأ في PlatformParagraphStyle. (I07f47)
  • المزيد من أنواع/قيم القيمة الخالية للدوالّ المضمّنة/المخفية غير المُستخدَمة (I24f91)
  • أضِف AnnotatedString.hasStringAnnotations للبحث عن التعليقات التوضيحية التي لا تحتوي على أيّ تخصيصات. (I94dfe، b/246960758)
  • تمت إضافة طريقة تحميل زائدة جديدة لدالة TextMeasurer.measure التي تأخذ String كنص. (I47b2d، b/242705342)
  • تم ترقية واجهات برمجة التطبيقات LineBreak وHyphens في TextStyle إلى الإصدار الثابت. (Ic1e1d)

المساهمة الخارجية

  • لن يتم إيقاف استخدام طرق notifyFocusedRect في TextInputSession وTextInputService نهائيًا مرة أخرى. (I23a04، b/262648050)

الإصدار 1.4.0-alpha04

11 كانون الثاني (يناير) 2023

تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha04. يحتوي الإصدار 1.4.0-alpha04 على هذه المراجعات.

الميزات الجديدة

  • تمت إضافة واجهة برمجة تطبيقات PinnableContainer جديدة تتيح تثبيت عناصر القائمة غير المعروضة، حتى لا يتم التخلص منها عند التمرير خارج الحدود. على سبيل المثال، يستخدم Modifier.focusable() هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881 وb/259274257 وb/195049010)
  • تمت إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/251840112 وb/251859987 وb/257141589)
  • تمت إضافتها في سمة IsContainer semantics على Surfaces. سيتم استخدام هذه السمة في تغيير لاحق يحدّد ترتيب التنقّل استنادًا إلى المعنى الدلالي للعناصر، مثل الأسطح. (I63379)
  • تمت إضافة دور تسهيل الاستخدام الجديد DropdownList. ويمكن استخدام هذا الإجراء لتكرار سلوك TalkBack's عند التركيز على android.widget.Spinner. (I177e5، b/236159001)
  • يمكنك الآن استخدام PlatformTextStyle(emojiSupportMatch) لإيقاف معالجة ميزة الرموز التعبيرية اختياريًا في فقرة واحدة. (Ia7100، b/139326806)
  • ستُجري اختبارات واجهة مستخدم Android Compose الآن عمليات مرور للتخطيط لكل لقطة عند تنفيذ اللقطات للوصول إلى وضع السكون (مثلاً من خلال waitForIdle). وقد يؤثر ذلك في الاختبارات التي تُجري تأكيدًا على لقطات فردية من الرسوم المتحرّكة للتخطيط. (I8ea08، b/222093277)
  • تمت إضافة TextMotion التجريبي إلى TextStyle لتحديد النص على أنّه Static(default) أو متحرك. استخدِم TextMotion.Animated إذا كان سيتم تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7)

تغييرات واجهة برمجة التطبيقات

  • تم استبدال وسيطة maxSize: IntSize في drawText بـ size: Size لتصبح متوافقة مع دوال DrawScope الأخرى. يتم ضبط size على Size.Unspecified تلقائيًا، ما من شأنه تغيير السلوك التلقائي السابق. (Icd27d)
  • تمت إزالة أداة إنشاء الخطوط التجريبية المتوقّفة نهائيًا. (I8a724، b/261435386)
  • تحتوي فئة بيانات أدوات واجهة المستخدم Group الآن على حقل isInline يشير إلى ما إذا كانت المجموعة مخصّصة لاستدعاء دالة قابلة للتجميع مضمّنة. إذا كان isInline هو true، تكون المكالمة موجّهة إلى دالة قابلة للتجميع مضمّنة. ومع ذلك، قد تكون القيمة خطأ لطلبات الدوال المُركّبة المضمّنة التي تأتي من وحدات تم تجميعها باستخدام إصدار من المكوّن الإضافي لمجمّع الإنشاء الذي لا يُنشئ معلومات الدالة المضمّنة. (Idb846)
  • طرح عدد من واجهات برمجة التطبيقات التجريبية سابقًا كإصدارات رسمية
  • أصبحت واجهة برمجة التطبيقات Rotary Scroll Event API مستقرة الآن (I42ad3، b/261561229).
  • FontVariation أصبحت واجهة برمجة التطبيقات الآن ثابتة (I8779f، b/241016309)
  • أصبحت جميع وظائف إنشاء Font() واجهة برمجة تطبيقات ثابتة الآن (I5948b وb/261435386).
  • أصبح الإصدار DeviceFontFamilyName ثابتًا الآن (I8b640، b/261435386).
  • أصبحت دالة الإنشاء AndroidFont مع variationSettings الآن واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من أوصاف الخطوط. (I5adcc، b/261565807)
  • أصبحت واجهة برمجة التطبيقات createFontFamilyResolver مستقرة الآن. يمكن استخدام هذا الإجراء لرصد الاستثناءات غير التي تمّ رصدها أثناء تحميل الخطوط غير المتزامنة. (Ibb481، b/261435386)
  • أصبحت واجهة برمجة التطبيقات Font.loadingStrategy مستقرة الآن. (I5937c، b/261435386)
  • أصبحت واجهة برمجة التطبيقات GoogleFont مستقرة الآن. (Ic90b0، b/261435386)
  • أصبحت TextUnit(float, TextUnitType) الآن واجهة برمجة تطبيقات ثابتة. (I90c84، b/261561612)
  • أصبحت pluralStringResource الآن واجهة برمجة تطبيقات ثابتة. (I09849، b/261439703)

الإصدار 1.4.0-alpha03

7 كانون الأول (ديسمبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha03. يحتوي الإصدار 1.4.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إزالة ExperimentalComposeUiApi من PointerIcon (I23af8)
  • أدرِج إجراءات تسهيل الاستخدام في الصفحة: PageUp وPageDown وPageLeft وPageRight. يُرجى العلم أنّ هذه العناصر لا تتوفّر إلا من واجهة برمجة التطبيقات 29. (Ida4ab)
  • تم تعديل طريقة عرض المَعلمة rememberNestedScrollConnection من طريقة العرض الجذر إلى طريقة عرض المضيف. (Ia5200)
  • تمت إضافة واجهة برمجة تطبيقات Modifier API لطلب معلومات عن الانتقال للأعلى أو للأسفل في الصفحة. (I2ba9d، b/203141462)
  • تُستخدَم في Clickable لتأخير التفاعلات الناتجة عن الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث انتقال.
  • تم إصلاح مشكلة عدم تأخير Clickables للتأثيرات المتموّجة بشكلٍ صحيح عند استخدامها داخل Scrollable ViewGroup.
  • تم تعديل الأدراج واللوحات لتأخير الضغطات بشكل صحيح في حال إمكانية أن تصبح الإيماءات أحداث تنقّل.
  • تمت إعادة تسمية CompositingStrategy.Always إلى Offscreen للإشارة إلى أنّه سيتم دائمًا عرض graphicsLayer في ذاكرة تخزين مؤقتة وسيطة (I47dc1).
  • أصبح الأداء الآن ثابتًا في ما يتعلّق بزيادة عدد مساحات المحتوى في التنسيق (I10566، b/248294649).
  • تمت إضافة واجهات برمجة التطبيقات الجديدة والتجريبية PerfettoTrace.record {} وPerfettoTraceRule لتسجيل عمليات تتبُّع Perfetto (المعروفة أيضًا باسم عمليات تتبُّع النظام) كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16)
  • في اختبارات واجهة المستخدم التي تستخدِم قاعدة Compose، لن يتم إرسال عمليات المتابعة التي تم استئنافها أثناء عمليات استدعاء withFrameNanos إلا بعد انتهاء تنفيذ جميع عمليات استدعاء الإطارات. ويطابق هذا السلوك سلوك ميزة "الإنشاء" عند تشغيلها بشكلٍ طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. من المفترض ألا يؤثر ذلك إلا في الرمز البرمجي الذي يستدعي withFrameNanos أو withFrameMillis مباشرةً، والذي يتضمّن منطقًا خارج ردّ الاتصال ويتم تمريره إلى تلك الدوالّ التي قد تحتاج إلى نقلها داخل دوالّ ردّ الاتصال. اطّلِع على التغييرات في اختبار الصور المتحركة في هذا الإصدار من الإصدار العلني للحصول على أمثلة.
  • تمت إضافة المَعلمة الاختيارية onPerformTraversals: (Long) -> Unit إلى دالة الإنشاء TestMonotonicFrameClock ودالة المصنع لتشغيل الرمز البرمجي بعد وظائف ردّ الاتصال withFrameNanos ولكن قبل استئناف عمليات التشغيل المتعدّد للوظائف المجدولة للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670)
  • تمت إضافة EmojiCompat إلى ميزة "الإنشاء" (Ibf6f9، b/139326806)
  • تمت إضافة مَعلمة خلفية جديدة إلى @Preview لإتاحة الألوان الديناميكية (I9f512)

إصلاح الأخطاء

  • يتم الآن إرسال إشعارات تطبيق اللقطات بعد انتهاء Recomposer من تطبيق التغييرات. (Iad6c0، b/222093277)
  • تم إدخال تغييرات في captureToImage للسماح بالتقاط لقطات شاشة متعددة النوافذ. يكون ذلك مفيدًا لاختبارات لقطات الشاشة التي تستخدم النوافذ المنبثقة لإنشاء الرسائل. (I169c5)

تعديلات على التبعيات

  • يعتمد Compose UI وCompose Material الآن على Lifecycle 2.5.1. (I05ab0، b/258038814)

الإصدار 1.4.0-alpha02

9 تشرين الثاني (نوفمبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha02. يحتوي الإصدار 1.4.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم تعديل GraphicsLayerScope لعرض الحجم الحالي للعنصر graphicsLayer. ويُعدّ ذلك مفيدًا لاحتساب عمليات تحويل graphicsLayer كدالّة على حجم العنصر القابل للتجميع. (If8c43،b/181387080)
  • تمّ تقديم CompositingStrategy لتحديد الحالات التي يجب فيها الاستفادة من طبقة تركيب خارج الشاشة لعرض محتوى graphicsLayer. يحافظ الوضع التلقائي على السلوك التلقائي الذي يستفيد داخليًا من طبقة إذا تم تطبيق شفافية أو RenderEffect/Overscroll. سيقدّم "أبسط رسم" دائمًا مساحة تخزين مؤقتة خارج الشاشة حيث سيتجنّب ModulateAlpha الاستفادة من مساحة تخزين مؤقتة خارج الشاشة، وسيعدّل بدلاً من ذلك كل تعليمات الرسم المسجّلة ضمن graphicsLayer. سيظل استخدام ModulateAlpha يستفيد من ذاكرة تخزين مؤقت غير مرئية لعمليات استخدام RenderEffect/Overscroll (I25e82 وb/256382834)
  • تمت إضافة invalidateSubtree() إلى Modifier.Node للسماح بإبطال التسلسلات الهرميّة بالكامل للتخطيط والرسم. (I4bd90)
  • ترقية الإصدار rememberNestedScrollInteropConnection إلى الإصدار الثابت تمّت إضافة إمكانية تمرير طريقة عرض الجذر إلى rememberNestedScrollInteropConnection. يمكن أن يساعد ذلك العرض المخصّص على الاستجابة بشكل أفضل لقيود الانتقال للأعلى أو للأسفل، خاصةً في طرق العرض غير العادية (مثل ModalBottomSheetDialog). (I9e107)
  • تمت إضافة واجهة ObserverNode التي يمكن استخدامها من خلال عمليات تنفيذ Modifier.Node التي يجب إعلامها عند تغيير قيمة سبق أن قرأتها (I5728b، b/247716483)
  • تمت إضافة مُنشئ جديد إلى Paint يقبل android.graphics.Paint أصليًا. تمت أيضًا إضافة دالة إضافة toComposePaint() التي تحوّل عنصر Paint أصليًا حاليًا إلى Compose Paint. (Ica91b)
  • إضافة FontFamily.Resolver.resolveAsTypeface جديد لاستخدامه على Android (I8950b)
  • أضِف ToolingState للسماح للأدوات بتغيير الحالات الداخلية لـ Composable (Ie6614).
  • إعادة صياغة الأدوات لتوفير دعم أفضل للرسوم المتحرّكة الجديدة المُضافة (I8677b)
  • تمت إضافة المَعلمة minLines إلى Text وTextField وOutlinedTextField في material وmaterial3، ما يسمح بضبط الحد الأدنى لارتفاع المكوّن من حيث عدد الأسطر (I4af1d).

الإصدار 1.4.0-alpha01

24 تشرين الأول (أكتوبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.4.0-alpha01. يحتوي الإصدار 1.4.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة طريقة جديدة، awaitEachGesture()، لأدوات رصد الإيماءات. تعمل هذه الطريقة بشكل مشابه لـ forEachGesture()، ولكن تعمل حلقة الإيماءات بالكامل ضمن AwaitPointerEventScope حتى لا يتم فقدان الأحداث بين التكرارات.
  • تم إيقاف forEachGesture() نهائيًا واستبداله بـ awaitEachGesture() لأنّه يسمح بفقدان الأحداث بين الإيماءات. (Iffc3f، b/251260206)
  • إيقاف ميزة إعادة تدوير عناصر تسهيل الاستخدام في androidx تبيّن لنا أنّ التغييرات في الأداء لا تذكر حتى في أقدم الإصدارات المتوافقة. (I0a961)
  • تمت إضافة DrawStyle كسمة تجريبية إلى TextStyle وSpanStyle لتفعيل رسم نص مخطّط. (If24b8، b/155421273)
  • AnnotatedString.Builder تُنفِّذ الآن kotlin.text.Appendable. (I1a061، b/231030444)
  • تتضمّن AnnotatedString.Builder الآن طريقة append(AnnotatedString, start: Int, end: Int) لإلحاق سلسلة فرعية من AnnotatedString والأنماط المتداخلة.
  • تمت إضافة المَعلمة DrawStyle إلى دالتَي الرسم Paragraph وMultiParagraph، ما يتيح رسم نص مخطَّط. (Ic8102، b/155421273)

المساهمة الخارجية

  • نشكرك على vighnesh لإضافة أجهزة التلفزيون إلى المعاينات (Ie15cd).

الإصدار 1.3

الإصدار 1.3.3

11 كانون الثاني (يناير) 2023

تم إصدار androidx.compose.ui:ui-*:1.3.3. يحتوي الإصدار 1.3.3 على هذه المراجعات.

إصلاح الأخطاء

  • إصلاح مشكلة عطل يحدث أحيانًا على نظام التشغيل Android 9 عندما يحفظ النشاط حالة "عرض الكتابة" (I0b755، b/260322832)

الإصدار 1.3.2

7 كانون الأول (ديسمبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.2. يحتوي الإصدار 1.3.2 على هذه المراجعات.

إصلاح الأخطاء

  • تم تعديله لاستخدام Profobuf 3.21.8، ما يتجنّب ظهور تنبيه أمان في protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

الإصدار 1.3.1

9 تشرين الثاني (نوفمبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.1. يحتوي الإصدار 1.3.1 على هذه المراجعات.

الإصدار 1.3.0

24 تشرين الأول (أكتوبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0. يحتوي الإصدار 1.3.0 على عمليات الربط هذه.

التغييرات المهمة منذ الإصدار 1.2.0

  • مجموعة تجريبية جديدة لواجهات برمجة التطبيقات LookaheadLayout (تتيح سلوكيات متحركة كانت مستحيلة من قبل)
  • مجموعة تجريبية جديدة لواجهات برمجة التطبيقات Modifier.Node (بديل بأداء أعلى من Modifier.composed)
  • تحسين دعم الأجزاء المُدمَجة من النوافذ
  • إتاحة التركيز على لوحات D-Pad ولوحات المفاتيح في LazyLists
  • تم خفض الحد الأقصى المسموح به للارتفاع في مربّعات الحوار والنوافذ المنبثقة إلى 8dp (تغيير يؤثر في السلوك لبعض أنظمة التصميم المخصّصة - السبب في ملاحظات الإصدار beta01)
  • العديد من التحسينات البسيطة غير المؤثرة في واجهة برمجة التطبيقات
  • العديد من الإصلاحات للأخطاء وتحسينات الأداء

الإصدار 1.3.0-rc01

5 تشرين الأول (أكتوبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0-rc01. يحتوي الإصدار 1.3.0-rc01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة شرطة جديدة تجريبية في واجهة برمجة التطبيقات لتفعيل ميزة تقسيم الكلمات تلقائيًا في النص (Iaa869)

إصلاح الأخطاء

  • لن تضبط خطوط DeviceFontFamilyName إعدادات الصيغ wght وital تلقائيًا، بل ستستخدم بدلاً من ذلك إعدادات النظام الأساسي لملف Typeface الذي تم تحميله. (Ia7a6d، b/246989332)
  • تم إصلاح تسرُّب ذاكرة LazyColumn - لم يكن يتم استدعاء onModifierLocalsUpdated بالقيمة التلقائية عند إعادة استخدام المُعدِّلات (b/230168389)

الإصدار 1.3.0-beta03

21 أيلول (سبتمبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0-beta03. يحتوي الإصدار 1.3.0-beta03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إضافة خيارات لتخصيص تقسيم الأسطر في "النص" (I86907)
  • تم تغيير الوسيطة size:IntSize إلى constraints: Constraints في الطريقة TextMeasurer.measure لتلبية قيود الحد الأدنى للعرض. (I37530، b/242707525)

إصلاح الأخطاء

  • تعمل الآن واجهة برمجة التطبيقات BackHandler لنشاط AndroidX ضمن Dialog قابلة للتجميع. (I35342)

الإصدار 1.3.0-beta02

7 أيلول (سبتمبر) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0-beta02. يحتوي الإصدار 1.3.0-beta02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة حمولة زائدة تجريبية لـ Layout تقبل قائمة بالعديد من لامدا للمحتوى القابل للتجميع، ما يسمح بمعالجة المقاييس التي تم وضعها في لامدا مختلفة للمحتوى بشكل مختلف (Ic1b4e)

التغييرات على واجهات برمجة التطبيقات التجريبية في Focus:

  • تم إيقاف FocusDirection.In وFocusDirection.Out نهائيًا واستبدالهما بـ FocusDirection.Enter وFocusDirection.Exit. (Ia4262، b/183746982)
  • تمت إضافة سمتَي تركيز جديدتَين للدخول والخروج لتحديد سلوك مخصّص لFocusManager.moveFocus(Enter) وFocusManager.moveFocus(Exit). (I5f3f9، b/183746982)
  • يمكنك الآن استخدام FocusRequester.Cancel لإلغاء نقل التركيز. يمكن استخدام FocusRequester.Cancel في أيّ من سمات التركيز التالية: للأعلى أو للأسفل أو لليسار أو لليمين أو التالي أو السابق أو البداية أو النهاية أو الدخول أو الخروج. (Ib300f)

الإصدار 1.3.0-beta01

24 آب (أغسطس) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0-beta01. يحتوي الإصدار 1.3.0-beta01 على هذه المراجعات.

إعادة صياغة عقدة المُعدِّل

تمّت إعادة صياغة الطبقة التي تتعامل مع نُسخ Modifier/Modifier.Element وتنظّم سلوكها على LayoutNodes بشكلٍ كبير. في الوقت الحالي، كان هذا الإجراء عبارة عن إعادة تنظيم لم يؤثّر في واجهة برمجة التطبيقات المتاحة للجميع لأي من المُعدِّلات العديدة في أداة "الإنشاء"، ويمكن اعتباره تغييرًا في التنفيذ فقط. ومع ذلك، هذا تغيير مهم لأسباب مختلفة. (Ie4313)

ملخّص التغييرات

توفّر واجهات برمجة التطبيقات التجريبية Modifier.Node تجريدية تسمح بالحفاظ على الحالة في مثيل سيتم الاحتفاظ به مع دورة حياة عقدة التنسيق، وسيتم تخصيصه لكل عقدة تنسيق ولكل استخدام من Modifier.Element المقابلة التي أنشأته.

بشكل عام، يوفّر هذا التجريد آلية بديلة لإنشاء عوامل تعديل ذات حالة بدون الاعتماد على آليات واجهة برمجة التطبيقات Modifier.composed.

المخاطر

هذا التغيير متوافق بشكل ثنائي تمامًا مع الإصدارات السابقة، ومن المفترض أن يكون متوافقًا مع الإصدارات القديمة من حيث السلوك المرئي قدر الإمكان. ومع ذلك، هناك بعض الأنظمة الفرعية لميزة "الإنشاء" لم تؤثر فيها عملية إعادة التنظيم هذه، ومن المحتمل أنّ السلوك قد تغيّر بطرق لم تشملها اختباراتنا ولم يتم العثور عليها وإصلاحها بعد.

يُرجى الترقية إلى هذا الإصدار بحذر. إذا كنت تعتقد أنّ هذا الإجراء قد أدّى إلى حدوث مشكلة، يُرجى إعلامنا بذلك.

واجهات برمجة التطبيقات التجريبية

تمت إضافة واجهات برمجة تطبيقات تجريبية مختلفة، وكلها مرتبطة بالمفهوم الجديد "لعقدة المُعدِّل". يتم إنشاء Modifier.Node نتيجةً

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

تغيير قد يؤدي إلى إيقاف الميزة

تم تقليل الحد الأقصى المسموح به للارتفاع في مربّعات الحوار والنوافذ المنبثقة إلى 8dp.

تم خفض الحد الأقصى المسموح به للارتفاع في مربّعات الحوار المنبثقة ومربّعات الحوار لإنشاء الرسائل من 30dp إلى 8dp. يؤثر هذا التغيير في كلّ من مربّعات الحوار المنبثقة والمخصّصة لمواد العرض وواجهة المستخدم. تم إجراء هذا التغيير للحد من خطأ في تسهيل الاستخدام على إصدارات Android الأقدم من S، ولضمان أن تكون خدمات تسهيل الاستخدام داخل هذه النوافذ قادرة على التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.

لن يتأثّر هذا التغيير إلا إذا كنت بصدد إنشاء مربّع حوار مخصّص أو تنفيذ نافذة منبثقة تم ضبط ارتفاعها على مستويات أعلى من 8dp. ننصحك بخفض ارتفاع مربّع الحوار أو النافذة المنبثقة. إذا كنت بحاجة إلى إيقاف هذا السلوك الجديد، ننصحك بإنشاء نسخة من مربّع الحوار أو النافذة المنبثقة مع ضبط الارتفاع المطلوب. لا يُنصح بذلك، لأنّ سهولة الاستخدام قد تتأثر سلبًا، وعلى المطوّر التأكّد من أنّ الجزء السفلي من مربّع الحوار أو النافذة المنبثقة يمكن التفاعل معه وقراءته من خلال خدمات تسهيل الاستخدام.

تغييرات واجهة برمجة التطبيقات

  • تم إصلاح مشكلة عدم تعديل painterResource عند إجراء تغييرات على الإعدادات (I58e73، b/228862715)
  • لم تعُد الدالة rememberTextMeasurer تقبل المَعلمات FontFamily.Resolver أو Density أو LayoutDirection. يُرجى استخدام أداة الإنشاء TextMeasurer لتقديم قيم مخصّصة لهذه المَعلمات. (Ia1da3)
  • تمت إضافة السمة DialogProperties.decorFitsSystemWindows للسماح لمربّعات الحوار باستخدام WindowInsets. (I57742، b/229378542)
  • تم نقل منشئي الخطوط إلى ملف kotlin الأصلي للحفاظ على التوافق الثنائي. لم يحدث أي تغيير مقارنةً بالإصدار الثابت الأخير. (Ieb2f3)
  • تمّت إزالة عامل تشغيل غير ضروري من عدّة تعريفات متساوية، ولن يؤدّي ذلك إلى أيّ تأثير. (I6c309)
  • FontVariation.Setting هي واجهة مغلقة للسماح بواجهات برمجة تطبيقات الالتقاط في المستقبل. (I11021، b/143703328)
  • أضِف CompositionGroup.findParameters إلى SlotTree.kt. يتيح ذلك للأدوات استرداد مَعلمات CompositionGroup بدون الحاجة إلى تحليل جدول الفتحات بالكامل. (I124fe)

الإصدار 1.3.0-alpha03

10 آب (أغسطس) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0-alpha03. يحتوي الإصدار 1.3.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • أصبحت LayoutCoordinates.findRootCoordinates() علنية الآن (I7fa37، b/204723384)
  • تمت إضافة واجهة برمجة تطبيقات تجريبية للحصول على LayoutCoordinates في PlacementScope. يتيح ذلك للمطوّرين معرفة موضع التنسيق الحالي لوضع العناصر الثانوية بالنسبة إلى موضعه. (I5482b، b/238632578)
  • تمت إضافة LayoutCoordinates.transformFrom للحصول على تحويل المصفوفة من LayoutCoordinates إلى آخر. (Ic5ab1، b/238632578)
  • تم إيقاف العنصر SemanticsModifier.id نهائيًا وتم نقل معرّف الدلالات إلى LayoutInfo.semanticsId بدلاً من ذلك. (Iac808، b/203559524)
  • تتيح "الخطوط من الموارد" الآن ضبط إعدادات الصيغ المختلفة للخطوط (الإصدار 26 من واجهة برمجة التطبيقات والإصدارات الأحدث). (I900dd، b/143703328)
  • إتاحة الخطوط المتغيّرة في DeviceFontFamilyNameFont (Ic1279، b/143703328)
  • تقبل الآن أدوات إنشاء الخطوط قائمة FontVariation.Setting لضبط الخطوط المتغيرة على أجهزة Android 10 والإصدارات الأحدث. (I11a9d، b/143703328)
  • إضافة واجهة برمجة تطبيقات FontVariation لتحديد الخطوط المتغيّرة واستخدامها (I3c40c، b/143703328)
  • أصبح مُنشئ LineHeightStyle.Alignment متاحًا للجميع (بشكل تجريبي) (I4bbbe، b/235876330)
  • أصبحت الفقرة الآن متوقّعة|فعلية ومحدّدة لأجهزة Android وأجهزة الكمبيوتر المكتبي. (Id387e، b/239962983)
  • أصبحت فقرة الواجهة الآن مُغلقة. لا تتوفّر حالة استخدام لتصنيف الفقرة كفرع، وننصحك بالتواصل معنا إذا كان هذا التغيير يؤثر فيك. (If5247، b/239962983)
  • تمت إزالة التعليق التوضيحي التجريبي من PlatformTextStyle وLineHeightStyle. (I64bef)
  • إيقاف TextInputService.show|hideSoftwareKeyboard يُرجى استخدام SoftwareKeyboardController بدلاً من ذلك في رمز التطبيق وTextInputSession في رمز إدارة IME. (I14e4c، b/183448615)
  • إضافة واجهة برمجة تطبيقات جديدة لأنواع الصور المتحركة الحالية (I26179)

إصلاح الأخطاء

  • تمت إضافة @RequiresPermission إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذن POST_NOTIFICATIONS في حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (Ie542e، b/238790278)

الإصدار 1.3.0-alpha02

27 تموز (يوليو) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0-alpha02. يحتوي الإصدار 1.3.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة سمة جديدة PointerInputChange#pressure لاسترداد الضغط. (I45a5e، b/205164819)
  • تمت إضافة rememberTextMeasurer لإنشاء نُسخ TextMeasurer بسهولة وتذكرها في الإنشاء. (I8d66e)
  • تتيح الآن Rect وRoundRect وMutableRect بنية in في Kotlin لاستدعاء الدالة contains. (Ie42b0، b/238642990)
  • أزِل الدوال غير الضرورية من KeyInjectionScope، لأنّه يمكن تنفيذها بسهولة باستخدام أجزاء أبسط من واجهة برمجة التطبيقات. تشمل الدوال التي تمّت إزالتها pressKeys وkeysDown وkeysUp. (I81d77)
  • تمّت إعادة صياغة أسماء الثوابت والمَعلمات في KeyInjectionScope لتضمين اللاحقة "Millis" حيث تكون وحدات الثوابت والمَعلمات المذكورة هي المللي ثانية. (Iabef5)
  • تمت إضافة طريقة toStringForLog() إلى EditCommand للمساعدة في تحديد مشاكل تعديل النص وحلّها. (I53354، b/228862731)
  • تمت إضافة دالة إضافة drawText إلى DrawScope لتوفير طريقة لرسم نص بأشكال متعددة على العناصر القابلة للتجميع والمُعدِّلات التي تعمل على DrawScope مثل Canvas وdrawBehind. (I16a62، b/190787898)
  • تقديم واجهة برمجة تطبيقات تجريبية جديدة تُسمى TextMeasurer تتيح احتساب تنسيق نص عشوائي ينتج عنه نتائج مطابقة لBasicText، مستقلة عن وقت تشغيل Compose (I17101)
  • أضِف mapTree إلى SlotTree.kt. يتيح ذلك للأدوات فحص SlotTree بدون إنشاء نسخة في الذاكرة أولاً كما يفعل asTree. بالنسبة إلى "أداة فحص التصميم"، يؤدي ذلك إلى تحسين الأداء بمقدار عشرة أضعاف تقريبًا. (I5e113)
  • تم تغيير ميزة "معاينة الإنشاء" لتتم تخزينها في ملفات الإخراج الثنائية، وذلك للسماح للمطوّرين بكتابة التعليقات التوضيحية MultiPreview وإعادة استخدامها من المكتبات. (I85699، b/233511976)

إصلاح الأخطاء

  • عند إضافة أحداث InputEventChange إلى خدمة تتبُّع Velocity، سنأخذ في الاعتبار الآن القيم المتزايدة بدلاً من مواضع العناصر، ما يضمن احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا كان العنصر المستهدَف يتحرك (Icea9d وb/216582726 وb/223440806 وb/227709803).
  • إصلاح الخطأ "عدم توفّر مثيل للعنصر" الذي يسببه AnnotatedString.toUpperCase عند توفّر تعليقات توضيحية (I0aca2، b/210899140)

الإصدار 1.3.0-alpha01

29 حزيران (يونيو) 2022

تم إصدار androidx.compose.ui:ui-*:1.3.0-alpha01. يحتوي الإصدار 1.3.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • LookaheadLayout جديدة تتيح إجراء عملية فحص مسبق قبل الإجراء/التنسيق الفعلي يتيح ذلك إجراء حساب مسبق للتنسيق عند تغييره، مع السماح للقياس/التنسيق بعد النظر إلى المستقبل باستخدام الحجم/الموضع المحسوبَين مسبقًا لتحريك الحجم والمواضع نحو الهدف. لا تتوفّر SubcomposeLayouts بعد، ولكن سيتم توفيرها في إصدار قادم. (I477f5)
  • أضِف مَعلمة ألفا اختيارية إلى أسلوب الفرشاة TextStyle وSpanStyle لتعديل مستوى الشفافية في Text بالكامل. (Ic2fac، b/234117635)
  • تمّ تقديم نوع التعليق التوضيحي UrlAnnotation والأساليب المرتبطة به لإتاحة ربط TalkBack في AnnotatedString. (I1c754، b/231495122)
  • نقل وظيفة الأداة إلى وقت التشغيل (I4f729)

إصلاح الأخطاء

المساهمة الخارجية

  • تمت إضافة واجهة برمجة تطبيقات جديدة WindowInfo.keyboardModifiers لمراقبة حالتها ضمن الدوالّ القابلة للتجميع أو من خلال snapshotFlow (Icdb8a).

الإصدار 1.2

الإصدار 1.2.1

10 آب (أغسطس) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.1. يحتوي الإصدار 1.2.1 على عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح خطأ nullpointer في أداة الفحص (b/237987764)
  • تم إصلاح استثناء تحويل الفئة أثناء التذكر في أداة الفحص (b/235526153)

الإصدار 1.2.0

27 تموز (يوليو) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0. يحتوي الإصدار 1.2.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 1.1.0

  • تحسينات على التنقّل في التركيز:

    • يعمل الآن الانتقال في القوائم البطيئة بالتركيز، وذلك باستخدام واجهة برمجة التطبيقات الأساسية الجديدة BeyondBoundsLayout.
    • واجهات برمجة تطبيقات جديدة لتخصيص السلوك في FocusOrder وFocusProperties
    • سلوك محسَّن باستخدام لوحة المفاتيح الخارجية أو جهاز التحكّم عن بُعد في التلفزيون
  • واجهات برمجة تطبيقات جديدة لخدمة:

    • أقسام النافذة
    • العناصر الأساسية للرسوم المتحركة المستندة إلى الإيماءات والرسوم المتحركة التي لا تنتهي والرسوم المتحركة للتخطيط
    • إمكانات GraphicsLayer، بما في ذلك RenderEffect
  • العديد من الإصلاحات للأخطاء وتحسينات الأداء

الإصدار 1.2.0-rc03

29 حزيران (يونيو) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-rc03. يحتوي الإصدار 1.2.0-rc03 على هذه المراجعات.

  • لم يتم إجراء أي تغييرات منذ الإصدار 1.2.0-rc02.

الإصدار 1.2.0-rc02

22 حزيران (يونيو) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-rc02. يحتوي الإصدار 1.2.0-rc02 على هذه المراجعات.

الإصدار 1.2.0-rc01

15 حزيران (يونيو) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-rc01. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • يتم الآن إنشاء الواجهات في مكتبات Compose باستخدام طرق الواجهات التلقائية في jdk8 (I5bcf1).
  • تمت إضافة وظائف من الدرجة الأعلى إلى KeyInjectionScope لإدخال عمليات الضغط على المفاتيح أثناء الضغط مع الاستمرار على مفاتيح أخرى أو تفعيلها. وتشمل هذه الدوال withKeysDown وwithKeysToggled وما إلى ذلك. تمت أيضًا إضافة سمات للتحقّق مما إذا كان مفتاح وصفي معيّن مفعّلاً، على سبيل المثال، isCtrlDown للتحقّق مما إذا كان أي من مفاتيح التحكّم مفعّلاً. يُرجى الرجوع إلى KeyInjectionScope للاطّلاع على مستندات حول كل دالة. (I9f6cd، b/229831515)
  • تمّ تقديم OverscrollEffect تجريبي للسماح بتأثيرات مخصّصة للتمرير السريع، إلى جانب عمليات تحميل Modifier.scrollable التي تقبل ذلك.
  • تم نقل الإصدار التجريبي من LocalOverScrollConfiguration من حزمة foundation.gesture إلى حزمة الأساس وتمت إعادة تسميته إلى LocalOverscrollConfiguration (If19fb، b/204650733).
  • إعادة تسمية runComposeUiTestWithoutActivity {} إلى runEmptyComposeUiTest {}، ما يجعلها متوافقة مع createEmptyComposeRule() (I6fed7)

الإصدار 1.2.0-beta03

1 حزيران (يونيو) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-beta03. يحتوي الإصدار 1.2.0-beta03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة pressKeyTimes وisCapsLockOn وأصدقاء إلى KeyInjectionScope. بالإضافة إلى ذلك، تتيح واجهة برمجة التطبيقات الآن أنماط الحقن المجمّعة باستخدام الماوس ولوحة المفاتيح، مثل النقر على زر الماوس مع الضغط على مفتاح ميتا. (I4c8da، b/229831515)
  • تمت إضافة ميزة تجريبية لحقن الأحداث الرئيسية. استخدِم performKeyInput لإرسال الأحداث الرئيسية، أو أرسِلها من خلال سمة key في MultiModalInjectionScope أثناء إيماءة إدخال متعددة الأوضاع باستخدام performMultiModalInput. يُرجى الاطّلاع على KeyInjectionScope للاطّلاع على مستندات واجهة برمجة التطبيقات. (Ic5000، b/229831515)
  • أضِف GoogleFont.Provider.AllFontsListUri جديدًا لاسترداد مصدر الإنترنت الأساسي لـ "خطوط Google" المتوافقة مع Android.
  • تحسين رسائل الخطأ التي يتم إعادة رميها عند تعذُّر تحميل GoogleFonts في وضع "الإنشاء" (I0416c)

إصلاح الأخطاء

  • عند إضافة أحداث InputEventChange إلى أداة تتبُّع السرعة، سنأخذ الآن في الاعتبار الاختلافات بدلاً من المواضع، ما سيضمن احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا كان العنصر المستهدَف يتحرك (I51ec3 وb/216582726 وb/223440806 وb/227709803).
  • سيتم الآن تطبيق الإعداد Show Layout Bounds على العناصر القابلة للتجميع فورًا بعد تفعيله من مربّع الإعدادات السريعة، بدون الحاجة إلى مغادرة النشاط وإعادة الدخول إليه. (I843d5، b/225937688)
  • لا يؤدي البحث عن سلسلة تسهيل الاستخدام إلى تحميل الخط. في السابق، كان يتم محاولة تحميل خطوط StyleSpans، ما يؤدي إلى تعطُّل التطبيق في حال تم استبدال FontFamily.Resolver. (I4609d)
  • لن يؤدي الضغط على مفتاح الحذف للأمام عندما يكون المؤشر في نهاية حقل نصي إلى حدوث عطل.
  • تتطلّب كلّ من DeleteSurroundingTextCommand وDeleteSurroundingTextInCodePointsCommand الآن أن تكون وسيطات عنصر الإنشاء غير سالبة. (Ica8e6، b/199919707)

الإصدار 1.2.0-beta02

18 أيار (مايو) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-beta02. يحتوي الإصدار 1.2.0-beta02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إعادة استخدام الوظيفة في أنواع المعاينة الأخرى (I19f39)

إصلاح الأخطاء

  • تمت إعادة تسمية ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer إلى DisposeOnDetachedFromWindowOrReleasedFromPool للإشارة بشكل أفضل إلى حالات حدوث عمليات التخلص، بدلاً من حالات عدم حدوثها. (If15ca)

الإصدار 1.2.0-beta01

11 أيار (مايو) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-beta01. يحتوي الإصدار 1.2.0-beta01 على هذه المراجعات.

الميزات الجديدة

  • هذا هو الإصدار التجريبي الأول من الإصدار 1.2.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة BeyondBoundsInterval تجريبي يمكن استخدامه من خلال عمليات التنفيذ المخصّصة LazyList عند ترتيب العناصر خارج الحدود المرئية (Ifabfb، b/184670295)
  • أصبحت الإصدارات المزوّدة بمفتاح من Modifier.composed واجهة برمجة تطبيقات ثابتة (Ie65e4 وb/229988420).
  • تم تبسيط واجهة برمجة التطبيقات rememberNestedScrollConnection لاستخدام متغيرات المحلية للتركيب من أجل الحصول على معلومات العرض الحالية (I67ca7).
  • يمكن الآن استخدام التعليق التوضيحي @ComposableTarget والتعليقات التوضيحية التي تم وضع علامة @ComposableTargetMarker عليها في نطاق الملف باستخدام البادئة @file. سيؤدي استخدام تعليق توضيحي موجَّه في نطاق الملف إلى افتراض المُجمِّع أنّه من المُفترَض أن تستهدف جميع الدوالّ القابلة للتجميع في الملف المُطبِّق المرتبط. على سبيل المثال، يشير استخدام @file:UiComposable إلى أنّ جميع دوال @Composable تستهدف أداة تطبيق واجهة مستخدم Compose. يجب أن تقدّم الدالة التي تحتاج إلى استهداف مستخدم آخر توضيحًا لعلامة الاستهداف للمستخدم المطلوب. (I40804)
  • تمّ تقديم واجهة برمجة تطبيقات تجريبية جديدة وغير مرتبطة بالمنصة لاختبار التطبيقات: interface ComposeUiTest وfun runComposeUiTest(block: ComposeUiTest.() -> Unit)، يمكن استخدامهما لإجراء اختبارات واجهة مستخدم Compose بدون الحاجة إلى TestRule. لإجراء اختبار بدون ComposeTestRule، مرِّر الاختبار كتعبير لاmda إلى runComposeUiTest، واستخدِم methods والعناصر في نطاق المستلِم ComposeUiTest، وهي العناصر نفسها المُستخدَمة في ComposeContentTestRule.

    تتم إضافة interface AndroidComposeUiTest وfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) المخصّصَين لنظام التشغيل Android لتوفير إمكانية الوصول إلى النشاط الأساسي، على غرار AndroidComposeTestRule. وللتحكّم بشكل أكبر، يمكنك إنشاء مثيل لمحاولة class AndroidComposeUiTestEnvironment بنفسك.

    عملية التنفيذ على الكمبيوتر المكتبي هي class DesktopComposeUiTest، ولكن لا يتم حاليًا استخدام الدوالّ الخاصة بتشغيل الكمبيوتر المكتبي.

    يمكن نقل اختبار من ComposeTestRule إلى ComposeUiTest على النحو التالي (مثال على Android). من:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    إلى:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • في الوقت الحالي، لا تمتد ComposeContentTestRule وComposeTestRule من ComposeUiTest، ما يعني أنّه لا يمكن استدعاء وظائف الإضافات في ComposeUiTest بعد في واجهة TestRule. عندما تصبح ComposeUiTest واجهة برمجة تطبيقات ثابتة، سيتم تغيير ComposeContentTestRule وComposeTestRule لتصبحا متاحتَين من ComposeUiTest. (Ib4e90)

  • تمت إعادة تسمية LineHeightBehavior ليصبح LineHeightStyle

  • تمت إعادة تسمية LineVerticalAlignment ليصبح LineHeightStyle.Alignment

  • تمت إعادة تسمية LineHeightTrim إلى LineHeightStyle.Trim

  • تمت إزالة قيم المُنشئ التلقائية من LineHeightStyle (I582bf وb/181155707).

  • تمت إضافة Brush إلى TextStyle وSpanStyle لتوفير طريقة لرسم نص باستخدام ألوان متدرجة. (I53869، b/187839528)

  • تم تغيير سمتَي trimFirstLineTop وtrimLastLineBottom في LineHeightBehavior إلى سمة مصنّفة واحدة: LineHeightTrim. تحتوي السمة LineHeightTrim على قيم 4 حالات محدّدة بعنصرَين منطقيَّين: FirstLineTop وLastLineBottom وكلاهما وبدون (Ifc6a5 وb/181155707)

  • تمت إضافة LineHeightBehavior إلى TextStyle وParagraphStyle. تتحكّم السمة LineHeightBehavior في ما إذا كان سيتم تطبيق ارتفاع السطر على أعلى السطر الأول وأسفل السطر الأخير. ويحدِّد أيضًا محاذاة السطر في المساحة التي يوفّرها TextStyle(lineHeight).

    على سبيل المثال، من الممكن الحصول على سلوك مشابه لما تحدّده CSS من خلال LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • لا تعمل إعدادات trimFirstLineTop وtrimLastLineBottom بشكل صحيح إلا عندما تكون قيمة includeFontPadding خطأ. (I97332، b/181155707)

  • تم تغيير الدالتَين PlatformParagraphStyle.lerp وPlatformSpanStyle.lerp لتكونا دوالّ على مستوى أعلى (I9a268).

إصلاح الأخطاء

  • تشير مستندات PointerInputChange::copy الآن بشكل صحيح إلى أنّها نسخة سطحية. (I182f5)
  • السماح بعرض علامة الحذف الإيجازي عندما يكون الارتفاع محدودًا ولا يناسب جميع أسطر النص (Ie528c، b/168720622)
  • تم تفعيل الإعداد التلقائي includeFontPadding. من الممكن إيقاف includeFontPadding باستخدام سمة TextStyle.platformTextStyle. سنغيّر السلوك التلقائي في المستقبل القريب، ولكن إلى ذلك الحين، سيتيح لنا هذا الإجراء دمج تحسينات على ارتفاع السطر بشكل أفضل (aosp/2058653) وحلّ مشاكل TextField الاقتصاص. (I01423، b/171394808)

المساهمة الخارجية

  • تم الآن عكس MouseInjectionScope.scroll(delta = someDelta) على Android في حال الانتقال عموديًا (إذا كانت someDelta موجبة، سيتم الانتقال للأسفل) (Ifb697، b/224992993)

الإصدار 1.2.0-alpha08

20 نيسان (أبريل) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha08. يحتوي الإصدار 1.2.0-alpha08 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم وضع علامة على دوال pluralStringResource باعتبارها تجريبية للسماح بالتطور لدعم النشر على مستوى العالم بشكل أفضل في المستقبل. (If24e4)
  • تقبل الآن كلّ من Paragraph وMultiParagraph مَعلمة Constraints. لا يؤدي تمرير القيمة Constraints.maxHeight إلى إجراء أيّ عملية في الوقت الحالي، ولكنّه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل اقتطاع النص استنادًا إلى الارتفاع. (I6afee، b/168720622)
  • يقبل SubcomposeSlotReusePolicy.getSlotsToRetain() الآن فئة مخصّصة تشبه MutableSet لا تسمح بإضافة عناصر جديدة إليها. (Icd314)
  • أصبح رمز المؤشر الآن واجهة @Stable (I9dafe).
  • تم إيقاف الاستهلاك الجزئي (الانخفاض أو الموضع) نهائيًا في PointerInputChange. يمكنك استخدام consume() لاستخدام التغيير بالكامل. يمكنك استخدام isConsumed لتحديد ما إذا كان شخص آخر قد استخدَم التغيير في السابق أم لا.
  • PointerInputChange::copy() يُنشئ الآن دائمًا نسخة سطحية. ويعني ذلك أنّه سيتم استخدام نُسخ من PointerInputChange بعد استخدام إحدى النُسخ. إذا أردت إنشاء PointerInputChange غير مرتبط، استخدِم طريقة الإنشاء بدلاً من ذلك. (Ie6be4، b/225669674)
  • فعِّل إمكانية التشغيل التفاعلي لميزة "التمرير المتداخل" بين "الإنشاء" و"العرض" في الاتجاه "الإنشاء" > "العرض". وهذا يعني أنّ العنصر الرئيسي للإنشاء سيتمكّن من تلقّي قيم تغيُّر التنقّل المتداخل من عرض التنقّل المتداخل. (If7949، b/174348612)
  • SemanticsProperty testTagsAsResourceId جديدة، يمكن استخدامها لجعل ميزة "الإنشاء" متوافقة مع اختبارات UIAutomator المصمّمة لنظام View (I39c20)
  • عرض جميع الإعدادات المتاحة لخطوط الأنظمة على Android عند استخدام FontFamily.SansSerif سيؤدي ذلك إلى استخدام أسماء الخطوط الاحتياطية، مثل sans-serif-medium، داخليًا في الإصدارات 21 إلى 28 من واجهة برمجة التطبيقات. هذا تغيير في السلوك، لأنّه في السابق كان يتم استخدام الوزنَين 400 و700 فقط في الإصدارات 21 إلى 28 من واجهة برمجة التطبيقات. (I380fe، b/156048036، b/226441992)
  • أعاد مدربو الفقرات والفقرات المتعددة ترتيب الوسائط الثابتة قبل الوسائط الاختيارية. (الإضافة)
  • يأخذ AndroidFont الآن typefaceLoader كمَعلمة دالة إنشائية. (I2c971)

الإصدار 1.2.0-alpha07

6 نيسان (أبريل) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha07. يحتوي الإصدار 1.2.0-alpha07 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة الدالة الجديدة Snapshot.withoutReadObservation { ... }. ويسمح هذا الإجراء للمستخدمين بتشغيل دالة lambda التي تم تمريرها بدون الاشتراك في تغييرات قيم الحالة التي يتم قراءتها أثناء هذا الإجراء. قد يكون ذلك مفيدًا في حالات الاستخدام عندما تريد الاستفادة من عمليات القراءة/الكتابة الآمنة لسلسلة المهام المستندة إلى اللقطة، ولكنك تريد أن تتمكّن من قراءة القيمة بدون التسبب في إعادة تركيب أو إعادة قياس غير ضرورية. (I9f365، b/214054486)
  • تسمح سمة إضافة consumeWindowInsets في ComposeView للمطوّرين بإيقاف استخدام Android WindowInsets. ويسمح ذلك لكل ComposeViews منفصل في التسلسل الهرمي بتطبيق WindowInsets بدون التأثير في بعضها. (I0ef08، b/220943142)
  • تمت إضافة KeyboardType.Decimal كبديل لـ Keyboard.Number لتضمين الفاصل العشري في IME على وجه التحديد. (Iec4c8، b/209835363)
  • أصبحت واجهتا برمجة التطبيقات PointerEventType.Scroll وPointerEvent.scrollDelta ثابتتَين الآن (I574c5 وb/225669674).
  • فعِّل إمكانية التشغيل التفاعلي لميزة "الانتقال المتداخل" بين View وCompose لفئات View التي تتعاون مع بعضها. وهذا يعني أنّه يمكن الآن لميزة "الإنشاء" إرسال بيانات اختلافات الانتقال إلى أعلى أو أسفل الصفحة إلى عنصر عرض رئيسي (متعاون). (I5d1ac، b/174348612)
  • تم تعديل FontFamily.Resolver لدمج إعداد تسهيل الاستخدام للنص الغامق على مستوى النظام (I6c1e7)
  • تم إيقاف Font(AssetManager, String, ...) نهائيًا واستبداله بـ Font(String, AssetManager, ...). هذه واجهة برمجة تطبيقات تجريبية. (I1c7a4)
  • أضِف وصف خط جديد Font(DeviceFontFamilyName) للبحث اختياريًا عن الخطوط المثبَّتة على النظام أثناء سلاسل الخطوط الاحتياطية. (I30468، b/219754572)
  • تمت إضافة إعدادات توافق مؤقتة لـ includeFontPadding في TextStyle/ParagraphStyle. يمكن تغيير includeFontPadding من خلال TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). هذا خيار إعداد مؤقت لتفعيل نقل البيانات وسيتمّت إزالته. (If47be، b/171394808)
  • يمكنك إضافة إضافة GoogleFont.Provider.isAvailableOnDevice للحصول على مساعدة في تصحيح الأخطاء. (I64e31)
  • أضِف GoogleFont.Provider لإنشاء عنصر @ArrayRes (Ic5ee1، b/225984280)
  • تم تغيير اسم Compose GoogleFont إلى Font(GoogleFont)، وتظل واجهة برمجة التطبيقات مستقرة في حال عدم إجراء هذا التغيير. (I125f2)

إصلاح الأخطاء

  • تمت إضافة فحص أخطاء إلى material/Scaffold لضمان استخدام الحشو الداخلي (Ifb111).

الإصدار 1.2.0-alpha06

23 آذار (مارس) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha06. يحتوي الإصدار 1.2.0-alpha06 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة إجراء الدلالات RequestFocus لطلب التركيز على الهدف الذي يمكن التركيز عليه. (I17b71)
  • تم تعديل تحليل الرسومات المتجهّة للسماح بالمرآة التلقائية لقلب محتوى VectorPainter إذا كان اتجاه التنسيق الحالي هو RTL. (I79cd9، b/185760237)
  • تم تعديل ألوان الظلال/الإضاءة المحيطة لتكون مَعلمات متأخرة من Modifier.graphicsLayer لتوافق واجهة برمجة التطبيقات (I3f864 وb/160665122)

  • تمت إضافة عمليات التنفيذ التلقائية للظل/اللون المحيط في GraphicsLayerScope لضمان عدم حدوث تغييرات في واجهة برمجة التطبيقات تؤدي إلى إيقاف التطبيق

  • تمت إضافة وقت الحدث إلى أحداث RSB (Ief8ae)

  • تم دمج FocusOrder الآن في FocusProperties وأصبح لدى focusProperties() الآن جميع إمكانات focusOrder(). تم إيقاف FocusOrder وfocusOrder() نهائيًا. يجب استبدال العنصر focusOrder() الذي يقبل العنصر focusRequester بعنصر تعديل focusRequester() مع العنصر focusProperties(). يتيح ذلك للمُعدِّلات فصل المهام بشكل أفضل. (I601b7)

  • ستؤدي ترقية كلّ من RecyclerView وCompose الآن إلى تحسين أداء الانتقال للأعلى أو للأسفل في RecyclerViews التي تتضمّن عروض "الإنشاء" كعناصر فرعية.

  • إضافة ViewCompositionStrategy.Default كطريقة لاسترداد الاستراتيجية التلقائية المضمّنة

  • أضِف ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer، وهي الاستراتيجية التلقائية الجديدة التي تتعامل بشكل صحيح مع حاويات التجميع، مثل RecyclerView. (If7282)

  • تمّت إضافة إمكانية إضافة تعليقات توضيحية إلى فئات التعليقات التوضيحية باستخدام @Preview كخطوة أولى لإضافة ميزة "المعاينة المتعدّدة". يمكن استخدام هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى طرق Composable أو فئات التعليقات التوضيحية الأخرى، والتي يمكن اعتبارها بعد ذلك مُعلَق عليها بشكل غير مباشر باستخدام العلامة @Preview المحدّدة. (I12eff)

  • تمّت إضافة الأجهزة المرجعية إلى قائمة الأجهزة في حساب ‎ @Preview‏ (I071c9).

إصلاح الأخطاء

  • تم تعديل واجهات برمجة تطبيقات الرسومات المتجهّة لاستخدام التعليق التوضيحي القابل للتركيب المناسب @VectorComposable بدلاً من @UiComposable (I942bc).
  • إزالة المحتوى المضمّن من AnnotatedString.Builder.withStyle (If84d5)

المساهمة الخارجية

  • compose-ui: إضافة السمتَين ambientShadowColor وspotShadowColor إلى GraphicsLayerScope (I1ba1a وb/160665122)
  • أصبحت الموارد المتعددة متوافقة الآن من خلال دوال pluralStringResource. (Ib2f23، b/191375123)

الإصدار 1.2.0-alpha05

9 آذار (مارس) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha05. يحتوي الإصدار 1.2.0-alpha05 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • يقبل TextToolbar الآن وسيطات LAMBDA بدلاً من ActionCallback. (Ib2eb9، b/197950089)
  • تم تعديل nullability في core وappcompat لمطابقة الإصدار DP2 من Tiramisu (I0cbb7)
  • تعرض الواجهة المقاسة الآن سمة parentData (I3313f).
  • أصبحت Modifier.onPlaced وواجهة OnPlacedModifier مستقرة الآن. (Ib5482)
  • رائع! تتيح ميزة إنشاء الصور المتحركة الآن استخدام إعداد "طول مدة الرسوم المتحركة" من "خيارات المطوّر". (I5a4fc، b/161675988)
  • تمت إضافة مُعدِّل BeyondBoundsLayout محلي (If8b51، b/184670295)
  • النص: تم إيقاف includeFontPadding الآن تلقائيًا. يتم التعامل مع مشاكل الاقتصاص الناتجة عن includeFontPadding=false ولا يُفترض أن يحدث اقتصاص للنصوص البرمجية الطويلة. (I31c84، b/171394808)

إصلاح الأخطاء

  • سيُرسِل ComposeContentTestRule.setContent الآن IllegalStateException إذا حاولت ضبط المحتوى عندما يكون هناك محتوى. (I888a5، b/199631334)
  • إصلاح مشكلة تعطُّل التطبيق بسبب محتوى الحافظة أثناء القراءة من الحافظة على Android (I06020، b/197769306)
  • تحسين عيّنات الانتقال للأعلى أو للأسفل في إعلانات شبكة البحث المتجاوبة (I6a596)

المساهمة الخارجية

  • تم تعديله لاستخدام Kotlinx coroutines 1.6.0 (I3366d)

الإصدار 1.2.0-alpha04

23 شباط (فبراير) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha04. يحتوي الإصدار 1.2.0-alpha04 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة ComposableTarget وComposableTargetMarker و ComposableOpenTarget التي تتيح إعداد تقارير وقت الترجمة عند استدعاء دالة مركّبة تستهدف عامل تطبيق لم يتم تصميمها لاستخدامه.

    في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لـ compiler compose، لذا يجب استخدام هذه التعليقات التوضيحية مباشرةً بشكلٍ نادر . وتشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة أو وظائف قابلة للإنشاء مجردة (مثل methods الواردة في الواجهة) أو حقول أو متغيّرات عالمية هي دالات لامبادية قابلة للإنشاء (يتم استنتاج المتغيّرات المحلية والمَعلمات)، أو عند استخدام ComposeNode أو وظائف قابلة للإنشاء ذات صلة.

    بالنسبة إلى أدوات التطبيق المخصّصة، يجب أن تضيف الدوالّ القابلة للتجميع التي تستدعي دالة ComposeNode أو ReusableComposeNode تعليقًا توضيحيًا ComposableTarget للدالة وأي أنواع مَعلمات LAMBDA قابلة للتجميع. ومع ذلك، ننصح بإنشاء تعليق توضيحي تمّت الإشارة إليه باستخدام ComposableTargetMarker ثمّ استخدام التعليق التوضيحي الذي تمّت الإشارة إليه بدلاً منComposableTarget مباشرةً. إنّ التعليق التوضيحي القابل للتجميع الذي يحمل العلامة ComposableTargetMarker يعادل ComposbleTarget مع الاسم المؤهَّل بالكامل لفئة السمة كمَعلمة المُطبِّق. للحصول على مثال لاستخدام ComposableTargetMarker، يُرجى الاطّلاع على anroidx.compose.ui.UiComposable. (I38f11)

  • يستخدم Font(resId, ...) الآن loadingStrategy في واجهة برمجة التطبيقات الثابتة. (Ief3d2)

  • أصبحت FontLoadingStrategy الآن واجهة برمجة تطبيقات ثابتة. (I1ee35، b/174162090)

  • إتاحة تحميل الخطوط بشكل غير متزامن في Text (I77057، b/214587005)

  • أضِف واجهة برمجة تطبيقات الربط لتحويل Font.ResourceLoader المخصّصة إلى FontFamily.Resolver. (Ia0060)

إصلاح الأخطاء

  • يتم تمرير FontFamily.Resolver المقدَّمة إلى التركيبات الفرعية مثل النافذة المنبثقة.
  • يتم تمرير Font.ResourceLoader المقدَّمة إلى التركيبات الفرعية مثل النافذة المنبثقة. (I48fa5)

الإصدار 1.2.0-alpha03

9 شباط (فبراير) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha03. يحتوي الإصدار 1.2.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف طرق notifyFocusedRect في TextInputSession TextInputService نهائيًا ولن يتم استدعاؤها. استخدِم BringIntoViewRequester بدلاً من ذلك. (Ia4302 وb/192043120 وb/216842427 وb/178211874)
  • تمّ تقديم destroyDisplayListData طريقة في فئة النموذج RenderNode (I1e659، b/216660268)
  • تمت إضافة واجهة برمجة تطبيقات جديدة تتيح قياس العناصر الفرعية لSubcomposeLayout التي تم إنشاؤها مسبقًا. (I857ea)
  • تمت إضافة movableContentOf التي تحوّل دالة lambda قابلة للتركيب إلى دالة lambda تنقل حالتها والعقد المقابلة إلى أيّ موقع جديد يتمّ استدعاؤها فيه. عندما تغادر المكالمة السابقة التركيبة، يتم الاحتفاظ بالحالة مؤقتًا، وإذا دخلت مكالمة جديدة إلى دالة lambda في التركيبة، يتم نقل الحالة والعناصر المرتبطة بها إلى موقع المكالمة الجديدة. في حال عدم إضافة مكالمة جديدة، تتم إزالة الحالة نهائيًا ويتم إعلام المراقبين.

    إذا تمّ استدعاء دالة movableContentOf lambda عدّة مرّات في التركيب نفسه، يتمّ إنشاء حالة وعقد جديدة لكلّ استدعاء، وبينما تغادر المكالمات التركيب وتدخل مكالمات جديدة، يتمّ نقل الحالة من أوّل المكالمات التي تغادر إلى المكالمات التي تدخل بالترتيب الذي يتمّ فيه استدعاؤها. تتم إزالة كل البيانات التي لم يتمّ تأكيدها من خلال مكالمات جديدة بشكل نهائي. (Ib4850)

  • أصبحت "FontFamilyResolver" متاحة الآن من خلال LocalFontFamilyResolver.current

  • تمت إضافة createFontFamilyResolver(context) وcreateFontFamilyResolver(context, coroutineScope) لإنشاء معالجين جديدين لFontFamily خارج نطاق استخدام ميزة "الإنشاء".

  • يأخذ كلّ من Paragraph وMultiParagraph الآن FontFamily.Resolver

  • يحتوي TextLayoutResult.layoutInput.fontFamilyResolver الآن على برنامج التحديد المستخدَم لهذا التنسيق، والذي تم إيقافه نهائيًا TextLayoutResult.layoutInput.resourceLoader لأنّه لم يعُد مُستخدَمًا. (Id5a45، b/174162090)

  • إتاحة تحميل الخطوط غير المتزامن والاختياري، مع سلوك البديل يستخدم Text وTextField هذا المسار، ويتم عرضه من خلال FontFamilyResolver

  • إتاحة التحميل المُسبَق للخطوط من خلال FontFamilyResolver.preload

  • يسمح العنصر FontFamilyResolver.setAsyncLoadContext بضبط سياق دالة التشغيل المتعدّد المتزامن الشاملة المستخدَمة لتحميل الخطوط غير المتزامنة. (I87fe8، b/174162090)

  • تمت إضافة AndroidFont، وهي واجهة برمجة تطبيقات جديدة من المستوى الأدنى لتوفير أنواع جديدة من أوصاف موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خلفية خاصة بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز بشكل اختياري، أو تحميل خط من مورد لا يوفّره مصانع الخطوط الحالية.

  • تم توسيع واجهة برمجة التطبيقات Font.ResourceLoaded لإتاحة تحميل Font.ResourceLoaded بشكل اختياري وبدون تسلسل. لا يُنصح لمطوّري التطبيقات باستخدام واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، اطّلِع على AndroidFont.

  • تسمح دالة إضافة Font.AndroidResourceLoader بإنشاء Font.ResourceLoader خارج التركيب.

  • تمت إضافة المَعلمة loadingStrategy إلى الخطوط المستندة إلى الموارد، للسماح بالتحميل غير المتزامن عندما يشير خط المورد إلى ملف XML للخطوط القابلة للتنزيل. (Ie5aea، b/174162090)

  • تم إيقاف طريقة وضع تصميم Typeface(FontFamily) نهائيًا. كان يتم استخدام هذه الميزة في السابق لتحميل الخطوط مسبقًا، وقد يستغرق ذلك ما يصل إلى 10 ثوانٍ في حال استخدام خطوط قابلة للتنزيل. في حال استخدام الخطوط القابلة للتنزيل، قد يتم حظر هذا الطلب لمدة 10 ثواني. استخدِم FontFamilyResolver.preload بدلاً من ذلك.

  • تم إيقاف fontResource(FontFamily): Typeface نهائيًا. كان يتم استخدام هذه الميزة في السابق لتحميل الخطوط مسبقًا، وقد يستغرق ذلك ما يصل إلى 10 ثوانٍ في حال استخدام خطوط قابلة للتنزيل. استخدِم بدلاً من ذلك FontFamilyResolver.preload (If8e7c، b/174162090).

  • تم إيقاف طريقة وضع تصميم SubcomposeLayoutState التي تقبل maxSlotsToRetainForReuse نهائيًا. بدلاً من ذلك، هناك مُنشئ جديد يقبل SubcomposeSlotReusePolicy، وهي واجهة جديدة تتيح التحكّم بشكل أدق في الفتحات التي يجب الاحتفاظ بها لإعادة استخدامها في المستقبل. (I52c4d)

  • تعرِض دالة HSV وHSL في Color كواجهة برمجة تطبيقات غير تجريبية. أصبحت مساحة ألوان Oklab متاحة الآن للجميع. (I08fb6، b/180731008)

  • AndroidComposeTestRule.AndroidComposeStatement، التي لم تكن مُعدّة للظهور في واجهة برمجة التطبيقات العامة ولم تكن تُقدّم أي فائدة على أي حال (Ibc46b)

  • إعادة تسمية فئة kt التي تم إنشاؤها داخليًا (Ia0b9e، b/174162090)

  • تمّت إزالة FontLoadingStrategy.values (I42a9d، b/174162090)

  • تم تغيير اسم أداة تحميل الخطوط الشاملة إلى FontFamilyResolver. (I4f773، b/174162090)

  • استخدام نظام تحميل الخطوط الجديد للكمبيوتر المكتبي (I9ce5c، b/174162090)

  • FontFamily.Resolver.resolve يعرض State<Any> (I4406c، b/174162090)

إصلاح الأخطاء

  • سيتم الآن إبقاء حقول النص فوق لوحة المفاتيح عند تركيز المحتوى عليها وعرض لوحة المفاتيح، وذلك عندما يكون وضع الإدخال المبرمَج هو ADJUST_PAN. (I8eaeb، b/190539358، b/192043120)
  • يستخدم الكمبيوتر المكتبي تركيبة محلية في FontFamily.Resolver
  • تم إيقاف إصدار FontLoader من تطبيق "مساعد Google" لأجهزة الكمبيوتر المكتبي نهائيًا
  • مصنع createFontFamilyResolver جديد على الكمبيوتر المكتبي (I6bbbb، b/174162090)
  • لم يعُد نوع إدخال لوحة المفاتيح المتوفّرة على الشاشة يضيء ويختفي عند تغيير التركيز بين حقول النص. (I1bf50، b/187746439)

الإصدار 1.2.0-alpha02

26 كانون الثاني (يناير) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha02. يحتوي الإصدار 1.2.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة Modifier.onRotaryScrollEvent() وModifier.onPreRotaryScrollEvent() لأجهزة Wear التي تتضمّن زرًا جانبيًا قابلاً للدوران (I18bf5 وb/210748686)
  • إضافة إضافة View.createLifecycleAwareRecomposer تجريبية (I0cde6)

المساهمة الخارجية

  • تم الآن عكس PointerEvent.scrollDelta.y على Android (يعرض الآن القيمة 1 بدلاً من -1 إذا تم إمالة عجلة الماوس إلى اليمين) (Ia9811)

الإصدار 1.2.0-alpha01

12 كانون الثاني (يناير) 2022

تم إصدار androidx.compose.ui:ui-*:1.2.0-alpha01. يحتوي الإصدار 1.2.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف FontFamily.canLoadSynchronously نهائيًا. ليس لهذه السمة أيّ معنى دلالي. (Ica5ef)
  • تمت إضافة حقل الهوية إلى CompositionData لإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e)
  • تمت إضافة أرقام تعريف أجهزة Wear OS إلى قائمة الأجهزة المتوفّرة للتجربة (I93232)

تعديلات على التبعيات

  • يعتمد الآن على Kotlin 1.6.10.

الإصدار 1.1

الإصدار 1.1.1

23 شباط (فبراير) 2022

تم إصدار androidx.compose.ui:ui-*:1.1.1. يحتوي الإصدار 1.1.1 على هذه المراجعات.

إصلاح الأخطاء

  • حلّ المشكلة NullPointerException في الإصدار androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059، b/206677462)
  • إصلاح مشكلة تعطُّل التطبيق بسبب محتوى الحافظة أثناء القراءة من الحافظة على Android (I06020، b/197769306)
  • تم إصلاح اتجاه النص من اليمين إلى اليسار في LazyVerticalGrid (aosp/1931080 وb/207510535)

الإصدار 1.1.0

9 شباط (فبراير) 2022

تم إصدار androidx.compose.ui:ui-*:1.1.0. يحتوي الإصدار 1.1.0 على عمليات الربط هذه.

التغييرات المهمة منذ الإصدار 1.0.0

  • إتاحة تأثير التمرير السريع بشكل ثابت في Android 12
  • تحسينات على حجم مساحات اللمس
    • يُرجى العلم أنّه بالنسبة إلى Compose 1.0، ستوسّع مكونات Material مساحة التنسيق لاستيفاء إرشادات تسهيل الاستخدام في Material لحجم مساحة اللمس. على سبيل المثال، سيتم توسيع ناحية اللمس المستهدَفة للزرّ إلى الحدّ الأدنى من الحجم 48x48dp، حتى إذا ضبطت حجم الزرّ على قيمة أصغر. يؤدي ذلك إلى مواءمة Compose Material مع السلوك نفسه لمكونات Material Design، ما يضمن سلوكًا متسقًا في حال خلط Views وCompose. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات تسهيل الوصول إلى مساحات اللمس عند إنشاء واجهة المستخدم باستخدام مكونات Compose Material.
  • إتاحة شريط التنقّل بشكل ثابت
  • ترقية عدد من واجهات برمجة التطبيقات التجريبية إلى إصدارات مستقرة
  • التوافق مع الإصدارات الأحدث من Kotlin

الإصدار 1.1.0-rc03

26 كانون الثاني (يناير) 2022

تم إصدار androidx.compose.ui:ui-*:1.1.0-rc03. يحتوي الإصدار 1.1.0-rc03 على هذه المراجعات.

إصلاح الأخطاء

  • تم تعديله ليتوافق مع الإصدار 1.1.0-rc03 من Compose Material

الإصدار 1.1.0-rc01

15 كانون الأول (ديسمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-rc01. يحتوي الإصدار 1.1.0-rc01 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح خطأ كان يتسبب في عدم توفّر إجراءات الانتقال للأعلى أو للأسفل في ميزة تسهيل الاستخدام (I7cbfb).
  • سيعمل SemanticsNodeInteraction.captureToImage() الآن أيضًا إذا كان HardwareRenderer.isDrawingEnabled() هو false، من خلال تفعيله طوال مدة المكالمة (Idf3d0).

الإصدار 1.1.0-beta04

1 كانون الأول (ديسمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-beta04. يحتوي الإصدار 1.1.0-beta04 على هذه المراجعات.

الميزات الجديدة

  • تم تعديلها لتصبح متوافقة مع Kotlin 1.6.0

تغييرات واجهة برمجة التطبيقات

  • تمّت إزالة الأخطاء المتعلّقة بإمكانية القيمة الخالية في androidx.core.view (I7078a، b/204917439)
  • تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح للمستخدمين استخدام PointerInputchange ككل أو التحقّق مما إذا تم استخدامه أم لا. (I2e59d)
  • إضافة إمكانية استخدام أحداث عجلة التمرير في الماوس في طبقة واجهة المستخدم (Ia14eb، b/198214718)
  • أضِف وظائف متعدّدة Modifier.composed تجريبية تقبل المفاتيح للمقارنة من أجل التساوي وتكون مؤهّلة لتخطّي عمليات التحسين. (Ice799، b/205851704)
  • يمتدّ ComposeNotIdleException الآن من Exception بدلاً من Throwable مباشرةً. يشير ذلك إلى أنّ عبارات الالتقاط التي كانت تلتقط Exception قد تلتقط الآن ComposeNotIdleException، وهي لم تكن تفعل ذلك في السابق. (I9c217)

إصلاح الأخطاء

  • إصلاح عدم تحريك عناصر التحكم في النص عند تغيير مستوى ظهور واجهة معالجة اللغة (I25f2e)

الإصدار 1.1.0-beta03

17 تشرين الثاني (نوفمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-beta03. يحتوي الإصدار 1.1.0-beta03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة مُعدِّل جديد Modifier.onPlaced للسماح برصد تغيير موضع العنصر. وبالتالي، يمكن إجراء تغييرات إضافية على إزاحة المُعدِّل الفرعي استنادًا إلى تغيير موضع الإعلان المرصود. (I558fd)
  • تمت إزالة InjectionScope.flush() و InjectionScope.dispose(). تتم الآن إزالة جميع الأحداث والتخلص من النطاق في نهاية طريقة perform*Input() التي تمّ استدعاؤها، تمامًا كما كان الحال في السابق. (I2bed8)
  • تمت إزالة MultiModalInjectionScope.Touch و MultiModalInjectionScope.Mouse. لإدراج أحداث اللمس وأحداث الماوس للإيماءات المتعددة الوسائط، يمكنك الآن استخدام MultiModalInjectionScope.touch() و MultiModalInjectionScope.mouse()، وكلاهما يقبلان دالة lambda التي تتضمّن نطاق المستلِم لهذا الوسيط. (Idde18)

إصلاح الأخطاء

  • يتم الآن احتساب القيمة التلقائية لـ durationMillis في TouchInjectionScope.swipeWithVelocity بحيث يكون التمرير السريع ممكنًا. (I19deb)

الإصدار 1.1.0-beta02

3 تشرين الثاني (نوفمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-beta02. يحتوي الإصدار 1.1.0-beta02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة التطبيقات التجريبية BringIntoView API التي تتيح لك إرسال طلب إلى الوالدَين لتحريك الشاشة إلى أن يظهر عنصر معيّن (Ib918d، b/195353459)
  • واجهات برمجة تطبيقات جديدة للصور المتحركة لاستخدام الأدوات وعلى وجه التحديد، تسمح هذه الأدوات بالاطّلاع على الرسوم المتحرّكة وإعداداتها في ملف "عمليات النقل". (I4116e)

المساهمة الخارجية

  • تمت إضافة Modifier.pointerHoverIcon‏ (I95f01)

الإصدار 1.1.0-beta01

27 تشرين الأول (أكتوبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-beta01. يحتوي الإصدار 1.1.0-beta01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة التطبيقات التجريبية BringIntoView التي تتيح لك إرسال طلب إلى الوالدَين لعرض عنصر معيّن (Ib918d، b/195353459).
  • واجهات برمجة تطبيقات جديدة للصور المتحركة لاستخدام الأدوات وعلى وجه التحديد، تسمح هذه الأدوات بالاطّلاع على الرسوم المتحرّكة وإعداداتها في ملف "عمليات النقل". (I4116e)

الإصدار 1.1.0-alpha06

13 تشرين الأول (أكتوبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha06. يحتوي الإصدار 1.1.0-alpha06 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إزالة ExperimentalComposeUiApi من ViewRootForInspector وLayoutInfo.ownerViewId (I5c2e3)
  • تمت إضافة حمولة زائدة بدون طفل لـ Layout، مع كفاءة محسّنة (Ib0d9a)
  • تمت إزالة InternalCompilerApi من طرق Composer التي يجب استدعاؤها على مستوى الوحدات (I1aa0b)
  • تعرض SemanticsNodeInteraction.performSemanticsAction الآن SemanticsNodeInteraction الذي تم استدعاء الدالة عليه. (I9e5db)
  • تمت إضافة LocalInputModeManager CompositionLocal لرصد TouchMode/NonTouchMode. (I6a83c، b/175899786)
  • تمت إضافة viewConfiguration: ViewConfiguration إلى LayoutInfo للسماح للمستهلكين بالحصول على القيمة الصحيحة لعناصر مثل مهلة الضغط العميق. (I76ca6)
    • تمت إضافة viewConfiguration: ViewConfiguration إلى InjectionScope للسماح للاختبارات بتعديل إدخال الإدخال استنادًا إلى عوامل مثل مهلة الضغط لفترة طويلة أو انزلاق اللمس.
    • تم تغيير المدة التلقائية للضغط مع الاستمرار والنقر مرّتين لكل من إدخالات اللمس والماوس لتستند إلى القيم الواردة في InjectionScope.viewConfiguration.
  • تنفيذ ExposedDropdownMenu استنادًا إلى ExposedDropdownMenuBox مع TextField وDropdownMenu بالداخل (If60b2)
  • تمت إضافة dismissOnOutsideClick إلى PopupProperties، لتحلّ محلّ dismissOnClickOutside التي تم إيقافها نهائيًا. يتلقّى الموقع الجديد موضع النقرة وحدّي الربط، ما يوفر إمكانية التحكّم بشكل أدق في ما إذا كان يجب استدعاء onDismissRequest أم لا. على سبيل المثال، يمكن أن يكون ذلك مفيدًا لمنع إغلاق العنصر الأساسي عند لمسه.
    • تمت إضافة updateAndroidWindowManagerFlags إلى PopupProperties، ما يوفر إمكانية التحكّم على مستوى منخفض في العلامات التي تمررها النافذة المنبثقة إلى Android WindowManager. ستكون مَعلمة دالة lambda هي العلامات المحسوبة من قيم PopupProperties التي تؤدي إلى ظهور علامات WindowManager، مثل focusable. ستكون نتيجة دالة lambda هي العلامات النهائية التي سيتم تمريرها إلى Android WindowManager. سيترك updateAndroidWindowManagerFlags العلامات المحسوبة من المَعلمات بدون تغيير تلقائيًا. يجب استخدام واجهة برمجة التطبيقات هذه بحذر، فقط في الحالات التي يكون فيها النافذة المنبثقة لها متطلبات سلوك محدّدة جدًا. (I6e9f9)
  • تم إيقاف Recomposer.state نهائيًا واستبداله بمحاولة Recomposer.currentState لتغيير نوعه إلى StateFlow (Ic2ab3، b/197773820)
  • تمت إضافة flush() وdispose() إلى InjectionScope. استخدِمهما عندما تريد إزالة جميع الأحداث في "قائمة الانتظار" على الفور ومحاولة التخلص من النطاق، على التوالي. (Ifb73a)
  • تمت إضافة performScrollToNode(matcher: SemanticsMatcher) التي تنقل بحاوية قابلة للتنقّل إلى المحتوى الذي يطابقه المطابق المحدّد. (Ic1cb8)
  • ينفِّذ تطبيق InjectionScope الآن Density، ما يتيح لك التحويل بسهولة بين وحدات البكسل وdp في performTouchInput والتطبيقات المشابهة. (I8fe1f)

إصلاح الأخطاء

  • ينشر AndroidView الآن LocalLifecycleOwner و LocalSavedStateRegistryOwner في العرض من خلال ViewTreeLifecycleOwner وViewTreeSavedStateRegistryOwner. (I38f96، b/179708470)
  • إصلاح مشكلة عدم معالجة التمريرات السريعة في SwipeToDismissBox على نظام التشغيل WearOS في بعض الأحيان (I9387e)
  • تم تغيير الوقت التلقائي بين أحداث الإدخال المُحقَّقة من 10 ملي ثانية إلى 16 ملي ثانية. وقد يؤدي ذلك إلى تغيير نتيجة الاختبارات التي تُجري إيماءات إدخال، مثل التمرير السريع باتجاه معيّن. (I829fd)

الإصدار 1.1.0-alpha05

29 أيلول (سبتمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha05. يحتوي الإصدار 1.1.0-alpha05 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة إمكانية التواصل بين المُعدِّلات (Id5467، b/198826874)
  • تمت إضافة مؤشرات تجريبية لسجلّ PointerEventChange. (Ic1fd8، b/197553056، b/199921305)
  • تمت إضافة density: Density وlayoutDirection: LayoutDirection إلى LayoutInfo. يتيح ذلك لمستهلكي LayoutInfo تفسير الأبعاد والموضع المعروضَين في LayoutInfo بشكل صحيح. (I002f1)
  • تمت إضافة ميزة تجريبية لحقن أحداث الماوس. استخدِم performMouseInput لبدء إرسال أحداث الماوس، أو أرسِل أحداث الماوس من خلال خاصية Mouse في MultiModalInjectionScope أثناء إيماءة إدخال متعددة الأوضاع باستخدام performMultiModalInput. يُرجى الاطّلاع على MouseInjectionScope للحصول على مستندات واجهة برمجة التطبيقات المتاحة. (Iaa4a8، b/190493367)

إصلاح الأخطاء

  • تم إصلاح ميزة تسهيل الاستخدام للعناصر القابلة للتقديم أو الإيقاف (سواء كانت بطيئة أو سريعة) في ما يتعلق بالانتقال (I6cdb0).
  • تم تحسين TouchInjectionScope.swipeWithVelocity. أصبح الآن يقبل نطاقًا أوسع من متغيّرات الإدخال، وسيقترح تغييرات على الإدخال إذا تعذّر إنشاء التمرير السريع (I40fbe، b/182477143)

الإصدار 1.1.0-alpha04

15 أيلول (سبتمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha04. يحتوي الإصدار 1.1.0-alpha04 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • يتضمّن PointerEvent الآن PointerEventType لتفعيل أحداث التمرير بمؤشر الماوس. (I091fa)
  • السماح للأطفال بقبول إدخال المؤشر خارج пределами родительского ввода указателя يمكن للوالدَين اعتراض هذه الطلبات باستخدام السمة PointerInputScope.alwaysInterceptChildEvents (I9eae3، b/192479655).
  • تم إيقاف performGesture وGestureScope نهائيًا، وتم استبدالهما بـ performTouchInput وTouchInjectionScope. (Ia5f3f، b/190493367)
  • تمت إضافة touchBoundsInRoot إلى SemanticsNode الذي يتضمّن الحدّ الأدنى لحجم مساحة اللمس حتى يتمكّن المطوّرون من التأكّد من استيفاء مساحات اللمس للحدّ الأدنى لمتطلبات تسهيل الاستخدام. (I2e14b، b/197751214)
  • إعادة تنفيذ الفحص (I927bc، b/191017532)
  • تم تغيير اسم المَعلمة inspectable (قابل للفحص) لتتطابق مع المَعلمة composed (مُركّب) (I3a482، b/191017532)
  • تمّ تقديم performTouchInput وTouchInjectionScope كبديلين عن performTouchInput وTouchInjectionScope، ما مهّد الطريق لظهور وسائل أخرى (مثل الماوس).

    تتضمّن دالة TouchInjectionScope الطرق نفسها التي تتضمّنها دالة GestureScope، باستثناء دالتَي movePointerTo وmovePointerBy اللتين تمت تسميتَهما مجددًا باسمَي updatePointerTo وupdatePointerBy. وتبقى جميع الطرق الأخرى كما هي.

    يكاد سلوك TouchInjectionScope يكون مطابقًا لGestureScope، مع وجود تفاصيل صغيرة:

    1. عند إرسال حدث "الضغط لأسفل" أثناء نقل المؤشرات بدون إرسال حدث "التحرك" (بمعنى آخر، تم استخدام updatePointerTo() وليس move()، ثم تم استدعاء down())، سيؤدي التنفيذ السابق إلى تقديم وقت الحدث وإرسال حدث "التحرك" قبل إرسال حدث "الضغط لأسفل". لا يزال التنفيذ الجديد يُرسِل حدث التحرك، ولكنّه لا يُقدّم وقت الحدث في هذا السيناريو المُحدّد.
    2. عند إرسال حدث up (الانتقال للأعلى) أثناء نقل المؤشرات بدون إرسال حدث move (الانتقال)، سيؤدي التنفيذ السابق إلى تقديم وقت الحدث وإرسال حدث move قبل إرسال حدث up. لا ينفِّذ الإجراء الجديد أيًا من ذلك: لن تظهر مواضع المؤشرات الجديدة إلا من خلال الحدث up.

    أخيرًا، يوفّر TouchInjectionScope طريقة جديدة currentPosition(pointerId: Int) للحصول على الموضع الحالي للمؤشر المحدّد. (If1191، b/190493367)

إصلاح الأخطاء

  • السماح للفيديو بتوسيع حدود ناحية اللمس المستهدفة خارج منطقة الفيديو لأغراض الحد الأدنى لمساحة اللمس المستهدفة (I43e10، b/171509422)
  • تمت إضافة ميزة التمديد إلى ما بعد حدود الشاشة على أجهزة Android 12. (Iccf3c، b/171682480)

الإصدار 1.1.0-alpha03

1 أيلول (سبتمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha03. يحتوي الإصدار 1.1.0-alpha03 على هذه المراجعات.

الميزات الجديدة

  • تم تعديل Compose 1.1.0-alpha03 ليصبح يعتمد على Kotlin 1.5.30. (I74545)

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة Modifier.inspectable لتغليف عوامل التعديل الأخرى. (I1909b، b/191017532)
  • تمت إضافة BlurredEdgeTreatment API لتبسيط حالات استخدام التمويه إلى مجموعات أكثر استخدامًا من علامات المقاطع ووضعيات التجانب. تتضمن معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي ومحو المناطق خارج هذه الحدود باستخدام اللون الأسود الشفاف، أو اقتصاص المحتوى إلى حدود المحتوى من خلال أخذ عيّنة من أقرب حافة لنواة التمويه التي تتجاوز حدود المحتوى. (I6b4b7، b/166927547)
  • تمت إضافة إمكانية استخدام RenderEffect في وضع "إنشاء" على الكمبيوتر المكتبي. تمّ تقديم OffsetEffect بالإضافة إلى معدِّل التمويه كطريقة بسيطة لتطبيق تأثيرات التمويه المرئية على جزء من التسلسل الهرمي للتركيب. (I0f6aa، b/166927547)
  • تمّت إضافة RenderEffect API التي يمكن ضبطها اختياريًا على Modifier.graphicsLayer لتغيير محتوى الطبقة نفسها. يمكن استخدام هذه الميزة لإخفاء محتوى عنصر تركيبي وعناصر تركيبية فرعية ضمن التسلسل الهرمي لتركيبة. (I47c4d، b/166927547)
  • يتضمّن AwaitPointerEventScope الآن withTimeout() وwithTimeoutOrNull() (I507f0، b/179239764، b/182397793)
  • تمت إضافة الحد الأدنى لحجم مساحة اللمس المستهدفة إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان تسهيل الاستخدام. (Ie861c)
  • إضافة ميزة TileMode.Decal التي تكون مفيدة في تحديد سلوك الحواف لتأثيرات RenderEffects المستندة إلى التمويه (I7e8ed، b/166927547)
  • أصبحت واجهتَا برمجة التطبيقات performScrollToIndex وperformScrollToKey hasScrollToIndexAction وhasScrollToKeyAction متوفّرتين الآن (I142ae، b/178483889).
  • تمت إضافة طريقة اختبار للحصول على الحدود المقتطعة. (I6b28e)

إصلاح الأخطاء

  • تمّت إزالة طريقة isBounded من BlurredEdgeTreatment لصالح التحقّق صراحةً ممّا إذا كانت مَعلمة shape فارغة. (I85d68)

الإصدار 1.1.0-alpha02

18 آب (أغسطس) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha02. يحتوي الإصدار 1.1.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • يتيح PointerEvent الآن قراءة حالة زر الماوس وحالة مُعدِّل لوحة المفاتيح. (I6310c، b/180075467)
  • تستخدم الإيماءات المُدرَجة الآن وقت MainTestClock كمصدر للحصول على الوقت. سيتمّ إعداد الوقت الحالي للأحداث المُدرَجة في performGesture على أنّه الوقت الحالي لمحاولة الاختبار MainTestClock. (Ifb364، b/192064452)
  • تمت إضافة DpRect(DpOffset, DpSize) (I2cf16، b/194219828)
  • تمت إضافة فئة DpSize (I7abb1، b/194219828)

إصلاح الأخطاء

  • تم تعديل تحليل xml لرسومات المتجهات لإتاحة استخدام قوائم ColorStateList كسمات أساسية لدرجة لون الأساس في VectorDrawables. (I86915، b/195668138)

الإصدار 1.1.0-alpha01

4 آب (أغسطس) 2021

تم إصدار androidx.compose.ui:ui-*:1.1.0-alpha01. يحتوي الإصدار 1.1.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • يقبل RelocationRequester.bringIntoView الآن مستطيلاً كمَعلمة تتيح لنا عرض جزء من عنصر قابل للتجميع (Ice2c5، b/194330245).
  • أصبحت AnimatedImageVector وواجهات برمجة التطبيقات ذات الصلة متوفّرة الآن في وحدة androidx.compose.animation:animation-graphics الجديدة. (I60873)
  • تمت إضافة مُعدِّل تجريبي لمعالجة طلبات إعادة التعيين. (I65a97، b/178211874)
  • تمّت إضافة واجهة برمجة التطبيقات BrushPainter API لإتاحة رسم فرشاة عشوائية داخل Painter، على غرار ColorPainter

    تم تعديل Brush API لإضافة مَعلمة حجم أساسي يتم الاستعلام عنها ضمن BrushPainter (Ia2752، b/189466433)

  • تم تعديل طريقة drawImage في DrawScope#التي تستخدم مستطيلات المصدر والوجهة لاستخدام مَعلمة FilterQuality اختيارية. يكون ذلك مفيدًا للفن المكوّن من وحدات بكسل والذي يُفترض أن يظهر بوحدات بكسل عند تكبيره ليصبح فنًا يعتمد على وحدات البكسل. تم تعديل BitmapPainter وImage composable لاستخدام مَعلمة FilterQuality اختيارية أيضًا (Ie4fb0، b/180311607)

  • تمت إضافة طريقة GestureScope.advanceEventTime لمنح المزيد من التحكّم في توقيت الأحداث في إيماءة (Ibf3e2)

إصلاح الأخطاء

  • لتسهيل تسلسل مُعدِّلات الرسم، تأكَّد من أنّ عملية تنفيذ Modifier.paint تستدعي drawsContent. في السابق، كان من المتوقّع أن تكون Modifier.paint عقدة ورقة في سلسلة Modifiers، ولكنّ ذلك يمنع إعدادها في حاوية قابلة للتجميع (مثل المربّع) أو إضافة زخارف إضافية في الأعلى مثل Modifier.paint().border(). من خلال جعل Modifier.paint يُطلِق drawContent بعد رسم محتوى الرسام المحدَّد، نحصل على اتساق أفضل في السلوك مع نمط المُعدِّل. (Ibb2a7، b/178201337، b/186213275)
  • تلتزم الآن المحادثات بسلوك ضبط حجم الشاشة. اضبط usePlatformDefaultWidth على خطأ لتجاوز هذا السلوك. (Iffaed، b/192682388)
  • تم نقل InfiniteAnimationPolicy إلى ‎ :compose:ui (I5eb09، b/160602714)
  • تم الآن إضافة تأثيرات متحركة إلى التمرير من خلال إجراءات الدلالات للقوائم البطيئة الموسّعة ومكونات التمرير العادي (Id9066، b/190742024).

الإصدار 1.0

الإصدار 1.0.5

3 تشرين الثاني (نوفمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.5. يحتوي الإصدار 1.0.5 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح عطل في تتبُّع حالات derivedStateOf. (aosp/1792247)

الإصدار 1.0.4

13 تشرين الأول (أكتوبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.4. يحتوي الإصدار 1.0.4 على هذه المراجعات.

تعديلات على التبعيات

  • تم تعديلها لتصبح معتمدة على Kotlin 1.5.31

الإصدار 1.0.3

29 أيلول (سبتمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.3. يحتوي الإصدار 1.0.3 على هذه المراجعات.

تعديلات على التبعيات

  • تم تعديلها لتصبح معتمدة على Kotlin 1.5.30

الإصدار 1.0.2

1 أيلول (سبتمبر) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.2. يحتوي الإصدار 1.0.2 على عمليات الربط هذه.

تم تعديله ليتوافق مع إصدار 1.0.2 من تطبيق Compose. لا يزال الإصدار 1.0.2 من أداة الإنشاء متوافقًا مع الإصدار 1.5.21 من Kotlin.

الإصدار 1.0.1

4 آب (أغسطس) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.1. يحتوي الإصدار 1.0.1 على هذه المراجعات.

تعديلات على التبعيات

  • تم تعديلها لتصبح معتمدة على Kotlin 1.5.21.

الإصدار 1.0.0

28 تموز (يوليو) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0. يحتوي الإصدار 1.0.0 على عمليات الربط هذه.

الميزات الرئيسية في الإصدار 1.0.0

هذا هو أول إصدار ثابت من تطبيق Compose. يُرجى الاطّلاع على مدوّنة الإصدار الرسمية من تطبيق Compose للحصول على مزيد من التفاصيل.

المشاكل المعروفة

  • إذا كنت تستخدم الإصدار 4 من Android Studio Bumblebee Canary أو الإصدار 7.1.0-alpha04/7.1.0-alpha05 من AGP، قد تواجه الخطأ التالي:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو إصدار أحدث في ملف build.gradle. سيتم حلّ هذه المشكلة في الإصدار التالي من Android Studio Bumblebee وAGP 7.1. (b/194289155)

الإصدار 1.0.0-rc02

14 تموز (يوليو) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-rc02. يحتوي الإصدار 1.0.0-rc02 على هذه المراجعات.

إصلاح الأخطاء

  • تلتزم الآن المحادثات بسلوك ضبط حجم الشاشة. اضبط usePlatformDefaultWidth على خطأ لتجاوز هذا السلوك. (Iffaed، b/192682388)

الإصدار 1.0.0-rc01

1 تموز (يوليو) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-rc01. يحتوي الإصدار 1.0.0-rc01 على هذه المراجعات.

الميزات الجديدة

  • تقسيم وحدة أدوات واجهة المستخدم إلى ui-tooling وui-tooling-preview (Iefa28، b/190649014)

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة الإصدارَين التجريبيَين FocusManager#moveFocusIn وFocusManager#moveFocusOut اللذَين تم إيقافهما نهائيًا (I227d7 وb/170154986 وb/186567354 وb/168510304).
  • تتيح Canvas الآن مَعلمة contentDescription لأجل تسهيل الاستخدام. (Ib547c)
  • تمت إعادة تسمية useDefaultMaxWidth في PopupProperties إلى usePlatformDefaultWidth. (I05710)
  • يمكن الآن للمربّعات الحوار استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
  • تمت إضافة دعم تجريبي لتمثيلات ملفّات bmp بتنسيقَي HSV وHSL. (Id7cf8، b/180731008)

التغييرات في السلوك

  • توفّر ميزة "الإنشاء" @Preview الآن LocalActivityResultRegistryOwner يتيح لك معاينة العناصر القابلة للتجميع التي تستخدم واجهات برمجة التطبيقات مثل rememberLauncherForActivityResult() التي تعتمد على توفّر هذا المالك. (Ib13d1، b/185693006)
  • توفّر أداة Compose @Preview الآن LocalOnBackPressedDispatcherOwner تتيح لك معاينة العناصر القابلة للتجميع التي تستخدم واجهات برمجة التطبيقات، مثل BackHandler التي تعتمد على توفّر هذا المالك. (Ia1c05، b/185693006)

إصلاح الأخطاء

  • تم نقل InfiniteAnimationPolicy إلى androidx.compose.ui:ui (I5eb09، b/160602714)
  • تمّت إزالة AnimatedImageVector مؤقتًا لتغيير بنية الوحدة. (I41906، b/160602714)

الإصدار 1.0.0-beta09

16 حزيران (يونيو) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta09. يحتوي الإصدار 1.0.0-beta09 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تغيير النطاقين المحدَّدين Role وLiveRegionMode إلى فئات مضمّنة مع عنصر إنشاء خاص (Id1890)
  • يتم تحويل KeyboardCapitalization إلى فئة مضمّنة. (Id5a1c)
  • غيِّر HapticFeedbackType إلى فئة مضمّنة. (I255ec)
  • ‎Modifier.pointerInteropFilter هو @ExperimentalComposeUiApi. (Iede6c)
  • أصبحت TextAlign وFontSynthesis وTextDirection الآن فئات مضمّنة. (I212fe)
  • تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
  • أصبح FontStyle الآن فئة مضمّنة. (I9e48b)

إصلاح الأخطاء

  • في الوقت الحالي، الثابتة الرئيسية هي @ExperimentalComposeUiApi. يمكن للرمز المستهلِك أن يُعرِّف الثوابت الخاصة قبل استقرارها. (Ia5d48)
  • يمكن الآن تنفيذ اختبارات إنشاء الرسائل على Robolectric. تم تحديد القيود التالية حتى الآن:
    • لا تتوفّر صورة نقطية أصلية، لذا يؤدي ImageBitmap() إلى ImageBitmap().
    • لا يتمّ رسم أيّ شكل، لذا سينتظر captureToImage() إلى أجل غير مسمى مرحلة الرسم التالية (أيّ أنّه سيتوقّف عن العمل).
    • لم يتم تحميل أيّ خط، لذا سيتم قياس أيّ نص بشكل غير صحيح. تبلغ قياسات كل الشخصيات 20 بكسل تقريبًا للارتفاع و1 بكسل للعرض.
    • لا يشغّل ComposeTestRule.waitUntil {} سلسلة التعليمات الرئيسية أثناء الانتظار، ما يجعله مطابقًا بشكل فعال ComposeTestRule.mainClock.advanceTimeUntil {} من المتوقّع تحديد المزيد من القيود في المستقبل. (I284fa)

قواعد الملفات التجارية المُضافة

يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

ما هي قواعد الملفات الشخصية؟

  • يتم تحديد قواعد الملف الشخصي للمكتبة في ملف نصي baseline-prof.txt في الدليل src/main أو الدليل المكافئ. يحدِّد الملف قاعدة لكل سطر، حيث تكون القاعدة في هذه الحالة نمطًا لمطابقة الطرق أو الفئات في المكتبة. بنية هذه القواعد هي مجموعة فائقة من تنسيق الملف الشخصي لنظام ART القابل للقراءة من قِبل المستخدمين والذي يتم استخدامه عند استخدام adb shell profman --dump-classes-and-methods .... تتّخذ هذه القواعد أحد شكلَين لاستهداف الطرق أو الفئات.

  • سيكون لقاعدة الطريقة النمط التالي:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • وسيكون لنمط قاعدة الفئة الشكل التالي:

    <CLASS_DESCRIPTOR>
    
  • يشير الرمز <FLAGS> إلى حرف واحد أو أكثر من الأحرف H وS وP للإشارة إلى ما إذا كان يجب وضع علامة على هذه الطريقة على أنّها "مهام نشطة" أو "مهام بدء التشغيل" أو "مهام ما بعد بدء التشغيل".

  • <CLASS_DESCRIPTOR> هو الوصف للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، سيكون للفئة androidx.compose.runtime.SlotTable وصف Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> هو توقيع الطريقة، ويتضمّن الاسم وأنواع المَعلمات وأنواع النتائج للطريقة. على سبيل المثال، تحتوي الطريقة fun isPlaced(): Boolean في LayoutNode على التوقيع isPlaced()Z.

  • يمكن أن تحتوي هذه الأنماط على أحرف بدل (** و* و?) لتشمل قاعدة واحدة طرقًا أو فئات متعددة.

ما هي وظيفة القواعد؟

  • تشير الطريقة التي تحمل العلامة H إلى أنّ هذه الطريقة "ساخنة"، ويجب تجميعها مسبقًا.

  • تشير الطريقة التي تحمل العلامة S إلى أنّها طريقة يتمّ استدعاؤها عند بدء التشغيل، ويجب تجميعها مسبقًا لتجنّب تكلفة التجميع وتفسير الطريقة في وقت بدء التشغيل.

  • تشير الطريقة التي تحمل العلامة P إلى أنّها طريقة يتمّ استدعاؤها بعد بدء التشغيل.

  • تشير الفئة المتوفّرة في هذا الملف إلى أنّها مستخدَمة أثناء بدء التشغيل ويجب تخصيصها مسبقًا في الحِزمة لتجنب تكلفة تحميل الفئة.

آلية العمل

  • يمكن للمكتبات تحديد هذه القواعد التي سيتم تجميعها في عناصر AAR. عند إنشاء تطبيق يتضمّن هذه العناصر، يتم دمج هذه القواعد معًا ويتم استخدام القواعد المدمجة لإنشاء ملف تعريف ART ثنائي مكثّف خاص بالتطبيق. ويمكن بعد ذلك لـ ART الاستفادة من هذا الملف الشخصي عند تثبيت التطبيق على الأجهزة من أجل تجميع مجموعة فرعية معيّنة من التطبيق مسبقًا لتحسين أداء التطبيق، لا سيما في التشغيل الأول. يُرجى العلم أنّ هذا الإجراء لن يؤثر في التطبيقات التي يمكن تصحيح أخطاءها.

الإصدار 1.0.0-beta08

2 حزيران (يونيو) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta08. يحتوي الإصدار 1.0.0-beta08 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم استبدال قائمة القيم الفريدة NestedScrollSource بصفّة مضمّنة. (Ie321b، b/187055290)
  • تمت إعادة تسمية FocusManager.clearFocus(forcedClear = true) إلى FocusManager.clearFocus(force = true) (Ia0c41)
  • تمّت إعادة صياغة استخدامات النطاقات المحدّدة إلى فئات مضمّنة لتجنُّب المشاكل المتعلّقة ببيانات when الشاملة عند إضافة قيم جديدة للنطاق المحدّد. (I2b5eb)
  • أزِل @ExperimentalComposeUiApi من PopupProperties. (I01fa6)
  • تم تغيير PointerType من فئة معرِّفة إلى فئة مضمّنة (If5058).
  • لم تعُد سمتا ContentDescription وText semantics قيمًا مفردة، بل أصبحتا قائمتَين. يتيح ذلك دمجها كما هي بدلاً من دمج السلسلة. تم أيضًا توفير واجهات برمجة تطبيقات اختبار أفضل للاستفادة من هذه التغييرات (Ica6bf وb/184825850).
  • تم إيقاف Modifier.focusModifier() نهائيًا واستبداله بـ Modifier.focusTarget() (I6c860)
  • لم تعُد Modifier.onSizeChanged() وModifier.onGloballyPositioned() دالة مضمّنة بعد الآن (I727f6، b/186109675)
  • تم استبدال قائمة القيم الفريدة KeyboardType بصفّة مضمّنة. (I73045، b/187055290)
  • تم استبدال قائمة FocusState بواجهة FocusState (Iccc1a، b/187055290)
  • تم استبدال قائمة ImeAction بصفّة مضمّنة. (I18be5، b/187055290)
  • يتم تحويل PlaceholderVerticalAlign إلى فئة مضمّنة. (If6290)
  • أصبحت TextUnitType فئة مضمّنة الآن. (I4cba9)
  • تم الآن استبدال دالات AnnotatedString.withAnnotation بـ ExperimentalTextApi بدلاً من ExperimentalComposeApi. (I0cd0a)
    • أصبحت دالة إنشاء TextUnit التي تستخدم TextUnitType متوفّرة الآن في ExperimentalTextApi بدلاً من ExperimentalComposeApi.

إصلاح الأخطاء

  • تم إصلاح الخلل الذي ظهر في الإصدار التجريبي 07 والذي كان يؤدي إلى عرض عناصر LazyColumn/Row بشكل جزئي بعد الانتقال للأسفل أو للأعلى (I8c9ac، b/188566058)
  • ستستهلك الآن detectDragGesures وdetectVerticalGestures وdetectHorizontalGestures تغيير الموضع تلقائيًا، ولن يكون هناك حاجة إلى استدعاء change.consumePositionChange في طلبات إعادة الاتصال onDrag (I42fc4 وb/185096350 وb/187320697).
  • تم إصلاح LayoutModifiers التي تقدّم خطوط محاذاة. تم إصلاح خطأ كان يمنع إعادة قياس العنصر الرئيسي عند تغيير خطوط المحاذاة الخاصة بالعناصر الثانوية. (I4401f، b/174315652)
  • تم تغيير Modifier.onGloballyPositioned() للإبلاغ عن إحداثيات هذا المُعدِّل في سلسلة المُعدِّلات، وليس إحداثيات التنسيق بعد تطبيق جميع المُعدِّلات. وهذا يعني أنّ ترتيب المُعدِّلات يؤثّر الآن في الإحداثيات التي سيتم الإبلاغ عنها. (Ieb67d، b/177926591)

الإصدار 1.0.0-beta07

18 أيار (مايو) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta07. يحتوي الإصدار 1.0.0-beta07 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة واجهة ViewRootForInspector لاستخدامها في أداة الفحص (Ib70df)
  • يتيح SubcomposeLayoutState الآن ضبط عدد الفتحات القابلة لإعادة الاستخدام. سيحافظ التنسيق على تفعيل ما يصل إلى هذا العدد من الخانات بدلاً من التخلص منها لإعادة استخدامها في المرة القادمة التي نحتاج فيها إلى خانة جديدة (Ieb981).
  • تم استبدال التعداد KeyEventType بفئة مضمّنة. (Id670a، b/187055290)
  • تم استبدال قائمة القيم الفريدة FocusDirection بصفّة مضمّنة. (Ib6d03 وb/187055290 وb/184086802)
  • تمّت إضافة إمكانية رفع حالة SubcomposeLayout التي تتيح لك إنشاء تركيبة مسبقة للمحتوى في slotId يتطلّب ذلك، ما سيؤدي إلى اجتياز الإجراء التالي بشكل أسرع، لأنّه بعد محاولة إنشاء تركيبة فرعية باستخدام slotId المحدّد في المرة القادمة، لن تكون هناك حاجة إلى إنشاء تركيبة. (I42580، b/184940225)
  • تمت إضافة معرّف اختيار المقطع (Iff80d، b/183408447)
  • تمت إزالة واجهات برمجة التطبيقات غير المستخدَمة المرتبطة بدعم LayoutInspector. (I2ac78)

إصلاح الأخطاء

  • سيحافظ الآن LazyColumn/Row على نشاط ما يصل إلى عنصرَين كانا مرئيَين سابقًا (بدون إزالتهما) حتى بعد الانتقال إلى أعلى الصفحة. يتيح ذلك للمكوّن إعادة استخدام العناصر الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد يُحسِّن أداء الانتقال للأعلى أو للأسفل. (Ie5555)
  • سيتم تطبيق TextGeomerticTransform وTextDecoration على AnnotatedString كما هو موضّح. (I61900، b/184760917)

الإصدار 1.0.0-beta06

5 أيار (مايو) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta06. يحتوي الإصدار 1.0.0-beta06 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • حلّ تعارض مع إيماءة التنقّل (I1145e)
  • لم يعُد @ComposeCompilerApi @RequiresOptIn (Iab690)
  • تمت إضافة واجهتَي برمجة تطبيقات CollectionInfo وCollectionItemInfo لأدوات تسهيل الاستخدام تتيحان وضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (Id54ef وb/180479017)
  • تمت إضافة SemanticsActions.ScrollToIndex للانتقال في قائمة تحتوي على عناصر مفهرَسة إلى العنصر الذي يحتوي على فهرس معيّن، وSemanticsProperties.IndexForKey للحصول على فهرس عنصر في قائمة تحتوي على عناصر مفاتيح. يتم تنفيذ كلا الإجراءَين من خلال LazyList.
    • تمت إضافة SemanticsNodeInteraction.performScrollToIndex التي تنتقل بقائمة إلى الفهرس المحدَّد، وSemanticsNodeInteraction.performScrollToKey التي تنتقل بقائمة إلى العنصر الذي يحتوي على المفتاح المحدَّد. (I4fe63، b/178483889، b/161584524)
  • تمت إضافة ownerViewId إلى GraphicLayerInfo‏ (I19f62)
  • تمت إضافة طرق تحميل زائدة لواجهة Font() لتحميل الخطوط من مواد العرض وFile وFileDescriptor (I5d382)
  • تمت إضافة واجهة برمجة التطبيقات لإمكانية الوصول error التي تسمح بوضع علامة على عقدة تحتوي على إدخال غير صالح (I12997 وb/180584804 وb/182142737).
  • تمت إضافة Font() طريقة تحميل متعدّدة لتحميل الخطوط من مواد العرض وFile وFileDescriptor (I43007)
  • إتاحة حفظ AnnotatedString في TextFieldValue.Saver تمت إضافة addTtsAnnotation ودوالّ المرافقة withAnnotation إلى AnnotatedString.Builder (I8cbdc، b/178446304)
  • تمت إضافة دالة TextUnit لإنشاء الوحدات TextUnit(value: Float, type: TextUnitType) (I7ecce، b/178446304)

الإصدار 1.0.0-beta05

21 نيسان (أبريل) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta05. يحتوي الإصدار 1.0.0-beta05 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة الإصدارَين التجريبيَين FocusManager.moveFocus(In) وFocusManager.moveFocus(Out) (Ic5534 وb/183746743)
  • تمت إضافة واجهة برمجة التطبيقات التجريبية performTextInputSelection (I2dcbb، b/178510628)
  • تم إيقاف واجهة InputEventCallback نهائيًا. لم يكن من الممكن استخدام الواجهة في أي واجهة برمجة تطبيقات عامة، ولم يتم استخدامها في الرمز البرمجي. (I34a02، b/184003208)
  • دالة TextLayoutResult/createTextLayoutResult متوقفة نهائيًا وهي دالة عامة غير مستخدَمة تمت إضافتها للاختبار. لا تُجري الدالة أيّ إجراء قابل للاستخدام مع IDEVELOPER_COMPOSE_TEXT_API. تم إيقاف هذه الوظيفة نهائيًا وستتم إزالتها في وقت لاحق. (I80413)

إصلاح الأخطاء

  • تم إصلاح إجراءات الانتقال للأعلى أو للأسفل باستخدام ACTION_SCROLL_FORWARD وACTION_SCROLL_BACKWARD accessibilityActionScrollLeft وaccessibilityActionScrollUp accessibilityActionScrollRight وaccessibilityActionScrollDown. بدلاً من الانتقال إلى نهاية المحتوى المعروض على الشاشة، سيتم الآن الانتقال إلى شاشة واحدة في الاتجاه المحدّد. (Ieccb0)
  • أصبحت ملفات AndroidManifest من ui-test-manifest و ui-tooling-data متوافقة الآن مع Android 12 (I6f9de، b/184718994).

الإصدار 1.0.0-beta04

7 نيسان (أبريل) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta04. يحتوي الإصدار 1.0.0-beta04 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • أعِد تسمية hideSoftwareKeyboard وshowSoftwareKeyboard على SoftwareKeyboardController إلى hide() وshow() على التوالي.
    • توفير واجهة CompositionLocal الكاملة لأجل LocalSoftwareKeyboardController، ما يسمح بضبطها (خاصةً عند إجراء الاختبارات) (I579a6)
  • تمت إضافة واجهة برمجة التطبيقات LiveRegion accessibility API. إذا تم وضع علامة على العقدة كمنطقة مباشرة، ستخطّط خدمات تسهيل الاستخدام للإشعار بالمستخدم تلقائيًا بشأن التغييرات (Idcf6f، b/172590946)
  • تمّ تقديم TextOverflow.Visible. (Ic8f89)

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تحدث عند وضع عناصر LazyColumn/LazyRow بشكل غير صحيح على الحواف بعد التمرير السريع (Ie4d13، b/183877420)
  • يزيل AndroidViewBinding الآن بشكلٍ سليم المقاطع التي تم تضخيمها من خلال FragmentContainerView عند إزالة AndroidViewBinding من التسلسل الهرمي لإنشاء الرسائل. (Ib0248، b/179915946)
  • AndroidViewBinding الآن تُدمج بشكلٍ صحيح المقاطع التي تم تضخيمها من خلال FragmentContainerView عندما يكون ComposeView ضمن Fragment، ما يحلّ المشاكل المتعلّقة بحفظ حالة تلك المقاطع واستعادتها. (I70eb0، b/179915946)
  • يعتمد Compose ViewBinding الآن على الوحدة 1.3.2 ويعرض الآن بشكلٍ منتظم الوحدات التي تم تضخيمها من خلال FragmentContainerView بعد تغييرات الإعدادات. (I0743d، b/179915946)

الإصدار 1.0.0-beta03

24 آذار (مارس) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta03. يحتوي الإصدار 1.0.0-beta03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • التحقّق المؤجّل من تبعات ViewTree لـ ComposeView (I8dbbf، b/182466548)
  • تمت إضافة المَعلمتَين الاختياريتَين startX/endX وstartY/endY إلى دوال swipeUp/swipeDown/swipeLeft/swipeRight في GestureScope. (I49e2d، b/182063305)

الإصدار 1.0.0-beta02

10 آذار (مارس) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta02. يحتوي الإصدار 1.0.0-beta02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة تطبيقات LocalSoftwareKeyboardController جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053)
  • تمت إضافة واجهة برمجة تطبيقات LocalSoftwareKeyboardController جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)
  • تمت إزالة SemanticsMatcher التالية:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • تم وضع علامة على العنصر التالي SemanticsMatchers على أنّه @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • تمت إضافة SemanticsMatcher التالية:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

إصلاح الأخطاء

  • فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29 وb/174531520)
  • لم يعُد androidx.compose.ui:ui يعتمد على AppCompat أو Fragment. إذا كنت تستخدِم ComposeView في تطبيقك، وكنت تستخدِم Fragment و/أو AppCompat، تأكَّد من أنّك تستخدِم الإصدار 1.3 من AppCompat أو الإصدار 1.3 من Fragment أو الإصدارات الأحدث، لأنّ هذه الإصدارات مطلوبة لضبط دورة الحياة وأصحاب الحالة المحفوظة المطلوبة لـ ComposeView بشكلٍ صحيح. (I1d6fa، b/161814404)
  • إصلاح مشكلة عدم عمل الرمز rememberSaveable { mutableStateOf(0) } عند استخدامه داخل وجهة Compose-navigation (I1312b وb/180042685 وb/180701630)
  • تمت إضافة واجهة برمجة تطبيقات LocalSoftwareKeyboardController جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
  • تم إصلاح خطأ NoSuchElementException النادر في ComposeRootRegistry tearDownRegistry() (Iddce1).

الإصدار 1.0.0-beta01

24 شباط (فبراير) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-beta01. يحتوي الإصدار 1.0.0-beta01 على هذه المراجعات.

هذا هو الإصدار الأول من الإصدار التجريبي من Compose 1.0.0.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة دالة الاستدعاء onStart إلى detectDragGestures (I67269، b/179995594)
  • لم تعُد المُعدِّلات لتحديد الحجم حسب السمات الأساسية تجريبية. (I15744)
  • تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy التي أصبحت واجهة ممتعة. تم تعديل واجهات برمجة تطبيقات Layout API أو تبسيطها لاستخدام MeasurePolicy. (Icab48، b/167662468، b/156751158)
  • تم استبدال InteractionState بـ [Mutable]InteractionSource
    • تتحمّل الواجهات مسؤولية إصدار أحداث التفاعل أو جمعها.
    • بدلاً من تمرير interactionState = remember { InteractionState() } إلى مكوّنات مثل Button وModifier.clickable()، استخدِم interactionSource = remember { MutableInteractionSource() }.
    • بدلاً من: Interaction.Pressed in interactionState، يجب استخدام دوالّ الإضافة في InteractionSource، مثل InteractionSource.collectIsPressedAsState().
    • بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة بث التفاعلات. اطّلِع على مستندات InteractionSource وعينات منها للحصول على مزيد من المعلومات.
    • (I85965 وb/152525426 وb/171913923 وb/171710801 وb/174852378)
  • إضافة واجهة AccessibilityMananger و LocalAccessibilityMananger في CompositionLocals (I53520)
  • تمّت إزالة طرق LayoutCoordinates المتوقّفة نهائيًا، ويمكنك استخدام الدالة بدلاً من السمة positionInParent وboundsInParent (I580ed، b/169874631، b/175142755)
  • استبدال الأسماء البديلة للأنواع بأنواع أساسية:
    • ‫"ColorStop" أصبح الآن "Pair<Float, Color>"
    • SpanStyleRange أصبحت الآن AnnotatedString.Range
    • ‫"ParagraphStyleRange" أصبح الآن "AnnotatedString.Range<ParagraphStyle>"
    • ‫"StringAnnotation" أصبح الآن "AnnotatedString.Range<String>"
    • (I8dd1a)
  • تم إنشاء TextInputSession جديد لجلسات الإدخال من مكوّنات نصية منخفضة المستوى، مثل CoreTextField. (I8817f، b/177662148)
  • يعرِض العنصر القابل للوضع الآن measuredSize، الذي يمثّل الحجم الذي تم قياس تنسيق الطفل وفقًا له. قد لا يتوافق هذا الحجم مع قيود القياس. (Ib2729 وb/172560206 وb/172338608)
  • إضافة مُعدِّل selectionGroup الذي يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
  • أصبح الآن استخدام defaultFactory لـ compositionLocalOf و staticCompositionLocalOf مطلوبًا بدلاً من اختياريًا.

    تزيل هذه التغييرات خطأً محتمَلاً في النوع لأنواع غير القابلة للحذف التي لم يتم توفير مصنع تلقائي لها. في السابق، كان هذا الإجراء يؤدي إلى تقديم مرجع فارغ لنوع لا يمكن أن يكون فارغًا.

    بالنسبة إلى الأنواع التي يمكن أن تكون فارغة، ننصحك بتوفير { null } كمصنع التلقائي.

    لا ننصح باستخدام متغيرات محلية مع أنواع غير فارغة ما لم يكن بإمكانك توفير قيمة تلقائية معقولة. إذا لم تتوفّر قيمة تلقائية معقولة، من المفترض أن تُلقي دالة defaultFactory lambda استثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستخدِمي القيمة المحلية سيكون لديهم تبعية ضمنية لتقديمها لا يفرضها نظام الأنواع. (Ifbd2a)

  • تمّت إزالة الطرق المتوقّفة نهائيًا من وحدات واجهة المستخدم (I646f6)

  • تمّت إعادة تسمية مُعدِّلات المقاس. تمت إعادة تسمية Modifier.width/height/size إلى requiredWidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.preferredWidth/preferredHeight/preferredSize إلى width/height/size. (I5b414)

  • تمّت إزالة Modifier.tapGestureFilter. استخدِم Modifier.pointerInput { detectTapGestures(...) } بدلاً من ذلك. (I266ed، b/175294473)

  • تمت إزالة الاستهلاك الجزئي من نظام إدخال المؤشر. إنّ الطريقة المقترَحة لتنسيق الاستهلاك الجزئي هي Modifier.nestedScroll. (Ie9c9b)

  • تم نقل اتجاه الشاشة إلى حزمة الأساس. تم نقل VelocirtTracker من ui.gesture إلى ui.input.pointer. (Iff4a8، b/175294473)

  • أصبحت imageResource وvectorResource الآن وظيفتَي إضافة في الملحقَين ImageBitmap وImageVector على التوالي. تم حذف load{Image,Vector,Font}Resource دالة. (I89130)

  • تمت إزالة AnimationClockObservable وفئاتها الفرعية. تمت إزالة AnimatedFloat. (Icde52، b/177457083)

  • تمت إعادة تسمية Providers إلى CompositionLocalProvider.

    • لم يعُد مُنشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
    • تم تحويل currentCompositeKeyHash إلى سمة قابلة للتجميع من المستوى الأعلى بدلاً من دالة قابلة للتجميع من المستوى الأعلى.
    • تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling.
    • تم تحويل ComposableLambda إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات أنواع.
    • تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات نوع.
    • تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime.
    • لم تعُد طريقة الدمج في SnapshotMutationPolicy تجريبية.
    • تمت إزالة دالة clearRoots ذات المستوى الأعلى من العلامة @TestOnly. لم تعُد هذه الخطوة ضرورية.
    • تمّت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد هذه الخطوات ضرورية.
    • تمت إزالة Composer.collectKeySourceInformation. لم تعُد هذه الخطوة ضرورية.
    • تمّت إزالة الطُرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد هذه الخطوات ضرورية.
    • تم نقل واجهات برمجة تطبيقات مختلفة من المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب الدلالات المتعلقة بفئة الملفات في Kotlin، سيؤدي ذلك إلى إيقاف التوافق مع الثنائيات ولكن ليس مع المصدر، لذا من المفترض ألا يشكّل ذلك مشكلة لمعظم المستخدمين.
    • (I99b7d، b/177245490)
  • تمت إزالة ComponentActivity.setContent() من compose:ui. استخدِم الرابط من androidx.activity:activity-compose:1.3.0-alpha01. تمت إزالة viewModel() وLocalViewModelStoreOwner من compose:ui. استخدِم الأرقام من androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b).

  • تم تعديل Modifier.scrollable. يستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473)

  • تمت إزالة دعم CustomEvens من PointerInputModifier (I02707، b/175294473)

  • لم تعُد SnapshotStateObserver ميزة تجريبية (Id2e6a)

  • تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)

  • تمّت إزالة longPressGestureFilter وdoubleClickGestureFilter. استخدِم Modifier.pointerInput مع وظائف المساعدة، مثل detectTapGestures (I2fedf، b/175294473).

  • تمّت إزالة واجهة برمجة التطبيقات String.format وإعادة هيكلة الاستخدامات في طرق toString المختلفة لعدم الاستفادة من String.format داخليًا. (Id1290)

  • تمّت إزالة التأكيدات على dp (I798d2)

  • تمت إزالة androidx.compose.runtime:runtime-dispatch (I55feb)

  • تتحقّق الإجراءات النصية الآن من التركيز تلقائيًا (I13777، b/179648629)

  • تمت إزالة runBlockingWithManualClock (I15cdc وb/179664814)

  • يتم الآن تمثيل موضع التمرير في Modifier.verticalScroll()‎/horizontalScroll()‎ باستخدام الأعداد الصحيحة (I81298).

  • تمت إعادة تسمية FlingConfig إلى FlingBehavior، ما يتيح الآن تخصيص الصورة المتحركة للتعليق بدلاً من عمليات التحلل المحدَّدة مسبقًا. (I02b86، b/175294473)

  • تمت إضافة دالة مساعدة مفيدة لتحديد الإجراء نفسه لجميع عمليات ردّ الاتصال ImeAction (I63447، b/179226323)

  • تمت إزالة طلب الاستدعاء SoftwareKeyboardController من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)

  • لم يعُد يتم استخدام FontSpan وFontWeigthStyleSpan وتمّت إزالتهما. (Ie5b56، b/177423444)

  • تم إجراء التغييرات التالية على Material API:

    • تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص الحشو التلقائي.
    • تم إعادة ترتيب المَعلمات في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات بأن تكون المَعلمات المطلوبة قبل المَعلمات الاختيارية.
    • تم نقل المَعلمة icon في BottomNavigationItem لتظهر بعد selected وonClick.
    • تمت إعادة تسمية المَعلمة alwaysShowLabels في BottomNavigationItem إلى alwaysShowLabel.
    • تمت إعادة تسمية مَعلمات bodyContent في بعض المكوّنات إلى content فقط.
    • إعادة ترتيب المَعلمات في ButtonDefaults.buttonColors() يُرجى العِلم أنّه لن يحدث خطأ في الرمز البرمجي لأنّ نوع المَعلمات لم يتغيّر. يُرجى التأكّد من استخدام مَعلمات مُسمّاة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز البرمجي بالطريقة نفسها التي كان يعمل بها في السابق.
    • تمت إضافة المَعلمة secondaryVariant إلى darkColors(). يكون هذا اللون عادةً مطابقًا للون secondary في المظهر الداكن، ولكن يتم إضافته للحفاظ على الاتساق وإجراء المزيد من التخصيص.
    • تمت إزالة ElevationDefaults و‎animateElevation()‎ من واجهة برمجة التطبيقات العامة لأنّهما لم يكونا رائجَين أو مفيدين.
    • تمت إعادة تسمية onValueChangeEnd في Slider إلى onValueChangeFinished وجعلتها nullable.
    • تمت إعادة تسمية المَعلمة text في Snackbar إلى content من أجل الاتساق.
    • تمت إضافة المَعلمة contentPadding إلى DropdownMenuItem للسماح بتخصيص الحشو التلقائي وجعل content إضافةً على RowScope.
    • تمت إعادة تسمية ModalDrawerLayout إلى ModalDrawer.
    • تمت إعادة تسمية BottomDrawerLayout إلى BottomDrawer.
    • (I1cc66)

إصلاح الأخطاء

  • تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد AnimatedVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملف XML بتنسيق <animated-vector> كملف AnimatedImageVector وحرِّكه باستخدام painterFor (I8ea91).
  • تمت إضافة واجهة برمجة تطبيقات جديدة لـ LocalSoftwareKeyboardController محليًا API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)

الإصدار 1.0.0-alpha12

10 شباط (فبراير) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha12. يحتوي الإصدار 1.0.0-alpha12 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمّت إزالة العناصر المركّبة emitView التي تمّ إيقافها نهائيًا. (Ifb214)
  • يتطلب Modifier.pointerInput الآن تذكُّر المفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل دالة التشغيل المتعدّد لرصد إدخال المؤشر لأجل التبعيات الجديدة. (I849cd)
  • تم تغيير اسم CompositionReference إلى CompositionContext (I53fcb)
  • تمت إعادة تسمية Bounds إلى DpRect (I4b32a).
  • تعديل على الاختبار: ستبحث الدالة hasText() عن نصوص الإدخال والنص التعريفي/التلميح/العنصر النائب في الحقل النصي (Iab803).
  • تم نقل العنصر القابل للتجميع viewModel() وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. ستحتاج الآن إلى إضافة تبعية منفصلة androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لاستخدامها. (I7a374)
  • السماح بإجراء nullable في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى String (I0dc82)
  • لمطابقة اصطلاحات التسمية بشكل أفضل مع ImageBitmap وImageVector، تم إعادة تسمية ImagePainter ليصبح BitmapPainter للتوازي مع VectorPainter. (Iba381، b/174565889)
  • تحسين واجهات برمجة التطبيقات لاختبار السلسلة الفرعية باستخدام السلسلة الفرعية الآن كوسيطة (Icbe78)
  • تمت إضافة Modifier.focusOrder() يقبل طلبات التركيز بدون تحديد طلب تركيز مخصّص أو مقياس لامبادا. يكون ذلك مفيدًا عندما نحتاج فقط إلى تحديد مرجع وليس ترتيبًا مخصّصًا للتركيز في عنصر قابل للتركيب (I4f52a، b/179180978).
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الوحدات androidx.activity:activity-compose. (Icf416)
  • تمّت إزالة طريقتَي تحليل البنية وcopy()‎ من عدة فئات حيث نادرًا ما كانتا تُستخدَمَين. (I26702، b/178659281)
  • تم نقل النافذة المنبثقة لتصبح خاصة بمنصّة معيّنة. تمت إعادة تسمية AndroidPopupProperties إلى PopupProperties، وتم نقل isFocusable إلى مَعلمة focusable في PopupProperties (Ieeea5).
  • تم نقل مربّع الحوار ليصبح خاصًا بمنصة معيّنة. تمت إعادة تسمية AndroidDialogProperties إلى DialogProperties. (I4ef69، b/179138130)
  • تمّ جعل LayoutNode داخليًا (I8a7b1، b/175103944)
  • تم استبدال Constraints.enforce بـ Constraints.constrain. (I8b8ea)
  • تم إيقاف loadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. تم إيقاف imageResource وloadImageResource وvectorResource وloadVectorResource نهائيًا. استخدِم painterResource بدلاً من ذلك. (I6b809)
  • لأسباب تتعلّق بالأداء، أصبحت الآن دلالات ScrollAxisRange تأخذ لامدا التي تعرض قيمًا عائمة بدلاً من القيم العائمة المباشرة. (If4a35، b/178657186)
  • تمت إضافة سمات EditableText لوضع علامة على نص الإدخال القابل للتعديل في الحقل النصي لتوفير إمكانية الوصول وطرق الاختبار المقابلة للتحقّق من السمات (I8e07a)
  • تمّ جعل OwnerLayer/OwnerScope/OwnerSnapshotObserver داخليًا (I4ffaf، b/175103944)
  • تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
  • تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
  • تم تعديل Snapshot API لتكون أكثر اتساقًا مع ارشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات المتاحة للجميع. (Id9e32)
  • تمت إضافة إجراءات الدلالات للتوسيع والتقليص. تمت إضافة expand وhalfExpand في ModalBottomSheetState (Ib5064)
  • تم إيقاف Modifier.dragGestureFilter نهائيًا. استخدِم Modifier.pointerInput { detectDragGestures (...)} بدلاً من ذلك. بدلاً من ذلك، استخدِم Modifier.draggable لسحب محور واحد (I0ba93، b/175294473).
  • تمت إعادة تسمية الخلفيات المتغيرة لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كان يُطلق على الخلفيات اسم AmbientFoo، والآن يُطلق على CompositionLocals اسم LocalFoo. (I2d55d)
  • تمت إزالة BaseTextField المتوقّف نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
  • تم نقل التحديد إلى الأساس. (I7892b)
  • على غرار الطريقة التي أزلنا بها سابقًا مكونات state { 0 } وشجّعنا الآن على استخدام مكونات مثل remember { mutableStateOf(0) }، سنزيل مكونات savedInstanceState { 0 }. يجب استخدام rememberSaveable { mutableStateOf(0) } بدلاً من ذلك، وسيتم حفظه واستعادته تلقائيًا إذا كان من الممكن تخزين النوع المستخدَم داخل MutableState في الحِزمة. إذا كنت في السابق تمرّر عنصر حفظ مخصّصًا، عليك الآن استخدام طريقة تحميل زائدة جديدة من rememberSaveable تحتوي على المَعلمة stateSaver. سيظهر الاستخدام على النحو التالي: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26، b/177338004)
  • تمت إضافة دلالات كلمات المرور لتحسين إمكانية الاستخدام (I231ce)
  • تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدم غير المحددة لتحسين إمكانية الاستخدام (I6fe05)
  • تم إيقاف الأداتَين emptyContent() و(@Composable () -> Unit).orEmpty() نهائيًا لأنّهما لم تعُد تؤثران في الأداء أو تُقدّم أي قيمة إيجابية (I0484d)
  • لم تعُد الإصدارات snapshotFlow وwithMutableSnapshot تجريبية (I6a45f)
  • يمكن الآن إغلاق أدوات إعادة التركيب. سيواصل مُعادِلو التركيب المغلقين إعادة التركيب إلى أن تكتمل عمليات التشغيل المتعدّد للوظائف غير المتزامنة الفرعية للتركيب. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينه وبين close. (Ib6d76)
  • تمت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وتمت إعادة تسمية AmbientUiSavedStateRegistry إلى AmbientSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
  • تمت إعادة تسمية العنصر androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac).
  • تم حذف العديد من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا منذ فترة طويلة في حزمة ui. (I2f2dc)
  • تم إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime و AndroidUiDispatcher في compose:ui. (Ib5c36)
  • لم تعُد فئات Outline.* فئات بيانات (I4879e وb/178001427)
  • تمت إزالة view.captureToImage() بدون أي بديل. (I7fcd2)
  • تمّت إضافة واجهة برمجة التطبيقات ColorMatrix API المستخدَمة لتعديل قيم rgb للمحتوى المصدر، كما تمّت إعادة صياغة واجهة برمجة التطبيقات ColorFilter API لتكون واجهة وتتطابق مع تنفيذ PathEffect. (Ica1e8)
  • أضِف مَعلمة layoutDirection إلى createOutline في Shape. يتيح ذلك إنشاء أشكال تراعي اتجاه التنسيق. (I57c20، b/152756983)
  • تم إيقاف الإجراء onImeActionPerformed نهائيًا. استخدِم KeyboardActions بدلاً منه (If0bbd، b/179071523).
  • تمّ تقديم InfiniteAnimationPolicy عنصر سياق coroutine الذي سيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء الاختبارات باستخدام ComposeTestRule. (I50ec4، b/151940543)
  • تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
  • تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بإنشاء سمة parentCoordinates جديدة. تقدّم الآن سمة parentCoordinates سمة LayoutCoordintes الخاصة بالمعدِّل الرئيسي. سيؤدي ذلك إلى توفير حالات استخدام أكثر اكتمالاً لـ onSizeChanged() و onGloballyPositioned() (Idfbfd، b/177926591)
  • تم إيقاف tapGestureFilter وdoubleTapGestureFilter وlongPressGestureFilter وpressIndicaitonGestureFilter نهائيًا. استخدِم Modifier.clickable أو Modifier.pointerInput مع الدالة detectTapGestures بدلاً من ذلك. (I6baf9، b/175294473)
  • تمت إزالة unregisterProvider من SaveableStateRegistry. بدلاً من ذلك، تُعرِض الآن دالة registerProvider() عنصر SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739).
  • تمت إعادة تسمية الدالة rememberSavedInstanceState() إلى rememberSaveable() وتم نقلها إلى الحزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
  • إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة
    • إزالة التحميل الزائد لـ SelectionContainer المتوقف نهائيًا
    • (I99c19)
  • أصبحت الاختبارات التي يتم فيها استخدام Compose في التسلسلات الهرميّة التي تتم إضافتها أو إزالتها مباشرةً إلى WindowManager أكثر ثباتًا. (Ie81ed، b/175765614)
  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن تلقائيًا إلى Recomposers التي تم إنشاؤها بشكل كسول على مستوى النافذة ويتم تشغيلها من قِبل ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب وعلامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)
  • يوفّر Recomposer.runningRecomposers الآن مسار StateFlow عالميًا لـ RecomposerInfo للقراءة فقط من أجل مراقبة حالة الإنشاء الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current() التي تم تجاهلها الآن. (If8ebe)
  • تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
  • تقبل EditCommands AnnotatedString. ومع ذلك، فإنّه تغيير في واجهة برمجة التطبيقات فقط ولم يتم تنفيذ ميزة تعديل النصوص بأشكال متعددة حتى الآن. (I4c3ea)
  • تمت إزالة "مدّة التشغيل" و"المدة". (Ib9bf4، b/177420019)
  • تم نقل CompositionData.asTree() وواجهات برمجة التطبيقات ذات الصلة لفصل وحدة ui-tooling-data وتم وضع علامة عليها كتجريبية (Ic95b8).
  • تمت إعادة تسمية المَعلمات في RounderCornerShape وCutCornerShape وCornerBasedShape من left/right إلى start/end لتمكين ميزة النسخ المطابق التلقائي للشكل في الاتجاه rtl. تمّ تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يكون فيها المطلوب هو النسخ المطابق التلقائي. (I61040، b/152756983)
  • تمّت إعادة صياغة واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمحرِّر Compose لاستخدام واجهة بدلاً من فئة محدّدة. لم تعُد الواجهة تستخدم أيضًا مَعلمة type.

    هذا تغيير داخلي من المفترض ألا يؤثر في توافق ملف رمز المصدر، ولكنه تغيير يؤدي إلى إيقاف تشغيل الإصدار الثنائي. (I3b922، b/169406779)

  • إزالة الدالة العامة StringBuilder.deleteAt بدون قصد (Id6ed9)

إصلاح الأخطاء

  • إنّ ComposeViews التي يتم وضعها في تسلسلات هرمية للعرض تكون عناصر فرعية لمحاولة تركيب أخرى، وهي تستضيف الآن عناصر فرعية لمحاولة التركيب الأصلية (I92883).
  • تم تعديل واجهة برمجة التطبيقات imageFromResource في أداة الإنشاء لإعادة استخدام ذاكرة التخزين المؤقت للعناصر القابلة للرسم في الموارد عند تحميل عناصر ImageBitmap. (If3627، b/178751994)

الإصدار 1.0.0-alpha11

28 كانون الثاني (يناير) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha11. يحتوي الإصدار 1.0.0-alpha11 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة صياغة WithConstraints لتكون BoxWithConstraints وتم نقلها إلى foundation.layout. (I9420b، b/173387208)
  • تم إيقاف Key.DPadUp نهائيًا. استخدِم Key.DirectionUp بدلاً من ذلك. (Iab335، b/177954892)
  • واجهة المالك من الآن فصاعدًا داخلية. (If8e35)
  • تمت إضافة واجهة برمجة التطبيقات FocusManager.moveFocus() لنقل التركيز آليًا. (I045cb، b/177681839)
  • يغيّر PopupPositionProvider لاستخدام الإحداثيات النسبية للنافذة، وليس الإحداثيات الشاملة. إعادة تسمية parentGlobalBounds إلى anchorBounds، وتغيير windowGlobalBounds ليكون windowSize: IntSize (I2994a)
  • سيتم استبدال Duration وUptime بـ Long milliseconds، وتؤدي هذه الخطوة إلى إزالة الاعتماد على إدخال المؤشر في هذين الصنفين. (Ia33b2، b/175142755، b/177420019)
  • تمت إضافة AmbientSavedStateRegistryOwner بشكل مشابه لـ AmbientLifecycleOwner وAmbientViewModelStoreOwner الحاليَين (I9a3e8، b/176756365)
  • تم تعديل واجهة برمجة التطبيقات لرسومات المتجهات لإتاحة تحليل التلوين المُطبَّق على جذر رسومات المتجهات. (Id9d53، b/177210509)
  • تمت إضافة toolType إلى PointerInputChange للتمييز بين الأجهزة (Iac787، b/175142755)
  • تمت إعادة تسمية AmbientWindowManager إلى AmbientWindowInfo (I2686a وb/177084714 وb/177084983)
  • إيقاف طُرق الإحداثيات العامة نهائيًا واستخدام طُرق جديدة للإحداثيات المستندة إلى النافذة (Iee284)
  • تمت إضافة Modifier.toolingGraphicsLayer الذي يضيف معدِّلًا لطبقة الرسومات عند تفعيل الفحص. (I315df)
  • تم وضع علامة "تجريبية" على FocusRequester.createRefs لأنّه قد يتغيّر. (I2d898، b/177000821)
  • تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة عليها @ExperimentalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية stateDescriptionRange إلى progressBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontalScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)
  • تمّت إزالة PointerInputData وتعديل PointerInputChange لإعطائه جميع حقول PointerInputData. تمّ جعل PointerInputEvent وPointerInputEventData داخليَين لأنّهما لا يتم استخدامهما في أيّ واجهة برمجة تطبيقات علنية. (Ifff97، b/175142755)
  • تم تعديل GraphicsLayerScope لتنفيذ الكثافة لدعم عمليات تحويل وحدات dp إلى وحدات بكسل أولية. (Ied528، b/176819695)
  • تم تعديل واجهة برمجة التطبيقات الخاصة بالمصفوفات لتتمكّن من اتّباع الترتيب العميق للصفوف وتوفير ثوابت الفهرس للمساعدة في عمليات التحويل بين مختلف طرق تمثيل المصفوفات لمطابقة منطق تحويل الإطار بين SkMatrix وMatrix4 بشكل داخلي. (I432e6)
  • تمت إزالة الطرق التجريبية monotonicFrameAnimationClockOf (Ib753f، b/170708374)
  • نقل String.fintPrecedingBreak وString.fingFollowingBreak إلى InternalTextApi (I657c4)
  • تمت إزالة androidx.compose.ui.util.isSurrogatePair من واجهة برمجة التطبيقات العامة. (Ia9494)
  • تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text
    • لم تعُد TransformedText فئة بيانات (Ie672a)
  • تمت إزالة data class من الصفوف التالية:
    • InlineTextContent
    • LocaleList (I605c7)
  • لم تعُد الفئات التالية فئات بيانات:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • تم تغيير VisualTransformation لتكون واجهة وظيفية (I3bba4)
  • تمت إضافة نوع مَعلمة مرجع دالة (I5e1bd).
  • إضافة حدود محوَّلة إلى InspectorNode‏ (Ice42f)

إصلاح الأخطاء

  • تم إيقاف وظائف onCommit وonDispose وonActive نهائيًا لصالح واجهات برمجة التطبيقات SideEffect وDisposableEffect (If760e).
  • تغييرات على وظائف المصنع لـ Font/FontFamily/Typeface

    • تمّت إضافة دوال المصنع التي تبدأ بحرف لاتيني كبير.
    • تم إيقاف دوال المصنع السابقة نهائيًا التي تحتوي على أحرف أولى صغيرة.
    • تعرض وظائف المصنع الجديدة FontFamily بدلاً من الفئات الفرعية.
    • تم إخفاء أدوات إنشاء الفئات الفرعية، بحيث لا يمكن إنشاؤها إلا من خلال دوال المصنع.
    • تمت إعادة تسمية Font.asFontFamily إلى Font.toFontFamily (I42aa7)
  • تمّت إضافة ComposeContentTestRule التي تمتد ComposeTestRule وتحدّد setContent التي تمّت إزالتها من ComposeTestRule. تمت إضافة طريقة المصنع createEmptyComposeRule() التي تعرض ComposeTestRule ولا تبدأ نشاطًا نيابةً عنك. استخدِم هذا الإجراء عندما تريد إطلاق نشاطك أثناء الاختبار، مثلاً باستخدام ActivityScenario.launch (I9d782، b/174472899).

  • أصبح animateAsState الآن animateFooAsState، حيث Foo هو نوع المتغيّر الذي يتمّ تطبيق مؤثرات عليه، مثل Float وDp وOffset وما إلى ذلك (Ie7e25).

  • تمت إضافة مَعلمة وصف المحتوى إلى "الصورة" و"الرمز". يتم استخدامه لتوفير وصف لخدمات تسهيل الاستخدام (I2ac4c).

  • أزِل displaySize لأنّه يجب تجنُّبه. من الأفضل عادةً استخدام حجم onRoot() أو حجم النافذة على الأقل. (I62db4)

  • كان OnSizeChanged يُبلغ عن حجم محتويات التنسيق. ويُبلِغ الآن عن الحجم في موضعه ضمن سلسلة المُعدِّلات. (I36b78، b/177562900)

  • تم إيقاف واجهة برمجة التطبيقات emit()‎ وجميع عمليات التحميل الزائد نهائيًا وتمت إعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكنّها تحمل اسمًا مختلفًا فقط لاتّباع اصطلاحات التسمية في Compose (I4137b).

  • يقبل TextFieldValue AnnotatedString. ومع ذلك، فإنّه تغيير في واجهة برمجة التطبيقات فقط ولم يتم تنفيذ ميزة تعديل النصوص بأشكال متعددة حتى الآن.

    • تمت إزالة initial من مَعلمات أداة إنشاء EditingBuffer. (I326d5)
  • تم إيقاف invalidate وcompositionReference() نهائيًا الآن لصالح currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)

  • تم تغيير AnnotatedString لتصبح ممتدة من kotlin.CharSequence. وبالتالي، أصبحت length وsubSequence الآن دوالًا فردية، وتمت إزالة دوال التوسيع. (Iaf429)

  • يحلّ RememberObserver محلّ CompositionLifecycleObserver ، وقد تم إيقاف CompositionLifecycleObserver نهائيًا.

    RememberObserver هو بديل لمحاولة CompositionLifecycleObserver مع دلالات معدَّلة ومحاولة أساليب تمت إعادة تسميتها. يمكن إجراء عملية التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكُّرها مرة واحدة فقط، وهي الممارسة المُقترَحة والتي ستظل كذلك. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاء onRemembered لكل مرجع يتم فيه استدعاء onEnter مرة واحدة فقط. تم استدعاء onEnter عدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثل WithConstraints وScaffold، ما يجعل الضمان الوحيد لonEnter غير موثوق به وتمّت إزالته من أجل RememberObserver.

    تضيف RememberObserver onAbandoned التي يتمّ استدعاؤها إذا تمّت إعادة مثيل RememberObserver من طلب الاستدعاء الذي تم تمريره إلى remember ولكنّه لم يتمّ تذكره في حالة الإنشاء ، وبالتالي لن يتمّ استدعاء onRemembered مطلقًا. يمكن أن يحدث ذلك إذا كان هناك استثناء ينهي عملية الإنشاء قبل اكتمالها أو يتم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تُنشئ عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كانت نسخة RememberObserver التي تتّبع اقتراح المراجع الفردية أعلاه تتتبّع مرجعًا خارجيًا، يشير كلّ من onForgotten وonAbandoned إلى أنّه لم يعد هناك حاجة إلى المرجع. إذا كان الكائن يتتبّع العمل الذي بدأه أو الموارد التي تم تخصيصها في onRemembered، يمكن تجاهل onAbandoned لأنّه لن يتم استدعاؤه في حال تم استدعاء onRemembered. (I02c36)

  • العمليات الحسابية المتوقّفة نهائيًا بين وحدتَي نص أو أكثر إيقاف الدالتَين TextUnit.Sp وTextUnit.Em نهائيًا، مع تفضيل استخدام دوال الإضافات، مثل Int.sp وInt.em (I48369)

  • إنّ المراجع في المكتبات التي لا تتضمّن مراجع عامة مُعلَن عنها صراحةً (مثلاً من خلال public.xml) أصبحت الآن خاصة بشكل تلقائي. (Ia1dcc، b/170882230)

  • تم إيقاف عنصرَي ScrollableColumn/Row نهائيًا. إنّ استخدام ScrollableColumn أقل فعالية مقارنةً بـ LazyColumn عندما يكون لديك محتوى كبير قابل للتمرير، لأنّه باستخدام LazyColumn يمكننا فقط إنشاء/قياس/رسم العناصر المرئية. لمنع المستخدمين من استخدام الطريقة غير الفعّالة، قرّرنا إيقاف ScrollableColumn وScrollableRow نهائيًا وتعزيز استخدام LazyColumn وLazyRow بدلاً من ذلك. سيظل بإمكان المستخدمين تحديد أنّهم لا يحتاجون إلى السلوك البطيء واستخدام عوامل التعديل مباشرةً على النحو التالي: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b، b/170468083)

  • طريقة إنشاء items(count: Int) جديدة لنطاق LazyColumn/LazyRow/LazyVerticalGrid أصبحت الدالتان items(items: List) وitemsIndexed(items: List) الآن دوالّ إضافية، لذا عليك استيرادهما يدويًا عند استخدامهما. وظائف إضافية جديدة للمصفوفات: items(items: Array) وitemsIndexed(Array) (I803fc، b/175562574)

  • يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction.

    • يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
  • الاستفادة من TestCoroutineDispatcher في الاختبار (I532b6)

  • تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)

  • تم إيقاف العنصر Transition المستنِد إلى TransitionDefinition نهائيًا (I0ac57)

  • تمت إزالة TextUnitType.Inherit. يُرجى استخدام TextUnitType.Unspecified بدلاً من ذلك. (I9ff64)

الإصدار 1.0.0-alpha10

13 كانون الثاني (يناير) 2021

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha10. يحتوي الإصدار 1.0.0-alpha10 على هذه المراجعات.

تغيير قد يؤدي إلى حدوث أعطال

  • تسمح إعادة هيكلة واجهة برمجة التطبيقات الخاصة بالمجمِّع الداخلي بجمع التغييرات في العقد التي تم إنشاؤها نتيجةً للتركيب في مرحلة "تطبيق التغييرات" ، بعد اكتمال جميع وظائف @Composable.

    هذا تغيير سلوكي أساسي قد يؤثر في رمز التطبيق لأنّه لم تعُد العقد متاحة من واجهات برمجة التطبيقات الداخلية والتجريبية إلى أن يتم تطبيق التغيُّرات. يمكن عادةً حلّ هذه المشكلة من خلال إحاطة الرمز البرمجي بهذه التبعيات في ملف SideEffect قابل للتركيب لتأجيل تنفيذ الرمز البرمجي إلى ما بعد إنشاء العقد و تهيئةها. (I018da)

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة Modifier.focusOrder() التي يمكن استخدامها لتحديد ترتيب مخصّص للتنقّل في التركيز (I90cf5 وb/175899543 وb/170155556 وb/170155429)
  • تمت إزالة focusObserver المتوقّف نهائيًا واستخدام onFocusChanged أو onFocusEvent بدلاً منه (I3ecb9، b/175156387)
  • التغييرات في واجهة برمجة التطبيقات EditOperations API
    • تمت إعادة تسمية EditOperation باسم EditCommand
    • تمت إضافة اللاحقة Command لعمليات التنفيذ المحدّدة لـ EditOperation
    • لم تعُد فئات البيانات هي EditCommand.
    • تمت إعادة تسمية الدالة EditOperation.process إلى applyTo
    • تمت إعادة تسمية InputEventListener إلى InputEventCallback
    • (I0a366)
  • تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَمة. تم تغيير Size.center() ليصبح سمة. (I973f7)
  • ستتمكّن الآن وحدة ui-test من ضبط إنشاء أدوات إعادة التركيب لواجهات المستخدم التي يتم اختبارها (Ibebd8).
  • تم تعديل Velocity ليكون لها أجزاء مكوّنة وعمليات حسابية. (Ib0447)
  • تمت إعادة تسمية @ExperimentalTesting إلى @ExperimentalTestApi لتكون متسقة مع التعليقات التوضيحية المشابهة لواجهة برمجة التطبيقات التجريبية (Ia4502 وb/171464963).
  • تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
  • تمت إزالة الفئات DpInverse وDpSquared وDpCubed غير المستخدَمة. (I4d62b)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • أضِف دالة استدعاء لإعلام المالك عند تغيير حدود layoutnode. (I72fd1)
  • تمت إضافة isSpecified وisUnspecified وuseOrElse لklassen المضمّنة التي تحتوي على ثابت Unspecified. (I93f7b، b/174310811)
  • توسيع نطاق واجهات برمجة التطبيقات [Abstract]ComposeView للسماح بإعادة استخدام المشاهد المستندة إلى Compose، مع التخلص من تركيبتها لإعادة إنشائها مجددًا لاحقًا أضِف واجهات برمجة تطبيقات لتثبيت واكتشاف أدوات إعادة التركيب على مستوى النافذة وCompositionReferences لإنشاء تركيبات فرعية.

    أضِف ViewCompositionStrategy لضبط استراتيجية التخلص من التركيب في [Abstract]ComposeViews. السلوك التلقائي هو التخلص عند فصل النافذة. (I860ab)

  • إزالة واجهة برمجة التطبيقات العامة Any.identityHashCode()‎ (I025d7)

  • تمت إزالة واجهة برمجة التطبيقات toStringAsFixed لصالح استخدام String.format بدلاً من ذلك مباشرةً. (Iaba6b)

  • إضافة Toggle إلى ملف foundation Strings.kt (I4a5b7، b/172366489)

  • تم نقل nativeClass إلى ملف برمجي ui وجعله داخليًا. تم تعديل استخدامات nativeClass في تنفيذات equals لاستخدام 'is MyClass' بدلاً من ذلك. (I4f734)

  • تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48 وb/175160751 وb/175160532 وb/175077829)

  • تمّ تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات إلى SelectionManager بشأن تعديلات Selectable. (I6ff30، b/173215242)

  • تمّت إضافة السمة Outline.bounds للحصول على مستطيل الحدود لعمليات تنفيذ المخططات المختلفة. (I16e74، b/175093504)

  • تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255).

  • لم تعُد فئة البيانات ImeOptions وKeyboardOptions متوفّرة (I3c898، b/168684531)

  • تغييرات في VisualTransformation API

    • تمت إعادة تسمية OffsetMap إلى OffsetMapping
    • تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
    • لم تعُد PasswordTransformation فئة بيانات.
    • تم نقل OffsetMapping إلى ملفه الخاص
    • (I0bdf3)
  • تمت إعادة تسمية Position إلى DpOffset وإزالة getDistance()‎ (Ib2dfd)

  • تم تغيير دالة fun Dp.isFinite() إلى val Dp.isFinite (I50e00)

إصلاح الأخطاء

  • يعرض تطبيق Recomposer الآن مسارًا لحالته الحالية، ما يتيح مراقبة نشاطه ونشاط التأثيرات المرتبطة به. (Ifb2b9)
  • يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).
  • تم استبدال animate() الآن بـ animateAsState()، الذي يعرض State<T> بدلاً من T. يتيح ذلك تحسين الأداء، لأنّه يمكن تضييق نطاق الإبطال إلى حيث تتم قراءة قيمة State. (Ib179e)
  • أضِف واجهة برمجة التطبيقات لدور Semantics وأضِف الدور كمَعلمة لسمة SemanticsModifier التي يمكن النقر عليها واختيارها وتبديلها. تم تغيير Modifier.progressSemantics لكي يتمكّن Slider من استخدامه أيضًا. (I216cd)
  • واجهة برمجة تطبيقات جديدة مستندة إلى وظائف الاستدعاء المتعدّد Animatable تضمن التداخل المتبادل بين الرسومات المتحركة
    • سمة DecayAnimationSpec جديدة لتتوافق مع ميزة التحلل المتعدد الأبعاد
    • (I820f2، b/168014930)

الإصدار 1.0.0-alpha09

16 كانون الأول (ديسمبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha09. يحتوي الإصدار 1.0.0-alpha09 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة KeyEvent.Alt الذي تم إيقافه نهائيًا. استخدِم KeyEvent.isAltPressed بدلاً من ذلك. (Idd695)
  • تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter نهائيًا، ويمكنك استخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً منهما (Idbf1b، b/175156384)
  • تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17، b/168511863، b/168511484)
  • بالنسبة إلى واجهات برمجة التطبيقات الخاصة بتعليق إدخال مؤشر الماوس، تمت إعادة تسمية دالة HandlePointerInputScope إلى AwaitPointerEventScope ودالة handlePointerInput() إلى awaitPointerEventScope(). (Idf0a1، b/175142755)
  • أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الموافقة (I0a1ec).
  • إضافة تعريفات إزالة البنية لإنشاء نُسخ من FocuSRequester (I35d84، b/174817008)
  • تمت إعادة تسمية accessibilityLabel إلى contentDescription. تمت إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)
  • تمت إزالة الأحداث المخصّصة من واجهة برمجة التطبيقات لتعليق إدخال المؤشر (Ia54d5، b/175142755)
  • تمّت إضافة العديد من الدوالّ الجديدة في SelectionRegistrar، كما تمت إعادة تسمية onPositionChange إلى notifyPositionChange. (Ifbaf7)
  • المزيد من أعضاء LayoutNode الذين وضعنا علامة "داخلي" عليهم (I443c6)
  • تمّ تقديم LayoutInfo ليستخدمه فريقا الأدوات والاختبار (I9b190).
  • تمّت إزالة AndroidOwner إلى ملف داخلي (Ibcad0، b/170296980)
  • تمت إزالة التعليق التوضيحي ExperimentalPointerInput (Ia7a24)
  • تمت إضافة نظام لتصفّح الصفحات المُدمجة. يُرجى الرجوع إلى Modifier.nestedScroll للاطّلاع على مزيد من التفاصيل (I36e15، b/162408885).
  • تمّ جعل subcomposeInto(LayoutNode) داخليًا (Id724a)
  • تم تغيير واجهة Applier لتبسيط إنشاء الأشجار من الأسفل إلى الأعلى بدلاً من الأعلى إلى الأسفل.

    تمت إعادة تسمية الطريقة insert() ليصبح اسمها insertTopDown().

    تمت إضافة طريقة جديدة، وهي insertBottomUp().

    يُدخل مُطبِّق العقد في الشجرة التي يعدّلها باستخدام insertTopDown() أو insertBottomUp()، وذلك استنادًا إلى الإجراء الذي يحقّق أداءً أفضل.

    إنّ بعض الأشجار، مثل LayoutNode وView، تكون أكثر فعالية عند إنشائها من أسفل إلى أعلى مقارنةً من أعلى إلى أسفل. قبل هذا التغيير، كان مطلوبًا استخدام حزمة من عمليات الإدراج لتنفيذ الإجراء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كلّ أداة تطبيق تحتاج إلى الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير، Applier يتجاوز insertBottomUp() لإنشاء شجرة من الأسفل إلى الأعلى و insertTopDown() لإنشاء الشجرة من الأعلى إلى الأسفل. (Icbdc2)

  • تمت إضافة السمتَين dismissOnBackPress وdismissOnClickOutside إلى AndroidDialogProperties. تسمح هذه الإعدادات بضبط وقت استدعاء دالة onDismissRequest في مربّع الحوار. (If5e17)

  • تمت إضافة واجهة برمجة التطبيقات painterResource API لمعالجة تحميل عناصر Painter بشكل غير شفاف من تنسيقات مواد العرض النقطية (مثل ملفات PNG) أو VectorDrawables. لم يعُد على المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم استدعاء هذه الطريقة للحصول على عنصر Painter لاستخدامه في مكونات الصور أو عناصر تعديل Painter. (I2c703، b/173818471)

  • تمت إضافة Modifier.clearAndSetSemantics لمحو سمات العناصر المشتقة وضبط سمات جديدة. (I277ca)

  • تم نقل ContentDrawScope إلى وحدة ui-graphics لتكون مع DrawScope. (Iee043، b/173832789)

  • تمّ تقديم واجهة برمجة التطبيقات PathEffect graphics API لتوفير أنماط مختلفة للأشكال التي تحتوي على خطوط. تم إيقاف استخدام NativePathEffect نهائيًا لصالح التنفيذ المتوقّع/الحقيقي لـ PathEffect. (I5e976، b/171072166)

  • تمت إضافة واجهات IdlingResource إلى Compose، كخيار متوافق مع Compose لموارد الإستراحة في Espresso. ويمكن تسجيلها وإلغاء تسجيلها من خلال ComposeTestRule (I433f3).

  • تمت إزالة التسجيل (أو إلغاء التسجيل) العام لـ ComposeIdlingResource والتسجيل (أو إلغاء التسجيل) العام للساعات في ComposeIdlingResource (I32660).

إصلاح الأخطاء

  • تعرِض الآن دالات Lambda في مُعدِّلات البادئة IntOffset بدلاً من Float. (Ic9ee5، b/174137212، b/174146755)
  • تمت إزالة SlotTable وSlotReader و SlotWriter من واجهة برمجة التطبيقات المتاحة للجميع. كانت هذه الواجهتَان تحملان سابقًا الاسم InternalComposeAPI. وهي الآن داخلية لوحدة الإنشاء.

    تمّت إضافة CompositionData وCompositionGroup كبديلين لواجهة برمجة التطبيقات ui-tooling API لاستخدامهما في استخراج معلومات التركيب. هذه الواجهات برمجة تطبيقات عامة، ولكنّها ليست مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling API لأنّها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling API (I31a9c).

  • تم إعادة صياغة ShaderBrush لإنشاء مثيل لمخطّط الإضاءة بشكلٍ كسول عند توفّر معلومات تحديد حجم بيئة الرسم. يكون ذلك مفيدًا لتحديد التدرجات التي تشغل حدود الرسم الكاملة للعنصر القابل للتركيب في وقت التركيب، بدون الحاجة إلى تنفيذ عمليات DrawModifier مخصّصة.

    واجهات برمجة التطبيقات المتوقّفة لدالة إنشاء الدالة المتدرجة بدلاً من طرق الإنشاء على عنصر Gradient (I511fc، b/173066799)

  • إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed نهائيًا استخدِم LazyColumn وLazyRow بدلاً من ذلك (I5b48c).

  • دالة BuildCompat.isAtLeastR المتوقّفة نهائيًا (Idb37e)

  • تمت إضافة دالة المصنع buildAnnotatedString لإنشاء AnnotatedString. دالة annotatedString builder المتوقّفة نهائيًا (Idfe0b)

  • تمّت إزالة طرق التوسيع في Float وDouble لتحويل القيم إلى وحدات راديان. تم نقلها لتصبح دالة خاصة ضمن التنفيذ PathParser الذي كان هو المكان الوحيد الذي تم استخدامه فيه (I25f52)

الإصدار 1.0.0-alpha08

2 كانون الأول (ديسمبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha08. يحتوي الإصدار 1.0.0-alpha08 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إضافة إجراء الرفض الدلالي (I2b706)
  • تم نقل واجهات برمجة التطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifierDeprecated.kt لدمج طرق المساعدة/الأسماء البديلة للأنواع للمساعدة في نقل البيانات من واجهات برمجة التطبيقات المتوقفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer كما تم تعديل الصفوف ذات الصلة إلى GraphicsLayer وفقًا لملاحظات الواردة من واجهة برمجة التطبيقات. (I0bd29، b/173834241)
  • تمت إضافة الطريقتَين placeable.placeWithLayer() وplaceable.placeRelativeWithLayer() اللتين تتيحان للتنسيقات المخصّصة وعوامل تعديل التنسيق وضع عنصر فرعي من خلال تقديم طبقة رسومات لرسمه. بعد ذلك، يمكننا تحسين عمليات إعادة الرسم أولاً، لكي لا نضطر إلى إعادة رسم المحتوى عندما نحتاج إلى نقل عنصر فرعي، وثانيًا، يمكننا تطبيق عمليات تحويل الرسم على العنصر الفرعي (Ibd8f6 وb/170296989 وb/171493718 وb/173030831).
  • تمت إزالة <T> من تعريف SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8)
  • تمت إضافة واجهات برمجة التطبيقات Modifier.scale/rotate لتسهيل استخدام drawLayer.
    • تمت إعادة تسمية Modifier.drawOpacity إلى Modifier.alpha
    • تمت إعادة تسمية Modifier.drawShadow إلى Modifier.shadow (I264ca، b/173208140)
  • جعلت حقلَي uptime و position في PointerInputData غير قابلَين للحذف. (Id468a)
  • يضبط MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستندة إلى لغة Material Design استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة للاختيار. (I1e6f4، b/139320372، b/139320907)
  • تمت إضافة WindowManager.isWindowFocused للتحقّق مما إذا كانت نافذة المضيف في المقدّمة، وWindowFocusObserver الذي يقدّم دالة استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
  • تم تعديل TransformOrigin API لإدراج بنية تحليل لعرض pivotFractionX وpivotFractionY على هيئة component1 وcomponent2 (If43c4، b/173586560)
  • تمت إضافة فحص أخطاء لأسماء مَعلمات lambda القابلة للتركيب وموقعها، وذلك للتحقّق من اتّساقها مع إرشادات Compose. تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم children كاسم لدالة lambda اللاحقة إلى content، وفقًا لفحص الأخطاء الإملائية والإرشادات. (Iec48e)
  • تمت إضافة واجهة برمجة التطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث مفتاح. (I50ed9)
  • تمت إضافة ميزة "تحميل زائد" جديدة في Modifier.drawLayer(). تأخذ هذه الوظيفة كتلة lambda في GraphicsLayerScope جديدة حيث تحدِّد مَعلمات الطبقة بطريقة تسمح بتخطّي إعادة التركيب وإعادة التنسيق عند حدوث تغيير في الحالة. أصبح DrawLayerModifier داخليًا الآن استعدادًا لنقل منطقه إلى طريقة placeable.placeWithLayer() في LayoutModifier (I15e9f، b/173030831)
  • تم إيقاف الخلفيات المُدمجة نهائيًا التي تحمل Ambient كلاحقة، وتم استبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك باتّباع إرشادات الخلفيات المُدمجة وCompose API الأخرى. (I33440)
  • تم نقل androidx.compose.ui.text.Typeface إلى androidx.compose.ui.text.font.Typeface (Ic2b81)
  • تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants لتصبح mergeDescendants. (Ib6250)
  • أداة جديدة لرصد إيماءات السحب تعمل على تعليق واجهة برمجة التطبيقات الخاصة بالمؤشر الإدخال، بما في ذلك قفل الاتجاه (Icef25)
  • تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder لتكون صفًا داخليًا من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة نوع بديل لواجهة VectorAssetBuilder لربطها بواجهة ImageVector.Builder من أجل التوافق. (Icfdc8)
  • تمت إعادة تسمية ImageAsset و الطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
  • أضِف مَعلمة zIndex لـ place() في PlacementScope حتى يعمل Modifier.zIndex() الآن كـ LayoutModifier ويمكن لأي تنسيق مخصّص ضبط فهرس zIndexes لأطفاله مباشرةً في قالب موضع الإعلان (I711f7، b/171493718).
  • تم نقل خصائص الدلالات الأساسية إلى ui (I6f05c).
  • إيقاف place(Offset) وplaceRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع وحدات الإزاحة int بدلاً من ذلك (I4c5e7).
  • تمّت إزالة واجهات برمجة التطبيقات التي تمّ إيقافها نهائيًا في السابق: تمّت إزالة Modifier.onPositioned، استخدِم Modifier.onGloballyPositioned. تمّت إزالة Modifier.onDraw، استخدِم Modifier.onDrawBehind. تمّت إزالة Modifier.plus، استخدِم Modifier.then. تمت إزالة Color.Unset، استخدِم Color.Unspecified. تمّت إزالة فئة PxBounds، استخدِم Rect بدلاً من ذلك. (Ie9d02، b/172562222)
  • تم تعديل واجهة "المحاذاة" وجعلها صالحة للاستخدام. (I46a07، b/172311734)
  • تمّت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وإشارة الضغط باستخدام إدخال المؤشر المعلّق الجديد. تمت أيضًا إضافة بعض الأدوات التي تسهّل على المطوّرين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
  • تمت إعادة تسمية id إلى layoutId في LayoutIdParentData. تمت إعادة تسمية Measurable.id إلى Measurable.layoutId. (Iadbcb، b/172449643)
  • أداة جديدة لرصد الإيماءات التي تستخدم تقنية اللمس المتعدّد، بما في ذلك مساعِد لرصد التدوير والتكبير والتصغير (Ic459d)
  • تمّت إضافة واجهات برمجة التطبيقات SweepGradientShader وSweepGradientBrush. (Ia22c1)
  • أصبح التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521).
  • إضافة واجهات برمجة تطبيقات لميزة الانتقال للأعلى أو للأسفل المستندة إلى وظائف التشغيل المتعدّد:

    تضيف هذه الإضافة LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهة برمجة تطبيقات من المستوى الأدنى للتحكّم في الانتقال للأعلى أو للأسفل. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكّم في الانتقال للأعلى أو للأسفل، والتي تنتظر إلى أن ينتهي الانتقال للأعلى أو للأسفل قبل العودة. (Ie5642)

  • يجب إضافة Modifier.focusable في الأساس. استخدِم هذا الإجراء لإضافة سلوك قابل للتركيز إلى مكوّن، مع الدلالات وإمكانية الوصول الصحيحة. (I41eb9 وb/152525426 وb/162865824)

  • يجب توفير عمليات تنفيذ تلقائية للطرق والسمات في AnimationClockTestRule التي يمكن تفويضها إلى clock (I7ea3d، b/173399709).

  • يمكن الآن لـ AndroidComposeTestRule قبول مشغّلات نشاط مخصّصة (Ib8288 وb/153623653 وb/154135019).

  • تم إيقاف TextLayoutResult.getLineVisibleEnd نهائيًا. كبديل، يحتوي TextLayoutResult.getLineEnd الآن على مَعلمة جديدة هي visibleEnd. (I73282)

  • واجهة برمجة التطبيقات TextFieldValue API المعدَّلة

    • جعلت TextFieldValue.composition للقراءة فقط
    • تمّت إزالة استثناء تمّ طرحه لنطاق اختيار غير صالح (I4a675، b/172239032)
  • إتاحة عنصر TtsAnnotation لمحرّك تحويل النص إلى كلام (I54cc6)

  • واجهات برمجة تطبيقات جديدة لتشغيل الرسوم المتحركة في وظائف التشغيل المتعدّد (Ied662)

إصلاح الأخطاء

  • تمت إعادة تسمية مَعلمة alignment الخاصة بمربّع المحتوى إلى contentAlignment. (I2c957)
  • تمت إعادة تسمية معدّلات offsetPx إلى offset. وهي الآن تستخدم مَعلمات lambda بدلاً من State. (Ic3021، b/173594846)
  • تمت إضافة مَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
  • تمت إضافة فحص أخطاء لإعدادات المُعدِّل في الدوالّ القابلة للتجميع. يتحقّق فحص الأخطاء هذا من تسمية المَعلمة ونوعها ونوع القيمة المعروضة وترتيبها للتأكّد من توافقها مع إرشادات Compose. (If493b)
  • تمت إضافة خيار مؤقت للسماح لـ TestAnimationClock بالاستناد إلى MonotonicFrameClock (I1403b، b/173402197)
  • تمت إضافة حزمة Android Typeface. يمكنك تحميل نوع خط Android من خلال دالة typeface، أي typeface(Typeface.DEFAULT). تمت أيضًا إعادة تسمية typefaceFromFontFamily() إلى typeface() (I52ab7)
  • تمت إضافة فحص أخطاء لضمان أنّ وظائف مصنع Modifier محدّدة كإضافات على Modifier، حتى يمكن ربطها ببعضها بسلاسة. (I07981)
  • إزالة وحدة اختبار واجهة المستخدم القديمة ووحداتها النموذجية (I3a7cb)
  • لم تعُد أداة Recomposer تقبل سياق EmbeddingContext، ويتم الحصول على التبعيات المطلوبة لجدولة المهام من effectCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تبدأ عمليات دمج المنصات في التعامل مع اللقطات الشاملة الخاصة بها. (I02369)
  • نقْل معلومات النمط إلى عقدة تسهيل الاستخدام (If5e8d)
  • تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified من أجل الاتساق مع الوحدات الأخرى. (Ifce19)

الإصدار 1.0.0-alpha07 لواجهة مستخدم ميزة "إنشاء"

11 تشرين الثاني (نوفمبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha07. يحتوي الإصدار 1.0.0-alpha07 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمّت إضافة فئة ScaleFactor المضمّنة لتمثيل عوامل التكبير للمحورين الأفقي وعمودي بشكل مستقلّ عن بعضهما البعض بغرض إتاحة حالات استخدام التكبير غير المتّسق.
    • تمت إضافة طريقة computeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لإجراء عملية تكبير/تصغير غير منتظمة لتمديد حدود المصدر لكي تشغل الوجهة بالكامل.
    • تمت إضافة طرق عوامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
    • (Ic96a6، b/172291582)
  • تمت إضافة مصنعَي BiasAlignment وBiasAbsoluteAlignment لإنشاء Alignements. (Iac836، b/169406772)
  • السماح للمطوّر بإلغاء التركيز بشكلٍ قسري (I90372)
  • تم إصلاح خطأ كان يتسبب في عدم رسم الارتفاع لـ "المشاهد" داخل "الإنشاء". (If7782)
  • تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
  • إضافة إمكانية استخدام مسافة الكاميرا لإكمال عمليات التحويل الثلاثية الأبعاد rotationX/rotationY في واجهات برمجة التطبيقات للطبقات (I40213، b/171492100)
  • تمت إضافة SelectionContainer بدون دالة ردّ الاتصال (Ibfadb)
  • تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7).
  • تمت إزالة التعتيم من المُعدِّل drawShadow() لأنّه كان مربِكًا. (I82c62، b/171624638)
  • تم نقل MeasureResult خارج MeasureScope. (Ibf96d، b/171184002)
  • تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
  • تمّت إزالة FocusState2 (I686cb، b/168686446) التي تمّ إيقافها نهائيًا.
  • أصبح مُعدِّل "فهرس المستوى" داخليًا الآن (I1808b، b/171493718)
  • تم تعديل نوع الإرجاع لطريقة lerp في مَعلمات Size لعرض قيمة مقاس غير صفرية لتجنُّب التفاف غير الضروري. (Ib0044)
  • تمت إضافة TestMonotonicFrameClock لاختبار الرمز البرمجي الذي يعتمد على MonotonicFrameClock في Compose في انتظار أحداث اللقطات في التركيب باستخدام runBlockingTest في kotlinx-coroutines-test (I4402f)
  • تمت إزالة GestureScope.localToGlobal (I15299، b/171462785)
  • تمت إضافة أداة البحث عن onAllNodesWithSubstring (I81dd7، b/171462889)
  • تم إيقاف وحدة androidx.ui.test نهائيًا. يُرجى نقل الإصدار إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8).

إصلاح الأخطاء

  • تم نقل captureToBitmap إلى captureToImage. (I86385)
  • تم إيقاف عنصر foundation.Text نهائيًا واستبداله بعنصر material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية لا تتضمّن أي آراء ولا تستخدِم قيمًا من مظهر، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
  • تعديل TextFields لقبول KeyboardOptions (Ida7f3)
  • إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
  • تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
  • تمت إضافة provideDefault كبديل لتقديم القيم المحيطة، ويمكن استخدامه لتحديد القيم المحيطة التي لن يتم ضبطها إلا في حال عدم توفّر قيمة محيطة مقدَّمة من قبل. (Id6635، b/171024925)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تقديم وحدة ui-test-junit4 (Ib91f8)
  • تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة المُعدِّل paddingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect للحفاظ على الاتساق مع واجهات برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدونparam subject لتعزيز أفضل الممارسات. (Ifd3d4)
  • تمّت إضافة موارد قابلة للتجميع يمكن إعادة تركيبها عند تعديل الإعدادات. (I6387c، b/167352819)
  • يتطلب Recomposer الآن CoroutineContext عند الإنشاء (Ic4610)
  • تجميع قيم zIndex عند تطبيق عدّة Modifier.zIndex() في السابق، كان الخيار الأول هو الخيار الفائز. (Ic514c، b/170623936)
  • تغييرات على طريقة تنفيذ SlotTable الداخلية التي من المفترض ألا تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
  • تمت إضافة خيار IME للتصحيح التلقائي للوحة المفاتيح (I57b8d)
  • تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
  • تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات العامة. (Ic2e45)

المساهمة الخارجية

  • تم إيقاف نشر العنصر الداخلي androidx.compose.ui:ui-text-android‏ (Ib93fa)

الإصدار 1.0.0-alpha06

28 تشرين الأول (أكتوبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha06. يحتوي الإصدار 1.0.0-alpha06 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • أصبح Recomposer الآن عنصر CompositionReference وأحد عناصر التكوين صالحة. أصبح استخدام ميزة "إعادة التركيب الصريح" مطلوبًا الآن في عدد أقل من الأماكن. (I4036f)
  • إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لبيان بشكل أفضل أنّ واجهة برمجة التطبيقات القابلة للتركيب تستفيد من "التذكر" للحفاظ على البيانات في التراكيب (Ifda43)
  • تم تعديل واجهة برمجة التطبيقات Modifier.drawWithCache لإظهار ContentDrawScope كنطاق مستلِم بدلاً من DrawScope من أجل منح عمليات التنفيذ إمكانية إعادة ترتيب أوامر الرسم. يكون ذلك مفيدًا لحالات استخدام الدمج/ التلوين التي يجب فيها أولاً عرض بكسل المحتوى كي يتم تطبيق خوارزمية وضع الدمج المقابلة بشكل صحيح. (Ie7ec8)
  • نقل SimpleContainer إلى PopupTestUtils.kt (I78c57)
  • لم تعُد ConsumedData فئة بيانات. لمعرفة التفاصيل، يُرجى الاطّلاع على https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • يجب تصحيح موضع الاسم المعرِّف باتجاه اليمين إلى اليسار. (I6e1e0)
  • إعادة صياغة DrawScope و ContentDrawScope لتكون واجهات بدلاً من فئات مجردة
    • تم إنشاء عملية تنفيذ CanvasDrawScope لـ DrawScope
    • إعادة صياغة عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً من ذلك
    • تم إنشاء DrawContext لتغليف التبعيات لـ DrawScope
    • إزالة الطرق المتوقّفة نهائيًا في DrawScope (I56f5e)
  • تغيير جذري: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) لأنّ القيمة الوحيدة التي من المفترض أن يكون بالإمكان تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات استهلاك PointerEvents التي تم تمريرها. (I6acd0)
  • تم تحويل MeasureScope وIntrinsicMeasureScope إلى واجهات. (I1a087، b/170461665)
  • تم إخفاء دالة الدمج لعنصر AlignmentLine. (I9da1a، b/170612900، b/170611568)
  • إضافة إمكانية تحديد معلومات المفتش في المُعدِّل المركب (Idee08، b/163494569)
  • تمت إضافة خيار "اختيار الكل" إلى قائمة الاختيار (Ief02b).
  • تم تعديل DrawTransform.rotate لتلقّي مَعلمة محور دوران تلقائية هي المركز لمطابقة المستندات.
    • تم تعديل DrawScope.rotateRad لاستخدام إزاحة لنقطة المحور لمطابقة طرق التحويل الأخرى.
    • التحميل الزائد الذي تم إيقافه نهائيًا لـ DrawScope.rotateRad والذي كان يستهلك الأرقام العائمة للإحداثيَين x وy للمحور
    • (Iffcbb، b/170434992)

إصلاح الأخطاء

  • تم تفعيل فحص lint لواجهة برمجة التطبيقات لـ MissingGetterMatchingBuilder في androidx (I4bbea، b/138602561)
  • أضِف الاختبار. (I6b8ae)
  • فعِّل الانتقالات في ComposeTestRule، وأزِل خيار تفعيل المؤشر المتمايل من ComposeTestRule. (If0de3)
  • تمت إضافة خيار IME KeyboardCapitalization (I8ac38)
  • تمت إضافة خيار لوحة مفاتيح ذات سطر واحد إلى CoreTextField‏ (I72e6d)
  • نقل SimpleContainer إلى PopupTestUtils.kt (I65c3e)
  • تمت إعادة تسمية Radius API إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في أداة "الإنشاء". تم تعديل المستندات للإشارة إلى أنّ نصف قطر الزاوية السالب يتم تثبيته على القيمة صفر. (I130c7، b/168762961)
  • تحسين إمكانية التشغيل التفاعلي لنظام التشغيل Android من خلال مواصلة إرسال أحداث MotionEvents إلى عناصر Android View الفرعية التي تُعرِض قيمة false لحدث onTouchEvent لجميع الإجراءات باستثناء ACTION_DOWN (I94c5a وb/170320973)
  • تم تحويل المربّع إلى دالة مضمّنة. (Ibce0c، b/155056091)

المساهمة الخارجية

  • إتاحة لغات مختلفة لكل من AnnotatedString.capitalize وAnnotatedString.decapitalize (I4aa7f)

الإصدار 1.0.0-alpha05

14 تشرين الأول (أكتوبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha05. يحتوي الإصدار 1.0.0-alpha05 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إضافة لغة وصفية محددة لتحديد معلومات المفتش (Ic9a22)
  • انقل ميزة "الضغط مع الاستمرار" إلى "النص". (Iff2bc)
  • الإصدار التجريبي من Modifier.pointerInput يوقف مؤقتًا مُعدِّل الإدخال (Ia77d2)
  • تمت إضافة إجراءات تسهيل الاستخدام "النسخ/اللصق/القطع" (I6db4f)
  • تمت إزالة المنشئ العام لواجهة برمجة التطبيقات AndroidOwner (Iacaef)
  • اكتسبت النوافذ المنبثقة ومربعات الحوار الآن FLAG_SECURE من النافذة الرئيسية. تمت أيضًا إضافة خيار لضبط هذا الإعداد صراحةً (I64966 وb/143778148 وb/143778149).
  • أصبحت بيانات الاستهلاك الآن قابلة للتغيير. بالإضافة إلى ذلك، ceased طلبات الاستدعاء إلى دوال الإضافات التي تستهلك البيانات عن PointerInputChange، وأصبحت الآن تُعرِض بدلاً من ذلك PointerInputChange المقدَّم.

    هذه هي الخطوة الأولى في عملية من خطوتَين لجعل بيانات PointerEvent قابلة للتغيير بحيث لا يمكن تعديل بيانات النقاط الأخرى من خلال رمز المستخدم. ستكون الخطوة الثانية هي إزالة نوع الإرجاع List<PointerInputChange> من PointerInputFilter.onPointerEvent(...). (Id067e)

  • أوقِف ميزة "الاختيار في النص" وميزة "العرض التجريبي". (Ie7e97)

  • تمّ جعل onGloballyPositioned دالة مضمّنة (I15830)

  • تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وتمت إعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)

  • تمت إضافة السمة hasPendingMeasureOrLayout إلى Owner، وهي تشير إلى ما إذا كان لدى Owner أي عمل مرتبط بالتنسيق في انتظار المراجعة. (I3d9f8، b/169038599)

  • تمت إضافة واجهة برمجة تطبيقات لمحو التركيز آليًا (Ie1dc2، b/161487952)

  • تمت إزالة PointerInputFilter.onPointerInput(...). يجب استخدام PointerInputFilter.onPointerEvent(...) بدلاً من ذلك. (I6f04a)

  • التغييرات في الحجم

    • تمت إزالة Size.getFlipped
    • تمت إزالة Size.rem
    • تمّت إزالة Size.truncDiv (Ief44d, b/169790720)
  • كجزء من عملية توحيد القيم المراقبة للفئات المضمّنة، أُعيد تسمية Color.Unset إلى Color.Unspecified للتماشي مع الفئات المضمّنة الأخرى (I97611 وb/169797763).

  • تمّ تقديم TextOverflow.None. عندما يكون overflow غير محدّد، لن يعالج Text المحتوى الزائد بعد الآن، وسيُبلغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)

  • تمت إعادة تسمية مَعلمة النطاق ضمن AnnotatedString.Builder.addStringAnnotation لتكون علامة من أجل الحفاظ على اتساق واجهة برمجة التطبيقات. (I7c8cb)

إصلاح الأخطاء

  • تم تحسين أداء الانتقال للأعلى أو للأسفل في LazyColumn/Row من خلال إنجاز عمل أقل في التركيب الفرعي عند كل عملية انتقال. تمت إضافة الطريقة الجديدة hasInvalidations() لفئة Composition. تمت إعادة تسمية الطريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • تم تعديل مَعلمات Size.Unspecified لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى المقاسات غير المحدودة. (I95a7e)
  • يحدّد الآن ترتيب طلبات place() في التنسيقات المخصّصة ترتيب الرسم للعناصر الثانوية (Ibc9f6).
  • إتاحة تحويل AnnotatedString إلى SpannableString لتسهيل الاستخدام (Ief907)
  • تمت إضافة نماذج stubs لفئات Android التي تعمل على منصّات أقدم لتجنّب استخدام ميزة reflection متى أمكن. (Ia1790)
  • تم إصلاح خطأ: إذا كانت لوحة المفاتيح الظاهرة على الشاشة تتسبب في ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)

الإصدار 1.0.0-alpha04

1 تشرين الأول (أكتوبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha04. يحتوي الإصدار 1.0.0-alpha04 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة OwnerScope للسماح بجمع نطاقات ملاحظات ملف الالتقاط ورسم المخططات بعد أن تصبح غير صالحة. (Ic4cf8)
  • تمت إضافة OnRemeasuredModifier وonSizeChanged() لتلقّي مكالمة إعادة الاتصال عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
  • إضافة إجراء دلالي للنقرة الطويلة (I6281b، b/156468846)
  • تمّ جعل FocusManager خاصًا. (I7872f)
  • تم تعديل التنفيذ لإنشاء تنفيذ DrawCacheModifier مخصّص بدلاً من إضافة سمات اختيارية في DrawModifier.

    مستندات معدَّلة لطرق مختلفة (Ibd166)

  • اجعل TextRange مضمّنًا لتجنُّب إنشاء كائن. (Id034b)

  • لم يعُد بالإمكان قراءة PlacementScope#parentWidth وPlacementScope#parentLayoutDirection من قالب موضع الإعلان لتنسيق مخصّص. (Icc1ae، b/168295623)

  • أضِف AccessibilityScrollState إلى سمات الدلالات. (Ifeda9)

  • تمّ تقديم Modifier.drawWithCache للسماح بإنشاء عنصر رسم يعيد بشكل مشروط إنشاء العناصر المُدمجة التي تعتمد على معلومات الحجم/الحالة (I376dc)

  • تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (Ica712)

إصلاح الأخطاء

  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة التطبيقات الخاصة بتحويلات الحجم والدوران للاستخدام المشترَك لمَعلمة Offset واحدة لتمثيل إحداثي محور الدوران بدلاً من استخدام مَعلمات float منفصلة لإحداثي x/y في DrawScope وDrawTransform
    • إزالة الطريقتَين Rect.expandToInclude وRect.join
    • تم تعديل مستندات "النطاق الجغرافي" لتشير إلى أنّه بيضاوي بالإضافة إلى بيضاوي الشكل.
    • تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء ملف الإنشاء العلني لفئة Radius المضمّنة مباشرةً، ولكن يجب بدلاً من ذلك إنشاء مثيل لعناصر Radius من خلال ملفّات إنشاء الدوالّ.
    • تمت إزالة واجهات برمجة تطبيقات RoundRect API لطلب topRight، bottomRight، bottomCenter، وما إلى ذلك.
    • إيقاف دالة Rect.shift نهائيًا واستبدالها بدالة Rect.translate
    • إزالة واجهات برمجة التطبيقات RoundRect.grow وRect.shrink
    • تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
    • تمّت إزالة RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
    • تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
    • تم تغيير RoundRect.center ليصبح سمة بدلاً من دالة
    • تم تعديل عنصر الإنشاء RoundRect لاستخدام سمات Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y.
    • تمّت إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي كانت تفترض أنّه مستطيل مع أصل عند 0,0
    • تمت إضافة واجهة برمجة تطبيقات لإزالة البيانات إلى Radius
    • تم نقل دوالّ إضافة RoundRect المختلفة لتصبح سمات بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • تم إيقاف foundation.Box نهائيًا. يُرجى استخدام foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
  • تمت إعادة تسمية الحزمة إلى "علبة". سيتم إيقاف العنصر Box السابق نهائيًا واستبداله بالعنصر Box الجديد في compose.foundation.layout. يتمثل سلوك المربّع الجديد في تجميع العناصر الفرعية فوق بعضها عندما يكون لديه عناصر فرعية متعددة، ويختلف ذلك عن المربّع السابق الذي كان يتصرف بشكل مشابه للعمود. (I94893، b/167680279)
  • تم إيقاف مَعلمات زخرفة المربّع نهائيًا. إذا كنت تريد إضافة زخارف أو مسافات على مربّعك، استخدِم عناصر التعديل بدلاً من ذلك (Modifier.background وModifier.border وModifier.padding) (Ibae92، b/167680279)
  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة تطبيقات DrawScope باستخدام طرق تحويل على مستوى النطاق للإشارة إلى أنّه لا يتم تطبيق التحويل إلا ضمن الدالة المرجعية ويتم إزالته بعد استدعاء الدالة المرجعية.
    • تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من مستطيل مُعَدَّل
    • تمّت إزالة المسافة في المستند للمَعلمة اليمنى في clipPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وتمت إزالة مَعلمة size.
    • تمت إعادة تسمية مَعلمتَي dx/dy في طريقة inset إلى أفقي وعمودي
    • تمت إضافة حمولة زائدة للاقتصاص توفّر قيمة اقتصاص متطابقة لجميع الحدود الأربعة.
    • تمّت إزالة مستندات حول طريقة الحشو التي تشير إلى أنّه سيتم تطبيق الحشو على جميع الجوانب الأربعة.
    • مستندات معدَّلة لفئة Rect
    • تعديل التعليقات على مَعلمات Rect لمطابقة kdoc style
    • تمت إزالة Rect.join وRect.expandToInclude
    • تم إنشاء وظائف زائدة لواجهة Rect.translate(offset) و تم إيقاف Rect.shift نهائيًا
    • (If086a، b/167737376)
  • إضافة تعليقات توضيحية إلى rootAnimationClockFactory وtransitionsEnabled و blinkingCursorEnabled وtextInputServiceFactory باستخدام @VisibleForTesting، وجعلها واجهة برمجة تطبيقات داخلية وإخفاء kdoc (I554eb، b/168308412)
  • أزِل SelectionContainer من الأعلى لإيقاف الاختيار التلقائي وتجنُّب السلوك غير المتوقّع. يمكن استخدام SelectionContainer على وجه التحديد لتغليف المحتوى الذي يجب أن يكون قابلاً للاختيار بدلاً من ذلك. (I8dfe0، b/158459594)

الإصدار 1.0.0-alpha03

16 أيلول (سبتمبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha03. يحتوي الإصدار 1.0.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • أزِل إجراءات الدلالات الخاصة بالتمرير للأمام/للخلف. تمت إضافة خطوات في AccessibilityRangeInfo. (Ia47b0)
  • تمت إزالة onInvalidate() من Owner. يعالج OwnedLayer إبطال القيمة. (Ica72b، b/162061312)
  • تمّت إزالة طرق المشغّل في Size API التي تستخدِم مَعلمات Offset. إنّ نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقّع بالنسبة إليها. على سبيل المثال، هل يجب أن يعرض الحجم - الإزاحة إزاحة أو نتيجة حجم مع الفرق؟

    تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة Size. (Iec902، b/166514214)

إصلاح الأخطاء

  • تم إصلاح مشكلة رسم عناصر LazyColumn بشكل غير صحيح في بعض الأحيان، ما كان يؤدي أيضًا إلى حدوث أعطال في بعض الحالات. (Ibcf17 وb/163066980 وb/165921895)
  • تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
  • تم نقل createAndroidComposeRule وAndroidInputDispatcher من androidx.ui.test.android إلى androidx.ui.test (Idef08، b/164060572)
  • تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متسق لتصبح align أو alignment في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
  • تمت إضافة onNode والطُرق الشاملة الأخرى في ComposeTestRule لأنّه سيتم إيقاف الطُرق الشاملة الحالية نهائيًا. (Ieae36)

الإصدار 1.0.0-alpha02

2 أيلول (سبتمبر) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha02. يحتوي الإصدار 1.0.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • إزالة طلب إعادة الاتصال لإعلام المالك عند تغيير حدود layoutnode (If654e، b/166106882)
  • تمت إضافة إمكانية استخدام مَعلمات نوع الملء في مسارات الرسومات المتجهّة لإتاحة اقتطاع الأشكال وفقًا لقواعد ملء المسار evenOdd أو NonZero. (I43dd2)
  • أصبحت Uptime وVelocity الآن صفوفًا مضمّنة (I48f4a).
  • أصبحت المدة الآن فئة مضمّنة (I565eb).
  • أضِف دالة استدعاء لإعلام المالك عند تغيير حدود layoutnode. (Ic40b3)
  • تم حلّ المشكلة التي كانت تؤدي إلى إنشاء Rect في دالّة Rect باستخدام الإزاحة ونصف القطر بالترتيب التالي: لليسار واليمين والعلوي والسفلي بدلاً من لليسار والعلوي واليمين والسفلي.

    تمّت إزالة طرق المرافق المتوقّفة نهائيًا في Rect واستخدام وظائف الإنشاء بدلاً منها.

    تمت إضافة اختبارات للتحقّق من الطرق في Rect.kt (I08460، b/165822356)

إصلاح الأخطاء

  • تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
  • تم استبدال Matrix4 بـ Matrix. تمت إزالة جميع الأجزاء الأخرى من حزمة vectormath. (Ibd665، b/160140398)
  • لقد تغيّرت اصطلاحات استدعاء الدوالّ القابلة للتجميع. هذا تغيير يؤدي إلى إيقاف الإصدار الثنائي. يجب مجددًا compiling جميع المكتبات للعمل مع هذا الإصدار من المكوّن الإضافي لمحرِّر الترجمة.

    لا يؤدي هذا التغيير إلى إنشاء تغيير فاصل على مستوى المصدر لأنّه لم يتم تغيير سوى واجهات برمجة التطبيقات الخاصة بالمنشئ التي تم تفعيلها بوضوح. (I7afd2، b/158123185)

  • تم إصلاح عطل كان يمكن أن يحدث عندما يؤدي توجيه الحدث إلى PointerInputFilter إلى إزالة PointerInputFilter بشكل متزامن. (I58f25)

الإصدار 1.0.0-alpha01

26 آب (أغسطس) 2020

تم إصدار androidx.compose.ui:ui-*:1.0.0-alpha01. يحتوي الإصدار 1.0.0-alpha01 على هذه المراجعات.

الإصدار 0.1.0-dev

الإصدار 0.1.0-dev17

19 آب (أغسطس) 2020

تم إصدار androidx.compose.ui:ui-*:0.1.0-dev17. يحتوي الإصدار 0.1.0-dev17 على عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف emitView نهائيًا. استخدِم AndroidView بدلاً من ذلك إن أمكن لعرض المشاهد داخل Compose. يُرجى العِلم أنّه لن يكون من الممكن في المستقبل إنشاء عناصر View وViewGroup مباشرةً ما لم تكن هذه العناصر أوراقًا في شجرة الإنشاء، وهو الحال الذي يمكن فيه تحقيق ذلك باستخدام AndroidView. (I29b1e، b/163871221)
  • تم إيقاف FocusState2 نهائيًا واستبداله بـ FocusState (Ia8b79 وb/160822876 وb/160923332)
  • تمت إزالة عمليات تحميل AndroidView المتوقّفة نهائيًا. (I946b9، b/163802393)
  • يمكن الآن لعمليات البث المخصّصة أن تحدّد أنّه يمكن تخطّي واحد أو أكثر من أدوات الضبط وإعادة تركيبها بشكل مستقل عن عملية البث. (Ibbd13)
  • تم تغيير فئات Vector ل不再تكون فئات بيانات لأنّه يتم استخدام مثيل العنصر نفسه لإنشاء التركيب.

    تمت إضافة علامة mutableStateOf إلى VectorPainter لإعادة الرسم بشكل مشروط في حال تغيّر محتوى المتجه.

    تمّت إعادة صياغة مثيل VectorComponent ليكون جزءًا من VectorPainter لأنّه تتم إعادة استخدامه في جميع المكوّنات.

    تم تعديل GroupComponent وPathComponent ليصبح حقل الاسم قابلاً للتغيير (Ieae45، b/151378808)

  • تمت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier في تنسيق الصفحة الفرعية بدلاً من ذلك. (I4522e، b/162109766)

  • أصبح "الموضع النسبي" فئة مضمّنة (Iaec70).

  • تمت إضافة مَعلمة مُعدِّل إلى SelectionContainer‏ (I4aada، b/161487952)

  • تمت إزالة FocusModifier (I0b4ba وb/160922116 وb/160821157 وb/162441435 وb/160822875 وb/160921940)

  • تمت إضافة mergePolicy lambda إلى SemanticsPropertyKey. ويمكن استخدام ذلك لتحديد سياسة مخصّصة لدمج semantik mergeAllDescendants. إنّ السياسة التلقائية هي استخدام قيمة العنصر الرئيسي إذا كانت متوفرة، وإلا يتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)

  • أصبحت Constraints الآن فئة مضمّنة (I88736).

  • تمت إضافة FocusManager الذي ينقل منطق التركيز الشائع خارج AndroidComposeView (I528ef وb/161487952 وb/162206799)

  • تم تعديل أسماء PointerEventPass للإصدار التجريبي. (Ifda6f)

  • أصبحت IntOffset الآن فئة مضمّنة (Iac0bf).

  • أصبحت IntSize الآن فئة مضمّنة (I2bf42).

  • تمت إعادة تسمية PlacementScope.placeAbsolute() إلى PlacementScope.place()، وتمت إعادة تسمية PlacementScope.place() السابق إلى PlacementScope.placeRelative(). نتيجةً لذلك، لن تعكس طريقة PlacementScope.place() تلقائيًا الموضع في السياقات من اليمين إلى اليسار بعد الآن. وإذا أردت ذلك، استخدِم PlacementScope.placeRelative() بدلاً من ذلك. (I873ac، b/162916675)

  • يستخدم AlertDialog الآن FlowRow للأزرار (I00ec1 وb/161809319 وb/143682374)

  • تم جعل بعض أدوات الاختبار غير عامة لأنّها ليست في مكانها الصحيح. ستصبح هذه المعلومات علنية في المستقبل. (I32ab1)

  • إعادة تنظيم رمز إدخال المؤشر (Ie3f45)

  • تم إيقاف PxBounds نهائيًا واستخدام Rect بدلاً منه. تم تعديل جميع استخدامات PxBounds باستخدام rect وتمت إضافة علامة توضيحية مناسبة لإيقاف الميزة نهائيًا/استبدالها بهدف المساعدة في عملية نقل البيانات. (I37038، b/162627058)

  • تمت إزالة KeyEvent2 المتوقّف نهائيًا. استخدِم KeyEvent بدلاً من ذلك. (Ied2d0، b/162097587)

  • يحتوي KeyEvent على سمة unicode يمكن استخدامها للحصول على حرف unicode الذي تم إنشاؤه من خلال مجموعة حالة المفتاح والمفتاح التعريفي المحدّدة (If3afc).

  • تمّ جعل الحدث المخصّص DelayUp والصفوف ذات الصلة واجهة برمجة تطبيقات اختيارية، لأنّه من المرجّح أن يتم تغييره. (I56d6f)

  • تمّت إزالة حدثَي PointerEventPass لم يعدا مطلوبَين. (I3dd9d)

  • أضِف المَعلمات color وshadow وTextDecoration إلى Paragraph.paint. هذه الدالة مفيدة لتجنُّب إعادة إنشاء Paragraph غير الضرورية. (I81689)

إصلاح الأخطاء

  • تمت إزالة وظائف الاستدعاء onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
  • تم إيقاف Modifier.drawBorder نهائيًا. استخدِم Modifier.border بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، b/158160576)
  • تمت إزالة طلبات FrameManager المتوقّفة نهائيًا.

    تم تغيير واجهات برمجة التطبيقات الداخلية لإنشاء المحتوى من أجل تقليل مقدار الوقت المستغرَق لتتبُّع عناصر الحالة، مثل mutableStateof() (I80ba6).

  • تمت إزالة VerticalScroller وHorizontalScroller. استخدِم ScrollableColumn/Row بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدِم Modifier.background (I73b0d، b/163019183).

  • تم إصلاح مشكلة تعطُّل التطبيق عند استخدام شيء يحفظ الحالة داخل حلقة for. أصبح من المسموح به الآن استخدام المفتاح نفسه في savedInstanceState()، وتم تعديل واجهة برمجة التطبيقات الخاصة بـ UiSavedStateRegistry لتلبية هذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).

  • تم إيقاف العنصر القابل للتجميع state { ... } نهائيًا، وأصبح من الأفضل استخدام طلبات صريحة لremember { mutableStateOf(...) } من أجل الوضوح. ويؤدي ذلك إلى تقليل مساحة عرض واجهة برمجة التطبيقات الإجمالية وعدد المفاهيم المتعلّقة بإدارة الحالة، كما يتطابق مع نمط by mutableStateOf() لمنح إذن الوصول إلى سمة الخطوة. (Ia5727)

  • تمت إعادة تسمية RRect إلى RoundRect لتناسب أنماط تسمية الإنشاء بشكلٍ أفضل تم إنشاء وظائف إنشاء دالة مشابهة لدالة RRect ووظائف إنشاء دالة RRect المتوقّفة نهائيًا (I5d325)

الإصدار 0.1.0-dev16

5 آب (أغسطس) 2020

تم إصدار androidx.compose.ui:ui-*:0.1.0-dev16. يحتوي الإصدار 0.1.0-dev16 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف OnChildPositioned نهائيًا. استخدِم OnPositioned على العنصر الفرعي بدلاً من ذلك. (I87f95، b/162109766)
  • تم إيقاف setViewContent نهائيًا. يجب استخدام setContent بدلاً من ذلك. (I7e497، b/160335130)
  • تمت إضافة واجهة برمجة التطبيقات AndroidViewBinding لتوسيع موارد التنسيق وإنشاءها، استنادًا إلى ViewBinding. (I081c6)
  • تم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
  • تمت إضافة دعم لمفتاح Alt الخارجي (I9036b).
  • تم إيقاف FocusManager نهائيًا. استخدِم Modifier.focus() وModifier.focusObserver() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
  • يتيح loadVectorResource سمات trimPath (I808fe)
  • نقل مربّع الحوار إلى واجهة المستخدم (I47fa6)
  • تمّت إزالة حدثَي PointerEventPass لم يعدا مطلوبَين. (I33ca7)
  • تم تنفيذ PointerInteropModifier الذي يوفّر إمكانية تلقّي أحداث MotionEvent والتفاعل مع Compose كما لو كنت تُنفّذ عنصر عرض Android. (Ieb08c)
  • تمت إزالة مُعدِّل العلامة الذي سيتم إيقافه نهائيًا. يُرجى استخدام layoutId بدلاً من ذلك. (Idaa05، b/162023919)
  • تم تعديل واجهات برمجة التطبيقات لتوفير إمكانية الكتابة من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient، والذي يمكن استخدامه لقراءة اتجاه التنسيق وتغييره. تمّت إزالة Modifier.rtl وModifier.ltr. (I080b3)
  • إتاحة اقتصاص المسار في الرسومات المتجهّة (Ie16c9، b/158188351)
  • تمت إضافة Modifier.layout() التي تتيح إنشاء مُعدِّل تخطيط مخصّص بسهولة (I73b69، b/161355194)
  • تمت إضافة واجهة برمجة تطبيقات AndroidView API جديدة وتم إيقاف واجهات برمجة التطبيقات الحالية نهائيًا. (I5bcfd)
  • تم إيقاف Modifier.plus نهائيًا، ويمكنك استخدام Modifier.then بدلاً منه. تشير كلمة "ثم" إلى ترتيب الكلمات بشكل أقوى، كما أنّها تحظر أيضًا كتابة Modifier.padding().background() + anotherModifier، ما يؤدي إلى كسر السلسلة وصعوبة قراءتها (Iedd58، b/161529964)
  • أضِف فئات فرعية لعرض [Abstract]ComposeView لاستضافة محتوى Compose في تسلسل هرمي لعرض. (I46357)
  • أصبحت الدالتان Row وColumn الآن دالتَين مضمّنتَين، ما يقلل بشكل كبير من النفقات العامة لاستخدامهما. (I75c10)
  • تمت إضافة SubcomposeLayout. وهو عنصر أساسي منخفض المستوى يسمح بإنشاء العناصر الفرعية أثناء القياس إذا أردنا استخدام بعض القيم المتوفّرة لاحقًا فقط أثناء القياس لإنشاء الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
  • تمت إضافة SemanticsNode.positionInRoot للحصول على موضع SemanticsNode بالنسبة إلى جذر التسلسل الهرمي Compose (Icdf26، b/161336532)
  • اجتازت MotionEvents الاختبار بالكامل من Android إلى Compose ثم عادت إلى Android. (I14be8، b/158034713)
  • تمت إزالة dropdownPopup. (I00430)
  • موضع ثابت للنوافذ المنبثقة على الشاشات المزوّدة بفتحة (Idd7dd)
  • إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
  • تمت إضافة RemeasurementModifier. يتيح هذا المُعدِّل إعادة قياس التنسيق بشكل متزامن. بشكل عام، لن تحتاج إلى ذلك أبدًا لأنّ إعادة القياس أو إعادة التنسيق تحدث تلقائيًا، ولكننا نستخدمها داخل LazyColumnItems أثناء الانتقال للأعلى أو للأسفل. (I5f331، b/160791058)
  • أزِل getLineEllipsisOffset/getLineEllipsisCount. استخدِم getLineVisibleEnd/getLineEnd/isLineEllipsized بدلاً منه. (I85aa2)
  • أضِف بعض العلامات أو التعليقات التوضيحية وفقًا لأفضل الممارسات. (I66b20)
  • إتاحة المزيد من واجهات برمجة التطبيقات للسطور في TextLayoutResult (I79bd2)
  • يمكن الآن الوصول إلى محوِّلات المتجهات المضمّنة لتحويل الوحدات المضمّنة من خلال Foo.VectorConverter، مثل Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter وما إلى ذلك (I3e273).

إصلاح الأخطاء

  • معالجة إصلاحات واسعة النطاق لواجهات برمجة التطبيقات (I077bc)
    1. إزالة واجهة OffsetBase غير المستخدَمة
    2. مواءمة فئتَي Offset وIntOffset للحصول على سطح واجهة برمجة تطبيقات متّسق
    3. إعادة تسمية IntOffset.Origin إلى IntOffset.Zero ليكون متوافقًا مع Offset API
    4. تم نقل طريقة nativeCanvas من واجهة Canvas لمساعدة المستخدمين على إنشاء مثيلات Canvas الخاصة بهم.
    5. تم إنشاء فئة EmptyCanvas مجردة لإعادة هيكلة DrawScope لتكون مَعلمة غير صفرية بدلاً من lateinit وضمان عدم تساوي قيمة الحقل
    6. تمت إعادة تسمية قوائم القيم المحددة لـ ClipOp لتكون بتنسيق Pascal Case
    7. تمت إعادة تسمية القيم المحددة مسبقًا لـ FilterQuality لتكون بتنسيق Pascal Case
    8. تمت إعادة تسمية قوائم StrokeJoin المحددة لتكون بتنسيق Pascal Case
    9. تمت إعادة تسمية القيم المحددة لـ PointMode لتكون بتنسيق Pascal Case
    10. تمت إعادة تسمية قوائم PaintingStyle المحددة إلى Pascal Case
    11. تمت إعادة تسمية القيم المحددة لـ PathFillType لتكون بالتنسيق Pascal Case
    12. تمت إعادة تسمية قوائم StrokeCap المحددة لتكون بتنسيق Pascal Case
    13. تم تعديل تنفيذ DrawCache ليصبح لا يستخدم param lateinit
    14. تم تعديل DrawScope كي لا يستخدم التفويض البطيء للمَعلمتَين الداخليتَين fillPaint وstrokePaint.
    15. تم تعديل ميزة "إنشاء الصور" لتجنُّب استخدام Box لخفض التكاليف غير الضرورية
    16. تم تعديل فئة المخطّط لإضافة التعليقات التوضيحية @Immutable
    17. تم تعديل PathNode لإضافة تعليقات توضيحية من النوع @Immutable لكل تعليمات المسار.
    18. تم تعديل التركيب الفرعي للشكل المتجه لإزالة عمليات التحقّق المتكرّرة الشرطية من المساواة لأنّ عملية الإنشاء تتعامل مع هذه العمليات
    19. طرق إنشاء العنصر المصاحب Rect التي تم إيقافها نهائيًا لصالح طرق إنشاء الدوال
    20. تم تعديل فئات Brush ووظائف الإنشاء باستخدام واجهتَي برمجة التطبيقات @Immutable و @Stable
    21. تم تعديل النطاق المحدَّد VertexMode ليكون PascalCase
    22. تم تعديل طريقة DrawScope selectPaint لإعادة كتابة معلمات الخطوط على الطلاء بشكل مشروط في حال تغيّرت
    23. تم تعديل Size لإضافة واجهة برمجة تطبيقات لإعادة التشكيل، وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدَمة.
  • تم تعديل استخدام واجهة برمجة التطبيقات Compose BlendMode للتعيين الصحيح بين BlendModes لإطار عمل Android وأوضاع PorterDuff استنادًا إلى مستوى واجهة برمجة التطبيقات. تمّت إضافة واجهة برمجة التطبيقات ‎#isSupported في BlendMode لتعمل كطلب للحصول على معلومات عن الإمكانات لتحديد ما إذا كان BlendMode متاحًا على الجهاز قبل استخدامه. (I0ef42)
  • تمت إضافة LazyItemScope لمَعلمة itemContent في القوائم البطيئة. وتوفّر هذه العناصر عوامل تعديل لملء الحد الأقصى للحجم الرئيسي، ما يحلّ حالة الاستخدام عندما يكون من المفترض أن يملأ العنصر إطار العرض ولا تعمل دالة Modifier.fillMaxSize() العادية لأنّه يتم قياس العنصر باستخدام قيود لا نهائية. (Ibd3b2، b/162248854)
  • تمت إزالة SemanticsNodeInteraction.performPartialGesture. استخدِم SemanticsNodeInteraction.performGesture بدلاً من ذلك. (Id9b62)
  • تمت إعادة تسمية LazyColumnItems إلى LazyColumnFor. تمت إعادة تسمية LazyRowItems إلى LazyRowFor (I84f84)
  • تم تصغير حزمة foundation.shape.corner إلى foundation.share (I46491، b/161887429)
  • تمت إعادة تسمية AndroidComposeTestRule إلى createAndroidComposeRule. (I70aaf)
  • تمت إضافة المزيد من واجهات برمجة التطبيقات إلى TextLayoutResult. (Id7e04)
  • تمت إعادة تسمية "المادة الأساسية" FilledTextField إلى TextField و"المادة الأساسية" TextField إلى BaseTextField لتسهيل العثور على أبسط واجهة برمجة تطبيقات مطلوبة واستخدامها (Ia6242، b/155482676)
  • تمت إعادة تسمية Modifier.drawBackground إلى Modifier.background (I13677)

الإصدار 0.1.0-dev15

22 تموز (يوليو) 2020

تم إصدار androidx.compose.ui:ui-*:0.1.0-dev15. يحتوي الإصدار 0.1.0-dev15 على هذه المراجعات.

تعديل التبعيات

  • لاستخدام الإصدار 0.1.0-dev15 من Compose، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف FocusModifier نهائيًا لصالح Modifier.focus وModifier.focusRequester وModifier.focusObserver. تم إيقاف FocusState وFocusDetailedState نهائيًا واستبدالهما بـ FocusState2 (I46919 وb/160822875 وb/160922136)
  • تمت إضافة مُعدِّل لمراقبة تغيير حالة التركيز. (I05866 وb/160924455 وb/160923326)
  • تمت إضافة مُعدِّل لطلب تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
  • عدِّل قائمة شريط الأدوات لعرض عمليات النسخ والقطع واللصق بشكل صحيح. (Id3955)
  • تستخدم الآن سمات الدلالات ذات القيمة الواحدة أسلوبًا للاتّصال. على سبيل المثال، يتم الآن كتابة "semantics { hidden = true }" على النحو التالي: semantics { hidden() }. (Ic1afd، b/145951226، b/145955412)
  • تمت إضافة Modifier.focus الذي يحلّ محلّ FocusModifier. (Ib852a، b/160924778)
  • إضافة FloatingToolbar لاختيار TextField (Ie8b07)
  • تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لواجهة برمجة التطبيقات ذات الصلة بإدخال المفاتيح (I53c0a)
  • تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لجميع واجهات برمجة التطبيقات ذات الصلة بخدمة "التركيز" (I53b24، b/160903352)
  • تمت إضافة FocusState2 الذي سيحلّ محلّ FocusDetailedState (I0a3ba، b/160822595)
  • تمت إضافة ExperimentalFocus، وهو تعليق توضيحي على @OptIn لواجهة برمجة التطبيقات Focus API. (I1544b، b/160820961)
  • تمت إضافة فئة وحدة IntBounds، التي تمثّل حدود بكسل عددية من التنسيق. تم تعديل واجهة برمجة التطبيقات PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
  • يتطلب "المُطبِّق" الآن استخدام طريقة clear() للتخلص من التراكيب (Ibe697).
  • تم إيقاف KeyEvent نهائيًا واستبداله بـ KeyEvent2 (I68730)
  • تمت إضافة علامة اختيارية جديدة useUnmergedTree لاختبار أدوات البحث. (I2ce48)
  • تمّت إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (I4f2e9)
  • تمت إضافة طرق نسخ إلى مختلف أنواع الفئات المضمّنة، بما في ذلك:

    • فرق التوقيت
    • الحجم
    • النطاق الجغرافي
    • الحركة
    • TransformOrigin

    • إيقاف طريقة عنصر Size.copy المصاحبة نهائيًا استخدام طريقة نسخ العنصر (Ife290، b/159905651)

  • ترث الآن النوافذ المنبثقة ومربّعات الحوار والقوائم مظهر MaterialTheme السياقي (Ia3665، b/156527485).

  • تمت إعادة تسمية TextDirection ليصبح ResolvedTextDirection (I3ff38).

  • تمت إزالة مَعلمة اتجاه التنسيق من مجموعة القياس لدالة Layout()‎. ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة الاستدعاء من خلال كائن نطاق القياس (Ic7d9d).

  • إعادة صياغة عناصر SelectionHandles لإعادة استخدامها ‫(I420e0)

  • تمت إزالة العنصر القابل للنقر. استخدِم Modifier.clickable‏ (I84bdf).

  • تم حذف TestTag وSemantics. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).

  • قبل إجراء هذا التغيير، كان المكوّن الإضافي لمحرِّك التحويل البرمجي لميزة "الإنشاء" يعرقل بشكلٍ غير بسيط طلبات إنشاء العناصر داخل دالة @Composable في حال توفّر (I5205a، b/158123804)

  • تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط مع Modifier.testTag. (I995f0)

  • إنّ مواضع Int لخط المحاذاة التي يتم عرضها من Placeable#get(AlignmentLine) ليست فارغة الآن. إذا لم يكن خطّ المحاذاة الذي تم الاستعلام عنه متوفّرًا، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)

  • تمت إضافة مَعلمة مُعدِّل إلى العنصر المركب AndroidView. (I48a88، b/158746303)

  • تم إيقاف Semantics() نهائيًا. استخدِم Modifier.semantics()‎ بدلاً من ذلك. (I72407، b/158841414)

  • إضافة عنصر viewModel()‏ composable الذي يسمح بإنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه مسبقًا على غرار طريقة عمله في Activity أو Fragment (I5fdd1)

  • تم استبدال استخدام IntPx بـ Int. وتم استبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)

  • لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من عنصر طويل لحزم قيمتَين عائمتَين لتمثيل العرض والارتفاع المقدَّمَين كقيم عائمة. (Ic0191)

  • لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات تحديد الموضع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحة x وإزاحة y التي تم تمثيلها كقيم عائمة. (I3ad98)

  • تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل. تم حذف فئة Px بالكامل (I3ff33)

  • تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I086f4)

  • تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Id3434)

  • تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I97a5a)

  • تم إيقاف TestTag نهائيًا. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)

  • تمت إزالة التنفيذ التلقائي غير القابل للتنفيذ لـ ParentDataModifier#modifyParentData، لأنّه كان يعادل عدم تنفيذ الواجهة في المقام الأول. (I0deaa)

  • تمّت إزالة ScaleFit التي سبق أن تم إيقافها نهائيًا. استخدِم ContentScale بدلاً من ذلك. (Ifbc5b)

  • تم استبدال استخدام فئة Px في مختلف صفوف الإنشاء كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I19d02)

  • تمت إضافة مكوّن DropdownMenu في ui-material، وهو عنصر لتنفيذ قائمة Material Design. (I9bb3d)

  • تمّت إزالة الدالة LayoutTag()‎ التي تمّ إيقافها نهائيًا، يُرجى استخدام Modifier.tag()‎ بدلاً منها. تمت إزالة Modifier.matchParent()‎ المتوقف نهائيًا، يُرجى استخدام Modifier.matchParentSize()‎ بدلاً منه. (If8044)

  • تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I57bff)

  • تم إلغاء إيقاف Modifier.semantics نهائيًا للسماح باستخدامات المكونات عالية المستوى. (I4cfdc)

  • تم دمج عمليات تنفيذ CanvasScope ليصبح لدينا الآن DrawScope و ContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تعديل DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection تم حذف الفئة الفرعية DrawScope في ContentDrawScope تم تعديل Painter وPainterModifier لإيقاف الاحتفاظ بخاصية RTL بأنفسهما لأنّ DrawScope يوفّر ذلك بدون تقديمه يدويًا (I1798e)

  • يزيل فلتر DoubleTapGestureFilter الآن التباس فلتر SingleTapGestureFilter في جميع أنحاء الشجرة. (If92b1)

  • تم تعديل Alignment API وإضافة ميزة محاذاة مطلقة (لا تتم عكسها تلقائيًا في سياق RTL) (I38cd3)

  • تم تغيير واجهة برمجة التطبيقات الخاصة بعناصر تعديل DrawLayer: تمت إعادة تسمية outlineShape إلى shape وأصبحت لها القيمة التلقائية RectangleShape وهي الآن غير مسموح بتركها فارغة. تمت إعادة تسمية clipToOutline إلى clip، وتمّت إزالة clipToBounds لأنّها متطابقة مع clip == true مع RectangleShape (I7ef11، b/155075735)

  • تم تعديل واجهات برمجة التطبيقات التي تُنشئ رسومًا أكبر حجمًا لتعرض Canvas بدلاً من CanvasScope. ويؤدي ذلك إلى عدم إلزام المستهلكين بصيانة عناصر Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين يحتاجون إلى الوصول إلى Canvas ، يمكنهم استخدام أسلوب drawCanvas الإضافة الذي يقدّم طلبًا للرجوع لإصدار رسومات باستخدام Canvas الأساسية. (I80afd)

  • تم تغيير واجهة برمجة التطبيقات lambda التي تلي WithConstraints. والآن، بدلاً من مَعلمتَين، يحتوي على نطاق مستلِم يقدّم، بالإضافة إلى القيود وlayoutDirection، سمات minWidth وmaxWidth وminHeight وmaxHeight في Dp (I91b9a وb/149979702).

  • تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)

  • تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)

  • تحتوي وظائف القياسات الأساسية في Layout وLayoutModifier2 الآن على مستلِم IntrinsicMeasureScope الذي يقدّم واجهة برمجة تطبيقات طلبات البحث عن القياسات الأساسية مع اتجاه التنسيق الذي يتم نشره بشكل ضمني. (Id9945)

  • يمكن قياس عناصر Layout وLayoutModifier باستخدام اتجاه تنسيق مختلف. (Ibd731)

  • تمت إضافة دالة Modifier.zIndex() الجديدة للتحكّم في ترتيب رسم العناصر الفرعية ضمن تنسيق العنصر الرئيسي نفسه. تمت إعادة تسمية سمة elevation في DrawLayerModifier إلى shadowElevation، ولم تعُد تتحكّم في ترتيب الرسم. تم تغيير ترتيب المَعلمات في DrawShadow: أصبح الارتفاع هو المَعلمة الأولى والشكل هو المَعلمة الثانية مع الشكل التلقائي RectangleShape. (I20150، b/152417501)

  • تمت إزالة onSizeChange وonPositionChange في Owner. (I5c718)

  • تمت إضافة Constraints2، وهي نسخة من Constraints لا تسمح سوى بقيود Int بدلاً من IntPx. ستتم إزالة IntPx ، وسيتم افتراض أنّ جميع قيود الأعداد الصحيحة هي بكسل مثل Android.

    • تمت إضافة IntSize أيضًا، والذي سيحلّ محلّ IntPxSize في النهاية. (I4b43a)
  • تمّت إتاحة إمكانية إنشاء Alignment باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة 1D. (Ia0c05)

  • يقبل alignToSiblings الآن عنصرًا من النوع "مقيس" بدلاً من "قابل للوضع". (I5788d)

  • (I45f09، b/152842521)

    • تمت إعادة تسمية ScaleFit إلى ContentScale
    • تم نقل ContentScale من ui-graphics إلى وحدة ui-core لتكون في الوحدة نفسها التي تتضمّن Alignment API.
    • تمت إعادة تسمية FillMaxDimension إلى Crop
    • تمت إعادة تسمية FillMinDimension إلى Fit
    • تم تغيير اسم ميزة "الملاءمة للداخل" إلى "الملاءمة للداخل بشكل أفضل".
    • مكافئات ImageView.ScaleType
    • تمت إضافة مستندات تشير إلى أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_CROP وFit المستخدَم مع Alignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.FIT_CENTER Inside المستخدَم مع Alignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_INSIDE
  • إتاحة اتجاه RTL لمُعدِّلات الرسم (I0aaf9)

  • تم إصدار واجهة برمجة تطبيقات لتضخيم عروض Android من XML. اطّلِع على العرض التقديمي لميزة ViewInCompose للحصول على مزيد من التفاصيل. (I42916)

  • تحسين DrawModifier API:

    • تمّ إنشاء نطاق المستلِم لـ draw() ContentDrawScope
    • إزالة جميع المَعلمات في draw()
    • تتضمّن DrawScope الواجهة نفسها التي كانت متوفّرة في CanvasScope سابقًا.
    • تحتوي ContentDrawScope على طريقة drawContent()‎ (Ibaced، b/152919067)
  • تمت إضافة positionInParent وboundsInParent إلى LayoutCoordinates. (Icacdd، b/152735784)

  • أصبحت قيمة المَعلمتَين DrawLayerModifier وdrawLayer()‎ التلقائية للمَعلمتَين clipToBounds وclipToOutline هي false. (I0eb8b، b/152810850)

  • تمت إعادة تسمية LayoutResult إلى MeasureResult. (Id8c68)

  • تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد عناصر تعديل التنسيق، وتم إيقاف LayoutModifier نهائيًا (If32ac).

  • تم استبدال عامل التشغيل "المعدِّل الإضافي" بدوالّ إضافات المصنع (I225e4)

  • تمت إضافة سمتَي translationX/Y للسماح بتعديل قائمة عرض أوامر الرسم الخاصة بطبقة معيّنة. يكون ذلك مفيدًا لنقل المحتوى استجابةً للصور المتحركة أو أحداث اللمس. (I8641c)

  • تمت إضافة مَعلمتَي pivotX وpivotY إلى واجهات برمجة تطبيقات الطبقات لإتاحة التدوير والتوسيع حول نقطة معيّنة على طبقة (Icf7c3).

  • أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدوال المكوّنة OnPositioned وOnChildPositioned. (I2ec8f)

  • تمت إضافة LayerModifier، وهو مُعدِّل يسمح بإضافة RenderNode لـ Layout. ويتيح ضبط القطع والشفافية والدوران والتكبير/التصغير والظلال. سيحلّ هذا الإجراء محلّ RepaintBoundary. (I7100d، b/150774014)

  • تم نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العقد الفرعية. تمت إضافة مُعدِّل اتجاه التنسيق. (I3d955)

  • يتيح مكوّن "الحزمة" اتجاه العرض من اليمين إلى اليسار (Ic9e00).

  • إتاحة RTL بشكل مبدئي في تنسيق "الإنشاء" (Ia5519)

  • تم دمج Density وDensityScope في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density)، يمكنك استخدام with(density) فقط (I11cb1).

  • تم تغيير LayoutCoordinates لجعل providedAlignmentLines مجموعة بدلاً من خريطة، وجعل LayoutCoordinates تنفِّذ عامل التشغيل get() بدلاً من استرداد قيمة. يسهّل ذلك على المُعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل مُعدِّل. (I0245a)

  • لم تعُد سمة LayoutCoordinates تحتوي على سمة position. لا تكون سمة position منطقية عند التفكير في LayoutModifiers أو التدوير أو التكبير/التصغير. بدلاً من ذلك، على المطوّرين استخدام parentCoordinates وchildToLocal()‎ لاحتساب التحويل من أحد LayoutCoordinate إلى آخر.

    تستخدِم LayoutCoordinates سمة IntPxSize لسمة size بدلاً من PxSize. تستخدِم التنسيقات أحجامًا صحيحة لوحدات البكسل في التنسيقات، لذا يجب أن تستخدِم جميع أحجام التنسيقات أعدادًا صحيحة وليس قيمًا بنقطة عائمة. (I9367b)

  • تحسينات على واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)

  • تم إنشاء واجهة برمجة التطبيقات CanvasScope API التي تُغلِّف كائن canvas لعرض سطح واجهة برمجة تطبيقات رسومات تعريفية بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق المستلِم الخاص بها، ويتم أيضًا تحديد نطاق معلومات الحجم لحدود الحشو المقابلة. ولا يتطلّب ذلك من المستخدِم الحفاظ على حالة العنصر Paint لضبط عمليات الرسم.

    • تمت إضافة CanvasScopeSample بالإضافة إلى تعديل التطبيق التجريبي لتضمين رسومات توضيحية تجريبية (Ifd86d).
  • تمت إزالة واجهة برمجة التطبيقات MaskFilter API غير المستخدَمة لأنّها ذات استخدام محدود ولم يتم تحسينها لتسريع الأجهزة في معظم حالات الاستخدام (I54f76).

  • تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)

  • تم استبدال جميع استخدامات Color التي تتضمّن قيمة فارغة في واجهة برمجة التطبيقات باستخدام قيمة غير فارغة واستخدام Color.Unset بدلاً من null (Iabaa7)

  • تقديم مَعلمة مستطيلة اختيارية إضافية لـ ImagePainter لتتمكّن من رسم قسم فرعي من ImageAsset الأساسية (I0ea9e)

  • تمت إضافة "لون غير محدّد" لتمثيل قيمة غير محدّدة بدون وضع الألوان في مربّعات. (If901a)

  • تمت إضافة طريقتَي الإضافة Canvas.rotate و Canvas.scale لاستخدام إحداثيات محور اختيارية في عمليات التحويل. يتم ضبط هذه القيم تلقائيًا على أعلى يمين ترجمة اللوحة الحالية.

    تم أيضًا نقل Canvas.rotateRad لتكون طريقة إضافة من أجل الاتساق (Ibaca6).

  • تم إنشاء PixelMap API لدعم طلب معلومات البكسل من ImageAsset. (I69ad6)

  • تمت إعادة تسمية toFrameworkRect/toFrameworkRectF إلى toAndroidRect/toAndroidRectF لمطابقة اصطلاح التسمية لتحويلات الكائنات بين أداة الإنشاء وواجهات برمجة التطبيقات لإطار عمل Android التي تم إنشاؤها استنادًا إليها. تم أيضًا تعديل المستندات حول واجهات برمجة التطبيقات هذه (I86337).

  • تمت إضافة VectorPainter API بهدف استبدال واجهة برمجة التطبيقات الحالية للتركيب الفرعي للرسومات المتجهّة. نتيجة التركيب الفرعي هي عنصر VectorPainter بدلاً من DrawModifier. تم إيقاف مكونات DrawVector السابقة نهائيًا لصالح VectorPainter.

    تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) API إلى PaintBox(Painter) تم إنشاء عنصر مركب مكوّن من أشكال هندسية يعمل مثل العنصر المركب من الصور باستثناء استخدام عنصر VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)

  • تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وImage composable القادم المستخدَم للمشاركة في تنسيق المحتوى ورسمه. _Body:تم إنشاء طريقة إضافة في android.graphics.Bitmap، Bitmap.asImageAsset()، لإنشاء مثيل لملف ImageAsset مفيد لدمج تطوير تطبيقات Android التقليدي مع إطار عمل Compose (Id5bbd)

  • تمت إضافة TextDirection.Content‏ (I48f36)

  • تمت إضافة عامل التشغيل TextDecoration.plus‏ (I0ad1a)

  • تمت إزالة Force من قيم التعداد TextDirectionAlgorithm (Icc944).

  • تمت إعادة تسمية TextDirectionAlgorithm باسم TextDirection (I75ce8)

  • تنفيذ LongPressAndDrag لاختيار TextField (I17919)

  • تمت إضافة AnnotatedString.getStringAnnotations التي تعرض جميع التعليقات التوضيحية ضمن النطاق. (I1fa00)

  • تم تغيير اسم حزمة Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)

  • يتضمّن مؤشر TextField تأثيرًا متحركًا للميض (Id10a7)

  • تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) إلى annotatedString(builder: Builder). (Ia6377)

  • تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)

  • أعد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)

  • أصبح من الممكن الآن إخفاء/إظهار لوحة المفاتيح البرمجية باستخدام SoftwareKeyboardController الذي يتم إرساله من خلال callback (I8dc44، b/151860051)

  • تمت إضافة عامل التشغيل "زائد" لأسلوب (Text/Paragraph/Span) الذي يفوض الدالة merge()‎. (Ia1add)

  • لم تعُد دالة FontWeight.lerp تُطبّق القيمة بشكل فوري. ولا تزال فئة بيانات. (I521c2)

  • أصبح مُنشئ FontWeight متاحًا للجميع، ولم يعُد فئة بيانات. (Id6b1f)

  • أضِف getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801).

  • تمت إعادة تسمية وحدة ui-text باسم ui-text-core (I57dec)

  • تمّت إزالة فئة المقاس غير المستخدَمة لأنّ هناك فئة مقاس مكرّرة في وحدة ui-geometry التي يتم استخدامها. (I1b602)

  • تمت إضافة AdapterList، وهو مكوّن قائمة لفائف يُنشئ ويُعدّ العناصر المرئية فقط. تشمل المشاكل المعروفة حاليًا أنّه عمودي فقط ولا يعالج بشكل كامل كل حالات التغييرات على العناصر الفرعية. (Ib351b)

  • أضِف مَعلمات الحشو والحدود والشكل والخلفية إلى المربّع (I05027، b/148147281).

إصلاح الأخطاء

  • تمت إعادة تسمية دالة الاستدعاء onFocusChange في الحقول النصية إلى onFocusChanged (Ida4a1).
  • تم إيقاف عنصرَي VerticalScroller وHorizontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك العمود/الصف والمَعلمات، أو استخدِم Modifier.verticalScroll وModifier.horizontalScroll في العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا واستبداله بـ ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607)
  • تمت إعادة تسمية العديد من واجهات برمجة التطبيقات للاختبار لتكون أكثر سهولة. تمت إعادة تسمية كل واجهات برمجة التطبيقات findXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة التطبيقات doXYZ إلى performXYZ. (I7f164)
  • يمكن الآن إنشاء واجهة مستخدم الإنشاء داخل ViewGroups بدون الحاجة إلى إنشاء واجهة جديدة. اطّلِع على ViewInteropDemo للحصول على مثال. (I9ab0b، b/160455080)
  • تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7)
  • تنفيذ عناصر التحكّم في السحب لتغيير التحديد في TextField (I27032)
  • تمّت إزالة فئة Shader المضمّنة التي كانت تُغلِّف فئة NativeShader المُتوقّعة وتمت إعادة تسمية NativeShader إلى Shader. لم تُضِف فئة Shader المضمّنة المُغلفة أي قيمة إلى سطح واجهة برمجة التطبيقات وكانت فئة مضمّنة، لذا استخدِم فئة NativeShader مباشرةً. (I25e4d)
  • تمّت إعادة صياغة PainterModifier لإيقاف توفير التكبير/التصغير استنادًا إلى القيود المحدّدة ومَعلمة ContentScale. إنّ عمليات تنفيذ Painter هي لتوسيع نطاق محتوى الرسم بأنفسهم استنادًا إلى الحجم المحدّد لـ DrawScope الذي يرسمون فيه.

    تم إصلاح المشكلة التي كانت تؤدي إلى ضبط حجم ذاكرة التخزين المؤقت bitmap في VectorPainter على حجمها التلقائي بدلاً من الحجم المحدَّد للرسم.

    تم تعديل ImagePainter لتوسيع نطاق المحتوى بدلاً من الاعتماد على PainterModifier للقيام بذلك نيابةً عنه. (I6ba90)

  • إضافة الدالة withFrameNanos من المستوى الأعلى لتحديد توقيت الصور المتحركة (Ie34c5)

  • تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِل ذلك بـ @ComposableContract(tracked=false) (Id211e)

  • تم إيقاف androidx.ui.foundation.TextFieldValue و androidx.ui.input.EditorValue نهائيًا. إنّ العناصر المركبة TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع متوقّفة نهائيًا أيضًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005).

  • تم إصلاح مشكلة كانت تؤدي إلى تعطُّل عند إرسال إدخال المؤشر في حال إزالة ملفّات ترشيح إدخال المؤشر من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)

  • تم إصلاح مشكلة كانت تؤدي إلى تعطُّل التطبيق عند إرسال إدخال المؤشر إذا تمّت إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)

  • تمّت إعادة صياغة فئة Radius لتصبح فئة مضمّنة. تمت إزالة methods لإنشاء الأشكال المصاحبة واستخدام دالة باني الدوال مع مَعلمة تلقائية لكي يتطابق نصف القطر على محور y مع مَعلمة نصف القطر الإلزامية على محور x.

    تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتين منفصلتين للرقم العشري للقطر على محورَي x وy (I46d1b).

  • لم تعُد ميزة Recompose composable عنصرًا مجردًا مفيدًا. من المفترض أن تحدث معظم عمليات إعادة التركيب نتيجة عمليات تعيين MutableState. لأيّ شيء آخر، ننصحك باستخدام الدالة invalidate لإعادة تكوين النطاق الحالي. (Ifc992)

  • تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من الجهد الكبير الذي تم بذله لإعادة صياغة الرمز البرمجي للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Iede0b)

  • يغيّر استراتيجية إنشاء الرموز البرمجية لمجمّع Compose. قبل التغيير، كان مُجمِّع الإنشاء يحوّل المكالمات إلى دوال قابلة للتركيب. من خلال هذا التغيير، نُحوّل الآن نصّ الدالة القابلة للتجميع ونترك موقع الاستدعاء بدون تغيير (في الغالب).

    وهذا يعني أنّ معظم المنطق الذي يتواصل مع وقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.

    يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات Compose. من المفترض ألّا يحتاج معظم مستخدمي ميزة "الإنشاء" إلى تعديل أي رمز نتيجةً لهذا التغيير.

    ولتفعيل هذا الإجراء، تم تغيير توقيع JVM لجميع الدوال القابلة للتجميع. يتم تحويل دالة قابلة للتجميع تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، والمَعلمات الإضافية هي "المُنشئ"، وهو عدد صحيح "مفتاح"، وعدد صحيح لقناع بتات يُستخدَم لنشر البيانات الوصفية من خلال طلبات البيانات.

    تعمل ميزة "الإنشاء" الآن أيضًا على تحويل الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إدخال حمولة زائدة تلقائية اصطناعية إضافية للدالة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوالّ.

    التغييرات السلوكية المتعمّدة المعروفة الناتجة عن ذلك:

    1. سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها في السابق
    2. تم الآن الاشتراك في التعبيرات القابلة للتجميع في تعبيرات الوسيطة التلقائية ومعالجتها بشكل صحيح.

    شمل هذا العمل بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال مخطّط استدعاء الدوال إلى الدوال الأخرى القابلة للتجميع. سيؤدي ذلك إلى إجراء عدد أقل من المقارنات أثناء التشغيل، وإلى تقليل حجم جدول الفتحات، بالإضافة إلى زيادة عدد عمليات تخطّي الدوالّ القابلة للتجميع التي لم يتم تخطّيها في السابق 2. لا تتمّ مقارنة المَعلمات التي يتمّ تحديدها على أنّها "ثابتة" في وقت الترجمة أو تخزينها في وقت التشغيل. ويؤدي ذلك إلى تقليل عدد المقارنات وحجم جدول الفتحات. 3- يتم استخدام بنية تدفّق التحكّم في نص الدوالّ لتقليل عدد المجموعات التي يتم إنشاؤها. ويؤدي ذلك إلى تقليل حجم جدول الفتحات ويؤدي إلى تقليل العمل الذي يُجريه وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والمُستلِم غير المستخدَمة في الدوالّ عند تحديد إمكانية تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.

    كانت معظم التغييرات الأساسية متعلقة بواجهات برمجة التطبيقات التي يستهدفها المُجمِّع مباشرةً، ولن يتأثر الاستخدام المعتاد لـ compose: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة طرق العرض الزائدة key التي لا تتضمّن متغيرات عددية متغيرة. استخدِم الإصدار vararg من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي "المحوري" نهائيًا. استخدِم key كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقع Function3 بدلاً من Function1 7. تم تعديل restartableFunction وrestartableFunctionN لتضمين مَعلمات إضافية في وقت الترجمة (I60756، b/143464846)

  • تمت إزالة عوامل تعديل LayoutAlign المتوقّفة نهائيًا. (I10877)

  • تمت إزالة RepaintBoundary لصالح DrawLayerModifier (I00aa4)

  • أصبح لكل من Button وFloatingActionButton وClickable الآن مَعلمة enabled منفصلة. تمّت إعادة تسمية بعض المَعلمات في Button أو إعادة ترتيبها. (I54b5a)

  • تم استبدال ButtonStyle بوظائف مختلفة وإزالة التحميل الزائد للنص (السلسلة). اطّلِع على العيّنات المعدَّلة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)

  • تغييرات جذرية في واجهة برمجة التطبيقات Ambients API اطّلِع على السجلّات ومستندات Ambient<T> للحصول على التفاصيل (I4c7ee، b/143769776).

  • تم تغيير سلوك TextDirection التلقائي ليتم تحديده حسب LayoutDirection. على سبيل المثال، إذا كان LayoutDirection هو RTL، سيكون TextDirection التلقائي هو RTL. كان سابقًا TextDirection.ContentOrLtr/Rtl (I4e803)

  • إصلاح خطأ: عند تداخل وزن الخط ونمط الخط في AnnotatedString، لا يتم عرض النص بشكل صحيح. (I77a9d)

  • تُضيف هذه الدالة المَعلمات المستخدَمة بشكل شائع إلى Text(). إذا كنت بصدد إنشاء نمط نص محلي حاليًا لتمرير عدد صغير من هذه المَعلمات، مثل Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً: Text(textAlign = TextAlign.Center) (I82768)

  • تمت إعادة تسمية الوحدة ui-android-text باسم ui-text-android (I68cbe).