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

المكونات الأساسية لواجهة مستخدم إنشاء الرسائل اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال
آخر تعديل الإصدار المستقر إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
30 أكتوبر 2024 1.7.5 - - 1.8.0-alpha05

البنية

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

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

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

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

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

لمزيد من المعلومات حول العناصر الاعتمادية، يُرجى الاطّلاع على إضافة تبعيات الإصدار.

ملاحظات

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

إنشاء عدد جديد

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

الإصدار 1.8

الإصدار 1.8.0-alpha05

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

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

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

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

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

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

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

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

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

الإصدار 1.8.0-alpha04

16 أكتوبر 2024

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

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

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

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

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

الإصدار 1.8.0-alpha03

2 أكتوبر 2024

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

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

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

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

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

الإصدار 1.8.0-alpha02

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

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

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

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

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

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

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

  • يقبل Map في AlignmentLines الآن أنواع الخرسانة VerticalAlignmentLine أو HorizontalAlignmentLine. (I02912)
  • طريقة ByteArray.decodeToImageBitmap(): ImageBitmap شائعة جديدة (I83c21)

الإصدار 1.8.0-alpha01

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

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

الإصدار 1.7

الإصدار 1.7.5

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

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

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

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

الإصدار 1.7.4

16 أكتوبر 2024

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

الإصدار 1.7.3

2 أكتوبر 2024

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

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

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

الإصدار 1.7.2

18 سبتمبر 2024

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

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

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

الإصدار 1.7.1

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

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

الإصدار 1.7.0

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

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

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

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

الإصدار 1.7.0-rc01

21 آب (أغسطس) 2024

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

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

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

الإصدار 1.7.0-beta07

7 آب (أغسطس) 2024

تم طرح androidx.compose.ui:ui-*:1.7.0-beta07. يحتوي الإصدار 1.7.0-beta07 على عمليات التنفيذ هذه.

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

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

الإصدار 1.7.0-beta06

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

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

الإصدار 1.7.0-beta05

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

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

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

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

الإصدار 1.7.0-beta04

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

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

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

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

الإصدار 1.7.0-beta03

12 يونيو 2024

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

الإصدار 1.7.0-beta02

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

تم طرح androidx.compose.ui:ui-*:1.7.0-beta02. يحتوي الإصدار 1.7.0-beta02 على عمليات التنفيذ هذه.

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

  • تمت إعادة تسمية SemanticsProperties.Editable إلى IsEditable وتغيير SemanticsPropertyReceiver.editable إلى 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).
  • تم تحديث واجهة برمجة التطبيقات للحصول على روابط ذات طابع متعدد الأبعاد في نص. على وجه التحديد، تمّت إزالة الطرق من TextDefaults لإنشاء LinkAnnotations ذات طابع معيّن وتحليل HTML باستخدام روابط ذات طابع معيّن. بدلاً من ذلك، تمت إضافة فئة TextLinkStyles تتيح تصميم الروابط كمَعلمة إلى عنصر Text composable. (I31b93)

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

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

الإصدار 1.7.0-alpha08

1 مايو 2024

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha07

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

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

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

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

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

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

الإصدار 1.7.0-alpha06

3 أبريل 2024

تم طرح androidx.compose.ui:ui-*:1.7.0-alpha06. تحتوي الإصدار 1.7.0-alpha06 على عمليات التنفيذ هذه.

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

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

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

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

الإصدار 1.7.0-alpha05

20 مارس 2024

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

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

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha04

‫6 مارس 2024

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

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

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

الإصدار 1.7.0-alpha03

21 فبراير 2024

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

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

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

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

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

الإصدار 1.7.0-alpha02

7 فبراير 2024

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha01

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

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

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

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

الإصدار 1.6

الإصدار 1.6.8

12 يونيو 2024

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

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

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

الإصدار 1.6.7

1 مايو 2024

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

الإصدار 1.6.6

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

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

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

  • إصلاح عطل نادر في BasicTextField.

الإصدار 1.6.5

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

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

الإصدار 1.6.4

20 مارس 2024

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

الإصدار 1.6.3

‫6 مارس 2024

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

الإصدار 1.6.2

21 فبراير 2024

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

الإصدار 1.6.1

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

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

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

الإصدار 1.6.0

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

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

الإصدار 1.6.0-rc01

10 يناير 2024

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

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

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

الإصدار 1.6.0-beta03

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

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

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

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

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

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

الإصدار 1.6.0-beta02

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

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

الإصدار 1.6.0-beta01

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.6.0-alpha08

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

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

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

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

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

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

الإصدار 1.6.0-alpha07

‫4 أكتوبر 2023

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

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

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

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

  • تحليل محسَّن للعناصر القابلة للرسم لمتّجهات XML (Ibb015)

الإصدار 1.6.0-alpha06

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

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

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

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

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

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

الإصدار 1.6.0-alpha05

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

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

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

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

الإصدار 1.6.0-alpha04

23 آب (أغسطس) 2023

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

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

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

الإصدار 1.6.0-alpha03

9 آب (أغسطس) 2023

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

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

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

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

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

الإصدار 1.6.0-alpha02

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

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

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

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

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

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

الإصدار 1.6.0-alpha01

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

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

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

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

تغيير السلوك: أصبحت addFontPadding خطأ تلقائيًا في Compose

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.5

الإصدار 1.5.4

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

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

الإصدار 1.5.3

‫4 أكتوبر 2023

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

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

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

الإصدار 1.5.2

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

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

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

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

الإصدار 1.5.1

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

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

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

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

الإصدار 1.5.0

9 آب (أغسطس) 2023

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

الإصدار 1.5.0-rc01

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

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

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

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

الإصدار 1.5.0-beta03

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

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

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

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

الإصدار 1.5.0-beta02

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

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

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

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

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

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

الإصدار 1.5.0-beta01

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

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

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

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

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

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

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

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

الإصدار 1.5.0-alpha04

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

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

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

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

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

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

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

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

الإصدار 1.5.0-alpha03

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

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

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

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

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

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

الإصدار 1.5.0-alpha02

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

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

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

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

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

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

الإصدار 1.5.0-alpha01

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

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

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

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

الإصدار 1.4

الإصدار 1.4.3

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

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

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

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

الإصدار 1.4.2

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

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

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

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

الإصدار 1.4.1

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

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

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

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

الإصدار 1.4.0

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

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

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

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

الإصدار 1.4.0-rc01

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

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

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

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

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

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

الإصدار 1.4.0-beta02

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

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

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

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

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

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

الإصدار 1.4.0-beta01

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

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

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

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

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

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

الإصدار 1.4.0-alpha05

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

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

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

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

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

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

الإصدار 1.4.0-alpha04

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

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

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

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

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

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

الإصدار 1.4.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 1.4.0-alpha02

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

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

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

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

الإصدار 1.4.0-alpha01

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

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

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

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

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

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

الإصدار 1.3

الإصدار 1.3.3

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

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

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

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

الإصدار 1.3.2

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

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

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

  • تم التحديث لاستخدام Profobuf 3.21.8، الذي يؤدي إلى تجنُّب تنبيه الأمان في protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

الإصدار 1.3.1

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

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

الإصدار 1.3.0

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

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

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

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

الإصدار 1.3.0-rc01

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

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

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

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

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

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

الإصدار 1.3.0-beta03

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

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

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

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

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

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

الإصدار 1.3.0-beta02

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

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

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

  • تمت إضافة حِمل زائد تجريبي إلى التنسيق الذي يقبل قائمة lambdas متعددة المحتوى القابل للإنشاء، ما يسمح بدمج عناصر تهديد قابلة للقياس في محتوى lambdas مختلفة (Ic1b4e).

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

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

الإصدار 1.3.0-beta01

24 آب (أغسطس) 2022

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

إعادة هيكلة عقدة المُعدِّل

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

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

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

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

المخاطر

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.3.0-alpha03

10 آب (أغسطس) 2022

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

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

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

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

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

الإصدار 1.3.0-alpha02

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

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

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

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

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

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

الإصدار 1.3.0-alpha01

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

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

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

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

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

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

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

الإصدار 1.2

الإصدار 1.2.1

10 آب (أغسطس) 2022

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

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

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

الإصدار 1.2.0

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

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

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

  • تحسينات في اجتياز التركيز:

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

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

الإصدار 1.2.0-rc03

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

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

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

الإصدار 1.2.0-rc02

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

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

الإصدار 1.2.0-rc01

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

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

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

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

الإصدار 1.2.0-beta03

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

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

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

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

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

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

الإصدار 1.2.0-beta02

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

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

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

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

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

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

الإصدار 1.2.0-beta01

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

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

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

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

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

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

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

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

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

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

    إلى:

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

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

  • تمت إعادة تسمية "LineVerticalAlignment" باسم "LineHeightStyle.Alignment".

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha08

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

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

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

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

الإصدار 1.2.0-alpha07

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

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

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

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

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

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

الإصدار 1.2.0-alpha06

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha05

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

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha04

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

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

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

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

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

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

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

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

  • دعم تحميل الخط غير المتزامن في Text (I77057، b/214587005)

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

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

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

الإصدار 1.2.0-alpha03

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

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

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

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

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

  • يتوفّر تطبيق "FontFamilyResolver" الآن عبر "LocalFontFamilyResolver.current".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha02

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

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

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

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

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

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

الإصدار 1.2.0-alpha01

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

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

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

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

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

  • تعتمد الآن على لغة 1.6.10 بلغة Kotlin.

الإصدار 1.1

الإصدار 1.1.1

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

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

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

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

الإصدار 1.1.0

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

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

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

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

الإصدار 1.1.0-rc03

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

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

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

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

الإصدار 1.1.0-rc01

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

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

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

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

الإصدار 1.1.0-beta04

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

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

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

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

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

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

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

  • إصلاح مقابض النص التي لا تتحرك عندما يتغير مستوى رؤية أداة IME. (I25f2e)

الإصدار 1.1.0-beta03

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

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

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

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

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

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

الإصدار 1.1.0-beta02

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

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

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

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

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

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

الإصدار 1.1.0-beta01

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

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

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

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

الإصدار 1.1.0-alpha06

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

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

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

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

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

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

الإصدار 1.1.0-alpha05

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

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

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

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

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

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

الإصدار 1.1.0-alpha04

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

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

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

  • يتضمّن PointerEvent الآن PointerEventType لتفعيل أحداث التمرير بمؤشّر الماوس. (I091fa)
  • هي تسمح للأطفال بقبول إدخالات المؤشر خارج حدود إدخال المؤشر الأصل. ويمكن للوالدَين اعتراض تلك المكالمات باستخدام السمة PointerInputScope.alwaysInterceptChildEvents (I9eae3، b/192479655)
  • تم إيقاف العمليّتين performGesture وGestureScope واللذين تم استبدالهما بـ performTouchInput وTouchInjectionScope. (Ia5f3f، b/190493367)
  • تمت إضافة touchBoundsInRoot إلى SemanticsNode الذي يتضمّن الحدّ الأدنى لحجم مساحة اللمس حتى يتمكّن المطوّرون من التأكّد من استيفاء مساحات اللمس للحدّ الأدنى لمتطلبات تسهيل الاستخدام. (I2e14b، b/197751214)
  • إعادة تنفيذ الفحص (I927bc، b/191017532)
  • تم تغيير اسم المَعلمة inspectable (قابل للفحص) لتتطابق مع المَعلمة composed (مُركّب) (I3a482، b/191017532)
  • تمّ تقديم performTouchInput وTouchInjectionScope كبديلين عن performTouchInput وTouchInjectionScope، ما مهّد الطريق لظهور وسائل أخرى (مثل الماوس).

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

    يتشابه سلوك TouchInjectionScope تقريبًا مع GestureScope، مع تفاصيل صغيرة:

    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 على هذه المراجعات.

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

  • تم تعديل سياسة ComposeAllowed التي تم تحديثها 1.1.0-alpha03 للاعتماد على لغة 1.5.30 في لغة Kotlin. (I74545)

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

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

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

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

الإصدار 1.1.0-alpha02

18 آب (أغسطس) 2021

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

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

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

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

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

الإصدار 1.1.0-alpha01

4 آب (أغسطس) 2021

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

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

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

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

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

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

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

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

الإصدار 1.0

الإصدار 1.0.5

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

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

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

  • تم إصلاح مثيلات الحالة المستمدة من تتبُّع الأعطال. (aosp/1792247)

الإصدار 1.0.4

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

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

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

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

الإصدار 1.0.3

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

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

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

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

الإصدار 1.0.2

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

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

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

الإصدار 1.0.1

4 آب (أغسطس) 2021

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

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

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

الإصدار 1.0.0

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

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

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

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

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

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

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

    لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو إصدار أحدث في ملف build.gradle. سيتم إصلاح هذه المشكلة في الإصدار التالي من Android Studio Bumblebee و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).
  • تدعم لوحة الرسم الآن معلمة contentDescription لإمكانية الوصول. (Ib547c)
  • تمت إعادة تسمية useDefaultMaxWidth في PopupProperties إلى usePlatformDefaultWidth. (I05710)
  • يمكن الآن للمربّعات الحوار استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
  • تمت إضافة دعم تجريبي لتمثيلات ملفّات bmp بتنسيقَي HSV وHSL. (Id7cf8، b/180731008)

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

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

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

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

الإصدار 1.0.0-beta09

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

آلية العمل

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

الإصدار 1.0.0-beta08

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

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

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

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

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

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

الإصدار 1.0.0-beta07

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

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

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

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

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

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

الإصدار 1.0.0-beta06

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

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

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

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

الإصدار 1.0.0-beta05

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

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

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

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

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

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

الإصدار 1.0.0-beta04

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

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

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

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

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

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

الإصدار 1.0.0-beta03

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

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

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

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

الإصدار 1.0.0-beta02

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

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

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

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

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

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

الإصدار 1.0.0-beta01

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تتحقّق الإجراءات النصية الآن من التركيز تلقائيًا (I13777، b/179648629)

  • تمت إزالة runBlockingWithManualClock (I15cdc وb/179664814)

  • يتم الآن تمثيل موضع التمرير في Modifier.verticalScroll()‎/horizontalScroll()‎ باستخدام الأعداد الصحيحة (I81298).

  • تمت إعادة تسمية FlingConfig إلى FlingBehavior، ما يتيح الآن تخصيص الصورة المتحركة للتعليق بدلاً من استخدام قيم الانحدار المحدَّدة مسبقًا. (I02b86، b/175294473)

  • تمت إضافة دالة مساعدة مفيدة لتحديد الإجراء نفسه لجميع عمليات ردّ الاتصال ImeAction (I63447، b/179226323)

  • تمت إزالة معاودة الاتصال لبرنامج SoftwareControllerController من جميع الحقول النصية لاستبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)

  • لم يعُد يتم استخدام FontSpan وFontWeigthStyleSpan وتمّت إزالتهما. (Ie5b56، b/177423444)

  • تم إجراء التغييرات التالية على Material API:

    • تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
    • تم إعادة ترتيب المَعلمات في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات بأن تكون المَعلمات المطلوبة قبل المَعلمات الاختيارية.
    • تم نقل المَعلمة icon في BottomNavigationItem لتظهر بعد selected وonClick.
    • تمت إعادة تسمية المَعلمة alwaysShowLabels في BottomNavigationItem إلى alwaysShowLabel.
    • تمت إعادة تسمية مَعلمات bodyContent في بعض المكوّنات إلى content فقط.
    • إعادة ترتيب المَعلمات في ButtonDefaults.buttonColors() يُرجى العِلم أنّه لن يحدث خطأ في الرمز البرمجي لأنّ نوع المَعلمات لم يتغيّر. يُرجى التأكّد من استخدام مَعلمات مُسمّاة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز البرمجي بالطريقة نفسها التي كان يعمل بها سابقًا.
    • تمت إضافة المَعلمة secondaryVariant إلى darkColors(). عادةً ما يكون هذا اللون هو نفسه اللون secondary في المظهر الداكن، ولكنّه تتم إضافته لتوفير المزيد من الاتّساق وتخصيص المحتوى.
    • تمت إزالة ElevationDefaults و‎animateElevation()‎ من واجهة برمجة التطبيقات العامة لأنّهما لم يكونا شائعين أو مفيدين.
    • تمت إعادة تسمية onValueChangeEnd في Slider إلى onValueChangeFinished وجعلتها nullable.
    • تمت إعادة تسمية المَعلمة text في Snackbar إلى content من أجل الاتساق.
    • تمت إضافة المَعلمة contentPadding إلى DropdownMenuItem للسماح بتخصيص الحشو التلقائي وجعل content إضافةً على RowScope.
    • تمت إعادة تسمية ModalDrawerLayout إلى ModalDrawer.
    • تمت إعادة تسمية BottomDrawerLayout إلى BottomDrawer.
    • (I1cc66)

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

  • تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد AnimatedVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملف XML بتنسيق <animated-vector> كملف AnimatedImageVector وحرِّكه باستخدام painterFor (I8ea91).
  • تمت إضافة واجهة برمجة تطبيقات محلية جديدة لتركيب LocalSoftwareMonitorController لاستبدال واجهة SoftwareboardController السابقة في TextField. (I658b6، b/168778053)

