Compose Foundation

يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء عناصر نظام التصميم الخاص بك.
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫2 يوليو 2025 1.8.3 - 1.9.0-beta02 -

البنية

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

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

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

تعريف التبعيات

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

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

رائع

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

الملاحظات

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

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

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

الإصدار 1.9

الإصدار 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. كما أنّه يعرض LocalTextClassifierCoroutineContext compositionLocal ثابتًا يمكن استخدامه لتحديد CoroutineContext الذي يتم فيه تشغيل مهمة TextClassification. (I1dbaa، b/139321320)

الإصدار 1.9.0-alpha03

‫20 مايو 2025

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

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

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

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

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

الإصدار 1.9.0-alpha02

‫7 مايو 2025

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

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

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

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

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

الإصدار 1.9.0-alpha01

‫23 أبريل 2025

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

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

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

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

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

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

الإصدار 1.8

الإصدار 1.8.3

‫18 يونيو 2025

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

الإصدار 1.8.2

‫20 مايو 2025

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

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

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

الإصدار 1.8.1

‫7 مايو 2025

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

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

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

الإصدار 1.8.0

‫23 أبريل 2025

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

الإصدار 1.8.0-rc03

‫9 أبريل 2025

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

الإصدار 1.8.0-rc02

‫26 مارس 2025

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

الإصدار 1.8.0-rc01

‫12 مارس 2025

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

الإصدار 1.8.0-beta03

‫26 فبراير 2025

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

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

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

الإصدار 1.8.0-beta02

‫12 فبراير 2025

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

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

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

الإصدار 1.8.0-beta01

‫29 يناير 2025

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

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

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

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

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

الإصدار 1.8.0-alpha08

‫15 يناير 2025

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

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

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

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

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

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

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

الإصدار 1.8.0-alpha07

‫11 ديسمبر 2024

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

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

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

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

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

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

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

الإصدار 1.8.0-alpha06

‫13 نوفمبر 2024

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

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

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

الإصدار 1.8.0-alpha05

‫30 أكتوبر 2024

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

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

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

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

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

الإصدار 1.8.0-alpha04

‫16 أكتوبر 2024

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

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

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

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

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

الإصدار 1.8.0-alpha03

‫2 أكتوبر 2024

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

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

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

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

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

الإصدار 1.8.0-alpha02

‫18 سبتمبر 2024

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

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

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

الإصدار 1.8.0-alpha01

‫4 سبتمبر 2024

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

الإصدار 1.7

الإصدار 1.7.8

‫12 فبراير 2025

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

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

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

الإصدار 1.7.7

‫29 يناير 2025

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

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

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

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

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

الإصدار 1.7.6

‫11 ديسمبر 2024

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

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

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

الإصدار 1.7.5

‫30 أكتوبر 2024

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

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

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

الإصدار 1.7.4

‫16 أكتوبر 2024

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

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

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

الإصدار 1.7.3

‫2 أكتوبر 2024

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

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

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

الإصدار 1.7.2

‫18 سبتمبر 2024

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

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

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

الإصدار 1.7.1

‫10 سبتمبر 2024

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

الإصدار 1.7.0

‫4 سبتمبر 2024

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

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

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

الإصدار 1.7.0-rc01

‫21 أغسطس 2024

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

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

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

الإصدار 1.7.0-beta07

‫7 أغسطس 2024

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

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

  • ستعرض الآن دوال SemanticsNodeInteraction إدخال النص ذات الصلة performTextReplacement وperformTextInput وperformTextClearance أخطاء تأكيد عند طلبها على TextFields للقراءة فقط. (I4ae8f)
  • تم إصلاح خلل مرئي في الروابط التشعبية. (I23311)
  • تم إصلاح مشكلة عدم عمل المعدِّل contentReceiver مع بعض برامج تحرير أسلوب الإدخال.
  • إنشاء السرعة: منع انتشار قيم 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 من Material (I5477b)

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

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

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

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

الإصدار 1.7.0-beta01

‫14 مايو 2024

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

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

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

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

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

الإصدار 1.7.0-alpha08

‫1 مايو 2024

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

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

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha07

‫17 أبريل 2024

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

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

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha06

‫3 أبريل 2024

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha05

‫20 مارس 2024

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

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

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

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

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

الإصدار 1.7.0-alpha04

‫6 مارس 2024

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

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

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

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

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

الإصدار 1.7.0-alpha03

