Compose Foundation

كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاص بك
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫9 سبتمبر 2026 1.12.1 - - 1.13.0-alpha03

البنية

‫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، وهي أحدث إصدار من التصميم المتعدد الأبعاد. يتضمّن تصميم Material 3 عناصر وميزات محدّثة لتخصيص التصميم، مثل الألوان الديناميكية في 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-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 على "خطأ". (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 إلى System. (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 من "المكوّن الإضافي لنظام Gradle المتوافق مع 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. شكرًا "ستيفن شون"! (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 هذه التعديلات.

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

  • تم إصلاح الخطأ الذي كان يؤدي إلى عدم صحة targetValue AnchoredDraggableState في بعض السيناريوهات التي تتضمّن نقاط ارتساء متعددة في الإزاحة نفسها. عندما يتم ضبطها على علامة ارتساء لها الإزاحة نفسها كعلامة ارتساء أخرى، كانت الدالة 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.8.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي في Gradle"، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
  • تغيير غير متوافق: لا تتوافق عمليات التحميل الزائد clickable وcombinedClickable وselectable وtoggleable وtriStateToggleable بدون مَعلمة Indication الآن إلا مع مثيلات IndicationNodeFactory التي يتم توفيرها باستخدام LocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات أدوات التعديل هذه باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر عملية تنفيذ متوقّفة نهائيًا لـ Indication إلى LocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عُطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، كما أنّه يتيح للدوال القابلة للإنشاء التي تستخدم هذه المعدِّلات إمكانية التخطّي أثناء إعادة الإنشاء. يمكنك استخدام ComposeFoundationFlags.isNonComposedClickableEnabled=false لإيقاف هذا التغيير في السلوك مؤقتًا، وذلك لتفعيل ترقية Compose بدون أن يتم حظر عملية النقل هذه. ستتم إزالة هذه العلامة بعد إصدار واحد ثابت. لحلّ هذه المشكلة، عليك نقل أي عمليات تنفيذ متوقّفة نهائيًا لـ Indication لاستخدام IndicationNodeFactory بدلاً منها. يمكنك أيضًا استخدام عمليات التحميل الزائد مع مَعلمة Indication صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات غير IndicationNodeFactory من Indication، على الرغم من أنّه لا يُنصح بذلك لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333)
  • تمت إضافة isFlingCancellationWithNestedScrollFixEnabled لحلّ مشكلة في نشر حركة التمرير السريع في التمرير المتداخل. في هذا التغيير، نعيد سلوك مواصلة العرض الذي تمت إزالته في I9326a. سيظل بإمكاننا إلغاء الصورة المتحركة في حال تمت إزالة العنصر الفرعي من التركيب. (I467f4، b/405910180، b/419049142، b/416784125)
  • أعِد إضافة استخدام scrollAnimationSpec في ContentInViewNode. تمت إزالة السلوك أثناء إيقاف scrollAnimationSpec نهائيًا، ما أدّى إلى تعطُّل حالات الاستخدام. (I1436a، b/403301605)
  • متوازن LazyLayout (If5db4LazyLayoutPrefetchState وطريقة الجدولة schedulePrecomposition وschedulePrecompositionAndPremeasure (I4362f، b/252853717) وLazyLayoutItemProvider (Icce09،b/261565751)
  • السماح لـ "الكتابة الذكية" بتفعيل 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 محملة بشكل زائد تتضمّن عناصر تحكّم في ميل اللمس وقفل الاتجاه. (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.8.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي في Gradle"، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.

  • تغيير غير متوافق: لا تتوافق عمليات التحميل الزائد clickable وcombinedClickable وselectable وtoggleable وtriStateToggleable بدون مَعلمة Indication الآن إلا مع مثيلات IndicationNodeFactory المقدَّمة باستخدام LocalIndication. سيتم تطبيق هذا التغيير عند إعادة تجميع استخدامات أدوات التعديل هذه باستخدام هذا الإصدار من Compose. لا تتأثر التبعيات الثنائية أو الانتقالية. إذا كنت توفّر عملية تنفيذ متوقّفة للإشارة إلى LocalIndication، وكنت تستخدم واجهات برمجة التطبيقات هذه، سيؤدي ذلك إلى حدوث عطل أثناء وقت التشغيل. هذا التغيير في السلوك ضروري لتحسين الأداء، والسماح للدوال القابلة للإنشاء التي تستخدم هذه المعدِّلات بالتخطّي أثناء إعادة الإنشاء. يمكنك استخدام 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 صريحة، وستواصل عمليات التحميل الزائد هذه إتاحة مثيلات Indication غير IndicationNodeFactory، على الرغم من أنّ هذا الإجراء لا يُنصح به لأسباب تتعلّق بالأداء. (I6bcdc، b/316914333)
  • إضافة علامة للتحكّم في السلوك التلقائي للجلب المُسبَق المتداخل: isAutomaticNestedPrefetchEnabled (I8d448)
  • قدِّم حمولة زائدة لكل من LazyGridState وrememberLazyGridState تأخذ LazyLayoutCacheWindow. (I51151)
  • إضافة مساطر لهوامش النوافذ تضيف DerivedRuler للسماح باحتساب أداة قياس المسافات من أداة قياس المسافات أخرى. تعدّل PlacmentScope لتنفيذ الكثافة. (I658bc، b/359260964)
  • تمت إضافة دالة مصنع WindowInsets() بدون وسيط لإنشاء WindowInsets فارغة بسهولة. (I65f62، b/395311689)
  • تمت إضافة PaddingValues.Zero إلى PaddingValues فارغ. (If193e، b/386255688)

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

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

الإصدار 1.8

الإصدار 1.8.3

‫18 يونيو 2025

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

الإصدار 1.8.2

‫20 مايو 2025

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

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

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

الإصدار 1.8.1

‫7 مايو 2025

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

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

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

الإصدار 1.8.0

‫23 أبريل 2025

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

الإصدار ‎1.8.0-rc03

‫9 أبريل 2025

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

الإصدار ‎1.8.0-rc02

‫26 مارس 2025

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

الإصدار ‎1.8.0-rc01

‫12 مارس 2025

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

الإصدار ‎1.8.0-beta03

‫26 فبراير 2025

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

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

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

الإصدار ‎1.8.0-beta02

‫12 فبراير 2025

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

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

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

الإصدار ‎1.8.0-beta01

‫29 يناير 2025

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

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

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

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

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

الإصدار ‎1.8.0-alpha08

‫15 يناير 2025

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

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

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

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

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

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

  • تم توحيد BasicTooltip في Foundation وBasicTooltip/Tooltip في Material3. (Ifc2e6)
  • تمت إضافة واجهة Clipboard جديدة وتركيبة محلية لها. (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 DSL الجديدة. (I68986)
  • يجب أن يستخدم LocalAutofillHighlightColor نوع Color. (I0e05b)
  • تمت إعادة تسمية OverscrollEffect#withoutDrawing إلى OverscrollEffect#withoutVisualEffect. (I1a154)

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

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

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

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

الإصدار ‎1.8.0-alpha06

‫13 نوفمبر 2024

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

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

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

الإصدار ‎1.8.0-alpha05

‫30 أكتوبر 2024

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

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

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

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

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

الإصدار ‎1.8.0-alpha04

‫16 أكتوبر 2024

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

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

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

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

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

الإصدار ‎1.8.0-alpha03

‫2 أكتوبر 2024

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

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

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

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

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

الإصدار ‎1.8.0-alpha02

‫18 سبتمبر 2024

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

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

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

الإصدار ‎1.8.0-alpha01

‫4 سبتمبر 2024

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

الإصدار 1.7

الإصدار 1.7.8

‫12 فبراير 2025

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

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

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

الإصدار 1.7.7

‫29 يناير 2025

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

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

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

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

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

الإصدار 1.7.6

‫11 ديسمبر 2024

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

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

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

الإصدار 1.7.5

‫30 أكتوبر 2024

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

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

  • تأكَّد من عدم إعادة إنشاء العناصر المثبّتة مرّتين في مساحة الحشو. (Ic6224)

الإصدار 1.7.4

‫16 أكتوبر 2024

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

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

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

الإصدار 1.7.3

‫2 أكتوبر 2024

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

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

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

الإصدار 1.7.2

‫18 سبتمبر 2024

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

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

  • تم إصلاح مشكلة في العنصر القابل للسحب الذي كانت تنقصه أحداث النقر مع السحب للأسفل، ما أدّى إلى ظهور عمليات التحريك السريع بشكل أبطأ من المعتاد.

الإصدار 1.7.1

‫10 سبتمبر 2024

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

الإصدار 1.7.0

‫4 سبتمبر 2024

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

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

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

الإصدار ‎1.7.0-alpha08

‫1 مايو 2024

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

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

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

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

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

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

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

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

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

الإصدار ‎1.7.0-alpha07

‫17 أبريل 2024

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

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

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

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

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

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

  • عندما يتم دمج InputTransformations مع next، يتم الآن دمج KeyboardOptions بشكل صحيح حسب الخيارات الفردية باستخدام طريقة KeyboardOptions.merge الجديدة. (Ie5304، b/295951492)
  • لم يعُد 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 وعرضها، وإتاحة ميزات العرض المضمّنة بدون الحاجة إلى التنسيق مع عمليات التنفيذ القابلة للإنشاء لتحديد مثيلات معدِّل GraphicsLayer.

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

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

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

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

الإصدار ‎1.7.0-alpha05

‫20 مارس 2024

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

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

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

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

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

الإصدار ‎1.7.0-alpha04

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

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

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

  • إتاحة ميزة الكتابة اليدوية باستخدام قلم الشاشة على الأجهزة التي تعمل بالإصدار Android 14 والإصدارات الأحدث (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)

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

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

الإصدار 1.7.0-alpha01

‫24 يناير 2024

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

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

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

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

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

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

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

الإصدار 1.6

الإصدار 1.6.8

‫12 يونيو 2024

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

الإصدار 1.6.7

‫1 مايو 2024

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

الإصدار 1.6.6

‫17 أبريل 2024

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

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

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

الإصدار 1.6.5

‫3 أبريل 2024

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

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

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

الإصدار 1.6.4

‫20 مارس 2024

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

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

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

الإصدار 1.6.3

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

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

الإصدار 1.6.2

‫21 فبراير 2024

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

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

  • إصلاح مشكلة عدم إعادة ضبط AnimateContentSize بشكلٍ سليم (I07051)
  • تم إصلاح المشكلة التي تؤدي إلى الإفراط في تخزين intrinsicHeight من النص مؤقتًا في بعض الحالات. (3cd398، b/217910352)

الإصدار 1.6.1

‫7 فبراير 2024

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

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

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

الإصدار 1.6.0

‫24 يناير 2024

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

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

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

الإصدار 1.6.0-rc01

‫10 يناير 2024

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

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

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

الإصدار ‎1.6.0-beta03

‫13 ديسمبر 2023

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

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

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

الإصدار 1.6.0-beta02

‫29 نوفمبر 2023

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

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

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

الإصدار 1.6.0-beta01

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

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

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

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

    تمت إضافة acceptsDragAndDropTransfer إلى dragAndDropTarget Modifier للقبول من جلسة السحب والإفلات. تعرض هذه الدالة اللامدا قيمة صالحة DragAndDropTarget إذا كنت مهتمًا بجلسة سحب وإفلات. تم استبدال دوال 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)
  • إصلاح مشكلة توافق البرنامج الثنائي مع تغيير Window Inset (Iee695)
  • إزالة الطبقة الأساسية للمادة من أجل Material3 Chip/Button لأنّ اختبارات الأداء الدقيقة تُظهر أداءً أفضل بدونها. (I55555)

الإصدار ‎1.6.0-alpha08

‫18 أكتوبر 2023

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

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

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

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

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

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

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

الإصدار 1.6.0-alpha07

‫4 أكتوبر 2023

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

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

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

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

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

الإصدار 1.6.0-alpha06

‫20 سبتمبر 2023

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

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

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

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

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

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

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

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

  • إزالة استخدام rememberSaveable للتلميحات (Icc131، b/299500338)

الإصدار ‎1.6.0-alpha05

‫6 سبتمبر 2023

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

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

  • أضِف عمليات تحميل زائدة للدالة BasicSecureTextField تقبل قيمة غير قابلة للتغيير ودالة ردّ لتغيير هذه القيمة، تمامًا مثل واجهة برمجة التطبيقات الحالية BasicTextField. (Ia4882)
  • أضِف Modifier.preferKeepClear() لوضع علامة على أنّه دالة مركّبة، وذلك لتجنُّب النوافذ العائمة على المستوى 33 لواجهة برمجة التطبيقات والإصدارات الأحدث. (Ib51d5، b/297260115)
  • يتم تحديد الحد الأقصى لسرعات التحريك السريع في مكوّنات العرض، مثل ScrollView وRecyclerView، عند ViewConfiguration.ScaledMaximumFlingVelocity. يتضمّن تطبيق "إنشاء" الآن إصدارًا خاصًا به من 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 مع السلوك في Views. (I93352، b/289088847)
  • أصبحت Modifier.consumeWindowInsets(PaddingValues) ثابتة الآن.
    • تمت إزالة واجهة برمجة التطبيقات Deprecated Modifier.consumedWindowInsets. يمكنك استخدام Modifier.consumeWindowInsets كبديل. (Id72bb)

الإصدار 1.6.0-alpha03

‫9 أغسطس 2023

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

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

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

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

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

الإصدار ‎1.6.0-alpha02

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

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

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

  • تم طرح PagerLayoutInfo مع معلومات تم جمعها بعد اجتياز مقياس في ‎Pager. قدّمنا أيضًا PageInfo، وهي المعلومات المتعلّقة بصفحة واحدة تم قياسها في Pager. (Iad003، b/283098900)
  • إضافة تعليقات توضيحية لتحديد المدخلات المسموح بها في العناصر القابلة للإنشاء (I51109)
  • تمت إضافة SemanticsNodeInteraction.requestFocus كطريقة أسهل وأكثر وضوحًا لطلب التركيز في الاختبارات. (Ie8722)
  • إعادة تصميم واجهة برمجة التطبيقات PlatformTextInput* بالكامل (I6c93a، b/274661182، b/267235947، b/277380808)
  • لم يعُد SoftwareKeyboardController وLocalSoftwareKeyboardController ميزتَين تجريبيتَين. أصبح LocalSoftwareKeyboardController الآن CompositionLocal مناسبًا أيضًا. (I4c364)
  • توفّر Modifier.transformable الآن قيمة "تغيير موضع التحريك" في المَعلمة 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() إلى أنواعها المتخصّصة المقابلة للعناصر الأساسية. رقم تعريف أداة التدقيق هو 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.(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 إلا بعد انتهاء جميع عمليات معاودة الاتصال بإطارات التشغيل. يتطابق ذلك مع سلوك Compose عند تشغيله بشكل طبيعي. ومع ذلك، قد يتعذّر إجراء الاختبارات التي تعتمد على السلوك القديم. يجب أن يؤثر ذلك فقط في الرمز الذي يستدعي withFrameNanos أو withFrameMillis مباشرةً، ويتضمّن منطقًا خارج دالة رد الاتصال التي تم تمريرها إلى هاتين الدالتين، وقد يحتاج إلى نقلها إلى داخل دوال رد الاتصال. يمكنك الاطّلاع على تغييرات اختبار الصورة المتحركة في رمز التغيير هذا للحصول على أمثلة.
  • تمت إضافة المَعلمة الاختيارية onPerformTraversals: (Long) -> Unit إلى الدالة الإنشائية TestMonotonicFrameClock ودالة المصنع لتنفيذ الرمز بعد عمليات رد الاتصال withFrameNanos ولكن قبل استئناف إجراءات الروتين الفرعي للمتصلين. (Idb413، b/254115946، b/222093277، b/255802670)
  • إضافة إجراءات تسهيل استخدام الصفحة: PageUp وPageDown وPageLeft وPageRight يُرجى العِلم أنّ هذه الميزات لا تتوفّر إلا من الإصدار 29 من واجهة برمجة التطبيقات. (Ida4ab)
  • نقدّم HorizontalPager وVerticalPager، وهما طريقتان لعرض العناصر القابلة للإنشاء بطريقة Pager. تمت إضافة PagerState للتحكّم في أدوات Pager بالإضافة إلى طلب معلومات عن الحالة الحالية لأداة Pager. تم تقديم PageSize، وهي طريقة للتحكّم في حجم صفحة Pager، ويمكن استخدامها لإنشاء لوحة عرض دوّارة مثل Pagers. تم تقديم PagerSnapDistance، وهي طريقة للتحكّم في طريقة عمل المحاذاة في سلوك التمرير السريع في Pager. (I01120)
  • تم تقديم حمل زائد في SnapFlingBehavior.performFling للمساعدة في فهم موضع الاستقرار عند تمرير الإصبع ثم رفعه بسرعة. (I569f6)
  • تمت إزالة جهة الاتصال "OverscrollEffect#isEnabled". بدلاً من الحاجة إلى تذكُّر ضبط هذه العلامة، ما عليك سوى عدم إرسال الأحداث إلى تأثير تجاوز حد التمرير في الحالات التي لا تريد فيها عرض تجاوز حد التمرير (على سبيل المثال، إذا كان كل من ScrollableState#canScrollForward/backward يعرض القيمة "خطأ"). (I1a4b0، b/255554340، b/255557085)
  • تمت إضافة ScrollableState#canScrollForward وScrollableState#canScrollBackward للاستعلام عمّا إذا كان ScrollableState يتضمّن مساحة للتمرير في أي من الاتجاهين (سواء كان في الحد الأدنى أو الأقصى لنطاقه). يكون هذا الإعداد تلقائيًا على "صحيح" للتوافق مع عمليات التنفيذ الحالية لـ ScrollableState. يمكن للمستهلكين استخدام ذلك للإشارة إلى المستخدم بأنّه لا يزال هناك مساحة للتمرير، ويمكن أيضًا استخدام ذلك لتجنُّب إرسال دلتا إلى ScrollableStates التي لا تتضمّن مساحة للتمرير في اتجاه معيّن، وذلك للحدّ من العمل غير الضروري. (Idf1a0، b/255557085)
  • تمت إضافة Modifier API للاستعلام عن معلومات التمرير الخاصة بالعناصر الرئيسية. (I2ba9d، b/203141462)
  • يُستخدَم في Clickable لتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث تمرير.
  • تم إصلاح المشكلة التي كانت تتسبّب في عدم تأخير تأثيرات التموّج بشكل صحيح عند استخدام Clickables داخل Scrollable ViewGroup.
  • تم تعديل الأدراج وأوراق البيانات لتأخير الضغطات بشكل صحيح في حال إمكانية تحوّل الإيماءات إلى أحداث تمرير.
  • تعديل تسمية snapStepSize لتكون متسقة مع الطرق الأخرى في SnapLayoutInfoProvider (Ife67c)
  • تمت إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806)
  • تمت إعادة تسمية consumedWindowInsets() إلى consumeWindowInsets() وwithConsumedWindowInsets() إلى onConsumedWindowInsetsChanged() وإتاحة المعدِّلات للجميع. (Ie44e1)

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

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

الإصدار 1.4.0-alpha02

‫9 نوفمبر 2022

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

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

  • تقبل السمتان awaitFirstDown وwaitForUpOrCancellation الآن القيمة PointerEventPass لتوفير مرونة أكبر. (I7579a، b/212091796)
  • إرجاع واجهة برمجة التطبيقات beyondBoundCount من واجهات Lazy* 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)
  • تقبل الآن الفئتان Paragraph وMultiParagraph المَعلمة Constraints. في الوقت الحالي، لا يؤدي تمرير Constraints.maxHeight إلى تنفيذ أي عملية، ولكن سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل حذف بعض الأحرف استنادًا إلى الارتفاع. (I6afee، b/168720622)
  • تقبل السمة SubcomposeSlotReusePolicy.getSlotsToRetain() الآن فئة مخصّصة تشبه MutableSet ولا تسمح بإضافة عناصر جديدة إليها. (Icd314)
  • تم إيقاف الاستهلاك الجزئي (النزول أو الموضع) نهائيًا في PointerInputChange. يمكنك استخدام consume() لاستهلاك التغيير بالكامل. يمكنك استخدام isConsumed لتحديد ما إذا كان مستخدم آخر قد استهلك التغيير من قبل أم لا.
  • تنشئ الدالة PointerInputChange::copy() الآن نسخة سطحية دائمًا. وهذا يعني أنّه سيتم استخدام نُسخ PointerInputChange عند استخدام إحدى النُسخ. إذا أردت إنشاء PointerInputChange غير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674)
  • تم طرح LazyLayout API تجريبية جديدة. يتيح لك ذلك إنشاء مكوّناتك الخاصة، مثل 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، لذا يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً أمرًا نادرًا . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة، أو دوال قابلة للإنشاء مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عامة تكون تعبيرات lambda قابلة للإنشاء (يتم استنتاج المتغيرات والمعلَمات المحلية)، أو عند استخدام 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)

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

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

الإصدار 1.2.0-alpha02

‫26 يناير 2022

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

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

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

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

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

الإصدار 1.2.0-alpha01

‫12 يناير 2022

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

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

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

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

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

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

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

الإصدار 1.1

الإصدار 1.1.1

‫23 فبراير 2022

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

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

  • إصلاح NullPointerException في androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059 وb/206677462)
  • تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة من الحافظة على جهاز Android. (I06020، b/197769306)
  • إصلاح مشكلة عرض النصوص من اليمين إلى اليسار في 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 API للسماح بإعداد التأثير المرئي لتجاوز حد التمرير. قدِّم قيمة فارغة لإيقاف تأثير تجاوز حد التمرير. (I0c304، b/171682480)
  • يتضمّن AwaitPointerEventScope الآن الدالتَين withTimeout()‎ وwithTimeoutOrNull()‎ (I507f0 وb/179239764 وb/182397793)
  • تمت إضافة طريقة اختبار للحصول على الحدود المقتصة. (I6b28e)
  • تمت إضافة الحد الأدنى لحجم مساحة اللمس إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)