الإصدار 1.0.0-alpha12

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

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

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

  • تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمّت إزالة العناصر المُركّبة emitView التي تمّ إيقافها نهائيًا. (Ifb214)
  • يتطلب Modifier.pointerInput الآن تذكُّر المفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل دالة التشغيل المتعدّد لرصد إدخال المؤشر لأجل التبعيات الجديدة. (I849cd)
  • تم تغيير اسم CompositionReference إلى CompositionContext (I53fcb)
  • تمت إعادة تسمية Bounds إلى DpRect (I4b32a).
  • اختبار التحديث: ستبحث hasText() عن كلٍّ من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803).
  • تم نقل ملف viewModel() القابل للإنشاء وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. ستحتاج الآن إلى إضافة تبعية منفصلة androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لاستخدامها. (I7a374)
  • السماح بإجراء nullable في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى String (I0dc82)
  • لمطابقة اصطلاحات التسمية بشكل أفضل مع ImageBitmap وImageVector، تم إعادة تسمية ImagePainter ليصبح BitmapPainter للتوازي مع VectorPainter. (Iba381، b/174565889)
  • استخدام واجهات برمجة تطبيقات أفضل لاختبار السلاسل الفرعية مع استخدام سلسلة فرعية كوسيطة (Icbe78)
  • تمت إضافة Modifier.focusOrder() يقبل طلبات التركيز بدون تحديد طلب تركيز مخصّص أو مقياس لامبادا. يكون ذلك مفيدًا عندما نحتاج فقط إلى تحديد مرجع وليس ترتيبًا مخصّصًا للتركيز في عنصر قابل للتركيب (I4f52a، b/179180978).
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الوحدت androidx.activity:activity-compose. (Icf416)
  • تمت إزالة طريقتَي تحليل البنية وcopy()‎ من عدة فئات حيث نادرًا ما كانتا تُستخدَمَين. (I26702، b/178659281)
  • تم نقل النافذة المنبثقة لتكون خاصة بالنظام الأساسي. تمت إعادة تسمية AndroidPopupProperties إلى PopupProperties، وتم نقل isFocusable إلى مَعلمة focusable في PopupProperties (Ieeea5).
  • تم نقل مربّع الحوار ليكون خاصًا بمنصة معيّنة. تمت إعادة تسمية AndroidDialogProperties إلى DialogProperties. (I4ef69، b/179138130)
  • تمّ جعل LayoutNode داخليًا (I8a7b1، b/175103944)
  • تم استبدال Constraints.enforce بـ Constraints.constrain. (I8b8ea)
  • تم إيقاف loadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. تم إيقاف imageResource وloadImageResource وvectorResource وloadVectorResource نهائيًا. يُرجى استخدام PainterResource بدلاً من ذلك. (I6b809)
  • لأسباب تتعلق بالأداء، تأخذ دلالات ScrollAxisRange الآن قيم lambdas التي تعرض أعداد عائمة بدلاً من قيم عائمة مباشرة. (If4a35، b/178657186)
  • تمت إضافة سمات EditableText لوضع علامة على نص الإدخال القابل للتعديل في الحقل النصي لتوفير إمكانية الوصول وطرق الاختبار المقابلة للتحقّق من السمات (I8e07a)
  • تم إنشاء OwnerLayer/OwnerScope/OwnerSnapshotObserver داخليًا (I4ffaf، وb/175103944)
  • تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
  • تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
  • تم تعديل Snapshot API لتكون أكثر اتساقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات المتاحة للجميع. (Id9e32)
  • تمت إضافة إجراءات الدلالة الموسّعة والتصغير. تمت إضافة expand وHalfexpand في ModalBottomSheetState (Ib5064)
  • تم إيقاف Modifier.dragالإيماءاتFilter نهائيًا. استخدِم Modifier.pointerInput { detectDragGestures (...)} بدلاً من ذلك. بدلاً من ذلك، استخدِم Modifier.draggable لسحب محور واحد (I0ba93، b/175294473).
  • أُعيدت تسمية "الأجواء المحيطة" لتتطابق مع "وضع الاستراحة" -> ChocolateLocal. كان يُطلق على الخلفيات اسم AmbientFoo، والآن يُطلق على CompositionLocals اسم LocalFoo. (I2d55d)
  • تمت إزالة BaseTextField المتوقّف نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
  • تم نقل التحديد إلى الأساس. (I7892b)
  • على غرار الطريقة التي أزلنا بها سابقًا state { 0 } composable وبدأنا الآن الترويج لاستخدام remember { mutableStateOf(0) }، سنزيل savedInstanceState { 0 } composable. يجب استخدام rememberSaveable { mutableStateOf(0) } بدلاً من ذلك، وسيتم حفظه واستعادته تلقائيًا إذا كان من الممكن تخزين النوع المستخدَم داخل MutableState في الحِزمة. إذا كنت في السابق تمرّر عنصر حفظ مخصّصًا، عليك الآن استخدام طريقة تحميل زائدة جديدة من rememberSaveable تحتوي على المَعلمة stateSaver. سيظهر الاستخدام على النحو التالي: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26، b/177338004)
  • تمت إضافة دلالات كلمات المرور لتحسين إمكانية الاستخدام (I231ce)
  • تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدم غير المحددة لتحسين إمكانية الاستخدام (I6fe05)
  • تم إيقاف الأداتَين emptyContent() و(@Composable () -> Unit).orEmpty() نهائيًا لأنّهما لم تعُد تؤثران في الأداء أو تُقدّم أي قيمة إيجابية (I0484d)
  • snapshotFlow وwithMutableSnapshot لم يعودا تجريبيين (I6a45f)
  • يمكن الآن إغلاق أدوات إعادة التركيب. ستتم متابعة عملية إعادة التركيب من قِبل إعادة المُركّبين المغلقين إلى أن تكتمل عمليات إعادة التركيب الفرعية للوظائف المتكررة. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينه وبين close. (Ib6d76)
  • تمت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وتمت إعادة تسمية AmbientUiSavedStateRegistry إلى AmbientSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
  • تمت إعادة تسمية Artefact androidx:compose:runtime:runtime-saved-instance-state ليصبح androidx:compose:runtime:runtime-saveable (I6dcac).
  • تم حذف العديد من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا منذ فترة طويلة في حزمة ui. (I2f2dc)
  • تم إيقاف العنصرCompose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime و AndroidUiDispatcher في compose:ui. (Ib5c36)
  • لم تعُد فئات Outline.* فئات بيانات (I4879e وb/178001427)
  • تمت إزالة view.captureToImage() بدون أي بديل. (I7fcd2)
  • تمّت إضافة واجهة برمجة التطبيقات ColorMatrix API المستخدَمة لتعديل قيم rgb للمحتوى المصدر، وإعادة صياغة واجهة برمجة التطبيقات ColorFilter API لتكون واجهة وتناسب تنفيذ PathEffect. (Ica1e8)
  • أضِف مَعلمةLayoutDirection إلى CreateOutline في الشكل. يتيح ذلك إنشاء أشكال تراعي اتجاه التنسيق. (I57c20، b/152756983)
  • تم إيقاف onImeActionPerformed نهائيًا. يمكنك استخدام "إجراءات لوحة المفاتيح" بدلاً منها (If0bbd وb/179071523).
  • تمّ تقديم InfiniteAnimationPolicy عنصر سياق coroutine الذي سيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء الاختبارات باستخدام ComposeTestRule. (I50ec4، b/151940543)
  • تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
  • تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بإنشاء سمة parentCoordinates جديدة. تقدّم الآن سمة parentCoordinates سمة LayoutCoordintes الخاصة بالمعدِّل الرئيسي. سيتيح ذلك المزيد من حالات الاستخدام الكاملة لـ onSizeChanged() وonGloballyPositioned() (Idfbfd, b/177926591)
  • تم إيقاف tapGestureFilter وdoubleTapGestureFilter وlongPressGestureFilter وpressIndicaitonGestureFilter نهائيًا. يمكنك استخدام Modifier.clickable أو Modifier.pointerInput مع وظيفتَيdetectTapالإيماءات بدلاً من ذلك. (I6baf9، b/175294473)
  • تمت إزالة عنصر unregisterProvider الخاص بـ SaveableStateRegistry. بدلاً من ذلك، تُعرِض الآن دالة registerProvider() عنصر SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739).
  • تم تغيير اسم SavedInstanceState() لتذكُّر Saveable() ونقله إلى الحزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
  • تمت إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة.
    • إزالة التحميل الزائد لـ SelectionContainer المتوقف نهائيًا
    • (I99c19)
  • أصبحت الاختبارات التي يتم فيها استخدام Compose في التسلسلات الهرميّة التي تتم إضافتها أو إزالتها مباشرةً إلى WindowManager أكثر ثباتًا. (Ie81ed، b/175765614)
  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم تلقائيًا ضبط إعدادات Recomposer على مستوى النافذة التي تم إنشاؤها بشكل كسول والتي يتم تفعيلها من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب وعلامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)
  • يوفّر Recomposer.runningRecomposers الآن مسار StateFlow عالميًا لـ RecomposerInfo للقراءة فقط من أجل مراقبة حالة الإنشاء الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current() التي تم تجاهلها الآن. (If8ebe)
  • تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
  • تقبل EditCommands AnnotatedString. ومع ذلك، فإنّه تغيير في واجهة برمجة التطبيقات فقط ولم يتم تنفيذ ميزة تعديل النصوص بأشكال متعددة حتى الآن. (I4c3ea)
  • تمت إزالة "مدّة التشغيل" و"المدة". (Ib9bf4، b/177420019)
  • تم نقل CompositionData.asTree() وواجهات برمجة التطبيقات ذات الصلة لفصل وحدة ui-tooling-data وتم وضع علامة عليها على أنّها تجريبية (Ic95b8).
  • تمت إعادة تسمية المَعلمات في RounderCornerShape وCutCornerShape وCornerBasedShape من left/right إلى start/end لتمكين ميزة "المرآة التلقائية" للشكل في الاتجاه rtl. تمّ تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يكون فيها المطلوب هو النسخ المطابق التلقائي. (I61040، b/152756983)
  • تمّت إعادة صياغة واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمحرِّر Compose لاستخدام واجهة بدلاً من فئة محدّدة. لم تعُد الواجهة تستخدم أيضًا مَعلمة type.

    هذا تغيير داخلي من المفترض ألا يؤثر في توافق ملف رمز المصدر، ولكنه تغيير يؤدي إلى إيقاف تشغيل الإصدار الثنائي. (I3b922، b/169406779)

  • إزالة الدالة StringBuilder.deleteAt العلنية بدون قصد (Id6ed9)

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

  • عناصر ComposeView الموضوعة في تسلسل هرمي للعرض هي عناصر تابعة لمقطوعة موسيقية أخرى تستضيف الآن مقطوعات موسيقية تابعة لأسلافها (I92883)
  • تم تعديل واجهة برمجة التطبيقات imageFromResource في أداة الإنشاء لإعادة استخدام ذاكرة التخزين المؤقت للعناصر القابلة للرسم في الموارد عند تحميل عناصر ImageBitmap. (If3627، b/178751994)

الإصدار 1.0.0-alpha11

