Compose Foundation

يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع الأساس لإنشاء أجزاء نظام التصميم الخاص بك.
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
13 تشرين الثاني (نوفمبر) 2024 1.7.5 - - 1.8.0-alpha06

البنية

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

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

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

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

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

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

رائع

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ملاحظات

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

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

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

الإصدار 1.8

الإصدار 1.8.0-alpha06

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

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

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

  • لإضافة المُعدِّل stylusHoverIcon (Iff20a، b/331289114)
  • تم إيقاف confirmValueChange في AnchoredDraggableState نهائيًا. بدلاً من رفض تغييرات الحالة، يجب ألا تكون العناصر الأساسية غير المسموح بها في مجموعة العناصر الأساسية النشطة، ويجب استخدام OverscrollEffect للإشارة إلى عدم توفّر الإجراء المطلوب. (Ia717f)
  • تغيير "مدير الملء التلقائي" ليصبح واجهة (I84914، b/376080755)
  • إضافة واجهات برمجة التطبيقات OverscrollEffect#withoutDrawing وOverscrollEffect#withoutEventHandling: تُنشئ واجهات برمجة التطبيقات هذه مثيلًا مُغلفًا لتأثير التمرير السريع المقدَّم الذي لا يرسم الأحداث أو يعالجها على التوالي، ما يسمح بعرض التمرير السريع في مكوّن منفصل عن المكوّن الذي يُرسِل الأحداث. على سبيل المثال، إيقاف رسم ميزة "الانتقال إلى أعلى الصفحة أو أسفلها" داخل قائمة بطيئة التحميل، ثم رسم ميزة "الانتقال إلى أعلى الصفحة أو أسفلها" بشكل منفصل في أعلى الصفحة أو في مكان آخر (Idbb3d وb/266550551 وb/204650733 وb/255554340 وb/229537244)
  • إتاحة الملء التلقائي في شريط أدوات النص (Ie6a4c)
  • إيقاف OverscrollConfiguration وLocalOverscrollConfiguration نهائيًا، وإضافة rememberPlatformOverscrollFactory لإنشاء مثيل من / تخصيص مَعلمات تنفيذ التمرير السريع التلقائي لإيقاف التمرير السريع، استخدِم LocalOverscrollFactory provides null بدلاً من LocalOverscrollConfiguration provides null. لتغيير لون الإضاءة / الحشو، استخدِم LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) بدلاً من LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9، b/255554340، b/234451516)
  • تم تغيير الموقع effectModifier في OverscrollEffect ليصبح node: DelegatableNode، بما يتوافق مع واجهات برمجة التطبيقات الأخرى. (Ic0b46، b/255554340)
  • تمت إزالة واجهة برمجة التطبيقات التجريبية GlobalAssertions. كان الغرض من هذه السمة هو إجراء عمليات التحقّق من تسهيل الاستخدام، اطّلِع على enableAccessibilityChecks() لهذا الغرض بدلاً من ذلك. (I59322)

الإصدار 1.8.0-alpha05

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

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

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

  • إتاحة تغيير حجم النص تلقائيًا نقْل مثيل AutoSize (مثل AutoSize.StepBased) إلى عنصر تركيب النص المفضّل لديك (مثل BasicText) وشاهد حجم النص يتكيّف مع المساحة المتوفّرة. (Ice7e0، b/139320827)
  • تضيف واجهتَي برمجة التطبيقات OverscrollFactory وLocalOverscrollFactory للسماح بضبط الانتقال السريع للأسفل أو للأعلى ضمن تسلسل هرمي. سيتم استخدام القيمة المقدَّمة من خلال LocalOverscrollFactory تلقائيًا لإنشاء OverscrollEffect. لإنشاء تأثير من الإعدادات الأصلية الحالية وتذكره، استخدِم rememberOverscrollEffect(). (I51ca4، b/255554340)

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

  • يمكنك تقديم CompositionLocal الذي يمكن استخدامه لتعديل درجة لون تمييز الملء الناجح في ميزة "الملء التلقائي". (I32092)
  • تمت إزالة ScrollableDefaults.overscrollEffect، ويجب استخدام rememberOverscrollEffect بدلاً منها. سيؤدي ذلك إلى إنشاء مثيل لتنفيذ التمرير السريع الحالي المقدَّم مع LocalOverscrollFactory. (I1651a، b/255554340)،(b/234451516)
  • تقديم واجهة AutofillManager جديدة يمكن استخدامها لتحسين رحلة المستخدمين في ميزة "الملء التلقائي" وعلامة isSemanticAutofillEnabled لتفعيل هذا الإصدار الجديد من ميزة "الملء التلقائي" (I9d484)
  • إزالة CombinedClickableNode تمّت إتاحة واجهة برمجة التطبيقات التجريبية هذه مؤقتًا لإزالة حظر العمل على تحسين الأداء، ولكن لم تعُد مطلوبة. بدلاً من ذلك، يجب استخدام Modifier.combinedClickable مباشرةً كما هو الحال مع واجهات برمجة التطبيقات الأخرى الخاصة بالمُعدِّلات. (I4b658)
  • تضيف هذه الإضافة عمليات تحميل زائدة إلى horizontalScroll وverticalScroll وLazyColumn وLazyRow وLazyHorizontalGrid وLazyVerticalGrid وLazyHorizontalStaggeredGrid وLazyVerticalStaggeredGrid وHorizontalPager وVerticalPager مع إمكانية تحديد OverscrollEffect مخصّص. سيتلقّى OverscrollEffect المقدَّم أحداثًا، وسيتم عرضه ضمن حدود هذه المكوّنات. يُرجى العِلم أنّه لا يمكن رسم OverscrollEffect نفسه مرّتين، لذا لا يمكنك رسم OverscrollEffect نفسه المقدَّم لأحد هذين المكوّنين بشكل منفصل باستخدام Modifier.overscroll. سيتم التعامل مع حالة الاستخدام الخاصة برسم الانتقال السريع للأسفل أو للأعلى خارج حدود هذه المكوّنات بشكل منفصل في المستقبل. (I2dc42، b/266550551، b/234274772، b/224572538، b/353805117)

الإصدار 1.8.0-alpha04

16 أكتوبر 2024

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

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

  • تُضيف هذه الوظيفة وظيفتَي الاستدعاء DelegatableNode#onDensityChange وDelegatableNode#onLayoutDirectionChange للسماح بتعديل حالة العقدة عند تغييرها. (I04f3e، b/340662451)
  • يعرض الآن كلّ من Paragraph وParagraphIntrinsics قائمة بجميع التعليقات التوضيحية المطبَّقة على AnnotatedString، في حين أنّه كان يعرض في السابق قائمة بـ SpanStyles فقط. (I12f80)
  • تمّ تقديم الرمز PointerInputModifierNode#touchBoundsExpansion الذي يمكن استخدامه لتوسيع حدود اللمس لمعدِّل إدخال مؤشر واحد. (Iccf02، b/335339283)

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

  • تم إصلاح خلل في بعض السيناريوهات حيث لم يتمّ احتساب الحدود الدنيا للموقع الجغرافي التي تمّ تمريرها إلى AnchoredDraggableDefaults.flingBehavior بشكلٍ صحيح. (Ifdf0d، b/367660226)
  • تقديم حلّ لعناصر التنقّل المُدمجة التي تتم إزالتها من شجرة العقد أثناء عملية التمرير السريع ستلغي هذه العقد الآن عملية الرمي وتُرسِل الحدث onPostFling بشكل صحيح مع السرعة المتبقية. سنضيف أيضًا العلامة NewNestedScrollFlingDispatchingEnabled للتحكّم في السلوك في حال حدوث انحدارات. ستتم إزالة العلامة قبل طرح الإصدار التجريبي. (I05c37، b/371168883)
  • تم إصلاح خطأ كان يؤدي إلى تلقّي OverscrollEffects الذي تم تمريره إلى Modifier.anchoredDraggable بيانات دلتا ثنائية الأبعاد بدلاً من بيانات دلتا أحادية الأبعاد. (Ie52c0)

الإصدار 1.8.0-alpha03

2 أكتوبر 2024

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

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

  • تحديث إصدار Kotlin إلى 1.9 (I1a14c)
  • تمّ إدخال العلامة DraggableAddDownEventFixEnabled (I848d5)
  • تمّ تقديم دور جديد للدلالات يُسمى "لوحة العرض الدوّارة" لمحاكاة سلوك القائمة في صفحات الفهرسة لخدمات تسهيل الاستخدام. (Id354b، b/354109776، b/239672673)
  • تمت إزالة المُعدِّل الضمني graphicsLayer من العنصر القابل للتجميع BasicText. تمت إضافة علامة ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled تجريبية للسماح بالرجوع إلى السلوك القديم. (Ie478d)
  • تمت إضافة Modifier.recalculateWindowInsets() للسماح للأطفال في التسلسل الهرمي باستخدام insetsPadding حتى عندما يضبط الوالدان الإعدادات بدون consumeWindowInsets(). (I7f9e4)

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

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

الإصدار 1.8.0-alpha02

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

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

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

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

الإصدار 1.8.0-alpha01

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

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

الإصدار 1.7

الإصدار 1.7.5

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

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

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

  • تأكَّد من عدم إعادة تركيب العناصر المثبّتة مرتين في منطقة تمويه المحتوى. (Ic6224)

الإصدار 1.7.4

16 أكتوبر 2024

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

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

  • تم إصلاح خلل كان يتسبب في حدوث عطل نادر في حقول النص. (I475c6، b/313010266)
  • تمت إزالة ReusableContentHost في جذر عناصر التنسيق المُتأخّر. كان هذا السبب الأساسي المحتمَل لأعطال "تمّ استدعاء الإجراء على عقدة غير مفعّلة". (Id6e60)

الإصدار 1.7.3

2 أكتوبر 2024

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

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

  • تم إصلاح تسرُّب الذاكرة في BasicText عند ضبط minLines على قيمة غير تلقائية.

الإصدار 1.7.2

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

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

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

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

الإصدار 1.7.1

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

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

الإصدار 1.7.0

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

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

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

  • تم تحسين أداء Modifier.clickable وModifier.focusable وModifier.indication وModifier.scrollable وModifier.draggable بشكل كبير. كجزء من هذا الجهد، تم إجراء التغييرات التالية على واجهة برمجة التطبيقات بالإضافة إلى التغييرات الداخلية
    • تمت إضافة واجهة برمجة تطبيقات جديدة للإشارة، وهي IndicationNodeFactory. يؤدّي ذلك إلى تنفيذ ميزات "الإشارة" بأداء أفضل مقارنةً بواجهة برمجة التطبيقات rememberUpdatedInstance السابقة (التي تمّ إيقافها نهائيًا الآن). للحصول على معلومات عن نقل البيانات، يُرجى الاطّلاع على developer.android.com.
    • تقبل clickable / combinedClickable / selectable / toggleable الآن مَعلمة MutableInteractionSource يمكن أن تكون فارغة. إذا كان القيمة فارغة وكان "المؤشر" المقدَّم هو IndicationNodeFactory، يمكن إنشاء "المؤشر" بشكلٍ كسول فقط عند الحاجة، ما يؤدي إلى تحسين الأداء. إذا لم تكن بصدد تجميع MutableInteractionSource واستخدامها، ننصحك بإرسال القيمة null بدلاً من إرسال remember { MutableInteractionSource() }.
    • تم إيقاف Indication#rememberUpdatedInstance نهائيًا. ويؤدي ذلك إلى انخفاض كبير في الأداء لا يمكن تجنّبه، كما يمنع إجراء تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقات IndicationNodeFactory API الجديدة.
  • أصبحت BasicTextField باستخدام TextFieldState مستقرة الآن، وننصحك بجميع المواقع الإلكترونية التي تتلقّى المكالمات ببدء نقل البيانات من BasicTextField(value, onValueChange) إلى BasicTextField(TextFieldState).
  • تم إيقاف ClickableText نهائيًا. لإضافة روابط قابلة للنقر إلى النص، استخدِم BasicText مع التعليق التوضيحي الجديد LinkAnnotation في AnnotatedString. يسمح LinkAnnotation بتطبيق تصميم مخصّص استنادًا إلى حالة الرابط (مثل التركيز أو التمرير فوقه).
  • نعرّفك على ContextualFlowRow وEnhanced FlowRow/Column مع MaxLines وOverflow. يسرّنا الإعلان عن تحسينات على FlowRow وFlowColumn التجريبيتين، اللتين تتضمّنان الآن maxLines ودعم المحتوى الزائد، إلى جانب طرح ContextualFlowRow وContextualFlowColumn لأول مرة. تم تصميم هذا التعديل لتقديم مكوّنات مثالية للأداء، حيث يكون ContextualFlow* مثاليًا لعدد كبير من العناصر التي تستخدِم إعدادًا صغيرًا لعدد الأسطر الأقصى وزرّي عرض المزيد الديناميكيين +N، ويكون FlowRow وFlowColumn مثاليَين لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي في FlowRow أو FlowColumn حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتناسب مع الحد الأقصى للمحور المتقاطع، اضبط العرض الفائض على FlowRowOverflow.Visible أو FlowColumnOverflow.Visible أثناء الإعداد. يمكنك الاطّلاع على ContextualFlowRowSample وFlowRowSample للحصول على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082)
  • تمت إضافة إمكانية استخدام الصور المتحركة لظهور العناصر واختفائها في LazyColumn وLazyRow. في السابق، كان من الممكن إضافة المُعدِّل Modifier.animateItemPlacement() لإتاحة استخدام الرسوم المتحرّكة لموضع الإعلان (إعادة الترتيب). أوقفنا هذا المُعدِّل نهائيًا وأضفنا مُعدِّلًا جديدًا غير تجريبي يُسمى Modifier.animateItem() يتيح لك استخدام جميع أنواع الصور المتحركة الثلاثة: الظهور (التلاشي) والاختفاء (التلاشي) وإعادة الترتيب. (I2d7f7، b/150812265)
  • تمّت إتاحة ميزة تجريبية لأخذ لقطات شاشة طويلة في حاويات التمرير في ميزة "الإنشاء" باستخدام واجهة برمجة تطبيقات Android الرسمية (ScrollCaptureCallback).
  • تم استبدال مصدرَي التفاعل "السحب" و"النقر سريعًا" في NestedScroll بUserInput وSideEffect ليشملا التعريف الموسّع لهذَين المصدرَين الذي يتضمّن الآن الصور المتحركة (تأثير جانبي) وعجلة الماوس ولوحة المفاتيح (UserInput).
  • يمكن الآن وضع علامة "عاجل" على طلبات prefetch التي تبلغ LazyLayout، ما يعني أنّنا نتوقع أن يكون هذا العنصر مطلوبًا في اللقطة التالية ونريد تجاهل ميزانية اللقطة للتأكّد من إنجاز المزيد من العمل مسبقًا (Id513f).
  • إتاحة ميزة الكتابة اليدوية باستخدام قلم الشاشة على الأجهزة التي تعمل بالإصدارات الأحدث من Android U (I002e4)
  • تم ترقية واجهات برمجة تطبيقات مختلفة إلى الإصدار الثابت
    • صفحات التنقّل والربط والنوافذ المضمّنة

الإصدار 1.7.0-rc01

21 آب (أغسطس) 2024

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

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

  • تم إصلاح مشكلة تراجعية أدت إلى حدوث عطل عند التركيز على أي عنصر داخل عنصر رئيسي قابل للتركيز (أو النقر) وغير مفعّل. (b/317561689)

الإصدار 1.7.0-beta07

7 آب (أغسطس) 2024

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

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

  • ستؤدي الآن دوال SemanticsNodeInteraction ذات الصلة بإدخال النص، وهي performTextReplacement وperformTextInput وperformTextClearance، إلى ظهور أخطاء في العبارة عند طلبها في TextFields للقراءة فقط. (I4ae8f)
  • تم إصلاح مشكلة مرئيّة في الروابط التشعبية. (I23311)
  • تم إصلاح مشكلة عدم عمل المُعدِّل contentReceiver مع بعض أنظمة الكتابة الآلية.
  • إنشاء السرعة: منع انتشار قيم NaN في واجهة مستخدم Compose وFoundation