‫21 فبراير 2024

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

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

  • تم تقديم DelegatableNode.requireLayoutCoordinates() كطريقة للحصول على Modifier.Node الحالي LayoutCoordinates بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في خاصية بنفسك. (Ia8657)
  • تم تقديم DelegatableNode.currentLayoutCoordinates كطريقة للحصول على Modifier.Node الحالي LayoutCoordinates بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في خاصية بنفسك. (Iaebaa)
  • تحسينات الأداء في DraggableAnchors التي يستخدمها AnchoredDraggable (I89cff)
  • تم نقل BasicTextField2 وواجهات برمجة التطبيقات ذات الصلة ضمن حزمة androidx.compose.foundation.text2 إلى androidx.compose.foundation.text. (I9f635)
  • لم يعُد BasicTextField2 يقبل المَعلمة CodepointTransformation. استخدِم BasicSecureTextField أو OutputTransformation. (Id34ff)
  • تمت إضافة طريقة لمقارنة التعليقات التوضيحية لملفَي AnnotatedStrings فقط. (I32659)
  • نقدّم لك ContextualFlowRow و"FlowRow/Column المحسّن" مع MaxLines وOverflow. يسرّنا الإعلان عن تحسينات على الرمزين التجريبيين FlowRow وFlowColumn، إذ أصبحا يتضمّنان الآن maxLines وإمكانية عرض المحتوى الزائد، بالإضافة إلى طرح الرمزين ContextualFlowRow وContextualFlowColumn للمرة الأولى. تم تصميم هذا التحديث لتوفير مكوّنات ذات أداء مثالي، حيث إنّ ContextualFlow* مثالية لعدد كبير من العناصر التي تستخدم إعدادات maxLines صغيرة وأزرار ديناميكية +N "عرض المزيد"، بينما FlowRow وFlowColumn مثاليتان لعدد صغير من العناصر، أي أقل من 100 عنصر. ملاحظة مهمة: للحفاظ على السلوك الحالي في FlowRow أو FlowColumn حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتناسب مع الحد الأقصى للمحور العرضي، اضبط overflow على FlowRowOverflow.Visible أو FlowColumnOverflow.Visible أثناء عملية التهيئة. يمكنك استكشاف ContextualFlowRowSample وFlowRowSample للاطّلاع على أمثلة على هذه الميزات الجديدة. (Ib9135، b/293577082)

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

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

الإصدار 1.7.0-alpha02

‫7 فبراير 2024

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

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

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

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

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

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

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

الإصدار 1.7.0-alpha01

