Compose Foundation

يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء عناصر نظام التصميم الخاص بك.
آخر تحديث الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫7 أكتوبر 2026 1.12.1 - 1.13.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 لتطبيقك أو وحدتك:

رائع

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

الملاحظات

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

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

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

الإصدار 1.13

الإصدار ‎1.13.0-beta01

‫7 أكتوبر 2026

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

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

  • تمت إضافة التعليقات التوضيحية @FloatRange و@IntRange إلى مَعلمات المصنع PolygonShape وPolygonShapeScope، وتم حصر innerRadiusRatio في PolygonShape.star وPolygonShape.pillStar على (0f, 1f). (I47ea3)
  • تم تعديل واجهات برمجة التطبيقات PolygonShape: تم نقل CornerRounding إلى المستوى الأعلى باستخدام مصنّعي dp() وfraction()، وتم استبدال الإضافتين transformed() وscaledToFit() بالدالتين PolygonShape.transform(PolygonShapeTransformScope.() -> Unit) وPolygonShape.copy() القابلتين للتعديل في المكان نفسه. (If5970)
  • تم إصلاح الخطأ الذي كان يتسبّب في عدم ظهور لوحة مفاتيح افتراضية عند طلب التركيز على BasicTextField قبل التركيز على النافذة (مثل onCreate). تنتظر BasicTextField الآن أن تركّز النافذة على الإدخال قبل بدء جلسة إدخال النص. إذا تسبّب ذلك في حدوث مشاكل للمطوّرين، يمكنك العودة إلى السلوك السابق من خلال ضبط ComposeFoundationFlags.isTextFieldWaitWindowFocusForInputSessionEnabled على "خطأ". (I4206b)
  • تستهدف المكتبات الآن الإصدار 2.2 من Kotlin وتتطلّب الإصدار 2.2 من kotlinc (I82396، b/498369605)
  • تمت إضافة طريقة styleLayer() إلى CommonStyle تعلن أنّ جميع السمات في طبقة ما ستكون لها الأولوية على السمات التي تم ضبطها في طبقة أدنى. تنشئ الطريقة state() (وأدوات المساعدة في الحالة مثل pressed()) الآن طبقة ضمنيًا. (I24473)

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

  • تم إصلاح مشكلة في FlexBox حيث كان الإعداد alignContent(FlexAlignContent.Stretch) يجبر العناصر الفرعية بشكلٍ غير صحيح على التمدّد مع السطر. (Ida156)
  • تم إصلاح مشكلة في FlexBox حيث تم توسيع سطر واحد ملتف (FlexWrap.Wrap أو FlexWrap.WrapReverse) بشكل إجباري إلى الحد الأدنى من قيود المحور العرضي للحاوية، ما تسبّب في عدم محاذاة العناصر في alignContent وalignItems. (I038b1)
  • تم إصلاح عُطل IllegalStateException عند تعديل consumeWindowInsets أو windowInsetsPadding أو onConsumedWindowInsetsChanged في عُقد المعدِّل المنفصلة، مثل أثناء حركة movableContent. (I80ae5)
  • تم تعديل الاعتمادية androidx.lifecycle:lifecycle-runtime إلى الإصدار 2.10.0. هذا الإصدار مطلوب لتشغيل عمليات التحقّق من أخطاء lint في وقت تشغيل حزمة Lifecycle مع الإصدار 9.5.0-alpha04 أو إصدار أحدث من "مكوّن Android الإضافي لبرنامج Gradle". (I99bfd، b/556807521)

الإصدار ‎1.13.0-alpha03

