مؤسسة Compose

اكتب تطبيقات Jetpack Compose مع الوحدات الأساسية الجاهزة للاستخدام ووسِّع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاصة بك.
آخر تعديل الإصدار المستقر إصدار مرشح الإصدار التجريبي الإصدار الأولي
29 تشرين الثاني (نوفمبر) 2023 1.5.4 - الإصدار التجريبي 1.6.0-02 -

التركيبة

تشتمل ميزة "الإنشاء" على 7 معرّفات مجموعة Maven في androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدفة من الوظائف، ولكل منها مجموعة خاصة بها من ملاحظات الإصدار.

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

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

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

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

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

رائع

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.5"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.5"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ملاحظات

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

إنشاء عدد جديد

راجع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.

الإصدار 1.6

الإصدار 1.6.0-beta02

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

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

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

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

الإصدار 1.6.0-beta01

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

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

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

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

    تمت إضافة acceptsDragAndDropTransfer إلى dragAndDropTarget Modifier لقبوله من جلسة سحب وإفلات. تعرض دالة lambda هذه قيمة صالحة DragAndDropTarget إذا كانت مهتمة بجلسة سحب وإفلات. تم استبدال ملفات lambda أخرى لمعالجة أحداث السحب بهذه البيانات.

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

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

  • أصبحت واجهات Foundation Tooltip API الآن @ExperimentalFoundationApi (I30b0b).

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

    تحتوي DragAndDropTarget على طرق لأحداث سحب وإفلات معينة بدلاً من أن تكون طريقة مجردة واحدة.

    تمت إعادة تسمية onDragAndDropEvent في وظيفة المصنع لـ DragAndDropModifierNode إلى onDragAndDropStart لتوضيح أن DragAndDropTarget المقدمة صالحة لجلسة سحب وإفلات معينة فقط.

    تمت إزالة DragAndDropEventType (I645b1).

  • تمت إعادة تسمية PlatformTextInputModifierNode.runTextInputSession إلى establishTextInputSession. (I03cd0)

  • استبدِل OriginalText بـ TextSubstitution. (Ifa5a8)

  • تمت إعادة تسمية PlatformTextInputModifierNode.textInputSession إلى runTextInputSession. (Ie9c6b)

  • سيتم إيقاف عناصر SubcomposeLayout الثانوية (والتنسيقات مثل LazyColumn المستندة إليها) التي يتم الاحتفاظ بها لإعادة استخدامها في المستقبل. تم طرح واجهة برمجة تطبيقات assertIsDeactivated() تجريبية جديدة لاختبار هذه العُقد. وستُفلتر بقية واجهات برمجة تطبيقات الاختبار العُقد المعطّلة تلقائيًا. (I2ef84، b/187188981)

  • تمت إعادة تسمية المعلمة clippingEnabled لـ Modifier.magnifier إلى clip.

  • أصبحت المعلَمة magnifierCenter لـ Modifier.magnifier قابلة للقيم الفارغة مع الحفاظ على السلوك التلقائي نفسه. (I6aa66)

  • تعتمد واجهات برمجة تطبيقات Material SwipeToReveal (للبطاقات والشرائح) الآن على واجهة برمجة تطبيقات مستندة إلى الخانة (على النحو الذي تنصح به ميزة Compose) بدلاً من مثيلات تستند إلى فئة البيانات لإنشاء تلك الخانات. تجدر الإشارة إلى أنّ هذا تغيير قد يؤدي إلى عطل. يُرجى الاطّلاع على العرض التوضيحي والرمز النموذجي للحصول على أمثلة حول كيفية استخدام واجهة برمجة التطبيقات الجديدة. (Ia8943)

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

  • نفِّذ عبارة يساوي ورمز التجزئة لـ PageSize.Fixed. (Ie3ede، b/300134276)
  • تم إصلاح خطأ كان يؤدي إلى عدم تقليص حجم تنسيق BasicText عند تغيير minWidth وانخفاض minWidth عن قيود القياس الأولي maxWidth (Idb19c).
  • يجب إضافة توافق العرض مع تدرج العرض في ArcLine. (I4d5bb)
  • إصلاح مشكلة التوافق الثنائي عند تغيير إدراج النافذة (Iee695)
  • إزالة الطبقة الأساسية لشريحة Material3/الزر لأنّ مقاييس الأداء المصغّرة تظهر أداءً أفضل بدونها. (I55555)

الإصدار 1.6.0-alpha08

18 تشرين الأول (أكتوبر) 2023

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

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

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

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

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

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

  • مستندات محسّنة حول BasicTextField بشأن متطلبات onValueChange. (I90fc9، b/160257648)

الإصدار 1.6.0-alpha07

4 تشرين الأول (أكتوبر) 2023

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

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

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

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

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

الإصدار 1.6.0-alpha06

20 أيلول (سبتمبر) 2023

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

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

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

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

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

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

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

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

  • يُرجى إزالة استخدام rememberSaveable لعرض التلميحات. (Icc131، b/299500338)

الإصدار 1.6.0-alpha05

6 أيلول (سبتمبر) 2023

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

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

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

الإصدار 1.6.0-alpha04

23 آب (أغسطس) 2023

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

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

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

الإصدار 1.6.0-alpha01

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

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

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

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

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

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

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

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

الإصدار 1.5

الإصدار 1.5.4

18 تشرين الأول (أكتوبر) 2023

تم إصدار "androidx.compose.foundation:foundation-*:1.5.4". يتضمّن الإصدار 1.5.4 هذه الالتزامات.

الإصدار 1.5.3

4 تشرين الأول (أكتوبر) 2023

تم إصدار "androidx.compose.foundation:foundation-*:1.5.3". لم تطرأ أي تغييرات على هذا الإصدار.

الإصدار 1.5.2

27 أيلول (سبتمبر) 2023

تم إصدار "androidx.compose.foundation:foundation-*:1.5.2". يتضمّن الإصدار 1.5.2 هذه الالتزامات.

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

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

الإصدار 1.5.1

6 أيلول (سبتمبر) 2023

تم إصدار "androidx.compose.foundation:foundation-*:1.5.1". يتضمّن الإصدار 1.5.1 هذه الالتزامات.

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

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

الإصدار 1.5.0

9 آب (أغسطس) 2023

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

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

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

الإصدار 1.5.0-rc01

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

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

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

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

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

الإصدار 1.5.0-beta03

28 حزيران (يونيو) 2023

تم إصدار "androidx.compose.foundation:foundation-*:1.5.0-beta03". يتضمّن الإصدار 1.5.0-beta03 هذه الالتزامات.

الإصدار 1.5.0-beta02

7 حزيران (يونيو) 2023

تم إصدار "androidx.compose.foundation:foundation-*:1.5.0-beta02". يتضمّن الإصدار 1.5.0-beta02 هذه الالتزامات.

الإصدار 1.5.0-beta01

24 أيار (مايو) 2023

تم إصدار "androidx.compose.foundation:foundation-*:1.5.0-beta01". يتضمّن الإصدار 1.5.0-beta01 هذه الالتزامات.

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

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

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

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

الإصدار 1.5.0-alpha04

