إنشاء واجهة المستخدم

المكونات الأساسية لواجهة مستخدم الإنشاء اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال.
التعديل الأخير الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
20 آذار (مارس) 2024 1.6.4 - - 1.7.0-alpha05

التركيبة

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

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

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

إعلان التبعيات

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

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

رائع

dependencies {
    implementation "androidx.compose.ui:ui:1.6.4"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.6.4")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

لمزيد من المعلومات حول التبعيات، انظر إضافة تبعيات الإصدار.

ملاحظات

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

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

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

الإصدار 1.7

الإصدار 1.7.0-alpha05

20 آذار (مارس) 2024

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

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

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

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

  • لم تعد GraphicsLayer.draw(Canvas) واجهة برمجة تطبيقات عامة بعد الآن. يُرجى استخدام دالة الإضافة DrawScope.drawLayer(GraphicsLayer) بدلاً من ذلك لرسم الطبقة. (I7a7c0)
  • تقسيم restrictedConstraints() إلى طريقتين: fitPrioritizingWidth() وfitPrioritizingHeight() (I6d7fd)
  • تم تقديم HardwareCanvas بديل لاستخدام Android L (I1c3b5، b/288494724).
  • عليك تعديل إطار عمل "الكتابة" لعرض محتوى محلي للمقطوعة الموسيقية GraphicsContext إلى جانب تعديل عمليات تنفيذ "المالك" و"DelegateableNode" و"drawWithCache" لتعديل الصوت، وذلك لإتاحة الوصول إلى GraphicsContext للنطاق الذي سيؤدي تلقائيًا إلى إزالة مثيلات GraphicsLayer عند إيقاف "المعدِّلات". (I64a2f، b/288494724)
  • تم توفير InterceptPlatformTextInput للمساعدة في كتابة الاختبارات ذات المستوى المنخفض لأداة تحرير أسلوب الإدخال (IME) وغير ذلك من حالات استخدام أداة IME ذات المستوى المنخفض. تم إيقاف PlatformTextInputTestOverride نهائيًا. (I862ed، b/322680547)
  • تم إدراج وظيفة إضافة واحدة (GraphicsLayer.setOutline(Outline)). (Ib81f4)
  • قدِّم الدالة الإنشائية للدالة GraphicsContext لإنشاء مصنع لإنشاء مثيلات GraphicsLayer (Ib98d6، b/288494724)
  • تم عرض واجهة برمجة التطبيقات GraphicsLayer API لتوفير مرونة يحدّدها المطوّرون في التقاط أوامر الرسم التي يمكن استخدامها للرسم في مكان آخر وتطبيق تأثيرات مرئية مختلفة أيضًا على النتيجة النهائية. (I80245، b/288494724)
  • قدم Paragraph#getRangeForRect التي تعرض نطاقًا من النص يغطي منطقة مستطيل معين. (Iee516، b/325660505)
  • تمت إزالة الإلغاء التجريبي لـ BasicText مع الوسيطة onLinkClicked. وسيتم في المستقبل استخدام واجهة برمجة تطبيقات بديلة لدعم الروابط التشعّبية. (I107d5)

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

  • تمت إضافة تعريف واجهة برمجة التطبيقات المتوقَّع/الفعلي الخاص بـ GraphicsLayer لإتاحة التقاط أوامر الرسم وإعادة تشغيلها من خلال تركيب التأثيرات المرئية والإحالات الناجحة اختياريًا. قدِّم واجهة GraphicsContext لاحتواء تبعيات الرسومات، بما في ذلك إنشاء مثيلات GraphicsLayer وإدارتها. (I4a8d6، b/288494724)
  • تم إصلاح مشكلة إمكانية التشغيل التفاعلي في البحث بتركيز أحادي البُعد حيث يتعطّل التركيز داخل ComposeView كان مضمَّنًا في طرق عرض أخرى. (I08fd4)

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

  • تم نقل LocalLifecycleOwner من واجهة المستخدم Compose إلى lifecycle-runtime-compose كي يمكن استخدام واجهات برمجة التطبيقات للمساعد المستندة إلى Compose خارج واجهة المستخدم في Compose. نشكرك "جيك وارتون" على مساهمتك. (I6c41b، b/328263448)
  • اعرض بشكل ثابت خصائص الانحياز العائمة على جميع الأنواع الفرعية للمحاذاة المستندة إلى الانحياز. (I69f0f، b/328088992)

الإصدار 1.7.0-alpha04

‫6 مارس 2024

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

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

  • إتاحة ميزة الكتابة بخط اليد بقلم الشاشة في BasicTextField2 على الأجهزة التي تعمل بالإصدارات Android U (I002e4)
  • في هذا CL، نضيف الإجراء الدلالي GetScrollViewportLength حتى نتمكن من نقل المعلومات حول المكوّنات التي يتم تمريرها في رسالة الإنشاء إلى نظام a11y. تُطبق CL أيضًا استخدام الخاصية المذكورة في القوائم القابلة للتمرير الأساسية. (Ic5fa2)
  • FocusRequester.createRefs ثابت الآن (I4d92c، b/261436820)
  • تم تقديم DelegatableNode.requireView() للسماح لعُقد التعديل بالحصول على View الحالي من نظام التشغيل Android بدون قراءة مقطوعة موسيقية محلية. (I40768)
  • واجهة برمجة تطبيقات جديدة Path.reverse() لعكس اتجاه المسار (I36348)
  • تمت إضافة hintLocales إلى KeyboardOptions لتزويد TextFields بإمكانية التلميح إلى أدوات IME بلغة معيّنة من أجل إعداد لغة مفضّلة مسبقًا.
  • اعرِض السمة platformLocale من Locale التي تعرض كائن النظام الأساسي الأساسي، مثل java.util.Locale. (I921c6)

الإصدار 1.7.0-alpha03

21 شباط (فبراير) 2024

تم طرح "androidx.compose.ui:ui-*:1.7.0-alpha03". يتضمّن الإصدار 1.7.0-alpha03 هذه الالتزامات.

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

  • نقدّم لك ContextualFlowRow وميزة FlowRow/Column المحسّنة مع MaxLines و Overflow. يسعدنا الإعلان عن تحسينات على الإصدارين FlowRow وFlowColumn التجريبيَين، والتي أصبحت الآن تتيح استخدام maxLines وإتاحة استخدام التجاوز، بالإضافة إلى إطلاق ContextualFlowRow وContextualFlowColumn لأول مرة. تم تصميم هذا التحديث لتوفير المكوّنات المثلى للأداء، حيث يكون ContextualFlow* مثاليًا لعدد كبير من العناصر التي تستخدم إعداد maxLines صغيرًا، ويؤدي الضغط الديناميكي +N إلى رؤية المزيد من الأزرار، بينما يتناسب FlowRow وFlowColumn بشكل مثالي مع عدد صغير من العناصر أقل من 100 عنصر. ملاحظة مُهمّة: للحفاظ على السلوك الحالي في FlowRow أو FlowColumn حيث يتم إنشاء جميع العناصر بغض النظر عمّا إذا كانت تتناسب مع الحد الأقصى للمحور المتقاطع، يمكنك ضبط overflow على FlowRowOverflow.Visible أو FlowColumnOverflow.Visible أثناء الإعداد. يمكنك الاطّلاع على ContextualFlowRowSample وFlowRowSample للحصول على أمثلة عن هذه الميزات الجديدة. (Ib9135، b/293577082)
  • أضِف سمة maxTextLength الدلالية التي يجب ضبطها على حقول النص التي تؤدي إلى فلترة أقصى عدد مسموح به من الأحرف. (I24d9f، b/170648072)
  • تم إيقاف برنامج تضمين Modifier.inspectable نهائيًا. ستعمل واجهة برمجة التطبيقات هذه على إنشاء عدد أكبر من عمليات إبطال صلاحية المحرِّر أكثر من اللازم، لذا لا ننصح باستخدامها الآن. ننصح المطوِّرين بتطبيق طريقة inspectableProperties() على ModifierNodeElement إذا أرادوا عرض سمات التعديل للأدوات. (Ib3236)
  • دالة إنشاء جديدة لـ PopupProperties تتيح التحكم الكامل في علامات WindowManager.LayoutParams. (Ibb33e، b/312485503)
  • تم طرح ميزة DelegatableNode.requireLayoutCoordinates() كطريقة للحصول على LayoutCoordinates الحالية في Modifier.Node بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في أحد المواقع بنفسك. (Ia8657)
  • تم طرح ميزة DelegatableNode.currentLayoutCoordinates كطريقة للحصول على LayoutCoordinates الحالية في Modifier.Node بدون الحاجة إلى إلغاء onPlaced وتخزين الإحداثيات في أحد المواقع بنفسك. (إيبا)
  • تم نقل BasicTextField2 وواجهات برمجة التطبيقات ذات الصلة ضمن حزمة androidx.compose.foundation.text2 إلى androidx.compose.foundation.text. (I9f635)
  • تمت إضافة واجهة برمجة تطبيقات ApproachLayoutModifierNode جديدة لإتاحة إنشاء منطق نهج مخصّص في عقدة مُعدّل واضحة. تمت أيضًا إضافة واجهة برمجة تطبيقات DeferredTargetAnimation تجريبية جديدة للصور المتحركة التي يكون هدفها غير معروف في مثيلتها. (I60745)
  • واجهات برمجة تطبيقات Path جديدة للبحث عن اتجاه مسار واستخراج الخطوط من Path. (I63d04)
  • تمت إضافة PathHitTest وPath.contains(Offset) للتحقق مما إذا كان Path يحتوي على نقطة معيّنة. (I3b218)
  • تعرض TextLayoutResult الآن طريقة getLineBaseline(lineIndex). يتيح ذلك إمكانية قراءة الخط الأساسي لسطر عشوائي في النص، بالإضافة إلى السمتَين المناسبتَين الحاليتَين firstBaseline وlastBaseline. (Ide4e8، b/237428541)
  • تمت إضافة طريقة لمقارنة التعليقات التوضيحية لـ AnnotatedStrings فقط. (I32659)

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

  • تم إصلاح مشكلة التوافق مع الأنظمة القديمة في SemanticsPropertyReceiver.performImeAction وSemanticsActions.PerformImeAction. (Id0528، b/322269946)

الإصدار 1.7.0-alpha02

7 شباط (فبراير) 2024

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

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

  • تم إصلاح مشكلة التوافق الثنائي مع SemanticsPropertyReceiver.performImeAction. (I65865، b/322269946)
  • لم تعُد الدالة الإنشائية PopupProperties التي تأخذ المعلَمة usePlatformDefaultWidth تجريبية. (I8f8d2)
  • تمت إضافة حمل زائد لـ ComposeTestRule.waitUntil يأخذ وصفًا لسلسلة للشرط لتضمينه في رسالة المهلة. (I9413e)
  • unset() واجهة برمجة تطبيقات دلالات جديدة لإزالة خصائص الدلالات التي تتم إضافتها إلى سلسلة التعديل نفسها سمة دلالية جديدة isOpaque. (I8c583 وb/317966058 وb/246056649)
  • تمت إزالة originalEventPosition من طريقة النسخ في واجهة برمجة التطبيقات العامة PointerInputChange. (I7bead)

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

  • تم إصلاح خطأ a11y يسمح بإمكانية النقر على الأزرار غير علامات التبويب والأزرار غير اللاسلكية عند تحديدها. (I2181c)
  • سيتوفّر الآن لـ "VelocityTracker" الآن الخيار التلقائي لإضافة النقاط. لا يزال بإمكانك إيقاف الإصلاح من خلال ضبط السمة VelocityTrackerAddPointsFix على "خطأ" في حال حدوث أي مشاكل. (Ib3877، b/269487059)
  • تم إصلاح عدم التوافق الثنائي مع الأنظمة القديمة في TextStyle وParagraphStyle. (I179f0، b/320819734)

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

  • تمت إضافة دالة إنشاء DialogProperties جديدة بدون معلمات خاصة بالنظام الأساسي. (I45829)
  • تمت إضافة دالة إنشاء PopupProperties جديدة بدون معلمات خاصة بالنظام الأساسي. (I9a038)

الإصدار 1.7.0-alpha01

24 كانون الثاني (يناير) 2024

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

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

  • تم توسيع ClipboardManager من خلال إضافة ClipEntry وClipMetadata لإتاحة المحتوى العشوائي، مثل الصور.
  • تتم إضافة واجهة برمجة التطبيقات DeviceConfigurationOverride API إلى ui-test للسماح بتجاوز سلوك المحتوى الذي يخضع للاختبار محليًا، مثل تحديد حجم أو منطقة أو اتجاه التنسيق أو حجم الخط أو المظهر المتاح.

الإصدار 1.6

الإصدار 1.6.4

20 آذار (مارس) 2024

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

الإصدار 1.6.3

‫6 مارس 2024

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

الإصدار 1.6.2

21 شباط (فبراير) 2024

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

الإصدار 1.6.1

7 شباط (فبراير) 2024 تم إصدار androidx.compose.ui:ui-*:1.6.1. يتضمّن الإصدار 1.6.1 هذه الالتزامات.

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

  • تم إصلاح مشكلة التوافق مع الأنظمة القديمة في SemanticsPropertyReceiver.performImeAction وSemanticsActions.PerformImeAction. (Ie0bb2، b/322269946)
  • تُصدر التخطيطات الآن خطأً أثناء القياس عندما يعرض أحدها حجمًا كبيرًا بشكل غير طبيعي. يحدث هذا النوع من الأخطاء عادةً عندما يستخدم القياس الحد الأقصى من القيود مباشرةً بدون البحث عن Constraints.Infinity. ستساعد علامة الاختيار المطورين في العثور على مشكلات في التخطيط ذي الحجم الخاطئ بدلاً من التخطيط الذي يحتوي عليه. (I339a9)

الإصدار 1.6.0

24 كانون الثاني (يناير) 2024

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

الإصدار 1.6.0-rc01

10 كانون الثاني (يناير) 2024

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

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

  • تحسين تنفيذ الرسومات المتجهة لتحسين الأداء من خلال تقليل عمليات إعادة الإنشاء الإضافية

الإصدار 1.6.0-beta03

13 كانون الأول (ديسمبر) 2023

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

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

  • من الممكن الآن فصل LayoutCoordinates بدون فصل العقدة. تجنَّب ذلك في أداة فحص التنسيق (If693).

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

  • أصبحت PlatformImeOptions الآن فئة ملموسة بدلاً من واجهة. (If40a4)
  • تم إصلاح عمليات إعادة التركيب الإضافية الناتجة عن تنزيل البيانات، والتي تحدث بسبب تقديم LocalSoftwareKeyboardController وLocalTextInputService قيم جديدة في كل مرة تتم فيها إعادة إنشاء جذر. (I42190، b/310510985)

الإصدار 1.6.0-beta02

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

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

الإصدار 1.6.0-beta01

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

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

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

  • أصبح مفتاح التعديل DragAndDropTarget يأخذ الآن DragAndDropTarget بشكلٍ صريح، ويحتوي على lambda لتفعيل جلسة السحب والإفلات. تتوفّر الآن نوعان من وظائف المصنع لجهاز "DragAndDropModifierNode". عنوان لاستلام عمليات النقل وآخر لنقل البيانات (I69481)
  • تم تعديل السمة maximumFlingVelocity ليتم تمثيلها على أنّها عائمة. تم تعديل المستندات لتكون أكثر وضوحًا بشأن انسجام maximumFlingVelocity. (I8adc7)
  • تمت إعادة تسمية "onDragAndDropStart" في مصنع "DragAndDropModifierNode" إلى "acceptDragAndDropTransfer".تمت إضافة acceptsDragAndDropTransfer إلى معدِّل dragAndDropTarget لقبوله من جلسة سحب وإفلات. تعرض دالة lambda هذه قيمة DragAndDropTarget قابلة للتطبيق إذا كانت مهتمة بجلسة سحب وإفلات. وتم استبدال أجهزة lambda أخرى لمعالجة أحداث السحب بهذا النظام. تمت إضافة دالة DragAndDropTarget على الإعدادات الأصلية لتلقّيها من جلسات السحب والإفلات (Iebf3a).
  • عند إزالة DragAndDropInfo كنوع DragAndDropModifierNode.drag، يتم الآن تغيير مَعلمات transferData وحجم الديكور وسحب الزينة DrawScope lambda.

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

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

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

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

  • تحسِّن أسماء واجهات برمجة التطبيقات للعُقد القابلة للاجتياز لتسهيل فهمها. (Ia4474)

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

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

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

  • تمت إزالة FocusDirection.In وFocusDirection.Out يستخدمان FocusDirection.Enter وFocusDirection.Exit بدلاً منهما (I2f660)

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

  • تم إيقاف الدالة الإنشائية FontStyle(int) نهائيًا. يمكنك استخدام FontStyle.Normal أو FontStyle.Italic بدلاً منها. (I66610)

  • تمت إعادة تسمية واجهة FontScalable إلى FontScaling (Ie804a)

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

  • لن يعرض SoftwareKeyboardController.show() بعد ذلك لوحة المفاتيح البرمجية إذا لم يتم التركيز على محرِّر النصوص. (I2165a، b/301477279)
  • سيتم الآن تجاهل أحداث مفتاح الجهاز إلى جانب المفاتيح التي لم تتلقَّ حدث "أسفل" في طريقة عرض الإنشاء نفسها. (Ib37b4، b/305518328)
  • يجب إضافة توافق العارض لـ "تدرج التدرج" في ArcLine. (I4d5bb)
  • تنفيذ رموز التجزئة "يساوي" و"رمز التجزئة" للسمة PageSize.Fixed (Ie3ede، b/300134276)
  • إصلاح مشكلة التوافق الثنائي عند تغيير إدراج النافذة (Iee695)
  • يمكنك إزالة الطبقة الأساسية الخاصة بشريحة/زر Material3 لأنّ مقاييس الأداء الصغرى تُظهر أداءً أفضل بدونها. (I55555)
  • ستُستخدَم الآن TestDispatcher التي تم اجتيازها بنجاح خلال اختبارات effectContext إلى Compose لإنشاء الاختبار وساعات عرض الإطارات. (Ia7178)

الإصدار 1.6.0-alpha08

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

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

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

  • تمت إعادة تسمية دالة onDrawDragShadow lambda إلى drawDragDecoration في Modifier.dragAndDrawSource، كما تمت إعادة تسمية معلَمة الحجم DragAndDropInfo إلى dragDecorationSize. (Id0e30، b/303904810)
  • يمكنك إدخال SemanticsNodeInteraction.isDisplayed() وSemanticsNodeInteraction.isNotDisplayed() للتحقّق مما إذا كانت العُقدة المطابِقة مرئية أم لا بدون التأكيد عليها أيضًا. (I2c196، b/302100809)
  • تم إدخال قيمة Unspecified خاصة للحقول TextAlign وTextDirection وHyphens وLineBreak في ParagraphTextStyle لاستبدال null. بما أنّ هذه الفئات هي فئات مضمّنة، نتجنّب وضع الملاكمة الأساسية عند استبدال القيم الفارغة بـ "غير محدَّد". تم تعديل الدوال وgeters والطرق الأخرى في TextStyle ونمط الفقرة لقبول المَعلمات المذكورة على أنّها أنواع غير خالية. (I4197e، b/299490814)
  • إضافة حِمل GoogleFont لقراءة GoogleFont من XML. (If8f59)
  • تم جعل LoremIpsum PreviewParameterProvider صفًا مفتوحًا. (I41bf5 وb/266918816 وb/300116360)

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

  • يستخدم FontFamilyResolver الآن Dispatchers.Main في إعدادات إدارة ذاكرة التخزين المؤقت. (Ie8dd9)
  • تزيل AndroidViewBinding الآن بشكل متزامن Fragment مثيلاً من خلال تضمين FragmentContainerView في التنسيق كجزء من onRelease باستخدام commitNow (بدلاً من commit التي كانت تستخدمها سابقًا)، ما يؤدي إلى حلّ المشاكل في طريقة التعديل المباشر من خلال استبدال المقطوعة عند إجراء التغييرات. (I58fbf)

الإصدار 1.6.0-alpha07

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

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

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

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

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

  • تحليل محسّن للرسومات المتجهة لمتّجه XML (Ibb015)

الإصدار 1.6.0-alpha06

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

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

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

  • تحسينات إضافية على رموز Material. (I3e08d)
  • لإضافة القدرة على اجتياز شجرة التعديل لأعلى/لأسفل للعثور على العُقد المشابهة. (I2d234)
  • تمت إضافة onRestoreFailed() لمعاودة الاتصال إلى أداة تعديل focusRestorer() (Ie1d43)
  • تمت إضافة تعليقات androidx التوضيحية إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد ColorInt وFloatRange وIntRange وSize والمزيد. (Id65c8، b/290950582)
  • إضافة showSystemUi=true إلى تعريف PreviewScreenSizes (Ib61d3)

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

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

الإصدار 1.6.0-alpha05

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

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

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

  • تفعيل تسجيل المحتوى في AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • تم تحديد سرعات الانتقال في عناصر العرض، مثل ScrollView وRecyclerView، بـ ViewConfiguration.ScaledMaximumFlingVelocity. تحتوي ميزة Compose الآن على نسختها الخاصة من maximumFlingVelocity والتي تنطبق الآن على Draggable. (Ibf974)
  • يضيف عملية نقل أولية لدعم واجهات برمجة التطبيقات للسحب والإفلات في النظام الأساسي. (If84ce)
  • إضافة "deviceId" إلى "RotaryScrollEvent" (Iba3bf)
  • تم تحديث واجهة برمجة تطبيقات أجهزة ui-tooling لتشمل الأجهزة الأحدث (Ib25b4).

الإصدار 1.6.0-alpha04

23 آب (أغسطس) 2023

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

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

  • تمت إضافة طريقة لإيقاف ReusableComposition، مع إزالة الملاحظات مع الحفاظ على العُقد في مكانها. يمكن إعادة تفعيل المقطوعة الموسيقية التي تم إيقافها من خلال الاتصال بالرقم setContent. (Ib7f31)
  • إضافة واجهة ReusableComposition لإدارة دورة الحياة وإعادة استخدام التركيبات الفرعية. (I812d1، b/252846775)
  • تمت ترقية Modifier.focusGroup إلى واجهات برمجة تطبيقات مستقرة. (I7ffa3)
  • تمت إضافة تعليقات androidx التوضيحية إلى واجهات برمجة تطبيقات الرسومات المختلفة لتحديد ColorInt وFloatRange وIntRange وSize والمزيد. (I70487، b/290950582)
  • تم تعديل واجهة برمجة التطبيقات ColorFilter لتتضمّن أنواع فئات فرعية ملموسة لتحسين قابلية فحص المَعلمات. (I5fe29)
  • يمكنك تقديم مكتبة wear-toolsing-preview لإدراج أجهزة Wear الصالحة التي يمكن استخدامها في معاينات واجهة المستخدم (Ib036e).
  • تم إنشاء واجهة FontScalable لمعالجة جزء ضبط الخط في واجهة الكثافة. (I2cf3f)

الإصدار 1.6.0-alpha03

9 آب (أغسطس) 2023

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

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

  • نوع جديد من انتقال الدخول والخروج والذي يضبط حجم المحتوى استنادًا إلى حجم الحاوية المتحركة أثناء حركة الدخول والخروج. LookaheadScope أصبح بالإمكان الآن إنشاء واجهة مرحة قابلة للإنشاء بشكل ثابت. (Ifb2ce)
  • تمت إضافة الدعم لإعداد privateImeOptions (Idb772).

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

  • سيعدّل PopupPositionProvider.calculatePosition الآن موضع النافذة المنبثقة تلقائيًا عند تغيير حالة القراءة في العملية الحسابية. (I676a1، b/292257547)
  • تم إصلاح حقول نصية تعرض لوحة المفاتيح ويمكن تعديلها عندما تكون قيمة readOnly صحيحة. تم أيضًا إصلاح عدم ظهور لوحة المفاتيح عند تغيير قيمة readOnly من صحيح إلى خطأ أثناء التركيز. (I34a19، b/246909589)
  • تطبيق موسّع للتأكيدات العامة في اختبار واجهة المستخدم. (I1f90d)

الإصدار 1.6.0-alpha02

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

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

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

  • تمت إضافة واجهة لمحدِّد موقع الخدمة يمكن تنفيذها من قِبل منفّذي "مقطوعة موسيقية" للسماح بتنفيذ عملية بحث لمقطوعة موسيقية تفوض إلى مقطوعة موسيقية أخرى لعمليات البحث عن خدمة مفوَّضة لمقطوعة موسيقية أخرى في المقطوعة الموسيقية الأصلية. لا يجب أن يُطلق على هذا اسم "directy" ويتم استخدامه لتفعيل إنشاء واجهات برمجة تطبيقات تجريبية في وقت التشغيل والتي يمكن العثور عليها من إصدارات المؤلف الملفوفة مثل وحدة واجهة المستخدم. (I296b9)
  • تمت إعادة تصميم واجهة PlatformTextInput* API بالكامل. (I6c93a وb/274661182 وb/267235947 وb/277380808)
  • لم يعُد SoftwareKeyboardController وLocalSoftwareKeyboardController في مرحلة تجريبية. LocalSoftwareKeyboardController هي أيضًا الآن قيمة CompositionLocal مناسبة. (I4c364)
  • تم إيقاف LookaheadLayout وLookaheadLayoutScope نهائيًا لبضعة إصدارات، وتمّت إزالتهما الآن. واجهات برمجة التطبيقات البديلة هي LookaheadScope التي يمكنها العمل مع أي تنسيق. (I12ac3)
  • تمت إضافة "SemanticsNodeInteraction.requestFocus" كوسيلة أكثر ملاءمة وقابلية للاكتشاف لطلب التركيز على الاختبارات. (Ie8722)
  • يمكنك إضافة واجهات برمجة تطبيقات تجريبية لتسجيل التأكيدات العالمية، لاستخدامها عن طريق اختبار أطر العمل في المستقبل. (I12d77)

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

  • سيتم الآن تأجيل أول عملية استدعاء لمعاودة الاتصال بـ "update" لـ "AndroidView" إلى أن يتم إرفاق العرض، بدلاً من تشغيلها عند تطبيق المقطوعة الموسيقية التي تقدّم "AndroidView". يؤدي ذلك إلى إصلاح خطأ لا يتم فيه إبطال صلاحية معاودة الاتصال update إذا تم تغيير الحالة التي تمت قراءتها فورًا من خلال تأثير. (Ie9438، b/291094055)

الإصدار 1.6.0-alpha01

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

تم طرح "androidx.compose.ui:ui-*:1.6.0-alpha01". يتضمّن الإصدار 1.6.0-alpha01 هذه الالتزامات.

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

  • تقديم الدعم للمستقبل في LazyList. يسمح هذا الإجراء لـ LazyList في بطاقة النظرة المستقبلية بتجاوز أي مؤثر حركي (مثل الصورة المتحركة لموضع الإعلان أو AnimatedVisibility وما إلى ذلك) واحتساب حجم الصورة الأمامية وموضعها لجميع الأطفال. وبعد استخدام بطاقة النظراء، يمكن لأطفال "LazyList" عرض الصور المتحركة بشكل مستقل عن الواقع كما يظهر في بطاقة الرؤية.

تغيير السلوك: تضمين FontPadding أصبح الآن "خطأ" تلقائيًا في Compose

أصبحت includeFontPadding الآن خطأ بشكل تلقائي (21d806) في Compose.

includeFontPadding هي سمة قديمة تتحكّم في ما إذا كان سيتم تضمين أو عدم تضمين مساحة متروكة إضافية أعلى السطر الأول والسطر الأخير من النص لاستيعاب أي أحرف قد تمتد فوق أو أسفل الأسس الأساسية للنص.

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

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

يمكنك الموافقة على includeFontPadding باستخدام PlatformTextStyle لكل نص:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

يمكنك تفعيل "includeFontPadding" لكل النصوص من خلال ضبط أنماط المواد. يُرجى العلم أنّ أسماء المَعلمات ستختلف بين M2 وM3.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /* … */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* … */
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

يمكنك العثور على مزيد من المعلومات حول إنشاء includeFontPadding في مستندات المطوّرين ومشاركة المدونة هذه.

إذا كنت تواجه مشاكل أو أخطاء مرتبطة بهذا التغيير، يمكنك الإبلاغ عن الخطأ باستخدام أداة تتبُّع المشاكل.

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

  • دعم InputConnection#requestCursorUpdates (I0c69b)
  • تمت إضافة FocusRequester.saveFocusedChild وFocusRequester.restoreFocusedChild (Ic557e، وb/272302679، وb/275157318).
  • أضِف النوع ResourceResolutionException إلى عناصر الالتفاف التي يتم طرحها عند محاولة تحميل مواد عرض صور نقطية مع وصف لمسار مادة العرض الذي تعذّر تحميله. (I19f44 وb/230166331 وb/278424788)
  • تم تحسين إمكانية الوصول لتحسين الأداء وعمليات تخصيص الذاكرة. (Iede48)
  • تمت إضافة خصائص وإجراءات دلالية لإتاحة ترجمة النص. (I4a6bc)
  • موقع جديد في IntrinsincMeasureScope وعمليات تنفيذه (مثل MeasureScope) للإشارة إلى ما إذا كان تمرير المقياس الحالي بمثابة تذكرة مسبقة. (I7a812)
  • تم تعديل واجهة برمجة التطبيقات DrawScope لإتاحة إمكانية إعادة استهداف العرض في لوحة مختلفة باستخدام كثافة أو اتجاه تنسيق بديلَين.
  • تم تحديث DrawContext لإتاحة ضبط الكثافة واتجاه التصميم، بالإضافة إلى إمكانية ضبط اللوحة. (Ie1f9b، b/225408150)
  • تمت إضافة Paragraph#fillBoundingBoxes لحساب مربّعات حدود الأحرف. (If30ee)
  • تمت إضافة مجموعة من MultiPreviews الشائعة (Ia5a27)

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

  • تمت إضافة واجهة FocusTargetModifierNode يمكن استخدامها لإنشاء FocusTarget مخصّص. (I9790e)
  • تمت إعادة تسمية المعلمات fallback* في الدالة الإنشائية TextMeasurer إلى default*. (I940a5)
  • تمت إعادة تسمية "SemanticsPropertyReceiver.performImeAction" إلى "onImeAction" و"SemanticsActions.PerformImeAction" إلى "OnImeAction". (I8e841)
  • لإضافة العجلة لتمييز تمرير الماوس عن السحب في التمرير المتداخل (تحديدًا في NestedScrollConnection). (Ie57e4)
  • تمت إضافة واجهة برمجة التطبيقات asComposePaint لاستبدال toComposePaint لأنّ الكائن المعروض يدمج android.graphics.Paint الأصلي (I22b4c).
  • يمكنك إيقاف SemanticsProperties.imeAction واستبدالها بمَعلمة جديدة إلى SemanticsActions.performImeAction. (I4a587)
  • تمت إضافة إمكانية الاختيار باستخدام الماوس. سيتم توسيع التحديد المستند إلى اللمس بمقدار كلمة، وسيتم تقليصه حرفًا بحرف. (Ic0c6c، b/180639271)
  • إنّ طُرق Paragraph التي كانت تُستخدم سابقًا لطرح AssertionError للإزاحة خارج الحدود تؤدي الآن إلى عرض IllegalArgumentException كما يحدث في MultiParagraph. (I549d3، b/243338896)

الإصدار 1.5

الإصدار 1.5.4

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

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

الإصدار 1.5.3

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

تم طرح "androidx.compose.ui:ui-*:1.5.3". يتضمّن الإصدار 1.5.3 هذه الالتزامات.

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

  • (b/301209788) قد يطبق TextField أحيانًا الأوامر السابقة بشكل غير صحيح عند التركيز على الإدخال الكوري وإدخاله، مما يؤدي إلى فقدان الأحرف.

الإصدار 1.5.2

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

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

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

  • تمت إضافة حل بديل للأعطال عند الوصول إلى واجهة برمجة التطبيقات للتمرير في إمكانية الوصول من سلسلة محادثات في الخلفية.
  • أصلِح العُقد غير المرتبطة التي تتم إضافتها إلى شجرة الدلالات.

الإصدار 1.5.1

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

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

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

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

الإصدار 1.5.0

9 آب (أغسطس) 2023

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

الإصدار 1.5.0-rc01

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

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

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

  • تم إصلاح العطل عند استخدام SubcomposeLayout داخل movableContentOf().

الإصدار 1.5.0-beta03

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

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

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

  • تمت إضافة واجهة FocusTargetModifierNode التي يمكن استخدامها لإنشاء FocusTarget مخصص. (Ifb1d6)
  • تم إصلاح مشكلة في عناصر مربّع الحوار والنوافذ المنبثقة القابلة للإنشاء والتي قد تؤدي إلى عدم تغيير حجم النافذة الفرعية على النحو المتوقّع عند usePlatformDefaultWidth=true. (I112ee)

الإصدار 1.5.0-beta02

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

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

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

  • تمت إضافة واجهة برمجة التطبيقات asComposePaint للسماح باستخدام مثيل android.graphics.Paint في Compose.

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

  • تمت إضافة واجهة برمجة التطبيقات asComposePaint لاستبدال toComposePaint لأنّ الكائن المعروض يدمج android.graphics.Paint الأصلي (I22b4c).

الإصدار 1.5.0-beta01

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

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

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

  • تمت إزالة التخصيصات في إعادة التركيب والرسوم المتحركة للألوان وAndroidComposeView (Ib2bfa)
  • إضافة المرح CacheDrawModifierNode() للسماح بالتفويض (Icf8f9)
  • نقدّم لك السمة isLookingAhead التي يمكن الوصول إليها من خلال MeasureScope لملاحظة النتائج المسبقة والتأثير في البطاقة الرئيسية إذا أردت ذلك. (Ibf4c3)
  • خاصية دلالية جديدة traversalIndex، وهي قيمة عشرية تُستخدم لإعادة ترتيب العُقد في اجتياز TalkBack (تأتي القيم الأدنى سابقًا). (I9a81b، b/186443263)
  • إعادة تسمية خاصية الدلالة isContainer إلى isTraversalGroup (I121f6)
  • ColorProducer لديه الآن operator fun invoke بدلاً من produce (I4a9a2)
  • أضِف واجهة برمجة تطبيقات التحويل Path لتطبيق عمليات التحويل/المقياس/التدوير على عناصر المسارات. (I23434، b/233772232)
  • تُسمى طريقة ColorProducer produce. (I78bde)
  • إعادة تسمية toFrameworkColorSpace إلى toAndroidColorSpace (I4f547)
  • إعادة تسمية "ColorLambda" إلى "ColorProducer". (I73b1a)
  • يمكنك تقديم واجهات برمجة التطبيقات للتبديل بين أنواع مساحات الألوان في Android وCompose. (Ie7db4، b/279979665)
  • تمت إضافة مَعلمة لون إلى BasicText للسماح بتحريك النص أو ضبط لونه بكفاءة. (Iffd88، b/246961787)
  • تمت إعادة تسمية "TextRange.constrain" إلى "TextRange.coerceIn". (I31be2)
  • تمت إضافة TextStyle.merge(...) المحسَّنة مع قائمة المَعلمات الكاملة. (Iad234، b/246961787)
  • استقرار العديد من واجهات برمجة التطبيقات النصية التي تشمل Brush وDrawStyle وTextMotion وDrawScope.drawText وParagraph.paint(Brush) وMultiParagraph.paint(Brush). (I2f740 وb/261581564 وb/261581931 وb/261561245)
  • تم إيقاف PlatformTextStyle.includeFontPadding نهائيًا. كان هدفنا الأساسي هو إزالة الحقل، إلا أنّ الملاحظات توضح أنّ المطوّرين بحاجة إلى خيار الضبط هذا. ولذلك تتم إزالة ميزة الإيقاف النهائي من الحقل (I98e96، b/277703184)
  • تمت إضافة طريقة TextRange.constrain العامة. (I97912)
  • يمكن الآن فتح UrlAnnotation في AnnotatedString من خلال خدمات تسهيل الاستخدام مثل TalkBack. (If4d82، b/253292081)
  • تمت إضافة إجراء دلالي InsertTextAtCursor للحقول النصية. (I11ed5)
  • تمت ترقية الدالة الإنشائية LineHeightStyle.Alignment(topRatio) إلى واجهة برمجة تطبيقات مستقرة. (I79c32، b/261565383)
  • لم تعُد واجهة برمجة التطبيقات TextMeasurer وواجهات برمجة التطبيقات ذات الصلة تجريبية. (I74647، b/261581753)
  • تمت إضافة إجراء دلالات PerformImeAction لاستدعاء إجراء IME على عُقد محرِّر النصوص. (Ic606f، b/269633506)
  • لم تعُد واجهات برمجة التطبيقات PlatformTextInput تجريبية لنظام التشغيل Android. (I668eb)
  • تم تغيير اسم معلَمة القيمة Enum.valueOf (Ia9b89)
  • مزيد من الاستثناءات من قيمة التعداد (I818fe)
  • تم تقديم واجهة برمجة تطبيقات PlatformTextInputAdapter جديدة منخفضة المستوى لإنشاء عمليات تنفيذ لإدخال نص مخصّص تتواصل مباشرةً مع واجهات برمجة التطبيقات للنظام الأساسي. (I58df4)
  • تمت إضافة المَعلمة BlendMode إلى طرق DrawScope.drawText وParagraph.paint وMultiParagraph.paint لإتاحة خوارزميات دمج مختلفة عند رسم نص على "لوحة الرسم". (I57508)
  • إعادة تسمية "Font.MaximumAsyncTimeout" إلى "Font.MaximumAsyncTimeoutMillis". إعادة التسمية فقط. (I07af5)
  • قيم DPI المعدَّلة لعدد @Preview من الأجهزة المرجعية (Id6151، b/254528382)
  • يمكنك إضافة المعلّمتَين brush وalpha إلى BasicText للسماح بتحريك فرشاة النص أو ضبطها بكفاءة.
  • حدِّد أنواع lambda بدون مربّعات للأحرف Float، و يكون "مزدوج"، و"طويل"، و"Int"، و"Shorts" في :ui:ui-unit (I6f18d، وb/246961787)

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

  • تمت إزالة عمليات التوزيع المتعددة في تتبع سرعة المؤشر (I26bae)
  • تقليل عمليات التوزيع في إدارة إدخالات التنسيق والمؤشرات (I5333a)
  • تحسين استخدام ذاكرة Vector وعرض اللقطات الأولى (I2f3c6)
  • تمت إزالة التخصيصات عند رسم الخطوط والنقاط باستخدام لوحة الرسم (I9f535).
  • إضافة مستندات لـ AndroidFont.fontVariationSettings (I7d9e2)

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

  • تحسين الأداء وتقليل التوزيعات في واجهات Vector API (I906cb)

الإصدار 1.5.0-alpha04

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

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

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

  • التحسينات في ميزة "التفويض" في "Modifier.Node" تمت إضافة إمكانية محسّنة لتفويض المستخدمين المفوَّضين إلى مثيلات Modifier.Node الأخرى من خلال "DelegatingNode". ويمكن إجراء ذلك باستخدام واجهتَي برمجة التطبيقات delegate وundelegate. قبل إجراء هذا التغيير، كان يجب تفويض كل واجهة برمجة تطبيقات في العقدة المفوَّضة بشكل صريح إلى العقدة المفوّضة. بعد هذا التغيير، سيتم تفويض واجهات العُقد بشكل ضمني ما لم يتم تجاوز DelegatingNode لها بشكل صريح. (67352bc)

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

  • تقديم NestedScrollModifierNode، وهو NestedScroll Modifier.Node الذي يمكن تفويض المستخدم إليه. (I69513)
  • تمت إضافة المعلّمتَين onReset وonRelease إلى العنصر AndroidViewBinding القابل للإنشاء، ما يتيح إنشاء محتوى مطابق للسمة AndroidView وإمكانية إعادة استخدام العرض باستخدام ViewBinding. (I00b1e، b/276802519)
  • تم تعديل واجهة برمجة التطبيقات Compose Path API لإتاحة عمليات الترجيع بهدف إتاحة حالات الاستخدام المتعلّقة بالمعالجة المتكرّرة للمسار من خلال إعادة الاستخدام بشكل أسرع. (I7b797)
  • تمت إضافة TextStyle.merge(...) المحسَّنة مع قائمة المَعلمات الكاملة. (Iad234، b/246961787)
  • استقرار العديد من واجهات برمجة التطبيقات النصية التي تشمل Brush وDrawStyle وTextMotion وDrawScope.drawText وParagraph.paint(Brush) وMultiParagraph.paint(Brush). (I2f740 وb/261581564 وb/261581931 وb/261561245)
  • تم إيقاف PlatformTextStyle.includeFontPadding نهائيًا. كان هدفنا الأساسي هو إزالة الحقل، إلا أنّ الملاحظات توضح أنّ المطوّرين بحاجة إلى خيار الضبط هذا. ولذلك تتم إزالة ميزة الإيقاف النهائي من الحقل (I98e96، b/277703184)

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

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

الإصدار 1.5.0-alpha03

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

تم طرح "androidx.compose.ui:ui-*:1.5.0-alpha03". يتضمّن الإصدار 1.5.0-alpha03 هذه الالتزامات.

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

  • سلوك تلقائي جديد لتطبيق SubcomposeLayout في LookaheadScope: SubcomposeLayouts التي لا تحتوي على خانات شرطية (مثل TabRow وScaffold وBoxWithConstraints وما إلى ذلك) تعمل الآن بشكل جيد مع الصور المتحركة التي تعمل في المقدّمة.

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

  • إنّ سياسة intermediateMeasurePolicy التلقائية الجديدة التي تعيد استخدام سياسة القياس من بطاقة المعاينة تسمح باستخدام أنواع SubcomposeLayout الفرعية بدون خانات شرطية، مثل Scaffold وTabRow وBoxWithConstraints، للعمل مع النظر الأمامي تلقائيًا. (Id84c8)
  • ستؤدي أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android الآن إلى حظر المكالمات إلى withFrameNanos فقط بدلاً من كل المقطوعة الموسيقية عندما تتلقّى إشعار ON_STOP. ويعني هذا أنّ النوافذ المرتبطة بالأنشطة المتوقفة ستستمر في إعادة إنشائها لتتغير تغييرات البيانات، ولكن سيتم حظر الصور المتحركة أو أي متصل آخر بـ "withFrameNanos". (Id9e7f، b/240975572)
  • تغيير motionEventSpy إلى حالة ثابتة (Ic5ec4، b/261560988)
  • تمت إضافة طريقة TextRange.constrain العامة. (I97912)
  • لم تعُد واجهة برمجة التطبيقات PlatformTextStyle.includeFontPadding متوقفة نهائيًا لتشجيع المطوّرين على استخدام واجهة برمجة تطبيقات التوافق هذه للتبديل إلى الإعدادات includeFontPadding واختبارها على "خطأ". (I98e96، b/277703184)

الإصدار 1.5.0-alpha02

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

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

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

  • واجهة برمجة تطبيقات SubcomposeLayout جديدة تخضع لسياسة قياس وسيطة إضافية لمعالجة منطق القياس/التنسيق أثناء الصور المتحركة التي تستند إلى شاشة النظرة (I017d3)
  • أصبح PointerInput الآن كسولًا ويستخدم Modifier.Node للحصول على أداء أفضل (يُرجى الاطّلاع على التغيير البسيط للسلوك). (15dab9)
  • تعمل هذه السياسة على تغيير واجهات برمجة التطبيقات التجريبية لتصبح ثابتة باستخدام "الأحداث الرئيسية". (I9c7d8 وb/261566839 وb/261567368)
  • تغيير واجهات برمجة التطبيقات التجريبية إلى ثابتة في PointerInputChange (I1b543 وb/261560988 وb/261565762 وb/261565749)
  • لإضافة طريقة لإنشاء مثيل SuspendingPointerInputModifierNode لعمليات تنفيذ Modifier.Node الأكثر تعقيدًا. (Ic4933)
  • يمكن الآن فتح UrlAnnotation في AnnotatedString من خلال خدمات تسهيل الاستخدام مثل TalkBack. (If4d82، b/253292081)
  • تمت إضافة واجهة برمجة تطبيقات لاعتراض مفاتيح الأجهزة قبل إرسالها إلى لوحة المفاتيح الخارجية (I4f4c6، b/186800395).
  • تمت إضافة إجراء دلالي InsertTextAtCursor للحقول النصية. (I11ed5)
  • ستطلب الآن إجراءات الاختبار ذات الصلة بالنص (مثل performTextInput) التركيز مباشرةً، باستخدام إجراء دلالات الألفاظ، بدلاً من النقر على الحقل. (I6ed05)

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

  • تتطلب إجراءات اختبار النصوص الآن تفعيل حقول نصية. (Iab328)

الإصدار 1.5.0-alpha01

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

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

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

  • لا يتطلب Modifier.intermediateLayout الآن استخدام LookaheadScope بشكلٍ صريح. تحتوي مجموعة القياس في الوسيطة على IntermediateMeasurementScope على أنّها جهة استقبال، ما يتيح لك استخدام CoroutineScope وLookaheadScope وMeasurementScope بسهولة.(Ibe2e5).
  • تم استبدال LookaheadLayout بـ LookaheadScope، والذي لم يعد تنسيقًا. يسمح هذا الإجراء بالتحكّم مباشرةً في المحتوى المخصّص للأطفال في نطاق LookaheadScope، وذلك من خلال سياسة Measurement Policy التي تتّبعها الوالدَين. (Ibe2e5)
  • إضافة Modifier.Node#coroutineScope للسماح لـ Modifier.Nodes بتشغيل الكوروتينات. (I76ef9)
  • السماح لـ Modifier.Nodes بقراءة ProductionLocals من خلال تنفيذ واجهة ConversationLocalConsumerModifierNode. (Ib44df)
  • نشر فئة متوقفة مؤقتًا باستخدام @إلى الموقع. (I882d1)

الإصدار 1.4

الإصدار 1.4.3

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

تم طرح "androidx.compose.ui:ui-*:1.4.3". يتضمّن الإصدار 1.4.3 هذه الالتزامات.

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

  • تم إصلاح المشكلة التي قد تؤدي إلى عدم عرض AndroidView بشكل صحيح عند استخدامه مع معدِّلات معيّنة. (I4dc77، b/274797771)
  • تم إصلاح خطأ في ميزة "البحث بالتركيز ثنائي الأبعاد" التي أثرت على قوائم DropDown (b/276811828)
  • تم إصلاح خطأ في خصائص الإدخال/الخروج للتركيز المخصَّص والتي شغَّلت فقط كتلة الدخول/الخروج في أول مرة تم فيها استدعاء دالة lambda (b/277234245).
  • تم إصلاح الانحدار في نظام التركيز الذي تسبّب في حدوث عطل أثناء قراءة focusProperties. (b/271324781، b/274897776)

الإصدار 1.4.2

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

تم طرح "androidx.compose.ui:ui-*:1.4.2". يتضمّن الإصدار 1.4.2 هذه الالتزامات.

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

  • تم إصلاح مشكلة عدم إعادة استخدام AndroidView للمعدِّلات بشكل صحيح، ما قد يؤدي إلى حدوث سلوك وأعطال غير متوقّعة. (Ib67ee، b/275919849)
  • تم إصلاح الانحدار حيث لا تظهر لوحة المفاتيح للحقول النصية داخل مربّعات الحوار التي لم يتم إنشاؤها بواسطة عنصر Dialog القابل للإنشاء (I82551، b/262140644)

الإصدار 1.4.1

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

تم طرح "androidx.compose.ui:ui-*:1.4.1". يتضمّن الإصدار 1.4.1 هذه الالتزامات.

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

  • لحل مشكلة ParentDataModifier التي لا تؤثر في AndroidView (b/274797771)

الإصدار 1.4.0

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

تم طرح "androidx.compose.ui:ui-*:1.4.0". يتضمّن الإصدار 1.4.0 هذه الالتزامات.

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

  • تمت إضافة واجهة برمجة تطبيقات PinnableContainer جديدة تتيح تثبيت عناصر القائمة الكسولة بحيث لا يتم التخلص منها عند تمريرها خارج الحدود. على سبيل المثال، يستخدم Modifier.focusable() هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881 وb/259274257 وb/195049010)
  • وتتم إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة في Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/15183} و151830
  • تمت إضافة السمة في سمة دلالات IsContainer على مساحات العرض. سيتم استخدام هذه السمة في تغيير لاحق يحدِّد ترتيب التمرير استنادًا إلى المعنى الدلالي للعناصر مثل الأسطح. (I63379)
  • تمت إضافة دور "تسهيل الاستخدام" الجديد "DropdownList". يمكن استخدام هذه الطريقة لتكرار سلوك "TalkBack" عند التركيز على android.widget.Spinner. (I177e5، b/236159001)
  • يمكنك الآن استخدام PlatformTextStyle(emojiSupportMatch) لإيقاف معالجة الرموز التعبيرية اختياريًا لفقرة واحدة. (Ia7100، b/139326806)
  • تُجري اختبارات واجهة المستخدم في Android Compose الآن اختبارات التنسيق لكل إطار عند تنفيذ الإطارات للوصول إلى وضع عدم النشاط (مثلاً من خلال waitForIdle). قد يؤثر ذلك في الاختبارات التي يتم تأكيدها في الإطارات الفردية للصور المتحركة للتنسيق. (I8ea08، b/222093277)
  • تمت إضافة TextMotion التجريبي إلى TextStyle لتحديد نص إما أن يكون Static(default) أو متحركًا. استخدِم TextMotion.Animated إذا أردت تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7)

