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

يلزم استخدام المكونات الأساسية لواجهة المستخدم الإنشاء للتفاعل مع الجهاز، بما في ذلك التخطيط والرسم والإدخال.
آخر تعديل الإصدار المستقر إصدار مرشح الإصدار التجريبي الإصدار الأولي
29 تشرين الثاني (نوفمبر) 2023 1.5.4 - الإصدار التجريبي 1.6.0-02 -

التركيبة

تشتمل ميزة "الإنشاء" على 7 معرّفات مجموعة Maven في androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدفة من الوظائف، ولكل منها مجموعة خاصة بها من ملاحظات الإصدار.

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

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

تعريف التبعيات

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

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

رائع

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.6"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.6"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ملاحظات

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

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

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

الإصدار 1.6

الإصدار 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)
  • نفِّذ عبارة يساوي ورمز التجزئة لـ 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 على هذه الالتزامات.

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

  • تمت إعادة تسمية دالة Modifier.dragAndDrawSource lambda onDrawDragShadow إلى drawDragDecoration، كما تمت إعادة تسمية مَعلمة الحجم DragAndDropInfo إلى dragDecorationSize. (Id0e30، b/303904810)
  • أدخِل SemanticsNodeInteraction.isDisplayed() وSemanticsNodeInteraction.isNotDisplayed() للتحقّق مما إذا كانت العقدة المطابقة مرئية أم لا بدون التأكيد عليها أيضًا. (I2c196، b/302100809)
  • تم إدخال قيمة Unspecified خاصة للحقول TextAlign وTextDirection وHyphens وLineBreak في ParagraphTextStyle لاستبدال null. بما أنّ هذه الفئات هي فئات مضمّنة، نتجنّب الملاكمة ذات النوع الأساسي من خلال استبدال القيم القابلة للقيم بـ "غير محدّد". تم تعديل الدالّات والمؤشرات والطرق الأخرى في TextStyle ونمط الفقرة لقبول المَعلمات المذكورة على أنّها أنواع غير فارغة. (I4197e، b/299490814)
  • إضافة حِمل GoogleFont لقراءة 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 من 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. تحتوي ميزة Compose الآن على النسخة الخاصة بها من maximumFlingVelocity والتي تنطبق الآن على Draggable. (Ibf974)
  • تتم إضافة العملية الأولية لدعم واجهات برمجة التطبيقات للسحب والإفلات في النظام الأساسي. (If84ce)
  • إضافة deviceId إلى RotaryScrollEvent (Iba3bf)
  • تم تحديث واجهة برمجة تطبيقات أجهزة ui-tooling لتشمل الأجهزة الأحدث (Ib25b4).

الإصدار 1.6.0-alpha04

23 آب (أغسطس) 2023

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

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

  • تمت إضافة طريقة لإيقاف ReusableComposition، مع إزالة الملاحظات مع الحفاظ على العُقد في مكانها. يمكنك إعادة تفعيل المقطوعة الموسيقية التي تم إيقافها من خلال الاتصال بالرقم setContent. (Ib7f31)
  • إضافة واجهة ReusableComposition لإدارة دورة الحياة وإعادة استخدام التركيبات الفرعية (I812d1، b/252846775)
  • تمت ترقية Modifier.focusGroup إلى واجهات برمجة تطبيقات مستقرة. (I7ffa3)
  • تمت إضافة تعليقات androidx التوضيحية إلى واجهات برمجة تطبيقات مختلفة للرسومات لتحديد ColorInt وFloatRange وIntRange وSize والمزيد. (I70487، b/290950582)
  • تم تعديل واجهة برمجة التطبيقات ColorFilter لتتضمّن أنواع فئات فرعية ملموسة لتحسين إمكانية فحص المعلَمات. (I5fe29)
  • يمكنك تقديم مكتبة معاينة أدوات 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 على هذه الالتزامات.

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

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

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

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

الإصدار 1.6.0-alpha01

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

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

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

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

تغيير السلوك: أصبحت سياسة includeFontPadding على "خطأ" تلقائيًا في Compose

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.5

الإصدار 1.5.4

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

تم إصدار "androidx.compose.ui:ui-*:1.5.4". يتضمّن الإصدار 1.5.4 هذه الالتزامات.

الإصدار 1.5.3

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

تم إصدار "androidx.compose.ui:ui-*:1.5.3". يتضمّن الإصدار 1.5.3 هذه الالتزامات.

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

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

الإصدار 1.5.2

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

تم إصدار "androidx.compose.ui:ui-*:1.5.2". يتضمّن الإصدار 1.5.2 هذه الالتزامات.

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

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

الإصدار 1.5.1

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

تم إصدار "androidx.compose.ui:ui-*:1.5.1". يتضمّن الإصدار 1.5.1 هذه الالتزامات.

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

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

الإصدار 1.5.0

9 آب (أغسطس) 2023

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

الإصدار 1.5.0-rc01

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

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

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

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

الإصدار 1.5.0-beta03

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

تم إصدار "androidx.compose.ui:ui-*:1.5.0-beta03". يتضمّن الإصدار 1.5.0-beta03 هذه الالتزامات.

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

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

الإصدار 1.5.0-beta02

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

تم إصدار "androidx.compose.ui:ui-*:1.5.0-beta02". يتضمّن الإصدار 1.5.0-beta02 هذه الالتزامات.

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

  • تمت إضافة واجهة برمجة التطبيقات asComposePaint لتفعيل استهلاك مثيل android.graphics.Paint ليتم استخدامه في Compose

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

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

الإصدار 1.5.0-beta01

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

تم إصدار "androidx.compose.ui:ui-*:1.5.0-beta01". يتضمّن الإصدار 1.5.0-beta01 هذه الالتزامات.

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

  • تمت إزالة عمليات التوزيع في إعادة التركيب والرسوم المتحركة الملونة وAndroidComposeView (Ib2bfa).
  • إضافة المرح CacheDrawModifierNode() للسماح بالتفويض (Icf8f9)
  • نقدّم لك السمة isLookingAhead التي يمكن الوصول إليها من MeasureScope، وذلك للاطّلاع على نتائج معاينة الإعلان والتأثير في البطاقة الرئيسية إذا أردت ذلك. (Ibf4c3)
  • خاصية دلالات جديدة traversalIndex، عدد عشري يُستخدم لإعادة ترتيب العُقد في الاجتياز TalkBack (تأتي القيم الأدنى قبلها). (I9a81b، b/186443263)
  • إعادة تسمية خاصية دلالات isContainer إلى isTraversalGroup (I121f6)
  • لدى ColorProducer الآن operator fun invoke بدلاً من produce (I4a9a2).
  • أضِف واجهة برمجة تطبيقات التحويل Path لتطبيق عمليات التحويل/التحجيم/التناوب على عناصر المسارات. (I23434، b/233772232)
  • تُسمى طريقة ColorProducer produce. (I78bde)
  • إعادة تسمية toFrameworkColorSpace إلى toAndroidColorSpace (I4f547)
  • إعادة تسمية ColorLambda إلى ColorProducer. (I73b1a)
  • تقديم واجهات برمجة التطبيقات للتحويل بين أنواع مساحات اللون اللوني Android وCompose. (Ie7db4، b/279979665)
  • تمت إضافة مَعلمة لون إلى BasicText للسماح بتحريك أو ضبط لون النص بكفاءة. (Iffd88، b/246961787)
  • تمت إعادة تسمية TextRange.constrain إلى TextRange.coerceIn. (I31be2)
  • تمت إضافة TextStyle.merge(...) المحسّن مع قائمة كاملة بالمعلمات. (Iad234، b/246961787)
  • تم تثبيت العديد من واجهات برمجة التطبيقات النصية التي تتضمّن 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)
  • المزيد من الاستثناءات من قيمة التعداد (I818fe)
  • تم تقديم واجهة برمجة تطبيقات PlatformTextInputAdapter جديدة منخفضة المستوى لإنشاء عمليات تنفيذ إدخال نص مخصَّص تتحدث مباشرةً إلى واجهات برمجة تطبيقات النظام الأساسي. (I58df4)
  • تمت إضافة المَعلمة BlendMode إلى طرق DrawScope.drawText وParagraph.paint وMultiParagraph.paint لإتاحة خوارزميات الدمج المختلفة عند رسم نص على "لوحة الرسم". (I57508)
  • إعادة تسمية Font.MaximumAsyncTimeout إلى Font.MaximumAsyncTimeoutMillis. إعادة التسمية فقط. (I07af5)
  • تم تعديل قيم النقاط لكل بوصة (DPI) لعدد @Preview من الأجهزة المرجعية (Id6151، b/254528382)
  • أضِف المَعلمتَين brush وalpha إلى BasicText للسماح بتحريك الفرشاة النصية أو ضبطها بكفاءة.
  • حدِّد أنواع ملفات lambda الخالية من الصناديق للعدد العشري Float والمزدوج والطول الطويل وInt وInt وShorts في :ui:ui-unit (I6f18d وb/246961787)

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

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

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

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

الإصدار 1.5.0-alpha04

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

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

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

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

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

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

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

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

الإصدار 1.5.0-alpha03

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

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

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

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

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

  • إنّ ميزة intermediateMeasurePolicy التلقائية الجديدة التي تعيد استخدام سياسة القياس من منظور أمامي تتيح للأنواع الفرعية SubcomposeLayout التي لا تتضمّن خانات شرطية، مثل Scaffold وTabRow وBoxWithConstraints، العمل مع ميزة المقدمة تلقائيًا. (Id84c8)
  • ستحظر الآن أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android المكالمات الواردة إلى withFrameNanos فقط بدلاً من حظر كل المقطوعات الموسيقية عندما تتلقّى إشعار ON_STOP. ويعني هذا أنّ النوافذ المرتبطة بالأنشطة المتوقفة ستواصل إعادة إنشائها عند حدوث تغييرات في البيانات، ولكن سيتم حظر الصور المتحركة أو أي متصل آخر بـ "withFrameNanos". (Id9e7f، b/240975572)
  • يغيّر motionEventSpy إلى حالة ثابتة. (Ic5ec4، b/261560988)
  • تمت إضافة طريقة TextRange.constrain العلنية. (I97912)
  • لم تعُد واجهة برمجة التطبيقات PlatformTextStyle.includeFontPadding متوقّفة نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة التطبيقات المتوافقة هذه لتغيير الإعدادات includeFontPadding واختبارها على "خطأ". (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. تحتوي مجموعة القياس في midLayout على IntermediatemeasureScope على دور الاستقبال، وهو ما يوفّر طريقة ملائمة لـ CoroutineScope وLookaheadScope وMeasurementScope.(Ibe2e5)
  • تم استبدال LookaheadLayout بـ LookaheadScope، الذي لم يعُد تنسيقًا. يسمح هذا الإجراء بالتحكّم مباشرةً في المحتوى الصغير في LookaheadScope، باستخدام سياسة MeasurementPolicy الرئيسية. (Ibe2e5)
  • تتم إضافة Modifier.Node#coroutineScope للسماح للعقد بتشغيل coroutines. (I76ef9)
  • السماح لـ Modifier.Nodes بقراءة بيانات AnalyzeLocals من خلال تنفيذ واجهة AnalyzeLocalConsumerModifierNode. (Ib44df)
  • نشر فئة موقوفة على الموقع الإلكتروني: (I882d1)

الإصدار 1.4

الإصدار 1.4.3

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

تم إصدار "androidx.compose.ui:ui-*:1.4.3". يتضمّن الإصدار 1.4.3 هذه الالتزامات.

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

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

الإصدار 1.4.2

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

تم إصدار "androidx.compose.ui:ui-*:1.4.2". يتضمّن الإصدار 1.4.2 هذه الالتزامات.

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

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

الإصدار 1.4.1

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

تم إصدار "androidx.compose.ui:ui-*:1.4.1". يتضمّن الإصدار 1.4.1 هذه الالتزامات.

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

  • إصلاح مشكلة في ParentDataModifier لا تؤثر في AndroidView (b/274797771)

الإصدار 1.4.0

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

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

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

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

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

  • تم استبدال الوسيطة maxSize: IntSize في drawText بـ size: Size لتكون مضمّنًا مع دوال DrawScope أخرى. تم ضبط size على Size.Unspecified تلقائيًا، ومن المفترَض ألا يؤدي إلى تغيير السلوك التلقائي السابق. (Icd27d)
  • تمت إزالة دالة إنشاء الخطوط التجريبية المتوقفة. (I8a724، b/261435386)
  • تحتوي فئة بيانات أدوات واجهة المستخدم Group الآن على الحقل isInline الذي يشير إلى ما إذا كانت المجموعة مخصّصة لاستدعاء دالة قابلة للتعديل مضمَّنة. إذا كانت قيمة isInline هي true، يكون الاستدعاء ناتجًا عن دالة قابلة للتركيب. ومع ذلك، قد تكون القيمة خاطئة لاستدعاء الدوالّ المضمّنة القابلة للإنشاء والتي تكون من وحدات يتمّ تجميعها باستخدام إصدار من المكوِّن الإضافي لإنشاء المحوِّل البرمجي لا ينشئ معلومات الدالة المضمّنة. (Idb846)
  • تم ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى القناة الثابتة
  • واجهة برمجة تطبيقات Rotary Scroll Event API متوفّرة الآن (I42ad3، b/261561229).
  • FontVariation API مستقرة الآن (I8779f، b/241016309)
  • جميع دوال إنشاء Font() أصبحت الآن واجهة برمجة تطبيقات ثابتة (I5948b، b/261435386)
  • DeviceFontFamilyName ثابت الآن (I8b640، b/261435386)
  • أصبحت الآن دالة إنشاء AndroidFont مع variationSettings واجهة برمجة تطبيقات مستقرة، ويمكن استخدامها لإنشاء أنواع جديدة من أدوات وصف الخطوط. (I5adcc، b/261565807)
  • أصبحت واجهة برمجة التطبيقات createFontFamilyResolver API ثابتة الآن. ويمكن استخدام هذه الطريقة لرصد الاستثناءات غير المرصودة أثناء التحميل غير المتزامن للخط. (Ibb481 ، b/261435386)
  • أصبحت واجهة برمجة التطبيقات Font.loadingStrategy API ثابتة الآن. (I5937c، b/261435386)
  • أصبحت واجهة برمجة التطبيقات GoogleFont API ثابتة الآن. (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 API. (Ida4ab)
  • تم تعديل عرض مَعلمة rememberNestedScrollConnection من عرض الجذر إلى عرض المضيف. (Ia5200)
  • تمت إضافة واجهة برمجة تطبيقات Modifier API لطلب البحث عن معلومات التمرير للأسلاف. (I2ba9d، b/203141462)
  • يتم استخدامها في Clickable لتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث انتقال.
  • تم إصلاح مشكلة Clickables بحيث لا تؤخّر الأمواج بشكل صحيح عند استخدامها داخل Scrollable ViewGroup.
  • تم تحديث "الأدراج" و"جداول البيانات" لتأخير الضغطات بشكل صحيح في حال تحولت الإيماءات إلى أحداث تمرير.
  • تمت إعادة تسمية CompositingStrategy.Always إلى Offscreen للإشارة إلى أنه سيتم عرض graphicsLayer دائمًا في مخزن مؤقت متوسط (I47dc1).
  • أصبح التحميل الزائد للتنسيق مع خانات محتوى متعددة مستقرًا الآن (I10566، b/248294649)
  • تمت إضافة واجهات برمجة التطبيقات التجريبية الجديدة PerfettoTrace.record {} وPerfettoTraceRule لتسجيل بيانات تتبُّع Perfetto (المعروفة أيضًا باسم "تتبُّع النظام") كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16)
  • في اختبارات واجهة المستخدم التي تستخدم قاعدة الإنشاء، لن يتم إرسال عمليات الاستئناف أثناء استدعاءات withFrameNanos إلا بعد انتهاء تنفيذ جميع استدعاءات الإطار. يتطابق هذا مع سلوك الإنشاء عند التشغيل بشكل طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. من المفترَض أن يؤثر ذلك فقط في الرمز الذي يستدعي withFrameNanos أو withFrameMillis مباشرةً، ويكون له منطقي خارج نطاق معاودة الاتصال الذي يتم تمريره إلى تلك الدوال التي قد تحتاج إلى نقلها داخل عمليات الاستدعاء. يمكنك الاطّلاع على أمثلة عن التغييرات في اختبار الصور المتحركة في CL هذا للاطّلاع على أمثلة.
  • تمت إضافة مَعلمة onPerformTraversals: (Long) -> Unit اختيارية إلى الدالة الإنشائية TestMonotonicFrameClock والدالة الأصلية لتشغيل الرمز بعد withFrameNanos استدعاءات ولكن قبل استئناف الكوروتينات الخاصة بالمتصلين. (Idb413 وb/254115946 وb/222093277 وb/255802670)
  • تمت إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806).
  • تمت إضافة مَعلمة خلفية جديدة إلى @Preview لإتاحة الألوان الديناميكية (I9f512).

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

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