10 أيار (مايو) 2023

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

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

  • تمت إضافة TextStyle.merge(...) المحسّن مع قائمة كاملة بالمعلمات. (Iad234، b/246961787)
  • يمكنك تقديم SnapLayoutInfoProvider يمكن استخدامها مع LazyGridState. (I92134، b/269237141، b/260914964)
  • تمت إضافة ميزة "Modifier.animateItemPlacement()" التجريبية لنطاق عناصر الشبكات المُتدرجة زمنيًا. يمكنك تطبيقه على العناصر لتحقيق تغيير الموضع التلقائي/إعادة ترتيب الصور المتحركة. (I4b62d، b/257034719)
  • ترقية GridCells.FixedSize إلى المستوى الثابت. تحدّد FixedSize قيمة LazyGrid حيث تتخذ كل خلية حجمًا دقيقًا على المحور المتقاطع، مع توزيع المساحة المتبقية على المحور المتقاطع. (I8542f)
  • تم تقديم نطاق جهاز الاستقبال PagerScope لجهاز النداء ودالة أداة لاحتساب إزاحة صفحة معيّنة. (If2577)
  • يمكنك تعريف snapPositionalThreshold عند إنشاء سلوك سريع. استخدم هذه المعلمة لتحديد حد موضعي للالتقاط القصير في جهاز النداء. (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 على جهاز النداء. (I7379e، b/275579012)
  • إضافة FlowRowScope وFlowColumnScope (I54fe2)

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

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

الإصدار 1.5.0-alpha03

19 نيسان (أبريل) 2023

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

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

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

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

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

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

الإصدار 1.5.0-alpha02

5 نيسان (أبريل) 2023

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

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

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

الإصدار 1.5.0-alpha01

22 آذار (مارس) 2023

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

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

  • تمت إعادة هيكلية النص وBasicText لاستخدام نظام التعديل الجديد. ويؤدي هذا إلى تحسينات كبيرة في الأداء في العديد من الحالات. من المفترض ألا تظهر أي تغييرات. (If1d17، b/246961435)
  • تمت إضافة إجراء دلالات PerformImeAction لاستدعاء إجراء 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 على نص معيّن باستخدام PlatformParagraphStyle.
  • تمت إضافة دعم امتداد الخط الكامل إلى LazyStaggeredGrid(I28252).
  • إضافة الإصدار التجريبي من onHover إلى ClickableText (I6938f)
  • تم إدخال عمليات تحميل زائدة تجريبية جديدة للدالة runComposeUiTest ودوال create*ComposeRule التي تقبل المعلَمات CoroutineContext. سيتم استخدام السياق للمقطوعة الموسيقية الاختبارية وأي طلبات متعلقة بالسمتَين LaunchedEffect وrememberCoroutineScope() في المقطوعة الموسيقية. (I10614، b/265177763)
  • يتوفّر FlowRow وFlowColumn الآن باسم @ExperimentalFoundationApi يتيحان استخدام تنسيق أكثر مرونة يستند إلى الصفوف والأعمدة للمكوّنات التي ستنقسم إلى سطر جديد إذا لم تكن هناك مساحة كافية على المحور الرئيسي. (I3a7b2)
  • يتوفّر "Modifier.basicMarquee()" كميزة تجريبية لعرض المحتوى الذي يتضمّن تأثير التظليل التمريري. (I2df44، b/139321650)

الإصدار 1.4.0-rc01

8 آذار (مارس) 2023

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

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

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

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

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

الإصدار 1.4.0-beta02

22 شباط (فبراير) 2023

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

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

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

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

  • لم يعد من الممكن اختيار حرف جزئي من خلال ضبط مقابض الاختيار. (Ided1)
  • إصلاح الأعطال التي تحدث عند الضغط على 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 على نص معيّن باستخدام PlatformParagraphStyle.

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

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

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

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

الإصدار 1.4.0-alpha05

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

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

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

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

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

  • يدمج واجهات برمجة التطبيقات لما قبل وما بعد الإجراء OverscrollEffect في وظيفتي "أداة التصميم" applyToScroll وapplyToFling المدمجة. يمكن الاطّلاع على النماذج المحدَّثة في المستندات للحصول على أمثلة حول كيفية تطبيق تأثير التمرير الزائد باستخدام شكل واجهة برمجة التطبيقات الجديد. (I8a9c4، b/255554340)
  • المزيد من نوع/قابلية إبطال الدوال المضمنة/التي تم إيقافها نهائيًا (I24f91)
  • تمت ترقية واجهة برمجة التطبيقات LineBreak وHyphens في TextStyle إلى حالة ثابتة. (Ic1e1d)

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

  • سيستمر المؤشر في الحقول النصية الآن في الوميض حتى في حال إيقاف الرسوم المتحركة. (I95e70، b/265177763)
  • بإمكان Modifier.basicMarquee الآن إضافة تأثيرات حركية حتى عندما تكون الصور المتحركة غير مفعّلة في إعدادات النظام. (I23389، b/262298306، b/265177763)

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

  • لم يتم إيقاف طرق notifyFocusedRect في TextInputSession وTextInputService مرة أخرى. (I23a04، b/262648050)

الإصدار 1.4.0-alpha04

11 كانون الثاني (يناير) 2023

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

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

  • يتوفّر FlowRow وFlowColumn الآن باسم @ExperimentalFoundationApi يتيحان استخدام تنسيق أكثر مرونة يستند إلى الصفوف والأعمدة للمكوّنات التي ستنقسم إلى سطر جديد إذا لم تكن هناك مساحة كافية على المحور الرئيسي. (I3a7b2)
  • تتوفّر Modifier.basicMarquee() كميزة تجريبية لعرض المحتوى الذي يتضمّن تأثير التظليل التمريري. (I2df44، b/139321650)

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

  • FocusRequesterModifierFocusRequesterNode
  • أصبحت الآن دالة إنشاء 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) أو الرجوع إلى إصدار سابق من androidx.compose.foundation إلى الإصدار 1.4.0-alpha03.

الإصدار 1.4.0-alpha03

7 كانون الأول (ديسمبر) 2022

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

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

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

تشرين الثاني (نوفمبر) 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 API من واجهات برمجة التطبيقات Lazy* APIs (I12197)
  • تم إدخال مَعلمة في واجهات برمجة التطبيقات Lazy API لإنشاء عناصر ووضعها خارج إطار العرض (I69e89، b/172029355).
  • تمت إضافة المَعلمة minLines إلى المعلّمتَين BasicText وBasicTextField. تسمح بتحديد الحد الأدنى لارتفاع هذه المواد من حيث عدد الأسطر (I24294، b/122476634)

الإصدار 1.4.0-alpha01

24 تشرين الأول (أكتوبر) 2022

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

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

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

الإصدار 1.3

الإصدار 1.3.1

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

تم إصدار androidx.compose.foundation:foundation:1.3.1 وandroidx.compose.foundation:foundation-layout:1.3.1. يتضمّن الإصدار 1.3.1 هذه الالتزامات.

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

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

الإصدار 1.3.0

24 تشرين الأول (أكتوبر) 2022

تم إصدار androidx.compose.foundation:foundation:1.3.0 وandroidx.compose.foundation:foundation-layout:1.3.0. يتضمّن الإصدار 1.3.0 هذه الالتزامات.

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

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

الإصدار 1.3.0-rc01

5 تشرين الأول (أكتوبر) 2022

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

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

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

الإصدار 1.3.0-beta03

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

تم إصدار androidx.compose.foundation:foundation:1.3.0-beta03 وandroidx.compose.foundation:foundation-layout:1.3.0-beta03. يتضمّن الإصدار 1.3.0-beta03 هذه الالتزامات.

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

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

الإصدار 1.3.0-beta02

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

تم إصدار androidx.compose.foundation:foundation:1.3.0-beta02 وandroidx.compose.foundation:foundation-layout:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه الالتزامات.

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

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

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

  • إعادة هيكلة AwaitPointerEventScope#awaitLongPressOrCancellation لمطابقة الدوال قيد الانتظار الأخرى (I646e6)

الإصدار 1.3.0-beta01

24 آب (أغسطس) 2022

تم إصدار androidx.compose.foundation:foundation:1.3.0-beta01 وandroidx.compose.foundation:foundation-layout:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه الالتزامات.

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

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

الإصدار 1.3.0-alpha03

10 آب (أغسطس) 2022

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

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

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

الإصدار 1.3.0-alpha02

27 تموز (يوليو) 2022

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

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

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

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

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

الإصدار 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).
  • تم إنشاء الواجهات في مكتبات الإنشاء الآن باستخدام طرق الواجهة الافتراضية في jdk8 (I5bcf1)
  • تم تقديم واجهة برمجة تطبيقات تجريبية checkScrollableContainerConstraints()، وهي تتيح التأكّد من عدم دمج الحاويات القابلة للتمرير. ويمكنك استخدامها عند إنشاء تنسيقاتك البطيئة القابلة للتمرير من خلال LazyLayout. (Id6fab، b/233352497)
  • تمت إزالة السمة LazyVerticalGrid المتوقفة نهائيًا من حزمة androidx.compose.foundation.lazy. يقع واجهة برمجة التطبيقات الثابتة الجديدة في androidx.compose.foundation.lazy.grid (I73c76، b/225192009).

الإصدار 1.2.0-beta03

1 حزيران (يونيو) 2022

تم إصدار androidx.compose.foundation:foundation:1.2.0-beta03 وandroidx.compose.foundation:foundation-layout:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه الالتزامات.

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

  • تمت إضافة الإصدارَين التجريبيَين IntervalList وMutableIntervalList. تسمح بتمثيل بعض قائمة القيم عبر فواصل زمنية متعددة. ستكون هذه الميزة مفيدة عندما تريد تحديد ملف dsl الخاص بك مشابهًا للنطاق الذي يستخدمه 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 على الإعدادات الأصلية. (Id2196)
  • تمت إعادة تسمية LazyLayoutItemsProvider إلى LazyLayoutItemProvider (I0638c).
  • تمت إعادة تسمية LazyLayoutItemsProvider.itemsCount إلى itemCount (Id409c).
  • تمت إضافة الفرشاة إلى TextStyle وSpanStyle لتوفير طريقة لرسم النص بلون متدرج. (I53869، b/187839528)
  • trimFirstLineTop، تم تغيير سمات trimLastLineBottom للسمة LineHeightBehavior إلى تعداد واحد: LineHeightTrim. تحتوي LineHeightTrim على قيم من 4 حالات يتم تحديدها بواسطة قيمتين منطقيتين: FirstLineTop وLastLineBottom و"بدون" و"بدون" (Ifc6a5 وb/181155707)
  • تمت إضافة LineHeightBehavior إلى TextStyle وParagraphStyle. LineHeightBehavior للتحكم في ما إذا كان سيتم تطبيق ارتفاع السطر على أعلى السطر الأول وأسفله. وتحدِّد أيضًا محاذاة الخط في المساحة التي توفّرها الدالة TextStyle(lineHeight).

    على سبيل المثال، من الممكن الحصول على سلوك مشابه لما تحدّده CSS من خلال LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • trimFirstLineTop، لا تعمل إعدادات trimLastLineBottom بشكل صحيح إلا إذا كانت قيمة includeFontPadding خطأ. (I97332، b/181155707)

  • تمت إضافة مفتاح تعديل imeNestedScroll() تجريبي لكي يتمكّن المطوّرون من التحكّم في أداة IME من خلال التمرير. (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)
  • يتم الآن قبول معلمة Constraints في الفقرة والفقرة المتعددة. اجتياز Constraints.maxHeight هو أمر محظور في الوقت الحالي، ولكنه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل الحذف بناءً على الارتفاع. (I6afee، b/168720622)
  • يقبل SubcomposeSlotReusePolicy.getSlotsToRetain() الآن فئة مخصصة تشبه MutableSet لا تسمح بإضافة عناصر جديدة فيها. (Icd314)
  • تم إيقاف الاستهلاك الجزئي (خفض أو الموضع) نهائيًا في PointerInputChange. يمكنك استخدام consume() للاطّلاع على كل التغييرات. يمكنك استخدام isConsumed لتحديد ما إذا كان شخص آخر قد استهلك التغيير في السابق أم لا.
  • تنشئ "PointerInputChange::copy()" الآن نسخة سطحية دائمًا. وهذا يعني أنه سيتم استهلاك نُسخ من PointerInputChange بعد استهلاك إحدى هذه النُسخ. إذا كنت تريد إنشاء PointerInputChange غير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674)
  • تم طرح واجهة برمجة تطبيقات LazyLayout تجريبية جديدة. يتيح لك ذلك إنشاء مكوّنات خاصة بك، مثل LazyColumn من LazyVerticalGrid. يُرجى العلم أنّ واجهة برمجة التطبيقات في مراحلها الأولى ويمكن تغييرها في الإصدارات المستقبلية. (Iba2bc، b/166591700)
  • تأخذ AndroidFont الآن typefaceLoader كمعلمة إنشائية. (I2c971)
  • يعرض الإعلان المصاحب لـ "WindowInsets" الآن مستوى الرؤية (سواء كان على الشاشة، بغض النظر عما إذا كان يتقاطع مع النافذة أم لا) والحجم الذي قد يكون متاحًا إذا كانت متاحة على الجهاز، ولكنها غير نشطة حاليًا. (I65182، b/217770337)