الإصدار 1.4.0-rc01

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

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

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

  • تمت إضافة حِمل زائد لدالة AndroidView القابلة للإنشاء، والتي تقبل مَعلمة onReset. يتيح إعادة استخدام مثيلات العرض عند تجاهل العُقدة في المقطوعة الموسيقية وإعادة استخدامها بطريقة متوافقة. يُعدّ ذلك مفيدًا بشكلٍ خاص لكلّ من LazyRows وLazyColumns من المشاهدات. (I3f10d، b/230099236)
  • تم تقديم واجهة برمجة تطبيقات PlatformTextInputAdapter جديدة منخفضة المستوى لإنشاء عمليات تنفيذ لإدخال نص مخصّص تتواصل مباشرةً مع واجهات برمجة التطبيقات للنظام الأساسي. (I58df4)

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

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

الإصدار 1.4.0-beta02

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

تم طرح "androidx.compose.ui:ui-*:1.4.0-beta02". يحتوي الإصدار 1.4.0 -beta02 على هذه الالتزامات.

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

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

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

  • تم تحسين خوارزمية ترتيب التركيز في إمكانية الوصول، على سبيل المثال، تتم قراءة الأشرطة العلوية/السفلية غالبًا في المقام الأول أو الأخير على التوالي (74e9c5)

الإصدار 1.4.0-beta01

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

تم طرح "androidx.compose.ui:ui-*:1.4.0-beta01". يحتوي الإصدار 1.4.0 -beta01 على هذه الالتزامات.

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

  • تمت إعادة تسمية PinnableContainer.PinnedHandle.unpin() إلى release() (I4667a)
  • تمت إضافة waitUntilNodeCount وwaitUntilAtLeastOneExists وwaitUntilExactlyOneExists وwaitUntilDoesNotExist كواجهة برمجة تطبيقات تجريبية إلى ComposeTestRule، وتوسيع واجهة برمجة تطبيقات waitUntil لقبول أي مطابقة وأي عدد من العُقد. يمكنك الاطّلاع على ComposeTestRule للحصول على مزيد من المستندات. (Ifa1b9، b/226934294)
  • إعادة تسمية "Font.MaximumAsyncTimeout" إلى "Font.MaximumAsyncTimeoutMillis". (I07af5)
  • تمت إزالة GoogleFont.Provider.AllFontsListUri وإدراج رابط إليه في ktdoc بدلاً من ذلك. (I16f29)

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

  • إضافة مستندات لـ AndroidFont.fontVariationSettings (I7d9e2)

الإصدار 1.4.0-alpha05

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

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

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

  • تم إدخال عمليات أحمال تجريبية جديدة للدالة runComposeUiTest ودوال create*ComposeRule التي تقبل المعلَمات CoroutineContext. سيتم استخدام السياق للمقطوعة الموسيقية الاختبارية وأي طلبات LaunchedEffect وrememberCoroutineScope() في المقطوعة الموسيقية. (I10614، b/265177763)
  • إضافة واجهة برمجة تطبيقات جديدة لتتبُّع السرعة أحادية الأبعاد (If5a82)
  • تم الآن وضع علامة @Stable على FocusRequester. (I580ee)
  • يجب إزالة تعليق توضيحي تجريبي من الدالة الإنشائية DialogProperties التي تستخدم المعلَمة usePlatformDefaultWidth. (Ic4048)
  • تمت إضافة دالة إلى موضع حساب المماس وظل على مسافة على مسار، باستخدام PathMeasure.getPosition() وPathMeasure.getTangent() (I3b47c).
  • تمت إزالة الإعدادات العلنية التي تم الكشف عنها عن طريق الخطأ في PlatformParagraphStyle. (I07f47)
  • المزيد من أنواع/إمكانية القيم الفارغة للدوال المضمَّنة/المخفية التي تم إيقافها نهائيًا (I24f91)
  • أضِف AnnotatedString.hasStringAnnotations لطلب البحث عن التعليقات التوضيحية التي لا تخصّص لها أي تخصيص. (I94dfe، b/246960758)
  • تمت إضافة حمل زائد جديد للدالة TextMeasurer.measure والتي تأخذ String كنص. (I47b2d، b/242705342)
  • تمت ترقية واجهتَي برمجة التطبيقات LineBreak وHyphens في TextStyle إلى "ثابتة". (Ic1e1d)

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

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

الإصدار 1.4.0-alpha04

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

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

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

  • تمت إضافة واجهة برمجة تطبيقات PinnableContainer جديدة تتيح تثبيت عناصر القائمة الكسولة بحيث لا يتم التخلص منها عند تمريرها خارج الحدود. على سبيل المثال، يستخدم Modifier.focusable() هذه الآلية لتثبيت العنصر الذي يتم التركيز عليه حاليًا. (Ib8881 وb/259274257 وb/195049010)
  • وتتم إعادة كتابة نظام التركيز باستخدام واجهات برمجة التطبيقات التجريبية الجديدة في Modifier.Node. (I7f4d7 وb/247708726 وb/255352203 وb/253043481 وb/247716483 وb/254529934 وb/15183} و151830
  • تمت إضافة السمة في سمة دلالات IsContainer على مساحات العرض. سيتم استخدام هذه السمة في تغيير لاحق يحدِّد ترتيب التمرير استنادًا إلى المعنى الدلالي للعناصر مثل الأسطح. (I63379)
  • تمت إضافة دور تسهيل الاستخدام الجديد "DropdownList". يمكن استخدام ذلك لتكرار سلوك TalkBack's عند التركيز على android.widget.Spinner. (I177e5، b/236159001)
  • يمكنك الآن استخدام PlatformTextStyle(emojiSupportMatch) لإيقاف معالجة الرموز التعبيرية اختياريًا لفقرة واحدة. (Ia7100، b/139326806)
  • تُجري اختبارات واجهة المستخدم في Android Compose الآن اختبارات التنسيق لكل إطار عند تنفيذ الإطارات للوصول إلى وضع عدم النشاط (مثلاً من خلال waitForIdle). قد يؤثر ذلك في الاختبارات التي يتم تأكيدها في الإطارات الفردية للصور المتحركة للتنسيق. (I8ea08، b/222093277)
  • تمت إضافة TextMotion التجريبي إلى TextStyle لتحديد نص إما أن يكون Static(default) أو متحركًا. استخدِم TextMotion.Animated إذا أردت تغيير حجم النص أو ترجمته أو تدويره من خلال الرسوم المتحركة. (I24dd7)

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

  • تم استبدال الوسيطة maxSize: IntSize في drawText بـ size: Size ليتم تضمينها مع دوال DrawScope الأخرى. تم ضبط size على Size.Unspecified تلقائيًا، وبالتالي لن يؤدي ذلك إلى تغيير السلوك التلقائي السابق. (Icd27d)
  • تمت إزالة دالة إنشاء الخطوط التجريبية المتوقفة نهائيًا. (I8a724، b/261435386)
  • تحتوي فئة بيانات أدوات واجهة المستخدم Group الآن على الحقل isInline الذي يشير إلى ما إذا كانت المجموعة متعلقة باستدعاء دالة قابلة للإنشاء المضمّنة. إذا كانت قيمة isInline هي true، سيتم تحويل الطلب إلى دالة قابلة للإنشاء مضمّنة. ومع ذلك، قد تكون القيمة خاطئة لاستدعاءات الدوال القابلة للإنشاء المضمّنة والتي تكون من وحدات تم تجميعها باستخدام إصدار من المكوّن الإضافي لإنشاء المحول البرمجي لا ينشئ معلومات الدالة المضمنة. (Idb846)
  • تم ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى النظام الثابت
  • واجهة برمجة تطبيقات حدث Rotary Scroll Event الآن ثابتة (I42ad3، b/261561229)
  • FontVariation API ثابتة الآن (I8779f، b/241016309)
  • جميع دوال إنشاء Font() أصبحت الآن واجهة برمجة تطبيقات ثابتة (I5948b، b/261435386)
  • DeviceFontFamilyName ثابت الآن (I8b640، b/261435386)
  • أصبحت الآن دالة إنشاء AndroidFont مع variationSettings واجهة برمجة تطبيقات ثابتة، ويمكن استخدامها لإنشاء أنواع جديدة من أدوات وصف الخطوط. (I5adcc، b/261565807)
  • أصبحت واجهة برمجة تطبيقات createFontFamilyResolver ثابتة الآن. يمكن استخدام هذه الطريقة لرصد الاستثناءات غير المرصودة أثناء تحميل الخط غير المتزامن. (Ibb481، b/261435386)
  • أصبحت واجهة برمجة تطبيقات Font.loadingStrategy ثابتة الآن. (I5937c، b/261435386)
  • أصبحت واجهة برمجة تطبيقات GoogleFont ثابتة الآن. (Ic90b0، b/261435386)
  • أصبحت واجهة برمجة التطبيقات TextUnit(float, TextUnitType) ثابتة الآن. (I90c84، b/261561612)
  • أصبحت واجهة برمجة التطبيقات pluralStringResource ثابتة الآن. (I09849، b/261439703)

الإصدار 1.4.0-alpha03

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

تم طرح "androidx.compose.ui:ui-*:1.4.0-alpha03". يتضمّن الإصدار 1.4.0-alpha03 هذه الالتزامات.

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

  • إزالة ExperimentalComposeUiApi من PointerIcon (I23af8)
  • تقديم إجراءات تسهيل الاستخدام إلى الصفحة: PageUp وPageDown وPageLeft وPageRight. تجدر الإشارة إلى أنّ هذه العناوين لا تتوفّر إلّا من خلال الإصدار 29 من واجهة برمجة التطبيقات. (Ida4ab)
  • تم تعديل عرض معلمة rememberNestedScrollConnection من العرض الجذر إلى عرض المضيف. (Ia5200)
  • تمت إضافة واجهة برمجة التطبيقات Modifier API لطلب البحث عن معلومات التمرير الأصل. (I2ba9d، b/203141462)
  • يتم استخدامها في Clickable لتأخير تفاعلات الضغط بشكل صحيح، عندما يمكن أن تتحوّل الإيماءات إلى أحداث يتم التنقّل فيها.
  • تم إصلاح الخطأ Clickables لا يؤدي إلى تأخير التموّجات بشكل صحيح عند استخدامها داخل Scrollable ViewGroup.
  • تم تعديل الأدراج وجداول البيانات لتأخير الضغطات بشكل صحيح في حال تحويل الإيماءات إلى أحداث يتم تمريرها.
  • تمت إعادة التسمية CompositingStrategy.Always إلى Offscreen للإشارة إلى أن graphicsLayer سيتم عرضه دائمًا في مخزن مؤقت متوسّط (I47dc1).
  • التحميل الزائد للتنسيق مع خانات محتوى متعددة ثابت الآن (I10566، b/248294649)
  • تمت إضافة الإصدار التجريبي الجديد من واجهات برمجة التطبيقات PerfettoTrace.record {} وPerfettoTraceRule لتسجيل عمليات تتبُّع Perfetto (المعروفة أيضًا باسم System Traces) كجزء من الاختبار، بغرض فحص سلوك الاختبار وأدائه. (I3ba16)
  • في اختبارات واجهة المستخدم التي تستخدم قاعدة إنشاء، لن يتم إرسال عمليات المتابعة التي تم استئنافها أثناء استدعاءات withFrameNanos إلا بعد انتهاء تنفيذ جميع عمليات معاودة الاتصال بالإطار. يتطابق هذا الأمر مع سلوك Compose عند التشغيل بشكل طبيعي. ومع ذلك، قد لا تنجح الاختبارات التي تعتمد على السلوك القديم. من المفترض أن يؤثر ذلك فقط في الرمز الذي يستدعي withFrameNanos أو withFrameMillis مباشرةً، ويكون له منطق خارج معاودة الاتصال يتم تمريره إلى تلك الدوال التي قد تحتاج إلى نقلها داخل عمليات معاودة الاتصال. للاطّلاع على أمثلة، يمكنك الاطّلاع على تغييرات اختبار الرسوم المتحركة في CL هذا.
  • تمت إضافة مَعلمة onPerformTraversals: (Long) -> Unit اختيارية إلى الدالة الإنشائية TestMonotonicFrameClock ووظيفة الإعدادات الأصلية لتشغيل الرمز بعد withFrameNanos عملية استدعاء ولكن قبل استئناف الكوروتينات الخاصة بالمتصلين. (Idb413 وb/254115946 وb/222093277 وb/255802670)
  • تمت إضافة EmojiCompat إلى Compose (Ibf6f9، b/139326806).
  • تمت إضافة مَعلمة جديدة خلفية إلى @Preview لإتاحة الألوان الديناميكية (I9f512).

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

  • يتم الآن إرسال الإشعارات الخاصة بتطبيق اللقطة بعد انتهاء Recomposer من تطبيق التغييرات. (Iad6c0، b/222093277)
  • تم إدخال تغييرات في captureToImage للسماح بالتقاط لقطات شاشة للنوافذ المتعددة. وهذا مفيد في اختبارات لقطات الشاشة التي تستخدم إنشاء نوافذ منبثقة. (I169c5)

التعديلات على المهام التابعة للتبعية

  • يعتمد إنشاء واجهة المستخدم وإنشاء المواد الآن على دورة الحياة 2.5.1. (I05ab0، b/258038814)

الإصدار 1.4.0-alpha02

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

تم طرح "androidx.compose.ui:ui-*:1.4.0-alpha02". يحتوي الإصدار 1.4.0-alpha02 على هذه الالتزامات.

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

  • تم تعديل GraphicsLayerScope لعرض المقاس الحالي لجهاز graphicsLayer. ويكون هذا مفيدًا لاحتساب عمليات تحويل graphicsLayer كدالة للحجم القابل للإنشاء. (If8c43،b/181387080)
  • تم تقديم CompositingStrategy لتحديد الوقت المناسب للاستفادة من طبقة تركيب خارج الشاشة لعرض محتوى graphicsLayer. يحافظ "تلقائي" على السلوك التلقائي الذي يستفيد داخليًا من طبقة ما في حال تطبيق ألفا أو RenderEffect/Overscroll. سيتم دائمًا توفير مورد احتياطي خارج الشاشة دائمًا بحيث يتجنّب ModulateAlpha استخدام مخزن مؤقت خارج الشاشة، وسيعدّل كل من تعليمات الرسم المسجّلة ضمن graphicsLayer. سيستمر استخدام ModulateAlpha في الاستفادة من التخزين المؤقت خارج الشاشة لاستخدام RenderEffect/Overscroll (I25e82، b/256382834)
  • تمت إضافة invalidateSubtree() إلى Modifier.Node للسماح بإبطال عرض التسلسلات الهرمية بالكامل للتنسيق والرسم. (I4bd90)
  • عليك ترقية rememberNestedScrollInteropConnection إلى القناة الثابتة. تم تقديم إمكانية تمرير العرض الجذر إلى rememberNestedScrollInteropConnection. يمكن أن يساعد ذلك العرض المخصص في التفاعل بشكل أفضل مع قيود التمرير، خاصة في طرق العرض غير العادية (مثل ModalBottomSheetDialog). (I9e107)
  • تمت إضافة واجهة ObserverNode يمكن استخدامها بواسطة عمليات تنفيذ Modifier.Node والتي تحتاج إلى إشعار عند تغيير قيمة كانت مقروءة (I5728b، b/247716483)
  • تمت إضافة دالة إنشاء جديدة إلى Paint تتيح استخدام android.graphics.Paint أصلية. تمت أيضًا إضافة دالة الإضافة toComposePaint() التي تحوِّل عنصر Paint الأصلي الحالي إلى Compose Paint. (Ica91b)
  • يمكنك إضافة FontFamily.Resolver.resolveAsTypeface جديد لاستخدامه على Android. (I8950b)
  • إضافة ToolingState للسماح للأدوات بتغيير الحالات الداخلية لـ Composable (Ie6614)
  • إعادة الهيكلة للحصول على دعم أفضل للصور المتحركة المضافة الجديدة (I8677b)
  • تمت إضافة المعلَمة minLines إلى Material3 وmaterial3 وText وTextField وOutlinedTextField ما يسمح بتحديد الحد الأدنى لارتفاع المكوِّن من حيث عدد الأسطر (I4af1d).

الإصدار 1.4.0-alpha01

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

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

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

  • تمت إضافة طريقة جديدة، وهي awaitEachGesture()، لأدوات رصد الإيماءات. وهي تشبه وظيفة forEachGesture()، إلا أنّ التكرار الحلقي فوق الإيماءات يعمل بالكامل ضمن AwaitPointerEventScope، وبالتالي لا يمكن فقدان الأحداث بين التكرارات.
  • تم إيقاف forEachGesture() نهائيًا لصالح awaitEachGesture() لأنّه يسمح بفقدان الأحداث بين الإيماءات. (Iffc3f ، b/251260206)
  • إيقاف إعادة تدوير عناصر تسهيل الاستخدام في androidx لقد تبيّن لنا أنّ التغييرات في الأداء أصبحت ضئيلة حتى في الإصدارات الأقدم المتوافقة. (I0a961)
  • تمت إضافة DrawStyle كسمة تجريبية إلى TextStyle وSpanStyle لتفعيل نص الرسم المحدد. (If24b8، b/155421273)
  • ينفِّذ AnnotatedString.Builder الآن السمة kotlin.text.Appendable. (I1a061، b/231030444)
  • لدى AnnotatedString.Builder الآن الطريقة append(AnnotatedString, start: Int, end: Int) لإلحاق سلسلة فرعية من AnnotatedString والأنماط المتقاطعة.
  • تمت إضافة المَعلمة DrawStyle إلى وظيفتَي الرسم "Paragraph" و"MultiParagraph" التي تفعِّل رسم النص المحدَّد. (Ic8102، b/155421273)

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

  • شكرًا على vighnesh لإضافة أجهزة التلفزيون إلى المعاينات (Ie15cd).

الإصدار 1.3

الإصدار 1.3.3

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

تم طرح "androidx.compose.ui:ui-*:1.3.3". يتضمّن الإصدار 1.3.3 هذه الالتزامات.

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

  • إصلاح عطل يحدث أحيانًا على نظام التشغيل Android 9 عندما يحفظ "النشاط" حالة "طريقة عرض الإنشاء". (I0b755، b/260322832)

الإصدار 1.3.2

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

تم طرح "androidx.compose.ui:ui-*:1.3.2". يتضمّن الإصدار 1.3.2 هذه الالتزامات.

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

  • تم التعديل لاستخدام الإصدار 3.21.8 من Profobuf، والذي يتجنّب تنبيه الأمان في protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

الإصدار 1.3.1

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

تم طرح "androidx.compose.ui:ui-*:1.3.1". يتضمّن الإصدار 1.3.1 هذه الالتزامات.

الإصدار 1.3.0

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

