مؤسسة ComposeAllowed

يمكنك كتابة تطبيقات Jetpack Compose باستخدام الوحدات الأساسية الجاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاصة بك.
التعديل الأخير الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
20 آذار (مارس) 2024 1.6.4 - - 1.7.0-alpha05

التركيبة

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

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

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

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

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

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

رائع

dependencies {
    implementation "androidx.compose.foundation:foundation:1.6.4"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.6.4")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

لمزيد من المعلومات حول التبعيات، انظر إضافة تبعيات الإصدار.

ملاحظات

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

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

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

الإصدار 1.7

الإصدار 1.7.0-alpha05

20 آذار (مارس) 2024

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

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

  • تمت إزالة تركيبة LocalTextLinkStyle التجريبية المحلية للروابط التشعّبية للأنماط. (Iebfa7)
  • تمت إزالة الإلغاء التجريبي لـ BasicText مع الوسيطة onLinkClicked. وسيتم في المستقبل استخدام واجهة برمجة تطبيقات بديلة لدعم الروابط التشعّبية. (I107d5)
  • تمت إزالة الطرق والسمات ذات الصلة بنقاط الترميز ضمن TextFieldState وTextFieldBuffer. تمت أيضًا إزالة اللاحقات inChars من واجهات برمجة التطبيقات المتبقية ذات الصلة بالاختيار والمقطوعة الموسيقية. (Ief7ce)
  • سيتم الآن تحديث جهاز currentValue في AnchoredDraggable عند المرور بنقطة ارتساء. يمكنك استخدام settledValue لتلقّي دلالات currentValue السابقة، ويتم تعديلها فقط عند الاستقرار على علامة ارتساء. يتم الآن عرض مستوى التقدّم كدالة (تتطلّب نقطة بداية ونهاية) بدلاً من خاصية. (Ibe6e8 وb/318707189 وb/298271489 وb/294991954)
  • تمت ترقية BasicTextField(state) وTextFieldState وInputTransformation وOutputTransformation وTextFieldLineLimits وTextFieldDecorator إلى المستوى الثابت. (I9582b)
  • تم توفير InterceptPlatformTextInput للمساعدة في كتابة الاختبارات ذات المستوى المنخفض لأداة تحرير أسلوب الإدخال (IME) وغير ذلك من حالات استخدام أداة IME ذات المستوى المنخفض. تم إيقاف PlatformTextInputTestOverride نهائيًا. (I862ed، b/322680547)
  • تقسيم restrictedConstraints() إلى طريقتين: fitPrioritizingWidth() وfitPrioritizingHeight() (I6d7fd)

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

  • تمت إضافة 2 واجهة برمجة تطبيقات جديدة isLastScrollForward/isLastScrollBackward للتحقق من اتجاه التمرير للحصول على آخر إجراء تمرير. سيتم عرض القيمة "خطأ" في حال لم يتم تنفيذ أي إجراء تمرير حتى الآن. (I63a0e)

الإصدار 1.7.0-alpha04

‫6 مارس 2024

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

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

  • إتاحة ميزة الكتابة بخط اليد بقلم الشاشة على الأجهزة التي تعمل بالإصدار Android U (I002e4)
  • تمت إضافة hintLocales إلى KeyboardOptions لتزويد TextFields بإمكانية التلميح إلى أدوات IME بلغة معيّنة من أجل إعداد لغة مفضّلة مسبقًا. (Id18c2)
  • تم إزالة الحمل الزائد التجريبي BasicTextField2 وBasicSecureTextField التي استغرقت المعلمتَين value: String وonValueChange: () -> String. (I568b4)
  • أضِف دالة applySemantics اختيارية إلى InputTransformation للتأثير في دلالات BasicTextField2 التي يتم تطبيقها عليها. (I74a2f، b/170648072)
  • في هذا CL، نضيف الإجراء الدلالي GetScrollViewportLength حتى نتمكن من نقل المعلومات حول المكوّنات التي يتم تمريرها في رسالة الإنشاء إلى نظام a11y. تُطبق CL أيضًا استخدام الخاصية المذكورة في القوائم القابلة للتمرير الأساسية. (Ic5fa2)
  • تمت إعادة تسمية BasicTextField2 إلى BasicTextField. (Ie5713)
  • FocusRequester.createRefs ثابت الآن (I4d92c، b/261436820)
  • تم تقديم DelegatableNode.scrollIntoView() للسماح لعُقد التعديل بإجراء طلبات scrollIntoView مباشرةً. (I2b3b7، b/299939840)
  • تم تقديم DelegatableNode.requireView() للسماح لعُقد التعديل بالحصول على View الحالي من نظام التشغيل Android بدون قراءة مقطوعة موسيقية محلية. (I40768)
  • تقديم معلومات التنسيق السياقي ضمن نطاق صف التدفق السياقي ونطاق عمود التدفق السياقي، والتي تعرض فهرس الخط والموضع والقيود المفروضة على الحد الأقصى للعرض والارتفاع للبقاء في موضع محدد. قد تتدفق العناصر التي تتجاوز الحد الأقصى للعرض/الارتفاع إلى السطر التالي أو قد يتم حذفها بناءً على إعدادات تجاوز السعة. (Id13f8، b/292114798)

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

  • تم إصلاح خطأ كان يؤدي في ظروف معيّنة إلى حدوث عطل. عند تبديل السمتَين enabled أو readOnly إلى TextField في ظروف معيّنة. (Iae17b)

الإصدار 1.7.0-alpha03

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

تم طرح "androidx.compose.foundation:foundation-*:1.7.0-alpha03". يتضمّن الإصدار 1.7.0-alpha03 هذه الالتزامات.

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

  • تم طرح ميزة DelegatableNode.requireLayoutCoordinates() كطريقة للحصول على LayoutCoordinates الحالية في Modifier.Node بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في أحد المواقع بنفسك. (Ia8657)
  • تم طرح ميزة DelegatableNode.currentLayoutCoordinates كطريقة للحصول على LayoutCoordinates الحالية في Modifier.Node بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في أحد المواقع بنفسك. (إيبا)
  • تحسينات الأداء في DraggableAnchors المستخدمة من قِبل AnchoredDraggable. (I89cff)
  • تم نقل BasicTextField2 وواجهات برمجة التطبيقات ذات الصلة ضمن حزمة androidx.compose.foundation.text2 إلى androidx.compose.foundation.text. (I9f635)
  • لم تعُد BasicTextField2 تقبل المَعلمة CodepointTransformation. استخدِم BasicSecureTextField أو OutputTransformation. (Id34ff)
  • تمت إضافة طريقة لمقارنة التعليقات التوضيحية لـ AnnotatedStrings فقط. (I32659)
  • نقدّم لك 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)

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

  • لم تعُد الصورة المتحركة للمؤشر تطلب الإطارات بين حالات التفعيل والإيقاف. (Ia2253)
  • ستنسخ الآن الدوال البرمجية للنسخ التي تم إيقافها نهائيًا KeyboardOptions جميع الخصائص بشكل صحيح. (If12de)

الإصدار 1.7.0-alpha02

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

تم طرح "androidx.compose.foundation:foundation-*:1.7.0-alpha02". يتضمّن الإصدار 1.7.0-alpha02 هذه الالتزامات.

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

  • تمت ترقية HorizontalPager وVerticalPager وPagerState إلى ثابتة. (I67660، b/316966909)
  • تمت إضافة تركيبة LocalTextLinkStyle محلية تسمح بتغيير نمط الروابط في النص على مستوى التطبيق. وإذا كنت تستخدم مظهرك الخاص في التطبيق، يجب ضبط هذه التركيبة محليًا وفقًا لموضوعاتك. عند استخدام مظهر Material، سيتم ضبط لون الرابط تلقائيًا على اللون الأساسي لـ Material. (I7eb10)
  • تم طرح أداة تعديل receiveContent التي توفّر للمطوّرين طريقة للحصول على محتوى وافٍ في Jetpack Compose.
  • تتكامل السمة receiveContent مع BasicTextField2 لقبول المحتوى الغني الذي توفِّره لوحة المفاتيح البرمجية أو من خلال إجراء اللصق في "الحافظة". (I81b72)
  • في هذا التغيير، سنستبدل SnapFlingBehavior بـ TargetedFlingBehavior في جهاز النداء لإتاحة حالات استخدام أخرى وتوفير المزيد من المرونة. (I762ea)
  • في هذا التغيير، نجعل واجهات برمجة تطبيقات Snapping مستقرة. ونعمل أيضًا على تنظيف بعض الرموز البرمجية التجريبية وإضافة المزيد من النماذج إلى ميزة Snap. (Id8da9)
  • قدِّم TargetedFlingBehavior، وهو عنصر FlingBehavior يسمح بنشر معلومات عن حالة الصورة المتحركة الجارية وإزاحة التمرير المستهدَف فيها. (I6a207)

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

  • تحافظ "BasicTextField2" الآن على المؤشر في وضع العرض أثناء الكتابة عندما يتم تمريره خارج نطاق الرؤية أو عندما يتم نقله خارج إطار العرض بسبب الإدخال. (Ieb856، b/237190748)

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

  • إضافة واجهة برمجة تطبيقات تجريبية لضبط سلوك الجلب المُسبَق في LazyLists (I022a4)

الإصدار 1.7.0-alpha01

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

تم طرح "androidx.compose.foundation:foundation-*:1.7.0-alpha01". يتضمّن الإصدار 1.7.0-alpha01 هذه الالتزامات.

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

  • تمت إضافة Indication API جديد، IndicationNodeFactory. يؤدي ذلك إلى تحقيق عمليات تنفيذ Indication أكثر أداءً مقارنةً بواجهة برمجة التطبيقات rememberUpdatedInstance السابقة (المتوقّفة الآن). للحصول على معلومات حول نقل البيانات، يمكنك الاطّلاع على developer.android.com.
  • تقبل clickable / combinedClickable / selectable / toggleable الآن معلَمة MutableInteractionSource قابلة للقيم. إذا كانت قيمة السمة فارغة، وكانت قيمة Indication المقدَّمة هي IndicationNodeFactory، لا يمكن إنشاء Indication بشكل كسول إلا عند الحاجة، ما يؤدي إلى تحسين الأداء. إذا لم تكن بصدد رفع القيمة واستخدام MutableInteractionSource، نقترح ضبط قيمة فارغة.

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

  • يمكنك طرح DecayAnimation في AnchoredDraggable، ويؤدي هذا التغيير إلى إضافة مَعلمة decayAnimationSpec إلى AnchoredDraggable، ما يسمح باستخدام مؤثرات حركية لتناقص البيانات عند التثبيت على إحدى علامات الارتساء. يشمل التغيير أيضًا إعادة تسمية animationSpec الحالية إلى snapAnimationSpec للمساعدة في فهم حالة استخدام كل مواصفة.
  • يتوفر BasicTextField2 للاستخدام التجريبي. من المفترض أن تكون الميزات متطابقة تقريبًا مع BasicTextField، ويجب أن يكون السلوك جاهزًا للإنتاج. ومع ذلك، لا تزال واجهة برمجة التطبيقات تجريبية في الوقت الحالي. قبل التثبيت، ستتم إعادة تسميته إلى BasicTextField ونقله إلى الحزمة نفسها.
  • تم تقديم المسودة الأولى من واجهة برمجة تطبيقات OutputTransformation في BasicTextField2. تحلّ واجهة برمجة التطبيقات هذه محلّ معظم حالات استخدام VisualTransformation في الإصدار القديم من BasicTextField. ومع ذلك، فإنّ بعض الأمور لم تكتمل بعد، وبعض الأمور لن تعمل بشكل صحيح، ولكننا نقدِّر أي ملاحظات بخصوص سهولة استخدام واجهة برمجة التطبيقات لحالات الاستخدام لديك. (aosp/2708848)
  • تم طرح ميزة LinkAnnotation التي تتيح إضافة روابط وعناصر قابلة للنقر إلى النص. لم تكتمل ميزة الروابط بعد، وستتم إضافة المزيد من التغييرات في واجهة برمجة التطبيقات.
  • تم طرح أداة تعديل receiveContent التي توفّر للمطوّرين طريقة للحصول على محتوى وافٍ في Jetpack Compose.
  • تتكامل السمة receiveContent مع BasicTextField2 لقبول المحتوى الغني الذي توفِّره لوحة المفاتيح البرمجية أو من خلال اللصق من "الحافظة".
  • تسمح لك السياسة KeyboardOptions.shouldShowKeyboardOnFocus بإيقاف السلوك التلقائي لتطبيق BasicTextField الذي يطلب التركيز على لوحة مفاتيح برمجية.
  • تم إيقاف TextInputService وLocalTextInputService نهائيًا الآن. استخدِم PlatformTextInputModifierNode للدمج مباشرةً مع واجهات برمجة تطبيقات IME للنظام الأساسي بدلاً من ذلك. (aosp/2862698)
  • تم إيقاف Indication#rememberUpdatedInstance نهائيًا. تنطوي هذه الإعلانات على عقوبة عالية لا مفر منها في الأداء، وتمنع أي تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقات IndicationNodeFactory الجديدة.

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

  • سيتحقّق BasicTextField الآن بشكلٍ مسبق من صحة مجموعة صغيرة من تعيينات الإزاحة عند اجتياز VisualTransformation. ويساعد ذلك في اكتشاف أخطاء الترميز الشائعة التي تؤدي إلى استثناءات لا يمكن استردادها في وقت لاحق أو في سحب البطاقات. من خلال رمي هذه الأخطاء أثناء الإنشاء، يزيد احتمال أن يرى المطوّرون هذه الأخطاء أثناء مرحلة التطوير للمساعدة في تجنُّب تعطُّل عمليات الإنتاج. (I0fd42)
  • لن يتم عرض VisualTransformation في حال عرض فهرس غير صالح لفهرس غير صالح (b/316401857 )

الإصدار 1.6

الإصدار 1.6.4

20 آذار (مارس) 2024

تم طرح "androidx.compose.foundation:foundation-*:1.6.4". يتضمّن الإصدار 1.6.4 هذه الالتزامات.

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

  • لم تعد إيماءة التحديد بالضغط مع الاستمرار ثم السحب التي تنتقل خارج حدود تنسيق النص في الإطار الأول من السحب تتعطل. (Icdf90، b/325307463)

الإصدار 1.6.3

‫6 مارس 2024

تم طرح "androidx.compose.foundation:foundation-*:1.6.3". يتضمّن الإصدار 1.6.3 هذه الالتزامات.

الإصدار 1.6.2

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.2". يتضمّن الإصدار 1.6.2 هذه الالتزامات.

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

  • إصلاح مشكلة عدم إعادة الضبط بشكلٍ صحيح في "AnimateContentSize" (I07051)
  • يجب حل المشكلة التي يتم فيها تخزين intrinsicHeight من النص بشكلٍ زائد في بعض الحالات. (3cd398، b/217910352)

الإصدار 1.6.1

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.1". يتضمّن الإصدار 1.6.1 هذه الالتزامات.

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

  • إصلاح مقياس الشبكة المتداوَل عند تمرير مؤشر الماوس فوق الحد المسموح به (bffc39)
  • أضِف فحصًا للتنسيق ذي الأبعاد الكبيرة. (e74af5)
  • إصلاح موضع العناصر بحجم 0 في بداية الشبكة المتدرجة. (785f94)
  • يمكنك استدعاء onRelease بنفس الترتيب مثل على onforgotten. (31ce3b)

الإصدار 1.6.0

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0". يتضمّن الإصدار 1.6.0 هذه الالتزامات.

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

  • التعديل الجديد Modifier.anchoredDraggable الذي يتيح إمكانية السحب والمؤثرات الحركية بين مجموعة محددة مسبقًا من علامات الارتساء تم تصميم هذا المعدِّل ليكون بديلاً عن Modifier.swipeable. تعرَّف على كيفية استخدامها ونقل البيانات من Modifier.swipeable في دليل نقل البيانات.
  • تمت إضافة وظيفة السحب والإفلات بين التطبيقات والمكونات. الرجوع إلى DragAndDropTarget وModifier.dragAndDropSource وواجهات برمجة التطبيقات الأخرى للبدء
  • Modifier.draggable2D هو المعدِّل الجديد الذي يتيح السحب الثنائي الأبعاد بسهولة. اطّلِع على النموذج.
  • تمت إضافة AndroidExternalSurface وAndroidEmbeddedExternalSurface لتسهيل إضافة مكونات تعتمد على السطح في الإنشاء.
  • تغييرات وتحسينات متنوعة على واجهة برمجة التطبيقات في Pager وsnapFlingBehaviour
  • تمت ترقية العديد من واجهات برمجة التطبيقات المخصصة للتركيز والنصوص والإضافات إلى واجهات برمجة تطبيقات مستقرة.

الإصدار 1.6.0-rc01

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-rc01". يتضمّن الإصدار 1.6.0-rc01 هذه الالتزامات.

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

  • تمت إزالة الدالة الإنشائية للإضافة DragAndDropTarget(). يمكنك إنشاء مثيل جديد باستخدام "object: DragAndDropTarget {}". (I32318)

الإصدار 1.6.0-beta03

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-beta03". يتضمّن الإصدار 1.6.0-beta03 هذه الالتزامات.

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

  • إصلاح العُطل الذي أثّر في نص كبير جدًا تم قياسه بقيود غير محدودة (I1a7df، b/312294386)
  • أصبحت PlatformImeOptions الآن فئة ملموسة بدلاً من واجهة. (If40a4)

الإصدار 1.6.0-beta02

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-beta02". يتضمّن الإصدار 1.6.0-beta02 هذه الالتزامات.

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

  • إصلاح عدم تحديث canScroll بعد التمرير بإعادة التنسيق فقط. (I60a86)
  • أصلِح المشكلة في Modifier.animateItemPlacement() وLookaheadScope بعد تنفيذ عمليات التمرير الصغيرة. (I3a2b7)

الإصدار 1.6.0-beta01

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-beta01". يتضمّن الإصدار 1.6.0-beta01 هذه الالتزامات.

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

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

    تمت إضافة "acceptsDragAndDropTransfer" إلى dragAndDropTarget Modifier لقبولها من جلسة سحب وإفلات. تعرض دالة lambda هذه قيمة DragAndDropTarget قابلة للتطبيق إذا كانت مهتمة بجلسة السحب والإفلات. تم استبدال وحدات lambda الأخرى لمعالجة أحداث السحب بهذه البيانات.

    تمت إضافة دالة DragAndDropTarget على الإعدادات الأصلية لتلقّيها من جلسات السحب والإفلات (Iebf3a).

  • يؤدي عرض علامة startDragImmediately في AnchoredDraggable إلى توفير إمكانية رصد إيماءات السحب عند استخدامها. ومن المفيد ضبطه عندما تتحرك الأداة إلى علامة ارتساء هدف. اطّلِع على النموذج. (Ie6d13، b/285139987)

  • أصبحت واجهات Foundation Tooltip API الآن @ExperimentalFoundationApi (I30b0b)

  • عند إزالة DragAndDropInfo كنوع DragAndDropModifierNode.drag، يتم الآن تغيير مَعلمات transferData وحجم الديكور وسحب الزينة DrawScope lambda.

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

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

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

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

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

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

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

  • تمت إعادة تسمية مَعلمة clippingEnabled للسمة Modifier.magnifier لتصبح clip.

  • تصبح المعلَمة magnifierCenter لـ Modifier.magnifier قابلة للقيم الفارغة مع الحفاظ على السلوك التلقائي نفسه. (I6aa66)

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

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

  • تنفيذ رموز التجزئة "يساوي" و"رمز التجزئة" للسمة PageSize.Fixed (Ie3ede، b/300134276)
  • تم إصلاح خطأ يؤدي إلى عدم تقليص حجم تنسيق BasicText عند تغيير minWidth وانخفاض minWidth عن قيود القياس الأولي maxWidth (Idb19c).
  • يجب إضافة توافق العارض لـ "تدرج التدرج" في ArcLine. (I4d5bb)
  • إصلاح مشكلة التوافق الثنائي عند تغيير إدراج النافذة (Iee695)
  • يمكنك إزالة الطبقة الأساسية الخاصة بشريحة/زر Material3 لأنّ مقاييس الأداء الصغرى تُظهر أداءً أفضل بدونها. (I55555)

الإصدار 1.6.0-alpha08

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha08". يتضمّن الإصدار 1.6.0-alpha08 هذه الالتزامات.

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

  • Modifier.draggable2D هو المعدِّل الجديد الذي يتيح السحب الثنائي الأبعاد بسهولة. راجِع النموذج (Id95f5، b/214412658)

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

  • تمت إعادة تسمية دالة onDrawDragShadow lambda إلى drawDragDecoration في Modifier.dragAndDrawSource، كما تمت إعادة تسمية معلَمة الحجم DragAndDropInfo إلى dragDecorationSize. (Id0e30، b/303904810)
  • تمت إعادة تسمية معلمة decorationBox في BasicTextField2 إلى decorator. يتغيّر نوعها أيضًا إلى واجهة ممتعة مكافئة TextFieldDecorator. (I23c1c)

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

  • مستندات محسّنة حول BasicTextField بشأن متطلبات onValueChange. (I90fc9، b/160257648)

الإصدار 1.6.0-alpha07

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha07". يتضمّن الإصدار 1.6.0-alpha07 هذه الالتزامات.

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

  • تم تقديم PlatformTextInputMethodTestOverride لكتابة اختبارات لمحرِّرات النصوص المخصّصة. (Id159b)
  • تم تغيير الاسم "GraphicsSurface" إلى "AndroidExternalSurface" (I11680).
  • تمت إضافة علامة DisableNonLinearFontScalingInCompose المؤقتة لإيقاف الضبط غير الخطّي للخط. يمكنك إعداد DisableNonLinearFontScalingInCompose = true في اختباراتك إذا كنت بحاجة إلى بعض الوقت لحذفها. ستتم إزالة هذه العلامة في الإصدار 1.6.0-beta01 من Compose. (Ic9486)
  • تمت إضافة مجموعتَين ColorList وColorSet لتجنّب عمليات التوزيع. (I744bd)
  • يؤدي هذا التغيير إلى إزالة shortSnapVelocityThreshold التي تم تحويلها إلى تفاصيل تنفيذ SnapLayoutInfoProvider. (I65f6d)
  • إضافة معدِّل dragAndDropSource لبدء جلسات السحب والإفلات، ومعدِّل dragAndDropTarget للاستلام من جلسات السحب والإفلات (Ib7828، b/286038936)
  • تعديل مستندات SnapPositionInLayout وطريقة تحديد الموضع قدِّم المساحات المتروكة في المحتوى بطريقة الموضع في SnapPositionInLayout. (Id7938، b/300116110)
  • تمت إضافة UndoState إلى TextFieldState والتي تتيح إمكانية التراجع/إعادة التغييرات التي أجراها المستخدم. (Icc024)

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

  • تم إصلاح basicMarquee بدون أي رسوم متحركة بعد تغيير السرعة. (Id2e77، b/297974036)

الإصدار 1.6.0-alpha06

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha06". يتضمّن الإصدار 1.6.0-alpha06 هذه الالتزامات.

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

  • أغلفة جديدة قابلة للإنشاء لكل من SurfaceView وTextureView: GraphicsSurface() وEmbeddedGraphicsSurface() هي واجهة برمجة تطبيقات تجريبية وتخضع للتغييرات والتعديلات. (I9ddb2)
  • أصبحت Modifier.magnifier() الآن واجهة برمجة تطبيقات ثابتة. ويشمل ذلك إزالة السمة MagnifierStyle لصالح المعلَمات المضمَّنة في المعدِّل نفسه. (I83bec وb/298381260 وb/262367109 وb/261438887)

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

  • تم طرح updateCurrentPage وupdateTargetPage في ScrollScope، وهي آخر فقرتين لازمتين للسماح بتخصيص الانتقال للأسفل والأعلى في PagerState.scroll. (I9cad5، b/267744105، b/243786897)
  • يمكنك إزالة الكثافة من SnapFlingBehavior. تتضمن جميع عمليات تنفيذ SnapLayoutInfoProvider طريقة للوصول إلى الكثافة، ويمكن إزالة نطاق المُستلِم، ما يؤدي إلى تنفيذ أقل تعقيدًا لكل من SnapFlingBehavior وSnapLayoutInfoProviders. (I153c3)
  • تم وضع علامة "ثابتة" على المزيد من مفاتيح التعديل. (I56af1، b/298046462)
  • تمت إزالة "SnapStepSize" من SnapLayoutInfoProvider. ويجب أن يتم الحساب باستخدام معلومات التخطيط ويتم تقديمه من خلال الأسلوب أو إزاحة الانطباق. (If320c)

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

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

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

  • يجب إيقاف استخدام rememberSaveable لعرض التلميحات. (Icc131، b/299500338)

الإصدار 1.6.0-alpha05

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha05". يتضمّن الإصدار 1.6.0-alpha05 هذه الالتزامات.

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

  • أضِف أحمالًا زائدة في BasicSecureTextField تقبل قيمة غير قابلة للتغيير ومعاودة اتصال لتغيير تلك القيمة، تمامًا مثل واجهة برمجة تطبيقات BasicTextField الحالية. (Ia4882)
  • أضِف Modifier.preferKeepClear() لوضع علامة عليه تشير إلى أنّه قابل للإنشاء، وأنّه من الأفضل تجنُّب النوافذ العائمة في المستوى 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ib51d5، b/297260115)
  • تم تحديد سرعات الانتقال في عناصر العرض، مثل ScrollView وRecyclerView، بـ ViewConfiguration.ScaledMaximumFlingVelocity. تحتوي ميزة Compose الآن على نسختها الخاصة من maximumFlingVelocity والتي تنطبق الآن على Draggable. (Ibf974)
  • تم إيقاف حِمل البيانات الزائدة في Pager وPagerState نهائيًا. (Iea07e)
  • تمت إضافة BasicTooltipBox إلى compose.foundation وتعديل PlainTooltipBox وRichTooltipBox لاستخدام TooltipBox مع العناصر الجديدة PlainTooltip وRichTooltip القابلة للإنشاء. (I79e1d)

الإصدار 1.6.0-alpha04