الإصدار 1.2.0-alpha07

6 نيسان (أبريل) 2022

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

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

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

الإصدار 1.2.0-alpha06

23 آذار (مارس) 2022

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

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

  • تمت إضافة إجراء RequestFocus الدلالي لطلب التركيز على الهدف الذي يمكن التركيز عليه. (I17b71)
  • تم دمج "FocusOrder" الآن في FocusProperties، وتم الآن دمج "focusProperties()" بكل إمكانات "focusOrder()". تم إيقاف الإجراءَين FocusOrder وfocusOrder() نهائيًا. يجب استخدام معدِّل focusRequester() مع focusProperties() بدلاً من focusOrder() الذي يقبل عنصر focusRequester. ويتيح هذا لمُعدِّلات الفصل أقوى بين المخاوف. (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)

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

  • تم التحديث لاستخدام الكوروتينات في Kotlinx 1.6.0 (I3366d).

الإصدار 1.2.0-alpha04

23 شباط (فبراير) 2022

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

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

  • لم يعُد على BringIntoViewResponders تمرير الطلبات يدويًا إلى المجيبين الرئيسيين. بدلاً من ذلك، يُطلب منهم عرض المستطيل على الفور الذي يريدون من أحد الوالدَين عرضه. (I8e66a)
  • إتاحة تحميل الخط غير المتزامن في النص (I77057، b/214587005)
  • يتوافق LazyVerticalGrid الآن مع line breaking قبل العناصر التي لا يتناسب امتدادها مع الخط الحالي. (I05c40، b/207462103)
  • تمت إعادة تسمية excludeFromSystemGestures إلى systemGesturesExclusion (I19526).
  • يتوافق LazyVerticalGrid الآن مع تنسيق العكس. (I6d7d7، b/215572963، b/211753558)
  • أضِف طريقة WindowInsets.only() للسماح للمطوّرين بتضمين سمات من WindowInsets فقط. (I14c94، b/217768486)
  • تمت إضافة ComposableTarget وComposableTargetMarker وComposableOpenTarget، وهي ميزة تتيح إعداد تقارير وقت التجميع للحالات التي تُسمّى فيها وظيفة قابلة للتكوين استهداف تطبيق لم يتم تصميمه لاستخدامه.

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

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

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

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

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

  • تعتمد هذه الطريقة الآن على لغة 1.6.10 في لغة البرمجة Kotlin.

الإصدار 1.1

الإصدار 1.1.1

23 شباط (فبراير) 2022

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

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

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

الإصدار 1.1.0

9 شباط (فبراير) 2022

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

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

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

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

  • تم التحديث للتوافق مع Compose Material 1.1.0-rc03

الإصدار 1.1.0-rc01

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

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

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

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

الإصدار 1.1.0-beta04

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

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

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

  • تم تعديلها لتتوافق مع لغة 1.6.0 في Kotlin.

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

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

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

  • إصلاح مقابض النص لا تتحرك عند تغيير مستوى رؤية أداة IME. (I25f2e)

الإصدار 1.1.0-beta03

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

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

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

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

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

الإصدار 1.1.0-beta02

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

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

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

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

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

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

الإصدار 1.1.0-beta01

27 تشرين الأول (أكتوبر) 2021

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

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

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

الإصدار 1.1.0-alpha06

13 تشرين الأول (أكتوبر) 2021

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

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

  • تمت إضافة حمل زائد أقل الأطفال للتنسيق، مع كفاءة محسَّنة (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 للاعتماد على لغة البرمجة 1.5.30 في Kotlin. (I74545)

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

  • تمت إضافة تأثير اللمعان للتمرير. تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة حول ScrollConfiguration للسماح بضبط التأثير المرئي لهذه الميزة. توفير قيمة فارغة لإيقاف تأثير التمرير الزائد. (I0c304، b/171682480)
  • يحتوي AWayPointerEventScope الآن على 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 التي تستخدم مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterValue اختيارية. يفيد ذلك في فن البكسل الذي يهدف إلى وحدات البكسل عند تكبيره ليناسب فن البكسل. تم تعديل BitmapPainter + الصورة التي يمكن إنشاؤها أيضًا لاستهلاك مَعلمة 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 على هذه الالتزامات.

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

  • تم إصلاح مثيلاتStateOf المستمَدة من تتبُّع الأعطال. (aosp/1792247)

الإصدار 1.0.4

13 تشرين الأول (أكتوبر) 2021

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

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

  • تم تعديل البيانات للاعتماد على لغة 1.5.31 في لغة البرمجة Kotlin.

الإصدار 1.0.3

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

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

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

  • تم تعديل البيانات للاعتماد على لغة 1.5.30 في لغة البرمجة Kotlin.

الإصدار 1.0.2

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

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

تم التعديل للتوافق مع إصدار الإنشاء 1.0.2. لا يزال إنشاء 1.0.2 متوافقًا مع لغة البرمجة 1.5.21 بلغة Kotlin.

الإصدار 1.0.1

4 آب (أغسطس) 2021

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

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

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

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

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

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

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

الإصدار 1.0.0-rc02

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

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

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

الإصدار 1.0.0-rc01

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

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

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

  • يدعم Canvas الآن معلمة contentDescription لإمكانية الوصول. (Ib547c)

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

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

الإصدار 1.0.0-beta09

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

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

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

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

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

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

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

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

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-Formatting
  • 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 للإشارة إلى ما إذا كان يجب وضع علامة على هذه الطريقة باعتبارها "Hot" أو "Startup" (بدء التشغيل) أو "Post Startup" (بدء التشغيل).

  • تمثّل السمة <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 هذه الالتزامات.

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

  • يتم استبدال تعداد التمرير المتداخل بفئة مضمّنة. (Ie321b، b/187055290)
  • إعادة هيكلة استخدامات التعداد للصفوف المضمّنة لتجنب مشاكل متعلقة بالشاملة عند إضافة قيم تعداد جديدة. (I2b5eb)
  • لإضافة مهلة النقر إلى الإعلان القابل للنقر / التبديل لمنع ظهور تمويج أثناء التمرير / السحب (Ia2704، b/168524931)
  • لم تعد خصائص ContentDescription و"النص" الدلالي قيمًا فردية بل قوائم. وهذا يتيح دمجها كما هي بدلاً من التسلسلات. تم أيضًا توفير واجهات برمجة تطبيقات اختبارية أفضل للاستفادة من هذه التغييرات (Ica6bf، b/184825850).
  • تم إيقاف Modifier.focusModifier() نهائيًا واستبداله بـ Modifier.focusTarget() (I6c860).
  • يتم استبدال تعداد KeyboardType بفئة مضمّنة. (I73045، b/187055290)
  • تم استبدال التعداد FocusState بواجهة FocusState (Iccc1a، b/187055290).
  • يتم استبدال ImeAction بفئة مضمّنة. (I18be5، b/187055290)
  • أصبحت دوال AnnotatedString.withAnnotation الآن تجريبيةTextApi بدلاً من تجريبية ComposeApi. (I0cd0a)
    • أصبحت الدالة الإنشائية TextUnit مع TextUnitType الآن IndividualTextApi بدلاً من تجريبية ComposeApi.
  • أصبحت 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)
  • إزالة خلفية الرسم (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)
  • تمت إضافة واجهات برمجة تطبيقات AccessibilityInfo وCollectionItemInfo API التي تسمح بوضع علامة على المجموعة وعناصرها لخدمات تسهيل الاستخدام (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 هذه الالتزامات.

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

  • تم الآن تمييز واجهة FlingBehavior باسم @Stable. يجب أن تلتزم جميع عمليات التنفيذ بالعقد @Stable. (I93354، b/184830577)

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

  • تم إصلاح إجراءات التمرير السريع في إمكانية الوصول ACTION_SCROLL_FORWARD وACTION_SCROLL_BACKWARD وaccessibilityActionScrollLeft وaccessibilityActionScrollUp وaccessibilityActionScrollRight وaccessibilityActionScrollDown. فبدلاً من التمرير إلى نهاية الجزء القابل للتمرير، سيتم تمريره الآن بشاشة واحدة في الاتجاه المحدد. (Ieccb0)
  • ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع الإصدار 12 من نظام التشغيل Android (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 هذه الالتزامات.

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

  • أعد تسمية getSoftwareKeyboard وshowSoftwareKeyboard على SoftwareKeyboardController إلى hide() وshow() على التوالي.
    • توفير واجهة AnalyzeLocal الكاملة لـ LocalSoftwareKeyboardController حتى يمكن ضبطها (مفيدة بشكل خاص في الاختبارات) (I579a6)
  • تم طرح TextOverflow.Visible. (Ic8f89)
  • تمّت إزالة الأحداث العلنية من RowScope وColumnScope وBoxScope وBoxWithConstraintsScope. (I4e83e، b/181869067)

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

  • تم إصلاح المشكلة التي كانت تحدث عندما يتم وضع عناصر LazyColumn/LazyRow على الحواف بشكل غير صحيح بعد الانتقال السريع (Ie4d13، b/183877420).
  • قبل هذا التغيير، كانت الدوال القابلة للتعديل المحلية قابلة للتخطي استنادًا إلى معلَماتها. بعد هذا التغيير، لن يتم تخطّي أي دوال محلية قابلة للتعديل. تم إجراء هذا التغيير لأنّه من الشائع والمتوقع أن تحصل الدوال المحلية على المعلَمات من العنصر الرئيسي، ويعتبر تخطّيها مصدرًا شائعًا للأخطاء.

    للتلخيص، ضع في اعتبارك المثال:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    قبل هذا التغيير، كان يتم دائمًا تخطّي الدالة ShowCount المنشأة، حتى بعد تعديل المعلَمة count. لقد اختلف الوضع اليوم. (I5648a)

الإصدار 1.0.0-beta03

24 آذار (مارس) 2021

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

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

  • تم إيقاف DefaultMonotonicFrameClock نهائيًا. عند الاتصال بـ withFrameNanos أو Recomposer.runRecomposeAndApplyChanges بدون MonotonicFrameClock، سيتم الآن عرض IllegalStateException. (I4eb0d)

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

  • تم استدعاء FlingBehavior.performFling() الآن حتى عندما تكون السرعة 0 (I0b6e5، b/181237123).

الإصدار 1.0.0-beta02

10 آذار (مارس) 2021

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

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

  • تمت إضافة العديد من التحسينات الصغيرة في منطق القياس المنطقي في LazyColumn (Ic6889).
  • تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053)
  • تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)

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

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