تعديلات التبعية

  • تعتمد واجهة المستخدم لإنشاء المحتوى ومواد الإنشاء الآن على دورة الحياة 2.5.1. (I05ab0، b/258038814)

الإصدار 1.4.0-alpha02

تشرين الثاني (نوفمبر) 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() التي تحوِّل كائن "الطلاء" الأصلي الحالي إلى Compose Paint. (Ica91b)
  • يمكنك إضافة FontFamily.Resolver.resolveAsTypeface جديد لاستخدامه على Android. (I8950b)
  • يمكنك إضافة ToolingState للسماح للأداة بتغيير الحالات الداخلية للمكوّن الإضافي (Ie6614).
  • أدوات إعادة الهيكلة للحصول على دعم أفضل للصور المتحركة المضافة الجديدة (I8677b)
  • تمت إضافة المعلمة minLines إلى Material3 وMaterial3 للنص وTextField وOutlinedTextField مما يسمح بتعيين الحد الأدنى لارتفاع المكوِّن من حيث عدد الأسطر (I4af1d).

الإصدار 1.4.0-alpha01

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

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

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

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

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

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

الإصدار 1.3

الإصدار 1.3.3

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

تم إصدار "androidx.compose.ui:ui-*:1.3.3". يتضمّن الإصدار 1.3.3 هذه الالتزامات.

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

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

الإصدار 1.3.2

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

تم إصدار "androidx.compose.ui:ui-*:1.3.2". يتضمّن الإصدار 1.3.2 هذه الالتزامات.

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

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

الإصدار 1.3.1

تشرين الثاني (نوفمبر) 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

الإصدار 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 Activity ضمن Dialog بشكل مجمّع. (I35342)

الإصدار 1.3.0-beta02

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

تم إصدار "androidx.compose.ui:ui-*:1.3.0-beta02". يتضمّن الإصدار 1.3.0-beta02 هذه الالتزامات.

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

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

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

  • تم إيقاف الترميزَين 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 إلى حد كبير. في الواقع، كانت هذه إعادة هيكلة لم تؤثر في واجهة برمجة التطبيقات العامة لأي من المعدِّلات العديدة في Compose، ويمكن اعتبارها تغييرًا متعلقًا بالتنفيذ فقط. على الرغم من ذلك، يعد هذا تغييرًا مهمًا لأسباب مختلفة. (Ie4313)

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

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

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

المخاطر

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

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

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

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

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

تغيير قد يؤدي إلى عطل في السلوك

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

تم خفض الحد الأقصى للارتفاع المسموح به لمربّعات حوار الإنشاء والنوافذ المنبثقة من 30 بكسل مستقل الكثافة إلى 8 وحدات بكسل مستقلة الكثافة. يؤثر هذا التغيير في كل من مربعات الحوار والنوافذ المنبثقة المخصصة في واجهة المستخدم والمواد. يتم إجراء هذا التغيير للحدّ من أخطاء إمكانية الوصول على إصدارات 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)
  • تتيح خطوط الموارد الآن ضبط إعدادات تنوع الخط (واجهة برمجة التطبيقات 26+). (I900dd، b/143703328)
  • دعم الخطوط المتغيرة في DeviceFontFamilyNameFont (Ic1279، b/143703328)
  • تقبل دوال إنشاء الخطوط الآن قائمة FontVariation.Setting لضبط الخطوط المتغيّرة على الأجهزة التي تستخدم O+. (I11a9d، b/143703328)
  • إضافة واجهة برمجة تطبيقات FontVariation لتحديد الخطوط المتغيّرة واستخدامها (I3c40c، b/143703328)
  • دالة إنشاء LineHeightStyle.Alignment عامة الآن (تجريبية) (I4bbbe، b/235876330)
  • الفقرة الآن متوقَّعة|صحيحة ومحدّدة لنظام التشغيل Android وأجهزة الكمبيوتر المكتبي. (Id387e، b/239962983)
  • أصبحت فقرة الواجهة محمية الآن ضِمن واجهة برمجة التطبيقات Paragarph. لا توجد حالة استخدام للفقرة الفرعية، ونوصي بالتواصل معنا إذا كان هذا التغيير يؤثر عليك. (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. بالنسبة إلى عارض التخطيط، فإن هذا يعطي تحسينًا في الأداء بحوالي عامل 10. (I5e113)
  • تم تغيير معاينة الإنشاء ليتم تخزينها في ملفات الإخراج الثنائية، للسماح للمطوّرين بكتابة تعليقات MultiPreview التوضيحية وإعادة استخدامها من المكتبات. (I85699، b/233511976)

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

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

الإصدار 1.3.0-alpha01

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

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

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

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

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

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

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

الإصدار 1.2

الإصدار 1.2.1

10 آب (أغسطس) 2022

تم إصدار "androidx.compose.ui:ui-*:1.2.1". يتضمّن الإصدار 1.2.1 هذه الالتزامات.

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

  • قيمة فارغة في أداة الفحص (b/237987764)
  • إصلاح استثناء بث الفئة أثناء التذكر في أداة الفحص (b/235526153)

الإصدار 1.2.0

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

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

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

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

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

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

الإصدار 1.2.0-rc03

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

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

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

الإصدار 1.2.0-rc02

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

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

الإصدار 1.2.0-rc01

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

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

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

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

الإصدار 1.2.0-beta03

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

تم إصدار "androidx.compose.ui:ui-*:1.2.0-beta03". يتضمّن الإصدار 1.2.0-beta03 هذه الالتزامات.

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

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

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

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

الإصدار 1.2.0-beta02

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

تم إصدار "androidx.compose.ui:ui-*:1.2.0-beta02". يتضمّن الإصدار 1.2.0-beta02 هذه الالتزامات.

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

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

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

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

الإصدار 1.2.0-beta01

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

تم إصدار "androidx.compose.ui:ui-*:1.2.0-beta01". يتضمّن الإصدار 1.2.0-beta01 هذه الالتزامات.

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

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

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

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

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

    إنّ التنفيذ المخصّص لأجهزة الكمبيوتر المكتبي هو class DesktopComposeUiTest، ولكن لا تتوفّر أي وظائف خاصة لتشغيل أجهزة الكمبيوتر المكتبي في الوقت الحالي.

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

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

    إلى:

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

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

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

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

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

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

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

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

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

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

  • يتم تغيير الدالتين PlatformParagraphStyle.lerp وPlatformSpanStyle.lerp لتصبحا دوال ذات مستوى أعلى (I9a268).

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

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

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

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

الإصدار 1.2.0-alpha08

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

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

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

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

الإصدار 1.2.0-alpha07

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

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

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

  • تمت إضافة الدالة الجديدة Snapshot.withoutReadObservation { ... }. تسمح هذه السياسة للمستخدمين بتشغيل دالة lambda التي تم تمريرها بدون الاشتراك في تغييرات قيم الحالة التي تمت قراءتها أثناء هذه الكتلة. قد تجده مفيدًا في حالات الاستخدام عندما تريد الاستفادة من عمليات الكتابة/القراءات الآمنة المستندة إلى سلسلة المحادثات، ولكنّك تريد التمكّن من قراءة القيمة بدون التسبب في إعادة صياغة أو إعادة قياس غير ضرورية. (I9f365، b/214054486)
  • تسمح سمة الإضافة consumeWindowInsets في ComposeView للمطوّرين بإيقاف استخدام 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)

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

  • تمت إضافة فحص الوبر إلى المادة/النقش لضمان استخدام المساحة المتروكة الداخلية (Ifb111).

الإصدار 1.2.0-alpha06

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

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

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

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

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

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

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

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

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

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

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

  • الأجهزة المرجعية المضافة إلى قائمة الأجهزة لـ @Preview (I071c9)

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

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

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

  • إنشاء-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)
  • تم تعديل إمكانية إلغاء القيم في النظام الأساسي وAppcompat لتتوافق مع Tiramisu DP2 (I0cbb7).
  • تعرض الواجهة التي تم قياسها الآن موقعparentData (I3313f)
  • أصبحت واجهة Modifier.onPlaced وواجهة OnPlacedModifier مستقرة الآن. (Ib5482)
  • رائع يتوافق إنشاء الصور المتحركة الآن مع إعداد "مقياس مدة الرسوم المتحركة" من "خيارات المطوّرين". (I5a4fc، b/161675988)
  • تمت إضافة معدِّل محلي باستخدام BeyondBoundsLayout (If8b51، b/184670295)
  • النص: تكون ميزة "تضمين FontPadding" غير مفعّلة الآن تلقائيًا. تتم معالجة مشاكل القطع الناتجة عن includeFontPadding=false ويجب ألا يتم اقتطاع أي نصوص برمجية طويلة. (I31c84، b/171394808)

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

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

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

  • تم التحديث لاستخدام الكوروتينات في Kotlinx 1.6.0 (I3366d).

الإصدار 1.2.0-alpha04

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

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

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

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

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

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

  • بإمكان "Font(resId, ...)" الآن ضبط استراتيجية التحميل على واجهة برمجة التطبيقات الثابتة. (Ief3d2)

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

  • إتاحة تحميل الخط غير المتزامن في النص (I77057، b/214587005)

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

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

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

الإصدار 1.2.0-alpha03

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

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

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

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

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

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

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

  • تستغرق الفقرة والفقرات المتعددة الآن FontFamily.Resolver

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

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

  • دعم التحميل المسبَق للخطوط عبر FontFamilyResolver.preload

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

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

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

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

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

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

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

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

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

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

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

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

  • تم الآن تغيير اسم برنامج تحميل الخطوط العام إلى FontFamilyResolver. (I4f773، b/174162090)

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

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

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

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

الإصدار 1.2.0-alpha02

26 يناير 2022

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

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

  • تمت إضافة Modifier.onRotaryScrollEvent() وModifier.onPreRotaryScrollEvent() للأجهزة التي تعمل بنظام التشغيل Wear OS مع زر جانبي دوار (I18bf5، b/210748686).
  • إضافة إضافة View.createLifecycleAwareRecomposer تجريبية (I0cde6)

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

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

الإصدار 1.2.0-alpha01

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

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

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

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

تعديلات التبعية

  • تعتمد هذه الطريقة الآن على لغة 1.6.10 في لغة البرمجة Kotlin.

الإصدار 1.1

الإصدار 1.1.1

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

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

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

  • إصلاح NullPointerException على androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059، b/206677462)
  • إصلاح العطل الناتج عن محتوى الحافظة أثناء القراءة من الحافظة على Android. (I06020، b/197769306)
  • تنسيق RTL ثابت في 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 من مساحة التنسيق الخاصة بها لاستيفاء إرشادات إمكانية الوصول المتعلّقة بمواد العرض حجم هدف اللمس. على سبيل المثال، سيتم توسيع هدف لمس الزر إلى أدنى حجم يبلغ 48x48dp، حتى في حال ضبط حجم الزر ليكون أصغر. يؤدي هذا إلى مواءمة Compose Material مع السلوك نفسه لمكونات التصميم المتعدد الأبعاد، مما يوفر سلوكًا متسقًا إذا قمت بمزج طرق العرض والإنشاء. ويضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكونات مادة الإنشاء.
  • دعم ثابت لشريط التنقّل
  • تم ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى القناة الثابتة
  • الدعم مع الإصدارات الأحدث من لغة Kotlin

الإصدار 1.1.0-rc03

26 يناير 2022

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

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

  • تم التحديث للتوافق مع Compose Material 1.1.0-rc03

الإصدار 1.1.0-rc01

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

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

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

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

الإصدار 1.1.0-beta04

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

تم إصدار "androidx.compose.ui:ui-*:1.1.0-beta04". يتضمّن الإصدار 1.1.0-beta04 هذه الالتزامات.

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

  • تم تعديلها لتتوافق مع لغة 1.6.0 في Kotlin.

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

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

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

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

الإصدار 1.1.0-beta03

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

تم إصدار "androidx.compose.ui:ui-*:1.1.0-beta03". يتضمّن الإصدار 1.1.0-beta03 هذه الالتزامات.

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

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

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

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

الإصدار 1.1.0-beta02

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

تم إصدار "androidx.compose.ui:ui-*:1.1.0-beta02". يتضمّن الإصدار 1.1.0-beta02 هذه الالتزامات.

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

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

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

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

الإصدار 1.1.0-beta01

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

تم إصدار "androidx.compose.ui:ui-*:1.1.0-beta01". يتضمّن الإصدار 1.1.0-beta01 هذه الالتزامات.

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

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

الإصدار 1.1.0-alpha06

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

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

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

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

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

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

الإصدار 1.1.0-alpha05

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

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

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

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

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

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

