إنشاء واجهة المستخدم
يجب استخدام المكونات الأساسية لواجهة مستخدم الإنشاء للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال.
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
26 يونيو 2024 1.6.8 - 1.7.0-beta04 -

البنية

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

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

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

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

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

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

رائع

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ملاحظات

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

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

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

الإصدار 1.7

الإصدار 1.7.0-beta04

26 يونيو 2024

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

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

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

الإصدار 1.7.0-beta03

12 يونيو 2024

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

الإصدار 1.7.0-beta02

29 مايو 2024

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

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

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

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

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

الإصدار 1.7.0-beta01

14 مايو 2024

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

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

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

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

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

الإصدار 1.7.0-alpha08

1 مايو 2024

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha07

17 أبريل 2024

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

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

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

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

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

الإصدار 1.7.0-alpha06

3 أبريل 2024

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

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

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

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

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

الإصدار 1.7.0-alpha05

20 مارس 2024

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

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

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha04

‫6 مارس 2024

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

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

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

الإصدار 1.7.0-alpha03

21 فبراير 2024

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

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

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

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

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

الإصدار 1.7.0-alpha02

7 فبراير 2024

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha01

24 يناير 2024

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

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

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

الإصدار 1.6

الإصدار 1.6.8

12 يونيو 2024

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

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

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

الإصدار 1.6.7

1 مايو 2024

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

الإصدار 1.6.6

17 أبريل 2024

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

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

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

الإصدار 1.6.5

3 أبريل 2024

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

الإصدار 1.6.4

20 مارس 2024

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

الإصدار 1.6.3

‫6 مارس 2024

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

الإصدار 1.6.2

21 فبراير 2024

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

الإصدار 1.6.1

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

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

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

الإصدار 1.6.0

24 يناير 2024

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

الإصدار 1.6.0-rc01

10 يناير 2024

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

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

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

الإصدار 1.6.0-beta03

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

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

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

  • يمكن الآن فصل LayoutCoordinates بدون فصل العقدة. احذر من ذلك في أداة فحص تصميم الإنشاء (If693)

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

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

الإصدار 1.6.0-beta02

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

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

الإصدار 1.6.0-beta01

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

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

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

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

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

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

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

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

  • تحسين أسماء واجهة برمجة تطبيقات العُقد التي يمكن اجتيازها لجعلها أكثر وضوحًا. (Ia4474)

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

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

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

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

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

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

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

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

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

الإصدار 1.6.0-alpha08

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

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

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

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

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

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

الإصدار 1.6.0-alpha07

‫4 أكتوبر 2023

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

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

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

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

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

الإصدار 1.6.0-alpha06

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

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

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

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

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

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