تم طرح "androidx.compose.ui:ui-*:1.3.0". يتضمّن الإصدار 1.3.0 هذه الالتزامات.

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

  • حزمة واجهة برمجة التطبيقات التجريبية الجديدة LookaheadLayout (تفعيل سلوكيات الصور المتحركة التي كانت في السابق مستحيلة)
  • مجموعة تجريبية جديدة من واجهة برمجة التطبيقات Modifier.Node (بديل عالي الأداء لـ Modifier.composed)
  • دعم محسّن للمساحات الداخلية للنوافذ.
  • يمكنك التركيز على دعم لوحات التحكّم ولوحة المفاتيح الخارجية من خلال ميزة LazyLists.
  • تم خفض الحد الأقصى المسموح به للارتفاع في مربّعات الحوار والنوافذ المنبثقة إلى 8 وحدات بكسل مستقلة الكثافة (dp) (تغيير في كسر السلوك في بعض أنظمة التصميم المخصّصة - أسباب ظهور الإصدار التجريبي 01).
  • العديد من التحسينات الطفيفة وغير الثابتة في واجهة برمجة التطبيقات
  • العديد من إصلاحات الأخطاء وتحسينات في الأداء

الإصدار 1.3.0-rc01

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

تم طرح "androidx.compose.ui:ui-*:1.3.0-rc01". يتضمّن الإصدار 1.3.0-rc01 هذه الالتزامات.

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

  • تمت إضافة واصلات تجريبية جديدة في واجهة برمجة التطبيقات لإتاحة الواصلات التلقائية في النص (Iaa869).

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

  • لن تضبط الخطوط DeviceFontFamilyName إعدادات الشكلَين wght وital تلقائيًا، بدلاً من استخدام إعداد النظام الأساسي لـ Typeface الذي تم تحميله. (Ia7a6d، b/246989332)
  • تم إصلاح تسرُّب الذاكرة LazyColumn - لم يتم استدعاء onModifierLocalsUpdated بالقيمة التلقائية عند إعادة استخدام المعدِّلات (b/230168389)

الإصدار 1.3.0-beta03

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

تم طرح "androidx.compose.ui:ui-*:1.3.0-beta03". يتضمّن الإصدار 1.3.0-beta03 هذه الالتزامات.

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

  • أضِف خيارات لتخصيص فاصل الأسطر في "النص". (I86907)
  • تم تغيير الوسيطة size:IntSize باستخدام constraints: Constraints في طريقة TextMeasurer.measure لإتاحة قيود الحد الأدنى للعرض. (I37530، b/242707525)

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

  • تعمل واجهة برمجة التطبيقات BackHandler في AndroidX Activity في Dialog قابل للإنشاء. (I35342)

الإصدار 1.3.0-beta02

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

تم طرح "androidx.compose.ui:ui-*:1.3.0-beta02". يتضمّن الإصدار 1.3.0-beta02 هذه الالتزامات.

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

  • تمت إضافة عبء زائد تجريبي على واجهة Layout التي تقبل قائمة من قواعد بيانات lambda متعددة للمحتوى القابل للإنشاء، والتي تسمح بتهديد العناصر القابلة للقياس التي تضعها عناصر بيانات مختلفة للمحتوى بشكل مختلف (Ic1b4e).

تغييرات على واجهات برمجة التطبيقات المحورية التجريبية:

  • تم إيقاف FocusDirection.In وFocusDirection.Out نهائيًا واستبدالهما بـ FocusDirection.Enter وFocusDirection.Exit. (Ia4262، b/183746982)
  • تمت إضافة خاصيتَي تركيز جديدتَين، وهما الدخول والخروج لتحديد سلوك مخصّص لكل من FocusManager.moveFocus(Enter) وFocusManager.moveFocus(Exit). (I5f3f9، b/183746982)
  • يمكنك الآن استخدام FocusRequester.Cancel لإلغاء عملية نقل التركيز. يمكن استخدام FocusRequester.Cancel في أي من خصائص التركيز التالية: أعلى، وأسفل، ويسار، ويمين، والتالي، وسابق، وبداية، ونهاية، ومدخل وخروج. (Ib300f)

الإصدار 1.3.0-beta01

24 آب (أغسطس) 2022

تم طرح "androidx.compose.ui:ui-*:1.3.0-beta01". يتضمّن الإصدار 1.3.0-beta01 هذه الالتزامات.

إعادة هيكلة عقدة المُعدَّل

تمت إعادة هيكلة الطبقة التي تعالج مثيلات Modifier/Modifier.Element وتنسق سلوكها في LayoutNodes إلى حد كبير. وكان في الواقع إعادة هيكلة لم تؤثر في واجهة برمجة التطبيقات العامة لأي من المعدِّلات عديدة في Compose، ويمكن اعتبارها تغييرًا في التنفيذ فقط. ومع ذلك، يعد هذا تغييرًا مهمًا لأسباب مختلفة. (Ie4313)

ملخص التغييرات

توفّر واجهات برمجة التطبيقات Modifier.Node التجريبية المُضافة تجريدًا يسمح بالحفاظ على الحالة على مثيل سيتم الاحتفاظ به مع دورة حياة عقدة التصميم، وسيتم تخصيصه حسب عقدة التنسيق ولكل استخدام لـ Modifier.Element المطابِق الذي أنتجها.

وبشكل عام، يوفّر هذا المجرّد آلية بديلة لإنتاج معدِّلات ذات حالة مختلفة بدون الاعتماد على آلية عمل واجهة برمجة التطبيقات Modifier.composed.

المخاطر

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

يُرجى توخّي الحذر عند الترقية إلى هذا الإصدار. إذا كنت تعتقد أنّ هذا الإجراء قد أثّر في أداء موقعك الإلكتروني، يُرجى إعلامنا بذلك.

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

تمت إضافة العديد من واجهات برمجة التطبيقات التجريبية، ويتعلق جميعها بالمفهوم الجديد لـ "عقدة المُعدّل". يتم إنشاء Modifier.Node كنتيجة

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

تغيير يؤدي إلى تعطُّل في السلوك

تم خفض الحد الأقصى للارتفاع المسموح به في مربّعات الحوار والنوافذ المنبثقة إلى 8 وحدات بكسل مستقلة الكثافة (dp).

تم خفض الحد الأقصى المسموح به للمسقط الرأسي لمربّعات حوار الإنشاء والنوافذ المنبثقة من 30 بكسل مستقل الكثافة إلى 8 بكسل مستقل الكثافة (dp). يؤثر هذا التغيير في كل من مربعات الحوار والنوافذ المنبثقة المخصصة للمواد وواجهة المستخدم. يتم إجراء هذا التغيير للحدّ من خطأ تسهيل الاستخدام على إصدارات Android الأقدم من S، والتأكّد من أنّ خدمات تسهيل الاستخدام داخل تلك النوافذ قادرة على التفاعل مع المحتوى داخل مربّع الحوار أو النافذة المنبثقة.

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

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

  • تم إصلاح مشكلة عدم تحديث painterResource عند إجراء تغييرات على الإعدادات (I58e73، b/228862715)
  • لم يعُد rememberTextMeasurer يستخدم المَعلمات FontFamily.Resolver أو Density أو LayoutDirection. يُرجى استخدام الدالة الإنشائية TextMeasurer لتوفير قيم مخصصة لهذه المعلمات. (Ia1da3)
  • تمت إضافة السمة DialogProperties.decorFitsSystemWindows للسماح لمربعات الحوار بدعم WindowInsets. (I57742، b/229378542)
  • تم نقل منصات إنشاء الخطوط مرة أخرى إلى ملف Kotlin الأصلي للحفاظ على التوافق الثنائي. لم يحدث أي تغيير من آخر إصدار ثابت. (Ieb2f3)
  • تمت إزالة عامل التشغيل غير الضروري من عدة تعريفات يساوي - وليس لذلك أي تأثير. (I6c309)
  • FontVariation.Setting هي واجهة غير قابلة للقفل، للسماح بواجهات برمجة التطبيقات لتثبيت التطبيقات في المستقبل. (I11021، b/143703328)
  • أضِف CompositionGroup.findParameters إلى SlotTree.kt. يسمح هذا الإجراء للأدوات باسترداد معلَمات CompositionGroup بدون الحاجة إلى تحليل جدول الخانة بالكامل. (I124fe)

الإصدار 1.3.0-alpha03

10 آب (أغسطس) 2022

تم طرح "androidx.compose.ui:ui-*:1.3.0-alpha03". يتضمّن الإصدار 1.3.0-alpha03 هذه الالتزامات.

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

  • LayoutCoordinates.findRootCoordinates() متاحة للجميع الآن (I7fa37، b/204723384)
  • تمت إضافة واجهة برمجة التطبيقات التجريبية للحصول على LayoutCoordinates في PlacementScope. يتيح ذلك للمطوّرين معرفة مكان التنسيق الحالي لعرض العناصر الثانوية حسب موضعها. (I5482b، b/238632578)
  • تمت إضافة LayoutCoordinates.transformFrom للحصول على تحويل المصفوفة من LayoutCoordinates إلى آخر. (Ic5ab1، b/238632578)
  • تم إيقاف SemanticsModifier.id وتم نقل معرّف دلالات الألفاظ إلى LayoutInfo.semanticsId بدلاً من ذلك. (Iac808، b/203559524)
  • تتيح خطوط الموارد الآن ضبط إعدادات تنوع الخطوط (واجهة برمجة التطبيقات 26+). (I900dd، b/143703328)
  • إتاحة الخطوط المتغيّرة في DeviceFontFamilyNameFont (Ic1279، b/143703328)
  • تقبل منصات إنشاء الخطوط الآن قائمة FontVariation.Setting لضبط الخطوط المتغيّرة على الأجهزة التي تستخدم O+. (I11a9d، b/143703328)
  • إضافة واجهة برمجة تطبيقات FontVariation لتحديد الخطوط المتغيّرة واستخدامها (I3c40c، b/143703328)
  • دالة إنشاء LineHeightStyle.Alignment متاحة الآن للجميع (ميزة تجريبية) (I4bbbe، b/235876330)
  • أصبحت الفقرة الآن متوقعة|فعلية ومحدّدة لنظام Android وسطح المكتب. (Id387e، b/239962983)
  • أصبحت واجهة الواجهة هي الآن واجهة Paragarph. ما مِن حالة استخدام للفقرة ضمن فئة فرعية، وننصحك بالتواصل معنا إذا كان هذا التغيير يؤثّر عليك. (If5247، b/239962983)
  • تمت إزالة التعليق التوضيحي التجريبي من PlatformTextStyle وLineHeightStyle. (I64bef)
  • إيقاف TextInputService.show|hideSoftwareKeyboard يُرجى استخدام SoftwareKeyboardController بدلاً من ذلك في رمز التطبيق وTextInputSession في رمز إدارة أداة IME. (I14e4c، b/183448615)
  • إضافة واجهة برمجة تطبيقات جديدة لأنواع الرسوم المتحركة الحالية (I26179)

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

  • تمت إضافة "@RequiresPermission" إلى واجهات برمجة التطبيقات التي تتطلب منح إذن "POST_NOTIFICATIONS" في الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)

الإصدار 1.3.0-alpha02

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

تم طرح "androidx.compose.ui:ui-*:1.3.0-alpha02". يحتوي الإصدار 1.3.0-alpha02 على هذه الالتزامات.

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

  • تمت إضافة خاصية جديدة PointerInputChange#pressure لاسترداد الضغط. (I45a5e، b/205164819)
  • تمت إضافة rememberTextMeasurer لإنشاء TextMeasurer من الحالات وتذكُّرها بسهولة في التركيبة. (I8d66e)
  • تتوافق Rect وRoundRect وMutableRect الآن مع بنية in بلغة Kotlin لاستدعاء الدالة contains. (Ie42b0، b/238642990)
  • يمكنك إزالة الدوال غير الضرورية من KeyInjectionScope لأنّه يمكن تنفيذها بسهولة باستخدام أجزاء أبسط من واجهة برمجة التطبيقات. وتشمل الدوال التي تمت إزالتها pressKeys وkeysDown وkeysUp. (I81d77)
  • أسماء المَعلمات الثابتة وأسماء المَعلمات في KeyInjectionScope تتضمّن اللاحقة "Millis" حيث تكون وحدات الثوابت والمَعلمات المذكورة أعلاه بالملي ثانية. (Iabef5)
  • تمت إضافة طريقة toStringForLog() إلى EditCommand للمساعدة في تحديد المشاكل في تعديل النصوص وحلّها. (I53354، b/228862731)
  • تمت إضافة دالة الإضافة drawText في DrawScope لتوفير طريقة لرسم نص متعدد الأنماط على العناصر القابلة للإنشاء والمعدِّلات التي تعمل على DrawScope مثل Canvas وdrawBehind. (I16a62، b/190787898)
  • قدِّم واجهة برمجة تطبيقات تجريبية جديدة تُسمى TextMeasurer تتيح الاحتساب العشوائي لتنسيق النص الذي ينشئ نتائج متطابقة مع BasicText، بشكل مستقل عن وقت التشغيل Compose. (I17101)
  • أضِف mapTree إلى SlotTree.kt. يتيح ذلك للأدوات فحص SlotTree بدون إنشاء نسخة في الذاكرة أولاً، كما هو الحال في asTree. بالنسبة إلى أداة فحص التخطيط، فإن هذا يعطي تحسينًا في الأداء بحوالي عامل 10. (I5e113)
  • تم تغيير معاينة Compose ليتم تخزينها في ملفات الإخراج الثنائية، للسماح للمطوّرين بكتابة تعليقات MultiPreview التوضيحية وإعادة استخدامها من المكتبات. (I85699، b/233511976)

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

  • عند إضافة أحداث InputEventChange إلى أداة تتبُّع Velocity، سنأخذ في الاعتبار الآن قيم دلتا بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكل صحيح لجميع الحالات حتى إذا تحرّك العنصر المستهدَف (Icea9d أو b/216582726 أو b/223440806 أو b/227709803)
  • يجب حلّ مشكلة NPE الناتجة عن AnnotatedString.toUpperCase في حال ظهور تعليقات توضيحية. (I0aca2، b/210899140)

الإصدار 1.3.0-alpha01

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

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

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

  • LookaheadLayout جديد يتيح تمرير المعاينة قبل القياس/التنسيق الفعلي يسمح هذا بحساب مسبق للتخطيط عندما يتغير، مع السماح لقياس/تخطيط ما بعد النظرة باستخدام الحجم/الموضع المحسوب مسبقًا لتحريك الحجم والمواقف نحو الهدف. لا تتوفّر ميزة "SubcomposeLayouts" حتى الآن، ولكنها ستتوفّر في إصدار قادم. (I477f5)
  • أضِف مَعلمة ألفا الاختيارية إلى صيغة الفرشاة في TextStyle وSpanStyle لتعديل تعتيم Text بالكامل. (Ic2fac، b/234117635)
  • تم توفير نوع التعليق التوضيحي UrlAnnotation والطُرق المرتبطة به لإتاحة روابط TalkBack في AnnotatedString. (I1c754، b/231495122)
  • نقل وظائف الأداة إلى وقت التشغيل (I4f729)

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

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

  • تمت إضافة WindowInfo.keyboardModifiers واجهة برمجة تطبيقات جديدة لملاحظة حالتها ضمن الدوال القابلة للإنشاء أو عبر واجهة برمجة التطبيقات ShotFlow (Icdb8a).

الإصدار 1.2

الإصدار 1.2.1

10 آب (أغسطس) 2022

تم طرح "androidx.compose.ui:ui-*:1.2.1". يتضمّن الإصدار 1.2.1 هذه الالتزامات.

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

  • إصلاح قيمة فارغة في أداة الفحص (b/237987764)
  • تم إصلاح استثناء بثّ الفئة أثناء التذكر في أداة الفحص (b/235526153)

الإصدار 1.2.0

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

تم طرح "androidx.compose.ui:ui-*:1.2.0". يتضمّن الإصدار 1.2.0 هذه الالتزامات.

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

  • التحسينات في اجتياز التركيز:

    • يعمل آلية الانتقال القائم على التركيز في القوائم الكسولة باستخدام واجهة برمجة التطبيقات الأساسية الجديدة في "BeyondBoundsLayout".
    • واجهات برمجة تطبيقات جديدة لتخصيص السلوك في FocusOrder وFocusProperties
    • سلوك محسَّن عند استخدام لوحة المفاتيح الخارجية أو جهاز التحكّم عن بُعد في التلفزيون
  • واجهات برمجة التطبيقات الجديدة لـ:

    • فواصل النوافذ
    • المبادئ الأساسية الخاصة بالصور المتحركة غير المحدودة والرسوم المتحركة التي تعتمد على الإيماءات والتنسيقات
    • إمكانات GraphicsLayer، بما في ذلك RenderEffect
  • العديد من إصلاحات الأخطاء وتحسينات في الأداء

الإصدار 1.2.0-rc03

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

تم طرح "androidx.compose.ui:ui-*:1.2.0-rc03". يحتوي الإصدار 1.2.0-rc03 على هذه الالتزامات.

  • لم يتم إجراء أي تغييرات منذ 1.2.0-rc02.

الإصدار 1.2.0-rc02

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

تم طرح "androidx.compose.ui:ui-*:1.2.0-rc02". يحتوي الإصدار 1.2.0-rc02 على هذه الالتزامات.

الإصدار 1.2.0-rc01

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

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

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

  • يتم الآن إنشاء الواجهات في مكتبات الإنشاء باستخدام طرق الواجهة التلقائية jdk8 (I5bcf1)
  • تمت إضافة دوال ذات مستوى أعلى إلى "KeyInjectionScope" عن طريق الضغط على المفاتيح أثناء الضغط مع الاستمرار على المفاتيح الأخرى أو تفعيلها. وتشمل هذه الدوال withKeysDown وwithKeysToggled وما إلى ذلك. وتمت أيضًا إضافة سمات للتحقّق مما إذا كان مفتاح البيانات الوصفية متوقفًا، مثل isCtrlDown للتحقق مما إذا كان أحد مفتاحَي التحكّم مضغوطًا. ارجع إلى KeyInjectionScope للحصول على وثائق عن كل دالة. (I9f6cd، b/229831515)
  • تم توفير OverscrollEffect تجريبي للسماح بتأثيرات التمرير الزائد المخصّصة، إلى جانب أحمال Modifier.scrollable الزائدة التي تقبلها.
  • تم نقل الإصدار التجريبي من "LocalOverScrollConfiguration" من foundation.gesture إلى حزمة الأساس، وتمت إعادة تسميته إلى LocalOverscrollConfiguration (If19fb، b/204650733).
  • إعادة تسمية runComposeUiTestWithoutActivity {} إلى runEmptyComposeUiTest {}، ما يتوافق مع createEmptyComposeRule() (I6fed7)

الإصدار 1.2.0-beta03

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

تم طرح "androidx.compose.ui:ui-*:1.2.0-beta03". يتضمّن الإصدار 1.2.0-beta03 هذه الالتزامات.

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

  • تمت إضافة pressKeyTimes بالإضافة إلى isCapsLockOn وأصدقاء إلى KeyInjectionScope. بالإضافة إلى ذلك، تتيح واجهة برمجة التطبيقات الآن أنماط الحقن المدمجة باستخدام الماوس ولوحة المفاتيح، مثل النقر على زر الماوس مع الضغط على مفتاح تعريفي. (I4c8da، b/229831515)
  • تمت إضافة دعم تجريبي لإدخال الأحداث الرئيسية. يمكنك استخدام performKeyInput لإرسال الأحداث الرئيسية، أو إرسالها من خلال السمة key في MultiModalInjectionScope أثناء إيماءة إدخال متعدد الأشكال باستخدام performMultiModalInput. يمكنك الاطّلاع على KeyInjectionScope للتعرُّف على مستندات حول واجهة برمجة التطبيقات. (Ic5000، b/229831515)
  • يمكنك إضافة GoogleFont.Provider.AllFontsListUri جديد لاسترداد مصدر الإنترنت الأساسي لخدمة Google Fonts المتوافق مع Android.
  • يمكنك تحسين رسائل الخطأ التي تتم إعادة عرضها عند تعذُّر تحميل GoogleFonts في نافذة الإنشاء. (I0416c)

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

  • عند إضافة InputEventChange حدث إلى أداة تتبُّع السرعة، سنأخذ في الاعتبار الآن قيم دلتا بدلاً من المواضع، وسيضمن ذلك احتساب السرعة بشكل صحيح لجميع الحالات حتى إذا تحرّك العنصر المستهدَف (I51ec3 أو b/216582726 أو b/223440806 أو b/227709803)
  • سيتم الآن تطبيق الإعداد Show Layout Bounds على العناصر القابلة للإنشاء مباشرةً بعد تبديلها من مربّع الإعدادات السريعة، بدون الحاجة إلى المغادرة وإعادة الدخول إلى النشاط. (I843d5، b/225937688)
  • لا يؤدي البحث عن سلسلة تسهيل الاستخدام إلى تشغيل تحميل الخط. في السابق، كانت تحاول تحميل خطوط لـ StyleSpans، ما يؤدي إلى حدوث أعطال إذا تم استبدال FontFamily.Resolver. (I4609d)
  • ولن يتعطل الضغط على مفتاح الحذف للأمام عندما يكون المؤشر في نهاية حقل نصي.
  • تتطلب DeleteSurroundingTextCommand وDeleteSurroundingTextInCodePointsCommand الآن أن تكون وسيطات الدالة الإنشائية غير سالبة. (Ica8e6، b/199919707)

الإصدار 1.2.0-beta02

18 أيار (مايو) 2022

تم طرح "androidx.compose.ui:ui-*:1.2.0-beta02". يتضمّن الإصدار 1.2.0-beta02 هذه الالتزامات.

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

  • إعادة استخدام الوظائف في أنواع المعاينة الأخرى (I19f39)

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

  • تمت إعادة تسمية "ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer" إلى "DisposeOnDetachedFromWindowOrReleasedFromPool" لتعكس بشكل أفضل ذلك عند حدوث التخلص من الجهاز بدلاً من مجرد عدم حدوثه. (If15ca)

الإصدار 1.2.0-beta01

11 أيار (مايو) 2022

تم طرح "androidx.compose.ui:ui-*:1.2.0-beta01". يحتوي الإصدار 1.2.0 -beta01 على هذه الالتزامات.

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

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

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

  • تمت إضافة BeyondBoundsInterval التجريبية التي يمكن استخدامها من خلال عمليات التنفيذ المخصصة لـ LazyList عند تنسيق العناصر خارج الحدود المرئية (Ifabfb، b/184670295)
  • أصبحت إصدارات Modifier.composed الأساسية الآن واجهة برمجة تطبيقات ثابتة (Ie65e4، b/229988420)
  • تم تبسيط واجهة برمجة تطبيقات rememberNestedScrollConnection لاستخدام السكان المحليين للمقطوعات الموسيقية للحصول على معلومات العرض الحالية (I67ca7)
  • يمكن الآن استخدام تعليق @ComposableTarget التوضيحي والتعليقات التوضيحية التي تم وضع علامة @ComposableTargetMarker عليها في نطاق الملف باستخدام البادئة @file. سيؤدي استخدام تعليق توضيحي مستهدف في نطاق الملف إلى افتراض أن جميع الدوال القابلة للإنشاء في الملف تهدف إلى استهداف التطبيق المرتبط بها. مثلاً، يؤدي استخدام @file:UiComposable إلى توضيح أنّ جميع دوال @Composable تستهدف تطبيق Compose UI. إنّ الدالة التي تحتاج إلى استهداف تطبيق آخر يجب أن توفّر بشكل صريح التعليق التوضيحي للعلامة المستهدفة لتطبيق التطبيق المطلوب. (I40804)
  • تم تقديم واجهة برمجة تطبيقات تجريبية جديدة ومستقلة عن النظام الأساسي، وهي عبارة عن interface ComposeUiTest وfun runComposeUiTest(block: ComposeUiTest.() -> Unit) يمكن استخدامهما لإجراء اختبارات Compose Ui بدون الحاجة إلى TestRule. لإجراء اختبار بدون ComposeTestRule، يجب اجتياز الاختبار باستخدام دالة lambda على runComposeUiTest، واستخدام الأساليب والعناصر الأعضاء في نطاق جهاز الاستقبال ComposeUiTest، أي الطرق نفسها المُستخدَمة في ComposeContentTestRule.

    تمت إضافة interface AndroidComposeUiTest وfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) محدّدَين لنظام التشغيل Android لتوفير إمكانية الوصول إلى النشاط الأساسي، مثل AndroidComposeTestRule. لمزيد من التحكّم، يمكنك إنشاء مثيل class AndroidComposeUiTestEnvironment بنفسك.

    تنفيذ الكمبيوتر المكتبي هو class DesktopComposeUiTest، ولكن لا يتم توفير وظائف تشغيل خاصة بالكمبيوتر المكتبي في الوقت الحالي.

    يمكن نقل اختبار من ComposeTestRule إلى ComposeUiTest على النحو التالي (مثال على Android). من:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    إليك الطريقة:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • في الوقت الحالي، لا يتم توسيع نطاقَي ComposeContentTestRule وComposeTestRule من ComposeUiTest، ما يعني أنّه لا يمكن طلب وظائف الإضافات على ComposeUiTest بعد على واجهة TestRule. عند ترقية ComposeUiTest إلى واجهة برمجة تطبيقات ثابتة، سيتم تغيير ComposeContentTestRule وComposeTestRule للتوسّع من ComposeUiTest. (Ib4e90)

  • تمت إعادة تسمية LineHeightBehavior باسم LineHeightStyle

  • تمت إعادة تسمية LineVerticalAlignment باسم LineHeightStyle.Alignment

  • تمت إعادة تسمية LineHeightTrim باسم LineHeightStyle.Trim

  • تمت إزالة قيم الدالة الإنشائية التلقائية من LineHeightStyle (I582bf، b/181155707)

  • تمت إضافة Brush إلى 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)

  • تم تغيير الدالتين PlatformParagraphStyle.lerp وPlatformSpanStyle.lerp لتصبحا دوال ذات مستوى أعلى (I9a268).

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

  • تنص مستندات PointerInputChange::copy الآن بشكل صحيح على أنّها نسخة سطحية. (I182f5)
  • إتاحة علامة الحذف عندما يكون الارتفاع محدودًا ولا يناسب كل أسطر النص (Ie528c ، b/168720622)
  • تم تفعيل includeFontPadding تلقائيًا. من الممكن إيقاف includeFontPadding باستخدام السمة TextStyle.platformTextStyle. في المستقبل القريب، سنغيّر السلوك التلقائي، ولكن إلى حين حلول هذا الوقت، سنغيّر السلوك التلقائي بشكل أفضل (aosp/2058653) وحلّ مشاكل اقتصاص TextField. (I01423، b/171394808)

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

  • يتم الآن قلب رمز MouseInjectionScope.scroll(delta = someDelta) على نظام التشغيل Android في حال التمرير عموديًا (إذا كانت قيمة someDelta إيجابية، سيتم التنقّل للأسفل). (Ifb697، b/224992993)

الإصدار 1.2.0-alpha08

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

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

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

  • تم وضع علامة على دوال pluralStringResource على أنّها تجريبية لإتاحة إمكانية التطوّر لدعم تدويل أفضل في المستقبل. (If24e4)
  • تقبل الفقرة والفقرة المتعددة الآن المَعلمتَين Constraints. يعتبر اجتياز Constraints.maxHeight بيئة مستقلة في الوقت الحالي، ولكنه سيسمح بإجراء بعض العمليات الحسابية في المستقبل، مثل القطع بناءً على الارتفاع. (I6afee، b/168720622)
  • يقبل SubcomposeSlotReusePolicy.getSlotsToRetain() الآن فئة مخصصة تشبه MutableSet، والتي لا تسمح بإضافة عناصر جديدة فيها. (Icd314)
  • PointerIcon أصبحت الآن واجهة @Stable (I9dafe)
  • تم إيقاف الاستهلاك الجزئي (بالترتيب الأدنى أو الموضع) نهائيًا في PointerInputChange. يمكنك استخدام consume() لاستهلاك التغيير بالكامل. يمكنك استخدام isConsumed لمعرفة ما إذا كان شخص آخر قد استخدم التغيير في السابق أم لا.
  • تنشئ أداة PointerInputChange::copy() الآن دائمًا نسخة سطحية. هذا يعني أنّه سيتم استهلاك نُسخ من "PointerInputChange" بعد استهلاك إحدى النُسخ. إذا أردت إنشاء PointerInputChange غير مرتبط، استخدِم الدالة الإنشائية بدلاً من ذلك. (Ie6be4، b/225669674)
  • يمكنك تفعيل إمكانية التشغيل التفاعلي لالتمرير المتداخلة بين "إنشاء" و"عرض" في الاتجاه "إنشاء" > "عرض". وهذا يعني أن الأصل إنشاء سيتمكن من تلقي دلتا تمرير متداخلة من طريقة عرض تمرير متداخلة. (If7949، b/174348612)
  • ميزة SemanticsProperty testTagsAsResourceId الجديدة، التي يمكن استخدامها لجعل سياسة Compose متوافقة مع اختبارات UIAutomator المصممة لنظام العرض (I39c20)
  • عرض جميع الأوزان المتاحة لخطوط الأنظمة على Android عند استخدام FontFamily.SansSerif سيؤدي ذلك إلى استخدام أسماء خطوط احتياطية مثل sans-serif-medium داخليًا على واجهة برمجة التطبيقات 21-28. ويُعدّ هذا تغييرًا في السلوك، لأنّ البيانات المتعلّقة بالوزنَين 400 و700 فقط كانتا متاحتَين في واجهات برمجة التطبيقات من 21 إلى 28. (I380fe، b/156048036، b/226441992)
  • أعاد مدربو الفقرة والفقرات المتعددة ترتيب الوسيطات الموضعية قبل الوسيطات الاختيارية. (Idafaa)
  • أصبحت الدالة AndroidFont الآن typefaceLoader كمعلمة دالة إنشائية. (I2c971)

الإصدار 1.2.0-alpha07

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

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

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

  • تمت إضافة دالة جديدة Snapshot.withoutReadObservation { ... }. تسمح هذه السياسة للمستخدمين بتشغيل دالة lambda التي تم تمريرها بدون الاشتراك في تغييرات قيم الحالة التي تمت قراءتها أثناء هذا الحظر. قد تجده مفيدًا في حالات الاستخدام عندما تريد الاستفادة من عمليات الكتابة/القراءة الآمنة لسلسلة المحادثات المستندة إلى لقطة، ولكن تريد أن تتمكّن من قراءة القيمة بدون الحاجة إلى إعادة صياغة أو إعادة قياس غير ضرورية. (I9f365، b/214054486)
  • إنّ سمة الإضافة consumeWindowInsets في ComposeView تسمح للمطوّرين بإيقاف استخدام WindowInsets لنظام التشغيل Android. ويسمح ذلك بفصل ComposeViews في التسلسل الهرمي على كل منها تطبيق WindowInsets بدون التداخل مع بعضها البعض. (I0ef08، b/220943142)
  • تمت إضافة KeyboardType.Decimal كبديل لـ Keyboard.Number لتضمين فاصل عشري في أداة IME على وجه التحديد. (Iec4c8، b/209835363)
  • PointerEventType.Scroll وPointerEvent.scrollDelta واجهة برمجة تطبيقات ثابتة حاليًا (I574c5، b/225669674)
  • تفعيل إمكانية التشغيل التفاعلي لـ "التمرير المتداخلة" بين "العرض" و"الإنشاء" لفئات "طريقة العرض" التعاونية وهذا يعني أن ميزة "إنشاء" قادرة الآن على نقل دلتا التمرير إلى عنصر عرض رئيسي (متعاون). (I5d1ac، b/174348612)
  • تم تعديل FontFamily.Resolver لدمج إعداد تسهيل استخدام النص الغامق على مستوى النظام (I6c1e7).
  • تم إيقاف Font(AssetManager, String, ...) نهائيًا واستبداله بـ Font(String, AssetManager, ...). هذه واجهة برمجة تطبيقات تجريبية. (I1c7a4)
  • أضِف واصفًا جديدًا للخطوط Font(DeviceFontFamilyName) للبحث عن الخطوط المثبَّتة من خلال النظام اختياريًا أثناء السلاسل الاحتياطية للخطوط. (I30468، b/219754572)
  • تمت إضافة إعدادات التوافق المؤقتة لـ includeFontPadding في TextStyle/ParagraphStyle. يمكن تغيير includeFontPadding من خلال TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). وهذا خيار ضبط مؤقت لتفعيل نقل البيانات وستتم إزالته. (If47be ، b/171394808)
  • أدرِج الإضافة GoogleFont.Provider.isAvailableOnDevice للحصول على مساعدة في تصحيح الأخطاء. (I64e31)
  • إضافة الدالة الإنشائية GoogleFont.Provider للاستخدام مع @ArrayRes (Ic5ee1، b/225984280)
  • تغيّر اسم Compose GoogleFont الآن إلى Font(GoogleFont)، وستظل واجهة برمجة التطبيقات مستقرة. (I125f2)

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

  • تمت إضافة فحص الوبر إلى المادة الأساسية/النقش لضمان استخدام المساحة المتروكة الداخلية (Ifb111).

الإصدار 1.2.0-alpha06

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