الإصدار 1.1.0-alpha04

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

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

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

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

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

    سلوك TouchInjectionScope مطابق تقريبًا لسلوك GestureScope، مع ملاحظتين صغيرتين:

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

    أخيرًا، تقدّم 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 على هذه الالتزامات.

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

  • تم تعديل ميزة الإنشاء 1.1.0-alpha03 للاعتماد على لغة البرمجة 1.5.30 في Kotlin. (I74545)

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

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

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

  • تمت إزالة طريقة isBounded من FloodredEdgeTreatment لصالح التحقق الصريح مما إذا كانت معلمة الشكل فارغة أم لا. (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 الخاص برسومات Vector من أجل دعم ColorStateLists كخصائص تلوين الجذر في VectorDrawables. (I86915، b/195668138)

الإصدار 1.1.0-alpha01

4 آب (أغسطس) 2021

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

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

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

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

  • طريقة DrawScope#drawImage المحدّثة التي تستهلك مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterValue اختيارية. يفيد ذلك في فن البكسل الذي يهدف إلى وحدات البكسل عند تكبيره ليناسب فن البكسل. تم تعديل BitmapPainter + الصورة التي يمكن إنشاؤها أيضًا لاستهلاك مَعلمة Filterquality الاختيارية (Ie4fb0، b/180311607)

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

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

  • من أجل دعم تسلسل معدِّلات الرسم بشكل أفضل، تأكد من أن استدعاءات تنفيذ Modifier.paint ترسم المحتوى. في السابق، كان من المتوقّع إضافة Modifier.paint إلى جزء ورقة في سلسلة "معدِّلات"، ولكنّ ذلك يمنع إعداده على حاوية قابلة للتركيب (مثل صندوق) أو إضافة زخارف إضافية في الأعلى، مثل Modifier.paint().border(). من خلال استخدام Modifier.paint call 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 على هذه الالتزامات.

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

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

الإصدار 1.0.4

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

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

تعديلات التبعية

  • تم تعديل البيانات للاعتماد على لغة 1.5.31 في لغة البرمجة Kotlin.

الإصدار 1.0.3

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

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

تعديلات التبعية

  • تم تعديل البيانات للاعتماد على لغة 1.5.30 في لغة البرمجة Kotlin.

الإصدار 1.0.2

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

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

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

الإصدار 1.0.1

4 آب (أغسطس) 2021

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

تعديلات التبعية

  • تم تعديلها للاعتماد على لغة 1.5.21 في Kotlin.

الإصدار 1.0.0

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

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

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

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

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

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

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

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

الإصدار 1.0.0-rc02

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

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

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

  • تتبع مربّعات الحوار الآن سلوك تغيير حجم النظام الأساسي. اضبط usePlatformDefaultWidth على "خطأ" لإلغاء هذا السلوك. (Iffaed، b/192682388)

الإصدار 1.0.0-rc01

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

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

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

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

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

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

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

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

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

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

الإصدار 1.0.0-beta09

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

تم إصدار "androidx.compose.ui:ui-*:1.0.0-beta09". يتضمّن الإصدار 1.0.0-beta09 هذه الالتزامات.

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

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

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

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

قواعد الملف الشخصي المُضافة

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

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-Formatting
  • 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 للإشارة إلى ما إذا كان يجب وضع علامة على هذه الطريقة باعتبارها "Hot" أو "Startup" (بدء التشغيل) أو "Post Startup" (بدء التشغيل).

  • تمثّل السمة <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).
  • إعادة هيكلة استخدامات التعداد للصفوف المضمّنة لتجنب مشاكل متعلقة بالشاملة عند إضافة قيم تعداد جديدة. (I2b5eb)
  • إزالة @ExperimentalComposeUiApi من PopupProperties (I01fa6)
  • تم تغيير PointerType من تعداد إلى فئة مضمّنة (If5058)
  • لم تعد خصائص ContentDescription و"النص" الدلالي قيمًا فردية بل قوائم. وهذا يتيح دمجها كما هي بدلاً من التسلسلات. تم أيضًا توفير واجهات برمجة تطبيقات اختبارية أفضل للاستفادة من هذه التغييرات (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 الآن تجريبيةTextApi بدلاً من تجريبية ComposeApi. (I0cd0a)
    • أصبحت الدالة الإنشائية TextUnit مع TextUnitType الآن IndividualTextApi بدلاً من تجريبية ComposeApi.

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

  • إصلاح الخطأ الذي تم طرحه في الإصدار التجريبي 07 حيث تم عرض عناصر LazyColumn/Row جزئيًا بعد الانتقال (I8c9ac، b/188566058)
  • سيستخدم كل من detectDragGesures وdetectVerticalGestures وdetectHorizontalGestures الآن التغيير في الموضع تلقائيًا، بدون الحاجة إلى استدعاء change.consumePositionChange في عمليات رد الاتصال onDrag (I42fc4 وb/185096350 وb/187320697)
  • تم إصلاح معدِّلات التخطيط التي توفر خطوط المحاذاة. تم إصلاح خطأ تسبّب في عدم إعادة قياس الوالدَين عند تغيير خطوط المحاذاة لدى الأطفال. (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 التي تسمح لك بإنشاء المحتوى مسبقًا في نطاق تحديد خانة تعريف مطلوب، ما يجعل إجراء القياس التالي أسرع كلما حاولنا التجميع الفرعي باستخدام معرّف شريحة معيّنة في المرّة القادمة لن تكون هناك حاجة إلى أي تركيبة. (I42580، b/184940225)
  • تمت إضافة مقبض اختيار المقطع (Iff80d، b/183408447).
  • تمت إزالة واجهات برمجة التطبيقات غير المستخدمة ذات الصلة بدعم Layout Inspector. (I2ac78)

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

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

الإصدار 1.0.0-beta06

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

تم إصدار "androidx.compose.ui:ui-*:1.0.0-beta06". يتضمّن الإصدار 1.0.0-beta06 هذه الالتزامات.

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

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

الإصدار 1.0.0-beta05

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

تم إصدار "androidx.compose.ui:ui-*:1.0.0-beta05". يتضمّن الإصدار 1.0.0-beta05 هذه الالتزامات.

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

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

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

  • تم إصلاح إجراءات التمرير السريع في إمكانية الوصول ACTION_SCROLL_FORWARD وACTION_SCROLL_BACKWARD وaccessibilityActionScrollLeft وaccessibilityActionScrollUp وaccessibilityActionScrollRight وaccessibilityActionScrollDown. فبدلاً من التمرير إلى نهاية الجزء القابل للتمرير، سيتم تمريره الآن بشاشة واحدة في الاتجاه المحدد. (Ieccb0)
  • ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع الإصدار 12 من نظام التشغيل Android (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() على التوالي.
    • توفير واجهة AnalyzeLocal الكاملة لـ LocalSoftwareKeyboardController حتى يمكن ضبطها (مفيدة بشكل خاص في الاختبارات) (I579a6)
  • تمت إضافة واجهة برمجة التطبيقات لإمكانية الوصول إلى LiveRegion. إذا تم وضع علامة على العقدة كمنطقة نشطة، ستُعلِم خدمات تسهيل الاستخدام المستخدم تلقائيًا بالتغييرات التي يتم إجراؤها (Idcf6f، b/172590946)
  • تم طرح ميزة TextOverflow.visible. (Ic8f89)

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

  • تم إصلاح المشكلة التي كانت تحدث عندما يتم وضع عناصر LazyColumn/LazyRow على الحواف بشكل غير صحيح بعد الانتقال السريع (Ie4d13، b/183877420).
  • تزيل ميزة AndroidViewBinding الآن بشكل صحيح الأجزاء التي تم تضخيمها عبر FragmentContainerView عند إزالة AndroidViewBinding من التدرّج الهرمي للإنشاء. (Ib0248، b/179915946)
  • تعمل ميزة AndroidViewBinding الآن على دمج الأجزاء التي يتم تضخيمها عبر FragmentContainerView بشكل صحيح عندما تكون ComposeView ضمن Fragment، ما يؤدي إلى إصلاح المشاكل المتعلّقة بحفظ حالة هذه الأجزاء واستعادتها بشكل صحيح. (I70eb0، b/179915946)
  • تعتمد ميزة Compose ViewSelecting الآن على الأجزاء 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 بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053)
  • تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController بدلاً من واجهة 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 التالية باعتبارها @experimentApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • تمت إضافة عناصر SemanticsMatcher التالية:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

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

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

الإصدار 1.0.0-beta01

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

تم إصدار "androidx.compose.ui:ui-*:1.0.0-beta01". يتضمّن الإصدار 1.0.0-beta01 هذه الالتزامات.

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

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

  • تمت إضافة رد الاتصال onStart إلى detectDragGestures (I67269، b/179995594)
  • لم تعد مُعدّلات تغيير الحجم حسب القيم الأساسية تجريبية. (I15744)
  • تمت إعادة تسمية measureBlocks إلى 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 في تكوينLocals (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)
  • يعرض العنصر "Placeable" الآن حجم "MeasurementSize" الذي يمثل الحجم الذي تم قياس التصميم الفرعي له بالفعل. قد لا يراعي هذا الحجم قيود القياس. (Ib2729 وb/172560206 وb/172338608)
  • إضافة عنصر تعديل مجموعة selectGroup الذي يسمح بوضع علامة على مجموعة من علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
  • إنّ السمة defaultFactory في compositionLocalOf وstaticCompositionLocalOf مطلوبة الآن بدلاً من أنّها اختيارية.

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

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

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

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

  • تمت إعادة تسمية أدوات تعديل الحجم. تمت إعادة تسمية Modifier.width/height/size إلى requiredSetup/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.PreferredOffer/FavoriteHeight/PreferredSize إلى العرض/الارتفاع/الحجم. (I5b414)

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

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

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

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

  • تمت إزالة AnimationClockMonitorable والفئات الفرعية. تمت إزالة صورة متحركة Float. (Icde52، b/177457083)

  • تمت إعادة تسمية مقدّمي الخدمات إلى MembershipLocalProvider.

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

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

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

  • لم يعُد SnapshotStateMonitorer تجريبيًا بعد الآن (Id2e6a)

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

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

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

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

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

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

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

  • يتم تمثيل موضع التمرير في Modifier.vertical Scroll()/horizontal Scroll() باستخدام Ints الآن (I81298).

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

  • تمت إضافة وظيفة مساعد مفيدة في ضبط الإجراء نفسه لجميع طلبات استدعاء ImeAction (I63447، b/179226323).

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

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

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

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

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

  • تمت إضافة واجهة برمجة التطبيقات لاستخدام موارد InteractiveVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملف XML بتنسيق <animated-vector> كـAnimationImageVector وإضفاء المؤثر الحركي عليه باستخدام PainterFor (I8ea91)
  • تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة لتكوين LocalSoftwareKeyboardController بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)

الإصدار 1.0.0-alpha12

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

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

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

  • تمت إزالة دعم ViewGroups من UiApplier. تمت إزالة مواد emitView التي تم إيقافها نهائيًا. (Ifb214)
  • يتطلب Modifier.pointerInput الآن تذكُّر مفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل الكوروتين الخاص برصد إدخالات المؤشر في التبعيات الجديدة. (I849cd)
  • تمت إعادة تسمية التركيبة الموسيقية إلى تكوين Context (I53fcb).
  • تمّت إعادة تسمية الحدود إلى DpRect (I4b32a).
  • تحديث الاختبار: سيتحقق hasText() من كل من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803)
  • تم نقل viewModel() الذي تم إنشاؤه وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. ستحتاج الآن إلى إضافة تبعية منفصلة androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لاستخدامها. (I7a374)
  • السماح باتخاذ إجراء قابل للقيم الفارغة في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من Char منشئي المحتوى إلى سلسلة (I0dc82)
  • ومن أجل مطابقة اصطلاحات التسمية بشكل أفضل مع ImageBitmap وImageVector، تمت إعادة تسمية ImagePainter إلى BitmapPainter لتوازي مع VectorPainter. (Iba381، b/174565889)
  • واجهات برمجة تطبيقات أفضل لاختبار سلسلة فرعية مع سلسلة فرعية الآن كوسيطة (Icbe78)
  • تمت إضافة عنصر Modifier.focusOrder() يقبل FocusRequester بدون تحديد ترتيب تركيز مخصّص وهو lambda. يكون هذا الإجراء مفيدًا عندما نحتاج فقط إلى تحديد مرجع وليس ترتيب تركيز مخصّص لملف قابل للتعديل (I4f52a ، b/179180978).
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في وحدة androidx.activity:activity-compose. (Icf416)
  • تمت إزالة طرق التدمير وcopy() من عدة فئات نادرًا ما كانت تُستخدم. (I26702، b/178659281)
  • النافذة المنبثقة المنقولة لتكون خاصة بالنظام الأساسي. تمت إعادة تسمية AndroidPopupProperties إلى PopupProperties، وتم نقل السمة isFocusable إلى المعلَمة focusable في PopupProperties (Ieeea5).
  • تم نقل مربع الحوار ليكون متعلقًا بالنظام الأساسي. تمت إعادة تسمية AndroidDialogProperties إلى DialogProperties. (I4ef69، b/179138130)
  • تم إنشاء LayoutNode داخليًا (I8a7b1، b/175103944)
  • تم استبدال Constraints.enforce بـ Constraints.restricted. (I8b8ea)
  • تم إيقاف uploadFontResource. استخدِم fontResource بدلاً من ذلك. تم إيقاف "imageResource" وloadImageResource و"fontResource" و"loadVectorResource" نهائيًا. استخدم PainterResource بدلاً من ذلك. (I6b809)
  • لأسباب تتعلق بالأداء، تستخدم الآن دلالات ScrollAxisRange قيم lambdas التي تعرض قيم Floats بدلاً من قيم Float المباشرة. (If4a35، b/178657186)
  • تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في حقل النص لإمكانية الوصول وطرق الاختبار المقابلة للتحقق من المعنى (I8e07a)
  • تم إنشاء OwnerLayer/OwnerScope/OwnerSnapshotMonitorer داخليًا (I4ffaf، b/175103944)
  • تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
  • تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
  • تم تحديث Snapshot API ليكون أكثر تناسقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات العامة. (Id9e32)
  • تمت إضافة إجراءات دلالات "توسيع وتصغير". تمت إضافة عرض "عرض" و"أفني موسّعة" في ModalBottomSheetState (Ib5064)
  • تم إيقاف واجهة برمجة التطبيقات Modifier.dragActivityFilter نهائيًا. يمكنك استخدام Modifier.pointerInput { detectDragGestures (...)} كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لسحب محور واحد (I0ba93، b/175294473).
  • تمت إعادة تسمية "وضع الإضاءة السينمائية" لتتناسب مع إعادة تسمية "وضع الاستراحة" -> تكوين محلية. كان يُطلق اسم "أمبيانت" على البيئة المحيطة، أما الآن يُطلق اسم EnvironmentLocals على اسم LocalFoo. (I2d55d)
  • تمّت الآن إزالة حقل BaseTextField المتوقّف نهائيًا. يمكنك استخدام BasicTextField بدلاً من ذلك. (I71368)
  • تم نقل التحديد إلى الأساس. (I7892b)
  • سنزيل savedInstanceState { 0 } كتلك التي تتضمنها فيديوهاتك، وذلك مثلما أزلنا state { 0 } كتلك التي كانت تُستخدَم في السابق، ونحن نعمل حاليًا على الترويج للاستخدام، مثل remember { mutableStateOf(0) }. يجب استخدام rememberSaveable { mutableStateOf(0) } بدلاً من ذلك، وسيتم الحفظ والاستعادة تلقائيًا إذا كان النوع المستخدَم داخل MutableState مخزّنًا في الحزمة. إذا كنت تُمرِّر في السابق كائن توفير مخصّص، يجب الآن استخدام حمل زائد جديد للتذكر المحفوظ في الملف الذي يحتوي على معلَمة stateSaver. سيظهر الاستخدام على النحو التالي: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26، b/177338004)
  • تمت إضافة دلالات كلمة المرور لإمكانية الوصول (I231ce).
  • تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدم غير المحددة لإمكانية الوصول (I6fe05)
  • تم إيقاف أداتَي الخدمات emptyContent() و(@Composable () -> Unit).orEmpty() نهائيًا لأنّه لم يعُد لهما أي تأثير إيجابي في الأداء أو القيمة (I0484d).
  • لم يعُد snapshotFlow وwithMutableSnapshot تجريبيَين (I6a45f).
  • يمكن الآن إغلاق أدوات إعادة الضبط. ستستمر أدوات إعادة الإنشاء المغلقة في إعادة الإنشاء حتى اكتمال تكوين الكوروتينات الثانوية. تمت إعادة تسمية Recomposer.shutDown لإلغاء التبديل مع وضع الإغلاق. (Ib6d76)
  • تمت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وتمت إعادة تسمية SPACEUiSavedStateRegistry إلى ampSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
  • تمت إعادة تسمية Artefact androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac)
  • يتم حذف العديد من واجهات برمجة التطبيقات القديمة والمتوقّفة نهائيًا في حزمة واجهة المستخدم. (I2f2dc)
  • تم إيقاف عنصر Compose:runtime-dispatch نهائيًا الآن. يمكن الآن العثور على MonotonicFrameClock في الحقل compose:runtime ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)
  • إنّ فئات Outline.* لم تعُد فئات بيانات (I4879e، b/178001427)
  • تمت إزالة view.captureToImage() بدون أي بديل. (I7fcd2)
  • تم تقديم واجهة برمجة التطبيقات ColorMatrix API المستخدمة لتعديل قيم rgb لمحتوى المصدر Refactored ColorFilter API لتكون واجهة ومطابقة تنفيذ PathEffect. (Ica1e8)
  • أضف معلمة schemaDirection إلى سمة createOutline في الشكل. يسمح هذا بإنشاء أشكال تراعي اتجاه التخطيط. (I57c20، b/152756983)
  • تم إيقاف onImeActionPerform نهائيًا. يُرجى استخدام Keyboard Actions بدلاً من ذلك (If0bbd وb/179071523).
  • وتم طرح عنصر سياق الكوروتين InfiniteAnimationPolicy الذي سيتم تطبيقه على الصور المتحركة اللانهائية. وفقًا للإعدادات التلقائية، لا يتم تثبيت أي سياسة إلا عند إجراء الاختبارات باستخدام ComposeTestRule. (I50ec4، b/151940543)
  • تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
  • تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بخاصيةparentCoordinates جديدة. تقدم خاصية parentCoordinates الآن LayoutCoordintes لمعدل التعديل الرئيسي. وهذا سيجعل حالات استخدام أكثر اكتمالاً لـ onSizeChanged() وonGloballyPositioned() (Idfbfd, b/177926591)
  • تم إيقاف clickOptionFilter وDoubleTap إِلَىFilterFilter وlongPressOptionFilter و press متصفِّحaitonAnimationFilter نهائيًا. ويمكنك استخدام Modifier.clickable أو Modifier.pointerInput مع وظيفة revealTapالإيماءات بدلاً من ذلك. (I6baf9، b/175294473)
  • تمت إزالة الإجراء unregisterProvider الخاص بـ SaveableStateRegistry. بدلاً من ذلك فإن recordProvider() تعرض الآن الكائن SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739)
  • renameSavedInstanceState() (I1366e، b/177338004)
  • تمت إزالة CoreText و CoreTextField من واجهة برمجة التطبيقات العامة.
    • تمت إزالة الحمل الزائد لحاويات التحديد المتوقفة نهائيًا
    • (I99c19)
  • أصبحت الاختبارات التي يتم فيها استخدام ميزة "الكتابة" في التسلسلات الهرمية التي تتم إضافتها أو إزالتها مباشرةً إلى WindowsManager أكثر ثباتًا. (Ie81ed، b/175765614)
  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم ضبطه تلقائيًا على أدوات إعادة الإنشاء التي تم إنشاؤها باستخدام طريقة كسول والتي يتم إنشاؤها على نطاق النافذة استنادًا إلى ViewTreeLifecycleOwner للنافذة. يتم إيقاف علامات الرسوم المتحركة المستندة إلى FrameNanos وإعادة الإنشاء مؤقتًا أثناء إيقاف دورة حياة المضيف. (I38e11)
  • توفّر Recomposer.runningRecomposers الآن حالة عامة على StateFlow من نوع RecomposerInfo المخصصة للقراءة فقط لمراقبة حالة الإنشاء المستمرة في العملية. أفضّل واجهة برمجة التطبيقات هذه على Recomposer.current() ، والتي تم إيقافها الآن. (If8ebe)
  • تم نقل Saver وlistSaver() وmapSaver() والحفظ التلقائي من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
  • تقبل أوامر الأمر AnnotatedString. يُرجى العلم أنّ هذا التغيير مخصّص فقط لواجهة برمجة التطبيقات، ولم يتم بعد تنفيذ تعديل النصوص متعددة الأنماط. (I4c3ea)
  • تمت إزالة "وقت التشغيل" و"المدة". (Ib9bf4، b/177420019)
  • تم نقل AnalyzeData.asTree() وواجهات برمجة التطبيقات ذات الصلة إلى وحدة بيانات ui-tooling-data منفصلة، ووضع علامة عليها تشير إلى أنّها تجريبية (Ic95b8).
  • تمت إعادة تسمية معلمات RounderCornerShape وCutCornerShape وCornerBasedShape من اليسار/اليمين إلى البداية/النهاية من أجل دعم النسخ المطابق التلقائي للشكل في اتجاه 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)
  • سيتم استبدال "المدة" و"وقت التشغيل" بالمللي ثانية الطويلة، وستزيل هذه الخطوة اعتمادية مدخلات المؤشر على هذه الفئات. (Ia33b2 وb/175142755 وb/177420019)
  • تمت إضافة amtiveSavedStateRegistryOwner بشكل مشابه لـ "آمبيانت ليفيك مول" وحساب "أمبيانت فيو ريموللاك" (I9a3e8، b/176756365).
  • تم تحديث واجهة برمجة تطبيقات الرسومات المتجهة لدعم تحليل التلوين الخفيف المطبق على جذر الرسومات المتجهة. (Id9d53، b/177210509)
  • تمت إضافة ToolType إلى PointerInputChange للتفريق بين الأجهزة (Iac787، b/175142755).
  • تمت إعادة تسمية DebianWindowManager إلى ننصحك (I2686a، b/177084714، b/177084983).
  • تم إيقاف طرق الإحداثيات العالمية وطرق إحداثيات جديدة مستندة إلى النافذة. (Iee284)
  • تمت إضافة Modifier.toolingGraphicsLayer، ما يؤدي إلى إضافة أداة تعديل لطبقة الرسومات عند تفعيل الفحص. (I315df)
  • تم تصنيف FocusRequester.createRefs الآن على أنها تجريبية لأنه قد تتغير. (I2d898، b/177000821)
  • تمت إعادة تسمية SemanticsProperty إعلانيr.hidden إلى invisibleToUser وتم وضع علامة عليه @PersonalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية StateDescriptionRange لتصبح progressBarRangeInfo. تمت إعادة تسمية Accessibility ScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibility ScrollState إلى horizontal ScrollAxisRange. ثم تمت إعادة تسمية verticalAccessibility ScrollState إلى vertical ScrollAxisRange. (Id3148)
  • تمت إزالة PointerInputData وتعديل PointerInputChange لمنحه جميع حقول PointerInputData. تم جعل PointerInputEvent وPointerInputEventData داخليًا بسبب عدم استخدامهما في أي واجهة برمجة تطبيقات عامة. (Ifff97، b/175142755)
  • يستخدم GraphicsLayerScope المُحدَّث الكثافة لدعم عمليات تحويل وحدات البكسل غير المرتبطة بالكثافة إلى وحدات البكسل الأولية. (Ied528، b/176819695)
  • تم تحديث واجهة برمجة تطبيقات المصفوفة لاتباع ترتيب الصفوف الرئيسي وتوفير ثوابت الفهرس للمساعدة في الإحالات الناجحة بين تمثيلات المصفوفة المختلفة لمطابقة منطق التحويل لإطار العمل بين SkMatrix وMatrix4 داخليًا. (I432e6)
  • تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f، b/170708374)
  • نقل String.fintPrecedingBreak وString.fingFollowingBreak إلى عبارة "internalTextApi". (I657c4)
  • تمت إزالة androidx.compose.ui.util.isSurrogateزوج من واجهة برمجة التطبيقات العامة. (Ia9494)
  • تمت إعادة تسمية TransformText.TransportedText ليصبح TransformText.text.
    • لم تعُد TransformText فئة بيانات (Ie672a).
  • تمت إزالة "data class" من الصفَّين التاليَين:
    • InlineTextContent
    • LocaleList (I605c7)
  • لم تعُد الفئات التالية فئات بيانات بعد الآن:
    • سلسلة AnnotatedString
    • نمط الفقرة
    • نمط ممتد
    • نمط النص
    • عرض الخط
    • زخرفة النص
    • تحويل النص الهندسي
    • فهرس النص
    • نتيجة تنسيق النص
    • TextLayoutInput (Iaff99)
  • تغيير VisualTransform ليصبح واجهة وظيفية (I3bba4)
  • تمت إضافة نوع معلَمة مرجع الدالة (I5e1bd).
  • إضافة حدود تم تحويلها إلى InspectorNode (Ice42f)

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

  • تم إيقاف onCommit وonDispose وonActive لتصبح واجهات برمجة تطبيقات SideEffect وDeposableEffect (If760e)
  • التغييرات التي طرأت على الوظائف الأصلية للخط/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 من معلَمات دالة الإنشاء في EditBuffer. (I326d5)
  • تم الآن إيقاف الحلّ المستقل والمؤلف من () الدمج ()) الحاليَين لصالح العنصرَين الحاليَّين الحاليَين (currentRecomposeScope) و"تذكُّر حساب التركيب" ( باعث) على التوالي. (I583a8)

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

  • يحلّ محل SpeakMonitorer محلّ AssessLifecycleMonitorer وتم الآن إيقاف سيطرته AssessLifecycleMonitorer نهائيًا.

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

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

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

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

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

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

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

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

  • تمت إعادة تسمية TextInputService.onStateupdated باسم updateState (Id4853).

  • تم إيقاف النقل المستند إلى تعريف TransitionDefinition نهائيًا (I0ac57)

  • تمت إزالة TextUnitType.Inherited. يُرجى استخدام 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)
  • تمت إزالة ميزة findMonitorer المتوقفة نهائيًا والتي تستخدم onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9، b/175156387)
  • تغييرات واجهة برمجة التطبيقات (EditOperations API)
    • تم تغيير اسم الأداة (EditOperation) باسم (EditCommand)
    • تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة لـ EditOperation
    • لم تعُد فئات البيانات EditCommand's فئات بيانات
    • تمت إعادة تسمية دالة EditOperation.process لتطبيق "ApplyTo"
    • تمت إعادة تسمية InEventListener إلى enterEventCallback
    • (I0a366)
  • تمت إزالة عناصر PxSquared وPxCubed وPxInverse غير المستخدمة. تم تغيير Size.center() ليكون خاصية. (I973f7)
  • ستتمكن وحدة اختبار واجهة المستخدم الآن من ضبط عملية إنشاء أدوات إعادة التثبيت لواجهات المستخدم التي تخضع للاختبار (Ibebd8)
  • السرعة المعدلة للحصول على أجزاء مكونة وعمليات رياضية. (Ib0447)
  • تمت إعادة تسمية @ExperimentalTesting إلى @ExperimentalTestApi للتوافق مع التعليقات التوضيحية التجريبية المشابهة لواجهة برمجة التطبيقات (Ia4502، b/171464963)
  • تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
  • تمت إزالة فئات DpInverse وDpSquared وDpCubed غير المستخدمة. (I4d62b)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • إضافة معاودة اتصال لإعلام المالك عند تغيير حدود عقدة التنسيق. (I72fd1)
  • تمت إضافة isSpecified وisUnspecificified وuseOrElse في الفئات المضمّنة ذات الثابت غير المحدّد (I93f7b، b/174310811)
  • توسيع [Abstract]واجهات برمجة تطبيقات ComposeView للسماح بإعادة تدويرها طريقة العرض المستندة إلى الإنشاء، مع التخلص من المقطوعات الموسيقية لإعادة إنشائها لاحقًا أضِف واجهات برمجة تطبيقات لتثبيت "أدوات إعادة الإنشاء" و"مراجع المقطوعات الموسيقية" على مستوى النافذة واكتشافها لإنشاء مقطوعات موسيقية فرعية.

    يمكنك إضافة ViewCreationStrategy لإعداد استراتيجية التخلص من المقطوعات الموسيقية لـ [Abstract]ComposeViews؛ حيث يتم التخلص من السلوك التلقائي عند فصل النوافذ. (I860ab)

  • تمت إزالة Any.identityHashCode() من واجهة برمجة التطبيقات العامة (I025d7).

  • تمت إزالة toStringAsFixed API لصالح استخدام String.format بدلاً من ذلك مباشرةً. (Iaba6b)

  • إضافة مفتاح التبديل إلى Foundation Strings.kt (I4a5b7، b/172366489)

  • تم نقل تقنية originalClass إلى وحدة واجهة المستخدم وجعلها داخلية. تم تحديث استخدامات NativeClass في عمليات تنفيذ تساوي استخدام "is MyClass" بدلاً من ذلك. (I4f734)

  • تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48 وb/175160751 وb/175160532 وb/175077829)

  • تم تقديم SelectRegistrar.notifySelectableChange لإبلاغ التحديثات القابلة للاختيار إلى SelectionManager. (I6ff30، b/173215242)

  • تم إدخال خاصية Outline.bounds للحصول على مستطيل الحدود لعمليات تنفيذ المخططات التفصيلية المختلفة. (I16e74، b/175093504)

  • TestUiDispatcher تم إيقافه نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)

  • ImeOptions وKeyboardOptions ليست مرة أخرى فئة بيانات (I3c898، b/168684531)

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

    • تمت إعادة تسمية OffsetMap إلى OffsetMapping
    • تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
    • لم يعد تحويل كلمة المرور من فئة البيانات
    • تم نقل OffsetMapping إلى الملف الخاص بها
    • (I0bdf3)
  • تمت إعادة تسمية الموضع إلى DpOffset وإزالة getمفتاح() (Ib2dfd)

  • تم تغيير المرح Dp.isFinite() إلى val Dp.isFinite (I50e00).

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

  • تعرض أداة إعادة الإنشاء الآن تدفقًا لحالتها الحالية، مما يسمح بمراقبة نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
  • يمكن الآن الوصول إلى keyEvent الأصلي من خلال keyEvent.localizedKeyEvent (I87c57، b/173086397)
  • تم استبدال animate() الآن بـ animateAsState()، التي تعرض State<T> بدلاً من T. ويتيح ذلك أداءً أفضل، لأنّه يمكن تضييق نطاق الإبطال إلى المكان الذي تتم فيه قراءة قيمة "الحالة". (Ib179e)
  • أضِف واجهة برمجة تطبيقات دور دلالات الألفاظ، وأضِف الدور كمَعلمة إلى أداة تعديل 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 بدلاً من ذلك. (رقم التعريف: 695)
  • تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter، باستخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً من ذلك (Idbf1b، b/175156384)
  • تم إيقاف Modifier.focusMonitorer نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 أو b/168511863 أو b/168511484)
  • بالنسبة إلى تعليق واجهات برمجة التطبيقات الخاصة بإدخال المؤشر، تمت إعادة تسمية HandlePointerInputScope إلى A وهذا الطلب وhandlePointerInput() إلى a تحققPointerEventScope(). (Idf0a1، b/175142755)
  • أصبحت واجهة برمجة التطبيقات للملء التلقائي الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الحصول على موافقة (I0a1ec)
  • إضافة إعلانات تدميرية لإنشاء مثيلات FocuSRequester (I35d84، b/174817008)
  • تمت إعادة تسمية AccessibilityLabel إلى contentDescription. تمت إعادة تسمية AccessibilityValue إلى StateDescription. (I250f2)
  • تمت إزالة الأحداث المخصَّصة من واجهة برمجة التطبيقات الخاصة بإدخال المؤشر (Ia54d5، b/175142755).
  • تم تقديم العديد من الدوال الجديدة في SelectionRegistrar وإعادة تسمية ميزة onPositionChange إلى الإشعارPositionChange. (Ifbaf7)
  • تم وضع علامة على المزيد من أعضاء LayoutNode كداخلي (I443c6)
  • تم تقديم LayoutInfo لاستخدامه من خلال الأدوات والاختبار (I9b190).
  • تم إنشاء AndroidOwner داخليًا (Ibcad0، b/170296980)
  • تمت إزالة التعليق التوضيحي لـ experimentPointerInput (Ia7a24).
  • تمت إضافة نظام التمرير المدمج. يُرجى الرجوع إلى Modifier.nested Scroll لمزيد من التفاصيل (I36e15 ، b/162408885).
  • تم إجراء subcomposeInto(LayoutNode) داخليًا (Id724a)
  • تم تغيير واجهة Applier لتبسيط بناء الأشجار من أسفل إلى أعلى بدلاً من الانتقال من الأعلى إلى الأسفل.

    تمت إعادة تسمية الطريقة insert() لتصبح insertTopDown().

    تمت إضافة طريقة جديدة، وهي insertBottomUp().

    يدرج تطبيق التطبيق العُقد في الشجرة التي يعدِّلها باستخدام insertTopDown() أو insertBottomUp() بناءً على أيهما أفضل أداءً.

    بعض الأشجار، مثل LayoutNode وView، تكون أكثر فعالية بكثير في الإنشاء من أسفل إلى أعلى من أعلى إلى أسفل. قبل هذا التغيير، كانت هناك حاجة إلى حزمة من الإدخالات لتنفيذ الإجراءات من أسفل إلى أعلى، وبالتالي كان يتعيّن نسخها إلى كل تطبيق يحتاج إلى بنية من أسفل إلى أعلى لتعزيز الأداء. بعد إجراء هذا التغيير، ستلغي Applier insertBottomUp() لتشكّل شجرة من أسفل إلى أعلى وinsertTopDown() لبناء الشجرة من أعلى إلى أسفل. (Icbdc2)

  • تمت إضافة خاصيتَي EscOnBackPress و فاخرOnClickOut إلى AndroidDialogProperties. تسمح هذه الإعدادات بالإعداد عند استدعاء onRejectRequest lambda لمربّع الحوار. (If5e17)

  • تمت إضافة PainterResource API لمعالجة كائنات Painter التي يمكن تحميلها بشكل مبهم من تنسيقات مواد العرض النقطية (مثل PNG) أو VectorDrawables. لم يعُد بإمكان المستهلكين تحديد نوع مادة العرض مسبقًا، ويمكنهم طلب هذه الطريقة للحصول على كائن "Painter" لاستخدامه في مواد الصور أو أدوات تعديل الطلاء. (I2c703، b/173818471)

  • تمت إضافة Modifier.clearAndSetSemantics لإزالة دلالات التوازي وضبط دلالات جديدة. (I277ca)

  • تم نقل ContentDrawScope إلى وحدة رسومات واجهة المستخدم لتكون باستخدام DrawScope. (Iee043، b/173832789)

  • تم تقديم واجهة برمجة تطبيقات رسومات PathEffect لتوفير أنماط مختلفة للأشكال المحددة. تم إيقاف استخدام NativePathEffect لصالح التنفيذ المتوقع/الفعلي لـ PathEffect. (I5e976، b/171072166)

  • تمت إضافة واجهات IdlingResource إلى Compose، باعتبارها صيغة متغيرة مدعومة في Compose لموارد عدم النشاط في Espresso. يمكن تسجيلها وإلغاء تسجيلها من خلال ComposeTestRule (I433f3).

  • تمت إزالة التسجيل العام (un) لـ ComposeIdlingResource والتسجيل (un) العام للساعات في ComposeIdlingResource (I32660)

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

  • تعرض منصات Lambdas في معدِّلات الإزاحة الآن IntOffset بدلاً من Float. (Ic9ee5 وb/174137212 وb/174146755)
  • تمت إزالة واجهة OpenTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. تم وضع علامة عليها سابقًا على أنها internalComposeAPI سابقًا. وهي الآن داخلية في وحدة الإنشاء.

    تمت إضافة التركيبة والتكوين التركيبة لها كبديل لواجهة برمجة تطبيقات أدوات واجهة المستخدم لاستخراج معلومات حول التركيبة. وتكون هذه البيانات علنية، ولكن ليس الغرض منها استخدامها خارج واجهة برمجة تطبيقات ui-tooling، لأنّها توفر المعلومات الأولية التي تفسرها واجهة برمجة تطبيقات أداة واجهة المستخدم (I31a9c).

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

    تم إيقاف واجهات برمجة التطبيقات لإنشاء دالة التدرج لصالح أساليب المصنع على كائن التدرج. (I511fc، b/173066799)

  • أغلق LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed. استخدِم LazyColumn وLazyRow بدلاً من ذلك (I5b48c).

  • تم إيقاف العمل بـ BuildCompat.isAtLeastR (Idb37e) نهائيًا

  • تمت إضافة وظيفة المصنع إلى BuildAnnotatedString من أجل إنشاء AnnotatedString. تم إيقاف دالة إنشاء سلاسل التعليقات التوضيحية نهائيًا. (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 مخطط.kt لتضمين أساليب الكتابة/أساليب المساعدة للمساعدة في عملية الانتقال من واجهة برمجة التطبيقات المتوقفة الحالية إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer. تم أيضًا تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا لملاحظات واجهة برمجة التطبيقات. (I0bd29، b/173834241)
  • تمت إضافة طريقتين جديدتينplaceable.placeWithLayer() وplaceable.placePlaceWithLayer() مما يسمح للتنسيقات المخصصة ومعدِّلات التنسيق بوضع عنصر ثانوي يقدم طبقة رسومات للرسم. بعد أن نتمكن أولاً من تحسين عمليات إعادة الرسم، وعندما نحتاج إلى نقل طفل، لا نضطر إلى إعادة رسم المحتوى، ثانيًا يمكننا تطبيق عمليات تحويل الرسم لطفل (Ibd8f6 وb/170296989 وb/171493718 وb/173030831)
  • تمت إزالة <T> من بيان SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8)
  • تمت إضافة Modifier.scale/rotate واجهات برمجة التطبيقات كتسهيلات لـ drawLayer.
    • تمت إعادة تسمية Modifier.drawOpacity إلى Modifier.alpha
    • تمت إعادة التسمية Modifier.drawShadow إلى Modifier.shadow (I264ca، b/173208140).
  • تم جعل وقت تشغيل PointerInputData وحقول الموضع غير قابلة للقيم الفارغة. (Id468a)
  • أصبح MaterialTheme الآن يحدد الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستنِدة إلى مواد مختلفة استخدام ألوان EntertainmentTextSelectionColors يدويًا لتخصيص الألوان التي يتم استخدامها للاختيار. (I1e6f4، b/139320372، b/139320907)
  • تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف محل التركيز، وأداة WindowFocusMonitorer التي توفر استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
  • تم تحديث TransformOrigin API بحيث تتوفر بنية تدميرية لعرض pivotFractionX وpivotFractionY كـ component1 وcomponent2 (If43c4، b/173586560)
  • تمت إضافة التحقق من الوبر لتحديد تسمية مَعلمات lambda وموضعها للتأكّد من توافقها مع إرشادات الإنشاء. تم أيضًا نقل بيانات بعض واجهات برمجة التطبيقات باستخدام children كاسم لدالة lambda اللاحقة إلى content، وفقًا لعمليات التحقّق من الوبر والإرشادات. (Iec48e)
  • تمت إضافة واجهة برمجة تطبيقات للتحقق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث رئيسي. (I50ed9)
  • تمت إضافة حمل Modifier.drawLayer() زائد جديد. حيث يأخذ كتلة lambda في GraphicsLayerScope الجديدة، حيث تُحدِّد معلَمات الطبقة بطريقة تسمح بتخطي إعادة الإنشاء وإعادة التنسيق عند حدوث تغيير الحالة. أصبح DrawLayerModifier الآن داخليًا استعدادًا لنقل منطقه إلى طريقةplaceable.placeWithLayer() من LayoutModifier (I15e9f، b/173030831)
  • تم إيقاف ميزات "وضع عدم النشاط" التي تحمل اسم "Ambient" كلاحقة لها، واستبدلتها بسمات جديدة مسبوقة بعبارة "وضع عدم النشاط"، وذلك باتّباع إرشادات أخرى حول عناصر المحيط والكتابة في واجهة برمجة التطبيقات. (I33440)
  • تم نقل androidx.compose.ui.text.Typeface إلى androidx.compose.ui.text.font.Typeface (Ic2b81)
  • تمت إعادة تسمية وسيطة Sementics integrationAllDescendants إلى mergeDescendants. (Ib6250)
  • أداة رصد إيماءة السحب الجديدة التي تعلّق واجهة برمجة التطبيقات للإدخال، بما في ذلك قفل الاتجاه. (Icef25)
  • تم تغيير اسم VectorAsset ليصبح ImageVector تم نقله وإعادة تسمية VectorAsset إلى Builder ليكون فئة داخلية من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة typealias لـ VectorAssetBuilder للربط بـ ImageVector.Builder للمطابقة. (Icfdc8)
  • أعدت تسمية ImageAsset والطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
  • أضِف مَعلمة zIndex لـ PlaceScope() حتى يعمل Modifier.zIndex() الآن كأداة LayoutModifier، ويمكن لأي تنسيق مخصّص ضبط zIndexes لأغراضها الثانوية مباشرةً في مجموعة مواضع الإعلان (I711f7، b/171493718).
  • تم نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c)
  • تجنَّب استخدام المكان(الإزاحة) والمكان نسبي(الإزاحة). استخدام أحمال زائدة مع إزاحة Int بدلاً من ذلك (I4c5e7)
  • تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا: تمت إزالة Modifier.onPositioned، ويمكنك استخدام Modifier.onGloballyPositioned. تمت إزالة Modifier.onDraw، يُرجى استخدام Modifier.onDrawBehind. تمت إزالة Modifier.plus. يُرجى استخدام Modifier.then. تمت إزالة اللون.لم يتم تحديده، يمكن استخدام اللون.غير محدد. تمت إزالة فئة PxBounds، لذا استخدِم Rect بدلاً من ذلك. (Ie9d02، b/172562222)
  • تم تحديث واجهة المحاذاة وجعلها تعمل. (I46a07، b/172311734)
  • تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار ومؤشر الضغط باستخدام الإدخال الجديد لمؤشر التعليق. بالإضافة إلى ذلك، تمت إضافة بعض الأدوات، ما سهّل على المطورين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
  • تمت إعادة تسمية id إلى layoutId للنطاق LayoutIdParentData. تمت إعادة تسمية Measurable.id إلى Measurable.layoutId. (Iadbcb، b/172449643)
  • أداة جديدة للكشف عن الإيماءات باللمس المتعدّد، تشمل أدوات مساعدة لرصد التدوير والتكبير/التصغير والتحريك. (Ic459d)
  • تم تقديم واجهات برمجة تطبيقات SweepGRadentShader وSweepGRadentBrush. (Ia22c1)
  • التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماتها) أصبح تجريبيًا الآن (I6ef86، b/171378521)
  • إضافة واجهات برمجة تطبيقات التمرير المستندة إلى الكوروتين:

    لإضافة LazyListState.snapToItem وLazyListState.smooth ScrollBy، بالإضافة إلى واجهات برمجة تطبيقات ذات مستوى أقل للتحكم في التمرير. توفّر واجهات برمجة التطبيقات هذه واجهة تعليق للتحكم في التمرير الذي ينتظر حتى ينتهي الانتقال قبل الرجوع إليه. (Ie5642)

  • يجب إضافة Modifier.focusable إلى "الأساس". واستخدِم هذه السمة لإضافة سلوك يمكن التركيز عليه في المكوِّن، مع استخدام دلالات دقيقة وإمكانية الوصول الصحيحة. (I41eb9 وb/152525426 وb/162865824)

  • توفير عمليات التنفيذ التلقائية للطرق والسمات في AnimationClockTestRule التي يمكن تفويضها إلى clock (I7ea3d، b/173399709)

  • يمكن الآن لـ AndroidComposeTestRule قبول مشغّلات الأنشطة المخصّصة (Ib8288 وb/153623653 وb/154135019)

  • تم إيقاف TextLayoutResult.getLineVisualEnd نهائيًا. بدلاً من ذلك، يحتوي TextLayoutResult.getLineEnd على معلمة جديدة visibleEnd. (I73282)

  • واجهة برمجة التطبيقات المُعدَّلة لحقل TextFieldValue

    • تم جعل TextFieldValue.composition للقراءة فقط
    • تمت إزالة الاستثناء لنطاق التحديد غير الصالح (I4a675، b/172239032)
  • دعم TtsAnnotation لمحرك تحويل النص إلى كلام. (I54cc6)

  • واجهات برمجة تطبيقات جديدة لتشغيل الصور المتحركة في الكوروتينات (Ied662)

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

  • تمت إعادة تسمية مَعلمة المحاذاة في Box لتصبح contentAlignment. (I2c957)
  • تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. وهي تأخذ الآن معلَمات lambda بدلاً من "الحالة". (Ic3021، b/173594846)
  • تمت إضافة المعلمة renameInput إلى TextInputService#onStateupdated (I3e8f5، b/172239032، b/171860947)
  • تمت إضافة التحقق من الوبر لمعلمات التعديل في الدوال القابلة للتعديل. تتحقّق عملية التحقّق من الوبر هذه من التسمية ونوع العرض والقيمة التلقائية وترتيب المَعلمة من أجل التوافق مع إرشادات الإنشاء. (If493b)
  • تمت إضافة خيار مؤقتًا للسماح بتشغيل TestAnimationClock من خلال MonotonicFrameClock (I1403b، b/173402197)
  • تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل نمط الخط Android عبر دالة typeface، أي typeface(Typeface.DEFAULT). تمت أيضًا إعادة تسمية typefaceFromFontFamily() إلى typeface() (I52ab7)
  • تمت إضافة فحص الوبر للتأكّد من أنّ وظائف "المعدِّل" الأصلية هي إضافات في "المعدِّل"، وبالتالي يمكن ربطها معًا بطلاقة. (I07981)
  • إزالة وحدة اختبار واجهة المستخدم القديمة وملفاتها (I3a7cb)
  • لم تعد أداة إعادة الإنشاء تقبل embeddingContext، إذ يتم الحصول على التبعيات المطلوبة الجدولة من activityCoroutineContext. تم إيقاف FrameManager، ويجب أن تؤدي عمليات دمج النظام الأساسي إلى تهيئة معالجة اللقطات العامة. (I02369)
  • تمرير معلومات النمط إلى عقدة إمكانية الوصول. (If5e8d)
  • تمت إعادة تسمية TextUnit.Inherited إلى 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 لإجراء تحجيم غير موحد لتوسيع حدود src لشغل الوجهة بالكامل.
    • تمت إضافة طرق عوامل التشغيل لحساب معاملات ScaleFactor باستخدام مُعلَّمات الحجم.
    • (Ic96a6، b/172291582)
  • تمت إضافة معاملَي المحاذاة والانحياز والانحياز لإنشاء المحاذاة. (Iac836، b/169406772)
  • السماح للمطور بتوضيح التركيز بقوة. (I90372)
  • تم إصلاح خطأ يتسبب في عدم رسم الارتفاع لالمشاهدات داخل الإنشاء. (If7782)
  • تم إنشاء واجهة برمجة التطبيقات onDrawBehind ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
  • أضف دعمًا لمسافة الكاميرا لإكمال التحويلات الثلاثية الأبعاد rotationX/rotationY على واجهات برمجة التطبيقات للطبقة. (I40213، b/171492100)
  • تمت إضافة حاوية التحديد بدون معاودة الاتصال (Ibfadb).
  • تمت إزالة التعليق التوضيحي experimentSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.لاستخدامها (Ied2e7)
  • تمت إزالة التعتيم من معدِّل drawShadow() لأنه كان مربكًا. (I82c62، b/171624638)
  • تم نقل MeasurementResult خارج MeasurementScope. (Ibf96d، b/171184002)
  • تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.caption.ui. (I0fa98، b/170475424)
  • تمت إزالة FocusState2 المتوقفة (I686cb ، b/168686446)
  • تطبيق ZIndexModifier الآن داخلي (I1808b، b/171493718)
  • تم تحديث نوع الإرجاع لطريقة lerp في معلمات الحجم لعرض حجم غير فارغ لتجنب الصناديق غير الضرورية. (Ib0044)
  • تمت إضافة TestMonotonicFrameClock لاختبار التعليمات البرمجية التي تعتمد على MonotonicFrameClock من Compose لانتظار أحداث إطار تركيبة الصورة باستخدام اختبار runblockTest في kotlinx-coroutines-test (I4402f).
  • تمت إزالة الإيماءاتScope.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 لقبول خيارات لوحة المفاتيح (Ida7f3)
  • إعادة تسمية KeyboardOptions بتنسيق ImeOptions (I82f36)
  • تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce).
  • تمت إضافة "توفيرDefault" كبديل لتوفير "البيئة المحيطة"، ويمكن استخدامه لتحديد القيم المحيطة التي سيتم ضبطها فقط عند عدم تحديد قيمة محيطة. (Id6635، b/171024925)
  • تم إيقاف BaseTextField نهائيًا. يمكنك استخدام BasicTextField بدلاً من ذلك. (I896eb)
  • تقديم وحدة ui-test-junit4 (Ib91f8)
  • تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة مفتاح التعديل paddingFromBaseline لتسهيل تحديد المسافات من حدود التصميم إلى الأسس النصية الأساسية. (I0440a، b/170633813)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق التناسق مع واجهة برمجة تطبيقات SideEffect وDisableEffect. لا يُسمح بـ LaunchedEffect بدون مَعلمات موضوع لتشجيع أفضل الممارسات. (Ifd3d4)
  • تم إدخال موارد قابلة لإعادة الإنشاء عند تحديث الإعدادات. (I6387c، b/167352819)
  • تتطلب أداة إعادة التركيب الآن CoroutineContext في الإنشاء (Ic4610)
  • جمع قيم zIndex عند تطبيق قيم Modifier.zIndex() متعدّدة. في السابق، كانت النتيجة الأولى هي الفوز. (Ic514c، b/170623936)
  • التغييرات التي ستطرأ على طريقة حساب الشرائح الداخلية التي من المفترَض ألا تؤثر في واجهة برمجة التطبيقات العامة. (If9828)
  • تمت إضافة خيار أداة IME للتصحيح التلقائي للوحة المفاتيح (I57b8d).
  • تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
  • تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات المتاحة للجميع. (Ic2e45)

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

  • تم إيقاف نشر الأداة الداخلية androidx.compose.ui:ui-text-android (Ib93fa).