الإصدار ‎1.1.0-alpha02

‫18 أغسطس 2021

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

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

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

الإصدار ‎1.1.0-alpha01

‫4 أغسطس 2021

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

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

  • تم تعديل طريقة DrawScope#drawImage التي تستهلك مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterQuality اختيارية. ويفيد ذلك في إنشاء صور فن البكسل التي من المفترض أن تكون منقطة عند تكبيرها. تم تعديل BitmapPainter وImage composable ليستهلكا أيضًا مَعلمة FilterQuality اختيارية (Ie4fb0، b/180311607)
  • يزيل TextField الآن التحديد عند الضغط على زر الرجوع، وهو ما يتوافق مع سلوك 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 هذه التعديلات.

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

الإصدار 1.0.1

‫4 أغسطس 2021

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

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

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

الإصدار 1.0.0

‫28 يوليو 2021

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

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

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

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

  • إذا كنت تستخدم الإصدار 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).

  • تمت إعادة تسمية "الموفّرون" إلى 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 بدلاً من تعبير لامدا بسيط. يمكنك إنشاء حالة من خلال 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. تمت إزالة النوع العام، لذا يمكنك تمرير Any كمفتاح. لم يعُد من الضروري إضافة التعليق التوضيحي التجريبي. (I0902e، b/174598702)

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تمت إزالة جهة الاتصال "Recomposer.current()". [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. يتم إيقاف إعادة التركيب وعلامات الصورة المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)

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

