Compose Foundation

كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاص بك
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأولي
‫17 يونيو 2026 1.11.3 - 1.12.0-beta01 -

البنية

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

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

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

تحديد الاعتماديات

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

الملاحظات

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

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

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.12

الإصدار ‎1.12.0-beta01

‫17 يونيو 2026

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

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

  • إعادة تسمية دالة الاختبار لتشغيل أحداث المؤشر غير المباشرة (I3ee35، b/509618414)
  • تمت إعادة تسمية TextObfuscationMode.Default إلى System. يعمل الزر TextObfuscationMode.RevealLastTyped الآن كإلغاء مطلق ويعرض دائمًا الحرف الأخير الذي تم إدخاله. تم تعديل الوسيطة التلقائية للدالة BasicSecureTextField إلى System. (If26d3، b/425658491، b/453647378)
  • تم تعديل getSpanStyles وgetParagraphStyles لاستخدام TextRange بدلاً من فهارس منفصلة للبداية والنهاية. تم تخفيف عملية التحقّق من الحدود في طلبات البحث عن الأنماط لكي لا يتم طرح استثناءات، وتم منع التعطُّل عند البحث عن خصائص TrackedRanges غير صالحة. (I62a9a، b/514404697)
  • تمت إضافة ميزة "المناطق المعيّنة" إلى تخطيط "الشبكة". يمكن للمطوّرين الآن تحديد مناطق دلالية باستخدام GridConfigurationScope.area() ووضع عناصر فيها باستخدام Modifier.gridItem(area) الجديد، ما يؤدي إلى فصل النية الدلالية عن الإحداثيات الجغرافية. (Id9303، b/487503921)
  • تمت إضافة عوامل التشغيل then ودوال المصنع المجمّعة لكل من FlexBoxConfig وFlexConfig للسماح بدمج إعدادات التصميم وتجاوزها. (Icfdd8، b/475491619)
  • تمت إضافة RevealState.drag() وSwipeToRevealDragScope، وتم عرض flingBehavior المخصّص في SwipeToReveal لتفعيل التحكّم آليًا في إيماءات التمرير السريع وعمليات الإزاحة والرسوم المتحركة الخاصة بالتسوية. (Ibfe56، b/484185090)

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

  • تم إصلاح مشكلة قد تؤدي إلى تعذُّر تعديل موضع شريط الأدوات الخاص بتحديد النص أو العناصر فيه. (Ib2566)

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

  • في SelectionContainer، اسمح بالاختيار (باستخدام الماوس) للبدء في المساحات الفارغة بين العناصر القابلة للاختيار Text. (I93f69، b/502151445)
  • عرض واجهة AndroidClipboard للاختبار من أجل توفير طريقة لمحاكاة تنفيذ الحافظة (Ie4d72، b/512924975)
  • إضافة توافق مع الإصدارات السابقة لأنواع TextAttribute من commitText() وsetComposingText() في الإصدار 37 من حزمة تطوير البرامج (SDK) أو الإصدارات الأحدث، ستتمكّن خدمات تسهيل الاستخدام من الإعلان عمّا إذا تم اختيار نص بديل مقترَح أم لا. بالنسبة إلى الإصدارات الأقدم من 37 من حزمة تطوير البرامج (SDK)، لن يؤثر ذلك في الملاحظات الصوتية (أي السلوك الحالي). (I90e3d، b/439879822)

الإصدار ‎1.12.0-alpha03

‫19 مايو 2026

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

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

  • في واجهة برمجة التطبيقات التجريبية Style API، تمّت إضافة إمكانية إنشاء أنواع أنماط مخصّصة يمكن أن تتضمّن نطاقات أنماط مخصّصة. يتيح ذلك تقسيم الخصائص التي يمكن ضبطها بواسطة نمط (مثل إزالة طبقة الرسومات أو خصائص النص بالكامل)، بالإضافة إلى السماح بتوسيع النطاق بشكل مستقل عن الأنماط الأخرى (مثل عدم إتاحة بنية playing { } إلا في عنصر MediaPlayer قابل للإنشاء). يؤدي هذا التغيير إلى إيقاف التوافق الثنائي وتوافق المصدر. التغيير الأساسي الذي يؤدي إلى عدم توافق الرمز المصدري هو نقل الدوال المساعدة في StyleScope لتصبح دوال إضافية (على سبيل المثال، أصبحت fun contentProperty(all: Dp) الآن دالة إضافية). يجب أن يكون استيراد دوال الإضافة المطلوبة أو استيراد جميع الرموز من androidx.compose.foundation.styles هو كل ما هو مطلوب لتجميع الرمز الذي يستدعي هذه الطرق بشكل صحيح. (I1ef27، b/493676648)
  • تعرض عمليات تنفيذ ScrollIndicatorState الآن بشكل صحيح إزاحة التمرير من بداية العنصر المرئي للّوحات المعكوسة، ما يضمن العرض المرئي الصحيح للمؤشرات. (Ia3fae، b/503604996)
  • تمت إضافة العلامة isClearNestedScrollCoroutineScopeFixEnabled للتحكّم في الإصلاح. (Ibd394، b/505343254)

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

  • تم تفعيل التمرير التلقائي عند سحب تحديد النص إلى ما بعد إطار العرض في SelectionContainer. (Ibcb08، b/424433794)

الإصدار ‎1.12.0-alpha02

‫6 مايو 2026

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

الإصدار ‎1.12.0-alpha01

‫22 أبريل 2026

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

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

  • تمت إضافة علامة جديدة isBasicTextFieldHeighInLinesOptimizationEnabled لتفعيل التحسين في احتساب ارتفاع حقل النص بعدد الأسطر الدنيا/القصوى. يجب أن يكون هذا الخيار مفعَّلاً تلقائيًا. إذا رصدت أي تراجع في تخطيط حقل النص وأدّى إيقاف هذا الخيار إلى حلّ المشكلة، يُرجى إبلاغ فريق Compose عن الخطأ للتحقيق فيه. (Idffae، b/486871837، b/487546327)
  • إصلاح مشكلة تحديد textfield أثناء تعديل النص باستخدام الإيماءات (I6fd98، b/490509264)
  • تمت إضافة إمكانية استخدام colorFilter في StyleScope في Compose Foundation. (I553a0)
  • تمت إضافة textMotion إلى القائمة StyleScope. (Id8523، b/482301609)
  • تضيف هذه السمة خيارات KeyboardType إضافية لإكمال مجموعة خيارات لوحة المفاتيح المتوافقة على Android، بما في ذلك التاريخ والوقت والتاريخ والوقت والعلامة العشرية الموقّعة وغير ذلك. (I3713e، b/202353328)
  • إزالة العلامة isNestedDraggablesTouchConflictFixEnabled (I79e52، b/485966180)
  • إزالة العلامة isDelayPressesUsingGestureConsumptionEnabled (I533dd، b/485966702)
  • إزالة العلامة isBringIntoViewRltBouncyBehaviorInPagerFixEnabled لأنّ الميزة أصبحت متاحة في إصدار ثابت (I73fb2، b/485967682)
  • إزالة العلامة isCacheWindowRefillFixEnabled لأنّ الميزة أصبحت متاحة في إصدار ثابت (Ic7505، b/485967875)
  • إزالة ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabled (I1f76c وb/485966320 وb/477836055)
  • تمت إضافة عمليات تحميل زائدة للدالتَين contentPadding وexternalPadding في StyleScope تقبل PaddingValues. (I3a6ce، b/493154098)
  • تم تغيير VelocityTracker لاستخدام التنفيذ الذي يوفّره إطار عمل Android (يمكن ضبطه باستخدام AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2، b/359962905)

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

  • تم تغيير طريقة تتبُّع الصور المتحركة والخصائص لتجنُّب تداخل الصور المتحركة للخاصية نفسها. (I4921f)
  • تم إصلاح الخطأ الذي يؤدي إلى تعطُّل قائمة السياق عندما يكون TextField(أو النص القابل للتحديد) في مربّع حوار. (I21461، b/441759435)
  • تم تعديل Compose compileSdk إلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب توفُّر الإصدار 9.2.0 أو إصدار أحدث من "مكوّن Android الإضافي" عند استخدام Compose. (Id45cd، b/413674743)
  • تم إصلاح مشكلة في "الشبكة" حيث كان تركيز لوحة المفاتيح والتنقّل في إمكانية الوصول يتبعان ترتيب تركيب العناصر بدلاً من ترتيب الموضع المرئي على شكل حرف Z. (I122a8، b/494096503)
  • تم إصلاح الخطأ الذي يؤدي إلى إخفاء شريط أدوات تحديد النص بشكل غير صحيح عندما تتراصف مقابض البداية والنهاية أفقيًا (مثل تحديد نص على عدة أسطر تنتهي بسطر فارغ). (I391d2، b/497724722)
  • تم إصلاح مشكلة في FlexBox حيث لا يتم تصغير العناصر بشكلٍ صحيح عند تجاوز حدود الحاوية. (Ia741d، b/480797591)
  • إصلاح الخطأ الذي يؤدي إلى عدم إبطال foregroundColor بشكل صحيح (I74abe، b/493245886)
  • إصلاحات في الحواف القديمة في حال فصل أداة معالجة الحواف في Compose وإعادة ربطها (I1e905، b/491346046، b/486084139)
  • عندما ينقل المستخدم المؤشر خارج المساحة القابلة للتمرير، يتم الآن تمرير المؤشر إلى المساحة المرئية. (If694c، b/266094055)

الإصدار 1.11

الإصدار 1.11.3

‫17 يونيو 2026

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

الإصدار 1.11.2

‫19 مايو 2026

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

الإصدار 1.11.1

‫6 مايو 2026

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

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

  • تم إصلاح مشكلة في FlexBox حيث لا يتم تصغير العناصر بشكلٍ صحيح عند تجاوز حدود الحاوية. (Ia741d، b/480797591)

الإصدار 1.11.0

‫22 أبريل 2026

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

الإصدار ‎1.11.0-rc01

‫8 أبريل 2026

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

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

  • إصلاح مشكلة تحديد textfield أثناء تعديل النص باستخدام الإيماءات (I2ba33، b/490509264)

الإصدار ‎1.11.0-beta02

‫25 مارس 2026

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

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

  • تمت إضافة العلامة isReverseLayoutNestedScrollConnectionInPagerFixEnabled للتحكّم في طرح هذا الإصلاح. (I07404، b/399800244)
  • إضافة isSkipItemPlacementAnimationFixEnabled للتحكّم في طرح هذه الميزة (Id665d، b/455884472، b/352584409، b/410487464، b/372509998)
  • تمت إضافة MinMax(min: Dp, max: Fr) إلى القائمة GridTrackSize. يسمح ذلك للمطوّرين بتحديد الحدود الدنيا لمسار مرن بشكلٍ صريح. يؤدي استخدام MinMax(0.dp, 1.fr) إلى تجاوز طلبات البحث عن القياسات الجوهرية بنجاح، ما يجعل من الآمن وضع مكوّنات SubcomposeLayout، مثل LazyColumn وLazyRow، داخل مسارات الشبكة المرنة بدون حدوث أعطال. (Ieb8c2، b/483822148)

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

  • تم إصلاح خطأ في FlexBox حيث تم تصغير العناصر بشكل غير صحيح عند الوصول إلى الحد الأدنى لأحجامها الجوهرية. تشارك العناصر الآن بشكل صحيح المساحة المتقلّصة غير المستخدَمة مع العناصر المشابهة. بالإضافة إلى ذلك، لن يتم بعد الآن حصر العناصر بشكل مصطنع على المحور الرئيسي في FlexBox، وإذا تعذّر تصغير العناصر بما يكفي لتناسب الحاوية، سيتم الآن تجاوز المحور الرئيسي بصريًا. استخدِم Modifier.clipToBounds() إذا كنت تريد قصّ الصورة. (Ief751، b/480797591)
  • منع keep around من الوصول إلى الفهارس غير القانونية (I19121، b/485626636)
  • تم إصلاح مشكلة في Grid حيث تم حذف الفجوات بين الصفوف أو الأعمدة التي تم إنشاؤها ضمنيًا من عملية احتساب الحجم الإجمالي للحاوية، ما أدّى إلى اقتصاص المحتوى. (Ib9df8، b/480372415)
  • يطلب Clipboard وClipboardManager الآن خدمة تابعة لنظام التشغيل عند طلب الإجراء الأول (If0016، b/487947860)
  • تم إصلاح مشكلة في Row مع Arrangement.spacedBy في اللغة من اليمين إلى اليسار، حيث يؤدي تجاوز عدد العناصر إلى تخطيط وتباعد غير صحيحَين. (I44e53، b/476006478)

الإصدار ‎1.11.0-beta01

‫11 مارس 2026

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

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

  • تم تحسين حسابات الحدّ الأدنى للحجم الداخلي في BasicTextField. تتحكّم ComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabled في هذه الإعدادات، ويمكنك إيقافها إذا أردت ذلك. (I70ade)
  • تمت إضافة rememberUpdatedStyleState التي تشكّل جزءًا من واجهة Style API التجريبية. يجب استخدام rememberUpdated عند إنشاء مثيلات من StyleState عند نسخ مَعلمات المكوّن القابل للإنشاء (مثل enabled) إلى حالة النمط (Idf7ff، b/485510967).
  • تعيد تسمية السمتَين PointerInputChange وHistoricalChange لاسترداد قيم التكبير/التصغير والتحريك. (I989a8، b/481333653)
  • تضيف هذه السمة المزيد من الوظائف إلى واجهات برمجة التطبيقات الخاصة باختبار لوحة اللمس، وذلك لمحاكاة المنحنيات والمدخلات المختلفة لإيماءة لوحة اللمس. (I290fb، b/473603145، b/479213358)
  • تقسيم PointerEventType.Pan الجديد إلى PointerEventType.PanStart وPointerEventType.PanMove وPointerEventType.PanEnd وبالمثل، تم تقسيم PointerEventType.Scale إلى PointerEventType.ScaleStart وPointerEventType.ScaleChange وPointerEventType.ScaleEnd. يتيح هذا التقسيم تمرير معلومات إضافية حول بداية ونهاية إيماءات التحريك والتكبير/التصغير التي تفسّرها المنصة، ما يسمح بعد ذلك لمعالِجات إدخال المؤشر في Compose باستخدام هذه المعلومات لرصد الأحداث بشكلٍ مناسب، ومعرفة متى يتم التحريك أو التكبير/التصغير على وجه الخصوص. (I4daf6، b/479285849، b/481333653)
  • تمت إضافة constraints إلى GridConfigurationScope للسماح بتحديد مسارات الشبكة استنادًا إلى الحجم المتاح. (I80a41، b/481205205، b/481205205)
  • تستخدم لغة DSL الخاصة بـ FlexBox الآن دوالاً (مثل grow(1f)) بدلاً من الخصائص (مثل grow = 1f) للإعدادات ضمن FlexBoxConfig وModifier.flex. (I8dbae، b/475491619)

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

  • تم إصلاح الخطأ الذي كان يتسبب في إدراج أحرف مكرّرة عند الضغط على OutputTransformation في بعض برامج تحرير أسلوب الإدخال. (I9fdc0)
  • إضافة إمكانية تمرير الإصبع ثم رفعه بسرعة إلى إيماءات التنقّل على لوحة اللمس (I55f8a، b/479285849)
  • إضافة مقاييس أداء لواجهة برمجة التطبيقات التجريبية Style API (I67437)

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

  • أضِف السمة InputTextSuggestionState للمساعدة في تحديد الحالات المختلفة التي يمكن أن يكون فيها إدخال الكتابة الصوتية عند توفّر اقتراحات استبدال النص. تضيف هذه السمة أيضًا TextCompositionRange لتتبُّع نطاق إنشاء النص الحالي المحوّل صوتيًا، وتشير القيمة الفارغة إلى عدم توفّر أي إنشاء. (I7a67f، b/476472318)
  • تمت إضافة تحميل زائد جديد إلى BasicTooltipBox يتيح ضبط propagateMinConstraints، على غرار مَعلمة Box التي تحمل الاسم نفسه. يسمح ذلك بتمرير الحد الأدنى من القيود مباشرةً إلى العناصر الفرعية من BasicTooltipBox، بدون أن يتم تخفيفها بواسطة BasicTooltipBox. شكرًا "ستيفن شون"! (Ib145f، b/467532639، b/301605744)

الإصدار ‎1.11.0-alpha06

‫25 فبراير 2026

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

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

  • تضيف واجهة برمجة تطبيقات تجريبية للأنماط تتيح طريقة موحّدة لتفعيل تخصيص الدوال القابلة للإنشاء. هذه الواجهة قيد التطوير النشط وقد تخضع لتغييرات كبيرة قبل أن تصبح مستقرة. راجِع المستندات المضمّنة لمعرفة تفاصيل حول كيفية استخدام واجهة برمجة التطبيقات هذه. (I7fed2، b/455788242)

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

  • تمت إعادة كتابة Modifier.combinedClickable لعدم استخدام إدخال مؤشر التعليق كتحسين. يتم تفعيل هذه الميزة باستخدام العلامة التي يمكنك إيقافها في حال مواجهة خطأ في التنفيذ الجديد - ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled.(Iea684)

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

  • يؤدي إعادة كتابة Modifier.combinedClickable إلى حدوث تراجع في سلوك النقر مع الاستمرار، ما قد يؤدي إلى تكرار عمليات النقر مع الاستمرار على بعض الأجهزة. سيتم حلّ هذه المشكلة في الإصدار التالي، ويمكنك إلى حين ذلك ضبط ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled=false لتجنُّبها.