الإصدار 1.6.0-alpha05

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

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

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

  • تفعيل تسجيل المحتوى في AndroidComposeViewAccessibilityDelegateCompat (Ib2969)
  • تم ضبط سرعات التنقُّل في مكونات "عرض" مثل ScrollView وRecyclerView على ViewConfiguration.ScaledMaximumFlingVelocity. تحتوي ميزة "إنشاء" الآن على إصدارها الخاص من maximumFlingVelocity والذي يسري الآن على Draggable. (Ibf974)
  • تضيف عملية نقل أولية لدعم واجهات برمجة تطبيقات السحب والإفلات في النظام الأساسي. (If84ce)
  • إضافة deviceId إلى RotaryScrollEvent (Iba3bf)
  • تم تحديث واجهة برمجة تطبيقات الأجهزة في ui-tooling لتشمل الأجهزة الأحدث (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)
  • تقديم مكتبة معاينة واجهة المستخدم لإدراج الأجهزة الصالحة للارتداء التي يمكن استخدامها في معاينات واجهة المستخدم (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* API بالكامل. (I6c93a، وb/274661182، وb/267235947، وb/277380808)
  • لم يعُد SoftwareKeyboardController وLocalSoftwareKeyboardController في مرحلة تجريبية. أصبحت LocalSoftwareKeyboardController أيضًا الآن CompositionLocal مناسبة. (I4c364)
  • تم إيقاف LookaheadLayout وLookaheadLayoutScope نهائيًا لبعض الإصدارات، وتمت إزالتهما الآن. واجهات برمجة التطبيقات البديلة هي LookaheadScope التي يمكن أن تعمل مع أيّ تنسيق. (I12ac3)
  • تمت إضافة "SemanticsNodeInteraction.requestFocus" كطريقة أكثر ملاءمة وقابلية للاكتشاف لطلب التركيز في الاختبارات. (Ie8722)
  • إضافة واجهات برمجة تطبيقات تجريبية لتسجيل تأكيدات عامة لاستخدامها من خلال إطارات عمل الاختبار في المستقبل (I12d77)

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

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

الإصدار 1.6.0-alpha01

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

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

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

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

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

قيمة includeFontPadding هي خطأ تلقائيًا الآن (21d806) في Compose.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصّصة. (I9790e)
  • تمت إعادة تسمية المعلمات fallback* في الدالة الإنشائية TextMeasurer إلى default*. (I940a5)
  • تمت إعادة تسمية "SemanticsPropertyReceiver.performImeAction" إلى "onImeAction" و"SemanticsActions.PerformImeAction" إلى "OnImeAction". (I8e841)
  • إضافة عجلة لتمييز تمرير الماوس عن السحب في التمرير المتداخل (على وجه التحديد في NestedScrollConnection). (Ie57e4)
  • تمت إضافة واجهة برمجة تطبيقات asComposePaint لاستبدال 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 على عمليات الالتزام هذه.

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

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

الإصدار 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 transform API لتطبيق عمليات تحويل الترجمة/التحجيم/التدوير على عناصر المسار. (I23434، b/233772232)
  • ويُطلق على طريقة ColorProducer اسم produce. (I78bde)
  • إعادة تسمية "toFrameworkColorSpace" إلى "toAndroidColorSpace" (I4f547)
  • إعادة تسمية "ColorLambda" إلى "ColorProducer" (I73b1a)
  • قدِّم واجهات برمجة التطبيقات (API) للتحويل بين أنواع مساحات الألوان في Android وCompose. (Ie7db4، وb/279979665)
  • تمت إضافة مَعلمة لون إلى BasicText للسماح بتحريك النص أو ضبطه بكفاءة. (Iffd88 وb/246961787)
  • تمت إعادة تسمية "TextRange.constrain" إلى "TextRange.coerceIn". (I31be2)
  • تمت إضافة TextStyle.merge(...) المحسّنة مع قائمة المَعلمات الكاملة. (Iad234، b/246961787)
  • تم تثبيت العديد من واجهات برمجة التطبيقات النصية التي تشمل 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)
  • المزيد من الاستثناءات من enum valueOf (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 بدون صندوق للصفحات العائمة والمزدوجة والطويلة والقصيرة والقصيرة باستخدام :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 false. (I98e96، b/277703184)

الإصدار 1.5.0-alpha02

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

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

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

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

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

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

الإصدار 1.5.0-alpha01

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

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

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

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

الإصدار 1.4

الإصدار 1.4.3

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

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

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

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

الإصدار 1.4.2

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

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

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

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

الإصدار 1.4.1

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

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

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

  • يعمل على إصلاح مشكلة في "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/251484، وb/2514184
  • تمت إضافة البيانات في سمة دلالية واحدة (IsContainer) على مساحات العرض. سيتم استخدام هذه السمة في تغيير لاحق يحدد ترتيب الاجتياز بناءً على المعنى الدلالي لعناصر مثل الأسطح. (I63379)
  • تمت إضافة دور جديد لتسهيل الاستخدام "DropdownList". ويمكن استخدام ذلك لتكرار سلوك TalkBack عند التركيز على android.widget.Spinner. (I177e5، b/236159001)
  • يمكنك الآن استخدام السمة PlatformTextStyle(emojiSupportMatch) لإيقاف معالجة دعم الرموز التعبيرية لفقرة واحدة، إذا أردت ذلك. (Ia7100، b/139326806)
  • ستعمل اختبارات واجهة مستخدم Compose في Android الآن على تشغيل بطاقات التنسيق لكل إطار عند تنفيذ الإطارات للانتقال إلى وضع عدم النشاط (على سبيل المثال، عبر 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/251484، وb/2514184
  • تمت إضافة البيانات في سمة دلالية واحدة (IsContainer) على مساحات العرض. سيتم استخدام هذه السمة في تغيير لاحق يحدد ترتيب الاجتياز بناءً على المعنى الدلالي لعناصر مثل الأسطح. (I63379)
  • تمت إضافة الدور الجديد لتسهيل الاستخدام DropdownList. ويمكن استخدام ذلك لتكرار سلوك TalkBack's عند التركيز على android.widget.Spinner. (I177e5، b/236159001)
  • يمكنك الآن استخدام السمة PlatformTextStyle(emojiSupportMatch) لإيقاف معالجة دعم الرموز التعبيرية لفقرة واحدة، إذا أردت ذلك. (Ia7100، b/139326806)
  • ستعمل اختبارات واجهة مستخدم Compose في Android الآن على تشغيل بطاقات التنسيق لكل إطار عند تنفيذ الإطارات للانتقال إلى وضع عدم النشاط (على سبيل المثال، عبر waitForIdle). وقد يؤثر ذلك في الاختبارات التي تؤكد على الإطارات الفردية للصور المتحركة للتنسيق. (I8ea08، b/222093277)
  • تمت إضافة السمة TextMotion التجريبية إلى TextStyle لتحديد النص ليكون Static(default) أو متحركًا. استخدِم TextMotion.Animated إذا سيتم تحجيم النص أو ترجمته أو تدويره من خلال الصورة المتحركة. (I24dd7)

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

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

الإصدار 1.4.0-alpha03

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

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

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

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

التحديثات المتعلقة بالاعتمادية

  • تعتمد واجهة مستخدم Compose ومواد Compose الآن على Lifecycle 2.5.1. (I05ab0، b/258038814)

الإصدار 1.4.0-alpha02

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

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

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

  • تم تعديل GraphicsLayerScope لعرض الحجم الحالي لجهاز graphicsLayer. ويكون ذلك مفيدًا لاحتساب عمليات تحويل graphicsLayer كدالة للحجم القابل للتعديل. (If8c43،b/181387080)
  • تم تقديم CompositingStrategy لتحديد الوقت المناسب للاستفادة من طبقة تركيب خارج الشاشة لعرض محتوى graphicsLayer. تحتفظ Auto بالسلوك التلقائي الذي يستفيد داخليًا من إحدى الطبقات إذا تم تطبيق ألفا أو RenderEffect/Overscroll. ستوفّر دائمًا مخزنًا مؤقتًا خارج الشاشة يتجنّب فيها ModulateAlpha الاستفادة من المخزن المؤقت خارج الشاشة وسيعدّل بدلاً من ذلك كل من تعليمات الرسم المسجّلة في graphicsLayer. سيستمر استخدام ModulateAlpha في الاستفادة من المخزن المؤقت خارج الشاشة لحالات استخدام RenderEffect/Overscroll (I25e82، وb/256382834).
  • تمت إضافة invalidateSubtree() إلى Modifier.Node للسماح بإلغاء صلاحية التدرّجات الهرمية بأكملها للتنسيق والرسم. (I4bd90)
  • ترقية rememberNestedScrollInteropConnection إلى الإصدار الثابت. تم تقديم إمكانية تمرير طريقة عرض الجذر إلى rememberNestedScrollInteropConnection. يمكن أن يساعد ذلك طريقة العرض المخصّصة في التفاعل بشكل أفضل مع قيود التمرير، خاصةً في طرق العرض غير العادية (مثل ModalBottomSheetDialog). (I9e107)
  • تمت إضافة واجهة ObserverNode يمكن استخدامها من خلال عمليات تنفيذ Modifier.Node التي يجب أن يتم إشعارها عند تغيير قيمة سبق الاطّلاع عليها (I5728b، b/247716483)
  • تمت إضافة دالة إنشاء جديدة إلى Paint تقبل android.graphics.Paint أصلية. تمت أيضًا إضافة دالة الإضافة toComposePaint() التي تحوِّل كائن Paint الأصلي الحالي إلى Compose Paint. (Ica91b)
  • يمكنك إضافة بطاقة FontFamily.Resolver.resolveAsTypeface جديدة لاستخدامها على Android. (I8950b)
  • إضافة ToolingState للسماح للأدوات بتغيير الحالات الداخلية القابلة للتعديل (Ie6614)
  • إعادة ضبط الأدوات للحصول على دعم أفضل للصور المتحركة المضافة الجديدة (I8677b)
  • تمت إضافة المعلمة minLines إلى نص المادة و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

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

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

الإصدار 1.3.0

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

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

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

الإصدار 1.3.0-rc01

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

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

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

  • تمت إضافة واصلات تجريبية جديدة في واجهة برمجة التطبيقات لإتاحة الواصلة التلقائية في النص (Iaa869).

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

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

الإصدار 1.3.0-beta03

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

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

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

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

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

  • تعمل واجهة برمجة التطبيقات BackHandler الخاصة بـ "النشاط على AndroidX" الآن ضمن Dialog قابل للإنشاء. (I35342)

الإصدار 1.3.0-beta02

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

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

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

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

التغييرات التي تم إجراؤها على واجهات Focus API التجريبية:

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

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

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

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

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

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

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

الإصدار 1.3.0-alpha03

10 آب (أغسطس) 2022

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

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

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

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

  • تمت إضافة @RequiresPermission إلى واجهات برمجة التطبيقات التي تتطلّب منح إذن POST_NOTIFICATIONS في الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (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. بالنسبة إلى Layout Inspector (عارض التخطيط)، يوفر ذلك تحسينًا في الأداء بحوالي عامل 10. (I5e113)
  • تم تغيير معاينة Compose التي سيتم تخزينها في ملفات الإخراج الثنائية من أجل السماح لمطوّري البرامج بكتابة تعليقات 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 جديدة لتتبُّع حالتها ضمن الدوال القابلة للإنشاء أو عبر PixelbookFlow (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. إنّ الدالة التي تحتاج إلى استهداف تطبيق آخر يجب أن توفّر بشكل صريح التعليق التوضيحي للعلامة المستهدفة للتطبيق المطلوب. (I40804)
  • تم تقديم واجهة برمجة تطبيقات تجريبية جديدة ومستقلة عن النظام الأساسي: واجهة برمجة تطبيقات تجريبية، وهي interface ComposeUiTest وfun runComposeUiTest(block: ComposeUiTest.() -> Unit)، ويمكن استخدامهما لإجراء اختبارات واجهة المستخدم في Compose بدون الحاجة إلى 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 إذا انتقلنا رأسيًا (إذا كانت بعض Delta موجبة، سيتم الانتقال للأسفل) (Ifb697، b/224992993)

الإصدار 1.2.0-alpha08

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

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

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

  • تم وضع علامة على دالات pluralStringResource كتجريبية للسماح بالتطوير من أجل تعزيز التدويل بشكل أفضل في المستقبل. (If24e4)
  • يقبل الآن تطبيق "الفقرة" و"متعدد الفقرات" معلمة القيود. لا يمكن تجاوز Constraints.maxHeight في الوقت الحالي، ولكنه سيتيح إجراء بعض العمليات الحسابية في المستقبل، مثل الحذف بناءً على الارتفاع. (I6afee، b/168720622)
  • يقبل SubcomposeSlotReusePolicy.getSlotsToRetain() الآن فئة مخصَّصة تشبه MutableSet لا تسمح بإضافة عناصر جديدة إليها. (Icd314)
  • أصبحت واجهة 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 إذا كان اتجاه التنسيق الحالي هو RTL. (I79cd9، b/185760237)
  • تم تعديل ألوان الظل/البيئة المحيطة لتضمّ مَعلمات Modifier.graphicsLayer اللاحقة للتوافق مع واجهة برمجة التطبيقات (I3f864، b/160665122)

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha05

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

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

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

  • تستخدم TextToolbar الآن وسيطات lambda بدلاً من ActionCallback. (Ib2eb9، b/197950089)
  • تعديل قابلية القيم الفارغة في Core وappcompat لتتوافق مع Tiramisu DP2 (I0cbb7)
  • تعرض الواجهة التي تم قياسها الآن خاصية parentData (I3313f)
  • Modifier.onPlaced وواجهة OnPlacedModifier ثابتتان الآن. (Ib5482)
  • رائع يدعم إنشاء الصور المتحركة الآن إعداد "مقياس مدة الرسوم المتحركة" من "خيارات المطوّرين". (I5a4fc, b/161675988)
  • تمت إضافة مفتاح تعديل BeyondBoundsLayout محلي (If8b51، b/184670295)
  • النص: تم الآن إيقاف التضمين تلقائيًا. تتم معالجة مشاكل الاقتصاص الناجمة عن 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 أو دوال ذات صلة قابلة للإنشاء.

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

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

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

  • دعم تحميل الخط غير المتزامن في Text (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 التي تنقل حالتها والعُقد المقابلة لها، إلى أي موقع جديد يتم استدعاؤها. عندما يترك الاستدعاء السابق التكوين، يتم الاحتفاظ بالحالة مؤقتًا وإذا دخل طلب جديد إلى لمدا المقطوعة الموسيقية، يتم نقل الدولة والعُقد المرتبطة بها إلى موقع الاستدعاء الجديد. إذا لم تتم إضافة مكالمة جديدة، تتم إزالة الحالة نهائيًا وتذكر أنه يتم إشعار المراقبين.

    إذا تم استدعاء دالة 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، ويتم عرضه من خلال FontFamilyعطل.

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

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

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

  • تم توسيع واجهة برمجة تطبيقات 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)
  • تم إصلاح اليمين من اليسار في 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، ستعمل مكونات التصميم المتعدد الأبعاد على توسيع مساحة التصميم الخاصة بها لاستيفاء إرشادات تسهيل استخدام المواد من أجل حجم هدف اللمس. مثلاً، سيتم توسيع مساحة اللمس المستهدفة للزر إلى حد أدنى للحجم يبلغ 48x48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر ليكون أصغر. يؤدي ذلك إلى مواءمة مادة Compose مع سلوك مكونات التصميم المتعدد الأبعاد نفسه، ما يوفّر سلوكًا ثابتًا إذا مزجت بين طرق العرض و"الإنشاء". ويضمن هذا التغيير أيضًا استيفاء الحدّ الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكوّنات "مواد إنشاء المحتوى".
  • دعم ثابت لـ شريط التنقل
  • ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى إصدار مستقر
  • الدعم للإصدارات الأحدث من Kotlin

الإصدار 1.1.0-rc03

26 يناير 2022

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

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

  • تم التحديث لدعم Compose 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(). يحدث الآن مسح جميع الأحداث والتخلص من النطاق في نهاية طريقة التنفيذ*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 MonitorLocal لاكتشاف TouchMode/NonTouchMode. (I6a83c، b/175899786)
  • تمت إضافة viewConfiguration: ViewConfiguration إلى LayoutInfo للسماح للمستهلكين بالحصول على القيمة الصحيحة لأشياء مثل مهلة الضغط مع الاستمرار. (I76ca6)
    • تمت إضافة viewConfiguration: ViewConfiguration إلى InjectionScope للسماح للاختبارات بتعديل طريقة حقن الإدخال بناءً على أشياء مثل مهلة الضغط الطويل أو الانزلاق باللمس.
    • تم تغيير المدة التلقائية للضغط مع الاستمرار والنقر المزدوج لكل من إدخال اللمس والماوس استنادًا إلى القيم في InjectionScope.viewConfiguration.
  • تنفيذ ExposedDropdownقائمة استنادًا إلى ExposedDropdownقائمةBox مع حقل TextField والقائمة المنسدلة بالداخل (If60b2)
  • تمت إضافة launchOnOutClick إلى PopupProperties، ليحلّ محلّ خيار cancelOnClickOff الذي تم إيقافه نهائيًا. تتلقى الخاصية الجديدة موضع النقر وحدود علامة الارتساء، ما يوفّر إمكانية تحكّم أكثر دقة لتحديد ما إذا كان يجب استدعاء onReceivedRequest أم لا. فعلى سبيل المثال، قد يكون هذا مفيدًا لمنع إغلاق الإعلان الثابت بسبب اللمسات على المرتكز.
    • تمت إضافة updateAndroidWindowManagerFlags إلى PopupProperties، ما يتيح إمكانية التحكم منخفض المستوى في العلامات التي تم تمريرها إلى النافذة المنبثقة Android WindowManager. ستكون معلمة lambda هي العلامات المحسوبة من قيم PopupProperties التي تؤدي إلى علامات WindowManager: على سبيل المثال، fitable. ستكون نتيجة دالة lambda هي العلامات النهائية التي سيتم تمريرها إلى Android WindowManager. بشكلٍ تلقائي، تترك updateAndroidWindowManagerFlags العلامات المحسوبة من المعلّمات بدون تغيير. ويجب استخدام واجهة برمجة التطبيقات هذه بحذر، فقط في الحالات التي يكون فيها للنافذة المنبثقة متطلبات سلوك محدّدة جدًا. (I6e9f9)
  • تم إيقاف Recomposer.state نهائيًا واستبداله بـ Recomposer.currentState لتغيير نوعه إلى StateFlow (Ic2ab3، وb/197773820).
  • تمت إضافة flush() وdispose() إلى InjectionScope. ويمكنك استخدامها عندما تريد مسح جميع الأحداث في قائمة الانتظار فورًا ومتى تريد التخلص من النطاق، على التوالي. (Ifb73a)
  • تمت إضافة performScrollToNode(matcher: SemanticsMatcher) الذي يمرِّر حاوية قابلة للتمرير إلى المحتوى المطابِق بواسطة المُطابق المُقدّم. (Ic1cb8)
  • يستخدم InjectionScope الآن Density، ما يسمح لك بتحويل الصور بسهولة بين وحدات بكسل وdp في performTouchInput والأصدقاء. (I8fe1f)

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

  • ينشر AndroidView الآن LocalLifecycleOwner وLocalSavedStateRegistryOwner في عرضه عبر ViewTreeLifecycleOwner وViewTreeSavedStateRegistryOwner. (I38f96، b/179708470)
  • إصلاح تطبيق WearOS scrollToSellBox الذي لا يعالج أحيانًا التمريرات السريعة (I9387e)
  • وتم تغيير المدة التلقائية بين 10 ملي ثانية إلى 16 ملي ثانية بين 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 على هذه عمليات التنفيذ.

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

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

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

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

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

  • تمت إزالة طريقة isBounded من clearedEdgeTreatment لصالح التحقق الصريح مما إذا كانت معلمة الشكل فارغة. (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 كي تحتوي على معلمة حجم أساسية يتم الاستعلام عنها داخل BrushPainter (Ia2752، b/189466433)

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

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

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

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

الإصدار 1.0

الإصدار 1.0.5

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

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

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

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

الإصدار 1.0.4

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

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

التحديثات المتعلقة بالاعتمادية

  • تم التعديل لكي تعتمد على 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 لميزة Compose. لا تزال ميزة إنشاء 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 Studio Bumblebee وAGP 7.1. (b/194289155)

الإصدار 1.0.0-rc02

14 يوليو 2021

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

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

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

الإصدار 1.0.0-rc01

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

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

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

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

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

  • تمت إزالة السمتَين التجريبيتَين FocusManager#moveFocusIn وFocusManager#moveFocusOut المتوقّفتَين نهائيًا (I227d7 وb/170154986 وb/186567354 وb/168510304)
  • تدعم لوحة الرسم الآن معلمة contentDescription لإمكانية الوصول. (Ib547c)
  • تمت إعادة تسمية "useDefaultMaxWidth" في "PopupProperties" إلى "usePlatformDefaultWidth". (I05710)
  • يمكن لمربّعات الحوار الآن استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
  • تمت إضافة دعم تجريبي لتمثيلات ألوان 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 على هذه الالتزامات.

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

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

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

  • الثوابت الرئيسية هي @experimentalComposeUiApi في الوقت الحالي. يمكن استخدام التعليمات البرمجية للإعلان عن ثوابت خاصة قبل التثبيت. (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-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime.
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • .androidx.compose.ui.util

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

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

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

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

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

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

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

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

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

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

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

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

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

آلية العمل

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

الإصدار 1.0.0-beta08

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

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

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

  • تم استبدال تعداد NestedScrollSource بفئة مضمّنة. (Ie321b، b/187055290)
  • تمت إعادة تسمية "FocusManager.clearFocus(forcedClear = true)" إلى "FocusManager.clearFocus(force = true)" (Ia0c41).
  • استخدامات التعداد المُعاد هيكلة هذا التعداد للفئات المضمّنة لتجنّب المشاكل المتعلقة بالشاملة عند إضافة قيم تعداد جديدة. (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 الآن experimentalTextApi بدلاً من جرّبي ComposealComposeApi. (I0cd0a)
    • أصبحت الآن دالة إنشاء TextUnit التي تستخدم TextUnitType هي experimentalTextApi بدلاً من TestingalComposeApi.

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

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

الإصدار 1.0.0-beta07

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

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

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

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

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

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

الإصدار 1.0.0-beta06

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

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

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

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

الإصدار 1.0.0-beta05

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

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

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

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

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

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

الإصدار 1.0.0-beta04

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

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

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

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

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

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

الإصدار 1.0.0-beta03

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

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

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

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

الإصدار 1.0.0-beta02

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

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

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

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

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

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

الإصدار 1.0.0-beta01

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

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

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

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

  • تمت إضافة معاودة الاتصال onStart إلى detectDragGestures (I67269، b/179995594)
  • لم تعد معدِّلات الحجم إلى الأساسيات تجريبية. (I15744)
  • تمت إعادة تسمية MeasurementBlocks ليصبح measurePolicy، وقد أصبح واجهة ممتعة. تم تعديل أو تبسيط واجهات برمجة التطبيقات للتصميم لاستخدام 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 إلى SurfaceLocals (I53520)
  • تمت إزالة طرق LayoutCoordinates، ويمكنك استخدام الدالة بدلاً من السمة for positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755)
  • الأنواع الأساسية التي تم استبدالها بالأنواع الأساسية:
    • ‫"ColorStop" أصبح الآن "Pair<Float, Color>"
    • أصبح اسم "SpanStyleRange" الآن "AnnotatedString.Range".
    • ‫"ParagraphStyleRange" أصبح الآن "AnnotatedString.Range<ParagraphStyle>"
    • ‫"StringAnnotation" أصبح الآن "AnnotatedString.Range<String>"
    • (I8dd1a)
  • إنشاء TextInputSession جديد لجلسات الإدخال من مكونات نصية منخفضة المستوى مثل CoreTextField. (I8817f، b/177662148)
  • تعرض ميزة "العناصر القابلة للوضع" الآن المقاس الذي تم قياسه، ما يمثّل المقاس الذي تم قياسه بتصميم التصميم الفرعي. قد لا يراعي هذا الحجم قيود القياس. (Ib2729 وb/172560206 وb/172338608)
  • إضافة معدِّل selectGroup يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
  • أصبحت defaultFactory لكل من compositionLocalOf وstaticCompositionLocalOf مطلوبة الآن بدلاً من اختيارية.

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

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

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

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

  • تمت إعادة تسمية معدِّلات الحجم. تمت إعادة تسمية Modifier.width/height/size لتصبح مطلوبةwidth/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.FavoriteDetails/FavoriteHeight/FavoriteSize إلى العرض/الارتفاع/الحجم. (I5b414)

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

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

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

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

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

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

    • لم تعد طريقة إنشاء المقطوعة الموسيقية تقبل معلَمة رئيسية، وتم إيقافها نهائيًا.
    • تم تحويل currentCompositeKeyHash إلى سمة مستوى أعلى قابلة للإنشاء بدلاً من دالة مستوى أعلى قابلة للإنشاء.
    • تم نقل GenreData وSurfaceGroup إلى مساحة الاسم androidx.compose.runtime.tooling
    • تم إنشاء واجهة ComposableLambda بدلاً من فئة خرسانة ولم تعد تحتوي على معلمات من النوع.
    • تم إنشاء واجهة ComposableLambdaN بدلاً من فئة خرسانية ولم تعد تحتوي على معلمات من النوع.
    • تم نقل الدالة sampleFlow إلى مساحة الاسم androidx.compose.runtime.
    • فطريقة دمج SnapshotMutationPolicy لم تعد تجريبية
    • تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعد من الضروري استخدامه.
    • تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعد ضرورية.
    • تمت إزالة Composer.collectKeySource Information. لم يعد من الضروري استخدامه.
    • تمت إزالة طرق 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).

  • SnapshotStateObserver لم يعد تجريبيًا (Id2e6a)

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

  • تمت إزالة longPressإيماءةFilter ومزدوجة ClickCurrentFilter. يمكنك استخدام Modifier.pointerInput مع الوظائف المساعدة، مثل أنشطةdetect (الإيماءات) (I2fedf وb/175294473)

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تمت إضافة واجهة برمجة تطبيقات لاستخدام موارد AutomotiveVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملف XML <animated-vector> بتنسيق GIF ذي تنسيق AutomotiveImageVector وإنشاء صور متحركة منه باستخدام برنامج PainterFor (I8ea91)
  • تمت إضافة واجهة برمجة تطبيقات محلية جديدة لتأليف LocalSoftwareControllerController لاستبدال واجهة SoftwareControlController السابقة على 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)
  • تمت إعادة تسمية TechnicalReference إلى ComponentContext (I53fcb).
  • تمت إعادة تسمية Bounds إلى DpRect (I4b32a).
  • اختبار التحديث: ستبحث hasText() عن كلٍّ من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803).
  • تم نقل ملف viewModel() القابل للإنشاء وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. وعليك الآن إضافة تبعية منفصلة هي androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 للتمكّن من استخدامها. (I7a374)
  • السماح باتخاذ إجراء قابل للقيم الفارغة في AccessibilityAction، وتغيير تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى سلسلة (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.Restrict. (I8b8ea)
  • تم إيقافloadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. يُرجى استخدام PainterResource بدلاً من ذلك. (I6b809)
  • لأسباب تتعلق بالأداء، تأخذ دلالات ScrollAxisRange الآن قيم lambdas التي تعرض أعداد عائمة بدلاً من قيم عائمة مباشرة. (If4a35 وb/178657186)
  • تمت إضافة دلالات EditableText لتمييز نص الإدخال القابل للتعديل في حقل النص لإمكانية الوصول وطرق الاختبار المقابلة للتحقق من الدلالة (I8e07a).
  • تم تصميم OwnerLayer/OwnerScope/OwnerSnapshotObserver داخليًا (I4ffaf، وb/175103944)
  • تمت إعادة تسمية toIntPx() إلىRoundToPx() (I9b7e4, b/173502290).
  • تم تغيير اسم IntBounds إلى IntRect وتحسين واجهة برمجة التطبيقات. (I1f6ff)
  • تم تحديث Snapshot API لتصبح أكثر اتّساقًا مع إرشادات واجهة برمجة التطبيقات بالإضافة إلى إخفاء فئات التنفيذ الداخلي من واجهة برمجة التطبيقات العامة. (Id9e32)
  • تمت إضافة إجراءات الدلالة لتوسيع وتصغيرها. تمت إضافة expand وHalfexpand في ModalBottomSheetState (Ib5064)
  • تم إيقاف Modifier.dragالإيماءاتFilter نهائيًا. يمكنك استخدام Modifier.pointerInput { detectDragGestures (...)} كبديل. بدلاً من ذلك، يمكنك استخدام Modifier.draggable لسحب محور واحد (I0ba93، وb/175294473).
  • أُعيدت تسمية "أصوات محيطة" لتُطابق "أصوات محيطة" -> ChocolateLocal. كان يُطلق على "الأحياء" اسم AmbientFoo، وأصبح اسم GenreLocals هو LocalFoo. (I2d55d)
  • تمت الآن إزالة قاعدة BaseTextField المتوقّفة نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
  • تم نقل الاختيار إلى الأساس. (I7892b)
  • وعلى غرار الطريقة التي أزلنا بها سابقًا عنصر state { 0 } القابل للإنشاء، ونعمل الآن على تعزيز الاستخدام، مثل remember { mutableStateOf(0) }، سنزيل savedInstanceState { 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، وتمت إعادة تسمية AmbientUiSavedStateRegistry إلى AmbientSaveableStateRegistry ونقل كل منهما إلى الحزمة 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) الخاصة بمحتوى المصدر لتكون واجهة برمجة التطبيقات ColorFilter API واجهة وتتطابق مع تنفيذ PathEffect. (Ica1e8)
  • أضِف مَعلمةLayoutDirection إلى CreateOutline في الشكل. يسمح ذلك بإنشاء أشكال تراعي اتجاه التخطيط. (I57c20، b/152756983)
  • تم إيقاف onImeActionPerformed نهائيًا. يمكنك استخدام "إجراءات لوحة المفاتيح" بدلاً منها (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)
  • تم نهائيًا إيقاف بكل من AccessibilityFilter و Double TapشيءFilter وlongPressTokenFilter وPressIndicaiton بتطبيقFilter. يمكنك استخدام Modifier.clickable أو Modifier.pointerInput مع وظيفتَي الرمز ExploreTapالإيماءات بدلاً من ذلك. (I6baf9، b/175294473)
  • تمت إزالة عنصر unregisterProvider الخاص بـ SaveableStateRegistry. بدلاً من ذلك، تعرض القيمة recordProvider() الآن الكائن SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، وb/178583739).
  • تم تغيير اسم SavedInstanceState() لتذكُّر Saveable() ونقله إلى الحزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)
  • تمت إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات العامة.
    • تمت إزالة التحميل الزائد من SelectionContainer المتوقّف نهائيًا
    • (I99c19)
  • وأصبحت الاختبارات التي يتم فيها استخدام Compose من خلال التدرّجات الهرمية تتم إضافتها/إزالتها مباشرةً إلى WindowManager الآن أكثر استقرارًا. (Ie81ed، b/175765614)
  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم تلقائيًا ضبط إعدادات Recomposer على مستوى النافذة التي يتم إنشاؤها بشكل كسول والتي يتم إجراؤها من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب مؤقتًا وعلامات الرسوم المتحركة المستندة إلى FrameNanos أثناء إيقاف دورة حياة المضيف. (I38e11)
  • توفّر Recomposer.runningRecomposers الآن StateFlow العام من RecomposerInfo للقراءة فقط لمراقبة حالة المقطوعة الموسيقية المستمرة في العملية. تفضيل واجهة برمجة التطبيقات هذه على Recomposer.current()، والتي تم إيقافها نهائيًا الآن (If8ebe)
  • تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6).
  • تقبل EditCommands من AnnotatedString. مع ذلك، هذا التغيير في واجهة برمجة التطبيقات فقط، ولم يتمّ تنفيذ تعديل النصوص بأنماط متعددة بعد. (I4c3ea)
  • تمت إزالة مدة التشغيل والمدة. (Ib9bf4، b/177420019)
  • تم نقل GenreData.asTree() وواجهات برمجة التطبيقات ذات الصلة إلى وحدة ui-tooling-data منفصلة ووضع علامة عليها كتجريبية (Ic95b8)
  • تمت إعادة تسمية المعلمات على RounderCornerShape وCutCornerShape وCornerbasedShape من اليسار/اليمين إلى البداية/النهاية لدعم الانعكاس التلقائي للشكل في الاتجاه rtl. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا تكون فيها ميزة "المزامنة التلقائية" مطلوبة. (I61040، b/152756983)
  • تمت إعادة هيكلة واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي للمحول البرمجي في Compose لاستخدام واجهة بدلاً من فئة ملموسة. لم تعد الواجهة تستخدم معلمة النوع أيضًا.

    وهذا تغيير داخلي ليس له تأثير على توافق رمز المصدر، بل هو تغيير فاصل ثنائي. (I3b922، b/169406779)

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

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

  • عناصر ComposeView مضمَّنة في تسلسلات هرمية للعرض والتي تشكّل عناصر ثانوية لمقطوعة موسيقية أخرى وتستضيف الآن مقطوعات موسيقية تابعة لأسلافها (I92883)
  • تم تعديل واجهة برمجة التطبيقات imageFromResource API لإعادة استخدام ذاكرة التخزين المؤقت للموارد القابلة للرسم عند تحميل كائنات 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)
  • تمّت إضافة AmbientSavedStateRegistryOwner بشكل مشابه للمستخدم الحالي من AmbientLifecycleOwner وAmbientViewModelStoreOwner (I9a3e8، وb/176756365).
  • تم تحديث واجهة برمجة التطبيقات للرسومات المتجهة لدعم تحليل التلوين المطبق على جذر الرسومات المتجهة. (Id9d53، b/177210509)
  • تمت إضافة toolType إلى PointerInputChange للتفريق بين الأجهزة (Iac787 وb/175142755)
  • تمت إعادة تسمية AmbientWindowManager ليصبح AmbientWindowInfo (I2686a وb/177084714 وb/177084983).
  • تم إيقاف طرق الإحداثيات العالمية وتم إنشاء طرق إحداثيات جديدة مستندة إلى النوافذ. (Iee284)
  • تمت إضافة Modifier.toolingGraphicsLayer الذي يضيف أداة تعديل طبقة الرسومات عند تفعيل الفحص. (I315df)
  • تم الآن وضع علامة على عنصر FocusRequester.createrefs باعتباره تجريبيًا لأنه قد يتغير. (I2d898، b/177000821)
  • تمت إعادة تسمية SemanticsPropertyReceiver.hidden لتصبح غير مرئيةToUser وتم وضع علامة @experimentalComposeUiApi على الحساب. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. وتمت إعادة تسمية StateDescriptionRange إلى promotionBarRangeInfo. تمت إعادة تسمية AccessibilityrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibility ScrollState إلى horizontal ScrollAxisRange. وتمت إعادة تسمية verticalAccessibility scrollState ليصبح عموديًا ScrollAxisRange. (Id3148)
  • تمت إزالة PointerInputData وتعديل PointerInputChange لمنحه جميع حقول PointerInputData. تم إنشاء PointerInputEvent وPointerInputEventData داخليًا لأنه لا يتم استخدامهما في أي واجهة برمجة تطبيقات عامة. (Ifff97، وb/175142755)
  • تم تعديل نطاق GraphicsLayerScope لتنفيذ الكثافة لدعم تحويل وحدات بكسل مستقلة الكثافة إلى وحدات بكسل غير معدّلة. (Ied528، b/176819695)
  • تم تحديث واجهة برمجة تطبيقات المصفوفة لاتباع الترتيب الرئيسي وتوفير ثوابت الفهرس للمساعدة في الإحالات الناجحة بين تمثيلات المصفوفة المختلفة لمطابقة منطق التحويل بين SkMatrix والمصفوفة داخليًا. (I432e6)
  • تمت إزالة الطرق التجريبية monotonicFrameAnimationClockOf (Ib753f وb/170708374).
  • انقل String.fintPrecedingBreak وString.fingFollowingBreak إلى InterTextApi. (I657c4)
  • تمت إزالة androidx.compose.ui.util.isSurrogate مستندات ، من واجهة برمجة التطبيقات العامة. (Ia9494)
  • تمت إعادة تسمية TransizedText.transformedText ليصبح TransformedText.text.
    • لم تعد TransformText فئة بيانات (Ie672a)
  • تمت إزالة "data class" من الصفوف التالية:
    • InlineTextContent
    • LocaleList (I605c7)
  • لم تعُد الفئات التالية فئات بيانات:
    • سلسلة تعليقات توضيحية
    • نمط الفقرة
    • نمط الإسبريسو
    • نمط النص
    • كثافة الخط
    • زخرفة النص
    • تحويل النص الهندسي
    • فهرس النص
    • نتيجة نصية
    • TextLayoutInput (Iaff99)
  • تغيير التحويل المرئي ليصبح واجهة وظيفية (I3bba4)
  • تمت إضافة نوع مَعلمة مرجع دالة (I5e1bd).
  • إضافة حدود محوّلة إلى InspectorNode (Ice42f)

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

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

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

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

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

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

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

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

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

    • تمت إزالة initial من معلَمات الدالة الإنشائية تحريرية. (I326d5)
  • تم إيقافableate وCompateReference() نهائيًا لصالح currentRecomposeScope و"تذكُّر لبطاقة تحكُّم مستخدمة" على التوالي. (I583a8)

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

  • يحلّ Rebserver محل ApplicationLifecycleObserver، وتم الآن إيقاف ConnectionLifecycleObserver نهائيًا.

    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.Inherit. يُرجى استخدام TextUnitType.غير محدَّد بدلاً من ذلك. (I9ff64)