تم طرح "androidx.compose.ui:ui-*:1.2.0-alpha06". يتضمّن الإصدار 1.2.0-alpha06 هذه الالتزامات.

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

  • تمت إضافة إجراء دلالي RequestFocus لطلب التركيز على الهدف الذي يمكن التركيز عليه. (I17b71)
  • تم تعديل عملية تحليل الرسومات المتّجهة القابلة للرسم لإتاحة النسخ المطابق التلقائي، وذلك لقلب محتوى VectorPainter إذا كان اتجاه التنسيق الحالي هو RTL. (I79cd9، b/185760237)
  • تم تعديل ألوان الظل/المحيطة لتصبح مَعلمات لاحقة لـ Modifier.graphicsLayer للتوافق مع واجهة برمجة التطبيقات (I3f864، b/160665122).

  • تمت إضافة عمليات تنفيذ تلقائية للون الظل/البيئة المحيطة على GraphicsLayerScope لضمان إجراء تغييرات غير متكررة في واجهة برمجة التطبيقات.

  • تمت إضافة وقت الحدث إلى أحداث RSB (Ief8ae)

  • تم الآن دمج FocusOrder في FocusProperties، والآن أصبح focusProperties() يمتلك كل إمكانات focusOrder(). تم إيقاف FocusOrder وfocusOrder() نهائيًا. ويجب استبدال الحقل focusOrder() الذي يقبل السمة focusRequester بمعدِّل focusRequester() بالإضافة إلى focusProperties(). وهذا يسمح للمفاتيح بفصل المخاوف بشكل أقوى. (I601b7)

  • ستؤدي ترقية كل من RecyclerView وCompose الآن إلى أداء تنقّل أفضل بكثير في RecyclerViews التي تتضمن طرق عرض إنشاء المحتوى كأطفال.

  • إضافة ViewCompositionStrategy.Default كوسيلة لاسترداد الاستراتيجية التلقائية المضمَّنة

  • أضِف ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer، وهي الاستراتيجية التلقائية الجديدة وتتعامل بشكل سليم مع حاويات التجميع، مثل RecyclerView. (If7282)

  • تمت إضافة إمكانية إضافة تعليقات توضيحية إلى فئات التعليقات التوضيحية باستخدام @Preview كخطوة أولى لإضافة ميزة معاينة متعددة. يمكن استخدام مثل هذه التعليقات التوضيحية لإضافة تعليقات توضيحية إلى طرق قابلة للإنشاء أو فئات تعليقات توضيحية أخرى، والتي يمكن اعتبارها بعد ذلك تعليقات توضيحية غير مباشرة باستخدام @Preview معينة. (I12eff)

  • الأجهزة المرجعية المضافة إلى قائمة الأجهزة في @Preview (I071c9)

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

  • تم تحديث واجهات برمجة تطبيقات رسومات Vector لاستخدام التعليق التوضيحي المناسب القابل للإنشاء @VectorComposable بدلاً من @UiComposable (I942bc)
  • إزالة التوجيه المضمَّن من AnnotatedString.Builder.withStyle (If84d5)

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

  • Compose-ui: إضافة السمتَين ambientShadowColor وspotShadowColor إلى GraphicsLayerScope (I1ba1a، b/160665122)
  • يمكن الآن استخدام الموارد الجمعية في الدوال pluralStringResource. (Ib2f23، b/191375123)

الإصدار 1.2.0-alpha05

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

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

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

  • تستخدم TextToolbar الآن وسيطات لامدا بدلاً من ActionCallback. (Ib2eb9، b/197950089)
  • تم تعديل إمكانية القيم الفارغة في النظام الأساسي وتطبيق التطبيق لتتوافق مع Tiramisu DP2 (I0cbb7)
  • تعرض الواجهة التي تم قياسها الآن موقعparentData (I3313f)
  • أصبحت الواجهة Modifier.onPlaced والواجهة OnPlacedModifier مستقرة الآن. (Ib5482)
  • رائع أصبحت ميزة إنشاء الرسوم المتحركة الآن متوافقة مع إعداد "مقياس مدة الرسوم المتحركة" من "خيارات المطوّرين". (I5a4fc، b/161675988)
  • تمت إضافة عنصر تعديل محلي على BeyondBoundsLayout (If8b51، b/184670295)
  • النص: تم إيقاف تضمين FontPadding بشكل تلقائي الآن. يتم التعامل مع مشاكل اقتصاص المحتوى الناتجة عن includeFontPadding=false ولا يُفترَض أن يتم اقتصاصها للنصوص البرمجية الطويلة. (I31c84، b/171394808)

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

  • سيطرح ComposeContentTestRule.setContent الآن الخطأ IllegalStateException إذا حاولت ضبط المحتوى عند توفّر محتوى. (I888a5، b/199631334)
  • إصلاح العطل الذي نتج عن محتوى الحافظة أثناء القراءة من الحافظة على Android. (I06020، b/197769306)
  • تحسين نماذج التمرير في الإعلانات المتجاوبة على شبكة البحث (I6a596)

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

  • تم التحديث لاستخدام coroutines في Kotlinx 1.6.0 (I3366d)

الإصدار 1.2.0-alpha04

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

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

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

  • تمت إضافة ComposableTarget وComposableTargetMarker وComposableOpenTarget، ما يتيح إعداد تقارير حول وقت تجميع البيانات عند استدعاء دالة قابلة للإنشاء تستهدف تطبيق لم يكن مصمّمًا لاستخدامه.

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

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

  • أصبح تطبيق "Font(resId, ...)" يستخدم الآن استراتيجية التحميل على واجهة برمجة تطبيقات ثابتة. (Ief3d2)

  • أصبحت واجهة برمجة التطبيقات FontLoadingStrategy ثابتة الآن. (I1ee35، b/174162090)

  • دعم تحميل الخط غير المتزامن في Text (I77057، b/214587005)

  • أضِف واجهة برمجة تطبيقات Bridge API لتحويل Font.ResourceLoader مخصّص إلى FontFamily.Resolver. (Ia0060)

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

  • يتم تمرير FontFamily.Resolver المقدمة إلى تركيبات فرعية مثل النافذة المنبثقة.
  • يتم تمرير Font.ResourceLoader المقدمة إلى تركيبات فرعية مثل النافذة المنبثقة. (I48fa5)

الإصدار 1.2.0-alpha03

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

تم طرح "androidx.compose.ui:ui-*:1.2.0-alpha03". يحتوي الإصدار 1.2.0-alpha03 على هذه الالتزامات.

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

  • تم إيقاف طُرق notifyFocusedRect في TextInputSession وTextInputService نهائيًا ولن يتم طلبها. يمكنك استخدام BringIntoViewRequester كبديل. (Ia4302 وb/192043120 وb/216842427 وb/178211874)
  • تم تقديم طريقة destroyDisplayListData في فئة التنويع RenderNode (I1e659، b/216660268).
  • تمت إضافة واجهة برمجة تطبيقات جديدة تتيح قياس عناصر SubcomposeLayout الثانوية التي أنشأتها مسبقًا. (I857ea)
  • تمّت إضافة دالة movableContentOf التي تحوِّل دالة lambda القابلة للإنشاء إلى دالة lambda التي تنقل الحالة والعُقد المقابلة لها، إلى أي موقع جديد يُسمّى له. عندما تغادر الاستدعاءات السابقة التكوين، يتم الاحتفاظ بالحالة مؤقتًا وإذا دخلت استدعاء جديد إلى lambda، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. إذا لم تتم إضافة أي مكالمة جديدة، تتم إزالة الحالة نهائيًا وتذكر أنه يتم إبلاغ المراقبين.

    في حال استدعاء دالة movableContentOf lambda عدة مرات في التركيبة نفسها، يتم إنشاء حالة وعُقد جديدة لكل استدعاء، وعندما تغادر الاستدعاءات التكوين ويتم إدخال استدعاءات جديدة، يتم نقل الحالة من أول استدعاءات خروج إلى الطلبات الواردة بهذا الترتيب. تتم إزالة كل الولاية التي لم تتم المطالبة بها من خلال المكالمات الجديدة بشكل نهائي. (Ib4850)

  • "FontFamilyResolver" متاح الآن عبر "LocalFontFamilyResolver.current".

  • تمت إضافة createFontFamilyResolver(context) وcreateFontFamilyResolver(context, coroutineScope) لإنشاء أدوات حلول FontFamily جديدة خارج نطاق استخدام الإنشاء.

  • أصبحت الفقرة والفقرة المتعددة الآن FontFamily.Resolver.

  • يحتوي TextLayoutResult.layoutInput.fontFamilyResolver الآن على برنامج التعيين المستخدَم لهذا التنسيق، وقد تم إيقافه نهائيًا TextLayoutResult.layoutInput.resourceLoader لأنّه لم يعُد مستخدمًا. (Id5a45، b/174162090)

  • إتاحة تحميل الخط غير المتزامن والاختياري مع سلوك احتياطي يتم استخدام هذا المسار بواسطة Text وTextField، ويتم الكشف عنه من خلال FontFamilySolver

  • إتاحة تحميل الخطوط مُسبقًا عبر FontFamilyResolver.preload

  • تسمح السياسة FontFamilyResolver.setAsyncLoadContext بضبط سياق الكوروتين العام المستخدَم لتحميل الخطوط غير المتزامنة. (I87fe8، b/174162090)

  • تمت إضافة AndroidFont، وهي واجهة برمجة تطبيقات جديدة منخفضة المستوى لتوفير أنواع جديدة من أدوات وصف موارد الخطوط على Android. على سبيل المثال، تحميل الخطوط من خلفية خاصة بالتطبيق، أو تحديد موقع الخطوط المثبَّتة مسبقًا على الجهاز اختياريًا، أو تحميل خط من مورد لا توفّره مصانع الخطوط الحالية.

  • تم توسيع واجهة برمجة التطبيقات Font.ResourceLoaded لتتيح تحميل الخطوط الاختيارية وغير المتزامنة. لا يُنصح بأن يستخدم مطوِّرو التطبيقات واجهة برمجة التطبيقات هذه مباشرةً. لإضافة أنواع جديدة من الخطوط، يُرجى الاطّلاع على AndroidFont.

  • دالة الإضافة Font.AndroidResourceLoader تتيح إنشاء Font.ResourceLoader عندما تكون خارج التركيب.

  • تمت إضافة مَعلمة loadingStrategy إلى الخطوط المستندة إلى الموارد للسماح بالتحميل غير المتزامن عندما تشير خطوط الموارد إلى خطوط XML قابلة للتنزيل. (Ie5aea، b/174162090)

  • تم إيقاف الدالة الإنشائية Typeface(FontFamily) نهائيًا. تم استخدام هذه البيانات سابقًا لتحميل الخطوط مسبقًا، والتي قد تستغرق ما يصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. مع الخطوط القابلة للتنزيل، قد يتم حظر هذه المكالمة لمدة 10 ثوان. واستخدِم FontFamilyResolver.preload بدلاً من ذلك.

  • تم إيقاف fontResource(FontFamily): Typeface نهائيًا. تم استخدام هذه البيانات سابقًا لتحميل الخطوط مسبقًا، والتي قد تستغرق ما يصل إلى 10 ثوانٍ للخطوط القابلة للتنزيل. بدلاً من ذلك، استخدِم FontFamilyResolver.preload (If8e7c، b/174162090).

  • إنّ دالة إنشاء SubcomposeLayoutState التي تقبل maxSlotsToRetainForReuse تم إيقافها نهائيًا الآن. بدلاً من ذلك، هناك دالة إنشاء جديدة تقبل SubcomposeSlotReusePolicy - وهي واجهة جديدة تسمح بمزيد من التحكم الدقيق في الخانات التي يجب الاحتفاظ بها لإعادة الاستخدام في المستقبل. (I52c4d)

  • يستعرض دالة HSV وHSL في Color على أنّها واجهة برمجة تطبيقات غير تجريبية. أصبحت مساحة اللون Oklab الآن واجهة برمجة تطبيقات عامة. (I08fb6، b/180731008)

  • تم إيقاف AndroidComposeTestRule.AndroidComposeStatement نهائيًا، ولم يكن من المفترض أن يكون في واجهة برمجة تطبيقات متاحة للجميع، وبالتالي لم يؤدِّ أي شيء إلى حسابك على أي حال. (Ibc46b)

  • تم إنشاء إعادة تسمية فئة kt داخليًا (Ia0b9e، b/174162090)

  • تمت إزالة "FontLoadingStrategy.values" (I42a9d، b/174162090).

  • تم تغيير اسم برنامج تحميل الخط العام إلى FontFamilyResolver. (I4f773، b/174162090)

  • استخدم نظام تحميل الخط الجديد لسطح المكتب. (I9ce5c، b/174162090)

  • FontFamily.Resolver.resolve تعرض State<Any> (I4406c، b/174162090)

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

  • ستبقى الحقول النصية الآن فوق لوحة المفاتيح عند التركيز عليها وتظهر لوحة المفاتيح، عندما يكون وضع "الإدخال الأولي" هو ADJUST_PAN. (I8eaeb، b/190539358، b/192043120)
  • يستخدم سطح المكتب مقطوعة موسيقية محلية لـ FontFamily.Resolver.
  • تم إيقاف سطح المكتب FontLoader نهائيًا
  • مصنع "createFontFamilyResolver" جديد على الكمبيوتر المكتبي (I6bbbb، b/174162090)
  • لم يعُد وميض نوع إدخال لوحة المفاتيح اللينة عند تغيير التركيز بين الحقول النصية. (I1bf50، b/187746439)

الإصدار 1.2.0-alpha02

26 يناير 2022

تم طرح "androidx.compose.ui:ui-*:1.2.0-alpha02". يحتوي الإصدار 1.2.0-alpha02 على هذه الالتزامات.

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

  • تمت إضافة Modifier.onRotaryScrollEvent() وModifier.onPreRotaryScrollEvent() لأجهزة Wear التي تحتوي على زر جانبي دوار (I18bf5، b/210748686)
  • إدراج إضافة View.createLifecycleAwareRecomposer تجريبية (I0cde6)

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

  • تم قلب رمز PointerEvent.scrollDelta.y الآن على نظام التشغيل Android (يعرض الآن الرقم 1 بدلاً من -1 في حال إمالة عجلة الماوس إلى اليمين) (Ia9811).

الإصدار 1.2.0-alpha01

12 كانون الثاني (يناير) 2022

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

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

  • FontFamily.canLoadSynchronously متوقّف نهائيًا. ليس لهذه السمة أي معنى دلالي. (Ica5ef)
  • تمت إضافة حقل الهوية إلى CompositionData لإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e)
  • تمت إضافة أرقام تعريف الأجهزة التي تعمل بنظام التشغيل Wear OS إلى قائمة الأجهزة الحصرية (I93232).

التعديلات على المهام التابعة للتبعية

  • وتعتمد الآن على لغة 1.6.10 في Kotlin.

الإصدار 1.1

الإصدار 1.1.1

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

تم طرح "androidx.compose.ui:ui-*: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.ui:ui-*:1.1.0". يتضمّن الإصدار 1.1.0 هذه الالتزامات.

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

  • دعم ثابت لنظام التشغيل Android 12 تأثير التمرير الزائد
  • تحسينات على حجم مساحة اللمس
    • يُرجى العلم أنّه في ما يتعلق بالإصدار 1.0 من Compose، ستوسِّع مكوّنات Material مساحة التصميم الخاصة بها لاستيفاء إرشادات إمكانية الوصول الخاصة بمواد العرض لحجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس المستهدفة للزر إلى حدّ أدنى للحجم يبلغ 48x48 بكسل مستقل الكثافة، حتى في حال ضبط حجم الزر ليكون أصغر. يعمل هذا على مواءمة Compose Material مع سلوك مكونات التصميم المتعدد الأبعاد نفسه، مما يوفر سلوكًا متسقًا إذا كنت تمزج بين طرق العرض والإنشاء. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات تسهيل استخدام مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكونات Compose Material.
  • دعم ثابت لبروتوكول السكة الحديدية
  • تخرّج عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى النظام الثابت
  • الدعم للإصدارات الأحدث من لغة البرمجة Kotlin

الإصدار 1.1.0-rc03

26 يناير 2022

تم طرح "androidx.compose.ui:ui-*:1.1.0-rc03". يحتوي الإصدار 1.1.0-rc03 على هذه الالتزامات.

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

  • تم التعديل لإتاحة Compose Material 1.1.0-rc03

الإصدار 1.1.0-rc01

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

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

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

  • تم إصلاح خطأ أدى إلى فقدان إجراءات التمرير المتعلّق بتسهيل الاستخدام (I7cbfb)
  • سيعمل SemanticsNodeInteraction.captureToImage() الآن أيضًا إذا كانت قيمة HardwareRenderer.isDrawingEnabled() هي false، من خلال تفعيله طوال مدة المكالمة (Idf3d0).

الإصدار 1.1.0-beta04

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

تم طرح "androidx.compose.ui:ui-*:1.1.0-beta04". يتضمّن الإصدار 1.1.0-beta04 هذه الالتزامات.

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

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

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

  • تم محو إمكانية القيم الفارغة في androidx.core.view (I7078a، b/204917439)
  • تمت إضافة واجهات برمجة تطبيقات تجريبية تتيح للمستخدمين استخدام PointerInputchange ككل أو معرفة ما إذا تم استهلاكها أم لا. (I2e59d)
  • يضيف دعمًا لأحداث عجلة تمرير الماوس في طبقة واجهة المستخدم. (Ia14eb، b/198214718)
  • أضِف أحمال Modifier.composed التجريبية التي تقبل المفاتيح لمقارنتها بالمساواة وتكون مؤهَّلة لتخطي التحسينات. (Ice799، b/205851704)
  • يمتد نطاق "ComposeNotIdleException" الآن من "Exception" بدلاً من "Throwable" مباشرةً. يُرجى العِلم أنّ هذا يعني أنّ عبارات إطلاق الرموز التي كانت تجذب Exception قد تلتقط الآن ComposeNotIdleException، حيث لم يكن يتم استخدام هذه الجمل في السابق. (I9c217)

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

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

الإصدار 1.1.0-beta03

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

تم طرح "androidx.compose.ui:ui-*:1.1.0-beta03". يتضمّن الإصدار 1.1.0-beta03 هذه الالتزامات.

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

  • تمت إضافة المعدِّل الجديد Modifier.onPlaced للسماح بملاحظة تغيير الموضع. وبالتالي يمكن إجراء تغييرات إضافية على معادلة معدِّل العناصر الفرعية بناءً على تغيير الموضع المرصود. (I558fd)
  • تمت إزالة InjectionScope.flush() وInjectionScope.dispose(). يحدث التخلص من جميع الأحداث والتخلص من النطاق الآن في نهاية طريقة describe*Input() كما كان الحال من قبل. (I2bed8)
  • تمت إزالة MultiModalInjectionScope.Touch وMultiModalInjectionScope.Mouse. لإدخال أحداث اللمس والماوس للإيماءات متعددة الوسائط، يمكنك الآن استخدام MultiModalInjectionScope.touch() و MultiModalInjectionScope.mouse()، وكلاهما يقبل دالة lambda التي لها نطاق المُستلِم لتلك الطريقة. (Idde18)

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

  • يتم الآن احتساب القيمة التلقائية للسمة durationMillis في TouchInjectionScope.swipeWithVelocity كي يكون التمرير سريعًا. (I19deb)

الإصدار 1.1.0-beta02

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

تم طرح "androidx.compose.ui:ui-*:1.1.0-beta02". يتضمّن الإصدار 1.1.0 -beta02 هذه الالتزامات.

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

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

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

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

الإصدار 1.1.0-beta01

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

تم طرح "androidx.compose.ui:ui-*:1.1.0-beta01". يتضمّن الإصدار 1.1.0-beta01 هذه الالتزامات.

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

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

الإصدار 1.1.0-alpha06

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

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

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

  • إزالة ExperimentalComposeUiApi من ViewRootForInspector وLayoutInfo.ownerViewId (I5c2e3)
  • تمت إضافة عبء زائد بدون أطفال في Layout، مع تحسين الكفاءة (Ib0d9a).
  • تمت إزالة InternalCompilerApi من طرق Composer التي يجب استدعاؤها على مستوى وحدات مختلفة (I1aa0b)
  • تعرض SemanticsNodeInteraction.performSemanticsAction الآن SemanticsNodeInteraction الذي تم استدعاء الدالة فيه. (I9e5db)
  • تمت إضافة LocalInputModeManager ProductionLocal لاكتشاف وضع TouchMode/NonTouchMode. (I6a83c، b/175899786)
  • تمت إضافة viewConfiguration: ViewConfiguration إلى LayoutInfo للسماح للمستهلكين بالحصول على القيمة الصحيحة لأشياء مثل مهلة الضغط المطوّل. (I76ca6)
    • تمت إضافة viewConfiguration: ViewConfiguration إلى InjectionScope للسماح للاختبارات بتعديل إدخال البيانات استنادًا إلى عناصر مثل مهلة الضغط مع الاستمرار أو التمرير باللمس.
    • تم تغيير المدة التلقائية للضغط مع الاستمرار والنقر مرّتين على كل من الإدخال باللمس والماوس استنادًا إلى القيم في InjectionScope.viewConfiguration.
  • تنفيذ ExposedDropالقائمة استنادًا إلى ExposedDropالقائمةBox مع إضافة TextField وقائمة منسدلة ضمن (If60b2)
  • تمت إضافة REMOVEOnExternalClick إلى PopupProperties، بدلاً من DropOnClickExternal التي تم إيقافها. يتلقّى الموقع الجديد موضع النقر وحدود الارتساء، ما يوفّر قدرة أفضل على التحكّم في ما إذا كان يجب استدعاء onRemoveRequest أم لا. على سبيل المثال، يمكن أن يكون هذا الإجراء مفيدًا لمنع إغلاق علامة ارتساء عند اللمسات على الإعلان الثابت.
    • تمت إضافة updateAndroidWindowManagerFlags إلى عناصر PopupProperties، ما يوفّر مستوى تحكّم منخفضًا في العلامات التي تمرِّرها النافذة المنبثقة إلى واجهة مدير النوافذ (Android WindowManager). ستكون مَعلمة lambda هي العلامات التي يتم احتسابها من قيم PopupProperties التي تؤدي إلى ظهور علامات WindowManager: مثل قابل للتركيز. وستكون نتيجة دالة lambda هي العلامات النهائية التي سيتم تمريرها إلى أداة Android WindowManager. بشكلٍ تلقائي، سيؤدي updateAndroidWindowManagerFlags إلى ترك العلامات التي تم احتسابها من المَعلمات بدون تغيير. يجب استخدام واجهة برمجة التطبيقات هذه بحذر، فقط في الحالات التي يكون فيها للنافذة المنبثقة متطلبات سلوك محددة للغاية. (I6e9f9)
  • تم إيقاف Recomposer.state نهائيًا واستبداله بالرمز Recomposer.currentState لتغيير نوعه إلى StateFlow (Ic2ab3، b/197773820)
  • تمّت إضافة "flush()" و"dispose()" إلى "InjectionScope". استخدمها عندما تريد محو جميع الأحداث المدرجة في قائمة الانتظار على الفور وعندما تريد التخلص من النطاق، على التوالي. (Ifb73a)
  • تمت إضافة performScrollToNode(matcher: SemanticsMatcher) الذي يمرّر حاوية قابلة للتمرير إلى المحتوى الذي تتم مطابقته من خلال المُطابق المحدد. (Ic1cb8)
  • ينفِّذ InjectionScope الآن Density، ما يتيح لك التحويل بسهولة بين وحدات البكسل وdp في performTouchInput والأصدقاء. (I8fe1f)

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

  • ينشر AndroidView الآن LocalLifecycleOwner وLocalSavedStateRegistryOwner في العرض من خلال ViewTreeLifecycleOwner، وViewTreeSavedStateRegistryOwner. (I38f96، b/179708470)
  • أصلح نظام التشغيل WearOS مرِّر سريعًا ToRejectBox في بعض الأحيان لا يتعامل مع التمريرات السريعة. (I9387e)
  • وتم تغيير الوقت التلقائي بين أحداث الإدخال التي تم إدخالها من 10 ملي ثانية إلى 16 ملي ثانية. من المحتمل أن يؤدي ذلك إلى تغيير نتيجة الاختبارات التي تؤدي إيماءات الإدخال، مثل التمرير السريع المحدد. (I829fd)

الإصدار 1.1.0-alpha05

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

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

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

  • تمت إضافة دعم للتواصل مع المُعدِّلات المختلفة (Id5467، b/198826874)
  • تمت إضافة المؤشرات السابقة التجريبية إلى PointerEventChange. (Ic1fd8 وb/197553056 وb/199921305)
  • تمّت إضافة "density: Density" و"layoutDirection: LayoutDirection" إلى "LayoutInfo". يسمح ذلك لمستهلكي LayoutInfo بتفسير الأبعاد والموضع المعروض في LayoutInfo بشكل صحيح. (I002f1)
  • تمت إضافة دعم تجريبي لحقن أحداث الماوس. استخدِم performMouseInput لبدء إرسال أحداث الماوس، أو أرسِل أحداث الماوس من خلال السمة Mouse في MultiModalInjectionScope أثناء إيماءة إدخال متعدد الأشكال باستخدام performMultiModalInput. يمكنك الانتقال إلى MouseInjectionScope للاطّلاع على مستندات حول واجهة برمجة التطبيقات المتاحة. (Iaa4a8، b/190493367)

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

  • تم إصلاح إمكانية الوصول إلى العناصر القابلة للتمرير (الكسول وغير الكسول) في ما يتعلق بالتمرير (I6cdb0)
  • تم تحسين TouchInjectionScope.swipeWithVelocity. يقبل الآن نطاقًا أوسع من متغيّرات الإدخال وسيقترح تغييرات على الإدخال في حال تعذّر إنشاء التمرير السريع (I40fbe، b/182477143)

الإصدار 1.1.0-alpha04

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

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

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

  • يتضمّن "PointerEvent" الآن عنصر PointerEventType لإتاحة ميزة التمرير فوق الأحداث. (I091fa)
  • السماح للعناصر الثانوية بقبول إدخال المؤشر خارج حدود إدخال مؤشر الأصل. ويمكن للوالدَين اعتراض هذه الاستدعاءات باستخدام الخاصية PointerInputScope.alwaysInterceptChild Events (I9eae3، b/192479655).
  • تم إيقاف performGesture وGestureScope نهائيًا، وقد تم استبدالهما بـ performTouchInput وTouchInjectionScope. (Ia5f3f، b/190493367)
  • تمت إضافة touchBoundsInRoot إلى SemanticsNode يتضمّن الحد الأدنى لحجم ناحية اللمس المستهدفة لكي يتمكّن المطوّرون من التأكّد من أنّ مساحات اللمس تستوفي الحدّ الأدنى لتسهيل الاستخدام. (I2e14b، b/197751214)
  • إعادة تنفيذ واجهة المستخدم القابلة للفحص (I927bc، b/191017532)
  • تم تغيير اسم المَعلمة القابل للفحص ليتطابق مع النسخة التي تم إنشاؤها (I3a482، b/191017532)
  • تم طرح الترميزَين performTouchInput وTouchInjectionScope كبديل للسمتَين performTouchInput وTouchInjectionScope، ما يفسح المجال لأساليب أخرى (مثل الماوس).

    للطرق TouchInjectionScope نفسها مثل GestureScope، باستثناء movePointerTo وmovePointerBy، اللتين تمت إعادة تسميتهما إلى updatePointerTo وupdatePointerBy. جميع الطرق الأخرى هي نفسها.

    يشبه سلوك TouchInjectionScope تقريبًا سلوك GestureScope، مع عرض تفاصيل صغيرة:

    1. عند إرسال حدث تنازلي أثناء نقل المؤشرات بدون إرسال حدث نقل (أي بعبارة أخرى، تم استخدام updatePointerTo()، ولكن لم يتم استدعاء move()، ثم يتم استدعاء down())، ستتقدّم عملية التنفيذ السابقة في وقت الحدث وترسل حدث النقل قبل إرسال الحدث المعنيّ. لا يزال التنفيذ الجديد يرسل حدث النقل، لكنه لا يتقدم وقت الحدث في هذا السيناريو المحدد.
    2. عند إرسال حدث ما أثناء نقل المؤشرات بدون إرسال حدث نقل (كما هو موضح أعلاه)، ستعمل عملية التنفيذ السابقة على التقدم في وقت الحدث وإرسال حدث النقل قبل إرسال الحدث الأعلى. والتنفيذ الجديد ليس كذلك: لن تنعكس المواضع الجديدة للمؤشرات إلا من خلال الحدث الأعلى.

    أخيرًا، يقدم TouchInjectionScope طريقة جديدة currentPosition(pointerId: Int) للحصول على الموضع الحالي للمؤشر المقدم. (If1191، b/190493367)

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

  • اسمح للمقطع بتوسيع حدود مساحة اللمس إلى ما بعد منطقة المقطع لأغراض الحدّ الأدنى من مساحات اللمس. (I43e10، b/171509422)
  • أتحنا إمكانية الانتقال الزائد للانتقال على الأجهزة التي تعمل بنظام التشغيل Android 12. (Iccf3c، b/171682480)

الإصدار 1.1.0-alpha03

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

تم طرح "androidx.compose.ui:ui-*:1.1.0-alpha03". يتضمّن الإصدار 1.1.0-alpha03 هذه الالتزامات.

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

  • تم تعديل سياسة الإنشاء 1.1.0-alpha03 للاعتماد على لغة البرمجة 1.5.30 بلغة Kotlin. (I74545)

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

  • تمت إضافة Modifier.inspectable لتضمين عناصر التعديل الأخرى. (I1909b، b/191017532)
  • تمت إضافة BlurredEdgeTreatment API لتبسيط حالات استخدام التمويه في مجموعات أكثر شيوعًا من علامات المقاطع وTileModes. تشمل معظم حالات الاستخدام إما السماح بعرض المحتوى المموّه خارج حدود المحتوى الأصلي وتمويه المناطق خارج هذه الحدود باللون الأسود الشفاف، أو اقتصاص المحتوى إلى حدود المحتوى مع أخذ عينات من أقرب حافة لتضمين نواة ضبابية خارج حدود المحتوى. (I6b4b7، b/166927547)
  • تمت إضافة دعم RenderEffect في إنشاء سطح المكتب. تم تقديم OffsetEffect بالإضافة إلى أداة تعديل التمويه كطريقة بسيطة لتقديم تأثيرات بصرية مموهة لجزء من التسلسل الهرمي للتركيب. (I0f6aa، b/166927547)
  • تم تقديم واجهة برمجة التطبيقات RenderEffect والتي يمكن ضبطها بشكل اختياري على Modifier.graphicsLayer لتغيير محتوى الطبقة نفسها. يمكن استخدامه لتمويه محتوى العناصر القابلة للإنشاء والعناصر الثانوية القابلة للإنشاء ضمن تسلسل هرمي للتركيبة. (I47c4d، b/166927547)
  • يحتوي AuePointerEventScope الآن على withSession() وwithSessionOrNull() (I507f0 وb/179239764 وb/182397793).
  • تمت إضافة الحد الأدنى لحجم مساحة اللمس المستهدفة إلى ViewConfiguration للاستخدام في الدلالات وإدخال المؤشر لضمان إمكانية الوصول. (Ie861c)
  • أضف دعم TileMode.Decal الذي يُعد مفيدًا في تحديد سلوك الحافة لتأثيرات RenderEffects المستندة إلى التمويه. (I7e8ed، b/166927547)
  • أصبحت واجهات برمجة التطبيقات performScrollToIndex وperformScrollToKey وhasScrollToIndexAction وhasScrollToKeyAction ثابتة الآن (I142ae، b/178483889).
  • تمت إضافة طريقة الاختبار للحصول على الحدود المقتطعة. (I6b28e)

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

  • تمت إزالة طريقة isBounded من ProtectedEdgeTreatment لصالح التحقق الصريح مما إذا كانت معلمة الشكل فارغة. (I85d68)

الإصدار 1.1.0-alpha02

18 آب (أغسطس) 2021

تم طرح "androidx.compose.ui:ui-*:1.1.0-alpha02". يحتوي الإصدار 1.1.0-alpha02 على هذه الالتزامات.

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

  • لدى PointerEvent الآن دعم لقراءة حالة زر الماوس وحالة معدِّل لوحة المفاتيح. (I6310c، b/180075467)
  • تستخدم الإيماءات التي يتم إدخالها الآن وقت MainTestClock كمصدر للحقيقة للوقت. سيتم ضبط الوقت الحالي للأحداث التي تم إدخالها في performGesture إلى الوقت الحالي في MainTestClock. (Ifb364، b/192064452)
  • تمت إضافة دالة إنشاء DpRect(DpOffset, DpSize) (I2cf16، b/194219828)
  • تمت إضافة فئة DpSize (I7abb1، b/194219828).

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

  • تم تحديث ملف xml لرسومات Vector من أجل دعم ColorStateLists كخصائص درجات لون الجذر في VectorDrawables. (I86915، b/195668138)

الإصدار 1.1.0-alpha01

4 آب (أغسطس) 2021

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

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

  • تقبل RelocationRequester.bringIntoView الآن مستطيلاً كمَعلمة تتيح لنا عرض جزء من عنصر قابل للإنشاء (Ice2c5، b/194330245).
  • تمت إضافة AnimatedImageVector وواجهات برمجة التطبيقات ذات الصلة الآن في الوحدة الجديدة androidx.compose.animation:animation-graphics. (I60873)
  • تمت إضافة معدِّل تجريبي للتعامل مع طلبات النقل. (I65a97، b/178211874)
  • تم تقديم واجهة برمجة تطبيقات BrushPainter لدعم رسم فرشاة عشوائية داخل أداة الطلاء، على غرار ColorPainter

    تم تحديث Brush API لتتضمن معلمة حجم أساسية يتم الاستعلام عنها ضمن BrushPainter (Ia2752، b/189466433)

  • تم تحديث طريقة DrawScope#DrawImage التي تستخدم مستطيلات المصدر والوجهة لاستهلاك مَعلمة FilterQuality اختيارية. يعد ذلك مفيدًا لفن البكسل المراد أن يكون متقطّعًا عند زيادته ليتوافق مع فن البكسل. تم تحديث BitmapPainter + الصورة لإنشاء معلَمة عاملة تصفية اختيارية (Ie4fb0، b/180311607)

  • تمت إضافة طريقة GestureScope.advanceEventTime لمنح المزيد من التحكم في توقيت الأحداث بإيماءة (Ibf3e2)

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

  • من أجل دعم تسلسل معدِّلات الرسم بشكل أفضل، تأكد من أن استدعاءات التنفيذ Modifier.paint ترسم المحتوى. في السابق، كان من المتوقّع أن يضيف تطبيق Modifier.paint إلى عقدة ورقة في سلسلة "المعدِّلات"، ولكن يؤدي ذلك إلى منع إعداده على حاوية قابلة للإنشاء (مثل صندوق) أو إضافة زخارف أخرى فوقها، مثل Modifier.paint().border(). من خلال استخدام Modifier.paintcall drawContent بعد رسم محتوى لوحة الرسم، نحصل على اتّساق أفضل في السلوك مع نمط التعديل. (Ibb2a7 وb/178201337 وb/186213275)
  • تتبع مربّعات الحوار الآن سلوك تغيير حجم النظام الأساسي. اضبط usePlatformDefaultWidth على "خطأ" لإلغاء هذا السلوك. (Iffaed، b/192682388)
  • تم نقل InfiniteAnimationPolicy إلى :compose:ui (I5eb09، b/160602714)
  • إنّ التنقّل من خلال الإجراءات الدلالية للقوائم البطيئة ومكوّنات التمرير العادي أصبح الآن متحركًا (Id9066، b/190742024).