الإصدار 1.0.0-beta01

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

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

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

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

  • تمت إضافة رد الاتصال onStart إلى detectDragGestures (I67269، b/179995594)
  • لم تعد مُعدّلات تغيير الحجم حسب القيم الأساسية تجريبية. (I15744)
  • تمت إزالة تأكيدات dp (I798d2)
  • تمت إزالة معاودة الاتصال SoftwareKeyboardController من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)
  • تمت إعادة تسمية measureBlocks إلى MeasurementPolicy الذي أصبح واجهة ممتعة. تم تحديث / تبسيط واجهات برمجة تطبيقات التنسيق لاستخدام MeasurementPolicy. (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" الآن حجم "MeasurementSize" الذي يمثل الحجم الذي تم قياس التصميم الفرعي له بالفعل. قد لا يراعي هذا الحجم قيود القياس. (Ib2729 وb/172560206 وb/172338608)
  • إضافة عنصر تعديل مجموعة selectGroup الذي يسمح بوضع علامة على مجموعة من علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
  • إضافة LazyListState.animate ScrollToItem

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

  • تمت إعادة تسمية ScrollableState.smooth ScrollBy() إلى animate ScrollBy() تمت إعادة تسمية LazyListState.snapToItemIndex() إلى ScrollToItem() تمت إعادة تسمية ScrollState.smooth ScrollTo() إلى animate ScrollTo() (I35ded).

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

  • إنّ السمة defaultFactory في compositionLocalOf وstaticCompositionLocalOf مطلوبة الآن بدلاً من أنّها اختيارية.

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

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

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

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

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

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

  • يتم تمثيل موضع التمرير في Modifier.vertical Scroll()/horizontal Scroll() باستخدام Ints الآن (I81298).

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

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

  • تمت إعادة تسمية أدوات تعديل الحجم. تمت إعادة تسمية Modifier.width/height/size إلى requiredSetup/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.PreferredOffer/FavoriteHeight/PreferredSize إلى العرض/الارتفاع/الحجم. (I5b414)

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

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

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

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

  • تمت إزالة AnimationClockMonitorable والفئات الفرعية. تمت إزالة صورة متحركة Float. (Icde52، b/177457083)

  • يتم الآن تعليق الدالة drawerState.open() و drawerState.Close() . تُستخدَم صانعة تذكّرCoroutineScope() للحصول على نطاق المقطوعة الموسيقية من أجل طلبها (I16f60 ، b/175294473).

  • تمت إعادة تسمية مقدّمي الخدمات إلى MembershipLocalProvider.

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

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

  • تمت إضافة المعدِّلات المطلوب عرض(IntrinsicSize) والمعدلات المطلوبة(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 الآن تذكُّر مفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل الكوروتين الخاص برصد إدخالات المؤشر في التبعيات الجديدة. (I849cd)
  • تحديث الاختبار: سيتحقق hasText() من كل من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في حقل النص (Iab803)
  • تمت إضافة PaddingValues.Absolute ويمكن استخدامه في واجهات برمجة التطبيقات التي تقبل PaddingValues. (Ia5f30)
  • تم إيقاف onImeActionPerform نهائيًا. يُرجى استخدام Keyboard Actions بدلاً من ذلك (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. يتيح لنا ذلك معالجة عمليات إعادة ترتيب السلع بشكل أكثر ذكاءً. لذا ستنتقل الحالة التي خزّنتها في تذكُّر {} الكتل مع العنصر عند إعادة ترتيب العناصر أو إزالة العنصر من المنتصف.

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

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

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

  • لأسباب تتعلق بالأداء، تستخدم الآن دلالات ScrollAxisRange قيم lambdas التي تعرض قيم Floats بدلاً من قيم Float المباشرة. (If4a35، b/178657186)

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

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

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

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

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

  • تمت إعادة تسمية "وضع الإضاءة السينمائية" لتتناسب مع إعادة تسمية "وضع الاستراحة" -> تكوين محلية. كان يُطلق اسم "أمبيانت" على البيئة المحيطة، أما الآن يُطلق اسم EnvironmentLocals على اسم LocalFoo. (I2d55d)

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

  • سنزيل savedInstanceState { 0 } كتلك التي تتضمنها فيديوهاتك، وذلك مثلما أزلنا state { 0 } كتلك التي كانت تُستخدَم في السابق، ونحن نعمل حاليًا على الترويج للاستخدام، مثل remember { mutableStateOf(0) }. يجب استخدام rememberSaveable { mutableStateOf(0) } بدلاً من ذلك، وسيتم الحفظ والاستعادة تلقائيًا إذا كان النوع المستخدَم داخل MutableState مخزّنًا في الحزمة. إذا كنت تمرر في السابق كائن توفير مخصصًا، يجب الآن استخدام حمل زائد جديد لتذكره قابلة للحفظ يحتوي على المعلمة 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 لإلغاء التبديل مع وضع الإغلاق. (Ib6d76)

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

  • renameSavedInstanceState() (I1366e، b/177338004)

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

  • تم نقل Saver وlistSaver() وmapSaver() والحفظ التلقائي من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)

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

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

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

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

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

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

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

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

  • نتيجةً لذلك، تم الآن إيقاف العمل بميزة "الرسوم المتحركة/العائمة". يُرجى استخدام رسوم متحركة بدلاً من ذلك. (I71345، b/177457083)

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

  • تم إيقاف androidx.compose.foundation.lookup.ConstraintLayout نهائيًا لصالح androidx.Restrictt مشاركة.compose.ConstraintLayout. ستحتاج إلى إضافة تبعية على androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)

  • تم إيقاف clickOptionFilter وDoubleTap إِلَىFilterFilter وlongPressOptionFilter و press متصفِّحaitonAnimationFilter نهائيًا. ويمكنك استخدام Modifier.clickable أو Modifier.pointerInput مع وظيفة revealTapالإيماءات بدلاً من ذلك. (I6baf9، b/175294473)

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

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

  • إيقاف التمرير - بدون تعليق ، إزالة التمرير إلى

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

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

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

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

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

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

  • تمت إزالة "data class" من الصفَّين التاليَين:

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

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

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

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

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

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

  • تم إيقاف onCommit وonDispose وonActive لتصبح واجهات برمجة تطبيقات SideEffect وDeposableEffect (If760e)
  • تمت إعادة صياغة WithConstraints باسم BoxWithConstraints، وتم نقلها إلى Foundation.Layout. (I9420b، b/173387208)
  • التغييرات التي طرأت على الوظائف الأصلية للخط/FontFamily/Typeface (الخط الطباعي)

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

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

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

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

    • تمت إزالة initial من معلَمات دالة الإنشاء في EditBuffer. (I326d5)
  • تم الآن إيقاف الحلّ المستقل والمؤلف من () الدمج ()) الحاليَين لصالح العنصرَين الحاليَّين الحاليَين (currentRecomposeScope) و"تذكُّر حساب التركيب" ( باعث) على التوالي. (I583a8)

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

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

  • يحلّ محل SpeakMonitorer محلّ AssessLifecycleMonitorer وتم الآن إيقاف سيطرته AssessLifecycleMonitorer نهائيًا.

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

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

  • تمت إعادة تسمية TransformText.التحويلedText إلى نص TransformText.text.

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

    • سلسلة AnnotatedString
    • نمط الفقرة
    • نمط ممتد
    • نمط النص
    • عرض الخط
    • زخرفة النص
    • تحويل النص الهندسي
    • فهرس النص
    • نتيجة تنسيق النص
    • TextLayoutInput (Iaff99)
  • تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f، b/170708374)

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

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

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

  • تمت إعادة تسمية SemanticsProperty إعلانيr.hidden إلى invisibleToUser وتم وضع علامة عليه @PersonalComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية StateDescriptionRange لتصبح progressBarRangeInfo. تمت إعادة تسمية Accessibility ScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibility ScrollState إلى horizontal ScrollAxisRange. ثم تمت إعادة تسمية verticalAccessibility ScrollState إلى vertical ScrollAxisRange. (Id3148)

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

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

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

  • تمت إعادة تسمية TextInputService.onStateupdated باسم updateState (Id4853).

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