الإصدار 1.0.0-alpha10

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

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

كسر التغيير

  • تتيح إعادة هيكلة واجهة برمجة تطبيقات التجميع الداخلي لتجميع التغييرات على العُقد التي تم إنشاؤها نتيجةً للتركيب في مرحلة "تطبيق التغييرات" في التركيبة، وذلك بعد اكتمال جميع دوال @Composable.

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

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

  • تمت إضافة Modifier.focusOrder() الذي يمكن استخدامه لتحديد ترتيب مخصّص لاجتياز التركيز (I90cf5 وb/175899543 وb/170155556 وb/170155429)
  • تمت إزالة استخدام showObserver المتوقّف على onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9 وb/175156387)
  • التغييرات في واجهة برمجة التطبيقات EditOperations API
    • تمت إعادة تسمية EditOperation باسم EditCommand
    • تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة في EditOperation
    • لم تعد EditCommand فئات بيانات
    • تمت إعادة تسمية الدالة EditOperation.process إلىapplyTo
    • تمت إعادة تسمية InsertEventListener إلى enterEventCallback
    • (I0a366)
  • تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَم. تم تغيير Size.center() لتكون ملكية. (I973f7)
  • ستتمكن الآن وحدة ui-test من ضبط إعدادات أدوات إعادة إنشاء واجهات المستخدم التي تخضع للاختبار (Ibebd8).
  • السرعة المعدلة للحصول على أجزاء المكونات والعمليات الرياضية. (Ib0447)
  • تمت إعادة تسمية @ExperimentalTesting إلى @ExperimentalTestApi لتكون متسقة مع التعليقات التوضيحية التجريبية المشابهة لواجهة برمجة التطبيقات (Ia4502، وb/171464963)
  • تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
  • تمت إزالة فئات DpInverse وDpSquared وDpCubed غير المستخدَمة. (I4d62b)
  • تمت إعادة تسمية Contraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • أضِف رد اتصال لإشعار المالك عند تغيير حدود عقدة التخطيط. (I72fd1)
  • تمت إضافة isSpecified وisUnspecified وUseOrElse للفئات المضمَّنة ذات الثابت غير المحدّد. (I93f7b، b/174310811)
  • يمكنك توسيع واجهات برمجة التطبيقات [Abstract]ComposeView لإتاحة إعادة استخدام طرق العرض المستندة إلى Compose، مع التركيز على المقطوعة الموسيقية لإعادة إنشائها مرة أخرى لاحقًا. أضِف واجهات برمجة التطبيقات لتثبيت واستخدام مراجع إعادة الإنشاء والمواد المرجعية على مستوى النافذة لإنشاء مقطوعات موسيقية فرعية.

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

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

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

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

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

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

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

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

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

  • لم تعد ImeOptions وKeyOptions فئة بيانات (I3c898 وb/168684531)

  • التغييرات في VisualTransformation API

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

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

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

  • تعرض أداة إعادة الإنشاء الآن تدفقًا لحالتها الحالية، ما يسمح بمراقبة نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
  • يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397)
  • تم الآن استبدال السمة animate() بالعنوان animateAsState()، ما يعرض القيمة State<T> بدلاً من T. ويتيح ذلك أداءً أفضل، إذ يمكن تضييق نطاق إلغاء الصلاحية إلى حيث تتم قراءة قيمة الحالة. (Ib179e)
  • أضِف واجهة برمجة تطبيقات الدور الدلالي وإضافة الدور كمَعلمة إلى واجهة برمجة التطبيقات الدلالية القابلة للنقر والقابلة للاختيار والتبديل. تم تغيير Modifier.progressSemantics بحيث يمكن لتطبيق Slider استخدامه أيضًا. (I216cd)
  • واجهة برمجة تطبيقات Animatable جديدة تستند إلى الكوروتين وتضمن الحصرية المتبادلة بين صورها المتحركة.
    • نموذج جديد لـ"decayAnimationSpec" لإتاحة الصور المتحركة لتناقص متعدّدة الأبعاد
    • (I820f2، b/168014930)