الإصدار 1.0

الإصدار 1.0.5

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

تم طرح "androidx.compose.ui:ui-*:1.0.5". يتضمّن الإصدار 1.0.5 هذه الالتزامات.

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

  • تم إصلاح مثيلات تتبُّع الأعطال المشتقّة. (aosp/1792247)

الإصدار 1.0.4

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

تم طرح "androidx.compose.ui:ui-*:1.0.4". يتضمّن الإصدار 1.0.4 هذه الالتزامات.

التعديلات على المهام التابعة للتبعية

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

الإصدار 1.0.3

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

تم طرح "androidx.compose.ui:ui-*:1.0.3". يتضمّن الإصدار 1.0.3 هذه الالتزامات.

التعديلات على المهام التابعة للتبعية

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

الإصدار 1.0.2

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

تم طرح "androidx.compose.ui:ui-*:1.0.2". يتضمّن الإصدار 1.0.2 هذه الالتزامات.

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

الإصدار 1.0.1

4 آب (أغسطس) 2021

تم طرح "androidx.compose.ui:ui-*:1.0.1". يتضمّن الإصدار 1.0.1 هذه الالتزامات.

التعديلات على المهام التابعة للتبعية

  • تم التعديل للاعتماد على لغة 1.5.21 في Kotlin.

الإصدار 1.0.0

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

تم طرح "androidx.compose.ui:ui-*: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 Studio Bumblebee وAGP 7.1. (b/194289155)

الإصدار 1.0.0-rc02

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-rc02". يحتوي الإصدار 1.0.0-rc02 على هذه الالتزامات.

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

  • تتبع مربّعات الحوار الآن سلوك تغيير حجم النظام الأساسي. اضبط usePlatformDefaultWidth على "خطأ" لإلغاء هذا السلوك. (Iffaed، b/192682388)

الإصدار 1.0.0-rc01

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

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

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

  • تقسيم وحدة أدوات واجهة المستخدم إلى ui-tooling وui-tooling-preview (Iefa28، b/190649014)

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

  • تمت إزالة الإصدارَين التجريبيَين FocusManager#moveFocusIn وFocusManager#moveFocusOut المتوقفَين نهائيًا (I227d7 وb/170154986 وb/186567354 وb/168510304).
  • يدعم Canvas الآن معلمة contentDescription لإمكانية الوصول. (Ib547c)
  • تمت إعادة تسمية "useDefaultMaxWidth" في "PopupProperties" إلى "usePlatformDefaultWidth". (I05710)
  • يمكن لمربّعات الحوار الآن استخدام عرض الشاشة بالكامل. (I83929، b/190810877)
  • تمت إضافة دعم تجريبي لتصورات ألوان HSV وHSL. (Id7cf8، b/180731008)

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

  • توفّر ميزة Compose @Preview الآن عنصر LocalActivityResultRegistryOwner يسمح لك بمعاينة العناصر القابلة للإنشاء التي تستخدم واجهات برمجة تطبيقات مثل rememberLauncherForActivityResult() تعتمد على هذا المالك الحالي. (Ib13d1، b/185693006)
  • ميزة "إنشاء @Preview" الآن توفّر عنصر LocalOnBackPressedDispatcherOwner يسمح لك بمعاينة العناصر القابلة للإنشاء التي تستخدم واجهات برمجة تطبيقات مثل BackHandler تعتمد على مالك المحتوى الحالي. (Ia1c05، b/185693006)

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

  • تم نقل InfiniteAnimationPolicy إلى androidx.compose.ui:ui (I5eb09، b/160602714)
  • تمت إزالة MoveImageVector مؤقتًا لتغيير بنية الوحدة. (I41906، b/160602714)

الإصدار 1.0.0-beta09

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta09". يتضمّن الإصدار 1.0.0-beta09 هذه الالتزامات.

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

  • تغيير دور التعداد وLiveRegionMode إلى فئات مضمّنة باستخدام دالة إنشاء خاصة (Id1890)
  • يتم تحويل الكتابة بالأحرف اللاتينية الكبيرة في لوحة المفاتيح إلى فئة مضمّنة. (Id5a1c)
  • تغيير HapticFeedbackType إلى صف مضمَّن. (I255ec)
  • Modifier.pointerInteropFilter هي @BETAComposeUiApi. (Iede6c)
  • أصبحت محاذاة TextAlign وFontSynthesis وTextDirection الآن فئتين مضمنة. (I212fe)
  • تم تغيير TextOverflow إلى فئة مضمّنة. (I433af)
  • أصبحت FontStyle الآن فئة مضمّنة. (I9e48b)

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

  • الثوابت الرئيسية هي @BETAComposeUiApi حاليًا. يمكن أن يؤدي استهلاك التعليمات البرمجية إلى إعلان ثوابت خاصة قبل الاستقرار. (Ia5d48)
  • يمكن الآن إجراء اختبارات الإنشاء على Robolectric. تم تحديد القيود التالية حتى الآن:
    • ما مِن صورة نقطية أصلية، لذا تؤدّي ImageBitmap() إلى NullPointerException.
    • ما مِن رسم، لذا ستنتظر ميزة "captureToImage()" بطاقة السحب التالية (أي العوائق) إلى أجل غير مسمى.
    • ليس هناك خط محمَّل، لذا سيتم قياس أي نص بشكل غير صحيح. ارتفاع ثابت لجميع الأحرف يبلغ حوالي 20 بكسل وعرضها 1 بكسل.
    • ولا تشغِّل ComposeTestRule.waitUntil {} سلسلة التعليمات الرئيسية أثناء الانتظار، ما يجعلها تمامًا مثل ComposeTestRule.mainClock.advanceTimeUntil {}. من المتوقّع أن يتم تحديد المزيد من القيود في المستقبل. (I284fa)

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

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

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

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

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

  • سيكون لقاعدة الطريقة النمط التالي:

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

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

  • تمثّل هذه السمة <CLASS_DESCRIPTOR> واصفًا للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، يجب وصف السمة Landroidx/compose/runtime/SlotTable; للصف androidx.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.ui:ui-*:1.0.0-beta08". يتضمّن الإصدار 1.0.0-beta08 هذه الالتزامات.

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

  • يتم استبدال تعداد NestedScrollSource بفئة مضمّنة. (Ie321b، b/187055290)
  • تمت إعادة تسمية FocusManager.clearFocus(forcedClear = true) إلى FocusManager.clearFocus(force = true) (Ia0c41)
  • تمت إعادة هيكلة استخدامات التعداد للفئات المضمّنة لتجنّب حدوث مشاكل ذات شمولية عند إضافة عبارات عند إضافة قيم تعداد جديدة. (I2b5eb)
  • إزالة @ExperimentalComposeUiApi من PopupProperties (I01fa6)
  • تم تغيير قيمة "PointerType" من تعداد إلى فئة مضمّنة (If5058).
  • لم تعد خصائص ContentDescription والدلالات النصية قيمًا مفردة بل قوائم. وهذا يمكّن من دمجها كما هي بدلاً من التسلسلات. تم أيضًا توفير واجهات برمجة تطبيقات اختبارية أفضل للاستفادة من هذه التغييرات (Ica6bf، b/184825850)
  • تم إيقاف Modifier.focusModifier() نهائيًا واستبداله بـ Modifier.focusTarget() (I6c860).
  • لم تعُد Modifier.onSizeChanged() وModifier.onGloballyPositioned() دالّة مضمّنة (I727f6، b/186109675).
  • يتم استبدال تعداد KeyboardType بفئة مضمّنة. (I73045، b/187055290)
  • تم استبدال تعداد FocusState بواجهة FocusState (Iccc1a، b/187055290).
  • يتم استبدال تعداد ImeAction بفئة مضمّنة. (I18be5، b/187055290)
  • يتم تحويل PlaceholderVerticalAlign إلى فئة مضمّنة. (If6290)
  • أصبحت TextUnitType الآن فئة مضمّنة. (I4cba9)
  • أصبحت دوال AnnotatedString.withAnnotation الآن MetadataTextApi بدلاً من تجريبية ComposeApi. (I0cd0a)
    • أصبحت الآن دالة إنشاء وحدة TextUnit مع TextUnitType لهذا النوع من "تجريبية TextApi" بدلاً من تجريبية ComposeApi.

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

  • تم إصلاح الخطأ الذي تم طرحه في الإصدار التجريبي 07 الذي كان يؤدي إلى عرض عناصر LazyColumn/Row (العناصر الكسولة/الصف) جزئيًا بعد الانتقال (I8c9ac، b/188566058).
  • الآن سيستفيد detectDragGesures وdetectVerticalGestures وdetectHorizontalGestures من تغيير الموضع تلقائيًا، وليس هناك حاجة إلى استدعاء change.consumePosition Change في عمليات معاودة الاتصال onDrag (I42fc4 وb/185096350 وb/187320697)
  • تم إصلاح تعديلات التخطيط التي توفر خطوط المحاذاة. تم إصلاح خطأ كان يتسبب في عدم إعادة قياس أحد الوالدين أثناء تغيير خطوط المحاذاة لدى الأطفال. (I4401f، b/174315652)
  • تم تغيير Modifier.onGloballyPositioned() لتسجيل إحداثيات هذا المعدِّل في سلسلة التعديل، وليس إحداثيات التنسيق بعد تطبيق جميع مفاتيح التعديل. وهذا يعني أن ترتيب المُعدّلات يؤثر الآن في الإحداثيات التي سيتم إعداد تقارير بها. (Ieb67d، b/177926591)

الإصدار 1.0.0-beta07

18 أيار (مايو) 2021

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta07". يتضمّن الإصدار 1.0.0-beta07 هذه الالتزامات.

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

  • تمت إضافة واجهة ViewRootForInspector للاستخدام في أداة الفحص (Ib70df)
  • يتيح SubcomposeLayoutState الآن ضبط عدد الخانات القابلة لإعادة الاستخدام. سيحافظ التنسيق على ما يصل إلى خانات العدد هذه نشطة بدلاً من التخلص منها لإعادة استخدام هذه الخانة في المرة القادمة التي نحتاج فيها إلى خانة جديدة (Ieb981)
  • يتم استبدال تعداد KeyEventType بفئة مضمّنة. (Id670a، b/187055290)
  • يتم استبدال تعداد FocusDirection بفئة مضمّنة. (Ib6d03، b/187055290، b/184086802)
  • تقدّم هذه الخدمة إمكانية رفع حالة SubcomposeLayout التي تتيح لك إنشاء المحتوى مسبقًا في رقم تعريف متطلّب، ما قد يجعل إجراء المقياس التالي أسرع. عندما نحاول الإنشاء الفرعي باستخدام رقم تعريف الخانة المحدّد في المرة القادمة، لن تكون هناك حاجة إلى أي تكوين. (I42580، b/184940225)
  • تمت إضافة مؤشر تحديد المقطع (Iff80d، وb/183408447)
  • تمت إزالة واجهات برمجة التطبيقات غير المستخدمة ذات الصلة بدعم Layout Inspector. (I2ac78)

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

  • سيحافظ الآن العمود الكسول/الصف على ما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (وليسان تم التخلص منهما) حتى في حال الانتقال للخارج. ويسمح هذا للمكون بإعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد مما يحسن أداء التمرير. (Ie5555)
  • سيتم تطبيق الإجراءَين TextGeomerticTransform وTextDecoration في AnnotatedString كما هو موضَّح. (I61900، b/184760917)

الإصدار 1.0.0-beta06

5 أيار (مايو) 2021

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta06". يتضمّن الإصدار 1.0.0-beta06 هذه الالتزامات.

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

  • حل التعارض باستخدام إيماءة التنقّل (I1145e)
  • @ComposeCompilerApi لم يعُد @RequiresOptIn (Iab690)
  • تمت إضافة واجهات برمجة تطبيقات AccessibilityInfo وCOItemInfo API التي تتيحان وضع علامة على المجموعة وعناصرها الخاصة بخدمات تسهيل الاستخدام (Id54ef، b/180479017).
  • تمت إضافة SemanticsActions.ScrollToIndex للانتقال إلى قائمة تضم العناصر المفهرَسة إلى العنصر الذي يحتوي على فهرس معيّن، وSemanticsProperties.IndexForKey للحصول على فهرس العنصر في قائمة تتضمن العناصر المرتبطة بمفاتيح. يتم تنفيذ كلا الإجراءين من خلال LazyList.
    • تمت إضافة SemanticsNodeInteraction.performScrollToIndex الذي يمرّر القائمة إلى الفهرس المحدّد، وSemanticsNodeInteraction.performScrollToKey الذي يمرّر القائمة إلى العنصر باستخدام المفتاح المحدّد. (I4fe63 وb/178483889 وb/161584524)
  • تمت إضافة ownerViewId إلى GraphicLayerInfo (I19f62)
  • تمت إضافة أحمال Font() لتحميل الخطوط من الأصول وFile وFileDescriptor (I5d382)
  • تمت إضافة واجهة برمجة التطبيقات Accessibility API error التي تتيح وضع علامة على عقدة تحتوي على إدخال غير صالح (I12997 وb/180584804 وb/182142737).
  • تمت إضافة أحمال Font() الزائدة لتحميل الخطوط من الأصول وFile وFileDescriptor (I43007)
  • تحفظ AnnotatedString الدعم في TextFieldValue.Saver. تمت إضافة دوال addTtsAnnotation وwithAnnotation إلى AnnotatedString.Builder (I8cbdc, b/178446304)
  • تمت إضافة دالة إنشائية TextUnit TextUnit(value: Float, type: TextUnitType) (I7ecce، b/178446304)

الإصدار 1.0.0-beta05

21 نيسان (أبريل) 2021

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta05". يتضمّن الإصدار 1.0.0-beta05 هذه الالتزامات.

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

  • تمت إضافة FocusManager.moveFocus(In) وFocusManager.moveFocus(Out) التجريبيتين (Ic5534، b/183746743).
  • تمت إضافة واجهة برمجة تطبيقات performTextInputSelection التجريبية (I2dcbb، b/178510628)
  • تم إيقاف واجهة InputEventCallback نهائيًا. ولم يكن من الممكن استخدام الواجهة في أي واجهة برمجة تطبيقات عامة، ولم يكن هناك استخدام لها في الرمز. (I34a02، b/184003208)
  • دالة TextLayoutResult/createTextLayoutResult متوقفة نهائيًا. إنها وظيفة عامة غير مستخدمة تمت إضافتها للاختبار. لا تؤدي الدالة أي شيء قابل للاستخدام في Compose text APIs. تم إيقاف الدالة الآن وستتم إزالتها لاحقًا. (I80413)

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

  • تم إصلاح إجراءات التمرير حول إمكانية الوصول في عناصر ACTION_SCROLL_FORWARD وACTION_SCROLL_BACKWARD وaccessibilityActionScrollLeft وaccessibilityActionScrollUp وaccessibilityActionScrollRight وaccessibilityActionScrollDown. وبدلاً من التمرير إلى نهاية المحتوى القابل للتمرير، سيتم التمرير الآن بشاشة واحدة في الاتجاه المحدد. (Ieccb0)
  • إنّ ملفات AndroidManifest من ui-test-manifest وui-Tooling-data متوافقة الآن مع نظام التشغيل Android 12 (I6f9de، b/184718994).

الإصدار 1.0.0-beta04

7 نيسان (أبريل) 2021

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta04". يتضمّن الإصدار 1.0.0-beta04 هذه الالتزامات.

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

  • إعادة تسمية hideSoftwareKeyboard وshowSoftwareKeyboard في SoftwareKeyboardController إلى hide() وshow() على التوالي.
    • قدِّم واجهة ProductionLocal الكاملة لـ LocalSoftwareKeyboardController، مع السماح بتعيينها (مفيدة بشكلٍ خاص في الاختبارات) (I579a6)
  • تمت إضافة واجهة برمجة التطبيقات الخاصة بميزات تسهيل الاستخدام في منطقة LiveRegion. إذا تم وضع علامة على العقدة بأنّها منطقة نشطة، ستُعلِم خدمات تسهيل الاستخدام المستخدم تلقائيًا بالتغييرات التي يتم إجراؤها (Idcf6f، b/172590946)
  • تم طرح ميزة TextOverflow.visible. (Ic8f89)

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

  • تم إصلاح المشكلة التي كانت تؤدي إلى وضع عناصر LazyColumn/LazyRow على الحواف بشكل غير صحيح بعد الانتقال السريع (Ie4d13، b/183877420).
  • تزيل ميزة AndroidViewBinding الآن بشكل صحيح الأجزاء المنتفخة من خلال FragmentContainerView عند إزالة AndroidViewBinding من تسلسل الإنشاء. (Ib0248، b/179915946)
  • يعمل AndroidViewBinding الآن بشكل صحيح على دمج الأجزاء المنتفخة عبر FragmentContainerView عندما تكون ComposeView ضمن Fragment، ما يؤدي إلى إصلاح المشاكل المتعلّقة بحفظ هذه الأجزاء واستعادتها. (I70eb0، b/179915946)
  • تعتمد ميزة Compose View مؤلفing الآن على الجزء 1.3.2، وأصبح يتم الآن عرض الأجزاء المضخّمة من خلال FragmentContainerView بشكل منتظم بعد تغيير الإعدادات. (I0743d، b/179915946)

الإصدار 1.0.0-beta03

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta03". يتضمّن الإصدار 1.0.0-beta03 هذه الالتزامات.

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

  • التحقق المؤجل من تبعيات ViewTree لـ ComposeView (I8dbbf، b/182466548)
  • تمت إضافة المَعلمتَين startX/endX وstartY/endY الاختياريتَين إلى الدوال swipeUp/swipeDown/swipeLeft/swipeRight في GestureScope. (I49e2d، b/182063305)

الإصدار 1.0.0-beta02

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta02". يتضمّن الإصدار 1.0.0-beta02 هذه الالتزامات.

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

  • تمت إضافة واجهة برمجة تطبيقات محلية جديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController لتحلّ محلّ واجهة SoftwareKeyboardController السابقة في TextField. (I5951e، b/168778053)
  • تمت إضافة واجهة برمجة تطبيقات محلية جديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController لتحلّ محلّ واجهة SoftwareKeyboardController السابقة في TextField. (I84472، b/168778053)
  • تمت إزالة عناصر SemanticsMatcher التالية:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • تم وضع علامة على SemanticsMatchers التالي باعتباره @BETATestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • تمت إضافة أنواع SemanticsMatcher التالية:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

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

  • فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29، b/174531520)
  • لم تعُد "androidx.compose.ui:ui" تعتمد على AppCompat أو Fragment. إذا كنت تستخدم ComposeView في تطبيقك، وكنت تستخدم Fragment و/أو AppCompat، تأكّد من استخدام AppCompat الإصدار 1.3 أو أحدث / الإصدار 1.3 والإصدارات الأحدث من Fragment، فهذه الإصدارات لازمة لضبط مراحل نشاط المستخدمين وحفظ الحالات المطلوبة لتطبيق ComposeView بشكلٍ صحيح. (I1d6fa، b/161814404)
  • إصلاح rememberSaveable { mutableStateOf(0) } المعطّلة عند استخدامها داخل وجهة لإنشاء التنقّل (I1312b وb/180042685 وb/180701630)
  • تمت إضافة واجهة برمجة تطبيقات محلية جديدة للمقطوعة الموسيقية LocalSoftwareKeyboardController لتحلّ محلّ واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)
  • تم إصلاح NoSuchElementException النادر في ComposeRootRegistry's tearDownRegistry() (Iddce1)

الإصدار 1.0.0-beta01

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-beta01". يتضمّن الإصدار 1.0.0-beta01 هذه الالتزامات.

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

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

  • تمت إضافة onStart إلى العنوان detectDragGestures (I67269، b/179995594)
  • لم تعد مُعدِّلات تغيير الحجم مع القيم الأساسية تجريبية. (I15744)
  • تمت إعادة تسمية MeasurementBlocks إلى 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)
  • إضافة الواجهة AccessibilityMananger وLocalAccessibilityMananger في ProductionLocals (I53520)
  • تمت إزالة طرق LayoutCoordinates المتوقفة نهائيًا، استخدِم الدالة بدلاً من خاصية positionInParent وboundsInParent (I580ed وb/169874631 وb/175142755).
  • الأسماء المستعارة التي تم استبدالها بأنواع أساسية:
    • تغيّر اسم ColorStop ليصبح الآن Pair<Float, Color>.
    • تم تغيير اسم SpanStyleRange إلى "AnnotatedString.Range" .
    • تغيّر اسم ParagraphStyleRange ليصبح الآن AnnotatedString.Range<ParagraphStyle>.
    • تغيّر اسم StringAnnotation ليصبح الآن AnnotatedString.Range<String>.
    • (I8dd1a)
  • تم إنشاء TextInputSession جديد لجلسات الإدخال من مكونات نصية منخفضة المستوى مثل CoreTextField. (I8817f، b/177662148)
  • تعرض ميزة "ableable" الآن MeasurementSize الذي يمثل الحجم الذي تم قياسه من خلال التخطيط الفرعي. قد لا يلتزم هذا الحجم بقيود القياس. (Ib2729 وb/172560206 وb/172338608)
  • إضافة عنصر تعديل selectGroup الذي يسمح بوضع علامة على مجموعة علامات التبويب أو أزرار الاختيار لأغراض تسهيل الاستخدام (Ie5c29)
  • أصبح السمة defaultFactory للسمة compositionLocalOf وstaticCompositionLocalOf مطلوبة الآن بدلاً من السمة الاختيارية.

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

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

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

  • تمت إزالة الطرق المتوقّفة نهائيًا من وحدات واجهة المستخدم (I646f6)

  • تمت إعادة تسمية مفاتيح تعديل الحجم. تمت إعادة تسمية Modifier.width/height/size إلى required width/requiredHeight/requiredSize. تمت إعادة تسمية Modifier.Favorite توفّرها/FavoriteHeight/FavoriteSize إلى العرض/الارتفاع/الحجم. (I5b414)

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

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

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

  • أصبحت imageResource وectResources الآن دالتي إضافية على رفيقتَي ImageBitmap وImageVector على التوالي. تم حذف load{Image,Vector,Font}Resource دالة. (I89130)

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

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

    • لم تعُد الدالة الإنشائية للمقطوعة الموسيقية تقبل مَعلمة رئيسية، وتم إيقافها نهائيًا.
    • تم تحويل CurrentsCompositeKeyHash إلى سمة من المستوى الأعلى قابلة للإنشاء بدلاً من دالة المستوى الأعلى القابلة للإنشاء.
    • تم نقل ComposeData وتكوينGroup إلى مساحة الاسم androidx.compose.runtime.Tooling.
    • تم تصميم ComposableLambda كواجهة بدلاً من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
    • تم تصميم ComposableLambdaN كواجهة بدلاً من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
    • تم نقل دالة shortcutsFlow إلى مساحة الاسم androidx.compose.runtime.
    • لم تعُد طريقة الدمج لـ SnapshotMutationPolicy تجريبية.
    • تمت إزالة دالة @TestOnly ذات المستوى الأعلى clearRoots. لم يعد من الضروري.
    • تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعُد ضرورية.
    • تمت إزالة Composer.collectKeySourceInfo. لم يعد من الضروري.
    • تمت إزالة طرق isJoinedKey وjoinKeyLeft وjoinKeyRight. لم تعُد ضرورية.
    • تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. ونظرًا للدلالات الدلالية لفئة الملفات في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي وليس التوافق مع المصدر، لذا من المفترض ألا تكون هناك مشكلة لدى معظم المستخدمين.
    • (I99b7d، b/177245490)
  • تمت إزالة ComponentActivity.setContent() من Compose:ui. يمكنك استخدام النموذج من androidx.activity:activity-compose:1.3.0-alpha01. تمت إزالة viewModel() وLocalViewModelStoreOwner من Compose:ui. استخدم الخيارات من androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

  • تمت إعادة صياغة Modifier.scrollable. وهي تستخدم الآن واجهة Scrollable بدلاً من فئة ScrollableController (I4f5a5 وb/174485541 وb/175294473).

  • تمت إزالة دعم CustomEvens من PointerInputModifier (I02707، b/175294473).

  • SnapshotStateMonitorer لم يعُد تجريبيًا (Id2e6a)

  • تم حذف بعض واجهات برمجة التطبيقات المتوقّفة نهائيًا في السابق (Ice5da، b/178633932).

  • تمت إزالة longPressOptionFilter وDoubleClickOptionFilter. استخدام Modifier.pointerInput مع وظائف المساعدة، مثل recordTapOptions (I2fedf، b/175294473)

  • تمت إزالة حالات استخدام واجهة برمجة التطبيقات String.format في العديد من طرق toString بهدف عدم الاستفادة من String.format داخليًا. (Id1290)

  • تأكيدات dp التي تمت إزالتها (I798d2)

  • تمت إزالة androidx.compose.runtime:runtime-dispatch (I55feb).

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

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

  • يتم تمثيل موضع التمرير في Modifier.verticalScroll()/horizontal Scroll() مع Ints الآن (I81298).

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

  • تمت إضافة دالة مساعِدة تساعدك في ضبط الإجراء نفسه لجميع طلبات معاودة الاتصال ImeAction (I63447، b/179226323).

  • تمت إزالة معاودة الاتصال SoftwareKeyboard من جميع الحقول النصية ليتم استبدالها بواجهة برمجة تطبيقات جديدة قريبًا. (Iae869، b/168778053)

  • لم يعُد FontSpan وFontWeigthStyleSpan مستخدمَين وتمت إزالتهما. (Ie5b56، b/177423444)

  • تم إجراء التغييرات التالية في Material API:

    • تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
    • المَعلمات المُعاد ترتيبها في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات للمَعلمات المطلوبة التي تسبق المَعلمات الاختيارية
    • تم نقل المعلمة icon في Bottom NavigationItem ليكون بعد selected وonClick.
    • تمت إعادة تسمية المعلمة alwaysShowLabels في BottomFAQItem إلى alwaysShowLabel.
    • تمت إعادة تسمية مَعلَمات bodyContent في بعض المكونات لتصبح content فقط.
    • تم إعادة ترتيب المَعلمات في "ButtonDefaults.buttonColors()". يُرجى ملاحظة أنه نظرًا لعدم تغيير نوع المعلمات، لن يؤدي ذلك إلى حدوث خطأ في الرمز، ويُرجى التأكّد من استخدام المعلَمات المسماة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز بالطريقة نفسها كما في السابق.
    • تمت إضافة مَعلمة secondaryVariant إلى darkColors(). عادةً ما يكون هذا اللون هو نفسه اللون secondary في المظهر الداكن، ولكن لتحقيق الاتّساق والمزيد من التخصيص.
    • تمت إزالة ElegationDefaults وanimateElevation() من سطح واجهة برمجة التطبيقات العامة نظرًا لعدم استخدامهما أو فائدتهما بشكل شائع.
    • تمت إعادة التسمية onValueChangeEnd في Slider إلى onValueChangeFinished وجعلها فارغة.
    • تمت إعادة تسمية المعلَمة text في Snackbar إلى content لتحقيق التناسق.
    • تمت إضافة المعلَمة contentPadding إلى DropdownMenuItem للسماح بتخصيص المساحة المتروكة التلقائية وتم جعل content إضافة على RowScope.
    • تمت إعادة تسمية "ModalDrawerLayout" إلى "ModalDrawer".
    • تمت إعادة تسمية "BottomDrawerLayout" إلى "BottomDrawer".
    • (I1cc66)

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

  • تمت إضافة واجهة برمجة التطبيقات لاستخدام موارد MoveVectorDrawable في Compose. استخدِم animatedVectorResource لتحميل ملفّ XML بتنسيق <animated-vector> كملف GIF Vector وتحريكه باستخدام PainterFor (I8ea91)
  • تمت إضافة واجهة برمجة التطبيقات المحلية الجديدة لتركيب LocalSoftwareKeyboardController بدلاً من واجهة SoftwareKeyboardController السابقة في TextField. (I658b6، b/168778053)