23 آب (أغسطس) 2023

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha04". يتضمّن الإصدار 1.6.0-alpha04 هذه الالتزامات.

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

  • إضافة واجهة ReusableComposition لإدارة دورة الحياة وإعادة استخدام التركيبات الفرعية. (I812d1، b/252846775)
  • تمت ترقية Modifier.focusGroup إلى واجهات برمجة تطبيقات مستقرة. (I7ffa3)
  • أضِف أحمالًا زائدة في BasicTextField2 تقبل قيمة غير قابلة للتغيير ومعاودة اتصال لتغيير تلك القيمة، تمامًا مثل واجهة برمجة تطبيقات BasicTextField الحالية. (I3f2b8)
  • أصبحت GridItemSpan::currentLineSpan الآن واجهة برمجة تطبيقات ثابتة. (Icc29c)
  • أصبحت لوحة الرسم التي تقبل contentDescription واجهة برمجة تطبيقات ثابتة الآن. (Ib3d29)
  • تم طرح viewportSize في ScrollState، وهي طريقة لمعرفة حجم viewPort للمكوِّن الذي يستخدم ScrollState بعد حدوث القياس. (I8b85a، b/283102682)
  • تم إصلاح مشكلة عدم مطابقة الجلب المُسبَق في "جهاز النداء" مع السلوك في "المشاهدات". (I93352، b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) ثابت الآن.
    • تمّت إزالة واجهة برمجة التطبيقات Deprecated Modifier.consumedWindowInsets API الآن. يمكنك استخدام Modifier.consumeWindowInsets كبديل. (Id72bb)

الإصدار 1.6.0-alpha03

9 آب (أغسطس) 2023

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha03". يتضمّن الإصدار 1.6.0-alpha03 هذه الالتزامات.

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

  • تمت إضافة حِمل السمة LazyLayout، وتقبل دالة lambda LazyLayoutItemProvider، وهي ليست كائنًا عاديًا كما كانت في السابق. تم إيقاف التحميل الزائد السابق. (I42a5a)
  • تمت إضافة الدعم لإعداد privateImeOptions (Idb772).

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

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

الإصدار 1.6.0-alpha02

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha02". يتضمّن الإصدار 1.6.0-alpha02 هذه الالتزامات.

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

  • تم تقديم PagerLayoutInfo بالمعلومات التي تم جمعها بعد تمرير المقياس في Pager. تم أيضًا تقديم السمة PageInfo، وهي المعلومات حول صفحة واحدة تم قياسها في Pager. (Iad003، b/283098900)
  • تعليقات توضيحية إضافية لتحديد الإدخالات المسموح بها للعناصر القابلة للإنشاء (I51109)
  • تمت إضافة "SemanticsNodeInteraction.requestFocus" كوسيلة أكثر ملاءمة وقابلية للاكتشاف لطلب التركيز على الاختبارات. (Ie8722)
  • تمت إعادة تصميم واجهة PlatformTextInput* API بالكامل. (I6c93a وb/274661182 وb/267235947 وb/277380808)
  • لم يعُد SoftwareKeyboardController وLocalSoftwareKeyboardController في مرحلة تجريبية. LocalSoftwareKeyboardController هي أيضًا الآن قيمة CompositionLocal مناسبة. (I4c364)
  • توفّر Modifier.transformable الآن قيمة pan delta في المعلَمة canPan، وذلك للمساعدة في تحديد اتجاه العرض للسماح به أو عدم السماح به. (I692aa، b/266829800)
  • يعدِّل مفتاح التعديل consumeWindowInsets لتوسيع الفئة الرئيسية AbstractComposeView (Iacd74، b/269479941)

الإصدار 1.6.0-alpha01

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

تم طرح "androidx.compose.foundation:foundation-*:1.6.0-alpha01". يتضمّن الإصدار 1.6.0-alpha01 هذه الالتزامات.

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

  • تم تقديم واجهة برمجة تطبيقات AnchoredDraggable جديدة في الإصدار الأساسي. يمكن استخدامها لبناء مكونات يمكن سحبها بين حالات منفصلة، مثل الأوراق السفلية المشروطة. تحلّ واجهة برمجة التطبيقات هذه محلّ واجهة برمجة التطبيقات Swipeable في Material. (I4a2ed)

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

  • دعم InputConnection#requestCursorUpdates (I0c69b)
  • تم تقديم scrollAnimationSpec للسماح بمواصفات الصور المتحركة المخصّصة. تم تعديل BringIntoViewCalculator إلى BringIntoViewScroller. (Idb741)
  • أضِف النوع ResourceResolutionException إلى عناصر الالتفاف التي يتم طرحها عند محاولة تحميل مواد عرض صور نقطية مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44 وb/230166331 وb/278424788)
  • تمت إضافة خصائص وإجراءات دلالية لإتاحة ترجمة النص. (I4a6bc)
  • تم تقديم واجهة برمجة تطبيقات BringIntoViewCalculator يمكن استخدامها لتخصيص كيفية استجابة مكوّنات مثل Scrollable لطلبات bringIntoView. تم تغيير الحمل الزائد القابل للتمرير لقبول مثيل BringIntoViewCalculator اختياريًا. (Iaf5af)

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

  • تمت إضافة فحص الوبر للتحذير في حال إنشاء MutableInteractionSource في التركيبة بدون تذكرها، وهو ما يشبه عمليات فحص الوبر لإنشاء حالة قابلة للتغيير / Animatable. (I5daae)
  • تمت إضافة إمكانية الاختيار باستخدام الماوس. سيتم توسيع التحديد المستند إلى اللمس بمقدار كلمة، وسيتم تقليصه حرفًا بحرف. (Ic0c6c، b/180639271)
  • تمت إضافة واجهة FocusTargetModifierNode يمكن استخدامها لإنشاء FocusTarget مخصّص. (I9790e)

الإصدار 1.5

الإصدار 1.5.4

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

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

الإصدار 1.5.3

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

تم طرح "androidx.compose.foundation:foundation-*:1.5.3". لم يتم إجراء أي تغييرات على هذا الإصدار.

الإصدار 1.5.2

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

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

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

  • تم إصلاح خطأ في النص أدى إلى حدوث أعطال في ظروف معيّنة عندما تم إلغاء صلاحية الدلالات.

الإصدار 1.5.1

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

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

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

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

الإصدار 1.5.0

9 آب (أغسطس) 2023

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

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

  • تم نقل العديد من أدوات التعديل الأساسية إلى واجهة برمجة التطبيقات Modifier.Node، بما في ذلك Modifier.clickable وModifier.draggable وModifier.scrollable ومعدِّلات التنسيق وغيرها، ما يقلّل من أعباء التعديل الأوّلي.
  • تحسينات في ثبات أجهزة النداء. لقد تم إصلاح العديد من الأخطاء.
  • تتوفّر معلَمات pageCount الآن في PagerState بدلاً من جهاز النداء نفسه.

الإصدار 1.5.0-rc01

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

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

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

  • تتوفّر فحص اختياري لاقتراح نقل استدعاءات mutableStateOf() إلى الأنواع المتخصّصة المقابلة لها في الإصدارات الأساسية. معرِّف الوبر هو AutoboxingStateCreation. في السابق، كان يتم تفعيل هذا الفحص تلقائيًا لجميع المشاريع. للاطّلاع على هذا التحذير في محرّر "استوديو Android" ونتائج الوراء في مشروعك، يمكنك تغيير درجة الخطورة من تحذيرية إلى تحذيرية (أو أعلى) من خلال تعريف warning "AutoboxingStateCreation" ضمن إعدادات build.gradle أو build.gradle.kts في الوحدة كما هو موضّح (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

الإصدار 1.5.0-beta03

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

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

الإصدار 1.5.0-beta02

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

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

الإصدار 1.5.0-beta01

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

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

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

  • نفِّذ PlatformDataProvider لتحديد معدّل نبضات القلب وعدد الخطوات اليومية. تمت إزالة واجهة SensorGateway من واجهة برمجة التطبيقات العامة. (I55b84)

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

  • تقليل عمليات التوزيع أثناء إجراء القياسات الكسولة أو الشبكات أو غيرها (Iaf9e2)
  • عمليات التوزيع المنخفضة عند تطبيق اللقطات (I65c09)
  • تمت إزالة التوزيعات من الصور المتحركة في الربيع (Ie9431).
  • تمت إزالة التخصيص من TextLayout (I0fd11)
  • تمت إزالة عمليات التوزيع المتعددة في تتبع سرعة المؤشر (I26bae)

الإصدار 1.5.0-alpha04

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

تم طرح androidx.compose.foundation:foundation:1.5.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha04. يحتوي الإصدار 1.5.0-alpha04 على هذه الالتزامات.

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

  • تمت إضافة TextStyle.merge(...) المحسَّنة مع قائمة المَعلمات الكاملة. (Iad234، b/246961787)
  • يمكنك تقديم SnapLayoutInfoProvider يمكن استخدامه مع LazyGridState. (I92134، b/269237141، b/260914964)
  • تمت إضافة ميزة "Modifier.animateItemPlacement()" التجريبية لنطاق العناصر المستندة إلى شبكات التوزيع الكسول. ويمكنك تطبيقه على العناصر لتحقيق تغيير موضع التشغيل الآلي أو إعادة ترتيب الصور المتحركة. (I4b62d، b/257034719)
  • عليك ترقية GridCells.FixedSize إلى القناة الثابتة. تحدد FixedSize LazyGrid حيث تتخذ كل خلية حجمًا دقيقًا على محور متقاطع، مع توزيع المساحة المتبقية حسب ترتيب المحاور المتقاطعة. (I8542f)
  • تم تقديم نطاق جهاز الاستقبال PagerScope لجهاز النداء ودالة أداة لحساب إزاحة صفحة معينة. (If2577)
  • قدِّم snapPositionalThreshold عند إنشاء سلوك سريع بسرعة. استخدِم هذه المَعلمة لتحديد حدّ موضعي للانطباق القصير في جهاز النداء. (If8f7f)
  • تم استبدال "SnapLayoutInfoProvider.calculateSnappingOffsetBounds" بـ "calculateSnappingOffset". في هذه الطريقة الجديدة، نطلب ببساطة الإزاحة التالية للمحاذاة إليها. ويجب إجراء حساب الحدود على مستوى التنفيذ، لأنّ ذلك قد يختلف وفقًا لمدى احتياج المرء إلى الانطباق. (I923a4)
  • تمت ترقية LazyStaggeredGrid واجهة برمجة تطبيقات إلى مستوى مستقر. (I633a5)
  • إزالة pageCount من Horizontal/VerticalPager يجب توفيره عند إنشاء الولاية. تم تعديل PagerState وrememberPagerState لقبول pageCount. (Ieb52d، b/266965072)
  • إزالة pageCount من Horizontal/VerticalPager يجب توفيره عند إنشاء الولاية. تم تعديل PagerState وrememberPagerState لقبول pageCount. (Ifa3cb، b/266965072)
  • يمكنك تقديم shortSnapVelocityThreshold في SnapFlingBehavior على جهاز النداء. (I7379e، b/275579012)
  • لإضافة FlowRowScope وFlowColumnScope (I54fe2)

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

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

الإصدار 1.5.0-alpha03

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

تم طرح androidx.compose.foundation:foundation:1.5.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه الالتزامات.

يفعِّل هذا الإصدار حزمة عرض النص الجديدة في Compose. تم تحسين أداء الحزمة الجديدة، ومن المفترض ألا تلاحظ أي تغييرات مرئية.

إذا لاحظت تغييرات في النص المعروض، يمكنك تصحيح الأخطاء من خلال ضبط NewTextRendering1_5 = false للتأكّد من اختلاف السلوك. سيؤدي ضبط هذه الإعدادات إلى فرض إعادة التركيب. يُرجى الإبلاغ عن أي اختلافات في السلوك على أنها أخطاء.

وستتم إزالة علامة تصحيح الأخطاء قبل إطلاق الإصدار 1.5 التجريبي 1.5.(Iada23، b/246960758)

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

  • جعل FlowColumn/FlowRow مضمّنًا (Idab37)

الإصدار 1.5.0-alpha02

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

تم طرح androidx.compose.foundation:foundation:1.5.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha02. يحتوي الإصدار 1.5.0-alpha02 على هذه الالتزامات.

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

  • تمت إضافة دعم للخلايا ذات الحجم الثابت في LazyGrid وترتيبها بترتيب المحور المتقاطع. (I83ed9 وb/235121277 وb/267942510)
  • تمت إضافة دعم للممرات ذات الحجم الثابت في LazyStaggeredGrid وترتيبها بترتيب المحاور المتقاطعة. (I7d519)
  • يمكن الآن فتح UrlAnnotation في AnnotatedString من خلال خدمات تسهيل الاستخدام مثل TalkBack. (If4d82، b/253292081)
  • تمت إضافة إجراء دلالي InsertTextAtCursor للحقول النصية. (I11ed5)
  • ستطلب الآن إجراءات الاختبار ذات الصلة بالنص (مثل performTextInput) التركيز مباشرةً، باستخدام إجراء دلالات الألفاظ، بدلاً من النقر على الحقل. (I6ed05)
  • يتيح هذا الإعداد تباعد أو ترتيب المحاور المتقاطعة باستخدام verticalArrangement في FlowRow وhorizontalArrangement في FlowColumn. سنزيل أيضًا verticalAlignment وhorizontalAlignment من المستوى الأعلى في FlowRow/FlowColumn. ويمكن للمطوّرين استخدام Modifier.align بدلاً من ذلك. وهذا يقلل من الالتباس بين اصطلاحات التسمية verticalAlignment وverticalArrangement. (I87b60، b/268365538)

الإصدار 1.5.0-alpha01

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

تم طرح androidx.compose.foundation:foundation:1.5.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.5.0-alpha01. يحتوي الإصدار 1.5.0-alpha01 على هذه الالتزامات.

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

  • تمت إعادة هيكلة النص وBasicText لاستخدام نظام التعديل الجديد. ويؤدي هذا إلى تحسينات كبيرة في الأداء في كثير من الحالات. من المفترض ألا تظهر أي تغييرات. (If1d17، b/246961435)
  • تمت إضافة إجراء دلالات PerformImeAction لاستدعاء إجراء IME على عُقد محرِّر النصوص. (Ic606f، b/269633506)

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

  • تم تعديل البيانات الداخلية لـ Modifier.hoverable. لن يظهر مفتاح التعديل hoverable في أداة الفحص إلا إذا كان مفعَّلاً. (I82103)

الإصدار 1.4

الإصدار 1.4.3

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

تم طرح الإصدارَين androidx.compose.foundation:foundation:1.4.3 وandroidx.compose.foundation:foundation-layout:1.4.3 بدون أي تغييرات (إصدار تجريبي فقط من الإصدار).

الإصدار 1.4.2

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

تم طرح androidx.compose.foundation:foundation:1.4.2 وandroidx.compose.foundation:foundation-layout:1.4.2. يتضمّن الإصدار 1.4.2 هذه الالتزامات.

الإصدار 1.4.1

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

تم طرح androidx.compose.foundation:foundation:1.4.1 وandroidx.compose.foundation:foundation-layout:1.4.1. يتضمّن الإصدار 1.4.1 هذه الالتزامات.

الإصدار 1.4.0

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

تم طرح androidx.compose.foundation:foundation:1.4.0 وandroidx.compose.foundation:foundation-layout:1.4.0. يتضمّن الإصدار 1.4.0 هذه الالتزامات.

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

  • تمت إضافة دمج الرموز التعبيرية إلى Text وTextField، وكذلك للفقرة ذات المستوى الأدنى. ويتم تفعيله تلقائيًا عند ضبط الرموز التعبيرية.
  • يمكن ضبط EmojiCompat على نص معيّن باستخدام PlatformParagraphStyle.
  • تمت إضافة دعم كامل للخط إلى LazyStaggeredGrid(I28252)
  • جارٍ إضافة onHover التجريبي إلى ClickableText (I6938f)
  • تم إدخال عمليات أحمال تجريبية جديدة للدالة runComposeUiTest ودوال create*ComposeRule التي تقبل المعلَمات CoroutineContext. سيتم استخدام السياق للمقطوعة الموسيقية الاختبارية وأي طلبات LaunchedEffect وrememberCoroutineScope() في المقطوعة الموسيقية. (I10614، b/265177763)
  • يتوفّر FlowRow وFlowColumn الآن باسم @ExperimentalFoundationApi يتيحان الحصول على تنسيق أكثر مرونة استنادًا إلى الصفوف والأعمدة، للمكوّنات التي ستنقسم إلى سطر جديد في حال عدم توفّر مساحة كافية على المحور الرئيسي. (I3a7b2)
  • تتوفّر ميزة "Modifier.basicMarquee()" كميزة تجريبية لعرض المحتوى باستخدام تأثير التظليل المميّز للتمرير. (I2df44، b/139321650)

الإصدار 1.4.0-rc01

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

تم طرح androidx.compose.foundation:foundation:1.4.0-rc01 وandroidx.compose.foundation:foundation-layout:1.4.0-rc01. يحتوي الإصدار 1.4.0-rc01 على هذه الالتزامات.

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

  • تم تقديم واجهة برمجة تطبيقات PlatformTextInputAdapter جديدة منخفضة المستوى لإنشاء عمليات تنفيذ لإدخال نص مخصّص تتواصل مباشرةً مع واجهات برمجة التطبيقات للنظام الأساسي. (I58df4)
  • أضف إمكانية استخدام التنسيق العكسي إلى LazyStaggeredGrid. (I3ef4a)

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

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

الإصدار 1.4.0-beta02

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

تم طرح androidx.compose.foundation:foundation:1.4.0-beta02 وandroidx.compose.foundation:foundation-layout:1.4.0-beta02. يحتوي الإصدار 1.4.0 -beta02 على هذه الالتزامات.

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

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

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

  • لم يعد بإمكان ضبط مقابض الاختيار اختيار حرف جزئي. (Idedd1)
  • إصلاح العطل عند استخدام ctrl+backspace على TextField (I0427f، b/244185537)

الإصدار 1.4.0-beta01

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

تم طرح androidx.compose.foundation:foundation:1.4.0-beta01 وandroidx.compose.foundation:foundation-layout:1.4.0-beta01. يحتوي الإصدار 1.4.0 -beta01 على هذه الالتزامات.

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

  • منذ الإصدار 1.3، تمت إضافة دمج الرموز التعبيرية إلى Text وTextField، بالإضافة إلى الفقرة ذات المستوى الأدنى. ويتم تفعيله تلقائيًا عند ضبط الرموز التعبيرية.
  • يمكن ضبط EmojiCompat على نص معيّن باستخدام PlatformParagraphStyle.

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

  • تمت إضافة الاستخدام الشائع لواجهة برمجة تطبيقات PinnableContainer المستخدمة في جميع LazyLayouts للاحتفاظ بالعناصر التي تغادر من التركيبة، ولكن يجب أن تكون نشطة. (If45a4)
  • تمت إعادة تسمية PinnableContainer.PinnedHandle.unpin() إلى release() (I4667a)

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

  • تمت إضافة الموقع الإلكتروني mainAxisItemSpacing إلى LazyListLayoutInfo وLazyGridLayoutInfo وLazyStaggeredGridItemInfo (I52fad).

الإصدار 1.4.0-alpha05

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

تم طرح androidx.compose.foundation:foundation:1.4.0-alpha05 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha05. يحتوي الإصدار 1.4.0-alpha05 على هذه الالتزامات.

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

  • تمت إضافة دعم كامل للخطوط إلى LazyStaggeredGrid (I28252)
  • إضافة onHover التجريبي إلى ClickableText (I6938f)
  • تم إدخال عمليات أحمال تجريبية جديدة للدالة runComposeUiTest ودوال create*ComposeRule التي تقبل المعلَمات CoroutineContext. سيتم استخدام السياق للمقطوعة الموسيقية الاختبارية وأي طلبات LaunchedEffect وrememberCoroutineScope() في المقطوعة الموسيقية. (I10614، b/265177763)

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

  • يدمج واجهات برمجة التطبيقات الخاصة بالفترة السابقة أو اللاحقة الخاصة بـ OverscrollEffect في وظيفتَي "أداة المساعدة" applyToScroll وapplyToFling المدمجة. راجِع النماذج المعدَّلة في المستندات للحصول على أمثلة حول كيفية تنفيذ تأثير التمرير الزائد باستخدام شكل واجهة برمجة التطبيقات الجديد. (I8a9c4، b/255554340)
  • المزيد من أنواع/إمكانية القيم الفارغة للدوال المضمَّنة/المخفية التي تم إيقافها نهائيًا (I24f91)
  • تمت ترقية واجهات برمجة التطبيقات LineBreak وHyphens في TextStyle إلى مستوى مستقر. (Ic1e1d)

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

  • سيستمرّ المؤشر في الحقول النصية الآن في الوميض حتى في حال إيقاف الصور المتحركة. (I95e70، b/265177763)
  • سيتحرك Modifier.basicMarquee الآن حتى في حال إيقاف الصور المتحركة في إعدادات النظام. (I23389 وb/262298306 وb/265177763)

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

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

الإصدار 1.4.0-alpha04

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

تم طرح androidx.compose.foundation:foundation:1.4.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha04. يحتوي الإصدار 1.4.0-alpha04 على هذه الالتزامات.

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

  • يتوفّر FlowRow وFlowColumn الآن باسم @ExperimentalFoundationApi يتيحان الحصول على تنسيق أكثر مرونة استنادًا إلى الصفوف والأعمدة، للمكوّنات التي ستنقسم إلى سطر جديد في حال عدم توفّر مساحة كافية على المحور الرئيسي. (I3a7b2)
  • تتوفّر ميزة "Modifier.basicMarquee()" كميزة تجريبية لعرض المحتوى باستخدام تأثير شريط التمرير المتحرّك. (I2df44، b/139321650)

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

  • تم إيقاف FocusRequesterModifier نهائيًا لصالح FocusRequesterNode (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/251429934 وb/251429934).
  • أصبحت الآن دالة إنشاء AndroidFont مع variationSettings واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من أدوات وصف الخطوط. (I5adcc، b/261565807)
  • تم طرح واجهة برمجة تطبيقات PinnableContainer وتم نشرها من خلال القوائم البطيئة من خلال مقطوعة موسيقية محلية تسمح بتثبيت العنصر الحالي. وهذا يعني أنه لن يتم التخلص من هذا العنصر عند تمريره بعيدًا عن طريقة العرض. على سبيل المثال، سيتم تثبيت العنصر الذي يتم التركيز عليه حاليًا بواسطة Modifier.focusable() باستخدام هذه الآلية. (Ib8881 وb/259274257 وb/195049010)
  • تم إعادة كتابة طريقة استجابة العناصر القابلة للتمرير مع bringIntoViewRequesters والعناصر القابلة للتركيز من أجل وضع نموذج أفضل لتعقيد هذه العمليات والتعامل مع المزيد من الحالات الهامشية. (I2e5fe، b/241591211، b/192043120، b/237190748، b/230756508، b/239451114)
  • المزيد من قابلية القيم الفارغة للدوال المخفية التي تم إيقافها نهائيًا (Ibf7b0)
  • تمت إضافة TextMotion التجريبي إلى TextStyle لتحديد نص إما أن يكون Static(default) أو متحركًا. استخدِم TextMotion.Animated إذا أردت تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7)
  • إضافة TextFieldFocusModifier لإصلاح سلوك التنقل في التركيز لنظام Android الأساسي (I00303)
  • تم استبدال الوسيطة maxSize: IntSize في drawText بـ size: Size ليتم تضمينها مع دوال DrawScope الأخرى. تم ضبط size على Size.Unspecified تلقائيًا، وبالتالي لن يؤدي ذلك إلى تغيير السلوك التلقائي السابق. (Icd27d)

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

  • تعديلات في قواعد الفيزياء في SnapFlingBehaviour لإضفاء مظهر طبيعي أكثر.

مشكلة معروفة

  • عند التحديث من androidx.compose.foundation:1.4.0-alpha03 إلى androidx.compose.foundation:1.4.0-alpha04، قد يظهر لك خطأ java.lang.NoSuchFieldError. يمكنك الاطّلاع على هذا الرابط حيث تم الإبلاغ عن المشكلة منذ البداية. تم إرسال إصلاح، وسيكون متاحًا في تحديث Compose التالي. لحلّ هذه المشكلة، يُرجى تحديث مكتبتَي androidx.compose.material وandroidx.compose.material3 إلى أحدث إصدار(1.1.0-alpha04) أو الرجوع إلى إصدار سابق من androidx.compose.foundation إلى الإصدار 1.4.0-alpha03.

الإصدار 1.4.0-alpha03

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