‫24 يناير 2024

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

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

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

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

  • نقدّم DecayAnimation في AnchoredDraggable، ويضيف هذا التغيير المَعلمة decayAnimationSpec إلى AnchoredDraggable ما يتيح استخدام الحركة المتلاشية عند الاستقرار على أحد عناصر الربط. يشمل التغيير أيضًا إعادة تسمية animationSpec الحالي إلى snapAnimationSpec للمساعدة في فهم حالة استخدام كل مواصفة.
  • يتوفّر BasicTextField2 للاستخدام التجريبي. يجب أن يكون متوافقًا مع BasicTextField من حيث الميزات، وأن يكون السلوك جاهزًا للاستخدام في بيئة الإنتاج. ومع ذلك، لا تزال واجهة برمجة التطبيقات تجريبية في الوقت الحالي. وقبل أن يصبح ثابتًا، ستتم إعادة تسميته إلى BasicTextField ونقله إلى الحزمة نفسها.
  • تم طرح المسوّدة الأولى من واجهة برمجة التطبيقات OutputTransformation لـ BasicTextField2. تحلّ واجهة برمجة التطبيقات هذه محلّ معظم حالات استخدام VisualTransformation في BasicTextField القديم. ومع ذلك، لم يتم الانتهاء من هذه الواجهة بعد، وقد لا تعمل بعض الميزات بشكل صحيح، ولكننا نقدّر أي ملاحظات حول سهولة استخدام واجهة برمجة التطبيقات لحالات الاستخدام الخاصة بك. (aosp/2708848)
  • تمت إضافة LinkAnnotation التي تتيح إضافة روابط وعناصر قابلة للنقر إلى النص. لم تكتمل ميزة "الروابط" بعد، وسيتم إجراء المزيد من التغييرات على واجهة برمجة التطبيقات.
  • تم تقديم المعدِّل receiveContent الذي يوفّر للمطوّرين طريقة لتلقّي محتوى غني في Jetpack Compose.
  • يتكامل receiveContent مع BasicTextField2 لقبول المحتوى المنسّق الذي توفّره لوحة المفاتيح البرمجية أو من خلال اللصق من الحافظة.
  • تتيح لك السمة KeyboardOptions.shouldShowKeyboardOnFocus إيقاف السلوك التلقائي للسمة BasicTextField المتمثل في طلب لوحة مفاتيح برمجية عند التركيز.
  • تم إيقاف TextInputService وLocalTextInputService نهائيًا. يمكنك استخدام PlatformTextInputModifierNode بدلاً من ذلك للدمج مباشرةً مع واجهات برمجة التطبيقات الخاصة بطرق الإدخال في النظام الأساسي. (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 إلى drawDragDecoration في Modifier.dragAndDrawSource، كما تمت إعادة تسمية مَعلمة الحجم إلى dragDecorationSize في DragAndDropInfo. (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 على عمليات الإيداع هذه.

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

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

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

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

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

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

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

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

الإصدار 1.6.0-alpha05

‫6 سبتمبر 2023

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

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

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

الإصدار 1.6.0-alpha04

‫23 أغسطس 2023

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

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

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

الإصدار 1.6.0-alpha03

‫9 أغسطس 2023

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

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

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

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

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

الإصدار 1.6.0-alpha02

‫26 يوليو 2023

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

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

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

الإصدار 1.6.0-alpha01

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

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

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

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

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

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

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

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

الإصدار 1.5

الإصدار 1.5.4

‫18 أكتوبر 2023

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

الإصدار 1.5.3

‫4 أكتوبر 2023

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

الإصدار 1.5.2

‫27 سبتمبر 2023

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

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

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

الإصدار 1.5.1

‫6 سبتمبر 2023

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

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

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

الإصدار 1.5.0

‫9 أغسطس 2023

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

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

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

الإصدار 1.5.0-rc01

‫26 يوليو 2023

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

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

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

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

الإصدار 1.5.0-beta03

‫28 يونيو 2023

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

الإصدار 1.5.0-beta02

‫7 يونيو 2023

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

الإصدار 1.5.0-beta01

‫24 مايو 2023

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

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

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

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

  • تقليل عمليات التخصيص أثناء قياس القوائم/الشبكات الكسولة وما إلى ذلك (Iaf9e2)
  • تقليل عمليات التخصيص عند تطبيق اللقطات (I65c09)
  • تمت إزالة عمليات التخصيص من الصور المتحركة النابضة (Ie9431)
  • تمت إزالة عملية التخصيص من TextLayout (I0fd11)
  • تمت إزالة عمليات تخصيص متعدّدة في تتبُّع سرعة المؤشر (I26bae)

الإصدار 1.5.0-alpha04

‫10 مايو 2023

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

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

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

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

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

الإصدار 1.5.0-alpha03

‫19 أبريل 2023

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

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

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

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

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

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

الإصدار 1.5.0-alpha02

‫5 أبريل 2023

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

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

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

الإصدار 1.5.0-alpha01

‫22 مارس 2023

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

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

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

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

  • تم تعديل الأجزاء الداخلية من Modifier.hoverable. لن يظهر المعدِّل hoverable في "نافذة الفحص" إلا إذا كان مفعّلاً. (I82103)

الإصدار 1.4

الإصدار 1.4.3

‫3 مايو 2023

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

الإصدار 1.4.2

‫19 أبريل 2023

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

الإصدار 1.4.1

‫5 أبريل 2023

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

الإصدار 1.4.0

‫22 مارس 2023

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

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

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

الإصدار 1.4.0-rc01

‫8 مارس 2023

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

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

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

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

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

الإصدار 1.4.0-beta02

‫22 فبراير 2023

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

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

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

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

  • لم يعُد بإمكانك تحديد جزء من حرف عند تعديل مقابض التحديد. (Idedd1)
  • إصلاح عُطل عند الضغط على Ctrl+Backspace في TextField فارغ (I0427f، b/244185537)

الإصدار 1.4.0-beta01

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

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

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

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

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

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

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

  • تمت إضافة السمة mainAxisItemSpacing إلى LazyListLayoutInfo وLazyGridLayoutInfo وLazyStaggeredGridItemInfo (I52fad)

الإصدار 1.4.0-alpha05

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

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

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

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

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

  • تدمج واجهات برمجة التطبيقات السابقة واللاحقة لـ OverscrollEffect في وظائف applyToScroll وapplyToFling مدمجة "للتزيين". يمكنك الاطّلاع على النماذج المعدّلة في المستندات للحصول على أمثلة حول كيفية تنفيذ تأثير التمرير الزائد باستخدام شكل واجهة برمجة التطبيقات الجديد. (I8a9c4، b/255554340)
  • المزيد من أنواع/قيم null للدوال المضمّنة/المخفية التي تم إيقافها نهائيًا (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، ويمكن استخدامها لإنشاء لوحة عرض دوّارة مثل أدوات Pager. تم تقديم PagerSnapDistance، وهي طريقة للتحكّم في طريقة عمل المحاذاة في سلوك التمرير السريع في Pager. (I01120)
  • تم تقديم حمولة زائدة في SnapFlingBehavior.performFling للمساعدة في فهم المكان الذي سيستقر فيه الإلقاء. (I569f6)
  • تمت إزالة OverscrollEffect#isEnabled. بدلاً من الحاجة إلى تذكُّر هذا العلامة وضبطها، ما عليك سوى عدم إرسال الأحداث إلى تأثير التمرير الزائد في الحالات التي لا تريد فيها ظهور التمرير الزائد (على سبيل المثال، إذا كان كل من ScrollableState#canScrollForward/backward يعرض القيمة "خطأ"). (I1a4b0، b/255554340، b/255557085)
  • تمت إضافة ScrollableState#canScrollForward وScrollableState#canScrollBackward للاستعلام عمّا إذا كان ScrollableState يتضمّن مساحة للتمرير في أي من الاتجاهين (سواء كان في الحد الأدنى أو الأقصى لنطاقه). يكون هذا الإعداد تلقائيًا على "صحيح" للتوافق مع الأنظمة القديمة التي تستخدم ScrollableState. يمكن للمستهلكين استخدام ذلك لإظهار مؤشر للمستخدم بأنّه لا يزال هناك مساحة للتمرير، ويمكن أيضًا استخدام ذلك لتجنُّب إرسال دلتا إلى ScrollableStates التي لا تتضمّن مساحة للتمرير في اتجاه معيّن، وذلك للحدّ من العمل غير الضروري. (Idf1a0، b/255557085)
  • تمت إضافة Modifier API للاستعلام عن معلومات التمرير الخاصة بالعناصر الرئيسية. (I2ba9d، b/203141462)
  • يُستخدَم في Clickable لتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تصبح الإيماءات أحداث تمرير.
  • تم إصلاح المشكلة المتمثلة في عدم تأخير Clickables التموجات بشكلٍ صحيح عند استخدامها داخل Scrollable ViewGroup.
  • تم تعديل الأدراج وأوراق البيانات لتأخير الضغطات بشكل صحيح في حال إمكانية تحوّل الإيماءات إلى أحداث تمرير.
  • تعديل تسمية snapStepSize لتكون متسقة مع الطرق الأخرى في SnapLayoutInfoProvider (Ife67c)
  • تمت إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806)
  • تمت إعادة تسمية consumedWindowInsets() إلى consumeWindowInsets() وwithConsumedWindowInsets() إلى onConsumedWindowInsetsChanged()، وأصبحت "المعدّلات" متاحة للجميع. (Ie44e1)

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

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

الإصدار 1.4.0-alpha02

‫9 نوفمبر 2022

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

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

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

الإصدار 1.4.0-alpha01

‫24 أكتوبر 2022

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

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

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

الإصدار 1.3

الإصدار 1.3.1

‫9 نوفمبر 2022

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

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

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

الإصدار 1.3.0

‫24 أكتوبر 2022

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

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

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

الإصدار 1.3.0-rc01

‫5 أكتوبر 2022

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

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

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

الإصدار 1.3.0-beta03

‫21 سبتمبر 2022

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

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

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

الإصدار 1.3.0-beta02

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

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

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

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

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

  • إعادة تصميم AwaitPointerEventScope#awaitLongPressOrCancellation لتتوافق مع دوال await الأخرى (I646e6)

الإصدار 1.3.0-beta01

‫24 أغسطس 2022

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

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

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

الإصدار 1.3.0-alpha03

‫10 أغسطس 2022

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

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

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

الإصدار 1.3.0-alpha02

‫27 يوليو 2022

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

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

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

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

  • سيتم الآن إخفاء لوحة المفاتيح البرمجية عند إيقاف حقل نص أثناء التركيز عليه. (I6e3e4، b/237308379)
  • عند إضافة أحداث InputEventChange إلى أداة 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. يتيح لك ذلك إنشاء مكوّناتك الخاصة، مثل LazyColumn من LazyVerticalGrid. يُرجى العِلم أنّ واجهة برمجة التطبيقات في مراحلها الأولى ويمكن تغييرها في الإصدارات المستقبلية. (Iba2bc، b/166591700)
  • تأخذ الدالة الإنشائية AndroidFont الآن typefaceLoader كمَعلمة. (I2c971)
  • تعرض WindowInsets الآن حالة الظهور (ما إذا كانت تظهر على الشاشة، بغض النظر عمّا إذا كانت تتقاطع مع النافذة) والحجم الذي يمكن أن تكون عليه إذا كانت متاحة على الجهاز، ولكنها غير نشطة حاليًا. (I65182، b/217770337)

الإصدار 1.2.0-alpha07

‫6 أبريل 2022

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

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

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha01

‫12 يناير 2022

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

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

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

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

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

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

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

الإصدار 1.1

الإصدار 1.1.1

‫23 فبراير 2022

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

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

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

الإصدار 1.1.0

‫9 فبراير 2022

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

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

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

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

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

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

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

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

  • تم إصلاح مشكلة عدم تحرّك مقابض النص عند تغيُّر إذن الوصول إلى "محرّك طرق الإدخال". (I25f2e)

الإصدار 1.1.0-beta03

‫17 نوفمبر 2021

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

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

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

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

الإصدار 1.1.0-beta02

‫3 نوفمبر 2021

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

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

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

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

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

الإصدار 1.1.0-beta01

‫27 أكتوبر 2021

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

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

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

الإصدار 1.1.0-alpha06

‫13 أكتوبر 2021

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

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

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

الإصدار 1.1.0-alpha05

‫29 سبتمبر 2021

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

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

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

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

الإصدار 1.1.0-alpha04

‫15 سبتمبر 2021

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

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

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

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

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

الإصدار 1.1.0-alpha03

‫1 سبتمبر 2021

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

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

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

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

  • تمت إضافة تأثير التوهّج للتمرير. تمت إضافة واجهة برمجة التطبيقات التجريبية الجديدة OverScrollConfiguration للسماح بإعداد التأثير المرئي للتمرير السريع. قدِّم قيمة فارغة لإيقاف تأثير التمرير الزائد. (I0c304، b/171682480)
  • يتضمّن AwaitPointerEventScope الآن الدالتَين withTimeout()‎ وwithTimeoutOrNull()‎ (I507f0 وb/179239764 وb/182397793)
  • تمت إضافة طريقة اختبار للحصول على الحدود المقتصة. (I6b28e)
  • تمت إضافة الحدّ الأدنى لحجم مساحة اللمس إلى ViewConfiguration لاستخدامه في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)

الإصدار 1.1.0-alpha02

‫18 أغسطس 2021

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

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

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

الإصدار 1.1.0-alpha01

‫4 أغسطس 2021

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

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

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

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

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

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

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

الإصدار 1.0

الإصدار 1.0.5

‫3 نوفمبر 2021

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

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

  • تم إصلاح خطأ في تتبُّع الأعطال في مثيلات derivedStateOf. (aosp/1792247)

الإصدار 1.0.4

‫13 أكتوبر 2021

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

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

  • تم تعديلها لتعتمد على Kotlin 1.5.31

الإصدار 1.0.3

‫29 سبتمبر 2021

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

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

  • تم تعديلها لتعتمد على Kotlin 1.5.30

الإصدار 1.0.2

‫1 سبتمبر 2021

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

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

الإصدار 1.0.1

‫4 أغسطس 2021

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

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

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

الإصدار 1.0.0

‫28 يوليو 2021

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

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

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

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

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

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

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

الإصدار 1.0.0-rc02

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

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

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

الإصدار 1.0.0-rc01

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

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

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

  • تتيح لوحة العرض الآن استخدام المَعلمة 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 يحتوي على عناصر بطاقة. ولن يتم الآن اقتصاص الظل. (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 } كإعداد تلقائي للمصنع.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تقبل Modifier.draggable الآن DraggableState بدلاً من تعبير لامدا بسيط. يمكنك إنشاء حالة من خلال 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 للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل روتين pointer input detection المشترك لإنشاء تبعيات جديدة. (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 غير المعلقة ننصحك الآن باستخدام الدوال المعلقة للتحكّم في التمرير وانتظار انتهاء التمرير. سنوقف نهائيًا إصدارات هذه الدوال التي لا تتضمّن suspend كجزء من عملية الانتقال هذه. (I12880)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • يحلّ RememberObserver محلّ CompositionLifecycleObserver، وأصبح CompositionLifecycleObserver نهائيًا الآن.

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

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

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

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

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

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

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

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

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

  • تغيير VisualTransformation لتصبح واجهة وظيفية (I3bba4)

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

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

  • تمت إعادة تسمية TextInputService.onStateUpdated إلى updateState (Id4853)

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

الإصدار 1.0.0-alpha10

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

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

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

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

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

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

الإصدار 1.0.0-alpha09

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

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

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

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

    يتيح ذلك التعامل مع ScrollState وLazyListState كنوع شائع، ما يسمح بتنفيذ التمرير المخصّص على كلا النوعين.

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

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

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

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

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

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

  • تمت إضافة إمكانية استخدام InteractionState مع حقول النص. (I61d91)

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

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

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

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

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

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

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

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

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

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

  • أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الموافقة (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 للتأكّد من أنّ أدوات إنشاء المعدِّلات تستخدم androidx.compose.ui.composed {} داخليًا، بدلاً من وضع علامة @Composable عليها. (I3c4bc)
  • تمت إضافة عملية فحص lint للتأكّد من أنّ دوال إنشاء Modifier معرَّفة كإضافات على Modifier، حتى يمكن ربطها بسلاسة. (I07981)
  • تمت إعادة تسمية وسيطة الدلالات mergeAllDescendants إلى mergeDescendants. (Ib6250)
  • أصبح التحكّم في الوقت في الاختبارات (TestAnimationClock واستخداماته) تجريبيًا الآن (I6ef86، b/171378521)
  • إزالة وحدة ui-test القديمة ورموزها الصورية (I3a7cb)
  • تمت إعادة تسمية TextUnit.Inherit إلى TextUnit.Unspecified بما يتوافق مع الوحدات الأخرى. (Ifce19)
  • تم تعديل واجهة "المحاذاة" وإتاحتها للاستخدام. (I46a07، b/172311734)
  • تم دمج الوحدة foundation:foundation-text في foundation:foundation (Idac0f)
  • إيقاف الدالة place(Offset) والدالة placeRelative(Offset) نهائيًا استخدِم عمليات التحميل الزائد مع إزاحات الأعداد الصحيحة بدلاً من ذلك (I4c5e7).
  • تمت إعادة تسمية id إلى layoutId في LayoutIdParentData. تمت إعادة تسمية Measurable.id إلى Measurable.layoutId. (Iadbcb، b/172449643)

الإصدار 1.0.0-alpha07

‫11 نوفمبر 2020

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

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

  • على غرار Modifier.fillMaxSize[Width|Height]، أصبحنا الآن نتيح استخدام الكسور في Modifier.fillParentMaxSize[Width|Height] ضمن نطاق LazyColumn/Row (I797e2، b/166586426).
  • تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات المتاحة للجميع. (Ic2e45)
  • تم إيقاف العناصر الأساسية AmbientTextStyle وProvideTextStyle وAmbientContentColor نهائيًا. بدلاً من ذلك، استخدِم الإصدارات الجديدة المتوفّرة في مكتبة Material. بالنسبة إلى التطبيقات غير المستندة إلى Material، عليك بدلاً من ذلك إنشاء أنظمة تصميم خاصة بها تتضمّن سمات يمكن استخدامها في مكوناتك الخاصة. (I74acc، b/172067770)
  • تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية وغير متحيزة لا تستهلك قيمًا من سمة، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
  • تمت إضافة maxLines إلى حقول النص (Ib2a5b)
  • تعديل TextFields لقبول KeyboardOptions (Ida7f3)
  • تمت إضافة KeyboardOptions لاستخدامها في TextFields (I9ca32)
  • تضيف هذه الإضافة BasicText كواجهة برمجة تطبيقات غير مرتبطة بتصميم معيّن للنص، وهي موازية لـ BasicTextField. (I28268)
  • تمت إزالة التعليق التوضيحي ExperimentalLazyDsl. يمكن الآن استخدام LazyColumn/LazyRow بدون إضافة ‎ @OptIn (Idab7a، b/166584730)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تمت إضافة BasicTextField كبديل لكل من CoreTextField وBaseTextField (Id4cea)
  • إزالة LazyColumnItems/LazyRowItems المتوقّفة نهائيًا (I1d8a8)
  • تمت إزالة العناصر القابلة للإنشاء المتوقّفة نهائيًا لتحديد الحجم وفقًا للقياسات الأصلية. (I18537، b/171811496)
  • تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة المعدِّل paddingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى خطوط الأساس للنص. (I0440a، b/170633813)
  • تمت إضافة المَعلمة matchHeightConstraintsFirst إلى المعدِّل aspectRatio، ويمكن استخدامها لتحديد المعدِّل الذي سيتم تغيير حجمه وفقًا لقيود الارتفاع قبل تجربة العناصر المطابقة للعرض. (Ie7c43، b/155290593)
  • تمت إزالة DpConstraints المتوقّفة نهائيًا. (I87884، b/171702471)

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

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

الإصدار 1.0.0-alpha06

‫28 أكتوبر 2020

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

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

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

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

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

الإصدار 1.0.0-alpha05

‫14 أكتوبر 2020

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

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

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

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

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

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

الإصدار 1.0.0-alpha04

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

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

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

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

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

  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة التطبيقات الخاصة بتحويلات تغيير الحجم والتدوير لتستهلك مَعلمة إزاحة واحدة لتمثيل إحداثيات نقطة الارتكاز بدلاً من مَعلمات عائمة منفصلة لإحداثيات س/ص في DrawScope وDrawTransform
    • تمت إزالة الطريقتَين Rect.expandToInclude وRect.join
    • عدّلنا مستندات "نصف القطر" لتشير إلى الشكل البيضوي بالإضافة إلى الشكل الإهليلجي
    • تمت إضافة مستندات للإشارة إلى أنّه يجب عدم استدعاء الدالة الإنشائية العامة لفئة Radius المضمّنة مباشرةً، بل يجب إنشاء عناصر Radius من خلال دوالها الإنشائية.
    • تمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن topRight وbottomRight وbottomCenter وما إلى ذلك.
    • إيقاف Rect.shift نهائيًا واستخدام Rect.translate بدلاً منه
    • إزالة واجهتَي برمجة التطبيقات RoundRect.grow وRect.shrink
    • تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
    • تمت إزالة طرق RoundRect.middleRect/tallMiddleRect/wideMiddleRect وRect.isStadium
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
    • تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.minDimension
    • تم تغيير RoundRect.center ليكون سمة بدلاً من دالة
    • تم تعديل الدالة الإنشائية RoundRect لتستهلك خصائص Radius بدلاً من المَعلمات الفردية لقيم نصف القطر x/y
    • تمت إزالة واجهات برمجة التطبيقات الخاصة بالحجم التي افترضت أنّها مستطيل بنقطة بداية عند 0,0
    • تمت إضافة واجهة برمجة تطبيقات لتدمير البيانات إلى Radius
    • نقلنا العديد من دوال إضافة RoundRect إلى خصائص بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • تحسينات الأداء في LazyColumnFor/LazyRowFor من خلال عدم إجراء عمليات إعادة إنشاء غير ضرورية أثناء كل عملية تمرير (I64f65 وb/168293643 وb/167972292 وb/165028371)
  • تم إصلاح عُطل في LazyColumnFor/LazyRowFor بعد التمرير ثم تغيير العناصر، وتم تنفيذ ميزة التمرير التلقائي للأعلى عند إزالة العنصر المرئي سابقًا حتى لا نعرض فجوات فارغة في النهاية بعد الآن (I220ab وb/161480164 وb/167855468).
  • لم يعُد مسموحًا بتضمين حاويات قابلة للتمرير في الاتجاه نفسه، مثل ScrollableContainer وLazyColumnFor. لم تكن هذه الميزة متاحة في السابق، وكانت تتسبّب في حدوث مشاكل في التمرير السريع وفي جميع حالات عدم التحميل المسبق لعناصر LazyColumnFor (I6e101).
  • تم تعديل العديد من واجهات برمجة تطبيقات الرسومات
    • تم تعديل واجهات برمجة التطبيقات DrawScope لتتضمّن طرق تحويل ذات نطاق محدّد للإشارة إلى أنّه لا يتم تطبيق التحويل إلا ضمن دالة الرجوع ويتم إزالته بعد استدعاء دالة الرجوع
    • تم تعديل مستندات clipPath للإشارة إلى Path بدلاً من المستطيل الدائري
    • تم إصلاح المسافة في المستندات الخاصة بالمعلَمة right في clipPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة مَعلمة الحجم
    • تمت إعادة تسمية المَعلمتَين dx/dy في طريقة inset إلى أفقية وعمودية
    • تمت إضافة تحميل زائد للداخل يوفّر قيمة الداخل نفسها لجميع الحدود الأربعة
    • تمت إزالة المستندات المتعلقة بطريقة الإدراج التي تشير إلى أنّه سيتم تطبيق الإدراج على جميع الجوانب الأربعة
    • تعديل المستندات الخاصة بفئة 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. يمكن استخدامها لتحديد سياسة مخصّصة لدمج جميع العناصر الفرعية. تتمثّل السياسة التلقائية في استخدام قيمة العنصر الأصل إذا كانت متوفّرة، وإلا سيتم استخدام قيمة العنصر الفرعي. (Iaf6c4، b/161979921)
  • تمت إعادة تسمية PlacementScope.placeAbsolute() إلى PlacementScope.place()، وتمت إعادة تسمية PlacementScope.place() السابقة إلى PlacementScope.placeRelative(). نتيجةً لذلك، لن تعكس الطريقة PlacementScope.place() الموضع تلقائيًا في سياقات الكتابة من اليمين إلى اليسار بعد الآن. إذا كان هذا هو المطلوب، استخدِم PlacementScope.placeRelative() بدلاً من ذلك. (I873ac، b/162916675)
  • تمت إزالة مكوّن FilledTextField المتوقّف نهائيًا. يُرجى استخدام TextField بدلاً من ذلك للحصول على تنفيذ حقل النص المملوء وفقًا لإرشادات Material Design. (I5e889)
  • تمت إضافة المَعلمة backgroundColor إلى LinearProgressIndicator وإزالة المساحة المتروكة الداخلية من CircularProgressIndicator. تمت إضافة ProgressIndicatorConstants.DefaultProgressAnimationSpec الجديد الذي يمكن استخدامه كـ AnimationSpec تلقائي عند تحريك مستوى التقدّم بين القيم (If38b5 وb/161809914 وb/161804677)
  • تم إيقاف الدالة البرمجية القابلة للإنشاء state { ... } نهائيًا واستبدالها باستدعاءات صريحة للدالة remember { mutableStateOf(...) } لزيادة الوضوح. يقلّل ذلك من مساحة واجهة برمجة التطبيقات وعدد المفاهيم المتعلّقة بإدارة الحالة، ويتوافق مع نمط by mutableStateOf() لتفويض سمات الفئة. (Ia5727)
  • تمت إعادة تسمية RRect إلى RoundRect لتتلاءم بشكل أفضل مع أنماط التسمية في Compose تم إنشاء دوال إنشاء مشابهة لدالة RRect وتم إيقاف دوال إنشاء RRect نهائيًا (I5d325)
  • تمت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier في تخطيط العنصر الفرعي بدلاً من ذلك. (I4522e، b/162109766)
  • أصبح IntSize الآن فئة مضمّنة (I2bf42)
  • اضغط مع الاستمرار على المساحة الفارغة للتعديل. (Ib1e5b)
  • إخفاء FloatingToolbar بعد النقر على النص (If4525)
  • Hide FloatingToolbar When Updating the Selection. (I8444c)
  • ألغِ اختيار "التمويه عند القيادة". (I781a2)

الإصدار 0.1.0-dev16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تمت إعادة تسمية AndroidComposeTestRule إلى createAndroidComposeRule. (I70aaf)

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

الإصدار 0.1.0-dev15

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • تم إنشاء نطاق المتلقّي للدالة 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)

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

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

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

    تم إنشاء طريقة إضافة في 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)

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

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

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

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

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

  • تمت إعادة تسمية Modifier.tag إلى Modifier.layoutId، وذلك لتجنُّب حدوث أي التباس مع Modifier.testTag. (I995f0)

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

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

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

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

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

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

  • تمت إزالة السمتَين RowAlign وColumnAlign المتوقّفتَين نهائيًا في Row وColumn. (If60d4، b/155858731)

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

  • تمت إضافة أداة تعديل التنسيق offsetPx، والتي يمكن استخدامها لتحديد الإزاحات (الديناميكية) بالبكسل. (I5af57)

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

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

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

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

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

  • تمت إضافة أداة تعديل الحشو المتماثل. (I39840)

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

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

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

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

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

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

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

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

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

  • إتاحة تخصيص أبعاد العناصر التابعة لـ ConstraintLayout (Idb1a5)

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

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

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

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

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

  • توفير الدعم الأوّلي للغة من اليمين إلى اليسار في تنسيق Compose (Ia5519)

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

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

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

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

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

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

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

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

  • يحتوي مؤشر TextField على تأثير حركي وامض (Id10a7)

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

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

  • تمت إعادة إتاحة Modifier.semantics للسماح باستخدامها مع المكوّنات ذات المستوى العالي. (I4cfdc)

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

  • تم تعديل Alignment API وإضافة إمكانية المحاذاة المطلقة (التي لا يتم عكسها تلقائيًا في سياق الكتابة من اليمين إلى اليسار) (I38cd3)

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تم تغيير DrawVector من دالة قابلة للإنشاء عادية إلى عرض Modifier drawVector() الذي سيرسم المتّجه كخلفية للتصميم. (I7b8e0)

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

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

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

  • تم إيقاف الدالة البرمجية Wrap القابلة للإنشاء نهائيًا. يمكن استبدالها إما بأداة التعديل LayoutAlign أو بعنصر Stack القابل للإنشاء (Ib237f).

  • تمت إتاحة إمكانية نشر اتجاه التنسيق من عقدة التنسيق الرئيسية إلى العناصر الفرعية. تمت إضافة أداة تعديل اتجاه التنسيق. (I3d955)

  • أعِد تسمية Painter.toModifier إلى Painter.asModifier لأنّ المعدِّل الذي تم إنشاؤه حديثًا يتضمّن مرجعًا إلى Painter الأصلي الذي يمكن مشاركته بين مثيلات Modifier متعددة (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 في Dp (I91b9a وb/149979702).

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

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

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

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

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

  • أضِف OnPositionedModifier وOnChildPositionedModifier لاستبدال الدالتَين القابلتَين للإنشاء OnPositioned وOnChildPositioned. (I2ec8f)

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

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

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

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

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

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

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

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

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

  • إضافة FloatingToolbar لتحديد TextField (Ie8b07)

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

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

  • إضافة HapticFeedback إلى عملية اختيار TextField (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)