الإصدار 1.0.0-alpha09

16 كانون الأول (ديسمبر) 2020

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

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

  • تمت الآن إزالة KeyEvent.Alt المتوقف نهائيًا. استخدِم KeyEvent.isAltPressed بدلاً من ذلك. (Idd695)
  • تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter نهائيًا باستخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً من ذلك (Idbf1b وb/175156384).
  • تم إيقاف Modifier.focusObserver نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 وb/168511863 وb/168511484)
  • بالنسبة إلى تعليق واجهات برمجة التطبيقات لإدخال المؤشر، تمت إعادة تسميتها HandlePointerInputScope إلى AwaitPointerEventScope و handlePointerInput() إلى awaitPointerEventScope() (Idf0a1, b/175142755)
  • أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية تتطلب الموافقة (I0a1ec).
  • إضافة تعريفات التدمير لإنشاء مثيلات FocuSRequester (I35d84 وb/174817008)
  • تمت إعادة تسمية تسهيل الوصول إلى سمة contentDescription، وهي إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)
  • تمت إزالة الأحداث المخصَّصة من واجهة برمجة تطبيقات إدخال المؤشر المعلّقة (Ia54d5، b/175142755).
  • تم إدخال العديد من الدوال الجديدة في SelectionRegistrar، وتم أيضًا تغيير اسم onPositionChange إلى notificationsPositionChange. (Ifbaf7)
  • المزيد من أعضاء LayoutNode الذي وضعنا علامة عليه كـ داخلي (I443c6)
  • تم تقديم LayoutInfo لاستخدامها من خلال الأدوات والاختبار (I9b190)
  • AndroidOwner تم إنشاؤه داخليًا (Ibcad0، b/170296980)
  • تمت إزالة التعليق التوضيحي TestingalPointerInput (Ia7a24)
  • تمت إضافة نظام التمرير المُدمج. يمكنك الرجوع إلى Modifier.nested Scroll لمزيد من التفاصيل (I36e15 وb/162408885).
  • تم إنشاء subcomposeInto(LayoutNode) داخليًا (Id724a)
  • تم تغيير واجهة Applier لتبسيط بناء الأشجار من أسفل إلى أعلى بدلاً من إنشاءها من أعلى إلى أسفل.

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

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

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

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

  • تمت إضافة خاصيتَي إزالةOnBackPress ومسحOnClickOff إلى AndroidDialogProperties. تتيح هذه الإعدادات ضبط وقت استدعاء دالة onApplyRequest lambda في مربّع الحوار. (If5e17)

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

  • تمت إضافة Modifier.clearAndSetSemantics لمحو الدلالات للأصلاف وتعيين دلالات جديدة. (I277ca)

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

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

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

  • تمت إزالة التسجيل العام (غير) الخاص بـ ComposeIdlingResource وللتسجيل العام للساعات في ComposeIdlingResource (I32660).

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

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

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

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

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

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

  • BuildCompat.isAtLeastR (Idb37e) متوقفة نهائيًا

  • تمت إضافة دالة BuildAnnotatedString الأصلية لإنشاء AnnotatedString. تم إيقاف أداة إنشاء السلسلة التوضيحية التوضيحية. (Idfe0b)

  • تمت إزالة طرق التمديد في Float ومزدوج لتحويل القيم إلى وحدات راديان. تم نقلها إلى دالة خاصة ضمن أداة 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 لتضمين طرق الكتابة البديلة/المساعدة للمساعدة في الانتقال من واجهات برمجة التطبيقات (APIs) التي تم إيقافها نهائيًا إلى الحالية. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer تم أيضًا تحديث الفئات ذات الصلة إلى GraphicsLayer وفقًا لملاحظات واجهة برمجة التطبيقات. (I0bd29، b/173834241)
  • تمت إضافة طرق جديدة Placeable.placeWithLayer() وplaceable.place تقريبًاWithLayer() تسمح للتنسيقات المخصصة ومفاتيح تعديل التنسيق بوضع عنصر ثانوي مع تقديم طبقة رسومات للرسم. ذلك أنه يمكننا أولاً تحسين عمليات إعادة الرسم، وبالتالي عندما نحتاج إلى نقل عنصر ثانوي لا نضطر إلى إعادة رسم محتواه، ثانيًا يمكننا تطبيق عمليات تحويل لطفل (Ibd8f6 وb/170296989 وb/171493718 وb/173030831)
  • تمت إزالة <T> من بيان SubcomposeLayout. يمكنك الآن استخدامه بدون تحديد نوع. (Ib60c8)
  • تمت إضافة واجهات برمجة التطبيقات Modifier.scale/rotate كوسائل راحة لـ drawLayer.
    • تمت إعادة تسمية "Modifier.drawOpacity" إلى "Modifier.alpha".
    • تمت إعادة تسمية "Modifier.drawShadow" إلى "Modifier.shadow" (I264ca، b/173208140).
  • تم جعل حقلي وقت تشغيل وموضع PointerInputData غير قابلين للقيم الفارغة. (Id468a)
  • يضبط MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المتعددة الأبعاد استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في الاختيار. (I1e6f4 وb/139320372 وb/139320907)
  • تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف هي محل التركيز، ونافذة WindowFocusObserver التي توفر استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
  • تم تحديث TransformOrigin API لإتلاف البنية لعرض pivotFractionX وpivotFractionY باسم component1 وcomponent2 (If43c4، وb/173586560)
  • تمت إضافة فحص Lint لتسمية مَعلمات lambda القابلة للإنشاء وتحديد موضعها، وذلك للتحقّق من الاتساق مع إرشادات Compose. تم أيضًا نقل بعض واجهات برمجة التطبيقات باستخدام children كاسم لملف lambda اللاحقة إلى content، وفقًا لفحص Lint والإرشادات. (Iec48e)
  • تمت إضافة واجهة برمجة تطبيقات للتحقّق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث رئيسي. (I50ed9)
  • تمت إضافة حمل زائد جديد بقيمة Modifier.drawLayer(). يتم استخدام كتلة lambda في GraphicsLayerScope جديد حيث يمكنك تحديد معلمات الطبقة بطريقة تسمح بتخطي إعادة التركيب والإرسال عند حدوث تغيير الحالة. تطبيق DrawLayerModifier داخلي الآن في مرحلة الاستعداد لنقل منطقه إلى طريقةplaceable.placeWithLayer() في LayoutModifier (I15e9f, b/173030831)
  • تم إيقاف "وضع الاستراحة" نهائيًا باستخدام اللاحقة Ambient، واستبدلها بسمات جديدة تبدأ بـ "وضع الاستراحة"، وذلك وفقًا لإرشادات واجهة برمجة التطبيقات الخاصة بميزة "بيئة المحيطة" و"Compose" الأخرى. (I33440)
  • تم نقل androidx.compose.ui.text.Typeface إلى androidx.compose.ui.text.font.Typeface (Ic2b81)
  • تمت إعادة تسمية وسيطة Demantics integrationAllDescendants لإعادة تسميتها mergeDescendants. (Ib6250)
  • أداة جديدة لرصد إيماءات السحب التي تعلّق واجهة برمجة تطبيقات المؤشر، بما في ذلك قفل الاتجاه. (Icef25)
  • تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset إلى Builder ليصبح فئة داخلية من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة نوع الاسم المستعار VectorAssetBuilder للربط بـ ImageVector.Builder لـ compat. (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.ثم. تمت إزالة Color.Unset، يُرجى استخدام Color.Unspecified. تمت إزالة فئة 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.getLineمرئيEnd نهائيًا. كبديل TextLayoutResult.getLineEnd يحتوي الآن على معلمة جديدة visibleEnd. (I73282)

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

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

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

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

  • تمت إعادة تسمية معلَمة المحاذاة في Box إلى contentAlignment. (I2c957)
  • تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. تأخذ الآن معلمات lambda بدلاً من State. (Ic3021، b/173594846)
  • تمت إضافة مَعلمة renameInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947).
  • تمت إضافة فحص Lint لمعلمات أداة التعديل في الدوال القابلة للتعديل. تتحقق أداة Lint هذه من التسمية ونوع الإرجاع والقيمة الافتراضية وترتيب المعلمة للتأكد من تناسقها مع إرشادات الإنشاء. (If493b)
  • خيار مُضاف مؤقتًا للسماح بتشغيل TestAnimationClock من خلال MonotonicFrameClock (I1403b، وb/173402197)
  • تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل خط طباعي على Android من خلال دالة typeface، أي typeface(Typeface.DEFAULT). تمت إعادة تسمية typefaceFromFontFamily() أيضًا إلى typeface() (I52ab7).
  • تمت إضافة فحص الوبر للتأكد من أن وظائف أداة التعديل المصنعة محددة كإضافات في أداة التعديل، بحيث يمكن ربطها معًا بطلاقة. (I07981)
  • إزالة وحدة اختبار واجهة المستخدم القديمة وأذرعها (I3a7cb)
  • لم تعد أداة إعادة الإنشاء تقبل EmbeddingContext، ويتم الحصول على تبعيات الجدولة المطلوبة من eventCoroutineContext. تم إيقاف FrameManager؛ وبالتالي يجب أن تؤدي عمليات دمج النظام الأساسي إلى تهيئة معالجة اللقطات العامة الخاصة بها. (I02369)
  • تمرير معلومات النمط إلى عقدة إمكانية الوصول. (If5e8d)
  • تمت إعادة تسمية TextUnit.اكتساب (اكتساب) إلى TextUnit.لم يتم تحديده لضمان الاتساق مع الوحدات الأخرى. (Ifce19)