تم طرح androidx.compose.foundation:foundation:1.4.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه الالتزامات.

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

  • في اختبارات واجهة المستخدم التي تستخدم قاعدة إنشاء، لن يتم إرسال عمليات المتابعة التي تم استئنافها أثناء استدعاءات withFrameNanos إلا بعد انتهاء تنفيذ جميع عمليات معاودة الاتصال بالإطار. يتطابق هذا الأمر مع سلوك Compose عند التشغيل بشكل طبيعي. ومع ذلك، قد لا تنجح الاختبارات التي تعتمد على السلوك القديم. من المفترض أن يؤثر ذلك فقط في الرمز الذي يستدعي withFrameNanos أو withFrameMillis مباشرةً، ويكون له منطق خارج معاودة الاتصال يتم تمريره إلى تلك الدوال التي قد تحتاج إلى نقلها داخل عمليات معاودة الاتصال. يمكنك الاطّلاع على التغييرات في اختبار الصور المتحركة في قائمة التصميم هذه للاطّلاع على أمثلة.
  • تمت إضافة مَعلمة onPerformTraversals: (Long) -> Unit اختيارية إلى الدالة الإنشائية TestMonotonicFrameClock ووظيفة الإعدادات الأصلية لتشغيل الرمز بعد withFrameNanos عملية استدعاء ولكن قبل استئناف الكوروتينات الخاصة بالمتصلين. (Idb413 وb/254115946 وb/222093277 وb/255802670)
  • تقديم إجراءات تسهيل الاستخدام إلى الصفحة: PageUp وPageDown وPageLeft وPageRight. تجدر الإشارة إلى أنّ هذه العناوين لا تتوفّر إلّا من خلال الإصدار 29 من واجهة برمجة التطبيقات. (Ida4ab)
  • نقدّم لك HorizontalPager وVerticalPager، وهما طريقة لعرض العناصر القابلة للإنشاء في جهاز نداء. تم تقديم ميزة "PagerState" للتحكم في أجهزة النداء، بالإضافة إلى معلومات حول طلب البحث عن الحالة الحالية لجهاز النداء. تم تقديم PageSize، وهي طريقة للتحكم في حجم صفحة جهاز النداء، ويمكن استخدامها لإنشاء لوحة عرض دوّارة، مثل أدوات النداء. تم طرح PagerSnapDistance، وهي طريقة للتحكم في طريقة عمل الانطباق في سلوك الانتقال السريع على جهاز النداء. (I01120)
  • تم تقديم حمل زائد في SnapFlingBehavior.performFling للمساعدة في تحديد نقطة الاستقرار. (I569f6)
  • تمت إزالة OverscrollEffect#isEnabled. وبدلاً من الحاجة إلى تذكُّر هذه العلامة وضبطها، لا تحوّل الأحداث إلى تأثير التمرير الزائد في الحالات التي لا تريد فيها إظهار التمرير الزائد (على سبيل المثال، إذا عرضت ScrollableState#canScrollForward/backward القيمة "خطأ"). (I1a4b0 وb/255554340 وb/255557085)
  • تمت إضافة ScrollableState#canScrollForward وScrollableState#canScrollBackward للاستعلام عما إذا كان بإمكان ScrollableState التمرير في أي من الاتجاهين (سواء كان الحد الأدنى أو الأقصى لنطاقه) يتم ضبط هذه السياسة تلقائيًا على "صحيح" للتوافق مع الأنظمة القديمة مع عمليات التنفيذ الحالية لـ ScrollableState. ويمكن للمستهلكين استخدام هذه السمة لإظهار إشارة للمستخدم بأنّه لا يزال هناك مجال للتمرير، ويمكن استخدام ذلك أيضًا لتجنُّب إرسال دلتا إلى ScrollableStates لا تتوفّر فيها مساحة للتمرير في اتجاه معيّن، وذلك لتقليل العمل غير الضروري. (Idf1a0، b/255557085)
  • تمت إضافة واجهة برمجة التطبيقات Modifier API لطلب البحث عن معلومات التمرير الأصل. (I2ba9d، b/203141462)
  • يتم استخدامها في Clickable لتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تتحوّل الإيماءات إلى أحداث يتم التنقّل فيها.
  • تم إصلاح الخطأ Clickables لا يؤدي إلى تأخير التموّجات بشكل صحيح عند استخدامها داخل Scrollable ViewGroup.
  • تم تعديل الأدراج وجداول البيانات لتأخير الضغطات بشكل صحيح في حال تحويل الإيماءات إلى أحداث يتم تمريرها.
  • يُرجى تعديل تسمية snapStepSize لتتوافق مع الطرق الأخرى في SnapLayoutInfoProvider. (Ife67c)
  • تمت إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806)
  • تمت إعادة تسمية "consumedWindowInsets()" إلى "consumeWindowInsets()" و"withConsumedWindowInsets()" إلى "onConsumedWindowInsetsChanged()" وجعل "المعدِّلات" علنية. (Ie44e1)

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

  • تم إصلاح العُطل في Modifier.animateItemPlacement() والشبكات الكسولة. كان ذلك يحدث في بعض الحالات عندما يكون عدد العناصر الجديدة أصغر من العنصر السابق. (I0bcac، b/253195989)

الإصدار 1.4.0-alpha02

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

تم طرح androidx.compose.foundation:foundation:1.4.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha02. يحتوي الإصدار 1.4.0-alpha02 على هذه الالتزامات.

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

  • يقبل كل من awaitFirstDown وwaitForUpOrCancellation الآن PointerEventPass لمزيد من المرونة. (I7579a، b/212091796)
  • إلغاء التغييرات الأخيرة على واجهة برمجة التطبيقات beyondBoundCount API من واجهات برمجة التطبيقات Lazy* API (I12197)
  • تم إدخال مَعلمة في واجهات برمجة التطبيقات Lazy API لإنشاء عناصر ووضعها خارج إطار العرض (I69e89، وb/172029355).
  • تمت إضافة مَعلمة minLines إلى BasicText وBasicTextField. تسمح هذه السياسة بضبط الحدّ الأدنى لارتفاع العناصر القابلة للإنشاء من حيث عدد الأسطر (I24294، b/122476634).

الإصدار 1.4.0-alpha01

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

تم طرح androidx.compose.foundation:foundation:1.4.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.4.0-alpha01. يحتوي الإصدار 1.4.0-alpha01 على هذه الالتزامات.

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

  • تمت إضافة طريقة جديدة، وهي awaitEachGesture()، لأدوات رصد الإيماءات. وهي تشبه وظيفة forEachGesture()، إلا أنّ التكرار الحلقي فوق الإيماءات يعمل بالكامل ضمن AwaitPointerEventScope، وبالتالي لا يمكن فقدان الأحداث بين التكرارات.
  • تم إيقاف forEachGesture() نهائيًا لصالح awaitEachGesture() لأنّه يسمح بفقدان الأحداث بين الإيماءات. (Iffc3f ، b/251260206)
  • تمت إضافة WindowInsets.imeAnimationSource وWindowInsets.imeAnimationTarget لتحديد مستوى تقدُّم الرسم المتحرك ومعرفة مكان أداة IME بعد اكتمال الصورة المتحركة. (I356f1، b/217770337)

الإصدار 1.3

الإصدار 1.3.1

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

تم طرح androidx.compose.foundation:foundation:1.3.1 وandroidx.compose.foundation:foundation-layout:1.3.1. يتضمّن الإصدار 1.3.1 هذه الالتزامات.

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

  • إصلاح مشكلة الأداء في BeyondBoundsLayout (aosp/2255266)
  • لن يقرأ ContentInViewModifier إحداثيات التنسيق ما لم يرفق (aosp/2241316).

الإصدار 1.3.0

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

تم طرح androidx.compose.foundation:foundation:1.3.0 وandroidx.compose.foundation:foundation-layout:1.3.0. يتضمّن الإصدار 1.3.0 هذه الالتزامات.

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

  • تم طرح إصدارات تجريبية من LazyVerticalStaggeredGrid وLazyHorizontalStaggeredGrid.
  • تمت إضافة SnapFlingBehavior وrememberSnapFlingBehavior وواجهات برمجة تطبيقات أخرى مشابهة على أنّها تجريبية.
  • تظهر الآن الأمواج في Modifier.clickable وModifier.toggleable وModifier.selectable عند النقر عليها باستخدام لوحة المفاتيح أو لوحة التحكم في وحدة تحكُّم عن بُعد.

الإصدار 1.3.0-rc01

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

تم طرح androidx.compose.foundation:foundation:1.3.0-rc01 وandroidx.compose.foundation:foundation-layout:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه الالتزامات.

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

  • تم تقديم السمة lowVelocityAnimationSpec في خطوة الاقتراب عند عدم توفُّر سرعة اندفاع كافية لتوقيت نقاط الاتصال. (Iaeb27)
  • تمت إضافة واصلات تجريبية جديدة في واجهة برمجة التطبيقات لإتاحة الواصلات التلقائية في النص (Iaa869).

الإصدار 1.3.0-beta03

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

تم طرح androidx.compose.foundation:foundation:1.3.0-beta03 وandroidx.compose.foundation:foundation-layout:1.3.0-beta03. يتضمّن الإصدار 1.3.0-beta03 هذه الالتزامات.

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

  • أضِف خيارات لتخصيص فاصل الأسطر في "النص". (I86907)
  • بإمكان BringIntoViewResponder الآن الحصول على أحدث حدود للطلب أثناء معالجته. (If86a5، b/241591211)
  • توفير ميزة المسافات بين العناصر في الإصدار التجريبي من Staggered Grid (I10b82)
  • تعريف المساحة المتروكة للمحتوى على Staggered Grid التجريبي (I342ea)
  • تم تغيير الوسيطة size:IntSize باستخدام constraints: Constraints في طريقة TextMeasurer.measure لإتاحة قيود الحد الأدنى للعرض. (I37530، b/242707525)
  • تمت إضافة "Modifier.withConsumedWindowInsets()" لاستهلاك WindowInsets للاستخدام خارج windowInsetsPadding.
  • تمت إضافة MutableWindowInsets للسماح بتغيير WindowInsets بسهولة بدون إعادة التركيب. (I7fd28 وb/237019262 وb/243119659)

الإصدار 1.3.0-beta02

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

تم طرح androidx.compose.foundation:foundation:1.3.0-beta02 وandroidx.compose.foundation:foundation-layout:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه الالتزامات.

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

  • الإصدار الأولي من StaggeredGrid التجريبي (Ia48be)
  • تمت إعادة تسمية "FocusDirection.In" و"FocusDirection.Out" إلى "FocusDirection.Enter" و"FocusDirection.Exit" (Ia4262، b/183746982).
  • تم طرح حمل زائد rememberSnapFlingBehavior يوفّر طريقة سريعة لتفعيل الالتقاط في LazyLists. (Ifb48a)
  • تم استبدال مصنع "snapFlingBehavior" بفئة SnapFlingBehavior خرسانية. تحديد نطاق طرق SnapLayoutInfoProvider على الكثافة لتسهيل الإحالات الناجحة Dp<->Px لمستخدمي واجهة برمجة التطبيقات. (I54a11)
  • يجب تعديل LazyLayoutMeasureScope.measure لعرض قائمة بالعناصر القابلة للتنفيذ مع إبراز قابلية التغيير المطلوبة للقيمة المعروضة. (I48b7c)
  • تم طرح SnapLayoutInfoProvider التي تتطلّب LazyListState لإنشاء مثيل SnapLayoutInfoProvider يمكن استخدامه لتفعيل لقطة FlingBehavior لـ LazyLists. (I2dd10)

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

  • إعادة الهيكلة AwaitPointerEventScope#awaitLongPressOrCancellation لمطابقة الدوال قيد الانتظار الأخرى (I646e6)

الإصدار 1.3.0-beta01

24 آب (أغسطس) 2022

تم طرح androidx.compose.foundation:foundation:1.3.0-beta01 وandroidx.compose.foundation:foundation-layout:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه الالتزامات.

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

  • تمت إزالة pointerPosition من OverscrollEffect - يمكن للتأثيرات التي تهتم بموضع المؤشر استخدام Modifier.pointerInput { } في effectModifier للحصول على موضع المؤشر الحالي بدلاً من ذلك. (I9f606، b/241239306)
  • تم إظهار AwaitPointerEventScope#awaitLongPressOrCancellation كوحدة أساسية إضافية لرصد الإيماءات المعقّدة (I04374، b/181577176).
  • تم طرح ميزة lazyListSnapLayoutInfoProvider لتفعيل الالتقاط في القوائم الكسولة. (I3ecdf)
  • تم طرح SnapFlingBehavior، وهو سلوك سريع يتيح التقاط القوائم. يُرجى توفير مثيل SnapLayoutInfoProvider مع معلومات حول تنسيق الالتقاط. (Ie754c)

الإصدار 1.3.0-alpha03

10 آب (أغسطس) 2022

تم طرح androidx.compose.foundation:foundation:1.3.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه الالتزامات.

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

  • تتيح خطوط الموارد الآن ضبط إعدادات تنوع الخطوط (واجهة برمجة التطبيقات 26+). (I900dd، b/143703328)
  • إتاحة الخطوط المتغيّرة في DeviceFontFamilyNameFont (Ic1279، b/143703328)
  • تمت إزالة التعليق التوضيحي التجريبي من PlatformTextStyle وLineHeightStyle. (I64bef)
  • ستعرِض الحقول النصية الآن استثناءات أكثر تفصيلاً عندما تعرِض الحقل OffsetMapping التي يوفّرها VisualTransformation فهارس غير صالحة. (Ie73f9، b/229378536)
  • يمكنك تقديم واجهات برمجة تطبيقات تجريبية لمشاركة منطق مزود العنصر بين التنسيقات الكسولة. (Ic891c)
  • لم تعُد ميزة "ScrollableDefaults.reverseDirection()" تجريبية. (Iba646)
  • تم إيقاف SemanticsModifier.id وتم نقل معرّف دلالات الألفاظ إلى LayoutInfo.semanticsId بدلاً من ذلك. (Iac808، b/203559524)
  • لم تعُد ميزة "checkScrollableContainerConstraints()" تجريبية. (I2c290)
  • لم تعُد ميزة "Modifier.clipScrollableContainer()" تجريبية. (Ia2b44)
  • إيقاف TextInputService.show|hideSoftwareKeyboard يُرجى استخدام SoftwareKeyboardController بدلاً من ذلك في رمز التطبيق وTextInputSession في رمز إدارة أداة IME. (I14e4c، b/183448615)

الإصدار 1.3.0-alpha02

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

تم طرح androidx.compose.foundation:foundation:1.3.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.3.0-alpha02. يحتوي الإصدار 1.3.0-alpha02 على هذه الالتزامات.

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

  • تمت إضافة دالة الإضافة drawText في DrawScope لتوفير طريقة لرسم نص متعدد الأنماط على العناصر القابلة للإنشاء والمعدِّلات التي تعمل على DrawScope مثل Canvas وdrawBehind. (I16a62، b/190787898)

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

  • سيتم الآن إخفاء لوحة المفاتيح اللينة عندما يتم إيقاف حقل نصي أثناء التركيز. (I6e3e4، b/237308379)
  • عند إضافة InputEventChange حدث إلى أداة تتبُّع السرعة، سنأخذ في الاعتبار الآن قيم دلتا بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكل صحيح لجميع الحالات حتى إذا تحرّك العنصر المستهدَف (Icea9d أو b/216582726 أو b/223440806 أو b/227709803)
  • عندما يكون هناك عنصر قابل للتمرير يحتوي على عنصر ثانوي مركّز، سيتم تمريره بشكل صحيح الآن لإظهار العنصر الفرعي الذي يتم التركيز عليه عند تقليل حجمه، حتى إذا كان الحجم متحركًا. (I80867 وb/230756508 وb/220119990)
  • تم إصلاح عطل، حيث يتم محو TextField وإعادة تعبئته عندما يكون الاختيار نشطًا. (I1235b وb/208655565 وb/214253689)

الإصدار 1.3.0-alpha01

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

تم طرح androidx.compose.foundation:foundation:1.3.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.3.0-alpha01. يحتوي الإصدار 1.3.0-alpha01 على هذه الالتزامات.

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

  • تم توفير نوع التعليق التوضيحي UrlAnnotation والطُرق المرتبطة به لإتاحة روابط TalkBack في AnnotatedString. (I1c754، b/231495122)

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

  • قد تكون الآن صورة متحركة BasicTextField cursorBrush بدون إعادة تشغيل موقّت المؤشر. (I812e6، b/236383522)

الإصدار 1.2

الإصدار 1.2.1

10 آب (أغسطس) 2022

تم طرح androidx.compose.foundation:foundation:1.2.1 وandroidx.compose.foundation:foundation-layout:1.2.1. يتضمّن الإصدار 1.2.1 هذه الالتزامات.

الإصدار 1.2.0

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

تم طرح androidx.compose.foundation:foundation:1.2.0 وandroidx.compose.foundation:foundation-layout:1.2.0. يتضمّن الإصدار 1.2.0 هذه الالتزامات.

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

  • LazyVerticalGrid وLazyHorizontalGrid ثابتان الآن.
  • يمكنك الآن تحديد نوع محتوى للعناصر في القوائم والشبكات الكسولة. سيسمح هذا للمكونات بإعادة استخدام العناصر بشكل أكثر كفاءة.
  • تحتوي القوائم والشبكات الكسولة الآن على مَعلمة userScrollEnabled تسمح لك بإيقاف الانتقال من خلال إيماءات المستخدم.
  • تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة باسم LazyLayout. وهي واجهة برمجة التطبيقات التي نستخدمها داخليًا لتعزيز القوائم والشبكات الكسولة.
  • تم طرح واجهة برمجة التطبيقات OverscrollEffect على أنّها تجريبية. يمكنك تحديد تأثيرات التمرير الزائد المخصّصة بالإضافة إلى إضافة نظام أساسي عادي واحد إلى الحاويات المخصّصة القابلة للتمرير.
  • تم توفير واجهات برمجة تطبيقات إمكانية التشغيل التفاعلي للالتمرير المتداخلة للسماح بالتوافق بين طرق العرض والجهات الفاعلة في تمرير الإنشاء.
  • تمت إضافة التمرير بالماوس ولوحة اللمس إلى جميع حاويات التمرير.

الإصدار 1.2.0-rc03

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

تم طرح androidx.compose.foundation:foundation:1.2.0-rc03 وandroidx.compose.foundation:foundation-layout:1.2.0-rc03. يحتوي الإصدار 1.2.0-rc03 على هذه الالتزامات.

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

الإصدار 1.2.0-rc02

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

تم طرح androidx.compose.foundation:foundation:1.2.0-rc02 وandroidx.compose.foundation:foundation-layout:1.2.0-rc02. يحتوي الإصدار 1.2.0-rc02 على هذه الالتزامات.

الإصدار 1.2.0-rc01

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

تم طرح androidx.compose.foundation:foundation:1.2.0-rc01 وandroidx.compose.foundation:foundation-layout:1.2.0-rc01. يحتوي الإصدار 1.2.0-rc01 على هذه الالتزامات.

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

  • تم توفير OverscrollEffect تجريبي للسماح بتأثيرات التمرير الزائد المخصّصة، إلى جانب أحمال Modifier.scrollable الزائدة التي تقبلها.
  • تم نقل الإصدار التجريبي من "LocalOverScrollConfiguration" من foundation.gesture إلى حزمة الأساس، وتمت إعادة تسميته إلى LocalOverscrollConfiguration (If19fb، b/204650733).
  • يتم الآن إنشاء الواجهات في مكتبات الإنشاء باستخدام طرق الواجهة التلقائية jdk8 (I5bcf1)
  • تم تقديم واجهة برمجة تطبيقات تجريبية checkScrollableContainerConstraints() تتيح لك التأكّد من عدم دمج الحاويات القابلة للتمرير. يمكنك استخدامها عند إنشاء تنسيقات بطيئة قابلة للتمرير من خلال LazyLayout. (Id6fab، b/233352497)
  • تمت إزالة LazyVerticalGrid المتوقفة نهائيًا من حزمة androidx.compose.foundation.lazy. تتوفر واجهة برمجة التطبيقات الثابتة الجديدة في androidx.compose.foundation.lazy.grid (I73c76، b/225192009).

الإصدار 1.2.0-beta03

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

تم طرح androidx.compose.foundation:foundation:1.2.0-beta03 وandroidx.compose.foundation:foundation-layout:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه الالتزامات.

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

  • تمت إضافة الإصدار التجريبي الجديد IntervalList وMutableIntervalList. تسمح بتمثيل قائمة من القيم عبر فواصل زمنية متعددة. سيكون من المفيد عندما تريد تعريف dsl الخاص بك مشابهًا للتنسيق الذي يستخدمه LazyColumn حيث يمكن تحديد عناصر القائمة من خلال استدعاءات عناصر/عناصر متعددة. (I2d05e، b/228580728)

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

  • تمت إضافة توضيح في المستندات الخاصة بـ WindowInsets.ime للإشارة إلى أنّ إدراج ime من الإدخالات يعود إلى الإصدار 23 من واجهة برمجة التطبيقات، ولكن تم إنشاء رسوم متحركة فقط في الإصدار 30 والإصدارات الأحدث. (Ia7fc0، b/230756508)
  • ولن يتعطل الضغط على مفتاح الحذف للأمام عندما يكون المؤشر في نهاية حقل نصي.
  • تتطلب DeleteSurroundingTextCommand وDeleteSurroundingTextInCodePointsCommand الآن أن تكون وسيطات الدالة الإنشائية غير سالبة. (Ica8e6، b/199919707)

الإصدار 1.2.0-beta02

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

تم طرح androidx.compose.foundation:foundation:1.2.0-beta02 وandroidx.compose.foundation:foundation-layout:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه الالتزامات.

  • لن تتم إعادة رسم درجة دقة الخط القابلة للتنزيل والتي لا تغيّر حجم تنسيق النص أو TextField، ما يؤدي إلى عرض الخط القديم. يضمن إصلاح الأخطاء هذا أن تنسيق النص يؤدي دائمًا إلى تشغيل إعادة الرسم (b/229727404). (I1d49e، b/229727404)

الإصدار 1.2.0-beta01

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

تم طرح androidx.compose.foundation:foundation:1.2.0-beta01 وandroidx.compose.foundation:foundation-layout:1.2.0-beta01. يحتوي الإصدار 1.2.0 -beta01 على هذه الالتزامات.

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

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

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

  • تمت إضافة BeyondBoundsInterval تجريبي يمكن استخدامه من خلال عمليات التنفيذ المخصّصة للسمة LazyList عند تنسيق العناصر خارج الحدود المرئية (Ifabfb، b/184670295).
  • تمت إعادة تسمية LineHeightBehavior باسم LineHeightStyle
  • تمت إعادة تسمية LineVerticalAlignment باسم LineHeightStyle.Alignment
  • تمت إعادة تسمية LineHeightTrim باسم LineHeightStyle.Trim
  • تمت إزالة قيم الدالة الإنشائية التلقائية من LineHeightStyle (I582bf، b/181155707)
  • تمت إضافة القيم التلقائية للأعضاء الاختياريين في واجهة LazyLayoutItemProvider. (Iba8a0)
  • في واجهة برمجة التطبيقات LazyLayoutItemProvider، بدلاً من أن يعرض المصنع دالة lambda القابلة للإنشاء حسب الفهرس، أصبحت لدينا الآن دالة أكثر بساطة قابلة للإنشاء تقبل الفهرس. (Id2196)
  • تمت إعادة تسمية LazyLayoutItemsProvider إلى LazyLayoutItemProvider (I0638c).
  • تمت إعادة تسمية LazyLayoutItemsProvider.itemsCount إلى itemCount (Id409c).
  • تمت إضافة الفرشاة إلى 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)

  • تمت إضافة مفتاح التعديل imeNestedScroll() التجريبي حتى يتمكّن المطوّرون من التحكّم في أداة IME من خلال التمرير. (I60759)

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

  • تراجع ثابت حيث لا تخفي الحقول النصية لوحة المفاتيح عند إزالتها من التركيبة أثناء التركيز. (I7a410 وb/230536793 وb/225541817)
  • إتاحة علامة الحذف عندما يكون الارتفاع محدودًا ولا يناسب كل أسطر النص (Ie528c ، b/168720622)
  • سيتم الآن تعليق حساب "BringIntoViewRequester.bringIntoView" دائمًا إلى أن يكتمل الطلب أو ينقطعه طلب أحدث غير متداخل. سيتم وضع الطلبات المتداخلة في قائمة الانتظار. (I43e7f، b/216790855)
  • استدعاءات BringIntoViewRequester.bringIntoView المتزامنة للمستطيلات المتداخلة تمامًا ستلبي الآن طلب المستطيل الأكبر فقط. (I34be7 وb/216790855 وb/184760918)
  • تم تفعيل includeFontPadding تلقائيًا. من الممكن إيقاف includeFontPadding باستخدام السمة TextStyle.platformTextStyle. في المستقبل القريب، سنغيّر السلوك التلقائي، ولكن إلى حين حلول هذا الوقت، سنغيّر السلوك التلقائي بشكل أفضل (aosp/2058653) وحلّ مشاكل اقتصاص TextField. (I01423، b/171394808)
  • لم يعُد Modifier.bringIntoViewRequester يستخدم onGloballyPositioned. (I630f5)

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

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

الإصدار 1.2.0-alpha08

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

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha08 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha08. يحتوي الإصدار 1.2.0-alpha08 على هذه الالتزامات.

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

  • عرض جميع الأوزان المتاحة لخطوط الأنظمة على Android عند استخدام FontFamily.SansSerif سيؤدي ذلك إلى استخدام أسماء خطوط احتياطية مثل sans-serif-medium داخليًا على واجهة برمجة التطبيقات 21-28. ويُعدّ هذا تغييرًا في السلوك، لأنّ البيانات المتعلّقة بالوزنَين 400 و700 فقط كانتا متاحتَين في واجهات برمجة التطبيقات من 21 إلى 28. (I380fe، b/156048036، b/226441992)
  • تقبل الفقرة والفقرة المتعددة الآن المَعلمتَين Constraints. لا يُعدّ اجتياز Constraints.maxHeight عملية في الوقت الحالي، ولكنه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل القطع بناءً على الارتفاع. (I6afee، b/168720622)
  • يقبل SubcomposeSlotReusePolicy.getSlotsToRetain() الآن فئة مخصصة تشبه MutableSet، والتي لا تسمح بإضافة عناصر جديدة فيها. (Icd314)
  • تم إيقاف الاستهلاك الجزئي (بالترتيب الأدنى أو الموضع) نهائيًا في PointerInputChange. يمكنك استخدام consume() لاستهلاك التغيير بالكامل. يمكنك استخدام isConsumed لمعرفة ما إذا كان شخص آخر قد استخدم التغيير في السابق أم لا.
  • تنشئ أداة PointerInputChange::copy() الآن دائمًا نسخة سطحية. هذا يعني أنّه سيتم استهلاك نُسخ من "PointerInputChange" بعد استهلاك إحدى النُسخ. إذا أردت إنشاء PointerInputChange غير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674)
  • تم تقديم واجهة برمجة تطبيقات LazyLayout تجريبية جديدة. يتيح لك ذلك إنشاء مكوِّنات خاصة بك، مثل LazyColumn من LazyVerticalGrid. تجدر الإشارة إلى أنّ واجهة برمجة التطبيقات في مراحلها الأولى ويمكن تغييرها في الإصدارات المستقبلية. (Iba2bc، b/166591700)
  • تأخذ AndroidFont الآن typefaceLoader كمعلمة دالة إنشائية. (I2c971)
  • يعرض وضع "WindowInsets المصاحب" الآن إذن الوصول (سواء كان يظهر على الشاشة، بغض النظر عمّا إذا كان يتقاطع مع النافذة) والحجم المحتمل في حال توفُّره على الجهاز ولكنه غير نشِط حاليًا. (I65182، b/217770337)