الإصدار 1.0.0-alpha12

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-alpha12". يحتوي الإصدار 1.0.0-alpha12 على هذه الالتزامات.

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

  • تمت إزالة ميزة ViewGroups من UiApplier. تمت إزالة عناصر قابلة للإنشاء من نوع emitView المتوقفة نهائيًا. (Ifb214)
  • يتطلب Modifier.pointerInput الآن تذكر المفاتيح للإشارة إلى الوقت الذي يجب فيه إعادة تشغيل الكوروتين لرصد إدخال المؤشر للتبعيات الجديدة. (I849cd)
  • تمت إعادة تسمية مرجع مقطوعة موسيقية إلى رد الأموال (I53fcb).
  • تمّت إعادة تسمية الحدود إلى DpRect (I4b32a).
  • تحديث الاختبار: سيتحقق hasText() من نصوص الإدخال والتصنيف/التلميح/العنصر النائب في الحقل النصي (Iab803)
  • تم نقل viewModel() القابل للإنشاء وLocalViewModelStoreOwner إلى androidx.lifecycle.viewmodel.compose. ستحتاج الآن إلى إضافة تبعية منفصلة androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 لكي تتمكّن من استخدامه. (I7a374)
  • اسمح بتنفيذ إجراء قابل للقيم في AccessibilityAction، وغيِّر تصنيف الإجراء في AccessibilityAction وCustomAccessibilityAction من CharSequence إلى سلسلة (I0dc82).
  • ومن أجل مطابقة اصطلاحات التسمية مع ImageBitmap وImageVector بشكل أفضل، تمت إعادة تسمية ImagePainter إلى BitmapPainter بحيث تصبح مع VectorPainter التوازي. (Iba381، b/174565889)
  • واجهات برمجة تطبيقات أفضل لاختبار السلسلة الفرعية مع سلسلة فرعية الآن كوسيطة (Icbe78)
  • تمت إضافة Modifier.focusOrder() الذي يقبل FocusRequester بدون تحديد ترتيب تركيز مخصّص وهو lambda. يكون هذا الإجراء مفيدًا عندما نحتاج فقط إلى تحديد مرجع وليس ترتيب تركيز مخصّص لعنصر قابل للإنشاء (I4f52a، b/179180978).
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في وحدة androidx.activity:activity-compose. (Icf416)
  • تمت إزالة طرق التدمير وcopy() من عدة فئات نادرًا ما كانت تُستخدم. (I26702، b/178659281)
  • النافذة المنبثقة المنقولة لتكون خاصة بالنظام الأساسي. تمت إعادة تسمية AndroidPopupProperties إلى PopupProperties، وتم نقل isFocusable إلى المعلمة focusable في PopupProperties (Ieeea5).
  • تم نقل مربّع الحوار ليكون مخصّصًا للنظام الأساسي. تمت إعادة تسمية AndroidDialogProperties إلى DialogProperties. (I4ef69، b/179138130)
  • Made LayoutNode داخلي (I8a7b1, b/175103944)
  • تم استبدال Constraints.enforce بـ Constraints.Restrict. (I8b8ea)
  • تم إيقاف uploadFontResource نهائيًا. استخدِم fontResource بدلاً من ذلك. تم إيقاف كل من imageResource وloadImageResource وVFontResource وloadVectorResource نهائيًا. استخدم PainterResource بدلاً من ذلك. (I6b809)
  • لأسباب تتعلق بالأداء، تستخدم دلالات ScrollAxisRange الآن قيم lambdas التي تعرض قيم Floats بدلاً من قيم Float المباشرة. (If4a35، b/178657186)
  • تمت إضافة دلالات EditableText لوضع علامة على نص الإدخال القابل للتعديل في حقل النص لإمكانية الوصول وطرق الاختبار المقابلة للتحقق من الدلالات (I8e07a)
  • Made OwnerLayer/OwnerScope/OwnerSnapshotMonitorer داخليًا (I4ffaf, b/175103944)
  • تمت إعادة تسمية toIntPx() إلى roundToPx(). (I9b7e4، b/173502290)
  • تمت إعادة تسمية IntBounds إلى IntRect وتم تحسين واجهة برمجة التطبيقات. (I1f6ff)
  • تم تحديث Snapshot API لتكون أكثر اتساقًا مع إرشادات واجهة برمجة التطبيقات وإخفاء فئات التنفيذ الداخلي من واجهة برمجة التطبيقات العامة. (Id9e32)
  • تمت إضافة إجراءات دلالات التوسيع والتصغير. تمت إضافة عرض expand وكِنتصف في ModalBottomSheetState (Ib5064)
  • تم إيقاف Modifier.drag المحدَّدFilter نهائيًا. يمكنك استخدام Modifier.pointerInput { detectDragGestures (...)} كبديل. بدلاً من ذلك، استخدِم Modifier.draggable لسحب المحور الواحد (I0ba93، b/175294473).
  • تمت إعادة تسمية "وضع الاستراحة" ليطابق إعادة تسمية "وضع الاستراحة" -> ProductionLocal. في السابق، كان يُطلق على هذه الميزة اسم " ننصحك بإدراج اسم البيئة المحيطة"، وأصبح اسم ProductionLocals يُسمّى LocalFoo. (I2d55d)
  • تمت الآن إزالة BaseTextField المتوقف نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I71368)
  • تم نقل الاختيار إلى الأساس. (I7892b)
  • على غرار الطريقة التي أزلنا بها state { 0 } عنصر قابل للإنشاء، ونسعى الآن إلى الترويج للاستخدام مثل remember { mutableStateOf(0) }، سنزيل savedInstanceState { 0 } القابل للإنشاء. يجب استخدام rememberSaveable { mutableStateOf(0) } بدلاً من ذلك، وسيتم الحفظ واستعادتها تلقائيًا إذا كان النوع المستخدَم داخل MutableState قد تم تخزينه في الحزمة. إذا كنت في السابق تمرِّر كائن توفير مخصّص، عليك الآن استخدام حمل زائد جديد من عناصر sortables التي تحتوي على مَعلمة stateSaver. سيظهر الاستخدام على النحو التالي: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26، b/177338004)
  • إضافة دلالات كلمة المرور لإمكانية الوصول (I231ce)
  • تمت إضافة ProgressBarRangeInfo.Indeterminate لوضع علامة على أشرطة التقدّم غير المحدَّدة لإمكانية الوصول (I6fe05).
  • تم إيقاف أدوات emptyContent() و(@Composable () -> Unit).orEmpty() نهائيًا لأنّه لم يعُد لها أي تأثير أو قيمة إيجابية في الأداء (I0484d).
  • لم يعُد snapshotFlow وwithMutableSnapshot تجريبيَين (I6a45f)
  • يمكن الآن إغلاق عمليات إعادة الإنشاء. ستستمر إعادة الإنشاءات المغلقة حتى يكتمل تكوين الكوروتينات الثانوية. تمت إعادة تسمية Recomposer.shutDown لإلغاء المقارنة مع علامة الإغلاق. (Ib6d76)
  • تمّت إعادة تسمية UiSavedStateRegistry إلى SaveableStateRegistry، وأُعيدت تسمية ampUiSavedStateRegistry إلى ننصحك باستبداله بـ ampSaveableStateRegistry، وتم نقل كليهما إلى حزمة androidx.compose.runtime.saveable. (I30224)
  • تمت إعادة تسمية العنصر androidx:compose:runtime:runtime-saved-instance-state إلى androidx:compose:runtime:runtime-saveable (I6dcac)
  • يتم حذف العديد من واجهات برمجة التطبيقات المتوقّفة منذ فترة طويلة في حزمة واجهة المستخدم. (I2f2dc)
  • تم الآن إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)
  • Outline.* لم تعُد فئات بيانات (I4879e، b/178001427)
  • تمت إزالة "view.captureToImage()" بدون أي بديل. (I7fcd2)
  • تم تقديم واجهة برمجة تطبيقات ColorMatrix، وتُستخدم لتعديل قيم rgb للمحتوى المصدر. (Ica1e8)
  • أضف معلمة schemaDirection إلى createOutline في الشكل. ويسمح هذا بإنشاء أشكال تراعي اتجاه التخطيط. (I57c20، b/152756983)
  • تم إيقاف onImeActionPerformed نهائيًا. يُرجى استخدام KeyboardActions بدلاً من ذلك (If0bbd ، b/179071523).
  • تم تقديم عنصر سياق الكوروتين InfiniteAnimationPolicy الذي سيتم تطبيقه في الصور المتحركة اللانهائية. وفقًا للإعدادات التلقائية، لا يتم تثبيت أي سياسة إلا عند إجراء اختبارات باستخدام ComposeTestRule. (I50ec4، b/151940543)
  • تمت إزالة canDrag من Modifier.scrollable. (Id66e7، b/175294473)
  • تمت إعادة تسمية LayoutCoordinates.parentCoordinates إلى LayoutCoordinates.parentLayoutCoordinates للسماح بخاصيةparentCoordinates جديدة. توفر الخاصيةparentCoordinates الآن LayoutCoordintes لمعدل التعديل الرئيسي. سيؤدي هذا إلى حالة استخدام أكثر اكتمالاً لـ onSizeChanged() وonGloballyPositioned() (Idfbfd, b/177926591)
  • تم إيقاف clickOptionFilter وDoubleTapOptionFilter وlongPressOptionFilter و pressNodeaitonActivityFilter نهائيًا. استخدِم Modifier.clickable أو "Modifier.pointerInput" مع وظيفة "detectTapOptions" بدلاً من ذلك. (I6baf9، b/175294473)
  • تمت إزالة أمر UnregisterProvider الخاص بـ SaveableStateRegistry. بدلاً من الدالة recordProvider() تعرض الآن الكائن SaveableStateRegistry.Entry الذي يمكنك استخدامه لإلغاء التسجيل (Ic4274، b/178583739)
  • تمت إعادة تسمية renameSavedInstanceState() إلى {8/}Saveable() وتم نقلها إلى androidx.compose.runtime.saveable package. (I1366e، b/177338004)
  • تمت إزالة CoreText وCoreTextField من واجهة برمجة التطبيقات المتاحة للجميع.
    • تمت إزالة التحميل الزائد لحاويات SelectionContainer المتوقفة نهائيًا.
    • (I99c19)
  • أصبحت الاختبارات التي يتم فيها استخدام Compose في التسلسلات الهرمية التي تتم إضافتها أو إزالتها مباشرةً إلى WindowManager أكثر ثباتًا الآن. (Ie81ed، b/175765614)
  • تمت إزالة Recomposer.current(). [Abstract]تتطلب ميزة ComposeView الآن وبشكل تلقائي استخدام أدوات إعادة الإنشاء التي يتم إنشاؤها بشكل كسول والتي يتم إنشاؤها على نطاق النافذة والمستندة إلى ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة الإنشاء واستخدام علامات الرسوم المتحركة المستندة إلى FrameNanos مؤقتًا أثناء إيقاف دورة حياة المضيف. (I38e11)
  • توفّر Recomposer.runningRecomposers الآن حالة عامة على مستوى StateFlow من معلومات RecomposerInfo المخصّصة للقراءة فقط حول حالة عملية التركيب مستمرة خلال هذه العملية. نفضّل واجهة برمجة التطبيقات هذه على Recomposer.current() ، والتي تم إيقافها نهائيًا. (If8ebe)
  • تم نقل Saver وlistSaver() وmapSaver() والحفظ التلقائي من androidx.compose.runtime.savedinstancestate إلى androidx.compose.runtime.saveable (I77fe6)
  • تقبل الأمر (EditCommands) AnnotatedString (سلسلة التعليقات التوضيحية). ومع ذلك، يُرجى العِلم بأنّ هذا الإجراء مخصّص لتغيير واجهة برمجة التطبيقات فقط، ولم يتم بعد تنفيذ تعديل النصوص متعددة الأنماط. (I4c3ea)
  • تمت إزالة مدة التشغيل والمدة. (Ib9bf4، b/177420019)
  • تم نقل EntertainmentData.asTree() وواجهات برمجة التطبيقات ذات الصلة إلى وحدة منفصلة لبيانات ui-toolsing-data ووضع علامة عليها كتجريبية (Ic95b8)
  • تمت إعادة تسمية المعلَمات في RounderCornerShape وCutCornerShape وCornerBasedShape من الاسم الأيسر/الأيمن إلى البداية/النهاية من أجل دعم النسخ المطابق التلقائي للشكل في اتجاه الشاشة الكاملة. تم تقديم AbsoluteRounderCornerShape وAbsoluteCutCornerShape في الحالات التي لا يكون فيها النسخ المطابق التلقائي مطلوبًا. (I61040، b/152756983)
  • تمت إعادة هيكلة واجهة برمجة التطبيقات التي يستهدفها المكون الإضافي Compose إلى واجهة بدلاً من فئة ملموسة. لم تعد الواجهة تستخدم معلمة نوع بعد الآن.

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

  • إزالة الدالة StringBuilder.deleteAt العامة بدون قصد (Id6ed9)

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

  • تستضيف الآن ComposeViews في العروض الهرمية، التي تشكّل عنصرًا ثانويًا لتكوين آخر، تركيبات فرعية من أجدادها (I92883)
  • تم تحديث واجهة برمجة التطبيقات imageFromResource (واجهة برمجة التطبيقات) لإنشاء الموارد لإعادة استخدام ذاكرة التخزين المؤقت القابلة للرسم للموارد عند تحميل كائنات ImageBitmap. (If3627، b/178751994)

الإصدار 1.0.0-alpha11

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-alpha11". يحتوي الإصدار 1.0.0-alpha11 على هذه الالتزامات.

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

  • تمت إعادة صياغة WithConstraints باسم BoxWithConstraints وتم نقلها إلى Foundation.layout. (I9420b، b/173387208)
  • تم إيقاف Key.DPadUp نهائيًا. استخدِم Key.DirectionUp بدلاً من ذلك. (Iab335، b/177954892)
  • واجهة المالك من الآن فصاعدًا وعلى المستوى الداخلي (If8e35)
  • تمت إضافة واجهة برمجة التطبيقات FocusManager.moveFocus() لنقل التركيز آليًا. (I045cb، b/177681839)
  • تغيير PopupPositionProvider لاستخدام الإحداثيات ذات الصلة بالنافذة، وليس الإحداثيات الشاملة لإعادة تسمية الأصلGlobalBounds إلى anchorBounds، وتغيير الوظيفة windowGlobalBounds لتكون windowSize: IntSize (I2994a)
  • سيتم استبدال المدة ومدة التشغيل بالمللي ثانية الطويلة، وستتم إزالة هذه الخطوة من اعتمادية إدخال المؤشر في تلك الفئات. (Ia33b2 وb/175142755 وb/177420019)
  • تمت إضافة ampSavedStateRegistryOwner بشكل مشابه مع مالكَي ampLifecycleOwner و""،ampViewModelStoreOwner" الحاليان (I9a3e8، b/176756365).
  • تم تحديث واجهة برمجة التطبيقات للرسومات المتجهة لدعم تحليل التلوين المطبق على جذر الرسومات المتجهة. (Id9d53، b/177210509)
  • تمت إضافة toolType إلى PointerInputChange لتمييز الأجهزة (Iac787، b/175142755).
  • تمت إعادة تسمية ampWindowManager إلى أمبير أمبيانت و معلومات (I2686a، b/177084714، b/177084983).
  • تم إيقاف طرق الإحداثيات العالمية وإنشاء طرق إحداثيات جديدة مستندة إلى النافذة. (Iee284)
  • تمت إضافة أداة Modifier.toolsingGraphicsLayer التي تضيف معدِّل طبقة الرسومات عند تفعيل الفحص. (I315df)
  • تم تصنيف FocusRequester.createRefs الآن على أنها تجريبية لأنه قد تتغير. (I2d898، b/177000821)
  • تمت إعادة تسمية SemanticsProperty تلبيةr.hidden إلى invisibleToUser، وتم وضع علامة عليه تشير إلى @BETAComposeUiApi. تمت إعادة تسمية AccessibilityRangeInfo إلى ProgressBarRangeInfo. تمت إعادة تسمية StateDescriptionRange إلىPROGRESSBarRangeInfo. تمت إعادة تسمية Accessibility ScrollState إلى ScrollAxisRange. تمت إعادة تسمية horizontalAccessibilityScrollState إلى horizontal ScrollAxisRange. تمت إعادة تسمية verticalAccessibilityScrollState إلى العمود العموديScrollAxisRange. (Id3148)
  • تمت إزالة PointerInputData وتعديل PointerInputChange لمنحه جميع حقول PointerInputData. تم جعل PointerInputEvent وPointerInputEventData داخليًا بسبب عدم استخدامهما في أي واجهة برمجة تطبيقات عامة. (Ifff97، b/175142755)
  • يستخدم GraphicsLayerScope الكثافة المحدث لدعم عمليات تحويل وحدات البكسل غير المرتبطة بالكثافة إلى وحدات بكسل أولية. (Ied528، b/176819695)
  • تم تحديث واجهة برمجة تطبيقات Matrix لاتّباع الترتيب الرئيسي للصف وتوفير ثوابت الفهرس للمساعدة في الإحالات الناجحة بين تمثيلات المصفوفة المختلفة لمطابقة منطق الإحالة الناجحة لإطار العمل بين SkMatrix وMatrix4 داخليًا. (I432e6)
  • تمت إزالة طرق monotonicFrameAnimationClockOf التجريبية (Ib753f، b/170708374)
  • انقل String.fintPrecedingBreak وString.fingFollowingBreak إلى النوع الداخلي. (I657c4)
  • تمت إزالة androidx.compose.ui.util.isSurrogateزوج من واجهة برمجة التطبيقات العامة. (Ia9494)
  • تمت إعادة تسمية TransformText.ConvertedText ليصبح TransformText.text
    • لم تعُد TransformText فئة بيانات (Ie672a).
  • تمت إزالة "data class" من الصفوف التالية:
    • محتوى النص المضمّن
    • LocaleList (I605c7)
  • لم تعُد الفئات التالية فئات بيانات:
    • سلسلة تعليقات توضيحية
    • نمط الفقرة
    • نمط ممتد
    • نمط النص
    • عرض الخط
    • زخرفة النص
    • تحويل النص الهندسي
    • فهرس النص
    • نتيجة تخطيط النص
    • TextLayoutInput (Iaff99)
  • تم تغيير "التحويل المرئي" ليكون واجهة وظيفية (I3bba4)
  • تمت إضافة نوع معلمة مرجع الدالة (I5e1bd)
  • إضافة حدود تم تحويلها إلى InspectorNode (Ice42f)

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

  • تم إيقاف onCommit وonDisposition وonActive لتحلّ محلّها واجهات SideEffect وDisableEffect API (If760e).
  • التغييرات على الوظائف المصنعة للخط/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)

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

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

  • وكان OnSizeChanged يُبلغ عن حجم محتوى التنسيق. وهي الآن تبلغ عن الحجم في موضعها داخل سلسلة المُعدّل. (I36b78، b/177562900)

  • تم إيقاف واجهة برمجة التطبيقات emit() وكل التحميلات الزائدة وإعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن باسم مختلف فقط لكي تتبع اصطلاحات التسمية في Compose (I4137b).

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

    • تمت إزالة initial من معلَمات دالة إنشاء واجهة EditorBuffer. (I326d5)
  • تم الآن إيقاف in مؤخرًا وchangeReference() لتحلّ محلّهما currentRecomposeScope، وتذكُّرمراقبة التركيب على التوالي. (I583a8)

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

  • يحلّ جهاز تَورِيفْ ذِكْرِ قَائِمَة حِفْظْ لِبَدْءِ التَّرْجَمَة التِّلْقَائِيَّة لِتَشْغِيلِ الرَّسَائِلْ وَهْوَ يَحْتَوِي عَلَى عَلَامَةْ تَشْغِيلْLifecycleMonitorer التَّرْجَمَة الَّتِي تَمَّ قَفْلُهَا.

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

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

  • تم إيقاف العمليات الحسابية بين وحدتين نصيتين أو أكثر. يتم إيقاف الدالتَين TextUnit.Sp وTextUnit.Em المتوقفَين نهائيًا عند تفضيل وظائف الإضافات مثل Int.sp وInt.em. (I48369)

  • الموارد في المكتبات التي لا تتضمن موارد عامة تم الإعلان عنها بشكل صريح (مثل عبر public.xml) أصبحت الآن خاصة بشكل تلقائي. (Ia1dcc، b/170882230)

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

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

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

    • يُرجى استخدام ImeAction.Default بدلاً من ImeAction.Unspecified (Ie1bcc).
  • الاستفادة من TestCoroutineDispatcher في الاختبار (I532b6)

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

  • تم إيقاف النقل المستند إلى TransitionDefinition نهائيًا (I0ac57)

  • تمت إزالة TextUnitType.Inherited. يُرجى استخدام TextUnitType.Unspecified بدلاً منه. (I9ff64)

الإصدار 1.0.0-alpha10

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-alpha10". يحتوي الإصدار 1.0.0-alpha10 على هذه الالتزامات.

تغيير جذري

  • تتيح إعادة هيكلة واجهة برمجة التطبيقات الداخلية لبرنامج تجميع البيانات@Composable

    هذا تغيير في السلوك قد يؤثر على التعليمات البرمجية للتطبيق لأن العُقد لم تعد متاحة من واجهات برمجة التطبيقات الداخلية والتجريبية إلا بعد تطبيق التغييرات. ويمكن عادةً حل ذلك من خلال وضع الرمز البرمجي مع هذه التبعيات في عنصر SideEffect قابل للإنشاء لتأجيل تنفيذ الرمز إلى أن يتم إنشاء العُقد وإعدادها. (I018da)

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

  • تمت إضافة Modifier.focusOrder()
  • تمت إزالة استخدام shoppingMonitorer المتوقف نهائيًا onFocusChanged أو onFocusEvent بدلاً من ذلك (I3ecb9، b/175156387)
  • تغييرات واجهة برمجة التطبيقات EditOperations API
    • تم تغيير اسم EditOperation إلى اسم "EditCommand"
    • تمت إضافة لاحقة Command لعمليات التنفيذ الملموسة في EditOperation
    • لم تعُد 'EditCommand's فئات بيانات
    • تمت إعادة تسمية دالة EditOperation.process لتكون "ApplyTo"
    • تم تغيير اسم InEventListener إلى EnterEventCallback
    • (I0a366)
  • تمت إزالة PxSquared وPxCubed وPxInverse غير المستخدَم. تم تغيير Size.center() ليصبح خاصية. (I973f7)
  • ستتمكن وحدة ui-test الآن من إعداد عملية إنشاء أدوات إعادة الإنشاء لواجهات المستخدم الخاضعة للاختبار (Ibebd8)
  • السرعة المعدلة للحصول على أجزاء مكونة وعمليات رياضية. (Ib0447)
  • تمت إعادة تسميته @ExperimentalTesting إلى @ExperimentalTestApi للتوافق مع التعليقات التوضيحية التجريبية المشابهة لواجهة برمجة التطبيقات (Ia4502، b/171464963)
  • تمت إعادة تسمية Color.useOrElse() إلى Color.takeOrElse() (Ifdcf5)
  • تمت إزالة الفئات DpInverse وDpSquared وDpCubed غير المستخدمة. (I4d62b)
  • تمت إعادة تسمية Constraints#satisfiedBy إلى isSatisfiedBy. (I9cf5c)
  • أضِف معاودة الاتصال لإعلام المالك عند تغيير حدود تنسيق عقدة. (I72fd1)
  • تمت إضافة isSpecified وisUnspecified وuseOrElse للفئات المضمّنة ذات الصلة الثابتة غير المحدَّدة. (I93f7b، b/174310811)
  • توسيع [Abstract]واجهة برمجة تطبيقات ComposeView للسماح بإعادة تدوير طرق العرض المستندة إلى Compose والتخلص من المقطوعات الموسيقية لإعادة إنشائها لاحقًا إضافة واجهات برمجة التطبيقات (API) لتثبيت واكتشاف "أدوات إعادة الإنشاء" و"مراجع المقطوعات الموسيقية" على مستوى النافذة لإنشاء مقطوعات موسيقية فرعية

    يمكنك إضافة ViewChooseStrategy لتكوين استراتيجية التخلص من التركيبة لدى [Abstract]ComposeViews؛ حيث يتم التخلص من السلوك الافتراضي عند فصل النوافذ. (I860ab)

  • تمت إزالة Any.identityHashCode() من واجهة برمجة التطبيقات العامة (I025d7)

  • تمت إزالة toStringAsFixed API لصالح استخدام String.format بدلاً من ذلك مباشرةً. (IBA6b)

  • إضافة مفتاح تبديل إلى Foundation Strings.kt (I4a5b7، b/172366489)

  • تم نقل المعلمةNativeClass إلى وحدة واجهة المستخدم وجعلها داخلية. تم تحديث استخدامات originalClass في عمليات تنفيذ تساوي استخدام "is MyClass" بدلاً من ذلك. (I4f734)

  • تم إيقاف Modifier.focus() وModifier.focusRequester() نهائيًا. استخدِم Modifier.focusModifier() وModifier.focusReference() بدلاً منها (I75a48 وb/175160751 وb/175160532 وb/175077829)

  • تم تقديم SelectionRegistrar.notifySelectableChange لإشعار بالتعديلات القابلة للاختيار إلى SelectionManager. (I6ff30، b/173215242)

  • تم تقديم خاصية Outline.bounds للحصول على مستطيل الحدود لعمليات تنفيذ المخططات المختلفة. (I16e74، b/175093504)

  • تم إيقاف TestUiDispatcher نهائيًا. استخدِم Dispatchers.Main بدلاً من ذلك (Ic171f، b/175385255)

  • ImeOptions وKeyboardOptions لا تعد فئة بيانات (I3c898، b/168684531)

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

    • تمت إعادة تسمية OffsetMap إلى OffsetMapping
    • تمت إعادة تسمية OffsetMapping.identity OffsetMobile إلى وظيفة OffsetMapping.Identity.
    • لم يعد تحويل كلمة المرور من فئة البيانات
    • تم نقل OffsetMapping إلى ملف خاص بها
    • (I0bdf3)
  • تمت إعادة تسمية الموضع إلى Dp Offset وإزالة getمسافة() (Ib2dfd)

  • تم تغيير المرح Dp.isFinite() إلى val Dp.isFinite (I50e00).

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

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

الإصدار 1.0.0-alpha09

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-alpha09". يحتوي الإصدار 1.0.0-alpha09 على هذه الالتزامات.

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

  • تمت الآن إزالة KeyEvent.Alt المتوقفة نهائيًا. استخدِم KeyEvent.isAltPressed بدلاً من ذلك. (Idd695)
  • تم إيقاف Modifier.keyInputFilter وModifier.previewKeyInputFilter، ويمكنك استخدام Modifier.onKeyEvent وModifier.onPreviewKeyEvent بدلاً من (Idbf1b، b/175156384)
  • تم إيقاف Modifier.focusMonitorer نهائيًا. استخدِم Modifier.onFocusChanged أو Modifier.onFocusEvent بدلاً من ذلك (I30f17 أو b/168511863 أو b/168511484)
  • بالنسبة إلى تعليق واجهات برمجة التطبيقات الخاصة بإدخال المؤشر، تمت إعادة تسمية HandlePointerInputScope إلى AوايPointerEventScope، وإلى handlePointerInput() إلى auePointerEventScope(). (Idf0a1، b/175142755)
  • أصبحت Autofill API الآن واجهة برمجة تطبيقات تجريبية وتتطلب الموافقة (I0a1ec)
  • إضافة تعريفات إتلافية لإنشاء مثيلات FocuSRequester (I35d84، b/174817008)
  • تمت إعادة تسمية AccessibilityLabel إلى contentDescription. تمت إعادة تسمية إمكانية الوصول إلى StateDescription. (I250f2)
  • تمت إزالة الأحداث المخصّصة من تعليق واجهة برمجة التطبيقات لإدخال المؤشر (Ia54d5، b/175142755).
  • تم تقديم العديد من الدوال الجديدة في SelectionRegistrar وأعادت تسمية onPositionChange إلى جانب الإشعاراتPositionChange. (Ifbaf7)
  • المزيد من أعضاء LayoutNode التي وضعنا علامة عليها كـ "داخلي" (I443c6)
  • تم تقديم LayoutInfo لاستخدامها من خلال الأدوات والاختبار (I9b190).
  • AndroidOwner أجرى داخليًا (Ibcad0، b/170296980)
  • تمت إزالة التعليق التوضيحي BETAPointerInput (Ia7a24)
  • تمت إضافة نظام التمرير المتداخل. الرجوع إلى Modifier.nested Scroll للحصول على مزيد من التفاصيل (I36e15، b/162408885)
  • تم إجراء SubcomposeInto(LayoutNode) داخليًا (Id724a)
  • تم تغيير واجهة Applier لتبسيط بناء الأشجار من الأسفل إلى الأعلى بدلاً من البدء من الأعلى إلى الأسفل.

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

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

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

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

  • تمت إضافة الخاصيتين RejectOnBackPress وRejectOnClickexternal إلى AndroidDialogProperties. تتيح هذه الإعدادات عند استدعاء onRejectRequest lambda في مربّع الحوار. (If5e17)

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

  • تمت إضافة Modifier.clearAndSetSemantics لإزالة دلالات التابعة وإعداد دلالات جديدة. (I277ca)

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

  • تم تقديم واجهة برمجة تطبيقات رسومات PathEffect لتوفير أنماط مختلفة للأشكال التي تم ضغطها. تم إيقاف استخدام NativePathEffect لصالح التنفيذ المتوقع/الفعلي لـ PathEffect. (I5e976، b/171072166)

  • تمت إضافة واجهات IdlingResource إلى Compose، وكنوع آخر متوافق من Compose لموارد عدم النشاط في Espresso. يمكن تسجيلهم وإلغاء تسجيلهم من خلال ComposeTestRules (I433f3)

  • تمت إزالة التسجيل العام (un) لـ ComposeIdlingResource والتسجيل العام (un) للساعات في ComposeIdlingResource (I32660)

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

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

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

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

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

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

  • BuildCompat.isAtLeastR المتوقف نهائيًا (Idb37e)

  • تمت إضافة دالة المصنع BuildAnnotatedString من أجل إنشاء AnnotatedString. تم إيقاف دالة إنشاء annotatedString. (Idfe0b)

  • تمت إزالة طرق الإضافات على Float وDouble لتحويل القيم إلى وحدات راديان. تم نقلها إلى دالة خاصة ضمن تنفيذ PathParser الذي كان المكان الوحيد الذي تم استخدامها فيه (I25f52)

الإصدار 1.0.0-alpha08

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

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

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

  • إضافة الإجراء الدلالي "إغلاق" (I2b706)
  • تم نقل واجهات برمجة تطبيقات DrawModifier من حزمة androidx.compose.ui إلى حزمة androidx.compose.ui.Draw. تم إنشاء ملف DrawModifier Discovery.kt لتضمين طرق الكتابة البديلة/المساعد للمساعدة في عملية الترحيل من واجهات برمجة التطبيقات التي تم إيقافها نهائيًا. (Id6044، b/173834241)
  • تمت إعادة تسمية Modifier.DrawLayer إلى Modifier.graphicsLayer. تم أيضًا تعديل الفئات ذات الصلة إلى GraphicsLayer وفقًا لملاحظات واجهة برمجة التطبيقات. (I0bd29، b/173834241)
  • تمت إضافة طرق جديدةplaceable.placeWithLayer() وplaceable.placePlaceWithLayer() مما يسمح للتخطيطات المخصصة ومعدِّلات التنسيق بوضع عنصر فرعي مع تقديم طبقة رسومات للرسم الخاص به. بعد أن نتمكن من تحسين عمليات إعادة الرسم أولاً، عندما نحتاج إلى نقل طفل، لا نضطر إلى إعادة رسم المحتوى، ثانيًا، يمكننا تطبيق عمليات تحويل الرسم للطفل (Ibd8f6، b/170296989، b/171493718، b/173030831)
  • تمت إزالة <T> من بيان SubcomposeLayout. يمكنك استخدامه بدون تحديد نوع الآن. (Ib60c8)
  • تمت إضافة Modifier.scale/تدوير واجهات برمجة التطبيقات كوسائل راحة لـ drawLayer.
    • تم تغيير الاسم "Modifier.drawOpacity" إلى "Modifier.alpha"
    • تمت إعادة التسمية Modifier.drawShadow إلى Modifier.shadow (I264ca، b/173208140)
  • تم جعل وقت تشغيل PointerInputData وحقول الموضع غير قابلة للقيم. (Id468a)
  • تضبط MaterialTheme الآن الألوان الصحيحة لمقبضات الاختيار وخلفية الاختيار. يمكن للتطبيقات غير Material استخدام ميزة مخصصة لألوان محددة من أجل تخصيص الألوان للاختيار من بينها. (I1e6f4 وb/139320372 وb/139320907)
  • تمت إضافة WindowManager.isWindowFocused للتحقق مما إذا كانت نافذة المضيف محل التركيز، وأداة WindowFocusMonitorer التي توفّر معاودة اتصال onWinWindowFocusChanged. (I53b2a، b/170932874)
  • تم تحديث TransformOrigin API لتوفير بنية تدميرية لعرض pivotFractionX وpivotFractionY بالصيغة component1 وcomponent2 (If43c4، b/173586560)
  • تمت إضافة التحقق من الوبر لتسمية معلمة lambda القابلة للإنشاء وموضعها، وذلك للتحقق من الاتساق مع إرشادات الإنشاء. تم أيضًا نقل بيانات بعض واجهات برمجة التطبيقات باستخدام children كاسم لدالة lambda اللاحقة إلى content، وفقًا لعمليات فحص الوبر والإرشادات. (Iec48e)
  • تمت إضافة واجهة برمجة التطبيقات للتحقق مما إذا تم الضغط على مفاتيح التعديل Alt أو Ctrl أو Meta أو Shift عند إرسال حدث رئيسي. (I50ed9)
  • تمت إضافة حِمل زائد جديد Modifier.drawLayer(). يأخذ كتلة lambda على GraphicsLayerScope الجديد حيث تُحدِّد معلَمات الطبقة بطريقة تسمح بتخطّي إعادة الإنشاء وإعادة التخطيط عند حدوث تغيير الحالة. أصبح DrawLayerModifier الآن داخليًا استعدادًا لنقل منطقه إلى طريقةplaceable.placeWithLayer() في LayoutModifier (I15e9f، b/173030831)
  • "وضع عدم النشاط" الذي تم إيقافه نهائيًا باسم "Ambient" كلاحقة له، واستبداله بسمات جديدة مسبوقة بعبارة "وضع عدم النشاط"، وذلك باتّباع إرشادات أخرى في واجهة برمجة التطبيقات "وضع عدم النشاط" و"Compose". (I33440)
  • تم نقل androidx.compose.ui.text.Typeface إلى androidx.compose.ui.text.font.Typeface (Ic2b81)
  • تمت إعادة تسمية وسيطة دلالة الدمج AllDescendants إلى mergeDescendants. (Ib6250)
  • أداة رصد إيماءة جديدة يعلّق فيها المؤشر لواجهة برمجة التطبيقات، بما في ذلك قفل الاتجاه. (Icef25)
  • تمت إعادة تسمية VectorAsset ليصبح ImageVector تم نقل VectorAsset إلى أداة الإنشاء وأصبح فئة داخلية من ImageVector وفقًا لإرشادات واجهة برمجة التطبيقات. تمت إضافة النوع البديل لـ VectorAssetBuilder للربط إلى ImageVector.Builder لـ compat (Icfdc8)
  • تمت إعادة تسمية ImageAsset والطرق ذات الصلة إلى ImageBitmap. (Ia2d99)
  • أضِف مَعلمة zIndex لمكان الوظيفة ()PlaceScope (ضمن مواضع الإعلان) حتى يعمل Modifier.zIndex() الآن كـ LayoutModifier ويمكن لأي تنسيق مخصّص ضبط zIndexes لأغراض فرعية مباشرةً في مجموعة مواضع الإعلانات (I711f7، b/171493718).
  • تم نقل خصائص دلالات الأساس إلى واجهة المستخدم (I6f05c).
  • أوقِف المكان(الإزاحة) وplacePlace(offset) نهائيًا. استخدام عمليات التحميل الزائدة مع إزاحة int بدلاً من ذلك (I4c5e7)
  • تمت إزالة واجهات برمجة التطبيقات التي تم إيقافها سابقًا: تمت إزالة Modifier.onPositioned، ويمكنك استخدام Modifier.onGloballyPositioned. تمت إزالة Modifier.onDraw. يمكنك استخدام Modifier.onDrawBehind. تمت إزالة Modifier.plus، يمكنك استخدام Modifier.then. اللون.تمت إزالة عدم الضبط، يمكنك استخدام اللون.غير محدد. تمت إزالة فئة PxBounds، لذا استخدِم Rect بدلاً من ذلك. (Ie9d02، b/172562222)
  • تم تحديث واجهة المحاذاة وجعلها تعمل. (I46a07، b/172311734)
  • تمت إضافة أداة رصد الإيماءات للنقر والنقر مرّتين والضغط مع الاستمرار ومؤشر الضغط باستخدام الإدخال الجديد لمؤشر التعليق. بالإضافة إلى ذلك، تمت إضافة بعض الأدوات المساعدة، ما سهّل على المطورين كتابة أدوات رصد الإيماءات الخاصة بهم. (I00807)
  • تمت إعادة تسمية "id" إلى "layoutId" للحساب LayoutIdParentData. تمت إعادة تسمية Measurable.id إلى Measurable.layoutId. (Iadbcb، b/172449643)
  • أداة جديدة لرصد الإيماءات المستندة إلى اللمس المتعدد، بما في ذلك أدوات مساعِدة لرصد التدوير والتكبير/التصغير والتحريك (Ic459d)
  • تم تقديم واجهات برمجة تطبيقات SweepGRadentShader وSweepGradentBrush. (Ia22c1)
  • التحكم في الوقت في الاختبارات (TestAnimationClock واستخداماتها) الآن تجريبي (I6ef86، b/171378521)
  • إضافة واجهات برمجة تطبيقات التمرير المستندة إلى الكوروتين:

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

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

  • توفير عمليات تنفيذ تلقائية للطرق والخصائص في AnimationClockTestRule التي يمكن تفويضها إلى clock (I7ea3d، b/173399709)

  • يمكن الآن لـ AndroidComposeTestRule قبول مشغّلات الأنشطة المخصّصة (Ib8288، b/153623653، b/154135019)

  • تم إيقاف TextLayoutResult.getLineVisualEnd نهائيًا. كبديل لـ TextLayoutResult.getLineEnd يحتوي الآن على معلمة جديدةvisibleEnd. (I73282)

  • واجهة برمجة التطبيقات المُعدَّلة لحقل TextFieldValue

    • تم جعل TextFieldValue.composition للقراءة فقط
    • تم طرح استثناء تمت إزالته لنطاق التحديد غير الصالح (I4a675، b/172239032)
  • دعم TtsAnnotation لمحرك تحويل النص إلى كلام. (I54cc6)

  • واجهات برمجة تطبيقات جديدة لتشغيل الصور المتحركة في الكوروتينات (Ied662)

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

  • تمت إعادة تسمية مَعلمة المحاذاة في Box إلى contentAlignment. (I2c957)
  • تمت إعادة تسمية معدِّلات offsetPx إلى الإزاحة. وهي الآن تأخذ معلمات lambda بدلاً من State. (Ic3021، b/173594846)
  • تمت إضافة مَعلمة renameInput إلى TextInputService#onStateupdated (I3e8f5، b/172239032، b/171860947)
  • تمت إضافة التحقق من الوبر لمعلمات التعديل في الدوال القابلة للإنشاء. تتحقق أداة التحقق هذه من التسمية والنوع المعروض والقيمة التلقائية وترتيب المعلمة من أجل الاتساق مع إرشادات الإنشاء. (If493b)
  • تمت إضافة خيار مؤقتًا للسماح بتشغيل TestAnimationClock من خلال MonotonicFrameClock (I1403b، b/173402197)
  • تمت إضافة برنامج تضمين Android Typeface. يمكنك تحميل خط طباعيّ Android عبر دالة typeface، أي typeface(Typeface.DEFAULT). تمت إعادة تسمية typefaceFromFontFamily() أيضًا إلى typeface() (I52ab7)
  • تمت إضافة فحص الوبر للتأكّد من أنّ وظائف المُعدَّل الأصلية هي إضافات على جهاز التعديل، وبالتالي يمكن ربطها معًا بطلاقة. (I07981)
  • إزالة وحدة اختبار واجهة المستخدم القديمة وبياناتها (I3a7cb)
  • لم تعد أداة إعادة الإنشاء تقبل embeddingContext. يتم الحصول على التبعيات المطلوبة للجدولة من activityCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تؤدي عمليات دمج النظام الأساسي إلى تهيئة معالجة اللقطات العامة. (I02369)
  • نقْل معلومات النمط إلى عقدة تسهيل الاستخدام. (If5e8d)
  • تمت إعادة تسمية TextUnit.الاكتساب إلى TextUnit.غير محدد للتناسق مع الوحدات الأخرى. (Ifce19)