28 كانون الثاني (يناير) 2021

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

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

  • تمت إعادة صياغة WithConstraints لتكون BoxWithConstraints وتم نقلها إلى foundation.layout. (I9420b، b/173387208)
  • تم إيقاف Key.DPadUp نهائيًا. استخدِم Key.DirectionUp بدلاً من ذلك. (Iab335، b/177954892)
  • واجهة المالك من الآن فصاعدًا داخلية. (If8e35)
  • تمت إضافة واجهة برمجة التطبيقات FocusManager.moveFocus() لنقل التركيز آليًا. (I045cb، b/177681839)
  • يغيّر PopupPositionProvider لاستخدام الإحداثيات النسبية للنافذة، وليس الإحداثيات الشاملة. إعادة تسمية parentGlobalBounds إلى anchorBounds، وتغيير windowGlobalBounds ليصبح windowSize: IntSize (I2994a)
  • سيتم استبدال Duration وUptime بـ Long milliseconds، وتؤدي هذه الخطوة إلى إزالة الاعتماد على إدخال المؤشر في هذين الصنفين. (Ia33b2، b/175142755، b/177420019)
  • تمت إضافة AmbientSavedStateRegistryOwner بشكل مشابه لـ AmbientLifecycleOwner وAmbientViewModelStoreOwner الحاليَين (I9a3e8، b/176756365)
  • تم تحديث واجهة برمجة التطبيقات للرسومات المتجهة لدعم تحليل التلوين المطبق على جذر الرسومات المتجهة. (Id9d53، b/177210509)
  • تمت إضافة toolType إلى PointerInputChange للتفريق بين الأجهزة (Iac787 وb/175142755)
  • تمت إعادة تسمية AmbientWindowManager إلى AmbientWindowInfo (I2686a وb/177084714 وb/177084983)
  • تم إيقاف طُرق الإحداثيات العامة نهائيًا وتمت إنشاء طُرق جديدة للإحداثيات المستندة إلى النافذة. (Iee284)
  • تمت إضافة Modifier.toolingGraphicsLayer الذي يضيف معدِّلًا لطبقة الرسومات عند تفعيل الفحص. (I315df)
  • تم وضع علامة "تجريبية" على FocusRequester.createRefs لأنّه قد يتغيّر. (I2d898، b/177000821)
  • تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة عليها @ExperimentalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. وتمت إعادة تسمية StateDescriptionRange إلى promotionBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontalScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)
  • تمت إزالة PointerInputData وتعديل PointerInputChange لمنحه جميع حقول PointerInputData. تم تصميم PointerInputEvent وPointerInputEventData داخليًا لأنه لا يتم استخدامهما في أي واجهة برمجة تطبيقات عامة. (Ifff97، وb/175142755)
  • تم تعديل GraphicsLayerScope لتنفيذ الكثافة لدعم عمليات تحويل وحدات dp إلى وحدات بكسل أولية. (Ied528، b/176819695)
  • تم تعديل واجهة برمجة التطبيقات الخاصة بالمصفوفات لتتمكّن من اتّباع الترتيب العميق للصفوف وتوفير ثوابت الفهرس للمساعدة في عمليات التحويل بين مختلف طرق تمثيل المصفوفات لمطابقة منطق تحويل الإطار بين SkMatrix وMatrix4 بشكل داخلي. (I432e6)
  • تمت إزالة الطرق التجريبية monotonicFrameAnimationClockOf (Ib753f وb/170708374)
  • نقل String.fintPrecedingBreak وString.fingFollowingBreak إلى InternalTextApi (I657c4)
  • تمت إزالة androidx.compose.ui.util.isSurrogatePair من واجهة برمجة التطبيقات العامة. (Ia9494)
  • تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text
    • لم تعُد TransformedText فئة بيانات (Ie672a)
  • تمت إزالة data class من الصفوف التالية:
    • InlineTextContent
    • LocaleList (I605c7)
  • لم تعُد الفئات التالية فئات بيانات:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • كثافة الخط
    • TextDecoration
    • TextGeometricTransform
    • فهرس النص
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • تم تغيير VisualTransformation لتكون واجهة وظيفية (I3bba4)
  • تمت إضافة نوع مَعلمة مرجع دالة (I5e1bd).
  • إضافة حدود محوَّلة إلى InspectorNode‏ (Ice42f)

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

  • تم إيقاف وظائف onCommit وonDispose وonActive نهائيًا لصالح واجهات برمجة التطبيقات SideEffect وDisposableEffect (If760e).
  • تغييرات على وظائف المصنع لـ Font/FontFamily/Typeface

    • تمّت إضافة دوال المصنع التي تبدأ بحرف لاتيني كبير.
    • تم إيقاف وظائف المصنع السابقة نهائيًا التي تحتوي على أحرف أولى صغيرة.
    • تُرجع دوال المصنع الجديدة FontFamily بدلاً من الفئات الفرعية
    • تم إخفاء أدوات إنشاء الفئات الفرعية، بحيث لا يمكن إنشاؤها إلا من خلال دوال المصنع.
    • تمت إعادة تسمية Font.asFontFamily إلى Font.toFontFamily (I42aa7)
  • تمّت إضافة ComposeContentTestRule التي تمتد ComposeTestRule وتحدّد setContent التي تمّت إزالتها من ComposeTestRule. تمت إضافة طريقة المصنع createEmptyComposeRule() ترجع ComposeTestRule ولا تؤدي إلى تشغيل نشاط لك. استخدِم هذا الإجراء عندما تريد إطلاق نشاطك أثناء الاختبار، مثلاً باستخدام ActivityScenario.launch (I9d782، b/174472899).

  • أصبح animateAsState الآن animateFooAsState، حيث Foo هو نوع المتغيّر الذي يتمّ تحريكه، مثل Float وDp وOffset وما إلى ذلك (Ie7e25).

  • تمت إضافة مَعلمة وصف المحتوى إلى "الصورة" و"الرمز". يتم استخدامه لتوفير وصف لخدمات تسهيل الاستخدام (I2ac4c).

  • أزِل displaySize لأنّه يجب تجنُّبه. من الأفضل عادةً استخدام حجم دالة onRoot() أو حجم النافذة على الأقل. (I62db4)

  • كان OnSizeChanged يُبلغ عن حجم محتوى التنسيق. ويُبلِغ الآن عن الحجم في موضعه ضمن سلسلة المُعدِّلات. (I36b78، b/177562900)

  • تم إيقاف واجهة برمجة التطبيقات emit()‎ وجميع عمليات التحميل الزائد نهائيًا وتمت إعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن باسم مختلف فقط لاتباع اصطلاحات التسمية في Compose (I4137b)

  • يقبل TextFieldValue AnnotatedString. ومع ذلك، فإنّه تغيير في واجهة برمجة التطبيقات فقط، ولم يتم تنفيذ ميزة تعديل النصوص بأشكال متعددة حتى الآن.

    • تمت إزالة initial من مَعلمات أداة إنشاء EditingBuffer. (I326d5)
  • تم إيقاف invalidate وcompositionReference() نهائيًا الآن لصالح currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)

  • تم تغيير AnnotatedString لتصبح ممتدة من kotlin.CharSequence. وبالتالي، أصبحت length وsubSequence الآن دوالًا فردية، وتمت إزالة دوال التوسيع. (Iaf429)

  • يحلّ RememberObserver محلّ CompositionLifecycleObserver ، وقد تم إيقاف CompositionLifecycleObserver نهائيًا.

    RememberObserver هو بديل لمحاولة CompositionLifecycleObserver مع دلالات معدَّلة ومحاولة أساليب تمت إعادة تسميتها. يمكن إجراء عملية التبديل إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكُّرها مرة واحدة فقط، وهي الممارسة المُقترَحة باستمرار. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاءonRemembered لكل مرجع يتم فيه استدعاءonEnter مرة واحدة فقط. تم استدعاء onEnter عدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثل WithConstraints وScaffold، ما يجعل الضمان الوحيد لonEnter غير موثوق به وتمّت إزالته من أجل RememberObserver.

    تضيف RememberObserver onAbandoned التي يتمّ استدعاؤها إذا تمّت إعادة مثيل RememberObserver من دالة الاستدعاء التي تمّ تمريرها إلى remember ولكنّه لم يتمّ تذكره في حالة الإنشاء ، وبالتالي لن يتمّ استدعاء onRemembered مطلقًا. يمكن أن يحدث ذلك إذا كان هناك استثناء ينهي عملية الإنشاء قبل اكتمالها أو يتم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تُنشئ عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كانت نسخة RememberObserver التي تتّبع اقتراح المراجع الفردية أعلاه تتتبّع مرجعًا خارجيًا، يشير كلّ من onForgotten وonAbandoned إلى أنّه لم يعد هناك حاجة إلى المرجع. إذا كان الكائن يتتبّع العمل الذي بدأ أو الموارد المخصّصة في onRemembered، يمكن تجاهل onAbandoned لأنّه لن يتم استدعاؤه في حال استدعاء الدالة onRemembered. (I02c36)

  • عمليات حسابية متوقّفة نهائيًا بين وحدتَين نصيتَين أو أكثر. إيقاف الدالتَين TextUnit.Sp وTextUnit.Em نهائيًا، مع تفضيل استخدام دوال الإضافات، مثل Int.sp وInt.em (I48369)

  • إنّ الموارد في المكتبات التي لا تتضمّن موارد علنية معلَن عنها بشكل صريح (على سبيل المثال، من خلال public.xml)، أصبحت الآن خاصة بشكل تلقائي. (Ia1dcc، b/170882230)

  • تم إيقاف العمود القابل للتمرير/الصف نهائيًا. يكون استخدام ScrollableColumn أقل فعالية مقارنةً بـ LazyColumn عندما يكون لديك محتوى كبير قابل للتمرير، لأنّه باستخدام LazyColumn يمكننا فقط إنشاء/قياس/رسم العناصر المرئية. لمنع المستخدمين من استخدام الطريقة غير الفعّالة، قرّرنا إيقاف ScrollableColumn وScrollableRow نهائيًا وتعزيز استخدام LazyColumn وLazyRow بدلاً من ذلك. سيظل بإمكان المستخدمين تحديد أنّهم لا يحتاجون إلى السلوك البطيء واستخدام عوامل التعديل مباشرةً على النحو التالي: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b، b/170468083)

  • طريقة إنشاء items(count: Int) جديدة لنطاق LazyColumn/LazyRow/LazyVerticalGrid أصبحت الدالتان items(items: List) وitemsIndexed(items: List) الآن دوالّ إضافية، لذا عليك استيرادهما يدويًا عند استخدامهما. أحمال إضافية جديدة للإضافات: items(items: Array) وitemsIndexed(Array) (I803fc وb/175562574)

  • يُرجى استخدام ImeAction.None بدلاً من ImeAction.NoAction.

    • يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
  • الاستفادة من TestCoroutineDispatcher في الاختبار (I532b6)

  • تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)

  • تم إيقاف العنصر Transition المستنِد إلى TransitionDefinition نهائيًا (I0ac57)

  • تمت إزالة TextUnitType.Inherit. يُرجى استخدام TextUnitType.Unspecified بدلاً من ذلك. (I9ff64)

الإصدار 1.0.0-alpha10

13 كانون الثاني (يناير) 2021

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

كسر التغيير

  • تسمح إعادة هيكلة واجهة برمجة التطبيقات الخاصة بالمجمِّع الداخلي بجمع التغييرات في العقد التي تم إنشاؤها نتيجةً للتركيب في مرحلة "تطبيق التغييرات" للتركيب، بعد اكتمال جميع وظائف @Composable.

    وهذا تغيير سلوكي قد يؤثر في رمز التطبيق، إذ إنّ العُقد لم تعد متاحة من واجهات برمجة التطبيقات الداخلية والتجريبية إلا بعد تطبيق التغييرات. يمكن عادةً حلّ هذه المشكلة من خلال إحاطة الرمز البرمجي بهذه التبعيات في SideEffect قابلة للتجميع لتأجيل تنفيذ الرمز البرمجي إلى ما بعد إنشاء العقد و تهيئةها. (I018da)

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

  • تمت إضافة Modifier.focusOrder() التي يمكن استخدامها لتحديد ترتيب مخصّص للتنقّل في التركيز (I90cf5 وb/175899543 وb/170155556 وb/170155429)
  • تمت إزالة استخدام showObserver المتوقّف على onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9 وb/175156387)
  • التغييرات في واجهة برمجة التطبيقات EditOperations API
    • تمت إعادة تسمية EditOperation باسم EditCommand
    • تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة في EditOperation
    • لم تعُد فئات البيانات هي EditCommand.
    • إعادة تسمية الدالة EditOperation.process إلى applyTo
    • تمت إعادة تسمية InputEventListener إلى InputEventCallback
    • (I0a366)
  • تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَمة. تم تغيير Size.center() لتكون خاصية. (I973f7)
  • ستتمكّن الآن وحدة ui-test من ضبط إنشاء أدوات إعادة التركيب لواجهات المستخدم التي يتم اختبارها (Ibebd8).
  • تم تعديل Velocity ليكون لها أجزاء مكوّنة وعمليات حسابية. (Ib0447)
  • تمت إعادة تسمية @ExperimentalTesting إلى @ExperimentalTestApi لتكون متسقة مع التعليقات التوضيحية المشابهة لواجهة برمجة التطبيقات التجريبية (Ia4502 وb/171464963).
  • تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
  • تمت إزالة الفئات DpInverse وDpSquared وDpCubed غير المستخدَمة. (I4d62b)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • أضِف دالة استدعاء لإعلام المالك عند تغيير حدود layoutnode. (I72fd1)
  • تمت إضافة isSpecified وisUnspecified وuseOrElse لklassen المضمّنة التي تحتوي على ثابت Unspecified. (I93f7b، b/174310811)
  • توسيع نطاق واجهات برمجة التطبيقات [Abstract]ComposeView للسماح بإعادة استخدام المشاهد المستندة إلى Compose، مع التخلص من تركيبتها لإعادة إنشائها مجددًا لاحقًا أضِف واجهات برمجة تطبيقات لتثبيت واكتشاف أدوات إعادة التركيب على مستوى النافذة وCompositionReferences لإنشاء تركيبات فرعية.

    أضِف ViewCompositionStrategy لضبط استراتيجية التخلص من التركيب في [Abstract]ComposeViews. السلوك التلقائي هو التخلص عند فصل النافذة. (I860ab)

  • تمت إزالة واجهة برمجة تطبيقات Any.identityHashCode() العامة (I025d7)

  • تمت إزالة واجهة برمجة التطبيقات toStringAsFixed لصالح استخدام String.format بدلاً من ذلك مباشرةً. (Iama6b)

  • إضافة مفتاح تبديل إلى المؤسسة Strings.kt (I4a5b7، b/172366489)

  • تم نقل nativeClass إلى ملف برمجي ui وجعله داخليًا. تم تعديل استخدامات nativeClass في تنفيذات equals لاستخدام 'is MyClass' بدلاً من ذلك. (I4f734)

  • تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. بدلاً من ذلك، استخدِم Modifier.focusModifier() وModifier.focusReference() . (I75a48 وb/175160751 وb/175160532 وb/175077829)

  • تمّ تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات إلى SelectionManager بشأن تعديلات Selectable. (I6ff30، b/173215242)

  • تمّت إضافة السمة Outline.bounds للحصول على مستطيل الحدود لعمليات تنفيذ المخططات المختلفة. (I16e74، b/175093504)

  • تم إيقاف واجهة برمجة التطبيقات TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255).

  • لم تعد ImeOptions وKeyOptions فئة بيانات (I3c898 وb/168684531)

  • التغييرات في واجهة برمجة التطبيقات VisualTransformation API

    • تمت إعادة تسمية OffsetMap إلى OffsetMapping
    • تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
    • لم يعد تحويل كلمات المرور من فئة البيانات
    • تم نقل OffsetMapping إلى ملفها الخاص
    • (I0bdf3)
  • تمت إعادة تسمية Position إلى DpOffset وإزالة getDistance()‎ (Ib2dfd)

  • تم تغيير الدالة fun Dp.isFinite() إلى val Dp.isFinite (I50e00)

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

  • يعرض تطبيق Recomposer الآن مسارًا لحالته الحالية، ما يتيح مراقبة نشاطه ونشاط التأثيرات المرتبطة به. (Ifb2b9)
  • يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).
  • تم استبدال animate() الآن بـ animateAsState()، الذي يعرض State<T> بدلاً من T. يتيح ذلك تحسين الأداء، لأنّه يمكن تضييق نطاق الإبطال إلى حيث تتم قراءة قيمة State. (Ib179e)
  • أضِف واجهة برمجة التطبيقات لدور Semantics وأضِف الدور كمَعلمة إلى SemanticsModifier الذي يمكن النقر عليه واختياره وتبديله. تم تغيير Modifier.progressSemantics لكي يتمكّن Slider من استخدامه أيضًا. (I216cd)
  • واجهة برمجة تطبيقات جديدة مستندة إلى وظائف الاستدعاء المتعدّد Animatable تضمن التداخل المتبادل بين الرسومات المتحركة
    • سمة DecayAnimationSpec جديدة لتتوافق مع ميزة التحلل المتعدد الأبعاد
    • (I820f2، b/168014930)

الإصدار 1.0.0-alpha09