الإصدار 1.0.0-alpha06

28 تشرين الأول (أكتوبر) 2020

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

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

  • أصبح Recomposer الآن مرجعًا للمقطوعة الموسيقية وأصل مؤلف صالح. يجب الآن إعداد "أداة إعادة إنشاء المحتوى الفاضح" في عدد أقل من الأماكن. (I4036f)
  • استبعد VectorPainter لتفضّل تذكرVectorPainter للإشارة بشكل أفضل إلى أن واجهة برمجة التطبيقات القابلة للتكوين "تتذكر" الاحتفاظ بالبيانات عبر التركيبات. (Ifda43)
  • تم تحديث واجهة برمجة التطبيقات Modifier.drawWithCache API لعرض ContentDrawScope كنطاق للمستلم بدلاً من DrawScope بهدف توفير إمكانية إعادة ترتيب أوامر الرسم في عمليات التنفيذ. ويفيد هذا في حالات استخدام المزج/التلوين التي يجب فيها عرض وحدات بكسل المحتوى أولاً من أجل تطبيق خوارزمية وضع المزج المقابلة بشكل صحيح. (Ie7ec8)
  • نقل SimpleContainer إلى PopupTestUtills.kt (I78c57)
  • لم تعُد ConsumedData ضمن فئة البيانات. يمكنك الانتقال إلى https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 للحصول على التفاصيل (I1737f).
  • إصلاح موضع مقبض Rtl (I6e1e0)
  • إعادة ضبط DrawScope وContentDrawScope ليكونا واجهات بدلاً من فئات مجرّدة
    • تم إنشاء تطبيق CanvasDrawScope لتطبيق DrawScope
    • تمت إعادة هيكلة عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً من ذلك
    • تم إنشاء DrawContext لتضمين التبعيات في DrawScope
    • تمت إزالة الطرق التي تم إيقافها نهائيًا في DrawScope (I56f5e)
  • تغيير قد يؤدي إلى عطل: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) لأنّ القيمة الوحيدة التي يمكن تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات استهلاك PointerEvents التي تم تمريرها. (I6acd0)
  • تم إنشاء واجهات MeasurementScope وIntrinsicmeasureScope (I1a087، b/170461665)
  • تم إخفاء دالة الدمج لـ SpamLine. (I9da1a وb/170612900 وb/170611568)
  • إضافة إمكانية تحديد معلومات المفتش في مفتاح التعديل المركَّب (Idee08، b/163494569)
  • تمت إضافة خيار "اختيار الكل" إلى قائمة التحديد (Ief02b).
  • تم تحديث DrawTransform.rotate لوضع معلمة محورية افتراضية للوسط لمطابقة الوثائق.
    • تم تحديث DrawScope.rotateRad لاستهلاك إزاحة للنقطة المحورية لمطابقة طرق التحويل الأخرى.
    • حمل DrawScope.rotateRad المتوقف نهائيًا الذي استهلك أعداد عشرية للإحداثيين س وص للمحور.
    • (Iffcbb، b/170434992)

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

  • تم تفعيل واجهة برمجة التطبيقات للتحقق من عدم وجود أخطاء في واجهة برمجة التطبيقات لنظام التشغيل androidx (I4bbea ، b/138602561)
  • إضافة اختبار. (I6b8ae)
  • يمكنك تفعيل عمليات الانتقال في ComposeTestRule، وإزالة خيار تفعيل المؤشر الوامض من ComposeTestRule. (If0de3)
  • تمت إضافة خيار أداة IME للغة لوحة المفاتيح (I8ac38).
  • تمت إضافة خيار لوحة المفاتيح ذات السطر الواحد إلى CoreTextField (I72e6d).
  • نقل SimpleContainer إلى PopupTestUtills.kt (I65c3e)
  • تمت إعادة تسمية واجهة برمجة تطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامه في Compose. مستندات محدَّثة للإشارة إلى أن نصف قطر الزاوية السالبة مُثبَّت بصفر. (I130c7، b/168762961)
  • تحسين إمكانية التشغيل التفاعلي لنظام التشغيل Android من خلال مواصلة إرسال MotionEvents إلى مشاهدات Android الثانوية التي تعرض قيمة خاطئة onTouchEvent لكل الإجراءات باستثناء ACTION_DOWN (I94c5a، b/170320973)
  • تم تحويل Box إلى دالة مضمنة. (Ibce0c، b/155056091)

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

  • دعم لغات مختلفة لكل من AnnotatedString.capitalize وAnnotatedString.decapitalize (I4aa7f)