الإصدار 1.7.0-beta06

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

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

الإصدار 1.7.0-beta05

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

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

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

  • إصلاح لمعالجة قيم Nan في SnapFlingBehavior وPager

الإصدار 1.7.0-beta04

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

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

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

  • تجنُّب الأعطال عند قياس أسطر نصية كبيرة جدًا (مثلاً 10 آلاف حرف) (8157ab)
  • إصلاحات لقياس النص الكبير جدًا الذي يتسبب في حدوث عطل في الإصدار الجديد من BasicTextField (6b7575)
  • إلغاء تغيير في السلوك في قياس الصف/العمود يؤدي إلى إيقاف استخدام النص في سيناريوهات معيّنة (69e8ba)

الإصدار 1.7.0-beta03

12 يونيو 2024

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

الإصدار 1.7.0-beta02

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

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

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

  • تضيف واجهة برمجة تطبيقات تجريبية لضبط سلوك التحميل المُسبَق LazyGrids، على غرار واجهة برمجة التطبيقات التجريبية الحالية LazyLists. ويشمل ذلك إمكانية prefetching للعناصر في LazyGrids المتداخلة. على غرار LazyListPrefetchStrategy، يكون الإعداد التلقائي للتنفيذ هو التحميل المُسبَق للعنصرَين المتداخلَين الأولَين من كل شبكة، ولكن يمكن ضبط ذلك من خلال واجهات برمجة التطبيقات الجديدة LazyGridPrefetchStrategy(nestedPrefetchItemCount) وLazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • تمت إعادة تسمية SemanticsProperties.Editable إلى IsEditable وتغيير SemanticsPropertyReceiver.editable إلى val isEditable. أصبحت السمة الآن منطقية ويتم تحديدها دائمًا من خلال الحقول النصية. (I8acd8)
  • تم نقل القيم التلقائية basicMarquee إلى عنصر MarqueeDefaults. (I12ff6)
  • تمت إعادة تسمية المَعلمة basicMarquee delayMillis إلى repeatDelayMillis. (I12ff6)
  • تعديل واجهة برمجة التطبيقات لتنسيق الروابط: نقل TextLinkStyles إلى TextStyle وإزالة TextDefaults من المادة (I5477b)

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

  • تمت إعادة تسمية LayoutCoordinates.introducesFrameOfReference إلى LayoutCoordinates.introducesMotionFrameOfReference للإشارة إلى الغرض منها بشكل أفضل. تمّت إعادة تسمية الدالة ذات الصلة لاحتساب التنسيقات استنادًا إلى هذا الإعداد. (I3a330)
  • تمت إزالة "تلقائي" من سمات MarqueeDefaults. (I1d8a0)
  • تمت إزالة "الإعلان المتلألئ" من MarqueeDefaults موقعًا. (Iad4f4)
  • تمت إزالة TextLinkStyles من الصف TextStyle. بدلاً من ذلك، يُعدّ TextLinkStyles جزءًا من طريقة الإنشاء LinkAnntation وطريقة AnnotatedString.fromHtml (I90b2b).
  • تم إصلاح خطأ كان يؤدي إلى التصاق عنصر Pager عند رميه باتجاه حدّ معيّن بعد أن كان قد وصل إلى هذا الحدّ. (I9f373، b/339171222)
  • تتضمّن لعبة BTF2 الآن إيماءات اختيار الماوس الصحيحة. (Ibe8c6)

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

  • إعادة إرسال "جعل نوع المحتوى لحساب وقت الإنشاء/القياس يستند إلى التخزين المؤقت لتحسين الدقة" (Iea622)
  • جعل مدة إنشاء/قياس المحتوى تعتمد على نوع المحتوى في أداة "التحميل المُسبَق" لتحسين الدقة (Ibccb1)
  • إتاحة مُعدِّلات WindowInsetsPadding من مجموعة المصادر الشائعة (I070b2)

الإصدار 1.7.0-beta01

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

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

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

  • تمت إضافة سمة KeyboardOptions.shouldShowKeyboardOnFocus مرة أخرى باعتبارها سمة متوقّفة نهائيًا ومخفية للحفاظ على التوافق مع الملفات الثنائية. (I15cfe)
  • يعكس Modifier.anchoredDraggable الآن قيم تغييرات السحب تلقائيًا للمكونات ذات الاتجاه الأفقي عند استخدامها في تنسيق RTL. (I3c6d9)
  • تم تغيير اسم "AnnotatedString.hasEqualsAnnotations" إلى "hasEqualAnnotations". (I685c0)
  • تم تعديل واجهة برمجة التطبيقات للحصول على روابط ذات مظهر Material في النص. على وجه التحديد، تمّت إزالة الطرق من TextDefaults لإنشاء LinkAnnotations ذات طابع معيّن وتحليل HTML باستخدام روابط ذات طابع معيّن. بدلاً من ذلك، تمت إضافة فئة TextLinkStyles تتيح تصميم الروابط كمَعلمة إلى عنصر Text composable. (I31b93)
  • تم استبدال onDragStarted وonDragStopped بطلبات إعادة الاتصال التي لا تتضمّن تعليقًا. (I59de8)

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

  • تم إصلاح خطأ كان يؤدي إلى تعطُّل Pager عندما يكون contentPadding أكبر من القيود الواردة. يفرض Pager الآن القيم السالبة التي يتم عرضها من PageSize إلى 0. (Iba5d8، b/314008560)

الإصدار 1.7.0-alpha08

1 مايو 2024

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

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

  • تمت إضافة قائمة السياقات التي تظهر عند النقر بزر الماوس الأيمن إلى BasicTextField وSelectionContainer مع عناصر لإجراءات القطع والنسخ واللصق واختيار الكل. (If8c93 وIa2b49 وI6f268)

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

  • يمكن الآن وضع علامة "عاجل" على طلبات prefetch التي تبلغ LazyLayout، ما يعني أنّنا نتوقع أن يكون هذا العنصر مطلوبًا في اللقطة التالية ونريد تجاهل ميزانية اللقطة للتأكّد من إنجاز المزيد من العمل مسبقًا (Id513f).
  • تمت إعادة تسمية isPositionedByParentWithDirectManipulation إلى introducesFrameOfReference. يُرجى العِلم أنّه يُحدث الآن التأثير العكسي، أي أنّ معظم LayoutCoordinates تقدّم إطارًا مرجعيًا تلقائيًا، ولن تكون الخاصية خطأ إلا عند وضعها تحت التلاعب المباشر. للبحث عن موضع باستخدام العناصر التي تقدّم إطارًا مرجعيًا فقط، استخدِم positionInLocalFrameOfReference(...). أو positionInLocalLookaheadFrameOfReference من LookaheadScope (Ifc5f7)
  • تمت إعادة تسمية onClicked إلى onClick في LinkInteractionListener (Iaa35c)
  • تغيير مقياس lambda للإجراء getScrollViewportLength وفقًا لملاحظات مجلس واجهة برمجة التطبيقات (Ibc74a)
  • تمت إعادة تسمية واجهات برمجة التطبيقات المخصّصة لتفويض الكتابة بخط اليد باستخدام قلم الشاشة. (Ica45f، b/327271923)
  • أعِد تسمية TextInclusionStrategy.isInside إلى isIncluded. اجعل نوع الإرجاع Paragraph/MultiParagraph#getRangeForRect() غير قابل للحذف. (I51f26)

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

  • تمت إضافة "تحديد الكل" إلى جميع القوائم السياقية النصية في SelectionContainer. (Ib750e، b/240143283)
  • تم إصلاح مشكلة التقاط لقطات شاشة طويلة للحاويات التي يتم التمرير فيها باستخدام reverseScrolling=true. (I7c59c)
  • تم إصلاح مشكلة كانت تؤدي إلى تغيير currentValue في AnchoredDraggableState عند الاقتراب من حدود الولاية. (Iea30b، b/333846848)

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

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

الإصدار 1.7.0-alpha07

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

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

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

  • تمت إضافة عنصر TextDefaults يحتوي على طرق لإنشاء LinkAnnotation وتحليل سلسلة مُشارَكة بعلامات HTML تُطبّق MaterialTheme على الروابط. (I98532، b/139312671)
  • تمت إضافة إمكانية استخدام الصور المتحركة لظهور العناصر واختفائها فيLazyVerticalGrid وLazyHorizontalGrid. في السابق، كان من الممكن إضافة المُعدِّل Modifier.animateItemPlacement() لإتاحة استخدام الرسوم المتحرّكة لموضع الإعلان (إعادة الترتيب). أوقفنا هذا المُعدِّل نهائيًا وأضفنا مُعدِّلًا جديدًا غير تجريبي يُسمى Modifier.animateItem() يتيح لك استخدام جميع أنواع الصور المتحركة الثلاثة: الظهور (التلاشي) والاختفاء (التلاشي) وإعادة الترتيب. (Ib7d12، b/330510929)
  • تمت إضافة إمكانية استخدام الصور المتحركة لظهور العناصر واختفائها في LazyVerticalStaggeredGrid وLazyHorizontalStaggeredGrid. في السابق، كان من الممكن إضافة المُعدِّل Modifier.animateItemPlacement() لإتاحة استخدام الرسوم المتحرّكة لموضع الإعلان (إعادة الترتيب). أوقفنا هذا المُعدِّل نهائيًا وأضفنا مُعدِّلًا جديدًا غير تجريبي يُسمى Modifier.animateItem() يتيح لك استخدام جميع أنواع الصور المتحركة الثلاثة: الظهور (التلاشي) والاختفاء (التلاشي) وإعادة الترتيب. (I69bc9، b/330511290)

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

  • تضيف ContextMenuColors وLocalContextMenuTheme ProvidableCompositionLocal المرتبط به. يمكن تعديل ألوان قائمة السياقات في حقول النص والنص القابل للاختيار من خلال توفير التركيبة محليًا. (Ifa154)
  • تم توفير خيار تنسيق حالة الضغط على الروابط النصية بالإضافة إلى التنسيق العادي والتنسيق عند التمرير فوق الرابط والتركيز عليه. (I5f864، b/139312671)
  • تقديم ViewConfiguration.HandwritingGestureLineMargin لإيماءات الكتابة بخط اليد إتاحة إيماءة الكتابة بخط اليد للغة BasicTextField (Ie6e13، b/325660505)
  • تمت إزالة DelegatableNode.scrollIntoView في الإصدار 1.7 لأنّه لم يكن لدينا الوقت لإنهاء استقرار بقية واجهة برمجة التطبيقات ذات الصلة. ستتم إعادة طرح هذه الدالة في الإصدار 1.8 (I6cf61 وb/333421581 وb/332900232).
  • عند طلب إحداثيات التنسيق، يمكنك الآن استخدام الوسيطة excludeDirectManipulationOffset لاستبعاد القيمة المُعدَّة من خلال تنسيقات العناصر الرئيسية التي وضعت عناصرها الفرعية باستخدام Placeable.PlacementScope.withDirectManipulationPlacement. وبالمثل، يمكن أن يضع الآن التنسيق الذي يغيّر موضع عناصره الفرعية بشكل متكرّر باستخدام withDirectManipulationPlacement (مثل Scroll الذي يتم تنفيذه تلقائيًا). يساعد ذلك في أن تصبح الصور المتحرّكة المستندة إلى approachLayout أكثر سهولة، حيث أصبح بإمكانك الآن التمييز بين العناصر التي تريد إضافة تأثيرات متحركة إليها والعناصر التي تريد تطبيقها مباشرةً عند اتخاذ قرار بإضافة تأثيرات متحركة إلى تصميمك. (I60ec7)
  • عرِّف requestScrollToItem على LazyStaggeredGrid. لكل عملية قياس، يمكن للعملاء الآن إيقاف الاحتفاظ بالفهرس استنادًا إلى المفتاح من خلال استدعاء requestScrollToItem. ولا يؤدي ذلك إلى تغيير السلوك الحالي بأي شكل من الأشكال ما لم يتم استدعاء requestScrollToItem. (I63983)
  • أدرِج requestScrollToPage في Pager. لكل عملية قياس، يمكن للعملاء الآن إيقاف الاحتفاظ بالفهرس استنادًا إلى المفتاح من خلال استدعاء requestScrollToPage. ولا يؤدي ذلك إلى تغيير السلوك الحالي بأي شكل من الأشكال ما لم يتم استدعاء requestScrollToPage. (Ic4213)
  • تم تقديم requestScrollToItem في LazyGrids. لكل عملية قياس، يمكن للعملاء الآن إيقاف الاحتفاظ بالفهرس استنادًا إلى المفتاح من خلال استدعاء requestScrollToItem. ولا يؤدي ذلك إلى تغيير السلوك الحالي بأي شكل من الأشكال ما لم يتم استدعاء requestScrollToItem. (I0a7a0)
  • تم وضع علامة "تم إيقافه نهائيًا" على ClickableText. لإضافة روابط إلى النص، أنشئ AnnotatedString يتضمّن LinkAnnotation يتوافق مع الرابط وأرسِل هذا العنصر AnnotatedString إلى العنصر القابل للتجميع Text (I34d4b أو b/323346994).
  • تم إيقاف العلامة UrlAnnotation نهائيًا، لذا يُرجى استخدام العلامة LinkAnnotation.Url بدلاً منها. إذا كنت تستخدم تنسيق Material، استخدِم العنصر TextDefaults لإنشاء التعليق التوضيحي مع تطبيق تنسيق Material عليه (I8d180، b/323346545).
  • تمت إعادة تسمية String.parseAsHtml إلى AnnotatedString.Companion.fromHtml (I43dcd)
  • تمت إضافة وسيطات التصميم (linkStyle وfocusedLinkStyle وhoveredLinkStyle) ومستمع للتفاعل مع الرابط إلى طريقة parseAsHtml. عند تحليل السلسلة المُشارَك فيها علامات HTML باستخدام علامات <a>، ستنشئ الطريقة LinkAnnotation.Url لكل علامة من هذه العلامات وتُمرِّر عناصر التصميم ومستمع تفاعل الروابط إلى كل تعليق توضيحي. (I7c977)
  • يقبل LinkAnnotation الآن وسيطات التصميم المستندة إلى الحالة وLinkInteractionListener. أضِف هذا التعليق التوضيحي إلى AnnotatedString للحصول على رابط تشعّبي. من خلال تمرير focusedState و/أو hoveredState، يمكنك تحديد الإعدادات المرئية للروابط عند التركيز عليها و/أو تمرير مؤشر الماوس فوقها. (I81ce4، b/139312671)
  • تمت إزالة علامة الميزة الخاصة بلقطات الشاشة الطويلة. (I28648، b/329128246)
  • سيعرض LazyColumn الآن العناوين الثابتة بشكل صحيح في لقطات الشاشة الطويلة. (I8d239، b/329296635)
  • استقرار معظم واجهات برمجة التطبيقات التجريبية المتبقية التي تم طرحها مع BasicTextField الجديدة (I714e2)
  • تمت إضافة المَعلمة textObfuscationCharacter إلى BasicSecureTextField للتحكّم في الحرف الذي سيتم استخدامه أثناء تشويش المحتوى. (I0588b)
  • يتم استبدال مصدرَي التفاعل Drag وFling بـ UserInput وSideEffect لاستيعاب التعريف الموسّع لهذَين المصدرَين الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput). (I40579)NestedScroll
  • يمكنك تقديم LocalBringIntoViewSpec، وهو سلوك التمرير بالتركيز الذي يعتمد على النظام الأساسي ويتم تطبيقه في طبقة المُعدِّل القابل للتمرير. (I27aa5، b/317453911)
  • تمت إزالة TextFieldCharSequence. يتم استبدال TextFieldBuffer.originalValues بـ TextFieldBuffer.originalText وTextFieldBuffer.originalSelection. (I2c7d6)
  • لم تعُد سمة ImeOptions.hintLocales مسموحًا لها بقبول قيمة فارغة. إذا أردت إرسال قائمة لغات فارغة، يُرجى استخدام LocaleList.Empty. (Ic5bc4)
  • تمت إعادة تسمية getOffsetFractionForPage إلى getOffsetDistanceInPages. (Ia05e2)

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

  • عند دمج InputTransformations مع next، يتم الآن دمج KeyboardOptions بشكل صحيح حسب الخيارات الفردية باستخدام طريقة KeyboardOptions.merge الجديدة. (Ie5304، b/295951492)
  • لا تأخذ targetValue في AnchoredDraggableState الآن في الاعتبار حدود المواضع. أصبح لها الآن حدّ أدنى ضمني يبلغ %50، ما يعني أنّ targetValue تتغيّر في منتصف المسافة بين علامتَي مرجع. (I82c2c)

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

  • تمت إعادة تسمية واجهات برمجة تطبيقات التمرير (I56a75)