إنشاء واجهة المستخدم الإصدار 1.0.0-alpha07

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

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

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

  • تم تقديم فئة ScaleFactor المضمّنة لتمثيل عوامل المقياس للمحور الأفقي والرأسي مستقلاً عن بعضها البعض من أجل دعم حالات استخدام التوسيع غير المنتظم.
    • تمت إضافة طريقة ComputeScaleFactor إلى ContentScale
    • تمت إضافة ContentScale.FillBounds لإجراء تحجيم غير موحد لتوسيع حدود src لشغل الوجهة بالكامل.
    • تمت إضافة طرق المشغلات لحساب معلمات ScaleFactor باستخدام معلمات Size.
    • (Ic96a6، b/172291582)
  • تمت إضافة معاملَي الانحياز والانحياز المطلق لإنشاء حالات محاذاة. (Iac836، b/169406772)
  • السماح لمطور البرامج بتوضيح تركيزه بشكل قوي (I90372)
  • تم إصلاح خطأ يتسبب في عدم رسم الارتفاع لعدد المشاهدات داخل Compose. (If7782)
  • تم إنشاء onDrawBehind API ضمن ContentDrawScope لمطابقة اصطلاح التسمية مع Modifier.drawBehind. (I4fc3a، b/171955269)
  • توفير مسافة للكاميرا من أجل تكملة الإحالات الناجحة الثلاثية الأبعاد RotationX/rotationY على واجهات برمجة التطبيقات للطبقة. (I40213، b/171492100)
  • تمت إضافة SelectContainer بدون معاودة الاتصال (Ibfadb)
  • تمت إزالة التعليق التوضيحي BETASubcomposeLayoutApi. يمكن الآن استخدام SubcomposeLayout بدون إضافة @OptIn (I708ad)
  • تم نقل FirstBaseline وLastBaseline إلى حزمة androidx.compose.ui.layout (Ied2e7)
  • تمت إزالة التعتيم من معدِّل drawShadow() لأنه كان مربكًا. (I82c62، b/171624638)
  • تم نقل MeasurementResult خارج MeasurementScope. (Ibf96d، b/171184002)
  • تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
  • تمت إزالة FocusState2 المتوقفة نهائيًا (I686cb ، b/168686446)
  • أصبح ZIndexModifier الآن داخليًا (I1808b، b/171493718).
  • تم تحديث نوع الإرجاع لطريقة lerp على معلمات الحجم لعرض حجم غير فارغ لتجنب العلبة غير الضرورية. (Ib0044)
  • تمت إضافة TestMonotonicFrameClock لاختبار التعليمات البرمجية التي تعتمد على MonotonicFrameClock من Compose في انتظار أحداث إطار الإنشاء باستخدام إجراء runBlockTest (I4402f) من kotlinx-coroutines-test.
  • تمت إزالة الإيماءاتScope.localToGlobal (I15299، b/171462785).
  • تمت إضافة الباحث onAllNodesWithSubstring (I81dd7، b/171462889)
  • تم إيقاف الوحدة androidx.ui.test نهائيًا. يُرجى نقل البيانات إلى androidx.compose.ui.test وandroidx.compose.ui.test.junit4 (I452e8)

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

  • تم نقل releaseToBitmap إلى تَمَّ تَسْجِيلُ التَّطْبِيقَاتْ. (I86385)
  • Foundation.Text تم إيقاف العمل نهائيًا واستبداله بـmaterial.Text. بالنسبة إلى واجهة برمجة تطبيقات النص الأساسية غير المرئية التي لا تستهلك قيمًا من مظهر، يمكنك الانتقال إلى androidx.compose.foundation.BasicText. (If64cb)
  • عدِّل الحقول النصية لقبول خيارات لوحة المفاتيح (Ida7f3).
  • إعادة تسمية KeyboardOptions باسم ImeOptions (I82f36)
  • تم نقل KeyboardType وImeAction إلى لوحة المفاتيح (I910ce).
  • تمت إضافة معلمة "توفير تلقائي" كبديل لتوفير ظروف الإضاءة المحيطة، ويمكن استخدامه لتحديد القيم المحيطة التي سيتم ضبطها فقط عند عدم توفير قيمة للبيئة المحيطة. (Id6635، b/171024925)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تقديم الوحدة النمطية ui-test-junit4 (Ib91f8)
  • تمت إعادة تسمية relativePaddingFrom إلى paddingFrom. تمت إضافة مفتاح التعديل paddingFromBaseline لتسهيل تحديد المسافات من حدود التنسيق إلى الأسس النصية. (I0440a، b/170633813)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق الاتساق مع واجهتَي SideEffect وDeposableEffect. لا يُسمح باستخدام LaunchedEffect بدون مَعلمات موضوع لتشجيع أفضل الممارسات. (Ifd3d4)
  • تم إدخال موارد قابلة للإنشاء يُعاد إنشاؤها عند تحديث الإعدادات. (I6387c، b/167352819)
  • تتطلب أداة إعادة الإنشاء الآن CoroutineContext عند الإنشاء (Ic4610)
  • جمع قيم zIndex عند تطبيق قيم Modifier.zIndex() متعدّدة في السابق، كانت النتيجة الأولى هي الفوز. (Ic514c، b/170623936)
  • التغييرات التي طرأت على تنفيذ واجهة برمجة التطبيقات الداخلية والتي لا ينبغي أن تؤثر على واجهة برمجة التطبيقات العامة. (If9828)
  • تمت إضافة خيار أداة IME التلقائية للوحة المفاتيح (I57b8d).
  • تم نقل androidx.ui.test إلى androidx.compose.ui.test (I9ffdb)
  • تمت إزالة KeyboardOptions.toImeOptions من واجهة برمجة التطبيقات المتاحة للجميع. (Ic2e45)

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

  • تم إيقاف نشر العنصر الداخلي androidx.compose.ui:ui-text-android (Ib93fa).

الإصدار 1.0.0-alpha06

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

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

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

  • أصبح Recomposer الآن مرجعًا للمقطوعة الموسيقية وأصل تركيبة صالح. "أداة إعادة إنشاء المحتوى الفاضح" مطلوبة الآن في أماكن أقل. (I4036f)
  • أوقف VectorPainter لصالحتعرَّف على تذكرVectorPainter للإشارة بشكل أفضل إلى أنّ واجهة برمجة التطبيقات القابلة للإنشاء تستفيد داخليًا من عملية "تذكر" البيانات للحفاظ على البيانات عبر التركيبات. (Ifda43)
  • تم تحديث واجهة برمجة التطبيقات Modifier.DrawWithCache API لعرض ContentDrawScope كنطاق للمستلِم بدلاً من DrawScope، من أجل توفير إمكانية إعادة ترتيب أوامر الرسم لعمليات التنفيذ. يفيد ذلك في حالات استخدام المزج/التلوين التي يجب فيها عرض وحدات بكسل المحتوى أولاً حتى يتم تطبيق خوارزمية وضع المزج المقابلة بشكل صحيح. (Ie7ec8)
  • نقل SimpleContainer إلى PopupTestUILEs.kt (I78c57)
  • لم تعُد ConsumedData فئة بيانات يمكنك الاطّلاع على https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 للحصول على التفاصيل (I1737f).
  • إصلاح موضع مقبض Rtl (I6e1e0)
  • و DrawScope وContentDrawScope لإنشاء واجهتَين، بدلاً من الفئات المجرّدة
    • تم إنشاء تنفيذ CanvasDrawScope من DrawScope
    • تمت إعادة هيكلة عمليات تنفيذ DrawScope لاستخدام CanvasScope بدلاً من
    • تم إنشاء DrawContext لالتفاف التبعيات لـ DrawScope
    • تمت إزالة الطرق المتوقّفة نهائيًا في DrawScope (I56f5e)
  • تغيير قد يؤدي إلى عطل: تمت إزالة القيمة المعروضة من PointerInputFilter.onPointerEvent(...) لأنّ القيمة الوحيدة التي يمكن تغييرها في أحداث المؤشر هي بيانات الاستهلاك. بدلاً من عرض البيانات من PointerInputFilter.onPointerEvent(...)، يمكنك الآن تغيير بيانات استهلاك Pointer Events التي تم تمريرها. (I6acd0)
  • تم إنشاء واجهتَي MeasurementScope وIntrinsicmeasureScope. (I1a087، b/170461665)
  • تم إخفاء دالة الدمج لـ ConsentLine. (I9da1a وb/170612900 وb/170611568)
  • إضافة إمكانية تحديد معلومات المفتش في معدِّل مكوّن (Idee08، b/163494569)
  • تمت إضافة خيار "تحديد الكل" إلى قائمة التحديد (Ief02b).
  • تم تحديث DrawTransform.rotate لوضع معلمة محورية افتراضية للوسط لمطابقة الوثائق.
    • تم تحديث DrawScope.rotateRad لاستهلاك إزاحة للنقطة المحورية لمطابقة طرق التحويل الأخرى.
    • تم إيقاف حمل DrawScope.rotateRad الزائد الذي استهلك أعداد عشرية للإحداثي x وy للمحور.
    • (Iffcbb، b/170434992)

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

  • تم تفعيل ميزة فحص واجهة برمجة التطبيقات لـ مفقودةGetterMatchingBuilder لنظام androidx (I4bbea، b/138602561)
  • إضافة اختبار. (I6b8ae)
  • يمكنك تفعيل عمليات الانتقال في ComposeTestRule مع مراعاة إزالة خيار تفعيل المؤشر الوامض من ComposeTestRules. (If0de3)
  • تمت إضافة خيار أداة IME للكتابة بالأحرف الكبيرة للوحة المفاتيح (I8ac38).
  • تمت إضافة خيار لوحة المفاتيح من سطر واحد إلى CoreTextField (I72e6d).
  • نقل SimpleContainer إلى PopupTestUILEs.kt (I65c3e)
  • تمت إعادة تسمية واجهة برمجة تطبيقات Radius إلى CornerRadius للتعبير بشكل أفضل عن كيفية استخدامها في Compose وثائق معدَّلة للإشارة إلى أنّ نصف قطر الزاوية السالبة مثبَّت على الصفر. (I130c7، b/168762961)
  • تم تحسين إمكانية التشغيل التفاعلي لنظام التشغيل Android من خلال مواصلة إرسال Motionevents إلى ملفات Android الثانوية التي تعرض القيمة false لـ onTouchEvent لكل الإجراءات باستثناء ACTION_DOWN (I94c5a، b/170320973)
  • تم تحويل Box إلى دالة مضمّنة. (Ibce0c، b/155056091)

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

  • إتاحة لغات مختلفة لكل من AnnotatedString.capitalize وAnnotatedString.decapitalize (I4aa7f)

الإصدار 1.0.0-alpha05

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

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

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

  • إضافة DSL لتحديد معلومات المفتش (Ic9a22)
  • نقل وظيفة "الضغط الطويل" إلى "نص" (Iff2bc)
  • معدِّل الإدخال التجريبي Modifier.pointerInput (Ia77d2)
  • تمت إضافة إجراءات تسهيل الاستخدام النسخ/اللصق/القص (I6db4f).
  • تمت إزالة دالة الإنشاء العامة لـ AndroidOwner (Iacaef)
  • تكتسب النوافذ المنبثقة ومربعات الحوار الآن FLAG_SECURE من النافذة الرئيسية. تمت إضافة خيار لضبط هذا الإعداد بشكل صريح (I64966، b/143778148، b/143778149)
  • أصبحت بيانات الاستهلاك الآن قابلة للتغيير. كذلك، لم تعد استدعاءات دوال الإضافات التي تستنِد إلى الاستهلاك تعرض الآن مؤشر PointerInputChange جديد، ولكن بدلاً من ذلك تعمل على تغيير PointerInputChange المُقدَّم.

    هذه هي الخطوة الأولى في عملية مكوّنة من خطوتين لجعل بيانات PointerEvent قابلة للتغيير بحيث لا يمكن تعديل بيانات المؤشر الأخرى باستخدام رمز المستخدم. تتمثل الخطوة الثانية في إزالة نوع الإرجاع List<PointerInputChange> من PointerInputFilter.onPointerEvent(...). (Id067e)

  • إيقاف التحديد في النص والعرض التوضيحي. (Ie7e97)

  • Made onGloballyPositioned دالة مضمّنة (I15830)

  • تمت إعادة تسمية OnPositionedModifier إلى OnGloballyPositionedModifier وتمت إعادة تسمية onPositioned() إلى onGloballyPositioned(). (I587e8، b/169083903)

  • تمت إضافة الخاصية hasPendingMeasurementOrLayout إلى "المالك"، لمعرفة ما إذا كان لدى المالك أي أعمال تصميم معلّقة. (I3d9f8، b/169038599)

  • تمت إضافة واجهة برمجة التطبيقات للتركيز بشكل آلي (Ie1dc2، b/161487952)

  • تمت إزالة PointerInputFilter.onPointerInput(...). يجب استخدام الحقل PointerInputFilter.onPointerEvent(...) بدلاً منه. (I6f04a)

  • التغييرات على الحجم

    • تمت إزالة Size.getFlipped
    • تمت إزالة Size.rem
    • تمت إزالة Size.trenseDiv (Ief44d، b/169790720)
  • كجزء من توحيد قيم الروابط للفئات المضمّنة، يُرجى إعادة تسمية اللون.غير محدَّد إلى اللون.غير محدَّد للتناسق مع الفئات المضمّنة الأخرى (I97611، b/169797763)

  • تم تقديم TextOverflow.لم يتم تقديم أي شيء. عندما تكون قيمة overflow (التجاوز) هي "None" (بلا)، لن يتعامل Text مع تجاوز overflow بعد ذلك، وسيتم الإبلاغ عن حجمه الفعلي إلى LayoutNode. (I175c9، b/158830170)

  • تمت إعادة تسمية مَعلمة النطاق AnnotatedString.Builder.addStringAnnotation إلى العلامة من أجل تحقيق اتّساق واجهة برمجة التطبيقات. (I7c8cb)

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

  • يتم تحسين أداء التمرير في العمود الكسول/الصف من خلال تقليص الوقت الذي يتم تنفيذه في البنية الفرعية في كل عملية تمرير. تمت إضافة طريقة has validations() الجديدة لفئة التركيبة. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • تم تحديث الحجم.معلمات غير محددة لتكون Float.NaN بدلاً من Float.POSITIVE_INFINITY. تم تحديث عمليات تنفيذ الطلاء للتحقق من الحجم.غير محدد وكذلك الأحجام غير المحدودة. (I95a7e)
  • يحدد ترتيب استدعاءاتplace() في التنسيقات المخصصة الآن ترتيب الرسم للأطفال (Ibc9f6)
  • دعم AnnotatedString لتحويل SpannableString لتسهيل الاستخدام. (Ief907)
  • تمت إضافة رموز برمجية لفئات Android المتوفّرة على أنظمة أساسية قديمة لتجنّب استخدام الانعكاس متى أمكن. (Ia1790)
  • خطأ إصلاح: إذا تسببت لوحة المفاتيح البرمجية التي تعرض التطبيق في ترجمة التطبيق، ستصبح إحداثيات إدخال المؤشر غير صحيحة. (Ic4cec، b/163077821)

الإصدار 1.0.0-alpha04

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

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

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

  • تمت إضافة OwnerScope للسماح بجمع نطاقات التخطيط ورسم الملاحظة بمجرد أن تصبح غير صالحة. (Ic4cf8)
  • تمت إضافة OnRemeasuredModifier وonSizeChanged() لتلقي معاودة الاتصال عند إعادة قياس تنسيق المحتوى وتغيير الحجم، على التوالي. (I657cf، b/154108792)
  • إضافة إجراء دلالي للنقر الطويل (I6281b، b/156468846)
  • تم جعل FocusManager خاصًا. (I7872f)
  • تم تحديث التنفيذ لإنشاء عملية تنفيذ مخصصة لـ DrawCacheModifier بدلاً من إضافة خصائص اختيارية على DrawModifier.

    مستندات معدَّلة لطرق مختلفة (Ibd166)

  • يجب جعل TextRange مضمّنًا لتجنب إنشاء كائن. (Id034b)

  • لا يمكن بعد الآن قراءة موضع الموضع#parentDisplay وPositionScope#parentLayoutDirection من مجموعة مواضع الإعلانات في تنسيق مخصّص. (Icc1ae، b/168295623)

  • بإضافة Accessibility ScrollState إلى خصائص الدلالات. (Ifeda9)

  • تم تقديم Modifier.drawWithcache لدعم إنشاء كائن رسم يعيد إنشاء التبعيات بشكل مشروط التي تعتمد على معلومات الحجم/الحالة (I376dc)

  • تمت إزالة قيود الفقرة. تم تمرير العرض مباشرةً إلى الفقرة الآن. (Ica712)

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

  • تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
    • تم تحديث واجهات برمجة التطبيقات للمقياس والتدوير لاستهلاك معلمة إزاحة واحدة لتمثيل الإحداثي المحوري بدلاً من المعلَمات العائمة المنفصلة للإحداثيات x/y في DrawScope وDrawTransform
    • تمت إزالة الطريقتين Rect.expandToinclude وRect.join
    • تم تحديث وثائق نصف القطر لتوضيح الشكل البيضاوي بالإضافة إلى البيضاوي
    • الوثائق الإضافية التي تشير إلى أن الدالة الإنشائية العامة لفئة نصف القطر المضمنة لا يتم استدعاءها بشكل مباشر ولكن بدلًا من ذلك يجب إنشاء مثيل لكائنات النطاق الجغرافي من خلال الدالة الإنشائية للدوال
    • تمت إزالة واجهات برمجة تطبيقات RoundRect لطلب البحث في topRight، وbottomRight، وbottomCenter، وما إلى ذلك.
    • إيقاف ميزة Rect.shift نهائيًا لصالح Rect.translate
    • تمت إزالة واجهات برمجة تطبيقات RoundRect.grow وRect.shrink
    • تمت إعادة تسمية RoundRect.outerRect إلى Rect.boundingRect.
    • تمت إزالة طريقتي RoundRect.mediumRect/tallMiddleRect/wideMiddleRect وRect.isStadium.
    • تمت إعادة تسمية RoundRect.longestSide إلى RoundRect.maxdimension.
    • تم تغيير اسم RoundRect.shortestSide إلى RoundRect.minسام
    • تم تغيير RoundRect.center إلى خاصية بدلاً من دالة
    • تم تحديث الدالة الإنشائية RoundRect لاستهلاك خصائص نصف القطر بدلاً من المعلمات الفردية لقيم نصف القطر x/y
    • تمت إزالة واجهات برمجة التطبيقات للحجم والتي افترضت أنه شكل مستطيل ذو مصدر 0,0
    • تمت إضافة واجهة برمجة تطبيقات ضارة إلى Radius
    • تم نقل دوال إضافات RoundRect المختلفة إلى مواقع بدلاً من ذلك
    • (I8f5c7، b/168762961)
  • Foundation.Box تم إيقافها نهائيًا. يُرجى استخدام Foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
  • تمت إعادة تسمية الحزمة إلى Box. سيتم إيقاف Box الحالي لصالح Box الجديد في compose.foundation.layout. يتمثل سلوك Box الجديد في تكديس العناصر الفرعية فوق بعضها البعض عندما يكون لديه العديد من العناصر الثانوية - وهذا يختلف عن Box السابق، الذي كان يعمل مشابهًا للعمود. (I94893، b/167680279)
  • تم إيقاف مَعلمات تزيين الصندوق نهائيًا. إذا كنت تريد إضافة زخارف أو مساحة متروكة في المربّع، استخدِم "المعدِّلات" بدلاً من ذلك (Modifier.background أو Modifier.الحد أو Modifier.adding) (Ibae92، b/167680279).
  • تم تحديث العديد من واجهات برمجة التطبيقات للرسومات
    • تم تحديث واجهات برمجة تطبيقات DrawScope باستخدام طرق تحويل النطاق للإشارة إلى أنّه لا يتم تطبيق التحويل إلا داخل طلب الاستدعاء وتتم إزالته بعد استدعاء الاستدعاء
    • وثائقClipPath المحدّثة للإشارة إلى "المسار" بدلاً من المستطيل المستدير
    • تباعد ثابت في وثائق المعلمة الصحيحة في tablePath
    • تمت إعادة تسمية DrawScope.DrawCanvas إلى drawIntoCanvas وإزالة معلمة الحجم
    • تمت إعادة تسمية معلمات dx/dy في طريقة الإدخال إلى الوضع الأفقي والرأسي
    • تمت إضافة الحمل الزائد للداخل الذي يوفر نفس قيمة الإدخال لجميع الحدود الأربعة
    • تمت إزالة الوثائق الموجودة على طريقة الإدخال التي تشير إلى أنه سيتم تطبيق الداخلية على جميع الجوانب الأربعة
    • مستندات معدَّلة لفئة Rect
    • تم تحديث التعليقات على معلمات Rect لمطابقة نمط kdoc
    • تمت إزالة Rect.join وRect.expandToFrom
    • تم إنشاء حِمل زائد لـ Rect.localized(offset) وإيقاف Rect.shift نهائيًا
    • (If086a، b/167737376)
  • التعليقات التوضيحية الجذرAnimationClock استمرارية، وانتقالsEnabled، وblinkingCursorEnabled، وtextInputService وعرض المواصفات
  • أزِل SelectContainer من الجزء العلوي لإيقاف الاختيار التلقائي وتجنُّب السلوك غير المتوقّع. يمكن للمرء استخدام SelectContainer على وجه التحديد لالتفاف المحتوى الذي يجب أن يكون قابلاً للاختيار بدلاً من ذلك. (I8dfe0، b/158459594)

الإصدار 1.0.0-alpha03

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-alpha03". يحتوي الإصدار 1.0.0-alpha03 على هذه الالتزامات.

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

  • إزالة إجراءات دلالات التمرير للأمام/للخلف تمت إضافة خطوات في AccessibilityRangeInfo. (Ia47b0)
  • تمت إزالة onInvalidate() من Owner -- إبطال الأسماء المعرِّفة OwnedLayer. (Ica72b، b/162061312)
  • تمت إزالة طرق المشغل من واجهة برمجة تطبيقات الحجم التي تستهلك معلمات Offset. لكن نتيجة هذه العمليات غير واضحة ونوع النتيجة غير متوقع لها. مثال: هل ينبغي أن يؤدي الحجم - الإزاحة إلى إرجاع إزاحة أو نتيجة حجم بالفرق؟

    تمت أيضًا إزالة الطرق المتوقّفة نهائيًا في فئة المقاس. (Iec902، b/166514214)

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

  • إصلاح عناصر LazyColumn التي يتم رسمها بشكل غير صحيح في بعض الأحيان، كان ذلك أيضًا يتسبب في أعطال في بعض الحالات. (Ibcf17 وb/163066980 وb/165921895)
  • تم إيقاف DpConstraints وواجهات برمجة التطبيقات التي تستخدمها نهائيًا. (I90cdb، b/167389835)
  • تم نقل createAndroidComposeRule وAndroidInputDispatcher من androidx.ui.test.android إلى androidx.ui.test (Idef08، b/164060572)
  • تمت إعادة تسمية استخدامات الجاذبية بشكل متكرر للمحاذاة أو المحاذاة في واجهات برمجة تطبيقات التصميم. (I2421a، b/164077038)
  • تمت إضافة onNode والطرق العامة الأخرى إلى ComposeTestRule حيث سيتم إيقاف الطرق العامة الحالية. (Ieae36)

الإصدار 1.0.0-alpha02

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

تم طرح "androidx.compose.ui:ui-*:1.0.0-alpha02". يحتوي الإصدار 1.0.0-alpha02 على هذه الالتزامات.

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

  • إزالة ميزة معاودة الاتصال لإعلام المالك عند تغيير حدود تنسيق عقدة. (If654e، b/166106882)
  • تمت إضافة دعم لمعلمات نوع التعبئة على مسارات الرسومات المتجهة لدعم مقاطع الأشكال وفقًا لقواعد تعبئة المسارحتى Odd أو Nonصفر. (I43dd2)
  • أصبح وقت التشغيل والسرعة الآن فئات مضمّنة (I48f4a).
  • أصبحت المدة الآن صفًا مضمّنًا (I565eb).
  • أضِف معاودة الاتصال لإعلام المالك عند تغيير حدود تنسيق عقدة. (Ic40b3)
  • تم إصلاح المشكلة التي تؤدي فيها الدالة الإنشائية لدالة "المستطيل" مع الإزاحة ونصف القطر إلى إنشاء المستطيل بترتيب اليسار، اليمين، الأعلى، السفلي بدلاً من اليسار، الأعلى، الأيمن، السفلي.

    تم إزالة الطرق المصاحبة المتوقفة نهائيًا على Rect لصالح الدوال الإنشائية للدوال.

    تمت إضافة اختبارات للتحقّق من الطرق في Rect.kt (I08460، b/165822356).

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

  • تمت إضافة MutableRect، وهو مستطيل يمكن تعديله. (I71bd2، b/160140398)
  • تم استبدال المصفوفة 4 بالمصفوفة. تمت إزالة جميع الأجزاء الأخرى من حزمة المتجهات. (Ibd665، b/160140398)
  • لقد تغير اصطلاح الاستدعاء للدوال القابلة للإنشاء. يحدث هذا تغييرًا في النظام الثنائي. يجب إعادة تحويل كل المكتبات للعمل مع هذا الإصدار من المكوّن الإضافي لبرنامج التجميع.

    لا يؤدي هذا التغيير إلى حدوث تغيير يؤدي إلى تعطُّل على مستوى المصدر، لأنّ واجهات برمجة التطبيقات التي تم تغييرها هي فقط واجهات برمجة تطبيقات لتجميع البيانات تتضمّن إذنًا صريحًا بذلك. (I7afd2، b/158123185)

  • عند إصلاح العطل الذي قد يحدث عندما يؤدي الإرسال إلى PointerInputFilter إلى إزالة PointerInputFilter بشكل متزامن. (I58f25)

الإصدار 1.0.0-alpha01

26 آب (أغسطس) 2020

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

الإصدار 0.1.0-dev

الإصدار 0.1.0-dev17

19 آب (أغسطس) 2020

تم طرح "androidx.compose.ui:ui-*:0.1.0-dev17". يحتوي الإصدار 0.1.0-dev17 على هذه الالتزامات.

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

  • تم إيقاف emitView نهائيًا. استخدِم AndroidView بدلاً من ذلك إذا كان ذلك ممكنًا لنشر المشاهدات داخل سياسة ComposeAllowed. تجدر الإشارة إلى أنّ إنشاء طرق العرض وViewGroups بشكل مباشر لن يكون متاحًا في المستقبل ما لم يتم نقلها في شجرة الإنشاء، وذلك في حال كان ذلك ممكنًا باستخدام AndroidView. (I29b1e، b/163871221)
  • تم إيقاف FocusState2 نهائيًا واستبداله بـ FocusState (Ia8b79، b/160822876، b/160923332)
  • تمت إزالة أعباء AndroidView المتوقفة نهائيًا. (I946b9، b/163802393)
  • يمكن الآن أن تشير الانبعاثات المخصّصة إلى أنّه يمكن تخطّي عنصر واحد أو أكثر من مواد الإعداد الخاصة بها وإعادة بنائها بشكل مستقل عن الصادرات. (Ibbd13)
  • تم تغيير فئات المتجه إلى فئات لم تعد فئات بيانات حيث يتم استخدام نفس مثيل الكائن للتكوين.

    تمت إضافة علامة mutableStateOf لـ VectorPainter لإعادة رسمه بشكل مشروط إذا تغير محتوى المتجه.

    مثيل VectorComponent المُعاد تصميمه ليكون جزءًا من VectorPainter، حيث تتم إعادة استخدامه عبر التركيبات.

    تم تحديث GroupComponent وPathComponent لجعل حقول الاسم قابلة للتغيير (Ieae45، b/151378808)

  • تمت إزالة onChildPositioned وOnChildPositionedModifier. على المطوّرين استخدام onPositioned وOnPositionedModifier على التنسيق الفرعي بدلاً من ذلك. (I4522e، b/162109766)

  • أصبحت الإزاحة فئة مضمّنة (Iaec70)

  • تمت إضافة معلمة تعديل إلى SelectionContainer (I4aada، b/161487952)

  • إزالة FocusModifier

  • تمّت إضافة mergePolicy لمدا إلى SemanticsPropertyKey. ويمكن استخدام ذلك لتحديد سياسة مخصصة لدمج دلالات الدمج AllDescendants. تتمثل السياسة الافتراضية في استخدام القيمة الرئيسية إذا كانت موجودة بالفعل، أو القيمة الفرعية. (Iaf6c4، b/161979921)

  • أصبحت القيود الآن فئة مضمّنة (I88736)

  • تمت إضافة FocusManager يتيح نقل منطق التركيز الشائع خارج AndroidComposeView (I528ef، b/161487952، b/162206799).

  • تم تعديل أسماء PointerEventPass للإصدار الأولي. (Ifda6f)

  • أصبحت Int Offset الآن فئة مضمّنة (Iac0bf).

  • أصبح IntSize الآن فئة مضمّنة (I2bf42).

  • تمت إعادة تسمية PlacementScope.placeAbsolute() إلى PlacementScope.place()، كما تمت إعادة تسمية PlacementScope.place() السابق إلى PlacementScope.placeRelative(). ونتيجة لذلك، لن تعكس طريقة PlacementScope.place() الموضع تلقائيًا في السياقات من اليمين إلى اليسار بعد الآن. إذا كنت تريد ذلك، يمكنك استخدام PlacementScope.placeRelative() كبديل. (I873ac، b/162916675)

  • يستخدم تطبيق Alater Dialog الآن حدث FlowRow للأزرار (I00ec1، وb/161809319، وb/143682374)

  • جعل بعض مرافق الاختبار غير عامة لأنها ليست في المكان الذي تنتمي إليه. ستتم إتاحتها للجميع في المستقبل. (I32ab1)

  • إعادة تنظيم رمز إدخال المؤشر. (Ie3f45)

  • PxBounds المتوقف لصالح Rect. تم تحديث جميع استخدامات PxBounds باستخدام المستطيل وإضافة الإيقاف/الاستبدال المناسب بالتعليقات التوضيحية للمساعدة في الترحيل. (I37038، b/162627058)

  • تمت إزالة KeyEvent2 المتوقفة نهائيًا. استخدِم KeyEvent بدلاً من ذلك. (Ied2d0، b/162097587)

  • يحتوي KeyEvent على خاصية يونيكود يمكن استخدامها للحصول على حرف يونيكود الذي يتم إنشاؤه من خلال مجموعة المفتاح وحالة المفتاح الوصفي المحددة (If3afc)

  • جعل الحدث المخصّص DelayUp والفئات ذات الصلة موافقة على واجهة برمجة التطبيقات لأنه من المرجَّح أن يتم تغييره. (I56d6f)

  • تمت إزالة 2 PointerEventPasss التي لم تعد هناك حاجة إليها. (I3dd9d)

  • إضافة لون المعلمة والظل وTextDecoration إلى Paragraph.paint، وتفيد هذه الدالة في تجنب إعادة إنشاء الفقرة غير الضرورية. (I81689)

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

  • تمت إزالة onFocusChanged لطلبات معاودة الاتصال من TextField. استخدِم Modifier.focusMonitorer بدلاً من ذلك. (I51089، b/161297615)
  • تم إيقاف Modifier.DrawBorder نهائيًا. يمكنك استخدام Modifier.الحدود بدلاً من ذلك. تم استبدال فئة البيانات الحدودية بـ BorderStroke (I4257d وb/158160576).
  • تمت إزالة طلبات FrameManager المتوقفة نهائيًا.

    تم تغيير واجهات برمجة التطبيقات الداخلية للإنشاء لتقليل مقدار النفقات العامة لتتبع كائنات الحالة مثل mutableStateof() (I80ba6)

  • تمت إزالة شريطي التمرير العمودي والتمرير الأفقي. استخدِم العمود أو الصف القابل للتمرير بدلاً من ذلك. تمت إزالة Modifier.drawBackground. استخدام Modifier.background (I73b0d، b/163019183)

  • يحدث عطل عند استخدام عنصر يحفظ الحالة داخل التكرار الحلقي for. يُسمح الآن باستخدام المفتاح نفسه في savedInstanceState() ، ويتم الآن تعديل واجهة برمجة تطبيقات UiSavedStateRegistry وفقًا لهذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561)

  • تم الآن إيقاف العنصر state { ... } القابل للإنشاء نهائيًا ليحلّ محلّه دعوات فاضحة موجّهة إلى remember { mutableStateOf(...) } لمزيد من الوضوح. يقلل ذلك من مساحة العرض الإجمالية لواجهة برمجة التطبيقات وعدد المفاهيم لإدارة الحالة، كما يتطابق مع نمط by mutableStateOf() لتفويض الموقع على مستوى الفئة. (Ia5727)

  • تمت إعادة تسمية RRect إلى RoundRect لملاءمة أنماط التسمية لإنشاء إنشاءات دوال مماثلة بشكل أفضل وإنشاء منصات إنشاء دوال RRect تم إيقافها نهائيًا (I5d325)