الإصدار 1.0.0-alpha05

14 تشرين الأول (أكتوبر) 2020

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

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

  • إضافة DSL لتحديد معلومات المفتش (Ic9a22)
  • نقل ضغطة طويلة إلى نص (Iff2bc)
  • معدِّل الإدخال التجريبي "Modifier.pointerInput" (Ia77d2)
  • تمت إضافة إجراءات تسهيل الاستخدام النسخ/اللصق/القص (I6db4f).
  • تمت إزالة أداة الإنشاء العامة لـ AndroidOwner (Iacaef).
  • تكتسب النوافذ المنبثقة ومربّعات الحوار الآن FLAG_SECURE من النافذة الرئيسية. إضافة خيار أيضًا لضبط هذا الإعداد صراحةً (I64966، b/143778148، b/143778149)
  • أصبحت بيانات الاستهلاك الآن قابلة للتغيير. كذلك، لم تعُد استدعاءات دوال الإضافات التي تستخدم الاستهلاك تعرض الآن PointerInputChange الجديد، ولكن بدلاً من ذلك تغيّر PointerInputChange المُقدَّم.

    هذه هي الخطوة الأولى في عملية من خطوتين لجعل بيانات PointerEvent قابلة للتغيير بحيث لا يمكن تعديل بيانات المؤشر الأخرى بواسطة رمز المستخدم. والخطوة الثانية هي إزالة نوع العرض List<PointerInputChange> من PointerInputFilter.onPointerEvent(...). (Id067e)

  • إيقاف التحديد في النص، والعرض التوضيحي. (Ie7e97)

  • Made onGloballyPositioned دالة مضمّنة (I15830)

  • تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier و تمت إعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)

  • تمت إضافة الخاصية hasPendingmeasureOrLayout إلى المالك، لإعلام ما إذا كان لدى المالك أي أعمال تخطيط معلقة. (I3d9f8، b/169038599)

  • تمت إضافة واجهة برمجة التطبيقات إلى التركيز الواضح آليًا (Ie1dc2، b/161487952)

  • تمت إزالة PointerInputFilter.onPointerInput(...). يجب استخدام السمة PointerInputFilter.onPointerEvent(...) بدلاً منها. (I6f04a)

  • التغييرات في الحجم

    • تمت إزالة Size.getFlipped
    • تمت إزالة Size.rem
    • تمت إزالة Size.truncDiv (Ief44d، b/169790720).
  • كجزء من توحيد قيم العنوان للفئات المضمّنة، يمكنك إعادة تسمية اللون.Unset to Color.غير محدد لالاتساق مع الفئات المضمّنة الأخرى (I97611، b/169797763)

  • تم تقديم TextOverflow.لا يتم تقديم أي شيء. عندما تكون قيمة overflow هذه بدون قيمة، لن يتعامل Text مع تجاوز overflow بعد ذلك، وسيبلغ حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)

  • تتم إعادة تسمية مَعلمة النطاق AnnotatedString.Builder.addStringAnnotation إلى علامة من أجل اتساق واجهة برمجة التطبيقات. (I7c8cb)

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

  • يتم تحسين أداء التمرير في LazyColumn/Row من خلال القيام بجهد أقل في الإنشاء الفرعي في كل تمرير. تمت إضافة طريقة hasInvalidations() لفئة التركيب. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • تم تحديث الحجم.معلمات غير محددة لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تحديث عمليات تنفيذ الطلاء للتحقق من المقاس.غير محدد كذلك للأحجام غير المحدودة. (I95a7e)
  • يحدد ترتيب استدعاءاتplace() في التخطيطات المخصصة الآن ترتيب الرسم للأطفال (Ibc9f6)
  • إتاحة تحويل AnnotatedString إلى SpannableString لتسهيل الاستخدام. (Ief907)
  • تمت إضافة عناصر كعب رئيسية لفئات Android الموجودة على أنظمة أساسية قديمة لتجنب استخدام الانعكاس متى أمكن. (Ia1790)
  • خطأ تم إصلاحه: إذا تسببت لوحة المفاتيح الخاصة بالبرنامج في ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)