الإصدار 1.7.0-alpha06

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

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

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

  • تمت إضافة إمكانية استخدام الصور المتحركة لظهور العناصر واختفائها في LazyColumn وLazyRow. في السابق، كان من الممكن إضافة المُعدِّل Modifier.animateItemPlacement() لإتاحة استخدام الرسوم المتحرّكة لموضع الإعلان (إعادة الترتيب). أوقفنا هذا المُعدِّل نهائيًا وأضفنا مُعدِّلًا جديدًا غير تجريبي يُسمى Modifier.animateItem() يتيح لك استخدام جميع أنواع الصور المتحركة الثلاثة: الظهور (التلاشي) والاختفاء (التلاشي) وإعادة الترتيب. (I2d7f7، b/150812265)
  • يمكن الآن لعملاء LazyColumn/LazyRowإيقاف الاحتفاظ بفهرس استنادًا إلى مفتاح القياس القادم من خلال استدعاء LazyListState.requestToScroll غير المعلّق. (I98036، b/209652366)
  • تمت إضافة طريقة parseAsHtml للسلاسل ذات الأنماط: فهي تسمح بتحويل سلسلة تم وضع علامات HTML عليها إلى AnnotatedString. يُرجى العلم أنّ بعض العلامات غير متوافقة، على سبيل المثال، لن تتمكّن من عرض قوائم بنقاط حتى الآن. (I84d3d)
  • تم توفير ميزة تجريبية لقطات الشاشة الطويلة في حاويات التمرير في ميزة "الإنشاء" باستخدام واجهة برمجة تطبيقات Android الرسمية (ScrollCaptureCallback). هذه الميزة تجريبية وقد لا تعالج حاليًا جميع الحالات بشكل صحيح. ولهذا السبب، تكون هذه الميزة غير مفعّلة تلقائيًا في الوقت الحالي. للموافقة، اضبط العلامة ComposeFeatureFlag_LongScreenshotsEnabled على true. ستتم إزالة هذا الشعار قبل الإصدار التجريبي 1.7. (I2b055، b/329296471)
  • تقديم واجهة برمجة تطبيقات GraphicsLayer جديدة لتوفير المزيد من المرونة في مواضع إعلانات GraphicsLayer وعرضها وتوفير ميزات العرض الأساسية بدون الحاجة إلى التنسيق مع عمليات التنفيذ القابلة للتجميع لتحديد نُسخ معدِّلات GraphicsLayer

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

  • أصبحت جميع مَعلمات KeyboardOptions لها قيمة غير محدّدة تلقائيًا. تمّت إضافة طريقة KeyboardOptions.merge.
  • تمت إعادة تسمية KeyboardOptions.autoCorrect إلى autoCorrectEnabled وجعلته قابلاً للتغيير، حيث تشير القيمة null إلى عدم تحديد أي قيمة. (Ia8ba0، b/295951492)
  • تمت إعادة تسمية outOfBoundsPageCount إلى beyondViewportPageCount. (I129c6)
  • تم تغيير fun ClipEntry.getMetadata() إلى val ClipEntry.clipMetadata. (I50155)
  • تمت إزالة TextFieldState.valueAsFlow(). يُفضَّل استخدام snapshotFlow { state.text } أو snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629).
  • تم إعادة تنظيم InputTransformation.transformInput مَعلمة. تمت إزالة originalValue: TextFieldCharSequence. بدلاً من ذلك، يحمل TextFieldBuffer الآن هذه القيمة بالاسم نفسه. تمّت أيضًا إزالة المَعلمة valueWithChanges: TextFieldBuffer. أصبح TextFieldBuffer الآن نطاق المستلِم في الدالة. (I919cc)
  • يستخدم الإصداران BasicTextField(state) وBasicSecureTextField الآن KeyboardActionHandler بدلاً من KeyboardActions لمعالجة الإجراءات التي تتّخذها لوحة المفاتيح البرمجية. (I58dda)
  • واجهات برمجة تطبيقات تفويض الكتابة بخط اليد باستخدام قلم الشاشة لتفعيل ميزة الكتابة بخط اليد باستخدام قلم الشاشة في حقول إدخال النصوص "المزيفة" (I9c09c، b/327271923)
  • تمت إعادة تسمية KeyboardOptions.shouldShowKeyboardOnFocus إلى showKeyboardOnFocus. (Ib4b7a، b/295951492)
  • تمت إزالة المَعلمة hintMediaTypes من Modifier.contentReceiver. سبق أن تم تشجيع المطوّرين على التحقّق من نوع الوسائط في TransferableContent المستلَمة لأنّه قد يكون غير متوافق مع hintMediaTypes الذي تم ضبطه. (I82f99)
  • تم إعادة ترتيب مَعلمات BasicSecureTextField. تمت إزالة المَعلمتَين keyboardType وimeAction لصالح فئة KeyboardOptions الكاملة مع الاحتفاظ بالإعدادات التلقائية نفسها المناسبة لدالة BasicSecureTextField. تمّت أيضًا إزالة المَعلمة scrollState. (Ibbfa9)
  • تم تغيير نوع TextFieldState.text من TextFieldCharSequence إلى CharSequence فقط. لذلك، تمت إضافة TextFieldState.selection: TextRange وTextFieldState.composition: TextRange? لقراءة قيم الاختيار والتركيب الحالية مباشرةً من عنصر الحالة.
  • تمت إزالة TextFieldState.forEachTextValue. (Idb2a2)
  • تمّت إزالة الدالتَين ClipboardManager.getClipMetadata وClipboardManager.hasClip. يُرجى استخدام clipEntry.getMetadata() لقراءة البيانات الوصفية لبيانات المقطع الحالية. تحقَّق أيضًا من نتيجة ClipboardManager.getClip لمعرفة ما إذا كانت فارغة أم لا لمعرفة ما إذا كانت الحافظة تحتوي على مقطع حالي. (I50498)
  • يقبل ClipboardManager.setClip الآن القيمة null للتمكن من محو الحافظة. (I7d2e9)
  • يتم تحويل ReceiveContentListener إلى واجهة دالة. وتم أيضًا إزالة التحميل الزائد لدالة Modifier.receiveContent التي تأخذ دالة LAMBDA لأنّ ReceiveContentListener هي واجهة دالة الآن.
  • تمت إعادة تسمية Modifier.receiveContent إلى Modifier.contentReceiver. (I1e6af)
  • تمت إعادة تسمية TransferableContent.consumeEach إلى TransferableContent.consume. (I1e462)
  • تم ترقية rememberTextFieldState إلى واجهة برمجة تطبيقات ثابتة. (I37999)

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

  • تم إصلاح خلل كان يؤدي إلى عدم توافق متغير BasicTextField(state) مع لوحات المفاتيح CJK(المستندة إلى التركيب). (I54425)
  • تم إصلاح خطأ كان يؤدي إلى أن يشير Modifier.dragAndDropTarget() إلى بيانات قديمة في سيناريوهات معيّنة عند إعادة استخدام Modifier.Node. (I05bb1)
  • تمّت إعادة تغيير العقد الأخير الذي كان يؤدي إلى إنهاء المكالمات AnchoredDraggableState#anchoredDrag في نهاية عملية anchoredDrag. (I95715)

الإصدار 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)

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

  • تمت إضافة واجهتَي برمجة تطبيقات جديدتَين 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)
  • في هذا الطلب، سنضيف الإجراء الدلالي GetScrollViewportLength لنتمكّن من توجيه معلومات عن المكوّنات التي يتم التمرير فيها في وضع الإنشاء إلى نظام تسهيل الاستخدام. تطبّق قائمة المحتوى هذه أيضًا استخدام السمة المذكورة في قوائم Foundation القابلة للتنقّل. (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 وتخزين الإحداثيات في عنصر بنفسك. (Iaebaa)
  • تحسينات الأداء في 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)
  • في إطار هذا التغيير، سنجعل واجهات برمجة التطبيقات الخاصة بميزة "التجميع" مستقرة. نعمل أيضًا على إزالة بعض التعليمات البرمجية للاختبار وإضافة المزيد من العيّنات إلى ميزة "التثبيت". (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 واستخدامها، ننصحك بإرسال القيمة null.

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

  • أدخِل 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 API الجديدة.

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

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

الإصدار 1.6

الإصدار 1.6.8

12 يونيو 2024

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

الإصدار 1.6.7

1 مايو 2024

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

الإصدار 1.6.6

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

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

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

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

الإصدار 1.6.5

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

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

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

  • إضافة سجلات تصحيح الأخطاء إلى الأخطاء التي يصعب إعادة إنتاجها في الصف/العمود: (b/300280216 و b/297974033)

الإصدار 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)
  • حلّ مشكلة موضع العناصر التي لا تملك حجمًا في بداية الشبكة المموّهة (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)

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

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

  • نفِّذ دالة equals ودالة hashcode PageSize.Fixed. (Ie3ede، b/300134276)
  • تم إصلاح خلل كان يؤدي إلى عدم تقليص تنسيق BasicText عند تغيير minWidth وminWidth أقل من قيود القياس الأولية maxWidth (Idb19c).
  • إضافة إمكانية استخدام أداة التحويل مع تأثير "التدرّج السريع" في ArcLine (I4d5bb)
  • حلّ مشكلة التوافق الثنائي مع تغيير "موضع النافذة" (Iee695)
  • أزِل طبقة Material Core لشريحة/زر 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).

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

  • تمت إعادة تسمية دالة lambda onDrawDragShadow في Modifier.dragAndDrawSource إلى drawDragDecoration، وتمّت إعادة تسمية مَعلمة size في 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. يجب إجراء عملية الحساب باستخدام معلومات التنسيق وتقديمها من خلال النهج أو Offsets (إزاحة) الربط. (If320c)

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

  • يستخدم تطبيق "الإنشاء" الآن ميزة "الضبط غير الخطي لحجم الخط" لتحسين إمكانية القراءة وسهولة الاستخدام. عندما يكون مقياس الخط أكبر من% 100 في إعدادات النظام، سيزداد حجم النص الصغير بشكلٍ طبيعي، ولكن لن يزداد حجم النص الكبير إلا قليلاً. بالإضافة إلى ذلك، سيتم تعديل ارتفاعات السطور المحدّدة في SP تلقائيًا لتظلّ متناسبة مع الارتفاع المقصود على مقياس% 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. يحتوي تطبيق "الإنشاء" الآن على إصدار خاص به من 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)
  • أصبحت واجهة برمجة التطبيقات Canvas التي تقبل contentDescription واجهة برمجة تطبيقات ثابتة. (Ib3d29)
  • تمّ تقديم viewportSize في ScrollState، وهي طريقة لمعرفة حجم viewPort للمكوّن الذي يستخدم ScrollState بعد إجراء القياس. (I8b85a، b/283102682)
  • تم إصلاح مشكلة عدم تطابق التحميل المُسبَق في Pager مع السلوك في Views. (I93352، b/289088847)
  • أصبحت Modifier.consumeWindowInsets(PaddingValues) مستقرة الآن.
    • تمّت إزالة واجهة برمجة التطبيقات Deprecated Modifier.consumedWindowInsets. استخدِم 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* التي تمت إعادة تصميمها بالكامل (I6c93a وb/274661182 وb/267235947 وb/277380808)
  • لم تعُد SoftwareKeyboardController وLocalSoftwareKeyboardController ميزتَين تجريبيتَين. أصبح LocalSoftwareKeyboardController الآن أيضًا CompositionLocal صالحًا. (I4c364)
  • يقدّم Modifier.transformable الآن قيمة 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 جديدة في Foundation. ويمكن استخدامه لإنشاء مكوّنات يمكن سحبها بين حالات منفصلة، مثل الأوراق السفلية التي تظهر في وضع النافذة المنبثقة. تحلّ واجهة برمجة التطبيقات هذه محل واجهة برمجة التطبيقات Swipeable في Material. (I4a2ed)

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

  • فريق الدعم InputConnection#requestCursorUpdates (I0c69b)
  • تمّ تقديم scrollAnimationSpec للسماح بمواصفات مخصّصة للصور المتحركة. تم تعديل BringIntoViewCalculator إلى BringIntoViewScroller. (Idb741)
  • أضِف نوع ResourceResolutionException لتغليف الأخطاء التي تمّ طرحها عند محاولة تحميل مواد عرض الصور الممسوحة ضوئيًا مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44، b/230166331، b/278424788)
  • تمت إضافة خصائص وإجراءات دلالية لدعم ترجمة النصوص. (I4a6bc)
  • تمّت إضافة واجهة برمجة تطبيقات BringIntoViewCalculator يمكن استخدامها لتخصيص كيفية استجابة المكوّنات، مثل Scrollable، لطلبات bringIntoView. تم تغيير التحميل الزائد للسمة scrollable لقبول مثيل من 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.clickable وModifier.draggable وModifier.scrollable ومُعدِّل التنسيق وغير ذلك، إلى واجهة برمجة التطبيقات Modifier.Node، ما قلّل من الوقت المستغرَق في الإنشاء الأولي.
  • تحسينات على ثبات صفحات الفوترة تمّت معالجة العديد من الأخطاء.
  • أصبحت مَعلمات pageCount متوفّرة الآن في PagerState بدلاً من Pager نفسها.