الإصدار ‎1.11.0-alpha05

‫11 فبراير 2026

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

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

  • تمت إضافة isNestedDraggablesTouchConflictFixEnabled لحلّ تعارضات العناصر القابلة للسحب المتداخلة. سنفضّل عمليات السحب العمودية على عمليات السحب الأفقية لأنّ تجربة المستخدم تتيح حرية أكبر وعدم يقين أكبر عندما ينفّذ المستخدم إيماءة عمودية مقارنةً بالإيماءة الأفقية. (I273c7 وb/252334353 وb/269627294 وb/363198504 وb/442390269 وb/419580124)
  • تضيف هذه السمة إمكانية استخدام إيماءات لوحة اللمس والتحويل من أحداث إدخال لوحة اللمس إلى الماوس. وبموجب هذا التغيير، سيتم بشكل عام تسجيل أحداث مؤشر لوحة اللمس التي تتحكّم في المؤشر كما هو الحال على الأجهزة اللوحية أو أجهزة الكمبيوتر المحمولة على أنّها مؤشرات فأرة. سيتم أيضًا تسجيل إيماءات التحريك والتكبير/التصغير مع توفير معلومات إضافية في تغييرات حدث المؤشر، مع ظهور PointerEventType.Pan وPointerEventType.Scale جديدَين يشيران إلى أنّه سيتم ضبط هذه القيم (Id071a وb/315527861 وb/459831570).
  • عرِّف عن isDelayPressesUsingGestureConsumptionEnabled. عند تفعيل هذه العلامة، سيتم تأخير الضغط على الحاويات التي تتضمّن إيماءة السحب. ويشمل ذلك تغييرًا في سلوك الحاويات المستندة إلى Modifier.draggable والتي لم تؤخّر الضغط سابقًا. (I53f24، b/203141462)
  • تمت إزالة العلامة isDetectTapGesturesImmediateCoroutineDispatchEnabled وإيقاف العلامة DetectTapGesturesEnableNewDispatchingBehavior نهائيًا (I9bba3)

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

  • تم إصلاح IndexOutOfBoundsException في BasicTextField عند استخدام ``OutputTransformation وحذف النص. (I20ee1)
  • تم تغيير سلوك GridTrackSize.Auto. يمكن الآن تغيير حجم المقاطع الصوتية من min-content إلى max-content. (Ifa22e، b/477748472)

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

  • إتاحة استخدام مفاتيح الحركة NumPad (I1ff12)

الإصدار ‎1.11.0-alpha04

‫28 يناير 2026

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

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

  • تم إصلاح الخطأ الذي كان يؤدي إلى عدم صحة AnchoredDraggableStatetargetValue في بعض السيناريوهات التي تتضمّن نقاط ارتساء متعددة في الإزاحة نفسها. عندما يتم ضبطها على موضع ثابت يتضمّن الإزاحة نفسها لموضع ثابت آخر، كانت الدالة targetValue تعرض بشكل غير صحيح آخر المواضع الثابتة في هذه الإزاحة. تعرض الآن currentValue عند الاستقرار عند إزاحة currentValue. (I66a7a، b/476365336)
  • تم تقديم FlexBox، وهو نظام تخطيط قابل للإعداد يشكّل مجموعة فرعية من Row وColumn وFlowRow وFlowColumn. يتيح هذا الوضع ميزات مثل flex-grow وflex-shrink والتفاف مخصّص وتغيير الاتجاه والتحكّم التفصيلي في المحاذاة من خلال FlexBoxConfig وModifier.flex. (I44780)
  • تم تقديم Grid، وهو عنصر جديد قابل للإنشاء وغير كسول لتنسيق ثنائي الأبعاد مستوحى من CSS Grid. يتيح هذا الإصدار الأوّلي تحديد بنى شبكية صريحة بأحجام مختلفة للمسارات، بما في ذلك Fixed وPercentage وFlex وخيارات مستندة إلى المحتوى من خلال الحظر config. تتيح منطق التنسيق الأساسي وضع العناصر بشكل صريح داخل الشبكة باستخدام Modifier.gridItem(). جميع واجهات برمجة التطبيقات ذات الصلة بـ Grid تجريبية حاليًا وتتطلّب الموافقة باستخدام @OptIn(ExperimentalGridApi::class). نحن نسعى جاهدين إلى جمع الملاحظات حول هذا التصميم الجديد. (I04907، b/462550392)

الإصدار ‎1.11.0-alpha03

‫14 يناير 2026

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

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

  • إصلاح تسريب الذاكرة في LazyStaggeredGrid عند استخدامه داخل LookaheadScope I286ad

الإصدار ‎1.11.0-alpha02

‫17 ديسمبر 2025

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

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

  • أصبحت واجهات برمجة التطبيقات MultiModalInjectionScope ثابتة الآن. ويشمل ذلك performKeyInput وperformRotaryScrollInput وواجهات برمجة التطبيقات الأساسية الخاصة بهما. تمت إزالة التعليق التوضيحي التجريبي. (Ie8bbc، b/261561237)
  • تمت إزالة العلامة isNonSuspendingPointerInputInClickableEnabled. (I6a168، b/455591971)

الإصدار ‎1.11.0-alpha01

‫3 ديسمبر 2025

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

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

  • تمت إضافة Modifier.scrollIndicator للسماح بإضافة مؤشرات تمرير مخصّصة إلى الحاويات القابلة للتمرير. تتيح واجهة ScrollIndicatorFactory إنشاء مؤشرات التمرير من خلال تحديد مظهرها وسلوكها. (I89322)
  • تمت إزالة جهة الاتصال "ComposeFoundationFlags.isTextFieldDpadNavigationEnabled". تم الآن تفعيل السلوك الجديد في جميع الأوقات. (I3f034)
  • نقدّم isCacheWindowRefillFixEnabled للتحكّم في طرح إصلاح إعادة تعبئة نافذة ذاكرة التخزين المؤقت. (I4e52b، b/454439658)
  • تمت إزالة جهة الاتصال "ComposeFoundationFlags.isKeepInViewFocusObservationChangeEnabled". تم الآن تفعيل السلوك الجديد في جميع الأوقات. (I7cbd4)
  • تم إيقاف Modifier.onFirstVisible() نهائيًا لأنّ سلوكه مضلّل ولا يلتزم دائمًا بالعقد الذي يدّعي الاسم أنّه يتبعه. على سبيل المثال، عند إضافته إلى عنصر من LazyColumn، سيتم استدعاء دالة ردّ الاتصال هذه في كل مرة يصبح فيها هذا العنصر مرئيًا بعد التمرير. وهذا ليس ما قد يتوقّعه مستخدمو المعدِّل بهذا الاسم. ننصحك باستخدام Modifier.onVisibilityChanged() بدلاً من ذلك وتتبُّع ما إذا كان التنسيق مرئيًا من قبل يدويًا استنادًا إلى متطلبات حالة الاستخدام المحدّدة. (Ia7095، b/447601783)
  • تم تقديم MeasuredSizeAwareModifierNode، وهو مطلوب عند الحاجة إلى معاودة الاتصال onRemeasured(). يُرجى استخدام هذه الواجهة مباشرةً بدلاً من استخدام LayoutAwareModifierNode الأكثر عمومية عندما لا تحتاج إلى عمليات ردّ الاتصال الأخرى. (If6fb0)
  • تضيف هذه السمة visible Modifier الذي يمكن استخدامه لتخطّي رسم محتوى Composable بدون التأثير في المساحة التي يشغلها. (Ia6871، b/158837937)

الإصدار 1.10

الإصدار 1.10.6

‫25 مارس 2026

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

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

  • يتم إيقاف ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled تلقائيًا لمعالجة المشاكل المتعلّقة بالثبات. (I73960، b/482223006، b/488433633)

الإصدار 1.10.5

‫11 مارس 2026

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

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

  • تم إصلاح IndexOutOfBoundsException في BasicTextField عند استخدام OutputTransformation وحذف النص. (I20ee1)

الإصدار 1.10.4

‫25 فبراير 2026

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

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

  • تم إصلاح خطأ تراجع حيث يؤدي استخدام معدِّل محاذاة من نطاق مختلف (على سبيل المثال، ColumnScope.align داخل Row) إلى تحديد موضع غير صحيح. (6888f2b، b/477639546)

الإصدار 1.10.3

‫11 فبراير 2026

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

الإصدار 1.10.2

‫28 يناير 2026

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

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

  • تم إصلاح عُطل يحدث عند الرجوع من شاشة تم فيها تحديد نص. (I9f540، b/444482508)

الإصدار 1.10.1

‫14 يناير 2026

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

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

  • إصلاح عُطل يحدث عندما يمتد تحديد النص من مثيل Text إلى آخر محاذي أفقيًا I351311، b/439758956

الإصدار 1.10.0

‫3 ديسمبر 2025

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

الإصدار ‎1.10.0-rc01

‫19 نوفمبر 2025

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

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

  • تم إيقاف ميزة الإبلاغ في "isCacheWindowForPagerEnabled". (Iffdec، b/458193632)

الإصدار ‎1.10.0-beta02

‫5 نوفمبر 2025

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

الإصدار ‎1.10.0-beta01

‫22 أكتوبر 2025

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

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

  • تعديل جميع واجهات برمجة التطبيقات التي تعمل باللمس غير المباشر لاستخدام اسم واجهات برمجة التطبيقات التي تعمل بمؤشر غير مباشر لتتوافق مع واجهات برمجة التطبيقات التي تعمل بإدخال المؤشر (I238ce، b/451607214)
  • تمت إضافة تعليق توضيحي إلى PagerState.currentPageOffsetFraction باستخدام @FrequentlyChangingValue. (Idfaab)

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

  • إصلاح سلوك النص المتحرك في اتجاهات التنسيق من اليمين إلى اليسار (Ib8be3)

الإصدار ‎1.10.0-alpha05

‫8 أكتوبر 2025

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

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

  • تتيح PaddingValues الآن إمكانية الجمع والطرح لتبسيط عمليات حسابات المساحة المتروكة الشائعة. (I327e1، b/244468479)

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

  • يكون خيار ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled مفعَّلاً تلقائيًا. إنّها عملية تحسين للأداء، ما يسمح لنا بتوزيع العمل الذي نحتاج إلى تنفيذه أثناء الجلب المسبق بشكل أفضل. على سبيل المثال، يمكننا تنفيذ عملية الإنشاء لأجزاء من العنصر التالي في LazyColumn خلال إطار واحد لواجهة المستخدم، ثم مواصلة إنشاء بقية العنصر في الأُطر التالية. (I4c7fe)

الإصدار ‎1.10.0-alpha04

‫24 سبتمبر 2025

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

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

  • تمت إضافة عملية تنفيذ ScrollIndicatorState إلى PagerState. (I113b7)
  • تمت إضافة عملية تنفيذ ScrollIndicatorState إلى LazyStaggeredGridState. (I1028e)
  • تمت إضافة عملية تنفيذ ScrollIndicatorState إلى LazyGridState. (I9e50c)
  • تمت إضافة عملية تنفيذ ScrollIndicatorState إلى LazyListState. (I5ee29)
  • تمت إضافة عملية تنفيذ ScrollIndicatorState إلى ScrollState. (I27f66)
  • إضافة السمة scrollIndicatorState في واجهة ScrollableState (Idca93)
  • تمت إزالة العلامة isWindowInsetsModifierLocalNodeImplementationEnabled (I15e8f، b/440964232)
  • عرض المعدِّل scrollableArea() الذي يمكن استخدامه لجعل المكوّن قابلاً للتمرير مع سلوكيات قص المحتوى ضمن حدوده والتعامل تلقائيًا مع اتجاه تمرير المحتوى استنادًا إلى "الاتجاه" و"من اليمين إلى اليسار" والعلامة reverseScrolling (I9471b، b/316559454)

الإصدار ‎1.10.0-alpha03

‫10 سبتمبر 2025

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

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

  • إزالة ComposeFoundationFlags.isNonComposedClickableEnabled (I0dfc0، b/406228525)
  • نقل دوال المصنع لإنشاء مثيلات FillableData إلى العنصر المرافق بدلاً من استدعاء FillableData(value)، استخدِم طرق المصنع الجديدة: FillableData.createFrom(value). (I2e200، b/441719650)
  • إضافة عقدة BeyondBoundsLayoutModifierNode Modifier جديدة لتنفيذ تخطيط خارج الحدود للبحث عن التركيز (I39be1، b/416133658)
  • تم وضع علامة ScrollState.value على أنّه موقع @FrequentlyChangingValue. (I4723d)
  • تمت إضافة LazyLayoutKeyIndexMap ورمز برمجي لعملية التنفيذ التلقائية. (I4fd0c، b/415038029)

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

  • يعرض العمود والصف الآن الحجم الفعلي للعنصر بشكلٍ صحيح إلى Modifier.align، ما يحلّ مشكلة تلقّي عملية التنفيذ المخصّصة Modifier.align للقيمة غير الصحيحة 0. (I8194f، b/439716351)

الإصدار ‎1.10.0-alpha02

‫27 أغسطس 2025

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

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

  • تمت إزالة العلامة isFlingContinuationAtBoundsEnabled. (I6b84f)
  • تمت إزالة العلامة isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled. (I62380)
  • تمت إزالة العلامة isOnScrollChangedCallbackEnabled. (I667dc)
  • تمت إزالة العلامة isAutomaticNestedPrefetchEnabled. (I4f416)
  • تمت إزالة العلامة DragGesturePickUpEnabled. (Ib8500)
  • إضافة واجهة برمجة التطبيقات ScrollIndicatorState لتمثيل حالة شريط التمرير (I5e229)

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

  • تم إصلاح الخطأ الذي كان يؤدي إلى عدم تفعيل confirmValueChange عند استخدام Modifier.anchoredDraggable. (Iff7cc)

الإصدار ‎1.10.0-alpha01