الإصدار 1.0.0-alpha04

1 تشرين الأول (أكتوبر) 2020

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

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

  • تمت إضافة OwnerScope للسماح بجمع نطاقات التخطيط ورسم الملاحظة بمجرد أن تصبح غير صالحة. (Ic4cf8)
  • وتمت إضافة OnRemeasuredModifier وonSizeChanged() لتلقي معاودة اتصال عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
  • إضافة إجراء دلالي للنقر الطويل (I6281b، b/156468846)
  • تم جعل FocusManager خاصًا. (I7872f)
  • تم تحديث طريقة التنفيذ لإنشاء عملية تنفيذ مخصّصة لأداة DrawCacheModifier، بدلاً من إضافة سمات اختيارية في أداة DrawModifier.

    مستندات معدّلة لطرق مختلفة (Ibd166)

  • اجعل TextRange مضمّنًا لتجنب إنشاء كائن. (Id034b)

  • لم يعد من الممكن قراءة positionScope#parentDisplay وplacementScope#parentLayoutDirection من مجموعة مواضع الإعلانات في التنسيق المخصص. (Icc1ae، b/168295623)

  • إضافة Accessibility ScrollState إلى خصائص الدلالات. (Ifeda9)

  • تم تقديم Modifier.drawWithCache لدعم إنشاء كائن رسم يعيد إنشاء التبعيات المشروطة التي تعتمد على معلومات الحجم/الحالة (I376dc)

  • تمت إزالة قيود الفقرة. يتم تمرير العرض مباشرةً إلى الفقرة الآن. (Ica712)

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

  • تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
    • تم تحديث واجهات برمجة التطبيقات للمقياس والتدوير لاستهلاك معلمة الإزاحة واحدة لتمثيل الإحداثي المحوري بدلاً من المعلَمات العائمة المنفصلة للإحداثيات x/y في DrawScope وDrawTransform
    • تمت إزالة طريقتي Rect.expandToFrom وRect.join
    • تم تحديث وثائق نصف القطر بحيث تشير إلى الشكل البيضاوي بالإضافة إلى جهاز الحركة البيضاوية
    • تمت إضافة وثائق للإشارة إلى أن المنشئ العام لفئة نصف القطر المضمَّن لا يتم استدعاءه مباشرةً ولكن يجب إنشاء مثيل لكائنات نصف القطر من خلال الدالة الإنشائية للدوال
    • وتمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن topRight وbottomRight وbottomCenter وما إلى ذلك.
    • تم إيقاف Rect.shift نهائيًا لصالح Rect.translate
    • تمت إزالة واجهات برمجة تطبيقات RoundRect.grow وRect.shrink
    • إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
    • تمت إزالة طريقتي RoundRect.midRect/tallMiddleRect/wideMiddleRect وRect.isStadium.
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
    • تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.min متصفّح
    • تم تغيير RoundRect.center إلى خاصية بدلاً من دالة
    • تم تحديث الدالة الإنشائية RoundRect لاستهلاك خصائص نصف القطر بدلاً من المعلمات الفردية لقيم نصف القطر x/y
    • تمت إزالة واجهات برمجة التطبيقات للحجم التي افترضت أنها كانت مستطيلة بالمصدر 0,0
    • تمت إضافة واجهة برمجة تطبيقات تخريبي إلى نصف القطر.
    • تم نقل دوال إضافات RoundRect المختلفة إلى مواقع بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • تم إيقاف Foundation.Box نهائيًا. يُرجى استخدام Foundation.Layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
  • تمت إعادة تسمية الحزمة إلى Box. سيتم إيقاف الإصدار السابق من Box لصالح Box الجديد في compose.foundation.Formatting. يتمثل سلوك Box الجديد في تكديس العناصر الثانوية واحدة فوق الأخرى إذا كان لديها عدة عناصر فرعية - يختلف هذا عن Box السابق، الذي كان يعمل مشابهًا لعمود. (I94893، b/167680279)
  • تم إيقاف مَعلمات زخرفة المربّع نهائيًا. إذا أردت إضافة زخارف أو مساحة متروكة في المربّع، استخدِم "معدلات تعديل" بدلاً من ذلك (Modifier.background أو Modifier.border أو Modifier.adding) (Ibae92 وb/167680279)
  • تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
    • تم تحديث واجهات برمجة تطبيقات DrawScope بأساليب تحويل النطاق للإشارة إلى أنّه يتم تطبيق التحويل فقط ضمن رد الاتصال وتتم إزالته بعد استدعاء الاستدعاء
    • تم تحديث وثائق cutPath للإشارة إلى "المسار" بدلاً من المستطيل الدائري
    • التباعد الثابت في وثائق المعلمة اليمنى في ClapPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة معلمة الحجم
    • تمت إعادة تسمية معلمات dx/dy في طريقة الإدراج إلى أفقي وعمودي
    • تمت إضافة التحميل الزائد للداخل الذي يوفر نفس قيمة الإدخال لجميع الحدود الأربعة
    • تمت إزالة الوثائق المتعلقة بطريقة الإدراج التي تشير إلى أنه سيتم تطبيقه على جميع الجوانب الأربعة
    • مستندات معدَّلة لفئة Rect
    • تم تحديث التعليقات على معلمات Rect لتتطابق مع نمط kdoc
    • تمت إزالة Rect.join وRect.expandToتضمين
    • تم إنشاء الحمل الزائد لـ Rect.translate(offset) وإيقاف Rect.shift
    • (If086a، b/167737376)
  • Annotated الجذرAnimationClockوصوء الانتقالات وblinkingCursorEnabled وtextInputServicefactory باستخدام @VisualForTesting، وجعلها واجهة برمجة تطبيقات داخلية وإخفاء ملفات kdoc (I554eb، b/168308412)
  • أزِل حاوية Selectioner (حاويات التحديد) من الجزء العلوي لإيقاف الاختيار التلقائي وتجنُّب السلوك غير المتوقَّع. يمكن للمرء أن يستخدم على وجه التحديد SelectContainer لتضمين المحتوى الذي يجب أن يكون قابلاً للاختيار بدلاً من ذلك. (I8dfe0، b/158459594)

الإصدار 1.0.0-alpha03

16 أيلول (سبتمبر) 2020

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

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

  • إزالة إجراءات دلالات التمرير للأمام/للخلف. تمت إضافة خطوات في AccessibilityRangeInfo. (Ia47b0)
  • تمت إزالة onInvalidate() من Owner -- صلاحية OwnedLayer الاسم المعرِّف. (Ica72b، b/162061312)
  • تمت إزالة طرق المشغل في واجهة برمجة تطبيقات الحجم التي تستهلك معلمات الإزاحة. نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقع لها. على سبيل المثال، هل يجب أن يكون الحجم - الإزاحة تُرجع إزاحة أو نتيجة حجم بالفرق؟

    تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة المقاس. (Iec902، b/166514214)

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

  • إصلاح عناصر LazyColumn التي يتم رسمها بشكل غير صحيح في بعض الأحيان، كان هذا أيضًا يتسبب في أعطال في بعض الحالات. (Ibcf17 وb/163066980 وb/165921895)
  • تم نهائيًا إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها. (I90cdb، b/167389835)
  • تم نقل createAndroidComposeRule وAndroidInputDispatcher من androidx.ui.test.android إلى androidx.ui.test (Idef08، b/164060572)
  • وتمت إعادة تسمية استخدامات الجاذبية باستمرار للمحاذاة أو المحاذاة في واجهات برمجة تطبيقات التخطيط. (I2421a، b/164077038)
  • ستتم إضافة onNode والطرق العامة الأخرى إلى ComposeTestRule، حيث سيتم إيقاف الأساليب العامة الحالية. (Ieae36)

الإصدار 1.0.0-alpha02

2 أيلول (سبتمبر) 2020

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

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

  • إزالة معاودة الاتصال لإبلاغ المالك عند تغيير حدود عقدة التصميم. (If654e، b/166106882)
  • تمت إضافة دعم لمعلمات نوع التعبئة على مسارات الرسومات المتجهة لدعم قطع الأشكال وفقًا لقواعد تعبئة المسار الزوجي أو غير الصفري. (I43dd2)
  • أصبح وقت التشغيل والسرعة فئات مضمّنة الآن (I48f4a).
  • أصبحت المدة الآن صفًا مضمّنًا (I565eb).
  • إضافة معاودة اتصال لإعلام المالك عند تغيير حدود عقدة التنسيق. (Ic40b3)
  • تم إصلاح مشكلة كانت فيها الدالة الإنشائية لدالة المستطيل التي تعتمد على الإزاحة ونصف القطر قد تُنشئ المستطيل بترتيب اليسار، اليمين، الأعلى، السفلي بدلاً من اليسار، الأعلى، الأيمن، السفلي.

    تمت إزالة الطرق المصاحبة المتوقفة نهائيًا في Rect لصالح دوال إنشاء الدوال.

    إضافة اختبارات للتحقّق من الطرق في Rect.kt (I08460، b/165822356)

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

  • تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
  • تم استبدال المصفوفة 4 بالمصفوفة. تمت إزالة جميع الأجزاء الأخرى من حزمة المتجه. (Ibd665، b/160140398)
  • لقد تغير اصطلاح الاستدعاء للدوال المكونة. هذا تغيير عطل ثنائي. يجب إعادة تجميع كل المكتبات للعمل مع هذا الإصدار من المكوِّن الإضافي لإنشاء المحول البرمجي.

    لا يؤدي هذا التغيير إلى حدوث تغيير في عطل على مستوى المصدر لأن واجهات برمجة التطبيقات التي تم تغييرها هي فقط واجهات برمجة تطبيقات المحول البرمجي التي تحتوي على موافقة صريحة. (I7afd2، b/158123185)

  • تم إصلاح العطل الذي قد يحدث عندما يؤدي الإرسال إلى PointerInputFilter إلى إزالة PointerInputFilter بشكل متزامن. (I58f25)

الإصدار 1.0.0-alpha01

26 آب (أغسطس) 2020

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

الإصدار 0.1.0-dev

الإصدار 0.1.0-dev17