الإصدار 1.5.0-rc01

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

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

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

  • يتوفّر فحص اختياري لاقتراح نقل طلبات mutableStateOf() إلى الأنواع المخصّصة لها من العناصر الأساسية. رقم تعريف أداة تصحيح الأخطاء هو AutoboxingStateCreation. في السابق، كان هذا الفحص مفعّلاً تلقائيًا لجميع المشاريع. للاطّلاع على هذا التحذير في محرِّر Android Studio ومخرجات أداة lint لمشروعك، غيِّر خطورته من معلوماتية إلى تحذير (أو أعلى) من خلال تحديد 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 عند إنشاء سلوك رمي سريع. استخدِم هذه المَعلمة لتحديد حدّ موضع لالتقاط الصور القصيرة في Pager. (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 في Pager. (I7379e، b/275579012)
  • تضيف FlowRowScope وFlowColumnScope. (I54fe2)

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

  • لم تعُد عمليات طلب الحصول على الدلالات في Text تتعطل عندما تحتوي القيود على 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 على هذه المراجعات.

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

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

ستتم إزالة علامة تصحيح الأخطاء قبل إصدار 1.5 beta01.(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.
  • يمكن ضبط 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.
  • يمكن ضبط 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/254529934 وb/251840112 وb/251859987 وb/257141589)
  • أصبحت الدالة الإنشائية 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. هنا تم الإبلاغ عن المشكلة في الأصل. تم إرسال حلّ لهذه المشكلة، وسيكون متاحًا في تحديث "الإنشاء" التالي. كحل بديل، يمكنك تحديث مكتبتَي 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 على هذه المراجعات.

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

  • في اختبارات واجهة المستخدم التي تستخدِم قاعدة Compose، لن يتم إرسال عمليات المتابعة التي تم استئنافها أثناء عمليات استدعاء withFrameNanos إلا بعد انتهاء تشغيل جميع عمليات استدعاء الإطارات. ويطابق هذا السلوك سلوك ميزة "الإنشاء" عند تشغيلها بشكلٍ طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. من المفترض ألا يؤثر ذلك إلا في الرمز البرمجي الذي يستدعي 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، وهي طريقة للتحكّم في آلية عمل التصاق الصفحات في سلوك التمرير السريع في Pager. (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 من واجهات برمجة التطبيقات Lazy* (I12197)
  • تمّت إضافة مَعلمة في واجهات برمجة التطبيقات لتحميل العناصر خارج إطار العرض وعرضها (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).
  • يتم الآن إنشاء الواجهات في مكتبات Compose باستخدام طرق الواجهات التلقائية في 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 التجريبيَين الجديدَين. ويسمح بتمثيل بعض قوائم القيم من خلال فواصل زمنية متعددة. سيكون ذلك مفيدًا عندما تريد تحديد لغة وصفية خاصة بك مشابهة للغة المستخدمة في 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() تجريبي حتى يتمكّن المطوّرون من التحكّم في واجهة معالجة الإدخال من خلال الانتقال للأعلى أو للأسفل. (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)
  • تقبل الآن كلّ من Paragraph وMultiParagraph مَعلمة 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)
  • أضِف وصف خط جديدًا Font(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)

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

  • تم تعديله لاستخدام Kotlinx coroutines 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 الآن استخدام سمة reverseLayout. (I6d7d7، b/215572963، b/211753558)
  • أضِف طريقة WindowInsets.only() للسماح للمطوّرين بتضمين السمات فقط من WindowInsets. (I14c94، b/217768486)
  • تمت إضافة ComposableTarget وComposableTargetMarker و ComposableOpenTarget التي تتيح إعداد تقارير وقت الترجمة عند استدعاء دالة مركّبة تستهدف عامل تطبيق لم يتم تصميمها لاستخدامه.

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

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

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

  • يُسمح الآن بتمرير Offsets سلبية للانتقال إلى الأعلى أو الأسفل في 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.animateItemPlacement(). (Ib6621، b/211753218)
  • ينشر BringIntoViewRequester الآن الطلبات إلى BringIntoViewRequester Android View المستضيف. (Ia7a51)
  • تتوفّر الآن FontFamilyResolver من خلال LocalFontFamilyResolver.current
    • تمت إضافة createFontFamilyResolver(context) و createFontFamilyResolver(context, coroutineScope) لإنشاء معالجين جديدين FontFamily خارج نطاق استخدام ميزة "الإنشاء".
    • يأخذ كلّ من Paragraph وMultiParagraph الآن FontFamily.Resolver
    • يحتوي TextLayoutResult.layoutInput.fontFamilyResolver الآن على برنامج التحديد المستخدَم لهذا التنسيق، والذي تم إيقافه نهائيًا TextLayoutResult.layoutInput.resourceLoader لأنّه لم يعُد مُستخدَمًا. (Id5a45، b/174162090)
  • تمت إضافة AndroidFont، وهي واجهة برمجة تطبيقات جديدة من المستوى الأدنى لتوفير أنواع جديدة من أوصاف موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خلفية خاصة بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز بشكل اختياري، أو تحميل خط من مورد لا يوفّره مصانع الخطوط الحالية.
    • تم توسيع واجهة برمجة التطبيقات Font.ResourceLoaded لإتاحة تحميل Font.ResourceLoaded بشكل اختياري وبدون تسلسل. لا يُنصح لمطوّري التطبيقات باستخدام واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، اطّلِع على AndroidFont.
    • تسمح دالة إضافة Font.AndroidResourceLoader بإنشاء Font.ResourceLoader خارج التركيب.
    • تمت إضافة المَعلمة loadingStrategy إلى الخطوط المستندة إلى الموارد، للسماح بالتحميل غير المتزامن عندما يشير خط المورد إلى ملف XML للخطوط القابلة للتنزيل. (Ie5aea، b/174162090)
  • تم إيقاف طريقة وضع تصميم Typeface(FontFamily) نهائيًا. كان يتم استخدام هذه الميزة في السابق لتحميل الخطوط مسبقًا، وقد يستغرق ذلك ما يصل إلى 10 ثوانٍ في حال استخدام خطوط قابلة للتنزيل. في حال استخدام الخطوط القابلة للتنزيل، قد يتم حظر هذا الطلب لمدة 10 ثواني. استخدِم FontFamilyResolver.preload instead.
    • تم إيقاف fontResource(FontFamily): Typeface نهائيًا. كان يتم استخدام هذه الميزة في السابق لتحميل الخطوط مسبقًا، وقد يستغرق ذلك ما يصل إلى 10 ثوانٍ في حال استخدام خطوط قابلة للتنزيل. استخدِم بدلاً من ذلك FontFamilyResolver.preload (If8e7c، b/174162090).
  • يمكنك الآن تحديد نوع المحتوى لعناصر LazyVerticalGrid، إذ تقبل دوال item/items في LazyGridScope الآن هذه المَعلمة. يساعد تقديم هذه المعلومات في إعادة استخدام منطق تركيب العناصر لتحسينه وإعادة استخدام المحتوى بين العناصر من النوع نفسه فقط. (I7b355، b/215372836)
  • تتضمّن السمتَان LazyListLayoutInfo وLazyGridLayoutInfo الآن سمات جديدة: viewportSize وorientation وreverseLayout (Ifc8ed وb/200920410)
  • يمكنك الآن تحديد نوع المحتوى لعناصر LazyColumn/LazyRow، إذ تقبل دوالّ item/items في LazyListScope الآن هذه المَعلمة. يساعد تقديم هذه المعلومات في إعادة استخدام منطق تركيب العناصر لتحسينه وإعادة استخدام المحتوى بين العناصر من النوع نفسه فقط. (I26506)
  • تم إيقاف طريقة وضع تصميم SubcomposeLayoutState التي تقبل maxSlotsToRetainForReuse نهائيًا. بدلاً من ذلك، هناك مُنشئ جديد يقبل SubcomposeSlotReusePolicy، وهي واجهة جديدة تتيح التحكّم بشكل أدق في الفتحات التي يجب الاحتفاظ بها لإعادة استخدامها في المستقبل. (I52c4d)
  • تضيف عناصر تعديل لـ WindowInsets، سواء للتباعد أو الحجم. يتيح ذلك لبعض المحتوى التمديد إلى منطقة الحشو، مع إبقاء المحتوى الأساسي خارج منطقة الحشو. على سبيل المثال، يمكن استخدام windowInsetsPadding لتمديد منطقة المحتوى لتجنُّب المناطق التي قد تكون مغطاة بالكامل أو جزئيًا. (Id0395، b/213942085)

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

  • سيتم الآن إبقاء حقول النص فوق لوحة المفاتيح عند تركيز المحتوى عليها وعرض لوحة المفاتيح، وذلك عندما يكون وضع الإدخال المبرمَج هو ADJUST_PAN. (I8eaeb، b/190539358، b/192043120)
  • يستخدم الكمبيوتر المكتبي تركيبة محلية لـ FontFamily.Resolver
    • إيقاف إصدار FontLoader من تطبيق "مساعد Google" لأجهزة الكمبيوتر المكتبي نهائيًا
    • مصنع 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)

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

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

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

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

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

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

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

  • يُسمح الآن بتمرير Offsets سلبية للانتقال إلى الأعلى أو الأسفل في 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 على هذه المراجعات.

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

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

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

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

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

  • إصلاح عدم تحريك عناصر التحكم في النص عند تغيير مستوى ظهور واجهة معالجة اللغة (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 API التي تتيح لك إرسال طلب إلى الوالدَين لتحريك الشاشة إلى أن يظهر عنصر معيّن (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 API التي تتيح لك إرسال طلب إلى الوالدَين لتحريك الشاشة إلى أن يظهر عنصر معيّن (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 على هذه المراجعات.

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

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

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

  • تمت إضافة تأثير الإضاءة للانتقال للأعلى أو للأسفل. تمت إضافة واجهة برمجة التطبيقات التجريبية الجديدة OverScrollConfiguration API للسماح بضبط التأثير المرئي لميزة "الانتقال السريع للأسفل أو للأعلى". أدخِل قيمة فارغة لإيقاف تأثير التمرير السريع. (I0c304، b/171682480)
  • تتضمّن AwaitPointerEventScope الآن withTimeout() وwithTimeoutOrNull() (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 وImage composable لاستخدام مَعلمة FilterQuality اختيارية أيضًا (Ie4fb0، b/180311607)
  • يُرجى العِلم أنّ TextField يُلغي التحديد الآن عند الضغط على زر الرجوع، وهو ما يتطابق مع سلوك EditText في Android. (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 على هذه المراجعات.

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

  • تم إصلاح عطل في تتبُّع المثيلات derivedStateOf. (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 على هذه المراجعات.

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

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

الإصدار 1.0.3

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

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

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

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

الإصدار 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 من تطبيق Compose. لا يزال الإصدار 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 على هذه المراجعات.

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

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

الإصدار 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 للحصول على مزيد من التفاصيل.

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

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

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

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

الإصدار 1.0.0-rc02

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

تم إصدار androidx.compose.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)
  • تغيير النطاقين المحدّدين Role وLiveRegionMode إلى فئات مضمّنة مع عنصر إنشاء خاص (Id1890)
  • يتم تحويل KeyboardCapitalization إلى فئة مضمّنة. (Id5a1c)
  • تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)

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

  • الآن عند تحديد المفاتيح الفريدة لعناصر LazyColumn/Row، سيتم الاحتفاظ بموضع التمرير استنادًا إلى المفتاح، ما يعني أنّه في حال إضافة/إزالة عناصر قبل العنصر المرئي الحالي، سيتم الاحتفاظ بالعنصر الذي يحتوي على المفتاح المحدّد كأول عنصر مرئي. (Id263f، b/184257857)
  • في الوقت الحالي، الثابتة الرئيسية هي @ExperimentalComposeUiApi. يمكن للرمز المستخدِم أن يُعرِّف الثوابت الخاصة قبل استقرارها. (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> هو الوصف للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، سيكون للفئة androidx.compose.runtime.SlotTable وصف Landroidx/compose/runtime/SlotTable;.

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

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

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

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

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

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

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

آلية العمل

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

الإصدار 1.0.0-beta08

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

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

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

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

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

  • إصلاح الأعطال الناتجة عن الضغط مع الاستمرار على المنطقة الفارغة في نص غير فارغ (I33ab5، b/187437299)
  • عرض شريط الأدوات بعد SelectAll (I495d9، b/185919613)
  • إصلاح مشكلة اقتصاص الحاويات القابلة للتنقّل لعناصرها على المحور العرضي يمكن تكرار هذا الخطأ بسهولة إذا كان لديك صف LazyRow يتضمّن عناصر بطاقة. ولن يتم اقتصاص الظل الآن. (Icb635، b/186318448)
  • تم إصلاح مشكلة كانت تؤدي إلى توقُّف التموجات أو المؤشرات الأخرى أحيانًا عند النقر مع الاستمرار باستخدام Modifier.combinedClickable (I2298c، b/186223077)
  • ستستهلك الآن detectDragGesures وdetectVerticalGestures وdetectHorizontalGestures تغيير الموضع تلقائيًا، ولن يكون هناك حاجة إلى استدعاء change.consumePositionChange في طلبات إعادة الاتصال 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)

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

  • سيحافظ الآن LazyColumn/Row على نشاط ما يصل إلى عنصرَين كانا مرئيَين سابقًا (بدون إزالتهما) حتى بعد الانتقال إلى أعلى الصفحة. يتيح ذلك للمكوّن إعادة استخدام العناصر الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد يُحسِّن أداء الانتقال للأعلى أو للأسفل. (Ie5555)
  • أزِل paintBackground. (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)
  • تمت إضافة واجهتَي برمجة تطبيقات CollectionInfo وCollectionItemInfo لأدوات تسهيل الاستخدام تتيحان وضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (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)

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

  • لم يعُد الأطفال من النوع Row وColumn الذين لديهم 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 على هذه المراجعات.

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

  • أعِد تسمية hideSoftwareKeyboard وshowSoftwareKeyboard في SoftwareKeyboardController إلى hide() وshow() على التوالي.
    • توفير واجهة CompositionLocal الكاملة لأجل 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 جديدة لإنشاء ملف محلي API لاستبدال واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053)
  • تمت إضافة واجهة برمجة تطبيقات LocalSoftwareKeyboardController جديدة لإنشاء ملف محلي API لاستبدال واجهة 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)
  • تمت إزالة طلب الاستدعاء SoftwareKeyboardController من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
  • تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy التي أصبحت واجهة ممتعة. تم تعديل واجهات برمجة تطبيقات Layout API أو تبسيطها لاستخدام MeasurePolicy. (Icab48، b/167662468، b/156751158)
  • تم استبدال InteractionState بـ [Mutable]InteractionSource
    • تتحمّل الواجهات مسؤولية إصدار أحداث التفاعل أو جمعها.
    • بدلاً من تمرير interactionState = remember { InteractionState() } إلى مكوّنات مثل Button وModifier.clickable()، استخدِم interactionSource = remember { MutableInteractionSource() }.
    • بدلاً من: Interaction.Pressed in interactionState، يجب استخدام دوالّ الإضافة في InteractionSource، مثل InteractionSource.collectIsPressedAsState().
    • بالنسبة إلى حالات الاستخدام المعقّدة، يمكنك استخدام InteractionSource.interactions لمراقبة بث التفاعلات. اطّلِع على مستندات InteractionSource وعينات منها للحصول على مزيد من المعلومات.
    • (I85965 وb/152525426 وb/171913923 وb/171710801 وb/174852378)
  • تمّت إزالة طرق LayoutCoordinates المتوقّفة نهائيًا، ويمكنك استخدام الدالة بدلاً من السمة positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755)
  • تم إنشاء TextInputSession جديد لجلسات الإدخال من مكوّنات نصية منخفضة المستوى، مثل CoreTextField. (I8817f، b/177662148)
  • يعرِض العنصر القابل للوضع الآن measuredSize، الذي يمثّل الحجم الذي تم قياس تنسيق الطفل وفقًا له. قد لا يتوافق هذا الحجم مع قيود القياس. (Ib2729 وb/172560206 وb/172338608)
  • إضافة مُعدِّل selectionGroup الذي يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
  • إضافة LazyListState.animateScrollToItem

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

  • تمت إعادة تسمية ScrollableState.smoothScrollBy() إلى animateScrollBy() تمت إعادة تسمية LazyListState.snapToItemIndex() إلى scrollToItem() تمت إعادة تسمية ScrollState.smoothScrollTo() إلى animateScrollTo() (I35ded)

  • تم استبدال Modifier.zoomable بـ Modifier.transformable. تمت إضافة smoothPanBy وsmoothRotationBy كوظيفتَين. (Ifc32b، b/175294473)

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

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

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

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

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

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

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

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

  • تم تغيير حِزم الطريقتَين smoothScrollBy وscrollBy إلى androidx.compose.foundation.gestures.* (I3f7c1 وb/175294473)

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

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

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

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

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

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

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

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

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

    • لم يعُد مُنشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
    • تم تحويل currentCompositeKeyHash إلى سمة قابلة للتجميع من المستوى الأعلى بدلاً من دالة قابلة للتجميع من المستوى الأعلى.
    • تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling.
    • تم تحويل ComposableLambda إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات أنواع.
    • تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة محدّدة، ولم تعُد تحتوي على مَعلمات نوع.
    • تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime.
    • لم تعُد طريقة الدمج في SnapshotMutationPolicy تجريبية.
    • تمّت إزالة الدالة clearRoots من المستوى الأعلى @TestOnly. لم تعُد هذه الخطوة ضرورية.
    • تمّت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم تعُد هذه الخطوات ضرورية.
    • تمت إزالة Composer.collectKeySourceInformation. لم تعُد هذه الخطوة ضرورية.
    • تمّت إزالة الطُرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم تعُد هذه الخطوات ضرورية.
    • تم نقل واجهات برمجة تطبيقات مختلفة من المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب الدلالات المتعلقة بفئة الملفات في Kotlin، سيؤدي ذلك إلى إيقاف التوافق مع الثنائيات ولكن ليس مع المصدر، لذا من المفترض ألا يشكّل ذلك مشكلة لمعظم المستخدمين.
    • (I99b7d، b/177245490)
  • تم تعديل Modifier.scrollable. يستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473)

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

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

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

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

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

  • تمت إضافة واجهة برمجة تطبيقات جديدة لـ LocalSoftwareKeyboardController محليًا API لاستبدال واجهة 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 عنصر سياق coroutine الذي سيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء الاختبارات باستخدام 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. يتيح لنا ذلك معالجة طلبات إعادة شراء السلع بشكل أكثر ذكاءً. وبالتالي، ستتحرك الحالة التي حفظتها في كتل remember {} مع العنصر عند إعادة ترتيب العناصر أو إزالة العنصر من الوسط.

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

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

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

  • لأسباب تتعلّق بالأداء، أصبحت دلالات ScrollAxisRange تأخذ الآن لامدا التي تعرض قيمًا عائمة بدلاً من القيم العائمة المباشرة. (If4a35، b/178657186)

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

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

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

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

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

  • تمت إعادة تسمية الخلفيات المتغيرة لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كان يُطلق على الخلفيات اسم AmbientFoo، والآن يُطلق على CompositionLocals اسم LocalFoo. (I2d55d)

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

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

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

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

  • تم الآن إلغاء ربط وقت التشغيل في الصور المتحركة بنانو ثانية (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 إلى cancel للتمييز بينه وبين close. (Ib6d76)

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

  • تمت إعادة تسمية rememberSavedInstanceState() إلى rememberSaveable() وتم نقلها إلى حزمة androidx.compose.runtime.saveable. (I1366e، b/177338004)

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

  • تم نقل Saver وlistSaver() وmapSaver() وautoSaver من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)

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

  • تم حذف العديد من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا منذ فترة طويلة في حزمة ui. (I2f2dc)

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

  • تمت إعادة تسمية المَعلمات في RounderCornerShape وCutCornerShape وCornerBasedShape من left/right إلى start/end لتمكين ميزة "المرآة التلقائية" للشكل في الاتجاه rtl. تمّ تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يكون فيها المطلوب هو النسخ المطابق التلقائي. (I61040، b/152756983)

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

  • تمّت إعادة صياغة واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمحرِّر Compose لاستخدام واجهة بدلاً من فئة محدّدة. لم تعُد الواجهة تستخدم أيضًا مَعلمة type.

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

  • تمت إزالة Modifier.scaleGestureFilter. استخدِم Modifier.zoomable بدلاً من ذلك. بدلاً من ذلك، استخدِم Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1، b/175294473).

  • تم إيقاف AnimatedValue/Float نهائيًا. يُرجى استخدام Animatable بدلاً من ذلك. (I71345، b/177457083)

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

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

  • تم إيقاف tapGestureFilter وdoubleTapGestureFilter وlongPressGestureFilter وpressIndicaitonGestureFilter نهائيًا. استخدِم Modifier.clickable أو Modifier.pointerInput مع الدالة detectTapGestures بدلاً من ذلك. (I6baf9، b/175294473)

  • تمت إزالة Recomposer.current(). [ملخّص]يتم الآن استخدام ComposeView بشكل تلقائي لإنشاء أدوات إعادة تركيب على مستوى النافذة يتم إنشاؤها بشكل بطيء ويتم تشغيلها من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب وعلامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (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)

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

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

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

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

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

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

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • يمكن الآن إنشاء عناصر قابلة للنقر والتبديل والاختيار خارج التركيب (I0a130 وb/172938345 وb/175294473)

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

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

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

  • تمت إضافة المَعلمة propagateMinConstraints إلى المربّع لتحديد ما إذا كان يجب تمرير الحدّ الأدنى من القيود الواردة إلى محتوى المربّع أم لا. القيمة التلقائية هي false. (I0125b، b/152613457)

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

  • تم إيقاف وظائف onCommit وonDispose وonActive نهائيًا لصالح واجهات برمجة التطبيقات SideEffect وDisposableEffect (If760e).
  • تمت إعادة صياغة WithConstraints لتكون BoxWithConstraints وتم نقلها إلى foundation.layout. (I9420b، b/173387208)
  • تغييرات على وظائف المصنع لـ Font/FontFamily/Typeface

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

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

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

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

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

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

  • سيتم استبدال Duration وUptime بـ Long milliseconds، وتؤدي هذه الخطوة إلى إزالة الاعتماد على إدخال المؤشر في هذين الصنفين. (Ia33b2، b/175142755، b/177420019)

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

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

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

  • تمت إعادة تسمية TransformedText.transformedText إلى TransformedText.text

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

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • تمت إزالة الطرق التجريبية monotonicFrameAnimationClockOf (Ib753f وb/170708374)

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

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

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

  • تمت إعادة تسمية SemanticsPropertyReceiver.hidden إلى invisibleToUser وتم وضع علامة عليها @ExperimentalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية stateDescriptionRange إلى progressBarRangeInfo. تمت إعادة تسمية AccessibilityScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontalScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى verticalScrollAxisRange. (Id3148)

  • تم تغيير VisualTransformation لتكون واجهة وظيفية (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.identityOffsetMap إلى OffsetMapping.Identity
    • لم تعُد PasswordTransformation فئة بيانات.
    • تم نقل OffsetMapping إلى ملفه الخاص
    • (I0bdf3)
  • التغييرات في واجهة برمجة التطبيقات EditOperations API
    • تمت إعادة تسمية EditOperation باسم EditCommand
    • تمت إضافة اللاحقة Command إلى عمليات التنفيذ الملموسة لـ EditOperation
    • لم تعُد فئات البيانات هي EditCommand.
    • إعادة تسمية الدالة EditOperation.process إلى applyTo
    • تمت إعادة تسمية InputEventListener إلى InputEventCallback
    • (I0a366)
  • تم تعديل Velocity ليكون لها أجزاء مكوّنة وعمليات حسابية. (Ib0447)
  • تمت إعادة تسمية ‎ @ExperimentalTesting إلى ‎ @ExperimentalTestApi لتكون متسقة مع التعليقات التوضيحية المشابهة لواجهات برمجة التطبيقات التجريبية (Ia4502 وb/171464963).
  • تمت إضافة طريقة stickyHeader التجريبية لعنصرَي LazyColumn/LazyRow (I0a81d)
  • تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
  • تم إيقاف واجهة برمجة التطبيقات TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255).
  • إضافة Toggle إلى ملف Strings.kt الأساسي (I4a5b7، b/172366489)
  • تم نقل nativeClass إلى ملف برمجي ui وجعله داخليًا. تم تعديل استخدامات nativeClass في تنفيذات equals لاستخدام 'is MyClass' بدلاً من ذلك. (I4f734)
  • تم إيقاف FlowRow وFlowColumn نهائيًا. يُرجى استخدام تنسيق مخصّص بدلاً من ذلك. (I09027)
  • تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48 وb/175160751 وb/175160532 وb/175077829)
  • تمّ تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات إلى SelectionManager بشأن تعديلات Selectable. (I6ff30، b/173215242)
  • تم تغيير fun Dp.isFinite() إلى val Dp.isFinite (I50e00)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • تمت إضافة isSpecified وisUnspecified وuseOrElse لklassen المضمّنة التي تحتوي على ثابت Unspecified. (I93f7b، b/174310811)

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

  • واجهة برمجة تطبيقات جديدة مستندة إلى وظائف الاستدعاء المتعدّد Animatable تضمن التداخل المتبادل بين الرسومات المتحركة سمة DecayAnimationSpec جديدة لتتوافق مع الصور المتحركة المتعدّدة الأبعاد (I820f2، b/168014930)
  • تمت إضافة إمكانية استخدام حقول النصوص المتوقفة عن العمل والقابلة للقراءة فقط (I35279 وb/171040474 وb/166478534)
  • تم استبدال animate() الآن بـ animateAsState()، الذي يعرض State<T> بدلاً من T. يتيح ذلك تحسين الأداء، لأنّه يمكن تضييق نطاق الإبطال إلى حيث تتم قراءة قيمة State. (Ib179e)
  • أضِف واجهة برمجة التطبيقات لدور Semantics وأضِف الدور كمَعلمة إلى SemanticsModifier الذي يمكن النقر عليه واختياره وتبديله. تم تغيير Modifier.progressSemantics لكي يتمكّن Slider من استخدامه أيضًا. (I216cd)
  • يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (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 كنوع شائع، ما يتيح تنفيذ الانتقال المخصّص للأعلى أو للأسفل في كلا النوعَين.

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

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

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

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

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

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

  • تمت إضافة ميزة InteractionState إلى TextFields. (I61d91)

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

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

  • تستخدِم الآن دالة detectMultitouchGestures دالة استدعاء واحدة مع مَعلمات تشكلت من مركز الكتلة وتحرّيك الخلفية وتكبيرها/تصغيرها وتدويرها. (Ie6e1c)

  • تم نقل ContentDrawScope إلى وحدة ui-graphics لتكون مع DrawScope. (Iee043، b/173832789)

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

  • تعرِض الآن دالات Lambda في مُعدِّلات البادئة IntOffset بدلاً من Float. (Ic9ee5، b/174137212، b/174146755)
  • تمت إزالة SlotTable وSlotReader و SlotWriter من واجهة برمجة التطبيقات المتاحة للجميع. كانت هذه الواجهتَان تحملان سابقًا الاسم InternalComposeAPI. وهي الآن داخلية لوحدة الإنشاء.

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

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

    واجهات برمجة التطبيقات المتوقّفة لدالة إنشاء الدالة المتدرجة بدلاً من طرق الإنشاء على عنصر Gradient (I511fc، b/173066799)

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

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

  • إضافة تعريفات إزالة البنية لإنشاء نُسخ من FocusRequester (I35d84، b/174817008)

  • تمت إعادة تسمية accessibilityLabel إلى contentDescription. تمت إعادة تسمية accessibilityValue إلى stateDescription. (I250f2)

  • تمّت إضافة العديد من الدوالّ الجديدة في SelectionRegistrar، كما تمت إعادة تسمية onPositionChange إلى notifyPositionChange. (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 لاستخدامه في مكونات الصور أو عناصر تعديل Painter. (I2c703، b/173818471)

  • تمت إضافة دالة المصنع buildAnnotatedString من أجل إنشاء AnnotatedString. دالة annotatedString builder المتوقّفة نهائيًا (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 القابلة للتركيب وموقعها، وذلك للتحقّق من اتّساقها مع إرشادات Compose. تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم children كاسم لدالة lambda اللاحقة إلى content، وفقًا لفحص الأخطاء الإملائية والإرشادات. (Iec48e)
  • تم نقل foundation:foundation-text واجهة برمجة تطبيقات إلى foundation:foundation. ظلت بنية الحزمة كما هي (Id3eb2).
  • أداة جديدة لرصد الإيماءات التي تستخدم تقنية اللمس المتعدّد، بما في ذلك مساعِد لرصد التدوير والتكبير والتصغير (Ic459d)
  • أداة جديدة لرصد إيماءات السحب تعمل على تعليق واجهة برمجة التطبيقات الخاصة بالمؤشر الإدخال، بما في ذلك قفل الاتجاه (Icef25)
  • تمت إعادة تسمية VectorAsset إلى ImageVector تم نقل VectorAsset وإعادة تسميته إلى Builder لتكون صفًا داخليًا من ImageVector وفقًا لإرشادات مجلس واجهة برمجة التطبيقات. تمت إضافة نوع بديل لواجهة VectorAssetBuilder لربطها بواجهة ImageVector.Builder من أجل التوافق. (Icfdc8)
  • تمت إعادة تسمية ImageAsset و الطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
  • تم نقل خصائص الدلالات الأساسية إلى ui (I6f05c).
  • إضافة واجهات برمجة تطبيقات لميزة الانتقال للأعلى أو للأسفل المستندة إلى وظائف التشغيل المتعدّد:

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

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

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

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

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

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

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

  • تم نقل واجهات برمجة التطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifierDeprecated.kt لإضافة طرق مساعدة/أسماء بديلة للأنواع للمساعدة في نقل البيانات من واجهات برمجة التطبيقات المتوقّفة نهائيًا إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer كما تم تعديل الفصول ذات الصلة إلى GraphicsLayer وفقًا لملاحظات مجلس واجهة برمجة التطبيقات. (I0bd29، b/173834241)
  • تمت إزالة <T> من تعريف SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8)
  • جعلت حقلَي uptime و position في PointerInputData غير قابلَين للحذف. (Id468a)
  • يضبط MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستندة إلى لغة Material Design استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة للاختيار. (I1e6f4، b/139320372، b/139320907)
  • تمت إعادة تسمية مَعلمة alignment الخاصة بمربّع إلى contentAlignment. (I2c957)
  • تمت إعادة تسمية مُعدِّلات offsetPx إلى offset. وهي الآن تستخدم مَعلمات lambda بدلاً من State. (Ic3021، b/173594846)
  • تمت إضافة WindowManager.isWindowFocused للتحقّق مما إذا كانت نافذة المضيف في المقدّمة، وWindowFocusObserver الذي يقدّم دالة استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
  • تمت إضافة مَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5 وb/172239032 وb/171860947)
  • واجهة برمجة التطبيقات TextFieldValue API المعدَّلة
    • جعلت TextFieldValue.composition للقراءة فقط
    • تمّت إزالة استثناء تمّ طرحه لنطاق اختيار غير صالح (I4a675، b/172239032)
  • تم إيقاف الخلفيات المُدمجة نهائيًا التي تحمل Ambient كلاحقة، وتم استبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك باتّباع إرشادات الخلفيات المُدمجة وCompose API الأخرى. (I33440)
  • تمت إضافة حزمة Android Typeface. يمكنك تحميل نوع خط Android من خلال دالة typeface، أي typeface(Typeface.DEFAULT). تمت أيضًا إعادة تسمية typefaceFromFontFamily() إلى typeface() (I52ab7).
  • تمت إضافة فحص أخطاء لضمان استخدام مصانع المُعدِّلات androidx.compose.ui.composed {} داخليًا، بدلاً من وضع علامة عليها @Composable. (I3c4bc)
  • تمت إضافة فحص أخطاء لضمان أنّ وظائف مصنع Modifier محدّدة كإضافات على Modifier، حتى يمكن ربطها ببعضها بسلاسة. (I07981)
  • تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants لتصبح mergeDescendants. (Ib6250)
  • أصبح التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521).
  • إزالة وحدة اختبار واجهة المستخدم القديمة ووحداتها النموذجية (I3a7cb)
  • تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified بما يتوافق مع الوحدات الأخرى. (Ifce19)
  • تم تعديل واجهة "المحاذاة" وجعلها صالحة للاستخدام. (I46a07، b/172311734)
  • تم دمج وحدة foundation:foundation-text في foundation:foundation (Idac0f).
  • إيقاف place(Offset) وplaceRelative(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)
  • تم إيقاف العناصر الأساسية AmbientTextStyle وProvideTextStyle وAmbientContentColor نهائيًا. بدلاً من ذلك، استخدِم الإصدارات الجديدة المتوفّرة في مكتبة Material. بالنسبة إلى التطبيقات غير المستندة إلى لغة Material، عليك بدلاً من ذلك إنشاء أنظمة تصميم خاصة بك لإنشاء تصاميم مناسبة للاستخدام في مكوناتك. (I74acc، b/172067770)
  • تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية لا تتضمّن أي آراء ولا تستخدِم قيمًا من مظهر، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
  • تمت إضافة maxLines إلى TextFields (Ib2a5b)
  • تعديل TextFields لقبول KeyboardOptions (Ida7f3)
  • تمت إضافة KeyboardOptions لاستخدامها في TextFields (I9ca32)
  • تضيف BasicText كواجهة برمجة تطبيقات غير منحازة للتصميم للنص، بالتوازي مع BasicTextField. (I28268)
  • تمت إزالة التعليق التوضيحي ExperimentalLazyDsl. يمكن الآن استخدام LazyColumn/LazyRow بدون إضافة @OptIn (Idab7a، b/166584730)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تمت إضافة BasicTextField كبديل لكل من CoreTextField وBaseTextField (Id4cea)
  • إزالة LazyColumnItems/LazyRowItems المتوقّفة نهائيًا (I1d8a8)
  • تمت إزالة العناصر القابلة للتجميع التي تم إيقافها نهائيًا لتحديد الحجم وفقًا للقياسات الأساسية. (I18537، b/171811496)
  • تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة المُعدِّل paddingFromBaseline، وذلك لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813)
  • تمت إضافة المَعلمة matchHeightConstraintsFirst إلى مُعدِّل نسبة العرض إلى الارتفاع، والذي يمكن استخدامه لتحديد المُعدِّل لفرض قيود على الحجم والارتفاع قبل تجربة المراسلات المتعلّقة بالعرض. (Ie7c43، b/155290593)
  • تمت إزالة DpConstraints التي تم إيقافها نهائيًا. (I87884، b/171702471)

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

  • تمّت إضافة فئة ScaleFactor المضمّنة لتمثيل عوامل التكبير للمحورين الأفقي وعمودي بشكل مستقلّ عن بعضهما البعض بغرض إتاحة حالات استخدام التكبير غير الموحّد.
    • تمت إضافة طريقة computeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لإجراء عملية تكبير/تصغير غير منتظمة لتمديد حدود المصدر لكي تشغل الوجهة بالكامل.
    • تمت إضافة طرق عوامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
    • (Ic96a6، b/172291582)
  • تم نقل captureToBitmap إلى captureToImage. (I86385)
  • يضع علامة على CoreText كـ @InternalTextApi. استخدِم BasicText بدلاً من ذلك. (I6aaeb)
  • إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
  • تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
  • تم وضع علامة على CoreTextField باسم @InternalTextApi. استخدِم BasicTextField بدلاً من ذلك (Ie2469).
  • تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تقديم وحدة ui-test-junit4 (Ib91f8)
  • تم تعديل Icon API لقبول Color.Unspecified كلون صبغة محتمل سيرسم المادّة الأساسية أو الرسام المقدَّم بدون فلتر لون. في السابق، كانت محاولات تجاهل التلوين باستخدام Color.Unspecified تؤدي إلى التلوين بلون شفاف، ما يؤدي إلى عدم عرض أي محتوى على الإطلاق. (I049e2، b/171624632)
  • تم نقل MeasureResult خارج MeasureScope. (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).
  • تمت إضافة SelectionContainer بدون دالة ردّ الاتصال (Ibfadb)
  • أضِف اختبارات لمواضع عناصر اختيار العناصر في 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. يمكنك أيضًا استخدام مكوّن Image أو Modifier.paint() مع Painter إذا كنت لا تريد استخدام مكتبة Material. (I9f622)
  • تمت إضافة interactionState إلى Modifier.scrollable وScrollableColumn وLazyColumnFor (I81566، b/169509805)
  • تمت إضافة alignByBaseline إلى RowScope وتمت إعادة تسمية alignWithSiblings إلى alignBy (I06503، b/170628732)
  • تم تحويل المربّع إلى دالة مضمّنة. (Ibce0c، b/155056091)
  • تمت إضافة maxLines إلى CoreTextField‏ (Ibee58، b/143687793)
  • تمت إضافة ميزة "اللفّ التلقائي" إلى CoreTextField. (I21a4b)

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

  • إيقاف VectorPainter نهائيًا واستخدام rememberVectorPainter بدلاً منه لتحديد بشكل أفضل أنّ واجهة برمجة التطبيقات القابلة للتركيب تستفيد من "التذكر" للحفاظ على البيانات في التراكيب (Ifda43)
  • فعِّل الانتقالات في ComposeTestRule، وأزِل خيار تفعيل المؤشر المتمايل من ComposeTestRule. (If0de3)
  • تمت إضافة خيار لوحة مفاتيح ذات سطر واحد إلى CoreTextField‏ (I72e6d)
  • تمت إعادة تسمية Radius API إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في أداة "الإنشاء". تم تعديل المستندات للإشارة إلى أنّ نصف قطر الزاوية السالب يتم تثبيته على القيمة صفر. (I130c7، b/168762961)
  • إضافة إمكانية تحديد معلومات المفتش في المُعدِّل المركب (Idee08، b/163494569)
  • تمت إضافة خيار IME KeyboardCapitalization (I8ac38)
  • يجب تصحيح موضع الاسم المعرِّف باتجاه اليمين لليسار. (I6e1e0)
  • تغيير جذري: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) نظرًا لأنّ القيمة الوحيدة التي من المفترض أن يكون بالإمكان تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات استهلاك PointerEvents التي تم تمريرها. (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).
  • إيقاف واجهتَي برمجة التطبيقات contentColor() وcurrentTextStyle() نهائيًا واستبدالهما بواجهتَي برمجة التطبيقات AmbientContentColor وAmbientTextStyle على التوالي يمكنك الوصول إلى القيمة الحالية باستخدام .current في السمة ambient، كما هو الحال مع أيّ سمة ambient أخرى. تم إجراء هذا التغيير من أجل الاتساق وتجنُّب توفُّر طرق متعدّدة لتحقيق النتيجة نفسها. بالإضافة إلى ذلك، تمت إعادة تسمية بعض السمات المحيطة لوصف الغرض منها بشكل أفضل على النحو التالي:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

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

  • كجزء من عملية توحيد القيم المراقبة للفئات المضمّنة، أُعيد تسمية Color.Unset إلى Color.Unspecified للتطابق مع الفئات المضمّنة الأخرى (I97611 وb/169797763).
  • تمت إضافة إجراءات تسهيل الاستخدام "النسخ/اللصق/القطع" (I6db4f)
  • تمّ تقديم TextOverflow.None. عندما يكون overflow غير محدّد، لن يعالج Text المحتوى الزائد بعد الآن، وسيُبلغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)
  • تم تعديل مَعلمات Size.Unspecified لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تعديل عمليات تنفيذ Painter للتحقّق من Size.Unspecified بالإضافة إلى المقاسات غير المحدودة. (I95a7e)
  • تمت إضافة وحدة كتابة الصفحات والدمج مع ميزة تقسيم الصفحات (Ib85da)
  • تعديل LazyListScope لتلقّي قيم فارغة (I1765b)
  • تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وonPositioned()‎ إلى onGloballyPositioned(). (I587e8، b/169083903)
  • تمت إضافة نماذج لعنصر LazyColumn/Row (Idc16d)
  • حلّ لمنهجَي items وitemsIndexed للسماح باستخدام emptyList (I06647)
  • إضافة لغة وصفية محددة لتحديد معلومات المفتش (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 على هذه المراجعات.

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

  • تمت إعادة تسمية الحزمة إلى "علبة". سيتم إيقاف العنصر foundation.Box الذي كان متوفّرًا سابقًا نهائيًا واستبداله بالعنصر Box الجديد في compose.foundation.layout. يتمثل سلوك المربّع الجديد في تجميع العناصر الفرعية فوق بعضها عندما يكون لديه عناصر فرعية متعددة، ويختلف ذلك عن المربّع السابق الذي كان يتصرف بشكل مشابه للعمود. (I94893، b/167680279)
  • تم إيقاف معلمات زخرفة المربّع نهائيًا. إذا كنت تريد إضافة زخارف أو مسافات على مربّعك، استخدِم عناصر التعديل بدلاً من ذلك (Modifier.background وModifier.border وModifier.padding) (Ibae92، b/167680279)
  • أضِف فئة LazyListState جديدة. يتيح ذلك مراقبة موضع التمرير والتحكّم فيه في مكونات LazyRow وLazyColumn. يمكن إنشاء النُسخ باستخدام ‎rememberLazyListState()‎ وتمريرها إلى مَعلمة الحالة في العنصر ‎. في الوقت الحالي، يمكن ملاحظة العنصر الأول المرئي والإزاحات في هذا الإصدار الأولي. (Ic7cb7، b/159307669)
  • يتم الآن حفظ موضع القائمة غير الظاهرة بالكامل وكمية التمرير للأعلى أو للأسفل و تتم إعادتها عند إعادة إنشاء النشاط (Ie045f، b/166589058)
  • إضافة إجراء الدلالات للنقرة الطويلة (I6281b، b/156468846)
  • تمت إضافة أداة MutatorMutex للاحتفاظ بمُعدِّل واحد لحالة المشترَكة بمرور الوقت وإلغاء المُعدِّلات المتضاربة حسب الأولوية (I3f975)
  • إضافة تعليقات توضيحية إلى rootAnimationClockFactory وtransitionsEnabled و blinkingCursorEnabled وtextInputServiceFactory باستخدام @VisibleForTesting، وجعلها واجهة برمجة تطبيقات داخلية وإخفاء kdoc (I554eb، b/168308412)
  • تمت إزالة مَعلمة inlineContent من عنصر Text الذي يتضمن إدخالًا من النوع String. ولن يتم استخدامه لأنّه يجب أن يعمل عنصر inlineContent مع AnnotatedString. (Ief403)
  • تمت إزالة واجهات برمجة التطبيقات لميزة "الترتيبات المخصّصة" التي سيتم إيقافها نهائيًا. (Ic576d، b/168297922، b/168297923)
  • تمت إضافة المَعلمة unbounded إلى مُعدِّلات wrapContentSize، ما يتيح قياس عنصر التنسيق بحدود قصوى غير محدودة. (I77951، b/158559319)
  • منعنا عمليات الاستيراد الثابتة لمحتوى نطاقات التنسيق (مثل alignWithSiblings في RowScope). يجب استخدام البديل الصريح للنطاق بدلاً من ذلك: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be، b/166760797)

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

  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة التطبيقات الخاصة بتحويلات الحجم والدوران للاستخدام المشترَك لمَعلمة Offset واحدة لتمثيل إحداثي محور الدوران بدلاً من استخدام مَعلمات float منفصلة لإحداثي x/y في DrawScope وDrawTransform
    • إزالة الطريقتَين Rect.expandToInclude وRect.join
    • تم تعديل مستندات "النطاق الجغرافي" لتشير إلى أنّه بيضاوي بالإضافة إلى بيضاوي الشكل.
    • تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء ملف الإنشاء العلني لفئة Radius المضمّنة مباشرةً، ولكن يجب بدلاً من ذلك إنشاء مثيلات لعناصر Radius من خلال ملفّات إنشاء الدوالّ.
    • تمت إزالة واجهات برمجة تطبيقات RoundRect API لطلب البحث عن topRight و bottomRight وbottomCenter وما إلى ذلك.
    • إيقاف Rect.shift نهائيًا واستبداله بـ Rect.translate
    • إزالة واجهتَي برمجة التطبيقات RoundRect.grow وRect.shrink
    • تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
    • إزالة RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
    • تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
    • تم تغيير RoundRect.center ليصبح سمة بدلاً من دالة
    • تم تعديل عنصر الإنشاء RoundRect لاستخدام سمات Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y.
    • تمّت إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي كانت تفترض أنّه مستطيل مع أصل عند 0,0
    • تمت إضافة واجهة برمجة تطبيقات لإزالة البيانات إلى Radius
    • تم نقل دوالّ إضافة RoundRect المختلفة لتصبح سمات بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • تحسينات الأداء لميزة "الانتقال السلس للأعمدة/الصفوف" من خلال عدم إجراء عمليات إعادة تركيب غير ضرورية أثناء كل عملية انتقال (I64f65 وb/168293643 وb/167972292 وb/165028371)
  • تم إصلاح الأعطال في LazyColumnFor/LazyRowFor بعد الانتقال للأعلى أو للأسفل ثم تغيير العناصر، وتم تنفيذ الانتقال التلقائي للأعلى عند إزالة العنصر المرئي سابقًا حتى لا نعرض فجوات فارغة في النهاية بعد الآن (I220ab وb/161480164 وb/167855468)
  • لم يعُد مسموحًا بتداخل الحاويات القابلة للتقديم أو الإيقاف في الاتجاه نفسه، مثل ScrollableContainer وLazyColumnFor. لم يكن هذا الإجراء متوافقًا مطلقًا وكان يتسبب في حدوث أخطاء في الأداء وجميع عمليات إنشاء عناصر LazyColumnFor (I6e101) بشكلٍ غير مدروس.
  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة تطبيقات DrawScope باستخدام طرق تحويل على مستوى النطاق للإشارة إلى أنّه لا يتم تطبيق التحويل إلا ضمن الدالة المخصّصة للردّ، ويتم إزالته بعد استدعاء الدالة المخصّصة للردّ.
    • تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من مستطيل مُعَدَّل
    • تباعُد ثابت في المستند للمَعلمة اليمنى في clipPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وتمت إزالة مَعلمة size.
    • تمت إعادة تسمية مَعلمتَي dx/dy في طريقة inset إلى أفقي وعمودي
    • تمت إضافة حمولة زائدة للاقتصاص توفّر قيمة اقتصاص متطابقة لجميع الحدود الأربعة.
    • تمّت إزالة مستندات حول طريقة الحشو التي تشير إلى أنّه سيتم تطبيق الحشو على جميع الجوانب الأربعة.
    • مستندات معدَّلة لفئة Rect
    • تعديل التعليقات على مَعلمات Rect لمطابقة kdoc style
    • تمت إزالة Rect.join وRect.expandToInclude
    • تم إنشاء وظائف زائدة لواجهة Rect.translate(offset) و تم إيقاف Rect.shift نهائيًا
    • (If086a، b/167737376)
  • أضِف AccessibilityScrollState إلى سمات الدلالات. (Ifeda9)
  • اجعل TextRange مضمّنًا لتجنُّب إنشاء كائن. (Id034b)
  • تمت إزالة ParagraphConstraints. يتم الآن تمرير العرض مباشرةً إلى الفقرة. (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)
  • تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متسق لتصبح align أو alignment في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
  • تمت إضافة مَعلمة alignment إلى Stack، ما يسمح بتحديد المحاذاة التلقائية لجميع عناصر Stack الفرعية. (Ie80ca، b/164085265)

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

  • تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
  • تمت إعادة تسمية المَعلمتَين minWidth وmaxWidth في widthIn ليصبحا min وmax. وينطبق الأمر نفسه على أخطاء preferredWidthIn وheightIn وpreferredHeightIn. (I0e5e1، b/167389544)
  • تمت إضافة onNode والطُرق الشاملة الأخرى في ComposeTestRule لأنّه سيتم إيقاف الطُرق الشاملة الحالية نهائيًا. (Ieae36)
  • عمليات حساب الحجم والموقع الثابتة في GestureScope، والتي أدّت إلى إنشاء إيماءات التمرير السريع غير الصالحة (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 عند إجراء اختبارات تحتاج إلى ManualFrameClock. 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.Vertical#arrange وArrangement.Horizontal#arrange السابقتَين نهائيًا، ولن يكون بإمكانك كتابة ترتيبات مخصّصة في المستقبل. (I6733d، b/161985975)
  • أصبح "الموضع النسبي" فئة مضمّنة (Iaec70).
  • تمت إزالة وظائف الاستدعاء onFocusChanged من TextField. استخدِم Modifier.focusObserver بدلاً من ذلك. (I51089، b/161297615)
  • تم إيقاف Modifier.drawBorder نهائيًا. استخدِم Modifier.border بدلاً من ذلك. تم استبدال فئة بيانات الحدود بـ BorderStroke (I4257d، b/158160576)
  • تمت إزالة VerticalScroller وHorizontalScroller. استخدِم ScrollableColumn/Row بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدِم Modifier.background (I73b0d، b/163019183).
  • إزالة المُعدِّلات التي تم وضع علامة عليها بأنّها متوقّفة نهائيًا fillMax* من LazyItemScope لأنّها تصعِّب إضافة هذه المُعدِّلات بشكل صحيح إلى العناصر التي ليست عناصر فرعية مباشرة من LazyColumnFor (Ifa78d)
  • تمت إضافة تنفيذ LazyColumn/LazyRow كـ DSL (I93cc6)
  • أصبحت القيود الآن فئة مضمّنة (I88736).
  • تمت إضافة إمكانية ضبط حجم التنسيق على جزء من المساحة المتوفّرة باستخدام المُعدِّلات fillMaxWidth وfillMaxHeight وfillMaxSize. (I945bb، b/161562591)

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

  • تمت إضافة مَعلمة مُعدِّل إلى SelectionContainer‏ (I4aada، b/161487952)
  • تمت إضافة دالة lambda لسياسة الدمج إلى SemanticsPropertyKey. ويمكن استخدام ذلك لتحديد سياسة مخصّصة لدمج semantik mergeAllDescendants. إنّ السياسة التلقائية هي استخدام قيمة العنصر الرئيسي إذا كانت متوفرة، وإلا يتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)
  • تمت إعادة تسمية PlacementScope.placeAbsolute() إلى PlacementScope.place()، وتمت إعادة تسمية PlacementScope.place() السابق إلى PlacementScope.placeRelative(). نتيجةً لذلك، لن تعكس طريقة PlacementScope.place() تلقائيًا الموضع في السياقات من اليمين إلى اليسار بعد الآن. وإذا أردت ذلك، استخدِم PlacementScope.placeRelative() بدلاً من ذلك. (I873ac، b/162916675)
  • تمت إزالة مكوّن FilledTextField الذي تم إيقافه نهائيًا. يُرجى استخدام TextField بدلاً من ذلك للحصول على تنفيذ Material Design لحقل النص المعبّأ. (I5e889)
  • تمت إضافة مَعلمة backgroundColor إلى LinearProgressIndicator وإزالة الحشو الداخلي من CircularProgressIndicator. تمت إضافة متغير جديد ProgressIndicatorConstants.DefaultProgressAnimationSpec يمكن استخدامه كقيمة AnimationSpec التلقائية عند إضافة مؤثرات متحركة إلى مستوى التقدّم بين القيم (If38b5 وb/161809914 وb/161804677).
  • تم إيقاف العنصر القابل للتجميع state { ... } نهائيًا، وأصبح من الأفضل استخدام طلبات صريحة لعنصر remember { mutableStateOf(...) } من أجل الوضوح. ويؤدي ذلك إلى تقليل مساحة عرض واجهة برمجة التطبيقات الإجمالية وعدد المفاهيم المتعلّقة بإدارة الحالة، كما يتطابق مع نمط by mutableStateOf() لمنح إذن الوصول إلى ملف تعريف الفئة. (Ia5727)
  • تمت إعادة تسمية RRect إلى RoundRect لتناسب أنماط تسمية الإنشاء بشكلٍ أفضل تم إنشاء وظائف إنشاء دالة مشابهة لدالة RRect ووظائف إنشاء دالة RRect المتوقّفة نهائيًا (I5d325)
  • تمّت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier في تنسيق العنصر الفرعي بدلاً من ذلك. (I4522e، b/162109766)
  • أصبح IntSize الآن فئة مضمّنة (I2bf42).
  • اضغط مع الاستمرار على المنطقة الفارغة المطلوب تعديلها. (Ib1e5b)
  • إخفاء شريط الأدوات العائم بعد النقر على النص (If4525)
  • إخفاء شريط الأدوات العائم عند تعديل الاختيار (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)
  • تمت إضافة مَعلمة الجاذبية على محور x لعناصر LazyRowItems/LazyColumnItems. تتيح الآن عناصر LazyRowItems/LazyColumnItems سلوك لف المحتوى. (Ib39fc)
  • تمت إعادة تسمية ZoomableState إلى ZoomableController. تمت إضافة دعم للمنحنيات المخصّصة في smoothScale. تمّت إضافة وظائف 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.absoluteOffset() وModifier.absoluteOffsetPx(). وعلى عكس مُعدِّلات ال offset، لن تتم تلقائيًا مرآة مُعدِّلات ال offset المطلق في السياق من اليمين إلى اليسار (I3aa21).
  • أصبحت الدالتان Row وColumn الآن دالتَين مضمّنتَين، ما يقلل بشكل كبير من النفقات العامة لاستخدامهما. (I75c10)

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

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

    أصبح العنصر ManualFrameClock هو العنصر المكافئ لعنصر MonotonicFrameClock في ManualAnimationClock. (I111c7، b/161247083)

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

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

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

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

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

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

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

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

  • تمت إعادة تسمية AndroidComposeTestRule ليصبح createAndroidComposeRule. (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 من تطبيق "الكتابة"، عليك إجراء ما يلي:

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

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

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

  • على غرار المَعلمة الجديدة في ScrollableColumn/ScrollableRow، تتضمّن الآن LazyColumnItems/LazyRowItems أيضًا المَعلمة contentPadding التي تسمح بإضافة مسافة بادئة للمحتوى بعد اقتصاصه، وهو أمر غير ممكن من خلال مَعلمة مُعدِّلة فقط. ويسمح أيضًا بإضافة مسافة قبل العنصر الأول أو بعد العنصر الأخير فقط. (Ibc24e)
  • تمت إعادة تسمية دالة الاستدعاء onFocusChange في الحقول النصية إلى onFocusChanged (Ida4a1).
  • تم إيقاف عنصرَي VerticalScroller وHorizontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك العمود/الصف والمَعلمات، أو استخدِم Modifier.verticalScroll وModifier.horizontalScroll في العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا واستبداله بـ ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299)
  • تمت إعادة صياغة واجهتَي برمجة التطبيقات Modifier.draggable وModifier.scrollable. تمّت إزالة DragDirection لصالح Orientation. تم تبسيط الحالة المطلوبة للعنصر القابل للتقديم أو الإيقاف. تمت إعادة تسمية ScrollableState إلى ScrollableController (Iab63c، b/149460415)
  • تستخدم الآن سمات الدلالات ذات القيمة الواحدة أسلوبًا للاتّصال. على سبيل المثال، يتم الآن كتابة "semantics { hidden = true }" على النحو التالي: semantics { hidden() }. (Ic1afd، b/145951226، b/145955412)
  • يمكن الآن أن تكون أحجام الزوايا المستخدَمة في RoundedCornerShape وCutCornerShape أكبر من %50 (Id2340، b/160400213)
  • تم تغيير المَعلمة التلقائية ContentScale لعنصر Image composable من Inside إلى Fit. تم إجراء ذلك لأجل الحصول على سلوك لتوسيع نطاق الرسام الأساسي إذا كان حجم التنسيق أكبر من الحجم الأساسي للرسام مع الحفاظ على نسبة العرض إلى الارتفاع. يتوافق هذا السلوك بشكلٍ أفضل مع التوقعات بشأن توفير أحجام ثابتة للصورة مع عدم التأثير في السلوك التلقائي إذا تم استخدام الحجم الأساسي فقط لاحتساب حجم العنصر القابل للتجميع. (I40ae3، b/159838006)
  • استخدِم AnimationSpec بدلاً من AnimationBuilder في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الرسوم المتحركة الثابتة - تحسين لغة وصف برمجة التطبيقات الخاصة بالانتقالات من خلال إزالة شرط استخدام دالة lambda ل إنشاء مواصفات حركات مثل tween وspring بدلاً من ذلك، يتم استخدامparamمّات المُنشئ مباشرةً. -تحسين سهولة استخدام AnimationSpec بشكل عام من خلال فتح العوامل المنشئة بدلاً من الاعتماد على أدوات الإنشاء -تغيير المدة والتأخير لـ KeyFrames وTween إلى Int. يؤدي ذلك إلى إزالة عمليات تحويل النوع غير الضرورية وعمليات تحميل الطرق الزائدة (لتفعيل كل من Long وInt). (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 بـ Int. وتم استبدال IntPxPosition بـ IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
  • تمت إزالة androidx.ui.foundation.shape.RectangleShape، استخدِم androidx.ui.graphics.RectangleShape (I94939، b/154507984)
  • لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات الحجم، يجب توحيد استخدام فئة Size بدلاً من PxSize. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من الطول لتعبئة قيمتَين عائمتَين لتمثيل العرض والارتفاع المقدَّمَين كقيم عائمة. (Ic0191)
  • لتوحيد عدد الفئات المستخدَمة لتمثيل معلومات الموضع، يجب توحيد استخدام فئة Offset بدلاً من PxPosition. يقدّم ذلك مزايا الفئة المضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين عائمتَين لتمثيل الإزاحة x وإزاحة y التي تم تمثيلها كقيم عائمة. (I3ad98)
  • تمت إضافة Modifier.zoomable لتوفير وظيفة التصغير/التكبير باستخدام إصبعَين (Id5d63)
  • تم إيقاف المكوّن القابل للتبديل نهائيًا. استخدِم Modifier.toggleable بدلاً من ذلك (I35220، b/157642842)
  • تم إيقاف MutuallyExclusiveSetItem نهائيًا. استخدِم Modifier.selectable بدلاً من ذلك. (I02b47، b/157642842)
  • تم إيقاف TestTag نهائيًا. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)
  • إضافة مَعلمة fontWeight إلى Text، والتي لم تتم إضافتها سابقًا عن طريق الخطأ (I56937)
  • تم استبدال استخدام فئة Px في صفوف Compose المختلفة كجزء من الجهد الكبير المبذول لإعادة التشكيل من أجل الاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (I19d02).
  • يقدّم VerticalScroller الآن العمود بشكل تلقائي. يقدّم عنصر HorizontalScroller الآن صفًا تلقائيًا. (Ieca5d، b/157020670)
  • تم استبدال استخدام فئة Px في فئات compose المختلفة كجزء من جهد إعادة التشكيل الكبير للاعتماد فقط على Dp والأنواع الأساسية لمَعلمات البكسل (Iede0b)
  • تمت إضافة Modifier.indication إلى حزمة الأساس. استخدِم هذا الإجراء لعرض إشارة الضغط/السحب/غير ذلك على العناصر المخصّصة القابلة للتفاعل (I8425f، b/155287131).
  • يتيح VerticalScroller وHorizontalScroller الآن التنقّل العكسي إذا تم ضبط isReversed على ScrollerPosition (I953bd).
  • إتاحة إضافة عناصر قابلة للتجميع إلى تنسيق النص (I1373c)
  • تم دمج عمليات تنفيذ CanvasScope ليصبح لدينا الآن DrawScope و ContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تعديل DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection تم حذف الفئة الفرعية DrawScope في ContentDrawScope تم تعديل Painter وPainterModifier لإيقاف الاحتفاظ بخاصية RTL بأنفسهما لأنّ DrawScope يوفّر ذلك بدون تقديمه يدويًا (I1798e)
  • تمت إزالة واجهة برمجة التطبيقات DrawBackground API المتوقّفة نهائيًا لصالح واجهات برمجة تطبيقات إضافة drawBackground API في "المعدِّل". تمّت إعادة صياغة تنفيذات drawBackground لللون والفرشاة والطلاء بهدف تقليل مسارات الرموز البرمجية، فضلاً عن إزالة شرط إنشاء Modifier كجزء من التركيب. (I0343a)
  • تم تعديل واجهة برمجة التطبيقات التي تُنشئ مكونات من المستوى الأعلى لتعرض Canvas بدلاً من CanvasScope. ويؤدي ذلك إلى عدم إلزام المستهلكين بصيانة عناصر Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين يحتاجون إلى الوصول إلى Canvas ، يمكنهم استخدام أسلوب إضافة drawCanvas الذي يقدّم طلب استدعاء لإصدار تعليمات الرسم باستخدام Canvas الأساسية. (I80afd)
  • لا يعيد عنصرَا HorizontalScroller وVerticalScroller موضع التمرير باستخدام حالة العنصر المحفوظة. (Ia0fae، b/155075048)
  • تمت إزالة FocusManagerAmbient. استخدِم FocusModifier.requestFocus للحصول على التركيز. (Ic4826)
  • تمت إزالة تنسيق الجدول مؤقتًا إلى أن نوفّره مرة أخرى من خلال واجهة برمجة تطبيقات معدَّلة. (Id88a7)
  • تم إنشاء واجهة برمجة التطبيقات CanvasScope API التي تُغلِّف كائن canvas لعرض سطح واجهة برمجة تطبيقات رسومات تعريفية بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق المستلِم الخاص بها، ويتم أيضًا تحديد نطاق معلومات الحجم لحدود الحشو المقابلة. ولا يتطلّب ذلك من المستخدِم الاحتفاظ بحالة الطلاء الخاصة به لضبط عمليات الرسم.

    تمت إضافة CanvasScopeSample بالإضافة إلى تعديل التطبيق التجريبي لتضمين رسومات توضيحية تجريبية (Ifd86d).

  • تمت إزالة ColoredRect. استخدام User Box مع مُعدِّل drawBackground بدلاً من ذلك (I983c7، b/152753731)

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

  • أصبح من الممكن الآن إخفاء/إظهار لوحة المفاتيح البرمجية باستخدام SoftwareKeyboardController الذي يتم إرساله من خلال 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).

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

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

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

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

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

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

  • تمت إعادة تسمية ScaleFit إلى ContentScale وتم نقل ContentScale من وحدة ui-graphics إلى وحدة ui-core لكي تظهر في الوحدة نفسها التي تتضمّن واجهة برمجة التطبيقات Alignment. تمت إعادة تسمية FillMaxDimension إلى Crop تمت إعادة تسمية FillMinDimension إلى Fit تمت إعادة تسمية Fit إلى Inside لمطابقة مثيلات ImageView.ScaleType بشكل أفضل تمت إضافة مستندات تشير إلى أنّ الجمع بين Crop وAlignment.Center يحقّق النتيجة نفسها مثل ImageView.ScaleType.CENTER_CROP وFit يحقّق استخدام Alignment.Center النتيجة نفسها مثل ImageView.ScaleType.FIT_CENTER يحقّق استخدام Inside مع Alignment.Center النتيجة نفسها مثل ImageView.ScaleType.CENTER_INSIDE (I45f09، b/152842521)

  • إزالة ProvideContentColor، وبدلاً من ذلك، استخدِم ContentColorAmbient مباشرةً مع Providers (Iee942)

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

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

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

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

  • تم استبدال عامل التشغيل "المعدِّل الإضافي" بدوالّ إضافة المصنع (I225e4)

  • تم نقل العنصر القابل للسحب إلى المُعدِّل (Id9b16، b/151959544)

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

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

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

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

    تمت إعادة تسمية واجهة برمجة التطبيقات Image(Painter) إلى PaintBox(Painter) تم إنشاء عنصر مركب متحرك يشبه العنصر المركب المتحرك للصور، باستثناء أنّه يستخدم مادة عرض رسومات فنية بدلاً من مادة عرض صورة (I9af9a، b/149030271)

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

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

  • تمت إعادة تسمية Image إلى ImageAsset للتمييز بشكل أفضل بين الفرق بين بيانات Image وملف Composed Image القادم المُستخدَم للمشاركة في تنسيق ورسم المحتوى.

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

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

  • يتيح مكوّن "الحزمة" الاتجاه من اليمين إلى اليسار (Ic9e00).

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

  • تمت إزالة العنصر القابل للتجميع DrawShape. استخدِم المُعدِّل DrawBackground بدلاً من ذلك. (I7ceb2)

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

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

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

  • أضِف مَعلمات الحشو والحدود والشكل والخلفية إلى المربّع (I05027، b/148147281).

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

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

  • تمت إضافة مكوّن "المربّع" لدمج وظائف التنسيق والرسم الشائعة. (I6e2a7)

  • تعرض الآن أشرطة التمرير سلوكًا أصليًا لحركة التمرير السريع في Android. (I922af، b/147493715)

  • تم استبدال DrawBorder بمُعدِّل الحدود (Id335a)

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

  • تمت إعادة تسمية مَعلمة النسبة المئوية عند إنشاء إرشادات ConstraintLayout إلى fraction. (Ida2db)

  • تمت إضافة إمكانية استخدام الهوامش في الحواجز في ConstraintLayout. (I47ffe)

  • تم إصلاح إتاحة اتجاه النص من اليمين إلى اليسار في ConstraintLayout. تمّت إضافة واجهات برمجة تطبيقات لا تراعي اتجاه النص من اليمين إلى اليسار. (I3b1c7)

  • تمت إضافة لغة وصفية جديدة لـ ConstraintLayout. يُرجى الاطّلاع على العيّنات لمعرفة المزيد من التفاصيل. (Icaa9a)

  • تمت إضافة التعليق التوضيحي @ExperimentalLayout. تم وضع علامة عليه الآن في ConstraintLayout وFlowRow وFlowColumn للإشارة إلى أنّ واجهات برمجة التطبيقات الخاصة بهم ستتغيّر. (I412a8)

  • تمت إضافة Modifier.padding(InnerPadding) (I94985، b/157133803)

  • تمت إزالة RowAlign وColumnAlign في الصف والعمود، لأنّهما عنصران متوقّفان نهائيًا. (If60d4، b/155858731)

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

  • تمت إضافة مُعدِّل تنسيق offsetPx الذي يمكن استخدامه لتحديد (الديناميكية) للقيم المُحوَّلة في وحدات البكسل. (I5af57)

  • تم إيقاف العنصر القابل للتجميع AlignmentLineOffset نهائيًا، يُرجى استخدام المُعدِّل relativePaddingFrom()‎ بدلاً منه. تمت إزالة العنصر القابل للتجميع CenterAlignmentLine. (I60107)

  • تمت إضافة مُعدِّل التنسيق defaultMinSizeConstraints الذي يضبط قيود الحجم على التنسيق المُلفَّف فقط عندما تكون القيود المقابلة الواردة غير محدّدة (0 للقيود الدنيا واللانهاية للقيود القصوى). (I311ea، b/150460257)

  • تمت إزالة الحاوية. استخدِم Box بدلاً من ذلك (Ibbc2b، b/151407926).

  • تمت إزالة عوامل التعديل LayoutWidth/Height/Size التي تم إيقافها نهائيًا. (Ib0bc1)

  • تمت إضافة قيم مَعلمات تلقائية لمُعدِّل البادئة. (I37f06)

  • تمت إضافة مُعدِّل الحشو المتماثل. (I39840)

  • تمّت إزالة المُعدِّل LayoutAspectRatio الذي تمّ إيقافه نهائيًا. (I65a74)

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

  • تم إصلاح خطأ في مُعدِّلات العرض والارتفاع كان يتسبب في قياس التنسيق المُلفَّف بدون قيود على المحور المقابل. (I210b8، b/154797971)

  • تمت إضافة المَعلمتَين verticalGravity وhorizontalGravity إلى Row وColumn على التوالي. (I7dc5a)

  • تم تعديل سمتَي wrapContentWidth وwrapContentHeight لتوقع المحاذاة العمودية أو الأفقية بدلاً من أي محاذاة. تم تعديل مُعدِّل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تعديل الصف والعمود والرصة لتتوافق مع عمليات المحاذاة المستمرة المخصّصة. (Ib0728)

  • تمّت إتاحة إمكانية إنشاء Alignment باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة 1D. (Ia0c05)

  • تمت إعادة تسمية EdgeInsets إلى InnerPadding. تمت إعادة تسمية مَعلمة innerPadding في Buttons Material إلى paddding. (I66165)

  • يقبل alignToSiblings الآن عنصرًا من النوع "مقيس" بدلاً من "قابل للوضع". (I5788d)

  • تمت إضافة مُعدِّلات لتحديد الحجم إلى القياسات الأساسية وتم إيقاف المكوّنات التي تخدم هذا الغرض نهائيًا. (I8295d)

  • تمت إضافة إمكانية تخصيص سمات عناصر ConstraintLayout (Idb1a5)

  • تمت إزالة العنصرَين "التفاف" و"وسط" اللذَين تم إيقافهما نهائيًا. (I29e23)

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

  • يمكن الآن الوصول إلى أعضاء RowScope وColumnScope خارج Row وColumn. (I3a641)

  • تم إيقاف الحاوية نهائيًا. استخدِم Box بدلاً من ذلك. (I675ce، b/151407926)

  • تمت إضافة المُعدِّل LayoutOffset لإزاحة موضع التنسيق (I0b8a3)

  • إتاحة RTL بشكل مبدئي في تنسيق "الإنشاء" (Ia5519)

  • تم تعديل LayoutAlign كي لا تملأ المساحة المتوفّرة بعد الآن (I2b14f)

  • تمت إزالة العنصر القابل للتجميع AspectRatio لصالح المُعدِّل. تم حذف العناصر المركّبة FlexColumn وFlexRow القديمة ومحرّر Spacing (Iec8a7)

  • تمت إزالة المُعدِّل LayoutInflexible للصف والعمود (I0d820).

  • تنفيذ عناصر التحكّم في السحب لتغيير التحديد في TextField (I27032)

  • تنفيذ LongPressAndDrag لاختيار TextField (I17919)

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

  • تم إيقاف FocusModifier نهائيًا واستبداله بـ Modifier.focus وModifier.focusRequester وModifier.focusObserver. تم إيقاف FocusState وFocusDetailedState نهائيًا واستبدالهما بـ FocusState2 (I46919 وb/160822875 وb/160922136)
  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607)
  • تمت إعادة تسمية العديد من واجهات برمجة التطبيقات للاختبار لتكون أكثر سهولة. تمت إعادة تسمية كل واجهات برمجة التطبيقات findXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة التطبيقات doXYZ إلى performXYZ. (I7f164)
  • إزالة Modifier.ripple التي تم إيقافها نهائيًا في السابق يستخدم العنصر القابل للنقر الآن تأثير التموج كإشارة تلقائية (إذا كان لديك عنصر MaterialTheme {} محدّد في تطبيقك)، لذا في معظم الحالات، يمكنك استخدام العنصر القابل للنقر والحصول على إشارة التموج مجانًا. إذا كنت بحاجة إلى تخصيص مَعلمة اللون / الحجم / الحدود لموجة الصدمة، يمكنك إنشاء عنصر RippleIndication يدويًا ونقله إلى عنصر clickable كمَعلمة indication. (I663b2، b/155375067)
  • تمت إزالة واجهات برمجة التطبيقات القديمة لاختبار الحجم. (Iba0a0)
  • تمّت إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (I4f2e9)
  • تم تنفيذ الإصدار 1 من ميزة قفل اتجاه التمرير في ميزة "الإنشاء". (I1ce7a، b/150289741)
  • ترث الآن النوافذ المنبثقة ومربّعات الحوار والقوائم مظهر MaterialTheme السياقي (Ia3665، b/156527485).
  • تمت إزالة مَعلمة اتجاه التنسيق من مجموعة القياس لدالة Layout()‎. ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة الاستدعاء من خلال كائن نطاق القياس (Ic7d9d).
  • إضافة AbsoluteArrangement: يسمح بترتيب العناصر الفرعية داخل الصف بدون النسخ التلقائي في RTL (I3a1df)
  • تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِل ذلك بـ @ComposableContract(tracked=false) (Id211e).
  • قبل إجراء هذا التغيير، كان المكوّن الإضافي لمحرِّر Compose يعرقل بشكلٍ غير بسيط طلبات إنشاء العناصر داخل دالة @Composable في حال توفّر (I5205a، b/158123804)
  • إضافة viewModel() composable التي تسمح بإنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه مسبقًا على نحو مشابه لطريقة عملها في Activity أو Fragment (I5fdd1)
  • تمّت إعادة صياغة فئة Radius لتصبح فئة مضمّنة. تمت إزالة methods لإنشاء الأشكال المصاحبة واستخدام دالة باني الدوال مع مَعلمة تلقائية لكي يتطابق نصف القطر على محور y مع مَعلمة نصف القطر الإلزامية على محور x.

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

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

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

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

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

  • يتضمّن مؤشر TextField تأثيرًا متحركًا للميض (Id10a7)

  • لم تعُد الإيماءات الجزئية تتطلّب تمرير رمز GestureToken (Id7ae5).

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

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

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

  • تم تعديل Alignment API وإضافة ميزة محاذاة مطلقة (لا تتم عكسها تلقائيًا في سياق 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-compose في مشروعك. (I32042)

  • أصبحت runOnIdleCompose وrunOnUiThread الآن دالة كليتين بدلاً من طريقتَين في ComposeTestRule. (Icbe8f)

  • [قابلة للتغيير]تم نقل عوامل تشغيل تفويض حالة العنصر إلى الإضافات لإتاحة تحسينات تفويض العنصر في Kotlin 1.4. على المتصلين إضافة عمليات الاستيراد لمواصلة استخدام by state { ... } أو by mutableStateOf(...). (I5312c)

  • أصبحت قيمة المَعلمتَين DrawLayerModifier وdrawLayer()‎ التلقائية للمَعلمتَين clipToBounds وclipToOutline هي false. (I0eb8b، b/152810850)

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

  • عنصر قابل للتجميع في "المركز" تم إيقافه نهائيًا. يجب استبداله إما بالمعدِّل LayoutSize.Fill + LayoutAlign.Center أو بأحد العناصر القابلة للإنشاء Box أو Stack مع تطبيق مُعدِّلات مناسبة (Idf5e0).

  • تمت إعادة تسمية LayoutFlexible إلى LayoutWeight. تمت إعادة تسمية المَعلمة tight إلى fill. (If4738)

  • تم تغيير DrawVector من دالة مؤلفة عادية إلى دالة تعرض مُعدِّل drawVector() الذي سيرسم الخطّ المتّجه كخلفية لتنسيق. (I7b8e0)

  • استبدِل الدالة القابلة للتجميع Clip بالمعدِّل drawClip(). إنّ DrawClipToBounds هو مُعدِّل مناسب للاستخدام عندما تحتاج فقط إلى الاقتصاص إلى حدود الطبقة باستخدام شكل مستطيل. (If28eb)

  • تم استبدال الدالة القابلة للتجميع DrawShadow بالمعدِّل drawShadow() . يتم الآن رسم الظلال كجزء من LayerModifier. (I0317a)

  • تم نقل androidx.compose.ViewComposer إلى androidx.ui.node.UiComposer تمت إزالة androidx.compose.Emittable. كان هذا العنصر متكررًا مع ComponentNode. تمت إزالة androidx.compose.ViewAdapters. لم تعُد هذه الحالات من حالات الاستخدام المتوافقة. تم إيقاف Compose.composeInto نهائيًا. استخدِم setContent أو setViewContent بدلاً من ذلك. تم إيقاف Compose.disposeComposition نهائيًا. استخدِم طريقة dispose على Composition التي تم إرجاعها بواسطة setContent بدلاً من ذلك. تم نقل androidx.compose.Compose.subcomposeInto إلى androidx.ui.core.subcomposeInto تم تغيير اسم ComponentNode#emitInsertAt إلى ComponentNode#insertAt تم تغيير اسم ComponentNode#emitRemoveAt إلى ComponentNode#removeAt تم تغيير اسم ComponentNode#emitMode إلى ComponentNode#move (Idef00)

  • عنصر Wrap المركّب الذي تم إيقافه نهائيًا ويمكن استبداله إما باستخدام المُعدِّل LayoutAlign أو باستخدام العنصر القابل للتجميع Stack (Ib237f).

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

  • أعِد تسمية Painter.toModifier إلى Painter.asModifier لأنّ أداة التعديل التي تم إنشاؤها حديثًا تحتوي على إشارة إلى Painter الأصلية التي يمكن مشاركتها في عدّة حالات من أداة التعديل (I7195b).

  • إتاحة الاتجاه من اليمين إلى اليسار في مُعدِّل LayoutPadding (I9e8da)

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

  • تمّت إزالة فئة ValueHolder. تمّت إعادة هيكلة فئة AnimatedValue وفئة AnimatedFloat لجعل حقل قيمة الرسوم المتحركة مجردًا حتى تتمكّن الفئات الفرعية من مراقبة تعديل القيمة.

    • تمت إضافة فئات نماذج لـ AnimatedValue وAnimatedFloat وما إلى ذلك.
    • تمت إضافة مجموعة جديدة من واجهة برمجة التطبيقات @Composable API خفيفة الوزن لإضافة تأثيرات متحركة بين القيم.
    • (I79530)
  • تغييرات جذرية في واجهة برمجة التطبيقات Ambients API اطّلِع على السجلّات ومستندات Ambient<T> للحصول على التفاصيل (I4c7ee، b/143769776).

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

  • تم إصلاح خطأ في ConstraintLayout كان يتسبب في حدوث عطل عند إعادة التركيب. (Ibee5a، b/158164341)

  • تم تغيير واجهة برمجة التطبيقات lambda التي تلي WithConstraints. والآن، بدلاً من مَعلمتَين، يحتوي على نطاق مستلِم يقدّم، بالإضافة إلى القيود وlayoutDirection، سمات minWidth وmaxWidth وminHeight وmaxHeight في Dp (I91b9a وb/149979702).

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

  • تحتوي وظائف القياسات الأساسية في Layout وLayoutModifier2 الآن على مستلِم IntrinsicMeasureScope الذي يقدّم واجهة برمجة تطبيقات طلبات البحث عن القياسات الأساسية مع اتجاه التنسيق الذي يتم نشره بشكل ضمني. (Id9945)

  • تم إيقاف LayoutDirectionAmbient نهائيًا. لقراءة اتجاه التنسيق المحدَّد حسب اللغة، استخدِم localeLayoutDirection في ConfigurationAmbient (I851b1).

  • تمت إضافة positionInParent وboundsInParent إلى LayoutCoordinates. (Icacdd، b/152735784)

  • تم إيقاف العنصر القابل للتجميع ParentData نهائيًا. عليك إنشاء مُعدِّل ينفِّذ واجهة ParentDataModifier، أو استخدام مُعدِّل LayoutTag إذا كنت بحاجة إلى وضع علامة على عناصر التنسيق الفرعية للتعرّف عليها داخل كتلة القياس. (I51368، b/150953183)

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

  • عدم السماح بإضافة مسافة سلبية في LayoutPadding يجب استخدام LayoutOffset بدلاً من ذلك لموضع الإزاحة السلبي. (Ifb5b1)

  • تلقّى WithConstraints مَعلمة LayoutDirection (I6d6f7)

  • تم تعديل العلامة ComposeFlags.COMPOSER_PARAM لتصبح true، ما سيؤدي إلى تغيير استراتيجية إنشاء الرموز البرمجية لمكوّن الإنشاء الإضافي. على مستوى عالٍ، يؤدي ذلك إلى إنشاء دوالّ @Composable باستخدام مَعلمة اصطناعية إضافية، ويتم تمريرها إلى عمليات استدعاء @Composable اللاحقة لكي يتمكّن وقت التشغيل من إدارة التنفيذ بشكلٍ سليم. هذا تغيير مهمّ يتسبب في إيقاف الإصدار الثنائي، ولكن من المفترض أن يحافظ على التوافق على مستوى المصدر في جميع حالات استخدام compose المسموح بها. (I7971c)

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

  • لم تعُد سمة LayoutCoordinates تحتوي على سمة position. لا تكون سمة position منطقية عند التفكير في LayoutModifiers أو التدوير أو التكبير/التصغير. بدلاً من ذلك، على المطوّرين استخدام parentCoordinates وchildToLocal()‎ لاحتساب التحويل من أحد LayoutCoordinate إلى آخر.

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

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

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

  • عدِّل قائمة شريط الأدوات لعرض عمليات النسخ والقطع واللصق بشكل صحيح. (Id3955)

  • إضافة FloatingToolbar لاختيار TextField (Ie8b07)

  • تمت إعادة تسمية TextDirectionAlgorithm باسم TextDirection (I75ce8)

  • تمت إعادة تسمية TextDirection ليصبح ResolvedTextDirection (I3ff38).

  • أضِف HapticFeedback إلى TextField Selection. (I58050)

  • أضِف طرق "النسخ" و"القص" و"اللصق" إلى عنصر "اختيار نص في حقل نص". (Idb70b)

  • تم حذف TestTag وSemantics. استخدِم 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)

  • أصبح LifecycleOwnerAmbient الجديد متاحًا الآن. يجب الآن أن يمتد النشاط الذي تستخدمه مع واجهة Compose UI إلى androidx.activity.ComponentActivity (أو AppCompatActivity). تم إيقاف setContent على android.app.Activity نهائيًا (Idb25a، b/153141084).

  • تم استبدال اسم حزمة ui-android-text‏ (androidx.text) ب androidx.ui.text.platform من أجل التوافق مع سياسة androidx. (I42711)