الإصدار 1.2.0-alpha07

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

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha07 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha07. يحتوي الإصدار 1.2.0-alpha07 على هذه الالتزامات.

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

  • تمت إضافة واجهة برمجة تطبيقات PinnableParent تسمح للعناصر الثانوية ذات التنسيقات الكسولة لمنع التخلص من العناصر التي يتم إنشاؤها حاليًا (Ibbdd0، b/184670295).
  • لدى LazyListLayoutInfo وLazyGridLayoutInfo الآن حقلان beforeContentPadding وafterContentPadding (I3b628، b/200920410)
  • تمت إضافة KeyboardType.Decimal كبديل لـ Keyboard.Number لتضمين فاصل عشري في أداة IME على وجه التحديد. (Iec4c8، b/209835363)
  • أضِف خطًا جديدًا واصف الخط(DeviceFontFamilyName) للبحث عن الخطوط المثبَّتة من خلال النظام أثناء السلاسل الاحتياطية للخطوط. (I30468، b/219754572)
  • PointerEventType.Scroll وPointerEvent.scrollDelta واجهة برمجة تطبيقات ثابتة حاليًا (I574c5، b/225669674)
  • يمكن تغيير إعدادات التوافق المؤقتة التي تمت إضافتها لـ includeFontPadding في TextStyle/ParagraphStyle. includeFontPadding من خلال TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). وهذا خيار ضبط مؤقت لتفعيل نقل البيانات وستتم إزالته. (If47be ، b/171394808)
  • تم تعديل FontFamily.Resolver لدمج إعداد تسهيل استخدام النص الغامق على مستوى النظام (I6c1e7).
  • إنّ سمة الإضافة consumeWindowInsets في ComposeView تسمح للمطوّرين بإيقاف استهلاك نافذة Android WindowInsets. ويسمح ذلك بفصل ComposeViews في التسلسل الهرمي على كل منها تطبيق WindowInsets بدون التداخل مع بعضها البعض. (I0ef08، b/220943142)

الإصدار 1.2.0-alpha06

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

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha06 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه الالتزامات.

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

  • تمت إضافة إجراء دلالي RequestFocus لطلب التركيز على الهدف الذي يمكن التركيز عليه. (I17b71)
  • تم الآن دمج FocusOrder في FocusProperties، والآن أصبح focusProperties() يمتلك كل إمكانات focusOrder(). تم إيقاف FocusOrder وfocusOrder() نهائيًا. ويجب استبدال الحقل focusOrder() الذي يقبل السمة focusRequester بمعدِّل focusRequester() بالإضافة إلى focusProperties(). وهذا يسمح للمفاتيح بفصل المخاوف بشكل أقوى. (I601b7)
  • تمت إضافة WindowInsets.asPaddingValues(Density) للسماح للمطوِّرين بإجراء الإحالة الناجحة بدون الحاجة إلى الدمج. (I94c35)
  • تم تعديل عملية تحليل الرسومات المتّجهة القابلة للرسم لإتاحة النسخ المطابق التلقائي، وذلك لقلب محتوى VectorPainter إذا كان اتجاه التنسيق الحالي هو RTL. (I79cd9، b/185760237)

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

  • ستعمل مفاتيح تعديل التمرير (Modifier.verticalScroll() وModifier.horizontalScroll() وModifier.scrollable()) على الانتقال للأعلى أو للأسفل لإبقاء الجزء القابل للإنشاء محل التركيز مرئيًا في حال تغيير حجم منطقة التمرير وكان العنصر القابل للإنشاء الذي تم التركيز عليه مرئيًا.
  • سيتم الآن الاحتفاظ بالحقول النصية فوق لوحة المفاتيح عند التركيز عليها وتظهر لوحة المفاتيح، وذلك عندما يكون وضع "الإدخال الهادئ" داخل مساحة قابلة للتمرير غير كسول وADJUST_RESIZE. (I4a485 وb/190539358 وb/192043120 وb/216842427)

الإصدار 1.2.0-alpha05

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

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha05 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha05. يحتوي الإصدار 1.2.0-alpha05 على هذه الالتزامات.

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

  • LazyVerticalGrid وLazyHorizontalGrid ثابتان الآن. (I307c0)
  • تم استبدال LazyGridItemInfo.Unknown بـ LazyGridItemInfo.UnknownRow وLazyGridItemInfo.UnknownColumn منفصلتين (I56d51)
  • تم نقل LazyVerticalGrid/LazyHorizontalGrid وجميع واجهات برمجة التطبيقات ذات الصلة إلى حزمة فرعية واحدة (.grid). يُرجى تعديل عمليات الاستيراد من androidx.compose.foundation.lazy إلى androidx.compose.foundation.lazy.grid. (I2d446، b/219942574)
  • النص: تم إيقاف includeFontPadding تلقائيًا الآن. يتم التعامل مع مشاكل اقتصاص المحتوى الناتجة عن includeFontPadding=false ولا يُفترَض أن يتم اقتصاصها للنصوص البرمجية الطويلة. (I31c84، b/171394808)
  • تعرض الواجهة التي تم قياسها الآن موقعparentData (I3313f)
  • تم تقديم Modifier.onFocusedBoundsChanged تجريبي للسماح بمراقبة حدود العناصر الثانوية القابلة للتركيز. (I14283 وb/220030968 وb/190539358 وb/192043120 وb/216842427)
  • تمت إضافة LazyHorizontalGrid. (I61ae7، b/191238807)
  • تمت إضافة واجهة برمجة تطبيقات LazyVerticalGrid جديدة لتحديد أحجام المحاور المتقاطعة (I17723).
  • تمت إضافة عنصر تعديل FocusGroup (I64bc0، b/213508274، b/184670295)

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

  • ستعرض ميزة "WindowInsets.toString()" الآن القيم الصحيحة. (I1585d)

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

  • تم التحديث لاستخدام coroutines في Kotlinx 1.6.0 (I3366d)

الإصدار 1.2.0-alpha04

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

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha04. يحتوي الإصدار 1.2.0-alpha04 على هذه الالتزامات.

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

  • لم يعُد مطلوبًا من "BringIntoViewResponders" تمرير الطلبات يدويًا إلى المجيبين الرئيسيين، وبدلاً من ذلك، يُطلب منهم عرض المستطيل على الفور الذي يريدون أن يعرضه أحد الوالدَين. (I8e66a)
  • دعم تحميل الخط غير المتزامن في Text (I77057، b/214587005)
  • يتوافق LazyVerticalGrid الآن مع line breaking قبل العناصر التي لا يتناسب فيها مدى داخل السطر الحالي. (I05c40، b/207462103)
  • تم تغيير الاسم "excludeFromSystemGestures" إلى "systemGesturesExclusion" (I19526).
  • تتيح LazyVerticalGrid الآن استخدام تنسيق عكسي. (I6d7d7 وb/215572963 وb/211753558)
  • أضِف طريقة WindowInsets.only() للسماح للمطوّرين بتضمين أبعاد من WindowInsets فقط. (I14c94، b/217768486)
  • تمت إضافة ComposableTarget وComposableTargetMarker وComposableOpenTarget، ما يتيح إعداد تقارير حول وقت تجميع البيانات عند استدعاء دالة قابلة للإنشاء تستهدف تطبيق لم يكن مصمّمًا لاستخدامه.

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

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

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

  • يُسمح الآن بتمرير إزاحة التمرير السلبي إلى LazyGridState.scrollToItem() وLazyGridState.animateScrollToItem(). (I025c6، b/211753558)
  • دعم تحميل الخط غير المتزامن في حقل TextField (Icc4bf، b/214587005)

الإصدار 1.2.0-alpha03

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

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha03. يحتوي الإصدار 1.2.0-alpha03 على هذه الالتزامات.

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

  • تم إيقاف طُرق notifyFocusedRect في TextInputSession وTextInputService نهائيًا ولن يتم طلبها. يمكنك استخدام BringIntoViewRequester كبديل. (Ia4302 وb/192043120 وb/216842427 وb/178211874)
  • تم تفعيل الرسوم المتحركة لعناصر الشبكات الكسولة باستخدام Modifier.animateItemPosition(). (Ib6621، b/211753218)
  • ينشر BringIntoViewRequester الآن الطلبات إلى جهاز Android View المستضيف. (Ia7a51)
  • أصبح "FontFamilyResolver" متاحًا الآن عبر LocalFontFamilyResolver.current
      .
    • تمت إضافة createFontFamilyResolver(context) وcreateFontFamilyResolver(context, coroutineScope) لإنشاء برامج تعيين FontFamily جديدة خارج نطاق استخدام الكتابة.
    • أصبحت الفقرة والفقرة المتعددة الآن FontFamily.Resolver.
    • يحتوي TextLayoutResult.layoutInput.fontFamilyResolver الآن على برنامج التعيين المستخدَم لهذا التنسيق، وقد تم إيقافه نهائيًا TextLayoutResult.layoutInput.resourceLoader لأنّه لم يعُد مستخدمًا. (Id5a45، 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).
  • يمكنك الآن تحديد نوع المحتوى للعناصر LazyVerticalGrid. تقبل الآن دوال السلع/العناصر على LazyGridScope هذه المَعلمة. يساعد توفير هذه المعلومات تركيب العنصر في إعادة استخدام المنطق لجعله أكثر كفاءة و إعادة استخدام المحتوى بين العناصر من النوع المشابه فقط. (I7b355، b/215372836)
  • لدى LazyListLayoutInfo وLazyGridLayoutInfo الآن مواقع جديدة: viewportSize وorientation وreverseLayout (Ifc8ed وb/200920410)
  • يمكنك الآن تحديد نوع المحتوى لعناصر LazyColumn/LazyRow - تقبل دوال العناصر/العناصر في LazyListScope هذه المَعلمة. يساعد توفير هذه المعلومات تركيب العنصر في إعادة استخدام المنطق لجعله أكثر كفاءة و إعادة استخدام المحتوى بين العناصر من النوع المشابه فقط. (I26506)
  • إنّ دالة إنشاء SubcomposeLayoutState التي تقبل maxSlotsToRetainForReuse تم إيقافها نهائيًا الآن. بدلاً من ذلك، هناك دالة إنشاء جديدة تقبل SubcomposeSlotReusePolicy - وهي واجهة جديدة تسمح بمزيد من التحكم الدقيق في الخانات التي يجب الاحتفاظ بها لإعادة الاستخدام في المستقبل. (I52c4d)
  • إضافة تعديلات لـ WindowInsets، لكل من المساحة المتروكة وتغيير الحجم. يسمح هذا لبعض المحتوى بالتوسع إلى منطقة البداية، مع إبقاء المحتوى الأساسي خارج منطقة الداخلية. على سبيل المثال، يمكن استخدام windowInsetsPadding لإخلاء مساحة المحتوى لتجنب المناطق التي قد تكون مغطاة كليًا أو جزئيًا. (Id0395، b/213942085)

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

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

الإصدار 1.2.0-alpha02

26 يناير 2022

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha02. يحتوي الإصدار 1.2.0-alpha02 على هذه الالتزامات.

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

  • تمت إضافة NonRestartableComposable إلى الأساليب التي تحتوي على أعباء زائدة من الطرق الحالية بدون منطق معقد. وهذا من شأنه أن يقلل من عمليات التحقق من التذكر التي أنشأها التجميع البرمجي (يساوي) لجميع المعلمات التي تتكرر في الدالة الداخلية التي يتم استدعائها. (I90490)
  • تمت إضافة مُعدِّلات excludeFromSystemGesture للوصول سهل إلى setSystemGestureExclusionRects في Android (I46f07)

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

  • تم تحسين سلوك مكبّر اختيار النص ليلائم مكبّر النظام الأساسي. (Idd918، b/206833278)
  • يمكن الآن استخدام عجلة الماوس في LazyColumn وLazyRow وModifier.verticalScroll وغيرها من الحاويات التي تستخدم Modifier.scrollable. (I2b5e1، b/198214718)

الإصدار 1.2.0-alpha01

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

تم طرح androidx.compose.foundation:foundation:1.2.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.2.0-alpha01. يحتوي الإصدار 1.2.0-alpha01 على هذه الالتزامات.

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

  • تمت إضافة المعلمة الجديدة userScrollEnabled إلى LazyColumn وLazyRow وLazyVerticalGrid للسماح للمستخدمين بإيقاف التمرير الذي يبدأه المستخدم مؤقتًا أو نهائيًا من خلال إيماءات اللمس أو إجراءات تسهيل الاستخدام. وسيظل مسموحًا بالتنقّل آليًا عبر الطرق على تلك الحالة. (I7eae9، b/201150093)
  • أضِف onSizeChanged إلى معدِّل المكبِّر. (I6879f)
  • يظهر تطبيق "المكبِّر" الآن عند سحب مقابض الاختيار في SelectionContainer. (I30b38، b/139320979)

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

  • إصلاح مقبض مؤشر TextField الذي لا يخفي عند التمرير خارج العرض. (I14552، b/208883748)

التعديلات على المهام التابعة للتبعية

  • وتعتمد الآن على لغة 1.6.10 في Kotlin.

الإصدار 1.1

الإصدار 1.1.1

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

تم طرح androidx.compose.foundation:foundation:1.1.1 وandroidx.compose.foundation:foundation-layout:1.1.1. يتضمّن الإصدار 1.1.1 هذه الالتزامات.

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

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

الإصدار 1.1.0

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

تم طرح androidx.compose.foundation:foundation:1.1.0 وandroidx.compose.foundation:foundation-layout:1.1.0. يتضمّن الإصدار 1.1.0 هذه الالتزامات.

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

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

الإصدار 1.1.0-rc03

26 يناير 2022

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

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

  • تم التعديل لإتاحة Compose Material 1.1.0-rc03

الإصدار 1.1.0-rc01

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

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

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

  • يُسمح الآن بتمرير إزاحة التمرير السلبي إلى LazyListState.scrollToItem() وLazyListState.animateScrollToItem(). (Iceb90، b/184252837)
  • تم إصلاح خطأ أدى إلى فقدان إجراءات التمرير المتعلّق بتسهيل الاستخدام (I7cbfb)

الإصدار 1.1.0-beta04

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

تم طرح androidx.compose.foundation:foundation:1.1.0-beta04 وandroidx.compose.foundation:foundation-layout:1.1.0-beta04. يتضمّن الإصدار 1.1.0-beta04 هذه الالتزامات.

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

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

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

  • تم محو إمكانية القيم الفارغة في androidx.core.view(I7078a، b/204917439)
  • تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح استخدام PointerInputchange ككل أو معرفة ما إذا تم استهلاكها أم لا. (I2e59d)
  • يتم عرض تطبيق مصغّر للمكبِّر عند سحب المؤشر أو مقابض الاختيار داخل الحقول النصية. (I5391e، b/203781358)

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

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

الإصدار 1.1.0-beta03

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

تم طرح androidx.compose.foundation:foundation:1.1.0-beta03 وandroidx.compose.foundation:foundation-layout:1.1.0-beta03. يتضمّن الإصدار 1.1.0-beta03 هذه الالتزامات.

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

  • تمت إضافة دعم المسافات الأفقية إلى ميزة LazyVerticalGrid. (I7e2fa، b/176758183)
  • تمت إضافة إمكانية إضافة إمكانية تحريك مواضع عناصر القوائم الكسولة. يتوفّر مفتاح تعديل جديد ضمن LazyItemScope باسم Modifier.animateItemPlacement(). مثال على الاستخدام:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • عند توفير مفتاح من خلال LazyListScope.item أو LazyListScope.items، ستفعِّل هذه الأداة الصور المتحركة لإعادة ترتيب العناصر. بالإضافة إلى إعادة ترتيب العناصر، ستتم أيضًا إضافة جميع التغييرات الأخرى في الموضع الناتجة عن أحداث مثل تغييرات الترتيب أو المحاذاة. (I59e7b، b/150812265)

الإصدار 1.1.0-beta02

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

تم طرح androidx.compose.foundation:foundation:1.1.0-beta02 وandroidx.compose.foundation:foundation-layout:1.1.0-beta02. يتضمّن الإصدار 1.1.0 -beta02 هذه الالتزامات.

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

  • ستتأخر الآن الأمواج والمؤشرات الأخرى فقط إذا كانت داخل حاوية Modifier.scrollable()، بدلاً من أن تتأخر دائمًا بالنسبة إلى حدث معطل. (Ibefe0، b/203141462)
  • تمت إضافة واجهة برمجة تطبيقات BringIntoView التجريبية التي تتيح لك إرسال طلب إلى الوالدَين ليتمكنوا من التمرير لعرض أحد العناصر (Ib918d، b/195353459).

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

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

الإصدار 1.1.0-beta01

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

تم طرح androidx.compose.foundation:foundation:1.1.0-beta01 وandroidx.compose.foundation:foundation-layout:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه الالتزامات.

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

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

الإصدار 1.1.0-alpha06

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

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

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

  • تمت إضافة عبء زائد بدون أطفال في Layout، مع تحسين الكفاءة (Ib0d9a).
  • تعرض SemanticsNodeInteraction.performSemanticsAction الآن SemanticsNodeInteraction الذي تم استدعاء الدالة فيه. (I9e5db)
  • تمت إضافة performScrollToNode(matcher: SemanticsMatcher) الذي يمرّر حاوية قابلة للتمرير إلى المحتوى الذي تتم مطابقته من خلال المُطابق المحدد. (Ic1cb8)

الإصدار 1.1.0-alpha05

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

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

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

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

  • تم إصلاح إمكانية الوصول إلى العناصر القابلة للتمرير (الكسول وغير الكسول) في ما يتعلق بالتمرير (I6cdb0)

الإصدار 1.1.0-alpha04

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

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

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

  • تم إيقاف performGesture وGestureScope نهائيًا، وقد تم استبدالهما بـ performTouchInput وTouchInjectionScope. (Ia5f3f، b/190493367)
  • تمت إضافة touchBoundsInRoot إلى SemanticsNode يتضمّن الحد الأدنى لحجم ناحية اللمس المستهدفة لكي يتمكّن المطوّرون من التأكّد من أنّ مساحات اللمس تستوفي الحدّ الأدنى لتسهيل الاستخدام. (I2e14b، b/197751214)

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

  • أتحنا إمكانية الانتقال الزائد للانتقال على الأجهزة التي تعمل بنظام التشغيل Android 12. (Iccf3c، b/171682480)

الإصدار 1.1.0-alpha03

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

تم طرح androidx.compose.foundation:foundation:1.1.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه الالتزامات.

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

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

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

  • تمت إضافة تأثير التوهج للتمرير. تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة تعملOver ScrollConfiguration للسماح بضبط التأثير المرئي الذي يتم عند النقر فوقه. توفير قيمة فارغة لإيقاف تأثير التمرير الزائد. (I0c304، b/171682480)
  • يحتوي AuePointerEventScope الآن على withSession() وwithSessionOrNull() (I507f0 وb/179239764 وb/182397793).
  • تمت إضافة طريقة الاختبار للحصول على الحدود المقتطعة. (I6b28e)
  • تمت إضافة الحد الأدنى لحجم مساحة اللمس المستهدفة إلى ViewConfiguration للاستخدام في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)

الإصدار 1.1.0-alpha02

18 آب (أغسطس) 2021

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

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

  • تمت إضافة إصداري DpSize لكل من Modifier.size وrequiredSize (I3fc7e، b/194219828)

الإصدار 1.1.0-alpha01

4 آب (أغسطس) 2021

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

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

  • تم تعديل طريقة DrawScope#drawImage التي تستخدم مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterQuality الاختيارية. يعد ذلك مفيدًا لفن البكسل المراد أن يكون متقطّعًا عند زيادته ليتوافق مع فن البكسل. تم تحديث BitmapPainter + الصورة لإنشاء معلَمة عاملة تصفية اختيارية (Ie4fb0، b/180311607)
  • يمحو TextField الآن التحديد عند الضغط على زر الرجوع، مما يتطابق مع سلوك Android EditText. (I3ca16، b/174173645)
  • إضافة مقبض المؤشر. (I07a82، b/173016579)

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

  • إنّ التنقّل من خلال الإجراءات الدلالية للقوائم البطيئة ومكوّنات التمرير العادي أصبح الآن متحركًا (Id9066، b/190742024).

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

  • تقبل LazyVerticalGrid الآن مَعلمات الترتيب الأفقي والرأسي على حدّ سواء. (If9c92)

الإصدار 1.0

الإصدار 1.0.5

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

تم طرح androidx.compose.foundation:foundation:1.0.5 وandroidx.compose.foundation:foundation-layout:1.0.5. يتضمّن الإصدار 1.0.5 هذه الالتزامات.

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

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

الإصدار 1.0.4

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

تم طرح androidx.compose.foundation:foundation:1.0.4 وandroidx.compose.foundation:foundation-layout:1.0.4. يتضمّن الإصدار 1.0.4 هذه الالتزامات.

التعديلات على المهام التابعة للتبعية

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

الإصدار 1.0.3

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

تم طرح androidx.compose.foundation:foundation:1.0.3 وandroidx.compose.foundation:foundation-layout:1.0.3. يتضمّن الإصدار 1.0.3 هذه الالتزامات.

التعديلات على المهام التابعة للتبعية

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

الإصدار 1.0.2

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

تم طرح androidx.compose.foundation:foundation:1.0.2 وandroidx.compose.foundation:foundation-layout:1.0.2. يتضمّن الإصدار 1.0.2 هذه الالتزامات.

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

الإصدار 1.0.1

4 آب (أغسطس) 2021

تم طرح androidx.compose.foundation:foundation:1.0.1 وandroidx.compose.foundation:foundation-layout:1.0.1. يتضمّن الإصدار 1.0.1 هذه الالتزامات.

التعديلات على المهام التابعة للتبعية

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

الإصدار 1.0.0

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

تم طرح androidx.compose.foundation:foundation:1.0.0 وandroidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0-rc02 وandroidx.compose.foundation:foundation-layout:1.0.0-rc02. يحتوي الإصدار 1.0.0-rc02 على هذه الالتزامات.

  • تم تحديث عرض الحدود للأشكال العامة لمعالجة المشاكل في المسارات التي تم تحديدها بأبعاد ثابتة. (aosp/1748871، b/191817116)

الإصدار 1.0.0-rc01

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

تم طرح androidx.compose.foundation:foundation:1.0.0-rc01 وandroidx.compose.foundation:foundation-layout:1.0.0-rc01. يحتوي الإصدار 1.0.0-rc01 على هذه الالتزامات.

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

  • يدعم Canvas الآن معلمة contentDescription لإمكانية الوصول. (Ib547c)

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

  • سيؤدي إيقاف الزر والبطاقة ومربّعات الاختيار وModifier.clickable(enabled=false) بشكل عام إلى منع النقرات من الانتقال إلى العنصر الرئيسي. (Ic2c3b، b/183908811)

الإصدار 1.0.0-beta09

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

تم طرح androidx.compose.foundation:foundation:1.0.0-beta09 وandroidx.compose.foundation:foundation-layout:1.0.0-beta09. يتضمّن الإصدار 1.0.0-beta09 هذه الالتزامات.

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

  • تمت إزالة ManualFrameClock. إذا كنت بحاجة إلى التحكّم في الصور المتحركة، استخدِم composeTestRule.mainClock بدلاً من ذلك. (I3c3e8، b/189951065)
  • تغيير enum Role Role وLiveRegionMode إلى فئات مضمّنة باستخدام دالة إنشاء خاصة (Id1890)
  • يتم تحويل الكتابة بالأحرف اللاتينية الكبيرة في لوحة المفاتيح إلى فئة مضمّنة. (Id5a1c)
  • تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)

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

  • والآن، عند تحديد المفاتيح الفريدة لعناصر LazyColumn/الصف، سيتم الاحتفاظ بموضع التمرير بناءً على المفتاح، ما يعني أنه في حال إضافة/إزالة عناصر قبل العنصر المرئي الحالي، سيتم الاحتفاظ بالعنصر الذي لديه المفتاح المحدّد كأول عنصر مرئي. (Id263f، b/184257857)
  • الثوابت الرئيسية هي @BETAComposeUiApi حاليًا. يمكن أن يؤدي استهلاك التعليمات البرمجية إلى إعلان ثوابت خاصة قبل الاستقرار. (Ia5d48)
  • تمت إضافة IdlingStrategy إلى AndroidComposeTestRule الذي يمكن استخدامه من خلال إطارات عمل الاختبار لتثبيت آلية بديلة للانتظار أو تحقيق التوتر. استخدِم AndroidComposeTestRule.setIdlingStrategyFactory() قبل أن يبدأ الاختبار في تثبيت استراتيجيتك الخاصة. (I608fa)

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

يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (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> واصفًا للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، يجب وصف السمة Landroidx/compose/runtime/SlotTable; للصف androidx.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.foundation:foundation:1.0.0-beta08 وandroidx.compose.foundation:foundation-layout:1.0.0-beta08. يتضمّن الإصدار 1.0.0-beta08 هذه الالتزامات.

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

  • يتم استبدال تعداد Nested ScrollSource بفئة مضمّنة. (Ie321b، b/187055290)
  • تمت إعادة هيكلة استخدامات التعداد للفئات المضمّنة لتجنّب حدوث مشاكل ذات شمولية عند إضافة عبارات عند إضافة قيم تعداد جديدة. (I2b5eb)
  • لإضافة مهلة النقر إلى المحتوى القابل للنقر / التبديل لمنع عرض تمويج أثناء التمرير / السحب (Ia2704، b/168524931)
  • لم تعد خصائص ContentDescription والدلالات النصية قيمًا مفردة بل قوائم. وهذا يمكّن من دمجها كما هي بدلاً من التسلسلات. تم أيضًا توفير واجهات برمجة تطبيقات اختبارية أفضل للاستفادة من هذه التغييرات (Ica6bf، b/184825850)
  • تم إيقاف Modifier.focusModifier() نهائيًا واستبداله بـ Modifier.focusTarget() (I6c860).
  • يتم استبدال تعداد KeyboardType بفئة مضمّنة. (I73045، b/187055290)
  • تم استبدال تعداد FocusState بواجهة FocusState (Iccc1a، b/187055290).
  • يتم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
  • أصبحت دوال AnnotatedString.withAnnotation الآن MetadataTextApi بدلاً من تجريبية ComposeApi. (I0cd0a)
    • أصبحت الآن دالة إنشاء وحدة TextUnit مع TextUnitType لهذا النوع من "تجريبية TextApi" بدلاً من تجريبية ComposeApi.
  • أصبحت PaddingValues الآن @Stable بدلاً من @Immutable (I88c50)

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

  • إصلاح أعطال الضغط المطوّل على المنطقة الفارغة في نص غير فارغ. (I33ab5، b/187437299)
  • إظهار شريط الأدوات بعد SelectAll (I495d9، b/185919613)
  • إصلاح الحاويات القابلة للتمرير التي تقتطع عناصرها الثانوية على المحور المتقاطع. كان من السهل إعادة إنتاجه إذا كان لديك LazyRow مع عناصر البطاقة. والآن لن يتم اقتصاص الظل. (Icb635، b/186318448)
  • تم إصلاح مشكلة توقُّف الموجات / المؤشرات الأخرى أحيانًا عند نقرة طويلة عند استخدام Modifier.combinedClickable (I2298c، b/186223077)
  • الآن سيستفيد detectDragGesures وdetectVerticalGestures وdetectHorizontalGestures من تغيير الموضع تلقائيًا، وليس هناك حاجة إلى استدعاء change.consumePosition Change في عمليات معاودة الاتصال onDrag (I42fc4 وb/185096350 وb/187320697)
  • تم تغيير Modifier.onGloballyPositioned() لتسجيل إحداثيات هذا المعدِّل في سلسلة التعديل، وليس إحداثيات التنسيق بعد تطبيق جميع مفاتيح التعديل. وهذا يعني أن ترتيب المُعدّلات يؤثر الآن في الإحداثيات التي سيتم إعداد تقارير بها. (Ieb67d، b/177926591)

الإصدار 1.0.0-beta07

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

تم طرح androidx.compose.foundation:foundation:1.0.0-beta07 وandroidx.compose.foundation:foundation-layout:1.0.0-beta07. يتضمّن الإصدار 1.0.0-beta07 هذه الالتزامات.

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

  • تم طرح منطق الجلب المُسبَق للعنصر المرئي التالي في LazyColumn/Row (I8a4bc، b/184940225).
  • تمت إضافة مؤشر تحديد المقطع (Iff80d، وb/183408447)

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

  • سيحافظ الآن العمود الكسول/الصف على ما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (وليسان تم التخلص منهما) حتى في حال الانتقال للخارج. ويسمح هذا للمكون بإعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد مما يحسن أداء التمرير. (Ie5555)
  • إزالة الخلفية بالألوان (I38660)
  • رسم خلفية محدّدة باستخدام DrawScope (I73c61، b/186674472)
  • تم إصلاح انحدار تجريبي06 يؤثر في الصف/العمود باستخدام ترتيبات المسافة بين السطور لتخطيط العناصر الثانوية المرجحة. (Ifaf8c، b/187326588)

الإصدار 1.0.0-beta06

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

تم طرح androidx.compose.foundation:foundation:1.0.0-beta06 وandroidx.compose.foundation:foundation-layout:1.0.0-beta06. يتضمّن الإصدار 1.0.0-beta06 هذه الالتزامات.

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

  • حل التعارض باستخدام إيماءة التنقّل (I1145e)
  • تمت إضافة واجهات برمجة تطبيقات AccessibilityInfo وCOItemInfo API التي تتيحان وضع علامة على المجموعة وعناصرها الخاصة بخدمات تسهيل الاستخدام (Id54ef، b/180479017).
  • تمت إضافة SemanticsActions.ScrollToIndex للانتقال إلى قائمة تضم العناصر المفهرَسة إلى العنصر الذي يحتوي على فهرس معيّن، وSemanticsProperties.IndexForKey للحصول على فهرس العنصر في قائمة تتضمن العناصر المرتبطة بمفاتيح. يتم تنفيذ كلا الإجراءين من خلال LazyList.
    • تمت إضافة SemanticsNodeInteraction.performScrollToIndex الذي يمرّر القائمة إلى الفهرس المحدّد، وSemanticsNodeInteraction.performScrollToKey الذي يمرّر القائمة إلى العنصر باستخدام المفتاح المحدّد. (I4fe63 وb/178483889 وb/161584524)
  • تحفظ AnnotatedString الدعم في TextFieldValue.Saver. تمت إضافة دالتي addTtsAnnotation وwithAnnotation إلى أداة AnnotatedString.Builder (I8cbdc, b/178446304).
  • تمت إضافة قيم معلَمات 0.dp التلقائية إلى PaddingValues(horizontal, vertical) (I05571، b/181336792)

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

  • لم تعُد العناصر الثانوية للصفوف والأعمدة التي تحتوي على weight(fill = false) تجعل العنصر الرئيسي يملأ مساحة المحور الرئيسي المتاحة بالكامل. (Ied94d، b/186012444، b/184355105)

الإصدار 1.0.0-beta05

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

تم طرح androidx.compose.foundation:foundation:1.0.0-beta05 وandroidx.compose.foundation:foundation-layout:1.0.0-beta05. يتضمّن الإصدار 1.0.0-beta05 هذه الالتزامات.

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

  • تم الآن تمييز واجهة FlingBehavior على أنّها @Stable. يجب أن تلتزم جميع عمليات التنفيذ بعقد @Stable. (I93354، b/184830577)

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

  • تم إصلاح إجراءات التمرير حول إمكانية الوصول في عناصر 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.foundation:foundation:1.0.0-beta04 وandroidx.compose.foundation:foundation-layout:1.0.0-beta04. يتضمّن الإصدار 1.0.0-beta04 هذه الالتزامات.

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

  • أعد تسمية readSoftwareKeyboard وshowSoftwareKeyboard على SoftwareKeyboardController إلى hide() وshow() على التوالي.
    • قدِّم واجهة ProductionLocal الكاملة لـ LocalSoftwareKeyboardController، مع السماح بتعيينها (مفيدة بشكلٍ خاص في الاختبارات) (I579a6)
  • تم تقديم TextOverflow.Visible. (Ic8f89)
  • تمّت إزالة الأحداث العلنية من RowScope وColumnScope وBoxScope وBoxWithConstraintsScope. (I4e83e، b/181869067)

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

  • تم إصلاح المشكلة التي كانت تؤدي إلى وضع عناصر LazyColumn/LazyRow على الحواف بشكل غير صحيح بعد الانتقال السريع (Ie4d13، b/183877420).
  • قبل هذا التغيير، كانت الدوال القابلة للإنشاء المحلية قابلة للتخطّي استنادًا إلى مَعلماتها. بعد هذا التغيير، لن يتم تخطّي أي دوال محلية قابلة للإنشاء. يتم إجراء هذا التغيير لأنّه من الشائع والمتوقع أن تجمع الدوال المحلية المعلَمات من العنصر الرئيسي، ويعدّ تخطّيها مصدرًا شائعًا للأخطاء.

    للتلخيص، ضع في اعتبارك المثال:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    قبل إجراء هذا التغيير، كان يتم دائمًا تخطّي الدالة القابلة للإنشاء في ShowCount، حتى بعد تعديل معلَمة count. لقد اختلف الوضع اليوم. (I5648a)

الإصدار 1.0.0-beta03

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

تم طرح androidx.compose.foundation:foundation:1.0.0-beta03 وandroidx.compose.foundation:foundation-layout:1.0.0-beta03. يتضمّن الإصدار 1.0.0-beta03 هذه الالتزامات.

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

  • تم إيقاف DefaultMonotonicFrameClock نهائيًا. عند الاتصال بالرقم withFrameNanos أو الرقم Recomposer.runRecomposeAndApplyChanges بدون MonotonicFrameClock، سيتم الآن طرح الرقم IllegalStateException. (I4eb0d)

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

  • يُسمى الآن FlingBehavior.performFling() حتى عندما تكون السرعة 0 (I0b6e5، b/181237123)

الإصدار 1.0.0-beta02

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

تم طرح androidx.compose.foundation:foundation:1.0.0-beta02 وandroidx.compose.foundation:foundation-layout:1.0.0-beta02. يتضمّن الإصدار 1.0.0-beta02 هذه الالتزامات.

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

  • تمت إضافة العديد من التحسينات الصغيرة في عملية القياس المنطقية لعمود "LazyColumn" (Ic6889).
  • تمت إضافة واجهة برمجة تطبيقات محلية جديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController لتحلّ محلّ واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053)
  • تمت إضافة واجهة برمجة تطبيقات محلية جديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController لتحلّ محلّ واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)

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

  • فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29، b/174531520)

الإصدار 1.0.0-beta01

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

تم طرح androidx.compose.foundation:foundation:1.0.0-beta01 وandroidx.compose.foundation:foundation-layout:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه الالتزامات.

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

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

  • تمت إضافة onStart إلى العنوان detectDragGestures (I67269، b/179995594)
  • لم تعد مُعدِّلات تغيير الحجم مع القيم الأساسية تجريبية. (I15744)
  • تأكيدات dp التي تمت إزالتها (I798d2)
  • تمت إزالة معاودة الاتصال SoftwareKeyboard من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
  • تمت إعادة تسمية MeasurementBlocks إلى MeasurementPolicy الذي تحوّل إلى واجهة ممتعة. تم تعديل / تبسيط واجهات برمجة تطبيقات التنسيق لاستخدام MeasurementPolicy. (Icab48 وb/167662468 وb/156751158)
  • تم استبدال الحقل "InteractionState" بـ "[Mutable]InteractionSource"
      .
    • تكون الواجهات مسؤولة عن إصدار / جمع أحداث التفاعل.
    • وبدلاً من تمرير interactionState = remember { InteractionState() } إلى مكونات مثل Button وModifier.clickable()، يمكنك استخدام interactionSource = remember { MutableInteractionSource() }.
    • بدلاً من: Interaction.Pressed in interactionState، عليك استخدام دوال الإضافات في InteractionSource، مثل InteractionSource.collectIsPressedAsState().
    • بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة تدفق التفاعلات. لمزيد من المعلومات، يرجى الاطّلاع على وثائق InteractionSource ونماذجه.
    • (I85965 وb/152525426 وb/171913923 وb/171710801 وb/174852378)
  • تمت إزالة طرق LayoutCoordinates المتوقفة نهائيًا، استخدِم الدالة بدلاً من خاصية positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755).
  • تم إنشاء TextInputSession جديد لجلسات الإدخال من مكونات نصية منخفضة المستوى مثل CoreTextField. (I8817f، b/177662148)
  • تعرض ميزة "ableable" الآن MeasurementSize الذي يمثل الحجم الذي تم قياسه من خلال التخطيط الفرعي. قد لا يلتزم هذا الحجم بقيود القياس. (Ib2729 وb/172560206 وb/172338608)
  • إضافة عنصر تعديل selectGroup الذي يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
  • إضافة LazyListState.animate ScrollToItem

    تؤدي هذه الطريقة إلى التمرير السلس إلى عنصر معين في القائمة. (I4bfd7)

  • تمت إعادة تسمية ScrollableState.smoothScrollBy() إلى animate ScrollBy() تمت إعادة تسمية LazyListState.snapToItemIndex() إلى ScrollToItem() تمت إعادة تسمية ScrollState.smooth ScrollTo() إلى animate ScrollTo() (I35ded).

  • تم استبدال Modifier.zoomable لدي وعلى Modifier.Convertable. تمت إضافة ssmoothPanBy، sameRotationBy كوظيفة. (Ifc32b، b/175294473)

  • أصبح السمة defaultFactory للسمة compositionLocalOf وstaticCompositionLocalOf مطلوبة الآن بدلاً من السمة الاختيارية.

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

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

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

  • تم تغيير Indication#createIndication() إلى Indication#rememberUpdatedIndication(InteractionState) وإزالة المعلَمة InteractionState من IndicationInstance#drawIndication(). يجب أن يكون CommunicationInstance مسؤولاً فقط عن رسم التأثيرات المرئية، وليس عن إطلاق الرسوم المتحركة / حالة الكتابة استجابةً لتغييرات InteractionState. يجب أن يتم تنفيذ هذه الرسوم المتحركة وكتابات الحالة ضمن rememberUpdatedIndication() بدلاً من ذلك. وتم أيضًا تغيير المَعلمة indication في Modifier.indication لتصبح مَعلمة مطلوبة. (Ic1764، b/152525426)

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

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

  • يتم تمثيل موضع التمرير في Modifier.verticalScroll()/horizontal Scroll() مع Ints الآن (I81298).

  • تم تغيير حزمتَي sample ScrollBy وScrollBymethods إلى androidx.compose.foundation.gestures.* (I3f7c1 وb/175294473)

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

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

  • تمت إعادة تسمية defaultMinSizeConstraints إلى defaultMinSize. (I4eaae)

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

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

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

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

  • يقوم drawerState.open() و drawerState.CLOSE() الآن بتعليق الدوال. استخدِم readCoroutineScope() للحصول على نطاق المقطوعة الموسيقية لطلب استدعائها (I16f60، b/175294473).

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

    • لم تعُد الدالة الإنشائية للمقطوعة الموسيقية تقبل مَعلمة رئيسية، وتم إيقافها نهائيًا.
    • تم تحويل CurrentsCompositeKeyHash إلى سمة من المستوى الأعلى قابلة للإنشاء بدلاً من دالة المستوى الأعلى القابلة للإنشاء.
    • تم نقل ComposeData وتكوينGroup إلى مساحة الاسم androidx.compose.runtime.Tooling.
    • تم تصميم ComposableLambda كواجهة بدلاً من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
    • تم تصميم ComposableLambdaN كواجهة بدلاً من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
    • تم نقل دالة shortcutsFlow إلى مساحة الاسم androidx.compose.runtime.
    • لم تعُد طريقة الدمج لـ SnapshotMutationPolicy تجريبية.
    • تمت إزالة دالة clearRoots ذات المستوى الأعلى في @TestOnly. لم يعد من الضروري.
    • تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعُد ضرورية.
    • تمت إزالة Composer.collectKeySourceInfo. لم يعد من الضروري.
    • تمت إزالة طرق isJoinedKey وjoinKeyLeft وjoinKeyRight. لم تعُد ضرورية.
    • تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. ونظرًا للدلالات الدلالية لفئة الملفات في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي وليس التوافق مع المصدر، لذا من المفترض ألا تكون هناك مشكلة لدى معظم المستخدمين.
    • (I99b7d، b/177245490)
  • تمت إعادة صياغة Modifier.scrollable. وهي تستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473).

  • يقبل Modifier.draggable الآن أن يكون DraggableState بدلاً من دالة lambda بسيطة. ويمكنك إنشاء حالة من خلال rememberDraggableState { delta -> } للحصول على السلوك نفسه كما في السابق (Ica70f، b/175294473).

  • تمت إضافة معدِّلات required width(IntrinsicSize) ومعدِّلات requiredHeight(IntrinsicSize) لتغيير الحجم المطلوب إلى الأحجام الأساسية. (I0a6b4)

  • تمت إزالة emptyContent() متوقّف نهائيًا. يمكنك استخدام {} كبديل. (Idb33f، b/179432510)

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

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

  • تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة لتركيب LocalSoftwareKeyboardController بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)

الإصدار 1.0.0-alpha12

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha12 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha12. يحتوي الإصدار 1.0.0-alpha12 على هذه الالتزامات.

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

  • يتطلب Modifier.pointerInput الآن تذكر المفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل الكوروتين لرصد إدخال المؤشر للتبعيات الجديدة. (I849cd)
  • تحديث الاختبار: سيتحقق hasText() من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في الحقل النصي (Iab803)
  • تمت إضافة PaddingValues.Absolute ويمكن استخدامه في واجهات برمجة التطبيقات التي تقبل PaddingValues. (Ia5f30)
  • تم إيقاف onImeActionPerformed نهائيًا. يُرجى استخدام KeyboardActions بدلاً من ذلك (If0bbd ، b/179071523).
  • ومن أجل مطابقة اصطلاحات التسمية مع ImageBitmap وImageVector بشكل أفضل، تمت إعادة تسمية ImagePainter إلى BitmapPainter بحيث تصبح مع VectorPainter التوازي. (Iba381، b/174565889)
  • واجهات برمجة تطبيقات أفضل لاختبار السلسلة الفرعية مع سلسلة فرعية الآن كوسيطة (Icbe78)
  • تم تقديم عنصر سياق الكوروتين InfiniteAnimationPolicy الذي سيتم تطبيقه في الصور المتحركة اللانهائية. وفقًا للإعدادات التلقائية، لا يتم تثبيت أي سياسة إلا عند إجراء اختبارات باستخدام ComposeTestRule. (I50ec4، b/151940543)
  • Animatable.snapTo وAnimatable.stop يتم الآن تعليق الدالتين (If4288)
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في وحدة androidx.activity:activity-compose. (Icf416)
  • تمت إزالة طرق التدمير وcopy() من عدة فئات نادرًا ما كانت تُستخدم. (I26702، b/178659281)
  • تمت إضافة إمكانية استخدام المفاتيح المخصّصة في LazyColumn/LazyRow. يتيح لنا ذلك معالجة إعادة ترتيب العناصر بشكل أكثر ذكاءً. وبالتالي، سيتم نقل الحالة التي خزّنتها في كتل تذكر {} مع العنصر عند إعادة ترتيب العناصر أو إزالة العنصر من المنتصف.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • تم تغيير Indexation#createInstance ليصبح @Composable، وغيّرنا مؤشر محلي ليحتوي على مؤشر، وليس () -> مؤشر. (I5eeea، b/157150564)

  • تم استبدال الحقل "Constraints.enforce" بـ "Constraints.constrain". (I8b8ea)

  • تم إيقاف uploadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. تم إيقاف كل من imageResource وloadImageResource وVFontResource وloadVectorResource نهائيًا. استخدم PainterResource بدلاً من ذلك. (I6b809)

  • لأسباب تتعلق بالأداء، تستخدم دلالات ScrollAxisRange الآن قيم lambdas التي تعرض قيم Floats بدلاً من قيم Float المباشرة. (If4a35، b/178657186)

  • تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في حقل النص لإمكانية الوصول وطرق الاختبار المقابلة للتحقق من الدلالات (I8e07a)

  • لا يدعم Modifier.clickable الآن إمكانية النقر المزدوج والنقر المطوّل. استخدِم Modifier.combinedClickable لتحقيق هذه الوظيفة. (Iafad1)

  • تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)

  • تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)

  • تم إيقاف Modifier.drag المحدَّدFilter نهائيًا. يمكنك استخدام Modifier.pointerInput { detectDragGestures (...)} كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لسحب المحور الواحد (I0ba93، b/175294473).

  • تمت إعادة تسمية "وضع الاستراحة" ليطابق إعادة تسمية "وضع الاستراحة" -> ProductionLocal. في السابق، كان يُطلق على هذه الميزة اسم " ننصحك بإدراج اسم البيئة المحيطة"، وأصبح اسم ProductionLocals يُسمّى LocalFoo. (I2d55d)

  • تم نقل الاختيار إلى الأساس. (I7892b)

  • على غرار الطريقة التي أزلنا بها state { 0 } عنصر قابل للإنشاء، ونسعى الآن إلى الترويج للاستخدام مثل remember { mutableStateOf(0) }، سنزيل savedInstanceState { 0 } القابل للإنشاء. يجب استخدام rememberSaveable { mutableStateOf(0) } بدلاً من ذلك، وسيتم الحفظ واستعادتها تلقائيًا إذا كان النوع المستخدَم داخل MutableState قد تم تخزينه في الحزمة. إذا كنت تمرِّر في السابق كائن توفير مخصص، تحتاج الآن إلى استخدام حمل زائد جديد من عناصر sortable (حفظ القابلة للتذكر) والذي يحتوي على المعلمة stateSaver. سيظهر الاستخدام على النحو التالي: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26، b/177338004)

  • إضافة دلالات كلمة المرور لإمكانية الوصول (I231ce)

  • تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدّم غير المحدَّدة لإمكانية الوصول (I6fe05).

  • قيمة "وقت التشغيل في الصورة المتحركة" غير مضبوطة على نانوثانية (If776a)

  • تم إيقاف @ComposableContract نهائيًا لصالح ثلاثة تعليقات توضيحية أكثر تحديدًا.

    @ComposableContract(restartable = false) أصبح @NonRestartableComposable @ComposableContract(readonly = true) تمت إزالة @ReadOnlyComposable @ComposableContract(preventCapture = true) تمت إزالة @DisallowComposableCalls @ComposableContract(tracked = true). (I60a9d)

  • تم إيقاف أدوات emptyContent() و(@Composable () -> Unit).orEmpty() نهائيًا لأنّه لم يعُد لها أي تأثير أو قيمة إيجابية في الأداء (I0484d).

  • يمكن الآن إغلاق عمليات إعادة الإنشاء. ستستمر إعادة الإنشاءات المغلقة حتى يكتمل تكوين الكوروتينات الثانوية. تمت إعادة تسمية Recomposer.shutDown لإلغاء المقارنة مع علامة الإغلاق. (Ib6d76)

  • تم وضع علامة على واجهات برمجة التطبيقات ذات الصلة بـ LazyVerticalGrid في الحالات التجريبية (Ia53e3، b/178519862)

  • تمت إعادة تسمية renameSavedInstanceState() إلى {8/}Saveable() وتم نقلها إلى androidx.compose.runtime.saveable package. (I1366e، b/177338004)

  • تمت إعادة تسمية RestorableStateHolder إلى SaveableStateHolder وتم نقلها إلى حزمة androidx.compose.runtime.saveable. تمت إعادة تسمية الطريقة الداخلية RestorableStateProvider إلى SaveableStateProvider. تمت إزالة النوع العام بحيث يمكنك فقط تمرير "Any" كمفتاح. لم يعُد هناك حاجة إلى التعليق التوضيحي التجريبي. (I0902e، b/174598702)

  • تم نقل Saver وlistSaver() وmapSaver() والحفظ التلقائي من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)

  • تمت إعادة تسمية العنصر androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac)

  • يتم حذف العديد من واجهات برمجة التطبيقات المتوقّفة منذ فترة طويلة في حزمة واجهة المستخدم. (I2f2dc)

  • تم الآن إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)

  • تمت إعادة تسمية المعلَمات في RounderCornerShape وCutCornerShape وCornerBasedShape من الاسم الأيسر/الأيمن إلى البداية/النهاية من أجل دعم النسخ المطابق التلقائي للشكل في اتجاه الشاشة الكاملة. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape في الحالات التي لا يكون فيها النسخ المطابق التلقائي مطلوبًا. (I61040، b/152756983)

  • تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)

  • تمت إعادة هيكلة واجهة برمجة التطبيقات التي يستهدفها المكون الإضافي Compose إلى واجهة بدلاً من فئة ملموسة. لم تعد الواجهة تستخدم معلمة نوع بعد الآن.

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

  • تمت إزالة فلتر Modifier.scaleالإيماءاتFilter. استخدِم Modifier.zoomable بدلاً من ذلك. ويمكنك بدلاً من ذلك استخدام Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1، b/175294473).

  • لقد تمّ الآن إيقاف موضع الرسوم المتحركة أو قيمة Float نهائيًا. يُرجى استخدام رسوم متحركة بدلاً من ذلك. (I71345، b/177457083)

    • تمت إزالة CoreText و CoreTextField من واجهة برمجة التطبيقات العامة.
    • تمت إزالة التحميل الزائد لحاويات SelectionContainer المتوقفة نهائيًا (I99c19).
  • إزالة دوال التمرير غير المعلّقة التي تم إيقافها بالاستمرار مع التغييرات التي تم إجراؤها في الإصدار الأخير، تمت الآن إزالة دوال التمرير غير المعلّقة بالكامل. يرجى التحويل إلى دوال التعليق بنفس الأسماء. يمكن الحصول على نطاق الكوروتين من خلال rememberCoroutineScope(). (I3d39c, b/178169563)

  • تم إيقاف androidx.compose.foundation.layout.ConstraintLayout نهائيًا لصالح androidx.Restricttlayout.compose.ConstraintLayout. سوف تحتاج إلى إضافة تبعية على androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)

  • تم إيقاف clickOptionFilter وDoubleTapOptionFilter وlongPressOptionFilter و pressNodeaitonActivityFilter نهائيًا. استخدِم Modifier.clickable أو "Modifier.pointerInput" مع وظيفة "detectTapOptions" بدلاً من ذلك. (I6baf9، b/175294473)

  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم تعيينها افتراضيًا على أدوات إعادة الإنشاء التي يتم إنشاؤها ببطء على مستوى النافذة والعاملة بواسطة ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة الإنشاء واستخدام علامات الرسوم المتحركة المستندة إلى FrameNanos مؤقتًا أثناء إيقاف دورة حياة المضيف. (I38e11)

  • توفّر Recomposer.runningRecomposers الآن حالة عامة على مستوى StateFlow من معلومات RecomposerInfo المخصّصة للقراءة فقط حول حالة عملية التركيب مستمرة خلال هذه العملية. نفضّل واجهة برمجة التطبيقات هذه على Recomposer.current() ، والتي تم إيقافها نهائيًا. (If8ebe)

الإصدار 1.0.0-alpha11

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha11 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha11. يحتوي الإصدار 1.0.0-alpha11 على هذه الالتزامات.

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

  • إيقاف ScrollBy غير قيد التعليق، قم بإزالة ScrollTo غير التعليق

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

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

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

  • تلقّى BasicTextField مَعلمة جديدة باسم decorationBox. ويسمح بإضافة الزخارف مثل الرموز والعنصر النائب والتسمية وما شابه ذلك لحقل النص وزيادة منطقة استهداف النتيجة فيه. (I16996)

  • تمت إزالة مَعلمة canDrag من Modifier.draggable (Ic4bec، b/175294473).

  • تمت إزالة AntiFloat.fling الذي يقبل FlingConfig. يُرجى استخدام تعليق Animatable.animateDecay بدلاً من ذلك. (I4659b، b/177457083)

  • تمت إزالة "data class" من الصفوف التالية:

    • محتوى النص المضمّن
    • قائمة اللغة
    • (I605c7)
  • يمكن الآن إنشاء عناصر قابلة للنقر والتبديل والاختيار خارج نطاق الإنشاء (I0a130 وb/172938345 وb/175294473).

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

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

  • تمت إزالة الترتيب المطلق المتوقف نهائيًا. (Iffa96، b/177641870)

  • تمت إضافة المعلمة promotionMinConstraints إلى Box لتحديد ما إذا كان يجب تمرير قيود الحد الأدنى الواردة إلى محتوى Box أم لا. والقيمة التلقائية هي "خطأ". (I0125b، b/152613457)

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

  • تم إيقاف onCommit وonDisposition وonActive لتحلّ محلّها واجهات SideEffect وDisableEffect API (If760e).
  • تمت إعادة صياغة WithConstraints باسم BoxWithConstraints وتم نقلها إلى Foundation.layout. (I9420b، b/173387208)
  • التغييرات على الوظائف المصنعة للخط/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)

  • الكثافة هي الآن نطاق المستلم لواجهات "الترتيب". (I18aad)

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

    • تمت إزالة initial من معلَمات دالة إنشاء واجهة EditorBuffer. (I326d5)
  • تم الآن إيقاف in مؤخرًا وchangeReference() لتحلّ محلّهما currentRecomposeScope، وتذكُّرمراقبة التركيب على التوالي. (I583a8)

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

  • سيتم استبدال المدة ومدة التشغيل بالمللي ثانية الطويلة، وستتم إزالة هذه الخطوة من اعتمادية إدخال المؤشر في تلك الفئات. (Ia33b2 وb/175142755 وb/177420019)

  • يحلّ جهاز تَورِيفْ ذِكْرِ قَائِمَة حِفْظْ لِبَدْءِ التَّرْجَمَة التِّلْقَائِيَّة لِتَشْغِيلِ الرَّسَائِلْ وَهْوَ يَحْتَوِي عَلَى عَلَامَةْ تَشْغِيلْLifecycleMonitorer التَّرْجَمَة الَّتِي تَمَّ قَفْلُهَا.

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

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

  • تمت إعادة تسمية TransformText.conversionedText ليصبح TransformText.text

    • لم تعُد TransformText فئة بيانات (Ie672a).
  • لم تعُد الفئات التالية فئات بيانات:

    • سلسلة تعليقات توضيحية
    • نمط الفقرة
    • نمط ممتد
    • نمط النص
    • عرض الخط
    • زخرفة النص
    • تحويل النص الهندسي
    • فهرس النص
    • نتيجة تخطيط النص
    • TextLayoutInput (Iaff99)
  • تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f، b/170708374)

  • تم إيقاف طرق الإحداثيات العالمية وإنشاء طرق إحداثيات جديدة مستندة إلى النافذة. (Iee284)

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

    • يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
  • تم تصنيف FocusRequester.createRefs الآن على أنها تجريبية لأنه قد تتغير. (I2d898، b/177000821)

  • تمت إعادة تسمية SemanticsProperty تلبيةr.hidden إلى invisibleToUser، وتم وضع علامة عليه تشير إلى @BETAComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية StateDescriptionRange إلىPROGRESSBarRangeInfo. تمت إعادة تسمية Accessibility ScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontal ScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى العمود العموديScrollAxisRange. (Id3148)

  • تم تغيير "التحويل المرئي" ليكون واجهة وظيفية (I3bba4)

  • الاستفادة من TestCoroutineDispatcher في الاختبار (I532b6)

  • تمت إزالة PointerInputData وتعديل PointerInputChange لمنحه جميع حقول PointerInputData. تم جعل PointerInputEvent وPointerInputEventData داخليًا بسبب عدم استخدامهما في أي واجهة برمجة تطبيقات عامة. (Ifff97، b/175142755)

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

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