19 آب (أغسطس) 2020

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

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

  • تم إيقاف emitView نهائيًا. استخدِم AndroidView بدلاً من ذلك إن أمكن لإصدار طرق العرض داخل ميزة "إنشاء". تجدر الإشارة إلى أنّ إنشاء طرق عرض ومجموعات عرض بشكل مباشر لن يكون متاحًا في المستقبل ما لم يتم تركها في شجرة المقطوعات الموسيقية، في حال كان ذلك ممكنًا باستخدام AndroidView. (I29b1e، b/163871221)
  • تم إيقاف FocusState2 نهائيًا واستبداله بـ FocusState (Ia8b79 وb/160822876 وb/160923332).
  • تمت إزالة أعباء AndroidView المتوقفة نهائيًا. (I946b9، b/163802393)
  • يمكن أن تشير الانبعاثات المخصّصة الآن إلى أنّه يمكن تخطّي عنصر واحد أو أكثر من أدوات الضبط الخاصة بها وإعادة تركيبها بشكل مستقل عن الانبعاث. (Ibbd13)
  • تم تغيير فئات المتجه إلى لم تعد فئات بيانات حيث يتم استخدام نفس مثيل الكائن للتكوين.

    تمت إضافة علامة 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 لامدا إلى SemanticsPropertyKey. ويمكن استخدام هذا لتحديد سياسة مخصّصة لدمج دلالات الدمج AllDescendants. والسياسة التلقائية هي استخدام القيمة الرئيسية إذا كانت موجودة من قبل، وإلا تكون القيمة الفرعية. (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 باستخدام مستطيل وإضافة إيقاف/استبدال مناسب بالتعليقات التوضيحية للمساعدة في عملية الانتقال. (I37038، b/162627058)

  • تمت إزالة KeyEvent2 المتوقفة نهائيًا. يمكنك استخدام KeyEvent كبديل. (Ied2d0، b/162097587)

  • يحتوي حدث KeyEvent على خاصية يونيكود يمكن استخدامها للحصول على حرف يونيكود الذي يتم إنشاؤه من خلال مجموعة المفتاح المحددة وحالة المفتاح الوصفي (If3afc)

  • جعل الحدث المخصّص DelayUp والفئات ذات الصلة موافقة على واجهة برمجة التطبيقات لأنه من المرجَّح أن يتم تغييره. (I56d6f)

  • تمت إزالة 2 PointerEventPasss اللذين لم يعودا بحاجة إليهما. (I3dd9d)

  • إضافة لون المعلمة والظل وTextDecoration إلى Paragraph.paint، وهذه الدالة مفيدة لتجنب إعادة إنشاء فقرة بشكل غير ضروري. (I81689)

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

  • تمت إزالة onFocusChanged لمعاودة الاتصال من TextField. استخدِم Modifier.focusMonitorer بدلاً من ذلك. (I51089، b/161297615)
  • تم إيقاف Modifier.drawBorder نهائيًا. يمكنك استخدام Modifier.الحد بدلاً من ذلك. تم استبدال فئة البيانات الحدودية بـ BorderStroke (I4257d, b/158160576).
  • تمت إزالة طلبات FrameManager المتوقفة نهائيًا.

    تم تغيير واجهات برمجة التطبيقات الداخلية للإنشاء لتقليل مقدار النفقات العامة لتتبُّع كائنات الحالة مثل mutableStateof() (I80ba6)

  • تمت إزالة كل من شريط التمرير العمودي وشريط التمرير الأفقي. وبدلاً من ذلك، يمكنك استخدام ScrollableColumn/Row. تمت إزالة Modifier.drawBack. استخدِم Modifier.background (I73b0d، b/163019183)

  • يحدث التعطُّل عند إصلاح عنصر يحفظ الحالة داخل حلقة التكرار for. يُسمح الآن باستخدام المفتاح نفسه فيsaveInstanceState()، ويتم الآن ضبط واجهة برمجة تطبيقات 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)
  • تمت إضافة واجهة برمجة التطبيقات AndroidViewSlideing API لتضخيم موارد التنسيق وإنشائها، استنادًا إلى ViewVersioning. (I081c6)
  • يتم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
  • تمت إضافة توافق مع مفتاح الجهاز البديل (I9036b).
  • تم إيقاف FocusManager. استخدِم Modifier.focusRequester() وModifier.focusMonitorer() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
  • يتوافق uploadVectorResource مع سمات trimPath (I808fe)
  • نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
  • تمت إزالة 2 PointerEventPasss اللذين لم يعودا بحاجة إليهما. (I33ca7)
  • تم تنفيذ PointerInteropModifier التي توفر القدرة على استقبال MotionEvents والتفاعل مع Compose كما لو كنت تنفذ إحدى طرق عرض Android. (Ieb08c)
  • تمت إزالة أداة تعديل العلامة التي تم إيقافها نهائيًا. يُرجى استخدام رقم تعريف التنسيق بدلاً من ذلك. (Idaa05، b/162023919)
  • تم تحديث واجهات برمجة التطبيقات للدعم من اليمين إلى اليسار. تمت إضافة ميزة LayoutDirection الإضافية التي يمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)
  • قطع مسار الدعم في الرسومات الموجّهة (Ie16c9، b/158188351)
  • تمت إضافة Modifier.Layout() الذي يسمح بإنشاء معدِّل تنسيق مخصّص بشكل ملائم (I73b69، b/161355194)
  • تمت إضافة واجهة برمجة تطبيقات AndroidView جديدة وإيقاف واجهات برمجة التطبيقات الحالية نهائيًا. (I5bcfd)
  • تم إيقاف Modifier.plus نهائيًا، لذا استخدِم Modifier.ثم بدلاً من ذلك. تقدّم علامة "بعد ذلك" إشارة أقوى للطلب، بينما تحظر أيضًا كتابة Modifier.padding().background() + anotherModifier، ما يعطّل السلسلة ويصعب قراءتها (Iedd58، b/161529964)
  • إضافة الفئات الفرعية لعرض ComposeView لاستضافة محتوى Compose في التدرج الهرمي للعرض (I46357)
  • أصبحت الترميزات Row وColumn الآن دالّة مضمّنة تقلّل بشكل كبير من عبء استخدامهما. (I75c10)
  • تمت إضافة SubcomposeLayout. إنها مجموعة أولية منخفضة المستوى تسمح بتكوين العناصر الثانوية أثناء القياس إذا أردنا استخدام بعض القيم المتاحة فقط في وقت لاحق أثناء قياس تركيبة الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
  • تمت إضافة SemanticsNode.positionInRoot للحصول على موضعSemanticsNode مقارنةً بجذر التسلسل الهرمي Compose (Icdf26, b/161336532)
  • كانت ميزة MotionEvents من Android إلى Compose، ثم إلى Android مرة أخرى. (I14be8، b/158034713)
  • تمت إزالة القائمة المنسدلة. (I00430)
  • موضع النافذة المنبثقة ثابت على الشاشات المقصوصة. (Idd7dd)
  • إضافة إجراء إمكانية الوصول للحصول على TextLayoutResult (I9d6e6)
  • تمت إضافة معدِّل إعادة القياس، وهو يسمح بإعادة قياس التصميم بشكل متزامن. بشكل عام، لا تحتاج إليها أبدًا حيث تحدث إعادة القياس/إعادة التخطيط تلقائيًا، ولكننا نستخدمها داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)
  • أزِل getLineEllipsisOffset/getLineEllipsisCount. استخدم getLineVisualEnd/getLineEnd/isLineEllipized بدلاً من ذلك. (I85aa2)
  • أضِف بعض "العلامات/التعليقات التوضيحية" لمعرفة أفضل الممارسات. (I66b20)
  • عرض المزيد من واجهات برمجة التطبيقات للسطور في TextLayoutResult. (I79bd2)
  • يمكن الآن استخدام محوّلات المتجهات المضمّنة لتحويل الوحدات المدمجة من خلال Foo.Vectorconversioner. على سبيل المثال: Dp.Vectorconversioner وColor.VectorAdapter وFloat.Vectorconversioner وما إلى ذلك (I3e273)

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

  • معالجة الإصلاحات العامة لواجهة برمجة التطبيقات (I077bc)
    1. إزالة واجهة OffsetBase غير المستخدمة
    2. فئات "محاذاة الإزاحة" و"IntOffset" للحصول على واجهة برمجة تطبيقات متناسقة
    3. أعد تسمية IntOffset.Origin إلى IntOffset.Zero لتكون متوافقة مع Offset API
    4. تم نقل طريقة NativeCanvas خارج واجهة Canvas لمساعدة المستهلكين في إنشاء مثيلات Canvas الخاصة بهم
    5. تم إنشاء فئة stub BlankCanvas لإعادة ضبط DrawScope ليكون معلَمة غير فارغة بدلاً من lateinit مع ضمان عدم إمكانية القيم الفارغة للحقل
    6. تمت إعادة تسمية تعدادات ClipOp لتصبح حالة Pascal
    7. تمت إعادة تسمية تعدادات FilterValue لتصبح حالة Pascal
    8. تمت إعادة تسمية تعدادات Stroke Join إلى حالة Pascal
    9. تمت إعادة تسمية تعدادات PointMode إلى حالة Pascal
    10. تمت إعادة تسمية تعدادات PaintingStyle لتصبح Pascal Case
    11. تمت إعادة تسمية تعدادات PathFillType إلى حالة Pascal
    12. تمت إعادة تسمية تعدادات StrokeCap لتصبح حالة Pascal
    13. تم تحديث تنفيذ DrawCache بحيث لا يتم استخدام مَعلمات lastinit بعد ذلك
    14. تم تحديث DrawScope بحيث لا يستخدم التفويض الكسول للمعلمات الداخلية fillPaint وCTRLPaint
    15. إمكانية إنشاء صورة معدَّلة لتجنُّب استخدام Box مع تكاليف أقل
    16. تم تعديل صف Outline لتتضمّن التعليقات التوضيحية @Immutable.
    17. تم تحديث PathNode ليتضمن تعليقات توضيحية @Immutable لكل تعليمة مسار
    18. تم تحديث الطفرة الفرعية لـ Vector لإزالة عمليات التحقق الشرطية المتكررة للمساواة حيث يعالجها الإنشاء بالفعل
    19. طرق إنشاء دالة إنشاء مرافقة مستطيلة تم إيقافها لصالح الدوال الإنشائية للدوال
    20. تم تحديث فئات Brush ودوال إنشاء الدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable.
    21. تم تعديل تعداد VertexMode ليصبح PascalCase
    22. تم تحديث طريقة Drawscope selectPaint لاستبدال معلمات الحد الخارجي بشكل مشروط على الطلاء إذا كانت قد غيّرت
    23. تم تحديث الحجم لإضافة واجهة برمجة تطبيقات تدمير، ثم إعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدمة
  • تم تعديل استهلاك واجهة برمجة التطبيقات BlendMode للربط بشكل صحيح بين وضعَي BlendModes في إطار عمل Android وPorterDuff بناءً على مستوى واجهة برمجة التطبيقات. تم تقديم واجهة برمجة تطبيقات BlendMode#isSupported لتعمل كاستعلام إمكانية لتحديد ما إذا كان 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.drawBack إلى 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.focusMonitorer" تم إيقاف FocusState وFocusAdvancedState لصالح FocusState2 (I46919، b/160822875، b/160922136)
  • تمت إضافة معدِّل لملاحظة التغيُّر في حالة التركيز. (I05866، b/160924455، b/160923326)
  • تمت إضافة أداة تعديل لطلب إجراء تغييرات التركيز (I8dd73 وb/161182057 وb/160924778)
  • يمكنك تعديل قائمة شريط الأدوات لإظهار النسخ والقص واللصق بشكل صحيح. (Id3955)
  • تستخدم الآن خصائص الدلالة ذات القيمة الفردية نمط استدعاء. على سبيل المثال، تمت كتابة 'semantics { مخفية = true }' الآن على النحو التالي: semantics { hidden() }. (Ic1afd، b/145951226، b/145955412)
  • تمت إضافة عنصر Modifier.focus الذي سيحلّ محلّ FocusModifier. (Ib852a، b/160924778)
  • إضافة شريط أدوات عائم لتحديد حقل النص (Ie8b07)
  • تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لواجهة برمجة التطبيقات ذات الصلة بإدخال المفاتيح (I53c0a).
  • تمت إضافة تعليق توضيحي لواجهة برمجة التطبيقات التجريبية لجميع واجهات برمجة التطبيقات ذات الصلة بالتركيز (I53b24، b/160903352).
  • تمت إضافة FocusState2 الذي سيحل محل FocusFeatureState (I0a3ba, b/160822595)
  • تمت إضافة ميزة تجريبية Focus وهي عبارة عن تعليق توضيحي @OptIn لواجهة برمجة التطبيقات Focus API (I1544b، b/160820961)
  • تمت إضافة فئة وحدة IntBounds، التي تمثل حدود وحدات بكسل صحيحة من التنسيق. تم تعديل واجهة برمجة التطبيقات لـ PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
  • يتطلب Applier الآن طريقة clear() للتخلص من التراكيب (Ibe697)
  • تم إيقاف KeyEvent نهائيًا واستبداله بـ KeyEvent2 (I68730).
  • تمت إضافة علامة اختيارية جديدة تستخدم UnmergedTree لاختبار الباحثين. (I2ce48)
  • واجهة برمجة تطبيقات Made LayoutNode التجريبية (I4f2e9)
  • تمت إضافة طرق نسخ إلى أنواع مختلفة من الفئات المضمنة بما في ذلك:

    • فرق التوقيت
    • حجم الملف
    • النطاق
    • الحركة
    • TransformOrigin

    • طريقة إيقاف الكائن المصاحب Size.copy المعتمَدة لطريقة النسخ من المثيل (Ife290، b/159905651)

  • تكتسب النوافذ المنبثقة ومربّعات الحوار والقوائم الآن مظهر MaterialTheme السياقي (Ia3665، b/156527485).

  • تمت إعادة تسمية TextDirection إلى resolvedTextDirection (I3ff38).

  • تمت إزالة مَعلمة اتجاه التصميم من كتلة القياس للدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل معاودة الاتصال من خلال كائن نطاق القياس (Ic7d9d).

  • إعادة ضبط الأسماء المعرِّفة لإعادة الاستخدام (I420e0)

  • تمت إزالة قابلية النقر. استخدام Modifier.clickable (I84bdf)

  • تم حذف TestTag ودلالة البيانات. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).

  • قبل إجراء هذا التغيير، كان المكوّن الإضافي لإنشاء المحول البرمجي يعترض بشكل غير ثلاثي عمليات استدعاء الدالة الإنشائية داخل دالة @Composable في حال وجود خطأ (I5205a، b/158123804)

  • تمت إعادة تسمية Modifier.tag إلى Modifier.lookupId، وذلك لتجنّب حدوث أي التباس مع Modifier.testTag. (I995f0)

  • مواضع خط المحاذاة Int التي تم إرجاعها من Placeable#get(AlignmentLine) أصبحت الآن غير فارغة. إذا كان خط المحاذاة الذي تم الاستعلام عنه مفقودًا، سيتم عرض ProtectedLine.غير محدد (I896c5، b/158134875)

  • تمت إضافة مَعلمة تعديل في العنصر AndroidView الذي تم إنشاؤه. (I48a88، b/158746303)

  • تم إيقاف Semantics() نهائيًا. يمكنك استخدام Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)

  • أضف viewModel() الذي تم إنشاؤه والذي يسمح بإنشاء أو إنشاء ViewModel سابقًا بشكل مشابه لكيفية عمله في النشاط أو الجزء (I5fdd1)

  • تم استبدال استخدام IntPx بـ IntPxPosition بدلاً من IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)

  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات المقاسات، عليك توحيد استخدام فئة المقاس بدلاً من PxSize. يوفر هذا مزايا الفئة المضمنة للاستفادة من القيمة الطويلة للحزمة والقيمتين العائمتين لتمثيل العرض والارتفاع ممثلين كعدد عشري. (Ic0191)

  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد الموضع، عليك توحيد استخدام فئة Offset بدلاً من PxPosition. يوفر هذا فوائد فئة مضمّنة للاستفادة من قيمة طويلة للحزمة عائمة 2 لتمثيل إزاحة س وص ممثلة كأعداد عشرية. (I3ad98)

  • تم استبدال استخدام فئة Px في فئات إنشاء مختلفة كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأولية لمعاملات البكسل. تم حذف فئة Px بالكامل (I3ff33).

  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I086f4)

  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (Id3434)

  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I97a5a)

  • تم إيقاف TestTag نهائيًا الآن. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)

  • تمت إزالة التنفيذ التلقائي لـ ParentDataModifier#modifyParentData، وهو الأمر الذي كان معادلاً لعدم تنفيذ الواجهة في المقام الأول. (I0deaa)

  • تم إيقاف ScaleFit نهائيًا سابقًا على أنها تمت إزالتها. استخدِم ContentScale بدلاً من ذلك. (Ifbc5b)

  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I19d02)

  • تمت إضافة مكون DropdownList في واجهة المستخدم (ui-material)، وهو تنفيذ قائمة في Material Design. (I9bb3d)

  • تمّت إزالة ميزة LayoutTag() المتوقفة نهائيًا. يُرجى استخدام Modifier.tag() بدلاً من ذلك. تمّت إزالة Modifier.matchParent() المتوقفة نهائيًا، يُرجى استخدام Modifier.matchParentSize() بدلاً من ذلك. (If8044)

  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I57bff)

  • تم إيقاف Modifier.semantics نهائيًا للسماح باستخدام المكوّنات العالية المستوى. (I4cfdc)

  • عمليات تنفيذ CanvasScope موحّدة، لذلك أصبح هناك الآن فقط DrawScope وContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة Density وتوفير فئة LayoutDD Deleted DrawScope في ContentDrawScope تم تعديل Painterainter وPainterModifier لعدم صيانته بعد ذلك بخاصية من اليمين إلى اليسار (RTL) لأنّ DrawScope يوفّر ذلك بدون تقديمه يدويًا (I1798e)

  • الآن يميز أداة DoubleTapActivityFilter الضوء على معلمة IndividualTapAnimationFilter. (If92b1)

  • تم تعديل واجهة برمجة تطبيقات المحاذاة وإضافة دعم للمحاذاة المطلقة (التي لا تتم المزامنة التلقائية في سياق Rtl) (I38cd3)

  • تم تغيير واجهة برمجة التطبيقات لمُعدِّلات DrawLayer: تمت إعادة تسمية outlineShape إلى شكل الشكل وأصبح له القيمة التلقائية RectangleShape وهي الآن غير قابلة للقيم الفارغة، وتمت إعادة تسمية KapToOutline إلى مقطع، وتمت إزالةClipToBounds بسبب تشابهه مع المقطع == true مع RectangleShape (I7ef11، b/155075735).

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

  • تم تغيير واجهة برمجة التطبيقات اللاحقة lambda API لـ WithConstraints. بدلاً من معلَمتين، تتضمن الآن نطاق مستلم، بالإضافة إلى القيود وLayoutDirection، توفر خصائص min width وmax width وminHeight وmaxHeight في Dp (I91b9a وb/149979702).

  • تم تغيير اسم LayoutModifier2 ليصبح LayoutModifier. (Id29f3)

  • تمت إزالة واجهة LayoutModifier المتوقفة. (I2a9d6)

  • تتضمّن دوال القياسات الأساسية في "التنسيق" و"LayoutModifier2" جهاز استقبال IntrinsicmeasureScope حاليًا الذي يوفّر واجهة برمجة تطبيقات طلبات البحث الأساسية مع اتجاه التصميم المنتشر بشكل ضمني. (Id9945)

  • يمكن قياس العناصر الثانوية للتصميم وLayoutModifier باستخدام اتجاه تصميم مختلف. (Ibd731)

  • تمت إضافة ميزة Modifier.zIndex() الجديدة للتحكم في ترتيب الرسم للعناصر الثانوية داخل نفس التنسيق الرئيسي. وتمت إعادة تسمية خاصية الارتفاع في DrawLayerModifier إلى shadowElevation ولم تعُد تلك الخاصية تتحكّم في ترتيب الرسم. تم تغيير ترتيب المعلمات لـ DrawShadow: الارتفاع هو الآن الأول والشكل هو الشكل الثاني مع ضبط بشكل تلقائي على شكل RectangleShape. (I20150، b/152417501)

  • تمت إزالة onSizeChange وonPositionChange في المالك. (I5c718)

  • تمت إضافة Constraints2، وهي نسخة من القيود التي لا تتوافق إلا مع قيم Int connstraints بدلاً من IntPx. ستتم إزالة IntPx وسيتم افتراض أن جميع قيود الأعداد الصحيحة هي وحدات بكسل مثل Android.

    • تمت إضافة IntSize أيضًا، والتي ستحل في النهاية محل IntPxSize. (I4b43a)
  • تم جعل المحاذاة قابلة لإنشاء مثيل باستخدام قيم عشوائية. تمت إضافة محاذاةات الأبعاد الأحادية. (Ia0c05)

  • تقبل dateToSiblings الآن العنصر "القياس" بدلاً من "Placeable". (I5788d)

  • (I45f09، b/152842521)

    • تمت إعادة تسمية ScaleFit إلى ContentScale
    • تم نقل ContentScale من رسومات واجهة المستخدم إلى وحدة أساسية واجهة المستخدم للتواجد في الوحدة نفسها مثل واجهة برمجة التطبيقات المحاذاة.
    • تمت إعادة تسمية ميزة "FillMaxDimension" (الاقتصاص) إلى "الاقتصاص".
    • تمت إعادة تسمية ميزة "FillMindimension" إلى Fit
    • تم تغيير اسم Fit إلى Inside لتحقيق مطابقة أفضل
    • مكافئات ImageView.ScaleType
    • تمت إضافة المستندات التي تشير إلى أن الجمع بين الاقتصاص والمحاذاة يؤدي إلى تحقيق نفس النتيجة التي يحققها ImageView.ScaleType.Center_CROP وتطبيق Fit المستخدَم مع SAML.Center، كما يحققان النتيجة نفسها التي يحققها استخدام ImageView.ScaleType.FIT_CENTER يحقق Inside المستخدم مع Listings Center النتيجة نفسها التي يحققها ImageView.ScaleType.CENTER_INSIDE
  • دعم Rtl لمعدلات الرسم. (I0aaf9)

  • تم إصدار واجهة برمجة تطبيقات لزيادة عدد مشاهدات Android من ملف XML. يُرجى الاطّلاع على العرض التوضيحي لـ ViewInCompose للحصول على مزيد من التفاصيل. (I42916)

  • تحسين واجهة برمجة تطبيقات DrawModifier:

    • تم إنشاء نطاق المتلقي لـ draw() ContentDrawScope
    • تمت إزالة جميع المعلمات في draw()
    • لدى DrawScope واجهة مماثلة لواجهة تطبيق CanvasScope
    • يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
  • تمت إضافة positionInParent وboundsInParent لـ LayoutCoordinates. (Icacdd، b/152735784)

  • DrawLayerModifier و drawLayer() بشكل افتراضي trimToBounds وClipToOutline على false. (I0eb8b، b/152810850)

  • تمت إعادة تسمية LayoutResult إلى MeasurementResult. (Id8c68)

  • تمت إضافة LayoutModifier2، وهي واجهة برمجة تطبيقات جديدة لتحديد معدِّلات التنسيق، وتم إيقاف LayoutModifier (If32ac) نهائيًا

  • تم استبدال المشغّل بالإضافة إلى عامل التشغيل بوظائف الإضافة على الإعدادات الأصلية (I225e4).

  • تمت إضافة خصائص TranslateX/Y لدعم إزاحة قائمة عرض أوامر الرسم لطبقة معينة. وهذا مفيد لنقل المحتوى استجابة لالرسوم المتحركة أو أحداث اللمس. (I8641c)

  • تمت إضافة معلمات pivotX وpivotY إلى واجهات برمجة التطبيقات للطبقة لدعم التدوير والتحجيم حول نقطة معينة على طبقة ما (Icf7c3)

  • أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين OnPositioned وOnChildPositioned المكونتَين. (I2ec8f)

  • تمت إضافة LayerModifier، وهو مفتاح تعديل يسمح بإضافة RenderNode للتنسيق. تسمح هذه الميزة بالقطع والتعتيم والدوران والتحجيم والظلال. سيحل هذا محل RepaintBoundary. (I7100d، b/150774014)

  • تم جعل اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العناصر الثانوية. تمت إضافة معدِّل اتجاه التنسيق. (I3d955)

  • يتوافق مكوِّن التكدس مع الاتجاه من اليمين إلى اليسار (Ic9e00)

  • الدعم الأولي لـ Rtl في تنسيق Compose (Ia5519)

  • تم دمج الكثافة ونطاق الكثافة في واجهة واحدة. ويمكنك الآن استخدام DensitySPACE.current بدلاً من إلغاء appdensity() . بدلاً من withDensity(density) (الكثافة) فقط مع(density) (I11cb1)

  • تم تغيير LayoutCoordinates لجعل availableAlignmentLines مجموعة بدلاً من خريطة وجعل LayoutCoordinates يقوم بتنفيذ عامل التشغيل get() بدلاً من استرداد القيمة. يسهّل ذلك على المعدِّلات تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)

  • لم تعد ميزة LayoutCoordinates سمة موضع. لا معنى لخاصية الموضع عند التفكير في LayoutModifiers أو التدوير أو الضبط. بدلاً من ذلك، يجب على المطورين استخدامparentCoordinates وchildToLocal() لحساب التحويل من أحد LayoutCoordinate إلى آخر.

    تستخدم LayoutCoordinates IntPxSize لخاصية الحجم بدلاً من PxSize. تستخدم التخطيطات أحجام البكسل الصحيحة للتخطيطات، لذلك يجب أن تستخدم جميع أحجام التخطيط أعدادًا صحيحة وليس قيم النقطة العائمة. (I9367b)

  • تحسينات على واجهة برمجة التطبيقات للقيود (I0fd15)

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

    • تمت إضافة CanvasScopeعيّن وتم تحديث التطبيق التجريبي لتضمين عرض توضيحي للرسومات (Ifd86d)
  • تمت إزالة واجهة برمجة تطبيقات MaskFilter API غير المستخدمة لأنها ذات استخدام محدود وليست محسّنة لتسريع الأجهزة في معظم حالات الاستخدام (I54f76).

  • تم نقل شكل الشكل المستطيل من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)

  • تم استبدال جميع استخدامات الألوان القابلة للقيم الفارغة في واجهة برمجة التطبيقات باستخدام قيمة غير قابلة للقيم الفارغة واستخدام 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 لاستبدال واجهة برمجة التطبيقات للتركيب الفرعي الحالية للرسومات المتجهة. نتيجة الإنشاء الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف مواد DrawVector السابقة لصالح VectorPainter.

    تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) إلى PaintBox(Painter) إنشاء عنصر Vector القابل للإنشاء الذي يعمل كعنصر قابل للإنشاء باستثناء عنصر VectorAsset بدلاً من ImageAsset (I9af9a، b/149030271)

  • تمت إعادة تسمية الصورة إلى ImageAsset للتمييز بشكل أفضل بين بيانات Image وصورة الصورة القادمة التي يمكن إنشاؤها للمشاركة في التخطيط والرسم. _Body:تم إنشاء طريقة إضافة على android.graphics.Bitmap، "Bitmap.asImageAsset() ، لإنشاء مثيل لـImageAsset مفيد للجمع بين تطوير تطبيق Android التقليدي وإطار عمل الإنشاء (Id5bbd)

  • تمت إضافة TextDirection.Content (I48f36).

  • تمت إضافة عامل تشغيل TextDecoration.plus (I0ad1a).

  • تمت إزالة Force من قيم تعداد TextDirectionAlgorithm (Icc944).

  • تمت إعادة تسمية خوارزمية TextDirectionAlgorithm لتصبح TextDirection (I75ce8).

  • تنفيذ LongPressAndDrag لتحديد حقل النص. (I17919)

  • تمت إضافة التعليقات التوضيحية AnnotatedString.getString التي تعرض جميع التعليقات التوضيحية ضمن النطاق. (I1fa00)

  • تغيير اسم الحزمة للّغة المحلية وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)

  • مؤشر حقل النص يحتوي على صورة متحركة وامضة (Id10a7)

  • تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) لتصبح annotatedString(builder: Builder). (Ia6377)

  • تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)

  • أعد تسمية AnnotatedString.Builder.addAnnotationString إلى addStringAnnotation. (I5059e)

  • من الممكن الآن إخفاء/إظهار لوحة المفاتيح البرمجية باستخدام SoftwareKeyboardController الذي يتم إرساله من خلال onTextInputStarted callback (I8dc44, b/151860051)

  • تمت إضافة عامل الجمع لـ (Text/Paragraph/Span)Style الذي يفوض دالة integration(). (Ia1add)

  • لم يعُد FontWeight.lerp ظاهرًا. لا تزال فئة بيانات. (I521c2)

  • أصبحت دالة إنشاء FontWeight عامة الآن، ولم تعد فئة بيانات بعد الآن. (Id6b1f)

  • إضافة getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801)

  • تمت إعادة تسمية وحدة ui-text لتصبح ui-text-core (I57dec).

  • تمت إزالة فئة المقاس غير المستخدمة بسبب وجود فئة حجم مكررة في وحدة هندسة واجهة المستخدم قيد الاستخدام. (I1b602)

  • تمت إضافة AdapterList، وهو مكون قائمة تمرير يتكون فقط من العناصر المرئية ويخطط لها. تتضمن المشكلات المعروفة حاليًا أنه يتم إعداده بالوضع العمودي فقط ولا يعالج بشكل كامل جميع حالات التغييرات التي تطرأ على عناصره الثانوية. (Ib351b)

  • إضافة فراغات ومَعلمة حدود وشكل وخلفية إلى Box (I05027، b/148147281)

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

  • معاودة الاتصال onFocusChange في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
  • تم إيقاف هذين التطبيقين. ويمكنك استخدام ScrollableColumn و ScrollableRow للحصول على تجربة استخدام مضمّنة مع سلوك العمود/الصف ومعلَماته، أو Modifier.vertical Scroll وModifier.horizontal Scroll على عنصرك. وبالمثل، تم إيقاف 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).
  • نفِّذ مقابض تحديد السحب لتغيير اختيار حقل النص. (I27032)
  • تمت إزالة فئة Shader المضمنة التي تضم فئة NativeShader، من المتوقع أن تكون الفئة قد تمت إعادة تسمية NativeShader ليصبح Shader. لم تضيف فئة Shader المضمَّنة، أي شيء ذي قيمة إلى سطح واجهة برمجة التطبيقات، وكانت فئة مضمَّنة، لذا استخدم فئة NativeShader مباشرةً. (I25e4d)
  • PainterModifier المُعاد هيكلته بحيث لا يوفر إمكانية التوسع استنادًا إلى القيود المحددة ومعلمة ContentScale. تتمثل عمليات تنفيذ Painter في توسيع نطاق محتوى الرسم بذاته بناءً على الحجم المحدد لـ DrawScope الذي يرسمون فيه.

    تم إصلاح المشكلة المتمثلة في تغيير حجم الصورة النقطية لذاكرة التخزين المؤقت في 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).

  • تم إصلاح المشكلة التي يتسبب فيها إرسال إدخال المؤشر في حدوث عطل في حالة إزالة PointerInputFilters من خلال الإنشاء الفرعي أثناء الفصل. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)

  • تم إصلاح المشكلة التي يتسبب فيها إرسال إدخال المؤشر في حدوث عطل إذا تمت إزالة PointerInputFilters عبر التكوين الفرعي أثناء الفصل. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)

  • فئة نصف القطر المعاد تصميمها لتكون فئة مضمنة. تمت إزالة طرق الإنشاء المصاحب لصالح الدالة الإنشائية للدالة ذات المعلمة الافتراضية للحصول على نصف القطر على المحور ص الذي يتطابق مع معلمة نصف القطر الإلزامية للمحور x.

    تم تحديث DrawScope.drawRoundRect لاستهلاك معلَمة Radius واحدة بدلاً من قيمتين عائمتين منفصلتين لنصف القطر على طول المحورين "x" و"y" (I46d1b)

  • لم يعد العنصر القابل لإعادة الإنشاء فكرة عملية تجريدية مفيدة. من المفترض أن تتم معظم عمليات إعادة التركيبة كنتيجة لعمليات تخصيص حالة MutableState. بالنسبة إلى أي شيء بخلاف ذلك، ننصحك باستخدام الدالة invalidate لبدء إعادة تركيب النطاق الحالي. (Ifc992)

  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (Iede0b)

  • تغيّر استراتيجية إنشاء الرموز في المحول البرمجي لـ Compose. قبل التغيير، كان المحول البرمجي لإنشاء الإنشاء يحوّل الاستدعاءات إلى دوال قابلة للإنشاء. باستخدام هذا التغيير، نحوّل الآن هيكل الدالة المركبة ونترك موقع الاستدعاء بدون تغيير (في الغالب).

    وهذا يعني أن معظم المنطق الذي يتصل بوقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.

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

    لدعم هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للتعديل. يتم تحويل دالة قابلة للتعديل تقبل معلَمة واحدة إلى دالة تقبل 3 معلَمات، والمعلَمات الإضافية هي Composer، وهو عدد صحيح لـ "المفتاح"، وهو عدد صحيح لقناع بت يستخدم لنشر البيانات الوصفية من خلال الاستدعاءات.

    يحوِّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة قابلة للتعديل. وهو يفعل ذلك بدون تقديم حمل زائد تلقائي اصطناعي للدالة نفسها، وبالتالي سينتج عن هذا التغيير تحديد عدد أقل من الدوال.

    حدوث التغييرات السلوكية المتعمّدة المعروفة الناتجة عن ما يلي:

    1. سيتم تخطي بعض المكالمات من حيث لم يكن يتم إجراؤها سابقًا
    2. يتم الآن اشتراك التعبيرات القابلة للتعديل في تعبيرات الوسيطات التلقائية ومعالجتها بشكل صحيح.

    تضمن هذا العمل بعض التحسينات: 1. ويتم نشر نتيجة مقارنات المعلَمات من خلال الرسم البياني للاستدعاءات في دوال أخرى قابلة للتكوين. سيؤدّي ذلك إلى تقليل المقارنات أثناء وقت التشغيل، وتقليل حجم جدول الخانة، وزيادة تخطّي الدوال القابلة للتعديل التي لم يتم تخطّيها في السابق. 2. تجدر الإشارة إلى أنّ المعلَمات التي يتبيّن أنّها "ثابتة" في وقت التجميع لا تتم مقارنتها أو تخزينها في وقت التشغيل. ويؤدي ذلك إلى تقليل عدد المقارنات وتقليل حجم جدول الشرائح. 3. ويتم استخدام بنية تدفق التحكم في نص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول الخانة وتقليل العمل في وقت التشغيل. 4. لا يتم تضمين معلمات الإرسال والاستقبال غير المستخدمة إلى الدوال عند تحديد إمكانية تخطي الدالة إذا لم يتم استخدامها داخل نص الدالة.

    معظم التغييرات التي قد تؤدي إلى أعطال كانت متعلّقة بواجهات برمجة التطبيقات التي يستهدفها المحوِّل البرمجي مباشرةً، ولن يتأثر الاستخدام المعتاد للإنشاء: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمّت إزالة الحمل الزائد لـ key. يُرجى استخدام إصدار vararg من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي المحوري نهائيًا. يمكنك استخدام key كبديل. ‫6. تم تغيير ScopeUpdateScope::updateScope لتوقُّع دالة 3 بدلاً من Function1. 7. تم تحديث RereableFunction وresetableFunctionN لتضمين معلَمات وقت تجميع البيانات الإضافية (I60756، b/143464846)

  • تمت إزالة معدِّلات محاذاة التنسيق المتوقفة نهائيًا. (I10877)

  • تمت إزالة RepaintBoundary لصالح DrawLayerModifier (I00aa4).

  • يتوفّر الآن لكل من الزر وFloatingActionButton والزر "قابل للنقر" مَعلمة enabled منفصلة. تمت إعادة تسمية بعض المعلمات على "الزر" أو إعادة ترتيبها. (I54b5a)

  • تم استبدال ButtonStyle بدوال مميزة وإزالة الحمل الزائد للنص (السلسلة). يمكنك الاطّلاع على النماذج المحدَّثة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)

  • تغييرات قد تؤدي إلى أعطال في واجهة برمجة تطبيقات Accessibilitys يمكنك الاطّلاع على سجلّ ومستندات 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).