الإصدار 1.0.0-alpha07 من واجهة المستخدم

11 تشرين الثاني (نوفمبر) 2020

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

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

  • تم تقديم فئة ScaleFactor المضمنة لتمثيل عوامل المقياس للمحاور الأفقية والرأسية المستقلة عن بعضها بعضًا بهدف دعم حالات استخدام التوسيع غير الموحَّد.
    • تمت إضافة طريقة computeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لإجراء تحجيم غير موحد لتوسيع حدود src لشغل الوجهة بالكامل.
    • تمت إضافة طرق عامل التشغيل لحساب معاملات ScaleFactor بمعلمات الحجم.
    • (Ic96a6، b/172291582)
  • تمت إضافة مصنعي محاذاة التحيز ومحاذاة التحيز المطلق لإنشاء المحاذاة. (Iac836، b/169406772)
  • تسمح هذه الميزة للمطوِّر بمحو التركيز بشكل إجباري. (I90372)
  • تم إصلاح خطأ يتسبب في عدم رسم ارتفاع المشاهدات داخل Compose. (If7782)
  • تم إنشاء واجهة برمجة التطبيقات onDrawBehind داخل ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.DrawBehind. (I4fc3a، b/171955269)
  • يمكنك إضافة دعم مسافة الكاميرا لتتكامل مع عمليات التحويل الثلاثية الأبعاد rotationX/rotationY على واجهات برمجة التطبيقات ذات الطبقات. (I40213، b/171492100)
  • تمت إضافة SelectionContainer بدون معاودة الاتصال (Ibfadb)
  • تمت إزالة التعليق التوضيحي DemoalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7)
  • تمت إزالة التعتيم من معدّل drawShadow() لأنه كان يسبب إرباكًا. (I82c62، b/171624638)
  • تم نقل MeasurementResult من MeasurementScope. (Ibf96d، b/171184002)
  • تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
  • تمت إزالة FocusState2 (I686cb وb/168686446)
  • ZIndexModifier داخلي الآن (I1808b، b/171493718)
  • تم تحديث نوع إرجاع طريقة lerp في معلمات الحجم لعرض حجم غير فارغ وتجنب الصناديق غير الضرورية. (Ib0044)
  • تمت إضافة TestMonotonicFrameClock لاختبار الرمز البرمجي الذي يعتمد على MonotonicFrameClock لانتظار أحداث إطار التركيب باستخدام runBlockTest التابع لـ kotlinx-coroutines-test (I4402f).
  • تمت إزالة PlaceScope.localToGlobal (I15299، وb/171462785)
  • تمت إضافة أداة البحث onAllNodesWithSubstring (I81dd7، b/171462889)
  • تم إيقاف الوحدة androidx.ui.test نهائيًا. يُرجى الانتقال إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8)

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

  • تم نقل CapToBitmap إلى CapToImage. (I86385)
  • تم إيقاف Foundation.Text نهائيًا واستبداله بـmaterial.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية غير معرَّفة لا تستهلك قيمًا من مظهر معيّن، يُرجى الانتقال إلى androidx.compose.foundation.BasicText. (If64cb)
  • تعديل TextFields لقبول TableOptions (Ida7f3)
  • إعادة تسمية خيارات لوحة المفاتيح باسم ImeOptions (I82f36)
  • تم نقل boardType وImeAction إلى لوحة المفاتيحOptions (I910ce)
  • تمت إضافة ميزة provideDefault كبديل لتوفير البيئة المحيطة، ويمكن استخدامها لتحديد القيم المحيطة التي يتم ضبطها فقط في حال عدم توفّر قيمة محيطة. (Id6635، b/171024925)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تقديم وحدة ui-test-junit4 (Ib91f8)
  • تمت إعادة تسمية "relativePaddingFrom" إلى "paddingFrom". تمت إضافة مفتاح التعديل paddingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى الأسس النصية. (I0440a، b/170633813)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق الاتساق مع واجهتَي برمجة التطبيقات SideEffect وDeposableEffect لا يُسمح باستخدام دالة LaunchedEffect بدون مَعلمات موضوع بهدف التشجيع على أفضل الممارسات. (Ifd3d4)
  • تم تقديم موارد قابلة للإنشاء ويمكن إعادة إنشائها عند تعديل الإعدادات. (I6387c، b/167352819)
  • تتطلّب أداة إعادة الإنشاء الآن توفُّر CoroutineContext عند الإنشاء (Ic4610).
  • مجموع zIndex عند تطبيق Modifier.zIndex() متعددة. سبق أن كانت اللعبة الأولى هي الفائزة. (Ic514c، b/170623936)
  • التغييرات التي تطرأ على تنفيذ جدول المقامرة الداخلي والتي ينبغي ألا تؤثر في واجهة برمجة التطبيقات العامة. (If9828)
  • تمت إضافة خيار IME للتصحيح التلقائي في لوحة المفاتيح (I57b8d)
  • تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
  • تمت إزالة MonitorOptions.toImeOptions من واجهة برمجة التطبيقات العامة. (Ic2e45)

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

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