الإصدار 1.0.0-alpha10

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha10 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha10. يحتوي الإصدار 1.0.0-alpha10 على هذه الالتزامات.

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

  • ImeOptions وKeyboardOptions لا تعد فئة بيانات (I3c898، b/168684531)
  • التغييرات في VisualTransformation API
    • تمت إعادة تسمية OffsetMap إلى OffsetMapping
    • تمت إعادة تسمية OffsetMapping.identity OffsetMobile إلى وظيفة OffsetMapping.Identity.
    • لم يعد تحويل كلمة المرور من فئة البيانات
    • تم نقل OffsetMapping إلى ملف خاص بها
    • (I0bdf3)
  • تغييرات واجهة برمجة التطبيقات EditOperations API
    • تم تغيير اسم EditOperation إلى اسم "EditCommand"
    • تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة في EditOperation
    • لم تعُد 'EditCommand's فئات بيانات
    • تمت إعادة تسمية دالة EditOperation.process لتكون "ApplyTo"
    • تم تغيير اسم InEventListener إلى EnterEventCallback
    • (I0a366)
  • السرعة المعدلة للحصول على أجزاء مكونة وعمليات رياضية. (Ib0447)
  • تم تغيير اسم علامة @BETATesting إلى علامة @BETATestApi لكي تكون متوافقة مع التعليقات التوضيحية المشابهة لواجهة برمجة التطبيقات (Ia4502 ، b/171464963)
  • تمت إضافة طريقة installHeader التجريبية لـ LazyColumn/LazyRow (I0a81d)
  • Ranamed Color.useOrElse() to Color.takeOrElse() (Ifdcf5)
  • تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)
  • إضافة مفتاح تبديل إلى Foundation Strings.kt (I4a5b7، b/172366489)
  • تم نقل المعلمةNativeClass إلى وحدة واجهة المستخدم وجعلها داخلية. تم تحديث استخدامات originalClass في عمليات تنفيذ تساوي استخدام "is MyClass" بدلاً من ذلك. (I4f734)
  • تم إيقاف تدفق الصف وعمود التدفق نهائيًا. يُرجى استخدام تنسيق مخصص بدلاً من ذلك. (I09027)
  • تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً منها (I75a48 وb/175160751 وb/175160532 وb/175077829)
  • تم تقديم SelectionRegistrar.notifySelectableChange لإشعار بالتعديلات القابلة للاختيار إلى SelectionManager. (I6ff30، b/173215242)
  • تم تغيير fun Dp.isFinite() إلى val Dp.isFinite (I50e00)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • تمت إضافة isSpecified وisUnspecified وuseOrElse للفئات المضمّنة ذات الصلة الثابتة غير المحدَّدة. (I93f7b، b/174310811)

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

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

الإصدار 1.0.0-alpha09

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha09 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha09. يحتوي الإصدار 1.0.0-alpha09 على هذه الالتزامات.

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

  • إضافة واجهة قابلة للتمرير

    ويسمح هذا الإجراء بمعالجة ScrollState وLazyListState على أنه نوع شائع، ما يسمح بتنفيذ التمرير المخصَّص عبر كلا النوعين.

    يؤدي ذلك أيضًا إلى نقل Sync ScrollBy إلى وظيفة إضافة على Scrollable، والاستفادة من هذه الوظيفة. (I2153b)

  • تمّت إضافة ميزة LazyVerticalGrid. (I17267، b/162213211)

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

  • بالنسبة إلى تعليق واجهات برمجة التطبيقات الخاصة بإدخال المؤشر، تمت إعادة تسمية HandlePointerInputScope إلى AوايPointerEventScope، وإلى handlePointerInput() إلى auePointerEventScope(). (Idf0a1، b/175142755)

  • تمت إضافة LazyList.layoutInfo الذي يعرض قائمة الأحجام والإزاحة للعناصر المرئية حاليًا (If8678، b/170472532).

  • تمت إزالة التعليق التوضيحي BETAPointerInput (Ia7a24)

  • تمت إضافة إمكانية التفاعل مع InteractionState لـ TextFields. (I61d91)

  • أضِف مَعلمة renameLayout لـ LazyColumn/Row. عندما يتم إنشاء true عنصر من الأسفل إلى الأعلى، يعني LazyListState.firstVisibleItemIndex == 0 أن العنصر الأول موجود في الأسفل. (I552ae، b/166589935)

  • تمت إضافة معلَمة verticalArrangement لـ LazyColumn. تمت إضافة معلمة horizontalArrangement لـ LazyRow. يسمح لنا الترتيب بإضافة مسافة بين العناصر وتحديد ترتيب العناصر عندما لا يكون لدينا ما يكفي منها لملء الحد الأدنى للحجم بالكامل. (Icf79a، b/170394300)

  • تستخدم ميزة "التعرّف المتعدد على الإيماءات" الآن معاودة اتصال واحدة مع مَعلمات مدمجة للنقاط المركزية والتحريك والتكبير/التصغير والتدوير. (Ie6e1c)

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

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

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

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

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

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

  • تم إيقاف Modifier.focusMonitorer نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 أو b/168511863 أو b/168511484)

  • أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلب الموافقة (I0a1ec)

  • إضافة إعلانات تدميرية لإنشاء مثيلات FocusRequester (I35d84، b/174817008)

  • تمت إعادة تسمية AccessibilityLabel إلى contentDescription. تمت إعادة تسمية إمكانية الوصول إلى StateDescription. (I250f2)

  • تم تقديم العديد من الدوال الجديدة في SelectionRegistrar وأعادت تسمية onPositionChange إلى جانب الإشعاراتPositionChange. (Ifbaf7)

  • AndroidOwner أجرى داخليًا (Ibcad0، b/170296980)

  • دالة جديدة infiniteRepeatable لإنشاء قيمة InfiniteRepeatableSpec (I668e5)

  • تم تغيير واجهة Applier لتبسيط بناء الأشجار من الأسفل إلى الأعلى بدلاً من البدء من الأعلى إلى الأسفل.

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

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

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

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

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

  • تمت إضافة دالة المصنع BuildAnnotatedString من أجل إنشاء AnnotatedString. تم إيقاف دالة إنشاء annotatedString. (Idfe0b)

الإصدار 1.0.0-alpha08

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha08 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha08. يحتوي الإصدار 1.0.0-alpha08 على هذه الالتزامات.

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

  • تمت إزالة معلَمة maxLines من CoreTextField. إذا كنت تريد تقييد ارتفاع حقل النص بعدد السطور، استخدِم BasicTextField بدلاً من ذلك. (Iec002)
  • تم تغيير طرق await*TouchSlop() إلى عدم رصد المؤشر للأسفل وإعادة تسميتها إلى *OrCancellation. تمت أيضًا إزالة الحاجة إلى مَعلمة orientationLock. (Ie96e1)
  • تمت إضافة التحقق من الوبر لتسمية معلمة lambda القابلة للإنشاء وموضعها، وذلك للتحقق من الاتساق مع إرشادات الإنشاء. تم أيضًا نقل بيانات بعض واجهات برمجة التطبيقات باستخدام children كاسم لدالة lambda اللاحقة إلى content، وفقًا لعمليات فحص الوبر والإرشادات. (Iec48e)
  • تم نقل واجهة برمجة تطبيقات foundation:foundation-text إلى foundation:foundation. ظلت بنية الحزمة كما هي (Id3eb2)
  • أداة جديدة لرصد الإيماءات المستندة إلى اللمس المتعدد، بما في ذلك أدوات مساعِدة لرصد التدوير والتكبير/التصغير والتحريك (Ic459d)
  • أداة رصد إيماءة جديدة يعلّق فيها المؤشر لواجهة برمجة التطبيقات، بما في ذلك قفل الاتجاه. (Icef25)
  • تمت إعادة تسمية VectorAsset ليصبح ImageVector تم نقل VectorAsset إلى أداة الإنشاء وأصبح فئة داخلية من ImageVector وفقًا لإرشادات مجلس واجهة برمجة التطبيقات. تمت إضافة النوع البديل لـ VectorAssetBuilder للربط إلى ImageVector.Builder لـ compat (Icfdc8)
  • تمت إعادة تسمية ImageAsset والطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
  • تم نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c).
  • إضافة واجهات برمجة تطبيقات التمرير المستندة إلى الكوروتين:

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

  • تمت إضافة مَعلمة singeLine إلى BasicTextField وTextField وOutlinedTextField. اضبُط هذه المَعلمة على "صحيح" لجعل الحقل النصي سطرًا واحدًا قابلاً للتمرير أفقيًا. (I57004، b/168187755)

  • تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار ومؤشر الضغط باستخدام الإدخال الجديد لمؤشر التعليق. بالإضافة إلى ذلك، تمت إضافة بعض الأدوات المساعدة، ما سهّل على المطورين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)

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

  • تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا في السابق: تمت إزالة الحدود، ويمكنك استخدام BorderStroke بدلاً منها. تمت إزالة Modifier. drawBorder. يمكنك استخدام Modifier.الحدود بدلاً من ذلك. تمت إزالة Modifier.gravity، لذا استخدِم Modifier.محاذاة بدلاً من ذلك. تمت إزالة الحزمة، ويمكنك استخدام Box بدلاً منها (I32c2b، b/172470874)

  • تمت إعادة تسمية AbsoluteArrangement إلى Arrangement.Absolute. (If26f2)

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

  • تم نقل واجهات برمجة تطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.Draw. تم إنشاء ملف DrawModifier Discovery.kt لتضمين طرق الكتابة البديلة/المساعد للمساعدة في عملية الترحيل من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.DrawLayer إلى Modifier.graphicsLayer (I0bd29، b/173834241)
  • تمت إزالة <T> من بيان SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8)
  • تم جعل وقت تشغيل PointerInputData وحقول الموضع غير قابلة للقيم. (Id468a)
  • تضبط MaterialTheme الآن الألوان الصحيحة لمقبضات الاختيار وخلفية الاختيار. يمكن للتطبيقات غير Material استخدام ميزة مخصصة لألوان محددة من أجل تخصيص الألوان للاختيار من بينها. (I1e6f4 وb/139320372 وb/139320907)
  • تمت إعادة تسمية مَعلمة المحاذاة في Box إلى contentAlignment. (I2c957)
  • تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. وهي الآن تأخذ معلمات lambda بدلاً من State. (Ic3021، b/173594846)
  • تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف محل التركيز، وأداة WindowFocusMonitorer التي توفّر معاودة اتصال onWinWindowFocusChanged. (I53b2a، b/170932874)
  • تمت إضافة مَعلمة renameInput إلى TextInputService#onStateupdated (I3e8f5، b/172239032، b/171860947)
  • تم تعديل واجهة برمجة التطبيقات TextFieldValue.
    • تم جعل TextFieldValue.composition للقراءة فقط
    • تم طرح استثناء تمت إزالته لنطاق التحديد غير الصالح (I4a675، b/172239032)
  • "وضع عدم النشاط" الذي تم إيقافه نهائيًا باسم "Ambient" كلاحقة له، واستبداله بسمات جديدة مسبوقة بعبارة "وضع عدم النشاط"، وذلك باتّباع إرشادات أخرى في واجهة برمجة التطبيقات "وضع عدم النشاط" و"Compose". (I33440)
  • تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل خط طباعيّ Android عبر دالة typeface، أي typeface(Typeface.DEFAULT). تمت إعادة تسمية typefaceFromFontFamily() أيضًا إلى typeface() (I52ab7)
  • تمت إضافة فحص الوبر للتأكّد من أنّ مصانع التعديل تستخدم androidx.compose.ui.composed {} داخليًا بدلاً من وضع علامة @Composable عليها. (I3c4bc)
  • تمت إضافة فحص الوبر للتأكّد من أنّ وظائف المُعدَّل الأصلية هي إضافات على جهاز التعديل، وبالتالي يمكن ربطها معًا بطلاقة. (I07981)
  • تمت إعادة تسمية وسيطة دلالة الدمج AllDescendants إلى mergeDescendants. (Ib6250)
  • التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماتها) الآن تجريبي (I6ef86، b/171378521)
  • إزالة وحدة اختبار واجهة المستخدم القديمة وبياناتها (I3a7cb)
  • تمت إعادة تسمية TextUnit.Inherited إلى TextUnit.غير محدَّد بما يتوافق مع الوحدات الأخرى. (Ifce19)
  • تم تحديث واجهة المحاذاة وجعلها تعمل. (I46a07، b/172311734)
  • تم دمج وحدة foundation:foundation-text في foundation:foundation (Idac0f).
  • أوقِف المكان(الإزاحة) وplacePlace(offset) نهائيًا. استخدام عمليات التحميل الزائدة مع إزاحة int بدلاً من ذلك (I4c5e7)
  • تمت إعادة تسمية "id" إلى "layoutId" للحساب LayoutIdParentData. تمت إعادة تسمية Measurable.id إلى Measurable.layoutId. (Iadbcb، b/172449643)

الإصدار 1.0.0-alpha07

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha07 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha07 وandroidx.compose.foundation:foundation-text:1.0.0-alpha07. يحتوي الإصدار 1.0.0-alpha07 على هذه الالتزامات.

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

  • على نحو مشابه لـ Modifier.fillMaxSize[Width|Height]، نتيح الآن الكسور في Modifier.fillParentMaxSize[Width|Height] داخل نطاق LazyColumn/Row (I797e2، b/166586426).
  • تمت إزالة "KeyboardOptions.toImeOptions" من واجهة برمجة التطبيقات المتاحة للجميع. (Ic2e45)
  • تم نهائيًا إيقاف الميزات الأساسية "epTextStyle" و"OfferTextStyle" و""،ampContentColor" نهائيًا. وبدلاً من ذلك، يمكنك استخدام الإصدارات الجديدة المتوفرة في مكتبة Material. بالنسبة إلى التطبيقات غير Material، عليك إنشاء نظام التصميم الخاص بك البيئات المحيطة التي يمكن استخدامها في المكونات الخاصة بك. (I74acc، b/172067770)
  • Foundation.Text تم إيقاف العمل نهائيًا واستبداله بـmaterial.Text. بالنسبة إلى واجهة برمجة تطبيقات النص الأساسية غير المرئية التي لا تستهلك قيمًا من مظهر، يمكنك الانتقال إلى androidx.compose.foundation.BasicText. (If64cb)
  • تمت إضافة maxLines إلى الحقول النصية (Ib2a5b).
  • عدِّل الحقول النصية لقبول خيارات لوحة المفاتيح (Ida7f3).
  • تمت إضافة KeyboardOptions للاستخدام في الحقول النصية (I9ca32).
  • إضافة BasicText كواجهة برمجة تطبيقات غير مُعينة للتصميم للنص، بالتوازي مع BasicTextField (I28268)
  • تمت إزالة التعليق التوضيحي BETALazyDsl. يمكن الآن استخدام LazyColumn/LazyRow بدون إضافة @OptIn (Idab7a, b/166584730)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تمت إضافة BasicTextField كبديل لكل من CoreTextField وBaseTextField (Id4cea).
  • إزالة ميزة LazyColumnItems/LazyRowItems المتوقفة نهائيًا (I1d8a8)
  • تمت إزالة العناصر القابلة للإنشاء المتوقّفة نهائيًا لتغيير حجمها إلى قياسات أساسية. (I18537، b/171811496)
  • تمت إعادة تسمية SpamPaddingFrom إلى أدناهowFrom. تمت إضافة المعدِّل addingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى الأسس الأساسية للنص. (I0440a، b/170633813)
  • تمت إضافة المعلمة MatchHeightConstraintsFirst إلى معدِّل featureRatio الذي يمكن استخدامه لتحديد التعديل للحجم وفقًا لقيود الارتفاع قبل تجربة موافقات العرض. (Ie7c43، b/155290593)
  • تمت إزالة DpConstraints المتوقفة. (I87884، b/171702471)

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

  • تم تقديم فئة ScaleFactor المضمّنة لتمثيل عوامل المقياس للمحور الأفقي والرأسي مستقلاً عن بعضها البعض من أجل دعم حالات استخدام التوسيع غير المنتظم.
    • تمت إضافة طريقة ComputeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لإجراء تحجيم غير موحد لتوسيع حدود src لشغل الوجهة بالكامل.
    • تمت إضافة طرق المشغلات لحساب معلمات ScaleFactor باستخدام معلمات Size.
    • (Ic96a6، b/172291582)
  • تم نقل releaseToBitmap إلى تَمَّ تَسْجِيلُ التَّطْبِيقَاتْ. (I86385)
  • وضع علامة على CoreText كـ @InternalTextApi. يمكنك استخدام BasicText بدلاً من ذلك. (I6aaeb)
  • إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
  • تم نقل KeyboardType وImeAction إلى لوحة المفاتيح (I910ce).
  • تم وضع علامة @InternalTextApi على CoreTextField. استخدام BasicTextField بدلاً من ذلك (Ie2469)
  • تمت إزالة التعليق التوضيحي BETASubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تقديم الوحدة النمطية ui-test-junit4 (Ib91f8)
  • تم تحديث واجهة برمجة التطبيقات Accessibility API لتتحول إلى اللون.غير محدد باعتباره لونًا تلوينًا محتملاً سيرسم الأصل أو الطلاء المتوفر بدون استخدام ColorFilter. كان يحاول في السابق تجاهل التلوين باستخدام اللون.وغير محدد سوف يؤدي إلى التلوين باللون الشفاف فسينتهي به الأمر بدون عرض أي شيء على الإطلاق. (I049e2، b/171624632)
  • تم نقل MeasurementResult خارج MeasurementScope. (Ibf96d، b/171184002)
  • تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
  • تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
  • تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7)
  • تمت إضافة SelectContainer بدون معاودة الاتصال (Ibfadb)
  • إضافة اختبارات لمواضع SelectionHandles في SelectionContainer (Ie93db)
  • تمت إضافة خيار أداة IME التلقائية للوحة المفاتيح (I57b8d).

الإصدار 1.0.0-alpha06

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha06 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha06 وandroidx.compose.foundation:foundation-text:1.0.0-alpha06. يحتوي الإصدار 1.0.0-alpha06 على هذه الالتزامات.

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

  • تم نقل androidx.compose.foundation.Icon إلى androidx.compose.material.Icon. يمكنك أيضًا استخدام مكوّن الصورة / Modifier.paint() مع برنامج "Painter" إذا كنت لا تريد استخدام مكتبة Material. (I9f622)
  • تمت إضافةInteractState إلى Modifier.scrollable و ScrollableColumn وLazyColumnFor (I81566، b/169509805).
  • تمت إضافة levelByBaseline إلى RowScope، وتمت إعادة تسمية الذي تم إعادة تسميته إلى يحصل على اختصار إلىضمن (I06503، وb/170628732).
  • تم تحويل Box إلى دالة مضمّنة. (Ibce0c، b/155056091)
  • تمت إضافة maxLines إلى CoreTextField (Ibee58، b/143687793).
  • تمت إضافة soft wrap إلى CoreTextField. (I21a4b)

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

  • أوقف VectorPainter لصالحتعرَّف على تذكرVectorPainter للإشارة بشكل أفضل إلى أنّ واجهة برمجة التطبيقات القابلة للإنشاء تستفيد داخليًا من عملية "تذكر" البيانات للحفاظ على البيانات عبر التركيبات. (Ifda43)
  • يمكنك تفعيل عمليات الانتقال في ComposeTestRule مع مراعاة إزالة خيار تفعيل المؤشر الوامض من ComposeTestRules. (If0de3)
  • تمت إضافة خيار لوحة المفاتيح من سطر واحد إلى CoreTextField (I72e6d).
  • تمت إعادة تسمية واجهة برمجة تطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في Compose وثائق معدَّلة للإشارة إلى أنّ نصف قطر الزاوية السالبة مثبَّت على الصفر. (I130c7، b/168762961)
  • إضافة إمكانية تحديد معلومات المفتش في معدِّل مكوّن (Idee08، b/163494569)
  • تمت إضافة خيار أداة IME للكتابة بالأحرف الكبيرة للوحة المفاتيح (I8ac38).
  • إصلاح موضع مقبض Rtl (I6e1e0)
  • التغيير الذي قد يؤدي إلى عطل: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) نظرًا إلى أنّ القيمة الوحيدة التي يمكن تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات استهلاك PointerEvent التي تم تمريرها. (I6acd0)
  • تمت إضافة خيار "تحديد الكل" إلى قائمة التحديد (Ief02b).

الإصدار 1.0.0-alpha05

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha05 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha05 وandroidx.compose.foundation:foundation-text:1.0.0-alpha05. يحتوي الإصدار 1.0.0-alpha05 على هذه الالتزامات.

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

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

    • ContentColor بيّنة -> ألوان شاشة الاستراحة
    • TextStyle أجواء استرخاء
    • الإشارة المحيطة -> الإشارة إلى البيئة المحيطة
    • التأكيد المحيط -> ampEmphasisLevels
    • RippleTheme am -> sitemapRippleTheme (I37b6d)

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

  • كجزء من توحيد قيم الروابط للفئات المضمّنة، يُرجى إعادة تسمية اللون.غير محدَّد إلى اللون.غير محدَّد للتناسق مع الفئات المضمّنة الأخرى (I97611، b/169797763)
  • تمت إضافة إجراءات تسهيل الاستخدام النسخ/اللصق/القص (I6db4f).
  • تم تقديم TextOverflow.لم يتم تقديم أي شيء. عندما تكون قيمة overflow (التجاوز) هي "None" (بلا)، لن يتعامل Text مع تجاوز overflow بعد ذلك، وسيتم الإبلاغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)
  • تم تحديث الحجم.معلمات غير محددة لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تحديث عمليات تنفيذ الطلاء للتحقق من الحجم.غير محدد وكذلك الأحجام غير المحدودة. (I95a7e)
  • تمت إضافة وحدة "الكتابة من عدد إلى صفحات" ودمج التقسيم على صفحات (Ib85da).
  • تعديل LazyListScope لتلقّي قيم قابلة للقيم الفارغة (I1765b)
  • تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وتمت إعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)
  • تمت إضافة نماذج للعمود الكسول/الصف (Idc16d).
  • إصلاح طريقة العناصر وitemIndexed للسماح بالقائمة الفارغة (I06647)
  • إضافة DSL لتحديد معلومات المفتش (Ic9a22)
  • نقل وظيفة "الضغط الطويل" إلى "نص" (Iff2bc)
  • إيقاف التحديد في النص والعرض التوضيحي. (Ie7e97)
  • دعم AnnotatedString لتحويل SpannableString لتسهيل الاستخدام. (Ief907)
  • تمت إزالة PointerInputFilter.onPointerInput(...). يجب استخدام الحقل PointerInputFilter.onPointerEvent(...) بدلاً منه. (I6f04a)