‫13 أغسطس 2025

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

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

  • تعديل استراتيجية الجلب المُسبَق في Pager لاستخدام "نافذة التخزين المؤقت" بدلاً من العنصر التلقائي الواحد في اتجاه التمرير أصبحت عملية الجلب المسبق الأوّلي مفعّلة تلقائيًا في Pager، وستستند عملية الجلب المسبق إلى حجم النافذة التي تساوي إطار عرض واحدًا، أي سنحاول ملء إطار عرض واحد بالكامل بالعناصر التي تم جلبها مسبقًا. وسيتم الاحتفاظ بالعناصر لفترة أطول أيضًا. (I4d45e، b/292136289)
  • تمت إضافة العلامة ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled للسماح بإيقاف تحسين أداء WindowInsets في حال تسبّب التنفيذ الجديد في تغيير سلوك. (I8e912)
  • تسمح السمة SnapFlingBehavior الآن بتجاوز مواصفات الصور المتحركة أثناء الانطباق. يسمح ذلك مثلاً باستخدام مواصفات نابض مرن كـ snapAnimationSpec لإنشاء صورة متحركة مرنة عند المحاذاة. سيستمر تجاهل القيم التي تتجاوز الحدّ عند تنفيذ عملية تقريب باستخدام مواصفات المحاذاة. (I373c2)
  • عند النقر بالماوس أو لوحة اللمس في ComposeView، سيتم الآن محو التركيز تلقائيًا إذا لم يحدث النقر ضمن حدود العقدة المركّز عليها. وينتج عن ذلك تجربة مستخدم "النقر لإزالة التركيز" التي تكون أكثر توقعًا من السلوك الحالي عند استخدام أجهزة إدخال المؤشر. يمكن إيقاف هذا السلوك باستخدام واجهة برمجة تطبيقات AbstractComposeView.isClearFocusOnPointerDownEnabled جديدة. (I6322b، b/282963174)
  • تتيح الآن ميزة "قابلة للتمرير" إمكانية التعامل بشكل أفضل مع أحداث تمرير عجلة الماوس الثنائية الأبعاد. تم إطلاق واجهة برمجة تطبيقات اختبار جديدة للمساعدة في اختبار حالات الاستخدام في MouseInjectionScope. لقد أضفنا أيضًا حمولة زائدة جديدة لطُرق التمرير في MouseInjectionScope وعلامة للتحكّم في السلوك الجديد تُسمّى isMouseWheel1DAxisLockingEnabled (I136df).
  • تم تعديل DragGestureNode لاستخدام إدخال المؤشر الأولي بدلاً من تعليق إدخال المؤشر لتحسين الأداء. تتم إضافة التغييرات خلف العلامة isNonSuspendingPointerInputInDraggableEnabled (I0fa4b)
  • تمت إضافة التعليق التوضيحي @FrequentlyChangingValue إلى بعض واجهات برمجة التطبيقات AnchoredDraggable. تتغيّر القيم offset وrequireOffset وprogress بشكل متكرّر ويجب عدم قراءتها في التركيب. يُرجى الوصول إلى هذه القيم من مراحل التنسيق والرسم أو التأثيرات أو غير ذلك خارج التركيب بدلاً من ذلك. (I05539)
  • تمت إزالة العلامات isOnScrollChangedCallbackEnabled وisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled وisFlingContinuationAtBoundsEnabled وisAutomaticNestedPrefetchEnabled وDragGesturePickUpEnabled وisPointerInteropFilterDispatchingFixEnabled وisNestedScrollInteropPostFlingFixEnabled وisNestedScrollDispatcherNodeFixEnabled (I36c18)
  • تم تقديم CompositionLocal التي يمكن استخدامها لتعديل فرشاة تمييز الملء الناجح في ميزة "الملء التلقائي". (I52329)
  • تمت إضافة مستطيل تركيز قابل للتخصيص إلى FocusProperties. يمكنك الآن تحديد منطقة تركيز مخصّصة بدلاً من استخدام المربّع المحيط التلقائي للعنصر القابل للتركيز. يتم استخدام هذه المعلومات من قِبل نظام التنقّل باستخدام التركيز ومنطق إبقاء العناصر في إطار العرض للحاويات القابلة للتمرير. (Id6555، b/368378073)
  • تمت إضافة LineHeightStyle.Mode جديد باسم Tight. يساعد هذا الوضع في فرض ارتفاعات أسطر أصغر حتى عندما يكون من المحتمل أن تقطع الرموز الرسومية الأطول. (Id3849)
  • تم تقديم واجهة Interpolatable جديدة تتيح الاستيفاء التلقائي بين الأنواع المختلفة، على افتراض أنّ أحد الأنواع يعرف كيفية التحويل من النوع الآخر. يتم الاستفادة من هذه الواجهة في العديد من أنواع الإنشاء، مثل "الفرشاة" و"الشكل"، ولكن يمكن استخدامها خارجيًا أيضًا. (I58eab)
  • تضيف هذه السمة أحداث إدخال غير مباشرة وطريقة لتحديد محور الإحداثيات الذي سيتم استخدامه للتمرير. (I58e7c)
  • إضافة واجهة برمجة التطبيقات WindowInsets.cutoutPath الجديدة للحصول على مسار صورة مقطوعة للشاشة (Ib90b1، b/279636456)
  • تمت إزالة العلامة isWindowInsetsDefaultPassThroughEnabled، وتم ضبط WindowInsets تلقائيًا على عدم الاستهلاك حتى تتمكّن طرق العرض الثانوية من تلقّي WindowInsets تلقائيًا. (I888e0، b/412469666)

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

  • يجب إيقاف isNonSuspendingPointerInputInDraggableEnabled مؤقتًا. (Ia41c4)
  • تغيير الحد الأدنى التلقائي لإصدار Android من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
  • تم تعديل مستندات DraggableAnchors' minPosition/maxPosition للإشارة إلى أنّ هذه الواجهات يجب أن تعرض Float.NaN بما يتوافق مع واجهات DraggableAnchors الأخرى. (I0460a)
  • تم إصلاح الخطأ الذي كان يتسبّب في تعطُّل DraggableAnchors#closestAnchor إذا كانت نقاط الارتكاز فارغة (I4e646)
  • تحسينات على أداء DraggableAnchors (If4065، I0460a)
  • لم يعُد TextFieldState.edit { } يمحو سجلّ التراجع. بدلاً من ذلك، يتم إنشاء إدخال مستقل للتراجع عن التغيير. إذا كان السلوك المطلوب هو محو قائمة التراجع بعد تنفيذ طلب edit، يُرجى استخدام TextFieldState.undoState.clearHistory(). (I12c14)
  • تمت إضافة إمكانية النقر مرّتين لتحديد كلمة في SelectionContainer وBasicTextField(value, onValueChange). (Ibb06a)
  • إصلاح خطأ بسيط لجعل AutoboxingStateValuePropertyDetector متوافقًا مع كل من K1 وK2 (Ie81c1)
  • يتم الآن نقل طلبات requestRectangleOnScreen التي يتم إجراؤها بواسطة AndroidViews بشكلٍ صحيح إلى Compose. يساعد ذلك في إبقاء طرق العرض مثل EditText على الشاشة عند التفاعل معها. (Ibbf4c)
  • يعرض العمود والصف الآن الحجم الفعلي للعنصر بشكلٍ صحيح في Alignment.Vertical.align وAlignment.Horizontal.align، ما يحلّ مشكلة تلقّي عمليات التنفيذ المخصّصة للمحاذاة القيمة غير الصحيحة 0. (I3e460، b/349722072)

الإصدار 1.9

الإصدار 1.9.5

‫19 نوفمبر 2025

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

الإصدار 1.9.4

‫22 أكتوبر 2025

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

الإصدار 1.9.3

‫8 أكتوبر 2025

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

الإصدار 1.9.2

‫24 سبتمبر 2025

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

الإصدار 1.9.1

‫10 سبتمبر 2025

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

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

  • إصلاح مشكلة التعطُّل التي تحدث عند استخدام LazyLayoutCacheWindow في LazyLists (c39f5f3)

الإصدار 1.9.0

‫13 أغسطس 2025

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

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

  • تتطلّب عمليات فحص Lint التي يتم شحنها مع Compose الآن الإصدار 8.2.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي لبرنامج Gradle"، يمكنك بدلاً من ذلك ترقية Lint بمفرده باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
  • تغيير غير متوافق مع الإصدارات السابقة: لا تتوافق عمليات التحميل الزائد clickable وcombinedClickable وselectable وtoggleable وtriStateToggleable بدون مَعلمة Indication الآن إلا مع مثيلات IndicationNodeFactory التي يتم توفيرها باستخدام LocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات هذه المعدِّلات باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر تنفيذًا متوقفًا نهائيًا لميزة "الإشارة" إلى LocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عُطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، والسماح لوظائف Composable التي تستخدم أدوات التعديل هذه بتخطّي عملية إعادة الإنشاء. يمكنك استخدام ComposeFoundationFlags.isNonComposedClickableEnabled=false لإيقاف هذا التغيير في السلوك مؤقتًا، وذلك لتفعيل ترقية Compose بدون أن يتم حظرك أثناء عملية النقل هذه. ستتم إزالة هذه العلامة بعد إصدار واحد ثابت. لحلّ هذه المشكلة، عليك نقل أي عمليات تنفيذ قديمة لـ Indication لاستخدام IndicationNodeFactory بدلاً منها. يمكنك أيضًا استخدام عمليات التحميل الزائد مع مَعلمة Indication صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات غير IndicationNodeFactory من Indication، على الرغم من أنّ هذا الإجراء لا يُنصح به لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333)
  • تمت إضافة isFlingCancellationWithNestedScrollFixEnabled لحلّ مشكلة في نشر حركة التمرير السريع في التمرير المتداخل. في هذا التغيير، نعيد سلوك مواصلة البث الذي تمت إزالته في I9326a. سيظل بإمكاننا إلغاء حركة التحريك السريع في حال تمت إزالة العنصر الفرعي من التركيب. (I467f4، b/405910180، b/419049142، b/416784125)
  • إعادة إضافة استخدام scrollAnimationSpec في ContentInViewNode تمت إزالة السلوك أثناء عملية scrollAnimationSpec الإيقاف النهائي، ما أدّى إلى تعطُّل حالات الاستخدام. (I1436a، b/403301605)
  • تمت موازنة الفيديو LazyLayout. (If5db4LazyLayoutPrefetchState وطريقة الجدولة schedulePrecomposition وschedulePrecompositionAndPremeasure. (I4362f، b/252853717) وLazyLayoutItemProvider (Icce09،b/261565751)
  • السماح لـ Compose بتشغيل ViewTreeObserver.OnScrollChanged يتم تقديم هذا السلوك ضمن العلامة isOnScrollChangedCallbackEnabled. قدّمنا أيضًا دالة موسّعة للسمة DelegatableNode dispatchOnScrollChanged. (I34b9d، b/238109286)
  • إضافة واجهات برمجة التطبيقات Modifier.scrollable2D وScrollable2DState وواجهات برمجة التطبيقات المصاحبة لإنشاء الحالة تم أيضًا تقديم دوال شائعة خاصة بإضافة التمرير. (Ic61c8، b/214410040)
  • تم إيقاف PrefetchScheduler والتخصيص نهائيًا لصالح التنفيذ الداخلي الذي ينفّذ كل العمل تلقائيًا. (I3a9a6، b/420551535)
  • لم يعُد TextFieldState.edit { } يمحو سجلّ التراجع. بدلاً من ذلك، يتم إنشاء إدخال مستقل للتراجع عن التغيير. إذا كان السلوك المطلوب هو محو قائمة التراجع بعد إجراء تعديل، يُرجى استخدام TextFieldState.undoState.clearHistory(). (I12c14)
  • تتيح الآن كلّ من "قائمة السياقات" و"شريط أدوات التحديد" استخدام "العناصر الذكية" (التحديد الذكي)
  • تمت إضافة نص منمّق OutputTransformation للسماح بتنسيق ناتج TextField باستخدام التحميل الزائد state.
  • TextField: تتيح قائمة السياق (قائمة النقر بزر الماوس الأيمن).
  • عند نسخ نص من عناصر Text قابلة للإنشاء متعددة في SelectionContainer، سيتم الآن إضافة فاصل أسطر \n بين النصوص الواردة من عناصر Text القابلة للإنشاء المنفصلة. (I25332، b/285036739)
  • إتاحة واجهة برمجة تطبيقات لإنشاء قوائم نقطية مخصّصة من خلال AnnotatedString (I1d066، b/383269496، b/139326648)
  • سيؤدي التحميل الزائد state لـ BasicTextField إلى إبقاء المؤشر في إطار العرض عند تغيير حجمه. (I0eb41، b/406187741)
  • تغيير غير متوافق: تنفّذ الآن عقدتا المعدِّل background وborder الواجهة SemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافة SemanticsNodes جديد إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تفترض بنية شجرة الدلالات. على سبيل المثال، قد تفشل الاختبارات التي تستخدم onChild وonParent وonSibling وطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لإصلاح حالات الفشل هذه هي إضافة testTag إلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثل onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

الإصدار ‎1.9.0-rc01

‫30 يوليو 2025

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

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

  • لم يعُد TextFieldState.edit { } يمحو سجلّ التراجع. بدلاً من ذلك، يتم إنشاء إدخال مستقل للتراجع عن التغيير. إذا كان السلوك المطلوب هو محو قائمة التراجع بعد تنفيذ طلب edit، يُرجى استخدام TextFieldState.undoState.clearHistory(). (I12c14)

الإصدار ‎1.9.0-beta03

‫16 يوليو 2025

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

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

  • تم إصلاح خطأ في إصدار سابق يؤدي إلى تعطيل سلوك العناوين الثابتة في الشبكات الكسولة عند توفير محتوى عنوان فارغ. (e3e3400)

الإصدار ‎1.9.0-beta02

‫2 يوليو 2022

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

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

  • تتيح هذه السياسة استخدام العناصر الذكية في قائمة السياقات وشريط أدوات التحديد.

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

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

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

  • تم إصلاح المشكلة المتمثلة في عدم ثبات العناوين الثابتة في حال توفّر عنصر مثبّت. (I9198d، b/385006133)
  • تتّبع TextObfuscationMode.RevealLastTyped الآن إعدادات النظام "TEXT_SHOW_PASSWORD". (I41c0c)
  • تم إصلاح الخطأ الذي يؤدي إلى عرض التحذير "تم لصق المحتوى من الحافظة" بشكل خاطئ عند فتح شريط أدوات النص للمرة الأولى.BasicTextField (I5fda2)

الإصدار ‎1.9.0-beta01

‫18 يونيو 2025

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

التغييرات التي قد تؤدي إلى أعطال

  • تنفّذ عقدتا المعدِّل background وborder الآن SemanticsModifierNode. يمكن أن يؤدي ذلك إلى إضافة SemanticsNodes جديد إلى شجرة الدلالات، وبالتالي يؤدي إلى حدوث أخطاء في الاختبارات التي تفترض بنية شجرة الدلالات. على سبيل المثال، قد تفشل الاختبارات التي تستخدم onChild وonParent وonSibling وطرقًا أخرى مشابهة لتقديم تأكيدات إذا تمت إضافة عقدة جديدة بين العقدة الحالية والعقدة المستهدَفة. الطريقة المفضّلة لإصلاح حالات الفشل هذه هي إضافة testTag إلى العقدة المستهدَفة مباشرةً. هناك طريقة أخرى وهي استخدام أداة مطابقة أكثر مرونة، مثل onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

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

  • تمّت إعادة تسمية Modifier.addTextContextMenuComponents إلى appendTextContextMenuComponents. (I4c43f)
  • تمت إزالة AnnotatedOutputTransformation ونقل وظائف addStyle إلى TextFieldBuffer. سيظل بإمكانك الاتصال بـ "addStyle" من خلال OutputTransformation فقط. (I9930a، b/417991824)
  • تمت إعادة كتابة Clickable لعدم استخدام إدخال مؤشر التعليق كتحسين. يتم تفعيل هذه الميزة باستخدام علامة، ويمكنك إيقافها إذا واجهت خطأً في التنفيذ الجديد: ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65)
  • تمت إضافة isFlingCancellationWithNestedScrollFixEnabled لحلّ مشكلة في نشر حركة التمرير السريع في التمرير المتداخل. في هذا التغيير، نعيد سلوك استئناف العرض الذي تمت إزالته في aosp/3260391. سيظل بإمكاننا إلغاء حركة التحريك السريع في حال تمت إزالة العنصر الفرعي من التركيب. (I467f4، b/405910180، b/419049142، b/416784125)
  • WindowInsetsRulers: تم تغيير rulersIgnoringVisibility إلى الحد الأقصى. تم تغيير getDisplayCutoutBounds() لتصبح دالة إضافية من PlacementScope. تم تغيير WindowInsetsAnimationProperties إلى WindowInsetsAnimation، وتم تغيير getAnimationProperties() إلى getAnimation(). (I3816f)
  • تم تغيير InsetsRulers ليكون في الرمز المشترك مع الاسم WindowInsetsRulers. تم تبسيط واجهة برمجة التطبيقات بحيث تكون جميع عمليات الإدراج WindowInsetsRulers. تم استخراج خصائص الصورة المتحركة غير المسطرة إلى فئة AnimationProperties. يمكن استخدام WindowInsetsRulers.innermostOf() لدمج عدة WindowInsetsRulers. (I2f0c6، b/415012444)

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

  • إعادة إضافة استخدام scrollAnimationSpec في ContentInViewNode تمت إزالة السلوك أثناء عملية scrollAnimationSpec الإيقاف النهائي، ما أدّى إلى تعطُّل حالات الاستخدام. (I1436a، b/403301605)

الإصدار ‎1.9.0-alpha04

‫4 يونيو 2025

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

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

  • تم إيقاف PrefetchScheduler والتخصيص نهائيًا لصالح التنفيذ الداخلي الذي ينفّذ كل العمل تلقائيًا. (I3a9a6، b/420551535)
  • تم تعديل Scrollable2DState لاستخدام إزاحة في طريقة canScroll بدلاً من زاوية. (I28694، b/417268474)
  • تم استبدال addAnnotation في AnnotatedOutputTransformation بـ addStyle. (I91c6f، b/417991824)
  • تمت موازنة الفيديو LazyLayout. (If5db4)
  • تمت إضافة دالة إنشاء فارغة لـ LazyLayoutPrefetchState وطريقة الجدولة schedulePrecomposition وschedulePrecompositionAndPremeasure. (I4362f، b/252853717)
  • تم تقديم ProcessTextKey على Android لاستخدامه مع عناصر قائمة السياق التي تتم إضافتها لإجراءات الأهداف PROCESS_TEXT. (If0ac4)
  • إتاحة واجهات برمجة التطبيقات لقائمة السياقات للجميع تم عرض Modifier.addTextContextMenuComponents وModifier.filterTextContextMenuComponents لإضافة عناصر وإزالتها في قائمة السياق. وأتحنا أيضًا واجهات برمجة التطبيقات الأساسية التالية للجميع حتى يتمكّن المستخدم من إنشاء قائمة سياقية مخصّصة:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • تثبيت LazyLayoutItemProvider (Icce09، b/261565751)
  • تم تقديم ميزات "الاختيار الذكي" في Android التي يمكن تفعيلها أو إيقافها من خلال ComposeFoundationFlags.isSmartSelectionEnabled. كما عرضت السمة compositionLocal LocalTextClassifierCoroutineContext الثابتة التي يمكن استخدامها لتحديد CoroutineContext الذي يتم فيه تشغيل مهمة TextClassification. (I1dbaa، b/139321320)

الإصدار ‎1.9.0-alpha03