الإصدار 1.0.0-alpha06

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

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

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

  • أصبحت الآن أداة إعادة الإنشاء مرجعًا للمقطوعة الموسيقية وعنصرًا رئيسيًا صالحًا للتركيب. أصبحت أداة إعادة الإنشاء الصريح مطلوبة الآن في عدد أقل من الأماكن. (I4036f)
  • يمكنك إيقاف العمل بأداة VectorPainter لصالح meetVectorPainter للإشارة بشكلٍ أفضل إلى أنّ واجهة برمجة التطبيقات القابلة للإنشاء تعمل داخليًا على "تذكّر" الاحتفاظ بالبيانات على مستوى التركيبات. (Ifda43)
  • تم تحديث واجهة برمجة التطبيقات Modifier.drawWithcache لكشف ContentDrawScope كنطاق مستقبل، بدلاً من DrawScope من أجل توفير إمكانية إعادة ترتيب أوامر الرسم. ويكون ذلك مفيدًا في حالات المزج أو التلوين الخفيف التي يجب عرض وحدات بكسل المحتوى فيها أولاً ليتم تطبيق خوارزمية وضع المزج المعني بشكل صحيح. (Ie7ec8)
  • نقل SimpleContainer إلى PopupTestUtils.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(...)، أصبح بإمكانك الآن تغيير بيانات الاستهلاك الخاصة بأحداث Pointerالأحداث التي تم تمريرها. (I6acd0)
  • تم إنشاء واجهتين لـ MeasurementScope وIntrinsicmeasureScope. (I1a087، b/170461665)
  • تم إخفاء دالة الدمج لـخط المحاذاة. (I9da1a، وb/170612900، وb/170611568)
  • إضافة إمكانية تحديد معلومات أداة الفحص في مفتاح التعديل المكتوب (Idee08 وb/163494569)
  • تمت إضافة خيار SelectAll إلى قائمة التحديد (Ief02b).
  • تم تحديث DrawTransform.rotate لأخذ معلمة محورية افتراضية للوسط لمطابقة الوثائق.
    • تم تحديث DrawScope.rotateRad لاستخدام إزاحة للنقطة المحورية لمطابقة طرق التحويل الأخرى.
    • تم إيقاف التحميل الزائد في DrawScope.rotateRad الذي استهلك عدد عائم للإحداثيين x وy للمحور.
    • (Iffcbb، b/170434992)

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

  • تم تفعيل "فحص أداة Lint API" لـ LostGetterMatchingBuilder لنظام التشغيل androidx (I4bbea، b/138602561).
  • إضافة اختبار. (I6b8ae)
  • تفعيل الانتقالات في ComposeTestRule، ويمكنك إزالة الخيار لتفعيل المؤشر الوامض من ComposeTestRule. (If0de3)
  • تمت إضافة خيار محرر أسلوب الإدخال (IME) الخاص بالكتابة بالأحرف اللاتينية الكبيرة في لوحة المفاتيح (I8ac38)
  • تمت إضافة خيار لوحة مفاتيح سطر واحد إلى CoreTextField (I72e6d).
  • نقل SimpleContainer إلى PopupTestUtils.kt (I65c3e)
  • تمت إعادة تسمية واجهة برمجة تطبيقات Radius API لتصبح 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)
  • كجزء من توحيد قيم الحارس للفئات المضمنة، أعد تسمية Color.Unset إلى Color.Unspecified لتحقيق الاتساق مع الفئات المضمنة الأخرى (I97611، وb/169797763)

  • تم تقديم TextOverflow.None. عندما يكون التجاوز "None" ("بدون")، لن يتعامل "النص" مع التجاوز بعد الآن، وسيبلغ LayoutNode بحجمه الفعلي. (I175c9، b/158830170)

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

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

  • يتم تحسين أداء التمرير في العمود LazyColumn/Row من خلال تقليل العمل في الإنشاء الفرعي في كل تمرير. تمت إضافة طريقة hasPendingChanges() الجديدة لفئة التكوين. وقد تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى has invalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • تم تعديل الحجم.معلَمات غير محدّدة لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تحديث عمليات تنفيذ Painter للتحقق من المقاس.غير محدَّد، بالإضافة إلى الأحجام غير المحدودة. (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#parent الشامل وplacementScope#parentLayoutDirection من كتلة مواضع الإعلانات للتخطيط المخصّص. (Icc1ae، b/168295623)

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

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

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

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

  • تم تحديث العديد من واجهات برمجة تطبيقات الرسومات
    • تم تحديث واجهات برمجة التطبيقات لتحويل المقياس والتدوير لاستخدام معلَمة إزاحة واحدة لتمثيل الإحداثيات المحورية بدلاً من المعلَمات العائمة المنفصلة لإحداثيات س/ص في DrawScope وDrawTransform
    • تمت إزالة طريقتي Rect.expandToInclude وRect.join
    • تم تحديث وثائق النطاق الجغرافي لوصف الشكل البيضاوي بالإضافة إلى الشكل البيضاوي
    • تمت إضافة مستندات للإشارة إلى المنشئ العام لفئة نصف القطر المضمّنة أنّه لا يجب استدعاءه مباشرةً، ولكن يجب إنشاء مثيل لكائنات نصف القطر من خلال دوال إنشاء الدوال
    • تمت إزالة واجهات برمجة تطبيقات RoundRect لإنشاء طلب، topRight وbottomCenter، وما إلى ذلك.
    • تم إيقاف Rect.shift لصالح Rect.translate
    • تمت إزالة واجهتَي برمجة تطبيقات RoundRect.grow وRect.shrink
    • تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect.
    • تمت إزالة طريقتي RoundRect.mediumRect/tallMiddleRect/wideMiddleRect وRect.isStadium
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension.
    • تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension.
    • تم تغيير RoundRect.center إلى خاصية بدلاً من دالة.
    • تم تحديث الدالة الإنشائية RoundRect لاستهلاك خصائص النطاق الجغرافي بدلاً من المعلمات الفردية لقيم نصف القطر x/y
    • تمت إزالة واجهات برمجة التطبيقات ذات الحجم التي افترضت أنّها مستطيلة مصدرها 0,0
    • تمت إضافة واجهة برمجة تطبيقات مدمرة إلى Radius
    • تم نقل دوال إضافة RoundRect متنوعة لتكون خصائص بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • تم إيقاف Foundation.Box نهائيًا. يُرجى استخدام Foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
  • تمت إعادة تسمية الحزمة إلى Box. وسيتم إيقاف Box الحالي نهائيًا لصالح Box الجديد في compose.foundation.layout. يتمثّل سلوك Box الجديد في تكديس العناصر الثانوية واحدًا فوق الآخر عندما يكون له عدة عناصر فرعية، وهذا يختلف عن المربع السابق، الذي كان يعمل بشكل مشابه للعمود. (I94893، b/167680279)
  • تم إيقاف معلمات تزيين الصندوق نهائيًا. إذا أردت إضافة زخارف/مساحة متروكة على العلبة، يمكنك استخدام Modifiers بدلاً من ذلك (Modifier.background, Modifier.للحدّ، أو Modifier.حشو) (Ibae92، b/167680279)
  • تم تحديث العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة تطبيقات DrawScope باستخدام طرق التحويل على نطاق للإشارة إلى أنه يتم تطبيق التحويل فقط داخل رد الاتصال وتتم إزالته بعد استدعاء الاستدعاء
    • تم تحديث وثائق postPath للإشارة إلى المسار بدلاً من المستطيل المستدير
    • تم إصلاح تباعد في الوثائق للمعلمة الصحيحة في trackPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة معلمة الحجم
    • تمت إعادة تسمية معلمات dx/dy في طريقة الإدخال إلى أفقي ورأسي
    • إضافة حمل زائد داخلي يوفر نفس القيمة الداخلية لجميع الحدود الأربعة
    • تمت إزالة الوثائق المتعلقة بطريقة الإدراج التي تشير إلى أنه سيتم تطبيق الإدخال على الجوانب الأربعة
    • تم تعديل المستندات الخاصة بصف Rect.
    • تم تحديث التعليقات على معلمات Rect لمطابقة نمط kdoc
    • تمت إزالة Rect.join وRect.expandToInclude
    • إنشاء حمل زائد لـ Rect.translate(offset) وإيقاف Rect.shift نهائيًا
    • (If086a وb/167737376)
  • تتوفر تعليقات توضيحية لـRootAnimationClockfactor وtransitsEnabled وblinkingCursorEnabled وtextInputService يمكنها استخدام @visibleForTesting وإخفاء kdoc (I554eb وb/168308412).
  • أزل SelectionContainer من الجزء العلوي لإيقاف التحديد التلقائي وتجنُّب السلوك غير المتوقع. يمكن للمرء أن يستخدم 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)
  • تمت إزالة طرق المشغل على واجهة برمجة تطبيقات Size التي تستهلك معلمات الإزاحة. نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقع لها. على سبيل المثال، هل ينبغي أن يكون الحجم - إزاحة أو نتيجة الحجم مع الفرق؟

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

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

  • إصلاح عناصر في LazyColumn التي يتم رسمها بشكل غير صحيح في بعض الأحيان، وقد تسبَّب ذلك أيضًا في حدوث أعطال في بعض الحالات. (Ibcf17 وb/163066980 وb/165921895)
  • تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
  • تم نقل createAndroidComposeRule وAndroidInputDispatcher من androidx.ui.test.android إلى androidx.ui.test (Idef08 وb/164060572)
  • وتمت إعادة تسمية استخدامات الجاذبية باستمرار للمحاذاة أو المحاذاة في واجهات برمجة التطبيقات للتصميم. (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 بدلاً من دوال إنشاء الدوال.

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

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

  • تمت إضافة MutableRect، مستطيل يمكن تعديله. (I71bd2، b/160140398)
  • تم استبدال المصفوفة 4 بالمصفوفة. تمت إزالة جميع الأجزاء الأخرى من حزمة ectmath. (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 بدلاً من ذلك إن أمكن لإرسال طرق العرض داخل Compose. تجدر الإشارة إلى أنّه لن تتوفّر إمكانية إنشاء "طرق العرض" و"ViewGroups" مباشرةً في المستقبل ما لم تتم إزالتها في شجرة الإنشاء، في حال توفّرت هذه الطريقة في 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)

  • أصبحت فئة Outset فئة مضمّنة (Iaec70)

  • تمت إضافة مَعلمة تعديل إلى SelectionContainer (I4aada، وb/161487952).

  • تمت إزالة FocusModifier المتوقّف نهائيًا (I0b4ba، وb/160922116، وb/160821157، وb/162441435، وb/160822875، وb/160921940)

  • تمت إضافة mergePolicy lambda إلى SemanticsPropertyKey. ويمكن استخدامها لتحديد سياسة مخصّصة لدمج دلالات integrationAllDescendants. والسياسة التلقائية هي استخدام القيمة الرئيسية إذا كانت متوفّرة، وإلا يتم استخدام القيمة الثانوية. (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)

  • تستخدم أداة التنبيه StartDialog الآن FlowRow للأزرار (I00ec1 وb/161809319 وb/143682374).

  • جعل بعض برامج الخدمات التجريبية غير عامة لأنها ليست حيث أنها تنتمي إليها. سيصبح علنيًا في المستقبل. (I32ab1)

  • التنظيم المُعاد هيكلته لرمز إدخال المؤشر. (Ie3f45)

  • PxBounds متوقفة لصالح Rect. تم تحديث جميع استخدامات PxBounds مع المستطيل وإضافة إيقاف/استبدال مناسب بتعليقات توضيحية للمساعدة في الترحيل. (I37038، b/162627058)

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

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

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

  • تمت إزالة 2 PointerEventPass لم تعُد هناك حاجة إليها. (I3dd9d)

  • إضافة لون المعلَمة والظل وTextDecoration إلى Paragraph.paint مفيدًا لتجنُّب إعادة إنشاء الفقرة غير الضرورية. (I81689)

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

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

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

  • تمت إزالة Vertical Scroller و Horizontal Scroller. استخدِم عمودًا/صفًا قابلاً للتمرير بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)

  • يحدث عطل عندما يتم استخدام عنصر يحفظ الحالة داخل التكرار الحلقي for. يُسمح الآن باستخدام المفتاح نفسه في savedInstanceState() ، وقد تم تعديل واجهة برمجة تطبيقات UiSavedStateRegistry لهذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).

  • تم الآن إيقاف عنصر state { ... } القابل للإنشاء نهائيًا لصالح الاستدعاءات الفاضحة إلى remember { mutableStateOf(...) } للإيضاح. ويقلل هذا الإجراء من إجمالي مساحة عرض واجهة برمجة التطبيقات وعدد المفاهيم المتعلّقة بإدارة الحالة، ويطابق نمط by mutableStateOf() لتفويض السمات في الفئة. (Ia5727)

  • تمت إعادة تسمية RRect إلى RoundRect لملاءمة أنماط التسمية المنشأة بشكل أفضل إنشاء دوال إنشاء وظائف مشابهة لـ RRect ودوالّ إنشاء دوال RRect نهائيًا (I5d325)