الإصدار 1.0.0-alpha04

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha04 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha04 وandroidx.compose.foundation:foundation-text:1.0.0-alpha04. يحتوي الإصدار 1.0.0-alpha04 على هذه الالتزامات.

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

  • تمت إعادة تسمية الحزمة إلى Box. سيتم إيقاف الإصدار Foundation.Box الحالي نهائيًا لصالح Box الجديد في compose.foundation.layout. يتمثل سلوك Box الجديد في تكديس العناصر الفرعية فوق بعضها البعض عندما يكون لديه العديد من العناصر الثانوية - وهذا يختلف عن Box السابق، الذي كان يعمل مشابهًا للعمود. (I94893، b/167680279)
  • تم إيقاف مَعلمات تزيين الصندوق نهائيًا. إذا كنت تريد إضافة زخارف أو مساحة متروكة في المربّع، استخدِم "المعدِّلات" بدلاً من ذلك (Modifier.background أو Modifier.الحد أو Modifier.adding) (Ibae92، b/167680279).
  • أضِف فئة LazyListState الجديدة. يسمح ذلك بالملاحظة والتحكم في موضع التمرير لمكونات LazyRow وLazyColumn. يمكن إنشاء المثيلات باستخدام rememberLazyListState() وتمريره إلى معلمة الحالة للمكون. في الوقت الحالي، يمكن ملاحظة أول عنصر مرئي وإزاحة في هذا الإصدار الأولي. (Ic7cb7، b/159307669)
  • يتم الآن حفظ موضع القائمة الكسول وإزاحة التمرير واستعادتها على مستوى إعادة النشاط في قسم "النشاط" (Ie045f، b/166589058).
  • إضافة إجراء دلالي للنقر الطويل (I6281b، b/156468846)
  • تمت إضافة أداة MutatorBlockx للاحتفاظ بوحدة تغيير واحدة للحالة المشتركة بمرور الوقت وإلغاء التغييرات المتضاربة حسب الأولوية (I3f975)
  • التعليقات التوضيحية الجذرAnimationClock استمرارية، وانتقالsEnabled، وblinkingCursorEnabled، وtextInputService وعرض المواصفات
  • تمت إزالة المعلمة inlineContent من النص الذي يحتوي على إدخال السلسلة. لن يتم استخدامه لأنّ inlineContent يجب أن يعمل مع AnnotatedString. (Ief403)
  • تمت إزالة واجهات برمجة التطبيقات للترتيب المخصّص التي تم إيقافها نهائيًا. (Ic576d وb/168297922 وb/168297923)
  • تمت إضافة المَعلمة unbounded إلى مفاتيح تعديل wrapContentSize، ما يتيح قياس عنصر التنسيق باستخدام قيود قصوى غير محدودة. (I77951، b/158559319)
  • لقد منعنا عمليات الاستيراد الثابتة لمحتويات نطاقات التنسيق (مثل وهذا النوع من المحتوى في RowScope). يجب استخدام بديل النطاق الفاضح بدلاً من ذلك: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be، b/166760797)

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

  • تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
    • تم تحديث واجهات برمجة التطبيقات للمقياس والتدوير لاستهلاك معلمة إزاحة واحدة لتمثيل الإحداثي المحوري بدلاً من المعلَمات العائمة المنفصلة للإحداثيات x/y في DrawScope وDrawTransform
    • تمت إزالة الطريقتين Rect.expandToinclude وRect.join
    • تم تحديث وثائق نصف القطر لتوضيح الشكل البيضاوي بالإضافة إلى البيضاوي
    • الوثائق الإضافية التي تشير إلى أن الدالة الإنشائية العامة لفئة نصف القطر المضمنة لا يتم استدعاءها بشكل مباشر ولكن بدلًا من ذلك يجب إنشاء مثيل لكائنات النطاق الجغرافي من خلال الدالة الإنشائية للدوال
    • تمت إزالة واجهات برمجة تطبيقات RoundRect لطلب البحث في topRight، وbottomRight، و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.minسام
    • تم تغيير RoundRect.center إلى خاصية بدلاً من دالة
    • تم تحديث الدالة الإنشائية RoundRect لاستهلاك خصائص نصف القطر بدلاً من المعلمات الفردية لقيم نصف القطر x/y
    • تمت إزالة واجهات برمجة التطبيقات للحجم والتي افترضت أنه شكل مستطيل ذو مصدر 0,0
    • تمت إضافة واجهة برمجة تطبيقات ضارة إلى Radius
    • تم نقل دوال إضافات RoundRect المختلفة إلى مواقع بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • تحسينات في الأداء على LazyColumnFor/LazyRowFor للتمرير من خلال عدم إجراء عمليات إعادة تركيب غير ضرورية أثناء كل تمرير (I64f65، b/168293643، b/167972292، b/165028371)
  • تم إصلاح العُطل في LazyColumnFor/LazyRowFor بعد التمرير ثم تغيير العناصر وتم تنفيذ الانتقال التلقائي للأعلى عند إزالة العنصر المرئي سابقًا حتى لا نعرض فجوات فارغة في النهاية بعد الآن (I220ab، b/161480164، b/167855468)
  • لم يعُد من الممكن السماح بدمج الحاويات القابلة للتمرير في الاتجاه نفسه، مثل ScrollableContainer وLazyColumnFor. لم يكن هذا النظام متاحًا مطلقًا وكان يكسر الفخاخ والكسل الذي يؤدي إليه إنشاء عناصر LazyColumnFor (I6e101)
  • تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
    • تم تحديث واجهات برمجة تطبيقات DrawScope باستخدام طرق تحويل النطاق للإشارة إلى أنّه لا يتم تطبيق التحويل إلا داخل طلب الاستدعاء وتتم إزالته بعد استدعاء الاستدعاء
    • وثائقClipPath المحدّثة للإشارة إلى "المسار" بدلاً من المستطيل المستدير
    • تباعد ثابت في وثائق المعلمة الصحيحة في tablePath
    • تمت إعادة تسمية DrawScope.DrawCanvas إلى drawIntoCanvas وإزالة معلمة الحجم
    • تمت إعادة تسمية معلمات dx/dy في طريقة الإدخال إلى الوضع الأفقي والرأسي
    • تمت إضافة الحمل الزائد للداخل الذي يوفر نفس قيمة الإدخال لجميع الحدود الأربعة
    • تمت إزالة الوثائق الموجودة على طريقة الإدخال التي تشير إلى أنه سيتم تطبيق الداخلية على جميع الجوانب الأربعة
    • مستندات معدَّلة لفئة Rect
    • تم تحديث التعليقات على معلمات Rect لمطابقة نمط kdoc
    • تمت إزالة Rect.join وRect.expandToFrom
    • تم إنشاء حِمل زائد لـ Rect.localized(offset) وإيقاف Rect.shift نهائيًا
    • (If086a، b/167737376)
  • بإضافة Accessibility ScrollState إلى خصائص الدلالات. (Ifeda9)
  • يجب جعل TextRange مضمّنًا لتجنب إنشاء كائن. (Id034b)
  • تمت إزالة قيود الفقرة. تم تمرير العرض مباشرةً إلى الفقرة الآن. (Ica712)

الإصدار 1.0.0-alpha03

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha03 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha03 وandroidx.compose.foundation:foundation-text:1.0.0-alpha03. يحتوي الإصدار 1.0.0-alpha03 على هذه الالتزامات.

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

  • تمت إعادة تسمية InnerPadding إلى PaddingValues. (I195f1، b/167389171)
  • تمت إعادة تسمية استخدامات الجاذبية بشكل متكرر للمحاذاة أو المحاذاة في واجهات برمجة تطبيقات التصميم. (I2421a، b/164077038)
  • تمت إضافة معلَمة محاذاة إلى Stack، ما يسمح بتحديد المحاذاة التلقائية لجميع عناصر Stack الثانوية. (Ie80ca، b/164085265)

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

  • تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
  • تمت إعادة تسمية المعلمتَين minWidth وmaxWidth من إجمالي widthIn إلى min وmax. وبالمثل بالنسبة إلى preferredWidthIn وheightIn وpreferredHeightIn. (I0e5e1، b/167389544)
  • تمت إضافة onNode والطرق العامة الأخرى إلى ComposeTestRule حيث سيتم إيقاف الطرق العامة الحالية. (Ieae36)
  • تم إصلاح العمليات الحسابية للحجم والموضع في ConversationScope، ما تسبّب في إنشاء إيماءات تمرير غير صالحة غير صالحة (Iaf358، وb/166589947) من بين أنشطة أخرى.
  • تم نقل createAndroidComposeRule وAndroidInputDispatcher من androidx.ui.test.android إلى androidx.ui.test (Idef08، b/164060572)

الإصدار 1.0.0-alpha02

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

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha02 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha02 وandroidx.compose.foundation:foundation-text:1.0.0-alpha02. يحتوي الإصدار 1.0.0-alpha02 على هذه الالتزامات.

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

  • يحمل TestUiDispatcher علامة تجريبية (Iae99d، b/161247083)
  • تمت إضافة السمة ManualFrameClock.hasAwaiters لمعرفة ما إذا كانت هناك أي عناصر في انتظار الإطار من تلك الساعة، وrunWithManualClock كبديل لـ runBlocking عند إجراء الاختبارات التي تحتاج إلى TechnicalFrameClock. TestUiDispatcher.Main وتتيح هذه الميزة الوصول بسهولة إلى أداة التحكّم في واجهة المستخدم الرئيسية في اختباراتك.

    على سبيل المثال:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (I0a85b، b/161247083)

الإصدار 1.0.0-alpha01

26 آب (أغسطس) 2020

تم طرح androidx.compose.foundation:foundation:1.0.0-alpha01 وandroidx.compose.foundation:foundation-layout:1.0.0-alpha01 وandroidx.compose.foundation:foundation-text:1.0.0-alpha01. يحتوي الإصدار 1.0.0-alpha01 على هذه الالتزامات.

الإصدار 0.1.0-dev

الإصدار 0.1.0-dev17

19 آب (أغسطس) 2020

تم طرح androidx.compose.foundation:foundation:0.1.0-dev17 وandroidx.compose.foundation:foundation-layout:0.1.0-dev17 وandroidx.compose.foundation:foundation-text:0.1.0-dev17. يحتوي الإصدار 0.1.0-dev17 على هذه الالتزامات.

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

  • تمت إضافة SpacedBy Arrangement إلى الصف والعمود، لتمكين وضع عناصر التصميم الثانوية بتباعد ثابت. تمت إضافة الترتيب المحاذي أيضًا لتفعيل وضع عناصر التصميم الثانوية واحدًا بجانب الآخر ومحاذاته في الصف/العمود وفقًا لمحاذاة. تم إيقاف الطريقتين Arrangement.Vertical#arrange السابق و Arrangement.Horizontal#arrange السابق، ولن تتم كتابة الترتيبات المخصصة في المستقبل. (I6733d، b/161985975)
  • أصبحت الإزاحة فئة مضمّنة (Iaec70)
  • تمت إزالة onFocusChanged لطلبات معاودة الاتصال من TextField. استخدِم Modifier.focusMonitorer بدلاً من ذلك. (I51089، b/161297615)
  • تم إيقاف Modifier.DrawBorder نهائيًا. يمكنك استخدام Modifier.الحدود بدلاً من ذلك. تم استبدال فئة البيانات الحدودية بـ BorderStroke (I4257d وb/158160576).
  • تمت إزالة شريطي التمرير العمودي والتمرير الأفقي. استخدِم العمود أو الصف القابل للتمرير بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)
  • يُرجى إزالة عناصر تعديل fillMax* المتوقّفة نهائيًا من LazyItemScope، لأنّها تصعِّب إضافة هذه المُعدِّلات بشكل صحيح للعناصر التي لا تُوجّه عناصر فرعية لـ LazyColumnFor (Ifa78d).
  • تمت إضافة تنفيذ LazyColumn/LazyRow باعتباره DSL (I93cc6).
  • أصبحت القيود الآن فئة مضمّنة (I88736)
  • تمت إضافة إمكانية تحديد حجم تصميم إلى جزء صغير من المساحة المتاحة، وذلك باستخدام مُعدِّلات fillMax width وfillMaxHeight وfillMaxSize. (I945bb، b/161562591)

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

  • تمت إضافة معلمة تعديل إلى SelectionContainer (I4aada، b/161487952)
  • تمت إضافة integrationPolicy lambda إلى SemanticsPropertyKey. ويمكن استخدام ذلك لتحديد سياسة مخصصة لدمج دلالات الدمج AllDescendants. تتمثل السياسة الافتراضية في استخدام القيمة الرئيسية إذا كانت موجودة بالفعل، أو القيمة الفرعية. (Iaf6c4، b/161979921)
  • تمت إعادة تسمية PlacementScope.placeAbsolute() إلى PlacementScope.place()، كما تمت إعادة تسمية PlacementScope.place() السابق إلى PlacementScope.placeRelative(). ونتيجة لذلك، لن تعكس طريقة PlacementScope.place() الموضع تلقائيًا في السياقات من اليمين إلى اليسار بعد الآن. إذا كنت تريد ذلك، يمكنك استخدام PlacementScope.placeRelative() كبديل. (I873ac، b/162916675)
  • تمت إزالة المكوِّن FilledTextField المتوقف نهائيًا. يُرجى استخدام TextField بدلاً من ذلك للحصول على طريقة تنفيذ التصميم المتعدد الأبعاد لحقل النص المعبّأ. (I5e889)
  • تمت إضافة المعلمة colorColor إلى قائمة LinearProgressPresents وإزالة المساحة المتروكة الداخلية من CircularProgressIndexator. تمت إضافة ميزة Progress لأجهزة Constants.DefaultProgressAnimationSpec الجديدة التي يمكن استخدامها كقيمة AnimationSpec التلقائية عند تحريك التقدّم بين القيم (If38b5 وb/161809914 وb/161804677)
  • تم الآن إيقاف العنصر state { ... } القابل للإنشاء نهائيًا ليحلّ محلّه دعوات فاضحة موجّهة إلى remember { mutableStateOf(...) } لمزيد من الوضوح. يقلل ذلك من مساحة العرض الإجمالية لواجهة برمجة التطبيقات وعدد المفاهيم لإدارة الحالة، كما يتطابق مع نمط by mutableStateOf() لتفويض الموقع على مستوى الفئة. (Ia5727)
  • تمت إعادة تسمية RRect إلى RoundRect لملاءمة أنماط التسمية لإنشاء إنشاءات دوال مماثلة بشكل أفضل وإنشاء منصات إنشاء دوال RRect تم إيقافها نهائيًا (I5d325)
  • تمت إزالة onChildPositioned وOnChildPositionedModifier. يجب على المطورين استخدام onPositioned وOnPositionedModifier على التخطيط الفرعي بدلاً من ذلك. (I4522e، b/162109766)
  • أصبح IntSize الآن فئة مضمّنة (I2bf42).
  • اضغط مع الاستمرار على المنطقة الفارغة للتعديل. (Ib1e5b)
  • إخفاء شريط الأدوات العائم بعد النقر على النص (If4525)
  • إخفاء FloatingToolbar عند تحديث التحديد. (I8444c)
  • ألغِ اختيار "وقت التمويه". (I781a2)

الإصدار 0.1.0-dev16

5 آب (أغسطس) 2020

تم طرح androidx.compose.foundation:foundation:0.1.0-dev16 وandroidx.compose.foundation:foundation-layout:0.1.0-dev16 وandroidx.compose.foundation:foundation-text:0.1.0-dev16. يحتوي الإصدار 0.1.0-dev16 على هذه الالتزامات.

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

  • تمت إضافة LazyItemScope لمَعلمة itemContent للقوائم الكسولة. يوفّر هذا العمود تعديلات لملء الحد الأقصى للحجم الأصلي الذي يحل حالة الاستخدام التي تؤدي فيها العنصر إلى ملء إطار العرض ولا يعمل التعديل العادي Modifier.fillMaxSize() لأنّه يتم قياس العنصر باستخدام قيود لانهائية. (Ibd3b2، b/162248854)
  • نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
  • تمت إضافة LazyColumnForIndexed/LazyRowForIndexed - إصدارا LazyColumnFor/LazyRowFor الذي يوفر كلاً من الفهرس والعنصر في itemCallback. يكون ذلك مفيدًا عندما تحتاج إلى معرفة الفهرس الحالي بالإضافة إلى عنصر حالي. (I65ff3)
  • تمت إعادة تسمية Modifier.deternimateProgress إلى Modifier.progressSemantics (I9c0b4)
  • تمت إعادة تسمية LazyColumnItems إلى الاسم LazyColumnFor. تمت إعادة تسمية LazyRowItems إلى LazyRowFor (I84f84)
  • أضف بعض العلامات/التعليقات التوضيحية لأسباب تتعلق بأفضل الممارسات. (I66b20)
  • Foundation.shape.corner مُسطَّح على Foundation.share (I46491, b/161887429)
  • تمت إضافة معلمة الجاذبية acrossaxis لـ LazyRowItems/LazyColumnItems. تتيح LazyRowItems/LazyColumnItems الآن سلوك محتوى الالتفاف. (Ib39fc)
  • تمّت إعادة تسمية ZoomableState إلى ZoomableController. تمت إضافة إتاحة استخدام منحنى مخصّص لتطبيق sampleScale. تمت إضافة الوظيفة enabled وonZoomStarted (If8b8f)
  • تمت إعادة تسمية Material FilledTextField إلى TextField، تمت إعادة تسمية TextField الأساسي إلى BaseTextField لتسهيل اكتشاف واجهة برمجة التطبيقات البسيطة المطلوبة واستخدامها (Ia6242, b/155482676).
  • تمّت إزالة AdapterList المتوقفة سابقًا. استخدام LazyColumnItems بدلاً من ذلك (I12b9b)
  • تمت إعادة تسمية Modifier. drawBackground إلى Modifier.background (I13677).
  • تمت إزالة ConstraintLayout DSL القديم. تمّت إعادة تسمية ConstraintSet2 إلى ConstraintSet. (If58d1، b/162450908)
  • تمت إضافة Modifier.absolute Offset() وModifier.absolute OffsetPx(). على عكس معدِّلات الإزاحة، لن يتم إجراء نسخ مطابق لمعدِّلات الإزاحة المطلقة تلقائيًا في السياق من اليمين إلى اليسار (I3aa21)
  • أصبحت السمتان Row وColumn الآن دالّة مضمّنة، ما يقلّل بشكل كبير من أعباء استخدامهما. (I75c10)

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

  • معالجة الإصلاحات العامة لواجهة برمجة التطبيقات (I077bc)
    1. إزالة واجهة OffsetBase غير المستخدمة
    2. فئتا محاذاة الإزاحة وIntoffset للحصول على سطح واجهة برمجة تطبيقات متناسق
    3. أعد تسمية Int Offset.Origin إلى Int Offset.Zero ليتماشى مع واجهة برمجة التطبيقات Offset API
    4. تم نقل طريقة NativeCanvas خارج واجهة Canvas لدعم المستهلكين في إنشاء مثيلات خاصة بهم من Canvas.
    5. تم إنشاء فئة BlankCanvas لإعادة هيكلة التعليمات البرمجية DrawScope لتكون معلمة غير فارغة بدلاً من lateinit ويضمن عدم قابلية القيم الفارغة للحقل
    6. تمت إعادة تسمية تعدادات ClipOp إلى حالة Pascal
    7. تمت إعادة تسمية تعدادات FilterQuality إلى حالة Pascal
    8. تمت إعادة تسمية تعدادات StrokeJoin لتصبح حالة باسكال
    9. تمت إعادة تسمية تعدادات PointMode إلى حالة Pascal
    10. تمت إعادة تسمية تعدادات PaintingStyle لتصبح Pascal Case
    11. تمت إعادة تسمية تعدادات PathFillType إلى حالة Pascal.
    12. تمت إعادة تسمية تعدادات StrokeCap إلى حالة Pascal
    13. تم تحديث تنفيذ DrawCache بحيث يتوقف عن استخدام مَعلمات longinit
    14. تم تحديث DrawScope لكي يتوقف عن استخدام التفويض الكسول لمعلمات fillPaint وStrikePaint الداخلية
    15. صورة محدّثة قابلة للإنشاء لتجنب استخدام Box لتقليل النفقات العامة
    16. تم تعديل صف Outline ليشمل تعليقات توضيحية تشير إلى @Immutable.
    17. تم تحديث PathNode لإضافة تعليقات توضيحية @Immutable لكل تعليمات مسار
    18. تم تحديث التجميع الفرعي لـ Vector لإزالة عمليات التحقق الشرطية المتكررة للمساواة حيث يعالجها الإنشاء بالفعل
    19. طرق إنشائية رفيقة لـ Rect تم إيقافها لصالح الدوال الإنشائية للدوال
    20. تم تحديث فئات Brush ودوال الإنشاء للدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
    21. تم تعديل تعداد VertexMode ليصبح PascalCase
    22. تم تحديث طريقة Drawscope selectPaint لاستبدال معلمات الخط بشكل مشروط على الرسم إذا كانت قد غيّرت
    23. تم تحديث الحجم لإضافة واجهة برمجة تطبيقات تالفة، وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدمة
  • تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock في شكل AnimationClockMonitorable بين الساعات الكورروتينية الجديدة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى معاودة الاتصال.

    أصبح المكافِئ MonotonicFrameClock لـ يدويAnimationClock الآن متاحاً يدويًا: يدوي إطار Clock. (I111c7، b/161247083)

  • تمت إزالة SemanticsNodeInteraction.performPartialGesture. استخدِم SemanticsNodeInteraction.performGesture بدلاً من ذلك. (Id9b62)

  • تمت إعادة التسمية SemanticsNodeInteraction.getBoundsInRoot() إلى SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf، b/161336532)

  • تم تحديث واجهات برمجة التطبيقات للدعم من اليمين إلى اليسار. تمت إضافة LayoutDirection للانغماس، والتي يمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)

  • تم إيقاف Modifier.plus، لذا استخدِم Modifier.ثم بدلاً من ذلك. تقدّم القيمة "ثم" إشارة أقوى للطلب، بينما تحظر أيضًا كتابة Modifier.padding().background() + anotherModifier، التي تقسّم السلسلة وتصعب قراءتها (Iedd58، b/161529964)

  • تمت إضافة isFocused() وisNotFocused() SemanticsMatcher. (I0b760)

  • تمت إضافة أداة إعادة القياس. يسمح للمستخدمين بإعادة قياس التخطيط بشكل متزامن. بشكل عام، لا تحتاج إليها أبدًا نظرًا لإجراء إعادة القياس/إعادة التخطيط تلقائيًا، ولكننا نستخدمه داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)

  • يستخدم isSystemInDarkTheme الآن إعداد المظهر الداكن على مستوى النظام ويتجاهل حالة توفير الطاقة قبل Q، وذلك باتّباع أحدث الإرشادات. (I0c10c)

  • تم إيقاف OnChildPositioned نهائيًا. استخدم OnPositioned على الطفل بدلاً من ذلك. (I87f95، b/162109766)

  • تمت إعادة تسمية AndroidComposeTestRule لإنشاء AndroidComposeRule. (I70aaf)

  • إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)

الإصدار 0.1.0-dev15

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

تم طرح androidx.compose.foundation:foundation:0.1.0-dev15 وandroidx.compose.foundation:foundation-layout:0.1.0-dev15 وandroidx.compose.foundation:foundation-text:0.1.0-dev15. يحتوي الإصدار 0.1.0-dev15 على هذه الالتزامات.