‫20 مايو 2025

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

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

  • تمت إضافة AnnotatedOutputTransformation التي توفّر طريقة لإضافة تعليقات توضيحية إلى TextField قبل العرض. (Ibc6f0، b/389978748)
  • إطلاق LazyLayoutMeasurePolicy وجعل LazyLayoutMeasureScope مستقرًا (I8c5df، b/252853717)
  • تعرض BasicSecureTextField الآن ScrollState الخاص بـ BasicTextField الداخلي. (I6e576)
  • تم تقديم المعدّلين Modifier.onFirstVisible وModifier.onVisibilityChanged، وهما معدّلان عالي المستوى يستندان إلى Modifier.onLayoutRectChanged. تم تصميم هذه المعدِّلات خصيصًا للتعامل مع العديد من متطلبات التطبيقات الشائعة، مثل تسجيل مرّات الظهور وتشغيل الفيديوهات تلقائيًا وما إلى ذلك. وقد تم تصميمها مع مراعاة الأداء، حتى يمكن استخدامها في السيناريوهات المهمة المستندة إلى القوائم بدون خطر التأثير في أداء التمرير. بالإضافة إلى واجهات برمجة التطبيقات الخاصة بأدوات التعديل هذه، تمت إضافة واجهات برمجة تطبيقات أخرى إلى RelativeLayoutBounds من أجل توفير حالات الاستخدام هذه، بالإضافة إلى تسهيل إنشاء أدوات تعديل مخصّصة مشابهة تناسب حالة الاستخدام المحدّدة للمطوّرين. (I759b8)
  • تم تقديم عملية تحميل زائد detectDragGestures تتضمّن عناصر تحكّم في ميل اللمس وقفل الاتجاه. (Iadb0d)
  • إضافة واجهات برمجة التطبيقات Modifier.scrollable2D وScrollable2DState وواجهات برمجة التطبيقات المصاحبة لإنشاء الحالة تم أيضًا تقديم دوال شائعة خاصة بإضافة التمرير. (Ic61c8، b/214410040)
  • لا يمكن مقارنة قيم الألوان ذات 64 بت في Compose مباشرةً مع ColorLongs في Android لأنّ أرقام تعريف مساحة الألوان غير مرتّبة لبعض مساحات الألوان. لتحويل مساحات الألوان في Android، تمت إضافة واجهتَي برمجة تطبيقات جديدتَين: toColorLong() وfromColorLong(). (I36899)

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

  • عند نسخ نص من عناصر Text قابلة للإنشاء متعددة في SelectionContainer، سيتم الآن إضافة فاصل أسطر \n بين النصوص الواردة من عناصر Text القابلة للإنشاء المنفصلة. (I25332، b/285036739)

الإصدار ‎1.9.0-alpha02

‫7 مايو 2025

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

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

  • تم إصلاح طريقة إضافة تغييرات إدخال المؤشر إلى VelocityTracker في DragGestureNode، ويمكن التحكّم في ذلك باستخدام العلامة الجديدة isOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992 وb/292556787 وb/236451818)
  • جعل await[Vertical/Horizontal]PointerSlopOrCancellation عامًا (I6968b، b/298903681)
  • القيمة التلقائية لـ AbstractComposeView.consumeWindowInsets هي الآن "خطأ". سيتم تعديل قيمة WindowInsets تلقائيًا لتناسب حجم الطفل وموضعه عند ضبط القيمة على "خطأ"، لذا لم يعُد من الضروري ضبطها تلقائيًا على "صحيح". يحلّ هذا الإجراء المشكلة المتمثّلة في عدم تلقّي عناصر العرض التابعة تحديثات WindowInsets تلقائيًا. يمكن للمطوّرين إيقاف التحديث إما عن طريق تغيير قيمة ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled التجريبية إلى true أو، والأفضل، عن طريق ضبط قيمة AbstractComposeView.consumeWindowInsets على true في جميع مثيلات عرض Compose. (I6fa0a، b/411868840)

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

  • تم إصلاح مشكلة تعطُّل Pager عند استخدام قيم كبيرة جدًا في beyondViewportPageCount (Idb2db)

الإصدار ‎1.9.0-alpha01

‫23 أبريل 2025

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

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

  • تتطلّب عمليات فحص Lint التي يتم شحنها مع Compose الآن الإصدار 8.2.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي لبرنامج Gradle"، يمكنك بدلاً من ذلك ترقية Lint بمفرده باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.

  • تغيير غير متوافق مع الإصدارات السابقة: لا تتوافق عمليات التحميل الزائد clickable وcombinedClickable وselectable وtoggleable وtriStateToggleable بدون مَعلمة Indication الآن إلا مع مثيلات IndicationNodeFactory التي يتم توفيرها باستخدام LocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات هذه المعدِّلات باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر تنفيذًا متوقفًا نهائيًا لميزة "الإشارة" إلى LocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عُطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، والسماح لوظائف Composable التي تستخدم أدوات التعديل هذه بتخطّي عملية إعادة الإنشاء. يمكنك استخدام ComposeFoundationFlags.isNonComposedClickableEnabled=false لإيقاف هذا التغيير في السلوك مؤقتًا، وذلك لتفعيل ترقية Compose بدون أن يتم حظرك أثناء عملية النقل هذه. ستتم إزالة هذه العلامة بعد إصدار واحد ثابت. لحلّ هذه المشكلة، عليك نقل أي عمليات تنفيذ قديمة لـ Indication لاستخدام IndicationNodeFactory بدلاً منها. يمكنك أيضًا استخدام عمليات التحميل الزائد مع مَعلمة Indication صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات غير IndicationNodeFactory من Indication، على الرغم من أنّ هذا الإجراء لا يُنصح به لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333)

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

  • إتاحة واجهة برمجة تطبيقات لإنشاء قوائم نقطية مخصّصة من خلال AnnotatedString (I1d066، b/383269496، b/139326648)
  • السماح لـ Compose بتشغيل ViewTreeObserver.OnScrollChanged يتم تقديم هذا السلوك ضمن العلامة isOnScrollChangedCallbackEnabled. قدّمنا أيضًا دالة موسّعة للسمة DelegatableNode dispatchOnScrollChanged. (I34b9d، b/238109286)
  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5).
  • تمت إضافة إمكانية إجراء فحص lint للرمز TextFieldState للتأكّد من تذكّره داخل التركيب. يمكنك استخدام rememberTextFieldState بدلاً من ذلك. (I53d74)
  • تمت إضافة إمكانية التحقّق من أخطاء Lint في FocusRequester للتأكّد من تذكُّرها داخل التركيب (I6bf91)
  • تمت إضافة إمكانية إجراء فحص lint للرمز BringIntoViewRequester للتأكّد من تذكّره داخل التركيب. (Ibfba6)
  • تم تقديم نطاقات لطلبات schedulePrefetch في استراتيجيات الشبكات والقوائم لتتوافق مع إمكانات LazyListPrefetchState في توفير معلومات الحجم والفهرس. (Iad80c)
  • تغيير غير متوافق مع الإصدارات السابقة: لا تتوافق عمليات التحميل الزائد clickable وcombinedClickable وselectable وtoggleable وtriStateToggleable بدون مَعلمة Indication الآن إلا مع مثيلات IndicationNodeFactory التي يتم توفيرها باستخدام LocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات هذه المعدِّلات باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر تنفيذًا متوقفًا نهائيًا لميزة "الإشارة" إلى LocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عُطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، والسماح لوظائف Composable التي تستخدم أدوات التعديل هذه بتخطّي عملية إعادة الإنشاء. يمكنك استخدام ComposeFoundationFlags.isNonComposedClickableEnabled=false لإيقاف هذا التغيير في السلوك مؤقتًا، وذلك لتفعيل ترقية Compose بدون أن يتم حظرك أثناء عملية النقل هذه. ستتم إزالة هذه العلامة بعد إصدار واحد ثابت. لحلّ هذه المشكلة، عليك نقل أي عمليات تنفيذ قديمة لـ Indication لاستخدام IndicationNodeFactory بدلاً منها. يمكنك أيضًا استخدام عمليات التحميل الزائد مع مَعلمة Indication صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات غير IndicationNodeFactory من Indication، على الرغم من أنّ هذا الإجراء لا يُنصح به لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333)
  • إضافة علامة للتحكّم في سلوك الجلب المسبق التلقائي المتداخل: isAutomaticNestedPrefetchEnabled (I8d448)
  • قدِّم حمولة زائدة لـ LazyGridState وrememberLazyGridState تأخذ LazyLayoutCacheWindow. (I51151)
  • تضيف هذه السمة مساطر لهوامش النافذة. تضيف DerivedRuler للسماح باحتساب أداة قياس المسافات من أداة قياس المسافات أخرى. تعديل PlacmentScope لتنفيذ "الكثافة" (I658bc، b/359260964)
  • تمت إضافة دالة مصنع WindowInsets() بدون وسيط لإنشاء WindowInsets فارغ بسهولة. (I65f62، b/395311689)
  • تمت إضافة PaddingValues.Zero إلى PaddingValues فارغ. (If193e، b/386255688)

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

  • سيؤدي التحميل الزائد state لـ BasicTextField إلى إبقاء المؤشر في إطار العرض عند تغيير حجمه. (I0eb41، b/406187741)
  • تم تعديل واجهات برمجة التطبيقات onVisibleItemsUpdated في LazyListPrefetchStrategy وLazyGridPrefetchStrategy للإبلاغ عن الحالة الأولية. (If2cfa)

الإصدار 1.8

الإصدار 1.8.3

‫18 يونيو 2025

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

الإصدار 1.8.2

‫20 مايو 2025

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

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

  • تم طرح إصلاح يمنع احتساب عدد العناصر التي سيتم تحميلها للبحث المركّز من التسبّب في القسمة على صفر. تم تطبيق عملية التحقّق على جميع التنسيقات التي تستخدم LazyLayoutBeyondBoundsState. (8e6dc8)

الإصدار 1.8.1