16 كانون الأول (ديسمبر) 2020

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

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

  • تمت إزالة KeyEvent.Alt الذي تم إيقافه نهائيًا. استخدِم KeyEvent.isAltPressed بدلاً من ذلك. (Idd695)
  • تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter نهائيًا، ويمكنك استخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً منهما (Idbf1b، b/175156384)
  • تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17، b/168511863، b/168511484)
  • بالنسبة إلى واجهات برمجة التطبيقات الخاصة بتعليق إدخال مؤشر الماوس، تمت إعادة تسمية دالة HandlePointerInputScope إلى AwaitPointerEventScope ودالة handlePointerInput() إلى awaitPointerEventScope(). (Idf0a1، b/175142755)
  • أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الموافقة (I0a1ec).
  • إضافة تعريفات إزالة البنية لإنشاء نُسخ من FocuSRequester (I35d84، b/174817008)
  • تمت إعادة تسمية تسهيل الوصول إلى سمة contentDescription، وهي إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)
  • تمت إزالة الأحداث المخصّصة من واجهة برمجة التطبيقات لتعليق إدخال المؤشر (Ia54d5، b/175142755)
  • تمّت إضافة العديد من الدوالّ الجديدة في SelectionRegistrar، كما تمت إعادة تسمية onPositionChange إلى notifyPositionChange. (Ifbaf7)
  • المزيد من أعضاء LayoutNode الذين وضعنا علامة "داخلي" عليهم (I443c6)
  • تمّ تقديم LayoutInfo لاستخدامه من خلال الأدوات والاختبار (I9b190).
  • تمّت إزالة إذن الوصول إلى البيانات من حساب AndroidOwner (Ibcad0، b/170296980)
  • تمت إزالة التعليق التوضيحي ExperimentalPointerInput (Ia7a24)
  • تمت إضافة نظام لتصفّح الصفحات المتداخلة. يُرجى الرجوع إلى Modifier.nestedScroll للاطّلاع على مزيد من التفاصيل (I36e15، b/162408885).
  • تم إنشاء subcomposeInto(LayoutNode) داخليًا (Id724a)
  • تم تغيير واجهة Applier لتبسيط بناء الأشجار من أسفل إلى أعلى بدلاً من إنشاءها من أعلى إلى أسفل.

    تمت إعادة تسمية الطريقة insert() إلى insertTopDown().

    تمت إضافة طريقة جديدة، insertBottomUp().

    يُدخل مُطبِّق العقد في الشجرة التي يعدّلها باستخدام insertTopDown() أو insertBottomUp()، وذلك استنادًا إلى الإجراء الذي يحقّق أداءً أفضل.

    تكون بعض الأشجار، مثل LayoutNode وView، أكثر كفاءة في البناء من أسفل إلى أعلى من تنسيقها لأعلى. قبل هذا التغيير، كانت هناك حاجة إلى حزمة من الإدخالات لتنفيذ البيانات من أسفل إلى أعلى والتي يجب نسخها إلى كل تطبيق يحتاج إلى إنشاء من أسفل إلى أعلى لتحسين الأداء. من خلال هذا التغيير، Applier يتجاوز insertBottomUp() لإنشاء شجرة من الأسفل إلى الأعلى و insertTopDown() لإنشاء الشجرة من الأعلى إلى الأسفل. (Icbdc2)

  • تمت إضافة السمتَين dismissOnBackPress وdismissOnClickOutside إلى AndroidDialogProperties. تتيح هذه الإعدادات ضبط وقت استدعاء دالة onResumeRequest lambda في مربّع الحوار. (If5e17)

  • تمت إضافة واجهة برمجة التطبيقات painterResource API لمعالجة تحميل عناصر Painter بشكل غير شفاف من تنسيقات مواد العرض النقطية (مثل ملفات PNG) أو VectorDrawables. لم يعُد على المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم استدعاء هذه الطريقة للحصول على عنصر Painter لاستخدامه في مكونات الصور أو عناصر تعديل Painter. (I2c703، b/173818471)

  • تمت إضافة Modifier.clearAndSetSemantics لمحو سمات العناصر المشتقة وضبط سمات جديدة. (I277ca)

  • تم نقل ContentDrawScope إلى وحدة ui-graphics لتكون مع DrawScope. (Iee043، b/173832789)

  • تمّ تقديم واجهة برمجة التطبيقات PathEffect graphics API لتوفير أنماط مختلفة للأشكال التي تحتوي على خطوط. تم إيقاف استخدام NativePathEffect نهائيًا لصالح التنفيذ المتوقّع/الحقيقي لـ PathEffect. (I5e976، وb/171072166)

  • تمت إضافة واجهات IdlingResource إلى Compose، بصفتها إصدارًا متوافقًا مع Compose لموارد الإستراحة في Espresso. ويمكن تسجيلها وإلغاء تسجيلها من خلال ComposeTestRule (I433f3).

  • تمت إزالة التسجيل (أو إلغاء التسجيل) العام لـ ComposeIdlingResource والتسجيل (أو إلغاء التسجيل) العام للساعات في ComposeIdlingResource (I32660).

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

  • تعرِض الآن دالات Lambda في مُعدِّلات البادئة IntOffset بدلاً من Float. (Ic9ee5، b/174137212، b/174146755)
  • تمت إزالة TableauTable وStotReader وSlotWriter من واجهة برمجة التطبيقات العامة. كانت هذه الواجهتَان تحملان سابقًا الاسم InternalComposeAPI. وهي الآن داخلية لوحدة الإنشاء.

    تمت إضافة CompositionData وCompositionGroup كبديلين لواجهة برمجة التطبيقات ui-tooling API لاستخدامهما في استخراج معلومات التركيب. هذه الواجهات برمجة تطبيقات عامة، ولكنّها ليست مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling API لأنّها تقدّم المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling API (I31a9c).

  • تم إعادة صياغة ShaderBrush لإنشاء مثيل لمخطّط الإضاءة بشكلٍ كسول عند توفّر معلومات تحديد حجم بيئة الرسم. يكون ذلك مفيدًا لتحديد التدرجات التي تشغل حدود الرسم الكاملة للعنصر القابل للتركيب في وقت التركيب، بدون الحاجة إلى تنفيذ عمليات DrawModifier مخصّصة.

    واجهات برمجة التطبيقات المتوقّفة لدالة إنشاء الدالة المتدرجة بدلاً من طرق الإنشاء على عنصر Gradient (I511fc، b/173066799)

  • إيقاف LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed. استخدِم LazyColumn وLazyRow بدلاً من ذلك (I5b48c).

  • BuildCompat.isAtLeastR (Idb37e) متوقفة نهائيًا

  • تمت إضافة دالة المصنع buildAnnotatedString من أجل إنشاء AnnotatedString. دالة annotatedString builder المتوقّفة نهائيًا (Idfe0b)

  • تمّت إزالة طرق التوسيع في Float وDouble لتحويل القيم إلى وحدات راديان. تم نقلها إلى دالة خاصة ضمن أداة PathParser للتنفيذ، وهي المكان الوحيد الذي تم استخدامها فيه (I25f52).

الإصدار 1.0.0-alpha08

2 كانون الأول (ديسمبر) 2020

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

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

  • إضافة إجراء الرفض الدلالي (I2b706)
  • تم نقل واجهات برمجة تطبيقات DrawModifier من حزمة androidx.compose.ui إلى الحزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifier off.kt لتضمين طرق typealiases/helper للمساعدة في النقل من واجهات برمجة التطبيقات المتوقّفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer كما تم تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا لملاحظات الواردة من واجهة برمجة التطبيقات. (I0bd29، b/173834241)
  • تمت إضافة طرق جديدة Placeable.placeWithLayer() وplaceable.place تقريبًاWithLayer() تسمح للتنسيقات المخصصة ومفاتيح تعديل التنسيق بوضع عنصر ثانوي مع تقديم طبقة رسومات للرسم. بعد ذلك، يمكننا تحسين عمليات إعادة الرسم أولاً، لكي لا نضطر إلى إعادة رسم المحتوى عندما نحتاج إلى نقل عنصر فرعي، وثانيًا، يمكننا تطبيق عمليات تحويل الرسم على العنصر الفرعي (Ibd8f6 وb/170296989 وb/171493718 وb/173030831).
  • تمت إزالة <T> من بيان SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8)
  • تمت إضافة واجهات برمجة التطبيقات Modifier.scale/rotate لتسهيل استخدام drawLayer.
    • تمت إعادة تسمية Modifier.drawOpacity إلى Modifier.alpha
    • تمت إعادة تسمية Modifier.drawShadow إلى Modifier.shadow (I264ca، b/173208140)
  • جعلت حقلَي uptime و position في PointerInputData غير قابلَين للحذف. (Id468a)
  • يضبط MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستندة إلى لغة Material Design استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة للاختيار. (I1e6f4 وb/139320372 وb/139320907)
  • تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف هي محل التركيز، ونافذة WindowFocusObserver التي توفر معاودة الاتصال onWindowFocusChanged. (I53b2a، b/170932874)
  • تم تعديل TransformOrigin API لإدراج بنية تحليل لعرض pivotFractionX وpivotFractionY على هيئة component1 وcomponent2 (If43c4، b/173586560)
  • تمت إضافة فحص Lint لتسمية مَعلمات lambda القابلة للإنشاء وتحديد موضعها، وذلك للتحقّق من الاتساق مع إرشادات Compose. تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم children كاسم لدالة lambda اللاحقة إلى content، وفقًا لفحص الأخطاء الإملائية والإرشادات. (Iec48e)
  • تمت إضافة واجهة برمجة التطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث مفتاح. (I50ed9)
  • تمت إضافة ميزة "تحميل زائد" جديدة في Modifier.drawLayer(). يتم استخدام كتلة lambda في GraphicsLayerScope جديد حيث يمكنك تحديد معلمات الطبقة بطريقة تسمح بتخطي إعادة التركيب والإرسال عند حدوث تغيير الحالة. تطبيق DrawLayerModifier داخلي الآن في مرحلة الاستعداد لنقل منطقه إلى طريقة Placeable.placeWithLayer() في LayoutModifier (I15e9f، b/173030831)
  • تم إيقاف الخلفيات المُدمجة نهائيًا التي تحمل Ambient كلاحقة، وتم استبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك باتّباع إرشادات الخلفيات المُدمجة وCompose API الأخرى. (I33440)
  • تم نقل androidx.compose.ui.text.Typeface إلى androidx.compose.ui.text.font.Typeface (Ic2b81)
  • تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants لتصبح mergeDescendants. (Ib6250)
  • أداة جديدة لرصد إيماءات السحب التي تعلّق واجهة برمجة تطبيقات المؤشر، بما في ذلك قفل الاتجاه. (Icef25)
  • تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder ليصبح صفًا داخليًا من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة نوع الاسم المستعار VectorAssetBuilder للربط بـ ImageVector.Builder لـ compat. (Icfdc8)
  • تمت إعادة تسمية ImageAsset و الطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
  • أضِف مَعلمة zIndex لـ place() في PlacementScope حتى يعمل Modifier.zIndex() الآن كـ LayoutModifier ويمكن لأي تنسيق مخصّص ضبط فهرس zIndexes لأطفاله مباشرةً في قالب موضع الإعلان (I711f7، b/171493718).
  • تم نقل خصائص الدلالات الأساسية إلى ui (I6f05c).
  • إيقاف place(Offset) وplaceRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع وحدات الإزاحة int بدلاً من ذلك (I4c5e7).
  • تمّت إزالة واجهات برمجة التطبيقات التي تمّ إيقافها نهائيًا في السابق: تمّت إزالة Modifier.onPositioned، استخدِم Modifier.onGloballyPositioned. تمّت إزالة Modifier.onDraw، استخدِم Modifier.onDrawBehind. تمت إزالة Modifier.plus، يُرجى استخدام Modifier.ثم. تمت إزالة Color.Unset، استخدِم Color.Unspecified. تمت إزالة فئة PxBounds، استخدِم Rect بدلاً من ذلك. (Ie9d02، b/172562222)
  • تم تعديل واجهة "المحاذاة" وجعلها صالحة للاستخدام. (I46a07، b/172311734)
  • تمّت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار وإشارة الضغط باستخدام إدخال المؤشر المعلّق الجديد. تمت أيضًا إضافة بعض الأدوات التي تسهّل على المطوّرين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
  • تم تغيير اسم "id" إلى "layoutId" لحساب "LayoutIdParentData". تمت إعادة تسمية Measurable.id إلى Measurable.layoutId. (Iadbcb، b/172449643)
  • أداة جديدة لرصد الإيماءات التي تستخدم تقنية اللمس المتعدّد، بما في ذلك مساعِد لرصد التدوير والتكبير والتصغير (Ic459d)
  • تمّت إضافة واجهات برمجة التطبيقات SweepGradientShader وSweepGradientBrush. (Ia22c1)
  • أصبح التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521).
  • إضافة واجهات برمجة تطبيقات لميزة الانتقال للأعلى أو للأسفل المستندة إلى وظائف التشغيل المتعدّد:

    تضيف LazyListState.snapToItem وLazyListState.smoothScrollBy، بالإضافة إلى واجهات برمجة التطبيقات ذات المستوى الأدنى للتحكم في التمرير. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكّم في الانتقال للأعلى أو للأسفل، والتي تنتظر إلى أن ينتهي الانتقال للأعلى أو للأسفل قبل العودة. (Ie5642)

  • يجب إضافة Modifier.focusable في الأساس. استخدِم هذا الخيار لإضافة سلوك يمكن التركيز عليه إلى المكوِّن، مع استخدام دلالات دلالية صحيحة وإمكانية الوصول إليه. (I41eb9 وb/152525426 وb/162865824)

  • توفير عمليات تنفيذ تلقائية للطرق والخصائص في AnimationClockTestRule التي يمكن تفويضها إلى clock (I7ea3d، b/173399709)

  • يمكن الآن لـ AndroidComposeTestRule قبول مشغّلات نشاط مخصّصة (Ib8288 وb/153623653 وb/154135019).

  • تم إيقاف TextLayoutResult.getLineVisibleEnd نهائيًا. كبديل، يحتوي TextLayoutResult.getLineEnd الآن على مَعلمة جديدة هي visibleEnd. (I73282)

  • واجهة برمجة التطبيقات TextFieldValue API المعدَّلة

    • جعلت TextFieldValue.composition للقراءة فقط
    • تمّت إزالة استثناء تمّ طرحه لنطاق اختيار غير صالح (I4a675، b/172239032)
  • دعم TtsAnnotation لمحرك تحويل النص إلى كلام (I54cc6)

  • واجهات برمجة تطبيقات جديدة لتشغيل الرسوم المتحركة في وظائف التشغيل المتعدّد (Ied662)

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

  • تمت إعادة تسمية معلَمة المحاذاة في Box إلى contentAlignment. (I2c957)
  • تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. تأخذ الآن معلمات lambda بدلاً من State. (Ic3021، b/173594846)
  • تمت إضافة مَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
  • تمت إضافة فحص أخطاء لإعدادات المُعدِّل في الدوالّ القابلة للتجميع. تتحقق أداة Lint هذه من التسمية ونوع الإرجاع والقيمة الافتراضية وترتيب المعلمة للتأكد من الاتساق مع إرشادات Compose. (If493b)
  • تمت إضافة خيار مؤقت للسماح لـ TestAnimationClock بالاستناد إلى MonotonicFrameClock (I1403b، b/173402197)
  • تمت إضافة حزمة Android Typeface. يمكنك تحميل خط طباعي على Android من خلال دالة typeface، أي typeface(Typeface.DEFAULT). تمت إعادة تسمية typefaceFromFontFamily() أيضًا إلى typeface() (I52ab7).
  • تمت إضافة فحص أخطاء لضمان أنّ وظائف مصنع Modifier محدّدة كإضافات على Modifier، حتى يمكن ربطها ببعضها بسلاسة. (I07981)
  • إزالة وحدة اختبار واجهة المستخدم القديمة ووحداتها النموذجية (I3a7cb)
  • لم تعُد أداة Recomposer تقبل سياق EmbeddingContext، ويتم الحصول على التبعيات المطلوبة لجدولة المهام من effectCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تبدأ عمليات دمج المنصات في التعامل مع اللقطات الشاملة الخاصة بها. (I02369)
  • تمرير معلومات النمط إلى عقدة إمكانية الوصول. (If5e8d)
  • تمت إعادة تسمية TextUnit.اكتساب (اكتساب) إلى TextUnit.لم يتم تحديده لضمان الاتساق مع الوحدات الأخرى. (Ifce19)

الإصدار 1.0.0-alpha07 لواجهة مستخدم ميزة "الإنشاء"