لاستخدام إصدار 0.1.0-dev15 من Compose، عليك إجراء ما يلي:

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

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

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

  • على نحو مشابه للمَعلمة الجديدة في ScrollableColumn/ScrollableRow، تحتوي LazyColumnItems/LazyRowItems الآن على معلمة contentPadding التي تسمح بإضافة مساحة متروكة للمحتوى بعد اقتصاصه، وهو أمر غير ممكن من خلال معلمة تعديل فقط. ويسمح أيضًا بإضافة تباعد قبل العنصر الأول/بعد العنصر الأخير فقط. (Ibc24e)
  • onFocusChange معاودة الاتصال في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
  • تم إيقاف كل من تطبيق "VerticalScroller" (التمرير العمودي) و"oriziontal Scroller" نهائيًا. يمكنك استخدام ScrollableColumn و ScrollableRow للحصول على تجربة مضمنة مع سلوك العمود/الصف والمعلمات، أو Modifier.vertical Scroll وModifier.horizontal Scroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا لصالح ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
  • تمت إعادة صياغة واجهتَي برمجة التطبيقات Modifier.draggable وModifier.scrollable. تمت إزالة DragDirection لصالح ميزة "الاتجاه". تم تبسيط الحالة المطلوبة للانتقال للأعلى أو للأسفل. تمت إعادة تسمية ScrollableState لتصبح أداة ScrollableController (Iab63c، b/149460415).
  • تستخدم الآن خصائص الدلالات ذات القيمة الفردية نمط استدعاء. على سبيل المثال، تمت كتابة 'semantics { تؤثّر = true }' على النحو التالي: semantics { hidden() }. (Ic1afd وb/145951226 وb/145955412)
  • يمكن الآن أن تكون أحجام الزوايا المستخدمة في RoundedCornerShape وCutCornerShape أكبر من 50% (Id2340، b/160400213).
  • تم تغيير معلمة ContentScale التلقائية للصورة القابلة للإنشاء من Inside إلى Fit. وقد تم ذلك من أجل إضفاء سلوك على توسيع نطاق الرسام الأساسي إذا كان حجم التخطيط أكبر من الحجم الأساسي للرسام مع الحفاظ على نسبة العرض إلى الارتفاع. إنّ هذا السلوك يتطابق بشكل أفضل مع التوقعات المتعلّقة بتوفير أحجام ثابتة للصورة مع عدم التأثير في السلوك التلقائي عند استخدام الحجم الأساسي فقط لحساب حجم العنصر القابل للإنشاء. (I40ae3، b/159838006)
  • استخدم AnimationSpec بدلاً من AnimationBuilder في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الرسوم المتحركة الثابتة -تحسين عملية الانتقال DSL عن طريق إزالة مطلب lambda لإنشاء AnimationSpecs مثل tween أو spring. وبدلاً من ذلك، تتعامل مع المَعلمات الإنشائية مباشرةً. -تحسين سهولة استخدام دالة إنشاء AnimationSpec بدلاً من الاعتماد على منصات إنشاء (Ica0b4)
  • تمت إزالة العناصر القابلة للنقر. استخدام Modifier.clickable (I84bdf)
  • تمت إضافة LazyRowItems - التمرير التناظري أفقيًا لـ LazyColumnItems (Ibbcf7)
  • تم تقديم واجهات برمجة تطبيقات للصور المتحركة المنخفضة المستوى بدون حالة. واجهات برمجة التطبيقات هذه (I63bf7)
  • تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. سيتم أيضًا إيقاف العناصر القابلة للإنشاء في TextField وFilledTextField و CoreTextField التي تستخدم هذا النوع. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005).
  • تم استبدال استخدام IntPx بـ IntPxPosition وInt Offset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
  • تمت إزالة androidx.ui.foundation.shape.RectangleShape. يُرجى استخدام androidx.ui.graphics.RectangleShape (I94939، b/154507984).
  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات المقاس، عليك توحيد استخدام فئة Size بدلاً من PxSize. يوفر هذا فوائد إحدى الفئات المضمنة للاستفادة من قيمة طويلة لحزمة 2 من القيم العائمة لتمثيل العرض والارتفاع الممثلين كأعداد عشرية. (Ic0191)
  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد الموضع، عليك توحيد استخدام فئة الإزاحة بدلاً من PxPosition. يوفر هذا فوائد الفئة المضمنة للاستفادة من قيمة طويلة لحزمة 2 من القيم العائمة لتمثيل إزاحة x وy ممثلة كأعداد عشرية. (I3ad98)
  • تمت إضافة Modifier.zoomable لوظيفة التصغير أو التكبير بإصبعين (Id5d63)
  • تم إيقاف المكوِّن القابل للتبديل نهائيًا. استخدِم Modifier.toggleable بدلاً من ذلك (I35220، b/157642842)
  • تم إيقاف المشارَكة الحصريةSetItem نهائيًا. استخدِم Modifier.selectable بدلاً من ذلك. (I02b47، b/157642842)
  • تم إيقاف TestTag نهائيًا الآن. استخدِم Modifier.testTag بدلاً منها. (If5110، b/157173105)
  • إضافة مَعلمة fontweight إلى النص الذي لم تتم إضافته عن طريق الخطأ (I56937)
  • استبدل الاستخدام المستبدل لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة بناء الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (I19d02)
  • يوفّر VerticalScroller الآن ميزة "العمود" بطريقة غير تقليدية. يوفّر "التمرير الأفقي" الآن ميزة "الصفوف" بطريقة مبتكرة. (Ieca5d، b/157020670)
  • التعويض عن الاستخدام لفئة Px في مختلف الفئات كجزء من الجهود الكبيرة لإعادة الهيكلة للاعتماد فقط على Dp والأنواع الأولية لمعلمات البكسل (Iede0b)
  • تمت إضافة Modifier.indication إلى حزمة الأساس. استخدِم هذا الزر لإظهار الضغط/السحب/غير ذلك على العناصر المخصّصة القابلة للتفاعل (I8425f، b/155287131)
  • يتيح كل من VerticalScroller وorizontal Scroller الآن استخدام التمرير العكسي. يتم ضبط الإعداد isReversed على ScrollerPosition (I953bd).
  • إتاحة إضافة عناصر قابلة للإنشاء إلى تنسيق النص (I1373c)
  • من خلال عمليات تنفيذ CanvasScope، أصبح هناك الآن فقط DrawScope وContentDrawScope، تم تغيير اسم تطبيق CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection وحذف الفئة الفرعية DrawScope في ContentDrawScope تم تعديل "Painter" وPainterModifier على التوقف عن الاحتفاظ بخاصية RTL في حد ذاتها، لأن DrawScope يوفّر ذلك يدويًا بدون تقديمه يدويًا (I1798e)
  • تمت إزالة واجهة برمجة التطبيقات DrawBackground المتوقّفة نهائيًا لصالح واجهة برمجة التطبيقات drawBackground الخاصة بإضافات التطبيق على Modifier. عمليات إعادة تصميم الخلفية باستخدام الألوان والفرشاة والطلاء لتقليل مسارات الرموز بالإضافة إلى إزالة متطلبات إنشاء أداة التعديل كجزء من عملية الإنشاء. (I0343a)
  • تم تحديث واجهات برمجة التطبيقات ذات المستوى الأعلى التي تعرض "لوحة الرسم" لعرض CanvasScope بدلاً من ذلك. يؤدي ذلك إلى إزالة حاجة المستهلكين إلى الحفاظ على كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا يطلبون الوصول إلى لوحة رسم، يمكنهم استخدام طريقة إضافة drawCanvas التي توفر معاودة اتصال لإصدار أوامر الرسم من لوحة الرسم الأساسية. (I80afd)
  • لا يستعيد تطبيق "العرض الأفقي" و"أداة التمرير الرأسي" موضع التمرير باستخدام حالة المثيل المحفوظة. (Ia0fae، b/155075048)
  • تمت إزالة FocusManager وضع عدم النشاط. استخدِم FocusModifier.requestFocus للحصول على التركيز. (Ic4826)
  • تمت إزالة تنسيق الجدول مؤقتًا إلى أن يصبح متوفرًا مرة أخرى مع واجهة برمجة تطبيقات مُحدّثة. (Id88a7)
  • تم إنشاء واجهة برمجة تطبيقات CanvasScope التي تعمل على لفّ عنصر لوحة الرسم لعرض سطح واجهة برمجة تطبيقات للرسم البياني بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق الاستقبال الخاص بها، كما يتم أيضًا تحديد حجم معلومات الحجم وفقًا لحدود الداخلية المقابلة. فلا يتطلب من المستهلك الاحتفاظ بكائن حالة الطلاء الخاص به لتكوين عمليات الرسم.

    تمت إضافة CanvasScopeعيّن كما تم تحديث التطبيق التجريبي لتضمين عرض توضيحي للرسومات التوضيحية (Ifd86d)

  • تمت إزالة ColoredRect. User Box مع أداة التعديل drawBackground بدلاً من ذلك (I983c7، b/152753731)

  • إضافة تخصيص لون المؤشر إلى حقل النص (I6e33f)

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

  • يمكن الآن استخدام TextFieldValue المستخدَم مع TextField مع إعادة إنشاء النشاط عند استخدامه على النحو التالي: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce، b/155075724).

  • لإضافة المَعلمات شائعة الاستخدام إلى Text(). إذا كنت حاليًا بصدد إنشاء نمط نص محلي لتمرير عدد صغير من هذه المعلمات، مثل Text(style = TextStyle(textAlign = TextAlign.Center))، يمكنك الآن تقديم المَعلمات مباشرةً فقط: Text(textAlign = TextAlign.Center) (I82768)

  • استبدلت معلمة CoreTextField/TextFieldNIdentifier بقيمة FocusNode للدمج مع النظام الفرعي للتركيز. (I7ea48)

  • تعديل الحقل النصي: في البعد الأفقي، سيَشغل كل المساحة المتاحة الممنوحة له (Ib08df، b/154638552)

  • تمت إضافة InteractionState وInteraction، مما يسهل إنشاء المكونات التي تتفاعل مع تغيرات حالة واجهة المستخدم مثل الضغط والسحب (Icfe25، b/152525426)

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

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

  • تحديث واجهة برمجة تطبيقات TextField - تم دمج استدعاءات onFocus وonBlur في معاودة اتصال onFocusChange(Boolean) واحدة مع المعلَمة (I66cd3)

  • تم تغيير اسم ScaleFit إلى ContentScale Moved ContentScale من رسومات واجهة المستخدم إلى وحدة ui-core، ليعيش في نفس الوحدة مثل واجهة برمجة التطبيقات API (واجهة برمجة التطبيقات). تمت إعادة تسمية FillMaxعبِّر عن الاقتصاص وأعادت تسميت FillMin الأوسط إلى Fit وأعادت تسمية Fit إلى Inside لمطابقة أفضل ImageView.ScaleType

  • تتم إزالة ServiceContentColor، ولكن يمكنك بدلاً من ذلك استخدام ContentColorبعث المباشر مع Providers (Iee942).

  • لإضافة مَعلمة لون إلى النص، ما يتيح إلغاء لون نمط النص بدون الحاجة إلى الدمج يدويًا مع النمط المتوفّر في المظهر (I41a66)

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

    • تم إنشاء نطاق المستلم لـ draw() ContentDrawScope
    • تمت إزالة جميع المعلمات في draw()
    • يحتوي DrawScope على الواجهة نفسها المُستخدَمة في تطبيق CanvasScope.
    • يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
  • تم إيقاف ColoredRect نهائيًا. يمكنك استخدام Box(Modifier.preferredSize(width, height).drawBackground(color)) كبديل. (I499fa، b/152753731)

  • يتم تحديث نظام تحديد المواضيع وفقًا لمواصفات Material Design. يمكنك الآن توفير أشكال صغيرة ومتوسطة وكبيرة لتستخدمها معظم المكوّنات (Ifb4d1).

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

  • تم نقل السحب إلى مفتاح التعديل (Id9b16، b/151959544)

  • تم نقل Text إلى حزمة androidx.ui.foundation، من androidx.ui.core. (I87ce5)

  • إضافة معلمة enabled إلى مربّع الاختيار ومفتاح التبديل والتبديل (I41c16)

  • أصبح تطبيق Ripple الآن "معدِّل". في حين أن الاستخدام المقترح لم يتم تحويله بعد هو "Clickable(onClick = { ... }, modifier = ripple())" (Ie5200، b/151331852، b/150060763)

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

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

  • تم إنشاء صورة قابلة للإنشاء للتعامل مع الحجم/التخطيط بالإضافة إلى رسم ImageAsset معين على الشاشة. يتيح العنصر القابل للإنشاء أيضًا رسم أي مثيل عشوائي من فئة Painter مراعيًا حجمه الأساسي، بالإضافة إلى دعم حجم ثابت أو حد أدنى معيّن (Ibcc8f)

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

  • تمت إعادة تسمية الصورة إلى ImageAsset للتمييز بشكل أفضل بين بيانات الصورة والصورة القادمة القابلة للإنشاء والتي تستخدم للمشاركة في التخطيط ورسم المحتوى.

    تم إنشاء طريقة الإضافة على android.graphics.Bitmap، Bitmap.asImageAsset()، لإنشاء مثيل لـ ImageAsset مفيد للجمع بين تطوير تطبيقات Android التقليدي وإطار عمل الإنشاء. (Id5bbd)

  • تمت إزالة عنصر DrawImage القابل للإنشاء. استخدِم ImagePainter لرسم صورة على تنسيق حالي، أو SimpleImage لتقديم صورة تشغل مساحة (I595e1، b/149827027).

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

  • تمت إضافة رمز، IconButton و IconToggleButton، يؤدي إلى إزالة AppBarIcon. يمكنك استبدال الاستخدامات الحالية لتطبيق AppBarIcon مباشرةً بـ IconButton، وسيتوفّر الآن ناحية اللمس المستهدفة الصحيحة. ويمكنك الاطّلاع على نماذج معلومات الاستخدام والاطّلاع على رموز Material Codes المقدَّمة والتي يمكنك استخدامها مباشرةً مع هذه المكونات. (I96849)

  • تمت إزالة عنصر DrawShape القابل للإنشاء. يمكنك استخدام أداة التعديل في DrawBackground بدلاً من ذلك. (I7ceb2)

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

  • تمت إضافة مكوِّن قابل للتمرير، ما يسمح بإنشاء برامج تمرير/قوائم مخصّصة (I5fd37).

  • تمت إعادة تسمية الخلفية إلى DrawBackground وجعلها قابلة لحفظها بشكل تلقائي (Ia0bd3).

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

  • تمت إضافة مكون "لوحة الرسم". يأخذ هذا العنصر القابل للإنشاء بعض الحجم (يوفّره المستخدم) ويسمح لك بالرسم باستخدام CanvasScope (I0d622).

  • إعادة تسمية عنصر التعديل Border إلى DrawBorder (I8ffcc)

  • تمت إضافة مكون Box للجمع بين وظائف التخطيط والرسم الشائعة. (I6e2a7)

  • تُظهر برامج التمرير الآن سلوك الحركة السريعة في نظام التشغيل Android. (I922af، b/147493715)

  • تم استبدال DrawBorder بمعدِّل الحدود (Id335a).

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

  • تمت إعادة تسمية مَعلمة النسبة المئوية عند إنشاء إرشادات ConstraintLayout إلى كسر. (Ida2db)

  • تمت إضافة دعم للهوامش الخاصة بحواجز ConstraintLayout. (I47ffe)

  • تم إصلاح دعم RTL في ConstraintLayout. تمت إضافة واجهات برمجة تطبيقات غير مُدركة ذات RTL. (I3b1c7)

  • تمت إضافة DSL جديد إلى ConstraintLayout. يُرجى الاطّلاع على النماذج للحصول على مزيد من التفاصيل. (Icaa9a)

  • تمت إضافة التعليق التوضيحي @SharedLayout. يتم الآن وضع علامات على ConstraintLayout وflowRow وFlowColumn مع علامة أن واجهات برمجة التطبيقات الخاصة بها ستتغير. (I412a8)

  • تمت إضافة "Modifier.padding(InnerPadding)" (I94985، b/157133803).

  • تمت إزالة المحاذاة لصف الصفوف ومحاذاة العمود المتوقفة نهائيًا في الصف والعمود. (If60d4، b/155858731)

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

  • تمت إضافة معدِّل تنسيق الإزاحة، الذي يمكن استخدامه لتحديد الإزاحة (الديناميكية) بالبكسل. (I5af57)

  • تم إيقاف نقطة التكوين القابلة للإنشاء في ControlsLine Offset نهائيًا، يُرجى استخدام عنصر التعديل المقدَّر نسبيةPaddingFrom() بدلاً من ذلك. تمت إزالة CenterAlignmentLine القابل للإنشاء. (I60107)

  • تمت إضافة عنصر تعديل التنسيق defaultMinSizeConstraints، الذي يضبط قيود الحجم على التخطيط الملتف فقط عند عدم تحديد القيود المقابلة الواردة (0 لقيود الحد الأدنى واللانهاية للحد الأقصى للقيود). (I311ea، b/150460257)

  • تمّت إزالة الحاوية. استخدام Box بدلاً من ذلك (Ibbc2b، b/151407926)

  • تمت إزالة مفاتيح تعديل العرض/الارتفاع/الحجم المتوقفة نهائيًا. (Ib0bc1)

  • تمت إضافة قيم المَعلمات التلقائية لمعدِّل الإزاحة. (I37f06)

  • تمت إضافة أداة تعديل المساحة المتروكة. (I39840)

  • تمت إزالة أداة تعديل LayoutAspectRatio المتوقفة نهائيًا. (I65a74)

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

  • تم إصلاح خطأ في معدِّلات العرض والارتفاع الذي كان يتسبب في قياس التخطيط الملتف بدون قيود على محور معاكس. (I210b8، b/154797971)

  • تمت إضافة معلمتي verticalGravity وhorizontalGravity إلى "الصف" والعمود، على التوالي. (I7dc5a)

  • تم تحديث wrapContentDisplay وwrapContentHeight لتوقُّع محاذاة رأسية أو أفقية بدلاً من أي محاذاة. تم تحديث مُعدِّل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تحديث الصف والعمود والحزمة لإتاحة عمليات المحاذاة المستمرة المخصّصة. (Ib0728)

  • تم جعل المحاذاة قابلة للتحسين باستخدام قيم عشوائية. تمت إضافة محاذاة أحادي الأبعاد. (Ia0c05)

  • تمت إعادة تسمية EdgeInsets إلى InnerPadding. تمت إعادة تسمية معلمة innerPadding لـ Material Buttons إلى تجليد. (I66165)

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

  • تمت إضافة تعديلات لتغيير الحجم إلى القياسات الأساسية وإيقاف المكوّنات التي تخدم هذا الغرض نهائيًا. (I8295d)

  • تمت إضافة إمكانية تخصيص أبعاد العناصر الثانوية في ConstraintLayout (Idb1a5).

  • تمت إزالة العنصرَين القابلَين للإنشاء المتوقّفَين لكل من ميزة "الالتفاف" و"المركز". (I29e23)

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

  • يمكن الآن الوصول إلى أعضاء RowScope والعمود "نطاق العمود" خارج الصف والعمود. (I3a641)

  • تم إيقاف الحاوية نهائيًا. استخدِم Box بدلاً من ذلك. (I675ce، b/151407926)

  • تمت إضافة معدِّل Layout Offset لإزاحة موضع التنسيق (I0b8a3).

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

  • تم تعديل التنسيق لعدم ملء المساحة المتاحة بعد الآن (I2b14f)

  • تمت إزالة AspectRatio القابلة للإنشاء لصالح المعدِّل. تم حذف عنصر FlexColumn القديم والعناصر القابلة للإنشاء FlexRow وأداة تعديل المسافات (Iec8a7).

  • تمت إزالة معدِّل LayoutInflexible للصف والعمود (I0d820).

  • يمكنك تنفيذ مؤشرات تحديد السحب لتغيير حقل النص. (I27032)

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

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

  • تم إيقاف FocusModifier نهائيًا لصالح Modifier.focus وModifier.focusRequester وModifier.focusMonitorer تم إيقاف FocusState وFocusStepState لتحل محله FocusState2 (I46919 وb/160822875 وb/160922136).
  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607)
  • تمت إعادة تسمية العديد من واجهات برمجة التطبيقات التجريبية لتصبح أكثر سهولة. تمت إعادة تسمية جميع واجهات برمجة تطبيقات FindXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة تطبيقات doXYZ إلىperformXYZ. (I7f164)
  • يزيل Modifier.ripple المتوقف سابقًا. تستخدم الميزة القابلة للنقر الآن تموج كمؤشر افتراضي (إذا تم تعيين MaterialTheme {} في تطبيقك) لذا في معظم الحالات يمكنك فقط استخدام إمكانية النقر والحصول على مؤشر تمويج مجانًا. إذا كنت بحاجة إلى تخصيص المعلمة color / size / bounded للتمويج، فيمكنك إنشاء RippleIndexation يدويًا وتمريره إلى أن يمكن النقر عليه كمعلمة إشارة. (I663b2، b/155375067)
  • تمت إزالة واجهات برمجة التطبيقات لاختبار الحجم القديم. (Iba0a0)
  • واجهة برمجة تطبيقات Made LayoutNode التجريبية (I4f2e9)
  • تم تنفيذ الإصدار 1 من قفل اتجاه التمرير في Compose. (I1ce7a، b/150289741)
  • تكتسب النوافذ المنبثقة ومربعات الحوار والقوائم الآن مظهر MaterialTheme السياقي (Ia3665، b/156527485)
  • تمت إزالة مَعلمة اتجاه التصميم من وحدة القياس للدالة Layout(). ومع ذلك، يتوفّر اتجاه التصميم داخل معاودة الاتصال من خلال كائن نطاق القياس (Ic7d9d).
  • إضافة AbsoluteArrangement - يسمح بترتيب العناصر الفرعية داخل الصف بدون النسخ المطابق التلقائي في RTL (I3a1df)
  • تم إيقاف التعليق التوضيحي @غير المتتبّع. استبدال بـ @ComposableContract(tracked=false) (Id211e)
  • قبل إجراء هذا التغيير، كان المكوِّن الإضافي لإنشاء المبرمج البرمجي يعترض بشكل غير معتاد عمليات الاستدعاء للدوال الإنشائية داخل دالة @Composable في حال توفُّر (I5205a، b/158123804).
  • أضِف عنصر viewModel() قابل للإنشاء، والذي يسمح بإنشاء أو إنشاء ViewModel على نحو مماثل لطريقة العمل في "النشاط" أو "الجزء" (I5fdd1).
  • فئة النطاق الجغرافي المُعاد تصميمها لتكون فئة مضمّنة. تمت إزالة طرق الإنشاء المصاحبة لصالح الدالة الإنشائية للدالة ذات المعلمة التلقائية لجعل نصف القطر على المحور y مطابقًا للمعلَمة الإلزامية نصف القطر للمحور x.

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

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

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

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

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

  • يتضمّن مؤشر "TextField" رسمًا متحركًا وامضًا (Id10a7).

  • لم تعد الإيماءات الجزئية تتطلب تمرير رمز الإيماءات (Id7ae5)

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

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

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

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

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

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

  • تم إصلاح عطل في AdapterList عند إزالة العناصر (Ic64b0، b/153195921)

  • لقد غيّرنا طريقة قياسنا لأول تنسيق تضعه في كتلة activity.setContent { }. كان الأمر مضطرًا في السابق إلى ملء شاشة النشاط بالكامل، والآن أصبح يعمل كما لو كنت تضع تنسيقك داخل حزمة: يمكن أن يكون أصغر من الشاشة وسيتم وضعه في أعلى يمين الشاشة. إذا كنت تريد السلوك القديم، يمكنك تطبيق Modifier.fillMaxSize() على تنسيقك. (Ie88a7، b/153453714)

  • تمت إعادة تسمية وحدة ui-text-compose إلى ui-text. يحتوي ui-text الآن على عناصر CoreText و CoreTextField القابلة للإنشاء (Ib7d47).

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

  • تم نقل عناصر ui-framework/CoreText و CoreTextField القابلة للإنشاء ضمن ui-text-compose. قد ترغب في تضمين ui-text-compos في مشروعك. (I32042)

  • runOnIdleCompose وrunOnUiThread هما الآن دالتان عموميتان بدلاً من الطرق في ComposeTestRules. (Icbe8f)

  • [Mutable]تم نقل عوامل التشغيل المفوَّضة إلى المواقع الإلكترونية في الولاية إلى الإضافات لإتاحة تحسينات تفويض المواقع الإلكترونية في Kotlin 1.4. على المتصلين إضافة عمليات استيراد لمواصلة استخدام "by state { ... }" أو "by mutableStateOf(...)". (I5312c)

  • أصبح تطبيق DrawLayerModifier و drawLayer() تلقائيًا منبه بصيغة trackToBounds وClipToOutline على false. (I0eb8b، b/152810850)

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

  • عنصر قابل للإنشاء من مركز متوقّف نهائيًا. يجب استبداله إما بمعدِّل LayoutSize.Fill + Layout.Center أو بأحد العناصر القابلة للإنشاء في Box أو Stack مع تطبيق معدِّلات مناسبة (Idf5e0).

  • تمت إعادة تسمية Layout Flex إلى Layout Weight (وزن التخطيط). تمت إعادة تسمية المعلمة المحدودة للتعبئة. (If4738)

  • تم تغيير DrawVector من دالة عادية قابلة للإنشاء إلى إرجاع Modifier drawVector() التي سترسم المتجه كخلفية إلى التخطيط. (I7b8e0)

  • استبدل الدالة القابلة للإنشاء Clip بأداة التعديل drawClip(). يُعد DrawClipToBounds أداة تعديل ملائمة للاستخدام عندما تحتاج فقط إلى الاقتصاص إلى حدود الطبقة ذات شكل مستطيل. (If28eb)

  • تم استبدال دالة DrawShadow القابلة للإنشاء باستخدام معدِّل drawShadow(). يتم الآن رسم الظلال كجزء من معدِّل الطبقة. (I0317a)

  • تم نقل androidx.compose.ViewComposer إلى androidx.ui.node.UiComposer تمت إزالة androidx.compose.Emittable. حيث كانت متكررة مع ComponentNode. وتمت إزالة androidx.compose.ViewAdapters. ولم تعُد حالة استخدام متوافقة. تم إيقاف Compose.composeInto نهائيًا. يمكنك استخدام setContent أو setViewContent بدلاً منها. تم إيقاف Compose.disposition Compose نهائيًا. يُرجى استخدام طريقة dispose على Composition التي يعرضها setContent بدلاً من ذلك. تم نقل androidx.compose.Compose.subcomposeInto إلى androidx.ui.core.subcomposeInto

  • ملف شخصي تم إيقافه نهائيًا قابل للإنشاء. ويمكن استبداله إما بمعدِّل المحاذاة أو بعنصر Stack القابل للإنشاء (Ib237f)

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

  • أعِد تسمية Painter.toModifier إلى Painter.asModifier، لأنّ "التعديل" الذي تم إنشاؤه حديثًا يتضمّن إشارة إلى "Painter" الأصلي الذي يمكن مشاركته بين عدة مثيلات "التعديل" (I7195b).

  • إتاحة الاتجاه من اليمين إلى اليسار في أداة تعديل LayoutPadding (I9e8da)

  • تم دمج الكثافة وDensityScope في واجهة واحدة. يمكنك الآن استخدام Density الربط بواقع المحيطات بدلاً من استخدام "amindensity() ". بدلاً من withdensity(density) only with(density) (I11cb1)

  • تمت إزالة فئة ValueHolder. وفئات رسوم الرسوم المتحركة التي تمت إعادة بنائها ورسمها المتحركة لجعل حقل قيمة الرسوم المتحركة تجريديًا بحيث يمكن للفئات الفرعية مشاهدة تحديث القيمة.

    • تمت إضافة فئات نماذج لـAnimationValue وAnimationFloat وما إلى ذلك.
    • تمت إضافة مجموعة جديدة من واجهة برمجة التطبيقات @Composable خفيفة الوزن للتنقل بين القيم.
    • (I79530)
  • تم إجراء تغييرات على واجهة برمجة التطبيقات في أجواء الإضاءة المحيطة. اطّلِع على السجلّ ومستندات Ambient<T> للحصول على التفاصيل (I4c7ee، b/143769776)

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

  • تم إصلاح خطأ ConstraintLayout الذي يتسبب في حدوث عطل في عمليات إعادة الإنشاء. (Ibee5a، b/158164341)

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

  • تم تغيير اسم LayoutModifier2 إلى LayoutModifier. (Id29f3)

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

  • تم إيقاف ميزة LayoutDirection مضمَّنة نهائيًا. لقراءة اتجاه التنسيق الذي تحدّده اللغة، استخدِم localeLayoutDirection في صفحة "الإعداد" (I851b1).

  • تمت إضافة positionInParent وboundsInParent لـ LayoutCoordinates. (Icacdd، b/152735784)

  • تم إيقاف ParentData القابل للإنشاء نهائيًا. عليك إنشاء معدِّل ينفذ واجهة ParentDataModifier أو استخدام أداة تعديل LayoutTag إذا كنت تحتاج إلى وضع علامة على عناصر التصميم الثانوية للتعرّف عليها داخل مجموعة القياس. (I51368، b/150953183)

  • أضف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين OnPositioned وOnChildPositioned القابل للإنشاء. (I2ec8f)

  • عدم السماح بالمساحة المتروكة السالبة في LayoutPadding. يجب استخدام Layout Offset بدلاً من ذلك لإزاحة الموضع السلبي. (Ifb5b1)

  • حصلت WithConstraints على معلمة LayoutDirection (I6d6f7)

  • تم تحديث العلامة ComposeFlags.COMPOSER_PARAM لتصبح true، ما سيؤدي إلى تغيير استراتيجية إنشاء الرموز للمكوِّن الإضافي الإنشاء. يؤدي هذا المستوى العالي إلى إنشاء دوال @Composable باستخدام مَعلمة اصطناعية إضافية يتم تمريرها إلى استدعاءات @Composable اللاحقة لكي يتمكن وقت التشغيل من إدارة عملية التنفيذ بشكل صحيح. ومع ذلك، يجب أن يحافظ هذا التغيير على التوافق مع مستوى المصدر في جميع استخدامات الإنشاء الخاضعة لقيود. (I7971c)

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

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

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

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

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

  • يمكنك إلغاء الربط من قائمة شريط الأدوات لعرض النسخ والقص واللصق على نحو صحيح. (Id3955)

  • إضافة FloatingToolbar لتحديد حقل النص (Ie8b07)

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

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

  • إضافة HapticFeedback إلى تحديد حقل النص (I58050)

  • إضافة طرق النسخ والقص واللصق إلى تحديد حقل النص. (Idb70b)

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

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

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

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

  • إضافة شريط أدوات للعمليات المتعلقة بالنص. (I49d53)

  • أصبح تطبيق LifecycleOwner AMP الجديد متاحًا الآن. إنّ النشاط الذي تستخدمه في واجهة المستخدم في Compose يجب أن يوسّع نطاق androidx.activity.ComponentActivity (أو AppCompatActivity). تم إيقاف سياسة setContent على android.app.Activity نهائيًا (Idb25a، b/153141084).

  • تم استبدال اسم الحزمة ui-android-text (androidx.text) بـ androidx.ui.text.platform للتوافق مع سياسة androidx. (I42711)