الإصدار 1.0.0-alpha10

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

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

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

  • ImeOptions وKeyboardOptions ليست مرة أخرى فئة بيانات (I3c898، b/168684531)
  • التغييرات في VisualTransformation API
    • تمت إعادة تسمية OffsetMap إلى OffsetMapping
    • تمت إعادة تسمية OffsetMapping.identityOffsetMap إلى OffsetMapping.Identity
    • لم يعد تحويل كلمة المرور من فئة البيانات
    • تم نقل OffsetMapping إلى الملف الخاص بها
    • (I0bdf3)
  • تغييرات واجهة برمجة التطبيقات (EditOperations API)
    • تم تغيير اسم الأداة (EditOperation) باسم (EditCommand)
    • تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة لـ EditOperation
    • لم تعُد فئات البيانات EditCommand's فئات بيانات
    • تمت إعادة تسمية دالة EditOperation.process لتطبيق "ApplyTo"
    • تمت إعادة تسمية InEventListener إلى enterEventCallback
    • (I0a366)
  • السرعة المعدلة للحصول على أجزاء مكونة وعمليات رياضية. (Ib0447)
  • تمت إعادة تسمية @experimenting to @SpecialTestApi لكي تكون متناسقة مع التعليقات التوضيحية التجريبية المشابهة لواجهة برمجة التطبيقات (Ia4502 ، b/171464963)
  • تمت إضافة طريقة StayHeader التجريبية لـ LazyColumn/LazyRow (I0a81d)
  • Ranamed Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
  • TestUiDispatcher تم إيقافه نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)
  • إضافة مفتاح التبديل إلى Foundation Strings.kt (I4a5b7، b/172366489)
  • تم نقل تقنية originalClass إلى وحدة واجهة المستخدم وجعلها داخلية. تم تحديث استخدامات NativeClass في عمليات تنفيذ تساوي استخدام "is MyClass" بدلاً من ذلك. (I4f734)
  • تم إيقاف FlowRow وFlowColumn نهائيًا. يُرجى استخدام تنسيق مخصص بدلاً من ذلك. (I09027)
  • تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً من ذلك. (I75a48 وb/175160751 وb/175160532 وb/175077829)
  • تم تقديم SelectRegistrar.notifySelectableChange لإبلاغ التحديثات القابلة للاختيار إلى SelectionManager. (I6ff30، b/173215242)
  • تم تغيير fun Dp.isFinite() إلى val Dp.isFinite (I50e00)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • تمت إضافة isSpecified وisUnspecificified وuseOrElse في الفئات المضمّنة ذات الثابت غير المحدّد (I93f7b، b/174310811)

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

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

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

  • تمت إضافة LazyVerticalGrid (الشبكة العمودية). (I17267، b/162213211)

  • أغلق LazyColumnFor وLazyRowFor وLazyColumnForIndexed وLazyRowForIndexed. استخدِم LazyColumn وLazyRow بدلاً من ذلك (I5b48c).

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

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

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

  • تمت إضافة دعم InteractionState إلى حقل TextFields. (I61d91)

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

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

  • الآن، تستخدم دالة detectMulti touchتعرف استدعاء واحد مع المعلمات المدمجة النقاط المركزية والتحريك والتكبير/التصغير والتدوير. (Ie6e1c)

  • تم نقل ContentDrawScope إلى وحدة رسومات واجهة المستخدم لتكون باستخدام DrawScope. (Iee043، b/173832789)

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

  • تعرض منصات Lambdas في معدِّلات الإزاحة الآن IntOffset بدلاً من Float. (Ic9ee5 وb/174137212 وb/174146755)
  • تمت إزالة واجهة OpenTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. تم وضع علامة عليها سابقًا على أنها internalComposeAPI سابقًا. وهي الآن داخلية في وحدة الإنشاء.

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

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

    تم إيقاف واجهات برمجة التطبيقات لإنشاء دالة التدرج لصالح أساليب المصنع على كائن التدرج. (I511fc، b/173066799)

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

  • أصبحت واجهة برمجة التطبيقات للملء التلقائي الآن واجهة برمجة تطبيقات تجريبية وتتطلّب الحصول على موافقة (I0a1ec)

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

  • تمت إعادة تسمية AccessibilityLabel إلى contentDescription. تمت إعادة تسمية AccessibilityValue إلى StateDescription. (I250f2)

  • تم تقديم العديد من الدوال الجديدة في SelectionRegistrar وإعادة تسمية ميزة onPositionChange إلى الإشعارPositionChange. (Ifbaf7)

  • تم إنشاء AndroidOwner داخليًا (Ibcad0، b/170296980)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • تم نقل واجهات برمجة تطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.draw. تم إنشاء ملف DrawModifier مخطط.kt لتضمين أساليب الكتابة/أساليب المساعدة للمساعدة في عملية الانتقال من واجهة برمجة التطبيقات المتوقفة الحالية إلى واجهات برمجة التطبيقات الحالية. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.drawLayer إلى Modifier.graphicsLayer. تم أيضًا تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا لملاحظات مجلس واجهة برمجة التطبيقات. (I0bd29، b/173834241)
  • تمت إزالة <T> من بيان SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8)
  • تم جعل وقت تشغيل PointerInputData وحقول الموضع غير قابلة للقيم الفارغة. (Id468a)
  • أصبح MaterialTheme الآن يحدد الألوان الصحيحة لمقابض التحديد وخلفية التحديد. يمكن للتطبيقات غير المستنِدة إلى مواد مختلفة استخدام ألوان EntertainmentTextSelectionColors يدويًا لتخصيص الألوان التي يتم استخدامها للاختيار. (I1e6f4، b/139320372، b/139320907)
  • تمت إعادة تسمية مَعلمة المحاذاة في Box لتصبح contentAlignment. (I2c957)
  • تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. وهي تأخذ الآن معلَمات lambda بدلاً من "الحالة". (Ic3021، b/173594846)
  • تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف محل التركيز، وأداة WindowFocusMonitorer التي توفر استدعاء onWindowFocusChanged. (I53b2a، b/170932874)
  • تمت إضافة المعلمة renameInput إلى TextInputService#onStateupdated (I3e8f5، b/172239032، b/171860947)
  • واجهة برمجة تطبيقات TextFieldValue المعدَّلة
    • تم جعل TextFieldValue.composition للقراءة فقط
    • تمت إزالة الاستثناء لنطاق التحديد غير الصالح (I4a675، b/172239032)
  • تم إيقاف ميزات "وضع عدم النشاط" التي تحمل اسم "Ambient" كلاحقة لها، واستبدلتها بسمات جديدة مسبوقة بعبارة "وضع عدم النشاط"، وذلك باتّباع إرشادات أخرى حول عناصر المحيط والكتابة في واجهة برمجة التطبيقات. (I33440)
  • تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل نمط الخط Android عبر دالة typeface، أي typeface(Typeface.DEFAULT). تمت أيضًا إعادة تسمية typefaceFromFontFamily() إلى typeface() (I52ab7)
  • تمت إضافة فحص الوبر للتأكّد من أنّ مصانع المعدّل يستخدم androidx.compose.ui.composed {} داخليًا، بدلاً من وضع علامة @Composable عليه. (I3c4bc)
  • تمت إضافة فحص الوبر للتأكّد من أنّ وظائف "المعدِّل" الأصلية هي إضافات في "المعدِّل"، وبالتالي يمكن ربطها معًا بطلاقة. (I07981)
  • تمت إعادة تسمية وسيطة Sementics integrationAllDescendants إلى mergeDescendants. (Ib6250)
  • التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماتها) أصبح تجريبيًا الآن (I6ef86، b/171378521)
  • إزالة وحدة اختبار واجهة المستخدم القديمة وملفاتها (I3a7cb)
  • تمت إعادة تسمية TextUnit.Inherited إلى TextUnit.غير محدَّد بما يتوافق مع الوحدات الأخرى. (Ifce19)
  • تم تحديث واجهة المحاذاة وجعلها تعمل. (I46a07، b/172311734)
  • تم دمج وحدة واحدة (foundation:foundation-text) في foundation:foundation (Idac0f).
  • تجنَّب استخدام المكان(الإزاحة) والمكان نسبي(الإزاحة). استخدام أحمال زائدة مع إزاحة Int بدلاً من ذلك (I4c5e7)
  • تمت إعادة تسمية id إلى layoutId للنطاق LayoutIdParentData. تمت إعادة تسمية Measurable.id إلى Measurable.layoutId. (Iadbcb، b/172449643)

الإصدار 1.0.0-alpha07

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

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

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

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

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

  • تم تقديم فئة مضمّنة في ScaleFactor لتمثيل عوامل قياس للمحورين الأفقي والرأسي مستقلة عن بعضها البعض من أجل دعم حالات استخدام التدريج غير المُوحّد.
    • تمت إضافة طريقةcomputeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لإجراء تحجيم غير موحد لتوسيع حدود src لشغل الوجهة بالكامل.
    • تمت إضافة طرق عوامل التشغيل لحساب معاملات ScaleFactor باستخدام مُعلَّمات الحجم.
    • (Ic96a6، b/172291582)
  • تم نقل CaptureToBitmap إلى CaptureToImage. (I86385)
  • وضع علامة على CoreText كالتالي @internalTextApi. يمكنك استخدام BasicText بدلاً من ذلك. (I6aaeb)
  • إعادة تسمية KeyboardOptions بتنسيق ImeOptions (I82f36)
  • تم نقل KeyboardType وImeAction إلى KeyboardOptions (I910ce).
  • تم وضع علامة على CoreTextField كالتالي: @internalTextApi. استخدام BasicTextField بدلاً من ذلك (Ie2469)
  • تمت إزالة التعليق التوضيحي experimentSubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تقديم وحدة ui-test-junit4 (Ib91f8)
  • تم تحديث واجهة برمجة التطبيقات للأيقونة لتتحول إلى اللون.غير محدد كلون تلوين محتمل سيرسم الأصل أو الرسّاش المقدم بدون ColorFilter. حاولنا في السابق تجاهل التلوين باستخدام اللون، غير محدد قد يؤدي إلى التلوين إلى لون شفاف ينتهي به الأمر بدون عرض أي شيء على الإطلاق. (I049e2، b/171624632)
  • تم نقل MeasurementResult خارج MeasurementScope. (Ibf96d، b/171184002)
  • تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.caption.ui. (I0fa98، b/170475424)
  • تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
  • تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.لاستخدامها (Ied2e7)
  • تمت إضافة حاوية التحديد بدون معاودة الاتصال (Ibfadb).
  • إضافة اختبارات لمواضع SelectHandles في selectContainer. (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)
  • تمت إضافة activityState إلى Modifier.scrollable و ScrollableColumn وLazyColumnFor (I81566، b/169509805).
  • تمت إضافة lineByBaseline إلى RowScope، وتمت إعادة تسمية واجهة برمجة التطبيقات alignWithSiblings إلى نطاق "نِسَبُل" (I06503، b/170628732).
  • تم تحويل Box إلى دالة مضمنة. (Ibce0c، b/155056091)
  • تمت إضافة maxLines إلى CoreTextField (Ibee58، b/143687793).
  • تمت إضافة soft wrap إلى CoreTextField. (I21a4b)

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

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

    • ContentColor بيّن -> ألوان نابضة بالحياة
    • TextStyle<b> (نمط النص) -> "amtifTextStyle" (نمط النص المحيط)
    • المؤشر المحيط -> المؤشر المحيطي
    • EmphasisIntus -> amphasisDomains ->
    • RippleThemePartner -> EntertainmentRippleTheme (I37b6d)

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

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