11 تشرين الثاني (نوفمبر) 2020

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

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

  • تمّت إضافة فئة ScaleFactor المضمّنة لتمثيل عوامل التكبير للمحورين الأفقي وعمودي بشكل مستقلّ عن بعضهما البعض بغرض إتاحة حالات استخدام التكبير غير الموحّد.
    • تمت إضافة طريقة computeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لإجراء عملية تكبير/تصغير غير منتظمة لتمديد حدود المصدر لكي تشغل الوجهة بالكامل.
    • تمت إضافة طرق عوامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
    • (Ic96a6، b/172291582)
  • تمت إضافة مصنعي محاذاة التحيز ومحاذاة التحيز المطلق لإنشاء المحاذاة. (Iac836، b/169406772)
  • السماح للمطوّر بإلغاء التركيز بشكلٍ قسري (I90372)
  • تم إصلاح خطأ يتسبب في عدم رسم ارتفاع المشاهدات داخل Compose. (If7782)
  • تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
  • يمكنك إضافة دعم مسافة الكاميرا لتتكامل مع عمليات التحويل الثلاثية الأبعاد rotationX/rotationY على واجهات برمجة التطبيقات ذات الطبقات. (I40213، b/171492100)
  • تمت إضافة SelectionContainer بدون دالة ردّ الاتصال (Ibfadb)
  • تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7).
  • تمت إزالة التعتيم من المُعدِّل drawShadow() لأنّه كان مربِكًا. (I82c62، b/171624638)
  • تم نقل MeasureResult خارج MeasureScope. (Ibf96d، b/171184002)
  • تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
  • تمّت إزالة FocusState2 (I686cb، b/168686446) التي تمّ إيقافها نهائيًا.
  • أصبح مُعدِّل "فهرس المستوى" داخليًا الآن (I1808b، b/171493718)
  • تم تعديل نوع الإرجاع لطريقة lerp في مَعلمات Size لعرض قيمة مقاس غير صفرية لتجنُّب التفاف غير الضروري. (Ib0044)
  • تمت إضافة TestMonotonicFrameClock لاختبار الرمز البرمجي الذي يعتمد على MonotonicFrameClock لانتظار أحداث إطار التركيب باستخدام runBlockTest التابع لـ kotlinx-coroutines-test (I4402f).
  • تمت إزالة GestureScope.localToGlobal (I15299، b/171462785)
  • تمت إضافة أداة البحث onAllNodesWithSubstring (I81dd7، b/171462889)
  • تم إيقاف وحدة androidx.ui.test نهائيًا. يُرجى نقل الإصدار إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8).

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

  • تم نقل captureToBitmap إلى captureToImage. (I86385)
  • تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية غير معرَّفة لا تستهلك قيمًا من مظهر معيّن، يُرجى الانتقال إلى androidx.compose.foundation.BasicText. (If64cb)
  • تعديل TextFields لقبول KeyboardOptions (Ida7f3)
  • إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
  • تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
  • تمت إضافة provideDefault كبديل لتقديم القيم المحيطة، ويمكن استخدامه لتحديد القيم المحيطة التي لن يتم ضبطها إلا في حال عدم توفّر قيمة محيطة مقدَّمة من قبل. (Id6635، b/171024925)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تقديم وحدة ui-test-junit4 (Ib91f8)
  • تمت إعادة تسمية "relativePaddingFrom" إلى "paddingFrom". تمت إضافة المُعدِّل paddingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect للحفاظ على الاتساق مع واجهات برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدون معلمات موضوع بهدف التشجيع على أفضل الممارسات. (Ifd3d4)
  • تمّت إضافة موارد قابلة للتجميع يمكن إعادة تركيبها عند تعديل الإعدادات. (I6387c، b/167352819)
  • تتطلّب أداة إعادة الإنشاء الآن توفُّر CoroutineContext عند الإنشاء (Ic4610).
  • تجميع قيم zIndex عند تطبيق عدّة Modifier.zIndex() في السابق، كان الخيار الأول هو الخيار الفائز. (Ic514c، b/170623936)
  • تغييرات على طريقة تنفيذ SlotTable الداخلية التي من المفترض ألا تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
  • تمت إضافة خيار IME للتصحيح التلقائي للوحة المفاتيح (I57b8d)
  • تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
  • تمت إزالة BoardOptions.toImeOptions من واجهة برمجة التطبيقات العامة. (Ic2e45)

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

  • تم إيقاف نشر العنصر الداخلي androidx.compose.ui:ui-text-android (Ib93fa)

الإصدار 1.0.0-alpha06

28 تشرين الأول (أكتوبر) 2020

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

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

  • أصبحت الآن أداة إعادة الإنشاء مرجعًا للمقطوعة الموسيقية وعنصرًا رئيسيًا صالحًا للتركيب. أصبح استخدام ميزة "إعادة التركيب الصريح" مطلوبًا الآن في عدد أقل من الأماكن. (I4036f)
  • إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لتحديد بشكل أفضل أنّ واجهة برمجة التطبيقات القابلة للتركيب تستفيد من "التذكر" للحفاظ على البيانات في التراكيب (Ifda43)
  • تم تحديث واجهة برمجة التطبيقات Modifier.drawWithcache لكشف ContentDrawScope كنطاق مستقبل، بدلاً من DrawScope من أجل توفير إمكانية إعادة ترتيب أوامر الرسم. ويكون ذلك مفيدًا في حالات المزج أو التلوين الخفيف التي يجب عرض وحدات بكسل المحتوى فيها أولاً ليتم تطبيق خوارزمية وضع المزج المعني بشكل صحيح. (Ie7ec8)
  • نقل SimpleContainer إلى PopupTestUtils.kt (I78c57)
  • لم تعُد ConsumedData فئة بيانات. لمعرفة التفاصيل، يُرجى الاطّلاع على https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • يجب تصحيح موضع الاسم المعرِّف باتجاه اليمين لليسار. (I6e1e0)
  • تمت إعادة هيكلة DrawScope وContentDrawScope لتصبح واجهات بدلاً من فئات مجردة
    • تم إنشاء عملية تنفيذ CanvasDrawScope لـ DrawScope
    • إعادة صياغة عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً من ذلك
    • تم إنشاء DrawContext لتغليف التبعيات لـ DrawScope
    • إزالة الطرق المتوقّفة نهائيًا في DrawScope (I56f5e)
  • التغيير الذي قد يؤدي إلى عطل: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) لأنّ البيانات الاستهلاكية هي القيمة الوحيدة التي يمكن تغييرها في أحداث المؤشر. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات استهلاك PointerEvents التي تم تمريرها. (I6acd0)
  • تم إنشاء واجهتين لـ MeasurementScope وIntrinsicmeasureScope. (I1a087، b/170461665)
  • تم إخفاء دالة الدمج لعنصر AlignmentLine. (I9da1a، b/170612900، b/170611568)
  • إضافة إمكانية تحديد معلومات المفتش في المُعدِّل المركب (Idee08، b/163494569)
  • تمت إضافة خيار "اختيار الكل" إلى قائمة الاختيار (Ief02b).
  • تم تعديل DrawTransform.rotate لتلقّي مَعلمة محور دوران تلقائية هي المركز لمطابقة المستندات.
    • تم تعديل DrawScope.rotateRad لاستخدام إزاحة لنقطة المحور لمطابقة طرق التحويل الأخرى.
    • تم إيقاف التحميل الزائد في DrawScope.rotateRad الذي استهلك عدد عائم للإحداثيين x وy للمحور.
    • (Iffcbb، b/170434992)

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

  • تم تفعيل فحص lint لواجهة برمجة التطبيقات لـ MissingGetterMatchingBuilder في androidx (I4bbea، b/138602561)
  • أضِف الاختبار. (I6b8ae)
  • تفعيل الانتقالات في ComposeTestRule، ويمكنك إزالة خيار لتفعيل المؤشر الوامض من ComposeTestRule. (If0de3)
  • تمت إضافة خيار IME KeyboardCapitalization (I8ac38)
  • تمت إضافة خيار لوحة مفاتيح ذات سطر واحد إلى CoreTextField‏ (I72e6d)
  • نقل SimpleContainer إلى PopupTestUtils.kt (I65c3e)
  • تمت إعادة تسمية Radius API إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في أداة "الإنشاء". تم تعديل المستندات للإشارة إلى أنّ نصف قطر الزاوية السالب يتم تثبيته على القيمة صفر. (I130c7، b/168762961)
  • تم تحسين إمكانية التشغيل التفاعلي في Android من خلال الاستمرار في إرسال Motionevents إلى طرق عرض Android الثانوية التي تعرض خطأ onTouchEvent لكل الإجراءات باستثناء ACTION_DOWN (I94c5a، b/170320973)
  • تم تحويل المربّع إلى دالة مضمّنة. (Ibce0c، b/155056091)

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

  • إتاحة لغات مختلفة لكل من AnnotatedString.capitalize وAnnotatedString.decapitalize (I4aa7f)

الإصدار 1.0.0-alpha05

14 تشرين الأول (أكتوبر) 2020

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

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

  • إضافة لغة وصفية محددة لتحديد معلومات المفتش (Ic9a22)
  • انقل رمز الضغط مع الاستمرار إلى رمز النص. (Iff2bc)
  • الإصدار التجريبي من Modifier.pointerInput لتعديل إدخال التعليق (Ia77d2)
  • تمت إضافة إجراءات تسهيل الاستخدام "النسخ/اللصق/القطع" (I6db4f)
  • تمّت إزالة المنشئ العام لواجهة برمجة التطبيقات AndroidOwner (Iacaef)
  • اكتسبت النوافذ المنبثقة ومربعات الحوار الآن FLAG_SECURE من النافذة الرئيسية. تمت أيضًا إضافة خيار لضبط هذا الإعداد صراحةً (I64966 وb/143778148 وb/143778149).
  • بيانات الاستهلاك قابلة للتغيير الآن. بالإضافة إلى ذلك، ceased طلبات الاستدعاء لوظائف الإضافات التي تستهلك البيانات عن PointerInputChange، وأصبحت الآن تُعيد بدلاً من ذلك PointerInputChange متغيّرًا.

    هذه هي الخطوة الأولى في عملية من خطوتَين لجعل بيانات PointerEvent قابلة للتغيير بحيث لا يمكن تعديل بيانات النقاط الأخرى من خلال رمز المستخدم. ستكون الخطوة الثانية هي إزالة نوع الإرجاع List<PointerInputChange> من PointerInputFilter.onPointerEvent(...). (Id067e)

  • إيقاف التحديد في النص وعرض توضيحي. (Ie7e97)

  • تمّ جعل onGloballyPositioned دالة مضمّنة (I15830)

  • تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وonPositioned()‎ إلى onGloballyPositioned(). (I587e8، b/169083903)

  • تمت إضافة السمة hasPendingMeasureOrLayout إلى Owner، وهي تشير إلى ما إذا كان لدى Owner أي عمل مرتبط بالتنسيق في انتظار المراجعة. (I3d9f8، b/169038599)

  • تمت إضافة واجهة برمجة تطبيقات لمحو التركيز آليًا (Ie1dc2، b/161487952)

  • تمت إزالة PointerInputFilter.onPointerInput(...). ويجب استخدام السمة PointerInputFilter.onPointerEvent(...) بدلاً منها. (I6f04a)

  • التغييرات في الحجم

    • تمت إزالة Size.getFlipped
    • تمت إزالة Size.rem
    • تمّت إزالة Size.truncDiv (Ief44d, b/169790720)
  • كجزء من عملية توحيد القيم المراقبة للفئات المضمّنة، أُعيد تسمية Color.Unset إلى Color.Unspecified للتطابق مع الفئات المضمّنة الأخرى (I97611 وb/169797763).

  • تمّ تقديم TextOverflow.None. عندما يكون overflow غير محدّد، لن يعالج Text المحتوى الزائد بعد الآن، وسيُبلغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)

  • تمت إعادة تسمية مَعلمة النطاق ضمن AnnotatedString.Builder.addStringAnnotation لتكون علامة للحفاظ على اتساق واجهة برمجة التطبيقات. (I7c8cb)

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

  • يتم تحسين أداء التمرير في عمود LazyColumn/Row من خلال تقليل العمل في الإنشاء الفرعي في كل تمرير. تمت إضافة الطريقة الجديدة hasInvalidations() لفئة Composition. تمت إعادة تسمية الطريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • تم تعديل مَعلمات Size.Unspecified لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تحديث عمليات تنفيذ Painter للتحقق من المقاس.غير محدَّد، بالإضافة إلى الأحجام غير المحدودة. (I95a7e)
  • يحدّد الآن ترتيب طلبات place() في التنسيقات المخصّصة ترتيب الرسم للعناصر الثانوية (Ibc9f6).
  • إتاحة التحويل من AnnotatedString إلى SpannableString لتسهيل الاستخدام (Ief907)
  • تمت إضافة نماذج stubs لفئات Android التي تعمل على منصّات أقدم لتجنّب استخدام ميزة reflection متى أمكن. (Ia1790)
  • تم إصلاح خطأ: إذا كانت لوحة المفاتيح الظاهرة على الشاشة تتسبب في ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)

الإصدار 1.0.0-alpha04