‫9 سبتمبر 2026

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

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

  • تتيح هذه الميزة تحديد نمط الأجزاء الفردية من دالة مركّبة (مثل TextField أو DatePicker) مباشرةً في مَعلمة النمط للدالة المركّبة. يتيح ذلك، على سبيل المثال، إنشاء دالة مركّبة تشبه TextField تسمح بتخصيص كل مربّع من مربّعات الزخرفة باستخدام نمط، ما يتيح إمكانية إلغاء هذه المربّعات على مستوى المظهر أو في موقع الاستدعاء. (I43c0f)
  • تم إيقاف عمليات التحميل الزائد لحقل النص Material 2 التي تقبل مَعلمات value, onValueChange نهائيًا. يُرجى الانتقال إلى التحميل الزائد الذي يستخدم TextFieldState لرفع حالته. (I6b841، b/556234973)
  • تمت إزالة التعليق التوضيحي "@ExperimentalFoundationApi" من undoState في TextFieldState. (I93a44)
  • أضِف عناصر إعدادات تلقائية لكل تخطيط يتم تحميله عند الطلب يحتوي على القيم التلقائية المستخدَمة في دوال @Composeable المقابلة. يحتوي حاليًا على فترة التخزين المؤقت التلقائية لكل تخطيط فقط. (I58633)
  • سيؤدي تفعيل العلامة isUsingDynamicDefaultCacheWindowIn[List|Grid|StaggeredGrid]s إلى استخدام التنسيقات الكسولة لنافذة ذاكرة تخزين مؤقت تستخدم متوسط حجم العناصر المرئية لجلب البيانات مسبقًا قبل إطار العرض، مع حدّ أدنى لنافذة الجلب المسبق يبلغ% 10 من إطار العرض وحدّ أقصى يبلغ% 50 من إطار العرض. (I59212)
  • تم إيقاف LazyListPrefetchStrategy وLazyListPrefetchScope وLazyListPrefetchResultScope نهائيًا. يجب ضبط سلوك الجلب المسبق باستخدام LazyLayoutCacheWindow على LazyColumn أو LazyRow. توفّر LazyLayoutCacheWindow آلية تخزين مؤقت تصريحيه تستند إلى إطار العرض، وتجهّز العناصر تلقائيًا قبل النافذة المرئية وتحتفظ بالعناصر خلفها بدون الحاجة إلى عمليات ردّ اتصال معقّدة لتحديد الجدولة. تتسم واجهة برمجة التطبيقات الجديدة بالبساطة وتتطلّب خطوات إعداد أقل من LazyListPrefetchStrategy. (I1fa2d)
  • تضيف هذه السمة دالتَي الإضافة PolygonShape.transformed وPolygonShape.scaledToFit في Compose Foundation لتحويل أشكال المضلّعات وتعديلها. (I3f327)
  • يعيد هذا التغيير تصميم Styles API إلى جزأين مستقلين: Styles DSL والمعدِّلات التي يتم ضبطها من خلال DSL. لا يزال التنفيذ السابق المستند إلى Style متاحًا، ولكن سيتم إيقافه نهائيًا وإزالته. ويجب استبدال أي استخدامات لها بواجهة برمجة التطبيقات الجديدة المستندة إلى CommonStyle.
  • المكوّنات الرئيسية التي تم تقديمها:
    • ‫CustomStyle وCommonStyle: واجهات أساسية وأدوات مساعدة للدمج من أجل تعريف الأنماط القابلة للإنشاء
    • ‫StyleResolver: يحلّ خصائص الأنماط في المقطوعة الموسيقية ويربطها بعُقد التنسيق من خلال Modifier.styleResolver.
    • ‫Modifier scopes: Modifier.appearance وModifier.placement وModifier.padding وModifier.graphicsLayer الديناميكيان المستندَان إلى معاودة الاتصال
    • أنواع البيانات الأساسية للسمات: stylePropertyOf وstyleLocalOf
    • الأنواع المفيدة لسمات الأنماط: Breadth وFill وShadows
  • المعدِّلات الجديدة مفيدة لتنفيذ نظام تصميم باستخدام Styles API، ولكنّها ليست مطلوبة. قد يستخدم نظام التصميم هذه المعدِّلات أو يوفّر معدِّلاته الخاصة. (Ieb8cc، b/549921960)
  • إزالة التعليق التوضيحي ExperimentalFoundationApi من واجهات برمجة التطبيقات TextFieldBuffer التي تتتبّع التغييرات (I546a7)
  • تضيف هذه الإصدارات MorphPolygonShape في Compose Foundation لإنشاء رسوم متحركة متغيرة بين أشكال المضلّعات، بالإضافة إلى محوّلات toPolygonShape() لكل من RoundedCornerShape وCutCornerShape. (Ic5a89)
  • تضيف هذه السمة PolygonShape إلى Compose Foundation لعرض المضلّعات العادية والنجمية والمخصّصة ذات الزوايا الدائرية مع تنعيم الحواف. (I0b99d)
  • تم إيقاف دوال التحميل الزائد BasicTextField التي تقبل المَعلمات value, onValueChange نهائيًا. يُرجى نقل البيانات إلى الدالة الزائدة BasicTextField التي تستخدم TextFieldState لنقل حالتها. (I636bf، b/552879150)
  • بالتزامن مع إيقاف BasicTextField(value, onValueChange) نهائيًا، تم أيضًا إيقاف VisualTransformation نهائيًا لأنّه لا يتم عرضه إلا من خلال إصدار TextField. يجب نقل عمليات التحويل الحالية إلى OutputTransformation. (I636bf، b/552879150)
  • تم إيقاف توفير LazyLayoutCacheWindow وLazyListPrefetchStrategy من خلال LazyListState نهائيًا، وتم استبدالهما بتوفير LazyLayoutCacheWindow للدالة المركّبة. (I71f19)
  • تمت إزالة علامة الميزة المؤقتة ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled. (Ifff7f)
  • تمت إضافة InputTransformation.maxLengthTrim للحدّ من طول النص عن طريق اقتطاع أحرف الإدخال الزائدة، وتمت إضافة InputTransformation.maxLengthReject لرفض الإدخال الذي يتجاوز maxLength، وتم إيقاف InputTransformation.maxLength نهائيًا واستخدام maxLengthTrim وmaxLengthReject بدلاً منه. (I8d4cd)

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

  • تم تعديل compileSdk لمكتبات Compose إلى 37.1. سيتطلّب ذلك تعديل compileSdk بشكل متعدٍّ لجميع التطبيقات والمكتبات التي تستخدم Compose. (I05b0f)
  • تم إصلاح مشكلة عدم وضع علامة على مساحات WindowInsetsRulers أداة IME الداخلية على أنّها متحركة أثناء استخدام إيماءة إظهار شاشة الرجوع، وتم إصلاح مشكلة عدم تعديل imePadding عند تبديل التركيز بين حقول النص. (Id4562، b/537386261، b/539686000)
  • تم تعديل المكوّنين SecureTextField وOutlinedSecureTextField (بالإضافة إلى عمليات التحميل الزائد BasicSecureTextField المتوقّفة نهائيًا) لاستخدام TextObfuscationMode.System كوضع التعتيم التلقائي بدلاً من TextObfuscationMode.RevealLastTyped. (I76c7e)

الإصدار ‎1.13.0-alpha02