الإصدار ‎1.0.0-alpha11

‫28 يناير 2021

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

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

  • إيقاف نهائيًا للدالة scrollBy التي لا يتم تعليقها، وإزالة الدالة scrollTo التي لا يتم تعليقها

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

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

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

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

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

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

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

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

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

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

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

  • تمت إضافة المَعلمة propagateMinConstraints إلى Box لتحديد ما إذا كان يجب تمرير الحد الأدنى من القيود الواردة إلى محتوى Box أم لا. القيمة التلقائية هي 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 هذه التعديلات.

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

  • إضافة واجهة Scrollable

    يتيح ذلك التعامل مع 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)
  • تم جعل حقلَي وقت التشغيل والموضع في PointerInputData غير قابلَين للتصغير. (Id468a)
  • يضبط MaterialTheme الآن الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستندة إلى Material استخدام AmbientTextSelectionColors يدويًا لتخصيص الألوان المستخدَمة في التحديد. (I1e6f4، b/139320372، b/139320907)
  • تمت إعادة تسمية مَعلمة المحاذاة الخاصة بـ Box إلى contentAlignment. (I2c957)
  • تمت إعادة تسمية معدِّلات offsetPx إلى offset. تتلقّى هذه الدوال الآن مَعلمات lambda بدلاً من State. (Ic3021، b/173594846)
  • تمت إضافة WindowManager.isWindowFocused للتحقّق ممّا إذا كانت نافذة المضيف محل التركيز، وWindowFocusObserver الذي يوفّر معاودة الاتصال onWindowFocusChanged. (I53b2a، b/170932874)
  • تمت إضافة المَعلمة resetInput إلى TextInputService#onStateUpdated (I3e8f5، b/172239032، b/171860947)
  • تعديل على واجهة برمجة التطبيقات TextFieldValue
    • جعل TextFieldValue.composition للقراءة فقط
    • تمت إزالة الاستثناء الذي تم طرحه لنطاق التحديد غير الصالح (I4a675، b/172239032)
  • تم إيقاف Ambients القديمة التي تحمل اللاحقة Ambient، واستبدالها بسمات جديدة مسبوقة بـ Ambient، وذلك وفقًا لإرشادات Ambients الأخرى وواجهة برمجة تطبيقات Compose. (I33440)
  • تمت إضافة أداة التغليف Android Typeface. يمكنك تحميل Android Typeface من خلال الدالة typeface، أي typeface(Typeface.DEFAULT). تمت أيضًا إعادة تسمية typefaceFromFontFamily() إلى typeface() (I52ab7)
  • تمت إضافة عملية فحص lint للتأكّد من أنّ أدوات إنشاء Modifier تستخدم androidx.compose.ui.composed {} داخليًا، بدلاً من وضع علامة @Composable عليها. (I3c4bc)
  • تمت إضافة عملية فحص lint للتأكّد من أنّ دوال إنشاء عنصر التعديل معرَّفة كإضافات على عنصر التعديل، حتى يمكن ربطها بسلاسة. (I07981)
  • تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants إلى mergeDescendants. (Ib6250)
  • أصبح التحكّم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521)
  • إزالة الوحدة القديمة ui-test ورموزها (I3a7cb)
  • تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified بما يتوافق مع الوحدات الأخرى. (Ifce19)
  • تم تعديل واجهة "المحاذاة" وإتاحتها. (I46a07، b/172311734)
  • تم دمج الوحدة foundation:foundation-text في foundation:foundation (Idac0f)
  • إيقاف الدالتَين place(Offset) وplaceRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع إزاحات الأعداد الصحيحة بدلاً من ذلك (I4c5e7).
  • تمت إعادة تسمية "id" إلى "layoutId" في LayoutIdParentData. تمت إعادة تسمية "Measurable.id" إلى "Measurable.layoutId". (Iadbcb، b/172449643)