الإصدار 0.1.0-dev16

5 آب (أغسطس) 2020

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

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

  • تم إيقاف OnChildPositioned نهائيًا. استخدم OnPositioned على العنصر الثانوي بدلاً من ذلك. (I87f95، b/162109766)
  • تم إيقاف setViewContent نهائيًا. يجب استخدام setContent بدلاً منه. (I7e497، b/160335130)
  • تمت إضافة واجهة برمجة التطبيقات AndroidViewBinding API لزيادة موارد التنسيق وإنشائها استنادًا إلى ViewBinding. (I081c6)
  • يتم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
  • إضافة دعم لمفتاح الجهاز البديل (I9036b)
  • تم إيقاف FocusManager. استخدِم Modifier.focus() وModifier.focusObserver() وModifier.focusRequester() بدلاً من ذلك. (I74ae4، b/162211322)
  • يدعمloadVectorResource سمات trimPath (I808fe)
  • نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
  • تمت إزالة 2 PointerEventPass لم تعُد هناك حاجة إليها. (I33ca7)
  • تم تنفيذ PointerInteropModifier، الذي يوفر إمكانية تلقّي أحداث Motion Events والتفاعل مع ميزة Compose كما لو كنت تستخدم طريقة عرض Android. (Ieb08c)
  • تمت إزالة معدِّل العلامة المتوقّف نهائيًا. يُرجى استخدام رقم تعريف التنسيق بدلاً من ذلك. (Idaa05، b/162023919)
  • تم تحديث واجهات برمجة التطبيقات التي تتيح الدعم من اليمين إلى اليسار. تمت إضافة LayoutDirectionAmbient الذي يمكن استخدامه لقراءة اتجاه التنسيق وتغييره. تمت إزالة 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)
  • أضِف الفئات الفرعية [Abstract]ComposeView View لاستضافة محتوى Compose ضِمن التسلسل الهرمي للعرض. (I46357)
  • تعمل Row وColumn الآن على تقليل معدّل استخدامهما بشكل كبير. (I75c10)
  • تمت إضافة SubcomposeLayout. وهي دالة بدائية منخفضة المستوى تتيح تكوين الأطفال أثناء القياس إذا أردنا استخدام بعض القيم المتاحة فقط في وقت لاحق أثناء قياس تكوين الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
  • تمت إضافة SemanticsNode.positionInRoot للحصول على موضع SemanticsNode نسبة إلى جذر التسلسل الهرمي Compose (Icdf26، وb/161336532).
  • فقد انعكست أحداث Motion Events على نظام التشغيل Android ووصولاً إلى Compose ثم وصولاً إلى Android. (I14be8، b/158034713)
  • تمت إزالة النافذة المنبثقة المنسدلة. (I00430)
  • تم تثبيت موضع النافذة المنبثقة على شاشات العرض المقطوعة. (Idd7dd)
  • إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
  • تمّت إضافة أداة RemeasurementModifier، وهي تسمح بإعادة قياس التنسيق بشكل متزامن. بشكل عام، لا تحتاج إليها أبدًا لأنّ عملية إعادة القياس/الإرسال تحدث تلقائيًا، لكنّنا نستخدمها في LazyColumnItems أثناء التنقّل. (I5f331، b/160791058)
  • أزِل getLineEllipsisOffset/getLineEllipsisCount. استخدم getLineمرئيEnd/getLineEnd/isLineEllipizing بدلاً من ذلك. (I85aa2)
  • أضف بعض العلامات/التعليقات التوضيحية لتفسير أفضل الممارسات. (I66b20)
  • عرض المزيد من واجهات برمجة التطبيقات الخاصة بالخطوط في TextLayoutResult. (I79bd2)
  • يمكن الآن الوصول إلى محولات المتجهات المضمنة لتحويل الوحدات المضمنة عبر Foo.VectorConverter. على سبيل المثال، Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter، وغير ذلك (I3e273)

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

  • معالجة عمليات الإصلاح الواسعة النطاق لواجهة برمجة التطبيقات (I077bc)
    1. إزالة واجهة OffsetBase غير المستخدمة
    2. محاذاة فئات الإزاحة وIntOffset للحصول على سطح متناسق لواجهة برمجة التطبيقات
    3. أعد تسمية IntOffset.Origin إلى IntOffset.Zero لتتوافق مع واجهة برمجة التطبيقات Offset API
    4. تم نقل طريقة "NativeCanvas" من واجهة "لوحة الرسم" لمساعدة المستهلكين في إنشاء نسخهم الخاصة من "لوحة الرسم"
    5. تم إنشاء فئة nullCanvas لإعادة ضبط الترميز DrawScope ليكون معلَمة غير فارغة بدلاً من Latinit وضمان عدم قابلية القيم الفارغة للحقل
    6. إعادة تسمية تعدادات ClipOp لتصبح Pascal Case
    7. تمت إعادة تسمية تعدادات filterQuality على شكل Pascal Case
    8. تمت إعادة تسمية تعدادات Stroke Join لتصبح Pascal Case
    9. تمت إعادة تسمية تعدادات PointMode إلى Pascal Case
    10. تمت إعادة تسمية تعداد PaintingStyle ليصبح Pascal Case.
    11. تمت إعادة تسمية تعدادات PathFillType لتصبح Pascal Case
    12. تمت إعادة تسمية تعدادات StrokeCap ليصبح Pascal Case
    13. تم تحديث تنفيذ Drawcache بحيث لم يعد يستخدم معلمات Lainit.
    14. تم تحديث DrawScope إلى عدم استخدام التفويض الكسول للمعلمتين الداخليتين fillPaint وtrainPaint.
    15. تعديل الصورة القابلة للإنشاء لتجنُّب استخدام Box مع خفض النفقات العامة
    16. تم تعديل فئة Outline لتتضمّن تعليقات @Immutable توضيحية.
    17. تم تحديث PathNode لتحتوي على تعليقات @Immutable التوضيحية لكل تعليمات مسار
    18. تحديث التركيبة الفرعية للمتجهات لإزالة الفحوصات الشرطية المتكررة للمساواة حيث تعالجها ميزة "إنشاء" بالفعل
    19. طرق الدالة الإنشائية المصاحبة في Rect التي تم إيقافها لصالح منصات إنشاء الدوال
    20. تم تحديث فئات الفرشاة ودوال إنشاء الدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
    21. تم تحديث تعداد VertexMode ليصبح PascalCase
    22. تم تحديث طريقة DrawScope selectPaint لاستبدال معاملات الحد الخارجي بشكل مشروط على الطلاء إذا تم تغييرها
    23. تم تعديل الحجم لإضافة واجهة برمجة التطبيقات للتدمير، يُرجى إعادة تسمية UnspecifiedSize إلى Unspecified and تمت إزالة الطرق غير المستخدَمة.
  • تم تحديث استهلاك واجهة برمجة التطبيقات BlendMode في إنشاء الربط بشكل صحيح بين وضعي BlendModes وبورترDuff في إطار عمل Android بناءً على مستوى واجهة برمجة التطبيقات. تم تقديم واجهة برمجة التطبيقات 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. drawBackground إلى Modifier.background (I13677).