‫26 أغسطس 2026

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

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

  • تمت ترقية واجهات برمجة التطبيقات الخاصة بتنسيق الشبكة المميّزة (Grid وGridScope وGridConfigurationScope وGridFlow وFr وGridTrackSize وGridTrackSpec وModifier.gridItem) إلى إصدار ثابت. (I43ac4، b/462550392)
  • تمت إضافة السمة الدلالية الجديدة BackgroundColor إلى Modifier.background (I7eec3، b/518049030)
  • تمت إزالة التعليق التوضيحي ExperimentalFlexBoxApi وإعادة تسمية السمات المستندة إلى وحدات البكسل في FlexConfigScope مع إضافة اللاحقة Px لتوضيحها. (I5b24e، b/543092286)
  • لا تحتفظ إلا بالعناصر المخزّنة مؤقتًا عندما لا تكون في عملية بحث استباقي. تم تقديم العلامة isKeepAroundDuringLookaheadDisabled. للرجوع إلى السلوك القديم، اضبط العلامة على false. (I110e9)
  • تمت إضافة علامة الإنشاء isLazyLayoutItemAnimatorVisibleBoundsFixEnabled. عند تفعيل هذه الميزة، يتم احتساب حدود فهرس العناصر المرئية قبل تشغيل الرسوم المتحركة الخاصة بموضع العناصر في مقياسَي LazyList وLazyGrid. (I56150)
  • إصلاح الاستهلاك في التمرير الأوّلي في Draggable يضمن ذلك أنّه في حال استخدام حدث النقر لأسفل في التمرير الأولي، يبدأ السحب على الفور في التمرير الرئيسي. يتم التحكّم في هذا التغيير في السلوك من خلال علامة الميزة ComposeFoundationFlags.isDraggableInitialPassConsumptionFixEnabled. (I6a77f، b/532946466)

الإصدار ‎1.13.0-alpha01