1 تشرين الأول (أكتوبر) 2020

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

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

  • تمت إضافة OwnerScope للسماح بجمع نطاقات ملاحظات ملف الالتفاف والرسم بعد أن تصبح غير صالحة. (Ic4cf8)
  • تمت إضافة OnRemeasuredModifier وonSizeChanged() لتلقّي مكالمة إعادة الاتصال عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
  • إضافة إجراء الدلالات للنقرة الطويلة (I6281b، b/156468846)
  • تمّ جعل FocusManager خاصًا. (I7872f)
  • تم تعديل التنفيذ لإنشاء تنفيذ DrawCacheModifier مخصّص بدلاً من إضافة سمات اختيارية في DrawModifier.

    مستندات معدَّلة لطرق مختلفة (Ibd166)

  • جعل TextRange مضمّنًا لتجنب إنشاء الكائنات. (Id034b)

  • لم يعد من الممكن قراءة positionScope#parentRate وplacementScope#parentLayoutDirection من كتلة مواضع الإعلانات للتخطيط المخصّص. (Icc1ae، b/168295623)

  • أضِف AccessibilityScrollState إلى سمات الدلالات. (Ifeda9)

  • تمّ تقديم Modifier.drawWithCache للسماح بإنشاء عنصر رسم يعيد بشكل مشروط إنشاء العناصر المُدمجة التي تعتمد على معلومات الحجم/الحالة (I376dc)

  • تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (Ica712)

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

  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة التطبيقات الخاصة بتحويلات الحجم والدوران للاستخدام المشترَك لمَعلمة Offset واحدة لتمثيل إحداثي محور الدوران بدلاً من استخدام مَعلمات float منفصلة لإحداثي x/y في DrawScope وDrawTransform
    • إزالة الطريقتَين Rect.expandToInclude وRect.join
    • تم تحديث وثائق النطاق الجغرافي لوصف الشكل البيضاوي بالإضافة إلى الشكل البيضاوي
    • تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء ملف الإنشاء العلني لفئة Radius المضمّنة مباشرةً، ولكن يجب بدلاً من ذلك إنشاء مثيلات لعناصر Radius من خلال ملفّات إنشاء الدوالّ.
    • تمت إزالة واجهات برمجة تطبيقات RoundRect لإنشاء طلب، topRight وbottomCenter، وما إلى ذلك.
    • إيقاف Rect.shift نهائيًا واستبداله بـ Rect.translate
    • إزالة واجهتَي برمجة التطبيقات RoundRect.grow وRect.shrink
    • تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
    • إزالة RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension.
    • تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
    • تم تغيير RoundRect.center ليصبح سمة بدلاً من دالة
    • تم تعديل عنصر الإنشاء RoundRect لاستخدام سمات Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y.
    • تمّت إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي كانت تفترض أنّه مستطيل مع أصل عند 0,0
    • تمت إضافة واجهة برمجة تطبيقات لإزالة البيانات إلى Radius
    • تم نقل دوالّ إضافة RoundRect المختلفة لتصبح سمات بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • تم إيقاف foundation.Box نهائيًا. يُرجى استخدام foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
  • تمت إعادة تسمية الحزمة إلى "علبة". سيتم إيقاف العنصر Box السابق نهائيًا واستبداله بالعنصر Box الجديد في compose.foundation.layout. يتمثل سلوك المربّع الجديد في تجميع العناصر الفرعية فوق بعضها عندما يكون لديه عناصر فرعية متعددة، ويختلف ذلك عن المربّع السابق الذي كان يتصرف بشكل مشابه للعمود. (I94893، b/167680279)
  • تم إيقاف معلمات زخرفة المربّع نهائيًا. إذا كنت تريد إضافة زخارف أو مسافات على مربّعك، استخدِم عناصر التعديل بدلاً من ذلك (Modifier.background وModifier.border وModifier.padding) (Ibae92، b/167680279)
  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة تطبيقات DrawScope باستخدام طرق التحويل على نطاق للإشارة إلى أنه يتم تطبيق التحويل فقط داخل رد الاتصال وتتم إزالته بعد استدعاء الاستدعاء
    • تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من مستطيل مُعَدَّل
    • تباعُد ثابت في المستند للمَعلمة اليمنى في clipPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وتمت إزالة مَعلمة size.
    • تمت إعادة تسمية مَعلمتَي dx/dy في طريقة inset إلى أفقي وعمودي
    • تمت إضافة حمولة زائدة للاقتصاص توفّر قيمة اقتصاص متطابقة لجميع الحدود الأربعة.
    • تمّت إزالة مستندات حول طريقة الحشو التي تشير إلى أنّه سيتم تطبيق الحشو على جميع الجوانب الأربعة.
    • مستندات معدَّلة لفئة Rect
    • تعديل التعليقات على مَعلمات Rect لمطابقة kdoc style
    • تمت إزالة Rect.join وRect.expandToInclude
    • تم إنشاء وظائف زائدة لواجهة Rect.translate(offset) و تم إيقاف Rect.shift نهائيًا
    • (If086a، b/167737376)
  • إضافة تعليقات توضيحية إلى rootAnimationClockFactory وtransitionsEnabled و blinkingCursorEnabled وtextInputServiceFactory باستخدام @VisibleForTesting، وجعلها واجهة برمجة تطبيقات داخلية وإخفاء kdoc (I554eb، b/168308412)
  • أزِل SelectionContainer من الأعلى لإيقاف الاختيار التلقائي وتجنُّب السلوك غير المتوقّع. يمكن استخدام SelectionContainer على وجه التحديد لتغليف المحتوى الذي يجب أن يكون قابلاً للاختيار بدلاً من ذلك. (I8dfe0، b/158459594)

الإصدار 1.0.0-alpha03

16 أيلول (سبتمبر) 2020

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

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

  • أزِل إجراءات الدلالات الخاصة بالتمرير للأمام/للخلف. تمت إضافة خطوات في AccessibilityRangeInfo. (Ia47b0)
  • تمت إزالة onInvalidate() من Owner. تعالج OwnedLayer عمليات الإبطال. (Ica72b، b/162061312)
  • تمّت إزالة طرق المشغّل في Size API التي تستخدِم مَعلمات Offset. نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقع لها. على سبيل المثال، هل يجب أن يعرض الحجم - الإزاحة إزاحة أو نتيجة حجم مع الفرق؟

    تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة Size. (Iec902، b/166514214)

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

  • تم إصلاح مشكلة رسم عناصر LazyColumn بشكل غير صحيح في بعض الأحيان، ما كان يؤدي أيضًا إلى حدوث أعطال في بعض الحالات. (Ibcf17 وb/163066980 وb/165921895)
  • تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
  • تم نقل createAndroidComposeRule وAndroidInputDispatcher من androidx.ui.test.android إلى androidx.ui.test (Idef08 وb/164060572)
  • تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متسق لتصبح align أو alignment في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
  • تمت إضافة onNode والطُرق الشاملة الأخرى في ComposeTestRule لأنّه سيتم إيقاف الطُرق الشاملة الحالية نهائيًا. (Ieae36)

الإصدار 1.0.0-alpha02

2 أيلول (سبتمبر) 2020

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

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

  • إزالة رد الاتصال لإشعار المالك عند تغيير حدود عقدة التخطيط. (If654e، b/166106882)
  • تمت إضافة إمكانية استخدام مَعلمات نوع الملء في مسارات الرسومات المتجهّة لإتاحة اقتطاع الأشكال وفقًا لقواعد ملء المسار evenOdd أو NonZero. (I43dd2)
  • أصبحت Uptime وVelocity الآن صفوفًا مضمّنة (I48f4a).
  • أصبحت المدة الآن فئة مضمّنة (I565eb).
  • أضِف دالة استدعاء لإعلام المالك عند تغيير حدود layoutnode. (Ic40b3)
  • تم إصلاح المشكلة التي كانت فيها الدالة الإنشائية لدالة Rect مع الإزاحة ونصف القطر قد تنشئ المستطيل بالترتيب الأيسر، الأيمن، الأعلى، السفلي بدلاً من اليسار، الأعلى، اليمين، الأسفل.

    تمّت إزالة طرق المرافق المتوقّفة نهائيًا في Rect واستخدام وظائف الإنشاء بدلاً منها.

    تمت إضافة اختبارات للتحقّق من الطرق في Rect.kt (I08460 وb/165822356).

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

  • تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
  • تم استبدال Matrix4 بـ Matrix. تمت إزالة جميع الأجزاء الأخرى من حزمة ectmath. (Ibd665، b/160140398)
  • لقد تغيّرت اصطلاحات استدعاء الدوالّ القابلة للتجميع. هذا تغيير يؤدي إلى إيقاف الإصدار الثنائي. يجب مجددًا compiling جميع المكتبات للعمل مع هذا الإصدار من المكوّن الإضافي لمحرِّر الترجمة.

    لا يؤدي هذا التغيير إلى إنشاء تغيير فاصل على مستوى المصدر لأنّه لم يتم تغيير سوى واجهات برمجة التطبيقات الخاصة بالمنشئ التي تم تفعيلها بوضوح. (I7afd2، b/158123185)

  • تم إصلاح عطل كان يمكن أن يحدث عندما يؤدي توجيه الحدث إلى PointerInputFilter إلى إزالة PointerInputFilter بشكل متزامن. (I58f25)

الإصدار 1.0.0-alpha01

26 آب (أغسطس) 2020

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

الإصدار 0.1.0-dev

الإصدار 0.1.0-dev17

19 آب (أغسطس) 2020

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

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

  • تم إيقاف emitView نهائيًا. استخدِم AndroidView بدلاً من ذلك إن أمكن لعرض المشاهد داخل أداة "الإنشاء". يُرجى العِلم أنّه لن يكون من الممكن في المستقبل إنشاء عناصر View وViewGroup مباشرةً ما لم تكن هذه العناصر أوراقًا في شجرة الإنشاء، وهو ما يمكن تحقيقه باستخدام AndroidView. (I29b1e، b/163871221)
  • تم إيقاف FocusState2 نهائيًا واستبداله بـ FocusState (Ia8b79 وb/160822876 وb/160923332)
  • تمت إزالة عمليات تحميل AndroidView المتوقّفة نهائيًا. (I946b9، b/163802393)
  • يمكن الآن لعمليات البث المخصّصة أن تحدّد أنّه يمكن تخطّي واحد أو أكثر من أدوات الضبط وإعادة تركيبها بشكل مستقل عن عملية البث. (Ibbd13)
  • تم تغيير فئات Vector ل不再تكون فئات بيانات لأنّه يتم استخدام مثيل العنصر نفسه لإنشاء التركيب.

    تمت إضافة علامة mutableStateOf إلى VectorPainter لإعادة الرسم بشكل مشروط في حال تغيّر محتوى المتجه.

    يُعد مثيل VectorComponent جزءًا من VectorPainter نظرًا لإعادة استخدامه عبر التركيبات.

    تم تعديل GroupComponent وPathComponent ليصبح حقل الاسم قابلاً للتغيير (Ieae45، b/151378808)

  • تمّت إزالة "onChildPositioned" و"OnChildPositionedModifier". على المطوّرين استخدام onPositioned وOnPositionedModifier في تنسيق الصفحة الفرعية بدلاً من ذلك. (I4522e، b/162109766)

  • أصبح "الموضع النسبي" فئة مضمّنة (Iaec70).

  • تمت إضافة مَعلمة مُعدِّل إلى SelectionContainer‏ (I4aada، b/161487952)

  • تمت إزالة FocusModifier المتوقّف نهائيًا (I0b4ba، وb/160922116، وb/160821157، وb/162441435، وb/160822875، وb/160921940)

  • تمت إضافة mergePolicy lambda إلى SemanticsPropertyKey. ويمكن استخدام ذلك لتحديد سياسة مخصّصة لدمج semantik mergeAllDescendants. إنّ السياسة التلقائية هي استخدام قيمة العنصر الرئيسي إذا كانت متوفرة، وإلا يتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)

  • القيود الآن هي فئة مضمّنة (I88736)

  • تمت إضافة أداة FocusManager التي تنقل منطق التركيز الشائع خارج AndroidComposeView (I528ef وb/161487952 وb/162206799).

  • تم تعديل أسماء PointerEventPass للإصدار التجريبي. (Ifda6f)

  • أصبحت IntOffset الآن فئة مضمّنة (Iac0bf).

  • أصبح IntSize الآن فئة مضمّنة (I2bf42).

  • تمت إعادة تسمية PlacementScope.placeAbsolute() إلى PlacementScope.place()، وتمت إعادة تسمية PlacementScope.place() السابق إلى PlacementScope.placeRelative(). نتيجةً لذلك، لن تعكس طريقة PlacementScope.place() تلقائيًا الموضع في السياقات من اليمين إلى اليسار بعد الآن. وإذا أردت ذلك، استخدِم PlacementScope.placeRelative() بدلاً من ذلك. (I873ac، b/162916675)

  • يستخدم AlertDialog الآن FlowRow للأزرار (I00ec1 وb/161809319 وb/143682374)

  • تم جعل بعض أدوات الاختبار غير عامة لأنّها ليست في مكانها الصحيح. ستصبح هذه المعلومات علنية في المستقبل. (I32ab1)

  • التنظيم المُعاد هيكلته لرمز إدخال المؤشر. (Ie3f45)

  • تم إيقاف PxBounds نهائيًا واستخدام Rect بدلاً منه. تم تعديل جميع استخدامات PxBounds باستخدام rect وتمت إضافة علامة توضيحية مناسبة لإيقاف الميزة نهائيًا/استبدالها بهدف المساعدة في عملية نقل البيانات. (I37038، b/162627058)

  • تمت إزالة KeyEvent2 المتوقفة. استخدِم KeyEvent بدلاً من ذلك. (Ied2d0، b/162097587)

  • يحتوي KeyEvent على خاصية يونيكود يمكن استخدامها لإنشاء حرف يونيكود الذي يتم إنشاؤه بواسطة تركيبة المفتاح وحالة المفتاح الوصفية المحددة (If3afc).

  • تمّ جعل الحدث المخصّص DelayUp والصفوف ذات الصلة واجهة برمجة تطبيقات اختيارية، لأنّه من المرجّح أن يتم تغييره. (I56d6f)

  • تمّت إزالة حدثَي PointerEventPass لم يعدا مطلوبَين. (I3dd9d)

  • أضِف المَعلمات color وshadow وTextDecoration إلى Paragraph.paint. هذه الدالة مفيدة لتجنُّب إعادة إنشاء Paragraph غير الضرورية. (I81689)

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

  • تمت إزالة وظائف الاستدعاء onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
  • تم إيقاف Modifier.drawBorder نهائيًا. استخدِم Modifier.border بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، وb/158160576).
  • تمت إزالة طلبات FrameManager المتوقّفة نهائيًا.

    تم تغيير واجهات برمجة التطبيقات الداخلية لإنشاء المحتوى من أجل تقليل مقدار الوقت المستغرَق لتتبُّع عناصر الحالة، مثل mutableStateof() (I80ba6).

  • تمت إزالة VerticalScroller وHorizontalScroller. استخدِم عمودًا/صفًا قابلاً للتمرير بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)

  • تم إصلاح مشكلة تعطُّل التطبيق عند استخدام شيء يحفظ الحالة داخل حلقة for. يُسمح الآن باستخدام المفتاح نفسه في savedInstanceState() ، وقد تم تعديل واجهة برمجة تطبيقات UiSavedStateRegistry لهذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).

  • تم إيقاف العنصر القابل للتجميع state { ... } نهائيًا، وأصبح من الأفضل استخدام طلبات صريحة لعنصر remember { mutableStateOf(...) } من أجل الوضوح. ويؤدي ذلك إلى تقليل مساحة عرض واجهة برمجة التطبيقات الإجمالية وعدد المفاهيم المتعلّقة بإدارة الحالة، كما يتطابق مع نمط by mutableStateOf() لمنح إذن الوصول إلى ملف تعريف الفئة. (Ia5727)

  • تمت إعادة تسمية RRect إلى RoundRect لملاءمة أنماط التسمية المنشأة بشكل أفضل إنشاء دوال إنشاء وظائف مشابهة لـ RRect ودوالّ إنشاء دوال RRect نهائيًا (I5d325)

الإصدار 0.1.0-dev16