الإصدار 1.0.0-alpha04

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

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

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

  • تمت إعادة تسمية الحزمة إلى Box. سيتم إيقاف الأساسيات الموجودة سابقًا.Box لصالح Box الجديد في compose.foundation.Formatting. يتمثل سلوك Box الجديد في تكديس العناصر الثانوية واحدة فوق الأخرى إذا كان لديها عدة عناصر فرعية - يختلف هذا عن Box السابق، الذي كان يعمل مشابهًا لعمود. (I94893، b/167680279)
  • تم إيقاف مَعلمات زخرفة المربّع نهائيًا. إذا أردت إضافة زخارف أو مساحة متروكة في المربّع، استخدِم "معدلات تعديل" بدلاً من ذلك (Modifier.background أو Modifier.border أو Modifier.adding) (Ibae92 وb/167680279)
  • أضِف فئة LazyListState جديدة. يسمح هذا بالملاحظة والتحكم في موضع التمرير لمكونات LazyRow وLazyColumn. يمكن إنشاء المثيلات باستخدام rememberLazyListState() وتمريره إلى معلمة الحالة للمكون. في الوقت الحالي، يمكن ملاحظة أول عنصر مرئي وإزاحة في هذا الإصدار الأولي. (Ic7cb7 ، b/159307669)
  • يتم الآن حفظ موضع القائمة الكسول وإزاحة التمرير واستعادتها في قسم إنشاء النشاط (Ie045f، b/166589058)
  • إضافة إجراء دلالي للنقر الطويل (I6281b، b/156468846)
  • تمت إضافة أداة Mutatormutx للاحتفاظ بمتغيّر واحد للحالة المشتركة بمرور الوقت وإلغاء آلية التغييرات المتعارضة حسب الأولوية (I3f975).
  • Annotated الجذرAnimationClockوصوء الانتقالات وblinkingCursorEnabled وtextInputServicefactory باستخدام @VisualForTesting، وجعلها واجهة برمجة تطبيقات داخلية وإخفاء ملفات 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)

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

  • تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
    • تم تحديث واجهات برمجة التطبيقات للمقياس والتدوير لاستهلاك معلمة الإزاحة واحدة لتمثيل الإحداثي المحوري بدلاً من المعلَمات العائمة المنفصلة للإحداثيات x/y في DrawScope وDrawTransform
    • تمت إزالة طريقتي Rect.expandToFrom وRect.join
    • تم تحديث وثائق نصف القطر بحيث تشير إلى الشكل البيضاوي بالإضافة إلى جهاز الحركة البيضاوية
    • تمت إضافة وثائق للإشارة إلى أن المنشئ العام لفئة نصف القطر المضمَّن لا يتم استدعاءه مباشرةً ولكن يجب إنشاء مثيل لكائنات نصف القطر من خلال الدالة الإنشائية للدوال
    • وتمت إزالة واجهات برمجة تطبيقات RoundRect للاستعلام عن topRight وbottomRight وbottomCenter وما إلى ذلك.
    • تم إيقاف Rect.shift نهائيًا لصالح Rect.translate
    • تمت إزالة واجهات برمجة تطبيقات RoundRect.grow وRect.shrink
    • إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect
    • تمت إزالة طريقتي RoundRect.midRect/tallMiddleRect/wideMiddleRect وRect.isStadium.
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxDimension
    • تمت إعادة تسمية RoundRect.shortestSide إلى RoundRect.min متصفّح
    • تم تغيير RoundRect.center إلى خاصية بدلاً من دالة
    • تم تحديث الدالة الإنشائية RoundRect لاستهلاك خصائص نصف القطر بدلاً من المعلمات الفردية لقيم نصف القطر x/y
    • تمت إزالة واجهات برمجة التطبيقات للحجم التي افترضت أنها كانت مستطيلة بالمصدر 0,0
    • تمت إضافة واجهة برمجة تطبيقات تخريبي إلى نصف القطر.
    • تم نقل دوال إضافات 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 بأساليب تحويل النطاق للإشارة إلى أنّه يتم تطبيق التحويل فقط ضمن رد الاتصال وتتم إزالته بعد استدعاء الاستدعاء
    • تم تحديث وثائق cutPath للإشارة إلى "المسار" بدلاً من المستطيل الدائري
    • التباعد الثابت في وثائق المعلمة اليمنى في ClapPath
    • تمت إعادة تسمية DrawScope.drawCanvas إلى drawIntoCanvas وإزالة معلمة الحجم
    • تمت إعادة تسمية معلمات dx/dy في طريقة الإدراج إلى أفقي وعمودي
    • تمت إضافة التحميل الزائد للداخل الذي يوفر نفس قيمة الإدخال لجميع الحدود الأربعة
    • تمت إزالة الوثائق المتعلقة بطريقة الإدراج التي تشير إلى أنه سيتم تطبيقه على جميع الجوانب الأربعة
    • مستندات معدَّلة لفئة Rect
    • تم تحديث التعليقات على معلمات Rect لتتطابق مع نمط kdoc
    • تمت إزالة Rect.join وRect.expandToتضمين
    • تم إنشاء الحمل الزائد لـ Rect.translate(offset) وإيقاف Rect.shift
    • (If086a، b/167737376)
  • إضافة Accessibility ScrollState إلى خصائص الدلالات. (Ifeda9)
  • اجعل TextRange مضمّنًا لتجنب إنشاء كائن. (Id034b)
  • تمت إزالة قيود الفقرة. يتم تمرير العرض مباشرةً إلى الفقرة الآن. (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)
  • تم إصلاح العمليات الحسابية للحجم والموضع في الإيماءاتScope، والتي تسببت في إنشاء إيماءات تمرير غير صالحة لدى الآخرين (Iaf358، b/166589947).
  • تم نقل createAndroidComposeRule وAndroidInputDispatcher من androidx.ui.test.android إلى androidx.ui.test (Idef08، b/164060572)

الإصدار 1.0.0-alpha02

2 أيلول (سبتمبر) 2020

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

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

  • يحمل TestUiDispatcher علامة تجريبية (Iae99d، b/161247083)
  • تمت إضافة ManualFrameClock.hasAwaiters لمعرفة ما إذا كان هناك أي شيء في انتظار إطار من تلك الساعة، وrunWithManualClock كبديل لـ runBlocking عند إجراء الاختبارات التي تحتاج إلى ManualFrameClock، TestUiDispatcher.Main والذي يتيح الوصول بسهولة إلى أداة إرسال واجهة المستخدم الرئيسية في اختباراتك.

    مثلاً:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (I0a85b، b/161247083)

الإصدار 1.0.0-alpha01

26 آب (أغسطس) 2020

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

الإصدار 0.1.0-dev

الإصدار 0.1.0-dev17

19 آب (أغسطس) 2020

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

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

  • تمت إضافة SpacedBy Arrangement إلى الصفوف والعمود، لتمكين تحديد موضع العناصر الثانوية للتخطيط بتباعد ثابت. تمت أيضًا إضافة الترتيب الذي تمت محاذاته لتفعيل وضع عناصر التنسيق الثانوية واحدة بجانب الآخر ومحاذاتها في الصف/العمود وفقًا لمحاذاة. تم إيقاف طريقتَي Arrangement.Vertical#arrange و Arrangement.Horizontal#arrange السابقَين، ولن تتم إتاحة كتابة ترتيبات مخصّصة في المستقبل. (I6733d، b/161985975)
  • أصبحت الإزاحة فئة مضمّنة (Iaec70)
  • تمت إزالة onFocusChanged لمعاودة الاتصال من TextField. استخدِم Modifier.focusMonitorer بدلاً من ذلك. (I51089، b/161297615)
  • تم إيقاف Modifier.drawBorder نهائيًا. يمكنك استخدام Modifier.الحد بدلاً من ذلك. تم استبدال فئة البيانات الحدودية بـ BorderStroke (I4257d, b/158160576).
  • تمت إزالة كل من شريط التمرير العمودي وشريط التمرير الأفقي. وبدلاً من ذلك، يمكنك استخدام ScrollableColumn/Row. تمت إزالة Modifier.drawBack. استخدِم Modifier.background (I73b0d، b/163019183)
  • يُرجى إزالة معدِّلات fillMax* التي تم إيقافها نهائيًا من LazyItemScope، لأنّها تصعّب إضافة هذه المعدّلات بشكل صحيح للعناصر التي ليست فرعية مباشرة لـ LazyColumnFor (Ifa78d).
  • تمت إضافة تنفيذ LazyColumn/LazyRow كـ DSL (I93cc6)
  • أصبحت القيود الآن فئة مضمّنة (I88736).
  • تمت إضافة إمكانية تحديد حجم تصميم إلى جزء من المساحة المتاحة باستخدام أدوات تعديل fillMax width وfillMaxHeight وfillMaxSize. (I945bb، b/161562591)

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

  • تمت إضافة معلمة تعديل إلى SelectionContainer (I4aada، b/161487952).
  • تمت إضافة integrationPolicy lambda إلى SemanticsPropertyKey. ويمكن استخدام هذا لتحديد سياسة مخصّصة لدمج دلالات الدمج AllDescendants. والسياسة التلقائية هي استخدام القيمة الرئيسية إذا كانت موجودة من قبل، وإلا تكون القيمة الفرعية. (Iaf6c4، b/161979921)
  • تمت إعادة تسمية PlacementScope.placeAbsolute() إلى PlacementScope.place()، كما تمت إعادة تسمية PlacementScope.place() السابق إلى PlacementScope.placeRelative(). ونتيجةً لذلك، لن تُظهر طريقة PlacementScope.place() الموضع تلقائيًا في السياقات من اليمين إلى اليسار بعد الآن. ويمكنك استخدام PlacementScope.placeRelative() بدلاً من ذلك إذا كنت تريد ذلك. (I873ac، b/162916675)
  • تمت إزالة المكوِّن ملء حقل النصوص المتوقّف نهائيًا. يُرجى استخدام "TextField" بدلاً من ذلك لتنفيذ "التصميم المتعدد الأبعاد" لحقل النص المعبّأ. (I5e889)
  • تمت إضافة معلمة colorColor إلى مؤشر LinearProgressIndex وإزالة المساحة المتروكة الداخلية من CircularProgressIndexator. تمت إضافة Progress IndiatorConstants.DefaultProgressAnimationSpec الجديدة التي يمكن استخدامها كقيمة AnimationSpec التلقائية عند تحريك التقدُّم بين القيم (If38b5 وb/161809914 وb/161804677)
  • تم إيقاف واجهة برمجة التطبيقات state { ... } نهائيًا بهدف إرسال طلبات فاضحة إلى remember { mutableStateOf(...) } بغرض التوضيح. ويؤدي ذلك إلى تقليل المساحة الإجمالية لواجهة برمجة التطبيقات وعدد المفاهيم لإدارة الحالة، كما يتطابق مع نمط by mutableStateOf() لتفويض خصائص الفئة. (Ia5727)
  • تمت إعادة تسمية RRect إلى RoundRect ليتناسب بشكل أفضل مع أنماط تسمية الإنشاء تم إنشاء دوال إنشاء وظائف مشابهة للدوال RRect المتوقفة وإنشاءات دالة RRect (I5d325)
  • تمت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier على التنسيق الفرعي بدلاً من ذلك. (I4522e، b/162109766)
  • أصبحت IntSize الآن فئة مضمّنة (I2bf42).
  • اضغط مع الاستمرار على المنطقة الفارغة للتعديل. (Ib1e5b)
  • إخفاء شريط الأدوات العائم بعد النقر على النص (If4525)
  • إخفاء شريط الأدوات العائم عند تحديث التحديد. (I8444c)
  • إلغاء اختيار "عند التمويه". (I781a2)