الإصدار ‎1.0.0-alpha07

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

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

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

  • على غرار Modifier.fillMaxSize[Width|Height]، أصبحنا الآن نتيح استخدام الكسور في Modifier.fillParentMaxSize[Width|Height] ضمن نطاق LazyColumn/Row (I797e2، b/166586426).
  • تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات المتاحة للجميع. (Ic2e45)
  • تم إيقاف Foundation AmbientTextStyle وProvideTextStyle وAmbientContentColor نهائيًا. بدلاً من ذلك، استخدِم الإصدارات الجديدة المتوفّرة في مكتبة Material. بالنسبة إلى التطبيقات غير المستندة إلى Material، عليك بدلاً من ذلك إنشاء أنظمة تصميم خاصة بها تتضمّن بيئات سمات يمكن استخدامها في مكوناتك الخاصة. (I74acc، b/172067770)
  • تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية وغير مشروطة لا تستخدم قيمًا من سمة، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
  • تمت إضافة maxLines إلى حقول النص (TextFields) (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 إلى أداة التعديل aspectRatio، والتي يمكن استخدامها لتحديد أداة التعديل التي سيتم تغيير حجمها وفقًا لقيود الارتفاع قبل تجربة العناصر المتوافقة مع العرض. (Ie7c43، b/155290593)
  • تمت إزالة DpConstraints المتوقّفة نهائيًا. (I87884، b/171702471)

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

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

الإصدار ‎1.0.0-alpha06

‫28 أكتوبر 2020

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

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

  • تم نقل androidx.compose.foundation.Icon إلى androidx.compose.material.Icon. يمكنك أيضًا استخدام مكوّن الصورة / Modifier.paint() مع Painter إذا كنت لا تريد استخدام مكتبة Material. (I9f622)
  • إضافة interactionState إلى Modifier.scrollable وScrollableColumn وLazyColumnFor (I81566 وb/169509805)
  • تمت إضافة alignByBaseline إلى RowScope وتمت إعادة تسمية alignWithSiblings إلى alignBy (I06503، b/170628732)
  • تم تحويل Box إلى دالة مضمّنة. (Ibce0c، b/155056091)
  • تمت إضافة maxLines إلى CoreTextField (Ibee58، b/143687793)
  • تمت إضافة ميزة "الالتفاف الناعم" إلى 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. يتمثل سلوك Box الجديد في ترتيب العناصر الفرعية بعضها فوق بعض عندما يتضمّن عدة عناصر فرعية، وهذا يختلف عن Box السابق الذي كان يتصرف بشكل مشابه لـ Column. (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
    • تمت إضافة تحميل زائد للداخلة يوفّر قيمة الداخلة نفسها لجميع الحدود الأربعة
    • تمت إزالة المستندات المتعلقة بطريقة inset التي تشير إلى أنّه سيتم تطبيقها على جميع الجوانب الأربعة
    • عدّلنا مستندات فئة 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)
  • Hide FloatingToolbar After Tapping on the Text. (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 في القوائم الكسولة. توفّر هذه السمة معدِّلات لملء الحد الأقصى لحجم العنصر الرئيسي، ما يحلّ حالة الاستخدام عندما يجب أن يملأ العنصر إطار العرض ولا تعمل السمة 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. تم تعديل فئة "المخطّط التفصيلي" لتضمين التعليقات التوضيحية ‎ @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 في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الصور المتحركة الثابتة -حسِّن لغة المجال الخاص بالانتقال من خلال إزالة شرط 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. استخدام User Box مع المعدِّل drawBackground بدلاً من ذلك (I983c7، b/152753731)

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

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

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

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

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

  • تعديل على TextField: سيشغل كل المساحة المتاحة المخصّصة له في البُعد الأفقي (Ib08df، b/154638552)

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

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

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

  • تعديل على TextField API: تم دمج عمليات معاودة الاتصال 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 إلى مربّع الاختيار ومفتاح التحكّم والعنصر القابل للتبديل (I41c16)

  • أصبح Ripple الآن أداة تعديل. على الرغم من أنّه لم يتم بعد تحويل 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)

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

  • تمت إعادة تسمية EdgeInsets إلى InnerPadding. تمت إعادة تسمية المَعلمة innerPadding لأزرار Material إلى padding. (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 من Row وColumn (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 تم إنشاؤه من قبل بطريقة مشابهة لطريقة عمله في Activity أو Fragment (I5fdd1)
  • تمت إعادة تصميم فئة Radius لتصبح فئة مضمّنة. تمت إزالة طرق إنشاء العناصر المصاحبة واستبدالها بدالة إنشائية مع مَعلمة تلقائية ليتطابق نصف القطر على المحور الصادي مع نصف القطر الإلزامي على المحور السيني.

    تم تعديل 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 من دالة مركّبة عادية إلى عرض عنصر تعديل 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 منطقية عند استخدام 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)