الإصدار 0.1.0-dev16

5 آب (أغسطس) 2020

تم طرح "androidx.compose.ui:ui-*:0.1.0-dev16". يحتوي الإصدار 0.1.0-dev16 على هذه الالتزامات.

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

  • تم إيقاف OnChildPositioned نهائيًا. استخدم OnPositioned على الطفل بدلاً من ذلك. (I87f95، b/162109766)
  • تم إيقاف setViewContent نهائيًا. يجب استخدام setContent بدلاً من ذلك. (I7e497، b/160335130)
  • تمت إضافة واجهة برمجة التطبيقات AndroidViewSlideing API لتضخيم موارد التنسيق وإنشائها، استنادًا إلى Viewliding. (I081c6)
  • يتم استبدال KeyEvent2 بـ KeyEvent (I2d770، b/162097585)
  • تمت إضافة دعم لمفتاح الجهاز البديل (I9036b).
  • تم إيقاف FocusManager. استخدِم Modifier.focus() وModifier.focusMonitorer() وModifier.focusRequester() بدلاً منها (I74ae4، b/162211322)
  • يدعم uploadVectorResource سمات trimPath (I808fe)
  • نقل مربع الحوار إلى واجهة المستخدم (I47fa6)
  • تمت إزالة 2 PointerEventPasss التي لم تعد هناك حاجة إليها. (I33ca7)
  • تم تنفيذ PointerInteropModifier الذي يوفّر إمكانية تلقّي Motionevents والتفاعل مع Compose كما لو كنت تنفّذ عرض Android. (Ieb08c)
  • تمت إزالة أداة تعديل العلامات المتوقّفة نهائيًا. يُرجى استخدام arrangeId بدلاً من ذلك. (Idaa05، b/162023919)
  • تم تحديث واجهات برمجة التطبيقات للدعم من اليمين إلى اليسار. تمت إضافة LayoutDirection للانغماس، والتي يمكن استخدامها لقراءة اتجاه التنسيق وتغييره. تمت إزالة Modifier.rtl وModifier.ltr. (I080b3)
  • اقتطاع مسار الدعم في الرسومات الموجّهة (Ie16c9، b/158188351)
  • تمت إضافة Modifier.layout() الذي يسمح بإنشاء معدِّل تنسيق مخصّص بسهولة (I73b69، b/161355194).
  • تمت إضافة واجهة برمجة تطبيقات AndroidView جديدة وإيقاف واجهات برمجة التطبيقات الحالية نهائيًا. (I5bcfd)
  • تم إيقاف Modifier.plus، لذا استخدِم Modifier.ثم بدلاً من ذلك. تقدّم القيمة "ثم" إشارة أقوى للطلب، بينما تحظر أيضًا كتابة Modifier.padding().background() + anotherModifier، التي تقسّم السلسلة وتصعب قراءتها (Iedd58، b/161529964)
  • إضافة الفئات الفرعية لطريقة عرض ComposeView [Abstract]لاستضافة محتوى Compose في العرض الهرمي للعرض. (I46357)
  • أصبحت السمتان Row وColumn الآن دالّة مضمّنة، ما يقلّل بشكل كبير من أعباء استخدامهما. (I75c10)
  • تمت إضافة SubcomposeLayout. وهو عنصر أولي منخفض المستوى يسمح بصياغة العناصر الثانوية أثناء القياس إذا أردنا استخدام بعض القيم المتاحة فقط في وقت لاحق أثناء قياس تركيبة الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
  • تمت إضافة SemanticsNode.positionInRoot للحصول على موضع SemanticsNode بالنسبة إلى جذر التسلسل الهرمي Compose (Icdf26، b/161336532)
  • ودارت أحداث Motionevents من Android إلى Compose ثم عادت إلى Android. (I14be8، b/158034713)
  • تمت إزالة القائمة المنسدلة. (I00430)
  • موضع نافذة منبثقة ثابتة على الشاشات المقصوصة. (Idd7dd)
  • إضافة إجراء تسهيل الاستخدام للحصول على TextLayoutResult (I9d6e6)
  • تمت إضافة RemeasurementModifier. ويسمح بإعادة قياس التنسيق بشكل متزامن. بشكل عام، لا تحتاج إليها أبدًا نظرًا لإجراء إعادة القياس/إعادة التخطيط تلقائيًا، ولكننا نستخدمه داخل LazyColumnItems أثناء التمرير. (I5f331، b/160791058)
  • أزِل getLineEllipsis Offset/getLineEllipsisCount. استخدم getLineمرئيEnd/getLineEnd/isLineEllipized بدلاً من ذلك. (I85aa2)
  • أضف بعض العلامات/التعليقات التوضيحية لأسباب تتعلق بأفضل الممارسات. (I66b20)
  • عرض المزيد من واجهات برمجة التطبيقات للسطور في TextLayoutResult (I79bd2)
  • يمكن الآن استخدام محولات المتجهات المضمّنة لتحويل الوحدات المدمجة عبر Foo.VectorConverter. على سبيل المثال، Dp.VectorConverter وColor.VectorConverter وFloat.VectorConverter، وغير ذلك (I3e273

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

  • معالجة الإصلاحات العامة لواجهة برمجة التطبيقات (I077bc)
    1. إزالة واجهة OffsetBase غير المستخدمة
    2. فئتا محاذاة الإزاحة وIntoffset للحصول على سطح واجهة برمجة تطبيقات متناسق
    3. أعد تسمية Int Offset.Origin إلى Int Offset.Zero ليتماشى مع واجهة برمجة التطبيقات Offset API
    4. تم نقل طريقة NativeCanvas خارج واجهة Canvas لدعم المستهلكين في إنشاء مثيلات خاصة بهم من Canvas.
    5. تم إنشاء فئة BlankCanvas لإعادة هيكلة التعليمات البرمجية DrawScope لتكون معلمة غير فارغة بدلاً من lateinit ويضمن عدم قابلية القيم الفارغة للحقل
    6. تمت إعادة تسمية تعدادات ClipOp إلى حالة Pascal
    7. تمت إعادة تسمية تعدادات FilterQuality إلى حالة Pascal
    8. تمت إعادة تسمية تعدادات StrokeJoin لتصبح حالة باسكال
    9. تمت إعادة تسمية تعدادات PointMode إلى حالة Pascal
    10. تمت إعادة تسمية تعدادات PaintingStyle لتصبح Pascal Case
    11. تمت إعادة تسمية تعدادات PathFillType إلى حالة Pascal.
    12. تمت إعادة تسمية تعدادات StrokeCap إلى حالة Pascal
    13. تم تحديث تنفيذ DrawCache بحيث يتوقف عن استخدام مَعلمات longinit
    14. تم تحديث DrawScope لكي يتوقف عن استخدام التفويض الكسول لمعلمات fillPaint وStrikePaint الداخلية
    15. صورة محدّثة قابلة للإنشاء لتجنب استخدام Box لتقليل النفقات العامة
    16. تم تعديل صف Outline ليشمل تعليقات توضيحية تشير إلى @Immutable.
    17. تم تحديث PathNode لإضافة تعليقات توضيحية @Immutable لكل تعليمات مسار
    18. تم تحديث التجميع الفرعي لـ Vector لإزالة عمليات التحقق الشرطية المتكررة للمساواة حيث يعالجها الإنشاء بالفعل
    19. طرق إنشائية رفيقة لـ Rect تم إيقافها لصالح الدوال الإنشائية للدوال
    20. تم تحديث فئات Brush ودوال الإنشاء للدوال باستخدام واجهات برمجة التطبيقات @Immutable و @Stable
    21. تم تعديل تعداد VertexMode ليصبح PascalCase
    22. تم تحديث طريقة Drawscope selectPaint لاستبدال معلمات الخط بشكل مشروط على الرسم إذا كانت قد غيّرت
    23. تم تحديث الحجم لإضافة واجهة برمجة تطبيقات تالفة، وإعادة تسمية UnspecifiedSize إلى Unspecified وإزالة الطرق غير المستخدمة
  • تم تحديث استهلاك واجهة برمجة التطبيقات لـ BlendMode للربط بشكل صحيح بين إطار عمل Android BlendModes وPorterDuff بناءً على مستوى واجهة برمجة التطبيقات. تم تقديم واجهة برمجة التطبيقات BlendMode#isSupported لكي تعمل كاستعلام عن إمكانية تحديد ما إذا كان BlendMode متاحًا على الجهاز قبل استخدامه. (I0ef42)
  • تمت إضافة LazyItemScope لمَعلمة itemContent للقوائم الكسولة. يوفّر هذا العمود تعديلات لملء الحد الأقصى للحجم الأصلي الذي يحل حالة الاستخدام التي تؤدي فيها العنصر إلى ملء إطار العرض ولا يعمل التعديل العادي Modifier.fillMaxSize() لأنّه يتم قياس العنصر باستخدام قيود لانهائية. (Ibd3b2، b/162248854)
  • تمت إزالة SemanticsNodeInteraction.performPartialGesture. استخدِم SemanticsNodeInteraction.performGesture بدلاً من ذلك. (Id9b62)
  • تمت إعادة تسمية LazyColumnItems إلى LazyColumnFor. تمت إعادة تسمية LazyRowItems إلى LazyRowFor (I84f84)
  • تم خفض حزمة foundation.shape.corner إلى foundation.share (I46491، b/161887429)
  • تمت إعادة تسمية "AndroidComposeTestRule" إلى "createAndroidComposeRule". (I70aaf)
  • تمت إضافة المزيد من واجهات برمجة التطبيقات إلى "TextLayoutResult". (Id7e04)
  • تمت إعادة تسمية المادة FilledTextField لتصبح TextField، وتمت إعادة تسمية TextField الأساسية لتصبح BaseTextField لتسهيل اكتشاف واجهة برمجة التطبيقات المطلوبة واستخدامها (Ia6242، b/155482676).
  • تمت إعادة تسمية Modifier. drawBackground إلى Modifier.background (I13677).

الإصدار 0.1.0-dev15

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

تم طرح "androidx.compose.ui:ui-*:0.1.0-dev15". يحتوي الإصدار 0.1.0-dev15 على هذه الالتزامات.

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

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

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

  • تم إيقاف FocusModifier نهائيًا لصالح Modifier.focus وModifier.focusRequester وModifier.focusMonitorer تم إيقاف FocusState وFocusStepState لتحل محله FocusState2 (I46919 وb/160822875 وb/160922136).
  • تمت إضافة معدِّل لملاحظة تغيير حالة التركيز. (I05866 وb/160924455 وb/160923326)
  • تمت إضافة عنصر تعديل لطلب تغييرات التركيز (I8dd73، b/161182057، b/160924778)
  • يمكنك إلغاء الربط من قائمة شريط الأدوات لعرض النسخ والقص واللصق على نحو صحيح. (Id3955)
  • تستخدم الآن خصائص الدلالات ذات القيمة الفردية نمط استدعاء. على سبيل المثال، تمت كتابة 'semantics { تؤثّر = true }' على النحو التالي: semantics { hidden() }. (Ic1afd وb/145951226 وb/145955412)
  • تمت إضافة Modifier.focus بدلاً من FocusModifier (Ib852a، b/160924778)
  • إضافة FloatingToolbar لتحديد حقل النص (Ie8b07)
  • تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لواجهة برمجة التطبيقات ذات الصلة بإدخال المفتاح (I53c0a).
  • تمت إضافة تعليق توضيحي تجريبي لواجهة برمجة التطبيقات لكل واجهات برمجة التطبيقات ذات الصلة بالتركيز (I53b24، b/160903352).
  • تمت إضافة FocusState2 ليحل محل FocusPackageState (I0a3ba, b/160822595)
  • تمت إضافة ميزة AffiliateFocus وهو عبارة عن تعليق توضيحي @OptIn لواجهة برمجة التطبيقات Focus API. (I1544b، b/160820961)
  • تمت إضافة فئة وحدة IntBounds، تمثل حدود وحدات بكسل الصحيحة من التخطيط. تم تحديث واجهة برمجة التطبيقات لـ PopupPositionProvider لاستخدامها. (I0d8d0، b/159596546)
  • يتطلب Applier الآن طريقة clear() للتخلص من التركيبات (Ibe697).
  • تم إيقاف KeyEvent نهائيًا واستبدالها بـ KeyEvent2 (I68730)
  • تمت إضافة علامة اختيارية جديدة useUnmergedTree إلى أدوات البحث التجريبية. (I2ce48)
  • واجهة برمجة تطبيقات Made LayoutNode التجريبية (I4f2e9)
  • تمت إضافة طرق النسخ إلى العديد من أنواع الفئات المضمنة، بما في ذلك:

    • فرق التوقيت
    • حجم الملف
    • النطاق الجغرافي
    • الحركة
    • TransformOrigin

    • طريقة العنصر المصاحب المتوقفة نهائيًا Size.copy لتفضيل طريقة نسخ المثيل (Ife290، b/159905651)

  • تكتسب النوافذ المنبثقة ومربعات الحوار والقوائم الآن مظهر MaterialTheme السياقي (Ia3665، b/156527485)

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

  • تمت إزالة مَعلمة اتجاه التصميم من وحدة القياس للدالة Layout(). ومع ذلك، يتوفّر اتجاه التصميم داخل معاودة الاتصال من خلال كائن نطاق القياس (Ic7d9d).

  • إعادة استخدام معرِّفات التحديد لإعادة الاستخدام (I420e0)

  • تمت إزالة العناصر القابلة للنقر. استخدام Modifier.clickable (I84bdf)

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

  • قبل إجراء هذا التغيير، كان المكوِّن الإضافي لإنشاء المبرمج البرمجي يعترض بشكل غير معتاد عمليات الاستدعاء للدوال الإنشائية داخل دالة @Composable في حال توفُّر (I5205a، b/158123804).

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

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

  • تمت إضافة مَعلمة تعديل في AndroidView القابل للإنشاء. (I48a88، b/158746303)

  • تم إيقاف Semantics() نهائيًا. استخدِم Modifier.semantics() بدلاً من ذلك. (I72407، b/158841414)

  • أضف viewModel() القابل للإنشاء الذي يسمح بإنشاء أو إنشاء ViewModel على نحو مماثل لطريقة عمله في "النشاط" أو "Fragment" (I5fdd1).

  • تم استبدال استخدام IntPx بـ IntPxPosition وInt Offset. تم استبدال IntPxSize بـ IntSize. (Ib7b44)

  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات المقاس، عليك توحيد استخدام فئة Size بدلاً من PxSize. يوفر هذا فوائد إحدى الفئات المضمنة للاستفادة من قيمة طويلة لحزمة 2 من القيم العائمة لتمثيل العرض والارتفاع الممثلين كأعداد عشرية. (Ic0191)

  • من أجل دمج عدد الفئات المستخدمة لتمثيل معلومات تحديد الموضع، عليك توحيد استخدام فئة الإزاحة بدلاً من PxPosition. يوفر هذا فوائد الفئة المضمنة للاستفادة من قيمة طويلة لحزمة 2 من القيم العائمة لتمثيل إزاحة x وy ممثلة كأعداد عشرية. (I3ad98)

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

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

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

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

  • تم إيقاف TestTag نهائيًا الآن. استخدِم Modifier.testTag بدلاً منها. (If5110، b/157173105)

  • تمت إزالة التنفيذ التلقائي لـ ParentDataModifier#modifyParentData، وكان يعادل عدم تنفيذ الواجهة في المقام الأول. (I0deaa)

  • وشركة ScaleFit التي سبق أن تمت إزالتها استخدِم ContentScale بدلاً من ذلك. (Ifbc5b)

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

  • تمت إضافة مكون Dropdownالقائمة في ui-material، وهو تنفيذ قائمة Material Design. (I9bb3d)

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

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

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

  • من خلال عمليات تنفيذ CanvasScope، أصبح هناك الآن فقط DrawScope وContentDrawScope، تم تغيير اسم تطبيق CanvasScope إلى DrawScope. تم تحديث DrawScope لتنفيذ واجهة Density وتوفير LayoutDirection وحذف الفئة الفرعية DrawScope في ContentDrawScope تم تعديل "Painter" وPainterModifier على التوقف عن الاحتفاظ بخاصية RTL في حد ذاتها، لأن DrawScope يوفّر ذلك يدويًا بدون تقديمه يدويًا (I1798e)

  • يميز أداة DoubleTapAnimationFilter الآن SingleTapمكانFilter على الشجرة. (If92b1)

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

  • تم تغيير واجهة برمجة التطبيقات لمعدِّلات DrawLayer: تمت إعادة تسمية outlineShape من خلال إعادة تسمية شكله إلى الشكل ويحتوي على القيمة التلقائية RectangleShape وأصبح الآن غير قابل للقيم، تمت إعادة تسمية filterToOutline إلى مقطع، وتمت إزالة filterToBounds لأنّه هو نفسه المقطع == true مع RectangleShape (I7ef11، b/155075735).

  • تم تحديث واجهات برمجة التطبيقات ذات المستوى الأعلى التي تعرض "لوحة الرسم" لعرض CanvasScope بدلاً من ذلك. يؤدي ذلك إلى إزالة حاجة المستهلكين إلى الحفاظ على كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا يطلبون الوصول إلى لوحة رسم، يمكنهم استخدام طريقة إضافة drawCanvas التي توفر معاودة اتصال لإصدار أوامر الرسم من لوحة الرسم الأساسية. (I80afd)

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

  • تم تغيير اسم LayoutModifier2 إلى LayoutModifier. (Id29f3)

  • تمت إزالة واجهة LayoutModifier المتوقفة نهائيًا. (I2a9d6)

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

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

  • تمت إضافة ميزة Modifier.zIndex() الجديدة للتحكّم في ترتيب الرسم للعناصر الثانوية داخل التنسيق الرئيسي نفسه. وتمت إعادة تسمية خاصية الارتفاع في DrawLayerModifier لتصبح shadowElevation ولا تتحكّم في ترتيب الرسم بعد الآن. تم تغيير ترتيب المعلمات لـ DrawShadow: تم تغيير المسقط الرأسي الآن والشكل الثاني مع الإعداد التلقائي RectangleShape. (I20150، b/152417501)

  • تمت إزالة onSizeChange وonPosition Change في المالك. (I5c718)

  • تمت إضافة Constraints2، وهي نسخة من القيود التي لا تدعم سوى قيم Int connstraints بدلاً من IntPx. ستتم إزالة IntPx وسيتم افتراض أن جميع قيود الأعداد الصحيحة هي وحدات بكسل مثل Android.

    • تمت إضافة IntSize أيضًا، والذي سيحل محل IntPxSize في النهاية. (I4b43a)
  • تم جعل المحاذاة قابلة للتحسين باستخدام قيم عشوائية. تمت إضافة محاذاة أحادي الأبعاد. (Ia0c05)

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

  • (I45f09، b/152842521)

    • تغيير اسم ScaleFit إلى ContentScale
    • تم نقل ContentScale من رسومات واجهة المستخدم إلى وحدة واجهة المستخدم الأساسية للعيش في نفس الوحدة مثل واجهة برمجة التطبيقات API.
    • تمت إعادة تسمية FillMaxPrice إلى "الاقتصاص".
    • تم تغيير اسم FillMin المحدّد إلى Fit.
    • تم تغيير اسم Fit إلى Inside لتحسين المطابقة
    • مكافئات ImageView.ScaleType
    • تمت إضافة مستندات تشير إلى أن الجمع بين الاقتصاص والمحاذاة والمحاذاة يؤدي إلى تحقيق نفس النتيجة التي حققها
  • دعم Rtl لمعدِّلات الرسم. (I0aaf9)

  • تم إصدار واجهة برمجة تطبيقات لزيادة عدد مشاهدات Android من ملف XML. يُرجى الاطّلاع على العرض التوضيحي لـ ViewInCompose للحصول على مزيد من التفاصيل. (I42916)

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

    • تم إنشاء نطاق المستلم لـ draw() ContentDrawScope
    • تمت إزالة جميع المعلمات في draw()
    • يحتوي DrawScope على الواجهة نفسها المُستخدَمة في تطبيق CanvasScope.
    • يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
  • تمت إضافة positionInParent وboundsInParent لـ LayoutCoordinates. (Icacdd، b/152735784)

  • أصبح تطبيق DrawLayerModifier و drawLayer() تلقائيًا منبه بصيغة trackToBounds وClipToOutline على false. (I0eb8b، b/152810850)

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

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

  • تم استبدال عامل التشغيل بالإضافة إلى التعديل بوظائف الإضافة على الإعدادات الأصلية (I225e4)

  • تمت إضافة خصائص TranslateX/Y لدعم إزاحة قائمة عرض أوامر الرسم لطبقة معينة. هذا مفيد لنقل المحتوى استجابة للرسوم المتحركة أو أحداث اللمس. (I8641c)

  • تمت إضافة مَعلمتَي pivotX وpivotY إلى واجهات Layer API، لإتاحة التدوير والتحجيم حول نقطة معيّنة على طبقة معيّنة (Icf7c3).

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

  • تمت إضافة LayerModifier، وهو معدِّل يتيح إضافة RenderNode للتنسيق. ويسمح بتعيين الاقتصاص والتعتيم والتدوير والتحجيم والظلال. وسيحل هذا محل RepaintBoundary. (I7100d، b/150774014)

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

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

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

  • تم دمج الكثافة وDensityScope في واجهة واحدة. يمكنك الآن استخدام Density الربط بواقع المحيطات بدلاً من استخدام "amindensity() ". بدلاً من withdensity(density) only with(density) (I11cb1)

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

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

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

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

  • تم إنشاء واجهة برمجة تطبيقات CanvasScope التي تعمل على لفّ عنصر لوحة الرسم لعرض سطح واجهة برمجة تطبيقات للرسم البياني بدون حالة. يتم تضمين عمليات التحويل ضمن نطاق الاستقبال الخاص بها، كما يتم أيضًا تحديد حجم معلومات الحجم وفقًا لحدود الداخلية المقابلة. فلا يتطلب من المستهلك الاحتفاظ بكائن حالة الطلاء الخاص به لتكوين عمليات الرسم.

    • تمت إضافة CanvasScopeعيّن كما تم تحديث التطبيق التجريبي لتضمين عرض توضيحي للرسومات التوضيحية (Ifd86d)
  • تمت إزالة واجهة برمجة تطبيقات MaskFilter غير المستخدمة لأنها محدودة الاستخدام ولم يتم تحسينها لتسريع الأجهزة في معظم حالات الاستخدام (I54f76).

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

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

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

  • تمت إضافة "عدم تعيين اللون" لتمثيل قيمة غير محددة بدون ألوان المربع. (If901a)

  • تمت إضافة طرق التمديد Canvas.rotate وCanvas.scale لاستهلاك الإحداثيات المحورية الاختيارية لعمليات التحويل. تظهر هذه افتراضيًا في الزاوية اليسرى العليا من ترجمة اللوحة الحالية.

    تم أيضًا نقل Canvas.rotateRad ليكون طريقة تمديد للتناسق (Ibaca6)

  • تم إنشاء واجهة برمجة تطبيقات PixelMap لدعم الاستعلام عن معلومات البكسل من ImageAsset. (I69ad6)

  • تمت إعادة تسميته toFrameworkRect/toFrameworkRectF ليصبح toAndroidRect/toAndroidRectF بهدف مطابقة اصطلاح التسمية لإحالات ناجحة العناصر بين الإنشاء وواجهات برمجة تطبيقات إطار العمل في Android التي تم إنشاؤها فوقها. كما تم تحديث المستندات على واجهات برمجة التطبيقات هذه (I86337)

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

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

  • تمت إعادة تسمية الصورة إلى ImageAsset للتمييز بشكل أفضل بين بيانات الصور والصورة القادمة القابلة للإنشاء والتي تُستخدَم للمشاركة في التنسيق والرسم. _Body:تم إنشاء طريقة الإضافة على android.graphics.Bitmap، وBitmap.asImageAsset() ، لإنشاء مثيل لـImageAsset مفيد للجمع بين تطوير تطبيقات Android التقليدي وإطار عمل الإنشاء (Id5bbd)

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

  • تمت إضافة عامل التشغيل TextDecoration.plus (I0ad1a)

  • تمت إزالة Force من قيم تعداد TextDirectionAlgorithm (Icc944).

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

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

  • تمت إضافة AnnotatedString.getString التعليقات التوضيحية التي تعرض جميع التعليقات التوضيحية ضمن النطاق. (I1fa00)

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

  • يتضمّن مؤشر "TextField" رسمًا متحركًا وامضًا (Id10a7).

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

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

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

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

  • تمت إضافة عامل زائد لـ (Text/Paragraph/Span)Style الذي يفوض إلى الدالة integration(). (Ia1add)

  • لم يعد يتم محاذاة الخط FontWeight.lerp. لا تزال فئة بيانات. (I521c2)

  • أصبحت الدالة الإنشائية لوزن الخط عامة الآن، ولم تعد فئة بيانات. (Id6b1f)

  • أضف getLineStart وgetLineEnd وgetEllipsis Offset وgetEllipsisCount إلى TextLayoutResult (Ibc801)

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

  • تمت إزالة فئة الحجم غير المستخدمة نظرًا لوجود فئة حجم مكررة في وحدة هندسة واجهة المستخدم التي يتم استهلاكها. (I1b602)

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

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

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

  • onFocusChange معاودة الاتصال في الحقول النصية التي تمت إعادة تسميتها إلى onFocusChanged (Ida4a1)
  • تم إيقاف كل من تطبيق "VerticalScroller" (التمرير العمودي) و"oriziontal Scroller" نهائيًا. يمكنك استخدام ScrollableColumn و ScrollableRow للحصول على تجربة مضمنة مع سلوك العمود/الصف والمعلمات، أو Modifier.vertical Scroll وModifier.horizontal Scroll على العنصر الخاص بك. وبالمثل، تم إيقاف ScrollerPosition نهائيًا لصالح ScrollState (I400ce وb/157225838 وb/149460415 وb/154105299).
  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607)
  • تمت إعادة تسمية العديد من واجهات برمجة التطبيقات التجريبية لتصبح أكثر سهولة. تمت إعادة تسمية جميع واجهات برمجة تطبيقات FindXYZ إلى onNodeXYZ. تمت إعادة تسمية جميع واجهات برمجة تطبيقات doXYZ إلىperformXYZ. (I7f164)
  • يمكن الآن إنشاء واجهة مستخدم Compose داخل ViewGroups بدون الحاجة إلى إنشاء مجموعة جديدة. راجع ViewInteropDemo للحصول على مثال. (I9ab0b، b/160455080)
  • تمت إضافة sortWith و removeRange إلى MutableVector (Icccf7)
  • يمكنك تنفيذ مؤشرات تحديد السحب لتغيير حقل النص. (I27032)
  • تمت إزالة فئة Shader المضمّنة التي لفَت NativeShader، وهي فئة تتوقع إعادة تسمية NativeShader إلى Shader. لم تضيف الفئة المضمنة Shader التي تم تضمينها أي شيء ذي قيمة إلى سطح واجهة برمجة التطبيقات وكانت فئة مضمنة، لذا استخدم الفئة NativeShader مباشرةً. (I25e4d)
  • PainterModifier المُعاد تصميمها لعدم توفير إمكانية التوسيع بناءً على القيود المعينة ومَعلمة ContentScale. تتمثل عمليات تنفيذ الطلاء في توسيع نطاق محتوى الرسم بنفسها بناءً على الحجم المحدد لـ DrawScope الذي يرسمون فيه.

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

    تم تحديث ImagePainter لتوسيع المحتوى بدلاً من الاعتماد على PainterModifier لإجراء ذلك نيابةً عنها. (I6ba90)

  • إضافة دالة withFrameNanos ذات المستوى الأعلى لتوقيت الرسوم المتحركة (Ie34c5)

  • تم إيقاف التعليق التوضيحي @غير المتتبّع. استبدال بـ @ComposableContract(tracked=false) (Id211e)

  • تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. سيتم أيضًا إيقاف العناصر القابلة للإنشاء في TextField وFilledTextField و CoreTextField التي تستخدم هذا النوع. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005).

  • تم إصلاح المشكلة التي كان من خلالها يؤدي إرسال إدخال المؤشر إلى حدوث عطل في حال إزالة PointerInputFilters من خلال الإنشاء الفرعي أثناء الفصل. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (I1f48b، b/157998762)

  • تم إصلاح المشكلة التي يكون فيها إرسال إدخال المؤشر قد يتسبب في حدوث عطل إذا تمت إزالة PointerInputFilters من خلال الإنشاء الفرعي أثناء التقسيم. نودّ إعلامك بأنه تمّ الآن إصلاح هذه المشكلة. (Iab398، b/157998762)

  • فئة النطاق الجغرافي المُعاد تصميمها لتكون فئة مضمّنة. تمت إزالة طرق الإنشاء المصاحبة لصالح الدالة الإنشائية للدالة ذات المعلمة التلقائية لجعل نصف القطر على المحور y مطابقًا للمعلَمة الإلزامية نصف القطر للمحور x.

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

  • لم يعد العنصر القابل لإعادة الإنشاء إجراءً مفيدًا. يجب أن تحدث معظم عمليات إعادة التركيب كنتيجة لتعيينات MutableState. بالنسبة إلى أي شيء غير ذلك، ننصحك باستخدام الدالة invalidate لتنفيذ عملية إعادة تركيب النطاق الحالي. (Ifc992)

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

  • تعمل هذه السياسة على تغيير استراتيجية إنشاء الرموز البرمجية في برنامج التجميع من Compose. قبل التغيير، كان التحويل البرمجي للإنشاء يقوم بتحويل عمليات الاستدعاء إلى دوال قابلة للإنشاء. بفضل هذا التغيير، نحوِّل الآن نص الدالة القابلة للإنشاء ونترك موقع الاستدعاء بدون تغيير (في الغالب).

    وهذا يعني أن معظم المنطق الذي يتصل بوقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.

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

    لدعم هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للإنشاء. يتم تحويل الدالة القابلة للإنشاء التي تقبل معلمة واحدة إلى دالة تقبل 3 معلَمات، والمعلَمات الإضافية هي Composer، وهو عدد صحيح لـ "المفتاح"، وهو عدد صحيح لقناع بت يُستخدم لنشر البيانات الوصفية من خلال الاستدعاءات.

    تعمل ميزة Compose الآن على تحويل الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون تقديم حمل تلقائي إضافي اصطناعي للدالة نفسها، لذلك سيؤدي هذا التغيير إلى تحديد دوال أقل.

    التغيّرات السلوكية المقصودة المعروفة الناتجة عن ما يلي:

    1. سيتم تخطي بعض المكالمات من حيث لم يكن يتم إجراؤها في السابق
    2. يتم الآن الاشتراك في التعبيرات القابلة للإنشاء في تعبيرات الوسيطات التلقائية ومعالجتها بشكل صحيح.

    تضمّن هذا العمل بعض التحسينات: 1. يتم نشر نتيجة مقارنات المَعلمات من خلال الرسم البياني للاستدعاءات إلى دوال أخرى قابلة للإنشاء. سيؤدي ذلك إلى إجراء مقارنات أقل في وقت التشغيل، وتقليل حجم جدول الخانة، وزيادة عدد تخطي الدوال القابلة للإنشاء التي لم يتم تخطيها في السابق. 2. لن تتم بعد ذلك مقارنة أو تخزين المعلَمات التي تكون "ثابتة" في وقت التشغيل في وقت التشغيل. وهذا يقلل من عدد المقارنات ويقلل من حجم جدول الخانة. 3. تُستخدم بنية تدفق التحكم في نص الدوال لخفض عدد المجموعات التي يتم إنشاؤها. يقلل ذلك من حجم جدول الخانة وينتج عنه جهد أقل في وقت التشغيل. 4- لا يتم تضمين معلمات الإرسال والاستقبال غير المستخدمة إلى الدوال في تحديد قابلية تخطي الدالة إذا لم يتم استخدامها داخل نص الدالة.

    معظم التغييرات التي قد تؤدي إلى الأعطال كانت متعلّقة بواجهات برمجة التطبيقات التي يستهدفها برنامج التجميع مباشرةً، ولن يتأثر الاستخدام النموذجي لميزة "إنشاء": 1. تمت إزالة Composer::startExpr. 2- تمت إزالة Composer::endExpr. 3. Composer::call تم إيقافه نهائيًا 4. تمّت إزالة الحمولات الزائدة غير المتغيّرة في key. يُرجى استخدام إصدار "vararg" من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي المحوري نهائيًا. استخدِم "key" كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقُّع استخدام Function3 بدلاً من Function1. 7. تم تعديل RereableFunction وRestoreableFunctionN من أجل تضمين معلَمات إضافية لوقت تجميع البيانات. (I60756، b/143464846)

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

  • تمت إزالة RepaintBoundary لصالح DrawLayerModifier (I00aa4)

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

  • تم استبدال ButtonStyle بدوال مميزة وإزالة الحمل الزائد للنص (سلسلة نصية). يمكنك الاطّلاع على النماذج المعدَّلة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)

  • تم إجراء تغييرات على واجهة برمجة التطبيقات في أجواء الإضاءة المحيطة. اطّلِع على السجلّ ومستندات Ambient<T> للحصول على التفاصيل (I4c7ee، b/143769776)

  • تم تغيير سلوك TextDirection التلقائي ليتم تحديده بواسطة LayoutDirection. أي إذا كان LayoutDirection هو RTL، سيكون العنوان التلقائي TextDirection هو RTL. في السابق كان التنسيق TextDirection.ContentOrLtr/Rtl (I4e803).

  • إصلاح الخطأ: عند دمج سُمك الخط ونمطه في AnnotatedString، لا يتم عرض النص بشكلٍ صحيح. (I77a9d)

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

  • تمت إعادة تسمية وحدة ui-android-text باسم ui-text-android (I68cbe).