‫12 أغسطس 2026

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

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

  • بعد الإعلان في الإصدار السابق، تمت إزالة عملية تنفيذ Modifier.onFocusedBoundsChanged بالكامل. لا يؤدي استخدام هذا المعدِّل الآن إلى أي عملية. يمكنك الانتقال إلى استخدام FocusTargetModifierNode.getFocusedRect() للاستعلام عن هذه المعلومات عند الطلب حسب الحاجة. (Ia39db، b/220030968)

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

  • تم إيقاف توفير LazyLayoutCacheWindow وLazyGridPrefetchStrategy من خلال LazyGridState نهائيًا، وتم استبدالهما بتوفير LazyLayoutCacheWindow للدالة المركّبة. (I3f31e)
  • إزالة علامة isSkipItemPlacementAnimationFixEnabled (I890f3، b/493183465)
  • إزالة علامة isClearNestedScrollCoroutineScopeFixEnabled (Iedfd7، b/506963276)
  • تم تغيير العلامة isCacheWindowVisibleItemCountCheckEnabled إلى isCacheWindowLookaheadCheckEnabled (I2ea06)
  • يحفظ TextFieldState معلومات نمط النص ويستعيدها الآن. أصبحت AnnotatedString.Annotation.Saver متاحة للجميع الآن للسماح بحفظ واستعادة عناصر AnnotatedString.Annotation. (I8b533، b/135556699)
  • تضيف هذه السمة نافذة ذاكرة تخزين مؤقت إلى تصميم شبكة متقطّعة متداخلة. للرجوع إلى سلوك الجلب المسبق القديم، اضبط isUsingCacheWindowInStaggeredGrids على false. (I1c70d)
  • تمت ترقية FlexBox وواجهات برمجة التطبيقات ذات الصلة بالإعدادات إلى إصدار ثابت، ولم تعُد تجريبية. (I209ed، b/475491619)
  • تمت إضافة إعداد maxItemsInEachLine إلى FlexBox للسماح بالحدّ من عدد العناصر في كل سطر عند تفعيل خيار الالتفاف. (I2744b، b/475491619)
  • تمت إضافة تعليقات توضيحية إلى طرق أساسية فارغة قابلة للتجاوز في Compose باستخدام @EmptySuper للإشارة إلى أنّه يجب ألا تستدعي عمليات التنفيذ المتجاوزة super. (Id407b)
  • تمت ترقية واجهات برمجة التطبيقات الخاصة WindowInsets بمستوى الظهور والصور المتحركة إلى إصدار ثابت. (I37441، b/537329254)
  • عند النقر على عناصر قابلة للنقر، يتم الآن تشغيل المؤثرات الصوتية للتفاعل تلقائيًا على أجهزة Android. (Ia72f8)
  • تعيد نافذة ذاكرة التخزين المؤقت الآن ملء النافذة المسبقة إذا تغيّر عدد العناصر المرئية بدون التمرير. اضبط العلامة isCacheWindowVisibleItemCountCheckEnabled على false لإيقاف هذا التحقّق والعودة إلى السلوك القديم. (I67b5a)
  • تم تعديل السمة NestedScrollDispatcher.coroutineScope لعرض CoroutineScope تم إلغاؤه بأمان عند عدم ربطه أو فصله. (I9b112، b/535290281)
  • تمت إعادة تسمية enableNonScrollCaching إلى isNonScrollCachingEnabled (I7a54b، b/535290282)
  • تمت إضافة @CheckResult إلى SemanticsNodeInteraction.isDisplayed() وisNotDisplayed() لضمان تأكيد القيم المعروضة، ما يمنع حدوث أعطال غير ظاهرة في الاختبارات عندما يستخدمها المطوّرون عن طريق الخطأ بدلاً من واجهات برمجة التطبيقات الخاصة بالتأكيد. (I1b447، b/508178494)
  • جعل LazyLayoutCacheWindow ثابتًا (I2cda3)
  • تمت إضافة المَعلمة bringIntoViewSpec إلى Horizontal وVertical Pager للسماح بتجاوز التنفيذ التلقائي لـ Pager. (Icdcbf، b/505052292)
  • إصلاح خطأ في رصد عدم النشاط في أداة جدولة الجلب المُسبَق للتنسيق الكسول. في السابق، كان من المحتمل أن يعتبر نظام جدولة المهام نفسه غير مستخدَم من قِبل أي برنامج حاليًا بشكل غير صحيح عند تأخُّر عرض إطار بشكل كبير، ما قد يؤدي إلى حدوث إيقاف مؤقت لعرض واجهة المستخدم عند التمرير. للرجوع إلى السلوك القديم، اضبط علامة isLazyPrefetchSchedulerIdleTimeFixEnabled الإنشاء على "خطأ". (If0594، b/458024295)
  • نقدّم coroutineScopeOrNull() في NestedScrollDispatcher، وهي واجهة برمجة تطبيقات بديلة للوصول إلى نطاق الروتين الفرعي الرئيسي للمرسل. (I18c0f)
  • تم إصلاح مشكلة تحرّك النص الأفقي أثناء التمرير الزائد في Compose. يمكن إيقافها من خلال AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabled. (Ica169، b/532079110، b/532081619)
  • أضِفنا العلامة isDraggableZeroDeltaConsumptionEnabled للتحكّم في طرح هذا الإصلاح في Draggable. تتم الآن معالجة أحداث التغيير الصفرية بشكل صحيح. (I50eb1، b/524163413)
  • يتم الآن حصر تحديد النص بأمان على طول النص أثناء تعديلات النص المتزامنة لمنع حدوث أعطال. (I64fd7)
  • لدى "androidx.benchmark" الآن minSdk يبلغ 24. (Ic2a85)
  • تتعامل الروابط الآن بشكل أفضل مع النقرات عندما تمتد على عدة أسطر. تم تجاوز مساحة اللمس إلى 0 لدعم ذلك. إذا لم يكن هذا السلوك مرغوبًا فيه، استخدِم العلامة ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabled لتجاوزه. (Ide41b، b/361106057)
  • تم إصلاح استثناء منخفض الحجم عند الكتابة إلى عنصر حالة قابل للتغيير. (I48194، b/503110696)
  • عرض keys قابل للملاحظة على SaveableStateHolder لتبسيط إدارة حالة التنقّل/الأنشطة السابقة وإزالة الحاجة إلى تتبُّع key خارجي الوصول عبر holder.keys؛ يمكنك إزالة هذا الوصول باستخدام removeState. (I9bbbb، b/398887924)
  • تزيل هذه السمة الدالة المساعدة التجريبية القديمة IndirectPointerEvent. (I05dee، b/499336763، b/501098299، b/501098376، b/513249467)
  • إصلاح المشاكل في الإصدار LocalBringIntoViewSpec من Android (Ibcb97)
  • إضافة علامة isMultiLaneCacheWindowEnabled (I3d997)
  • تم إنشاء واجهة برمجة تطبيقات SelectionState جديدة، سيتم تمريرها إلى SelectionContainer لمراقبة النص المحدّد وتعديل التحديد آليًا." في androidx-main am: 929401883c am: c02871cac4 (I15bd4)
  • تمت إضافة LocalTextFieldContentObserverRegistrationExecutor التي توفّر طريقة لتفويض عملية التسجيل الضمني ContentObserver التي تحدث في TextField إلى سلسلة محادثات في الخلفية. (Ib4fa6، b/505287297، b/509842675)
  • تمت إعادة تسمية "TextObfuscationMode.Default" إلى "System". تعمل TextObfuscationMode.RevealLastTyped الآن كإلغاء مطلق وتعرض دائمًا الحرف الأخير الذي تمّت كتابته. تم تعديل الوسيطة التلقائية لـ BasicSecureTextField إلى "النظام". (If26d3، b/425658491، b/453647378)

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

  • تم إصلاح مشكلة كانت تؤدي أحيانًا إلى احتساب سرعة غير صحيحة عند التمرير السريع في Compose المضمّن داخل حاوية تمرير في Android (مثل ScrollView أو CoordinatorLayout). (I0f017)
  • تم إصلاح مشكلة في FlexBox حيث لم يتطابق التنقّل بين العناصر مع الترتيب المرئي للعناصر عند استخدام الاتجاهات المعاكسة أو الترتيب العكسي أو ترتيب العناصر المخصّص. (I4cc61، b/521609263)
  • تم إصلاح مشكلة عدم تأثير معدّلات التعديل العادية للتنسيق، مثل Modifier.fillMaxWidth() وModifier.fillMaxHeight()، في العناصر داخل FlexBox ما لم يتم تحديد عامل نمو مرن صريح. (Ib0ac3، b/515657458)
  • تم تحسين عملية تهيئة foundation خصائص فئة القيم ذات المستوى الأعلى على مستوى الملف باستخدام دوال جلب ديناميكية. (I570d7)
  • تم تحسين عملية تهيئة الكائنات المصاحبة لفئات القيم foundation-layout (مثل WindowInsetsSides وغيرها) باستخدام دوال جلب ديناميكية. (I01c2b)
  • تم إصلاح مشكلة كانت تؤدي إلى عرض عناصر قائمة السياق الخاصة بتحديد النص في Compose لسلاسل قديمة بعد تبديل اللغة داخل التطبيق عندما تم إيقاف عمليات إعادة تشغيل النشاط من خلال android:configChanges. (Ic910b، b/515156417)
  • تحسين عملية تهيئة عنصر مصاحب compose:foundationلفئات القيم (KeyModifiers وMarqueeAnimationMode وSource وما إلى ذلك) من خلال استخدام دوال جلب ديناميكية (I78455)
  • إصلاح الصور المتحركة للأنماط لضمان أنّه عند الانتقال إلى قيمة يتم ضبطها بشكل مشروط فقط في صورة متحركة، سيتم التعامل معها على أنّها صورة متحركة من القيمة التلقائية للسمة وإليها. (I8e41d، b/527140078)
  • تم إصلاح مشكلة في Grid حيث تتجاوز العناصر الموضوعة تلقائيًا والتي يبلغ مدى اتساعها حجم المسارات الصريحة المتاحة في الاتجاه المقيد حدود الشبكة عند تطبيق الفجوات. (I00ce0، b/506570362)
  • تنظيف معلومات واجهة برمجة التطبيقات (Ia8066)
  • تم إصلاح خطأ في BasicTextField كان يتسبّب في عدم تقديم تحديثات النص المستخرَج بشكل صحيح إلى محرر أسلوب الإدخال عند الطلب. (I746fa، b/203549026، b/492363474)

الإصدار 1.12

الإصدار 1.12.1

‫9 سبتمبر 2026

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

الإصدار 1.12.0