الإصدار 0.1.0-dev15

22 تموز (يوليو) 2020

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

تحديث التبعيات

  • لاستخدام إصدار 0.1.0-dev15 من Compose، يجب تعديل اعتمادياتك وفقًا لمقتطفات الرمز الجديدة الواردة أعلاه في توضيح التبعيات.

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

  • تم إيقاف FocusModifier لصالح Modifier.focus، وModifier.focusRequester، وModifier.focusObserver. تم إيقاف FocusState وFocusDetailsState لصالح FocusState2 (I46919، b/160822875، b/160922136)
  • تمت إضافة أداة تعديل لتتبُّع التغيير في حالة التركيز. (I05866، b/160924455، b/160923326)
  • تمت إضافة أداة تعديل لطلب إجراء تغييرات على التركيز (I8dd73 وb/161182057 وb/160924778).
  • عليك تعديل قائمة شريط الأدوات لعرض النسخ والقص واللصق بشكل صحيح. (Id3955)
  • تستخدم الآن خصائص الدلالة الأحادية القيمة أسلوب استدعاء. على سبيل المثال، تتم كتابة 'semantics {hidden = true }' على النحو التالي: semantics { hidden() }. (Ic1afd، b/145951226، b/145955412)
  • تمت إضافة Modifier.focus الذي سيحل محل FocusModifier. (Ib852a، b/160924778)
  • إضافة FloatingToolbar لتحديد حقل النص (Ie8b07)
  • تمت إضافة تعليق توضيحي لواجهة برمجة التطبيقات ذات الصلة بالإدخال الأساسي (I53c0a).
  • تمت إضافة تعليق توضيحي لواجهة برمجة التطبيقات التجريبية لجميع واجهات برمجة التطبيقات Focus-related API (I53b24 وb/160903352).
  • تمت إضافة FocusState2 الذي سيحل محل FocusDetailsState (I0a3ba، b/160822595)
  • تمت إضافة TestingalFocus، وهي عبارة عن تعليق توضيحي @OptIn لـ Focus API. (I1544b، b/160820961)
  • تمت إضافة فئة وحدة IntBounds، والتي تمثّل عددًا صحيحًا من حدود البكسل من التخطيط. تم تحديث واجهة برمجة التطبيقات PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
  • يتطلب Applier الآن طريقة clear() للتخلص من التركيبات (Ibe697)
  • تم إيقاف KeyEvent واستبداله بـ KeyEvent2 (I68730).
  • تمت إضافة علامة جديدة اختيارية UseUnmergedTree إلى أدوات البحث عن الاختبار. (I2ce48)
  • تم تصميم واجهة برمجة التطبيقات LayoutNode تجريبية (I4f2e9)
  • تمت إضافة طرق النسخ إلى أنواع فئات مضمّنة مختلفة بما في ذلك:

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

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

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

  • تمت إعادة تسمية TextDirection باسم FixdTextDirection (I3ff38).

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

  • أعِد ضبط عناصر SelectHandles لإعادة استخدامها. (I420e0)

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

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

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

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

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

  • تمت إضافة مَعلمة تعديل في AndroidView القابل للإنشاء. (I48a88، b/158746303)

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تمت إضافة مكون Dropdown Menu في مادة ui-material، وهو تنفيذ لقائمة التصميم المتعدد الأبعاد. (I9bb3d)

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

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

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

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

  • يميز Double TapإيماءةFilter الآن من خلال الخاصية " لناصلة واحدة" عبر الشجرة. (If92b1)

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

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

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

  • تم تغيير واجهة برمجة تطبيقات lambda اللاحقة بالقيود الخاصة بالقيود المفروضة على واجهة برمجة تطبيقات lambda. فبدلاً من مَعلمتَين، أصبح لديه نطاق للمستلِم، بالإضافة إلى القيود وLayoutDirection الذي يوفّر خصائص minRate وmaxwidth وminHeight وmaxHeight في Dp (I91b9a، وb/149979702)

  • تمت إعادة تسمية LayoutModifier2 إلى LayoutModifier. (Id29f3)

  • تمت إزالة واجهة LayoutModifier المتوقّفة نهائيًا. (I2a9d6)

  • تتضمّن دوال القياسات الجوهرية في كل من "التنسيق" و"LayoutModifier2" مستقبلًا IntrinsicMeasurementScope. (Id9945)

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

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

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

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

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

  • تقبل \nToSiblings الآن القيمة Measuremented بدلاً من Placeable. (I5788d)

  • (I45f09، b/152842521)

    • تمت إعادة تسمية ScaleFit إلى ContentScale
    • تم نقل ContentScale من رسومات واجهة المستخدم إلى وحدة ui-core لتتواجد في نفس الوحدة مثل واجهة برمجة تطبيقات المحاذاة.
    • تمت إعادة تسمية fillMaxDimension إلى "الاقتصاص"
    • تمت إعادة تسمية fillMinDimension إلى Fit.
    • تمت إعادة تسمية Google Fit إلى Inside لمطابقته بشكل أفضل.
    • مكافئات ImageView.ScaleType
    • تمت إضافة المستندات التي تشير إلى أنّ الجمع بين الاقتصاص والمحاذاة سيحقّق النتيجة نفسها التي يحقّقها كلّ من ImageView.ScaleType.CENTER_CROP وFit المخصصَين مع CinemaCenter.
  • إتاحة 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() الآن افتراضيًا comToBounds و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)

  • تم دمج الكثافة ونطاق الكثافة في واجهة واحدة. يمكنك الآن استخدام الدالة Densityambient.current بدلاً منبينDensity() . بدلاً من withDensity(density) only with(density) (I11cb1)

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

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

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

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

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

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

  • تم نقل RectangleShape من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)

  • تم استبدال جميع استخدامات الألوان القابلة للقيم الفارغة في واجهة برمجة التطبيقات بغير قابلة للقيم الفارغة واستخدام Color.Unset بدلاً من null (Iamaa7)

  • أدخِل معلَمة مستطيلة إضافية إلى ImagePainter لإتاحة رسم قسم فرعي من ImageAsset الأساسي (I0ea9e)

  • تمت إضافة "لون غير محدد" لتمثيل قيمة غير محددة بدون وضع ألوان على مربع. (If901a)

  • تمت إضافة طريقتَي امتداد Canvas.rotate وCanvas.scale لاستخدام إحداثيات محورية اختيارية للتحويلات. هذه الإعدادات الافتراضية في الزاوية اليسرى العلوية من ترجمة اللوحة الحالية.

    تم أيضًا نقل Canvas.rotateRad لتكون طريقة إضافة لتحقيق الاتساق (Ibaca6)

  • تم إنشاء واجهة برمجة التطبيقات PixelMap لدعم الاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)

  • أُعيد تسميتها toFrameworkRect/toFrameworkRectF إلى AndroidRect/toAndroidRectF لمطابقة اصطلاح التسمية الخاص بتحويل العناصر بين نافذة الإنشاء وواجهات برمجة تطبيقات إطار عمل Android التي تم إنشاؤها استنادًا إليها. تم أيضًا تعديل المستندات حول واجهات برمجة التطبيقات هذه (I86337)

  • تمت إضافة واجهة برمجة تطبيقات VectorPainter لاستبدال واجهة برمجة تطبيقات التركيب الفرعي الحالية للرسومات الموجّهة. تكون نتيجة التركيب الفرعي هي كائن VectorPainter بدلاً من DrawModifier. تم إيقاف عناصر DrawVector السابقة القابلة للإنشاء لصالح VectorPainter.

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

  • تمت إعادة تسمية الصورة إلى ImageAsset بغرض التمييز بشكل أفضل بين بيانات "الصورة" و"الصورة القابلة للإنشاء" القادمة، والمستخدمة للمشاركة في تصميم المحتوى ورسمه. _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 لإضافة سلسلة Annotation. (I5059e)

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

  • تمت إضافة عامل تشغيل إضافي للنمط (نص/فقرة/Span) يفوض دالة integration(). (Ia1add)

  • لم يعُد التنسيق Fontweight.lerp متاحًا. لا تزال فئة بيانات. (I521c2)

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

  • أضِف getLineStart وgetLineEnd وgetEllipsisOffset وgetEllipsisCount إلى TextLayoutResult (Ibc801)

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

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

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

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

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

  • معاودة الاتصال onFocusChange في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
  • تم إيقاف Vertical Scroller وHoriziontalScroller نهائيًا. يمكنك استخدام ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك ومعلَمات العمود/الصف، أو Modifier.verticalportrait وModifier.horizontal scroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا لصالح ScrollState' (I400ce وb/157225838 وb/149460415 وb/154105299).
  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607).
  • تمت إعادة تسمية العديد من واجهات برمجة تطبيقات الاختبار لتصبح أكثر سهولة. وتمت إعادة تسمية جميع واجهات findXYZ API إلى 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 نهائيًا. الاستبدال بـ @Composable خطوات(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)

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

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

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

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

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

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

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

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

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

    التغييرات السلوكية المقصودة المعروفة الناتجة عن ما يلي:

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

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

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

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

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

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

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

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