5 آب (أغسطس) 2020

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

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

  • تم إيقاف OnChildPositioned نهائيًا. استخدِم OnPositioned على العنصر الفرعي بدلاً من ذلك. (I87f95، b/162109766)
  • تم إيقاف setViewContent نهائيًا. يجب استخدام setContent بدلاً من ذلك. (I7e497، b/160335130)
  • تمت إضافة واجهة برمجة التطبيقات AndroidViewBinding لتوسيع موارد التنسيق وإنشاءها، استنادًا إلى ViewBinding. (I081c6)
  • تم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
  • تمت إضافة دعم لمفتاح Alt الخارجي (I9036b).
  • تم إيقاف FocusManager نهائيًا. استخدِم Modifier.focus() وModifier.focusObserver() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
  • يتيح loadVectorResource سمات trimPath (I808fe)
  • نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
  • تمت إزالة 2 PointerEventPass لم تعُد هناك حاجة إليها. (I33ca7)
  • تم تنفيذ PointerInteropModifier الذي يوفّر إمكانية تلقّي أحداث MotionEvent والتفاعل مع Compose كما لو كنت تُنفّذ عنصر عرض Android. (Ieb08c)
  • تمت إزالة مُعدِّل العلامة الذي سيتم إيقافه نهائيًا. يُرجى استخدام layoutId بدلاً من ذلك. (Idaa05، b/162023919)
  • تم تعديل واجهات برمجة التطبيقات لتوفير إمكانية الكتابة من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient الذي يمكن استخدامه لقراءة اتجاه التنسيق وتغييره. تمّت إزالة Modifier.rtl وModifier.ltr. (I080b3)
  • إتاحة اقتصاص المسار في الرسومات المتجهّة (Ie16c9، b/158188351)
  • تمت إضافة Modifier.layout() التي تتيح إنشاء مُعدِّل تخطيط مخصّص بسهولة (I73b69، b/161355194)
  • تمت إضافة واجهة برمجة تطبيقات AndroidView جديدة وإيقاف التطبيقات الحالية نهائيًا. (I5bcfd)
  • تم إيقاف Modifier.plus نهائيًا، ويمكنك استخدام Modifier.then بدلاً منه. تشير كلمة "ثم" إلى ترتيب الكلمات بشكل أقوى، كما أنّها تحظر أيضًا كتابة Modifier.padding().background() + anotherModifier، ما يؤدي إلى كسر السلسلة وصعوبة قراءتها (Iedd58، b/161529964)
  • أضِف فئات فرعية لعرض [Abstract]ComposeView لاستضافة محتوى Compose في تسلسل هرمي لعرض. (I46357)
  • تعمل Row وColumn الآن على تقليل معدّل استخدامهما بشكل كبير. (I75c10)
  • تمت إضافة SubcomposeLayout. وهو عنصر أساسي منخفض المستوى يسمح بإنشاء العناصر الفرعية أثناء القياس إذا أردنا استخدام بعض القيم المتوفّرة لاحقًا فقط أثناء القياس لإنشاء الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
  • تمت إضافة SemanticsNode.positionInRoot للحصول على موضع SemanticsNode بالنسبة إلى جذر التسلسل الهرمي Compose (Icdf26، b/161336532)
  • اجتازت MotionEvents الاختبار بالكامل من Android إلى Compose ثم عادت إلى Android. (I14be8، b/158034713)
  • تمت إزالة dropdownPopup. (I00430)
  • موضع ثابت للنوافذ المنبثقة على الشاشات المزوّدة بفتحة (Idd7dd)
  • إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
  • تمّت إضافة أداة RemeasurementModifier، وهي تسمح بإعادة قياس التنسيق بشكل متزامن. بشكل عام، لن تحتاج إلى ذلك أبدًا لأنّ إعادة القياس أو إعادة التنسيق تحدث تلقائيًا، ولكننا نستخدمها داخل LazyColumnItems أثناء الانتقال للأعلى أو للأسفل. (I5f331، b/160791058)
  • أزِل getLineEllipsisOffset/getLineEllipsisCount. استخدم getLineVisualEnd/getLineEnd/isLineEllipsize بدلاً من ذلك. (I85aa2)
  • أضِف بعض العلامات أو التعليقات التوضيحية وفقًا لأفضل الممارسات. (I66b20)
  • إتاحة المزيد من واجهات برمجة التطبيقات للسطور في TextLayoutResult (I79bd2)
  • يمكن الآن الوصول إلى محوِّلات المتجهات المضمّنة لتحويل الوحدات المضمّنة من خلال Foo.VectorConverter، مثل Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter وما إلى ذلك (I3e273).

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

  • معالجة إصلاحات واسعة النطاق لواجهات برمجة التطبيقات (I077bc)
    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 ليصبح لا يستخدم مَعلمات 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. تم تعديل الحجم لإضافة واجهة برمجة التطبيقات للتدمير، يُرجى إعادة تسمية UnspecifiedSize إلى Unspecified and عنصر "الطرق غير المستخدمة" التي تمت إزالتها.
  • تم تعديل استخدام واجهة برمجة التطبيقات Compose BlendMode للتعيين الصحيح بين BlendModes لإطار عمل Android وأوضاع PorterDuff استنادًا إلى مستوى واجهة برمجة التطبيقات. تمّت إضافة واجهة برمجة التطبيقات ‎#isSupported في BlendMode لتعمل كطلب للحصول على معلومات عن الإمكانات لتحديد ما إذا كان BlendMode متاحًا على الجهاز قبل استخدامه. (I0ef42)
  • تمت إضافة LazyItemScope لمَعلمة itemContent في القوائم البطيئة. وتوفّر هذه العناصر عوامل تعديل لملء الحد الأقصى للحجم الرئيسي، ما يحلّ حالة الاستخدام عندما يكون من المفترض أن يملأ العنصر إطار العرض ولا تعمل دالة Modifier.fillMaxSize() العادية لأنّه يتم قياس العنصر باستخدام قيود لا نهائية. (Ibd3b2، b/162248854)
  • تمت إزالة SemanticsNodeInteraction.performPartialGesture. استخدِم SemanticsNodeInteraction.performGesture بدلاً من ذلك. (Id9b62)
  • تمت إعادة تسمية LazyColumnItems إلى LazyColumnFor. تمت إعادة تسمية LazyRowItems إلى LazyRowFor (I84f84)
  • تم تسطيح حزمة foundation.shape.corner إلى foundation.share (I46491، b/161887429)
  • تمت إعادة تسمية AndroidComposeTestRule إلى createAndroidComposeRule. (I70aaf)
  • تمت إضافة المزيد من واجهات برمجة التطبيقات إلى TextLayoutResult. (Id7e04)
  • تمت إعادة تسمية "المادة الأساسية" FilledTextField إلى TextField و"المادة الأساسية" TextField إلى BaseTextField لتسهيل العثور على أبسط واجهة برمجة تطبيقات مطلوبة واستخدامها (Ia6242، b/155482676)
  • تمت إعادة تسمية Modifier.drawBackground إلى Modifier.background (I13677)

الإصدار 0.1.0-dev15