‫12 أغسطس 2026

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

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

الإصدار ‎1.12.0-rc01

‫29 يوليو 2026

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

الإصدار ‎1.12.0-beta02

‫01 يوليو 2026

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

الإصدار ‎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.4

‫01 يوليو 2026

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

الإصدار 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)
  • تستخدم لغة 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. Thanks Steven Schoen! (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 هذه التعديلات.

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

الإصدار ‎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 عقدة معدِّل جديدة لتنفيذ تخطيط خارج الحدود للبحث عن التركيز (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)
  • تتيح الآن ميزة Scrollable إمكانية التعامل بشكل أفضل مع أحداث التمرير باستخدام عجلة الماوس الثنائية الأبعاد. تم إطلاق واجهة برمجة تطبيقات اختبار جديدة للمساعدة في اختبار حالات الاستخدام في 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 جديدة تتيح الاستيفاء التلقائي بين الأنواع المختلفة، على افتراض أنّ أحد الأنواع يعرف كيفية التحويل من النوع الآخر. يتم الاستفادة من هذه الواجهة في العديد من أنواع الإنشاء، مثل Brush وShape، ولكن يمكن استخدامها خارجيًا أيضًا. (I58eab)
  • تضيف هذه السمة أحداث إدخال غير مباشرة وطريقة لتحديد محور الإحداثيات الذي سيتم استخدامه للتمرير. (I58e7c)
  • إضافة واجهة برمجة التطبيقات الجديدة WindowInsets.cutoutPath للحصول على مسار صورة مقطوعة للشاشة (Ib90b1، b/279636456)
  • تمت إزالة العلامة isWindowInsetsDefaultPassThroughEnabled، وتم ضبط WindowInsets تلقائيًا على عدم الاستهلاك حتى تتمكّن طرق العرض الفرعية من تلقّي WindowInsets تلقائيًا. (I888e0، b/412469666)

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

  • يجب إيقاف ميزة "isNonSuspendingPointerInputInDraggableEnabled" في الوقت الحالي. (Ia41c4)
  • تغيير الحد الأدنى التلقائي لإصدار SDK من الإصدار 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" كحدّ أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
  • تغيير جذري: إنّ عمليات التحميل الزائد clickable وcombinedClickable وselectable وtoggleable وtriStateToggleable بدون مَعلمة Indication لا تتوافق الآن إلا مع مثيلات IndicationNodeFactory المقدَّمة باستخدام LocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات أدوات التعديل هذه باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر عملية تنفيذ متوقّفة نهائيًا لـ Indication إلى 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. (If5db4)، LazyLayoutPrefetchState وطريقة الجدولة schedulePrecomposition وschedulePrecompositionAndPremeasure (I4362f، b/252853717) وLazyLayoutItemProvider (Icce09،b/261565751)
  • السماح لـ "الكتابة الذكية" بتفعيل 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: قائمة السياق (قائمة النقر بزر الماوس الأيمن)
  • سيتم الآن إضافة فاصل أسطر \n بين النصوص المنسوخة من عناصر Text قابلة للإنشاء متعددة في SelectionContainer. (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 يوليو 2025

تم طرح 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 overload يتضمّن عناصر تحكّم في ميل اللمس وقفل الاتجاه. (Iadb0d)
  • إضافة Modifier.scrollable2D وScrollable2DState وواجهات برمجة التطبيقات المصاحبة لإنشاء الحالة تم أيضًا تقديم دوال إضافية شائعة للتمرير. (Ic61c8، b/214410040)
  • لا يمكن مقارنة قيم الألوان في Compose ذات 64 بت مباشرةً مع قيم الألوان في Android ColorLongs لأنّ أرقام تعريف مساحات الألوان غير مرتبة لبعض مساحات الألوان. لتحويل مساحات الألوان في 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 على false. سيتم تعديل قيمة 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" كحدّ أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.

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

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

  • إضافة واجهة برمجة تطبيقات لإنشاء قوائم نقطية مخصّصة من خلال AnnotatedString (I1d066، b/383269496، b/139326648)
  • السماح لـ "الكتابة الذكية" بتفعيل 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. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر عملية تنفيذ متوقّفة نهائيًا لـ Indication إلى 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. (I2638c)، b/308398612
  • تم إصلاح خطأ في TextField أدّى إلى اختفاء شريط أدوات النص ومقابض التحديد تمامًا عند تغيير مثيل TextFieldState. (I8068a)، b/390477786
  • تم إصلاح خطأ في BasicText حيث لم يؤدِّ تغيير الحد الأدنى لعرض القيود إلى تعديل موضع النص عندما تم ضبط textAlign على قيمة غير القيمة التلقائية. (I77a96)، b/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 composition المحلية نوع 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).
  • يتم استبدال مصادر السحب والإفلات 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 أكبر من القيود الواردة. يفرض عنصر التحكّم في تقسيم المحتوى على صفحات الآن القيم السالبة التي يتم إرجاعها من PageSize إلى 0. (Iba5d8، b/314008560)

الإصدار ‎1.7.0-alpha08

‫1 مايو 2024

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

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

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

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

  • يمكن الآن وضع علامة "عاجل" على طلبات الجلب المُسبَق 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 بدلاً منها. إذا كنت تستخدم "تحديد نسق المواد"، استخدِم العنصر TextDefaults لإنشاء التعليق التوضيحي مع تطبيق "تحديد نسق المواد" عليه (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 يتم استبدال مصادر السحب والإفلات (Drag and Fling) بمصدرَي 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)
  • لم يعُد targetValue في AnchoredDraggableState يأخذ في الاعتبار الحدود الدنيا الموضعية. يبلغ الحدّ الضمني الآن ‎50%، ما يعني أنّ targetValue يتغيّر عند نقطة المنتصف بين نقطتَي ربط. (I82c2c)

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

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

الإصدار ‎1.7.0-alpha06

‫3 أبريل 2024

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

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

  • تمت إضافة إمكانية استخدام حركة ظهور العناصر واختفائها في LazyColumn وLazyRow. في السابق، كان من الممكن إضافة المعدِّل Modifier.animateItemPlacement() من أجل إتاحة الرسوم المتحركة الخاصة بموضع الإعلان (إعادة الترتيب). أوقفنا نهائيًا استخدام معدِّل العرض هذا وقدّمنا معدِّل عرض جديدًا غير تجريبي باسم Modifier.animateItem() يتيح لك إتاحة جميع أنواع الرسوم المتحركة الثلاثة: الظهور (التلاشي)، والاختفاء (التلاشي)، وإعادة الترتيب. (I2d7f7، b/150812265)
  • يمكن لعملاء LazyColumn/LazyRow الآن إيقاف الاحتفاظ بفهرس استنادًا إلى المفتاح الخاص بعملية قياس مدى فعالية الإعلانات القادمة من خلال طلب LazyListState.requestToScroll غير معلّق. (I98036، b/209652366)
  • تمت إضافة طريقة parseAsHtml للسلاسل ذات التنسيق: تتيح هذه الطريقة تحويل سلسلة مميّزة بعلامات HTML إلى AnnotatedString. يُرجى العِلم أنّ بعض العلامات غير متوافقة، مثلاً لن تتمكّن بعد من عرض قوائم نقطية. (I84d3d)
  • تمّت إضافة دعم تجريبي للقطات الشاشة الطويلة في حاويات التمرير في Compose باستخدام واجهة برمجة التطبيقات الرسمية لنظام التشغيل Android (ScrollCaptureCallback). هذه الميزة تجريبية وقد لا تتعامل حاليًا مع جميع الحالات بشكل صحيح. لهذا السبب، يتم إيقافها تلقائيًا في الوقت الحالي. للموافقة على هذه الميزة، اضبط العلامة ComposeFeatureFlag_LongScreenshotsEnabled على "صحيح". ستتم إزالة هذه العلامة قبل الإصدار التجريبي 1.7. (I2b055، b/329296471)
  • إضافة واجهة برمجة تطبيقات GraphicsLayer جديدة لتوفير المزيد من المرونة في موضع عرض مثيلات GraphicsLayer وعرضها، وإتاحة ميزات العرض المضمّنة بدون الحاجة إلى التنسيق مع عمليات تنفيذ Composable لتحديد مثيلات معدِّل 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 للمساعدة في كتابة اختبارات منخفضة المستوى ذات صلة بطرق الإدخال وغيرها من حالات الاستخدام المنخفضة المستوى لطرق الإدخال. تم إيقاف PlatformTextInputTestOverride نهائيًا. (I862ed، b/322680547)
  • تقسيم restrictedConstraints() إلى طريقتَين: fitPrioritizingWidth() وfitPrioritizingHeight() (I6d7fd)

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

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

الإصدار ‎1.7.0-alpha04

‫6 آذار (مارس) 2024

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

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

  • إتاحة ميزة الكتابة اليدوية باستخدام قلم الشاشة على الأجهزة التي تعمل بالإصدار Android U والإصدارات الأحدث (I002e4)
  • تمت إضافة hintLocales إلى KeyboardOptions لتزويد TextFields بإمكانية إرسال تلميحات إلى محرّرات طرق الإدخال (IME) تتضمّن إعدادات محلية معيّنة لضبط لغة مفضَّلة مسبقًا. (Id18c2)
  • تمت إزالة عمليات التحميل الزائد التجريبية BasicTextField2 وBasicSecureTextField التي استقبلت المَعلمتَين value: String وonValueChange: () -> String. (I568b4)
  • أضِف دالة applySemantics اختيارية إلى InputTransformation للتأثير في دلالات BasicTextField2 التي يتم تطبيقها عليها. (I74a2f، b/170648072)
  • في هذا التغيير، نضيف الإجراء الدلالي GetScrollViewportLength حتى نتمكّن من نقل معلومات حول المكوّنات التي يتمّ تصفّحها في 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 APIs كإصدار ثابت. نعمل أيضًا على إزالة بعض التعليمات البرمجية التجريبية وإضافة المزيد من العيّنات إلى ميزة "المحاذاة". (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، ننصحك بتمرير القيمة null.

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

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

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

  • ستعمل 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 للقبول من جلسة سحب وإفلات. تعرض هذه الدالة lambda قيمة صالحة DragAndDropTarget إذا كنت مهتمًا بجلسة سحب وإفلات. تم استبدال دوال lambda الأخرى لمعالجة أحداث السحب بهذه الدالة.

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

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

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

  • تمت إزالة DragAndDropInfo كنوع، ويتم الآن استخدام DragAndDropModifierNode.drag مع مَعلمات transferData وحجم الزخرفة ووظيفة lambda 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)
  • إصلاح مشكلة توافق البرنامج الثنائي مع تغيير مساحة النافذة الداخلية (Iee695)
  • أزِل طبقة Material الأساسية من 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. يتضمّن تطبيق "إنشاء" الآن إصدارًا خاصًا به من 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 بدلاً من Pager نفسه

الإصدار 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 الدلالي لاستدعاء إجراء محرر أسلوب الإدخال على عقد محرر النصوص. (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)
  • المزيد من أنواع/إمكانية قبول القيم الفارغة للدوال المضمّنة/المخفية التي تم إيقافها نهائيًا (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 إلا بعد انتهاء جميع عمليات معاودة الاتصال بإطارات التشغيل. يتطابق هذا مع سلوك الإنشاء عند التشغيل بشكل طبيعي. ومع ذلك، قد يتعذّر إجراء الاختبارات التي تعتمد على السلوك القديم. من المفترض أن يؤثر ذلك فقط في الرموز التي تستدعي 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* API (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 محدودة النطاق إلى Density لتسهيل عمليات التحويل بين 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 إلى أداة Velocity Tracker، سنأخذ في الاعتبار الآن الفروق بدلاً من المواضع، ما يضمن احتساب السرعة بشكل صحيح في جميع الحالات حتى إذا تحرّك العنصر المستهدَف (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 هي false. (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 لتضمين الفاصل العشري تحديدًا في محرر أسلوب الإدخال (IME). (Iec4c8، b/209835363)
  • إضافة واصف خط جديد Font(DeviceFontFamilyName) للبحث بشكل اختياري عن الخطوط المثبَّتة على النظام أثناء سلاسل الخطوط الاحتياطية. (I30468، b/219754572)
  • أصبحت واجهتا برمجة التطبيقات PointerEventType.Scroll وPointerEvent.scrollDelta ثابتتَين الآن (I574c5، b/225669674)
  • يمكن تغيير إعدادات التوافق المؤقتة لـ includeFontPadding في TextStyle/ParagraphStyle. includeFontPadding من خلال TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). هذا خيار إعداد مؤقت لتفعيل عملية نقل البيانات، وسيتم إزالته. (If47be، b/171394808)
  • تم تعديل FontFamily.Resolver لدمج إعداد تسهيل استخدام ميزة "تغميق النص" على مستوى النظام (I6c1e7)
  • تتيح السمة consumeWindowInsets للإضافة ComposeView للمطوّرين إيقاف استخدام Android WindowInsets. يسمح ذلك بتطبيق 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)
  • إتاحة تحميل الخطوط بشكل غير متزامن في "النص" (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، ثم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً من 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)

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

  • سيتم الآن إبقاء حقول TextField فوق لوحة المفاتيح عند التركيز عليها وعند عرض لوحة المفاتيح، وذلك عندما يكون وضع الإدخال السلس 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)
  • تتيح الآن الحاويات التي تستخدم Modifier.scrollable، مثل LazyColumn وLazyRow وModifier.verticalScroll وغيرها، إمكانية التمرير باستخدام عجلة الماوس. (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 بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حد أدنى يبلغ 48×48 بكسل مستقل الكثافة، حتى إذا ضبطت حجم الزر على قيمة أصغر. يؤدي ذلك إلى توافق Compose Material مع السلوك نفسه الذي تتّبعه "مكوّنات التصميم المتعدد الأبعاد"، ما يوفّر سلوكًا متسقًا في حال استخدام كلّ من 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)

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

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

الإصدار ‎1.1.0-beta03

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

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

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

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

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

الإصدار ‎1.1.0-beta02

‫3 نوفمبر 2021

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

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

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

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

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

الإصدار 1.1.0-beta01

‫27 أكتوبر 2021

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

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

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

الإصدار ‎1.1.0-alpha06

‫13 أكتوبر 2021

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

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

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

الإصدار ‎1.1.0-alpha05

‫29 سبتمبر 2021

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

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

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

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

الإصدار ‎1.1.0-alpha04

‫15 سبتمبر 2021

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

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

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

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

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

الإصدار ‎1.1.0-alpha03

‫1 سبتمبر 2021

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

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

  • تم تعديل 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 هذه التعديلات.

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

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

الإصدار 1.0.3

‫29 سبتمبر 2021

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

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

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

الإصدار 1.0.2

‫1 سبتمبر 2021

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

تم تعديلها لتتوافق مع الإصدار 1.0.2 من Compose. لا يزال الإصدار 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 Studio Bumblebee و7.1. (b/194289155)

الإصدار ‎1.0.0-rc02

‫14 يوليو 2021

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

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

الإصدار ‎1.0.0-rc01

‫1 يوليو 2021

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

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

  • تتيح Canvas الآن استخدام المَعلمة contentDescription لتسهيل الاستخدام. (Ib547c)

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

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

الإصدار ‎1.0.0-beta09

‫16 يونيو 2021

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

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

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

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

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

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

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

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

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

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

  • ستتّبع قاعدة الطريقة النمط التالي:

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

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

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

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

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

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

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

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

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

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

آلية العمل

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

الإصدار ‎1.0.0-beta08

‫2 يونيو 2021

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

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

  • تم استبدال تعداد NestedScrollSource بفئة مضمّنة. (Ie321b، b/187055290)
  • تمت إعادة تصميم استخدامات التعداد لتصبح فئات مضمّنة لتجنُّب المشاكل المتعلّقة بعبارات when الشاملة عند إضافة قيم تعداد جديدة. (I2b5eb)
  • تمت إضافة مهلة نقر إلى العناصر القابلة للنقر أو التبديل لمنع ظهور تأثير التموج أثناء التمرير أو السحب (Ia2704، b/168524931)
  • لم تعُد خصائص ContentDescription وText الدلالية قيمًا فردية، بل أصبحت قوائم. يتيح ذلك دمجها كما هي بدلاً من تسلسلها. تم أيضًا توفير واجهات برمجة تطبيقات أفضل للاختبار من أجل الاستفادة من هذه التغييرات (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 هذه التعديلات.

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

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

  • تمت إضافة عملية الاستدعاء 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 محلية للتركيب لاستبدال واجهة 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 للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين coroutine لرصد إدخال المؤشر من أجل التبعيات الجديدة. (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. تمت إزالة النوع العام حتى تتمكّن من تمرير أي نوع كمفتاح. لم يعُد من الضروري إضافة التعليق التوضيحي التجريبي. (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 أم لا. القيمة التلقائية هي false. (I0125b، b/152613457)

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

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

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

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

  • أصبحت الكثافة الآن نطاقًا للمستقبِل لواجهات 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)
  • تم تعديل السرعة لتشمل أجزاء مكوّنة وعمليات رياضية. (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. وهي الآن مضمّنة في وحدة Compose.

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

  • تمت إعادة تصميم ShaderBrush لإنشاء مثيل shader بشكل غير مباشر عند توفّر معلومات تحديد الحجم لبيئة الرسم. ويكون ذلك مفيدًا لتحديد تدرّجات لونية تشغل حدود الرسم الكاملة لدالة مركّبة في وقت التكوين، بدون الحاجة إلى تنفيذ عمليات مخصّصة في 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)
  • تم جعل الحقلَين uptime وposition في 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 API الأخرى. (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 إلى حقول النص (Ib2a5b)
  • تعديل حقول النص لقبول KeyboardOptions (Ida7f3)
  • تمت إضافة KeyboardOptions لاستخدامها في TextFields (I9ca32)
  • تضيف هذه الإضافة BasicText كواجهة برمجة تطبيقات لا تفرض أي قيود على التصميم للنص، وهي موازية لـ BasicTextField. (I28268)
  • تمت إزالة التعليق التوضيحي ExperimentalLazyDsl. يمكن الآن استخدام LazyColumn/LazyRow بدون إضافة ‎ @OptIn (Idab7a، b/166584730)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تمت إضافة BasicTextField كبديل لكلّ من CoreTextField وBaseTextField (Id4cea)
  • إزالة LazyColumnItems/LazyRowItems المتوقّفة نهائيًا (I1d8a8)
  • تمت إزالة العناصر القابلة للإنشاء المتوقّفة نهائيًا لتحديد الحجم وفقًا للقياسات الأصلية. (I18537، b/171811496)
  • تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة المعدِّل paddingFromBaseline لتسهيل تحديد المسافات من حدود التصميم إلى خطوط الأساس للنص. (I0440a، b/170633813)
  • تمت إضافة المَعلمة matchHeightConstraintsFirst إلى أداة تعديل نسبة العرض إلى الارتفاع، ويمكن استخدامها لتحديد أداة التعديل التي سيتم تغيير حجمها وفقًا لقيود الارتفاع قبل تجربة قيود العرض المطابقة. (Ie7c43، b/155290593)
  • تمت إزالة DpConstraints المتوقّفة نهائيًا. (I87884، b/171702471)

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

  • تم تقديم فئة ScaleFactor المضمّنة لتمثيل عوامل القياس للمحورَين الأفقي والعمودي بشكل مستقل عن بعضهما البعض من أجل إتاحة حالات استخدام القياس غير المنتظم.
    • تمت إضافة طريقة computeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لتنفيذ تغيير الحجم غير المنتظم من أجل توسيع حدود 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)
  • تمت إضافة خيار "التصحيح التلقائي للوحة المفاتيح" في "محرّك أسلوب الإدخال" (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 إلى 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)
  • أصبحت Constraints الآن فئة مضمّنة (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)
  • إخفاء FloatingToolbar بعد النقر على النص (If4525)
  • Hide FloatingToolbar When Updating the Selection. (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 الخاصة بالقوائم Lazy. توفّر هذه السمة معدِّلات لملء الحد الأقصى لحجم العنصر الرئيسي، ما يحلّ حالة الاستخدام التي يجب فيها أن يملأ العنصر إطار العرض، ولا تعمل السمة 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)
  • تمت إضافة مَعلمة الجاذبية على المحور المعاكس إلى 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. تم تعديل فئة Outline لتضمين التعليقات التوضيحية ‎ @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 بدلاً منه. توفّر الكلمة الأساسية "ثم" إشارة أقوى إلى الترتيب، كما أنّها تحظر كتابة 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. يوفّر ذلك مزايا فئة مضمّنة للاستفادة من قيمة طويلة لتعبئة قيمتَين من النوع float لتمثيل الإزاحتَين x وy الممثّلتَين كقيمتَين من النوع float. (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 إلى حزمة foundation. يمكنك استخدامها لعرض مؤشر الضغط أو السحب أو غير ذلك على العناصر المخصّصة القابلة للتفاعل (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. تمت إعادة تصميم عمليات تنفيذ اللون والفرشاة وdrawBackground لتقليل مسارات الرموز البرمجية بالإضافة إلى إزالة شرط إنشاء 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. استخدام معدِّل drawBackground بدلاً من User Box (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 API:

    • تم إنشاء نطاق المتلقّي للدالة 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 إلى Checkbox وSwitch وToggleable (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 قابلة للإنشاء للتعامل مع تغيير الحجم/التخطيط بالإضافة إلى عرض ImageAsset معيّن على الشاشة. تتيح هذه الدالة المركّبة أيضًا رسم أي مثيل 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 والحصول على إشارة التموّج مجانًا. إذا كنت بحاجة إلى تخصيص اللون أو الحجم أو المَعلمة المحدودة للتموّج، يمكنك إنشاء RippleIndication يدويًا وتمريرها إلى العنصر القابل للنقر كمَعلمة الإشارة. (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 تم إنشاؤه سابقًا بطريقة مشابهة لطريقة عمله في النشاط أو 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/CoreText إلى ui-text-compose. يمكنك تضمين ui-text-compose في مشروعك. (I32042)

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

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

  • أصبح clipToBounds وclipToOutline في DrawLayerModifier وdrawLayer()‎ مضبوطَين تلقائيًا على "خطأ". (I0eb8b، b/152810850)

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

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

  • تمت إعادة تسمية LayoutFlexible إلى LayoutWeight. تمت إعادة تسمية المَعلمة "ضيق" إلى "ملء". (If4738)

  • تم تغيير DrawVector من دالة مركّبة عادية إلى دالة تعرض Modifier 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 API راجِع مستندات السجلّ و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 بوحدات بكسل مستقلة الكثافة (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 Set بدلاً من Map، ولجعل LayoutCoordinates تنفّذ عامل التشغيل get() بدلاً من ذلك لاسترداد قيمة. يسهّل ذلك على المعدِّلين تعديل قيمة واحدة أو أكثر من المجموعة بدون إنشاء مجموعة جديدة لكل معدِّل. (I0245a)

  • لم يعُد LayoutCoordinates يتضمّن السمة position. لا تكون السمة 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)