‫7 مايو 2025

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

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

  • تم إصلاح خطأ في BasicText وTextAutoSize كان يؤدي إلى ظهور نص أصغر من الحجم الأمثل عند استخدام TextOverflow.Ellipsize. (I1e1d8، b/396582066)
  • تم إصلاح خطأ في BasicTextField كان يؤدي إلى حدوث أعطال متفرقة عندما يتخطّى TextFieldDecorator استدعاء innerTextField. (I2638cb/308398612
  • تم إصلاح خطأ في TextField أدّى إلى اختفاء شريط أدوات النص ومقابض التحديد تمامًا عند تغيير مثيل TextFieldState. (I8068ab/390477786
  • تم إصلاح خطأ في BasicText حيث لم يؤدِّ تغيير الحد الأدنى لعرض القيود إلى تعديل موضع النص عندما تم ضبط textAlign على قيمة غير تلقائية. (I77a96b/406305552

الإصدار 1.8.0

‫23 أبريل 2025

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

الإصدار ‎1.8.0-rc03

‫9 أبريل 2025

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

الإصدار ‎1.8.0-rc02

‫26 مارس 2025

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

الإصدار ‎1.8.0-rc01

‫12 مارس 2025

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

الإصدار ‎1.8.0-beta03

‫26 فبراير 2025

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

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

  • تمت إضافة سمة دلالية جديدة InputText تسجّل قيمة حقل نصي قبل تطبيق عملية تحويل الإخراج. (Iae46a، b/395911609، b/176949051)
  • تمت إزالة عمليات التحميل الزائد AutoSize التي تم إيقافها نهائيًا. يُرجى استخدام واجهات برمجة التطبيقات TextAutoSize التي تؤدي الوظيفة نفسها. (I2c90f)
  • تم إصلاح مشكلة التخزين المؤقت في TextAutoSize حيث يمكن أن يؤدي تمرير تنسيق ثانٍ باستخدام القيود نفسها إلى استخدام حجم الخط الثاني الأنسب بدلاً من الأكبر. (Id367f)

الإصدار ‎1.8.0-beta02

‫12 فبراير 2025

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

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

  • تم إصلاح مشكلة عدم عمل عمليات تنفيذ تجاوز حد التمرير باستخدام LayoutModifierNode بشكلٍ صحيح داخل الحاويات القابلة للتمرير.

الإصدار ‎1.8.0-beta01

‫29 يناير 2025

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

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

  • تمّت إزالة SemanticsNodeInteraction.semanticsId(). يمكنك استخدام SemanticsNodeInteraction.fetchSemanticsNode().id كبديل. (Ie397a)
  • إعادة كتابة واجهة برمجة التطبيقات requestAutofill لتكون خارج مدير الملء التلقائي (Id1929)
  • تم وضع علامة "متوقّف نهائيًا" على ContextualFlowRow وContextualFlowColumn. تم طرح هذا المكوّن التجريبي في الإصدار 1.7 ولم يتم تثبيته بعد، وتم اعتبار عملية التنفيذ غير مرغوب فيها. في المستقبل، قد يتم توفير مكوّن يحلّ حالات الاستخدام التي كان من المفترض أن يحلّها هذا المكوّن.
    • يتضمّن كلّ من FlowRow وFlowColumn عمليات تحميل تجريبية تم طرحها في الإصدار 1.7 وتتضمّن المَعلمة overflow. تم إيقاف استخدام هذه المَعلمة نهائيًا، ويمكن استخدام عمليات التحميل الزائد بدون هذه المَعلمة بدلاً منها. سيكون السلوك التلقائي "للتجاوز" في هذه الحالات هو "القص"، كما كان منذ طرحه.
    • يمكن تحقيق العديد من حالات استخدام ContextualFlowRow باستخدام FlowRow، ولكنّنا ندرك أنّ هذا ليس صحيحًا بشكل عام. يمكن تنفيذ ContextualFlowRow بالكامل في مساحة المستخدم، ويمكن محاولة نسخ عملية التنفيذ وتعديلها إذا لزم الأمر. نأمل في المستقبل أن نتمكّن من حلّ حالات الاستخدام هذه بطريقة مختلفة. (Ibafec)

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

  • تم إصلاح مشكلة في تخطيط النص حيث يتم أحيانًا ترجمة علامة الحذف الإيجازي بشكل غير صحيح أثناء الرسوم المتحركة، يمكنك الاطّلاع على b/389707025 لمزيد من المعلومات (Ie55b1، b/389707025)
  • تم إصلاح خطأ في BasicText حيث تم ضبط TextAutoSize وmaxLines على 1. (Ic0450، b/376834366)
  • أصبح الحدّ الأدنى للارتفاع الجوهري للنص يأخذ المَعلمة minLines في الاعتبار. وهذا يعني أنّ الحدّ الأدنى للارتفاع الداخلي الذي يتمّ تسجيله لن يكون أقلّ من الارتفاع المطلوب لاستيفاء المَعلمة minLines (I225f9، b/388299762).

الإصدار ‎1.8.0-alpha08

‫15 يناير 2025

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

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

  • AutoSize: تمت إعادة تسمية AutoSize إلى TextAutoSize ونشر واجهات برمجة التطبيقات التي تتيح إنشاء عمليات تنفيذ مخصّصة لـ TextAutoSize. راجِع TextAutoSizeSample للاطّلاع على مثال على تنفيذ حجم تلقائي مخصّص للنص. (I85756)
  • تم نقل علامة الميزة DetectTapGesturesEnableNewDispatchingBehavior إلى ComposeFoundationFlags وإعادة تسميتها إلى isDetectTapGesturesImmediateCoroutineDispatchEnabled. تم إيقاف العلامة القديمة نهائيًا، وسيتم الآن تفويضها إلى ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled بدلاً من ذلك. (I62932)

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

  • يتم تفعيلها DetectTapGesturesEnableNewDispatchingBehavior تلقائيًا. تستخدِم واجهات برمجة التطبيقات TapGestureDetector الآن سلوك الإرسال الجديد (الإرسال الفوري) تلقائيًا. (I9f2bc، b/369648479)
  • تم إصلاح معدِّلات requiredWidth/Height/Size للتعامل مع الأحجام الأصلية بشكلٍ صحيح. (Ie3d7d، b/368113212)

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

  • تم توحيد BasicTooltip في Foundation وBasicTooltip/Tooltip في Material3. (Ifc2e6)
  • تمت إضافة واجهة Clipboard جديدة وعنصر CompositionLocal لها. (I80809)

الإصدار ‎1.8.0-alpha07

‫11 ديسمبر 2024

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

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

  • تمت إزالة العلامة ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled التي ساعدت في التراجع عن إزالة graphicsLayer الداخلية من BasicText. إذا كنت تستخدم هذه العلامة، يُرجى إعلامنا بالأسباب من خلال إرسال تقرير عن الخطأ. يمكنك أيضًا إدخال Modifier.graphicsLayer() في طلبات BasicText للحصول على السلوك نفسه كما كان من قبل. (Id9f90)
  • تمت إضافة عملية تنفيذ تلقائية للغة stickyHeader الجديدة الخاصة بالنطاق. (I68986)
  • يجب أن يستخدم LocalAutofillHighlightColor التركيب المحلي نوع Color. (I0e05b)
  • تمت إعادة تسمية OverscrollEffect#withoutDrawing إلى OverscrollEffect#withoutVisualEffect. (I1a154)

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

  • إصلاح إضافي لمشكلة في احتساب هدف AnchoredDraggable حيث يمكن أن يستقرّ عند نقطة ارتساء خاطئة لبعض التمريرات السريعة. (I23b87، b/367660226)

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

  • إضافة BringIntoViewResponderModifierNode إلى واجهة المستخدم، ما يوفّر طريقة جديدة لتنفيذ وظيفة "إظهار الإعلان"، بالإضافة إلى إمكانية تنفيذها على مستوى النظام الأساسي (Ia6dd8)
  • نحن نغيّر طريقة رسم المؤشر بشكل طفيف. يمكنك استخدام LocalCursorBlinkEnabled لإيقاف رسم المؤشر في الاختبارات. (I4c697)

الإصدار ‎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)
  • تتلقّى الفقرة و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.8

‫12 فبراير 2025

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

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

  • تم إصلاح عُطل في BasicTextField مع تحويل الإدخال عند استبدال جزء من النص الذي تم لصقه. (I73702)

الإصدار 1.7.7

‫29 يناير 2025

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

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

  • تم إصلاح عُطل IndexOutOfBound عند استخدام التعليقات التوضيحية للروابط. (Ic96d2)
  • تم إصلاح مشكلة إعادة الإنشاء اللانهائية في بعض الحالات الحدّية مع الروابط. (I04a03)

الأخطاء المعروفة

  • تم رصد خطأ يمكن أن يؤدي إلى التفاف النص بشكل غير متوقع في حالات نادرة على مستوى واجهة برمجة التطبيقات 35 في Android. لا يمكن حلّ هذه المشكلة في الإصدار 1.7، لذا سيتم حلّها في الإصدار 1.8. (b/391378120)

الإصدار 1.7.6

‫11 ديسمبر 2024

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

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

  • تم إصلاح مشكلة عدم إتاحة المحتوى المضمّن في النص الثابت لخدمات تسهيل الاستخدام.
  • تم إصلاح مشكلة عدم إعادة ضبط AndroidEmbeddedExternalSurface بشكلٍ صحيح وتعذُّر استخدامه عند إعادة الاستخدام في قائمة غير نشطة.

الإصدار 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 في جذر عناصر Lazy layout. كان هذا سببًا أساسيًا محتملاً لحدوث أعطال "تم استدعاء مقياس على عقدة غير نشطة". (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 تقبل القيم الخالية. إذا كانت القيمة فارغة، وكان Indication المقدَّم هو IndicationNodeFactory، يمكن إنشاء Indication بشكل مؤجّل فقط عند الحاجة، ما يحسّن الأداء. إذا كنت لا تستخدم السمة MutableInteractionSource، ننصحك بتمرير قيمة فارغة بدلاً من تمرير remember { MutableInteractionSource() }.
    • تم إيقاف Indication#rememberUpdatedInstance نهائيًا. ويؤدي ذلك إلى فرض عقوبة كبيرة لا يمكن تجنُّبها على الأداء، كما يمنع إجراء تحسينات أخرى. بدلاً من ذلك، عليك استخدام واجهة برمجة التطبيقات الجديدة IndicationNodeFactory.
  • أصبح استخدام BasicTextField TextFieldState ثابتًا الآن، وننصح جميع المواقع الإلكترونية التي تستخدم ميزة الاتصال بالبدء في نقل البيانات من BasicTextField(value, onValueChange) إلى BasicTextField(TextFieldState).
  • تم إيقاف ClickableText نهائيًا. لإضافة روابط قابلة للنقر إلى النص، استخدِموا BasicText مع التعليق التوضيحي الجديد LinkAnnotation في AnnotatedString. تسمح السمة LinkAnnotation بتطبيق أنماط مخصّصة استنادًا إلى حالة الرابط (مثل التركيز أو التمرير).
  • نقدّم لك ContextualFlowRow وEnhanced FlowRow/Column مع MaxLines وOverflow. يسرّنا الإعلان عن تحسينات على الرمزين التجريبيين FlowRow وFlowColumn، إذ أصبحا يتضمّنان الرمزين maxLines و"الفيضان"، بالإضافة إلى طرح الرمزين ContextualFlowRow وContextualFlowColumn. تم تصميم هذا التحديث لتوفير مكوّنات ذات أداء مثالي، حيث إنّ ContextualFlow* مثالية لعدد كبير من العناصر التي تستخدم إعداد maxLines صغيرًا وأزرارًا ديناميكية "عرض المزيد" +N، بينما FlowRow وFlowColumn مثاليتان لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي في FlowRow أو FlowColumn حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتناسب مع الحد الأقصى للمحور المتقاطع، اضبط قيمة تجاوز السعة على FlowRowOverflow.Visible أو FlowColumnOverflow.Visible أثناء عملية التهيئة. يمكنك استكشاف ContextualFlowRowSample وFlowRowSample للاطّلاع على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082)
  • تمت إضافة إمكانية استخدام صور متحركة لظهور العناصر واختفائها في LazyColumn وLazyRow. في السابق، كان من الممكن إضافة المعدِّل Modifier.animateItemPlacement() من أجل دعم الرسوم المتحركة الخاصة بموضع العنصر (إعادة ترتيب العناصر). أوقفنا نهائيًا استخدام معدِّل التعديل هذا وقدّمنا معدِّل تعديل جديدًا غير تجريبي باسم Modifier.animateItem() يتيح لك إتاحة جميع أنواع الرسوم المتحركة الثلاثة: الظهور (التلاشي)، والاختفاء (التلاشي)، وإعادة الترتيب. (I2d7f7، b/150812265)
  • تمت إضافة دعم تجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة تطبيقات Android الرسمية (ScrollCaptureCallback).
  • يتم استبدال مصدري السحب والإفلات (Drag and Fling) في NestedScroll بالمصدرين UserInput وSideEffect لاستيعاب التعريف الموسّع لهذين المصدرين الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput).
  • يمكن الآن وضع علامة "عاجل" على طلبات 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 مع بعض برامج IME.
  • إنشاء السرعة: منع انتشار قيم 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. ويشمل ذلك إمكانية جلب العناصر مسبقًا في LazyGrids المتداخلة. على غرار LazyListPrefetchStrategy، يكون الإعداد التلقائي للتنفيذ هو الجلب المُسبَق لأول عنصرَين متداخلَين من كل شبكة، ولكن يمكن ضبط ذلك باستخدام واجهتَي برمجة التطبيقات الجديدتَين LazyGridPrefetchStrategy(nestedPrefetchItemCount) وLazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • تمت إعادة تسمية SemanticsProperties.Editable إلى IsEditable وتغيير SemanticsPropertyReceiver.editable إلى القيمة 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 الآن تلقائيًا الفروق في السحب لمكوّنات ذات اتجاه أفقي عند استخدامها في تخطيط من اليمين إلى اليسار. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations أصبح الآن hasEqualAnnotations. (I685c0)
  • تم تعديل واجهة برمجة التطبيقات للحصول على روابط متوافقة مع تصميم Material في النص. على وجه التحديد، تمت إزالة الطرق من TextDefaults لإنشاء LinkAnnotations ذات سمات معيّنة وتحليل HTML باستخدام روابط ذات سمات معيّنة. بدلاً من ذلك، تمت إضافة فئة TextLinkStyles تتيح تصميم الروابط كمعلَمة في عنصر Text القابل للإنشاء. (I31b93)
  • تم استبدال onDragStarted وonDragStopped بعمليات ردّ الاتصال غير المعلقة. (I59de8)

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

  • تم إصلاح الخطأ الذي كان يؤدي إلى تعطُّل Pager عندما يكون حجم contentPadding أكبر من القيود الواردة. يفرض عنصر Pager الآن القيمة 0 على القيم السالبة التي يتم عرضها من PageSize. (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)

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

  • يمكن الآن وضع علامة "عاجل" على طلبات LazyLayout الجلب المسبق، ما يعني أنّنا نتوقّع الحاجة إلى هذا العنصر في الإطار التالي ونريد تجاهل ميزانية الإطار للتأكّد من إنجاز المزيد من العمل مسبقًا (Id513f).
  • تمت إعادة تسمية isPositionedByParentWithDirectManipulation إلى introducesFrameOfReference. يُرجى العِلم أنّ هذا الإعداد له الآن تأثير معاكس، ما يعني أنّه بشكلٍ تلقائي، تقدّم معظم LayoutCoordinates إطارًا مرجعيًا، ولن تكون القيمة خطأ إلا عند وضعها تحت التحكّم المباشر. للاستعلام عن الموضع مع العناصر التي تقدّم إطارًا مرجعيًا فقط، استخدِم positionInLocalFrameOfReference(...). أو positionInLocalLookaheadFrameOfReference من LookaheadScope (Ifc5f7)
  • تمت إعادة تسمية onClicked إلى onClick داخل LinkInteractionListener (Iaa35c)
  • تغيير دالة lambda الخاصة بالإجراء getScrollViewportLength وفقًا لملاحظات مجلس API. (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)
  • تمت إضافة إمكانية جلب العناصر مسبقًا في 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).
  • عند طلب البحث عن إحداثيات Layout، يمكنك الآن استخدام الوسيطة excludeDirectManipulationOffset لاستبعاد الإزاحة التي تم ضبطها بواسطة Layouts الأصلية التي وضعت العناصر التابعة لها باستخدام Placeable.PlacementScope.withDirectManipulationPlacement. وبالمثل، قد يضع الآن Layout العناصر التابعة له التي تغيّر موضعها بشكل متكرّر باستخدام 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 theming، استخدِم العنصر TextDefaults لإنشاء التعليق التوضيحي مع تطبيق Material theming عليه (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)
  • سيتم استبدال مصادر السحب والإفلات NestedScroll بمصدرَي UserInput وSideEffect لاستيعاب التعريف الموسّع لهذه المصادر الذي يتضمّن الآن الصور المتحركة (Side Effect) وعجلة الماوس ولوحة المفاتيح (UserInput). (I40579)
  • نقدّم لك LocalBringIntoViewSpec، وهو سلوك تمرير يعتمد على النظام الأساسي ويتم تطبيقه على مستوى أداة التعديل Scrollable. (I27aa5، b/317453911)
  • تمت إزالة جهة الاتصال "TextFieldCharSequence". تم استبدال TextFieldBuffer.originalValues بـ TextFieldBuffer.originalText وTextFieldBuffer.originalSelection. (I2c7d6)
  • لم يعُد الحقل ImeOptions.hintLocales يقبل القيمة الخالية. إذا أردت تمرير قائمة Locale فارغة، يُرجى استخدام LocaleList.Empty. (Ic5bc4)
  • تمت إعادة تسمية getOffsetFractionForPage إلى getOffsetDistanceInPages. (Ia05e2)

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

  • عندما يتم دمج InputTransformations مع next، يتم الآن دمج KeyboardOptions بشكل صحيح من خلال الخيارات الفردية باستخدام طريقة KeyboardOptions.merge الجديدة. (Ie5304، b/295951492)
  • لم يعُد AnchoredDraggableState في targetValue يأخذ في الاعتبار الحدود الدنيا للموضع. يبلغ الحدّ الأدنى الضمني الآن ‎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)
  • تمت إضافة دعم تجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة التطبيقات الرسمية لنظام التشغيل Android (ScrollCaptureCallback). هذه الميزة تجريبية وقد لا تتعامل حاليًا مع جميع الحالات بشكل صحيح. لهذا السبب، يتم إيقافها تلقائيًا في الوقت الحالي. للموافقة على هذه الميزة، اضبط العلامة ComposeFeatureFlag_LongScreenshotsEnabled على "صحيح". ستتم إزالة هذه العلامة قبل الإصدار التجريبي 1.7. (I2b055، b/329296471)
  • إضافة واجهة برمجة تطبيقات GraphicsLayer جديدة لتوفير المزيد من المرونة في موضع عرض مثيلات GraphicsLayer وعرضها، وإتاحة ميزات العرض المضمّنة بدون الحاجة إلى التنسيق مع عمليات التنفيذ القابلة للإنشاء لتحديد مثيلات معدِّل GraphicsLayer

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

  • تتضمّن جميع المَعلمات KeyboardOptions الآن قيمة غير محدّدة تلقائيًا. تمّت إضافة طريقة KeyboardOptions.merge.
  • تمت إعادة تسمية KeyboardOptions.autoCorrect إلى autoCorrectEnabled وتمّت إتاحة إمكانية أن تكون القيمة فارغة، حيث يشير ذلك إلى عدم تحديد أي قيمة. (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 الآن القيمة الخالية ليتمكّن من محو الحافظة. (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) وحالات استخدام أخرى منخفضة المستوى لطريقة الإدخال. تم إيقاف PlatformTextInputTestOverride نهائيًا. (I862ed، b/322680547)
  • تقسيم restrictedConstraints() إلى طريقتَين: fitPrioritizingWidth() وfitPrioritizingHeight() (I6d7fd)

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

  • تمت إضافة واجهتَي برمجة تطبيقات جديدتَين isLastScrollForward/isLastScrollBackward للتحقّق من اتجاه التمرير لآخر إجراء تمرير، وسيتم عرض القيمة "false" إذا لم يتم تنفيذ أي إجراء تمرير بعد. (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 حتى نتمكّن من إرسال معلومات حول المكوّنات التي يتم التمرير فيها في Compose إلى نظام تسهيل الاستخدام. ينطبق هذا التغيير أيضًا على استخدام السمة المذكورة في "القوائم القابلة للتمرير" في 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 composition local التي تتيح تغيير نمط الروابط في النص على مستوى التطبيق. إذا كنت تستخدم مظهرًا خاصًا بك في التطبيق، عليك ضبط هذه composition local وفقًا للمظهر الذي تستخدمه. عند استخدام مظهر Material، سيتم ضبط لون الرابط تلقائيًا على اللون الأساسي في Material. (I7eb10)
  • تم تقديم المعدِّل receiveContent الذي يوفّر للمطوّرين طريقة لتلقّي محتوى وافٍ في Jetpack Compose.
  • يتكامل تطبيق receiveContent مع BasicTextField2 لقبول المحتوى الوافي الذي توفّره لوحة المفاتيح الافتراضية أو من خلال إجراء اللصق من الحافظة. (I81b72)
  • في هذا التغيير، سنستبدل SnapFlingBehavior بـ TargetedFlingBehavior في أداة تقسيم المحتوى إلى صفحات من أجل إتاحة حالات استخدام أخرى وتوفير مرونة أكبر. (I762ea)
  • في هذا التغيير، سنعمل على إتاحة واجهات Snapping API كإصدار ثابت. نعمل أيضًا على إزالة بعض التعليمات البرمجية التجريبية وإضافة المزيد من العيّنات إلى ميزة "المحاذاة". (Id8da9)
  • نقدّم TargetedFlingBehavior، وهو FlingBehavior يتيح نشر معلومات عن حالة الصورة المتحركة الجارية وإزاحة التمرير المستهدَفة. (I6a207)

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

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

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

  • تضيف هذه الإضافة واجهة برمجة تطبيقات تجريبية لإعداد سلوك الجلب المُسبَق لعناصر LazyList. (I022a4)

الإصدار 1.7.0-alpha01

‫24 يناير 2024

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

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

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

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

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

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

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

الإصدار 1.6

الإصدار 1.6.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)
  • إصلاح موضع العناصر ذات الحجم 0 في بداية الشبكة المتداخلة (785f94)
  • استدعاء دالة onRelease في الترتيب نفسه الذي تم استدعاء دالة onForgotten فيه (31ce3b)

الإصدار 1.6.0

‫24 يناير 2024

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

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

  • أداة تعديل جديدة Modifier.anchoredDraggable تتيح إمكانية السحب والتحريك بين مجموعة محدّدة مسبقًا من نقاط الارتكاز. تم تصميم هذا المعدِّل ليكون بديلاً عن Modifier.swipeable. يمكنك التعرّف على كيفية استخدامه ونقل البيانات من Modifier.swipeable في دليل نقل البيانات.
  • تمت إضافة وظيفة السحب والإفلات بين التطبيقات والمكوّنات. يُرجى الرجوع إلى DragAndDropTarget وModifier.dragAndDropSource وواجهات برمجة التطبيقات الأخرى للبدء.
  • ‫‎Modifier.draggable2D هو المعدِّل الجديد الذي يتيح إمكانية السحب ثنائي الأبعاد بسهولة. مثال
  • تمت إضافة AndroidExternalSurface وAndroidEmbeddedExternalSurface لتسهيل إضافة المكوّنات المستندة إلى السطح في Compose
  • تغييرات وتحسينات متنوّعة على واجهة برمجة التطبيقات في 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 لقبولها من جلسة سحب وإفلات. تعرض هذه الدالة لامدا قيمة DragAndDropTarget صالحة إذا كنت مهتمًا بجلسة سحب وإفلات. تم استبدال الدوال اللامدا الأخرى لمعالجة أحداث السحب بهذه الدالة.

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

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

  • أصبحت واجهات برمجة التطبيقات الخاصة بتلميحات Foundation Tooltip الآن @ExperimentalFoundationApi (I30b0b)

  • تمت إزالة DragAndDropInfo كنوع، ويأخذ DragAndDropModifierNode.drag الآن مَعلمات للوظيفة transferData وحجم الزخرفة ووظيفة سحب الزخرفة DrawScope

    تحتوي 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)
  • حلّ مشكلة توافق الثنائي مع تغيير Window Inset (Iee695)
  • إزالة الطبقة الأساسية للمادة من أجل Material3 Chip/Button لأنّ اختبارات الأداء الدقيقة تُظهر أداءً أفضل بدونها. (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، كما تمت إعادة تسمية مَعلمة الحجم في DragAndDropInfo إلى dragDecorationSize. (Id0e30، b/303904810)
  • تم تغيير اسم المَعلمة decorationBox الخاصة بالحدث BasicTextField2 إلى decorator. يتم أيضًا تغيير نوعها إلى واجهة ممتعة مكافئة TextFieldDecorator. (I23c1c)

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

  • تحسين المستندات حول BasicTextField في ما يتعلّق بمتطلبات onValueChange (I90fc9، b/160257648)

الإصدار ‎1.6.0-alpha07

‫4 أكتوبر 2023

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

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

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

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

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

الإصدار ‎1.6.0-alpha06

‫20 سبتمبر 2023

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

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

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

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

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

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

  • تستخدم ميزة "الكتابة الذكية" الآن ضبطًا غير خطّي لحجم الخط لتحسين إمكانية القراءة وتسهيل الاستخدام. عندما يكون مقياس الخط > %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. يتضمّن Compose الآن إصدارًا خاصًا به من maximumFlingVelocity ينطبق الآن على Draggable. (Ibf974)
  • تمت إزالة عمليات التحميل الزائد المتوقّفة نهائيًا Pager وPagerState. (Iea07e)
  • تمت إضافة BasicTooltipBox إلى compose.foundation وتعديل PlainTooltipBox وRichTooltipBox لاستخدام TooltipBox مع عناصر PlainTooltip وRichTooltip الجديدة القابلة للإنشاء. (I79e1d)

الإصدار 1.6.0-alpha04

‫23 أغسطس 2023

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

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

  • إضافة واجهة ReusableComposition لإدارة مراحل نشاط التركيبات الفرعية وإعادة استخدامها (I812d1، b/252846775)
  • تمت ترقية Modifier.focusGroup إلى واجهات برمجة تطبيقات ثابتة. (I7ffa3)
  • أضِف عمليات تحميل زائدة للدالة BasicTextField2 تقبل قيمة غير قابلة للتغيير ودالة ردّ لتغيير هذه القيمة، تمامًا مثل واجهة برمجة التطبيقات الحالية BasicTextField. (I3f2b8)
  • أصبحت واجهة برمجة التطبيقات GridItemSpan::currentLineSpan واجهة ثابتة. (Icc29c)
  • أصبحت واجهة برمجة التطبيقات التي تقبل contentDescription ثابتة الآن. (Ib3d29)
  • تمّ تقديم viewportSize في ScrollState، وهي طريقة لمعرفة حجم viewPort للعنصر الذي يستخدم ScrollState بعد إجراء القياس. (I8b85a، b/283102682)
  • تم إصلاح مشكلة عدم تطابق عملية الجلب المسبق في Pager مع السلوك في "طُرق العرض". (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 الآن قيمة "بان دلتا" في المَعلمة 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. تم تغيير الحمل الزائد للعنصر القابل للتمرير لقبول نسخة من BringIntoViewCalculator بشكل اختياري. (Iaf5af)

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

  • تمت إضافة عملية فحص lint للتحذير في حال إنشاء MutableInteractionSource في التركيب بدون تذكّره، على غرار عمليات فحص lint لإنشاء حالة قابلة للتغيير أو 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، ما يقلّل من الحمل الزائد على التركيب الأولي.
  • تحسينات على ثبات Pagers تم إصلاح العديد من الأخطاء.
  • تتوفّر مَعلمات pageCount الآن في PagerState بدلاً من أداة "التنقل بين الصفحات" نفسها

الإصدار 1.5.0-rc01

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

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

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

  • يتوفّر فحص اختياري لاقتراح نقل طلبات mutableStateOf() إلى أنواعها المتخصّصة المقابلة للعناصر الأساسية. رقم تعريف أداة Lint هو AutoboxingStateCreation. في السابق، كان يتم تفعيل عملية الفحص هذه تلقائيًا لجميع المشاريع. لعرض هذا التحذير في محرّر &quot;استوديو Android&quot; ونتائج فحص lint في مشروعك، غيِّر مستوى خطورته من &quot;معلومات&quot; إلى &quot;تحذير&quot; (أو أعلى) من خلال تعريف 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 لـ Pager ودالة مساعدة لاحتساب إزاحة صفحة معيّنة. (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)

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

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

الإصدار ‎1.5.0-alpha03

‫19 أبريل 2023

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

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

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

ستتم إزالة علامة تصحيح الأخطاء قبل إصدار الإصدار التجريبي 1.5.01.(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)

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

  • سيعدّل الإجراء الدلالي BasicTextField في SetText الآن مخزن النص المؤقت باستخدام مسار الرمز البرمجي نفسه المستخدَم في تعديلات 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 لتوفير خوارزميات دمج مختلفة عند رسم نص على Canvas. (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)
  • المزيد من أنواع/قيم nullability للدوال المضمّنة/المخفية التي تم إيقافها نهائيًا (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. هنا تم الإبلاغ عن المشكلة في الأصل. تم إرسال إصلاح لهذه المشكلة، وسيتوفّر في تحديث Compose التالي. كحلّ بديل، يمكنك تحديث مكتبتَي androidx.compose.material وandroidx.compose.material3 إلى أحدث إصدار(1.1.0-alpha04) أو الرجوع إلى الإصدار 1.4.0-alpha03 من androidx.compose.foundation.

الإصدار ‎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 إلا بعد انتهاء جميع عمليات معاودة الاتصال بالإطار. يتطابق ذلك مع سلوك Compose عند تشغيله بشكل طبيعي. ومع ذلك، قد تفشل الاختبارات التي تعتمد على السلوك القديم. يجب أن يؤثر ذلك فقط في الرمز الذي يستدعي withFrameNanos أو withFrameMillis مباشرةً، ويتضمّن منطقًا خارج دالة رد الاتصال التي تم تمريرها إلى هاتين الدالتين، وقد يحتاج إلى نقله إلى داخل دوال رد الاتصال. يمكنك الاطّلاع على تغييرات اختبار الصور المتحركة في طلب التغيير هذا للحصول على أمثلة.
  • تمت إضافة المَعلمة الاختيارية onPerformTraversals: (Long) -> Unit إلى الدالة الإنشائية TestMonotonicFrameClock ودالة المصنع لتنفيذ الرمز بعد عمليات رد الاتصال withFrameNanos ولكن قبل استئناف إجراءات الروتين المشترك للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670)
  • إضافة إجراءات تسهيل استخدام الصفحة: PageUp وPageDown وPageLeft وPageRight يُرجى العِلم أنّ هذه الميزات لا تتوفّر إلا بدءًا من الإصدار 29 من واجهة برمجة التطبيقات. (Ida4ab)
  • نقدّم HorizontalPager وVerticalPager، وهما طريقتان لعرض العناصر القابلة للإنشاء بطريقة Pager. تمت إضافة PagerState للتحكّم في أدوات Pager بالإضافة إلى طلب معلومات عن الحالة الحالية لأداة Pager. تم تقديم PageSize، وهي طريقة للتحكّم في حجم صفحة Pager، ويمكن استخدامها لإنشاء لوحة عرض دوّارة مثل Pagers. تم تقديم 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* APIs (I12197)
  • تمّت إضافة مَعلمة في Lazy APIs لإنشاء عناصر خارج إطار العرض ووضعها (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)
  • تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة باسم Hyphens لتتيح إضافة الواصلات تلقائيًا في النص (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 لتتوافق مع دوال await الأخرى (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 في رمز إدارة طريقة الإدخال. (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 تم طرح واجهة برمجة التطبيقات كإصدار تجريبي. يمكنك تحديد تأثيرات تجاوز حد التمرير المخصّصة، بالإضافة إلى إضافة تأثير عادي خاص بالنظام الأساسي إلى الحاويات القابلة للتمرير المخصّصة.
  • تم تقديم واجهات برمجة التطبيقات الخاصة بإمكانية التشغيل التفاعلي للتمرير المتداخل للسماح بإمكانية التشغيل التفاعلي بين طرق العرض وعناصر التمرير في Compose.
  • تمت إضافة إمكانية التمرير باستخدام الماوس ولوحة اللمس إلى جميع الحاويات التي يمكن التمرير فيها.

الإصدار 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 باستخدام طرق الواجهة التلقائية في الإصدار 8 من حزمة تطوير البرامج (JDK) (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 مركّبة حسب الفهرس، لدينا الآن دالة مركّبة أبسط باسم Item تقبل الفهرس. (Id2196)
  • تمت إعادة تسمية LazyLayoutItemsProvider إلى LazyLayoutItemProvider (I0638c)
  • تمت إعادة تسمية "LazyLayoutItemsProvider.itemsCount" إلى "itemCount" (Id409c)
  • تمت إضافة "الفرشاة" إلى TextStyle وSpanStyle لتوفير طريقة لرسم نص بألوان متدرّجة. (I53869، b/187839528)
  • تم تغيير السمتَين trimFirstLineTop وtrimLastLineBottom الخاصتَين بـ LineHeightBehavior إلى تعداد واحد: LineHeightTrim. تحتوي LineHeightTrim على قيم 4 حالات محدّدة بقيمتَين منطقيتَين: FirstLineTop وLastLineBottom وBoth وNone (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)
  • تقبل الفقرة و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 لتضمين الفاصل العشري تحديدًا في محرر أسلوب الإدخال. (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. يسمح ذلك بتطبيق WindowInsets بشكل منفصل على كل ComposeViews في التسلسل الهرمي بدون أن يتداخل بعضها مع بعض. (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 إذا كان اتجاه التنسيق الحالي من اليمين إلى اليسار. (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)

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

  • تم تعديلها لاستخدام الإصدار 1.6.0 من أنماط "كوروتين" في Kotlinx (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 التي تتيح إعداد تقارير في وقت التجميع عن الحالات التي يتم فيها استدعاء دالة مركّبة تستهدف واجهة تطبيقية (applier) لم يتم تصميمها لاستخدامها.

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

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

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

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

الإصدار ‎1.2.0-alpha03

‫9 فبراير 2022

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

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

  • تم إيقاف الطريقتَين notifyFocusedRect في TextInputSession وTextInputService نهائيًا ولن يتم استدعاؤهما. استخدِم BringIntoViewRequester بدلاً من ذلك. (Ia4302، b/192043120، b/216842427، b/178211874)
  • تم تفعيل الرسوم المتحركة لعناصر الشبكات الكسولة باستخدام Modifier.animateItemPlacement(). (Ib6621، b/211753218)
  • تعمل BringIntoViewRequester الآن على نشر الطلبات إلى Android View المضيف. (Ia7a51)
  • يتوفّر FontFamilyResolver الآن من خلال LocalFontFamilyResolver.current
    • تمت إضافة createFontFamilyResolver(context) وcreateFontFamilyResolver(context, coroutineScope) لإنشاء أدوات تحليل جديدة لـ FontFamily خارج نطاق استخدام Compose.
    • تتلقّى الفقرة وMultiParagraph الآن FontFamily.Resolver
    • يحتوي TextLayoutResult.layoutInput.fontFamilyResolver الآن على برنامج التعيين المستخدَم في هذا التنسيق، وتم إيقاف TextLayoutResult.layoutInput.resourceLoader نهائيًا لأنّه لم يعُد مستخدَمًا. (Id5a45، b/174162090)
  • تمت إضافة AndroidFont، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة من واصفات موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خادم خلفي خاص بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز فقط بشكل اختياري، أو تحميل خط من مصدر غير متوفّر من خلال مصانع الخطوط الحالية.
    • تم توسيع نطاق واجهة برمجة التطبيقات Font.ResourceLoaded لتتيح تحميل الخطوط بشكل اختياري وغير متزامن. ولا يُنصح مطوّري التطبيقات باستخدام واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، راجِع AndroidFont.
    • تسمح دالة الإضافة Font.AndroidResourceLoader بإنشاء Font.ResourceLoader خارج التركيب.
    • تمت إضافة المَعلمة loadingStrategy إلى الخطوط المستندة إلى الموارد، وذلك للسماح بالتحميل غير المتزامن عندما تشير مراجع خطوط الموارد إلى ملف XML للخطوط القابلة للتنزيل. (Ie5aea، b/174162090)
  • تم إيقاف المنشئ Typeface(FontFamily) نهائيًا. كانت هذه السمة تُستخدم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك مدة تصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. باستخدام الخطوط القابلة للتنزيل، قد يتم حظر هذا الطلب لمدة 10 ثوانٍ. استخدِم FontFamilyResolver.preload
      بدلاً من ذلك
    • تم إيقاف fontResource(FontFamily): Typeface نهائيًا. كانت هذه السمة تُستخدَم سابقًا لتحميل الخطوط مسبقًا، وقد يستغرق ذلك مدة تصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. بدلاً من ذلك، استخدِم FontFamilyResolver.preload (If8e7c، b/174162090).
  • يمكنك الآن تحديد نوع المحتوى لعناصر دالتَي LazyVerticalGrid - 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" على أجهزة الكمبيوتر نهائيًا
    • مصنع createFontFamilyResolver الجديد على الكمبيوتر المكتبي (I6bbbb، b/174162090)
  • لم يعُد نوع إدخال لوحة المفاتيح الافتراضية يومض عند تغيير التركيز بين حقول النص. (I1bf50، b/187746439)
  • لم تعُد حقول النص تتطلّب ضغطة إضافية على زر الرجوع عندما يكون مقبض المؤشر ظاهرًا. (Ideb4b، b/205726883)
  • تم تحسين سلوك &quot;المكبِّر&quot; عند تحديد النص ليتطابق مع &quot;المكبِّر&quot; في النظام الأساسي. (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 إلى الطرق التي تم تحميلها بشكل زائد من الطرق الحالية بدون منطق معقّد. يؤدي ذلك إلى تقليل عمليات التحقّق من التخزين المؤقت التي ينشئها المترجم البرمجي (equals) لجميع المَعلمات التي تتكرّر في الدالة الداخلية التي يتم استدعاؤها. (I90490)
  • تمت إضافة معدِّلات excludeFromSystemGesture لتسهيل الوصول إلى setSystemGestureExclusionRects في Android (I46f07)

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

  • تم تحسين سلوك &quot;المكبِّر&quot; عند تحديد النص ليتطابق مع &quot;المكبِّر&quot; في النظام الأساسي. (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 بشكل ثابت
  • تحسينات على حجم مساحة اللمس
  • يُرجى العِلم أنّه في ما يتعلّق بالإصدار 1.0 من Compose، ستوسّع مكوّنات Material مساحة التنسيق لتلبية إرشادات تسهيل الاستخدام في Material بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حدّ أدنى يبلغ 48x48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر على قيمة أصغر. يتوافق ذلك مع سلوك "مكوّنات التصميم المتعدد الأبعاد"، ما يوفّر سلوكًا متسقًا في حال استخدام كلّ من 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 هذه التعديلات.

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

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

الإصدار ‎1.1.0-beta04

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

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

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

  • تم تعديلها لتكون متوافقة مع الإصدار 1.6.0 من Kotlin

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

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

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

  • تم إصلاح مشكلة عدم تحرّك مقابض النص عند تغيُّر حالة ظهور محرر أسلوب الإدخال. (I25f2e)

الإصدار ‎1.1.0-beta03

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

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

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

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

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

الإصدار 1.1.0-beta02

‫3 نوفمبر 2021

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

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

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

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

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

الإصدار 1.1.0-beta01

‫27 أكتوبر 2021

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

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

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

الإصدار ‎1.1.0-alpha06

‫13 أكتوبر 2021

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

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

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

الإصدار ‎1.1.0-alpha05

‫29 سبتمبر 2021

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

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

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

  • تم إصلاح مشكلة إمكانية الوصول إلى العناصر القابلة للتمرير (التي يتم تحميلها عند الحاجة وتلك التي لا يتم تحميلها عند الحاجة) فيما يتعلق بالتمرير (I6cdb0)

الإصدار ‎1.1.0-alpha04

‫15 سبتمبر 2021

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

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

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

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

  • تمت إضافة دعم لتجاوز حد التمرير الممتد على أجهزة Android 12. (Iccf3c، b/171682480)

الإصدار ‎1.1.0-alpha03

‫1 سبتمبر 2021

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

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

  • تم تعديل إصدار Compose 1.1.0-alpha03 ليعتمد على إصدار Kotlin 1.5.30. (I74545)

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

  • تمت إضافة تأثير التوهّج عند التمرير. تمت إضافة واجهة برمجة التطبيقات التجريبية الجديدة OverScrollConfiguration للسماح بإعداد التأثير المرئي لتجاوز حد التمرير. قدِّم قيمة فارغة لإيقاف تأثير تجاوز حد التمرير. (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 الآن التحديد عند الضغط على زر الرجوع، وهو ما يتوافق مع سلوك Android EditText. (I3ca16، b/174173645)
  • أضِف مقبض المؤشر. (I07a82، b/173016579)

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

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

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

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

الإصدار 1.0

الإصدار 1.0.5

‫3 نوفمبر 2021

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

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

  • تم إصلاح مشكلة تعطُّل تتبُّع مثيلات 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 هذه التعديلات.

تم تعديلها لتتوافق مع إصدار Compose 1.0.2. لا يزال الإصدار 1.0.2 من Compose متوافقًا مع الإصدار 1.5.21 من Kotlin.

الإصدار 1.0.1

‫4 أغسطس 2021

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

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

  • تم تعديلها لتعتمد على الإصدار 1.5.21 من Kotlin.

الإصدار 1.0.0

‫28 يوليو 2021

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

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

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

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

  • إذا كنت تستخدم الإصدار 4 من استوديو Android Bumblebee Canary أو الإصدار 7.1.0-alpha04/7.1.0-alpha05 من &quot;المكوّن الإضافي لنظام Gradle المتوافق مع Android&quot;، قد تواجه التعطّل التالي:

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

    لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف build.gradle. سيتم حلّ هذه المشكلة في الإصدار التالي من استوديو Android Bumblebee و7.1 من "مكوّن Android الإضافي لنظام Gradle". (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 الدلالية قيمًا فردية، بل أصبحت قوائم. يتيح ذلك دمجها كما هي بدلاً من تسلسلها. قدّمنا أيضًا واجهات برمجة تطبيقات أفضل للاختبار من أجل الاستفادة من هذه التغييرات (Ica6bf وb/184825850).
  • تم إيقاف Modifier.focusModifier() نهائيًا واستبداله بـ Modifier.focusTarget() (I6c860)
  • تم استبدال تعداد KeyboardType بفئة مضمّنة. (I73045، b/187055290)
  • تم استبدال تعداد FocusState بواجهة FocusState (Iccc1a، b/187055290)
  • تم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
  • أصبحت دوال AnnotatedString.withAnnotation تابعة لواجهة برمجة التطبيقات ExperimentalTextApi بدلاً من ExperimentalComposeApi. (I0cd0a)
    • أصبحت دالة إنشاء TextUnit التي تتضمّن TextUnitType تابعة الآن لواجهة برمجة التطبيقات ExperimentalTextApi بدلاً من ExperimentalComposeApi.
  • أصبحت قيمة PaddingValues الآن @Stable بدلاً من @Immutable (I88c50)

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

  • إصلاح الأعطال عند الضغط مع الاستمرار على المساحة الفارغة في نص غير فارغ (I33ab5، b/187437299)
  • عرض شريط الأدوات بعد SelectAll (I495d9، b/185919613)
  • إصلاح مشكلة اقتطاع الحاويات القابلة للتمرير لأجزاء من العناصر التابعة لها على المحور العرضي كان من السهل إعادة إنتاجه إذا كان لديك LazyRow مع عناصر Card. الآن لن يتم قص الظل. (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 تؤثر في الصف/العمود باستخدام ترتيبات spacedBy لتخطيط العناصر الفرعية الموزونة. (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)

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

  • لم يعُد الأطفال في الصفوف والأعمدة الذين يحملون القيمة 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 هذه التعديلات.

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

  • تم الآن وضع العلامة ‎ @Stable على واجهة FlingBehavior. يجب أن تتوافق جميع عمليات التنفيذ مع عقد @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 محلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053)
  • تمّت إضافة واجهة برمجة تطبيقات جديدة LocalSoftwareKeyboardController محلية للتركيب بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)

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

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

الإصدار 1.0.0-beta01

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

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

هذا هو الإصدار الأول من Compose 1.0.0 Beta.

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

  • تمت إضافة عملية الاستدعاء onStart إلى detectDragGestures (I67269، b/179995594)
  • لم تعُد المعدّلات الخاصة بتحديد الحجم حسب الخصائص التجريبية. (I15744)
  • إزالة تأكيدات dp (I798d2)
  • تمت إزالة معاودة الاتصال SoftwareKeyboardController من جميع حقول النص، وسيتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
  • تمت إعادة تسمية MeasureBlocks إلى MeasurePolicy، وأصبحت واجهة ممتعة. تم تعديل / تبسيط واجهات برمجة التطبيقات الخاصة بالتصميمات لاستخدام 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)
  • تعرض السمة Placeable الآن 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 تجريبيًا
    • تمت إزالة الدالة @TestOnly clearRoots ذات المستوى الأعلى. لم يعُد ذلك ضروريًا.
    • تمت إزالة الدالتَين 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 composition محلية لاستبدال واجهة 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 الآن مفاتيح remember للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين تحديد إدخال المؤشر المشترك لإنشاء تبعيات جديدة. (I849cd)
  • تعديل على الاختبار: ستتحقّق الدالة hasText() من نصوص الإدخال والتسمية/التلميح/العنصر النائب في حقل النص (Iab803)
  • تمت إضافة PaddingValues.Absolute ويمكن استخدامه في واجهات برمجة التطبيقات التي تقبل PaddingValues. (Ia5f30)
  • تم إيقاف onImeActionPerformed نهائيًا. استخدِم KeyboardActions بدلاً من ذلك (If0bbd، b/179071523)
  • من أجل مطابقة اصطلاحات التسمية بشكل أفضل مع ImageBitmap وImageVector، تم تغيير اسم ImagePainter إلى BitmapPainter ليكون موازيًا لـ VectorPainter. (Iba381، b/174565889)
  • واجهات برمجة تطبيقات أفضل لاختبار السلسلة الفرعية مع السلسلة الفرعية الآن كمعلَمة (Icbe78)
  • تم تقديم عنصر سياق روتيني مشترك InfiniteAnimationPolicy سيتم تطبيقه في الصور المتحركة التي لا تنتهي. لا يتم تثبيت أي سياسة تلقائيًا، إلا عند إجراء اختبارات باستخدام ComposeTestRule. (I50ec4، b/151940543)
  • أصبحت الدالتان Animatable.snapTo وAnimatable.stop دوال تعليق (If4288)
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الوحدة androidx.activity:activity-compose. (Icf416)
  • تمت إزالة طريقتَي تفكيك البنية وcopy() من عدة فئات كانتا تُستخدمان فيها نادرًا. (I26702، b/178659281)
  • تمت إضافة إمكانية استخدام مفاتيح مخصّصة في LazyColumn/LazyRow. ويتيح لنا ذلك التعامل بذكاء أكبر مع إعادة ترتيب العناصر. وبالتالي، ستنتقل الحالة التي خزّنتها في كتل 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 تقبل الآن تعبيرات lambda تعرض قيمًا من النوع Float بدلاً من قيم Float المباشرة. (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).

  • تمت إعادة تسمية Ambients لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كانت أسماء Ambients في السابق AmbientFoo، وأصبحت أسماء CompositionLocals الآن LocalFoo. (I2d55d)

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

  • على غرار الطريقة التي أزلنا بها الدالة المركّبة state { 0 } سابقًا ونشجّع الآن على استخدام دوال مثل remember { mutableStateOf(0) }، سنزيل الدالة المركّبة savedInstanceState { 0 }. يجب استخدام 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 من يسار/يمين إلى بداية/نهاية من أجل إتاحة ميزة الانعكاس التلقائي للشكل في اتجاه الكتابة من اليمين إلى اليسار. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape للحالات التي لا يُراد فيها إجراء انعكاس تلقائي. (I61040، b/152756983)

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

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

    هذا تغيير داخلي لا يؤثّر في توافق رمز المصدر، ولكنّه تغيير ثنائي غير متوافق. (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()". [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. يتم إيقاف إعادة التركيب مؤقتًا، كما يتم إيقاف مؤشرات الصورة المتحركة المستندة إلى 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 إلى Box لتحديد ما إذا كان يجب تمرير الحد الأدنى من القيود الواردة إلى محتوى Box أم لا. القيمة التلقائية هي "خطأ". (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)

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

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

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

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

  • سيتم استبدال المدة ووقت التشغيل بوحدة الملّي ثانية الطويلة، وستزيل هذه الخطوة التبعية الخاصة بإدخال المؤشر في تلك الفئات. (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
    • تمت إعادة تسمية OffsetMap إلى OffsetMapping
    • تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
    • لم يعُد PasswordTransformation فئة بيانات
    • نقل OffsetMapping إلى ملف خاص
    • (I0bdf3)
  • تغييرات على EditOperations API
    • تمت إعادة تسمية EditOperation إلى EditCommand
    • تمت إضافة لاحقة الأمر إلى عمليات التنفيذ المحدّدة لـ 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)
  • إضافة زر التبديل إلى ملف foundation Strings.kt (I4a5b7، b/172366489)
  • نقل nativeClass إلى وحدة ui وجعلها داخلية تم تعديل استخدامات nativeClass في عمليات تنفيذ equals لاستخدام &quot;is MyClass&quot; بدلاً من ذلك. (I4f734)
  • تم إيقاف FlowRow وFlowColumn نهائيًا. يُرجى استخدام تخطيط مخصّص بدلاً من ذلك. (I09027)
  • تم إيقاف Modifier.focus()‎ وModifier.focusRequester()‎ نهائيًا. استخدِم Modifier.focusModifier()‎ وModifier.focusReference()‎ بدلاً من ذلك. (I75a48، b/175160751، b/175160532، b/175077829)
  • تم تقديم SelectionRegistrar.notifySelectableChange لإرسال إشعارات بتعديلات Selectable إلى SelectionManager. (I6ff30، b/173215242)
  • تم تغيير fun Dp.isFinite() إلى val Dp.isFinite (I50e00)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • تمت إضافة isSpecified وisUnspecified وuseOrElse إلى الفئات المضمّنة التي تتضمّن الثابت Unspecified. (I93f7b، b/174310811)

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

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

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

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

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

  • أصبحت واجهة برمجة التطبيقات الخاصة بميزة "الملء التلقائي" تجريبية وتتطلّب الموافقة على استخدامها (I0a1ec)

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

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

  • تم تقديم العديد من الوظائف الجديدة في SelectionRegistrar، كما تمّت إعادة تسمية onPositionChange إلى notifyPositionChange. (Ifbaf7)

  • AndroidOwner made internal (Ibcad0, b/170296980)

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

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

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

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

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

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

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

  • تمت إضافة دالة المصنع buildAnnotatedString لإنشاء AnnotatedString. تم إيقاف الدالة الإنشائية annotatedString نهائيًا. (Idfe0b)

الإصدار ‎1.0.0-alpha08

‫2 ديسمبر 2020

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

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

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

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

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

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

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

  • تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا: تمت إزالة Border، ويجب استخدام BorderStroke بدلاً منها. تمت إزالة Modifier.drawBorder، لذا يُرجى استخدام Modifier.border بدلاً منها. تمت إزالة Modifier.gravity، استخدِم Modifier.align بدلاً من ذلك. تمت إزالة Stack، يُرجى استخدام Box بدلاً من ذلك (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)
  • تم جعل حقلَي وقت التشغيل والموضع في PointerInputData غير قابلَين للتصغير. (Id468a)
  • تضبط السمة MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات التي لا تستخدم Material أن تستخدم AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في التحديد. (I1e6f4، b/139320372، b/139320907)
  • تمت إعادة تسمية مَعلمة المحاذاة الخاصة بـ Box إلى 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
    • جعل TextFieldValue.composition للقراءة فقط
    • تم طرح استثناء تمت إزالته لنطاق التحديد غير الصالح (I4a675، b/172239032)
  • تم إيقاف Ambients القديمة التي تحمل اللاحقة Ambient، واستبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك وفقًا لإرشادات Ambients الأخرى وواجهة برمجة التطبيقات Compose. (I33440)
  • تمت إضافة أداة تضمين Android Typeface. يمكنك تحميل Android Typeface من خلال الدالة typeface، أي typeface(Typeface.DEFAULT). تمت أيضًا إعادة تسمية typefaceFromFontFamily() إلى typeface() (I52ab7)
  • تمت إضافة عملية فحص lint للتأكّد من أنّ مصانع Modifier تستخدم androidx.compose.ui.composed {} داخليًا، بدلاً من وضع علامة @Composable عليها. (I3c4bc)
  • تمت إضافة عملية فحص Lint للتأكّد من أنّ دوال إنشاء عناصر التعديل معرَّفة كإضافات على عنصر التعديل، حتى يمكن ربطها بسلاسة معًا. (I07981)
  • تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants إلى mergeDescendants. (Ib6250)
  • أصبح التحكّم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521)
  • إزالة وحدة ui-test القديمة ورموزها (I3a7cb)
  • تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified بما يتوافق مع الوحدات الأخرى. (Ifce19)
  • تم تعديل واجهة "المحاذاة" وإتاحتها للاستخدام. (I46a07، b/172311734)
  • تم دمج الوحدة foundation:foundation-text في foundation:foundation (Idac0f)
  • إيقاف الدالتَين place(Offset) وplaceRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع إزاحات الأعداد الصحيحة بدلاً من ذلك (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 إلى أداة التعديل aspectRatio، والتي يمكن استخدامها لتحديد أداة التعديل التي سيتم تغيير حجمها وفقًا لقيود الارتفاع قبل تجربة العناصر المطابقة للعرض. (Ie7c43، b/155290593)
  • تمت إزالة DpConstraints المتوقّفة نهائيًا. (I87884، b/171702471)

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

  • تم تقديم فئة ScaleFactor المضمّنة لتمثيل عوامل القياس للمحورين الأفقي والعمودي بشكل مستقل عن بعضهما البعض من أجل إتاحة حالات استخدام القياس غير المنتظم.
    • تمت إضافة طريقة computeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لتنفيذ تغيير حجم غير موحّد لتوسيع حدود src لتشغل الوجهة بالكامل.
    • تمت إضافة طرق عامل التشغيل لاحتساب مَعلمات ScaleFactor باستخدام مَعلمات Size.
    • (Ic96a6، b/172291582)
  • تم نقل captureToBitmap إلى captureToImage. (I86385)
  • وضع علامة ‎CoreText كـ ‎ @InternalTextApi استخدِم BasicText بدلاً من ذلك. (I6aaeb)
  • إعادة تسمية KeyboardOptions إلى ImeOptions (I82f36)
  • نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce)
  • تم وضع علامة ‎ @InternalTextApi على CoreTextField. استخدام BasicTextField بدلاً من ذلك (Ie2469)
  • تمت إزالة التعليق التوضيحي ExperimentalSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة ‎ @OptIn (I708ad)
  • إضافة وحدة ui-test-junit4 (Ib91f8)
  • تم تعديل Icon API لتلقّي Color.Unspecified كلون تلوين محتمل، ما سيؤدي إلى رسم العنصر أو أداة الرسم المقدَّمة بدون ColorFilter. في السابق، كانت محاولات تجاهل التلوين باستخدام 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)
  • إضافة اختبارات لمواضع SelectionHandles في SelectionContainer (Ie93db)
  • تمت إضافة خيار التصحيح التلقائي للوحة المفاتيح في محرر أسلوب الإدخال (IME) (I57b8d)

الإصدار ‎1.0.0-alpha06

‫28 أكتوبر 2020

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

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

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha04

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

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

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

  • تمت إعادة تسمية الحزمة إلى Box. سيتم إيقاف استخدام foundation.Box القديم نهائيًا واستخدام Box الجديد في compose.foundation.layout. سيكون سلوك المربّع الجديد هو ترتيب العناصر الفرعية فوق بعضها البعض عندما يحتوي على عناصر فرعية متعددة، وهذا يختلف عن المربّع السابق الذي كان يتصرف بشكل مشابه للعمود. (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 من "نص مع إدخال سلسلة". لن يتم استخدامها لأنّ inlineContent يجب أن تعمل مع AnnotatedString. (Ief403)
  • تمت إزالة واجهات برمجة التطبيقات القديمة المخصّصة لـ "الترتيب". (Ic576d، b/168297922، b/168297923)
  • تمت إضافة المَعلمة unbounded إلى أدوات تعديل wrapContentSize، ما يتيح قياس عنصر التصميم باستخدام قيود قصوى غير محدودة. (I77951، b/158559319)
  • منعنا عمليات الاستيراد الثابتة لمحتويات نطاقات التنسيق (مثل alignWithSiblings في RowScope). يجب استخدام النطاق البديل الواضح بدلاً من ذلك: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be، b/166760797)

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

  • تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة التطبيقات الخاصة بتحويل الحجم والتدوير لتستهلك مَعلمة إزاحة واحدة لتمثيل إحداثيات نقطة الارتكاز بدلاً من مَعلمات عائمة منفصلة لإحداثيات س/ص في DrawScope وDrawTransform
    • تمت إزالة الطريقتَين Rect.expandToInclude وRect.join
    • تم تعديل مستندات "النطاق الجغرافي" لتشير إلى الشكل البيضوي بالإضافة إلى الشكل الإهليلجي
    • تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء الدالة الإنشائية العامة لفئة Radius المضمّنة مباشرةً، بل يجب إنشاء عناصر Radius من خلال دوالها الإنشائية.
    • تمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن 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)
  • تحسينات الأداء في LazyColumnFor/LazyRowFor من خلال تجنُّب عمليات إعادة الإنشاء غير الضرورية أثناء كل عملية تمرير (I64f65 وb/168293643 وb/167972292 وb/165028371)
  • تم إصلاح عُطل في LazyColumnFor/LazyRowFor بعد التمرير ثم تغيير العناصر، وتم تنفيذ ميزة الانتقال التلقائي للأعلى عند إزالة العنصر المرئي سابقًا حتى لا نعرض فجوات فارغة في النهاية بعد الآن (I220ab وb/161480164 وb/167855468)
  • لم يعُد مسموحًا بتضمين حاويات قابلة للتمرير في الاتجاه نفسه، مثل ScrollableContainer وLazyColumnFor. لم يكن هذا السلوك متاحًا في السابق، وكان يؤدي إلى تعطيل ميزة "تمرير الإصبع ثم رفعه بسرعة" وجميع ميزات التحميل الكسول لعناصر LazyColumnFor (I6e101).
  • تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة التطبيقات DrawScope لتتضمّن طرق تحويل ذات نطاق محدّد للإشارة إلى أنّ عملية التحويل يتم تطبيقها فقط ضمن دالة الرجوع ويتم إزالتها بعد استدعاء دالة الرجوع
    • تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من المستطيل الدائري
    • تم إصلاح المسافة في المستندات الخاصة بالمعلَمة right في clipPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة مَعلمة الحجم
    • تمت إعادة تسمية المَعلمتَين dx/dy في طريقة inset إلى horizontal وvertical
    • تمت إضافة حمولة زائدة للداخل توفّر قيمة الداخل نفسها لجميع الحدود الأربعة
    • تمت إزالة المستندات المتعلقة بطريقة الإدراج التي تشير إلى أنّه سيتم تطبيق الإدراج على جميع الجوانب الأربعة
    • تعديل مستندات فئة Rect
    • تم تعديل التعليقات على مَعلمات Rect لتتوافق مع نمط kdoc
    • إزالة 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)
  • تمت إعادة تسمية استخدامات الجاذبية بشكلٍ متّسق لتصبح محاذاة أو محاذاة في واجهات برمجة تطبيقات التنسيق. (I2421a، b/164077038)
  • تمت إضافة مَعلمة محاذاة إلى Stack، ما يتيح تحديد المحاذاة التلقائية لجميع العناصر الفرعية في Stack. (Ie80ca، b/164085265)

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

  • تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
  • تمت إعادة تسمية المَعلمتَين minWidth وmaxWidth في widthIn إلى min وmax. وينطبق الأمر نفسه على preferredWidthIn وheightIn وpreferredHeightIn. (I0e5e1، b/167389544)
  • تمت إضافة onNode وطُرق عامة أخرى إلى ComposeTestRule لأنّ الطرق العامة الحالية سيتم إيقافها نهائيًا. (Ieae36)
  • تم إصلاح عمليات حساب الحجم والموضع الثابتَين في 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 هذه التعديلات.

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

  • تمت إضافة Arrangement spacedBy إلى Row وColumn، وذلك لتفعيل تحديد موضع عناصر التنسيق الفرعية بمسافة ثابتة. تمت إضافة Arrangement المتوافق أيضًا، وذلك لتفعيل وضع عناصر التنسيق بجانب بعضها البعض ومحاذاتها في الصف أو العمود وفقًا للمحاذاة. تم إيقاف الطريقتَين السابقتَين 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 الخاصة بـ mergePolicy إلى SemanticsPropertyKey. يمكن استخدامها لتحديد سياسة مخصّصة لدمج دلالات 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 لتتلاءم بشكل أفضل مع أنماط التسمية في Compose تم إنشاء دوال إنشاء مشابهة لدالة RRect وتم إيقاف دوال إنشاء RRect نهائيًا (I5d325)
  • تمت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier في تصميم العناصر الفرعية بدلاً من ذلك. (I4522e، b/162109766)
  • أصبح IntSize الآن فئة مضمّنة (I2bf42)
  • انقر مع الاستمرار على المساحة الفارغة للتعديل. (Ib1e5b)
  • إخفاء شريط الأدوات العائم بعد النقر على النص (If4525)
  • إخفاء FloatingToolbar عند تعديل التحديد (I8444c)
  • ألغِ اختيار "التمويه الذكي". (I781a2)

الإصدار 0.1.0-dev16

‫5 آب (أغسطس) 2020

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

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

  • تمت إضافة LazyItemScope إلى المَعلمة itemContent في القوائم الكسولة. توفّر هذه السمة معدِّلات لملء الحد الأقصى لحجم العنصر الرئيسي، ما يحلّ حالة الاستخدام عندما يجب أن يملأ العنصر إطار العرض ولا تعمل السمة Modifier.fillMaxSize() العادية لأنّه يتم قياس العنصر باستخدام قيود لانهائية. (Ibd3b2، b/162248854)
  • نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
  • تمت إضافة LazyColumnForIndexed/LazyRowForIndexed، وهما إصداران من LazyColumnFor/LazyRowFor يوفّران كلاً من الفهرس والعنصر في itemCallback. يكون ذلك مفيدًا عندما تحتاج إلى معرفة الفهرس الحالي بالإضافة إلى عنصر حالي. (I65ff3)
  • تمت إعادة تسمية Modifier.deternimateProgress إلى Modifier.progressSemantics (I9c0b4)
  • تمت إعادة تسمية LazyColumnItems إلى LazyColumnFor. تمت إعادة تسمية LazyRowItems إلى LazyRowFor (I84f84)
  • أضِف بعض العلامات/التعليقات التوضيحية لسبب أفضل الممارسات. (I66b20)
  • تمت تسوية حزمة foundation.shape.corner إلى foundation.share (I46491، b/161887429)
  • تمت إضافة المعلمة сrossaxis gravity إلى 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)
  • تمت إزالة لغة DSL القديمة الخاصة بـ ConstraintLayout. تمت إعادة تسمية ConstraintSet2 إلى ConstraintSet. (If58d1، b/162450908)
  • تمت إضافة Modifier.absoluteOffset() وModifier.absoluteOffsetPx(). على عكس أدوات تعديل الإزاحة، لن يتم تلقائيًا عكس أدوات تعديل الإزاحة المطلقة في سياق الكتابة من اليمين إلى اليسار (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. تم تعديل الدالة البرمجية القابلة للإنشاء Image لتجنُّب استخدام Box لتقليل الحمل الزائد
    16. تم تعديل فئة "المخطّط التفصيلي" لتضمين التعليقات التوضيحية ‎ @Immutable
    17. تم تعديل PathNode لتضمين التعليقات التوضيحية @Immutable لكل تعليمات مسار
    18. تم تعديل التركيبة الفرعية Vector لإزالة عمليات التحقّق الشرطية المكرّرة من المساواة، لأنّ Compose يتعامل معها
    19. إيقاف نهائي لطُرق إنشاء كائن Rect المصاحبة واستخدام دوال إنشاء الكائن بدلاً منها
    20. تم تعديل فئات Brush ومنشئات الدوال باستخدام واجهات برمجة التطبيقات ‎@Immutable و‎ @Stable
    21. تم تعديل تعداد VertexMode ليكون PascalCase
    22. تم تعديل طريقة selectPaint في DrawScope لاستبدال مَعلمات ضربات الفرشاة بشكل شرطي في اللوحة إذا تم تغييرها
    23. تم تعديل الحجم لإضافة واجهة برمجة تطبيقات تفكيك وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدَمة
  • تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock كـ AnimationClockObservable لسد الفجوة بين الساعات الجديدة المستندة إلى الروتينات المشتركة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى عمليات معاودة الاستدعاء.

    أصبح MonotonicFrameClock مكافئًا لـ ManualAnimationClock، وهو الآن ManualFrameClock. (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 بدلاً من ذلك. توفّر الكلمة الأساسية "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 من Compose، عليك إجراء ما يلي:

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

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

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

  • على غرار المَعلمة الجديدة في ScrollableColumn/ScrollableRow، تتضمّن LazyColumnItems/LazyRowItems الآن أيضًا المَعلمة contentPadding التي تتيح إضافة مساحة متروكة للمحتوى بعد اقتصاصه، وهو ما لا يمكن إجراؤه باستخدام مَعلمة معدِّل فقط. تسمح أيضًا بإضافة مسافة فقط قبل العنصر الأول أو بعد العنصر الأخير. (Ibc24e)
  • تمت إعادة تسمية دالة onFocusChange في حقول النص إلى onFocusChanged (Ida4a1)
  • تم إيقاف VerticalScroller وHoriziontalScroller نهائيًا. استخدِم ScrollableColumn وScrollableRow للحصول على تجربة مدمجة مع سلوك المَعلمات في Column/Row، أو 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 القابل للإنشاء من Inside إلى Fit. تم ذلك بهدف توسيع نطاق سلوك Painter الأساسي إذا كان حجم التنسيق أكبر من الحجم الأصلي لـ Painter مع الحفاظ على نسبة العرض إلى الارتفاع. يتوافق هذا السلوك بشكل أفضل مع التوقعات بشأن توفير أحجام ثابتة للصورة بدون التأثير في السلوك التلقائي في حال استخدام الحجم الأصلي فقط لاحتساب حجم العنصر القابل للإنشاء. (I40ae3، b/159838006)
  • استخدام AnimationSpec بدلاً من AnimationBuilder في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الصور المتحركة الثابتة -تحسين لغة DSL الخاصة بالانتقال من خلال إزالة شرط lambda لإنشاء AnimationSpec، مثل tween وspring بدلاً من ذلك، تأخذ هذه الدوال مَعلمات الدالة الإنشائية مباشرةً. -تحسين سهولة الاستخدام العامة لـ 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 الآن أداة Column بدون أي إعدادات إضافية. توفّر أداة HorizontalScroller الآن Row تلقائيًا. (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 المتوقّفة نهائيًا واستبدالها بواجهات برمجة التطبيقات الخاصة بإضافة drawBackground في Modifier. تمت إعادة تصميم عمليات تنفيذ اللون والفرشاة والرسم في الخلفية لتقليل مسارات الرموز البرمجية وكذلك إزالة شرط إنشاء Modifier كجزء من التركيب. (I0343a)
  • تم تعديل واجهات برمجة التطبيقات الأعلى مستوى في Compose التي تعرض Canvas لعرض CanvasScope بدلاً من ذلك. ويؤدي ذلك إلى إزالة الحاجة إلى أن يحتفظ المستهلكون بكائنات Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا بحاجة إلى الوصول إلى Canvas، يمكنهم استخدام طريقة drawCanvas الخاصة بالإضافة التي توفّر دالة رد نداء لإصدار أوامر الرسم باستخدام Canvas الأساسي. (I80afd)
  • لا يستعيد كلّ من HorizontalScroller وVerticalScroller موضع التمرير باستخدام حالة المثيل المحفوظة. (Ia0fae، b/155075048)
  • تمت إزالة FocusManagerAmbient. استخدِم FocusModifier.requestFocus للحصول على التركيز. (Ic4826)
  • تمت إزالة تخطيط الجدول مؤقتًا إلى أن نعيد إتاحته من جديد باستخدام واجهة برمجة تطبيقات محدَّثة. (Id88a7)
  • تم إنشاء واجهة برمجة التطبيقات CanvasScope التي تتضمّن كائن Canvas لعرض مساحة واجهة برمجة تطبيقات للرسم بدون حالة وتصريحية. يتم تضمين عمليات التحويل ضمن نطاق جهاز الاستقبال الخاص بها، كما يتم تحديد نطاق معلومات الحجم ضمن حدود الحواف الداخلية المقابلة. ولا يتطلّب ذلك من المستهلك الاحتفاظ بكائن حالة Paint الخاص به لتحديد إعدادات عمليات الرسم.

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

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

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

  • أصبح بإمكانك الآن إخفاء لوحة المفاتيح الافتراضية أو إظهارها باستخدام SoftwareKeyboardController الذي يتم توفيره من خلال الدالة رد الاتصال onTextInputStarted (I8dc44، b/151860051).

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

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

  • تم استبدال المَعلمة CoreTextField/TextField focusIdentifier بـ 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 بدلاً من القيمة الخالية (Iabaa7)

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

  • تمت إعادة تسمية ScaleFit إلى ContentScale تم نقل ContentScale من وحدة ui-graphics إلى وحدة ui-core لتكون في الوحدة نفسها التي تتضمّن واجهة Alignment البرمجية. تمت إعادة تسمية FillMaxDimension إلى Crop تمت إعادة تسمية FillMinDimension إلى Fit تمت إعادة تسمية Fit to 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:

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

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

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

  • تم نقل السمة Draggable إلى المعدِّل (Id9b16، b/151959544)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تمت إعادة تسمية الخلفية إلى DrawBackground وتم ضبطها على أن يتم تذكّرها تلقائيًا (Ia0bd3)

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

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

  • إعادة تسمية مفتاح التعديل Border إلى DrawBorder (I8ffcc)

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

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

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

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

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

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

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

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

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

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

  • تمت إزالة RowAlign وColumnAlign المتوقّفتَين نهائيًا في Row وColumn. (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)

  • أصبحت السمة "محاذاة" قابلة للإنشاء باستخدام قيم عشوائية. تمت إضافة عمليات محاذاة أحادية البُعد. (Ia0c05)

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

  • تقبل السمة alignToSiblings الآن كائن Measured بدلاً من Placeable. (I5788d)

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

  • تمت إضافة إمكانية تخصيص أبعاد العناصر الفرعية في ConstraintLayout (Idb1a5)

  • تمت إزالة الدالتَين البرمجيتَين القابلتَين للإنشاء Wrap وCenter اللتَين تم إيقافهما نهائيًا. (I29e23)

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

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

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

  • تمت إضافة أداة التعديل LayoutOffset لتعويض موضع التنسيق (I0b8a3)

  • إتاحة الدعم الأوّلي للغة من اليمين إلى اليسار في تصميم Compose (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 التي تم إيقافها نهائيًا سابقًا. تستخدم السمة Clickable الآن تأثير التموّج كإشارة تلقائية (إذا كان لديك MaterialTheme {} مضبوط في تطبيقك)، لذا في معظم الحالات، يمكنك استخدام السمة Clickable والحصول على إشارة التموّج مجانًا. إذا كنت بحاجة إلى تخصيص المَعلمة color / size / bounded الخاصة بالتموّج، يمكنك إنشاء RippleIndication يدويًا وتمريرها إلى العنصر القابل للنقر كمعلمة indication. (I663b2، b/155375067)
  • تمت إزالة واجهات برمجة التطبيقات القديمة لاختبار الحجم. (Iba0a0)
  • تمت إضافة واجهة برمجة تطبيقات تجريبية إلى LayoutNode (I4f2e9)
  • تم تنفيذ الإصدار 1 من ميزة قفل اتجاه التمرير في جميع أنحاء Compose. (I1ce7a، b/150289741)
  • تتضمّن الآن النوافذ المنبثقة ومربّعات الحوار والقوائم سمة MaterialTheme السياقية (Ia3665، b/156527485)
  • تمت إزالة مَعلمة اتجاه التنسيق من كتلة القياس الخاصة بالدالة Layout(). ومع ذلك، يتوفّر اتجاه التنسيق داخل دالة رد الاتصال من خلال عنصر نطاق القياس (Ic7d9d).
  • إضافة AbsoluteArrangement - تتيح ترتيب العناصر الفرعية داخل الصف بدون عكس تلقائي في اتجاه الكتابة من اليمين إلى اليسار (I3a1df)
  • تم إيقاف التعليق التوضيحي ‎@Untracked نهائيًا. استبدِلها بـ ‎ @ComposableContract(tracked=false)‎ (Id211e)
  • قبل إجراء هذا التغيير، كان المكوّن الإضافي لمترجم Compose يعترض بشكل غير بسيط على طلبات المنشئات داخل دالة مركّبة إذا كان هناك (I5205a، b/158123804)
  • إضافة دالة viewModel() قابلة للإنشاء تتيح إنشاء ViewModel أو الحصول على ViewModel تم إنشاؤه من قبل بطريقة مشابهة لطريقة عمله في Activity أو Fragment (I5fdd1)
  • تمت إعادة تصميم فئة Radius لتصبح فئة مضمّنة. تمت إزالة طرق إنشاء العناصر المصاحبة واستبدالها بدالة إنشائية تتضمّن مَعلمة تلقائية ليكون نصف القطر على المحور y مطابقًا لنصف القطر الإلزامي على المحور x.

    تم تعديل DrawScope.drawRoundRect لاستخدام مَعلمة Radius واحدة بدلاً من قيمتَين منفصلتَين من النوع float للنطاق الجغرافي على طول المحورَين 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 وإضافة إمكانية المحاذاة المطلقة (التي لا يتم عكسها تلقائيًا في سياق الكتابة من اليمين إلى اليسار) (I38cd3)

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

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

  • تم إصلاح عُطل في AdapterList عند إزالة عناصر (Ic64b0، b/153195921)

  • لقد غيّرنا طريقة قياس التنسيق الأول الذي تضعه داخل كتلة activity.setContent { }. في السابق، كان يتم فرض ملء شاشة النشاط بأكملها، أما الآن فيتم التعامل معها كما لو كنت قد وضعت التصميم داخل Stack: يمكن أن يكون أصغر من الشاشة وسيتم وضعه في أعلى يمين الشاشة. إذا كنت تريد السلوك القديم، يمكنك تطبيق Modifier.fillMaxSize() على التصميم. (Ie88a7، b/153453714)

  • تمت إعادة تسمية الوحدة ui-text-compose لتصبح ui-text. تحتوي الوحدة ui-text الآن على دوال CoreText وCoreTextField القابلة للإنشاء (Ib7d47).

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

  • نقلنا عناصر CoreText وCoreTextField القابلة للإنشاء ضمن ui-framework إلى ui-text-compose. قد تحتاج إلى تضمين ui-text-compose في مشروعك. (I32042)

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

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

  • تم ضبط القيم التلقائية لكلّ من DrawLayerModifier وdrawLayer()‎ على clipToBounds وclipToOutline لتكون false. (I0eb8b، b/152810850)

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

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

  • تمت إعادة تسمية LayoutFlexible إلى LayoutWeight. تمت إعادة تسمية المَعلمة "ضيق" إلى "ملء". (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 خفيفة الوزن لتفعيل الرسوم المتحركة بين القيم.
    • (I79530)
  • تغييرات غير متوافقة في واجهة برمجة التطبيقات ambients. راجِع مستندات السجلّ وAmbient<T> للحصول على التفاصيل (I4c7ee، b/143769776)

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

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

  • تم تغيير واجهة برمجة التطبيقات WithConstraints trailing lambda. بدلاً من مَعلمتَين، يتضمّن الآن نطاقًا للمستلِم يوفّر، بالإضافة إلى القيود و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)

  • تمت إضافة المَعلمة LayoutDirection إلى WithConstraints (I6d6f7)

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

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

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

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

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

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

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

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

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

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

  • إضافة HapticFeedback إلى TextField Selection (I58050)

  • إضافة طُرق النسخ والقص واللصق إلى تحديد TextField (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 نطاق androidx.activity.ComponentActivity (أو AppCompatActivity). تم الآن إيقاف setContent نهائيًا في android.app.Activity (Idb25a، b/153141084)

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