22 تموز (يوليو) 2020

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

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

  • لاستخدام الإصدار 0.1.0-dev15 من Compose، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.

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

  • تم إيقاف FocusModifier نهائيًا واستبداله بـ Modifier.focus وModifier.focusRequester وModifier.focusObserver. تم إيقاف FocusState وFocusDetailsState لصالح FocusState2 (I46919، b/160822875، b/160922136)
  • تمت إضافة أداة تعديل لتتبُّع التغيير في حالة التركيز. (I05866، b/160924455، b/160923326)
  • تمت إضافة مُعدِّل لطلب تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
  • عدِّل قائمة شريط الأدوات لعرض عمليات النسخ والقطع واللصق بشكل صحيح. (Id3955)
  • تستخدم الآن سمات الدلالات ذات القيمة الواحدة أسلوبًا للاتّصال. على سبيل المثال، يتم الآن كتابة "semantics { hidden = true }" على النحو التالي: semantics { hidden() }. (Ic1afd، b/145951226، b/145955412)
  • تمت إضافة Modifier.focus الذي يحلّ محلّ FocusModifier. (Ib852a، b/160924778)
  • إضافة FloatingToolbar لتحديد حقل النص (Ie8b07)
  • تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لواجهة برمجة التطبيقات ذات الصلة بإدخال المفاتيح (I53c0a)
  • تمت إضافة تعليق توضيحي تجريبي لواجهات برمجة التطبيقات لجميع واجهات برمجة التطبيقات ذات الصلة بخدمة "التركيز" (I53b24، b/160903352)
  • تمت إضافة FocusState2 الذي سيحل محل FocusDetailsState (I0a3ba، b/160822595)
  • تمت إضافة TestingalFocus، وهي عبارة عن تعليق توضيحي @OptIn لـ Focus API. (I1544b، b/160820961)
  • تمت إضافة فئة وحدة IntBounds، التي تمثّل حدود بكسل عددية من التنسيق. تم تعديل واجهة برمجة التطبيقات PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
  • يتطلب "المُطبِّق" الآن استخدام طريقة clear() للتخلص من التراكيب (Ibe697).
  • تم إيقاف KeyEvent نهائيًا واستبداله بـ KeyEvent2 (I68730)
  • تمت إضافة علامة جديدة اختيارية UseUnmergedTree إلى أدوات البحث عن الاختبار. (I2ce48)
  • تم تصميم واجهة برمجة التطبيقات LayoutNode تجريبية (I4f2e9)
  • تمت إضافة طرق نسخ إلى مختلف أنواع الفئات المضمّنة، بما في ذلك:

    • فرق التوقيت
    • الحجم
    • النطاق الجغرافي
    • الحركة
    • TransformOrigin

    • إيقاف طريقة عنصر Size.copy المصاحبة نهائيًا استخدام طريقة نسخ العنصر (Ife290، b/159905651)

  • ترث الآن النوافذ المنبثقة ومربّعات الحوار والقوائم مظهر MaterialTheme السياقي (Ia3665، b/156527485).

  • تمت إعادة تسمية TextDirection ليصبح ResolvedTextDirection (I3ff38).

  • تمت إزالة معلمة اتجاه التصميم من كتلة القياس للدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة الاستدعاء من خلال كائن نطاق القياس (Ic7d9d).

  • إعادة صياغة عناصر SelectionHandles لإعادة استخدامها ‫(I420e0)

  • تمت إزالة العنصر القابل للنقر. استخدِم Modifier.clickable‏ (I84bdf).

  • تم حذف TestTag وSemantics. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).

  • قبل إجراء هذا التغيير، كان المكوّن الإضافي لمحرِّر Compose يعرقل بشكلٍ غير بسيط طلبات إنشاء العناصر داخل دالة @Composable في حال توفّر (I5205a، b/158123804)

  • تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId لتجنُّب الخلط مع Modifier.testTag. (I995f0)

  • إنّ مواضع Int لخط المحاذاة التي يتم عرضها من Placeable#get(AlignmentLine) ليست فارغة الآن. إذا لم يكن خطّ المحاذاة الذي تم الاستعلام عنه متوفّرًا، سيتم عرض AlignmentLine.Unspecified. (I896c5، b/158134875)

  • تمت إضافة مَعلمة تعديل في AndroidView القابل للإنشاء. (I48a88، b/158746303)

  • تم إيقاف Semantics() نهائيًا. يمكنك استخدام Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)

  • إضافة عنصر viewModel()‏ composable الذي يتيح إنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه مسبقًا على غرار طريقة عمله في Activity أو Fragment (I5fdd1)

  • تم استبدال استخدام IntPx بـ Int. وتم استبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)

  • لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يوفر هذا مزايا الفئة المضمنة للاستفادة من القيمة الطويلة لحزمة قيمتين عائمتين لتمثيل العرض والارتفاع ممثلين بأعداد عشرية. (Ic0191)

  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد المكانة، عليك توحيد استخدام فئة الإزاحة بدلاً من PxPosition. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحة x وإزاحة y التي تم تمثيلها كقيم عائمة. (I3ad98)

  • تم استبدال الاستخدام لفئة Px في فئات إنشاء مختلفة كجزء من جهود إعادة البناء الكبيرة للاعتماد فقط على أنواع Dp والأنواع الأساسية لمعلمات البكسل. تم حذف فئة Px بالكامل (I3ff33)

  • تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I086f4)

  • تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Id3434)

  • تم استبدال استخدام فئة Px في فئات Compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I97a5a)

  • تم إيقاف TestTag نهائيًا. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)

  • لقد تمت إزالة التنفيذ التلقائي لـ ParentDataModifier#modifyParentData، وهو ما يعني عدم تنفيذ الواجهة في المقام الأول. (I0deaa)

  • تمّت إزالة ScaleFit التي سبق أن تم إيقافها نهائيًا. يمكنك استخدام ContentScale بدلاً من ذلك. (Ifbc5b)

  • تم استبدال الاستخدام لفئة Px في فئات إنشاء مختلفة كجزء من جهود إعادة البناء الكبيرة للاعتماد فقط على أنواع Dp والأنواع الأساسية لمعلمات البكسل (I19d02).

  • تمت إضافة مكون Dropdown Menu في مادة ui-material، وهو تنفيذ لقائمة التصميم المتعدد الأبعاد. (I9bb3d)

  • تمّت إزالة الدالة LayoutTag()‎ التي تمّ إيقافها نهائيًا، يُرجى استخدام Modifier.tag()‎ بدلاً منها. تمت إزالة Modifier.matchParent()‎ المتوقّف نهائيًا، يُرجى استخدام Modifier.matchParentSize()‎ بدلاً منه. (If8044)

  • تم استبدال الاستخدام لفئة Px في فئات إنشاء مختلفة كجزء من جهود إعادة البناء الكبيرة للاعتماد فقط على أنواع Dp والأنواع الأساسية لمعلمات البكسل (I57bff)

  • تم إلغاء إيقاف Modifier.semantics نهائيًا للسماح باستخدامات المكونات عالية المستوى. (I4cfdc)

  • تم دمج عمليات تنفيذ CanvasScope ليصبح لدينا الآن DrawScope و ContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة الكثافة وتوفير الفئة الفرعية LayoutDirection الفرعية لـ DrawScope التي تم حذفها في ContentDrawScope. تم تحديث تطبيق Painter وPainterModifier لعدم الاحتفاظ بخاصية RTL بنفسهما لأنّ DrawScope يوفّر ذلك بالفعل بدون تقديمه يدويًا (I1798e)

  • يزيل فلتر DoubleTapGestureFilter الآن التباس فلتر SingleTapGestureFilter في جميع أنحاء الشجرة. (If92b1)

  • تم تعديل Alignment API وإضافة ميزة محاذاة مطلقة (لا تتم عكسها تلقائيًا في سياق RTL) (I38cd3)

  • تم تغيير واجهة برمجة التطبيقات الخاصة بعناصر تعديل DrawLayer: تمت إعادة تسمية outlineShape إلى shape وهي تحتوي على القيمة التلقائية RectangleShape وهي الآن غير مسموح بتركها فارغة. تمت إعادة تسمية clipToOutline إلى clip. تمت إزالة clipToBounds لأنّها متطابقة مع clip == true مع RectangleShape (I7ef11، b/155075735)

  • تم تعديل واجهة برمجة التطبيقات التي تُنشئ مكونات من المستوى الأعلى لتعرض Canvas بدلاً من CanvasScope. يلغي ذلك حاجة المستهلكين إلى صيانة كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين يحتاجون إلى الوصول إلى Canvas ، يمكنهم استخدام أسلوب إضافة drawCanvas الذي يقدّم طلب استدعاء لإصدار تعليمات الرسم باستخدام Canvas الأساسية. (I80afd)

  • تم تغيير واجهة برمجة تطبيقات lambda اللاحقة بالقيود الخاصة بالقيود المفروضة على واجهة برمجة تطبيقات lambda. فبدلاً من مَعلمتَين، أصبح لديه نطاق للمستلِم، بالإضافة إلى القيود وLayoutDirection الذي يوفّر خصائص minRate وmaxwidth وminHeight وmaxHeight في Dp (I91b9a، وb/149979702)

  • تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)

  • تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)

  • تتضمّن دوال القياسات الجوهرية في كل من Layout وLayoutModifier2 أداة استقبال IntrinsicmeasureScope تقدم الآن واجهة برمجة تطبيقات لطلبات البحث الجوهرية مع اتجاه التنسيق الذي يتم نشره بشكل ضمني. (Id9945)

  • يمكن قياس عناصر Layout وLayoutModifier باستخدام اتجاه تنسيق مختلف. (Ibd731)

  • تمت إضافة دالة Modifier.zIndex() الجديدة للتحكّم في ترتيب رسم العناصر الفرعية ضمن تنسيق العنصر الرئيسي نفسه. تمت إعادة تسمية سمة elevation في DrawLayerModifier إلى shadowElevation، ولم تعُد تتحكّم في ترتيب الرسم. تم تغيير ترتيب المَعلمات في DrawShadow: أصبح الارتفاع هو المَعلمة الأولى والشكل هو المَعلمة الثانية مع الشكل التلقائي RectangleShape. (I20150، b/152417501)

  • تمت إزالة onSizeChange وonPositionChange في Owner. (I5c718)

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

    • تمت إضافة IntSize أيضًا، والذي سيحلّ محلّ IntPxSize في النهاية. (I4b43a)
  • جعل المحاذاة قابلة للتكرار باستخدام قيم عشوائية. تمت إضافة محاذاة أحادية الأبعاد. (Ia0c05)

  • تقبل \nToSiblings الآن القيمة Measuremented بدلاً من Placeable. (I5788d)

  • (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 لتصميم. ويتيح ضبط القطع والشفافية والدوران والتكبير/التصغير والظلال. سيحلّ هذا الإجراء محلّ RepaintBoundary. (I7100d، b/150774014)

  • تم نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العناصر الثانوية. تمت إضافة معدِّل اتجاه التنسيق. (I3d955)

  • يتيح مكوّن "الحزمة" الاتجاه من اليمين إلى اليسار (Ic9e00).

  • الدعم الأولي لـ Rtl في تنسيق Compose (Ia5519)

  • تم دمج الكثافة ونطاق الكثافة في واجهة واحدة. بدلاً من ambientDensity()، يمكنك الآن استخدام DensityAmbient.current. بدلاً من withDensity(density)، يمكنك استخدام with(density) فقط (I11cb1).

  • تم تغيير LayoutCoordinates لجعل providedAlignmentLines مجموعة بدلاً من خريطة، وجعل LayoutCoordinates تنفِّذ عامل التشغيل get() بدلاً من استرداد قيمة. ويسهّل هذا على المعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)

  • لم تعُد سمة LayoutCoordinates تحتوي على سمة position. لا يكون لخاصية الموضع معنى عند التفكير في LayoutModifiers أو التدوير أو التحجيم. بدلاً من ذلك، يجب على المطورين استخدام parentCoordinates وchildToLocal() لحساب التحويل من LayoutCoordinate إلى آخر.

    تستخدم LayoutCoordinates IntPxSize لخاصية الحجم بدلاً من PxSize. تستخدم التخطيطات أحجام وحدات بكسل صحيحة للتخطيطات، لذلك يجب أن تستخدم جميع أحجام التخطيط الأعداد الصحيحة وليس قيم النقطة العائمة. (I9367b)

  • تحسينات على واجهة برمجة التطبيقات الخاصة بالقيود (I0fd15)

  • تم إنشاء واجهة برمجة التطبيقات CanvasScope API التي تُغلِّف كائن canvas لعرض سطح واجهة برمجة تطبيقات رسومات تعريفية بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق المستلِم الخاص بها، ويتم أيضًا تحديد نطاق معلومات الحجم لحدود الحشو المقابلة. ولا يتطلّب ذلك من المستخدِم الاحتفاظ بحالة الطلاء الخاصة به لضبط عمليات الرسم.

    • تمت إضافة CanvasScopeSample بالإضافة إلى تعديل التطبيق التجريبي لتضمين رسومات توضيحية تجريبية (Ifd86d).
  • تمت إزالة واجهة برمجة التطبيقات MaskFilter API غير المستخدَمة لأنّها ذات استخدام محدود ولم يتم تحسينها لتسريع الأجهزة في معظم حالات الاستخدام (I54f76).

  • تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)

  • تم استبدال جميع استخدامات Color التي تتضمّن قيمة فارغة في واجهة برمجة التطبيقات باستخدام قيمة غير فارغة واستخدام Color.Unset بدلاً من null (Iabaa7)

  • تقديم مَعلمة مستطيلة اختيارية إضافية لـ ImagePainter لتتمكّن من رسم قسم فرعي من ImageAsset الأساسية (I0ea9e)

  • تمت إضافة "لون غير محدّد" لتمثيل قيمة غير محدّدة بدون وضع الألوان في مربّعات. (If901a)

  • تمت إضافة طريقتَي الإضافة Canvas.rotate و Canvas.scale لاستخدام إحداثيات محور اختيارية في عمليات التحويل. يتم ضبط هذه القيم تلقائيًا في أعلى يمين ترجمة اللوحة الحالية.

    تم أيضًا نقل Canvas.rotateRad لتكون طريقة إضافة من أجل الاتساق (Ibaca6).

  • تم إنشاء واجهة برمجة التطبيقات PixelMap لدعم الاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)

  • تمت إعادة تسمية toFrameworkRect/toFrameworkRectF إلى toAndroidRect/toAndroidRectF لمطابقة اصطلاح التسمية لتحويلات الكائنات بين أداة إنشاء التطبيقات وواجهات برمجة التطبيقات لإطار عمل Android التي تم إنشاؤها استنادًا إليها. تم أيضًا تعديل المستندات حول واجهات برمجة التطبيقات هذه (I86337).

  • تمت إضافة VectorPainter API بهدف استبدال واجهة برمجة التطبيقات الحالية للتركيب الفرعي للرسومات المتجهّة. تكون نتيجة التركيب الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف مكونات DrawVector السابقة نهائيًا لصالح VectorPainter.

    تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) API إلى PaintBox(Painter) تم إنشاء عنصر مركب مكوّن من أشكال هندسية يعمل مثل العنصر المركب من الصور باستثناء استخدام عنصر VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)

  • تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وImage composable القادم المستخدَم للمشاركة في تنسيق المحتوى ورسمه. _Body:تم إنشاء طريقة إضافة في android.graphics.Bitmap، Bitmap.asImageAsset()، لإنشاء مثيل لملف ImageAsset مفيد لدمج تطوير تطبيقات Android التقليدي مع إطار عمل Compose (Id5bbd)

  • تمت إضافة TextDirection.Content (I48f36)

  • تمت إضافة عامل التشغيل TextDecoration.plus (I0ad1a)

  • تمت إزالة Force من قيم تعداد TextDirectionAlgorithm (Icc944).

  • تمت إعادة تسمية TextDirectionAlgorithm باسم TextDirection (I75ce8)

  • تنفيذ LongPressAndDrag لاختيار TextField (I17919)

  • تمت إضافة AnnotatedString.getStringتعليقات توضيحية تعرض جميع التعليقات التوضيحية داخل النطاق. (I1fa00)

  • تم تغيير اسم حزمة Locale وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)

  • يحتوي مؤشر حقل النص على صورة متحركة وامضة (Id10a7)

  • تغيير واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) ليصبح خاصًا بالتعليقات التوضيحية(builder: Builder). (Ia6377)

  • تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)

  • أعد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)

  • أصبح من الممكن الآن إخفاء/إظهار لوحة المفاتيح البرمجية باستخدام SoftwareKeyboardController الذي يتم إرساله من خلال callback (I8dc44، b/151860051)

  • تمت إضافة عامل التشغيل "زائد" لأسلوب (Text/Paragraph/Span) الذي يفوّض إلى دالة merge()‎. (Ia1add)

  • لم تعُد دالة FontWeight.lerp تُطبّق القيمة بشكل فوري. ولا تزال فئة بيانات. (I521c2)

  • أصبح مُنشئ FontWeight متاحًا للجميع الآن، ولم يعُد فئة بيانات. (Id6b1f)

  • أضِف getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801)

  • تمت إعادة تسمية وحدة ui-text باسم ui-text-core (I57dec).

  • تمّت إزالة فئة المقاس غير المستخدَمة لأنّ هناك فئة مقاس مكرّرة في وحدة ui-geometry التي يتم استخدامها. (I1b602)

  • تمت إضافة AdapterList، وهو مكوّن قائمة لفائف يُنشئ ويُعدّ العناصر المرئية فقط. تتضمّن المشاكل المعروفة حاليًا أنّ هذا النموذج عمودي فقط ولا يعالج بشكل كامل جميع حالات التغييرات في العناصر الثانوية. (Ib351b)

  • إضافة المساحات المتروكة والحدود والشكل ومَعلمة الخلفية إلى Box (I05027 وb/148147281)

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

  • معاودة الاتصال onFocusChange في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
  • تم إيقاف عنصرَي VerticalScroller وHorizontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك العمود/الصف والمَعلمات، أو استخدِم Modifier.verticalScroll وModifier.horizontalScroll في العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا لصالح ScrollState' (I400ce وb/157225838 وb/149460415 وb/154105299).
  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607)
  • وتمت إعادة تسمية العديد من واجهات برمجة تطبيقات الاختبار لتصبح أكثر سهولة. تمت إعادة تسمية كل واجهات برمجة التطبيقات findXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة التطبيقات doXYZ إلى performXYZ. (I7f164)
  • يمكن الآن إنشاء واجهة مستخدم الإنشاء داخل ViewGroups بدون الحاجة إلى إنشاء واجهة جديدة. اطّلِع على ViewInteropDemo للحصول على مثال. (I9ab0b، b/160455080)
  • تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7)
  • تنفيذ عناصر التحكّم في السحب لتغيير التحديد في TextField (I27032)
  • تمّت إزالة فئة Shader المضمّنة التي كانت تُغلِّف فئة NativeShader المُتوقّعة وتمت إعادة تسمية NativeShader إلى Shader. لم تُضِف فئة Shader المضمّنة المُغلفة أي قيمة إلى سطح واجهة برمجة التطبيقات وكانت فئة مضمّنة، لذا استخدِم فئة NativeShader مباشرةً. (I25e4d)
  • تمّت إعادة صياغة PainterModifier لإيقاف توفير التكبير/التصغير استنادًا إلى القيود المحدّدة ومَعلمة ContentScale. إنّ عمليات تنفيذ Painter هي لتوسيع نطاق محتوى الرسم بأنفسهم استنادًا إلى الحجم المحدَّد لـ DrawScope الذي يرسمون فيه.

    تم إصلاح المشكلة التي كانت تؤدي إلى ضبط حجم ذاكرة التخزين المؤقت bitmap في VectorPainter على حجمها التلقائي بدلاً من الحجم المحدَّد للرسم.

    تم تعديل ImagePainter لتوسيع نطاق المحتوى بدلاً من الاعتماد على PainterModifier للقيام بذلك نيابةً عنه. (I6ba90)

  • إضافة الدالة withFrameNanos من المستوى الأعلى لتحديد توقيت الصور المتحركة (Ie34c5)

  • تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِل ذلك بـ @ComposableContract(tracked=false) (Id211e).

  • تم إيقاف androidx.ui.foundation.TextFieldValue و androidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر القابلة للإنشاء TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005).

  • تم إصلاح مشكلة كانت تؤدي إلى تعطُّل التطبيق عند إرسال إدخال المؤشر في حال إزالة ملفّات ترشيح إدخال المؤشر من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)

  • تم إصلاح مشكلة كانت تؤدي إلى تعطُّل التطبيق عند إرسال إدخال المؤشر إذا تمّت إزالة PointerInputFilters من خلال التركيب الفرعي أثناء الإرسال. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)

  • إعادة بناء فئة نصف القطر ليكون فئة مضمّنة. تمت إزالة methods لإنشاء الأشكال المصاحبة واستخدام دالة باني الدوال مع مَعلمة تلقائية لكي يتطابق نصف القطر على محور y مع مَعلمة نصف القطر الإلزامية على محور x.

    تم تحديث DrawScope.dropRect لاستهلاك معلَمة Radius واحدة بدلاً من قيمتين عائمتين منفصلتين للنطاق الجغرافي على طول المحورين x وy (I46d1b).

  • لم تعُد ميزة Recompose composable عنصرًا مجردًا مفيدًا. من المفترض أن تحدث معظم عمليات إعادة التركيب نتيجة عمليات تعيين MutableState. لأيّ شيء آخر، ننصحك باستخدام الدالة invalidate لإعادة تكوين النطاق الحالي. (Ifc992)

  • تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Iede0b)

  • يغيّر استراتيجية إنشاء الرموز البرمجية لمجمّع Compose. قبل التغيير، كان مُجمِّع الإنشاء يحوّل المكالمات إلى دوال قابلة للتركيب. من خلال هذا التغيير، نُحوّل الآن نص الدالة القابلة للتجميع ونترك موقع الاستدعاء بدون تغيير (في الغالب).

    وهذا يعني أنّ معظم المنطق الذي يتواصل مع وقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.

    يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات Compose. يجب ألا يضطر معظم مستخدمي واجهة برمجة التطبيقات إلى تحديث أي رمز نتيجة لهذا التغيير.

    ولتفعيل هذا الإجراء، تم تغيير توقيع JVM لجميع الدوال القابلة للتجميع. يتم تحويل دالة قابلة للتجميع تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، والمَعلمات الإضافية هي "المُنشئ"، وهو عدد صحيح "مفتاح"، وعدد صحيح لقناع بتات يُستخدَم لنشر البيانات الوصفية من خلال طلبات البيانات.

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

    التغييرات السلوكية المتعمّدة المعروفة الناتجة عن ذلك:

    1. سيتم تخطّي بعض المكالمات إلى الأماكن التي لم يكن ممكنًا إجراؤها سابقًا
    2. تم الآن الاشتراك في التعبيرات القابلة للتجميع في تعبيرات الوسائط التلقائية ومعالجتها بشكل صحيح.

    شمل هذا العمل بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال مخطّط استدعاء الدوال إلى الدوال الأخرى القابلة للتجميع. سيؤدي ذلك إلى إجراء عدد أقل من المقارنات أثناء التشغيل، وإلى تقليل حجم جدول الفتحات، بالإضافة إلى زيادة عدد عمليات تخطّي الدوالّ القابلة للتجميع التي لم يتم تخطّيها في السابق 2. لا تتمّ مقارنة المَعلمات التي يتمّ تحديدها على أنّها "ثابتة" في وقت الترجمة أو تخزينها في وقت التشغيل. ويؤدي ذلك إلى تقليل عدد المقارنات وحجم جدول الفتحات. 3- يتم استخدام بنية تدفّق التحكّم في نص الدوالّ لتقليل عدد المجموعات التي يتم إنشاؤها. ويؤدي ذلك إلى تقليل حجم جدول الفتحات ويؤدي إلى تقليل العمل الذي يُجريه وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والمُستلِم غير المستخدَمة في الدوالّ عند تحديد إمكانية تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.

    كانت معظم التغييرات التي قد تؤدي إلى أعطال في واجهات برمجة التطبيقات التي يستهدفها المحول البرمجي بشكل مباشر، ولن يتأثر الاستخدام المعتاد للإنشاء: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة طرق العرض الزائدة key التي لا تتضمّن متغيرات عددية متغيرة. استخدِم الإصدار vararg من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي "المحوري" نهائيًا. استخدِم key كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقع Function3 بدلاً من Function1 7. تم تعديل restartableFunction وrestartableFunctionN لتضمين مَعلمات إضافية في وقت الترجمة (I60756، b/143464846)

  • تمت إزالة عوامل تعديل LayoutAlign المتوقّفة نهائيًا. (I10877)

  • تمت إزالة RepaintBoundary لصالح DrawLayerModifier (I00aa4)

  • أصبح لكل من Button وFloatingActionButton وClickable الآن مَعلمة enabled منفصلة. تمت إعادة تسمية بعض المَعلمات على Button أو إعادة ترتيبها. (I54b5a)

  • تم استبدال ButtonStyle بوظائف مختلفة وإزالة التحميل الزائد للنص (السلسلة). اطّلِع على العيّنات المعدَّلة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)

  • تغييرات جذرية في واجهة برمجة التطبيقات Ambients API اطّلِع على السجلّات ومستندات Ambient<T> للحصول على التفاصيل (I4c7ee، b/143769776).

  • تم تغيير سلوك TextDirection التلقائي ليتم تحديده حسب LayoutDirection. على سبيل المثال، إذا كان LayoutDirection هو RTL، سيكون TextDirection التلقائي هو RTL. كان سابقًا TextDirection.ContentOrLtr/Rtl (I4e803)

  • إصلاح الخطأ: عندما يتم دمج سمك الخط ونمطه في AnnotatedString، لا يتم عرض النص بشكل صحيح. (I77a9d)

  • تُضيف هذه الدالة المَعلمات المستخدَمة بشكل شائع إلى Text(). إذا كنت بصدد إنشاء نمط نص محلي حاليًا لتمرير عدد صغير من هذه المَعلمات، مثل Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً: Text(textAlign = TextAlign.Center) (I82768)

  • تمت إعادة تسمية وحدة ui-android-text باسم ui-text-android (I68cbe)