الإصدار 0.1.0-dev16

5 آب (أغسطس) 2020

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

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

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

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

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

    أصبحت معادلة MonotonicFrameClock المكافئة لـ ManualAnimationClock الآن بمثابة ManualFrameClock. (I111c7، b/161247083)

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

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

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

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

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

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

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

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

  • تمت إعادة تسمية AndroidComposeTestList لإنشاء AndroidComposeRule. (I70aaf)

  • إضافة إجراء إمكانية الوصول للحصول على TextLayoutResult (I9d6e6)

الإصدار 0.1.0-dev15

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

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

لاستخدام الإصدار 0.1.0-dev15 من ميزة "إنشاء"، ستحتاج إلى:

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

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

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

  • على نحو مشابه للمَعلمة الجديدة في ScrollableColumn/ScrollableRow، تحتوي LazyColumnItems/LazyRowItems الآن أيضًا على مَعلمة contentPadding التي تسمح بإضافة مساحة متروكة للمحتوى بعد اقتصاصه، وهو أمر غير ممكن من خلال مَعلمة تعديل فقط. ويسمح لك أيضًا بإضافة مسافة قبل العنصر الأول/بعد العنصر الأخير فقط. (Ibc24e)
  • معاودة الاتصال onFocusChange في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
  • تم إيقاف هذين التطبيقين. ويمكنك استخدام ScrollableColumn و ScrollableRow للحصول على تجربة استخدام مضمّنة مع سلوك العمود/الصف ومعلَماته، أو Modifier.vertical Scroll وModifier.horizontal Scroll على عنصرك. وبالمثل، تم إيقاف ScrollerPosition لصالح ScrollState (I400ce ، b/157225838، b/149460415، b/154105299)
  • تم إعادة صياغة واجهات برمجة التطبيقات Modifier.draggable وModifier.scrollable. تمت إزالة DragDirection لصالح ميزة "الاتجاه". تم تبسيط الحالة المطلوبة لإتاحة الانتقال. تمت إعادة تسمية ScrollableState إلى ScrollableController (Iab63c ، b/149460415).
  • تستخدم الآن خصائص الدلالة ذات القيمة الفردية نمط استدعاء. على سبيل المثال، تمت كتابة 'semantics { مخفية = true }' الآن على النحو التالي: semantics { hidden() }. (Ic1afd، b/145951226، b/145955412)
  • يمكن الآن أن تكون أحجام الزوايا المستخدمة في RoundedCornerShape وCutCornerShape أكبر من 50% (Id2340، b/160400213).
  • تم تغيير معلمة ContentScale الافتراضية لصورة الصورة القابلة للتعديل من Inside إلى Fit. وقد تم ذلك من أجل توسيع نطاق عمل الرسام الأساسي إذا كان حجم التخطيط أكبر من الحجم الأساسي للرسام مع الحفاظ على نسبة العرض إلى الارتفاع. ويتطابق هذا السلوك على نحو أفضل مع التوقعات المتعلقة بتوفير أحجام ثابتة للصورة مع عدم التأثير في السلوك التلقائي عند استخدام الحجم الأساسي فقط لحساب حجم العنصر المركّب. (I40ae3، b/159838006)
  • استخدم AnimationSpec بدلاً من AnimationBuilder في واجهات برمجة التطبيقات ذات المستوى الأعلى لتوضيح مفهوم مواصفات الرسوم المتحركة الثابتة -تحسين عملية النقل DSL عن طريق إزالة مطلب lambda لإنشاء AnimationSpecs مثل 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 بـ IntPxPosition بدلاً من IntOffset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)
  • تمت إزالة androidx.ui.foundation.shape.RectangleShape. يُرجى استخدام androidx.ui.graphics.RectangleShape (I94939، b/154507984).
  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات المقاسات، عليك توحيد استخدام فئة المقاس بدلاً من PxSize. يوفر هذا مزايا الفئة المضمنة للاستفادة من القيمة الطويلة للحزمة والقيمتين العائمتين لتمثيل العرض والارتفاع ممثلين كعدد عشري. (Ic0191)
  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد الموضع، عليك توحيد استخدام فئة Offset بدلاً من PxPosition. يوفر هذا فوائد فئة مضمّنة للاستفادة من قيمة طويلة للحزمة عائمة 2 لتمثيل إزاحة س وص ممثلة كأعداد عشرية. (I3ad98)
  • تمت إضافة Modifier.zoomable لوظيفة التصغير أو التكبير بإصبعين (Id5d63).
  • تم إيقاف المكوِّن القابل للتبديل نهائيًا. استخدام Modifier.toggleable بدلاً من ذلك (I35220، b/157642842)
  • تم إيقاف ميزة MutuallyousSetItem نهائيًا. استخدِم Modifier.selectable بدلاً من ذلك. (I02b47، b/157642842)
  • تم إيقاف TestTag نهائيًا الآن. استخدِم Modifier.testTag بدلاً من ذلك. (If5110، b/157173105)
  • إضافة مَعلمة FontWeight إلى النص الذي لم تتم إضافته مسبقًا عن طريق الخطأ (I56937)
  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (I19d02)
  • يوفر Vertical Scroller الآن ميزة "العمود" خارج المربع. يوفر شريط التمرير الأفقي الآن ميزة "الصف" خارج الصندوق. (Ieca5d، b/157020670)
  • استخدام فئة Px في مختلف فئات الإنشاء كجزء من الجهود الكبيرة لإعادة البناء للاعتماد فقط على الأنواع الأساسية لمعلمات البكسل (Iede0b)
  • تمت إضافة Modifier.indction إلى حزمة الأساس. يمكنك استخدام هذا الزر لإظهار مؤشر الماوس/السحب/غير ذلك على العناصر المخصّصة القابلة للتفاعل (I8425f ، b/155287131).
  • يتيح كل من Vertical Scroller وhorizontal Scroller التمرير العكسي كما يتم تعيين isReversed على ScrollerPosition (I953bd).
  • دعم إضافة مواد قابلة للتعديل في تنسيق النص. (I1373c)
  • عمليات تنفيذ CanvasScope موحّدة، لذلك أصبح هناك الآن فقط DrawScope وContentDrawScope تم تغيير اسم CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة Density وتوفير فئة LayoutDD Deleted DrawScope في ContentDrawScope تم تعديل Painterainter وPainterModifier لعدم صيانته بعد ذلك بخاصية من اليمين إلى اليسار (RTL) لأنّ DrawScope يوفّر ذلك بدون تقديمه يدويًا (I1798e)
  • تمت إزالة واجهة برمجة تطبيقات DrawFrame التي تم إيقافها نهائيًا لصالح واجهة برمجة التطبيقات drawBack API على واجهة برمجة التطبيقات. عمليات إعادة ضبط الألوان والفرشاة والرسم الخلفية لتقليل مسارات الرموز بالإضافة إلى إزالة متطلبات إنشاء "المعدِّل" كجزء من عملية الإنشاء. (I0343a)
  • تم تحديث واجهات برمجة التطبيقات ذات المستوى الأعلى التي تعرض "لوحة الرسم" لعرض "CanvasScope" بدلاً من ذلك. فهذا يلغي حاجة المستهلكين إلى الحفاظ على كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا يطلبون الوصول إلى لوحة الرسم، يمكنهم استخدام طريقة الإضافة drawCanvas التي توفّر استدعاءً لإصدار أوامر الرسم باستخدام لوحة الرسم الأساسية. (I80afd)
  • لا يستعيد كل من الأفقي وVertical Scroller موضع التمرير باستخدام حالة المثيل المحفوظة. (Ia0fae، b/155075048)
  • تمت إزالة FocusManagerManager. استخدم FocusModifier.requestFocus للحصول على التركيز. (Ic4826)
  • تمت إزالة تنسيق الجدول مؤقتًا إلى أن نجعله متاحًا مرة أخرى مع واجهة برمجة تطبيقات مُحدَّثة. (Id88a7)
  • تم إنشاء واجهة برمجة تطبيقات CanvasScope التي تلفّ عنصر لوحة الرسم لعرض سطح واجهة برمجة تطبيقات للرسم التعريفي وبدون حالة. ويتم تضمين التحويلات ضمن نطاق المستلم الخاص بها وتحديد حجم معلومات التحجيم أيضًا إلى الحدود الداخلية المقابلة. وهي لا تتطلب من المستهلك الاحتفاظ بكائن حالة الطلاء الخاص به لتكوين عمليات الرسم.

    تمت إضافة CanvasScopeعيّن وتم تحديث التطبيق التجريبي لتضمين عرض توضيحي للرسومات (Ifd86d)

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

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

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

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

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

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

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

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

  • تم نقل شكل الشكل المستطيل من androidx.ui.foundation.shape.* إلى androidx.ui.graphics.* (Ia74d5، b/154507984)

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

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

  • تم تغيير اسم ScaleFit ليصبح ContentScale Moved ContentScale من رسومات واجهة المستخدم إلى وحدة واجهة المستخدم الأساسية للتواجد في الوحدة نفسها مثل واجهة برمجة التطبيقات المحاذاة. تم إعادة تسمية ملء أقصى بُعد للاقتصاص تمت إعادة تسمية ملء أدنى البعد إلى Fit وأعادت تسمية Fit إلى الداخل للمطابقة بشكل أفضل.معادلات ImageView.ScaleType أضفت مستندات تشير إلى أن الجمع بين الاقتصاص ومحاذاة.المركز يحققان النتيجة نفسها التي تحققها ImageView.ScaleType.Center_CROP وFit مُسْتَمِسَات مع حسابكَ.Center_يحقق كل منها النتيجة ذاتها التي تحققها ImageView.ScaleType.FIT5Center.داخل الصورة المستخدمة مع نفسه.

  • ستتم إزالة ميزة OfferContentColor، ولكن يمكنك بدلاً من ذلك استخدام ContentColor الاقتراحات مباشرةً مع Providers (Iee942).

  • لإضافة مَعلمة color إلى النص، ما يسمح بتجاهل لون نمط النص بدون الحاجة إلى الدمج يدويًا مع النمط المدرَج في المظهر (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).

  • تم نقل السحب إلى مفتاح التعديل (Id9b16، b/151959544)

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

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

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

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

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

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

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

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

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

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

  • يتوافق مكوِّن التكدس مع الاتجاه من اليمين إلى اليسار (Ic9e00)

  • تمت إضافة الرمز، IconButton وiconToggleButton، لإزالة AppBarIcon. يمكنك استبدال التطبيقات الحالية لـ AppBarIcon مباشرةً بالرمز IconButton، وسيصبح لديهم الآن هدف اللمس الصحيح. ويمكنك الاطّلاع على نماذج للحصول على معلومات عن الاستخدام، والاطّلاع على الرموز الخاصة برموز المواد المقدَّمة التي يمكنك استخدامها مباشرةً مع هذه المكوّنات. (I96849)

  • تمت إزالة عنصر DrawShape الذي تم إنشاؤه. استخدِم مفتاح التعديل "رسم الخلفية" بدلاً من ذلك. (I7ceb2)

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

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

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

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

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

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

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

  • تعرض برامج التمرير الآن سلوكًا أصليًا على أجهزة Android للحركة. (I922af، b/147493715)

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

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

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

  • تمت إضافة دعم هوامش حواجز ConstraintLayout. (I47ffe)

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

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

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

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

  • تمت إزالة محاذاة الصفوف ومحاذاة العمود المتوقفة في الصف والعمود. (If60d4، b/155858731)

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

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

  • تم نهائيًا إيقاف العنصر القابل للضبط لمحاذاة LineOffset. يُرجى استخدام مفتاح التعديل الترفيهي recognizedPaddingFrom() بدلاً من ذلك. تمت إزالة CenterAlignmentLine الذي تم إنشاؤه. (I60107)

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

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

  • تمت إزالة أدوات تعديل العرض/الارتفاع/الحجم المتوقفة نهائيًا. (Ib0bc1)

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

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

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

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

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

  • تمت إضافة المعاملينvertical Gravity وhorizontalGravity إلى "الصف والعمود" على التوالي. (I7dc5a)

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

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

  • تمت إعادة تسمية مجموعات EdgeInsets إلى InnerPadding. تمت إعادة تسمية معلمة innerPadding لأزرار المواد إلى Paddding. (I66165)

  • تقبل dateToSiblings الآن العنصر "القياس" بدلاً من "Placeable". (I5788d)

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

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

  • تمت إزالة المواد المركبة التي تم إيقافها نهائيًا، مثل "الالتفاف" و"المركز". (I29e23)

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

  • يمكن الآن الوصول إلى أعضاء RowScope والعمود "نطاق العمود" خارج "الصف والعمود". (I3a641)

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

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

  • الدعم الأولي لـ Rtl في تنسيق Compose (Ia5519)

  • تم تعديل "محاذاة التنسيق" لعدم تعبئة المساحة المتاحة بعد الآن (I2b14f).

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

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

  • نفِّذ مقابض تحديد السحب لتغيير اختيار حقل النص. (I27032)

  • تنفيذ LongPressAndDrag لتحديد حقل النص. (I17919)

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

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

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

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

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

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

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

  • مؤشر حقل النص يحتوي على صورة متحركة وامضة (Id10a7)

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

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

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

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

  • تم تعديل واجهة برمجة تطبيقات المحاذاة وإضافة دعم للمحاذاة المطلقة (التي لا تتم المزامنة التلقائية في سياق Rtl) (I38cd3)

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

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

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

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

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

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

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

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

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

  • DrawLayerModifier و drawLayer() بشكل افتراضي trimToBounds وClipToOutline على false. (I0eb8b، b/152810850)

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

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

  • تم تغيير اسم التخطيط المرن إلى وزن التخطيط. تمت إعادة تسمية المعلمة الضيقة للتعبئة. (If4738)

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

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

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

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

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

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

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

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

  • تم دمج الكثافة ونطاق الكثافة في واجهة واحدة. ويمكنك الآن استخدام DensitySPACE.current بدلاً من إلغاء appdensity() . بدلاً من withDensity(density) (الكثافة) فقط مع(density) (I11cb1)

  • تمت إزالة فئة ValueHolder. تمت إعادة هيكلة رسوم GIF، وفئات رسوم متحركة، لجعل حقل قيمة الرسوم المتحركة مجردًا حتى تتمكن الفئات الفرعية من مشاهدة تحديث القيمة.

    • تمت إضافة فئات نماذج لـAnimationValue وAnimationFloat وما إلى ذلك.
    • تمت إضافة مجموعة جديدة من واجهة برمجة التطبيقات @Composable الخفيفة للتنقل بين القيم.
    • (I79530)
  • تغييرات قد تؤدي إلى أعطال في واجهة برمجة تطبيقات Accessibilitys يمكنك الاطّلاع على سجلّ ومستندات Ambient<T> لمعرفة التفاصيل (I4c7ee، b/143769776).

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

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

  • تم تغيير واجهة برمجة التطبيقات اللاحقة lambda API لـ WithConstraints. بدلاً من معلَمتين، تتضمن الآن نطاق مستلم، بالإضافة إلى القيود وLayoutDirection، توفر خصائص min width وmax width وminHeight وmaxHeight في Dp (I91b9a وb/149979702).

  • تم تغيير اسم LayoutModifier2 ليصبح LayoutModifier. (Id29f3)

  • تتضمّن دوال القياسات الأساسية في "التنسيق" و"LayoutModifier2" جهاز استقبال IntrinsicmeasureScope حاليًا الذي يوفّر واجهة برمجة تطبيقات طلبات البحث الأساسية مع اتجاه التصميم المنتشر بشكل ضمني. (Id9945)

  • تم إيقاف LayoutDirection أنّ أمبير متوقفة نهائيًا. لقراءة اتجاه التنسيق المحدد حسب اللغة، استخدِم localeLayoutDirection في صفحة الضبط (I851b1)

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

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

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

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

  • حصلت شركة WithConstraints على معلمة LayoutDirection (I6d6f7)

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

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

  • لم تعد ميزة LayoutCoordinates سمة موضع. لا معنى لخاصية الموضع عند التفكير في LayoutModifiers أو التدوير أو الضبط. بدلاً من ذلك، يجب على المطورين استخدامparentCoordinates وchildToLocal() لحساب التحويل من أحد LayoutCoordinate إلى آخر.

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

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

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

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

  • إضافة شريط أدوات عائم لتحديد حقل النص (Ie8b07)

  • تمت إعادة تسمية خوارزمية TextDirectionAlgorithm لتصبح TextDirection (I75ce8).

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

  • إضافة HapticFeedback إلى تحديد الحقل النصي (I58050)

  • إضافة طرق النسخ والقص واللصق إلى تحديد حقل النص (Idb70b)

  • تم حذف TestTag ودلالة البيانات. استخدِم Modifier.testTag وModifier.semantics بدلاً من ذلك (I15ff0، b/158841414).

  • تغيير اسم الحزمة للّغة المحلية وLocaleList من androidx.ui.text إلى androidx.ui.intl (I8132c)

  • تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString(builder: Builder) إلى annotatedString(builder: Builder). (Ia6377)

  • تغيير في واجهة برمجة التطبيقات: تمت إعادة تسمية AnnotatedString.Item إلى AnnotatedString.Range. (I2d44d)

  • أضف شريط الأدوات لإجراء العمليات المتعلقة بالنصوص. (I49d53)

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

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