میانای کاربر نوشتن

عناصر اساسی میانای کاربر Compose که برای تعامل با دستگاه لازم است، ازجمله چیدمان، طراحی، و ورودی.
جدیدترین به‌روزرسانی نسخه پایدار نامزد انتشار انتشار نسخه بتا نسخه آلفا
۷ اکتبر ۲۰۲۶ ۱.۱۲.۱ - 1.13.0-beta01 -

ساختار

«ترکیب» ترکیبی از ۷ «شناسه گروه Maven» در androidx است. هر «گروه» حاوی زیرمجموعه هدف‌گذاری‌شده‌ای از عملکرد است که هرکدام مجموعه یادداشت‌های انتشار خود را دارند.

این جدول گروه‌ها و پیوندها به هر مجموعه از یادداشت‌های انتشار را توضیح می‌دهد.

گروهشرح
compose.animationدر برنامه‌های Jetpack Compose خود پویانمایی بسازند تا تجربه کاربری را غنی‌تر کنند.
compose.compilerبا افزونه مترجم Kotlin، توابع @Composable را تبدیل کنید و بهینه‌سازی‌ها را فعال کنید.
compose.foundationبرنامه‌های Jetpack Compose را با واحدهای سازنده آماده استفاده بنویسید و پایه را گسترش دهید تا عناصر سیستم طراحی خودتان را بسازید.
compose.materialبا «عناصر طراحی Material» آماده استفاده، «میاناهای کاربر Jetpack Compose» بسازید. این نقطه ورود سطح بالاتر «نگارش» است که برای ارائه مؤلفه‌هایی طراحی شده است که با مؤلفه‌های شرح‌داده‌شده در www.material.io مطابقت دارند.
compose.material3ساختن میاناهای کاربر Jetpack Compose با «عناصر طراحی سه‌بعدی ۳»، تکامل بعدی «طراحی سه‌بعدی». «طراحی مادی ۳» شامل زمینه‌سازی و عناصر به‌روزرسانی‌شده و ویژگی‌های شخصی‌سازی «طراحی مادی شما» مثل رنگ پویا است و به‌گونه‌ای طراحی شده است که با سبک بصری جدید Android 12 و واسط کاربر سیستم منسجم باشد.
compose.runtimeواحدهای سازنده بنیادی مدل برنامه‌نویسی و مدیریت وضعیت Compose، و زمان اجرای اصلی برای هدف‌یابی «افزایه کامپایلر Compose».
compose.uiعناصر اساسی میانای کاربر Compose که برای تعامل با دستگاه لازم است، ازجمله چیدمان، طراحی، و ورودی.

اعلام وابستگی‌ها

برای افزودن وابستگی به Compose، باید مخزن Google Maven را به پروژه‌تان اضافه کنید. برای اطلاعات بیشتر، مخزن Maven در Google را بخوانید.

وابستگی‌های آرتیفکت‌های موردنیازتان را در فایل build.gradle برای برنامه یا واحدتان اضافه کنید:

شیک

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

کاتلین

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

برای اطلاعات بیشتر درباره وابستگی‌ها، افزودن وابستگی‌های ساخت را ببینید.

بازخورد

بازخوردتان به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی پیدا کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل‌از ایجاد کتابخانه جدید، مشکلات موجود در این کتابخانه را بررسی کنید. با کلیک کردن روی دکمه ستاره می‌توانید رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد مشکل جدید

برای کسب اطلاعات بیشتر، به مستندات «پیگیری مسائل» مراجعه کنید.

نسخه ۱.۱۳

نسخه 1.13.0-beta01

۷ اکتبر ۲۰۲۶

‫androidx.compose.ui:ui-*:1.13.0-beta01 منتشر شد. نسخه 1.13.0-beta01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫Modifier.interactionBarrier() از سطح API عمومی برای نسخه ۱.۱۳ برگردانده شد. (I47974، b/564575045، b/347038246)
  • ‫PolygonShape «میانای برنامه‌سازی کاربردی» به‌روزرسانی شد: CornerRounding با کارخانه‌های dp() و fraction() به سطح بالا منتقل شد، افزونه‌های transformed() و scaledToFit() با PolygonShape.transform(PolygonShapeTransformScope.() -> Unit) و PolygonShape.copy() تغییرپذیر درجا جایگزین شد. (If5970)
  • ‫onValueChange اکنون در Slider، VerticalSlider، و RangeSlider پارامتر الزامی است. ‫APIs منسوخ‌شده‌ای را که قبلاً در سراسر Slider و RangeSlider پنهان شده بودند برداشته شد، ازجمله پیاده‌سازی DraggableState در SliderState و سربارهای Saver قدیمی. ‫isVertical از SliderState برداشته شد. ‫SliderDefaults.Thumb منسوخ‌شده SliderState را به‌نفع isVertical سرریز می‌کند. (I3fdc1)
  • کلاس Posture در MediaQuery با WindowPosture جایگزین شده است که WindowFold فیزیکی (FoldState و FoldOrientation) را آشکار می‌کند. ویژگی‌های راحتی isTabletop و isFlat در WindowPosture اضافه شده است و وضعیت «کتاب» صریح برداشته شده است. (Id9e8e)
  • کتابخانه‌ها اکنون Kotlin 2.2 را هدف‌یابی می‌کنند و به kotlinc 2.2 نیاز دارند (I82396، b/498369605)
  • ‫@FloatRange به BlurStop.fraction اضافه شد، fallOffRadius پیش‌فرض در BlurRadiusSpec.radialGradient به Dp.Unspecified تغییر کرد، نام پارامتر radius در Modifier.blur به blurRadiusSpec تغییر کرد، و نام BlurScope.radius به blurRadiusSpec تغییر کرد. (I91dbc, b/556335791)

رفع اشکال‌ها

  • ‫IllegalArgumentException (LayoutNode در RectList پیدا نشد) وقتی خطوط تراز درطول اندازه‌گیری پُرسمان می‌شود برطرف شد. (Icec9e، b/549552303)
  • اکنون VectorPainter هنگام پرداز کردن ImageVector یکسان در چندین عنصر ترکیبی، منابع گرافیکی داخلی (ImageBitmap) را هم‌رسانی خواهد کرد. این کار باعث کاهش بارگذاری‌های بافت اضافی و استفاده از حافظه می‌شود و عملکرد را در سناریوهایی مانند فهرست‌هایی که از نمادهای تکراری استفاده می‌کنند بهبود می‌بخشد. این بهینه‌سازی را می‌توان ازطریق ComposeUiFlags.isVectorDrawCacheSharingEnabled غیرفعال کرد. (I91b41)
  • اشکالی برطرف شد که در آن AndroidTextPaint.setTextMotion هنگام انتقال به FontHinting یا None linearity،‏ LINEAR_TEXT_FLAG را پاک نمی‌کرد. (I8c19c)
  • مشکلی رفع شد که در آن تمرکز کاوش لمسی TalkBack می‌توانست به AndroidView جاسازی‌شده (مثل WebView) که با محتوای «میانای کاربری Compose» پوشیده شده بود بپرد. (I11372، b/561099702)
  • مشکلی برطرف شد که در آن تماس با Color.toColorLong() یا تنظیم رنگ ترکیبی روی Color.Unspecified در «نقاشی» می‌توانست با IllegalArgumentException ازکار بیفتد. (Ia365b، b/557521315)
  • ‫androidx.lifecycle:lifecycle-runtime پیش‌نیاز به نسخه ۲.۱۰.۰ به‌روزرسانی شد. این نسخه برای اجرای بررسی‌های لینت زمان اجرای چرخه حیات دسته‌ای با AGP نسخه ۹.۵.۰-alpha04 یا جدیدتر الزامی است. (I99bfd، b/556807521)
  • استخراج پارامتر ثابت در ابزار برای عناصر ترکیبی با بیش‌از ۱۰ پارامتر. (Ib167d)
  • رفع مشکلی که باعث می‌شد گره‌های چیدمان غیرفعال از صف چیدمان پاک نشوند و درنتیجه هنگام اندازه‌گیری مجدد ازکار بیفتد. (Ie64a5)

نسخه 1.13.0-alpha03

۹ سپتامبر ۲۰۲۶

‫androidx.compose.ui:ui-*:1.13.0-alpha03 منتشر شد. نسخه 1.13.0-alpha03 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • فیلدهای نوشتاری «مطلب ۲» که value, onValueChange پارامتر را می‌پذیرند منسوخ شده‌اند. لطفاً به سرباری که از TextFieldState برای بالا بردن وضعیتش استفاده می‌کند انتقال دهید. (I6b841، b/556234973)
  • پیش‌از ایجاد اولین ریشه Compose، میانای برنامه‌سازی کاربردی مشترکی اضافه کنید تا WindowInsetsRulers را به‌صورت سراسری غیرفعال کند. منسوخ کردن Android only ComposeView.disableWindowInsetsRulers() به‌نفع WindowInsetsRulers.disable() مشترک (Iadc8f)
  • توابع افزونه PolygonShape.transformed و PolygonShape.scaledToFit را در «پایه Compose» برای تبدیل و برازش شکل‌های چندضلعی اضافه می‌کند. (I3f327)
  • توصیف‌گر تابع LineHeight.Trim.isTrimLastLineBottom() را به LineHeight.Trim.trimsLastLineBottom و LineHeight.Trim.isTrimFirstLineTop را به LineHeight.Trim.trimsFirstLineTop تغییر نام داد (I02211)
  • ‫boundsAssertionTolerance به PlatformTestConfig در ComposeUiTestConfig.platform اضافه شد و به آزمایش‌ها اجازه می‌دهد تا رواداری ادعای حدود پیش‌فرض را در سطح محیط/قانون پیکربندی کنند. (I7819d، b/545673912)
  • ‫BasicTextField سربار که value, onValueChange پارامتر را می‌پذیرد منسوخ شده است. لطفاً به سربار BasicTextField که از TextFieldState برای بالا بردن وضعیتش استفاده می‌کند انتقال دهید. (I636bf, b/552879150)
  • هم‌زمان با BasicTextField(value, onValueChange)، VisualTransformation نیز منسوخ شده است زیرا فقط ازطریق این طعم TextField آشکار می‌شود. تبدیل‌های موجود باید به OutputTransformation منتقل شوند. (I636bf, b/552879150)
  • ‫LineHeightStyle.Mode.PerLine اضافه شد تا ارتفاع خط برای هر خط به‌طور مستقل محاسبه شود و از اندازه‌های قلم متفاوت در یک پاراگراف بدون هم‌پوشانی پشتیبانی شود. (I41738)
  • ارائه LazyLayoutCacheWindow و LazyListPrefetchStrategy ازطریق LazyListState منسوخ شده است و به‌جای آن LazyLayoutCacheWindow به تابع ترکیب‌شدنی ارائه می‌شود. (I71f19)
  • ‫Modifier.blur { ... } API برای پشتیبانی از محو شدن تدریجی (برای نمونه، گرادیان‌ها و سایه‌زن‌های سفارشی) اضافه شد (Ie6595، b/481685669)
  • «توصیف‌گر» اضافه شد.interactionBarrier() برای مسدود کردن تعامل‌های لمسی، تمرکز، و دسترس‌پذیری. (I7c1b7, b/347038246)
  • ‫isCrossWindowBlurEnabled خصوصیت افزونه در WindowInfo اضافه شد تا به توسعه‌دهندگان اجازه دهد وضعیت محو کردن بین پنجره‌ای در سراسر سیستم را در Android پُرسمان و مشاهده کنند. (If38e2، b/538405295)
  • ‫LocalWindow CompositionLocal اضافه شد تا بازیابی شیء android.view.Window کنونی مجاز شود و کنترل «میاناهای برنامه‌سازی کاربردی» سطح پنجره از درون «ترکیب‌پذیرها» آسان‌تر شود. (I4d4ff، b/221889664)

رفع اشکال‌ها

  • به‌طور پیش‌فرض isMinimalistLocalsEnabled فعال است. (Ibb4eb، b/523295932)
  • بهینه‌سازی ارتفاع تک‌خط به‌طور پیش‌فرض فعال شد. این کار ممکن است باعث چند پیکسل اختلاف در برخی‌از سنجه‌های نوشتاری مثل ارتفاع یا مسیر انتخاب شود (I5575a)
  • ‫compileSdk برای کتابخانه‌های Compose به نسخه ۳۷.۱ به‌روز شد. این کار مستلزم به‌روزرسانی انتقالی compileSdk برای همه برنامه‌ها و کتابخانه‌هایی است که از Compose استفاده می‌کنند. (I05b0f)
  • رفع مشکلی که باعث می‌شد درطول حرکت به عقب پیش‌بینانه، WindowInsetsRulers درونه‌گذاری‌های IME به‌عنوان متحرک علامت‌گذاری نشوند، و رفع مشکلی که باعث می‌شد imePadding هنگام تغییر کانون بین فیلدهای نوشتاری به‌روزرسانی نشود. (Id4562، b/537386261، b/539686000)
  • رفع مشکلی که باعث می‌شد وقتی ComposeView در ViewGroup استاندارد Android میزبانی می‌شد، اشاره‌های جمع کردن در پد لمسی نادیده گرفته شود. (I80f79)

همیاری خارجی

  • وقتی ComposeView جدا و دوباره به یک قاب متصل می‌شد، برای مثال وقتی با removeView و addView دوباره مرتب می‌شد، نشت «فعالیت» برطرف شد. (Ib5129، b/547675867)

نسخه 1.13.0-alpha02

۲۶ اوت ۲۰۲۶

‫androidx.compose.ui:ui-*:1.13.0-alpha02 منتشر شد. نسخه 1.13.0-alpha02 شامل این تغییرات است.

تغییرات میانای برنامه‌سازی کاربردی

  • دارایی معنایی جدید BackgroundColor برای Modifier.background (I7eec3، b/518049030) اضافه شد
  • اکنون می‌توانید Vertices را از آرایه‌های ابتدایی موجود ایجاد کنید. (Ifaba8، b/496412761)
  • اکنون VectorPainter هنگام پرداز کردن ImageVector یکسان در چندین عنصر ترکیبی، منابع گرافیکی داخلی (ImageBitmap) را هم‌رسانی خواهد کرد. این کار باعث کاهش بارگذاری‌های بافت اضافی و استفاده از حافظه می‌شود و عملکرد را در سناریوهایی مانند فهرست‌هایی که از نمادهای تکراری استفاده می‌کنند بهبود می‌بخشد. این بهینه‌سازی را می‌توان ازطریق ComposeUiFlags.isVectorDrawCacheSharingEnabled غیرفعال کرد. (I35639،‏ b/331283180)
  • افزودن دستیار requestFocusForChildInLocalBounds (Ib1a48)

نسخه 1.13.0-alpha01

‫۱۲ اوت ۲۰۲۶

‫androidx.compose.ui:ui-*:1.13.0-alpha01 منتشر شد. نسخه 1.13.0-alpha01 شامل این تغییرات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پرچم ویژگی isVelocityTrackerMinSampleSizeFixEnabled را اضافه می‌کند (Ic9b51، b/533444810، b/533775739، b/523705159)
  • کلاس گزارمان ExperimentalVelocityTrackerApi منسوخ برداشته شد. (I6f9c6، b/483449576)
  • برداشتن پرچم isClearNestedScrollCoroutineScopeFixEnabled (Iedfd7، b/506963276)
  • ‫TextFieldState اکنون اطلاعات سبک نوشتار را ذخیره و بازیابی می‌کند. ‫AnnotatedString.Annotation.Saver اکنون عمومی است تا امکان ذخیره و بازیابی AnnotatedString.Annotation شیء فراهم شود. (I8b533، b/135556699)
  • ‫TestFailurePolicy و TestFailureHandler در ComposeTestConfig معرفی شد تا از مدیریت‌کننده‌های رویداد خطای سفارشی و زمینه آرتیفکت خطا در آزمایش‌های واسط کاربر Compose پشتیبانی کند. (Ib1a85،‏ b/414802953،‏ b/291106656،‏ b/430644575)
  • ‫SemanticsProperties.alpha اضافه شد تا مقادیر آلفای والد-فرزند ترکیبی حل‌وفصل‌شده گره‌های چیدمان برای آزمایش نشان داده شود. (Ifddb6، b/524035059)
  • سربارهای createComposeRule، createAndroidComposeRule، و createEmptyComposeRule را در بسته ui-test-junit4 نسخه ۲ که پارامترهای تکی می‌گیرند منسوخ کرد. از سربارهای پذیرنده ComposeUiTestConfig یا سربارهای بدون پارامتر که از ComposeUiTestConfig پیش‌فرض استفاده می‌کنند استفاده کنید. توجه داشته باشید که ComposeUiTestConfig پیش‌فرض در ابتدای هر آزمایش، حالت ورودی اولیه را روی InputMode.Touch تنظیم می‌کند. این امر ممکن است باعث شود آزمایش‌های موجود که انتظار حالت صفحه‌کلید (InputMode.Keyboard) را دارند ناموفق باشند. برای اصلاح آزمایش‌های تحت‌تأثیر قرارگرفته، ComposeUiTestConfig(inputMode = InputMode.Keyboard) را به‌طور صریح ارسال کنید و هرگونه منطق راه‌اندازی دستی را برای حالت‌های ورودی بردارید. یا می‌توانید AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false را تنظیم کنید تا تنظیم حالت ورودی پیش‌فرض در ابتدای هر آزمایش به‌طور موقت غیرفعال شود و رفتار قدیمی درحین انتقال آزمایش‌هایتان حفظ شود. این پرچم در آینده برداشته خواهد شد، بنابراین اگر فقط تعداد کمی از آزمایش‌ها ناموفق باشند، توصیه می‌شود آزمایش‌ها را مستقیماً با تغییر پیکربندی‌شان حل کنید. (Idfb86, b/504195741)
  • فراخوانی‌های بدون آرگومان به createComposeRule و createAndroidComposeRule (برای نمونه، createComposeRule() یا createAndroidComposeRule<MyActivity>()) اکنون از ComposeUiTestConfig پیش‌فرضی استفاده می‌کنند که حالت ورودی اولیه را در ابتدای هر آزمایش روی InputMode.Touch تنظیم می‌کند و تضمین می‌کند که دستگاه در وضعیت پاکی قرار دارد و تغییرات حالت ورودی قبلی به آزمایش‌های بعدی منتقل نمی‌شود. بااین‌حال، این حالت لمسی پیش‌فرض جدید ممکن است باعث شود آزمایش‌های موجود که انتظار حالت صفحه‌کلید (InputMode.Keyboard) را دارند با شکست مواجه شوند. برای اصلاح آزمایش‌های تحت‌تأثیر قرارگرفته، ComposeUiTestConfig(inputMode = InputMode.Keyboard) را به‌طور صریح ارسال کنید و هرگونه منطق راه‌اندازی دستی را برای حالت‌های ورودی بردارید. یا می‌توانید AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false را تنظیم کنید تا تنظیم حالت ورودی پیش‌فرض در ابتدای هر آزمایش به‌طور موقت غیرفعال شود و رفتار قدیمی درحین انتقال آزمایش‌هایتان حفظ شود. این پرچم در آینده برداشته خواهد شد، بنابراین اگر فقط تعداد کمی از آزمایش‌ها ناموفق باشند، توصیه می‌شود آزمایش‌ها را مستقیماً با تغییر پیکربندی‌شان حل کنید. (Idc4dd, b/267253920, b/504195741)
  • روش‌های پایه خالی قابل‌لغو با @EmptySuper در سراسر Compose حاشیه‌نویسی شده است تا نشان دهد پیاده‌سازی‌های لغوکننده نباید از super فراخوانی کنند. (Id407b)
  • ‫ExposedDropdownMenu اکنون به‌جای عضو، تابع افزونه‌ای در ExposedDropdownMenuBoxScope است. ممکن است لازم باشد کدتان را با وارد کردن جدیدی به‌روز کنید. (Ie8a65، b/356452026)
  • ‫blurBehindRadius،‏ backgroundBlurRadius،‏ scrimAlpha، و windowShape دارایی را به DialogProperties و blurBehindRadius و scrimAlpha را به PopupProperties اضافه کرد. توسعه‌دهندگان اکنون می‌توانند محو پس‌زمینه، محو پنجره، و کدورت scrim را مستقیماً در «کادر گفتگو» و «بالاپرها» پیکربندی کنند. تنظیم windowShape اجازه می‌دهد پس‌زمینه پنجره گفتگوی برش به گوشه‌های گرد محو شود. (I5d437)
  • پرچم ویژگی برداشته شد - اکنون دکمه‌های «نوشتن» به‌درستی تمرکز دسترس‌پذیری را حفظ می‌کنند و وقتی «کاوش با لمس» فعال است، سوسو نمی‌زنند، زیرا رویدادهای نگه‌داشتن به‌درستی به‌عنوان مدیریت‌شده علامت‌گذاری می‌شوند. (Ib1c80)
  • سربار ادغام به FontVariation.Settings اضافه شد تا مجموعه‌های تنظیمات دیگر ادغام شود یا تنظیمات در خط لغو شود. (I6340c)
  • ‫variationSettings در میانای «قلم» نمایان شد و به‌طور پیش‌فرض روی FontVariation.Empty جدید تنظیم شد. سازنده vararg FontVariation.Settings را بهینه‌سازی کرد تا از asList() برای جلوگیری از تخصیص‌های کپی آرایه استفاده کند. (I9c22f)
  • دارایی NestedScrollDispatcher.coroutineScope به‌روزرسانی شد تا CoroutineScope لغوشده را هنگام جدا شدن یا جدا شدن ایمن برگرداند. (I9b112، b/535290281)
  • سربارهای runComposeUiTest، runAndroidComposeUiTest، و AndroidComposeUiTestEnvironment را که پارامترهای effectContext، runTestContext، و testTimeout را به‌صورت جداگانه می‌گیرند منسوخ کرد. از سربارهای پذیرنده ComposeUiTestConfig یا سربارهای بدون پارامتر که از ComposeUiTestConfig پیش‌فرض استفاده می‌کنند استفاده کنید. توجه داشته باشید که ComposeUiTestConfig پیش‌فرض در ابتدای هر آزمایش، حالت ورودی اولیه را روی InputMode.Touch تنظیم می‌کند. این امر ممکن است باعث شود آزمایش‌های موجود که انتظار حالت صفحه‌کلید (InputMode.Keyboard) را دارند ناموفق باشند. برای اصلاح آزمایش‌های تحت‌تأثیر قرارگرفته، ComposeUiTestConfig(inputMode = InputMode.Keyboard) را به‌طور صریح ارسال کنید و هرگونه منطق راه‌اندازی دستی را برای حالت‌های ورودی بردارید. یا می‌توانید AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false را تنظیم کنید تا تنظیم حالت ورودی پیش‌فرض در ابتدای هر آزمایش به‌طور موقت غیرفعال شود و رفتار قدیمی درحین انتقال آزمایش‌هایتان حفظ شود. این پرچم در آینده برداشته خواهد شد، بنابراین اگر فقط تعداد کمی از آزمایش‌ها ناموفق باشند، توصیه می‌شود آزمایش‌ها را مستقیماً با تغییر پیکربندی‌شان حل کنید. (Ia6d55، b/504195741)
  • تماس با runComposeUiTest، runAndroidComposeUiTest، و AndroidComposeUiTestEnvironment که فقط یک لامبدای دنباله‌دار دارند اکنون از ComposeUiTestConfig پیش‌فرض استفاده می‌کنند که حالت ورودی اولیه را در ابتدای هر آزمایش روی InputMode.Touch تنظیم می‌کند و تضمین می‌کند که دستگاه در وضعیت پاکی قرار دارد و از نشت تغییرات حالت ورودی قبلی در آزمایش‌ها جلوگیری می‌کند. بااین‌حال، این حالت لمسی پیش‌فرض جدید ممکن است باعث شود آزمایش‌های موجود که انتظار حالت صفحه‌کلید (InputMode.Keyboard) را دارند با شکست مواجه شوند. برای اصلاح آزمایش‌های تحت‌تأثیر قرارگرفته، ComposeUiTestConfig(inputMode = InputMode.Keyboard) را به‌طور صریح ارسال کنید و هرگونه منطق راه‌اندازی دستی را برای حالت‌های ورودی بردارید. یا می‌توانید AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false را تنظیم کنید تا تنظیم حالت ورودی پیش‌فرض در ابتدای هر آزمایش به‌طور موقت غیرفعال شود و رفتار قدیمی درحین انتقال آزمایش‌هایتان حفظ شود. این پرچم در آینده برداشته خواهد شد، بنابراین اگر فقط تعداد کمی از آزمایش‌ها ناموفق باشند، توصیه می‌شود آزمایش‌ها را مستقیماً با تغییر پیکربندی‌شان حل کنید. (I8c85d، b/504195741)
  • ‫ @CheckResult به SemanticsNodeInteraction.isDisplayed() و isNotDisplayed() اضافه شد تا مطمئن شویم مقادیر برگشتی آن‌ها تأیید می‌شود و درنتیجه وقتی توسعه‌دهندگان به‌اشتباه از آن‌ها به‌جای میاناهای برنامه‌سازی کاربردی تأیید استفاده می‌کنند، از خطاهای آزمایشی بی‌صدا جلوگیری شود. (I1b447، b/508178494)
  • پرچم AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabled باعث می‌شود ViewGroup حاوی AndroidViews فقط زمانی نمونه‌سازی شود که AndroidView برای بهبود عملکرد ComposeViews که AndroidViews ندارند اضافه شود. وقتی پرچم غیرفعال باشد، ViewGroup حاوی آن هنگام پیوستن ComposeView به پنجره نمونه‌سازی و پیوست می‌شود. ‫(I306a3،‏ b/524283041)
  • ‫coroutineScopeOrNull() را در NestedScrollDispatcher معرفی کنید، میانای برنامه‌سازی کاربردی جایگزینی برای دسترسی به محدوده روال هم‌زمان اصلی توزیع‌کننده. (I18c0f)
  • ‫clearCallbacks را به runAndClearCallbacks تغییر دهید تا مطمئن شوید کنش‌های پاک‌سازی همیشه اجرا می‌شوند. (If4720،‏ b/526700075)
  • نام ComposeTestConfig به ComposeUiTestConfig تغییر کرده است و از بسته v2 به بسته والد androidx.compose.ui.test منتقل شده است. (I1d2a1, b/504195741)
  • پارامتر timeoutMillis (پیش‌فرض روی ۲۰۰۰ میلی‌ثانیه تنظیم شده است) به SemanticsNodeInteraction.captureToImage() اضافه شد تا امکان پیکربندی درنگ سفارشی هنگام انتظار برای عبور از بازطراحی فراهم شود. (Ib7d62، b/249501063)
  • اطلاعات تاریخی را به تغییرات ورودی اشاره‌گر غیرمستقیم اضافه می‌کند (Ie62d2، b/526961645)
  • دارایی معنایی hintText جدیدی برای نشان دادن نوشتار راهنمایی در فیلدهای نوشتاری اضافه شد که با نگاشت به AccessibilityNodeInfo، پشتیبانی از دسترس‌پذیری را بهبود می‌بخشد.hintText. (Ib65da، b/448376876)
  • وضوح CompositionLocal را با حل کردن آن‌ها به‌صورت پویا از LocalOwner و LocalAndroidComposeView درصورت نیاز بهینه‌سازی کردیم، که می‌توان بااستفاده از ComposeUiFlags.isMinimalistLocalsEnabled آن را روشن/خاموش کرد. (I2bf6d)
  • ‫androidx.benchmark اکنون minSdk برابر با ۲۴ دارد. (Ic2a85)
  • پرچم آزمایشی isPropagateHideFromAccessibilityToMergingChildrenEnabled به AndroidComposeUiFlags اضافه شد تا انتشار hideFromAccessibility به فرزندان ادغام‌شده را کنترل کند. (Ie41ff، b/483506400)
  • ‫ComposeUiTest تبلیغ‌شده و میاناهای برنامه‌سازی کاربردی آزمایش مرتبط (ازجمله ComposeTestRule و waitUntil گونه) از «آزمایشی» به «پایدار». (Iaec77، b/471148519، b/485124363)
  • ترتیب پیمایش TalkBack در گروه‌های پیمایش ادغام‌شده اصلاح شد. درصورت لزوم، با غیرفعال کردن AndroidComposeUiFlags.isTraversalGroupSortingEnabled می‌توانید این تغییر را برگردانید. (I5ae09، b/285043826)
  • تابع کمکی آزمایشی و قدیمی IndirectPointerEvent را برمی‌دارد. (I05dee، b/499336763، b/501098299، b/501098376، b/513249467)
  • جایگزین کردن ‎ @AnimationToolingApi آزمایشی با ‎ @RestrictTo API که تضمین‌های ردیابی دقیق‌تری دارد. (Ia4fd1, b/524317805)
  • گزینشگر onDescendants() را اضافه کرد تا همه گره‌های معنایی را در زیردرخت یک گره معین پیدا کند. (Id6b9b, b/444588117)
  • میاناهای برنامه‌سازی کاربردی دستیار waitUntilNodeCount، waitUntilAtLeastOneExists، waitUntilExactlyOneExists، و waitUntilDoesNotExist که useUnmergedTree را نمی‌پذیرند منسوخ شده‌اند. سربارهای جدیدی اضافه شد که useUnmergedTree را می‌پذیرد تا از انتظار برای گره‌ها در درخت معنایی ادغام‌نشده پشتیبانی کند. (If675f، b/268432145)
  • پارامتر tolerance به SemanticsNodeInteraction ادعای اندازه و موقعیت (assertWidthIsEqualTo،‏ assertHeightIsEqualTo،‏ assertTouchWidthIsEqualTo،‏ assertTouchHeightIsEqualTo،‏ assertPositionInRootIsEqualTo،‏ assertTopPositionInRootIsEqualTo،‏ assertLeftPositionInRootIsEqualTo) اضافه شد تا توسعه‌دهندگان بتوانند آستانه مقایسه را پیکربندی کنند و استحکام آزمایش را در تراکم‌های مختلف صفحه‌نمایش بهبود دهند. (I3a477، b/202752461)
  • آزمایش Compose اکنون از همگام‌سازی رشته اصلی پشتیبانی می‌کند. اکنون می‌توانید به‌طور ایمن APIهای همگام‌سازی (مثل waitForIdle() و runOnIdle()) را فراخوانی کنید و ادعاها یا کنش‌های Compose را مستقیماً در برگشت‌های رشته اصلی/رابط کاربری اجرا کنید. (I0247a, b/498478569)
  • مدل پیکربندی جدیدی (ComposeTestConfig) برای «میاناهای برنامه‌سازی کاربردی» آزمایشی Compose معرفی شد تا مدیریت پارامتر ساده‌تر شود و مقیاس‌پذیری بهبود یابد. پشتیبانی از پیکربندی مستقیم حالت ورودی (لمسی/صفحه‌کلید) ازطریق ComposeTestConfig اضافه شد. این کار باعث می‌شود راه‌اندازی و بازنشانی به‌طور خودکار انجام شود و از ناپایداری آزمایش به‌دلیل نشت وضعیت جلوگیری شود. سربارهای جدیدی برای run*ComposeUiTest و create*ComposeRule اضافه شد که شیء ComposeTestConfig را می‌پذیرند. (Ia3da9، b/267253920، b/504195741)
  • با تغییر نمایش زیربنایی از String به Int، خرابی در «پیش‌نمایش نوشتن» هنگام استفاده از PreviewParameterProvider با ویژگی‌های «پُرسمان رسانه» (Posture، PointerPrecision، و غیره) برطرف شد. (Ic8f92, b/489939558)
  • پارامتر includeInputText به hasTextExactly و assertTextEquals اضافه شد تا مطابقت دقیق در نوشتار ورودی خام درکنار نوشتار تصویری فعال شود. (Iee329، b/519026043)

رفع اشکال‌ها

  • ‫SaveableStateRegistry.performSave() برای جلوگیری از HashMap تخصیص بهینه‌سازی شد. از ScatterMap به‌صورت داخلی استفاده می‌کند. (I7d510)
  • رنگ‌های نوشتار در AccessibilityNodeInfo.ExtraRenderingInfo برای عناصر ترکیبی نوشتاری درج شد. (I11c94، b/518049030)
  • رفع مشکلی که باعث می‌شد دسترسی به NestedScrollDispatcher.coroutineScopeOrNull درحین جدا کردن گره چیدمان، به‌جای برگرداندن null، باعث پرتاب IllegalStateException شود. (I55634،‏ b/533444810)
  • مقداردهی اولیه بهینه‌سازی‌شده سطح فایل برای compose:ui مشخصه‌های کلاس مقدار سطح بالا بااستفاده از دریافت‌کننده‌های پویا. (I34184)
  • بااستفاده از دریافت‌کننده‌های پویا، مقداردهی اولیه شیء همراه بهینه‌سازی‌شده ui-unit کلاس مقدار (TextUnit). (If4a99)
  • بااستفاده از دریافت‌کننده‌های پویا، مقداردهی اولیه شی همراه بهینه‌سازی‌شده ui-graphics کلاس مقدار (BlendMode، Color، و غیره). (Iaa86a)
  • مقداردهی اولیه شیء همراه بهینه‌سازی‌شده compose:ui:ui دسته‌های مقدار (Key،‏ CompositingStrategy، و غیره) بااستفاده از دریافت‌کننده‌های پویا. (I1a340)
  • مقدار نوشتاری compose:ui کلاس‌های مقدار نوشتاری (TextAlign، TextOverflow، ImeAction، و غیره) بااستفاده از دریافت‌کننده‌های پویا بهینه‌سازی شد. (I776e0)
  • مقداردهی اولیه بهینه شیء همراه compose:ui ابزار و کلاس‌های مقدار آزمایش (AnimatedVisibilityState، MouseButton، ScrollWheel) بااستفاده از دریافت‌کننده‌های پویا. (I23e1b)
  • مقدار واحد کلاس‌های compose:ui شی همراه بهینه‌سازی‌شده (Dp، DpOffset، TextUnitType، و غیره) بااستفاده از دریافت‌کننده‌های پویا. (If5eb5)
  • مقدار هندسه کلاس‌های compose:ui شیء همراه بهینه‌سازی‌شده (Offset،‏ Size،‏ CornerRadius) بااستفاده از دریافت‌کننده‌های پویا. (I3b110)
  • مقداردهی اولیه بهینه شیء همراه compose:ui کلاس‌های مقدار (Role،‏ FocusDirection،‏ PointerEventType، و غیره) بااستفاده از دریافت‌کننده‌های پویا. (Ie35dd)
  • برای جلوگیری از گذرگاه‌های غیرضروری طرح‌بندی کند، BaselineShift.None و BaselineShift.Unspecified و BaselineShift(0f) را به‌درستی مدیریت کنید. ‫(I4350c)
  • مشکلی برطرف شد که در آن مقادیر Dp حاوی صفر منفی (۰٫۰-) در مقایسه‌ها یا بررسی‌های برابری با مقایسه‌ها یا بررسی‌های برابری نقطه شناور رفتار متفاوتی داشتند. (I7dbcf, b/525506543)
  • اطلاعات میانای برنامه‌سازی کاربردی را پاک می‌کند (Ia8066)

همیاری خارجی

  • ‫Alignment.topRatio،‏ Trim.isTrimFirstLineTop()، و Trim.isTrimLastLineBottom() اکنون میانای برنامه‌سازی کاربردی عمومی هستند (I84f62)

نسخه ۱.۱۲

نسخه ۱.۱۲.۱

۹ سپتامبر ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.1 منتشر شد. نسخه ۱.۱۲.۱ شامل این تعهدات است.

نسخه ۱.۱۲.۰

‫۱۲ اوت ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.0 منتشر شد. نسخه ۱.۱۲.۰ شامل این تعهدات است.

### قلم‌های متغیر قابل‌بارگیری و راه‌اندازی بدون پیکربندی (ui-text-google-fonts)

• قلم‌های متغیر و گواهینامه‌های GMS بدون پیکربندی!

    import androidx.compose.ui.text.font.FontFamily                                                                                                                                                                         
    import androidx.compose.ui.text.font.FontVariation                                                                                                                                                                      
    import androidx.compose.ui.text.googlefonts.Font                                                                                                                                                                        
    import androidx.compose.ui.text.googlefonts.GoogleFont                                                                                                                                                                  
                                                                                                                                                                                                                            
    val fontFamily = FontFamily(                                                                                                                                                                                            
        Font(                                                                                                                                                                                                               
            googleFont = GoogleFont("Google Sans Flex"),                                                                                                                                                                    
            // Automatically uses default GMS certificates!                                                                                                                                                                 
            variationSettings = FontVariation.Settings(                                                                                                                                                                     
                FontVariation.weight(900),                                                                                                                                                                                  
                FontVariation.slant(0f)                                                                                                                                                                                     
            )                                                                                                                                                                                                               
        )                                                                                                                                                                                                                   
    )
──────                                                                                                                                                                                                                  

### پشتیبانی از طیف رنگ گسترده (WCG) (ui-graphics)

حفظ WCG: * فضاهای رنگ غیر sRGB (برای نمونه، AdobeRgb،‏ DisplayP3) که در «رنگ» یا «سایه زن» تنظیم شده‌اند در API 29 و بالاتر حفظ می‌شوند. * در سطوح API قدیمی‌تر به sRGB برمی‌گردد.

    import androidx.compose.ui.graphics.Color                                                                                                                                                                               
    import androidx.compose.ui.graphics.Paint                                                                                                                                                                               
    import androidx.compose.ui.graphics.colorspace.ColorSpaces                                                                                                                                                              
                                                                                                                                                                                                                            
    val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)                                                                                                                                               
    val paint = Paint().apply {                                                                                                                                                                                             
        color = wcgColor // Preserved on API 29+                                                                                                                                                                            
    }
──────                                                                                                                                                                                                                  

### گرادیان‌های توری شتاب‌داده‌شده با سخت‌افزار (ui)

• Painter API: ‫ Modifier.meshGradient با MeshGradientPainter جایگزین شده است که از Canvas.drawMesh با شتاب سخت‌افزاری استفاده می‌کند.
• استفاده: از MeshGradientPainter در Modifier.paint استفاده کنید.

import androidx.compose.ui.draw.paint                                                                                                                                                                                   
import androidx.compose.ui.geometry.Offset                                                                                                                                                                              
import androidx.compose.ui.graphics.Color                                                                                                                                                                               
import androidx.compose.ui.graphics.MeshGradientPainter                                                                                                                                                                 

val meshPainter = remember {                                                                                                                                                                                            
    MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {                                                                                                                                                
        setVertex(0, 0, Offset(0f, 0f), Color.Red)                                                                                                                                                                      
        setVertex(0, 1, Offset(1f, 0f), Color.Blue)                                                                                                                                                                     
        setVertex(1, 0, Offset(0f, 1f), Color.Green)                                                                                                                                                                    
        setVertex(1, 1, Offset(1f, 1f), Color.Yellow)                                                                                                                                                                   
    }                                                                                                                                                                                                                   
}                                                                                                                                                                                                                       
Box(Modifier.fillMaxSize().paint(meshPainter))                                                                                                                                                                          
──────                                                                                                                                                                                                                  

### ‫۴. یکپارچه‌سازی Credential Manager (میانای کاربر)

تکمیل خودکار: * ویژگی معنایی credentialRequest سطح پایین را برای فیلدهای نوشتاری API 34 و بالاتر اضافه می‌کند.

    import androidx.compose.ui.semantics.credentialRequest                                                                                                                                                                  
    import androidx.compose.ui.semantics.CredentialRequestData                                                                                                                                                              
    import androidx.compose.ui.semantics.semantics                                                                                                                                                                          
                                                                                                                                                                                                                            
    BasicTextField(                                                                                                                                                                                                         
        value = value,                                                                                                                                                                                                      
        onValueChange = onValueChange,                                                                                                                                                                                      
        modifier = Modifier.semantics {                                                                                                                                                                                     
            if (Build.VERSION.SDK_INT >= 34) {                                                                                                                                                                              
                credentialRequest = CredentialRequestData(request, callback)                                                                                                                                                
            }                                                                                                                                                                                                               
        }                                                                                                                                                                                                                   
    ) 
──────                                                                                                                                                                                                                  

### ۵. صداهای تعامل خودکار (واسط کاربر)

صداهای کلیک و پیمایش: * بااستفاده از پیکربندی صدای پلاتفرم، از صداهای کلیک و پیمایش سازگار با Android پشتیبانی کنید. * انصراف دادن: از بسته‌بندی SoundEffectOnInteraction برای غیرفعال کردن صداها برای یک زیردرخت استفاده کنید.

    import androidx.compose.ui.platform.SoundEffectOnInteraction                                                                                                                                                            
                                                                                                                                                                                                                            
    // Opt-out of sounds for everything inside                                                                                                                                                                              
    SoundEffectOnInteraction(enabled = false) {                                                                                                                                                                             
        Button(onClick = {}) {                                                                                                                                                                                              
            Text("Silent Button")                                                                                                                                                                                           
        }                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                       

### ۶. ادغام Espresso برای واسط‌های کاربر ترکیبی (ui-test)
تعاملات Compose را به سلسله‌مراتب View منطبق با Espresso ViewInteraction محدود کنید.

    import androidx.compose.ui.test.junit4.onRootWithViewInteraction                                                                                                                                                        
    import androidx.test.espresso.Espresso.onView                                                                                                                                                                           
                                                                                                                                                                                                                            
    // Match RecyclerView row using Espresso                                                                                                                                                                                
    val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))                                                                                                                                   
                                                                                                                                                                                                                            
    // Scope Compose interactions to that row                                                                                                                                                                               
    composeTestRule.onRootWithViewInteraction(specificRow)                                                                                                                                                                  
        .onNodeWithTag("fav_icon")                                                                                                                                                                                          
        .performClick()

نسخه 1.12.0-rc01

۲۹ ژوئیه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.0-rc01 منتشر شد. نسخه 1.12.0-rc01 شامل این تعهدات است.

نسخه 1.12.0-beta02

۱ ژوئیه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.0-beta02 منتشر شد. نسخه 1.12.0-beta02 شامل این تعهدها است.

نسخه 1.12.0-beta01

‫۱۷ ژوئن ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.0-beta01 منتشر شد. نسخه 1.12.0-beta01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • N/A (درحال انتقال پرچم ویژگی توسعه‌دهنده داخلی) (Iaf2c4، b/368702588)
  • N/A - پرچم ویژگی‌ای منتقل شد. (I24668،‏ b/521811270)
  • پرچم ویژگی آزمایشی ComposeUiFlags اضافه شد.isTrackpadPinchReinterpretationEnabled برای تفسیر مجدد اشاره‌های نزدیک یا دور کردن انگشتان روی پد لمسی به‌عنوان رویدادهای موشواره با عوامل مقیاس. (Id3477، b/478053727)
  • نام تابع آزمایش را برای راه‌اندازی رویدادهای اشاره‌گر غیرمستقیم تغییر می‌دهد (I3ee35، b/509618414)
  • بهینه‌سازی به BasicText و BasicTextField اضافه شد که در آن تنظیم ارتفاع خط برای نوشتاری با softwrap=false اکنون به‌طور بهینه‌تری محاسبه می‌شود (I2150a)

رفع اشکال‌ها

  • انتقال وضعیت ضبط پیمایش بهینه‌سازی‌شده در ترکیب‌های فرعی برای جلوگیری از ترکیب مجدد غیرضروری واسط کاربر. (I05830)
  • پرچم ویژگی آزمایشی ComposeUiFlags فعال شد.به‌طور پیش‌فرض isTrackpadPinchReinterpretationEnabled. (I35ab8، b/478053727)
  • مشکلی در تجزیه منبع طراحی برداری رفع شد که در آن عناصر والد <clip-path> درصورت داشتن عناصر <group> تودرتو نادیده گرفته می‌شدند. (Id4ea9, b/474530439)
  • با بازتولید محیط آزمایش داخلی و حوزه روتین همکار بین تلاش‌های اجرا، از قوانین استاندارد JUnit 4 برای تلاش مجدد آزمایش در AndroidComposeTestRule پشتیبانی شد. (Iafaa7، b/235383900)

همیاری خارجی

  • نمایش رابط AndroidClipboard برای آزمایش به‌منظور ارائه روشی برای شبیه‌سازی پیاده‌سازی بریده‌دان (Ie4d72، b/512924975)
  • سازگاری با نسخه قدیمی را برای TextAttribute گونه از commitText() و setComposingText() اضافه کنید. برای «کیت توسعه نرم‌افزار»>=۳۷، خدمات دسترس‌پذیری می‌توانند اعلام کنند که آیا نوشتار جایگزین پیشنهادی انتخاب شده است یا نه. برای «کیت توسعه نرم‌افزار» <۳۷، بر بازخورد گفتاری (یعنی رفتار موجود) تأثیر نمی‌گذارد. (I90e3d، b/439879822)

نسخه 1.12.0-alpha03

‫۱۹ مه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.0-alpha03 منتشر شد. نسخه 1.12.0-alpha03 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • در API 34 و بالاتر، دارایی جدید credentialRequest Semantics و دستیار CredentialRequestData اضافه شد تا فیلدهای نوشتاری Jetpack Compose بتوانند ازطریق چارچوب «تکمیل خودکار» با «مدیر اطلاعات اعتباری» Android ادغام شوند. (Ida2bf، b/488446455)
  • تابع کارخانه ParagraphIntrinsics را اضافه کرد که آرگومان softWrap را در میان آرگومان‌های دیگر می‌گیرد. در داخل، می‌توانیم از آن به‌عنوان نشانه‌ای برای اینکه نوشتار به‌عنوان یک خط واحد پرداز می‌شود استفاده کنیم و بهینه‌سازی‌های خاصی را انجام دهیم. (I66ca4، b/485495112)
  • پشتیبانی از صداهای تعامل خودکار (کلیک‌ها و پیمایش کانونی) به عناصر «نوشتن» اضافه شد، با SoundEffectOnInteraction Composable جدید برای امکان انصراف دادن. توجه داشته باشید که در نتیجه این تغییر، اکنون باید شنوندگان کلیک معنایی از رشته اصلی فراخوانی شوند که ممکن است بر تعداد کمی از موارد آزمایشی تأثیر بگذارد. (I78f65)
  • عملکرد کارخانه‌ای تثبیت‌شده Font که variationSettings طول می‌کشد. (I183f2)
  • ویژگی ResourceFont loadingStrategy و روش copy تثبیت شد. (I40d84)
  • میاناهای برنامه‌سازی کاربردی InterceptPlatformTextInput و PlatformTextInputInterceptor تثبیت شدند. (Id2784)
  • برای بهبود جداسازی پلاتفرم، registerIdlingResource و unregisterIdlingResource به توابع افزونه منتقل شده‌اند؛ ممکن است لازم باشد وارد کردن‌هایتان را به‌روز کنید. (I21d3d،‏ b/471148519)
  • ‫runWithoutImplicitWait به ComposeTestRule و ComposeUiTest برای بهبود عملکرد آزمایش درطول بازرسی ایالتی معرفی شد. این API امکان اجرای یک بلوک کد را با غیرفعال کردن همگام‌سازی ضمنی فراهم می‌کند و از سربار همگام‌سازی‌های مکرر برای هر پُرسمان گره جلوگیری می‌کند. این امر منجر به اجرای بسیار سریع‌تر آزمایش می‌شود، به‌ویژه برای آزمایش‌هایی که به‌صورت دستی ازطریق قاب‌ها گام برمی‌دارند و چندین دارایی را نمونه‌برداری می‌کنند، مانند آزمایش پویانمایی. (Ie00e9، b/490270394)
  • ازاین‌پس می‌توان از گزارمان @PreviewWrapper برای MultiPreview کلاس گزارمان استفاده کرد و به توسعه‌دهندگان امکان داد پیکربندی‌های پیش‌نمایش ازپیش بسته‌بندی‌شده و قابل‌استفاده مجدد ایجاد کنند. (I8ae66، b/511170361)
  • ‫MeshGradientPainter را برای پرداز کردن گرادیان‌های مش معرفی می‌کند.Modifier.meshGradient برداشته شده است، به‌جای آن از MeshGradientPainter با Modifier.paint استفاده کنید. ‫MeshGradientRenderer اکنون داخلی است. (I2d170, b/508110246)
  • اکنون می‌توان با ارائه لامبدایی که پاسخ می‌دهد آیا «خط‌کش» می‌تواند ارائه شود یا نه، خط‌کش‌ها را به‌صورت جداگانه ارائه کرد، به‌همراه لامبدای جداگانه‌ای که مقدار «خط‌کش» را ارائه می‌دهد. لامبدای isRulerProvided مشاهده نمی‌شود و باید در اینکه آیا مقدار می‌تواند ارائه شود یا نه خوش‌بین باشد. ‫rulerProvider لامبدا مشاهده می‌شود تا اگر مقداری تغییر کرد، مقدار خط‌کش و همه خوانندگان خط‌کش را به‌روز کند. (Ie9089)
  • در Style API آزمایشی، پشتیبانی از ایجاد انواع سبک سفارشی که می‌توانند محدوده‌های سبک سفارشی داشته باشند اضافه شد. این امر امکان می‌دهد تا زیرمجموعه‌ای از دارایی‌های قابل تنظیم توسط سبک (مثل برداشتن کامل لایه گرافیک یا دارایی‌های نوشتاری) ایجاد شود و همچنین امکان می‌دهد تا محدوده به‌طور مستقل از سبک‌های دیگر گسترش یابد (مثل پشتیبانی فقط از دستورگان playing { } در عنصر ترکیبی MediaPlayer). این تغییر سازگاری باینری و منبع را قطع می‌کند. تغییر اصلی که سازگاری منبع را ازبین می‌برد این است که توابع کمکی در StyleScope به توابع افزونه منتقل شده‌اند (برای نمونه، fun contentProperty(all: Dp) اکنون تابع افزونه است). وارد کردن توابع افزونه موردنیاز یا وارد کردن همه نشان‌ها از androidx.compose.foundation.styles تنها چیزی است که برای درست کامپایل شدن کدی که این روش‌ها را فرا می‌خواند لازم است. (I1ef27،‏ b/493676648)
  • ‫updatePointerBy() را با آرگومان پیش‌فرض برای شناسه اشاره‌گر اضافه می‌کند. (I99f30, b/502001776)
  • ‫DeferredTargetAnimation دیگر آزمایشی نیست، لطفاً موافقت را بردارید." به androidx-main
  • پرچم isClearNestedScrollCoroutineScopeFixEnabled برای کنترل کردن اصلاح اضافه شد. (Ibd394، b/505343254)
  • ‫DeferredTargetAnimation دیگر آزمایشی نیست، لطفاً موافقت را بردارید. (I1e4ae،‏ b/500030165)
  • تعداد جدید برای پشتیبانی از راه‌اندازها در ui-tooling (I6e198، b/478807872)
  • ComposeViewContext می‌تواند بدون پیوست شدن «نمای» مرجع ایجاد شود. همچنان لازم است که «نمای مرجع» قبل‌از فراخوانی setContent() پیوست شود. (Id0952)

رفع اشکال‌ها

  • مشکل focusRestorer را برطرف می‌کند که درصورت وقوع چندین فراخوانی ذخیره برای چیدمان یکسان، تمرکز را به‌درستی بازگردانی نمی‌کرد (I10277، b/505371994)
  • بهبود عملکرد قبلی اثر جانبی‌ای داشت که باعث می‌شد ComposeViews بدون پیوست اندازه‌گیری نشود. این تغییر اکنون بدون بازگرداندن مشکل عملکرد، این امکان را فراهم می‌کند. (I9b2c5, b/508650647)
  • اکنون ترکیب در ComposeViewContext تغییر بازآفرینی می‌شود تا از دسترسی سریع‌تر به ComposeViewContext پشتیبانی شود. (I3b3a8،‏ b/487364963)
  • به «نگارش» اجازه می‌دهد رنگ‌های غیر sRGB را در رنگ و سایه‌زن در Android تنظیم کند و با نگاشت صحیح فضاهای رنگ «نگارش» به معادل‌های پلاتفرم، گستره رنگی گسترده را حفظ کند. فضاهای رنگی که برای عملیات پردازش پلاتفرم پشتیبانی نمی‌شوند (برای مثال، CIE XYZ،‏ CIE Lab،‏ OkLab) یا در سطح API کنونی دردسترس نیستند، به‌طور ایمن به فضای رنگی Srgb برمی‌گردند. (I3efb5، b/388511109)

همیاری خارجی

  • نوع مستعار androidx.compose.ui.platform.NativeClipboard منسوخ شده است، به‌جای آن مستقیماً از android.content.ClipboardManager استفاده کنید (Ibc611)
  • برای جلوگیری از آشکار شدن نوع پلاتفرم در commonMain مجموعه منبع ازطریق typealias، دارایی Clipboard.nativeClipboard را با افزونه Clipboard.nativeClipboardManager جایگزین کنید (Ibc611)

نسخه 1.12.0-alpha02

۶ مه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.0-alpha02 منتشر شد. نسخه 1.12.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • «اصلاح‌گر MeshGradient» را معرفی می‌کند. (Ia9a08،‏ b/455752719)
  • بازخوان‌های گزارش اشکال‌زدایی تکمیل خودکار داخلی را برمی‌دارد. با ورود به سیستم از AutofillManager.AutofillCallback می‌توانید به همان عملکرد دست یابید. (I631c7،‏ b/502279690)
  • پشتیبانی از تنظیمات گونه برای قلم‌های قابل‌بارگیری (Ic25c7، b/496278020)
  • ‫mediaQuery و derivedMediaQuery به‌روزرسانی شد تا به‌جای Boolean نوع عمومی برگرداند و امکان استفاده انعطاف‌پذیرتر هنگام ساختن واسط‌های کاربر تطبیقی را فراهم کند. (I93830، b/498698350)

نسخه 1.12.0-alpha01

‫۲۲ آوریل ۲۰۲۶

‫androidx.compose.ui:ui-*:1.12.0-alpha01 منتشر شد. نسخه 1.12.0-alpha01 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • پرچم ویژگی ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled را برمی‌دارد (I82be3، b/455601135)
  • ‫mediaQuery را به تابع درون‌خطی تبدیل کرد (Ie9457، b/498698350)
  • ‫ComposeViewContext از مرحله آزمایشی خارج شده است و گزارمان ExperimentalComposeViewContextApi برداشته شد (I32eca)
  • ‫ComposeView.disableWindowInsetsRulers() اکنون آزمایشی نیست (Ia81a5)
  • ‫hasPendingWork() API اضافه شد تا امکان بررسی غیرفعال وجود کار معلقه در «واسط کاربر نوشتن» بدون راه‌اندازی انتظار یا جلو بردن ساعت فراهم شود. این برای آزمایش‌های دستی ساعت مفید است تا مشخص شود پویانمایی‌ها یا کارهای پس‌زمینه دیگر چه زمانی تمام شده‌اند. (Ic54e3)
  • پرچم ویژگی AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled برداشته شد (I7fd25، b/491111451)
  • پرچم ویژگی AndroidComposeUiFlags.isSharedFontEnabled برداشته شد (I2cebe، b/479898293)
  • گزینه‌های KeyboardType دیگری را برای تکمیل مجموعه گزینه‌های صفحه‌کلید پشتیبانی‌شده در Android اضافه می‌کند، ازجمله تاریخ، زمان، تاریخ و زمان، اعشاری علامت‌دار، و غیره. (I3713e، b/202353328)
  • پرچم AndroidComposeUiFlags.isSharedHapticsEnabled برداشته شد (I6a1d4، b/479895628)
  • پرچم AndroidComposeUiFlags.isSharedClipboardManagerEnabled برداشته شد (I41e3c، b/479895130)
  • پرچم AndroidComposeUiFlags.isSharedViewConfigurationEnabled برداشته شد (I6d3aa، b/479890645)
  • پرچم ویژگی AndroidComposeUiFlags.isSharedDrawingEnabled برداشته شد. (I27912, b/479849019)
  • پرچم ویژگی AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled (I6b726، b/479845566) برداشته شد
  • برداشتن پرچم AndroidComposeUiFlags.isSharedWindowInfoEnabled (Ife9a9، b/479837249)
  • پرچم AndroidComposeUiFlags.isSharedComposeViewContextEnabled را بردارید. (Ic522a، b/479834257)
  • برای سفارشی‌سازی قلم‌های متغیر قابل‌بارگیری، تنظیمات گونه را اضافه کنید (Ifdc93، b/223262013)
  • تنظیمات گونه را برای سفارشی‌سازی قلم‌های متغیر قابل‌بارگیری اضافه کنید (I390af، b/223262013)
  • برداشتن پرچم isTraversableDelegatesFixEnabled (Ia7dfe،‏ b/485962494)
  • ‫runWhenIdle و نوع تعلیق آن awaitAndRunWhenIdle در ComposeTestRule و ComposeUiTest برای بهبود عملکرد آزمایش و پایداری وضعیت معرفی شد. این «میاناهای برنامه‌سازی کاربردی» رابط کاربری را یک‌بار همگام‌سازی می‌کنند، سپس یک بلوک کد را بدون سربار همگام‌سازی‌های مکرر برای هر عملیات اجرا می‌کنند. این امر منجر به اجرای بسیار سریع‌تر و کمتر متزلزل آزمایش می‌شود، به‌ویژه برای آزمایش‌هایی که از بسیاری از خواص نمونه‌برداری می‌کنند، مانند آزمایش پویانمایی. (Iabf66،‏ b/490270394)
  • ‫LayerOutsets تا GraphicsLayer و Modifier.graphicsLayer را اضافه می‌کند که می‌توان از آن‌ها برای افزایش محدوده‌های دیداری لایه فراتر از اندازه اندازه‌گیری‌شده آن استفاده کرد. از این می‌توان برای جلوگیری از رفتار ضمنی clipToBounds زمانی که لایه به بافر «خارج از صفحه» ارتقا می‌یابد استفاده کرد. (Ic1189)
  • ثبت گزارش رویدادهای ورودی تکمیل خودکار به‌طور پیش‌فرض غیرفعال شد. اکنون با تماس گرفتن با ComposeView.setAutofillDebugEnabled فعال می‌شوند. (I5b430، b/487947860)
  • ‫VelocityTracker تغییر کرد تا از پیاده‌سازی ارائه‌شده توسط «چارچوب Android» استفاده کند (با AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled قابل پیکربندی است). (Ibc7e2،‏ b/359962905)
  • وقتی AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled درست باشد، «نماهای» فرزند همیشه چیدمانی خواهند داشت که پس‌از اندازه‌گیری درطول گذر چیدمان فراخوانی می‌شود. «ترکیب» همیشه کودک را پس‌از اندازه‌گیری چیدمان نمی‌کند، اما «نماها» برای مدیریت صحیح وضعیت به آن نیاز دارند. (Ib4fe9, b/430974758)
  • درحال افزودن isVirtual به LayoutInfo (I3e5cd،‏ b/494243978)
  • پرچم isGraphicsLayerShapeSemanticsEnabled را پاک‌سازی کرد. (I44be0، b/455600081)
  • «میانای برنامه‌سازی کاربردی قلم» جدیدی اضافه شد تا بتوان از قلم‌های قابل‌بارگیری بدون نیاز به افزودن دستی گواهینامه‌های قلم به پایگاه کد استفاده کرد. (I30b86، b/479454159)
  • ‫onRootWithViewInteraction به محدوده جستجوهای معنایی Compose به «نماهای» خاص Android اضافه شد . این کار آزمایش کردن میاناهای کاربر ترکیبی، مثل RecyclerViews، را بدون نیاز به برچسب‌های آزمایشی منحصربه‌فرد در کد تولید ساده می‌کند . (Ic02c4, b/175226753)

رفع اشکال‌ها

  • میانای برنامه‌سازی کاربردی captureToImage() اکنون به شما امکان می‌دهد تا بالاپر یا چارگوش گفتگویی را به‌همراه لنگر آن در یک بیت‌مپ ضبط کنید. (I9b83a، b/443137545)
  • ‫Compose compileSdk به API 37 به‌روز شد. این یعنی هنگام استفاده از «نوشتن»، حداقل نسخه AGP باید ۹.۲.۰ باشد. (Id45cd،‏ b/413674743)
  • اکنون تنظیم ContentDataType.None در معناشناسی از ارسال رویدادهای تکمیل خودکار توسط «نوشتن» جلوگیری می‌کند. این کار باید از هزینه‌های اولیه مرتبط با درخواست سرویس‌های تکمیل خودکار جلوگیری کند. (I8fbda, b/487947860)

نسخه ۱.۱۱

نسخه ۱.۱۱.۴

۱ ژوئیه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.4 منتشر شد. نسخه ۱.۱۱.۴ شامل این تعهدات است.

نسخه ۱.۱۱.۳

‫۱۷ ژوئن ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.3 منتشر شد. نسخه ۱.۱۱.۳ شامل این تعهدات است.

نسخه ۱.۱۱.۲

‫۱۹ مه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.2 منتشر شد. نسخه ۱.۱۱.۲ شامل این تعهدات است.

نسخه ۱.۱۱.۱

۶ مه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.1 منتشر شد. نسخه ۱.۱۱.۱ شامل این تعهدات است.

نسخه ۱.۱۱.۰

‫۲۲ آوریل ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0 منتشر شد. نسخه ۱.۱۱.۰ شامل این تعهدات است.

نسخه 1.11.0-rc01

۸ آوریل ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0-rc01 منتشر شد. نسخه 1.11.0-rc01 شامل این تعهدات است.

نسخه 1.11.0-beta02

۲۵ مارس ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0-beta02 منتشر شد. نسخه 1.11.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • تغییر نام PreviewWrapper API برای یکپارچگی (I62659، b/490085948)
  • ‫ComposeViewContext به ComposeView اجازه می‌دهد بدون اینکه به سلسله‌مراتب نما پیوست شود ترکیب کند. از AbstractComposeView.createComposition(composeViewContext) برای شروع نوشتن بدون پیوست کردن ComposeView استفاده کنید. (I46e6f)
  • ‫delayMillis به میاناهای برنامه‌سازی کاربردی آزمایش پد لمسی برای panEnd و scaleEnd اضافه شد (If80fe)

رفع اشکال‌ها

  • ‫Clipboard و ClipboardManager اکنون سرویس سیستم را در اولین فراخوانی روش درخواست می‌کنند (If0016، b/487947860)
  • «تمرکز» در داخل محتوی‌های تنبل که در آن‌ها از گره‌ها و گروه‌های تمرکز مجدداً استفاده می‌شود به‌درستی بازیابی خواهد شد (I18d36، b/481564275)
  • بالاپر clippingEnabled = false اکنون به‌درستی از محدوده کامل پنجره برای نمایش لبه‌به‌لبه استفاده می‌کند (I206408، b/327017902)

نسخه 1.11.0-beta01

۱۱ مارس ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0-beta01 منتشر شد. نسخه 1.11.0-beta01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پشتیبانی از windowToken سفارشی به «کادر گفتگوی Jetpack Compose» (Ic7728) اضافه شده است
  • پشتیبانی از windowToken و windowType سفارشی به «بالاپرها» در Jetpack Compose اضافه شده است. (I0a04f)
  • واسط PreviewWrapper و ارائه‌دهنده گزارمان را معرفی کنید. این کار به توسعه‌دهندگان امکان می‌دهد پیش‌نمایش‌هایشان را به‌طور یکپارچه با رفتار سفارشی بپیچند. (I29f54،‏ b/484306729)
  • وقتی AndroidComposeUiFlags.isSharedFontEnabled درست باشد، نمونه‌های شیء مرتبط با قلم، مثل FontLoader و FontFamilyResolver، می‌توانند در ComposeView نمونه در ComposeViewContext هم‌رسانی شوند. (I403e8)
  • پردازشگرهای معنایی «نوشتن» به‌جای mainLooper از view.handler استفاده خواهند کرد و از خرابی در نماهایی که از کنترل‌کننده‌های غیر اصلی استفاده می‌کنند جلوگیری خواهند کرد. (I671c3،‏ b/486235925)
  • پرچم isSkipNonImportantSemanticsNodesHitTestEnabled اضافه شد که از رفع اشکال برای آزمایش ضربه معنایی محافظت می‌کند و بر «لمس برای کاوش» TalkBack تأثیر می‌گذارد. (I2933f،‏ b/481011169،‏ b/454377558،‏ b/461360154)
  • پشتیبانی از نمایش «کادرهای گفتگوی Jetpack Compose» از «خدمات Android» اضافه شده است. توسعه‌دهندگان اکنون می‌توانند با ارائه نوع پنجره سفارشی ازطریق پارامتر جدید windowType در DialogProperties، «کادرهای گفتگو» را در پنجره‌های رونهاد نمایش دهند. (I7c504، b/478214962)
  • ویژگی‌های PointerInputChange و HistoricalChange را برای بازیابی مقادیر مقیاس و حرکت تغییر نام می‌دهد. (I989a8،‏ b/481333653)
  • عملکرد بیشتری برای «میاناهای برنامه‌سازی کاربردی» آزمایش پد لمسی اضافه می‌کند تا منحنی‌ها و ورودی‌های مختلفی را برای اشاره پد لمسی شبیه‌سازی کند. (I290fb،‏ b/473603145،‏ b/479213358)
  • ‫PointerEventType.Pan جدید را به PointerEventType.PanStart، PointerEventType.PanMove، و PointerEventType.PanEnd تقسیم می‌کند. به‌همین ترتیب، PointerEventType.Scale به PointerEventType.ScaleStart، PointerEventType.ScaleChange، و PointerEventType.ScaleEnd تقسیم می‌شود. این تقسیم به شما امکان می‌دهد اطلاعات بیشتری درباره شروع و پایان حرکات پیمایش و مقیاس‌بندی تفسیرشده توسط پلاتفرم ارسال کنید، که به نوبه خود به مدیریت‌کننده‌های ورودی اشاره‌گر در «نگارش» امکان می‌دهد از این اطلاعات برای تشخیص صحیح رویدادها استفاده کنند، و به‌ویژه بدانند که پیمایش یا مقیاس‌بندی چه زمانی تمام می‌شود. (I4daf6، b/479285849، b/481333653)
  • وقتی AndroidComposeUiFlags.isSharedHapticsEnabled درست باشد، ComposeViewContext حاوی نمونه کنترل‌کننده لمسی مشترک است. (Icd79a)
  • میاناهای برنامه‌سازی کاربردی آزمایشی mediaQuery،derivedMediaQuery، و UiMediaScope (با علامت @ExperimentalMediaQueryApi) معرفی شد تا توسعه واسط کاربر تطبیقی بیانی براساس ابعاد پنجره، وضعیت پنجره، و دیگر قابلیت‌های دستگاه و محیط فعال شود. (I2d21e، b/479800750)

رفع اشکال‌ها

  • رفع مشکلی که باعث می‌شد وقتی پارامتر «شکل» به‌صورت پویا تغییر می‌کرد، Modifier.dropShadow و Modifier.innerShadow با حوزه بلوک دوباره ترسیم نشوند. (Ida262، b/486202623)
  • اشکالی که باعث می‌شد محتوای درون‌خطی در چیدمان‌های راست‌به‌چپ با نوشتار چپ‌به‌راست یا چیدمان‌های چپ‌به‌راست با نوشتار راست‌به‌چپ در جای اشتباه قرار بگیرد برطرف شد. (I09789)
  • اشکالی را برطرف می‌کند که در آن وقتی از ComposeView در انتقال قطعه استفاده می‌شد، استثنایی ایجاد می‌شد. (Ia425f، b/484100557)

همیاری خارجی

  • دارایی InputTextSuggestionState را اضافه کنید تا به شناسایی وضعیت‌های مختلفی که ورودی ترانویسی می‌تواند در آن‌ها قرار گیرد کمک کند، زمانی که پیشنهادهای جایگزینی نوشتار دردسترس است. همچنین TextCompositionRange را برای پیگیری محدوده ترکیب نوشتاری ترانویسی فعلی معرفی می‌کند؛ مقدار تهی نشان می‌دهد که ترکیبی در جای خود وجود ندارد. (I7a67f،‏ b/476472318)

نسخه 1.11.0-alpha06

۲۵ فوریه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0-alpha06 منتشر شد. نسخه 1.11.0-alpha06 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • پرچم ComposeUiFlags.areWindowInsetsRulersEnabled با API ‏ComposeView.disableWindowInsetsRulers() جایگزین شده است. (Idcdb4, b/455590696)
  • پرچم ویژگی آزمایشی فقط Android isAccessibilityShowOnScreenNestedScrollingEnabled به (I1c13a) منتقل شد
  • افزودن پشتیبانی برای نزدیک شدن (I1c13a)
  • گزارش گره‌های معنایی خارج از صفحه که فرزندان گره‌های ادغام‌شونده نیمه‌نمایان در محتویات پیمایش‌پذیر هستند برای بهبود تجربه کاربری با صفحه‌خوان‌ها و خدمات دسترس‌پذیری مشابه (I71df9، b/434782764)
  • وقتی AndroidComposeUiFlags.isSharedClipboardManagerEnabled درست باشد، نمونه‌های مربوط به کلیپ‌بورد را می‌توان در ComposeViews بااستفاده از ComposeViewContext هم‌رسانی کرد (I65e2c)
  • ‫ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled برداشته شد (I6e14a، b/455601894)

نسخه 1.11.0-alpha05

‫۱۱ فوریه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0-alpha05 منتشر شد. نسخه 1.11.0-alpha05 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫AndroidComposeUiFlags.isSharedWindowInfoEnabled اطلاعات WindowInfo را به ComposeViewContext منتقل می‌کند. غیرفعال کردن پرچم باعث می‌شود WindowInfo تحت کنترل AndroidComposeView قرار گیرد (I3b364)
  • ساختارهای مشترک در ComposeView به ComposeViewContext مشترک منتقل خواهد شد. این اولین تغییری است که CoroutineContext را به ComposeViewContext منتقل می‌کند. وقتی AndroidComposeUiFlags.isSharedComposeViewContextEnabled درست باشد، مقادیر به‌طور خودکار هم‌رسانی می‌شود. وقتی نادرست باشد، هم‌رسانی نمی‌شوند. (I9364d، b/461566955)
  • پشتیبانی از اشاره‌های پد لمسی و تبدیل رویدادهای ورودی پد لمسی به موشواره را اضافه می‌کند. با این تغییر، رویدادهای اشاره‌گر صفحه لمسی که مکان‌نما را کنترل می‌کنند، مانند رایانه‌های لوحی یا رایانه‌های کیفی، به‌طورکلی به‌عنوان اشاره‌گرهای موشواره گزارش می‌شوند که عملکرد مربوط به شیب اشاره‌گر، پیمایش، و نگه داشتن را بهبود می‌بخشد. حرکات بزرگ‌نمایی و حرکت افقی نیز با اطلاعات تکمیلی موجود در تغییرات رویداد اشاره‌گر، با PointerEventType.Pan و PointerEventType.Scale جدید گزارش خواهند شد که نشان می‌دهد این مقادیر تنظیم خواهند شد (Id071a، b/315527861، b/459831570)

رفع اشکال‌ها

همیاری خارجی

  • نام مستعار نوع androidx.compose.ui.graphics.NativePaint منسوخ شده است، به‌جای آن مستقیماً از android.graphics.Paint استفاده کنید (I6303c، b/477394763)
  • جایگزین کردن Paint.asFrameworkPaint() با افزونه Paint.nativePaint برای جلوگیری از آشکار شدن نوع پلاتفرم در مجموعه منبع commonMain ازطریق typealias (I6303c،‏ b/477394763)
  • افزودن پشتیبانی برای کلیدهای حرکت NumPad (I1ff12)

نسخه 1.11.0-alpha04

‫۲۸ ژانویه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0-alpha04 منتشر شد. نسخه 1.11.0-alpha04 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫TestCoroutineScheduler را آشکار کرد تا استفاده از runCurrent() را فعال کند و دسترسی به نمونه زمان‌بند هم‌رسانی‌شده را تضمین کند. (Iea662، b/254115946)
  • پشتیبانی از پیمایش تودرتو در پاسخ به android.R.id.accessibilityActionShowOnScreen از «دسترس‌پذیری» اضافه شد. (Ib2723، b/431148846)

رفع اشکال‌ها

  • تبدیل فضای رنگ RGB سفارشی Android اصلاح شد. تبدیل‌های خاکستری سفارشی به‌طور نادرست بین فضاهای رنگی سفارشی Compose و Android RGB تبدیل می‌شدند.(ebd45،b/377021410)

نسخه 1.11.0-alpha03

‫۱۴ ژانویه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.11.0-alpha03 منتشر شد. نسخه 1.11.0-alpha03 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پرچم ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled برداشته شد. «میاناهای برنامه‌سازی کاربردی» نسخه v2 run*ComposeUiTest و create*ComposeRule اکنون به‌طور پیش‌فرض از StandardTestDispatcher استفاده می‌کنند. برای ادامه استفاده از UnconfinedTestDispatcher، می‌توانید از انواع منسوخ‌شده API استفاده کنید؛ بااین‌حال، اکیداً توصیه می‌کنیم برای کنترل بهتر اجرای روتین هم‌زمان، به APIهای نسخه ۲ انتقال دهید. (Iecc9c, b/455601592)
  • ‫androidx.compose.ui.test.junit4.v2.create*ComposeRule میانای برنامه‌سازی کاربردی معرفی شد. این APIهای جدید به‌طور پیش‌فرض از StandardTestDispatcher استفاده می‌کنند تا رفتار تولید را بهتر شبیه‌سازی کنند، جایی که روتین‌های همکار به‌جای اجرا شدن فوری در صف قرار می‌گیرند. برای اطلاعات بیشتر، راهنمایی‌های انتقال را ببینید. (I1870e، b/254115946)
  • ‫androidx.compose.ui.test.v2.run*ComposeUiTest میانای برنامه‌سازی کاربردی معرفی شد. این APIهای جدید به‌طور پیش‌فرض از StandardTestDispatcher استفاده می‌کنند تا رفتار تولید را بهتر شبیه‌سازی کنند، جایی که روتین‌های همکار به‌جای اجرا شدن فوری در صف قرار می‌گیرند. برای اطلاعات بیشتر، راهنمایی‌های انتقال را ببینید. (I4f782, b/254115946)
  • اکنون می‌توان ساختارهای مشترک در ComposeView را هم‌رسانی کرد. وقتی ComposeUiFlags.isSharedComposeViewContextEnabled درست باشد، مقادیر به‌طور خودکار هم‌رسانی می‌شود. وقتی نادرست باشد، هم‌رسانی نمی‌شوند. (I0d1b4،‏ b/463540495،‏ b/460468959،‏ b/461503366،‏ b/463641813)

رفع اشکال‌ها

  • رفع اشکالی که در آن برداشتن همه محتوا از ComposeView باعث برداشته شدن محتوای طراحی‌شده نمی‌شد. ‫(I8b382، b/299503084)
  • رفع خرابی ترکیب‌بندی قابل‌توقف وقتی با LookaheadScope پویانمایی می‌شود. (I7e649، b/469669851)
  • مشکلی که در آن ارسال رشته‌های بیش‌ازحد طولانی به سرویس «تکمیل خودکار» باعث ازکارافتادن می‌شد برطرف شد. برای جلوگیری از این اتفاق، نوشتار اکنون قبل‌از ارسال به‌طور خودکار به طول معتبر کوتاه می‌شود.
  • اشکالی را برطرف می‌کند که در آن خروج از حالت شناور می‌تواند تحت شرایط بسیار خاصی باعث کلیک شود (a3d5a0f)
  • مشکل ارسال رویداد شناور قلم برای آزمایش‌ها را برطرف می‌کند و آزمایش‌های موشواره را برای آزمایش‌های جدید قلم آماده می‌کند. (9ca9bc9)
  • پشتیبانی از برداشتن/قرار دادن عناصر میانای کاربر با ورودی اشاره‌گر را اضافه می‌کند. ‫(d0742b0،‏ b/BUD_ID)
  • اشکالی در Jetpack Compose Popup برطرف شد که در آن مختصات مطلق محدوده‌های لنگر به PopupPositionProvider منتقل می‌شد و منجر به جای‌گذاری نادرست بالاپرها می‌شد. محاسبات موقعیت‌یابی بالاپَر اکنون از مختصات نسبی صحیح استفاده می‌کند.(1f7edf،b/469940907)

نسخه 1.11.0-alpha02

‫۱۷ دسامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.11.0-alpha02 منتشر شد. نسخه 1.11.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • میاناهای برنامه‌سازی کاربردی MultiModalInjectionScope اکنون پایدار هستند. این شامل performKeyInput و performRotaryScrollInput و میاناهای برنامه‌سازی کاربردی کلید و چرخشی زیربنایی آن‌ها می‌شود. گزارمان آزمایشی برداشته شده است. (Ie8bbc، b/261561237)
  • میاناهای برنامه‌سازی کاربردی آزمایش پد لمسی را اضافه می‌کند. این‌ها شبیه به میاناهای برنامه‌سازی کاربردی آزمایش موش‌واره هستند و رویدادهایی را تزریق می‌کنند که رفتار صفحه لمسی رایانه لوحی یا رایانه کیفی را تقلید می‌کنند. نقطه‌های ورودی اصلی SemanticsNodeInteraction.performTrackpadInput و MultiModalInjectionScope.trackpad (I2ce67)، b/432326139 است.

رفع اشکال‌ها

  • هم‌کنش‌پذیری ورودی پیمایش چرخ موشواره را اصلاح می‌کند تا فقط درصورتی مصرف شود که در «نوشتن» مصرف شده باشد، نه درصورتی‌که در «نوشتن» ارسال شده باشد. ‫(I5e0c4)،

نسخه 1.11.0-alpha01

۳ دسامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.11.0-alpha01 منتشر شد. نسخه 1.11.0-alpha01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پرچم واسط کاربر isSemanticAutofillEnabled را برمی‌دارد زیرا تکمیل خودکار معنایی به‌طور پیش‌فرض فعال شده است. (I849cf، b/455587954)
  • نحوه یافتن گره‌های مرتبط توسط روش پیمایش‌پذیر findNearestAncestor تغییر کرد. اکنون نمایندگان از همان نوع (NodeKind) درطول پیمایش قابل‌مشاهده خواهند بود. این تغییر با پرچم isTraversableDelegatesFixEnabled محافظت می‌شود. (Ia3165، b/280804097)
  • افزودن TextEntryKey نقشه برای ANI#isTextEntryKey (Ifde7b، b/399540654)
  • ‫Modifier.onFirstVisible() منسوخ شده است زیرا عملکرد آن گمراه‌کننده است و همیشه از قرارداد ادعاشده توسط نام پیروی نمی‌کند. برای مثال، وقتی این مورد به عنصر LazyColumn اضافه می‌شود، هر بار که این عنصر پس‌از پیمایش نمایان شود، این برگشت فراخوانی خواهد شد. این چیزی نیست که کاربران اصلاح‌کننده با این نام ممکن است انتظار داشته باشند. توصیه می‌شود به‌جای آن از Modifier.onVisibilityChanged() استفاده کنید و به‌صورت دستی پیگیری کنید که آیا چیدمان قبلاً براساس الزامات مورد استفاده خاص قابل‌مشاهده بوده است یا نه. (Ia7095، b/447601783)
  • ‫MeasuredSizeAwareModifierNode معرفی شد که وقتی به تماس برگشتی onRemeasured() نیاز دارید لازم است. لطفاً به‌جای استفاده از LayoutAwareModifierNode عمومی‌تر، مستقیماً از این میانای استفاده کنید، زیرا وقتی به برگشت‌های تماس دیگر نیاز ندارید، استفاده از این میانای مستقیم بهتر است. (If6fb0)

نسخه ۱.۱۰

نسخه ۱.۱۰.۶

۲۵ مارس ۲۰۲۶

‫androidx.compose.ui:ui-*:1.10.6 منتشر شد. نسخه 1.10.6 شامل این تعهدات است.

نسخه ۱.۱۰.۵

۱۱ مارس ۲۰۲۶

‫androidx.compose.ui:ui-*:1.10.5 منتشر شد. نسخه ۱.۱۰.۵ شامل این تعهدها است.

نسخه ۱.۱۰.۴

۲۵ فوریه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.10.4 منتشر شد. نسخه ۱.۱۰.۴ شامل این تعهدات است.

نسخه ۱.۱۰.۳

‫۱۱ فوریه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.10.3 منتشر شد. نسخه ۱.۱۰.۳ حاوی این تعهدات است.

نسخه ۱.۱۰.۲

‫۲۸ ژانویه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.10.2 منتشر شد. نسخه ۱.۱۰.۲ شامل این تعهدات است.

نسخه ۱.۱۰.۱

‫۱۴ ژانویه ۲۰۲۶

‫androidx.compose.ui:ui-*:1.10.1 منتشر شد. نسخه ۱.۱۰.۱ شامل این تعهدات است.

رفع اشکال‌ها

  • رفع خرابی ترکیب‌بندی قابل‌توقف هنگام پویانمایی با LookaheadScope (I7e649، b/469669851)
  • اشکالی در Jetpack Compose Popup برطرف شد که در آن مختصات مطلق محدوده‌های لنگر به PopupPositionProvider منتقل می‌شد و منجر به جای‌گذاری نادرست بالاپرها می‌شد. محاسبات موقعیت‌یابی بالاپَر اکنون از مختصات نسبی صحیح استفاده می‌کند.(1f7edf،b/469940907)

نسخه ۱.۱۰.۰

۳ دسامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0 منتشر شد. نسخه ۱.۱۰.۰ شامل این تعهدات است.

نسخه 1.10.0-rc01

‫۱۹ نوامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-rc01 منتشر شد. نسخه 1.10.0-rc01 شامل این تعهدات است.

رفع اشکال‌ها

  • وقتی minDurationMs صفر نیست، visibilityChanged برگشتی را با مقدار منطقی نادرست به‌درستی ارسال می‌کند. (2ac08b8، b/456384555)
  • وقتی گره در ابتدا نمایان نیست، با onVisibilityChanged تماس برگشتی تماس نگیرید. (3969e8d،‏ b/447364998)

نسخه 1.10.0-beta02

۵ نوامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-beta02 منتشر شد. نسخه 1.10.0-beta02 شامل این تعهدات است.

نسخه 1.10.0-beta01

‫۲۲ اکتبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-beta01 منتشر شد. نسخه 1.10.0-beta01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • بهینه‌سازی برای ارسال تغییر تمرکز اضافه می‌کند. این ویژگی را می‌توان با isOptimizedFocusEventDispatchEnabled = false (I919fb، b/449228515) غیرفعال کرد
  • همه میاناهای برنامه کاربردی لمس غیرمستقیم را به‌روز می‌کند تا از نام میاناهای برنامه کاربردی اشاره‌گر غیرمستقیم برای مطابقت با میاناهای برنامه کاربردی ورودی اشاره‌گر استفاده کند. (I238ce، b/451607214)
  • ‫TextDirection،‏ TextAlign،‏ Hyphens،‏ FontSynthesis valueOf تابع اکنون هنگام دریافت مقدار ناشناخته IllegalArgumentException را پرتاب می‌کنند. ‫(I07c67)
  • ‫CompositionDataTree.makeTree را به‌روز کنید تا به‌جای تابع بسته‌بندی، مقادیر پیش‌فرض را ارسال کند. (Id64a6، b/445229688)
  • میاناهای برنامه‌سازی کاربردی قانون آزمایش createComposeRule، createAndroidComposeRule، و createEmptyComposeRule که پارامتر effectContext را می‌پذیرند پایدار هستند و پارامتر به‌طور پیش‌فرض روی EmptyCoroutineContext تنظیم می‌شود. (If400c،‏ b/450540702)
  • نام UnplacedStateAwareModifierNode به UnplacedAwareModifierNode تغییر یافت (I6a551،‏ b/449719932)
  • واگرداندن بهینه‌سازی «ضبط محتوا» (Ic000b، b/442364065)
  • ‫ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled پرچم ویژگی اضافه شد. این ویژگی بهینه‌سازی عملکرد را فعال کرد، به‌طوری‌که درخواست‌های مختصات مانند LayoutCoordinates.positionInRoot() از جابه‌جایی‌های حافظه نهانی که ازقبل در RectManager داریم استفاده می‌کنند، به‌جای اینکه در هر تماس کل درخت را پیمایش کنند. (Ieaadc)

رفع اشکال‌ها

  • ‫PlaceholderSpan اکنون از مقیاس‌بندی غیرخطی قلم برای اندازه‌بندی به‌درستی استفاده می‌کند (Id2ead، b/324462728)
  • از ViewCompat برای انجام ثابت‌های بازخورد لمسی پشتیبانی‌شده در سطح پلاتفرم استفاده کنید و برای ثابت‌های جدیدتر به پشتیبانی جایگزین آن تکیه کنید. (Ib5a00)

نسخه 1.10.0-alpha05

‫۸ اکتبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-alpha05 منتشر شد. نسخه 1.10.0-alpha05 شامل این تعهدات است.

رفع اشکال‌ها

  • اشکالی برطرف شد که در آن «بالاپرهای» تودرتو به‌طور نادرست در بالای صفحه قرار می‌گرفتند؛ اکنون به‌درستی به «بالاپرهای» والد خود متصل می‌شوند. (Id4603، b/191279752)
  • مشکل مربوط به پیچیدن فوکوس با «نماهای» دیگر در سلسله‌مراتب برطرف شد. (I95223، b/446028624)
  • فیلدهایی را که پارامترهای درون‌خطی آن‌ها در بازرس لامبداهای تولیدشده توسط Kotlin 2.2.20 وجود ندارد اصلاح می‌کند (I9855d، b/447110005)
  • مشکل سایه‌اندازی نام منابع تکمیل خودکار بین واحد‌های میانای کاربر و پایه را برطرف می‌کند (I5da5a)

همیاری خارجی

  • شیء UiModes به AndroidUiModes تغییر نام داده است تا نشان دهد که ثابت‌های آن از «میانای برنامه‌سازی کاربردی Android» گرفته شده است. (Ia0a77)

نسخه 1.10.0-alpha04

‫۲۴ سپتامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-alpha04 منتشر شد. نسخه 1.10.0-alpha04 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • متغیر قانون آزمایش «نوشتن» که پارامتر CoroutineContext را می‌پذیرد به پایدار ارتقا یافته است. گزارمان آزمایشی برداشته شده است و توسعه‌دهندگان دیگر نیازی به موافقت برای استفاده از این «میانای برنامه‌سازی کاربردی» ندارند. (I74e6e)
  • ComposeUiFlags.isRectTrackingEnabled حذف شد. این منطق همیشه فعال نیست. (Id78df)
  • سربار درون‌خطی Updater#set منسوخ شد زیرا مقدار ارائه‌شده را دفعات زیادی در چارگوش قرار می‌داد (Id679e)
  • دارایی معنایی onAutofillText را به‌عنوان منسوخ علامت‌گذاری کنید. (I6f81c)
  • ‫UnplacedStateAwareModifierNode معرفی شد. وقتی چیدمان قبلاً قرار داده‌شده دیگر قرار داده نمی‌شود، این چیدمان یک تماس برگشتی ارائه می‌دهد. (I8fdd8، b/309776096)
  • اسناد اصلاح‌شده RetainObserver.onRetained و RetainObserver.onUnused اضافه شد که RememberObserver.onAbandoned را منعکس می‌کند. (Ia6fc5)
  • ‫onVisibilityChangedNode() اضافه شد که Modifier.Node تولید می‌کند و Modifier.onVisibilityChanged() ازطریق واگذاری از آن استفاده می‌کند. این کار امکان می‌دهد عملکرد را در Modifier.Node سفارشی شما گسترش دهید. (I70d84، b/443001320)

رفع اشکال‌ها

  • رفع مشکلی که باعث می‌شد محتوای درون‌خطی وقتی در خط نهایی نوشتار چندخطی بیضی‌دار قرار می‌گیرد پرداز نشود، حتی اگر جای‌بان قبل‌از ناحیه بیضی‌دار باشد. (I76aaf، b/441829208)

نسخه 1.10.0-alpha03

‫۱۰ سپتامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-alpha03 منتشر شد. نسخه 1.10.0-alpha03 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نام DelegatableNode.invalidateLayoutForSubtree را به DelegatableNode.invalidateMeasurementForSubtree تغییر می‌دهد. (I94257،‏ b/430106107)
  • مطابقت‌دهنده isInHiddenAccessibilitySubtree زاید را برمی‌دارد. (I4476c، b/443792965)
  • ردیابی پشته «ترکیب» مبتنی بر کلید گروه را معرفی می‌کند که به‌طور پیش‌فرض برای همه برنامه‌های کوچک‌شده فعال است. نگاشت Proguard برای این ردگیری‌ها از Kotlin 2.3.0 توسط افزایه Gradle مترجم Compose تولید خواهد شد. (Ifbcb5)
  • ‫Modifier.skipToLookaheadSize اکنون از لامبدای فعال‌شده پیش‌فرضی استفاده می‌کند که فقط زمانی پرش اندازه را فعال می‌کند که انتقال مشترک فعال باشد، همانند Modifier.skipToLookaheadPosition. (Ibe0f5، b/432485585)
  • ‫ComposeUiFlags.isOutOfFrameDeactivationEnabled برداشته می‌شود و این عملکرد اکنون همیشه فعال است. (I421ed)
  • انتقال توابع کارخانه‌ای برای ایجاد نمونه‌های FillableData به شیء همراه. به‌جای فراخوانی FillableData(value)، از روش‌های کارخانه‌ای جدید FillableData.createFrom(value) استفاده کنید. (I2e200, b/441719650)
  • ‫BeyondBoundsLayoutModifierNode گره «تغییردهنده» جدیدی را معرفی کنید تا جستجوی تمرکز را فراتر از چیدمان محدود انجام دهد. (I39be1، b/416133658)
  • وقتی FocusTargetModifierNode.requestFocus() خودش کانونی‌شدنی نیست، کانون را به یکی از فرزندانش می‌فرستد. اکنون با FocusRequester.requestFocus() و FocusRequesterModifierNode.requestFocus() سازگار است. اگر به این رفتار نیاز ندارید، پرچم ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled را در برنامه‌تان روی false تنظیم کنید. (Icca5c، b/436863604)
  • اندازه پنجره براساس DP را در WindowInfo ارائه دهید (I9322b، b/424442112)
  • پرچم isNestedScrollDispatcherNodeFixEnabled برداشته شد. (If451a)
  • افزودن پشتیبانی از مقادیر تاریخ در تکمیل خودکار در FillableData API. ‫val dateMillisValue: Long برای بازیابی اطلاعات تاریخ اضافه شد و سازنده FillableData(dateMillisValue: Long) مربوطه برای ایجاد نمونه‌های FillableData مبتنی بر تاریخ اضافه شد. (Id072a)

همیاری خارجی

  • شیء UiModes برای تعریف کردن ثابت‌هایی که برای حاشیه‌نویسی UiMode استفاده می‌شود معرفی شده است (I03cb8)

نسخه 1.10.0-alpha02

‫۲۷ اوت ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-alpha02 منتشر شد. نسخه 1.10.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫FillableData را به‌روز کنید تا از عناصر غیرمتنی مثل کلیدهای تغییر وضعیت و فهرست‌ها، ازجمله مقادیر بولی و صحیح در FillableData، و سازندگان کارخانه‌ای برای ایجاد نمونه‌های بولی و فهرست FillableData که به AutofillValue پلاتفرم ترجمه می‌شوند پشتیبانی کند. کنش و دارایی معنایی مربوطه نیز اضافه می‌شود. (Ia8105،‏ Icc5cf)
  • در حالت غیرلمسی، سیستم نمای اولیه/تمرکز پیش‌فرض را به یکی از عناصر قابل‌تمرکز در صفحه اختصاص می‌دهد. این ویژگی به «نوشتن» اضافه شده است و با فعال کردن ComposeUiFlags.isInitialFocusOnFocusableAvailable می‌توانید آن را فعال کنید. (Ib9178)
  • پرچم isPointerInteropFilterDispatchingFixEnabled برداشته شد. (Iaa589)
  • پرچم isNestedScrollInteropPostFlingFixEnabled برداشته شد. (I2a756)
  • افزودن مطابقت‌دهنده‌های معنایی isHiddenFromAccessibility() و isInHiddenAccessibilitySubtree(). (I9f5a1)
  • ‫runCurrent() به MainTestClock اضافه شد تا همه تکالیف معوقه در زمان‌بند زیرین اجرا شود. این کار برای پشتیبانی از اجرای آزمایش‌ها در StandardTestDispatcher انجام می‌شود، جایی که تکالیف به‌جای اینکه بلافاصله اجرا شوند، به زمان‌بند اضافه می‌شوند، حتی اگر تأخیر آن‌ها ۰ میلی‌ثانیه باشد. آزمایش را می‌توان با ایجاد یک ComposeTestRule و ارسال یک StandardTestDispatcher به آن برای استفاده از StandardTestDispatcher راه‌اندازی کرد. به‌طور پیش‌فرض، آزمایش‌ها در UnconfinedTestDispatcher اجرا می‌شوند، در این صورت هرگز نیازی به فراخوانی runCurrent() نخواهد بود.
  • پشتیبانی از اجرای آزمایش‌ها در StandardTestDispatcher اضافه شد. ازنظر تاریخی، چارچوب آزمایش بااستفاده از UnconfinedTestDispatcher راه‌اندازی شده است (و هنوز هم راه‌اندازی می‌شود)، که از محیط تولید به روش‌های ظریفی متفاوت است. اکنون می‌توانید این راه‌اندازی را با ایجاد StandardTestDispatcher خودتان و افزودن آن به effectContext هنگام ایجاد ComposeTestRule (یا هنگام فراخوانی runComposeUiTest) تغییر دهید. (I334d0، b/254115946)
  • به‌روزرسانی کد برای ایجاد درخت گره‌ها از SlotTree. (I997d3)

رفع اشکال‌ها

  • «میانای کاربر Compose» اکنون RetainScopes آگاه از چرخه حیات را در Android نصب می‌کند. اکنون رفتار پیش‌فرض مقادیر retain را در تغییرات پیکربندی حفظ خواهد کرد. (Id4a09, b/177562901)

همیاری خارجی

  • این ویژگی امکان محاسبه سرعت اشاره‌گر براساس رویدادهای اشاره‌گر ردیابی‌شده بااستفاده از رفتار مختص پلاتفرم را به VelocityTracker اضافه می‌کند. (I621e8)

نسخه 1.10.0-alpha01

‫۱۳ اوت ۲۰۲۵

‫androidx.compose.ui:ui-*:1.10.0-alpha01 منتشر شد. نسخه 1.10.0-alpha01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • اگر اشاره با موشواره یا صفحه لمسی در ComposeView در محدوده گره کانونی رخ ندهد، اکنون تمرکز به‌طور خودکار پاک می‌شود. این امر منجر به تجربه کاربری «ضربه زدن برای پاک کردن تمرکز» می‌شود که در مقایسه با رفتار فعلی هنگام استفاده از دستگاه‌های ورودی اشاره‌گر، بیشتر موردانتظار است. با «میانای برنامه‌سازی کاربردی» جدید AbstractComposeView.isClearFocusOnPointerDownEnabled می‌توانید از این رفتار انصراف دهید. (I6322b، b/282963174)
  • میانای FillableData را معرفی کنید تا علاوه‌بر «نوشتار»، از انواع مختلف عنصر تکمیل خودکار پشتیبانی کند. (If9bd2)
  • «میانای برنامه‌سازی کاربردی» جدید برای فعال و غیرفعال کردن پویا عناصر مشترک که همچنین امکان محاسبه اینکه آیا ازقبل انتقال عنصر مشترک درحال انجام وجود دارد یا نه را فراهم می‌کند. «میانای برنامه‌سازی کاربردی» جدید برای تنظیم محدوده‌های هدف جایگزین وقتی عنصر مشترک هدف درطول انتقال ازبین می‌رود. میانای برنامه‌سازی کاربردی جدید برای دریافت LayoutCoordinates LookaheadScope. (I18dd4، b/409819304، b/395670637)
  • پرچم isNestedScrollInteropIntegerPropagationEnabled را برای کنترل آزمایش ارسال اعداد صحیح به تعامل‌پذیری پیمایش تودرتو معرفی کنید. (If8316)
  • ‫requestFocusForChildInRootBounds() به DelegatableNode اضافه شد تا تمرکز به فرزندی که با مستطیل داده‌شده هم‌پوشانی دارد منتقل شود. (I001ef)
  • پرچم‌های برداشته‌شده isOnScrollChangedCallbackEnabled، isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled، isFlingContinuationAtBoundsEnabled، isAutomaticNestedPrefetchEnabled، DragGesturePickUpEnabled، isPointerInteropFilterDispatchingFixEnabled، isNestedScrollInteropPostFlingFixEnabled، isNestedScrollDispatcherNodeFixEnabled (I36c18)
  • ‫@CheckResult گزارمان به تابع‌های گزینشگر و یابنده SemanticsNode اضافه شد تا استفاده از مقادیر برگشتی را اجباری کند. (I6f86e, b/201652748)
  • بهبود عملکرد فرایند ضبط محتوا (I3c7c0)
  • ‫CompositionLocal را معرفی کنید که می‌تواند برای اصلاح قلم‌موی برجستگی تکمیل موفقیت‌آمیز «تکمیل خودکار» استفاده شود. (I52329)
  • میانای جدیدی به نام «درون‌یابی‌شدنی» معرفی شد که امکان درون‌یابی خودکار بین انواع مختلف را فراهم می‌کند، به این شرط که یک نوع بداند چگونه از نوع دیگر تبدیل کند. این میانای کاربری در چندین نوع ترکیب مانند «قلم‌مو» و «شکل» استفاده می‌شود، اما می‌تواند به‌صورت خارجی نیز استفاده شود. (I58eab)
  • اکنون «پیمایش‌پذیر» از رویدادهای پیمایش چرخ موشواره ۲ بعدی بهتر پشتیبانی می‌کند. میانای برنامه‌سازی کاربردی آزمایشی جدیدی برای کمک به آزمایش موارد استفاده در MouseInjectionScope ارائه شده است. همچنین سربار جدیدی برای روش‌های پیمایش در MouseInjectionScope و پرچمی برای کنترل رفتار جدید به‌نام isMouseWheel1DAxisLockingEnabled (I136df) معرفی کردیم
  • DeviceConfigurationOverrides را برای نوع و وضعیت صفحه‌کلید، نوع و وضعیت پیمایش، وضعیت صفحه‌نمایش لمسی، و نوع حالت رابط کاربری (I282f0) اضافه کنید
  • ‫LineHeightStyle.Mode جدیدی به‌نام Tight اضافه شد. این حالت کمک می‌کند ارتفاع خطوط کوچک‌تر اعمال شود، حتی اگر احتمالاً حروف بلندتر را برش دهد. (Id3849)
  • ‫BaselineShift اکنون مقدار «نامشخص» دارد تا از جعبه‌بندی جلوگیری کند BaselineShift،‏ Hyphens،‏ LineBreak،‏ TextAlign، و TextDirection اکنون isSpecified تابع کمکی دارند Hyphens،‏ TextAlign،‏ TextDecoration، و TextDirection اکنون valueOf() و روش‌های مقدار دارند که امکان سریال‌سازی/واسریال‌سازی کارآمد را فراهم می‌کنند. (I8d44c)
  • واسط روش getDisplayName جدیدی اضافه شد تا نام‌های نمایش سفارشی برای نمونه‌های پارامتر پیش‌نمایش مجاز شود. (I19bdf، b/241699422)
  • وقتی مقادیر Dp بااستفاده از «کمتر از» یا «بزرگ‌تر از» با «نامشخص» مقایسه می‌شود، اکنون همیشه مقدار «نادرست» را برمی‌گرداند. استفاده از Dp.compareTo(Unspecified) همیشه مقدار ۰ را برمی‌گرداند. تنظیم پرچم ComposeUiUnitFlags.isDpCompareToChanged روی false باعث می‌شود Dp.compareTo() به رفتار قبلی خود برگردد، جایی که مقایسه «نامشخص» با «کمتر از» و «بزرگ‌تر از» همیشه false برنمی‌گرداند، و compareTo() با «نامشخص» با رفتار Float.compareTo() مطابقت دارد. (Ifa88b، b/429221319)

رفع اشکال‌ها

  • تغییر minSdk پیش‌فرض از API 21 به API 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
  • مشکلی را برطرف می‌کند که مانع از ایجاد AndroidComposeViews جدید درحین انتقال می‌شد. (I2e23e، b/340894487، b/287484338)
  • اشکال رنگی هنگام استفاده از دارایی برداری که از یک رنگ استفاده می‌کند و fillColor نه کاملاً مات است و نه کاملاً شفاف، برطرف می‌شود. (I3b041, b/328677973)
  • مشکلی را برطرف می‌کند که در آن نمادهای بارگیری‌شده ازطریق painterResource با رنگ‌های مختص زمینه درصورت تغییر زمینه به‌روزرسانی نمی‌شدند. (I85ea0، b/424416571)
  • معرفی معناشناسی onFillData و fillableData (I45d9e)
  • کدبندی وضعیت مختص پلاتفرم اکنون همیشه در StateRestorationTester فعال است. این کار رفتار آزمایشی را با بازیابی وضعیت واقعی برنامه، مثل «بسته‌بندی» در Android، هماهنگ می‌کند. ‫(I38211،‏ b/408154192،‏ b/382294247)
  • خرابی‌های گاه‌به‌گاه هنگام درخواست تمرکز را برطرف می‌کند. (57b31a11، b/431111149)

نسخه ۱.۹

نسخه ۱.۹.۵

‫۱۹ نوامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.5 منتشر شد. نسخه ۱.۹.۵ شامل این تعهدات است.

نسخه ۱.۹.۴

‫۲۲ اکتبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.4 منتشر شد. نسخه 1.9.4 شامل این تعهدات است.

رفع اشکال‌ها

  • مشکلی برطرف شد که در آن محتوای نوشتاری درون‌خطی اگر در آخرین خط نوشتار چندخطی بیضی‌دار بود ناپدید می‌شد، حتی اگر محتوای درون‌خطی در ناحیه بیضی‌دار نبود. (I76aaf، b/441829208)
  • رفع مشکلی که باعث می‌شد وقتی debounceMillis صفر نیست، onLayoutRectChanged برگشت‌های اصلاح‌گر همیشه فراخوانی نشود. (72aba47، b/445324854)

نسخه 1.9.3

‫۸ اکتبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.3 منتشر شد. نسخه ۱.۹.۳ حاوی این تعهدات است.

رفع اشکال‌ها

  • اشکالی که باعث می‌شد اگر چیدمان درحال انتقال بیش‌از ۱۷۰ فرزند داشته باشد، اصلاح‌کننده‌های onVisibilityChanged/onFirstVisible/onLayoutRectChanged بازخوان دریافت نکنند برطرف شد. (4f2fdd،‏ b/445356774)

نسخه ۱.۹.۲

‫۲۴ سپتامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.2 منتشر شد. نسخه 1.9.2 شامل این تعهدات است.

رفع اشکال‌ها

  • اکنون Modifier.onVisibilityChanged() وقتی گره‌ای جدا یا دوباره استفاده می‌شود به‌درستی اجرا می‌شود. (Ic5ce20)
  • ‫Modifier.onVisibilityChanged() و onLayoutRectChanged() اکنون چیدمان‌های والد را بااستفاده از placeWithLayer() برای قرار دادن فرزندان به‌درستی مدیریت می‌کند. (Ia05ac9)
  • برای Modifier.onVisibilityChanged() و onLayoutRectChanged()، در موارد خاص مانند برداشتن لایه/اصلاح‌کننده لایه یا به‌روزرسانی ویژگی‌های لایه، به‌درستی اطلاع‌رسانی کنید. (Ia05ac)

نسخه ۱.۹.۱

‫۱۰ سپتامبر ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.1 منتشر شد. نسخه 1.9.1 شامل این تعهدات است.

رفع اشکال‌ها

  • اشکال رنگی هنگام استفاده از دارایی برداری که از یک رنگ استفاده می‌کند و fillColor نه کاملاً مات است و نه کاملاً شفاف، برطرف می‌شود. (I3b041, b/328677973)

نسخه ۱.۹.۰

‫۱۳ اوت ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0 منتشر شد. نسخه 1.9.0 شامل این تعهدات است.

تغییرات مهم از نسخه ۱.۸.۰

  • تغییرات مهم در نسخه ۱.۹.۰ در این پست وبلاگ پوشش داده شده است
  • بررسی‌های Lint که همراه با Compose ارسال می‌شوند اکنون به حداقل نسخه ۸.۸.۲ از AGP نیاز دارند. اگر نمی‌توانید AGP را ارتقا دهید، می‌توانید به‌جای آن بااستفاده از android.experimental.lint.version=8.8.2 (یا نسخه جدیدتر) در gradle.properties، خود Lint را ارتقا دهید. برای اجرای بررسی‌های lint در Compose درون IDE، به Android Studio Ladybug یا نسخه‌های جدیدتر نیاز است.
  • تغییرات اساسی: گره‌های اصلاح‌کننده graphicsLayer اکنون SemanticsModifierNode را پیاده‌سازی می‌کند. این کار می‌تواند منجر به اضافه شدن SemanticsNodes جدید به درخت معنایی شود و بنابراین، منجر به شکست آزمایش‌ها در آزمایش‌هایی شود که درباره ساختار درخت معنایی فرضیاتی دارند. برای مثال، آزمایش‌هایی که از onChild، onParent، onSibling، و روش‌های مشابه دیگر برای ایجاد ادعاها استفاده می‌کنند، اگر گره جدیدی بین گره‌های فعلی و هدف اضافه شود ممکن است ناموفق باشند. روش ترجیحی برای رفع این خطاها این است که testTag را مستقیماً به گره هدف اضافه کنید. رویکرد دیگر استفاده از تطبیق‌دهنده آزادتر، مانند onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) است. (I638b5)

نسخه 1.9.0-rc01

۳۰ ژوئیه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-rc01 منتشر شد. نسخه 1.9.0-rc01 شامل این تعهدات است.

رفع اشکال‌ها

  • مشکلی را برطرف می‌کند که در آن نمادهای بارگیری‌شده ازطریق painterResource با رنگ‌های مختص زمینه در تغییرات زمینه سیستم به‌روزرسانی نمی‌شدند. (I85ea0، b/424416571)
  • خطاهای مربوط به APIهای ۲۱(Lollipop) و ۲۸(Pie) را برطرف می‌کند که در آن‌ها روش‌های گرافیکی مهم هنگام بهینه‌سازی تغییر نام داده بودند. (Iebf99، b/425120571، b/420462749)
  • مطمئن شوید که onLayoutRectChanged اصلاح‌کننده‌های درج‌شده جدید در ابتدا فراخوانده می‌شوند. ‫(l9aa91)،‏ (lb348a)
  • رفع مشکل نامعتبر شدن نادرست حافظه نهان جابه‌جایی که باعث می‌شد onLayoutRectChanged اصلاح‌کننده با مختصات اشتباه فراخوانی شود (ibd4cd)، (lddc57)
  • رفع مشکل چیدمان‌های چرخانده‌شده/کج‌شده که مختصات نادرست را با onLayoutRectChanged اصلاح‌کننده دریافت می‌کنند (lddc57، b/426750475)

همیاری خارجی

  • مشکلی که باعث می‌شد dragAndDropSource مورد در LazyList هنگام پیمایش ناپدید شود برطرف شد. از ویکتور رندینا سپاس‌گزاریم! (dc3bcd3،‏ b/425894792)

نسخه 1.9.0-beta03

‫۱۶ ژوئیه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-beta03 منتشر شد. نسخه 1.9.0-beta03 شامل این تعهدات است.

رفع اشکال‌ها

  • مشکلی را برطرف می‌کند که در آن سایه‌های داخلی یکنواخت محو با انحراف به‌درستی حرکت نمی‌کردند.

نسخه 1.9.0-beta02

‫۲ ژوئیه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-beta02 منتشر شد. نسخه 1.9.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • شیء همراه را به آزمایشی تغییر می‌دهد تا با کلاس مطابقت داشته باشد. (I8452a)
  • پرچم آزمایشی isTrackFocusEnabled برداشته شد (I003fd)

رفع اشکال‌ها

  • وقتی هیچ WindowInsets به محتوای ComposeView تجاوز نمی‌کند، مقادیر WindowInsetsRulers ارائه نمی‌شود. (I71221)

نسخه 1.9.0-beta01

‫۱۸ ژوئن ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-beta01 منتشر شد. نسخه 1.9.0-beta01 شامل این تعهدات است.

تغییرات ناگهانی

  • گره‌های تغییردهنده graphicsLayer اکنون SemanticsModifierNode را پیاده‌سازی می‌کند. این کار می‌تواند منجر به اضافه شدن SemanticsNodes جدید به درخت معنایی شود و بنابراین، منجر به شکست آزمایش‌ها در آزمایش‌هایی شود که درباره ساختار درخت معنایی فرضیاتی دارند. برای مثال، آزمایش‌هایی که از onChild، onParent، onSibling، و روش‌های مشابه دیگر برای ایجاد ادعاها استفاده می‌کنند، اگر گره جدیدی بین گره‌های فعلی و هدف اضافه شود ممکن است ناموفق باشند. روش ترجیحی برای رفع این خطاها این است که testTag را مستقیماً به گره هدف اضافه کنید. رویکرد دیگر استفاده از تطبیق‌دهنده آزادتر، مانند onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) است. (I638b5)

تغییرات میانای برنامه‌سازی کاربردی

  • ‫ShadowContext به واسط مهروموم‌شده تغییر کرد (I3ce40)
  • روشی بین‌واحدی برای ایجاد «رویداد لمس غیرمستقیم» (برای آزمایش) اضافه می‌کند (I22e4c)
  • ‫IndirectTouchEvent.nativeEvent را آزمایشی می‌کند. (I6fda5)
  • سطح «میانای برنامه‌سازی کاربردی» را براساس بازخورد شورای «میانای برنامه‌سازی کاربردی» اصلاح می‌کند. (Ibf378)
  • ‫FrameRateCategory.NoPreference ثابت را بردارید. نام Modifier.requestedFrameRate به Modifier.preferredFrameRate تغییر کند. (I2f976)
  • ‫WindowInsetsRulers: rulersIgnoringVisibility به حداکثر تغییر کرد. ‫getDisplayCutoutBounds() به تابع افزونه PlacementScope تغییر کرد. ‫WindowInsetsAnimationProperties به WindowInsetsAnimation تغییر کرد و getAnimationProperties() به getAnimation() تغییر کرد. (I3816f)
  • کلاس ShadowParams به Shadow (I11cca) تغییر کرد
  • بسته API نرخ فریم را از androidx.compose.ui.ui به androidx.compose.ui تغییر دهید (I8994e)
  • ‫InsetsRulers تغییر کرد تا با نام WindowInsetsRulers در کد مشترک قرار گیرد. میانای برنامه‌سازی کاربردی را ساده کردیم تا همه حاشیه‌ها WindowInsetsRulers باشند. دارایی‌های پویانمایی غیرخط‌کش به کلاس AnimationProperties استخراج شد. از WindowInsetsRulers.innermostOf() می‌توان برای ادغام کردن چند WindowInsetsRulers استفاده کرد. (I2f0c6،‏ b/415012444)
  • میانای برنامه‌سازی کاربردی ابزاری برای تجزیه اطلاعات منبع اضافه‌شده توسط کامپایلر Compose اضافه شد. (Iceaf9، b/408492167)

رفع اشکال‌ها

  • پرچم isGetFocusedRectReturnEmptyEnabled اکنون برداشته شده است زیرا ویژگی به‌طور کامل درستی‌سنجی شده است. (Ife722)
  • اشکالی در performScrollToNode برطرف شد که در برخی موارد به گره هدف نمی‌رسید. با این اصلاح، در این موارد همیشه باید به گره هدف برسد. یکی از عوارض جانبی این تغییر این است که موقعیت پیمایش دقیق در انتهای کنش ممکن است اکنون متفاوت باشد، که بر آزمایش‌های نماگرفت و آزمایش‌هایی که درباره موقعیت پیمایش دقیق فرضیاتی دارند تأثیر می‌گذارد. (I2c8a1)

نسخه 1.9.0-alpha04

‫۴ ژوئن ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-alpha04 منتشر شد. نسخه 1.9.0-alpha04 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • «میاناهای برنامه‌سازی کاربردی» اصلاح‌کننده برای سایه‌های قابل‌سفارشی‌سازی اضافه شد. (I2058d،‏ b/160665122)
  • دارایی SemanticsModifierNode.isImportantForBounds را اضافه کنید که تعیین می‌کند آیا گره هنگام محاسبه مرزها باید درنظر گرفته شود یا نه. این دارایی به‌طور پیش‌فرض درست است و می‌توان آن را روی نادرست تنظیم کرد تا نشان دهد که گره نباید برای مرزها درنظر گرفته شود. (I7ebec)
  • تابع کارخانه‌ای SemanticsPropertyKey را برای اعلام کردن معناشناسی‌های خاص Android که به‌عنوان موارد اضافی دسترس‌پذیری ازطریق AccessibilityNodeInfo.getExtras دردسترس قرار می‌گیرند اضافه کنید. (I2ed51)
  • موارد استفاده از ComposeUiFlags.isRemoveFocusedViewFixEnabled برداشته شد و پرچم منسوخ شد. (I50328)
  • چارچوب سایه سفارشی‌سازی‌شدنی جدیدی معرفی کنید. این شامل DropShadowPainter و InnerShadowPainter و همچنین DropShadow/InnerShadow وابستگی می‌شود. زیرساخت سایه به‌اشتراک گذاشته می‌شود به‌طوری‌که سایه‌های تولیدشده یکسان می‌توانند در چندین سایت تماس بدون نیاز به تولید مجدد سایه‌ها به‌اشتراک گذاشته شوند. (I24f7a, b/160665122)
  • ‫CompositeShader و CompositeShaderBrush را معرفی کنید که نتیجه ترکیبی بین دو سایه‌زن ایجاد می‌کند. همچنین ShaderBrush#transform را اضافه کنید تا ماتریس تبدیل را برای سایه‌زن تنظیم کنید. (I2621a, b/160665122)

رفع اشکال‌ها

  • اشکالی در NestedScrollInteropConnection برطرف شد که در آن روش‌های پرتاب نسبت‌به نماها در ترتیب اشتباهی قرار داشتند. (I56ad4)
  • قبلاً، کادرهای گفتگویی که تمام‌صفحه را ترسیم می‌کردند در ناحیه برش نمایشگر ترسیم نمی‌شدند. این اشکال برطرف شده است تا کادرهای گفتگوی دارای decorFitsSystemWindows = false و usePlatformDefaultWidth = false بتوانند ناحیه برش نمایشگر را بگیرند. (I9e975)
  • اشکالی برطرف شد که در آن نشانگر تمرکز سبز TalkBack پس‌از روشن شدن درحالی‌که برنامه «نوشتن» در پس‌زمینه بود رسم نمی‌شد. (Ifd12a)

نسخه 1.9.0-alpha03

‫۲۰ مه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-alpha03 منتشر شد. نسخه 1.9.0-alpha03 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پرچم ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled باعث می‌شود وقتی هیچ‌چیز در ComposeView قابل‌تمرکز نباشد، مستطیل را روی مقدار «خالی» تنظیم کند. این کار مانع می‌شود که جستجوی تمرکز «نما» را برای تمرکز انتخاب کند. این امر به‌ویژه زمانی مهم است که «ویرایشگر روش ورودی» گزینه «بعدی» داشته باشد و بخواهد روی ComposeView تمرکز کند و requestFocus() ناموفق باشد. (Ibd0e2، b/369256395)
  • پرچم isNestedScrollDispatcherNodeFixEnabled را معرفی کن. (I0d24a)
  • تغییر نام DialogProperties' dialogContentTitle به windowTitle (Ibd27b)
  • اصلاح‌کننده‌های Modifier.onFirstVisible و Modifier.onVisibilityChanged معرفی شدند که اصلاح‌کننده‌های سطح بالایی هستند که روی Modifier.onLayoutRectChanged ساخته شده‌اند. این اصلاح‌کننده‌ها به‌طور خاص برای مدیریت بسیاری از الزامات رایج برنامه مثل ثبت ظهور، پخش خودکار ویدیوها، و غیره ساخته شده‌اند. این اصلاح‌کننده‌ها با درنظر گرفتن عملکرد ساخته شده‌اند تا بتوانند بدون خطر کاهش عملکرد پیمایش در سناریوهای حیاتی مبتنی بر فهرست استفاده شوند. علاوه‌بر این میاناهای برنامه‌سازی کاربردی اصلاح‌گر، میاناهای برنامه‌سازی کاربردی دیگری برای RelativeLayoutBounds اضافه شده است تا از این موارد استفاده پشتیبانی کند و همچنین توسعه‌دهندگان بتوانند به‌راحتی اصلاح‌گرهای سفارشی مشابهی ایجاد کنند که دقیقاً مناسب مورد استفاده آن‌ها باشد. (I759b8)
  • برای درنظر گرفتن توسعه آینده این ویژگی، setDiagnosticStackTraceEnabled را به آزمایشی تغییر دهید. (I11db3)
  • ‫Modifier.scrollable2D،‏ Scrollable2DState، و APIهای همراه را برای ایجاد وضعیت معرفی کنید. همچنین توابع افزونه پیمایش رایج معرفی شد. (Ic61c8, b/214410040)
  • مقادیر رنگ ۶۴ بیتی «نوشتن» مستقیماً با Android ColorLongs قابل مقایسه نیست زیرا شناسه‌های فضای رنگ برای برخی‌از فضاهای رنگی نامرتب است. برای تبدیل به فضاهای رنگ Android و تبدیل از آن‌ها، دو میانای برنامه‌سازی کاربردی جدید اضافه شده است: toColorLong() و fromColorLong(). (I36899)
  • ‫ViewConfiguration.minimumFlingVelocity معرفی شد تا امکان کنترل سرعت پرتاب با حد پایین فراهم شود. (I11aab)

نسخه 1.9.0-alpha02

۷ مه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-alpha02 منتشر شد. نسخه 1.9.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • در dialogContentTitle به DialogProperties اضافه کنید، که عنوان پنجره محتوا را تنظیم می‌کند. bf9d670

رفع اشکال‌ها

  • «خط‌کش‌های حاشیه پنجره» موقتاً غیرفعال شده است تا آزمایش‌های داخلی اصلاح شود. 8d1402
  • نحوه اضافه شدن تغییرات ورودی اشاره‌گر به VelocityTracker در DragGestureNode اصلاح شد، این مورد را می‌توان با پرچم جدید isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled کنترل کرد.254ddb

نسخه 1.9.0-alpha01

‫۲۳ آوریل ۲۰۲۵

‫androidx.compose.ui:ui-*:1.9.0-alpha01 منتشر شد. نسخه 1.9.0-alpha01 شامل این تعهدها است.

تغییرات رفتار

  • بررسی‌های Lint که همراه با Compose ارسال می‌شوند اکنون به حداقل نسخه ۸.۸.۲ از AGP نیاز دارند. اگر نمی‌توانید AGP را ارتقا دهید، می‌توانید به‌جای آن بااستفاده از android.experimental.lint.version=8.8.2 (یا نسخه جدیدتر) در gradle.properties، خود Lint را ارتقا دهید. برای اجرای بررسی‌های lint در Compose درون IDE، به Android Studio Ladybug یا نسخه‌های جدیدتر نیاز است.

تغییرات میانای برنامه‌سازی کاربردی

  • «پرچم» را برمی‌دارد تا بیانیه‌های ردیابی را برای ردیاب مسیر بازدید (اشکال‌زدایی) فعال کند. (I1b2a1)
  • ‫InnerRectRulers و OuterRectRules را به روش تغییر داد. پارامتر نام از RectRulers میانای برنامه‌سازی کاربردی عمومی برداشته شد. ‫DerivedRulers اکنون گزینه سازنده برای خط‌کش‌های عمودی و افقی است. روش‌های MergedHorizontalRulers و MergedVerticalRulers با روش‌های minOf و maxOf برای تولید نمونه‌ها جایگزین شده‌اند. (Iee89f، b/408192133)
  • ‫androidx.compose.ui.LocalSavedStateRegistryOwner را به‌نفع androidx.savedstate.compose.LocalSavedStateRegistryOwner منسوخ کنید. (I5439f، b/377946781)
  • برای تنظیم نمایشگر روی حالت عدم خوابیدن درحین ارائه، Modifier.keepScreenOn را اضافه کنید (Ib5af4، b/408284174)
  • دارایی معنایی جدیدی Shape اضافه کنید که ممکن است زمانی تنظیم شود که شکل عنصر میانای کاربری با مستطیل محدوده‌اش متفاوت باشد، مثلاً مستطیل با گوشه‌های گرد. (I1376f)
  • مشکل توزیع رویداد اشاره‌گر در AndroidViews برطرف شد و پرچم isPointerInteropFilterDispatchingFixEnabled برای محافظت از تغییرات اضافه شد. (I0e272،‏ b/372055500،‏ b/408002332)
  • ‫FocusRestorer دیگر مورد کانونی‌شده قبلی را سنجاق نمی‌کند. کاربران باید از کلیدی استفاده کنند که مطمئن شوند مورد قبلاً کانونی‌شده همان درهم‌سازی ترکیب را دارد تا کانون با موفقیت بازگردانده شود. (I4203b،‏ b/330696779)
  • به «نوشتن» اجازه دهید ViewTreeObserver.OnScrollChanged را راه‌اندازی کند. این رفتار تحت پرچم isOnScrollChangedCallbackEnabled معرفی شده است. همچنین تابع افزونه‌ای از DelegatableNode dispatchOnScrollChanged را معرفی کردیم. (I34b9d، b/238109286)
  • ‫currentCompositeKeyHash اکنون منسوخ شده است. درعوض از currentCompositeKeyHashCode استفاده کنید. «میانای برنامه‌سازی کاربردی» جایگزین همان مقدار درهم‌سازی را با بیت‌های بیشتری کدبندی می‌کند که احتمال داشتن کلید درهم‌سازی یکسان برای دو گروه تصادفی غیرمرتبط در سلسله‌مراتب ترکیب را به‌صورت تصاعدی کاهش می‌دهد. (I4cb6a، b/177562901)
  • برای استفاده از پروژه‌های منتشرشده با Kotlin 2.0، باید از KGP 2.0.0 یا نسخه‌های جدیدتر استفاده کنید (Idb6b5)
  • پشتیبانی از بررسی lint برای FocusRequester اضافه شد تا مطمئن شویم در ترکیب به‌یاد آورده می‌شود (I6bf91)
  • امکان تنظیم نرخ فریم ترجیحی یا دسته نرخ فریم در «عنصر ترکیبی» اضافه شد که باید در (Ie5201) ارائه شود
  • ‫MotionEvent بومی را در Android نمایان کنید. (I17286)
  • افزودن getChecked() + setChecked(int)، منسوخ کردن isChecked + setChecked(boolean) (Iaac9d)
  • اصلاح‌کننده graphicsLayer اکنون blendMode و colorFilter را می‌پذیرد (Iab0e6)
  • ‫LocalResources ترکیب محلی به پُرسمان «منابع» اضافه شد. وقتی پیکربندی تغییر می‌کند، LocalResources.current دوباره ترکیب می‌شود، بنابراین تماس با میاناهای برنامه‌سازی کاربردی مثل stringResource() مقادیر به‌روزشده را برمی‌گرداند. (I50c13، b/274786917)
  • نمایان کردن «میانای برنامه‌سازی کاربردی» آزمایشی برای «ترکیب‌شونده‌ها» به‌منظور مدیریت رویدادهای لمس غیرمستقیم (Icff57)
  • این نسخه، گزارش استثناهای مدیریت‌نشده‌ای را که در مراحل چیدمان و طراحی محتوای ترکیب‌پذیر شما ایجاد می‌شود بهبود می‌بخشد. قبلاً، استثنای مدیریت‌نشده در اینجا باعث ازکارافتادن اجراکننده آزمایش و پایان زودهنگام مجموعه آزمایش می‌شد. اکنون می‌توان این استثناها را بدون پایان دادن به مجموعه آزمایش به‌شکل بهتری گزارش کرد. (I9928b،‏ b/314128080)
  • میانای برنامه‌سازی کاربردی آزمایشی GlobalAssertions را نامناسب اعلام کرد. هدف استفاده از آن اجرای بررسی‌های دسترس‌پذیری بود، برای این منظور به‌جای آن از enableAccessibilityChecks() استفاده کنید. (I50aa5)
  • ‫SemanticsNodeInteraction.performTextInputSelection دیگر آزمایشی نیست و اکنون از پارامتر relativeToOriginal دیگری پشتیبانی می‌کند که به شما امکان می‌دهد انتخاب را روی نوشتار اصلی بدون تبدیل یا نوشتار تبدیل‌شده اعمال کنید. (I3a905،‏ b/261561038،‏ b/277018945)
  • معرفی میانای برنامه‌سازی کاربردی برای ایجاد فهرست‌های نقطه‌ای سفارشی ازطریق AnnotatedString (I1d066، b/383269496، b/139326648)
  • runWithTimingDisabled را به‌نفع runWithMeasurementDisabled منسوخ کنید، که رفتار را واضح‌تر توصیف می‌کند - همه سنجه‌ها موقتاً متوقف می‌شوند. علاوه‌براین، ابرکلاس MicrobenchmarkScope را نمایان کنید زیرا بازاعلان کردن تابع runWithMeasurementDisabled برای باز کردن دسترسی امکان‌پذیر نیست، چون درون‌خطی است. ‫(I9e23b،‏ b/389149423،‏ b/149979716)
  • «میانای برنامه‌سازی کاربردی دستگاه‌ها» در ui-tooling به‌روزرسانی شد تا دستگاه‌های جدیدتر را دربر بگیرد. (Ia2ac1)
  • «چهره لوحی» را به مجموعه اندازه‌های «صفحه پیش‌نمایش» اضافه کنید تا به توسعه‌دهنده کمک کنید پنجره‌های بزرگ‌تر را درنظر بگیرد (Ia1976)
  • معرفی API مقدار ردیابی برای علامت‌گذاری/ثبت ردیابی با مقادیر در یک نقطه زمانی معین. مقادیر ردیابی در Prefetto به‌عنوان یک مسیر جدید نشان داده می‌شود که ازطریق خط زمان ردیابی قابل مشاهده است. در Android، این ویژگی‌ها بااستفاده از Trace.setCounter پیاده‌سازی می‌شوند. (Idcf48)

رفع اشکال‌ها

  • رفع مشکل ارسال مشاهده‌گرهای به‌یادآوری در ترکیب قابل‌توقف برای جلوگیری از ارسال به‌یادآوری‌شده/فراموش‌شده در همان اعمال (I570b2، b/404645679، b/407931790)
  • اکنون می‌توان android:dialogTheme را تنظیم کرد تا وقتی decorFitsSystemWindows نادرست است، ویژگی‌های کادر گفتگو را کنترل کند (I7922f، b/246909281)
  • اشکالی که در آن هر رویداد حرکتی که خارج از چارگوش گفتگو ثبت می‌شد می‌توانست چارگوش گفتگو را ببندد برطرف شد. (Ia78fd)
  • اکنون بررسی‌های lint Compose به حداقل نسخه ۸.۸.۲ از خط فرمان AGP و حداقل Android Studio Ladybug برای پشتیبانی IDE نیاز دارد. اگر از نسخه قدیمی‌تری از AGP استفاده می‌کنید، می‌توانید android.experimental.lint.version=8.8.2 را در gradle.properties تنظیم کنید تا نسخه Lint را بدون تأثیر گذاشتن بر AGP ارتقا دهید. (I6f2a8)
  • دارایی معنایی جدیدی به‌نام InputText اضافه شد که مقدار textfield را قبل‌از اعمال تبدیل برونداد ضبط می‌کند. (Iae46a،‏ b/395911609،‏ b/176949051)
  • ‫enableAccessibilityChecks() «میانای برنامه‌سازی کاربردی» که «بررسی‌های دسترس‌پذیری برای Android» را روشن می‌کند به بسته‌های جداگانه‌ای منتقل شد که اگر از TestRule استفاده نمی‌کنید compose:ui:ui-test-accessibility و هنگام فراخوانی در TestRule compose:ui:ui-test-junit4-accessibility است (I3c318، b/391560768)
  • پشتیبانی از ردیابی پشته‌های نوشتن در LaunchedEffect و rememberCoroutineScope اضافه شد (I705c0،‏ b/354163858)

همیاری خارجی

  • تغییر تابع آزمایشی runComposeUiTest برای پذیرفتن مسدودسازی تعلیق. همچنین تابع منسوخ‌شده runComposeUiTest برای سازگاری دودویی اضافه شد (I3b88c،‏ b/361577328)

نسخه ۱.۸

نسخه ۱.۸.۳

‫۱۸ ژوئن ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.3 منتشر شد. نسخه ۱.۸.۳ شامل این تعهدات است.

رفع اشکال‌ها

  • پرچم isGetFocusedRectReturnEmptyEnabled اکنون برداشته شده است زیرا ویژگی به‌طور کامل درستی‌سنجی شده است. (Ife722)
  • پرچم ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled باعث می‌شود وقتی هیچ‌چیز در ComposeView قابل‌تمرکز نباشد، مستطیل را روی مقدار «خالی» تنظیم کند. این کار مانع می‌شود که جستجوی تمرکز «نما» را برای تمرکز انتخاب کند. این امر به‌ویژه زمانی مهم است که «ویرایشگر روش ورودی» گزینه «بعدی» داشته باشد و بخواهد روی ComposeView تمرکز کند و requestFocus() ناموفق باشد. (Ibd0e2، b/369256395)

نسخه ۱.۸.۲

‫۲۰ مه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.2 منتشر شد. نسخه ۱.۸.۲ شامل این تعهدات است.

رفع اشکال‌ها

  • رفع خطای NPE وقتی کادر گفتگو درحین جاری‌سازی رویداد فعال در کادر گفتگو برداشته می‌شود (6a7e7f)
  • رفع مشکل onLayoutRectChange که درصورت وقوع به‌روزرسانی‌های فقط طراحی، براساس جدول زمانی محدودشده به‌روز نمی‌شود. (03b82d)

نسخه ۱.۸.۱

۷ مه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.1 منتشر شد. نسخه ۱.۸.۱ شامل این تعهدات است.

رفع اشکال‌ها

  • برطرف کردن برخی‌از مشکلات onLayoutRectChanged و LazyLayout d791b11
  • درخواست‌های اندازه‌گیری مجدد برای عناصر ازپیش‌ساخته‌شده را رد کنید. این اشکال بر عملکرد پیمایش چیدمان‌های تنبل تأثیر می‌گذاشت زیرا پیش‌واکشی در برخی موارد به‌طور کارآمد کار نمی‌کرد و اندازه‌گیری در چارچوب انجام می‌شد. 742087a

نسخه ۱.۸.۰

‫۲۳ آوریل ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0 منتشر شد. نسخه ۱.۸.۰ شامل این تعهدات است.

تغییرات مهم از نسخه ۱.۷.۰

  • «نوشتن» نسخه ۱.۸ حاوی پشتیبانی تازه اضافه شده برای تکمیل خودکار معنایی است. مطمئن شوید که نسخه‌های UI و Foundation که استفاده می‌کنید نسخه ۱.۸ یا بالاتر باشد، زیرا تکمیل خودکار برای عناصر نوشتاری به جدیدترین نسخه‌های هر دو واحد نیاز دارد. برای استفاده از API و مثال‌ها، لطفاً برای جزئیات بیشتر به اسناد تکمیل خودکار در اینجا مراجعه کنید.
  • ‫Compose 1.8 از انواع دیگری از بازخورد لمسی پشتیبانی می‌کند: Confirm، ContextClick، GestureEnd، GestureThresholdActivate، Reject، SegmentFrequentTick، SegmentTick، ToggleOn، ToggleOff، VirtualKey. این ویژگی ازطریق LocalHapticFeedback دردسترس است و در Android، وقتی Vibrator API نشان دهد که لمس‌پذیری پشتیبانی می‌شود، این ویژگی به‌طور پیش‌فرض دردسترس است.
  • اکنون چندین «میانای برنامه‌سازی کاربردی تمرکز» پایدار هستند، ازجمله Modifier.focusRestorer() و onEnter و onExit FocusProperties (I6e667). اکنون می‌توانید هنگام تماس با requestFocus، FocusDirection را مشخص کنید. یک requestFocus(FocusDirection) API به focusRequester و FocusTargetModifierNode اضافه کرده‌ایم تا امکان تمرکز با جهتی خاص را فراهم کنیم. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)

نسخه 1.8.0-rc03

‫۹ آوریل ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0-rc03 منتشر شد. نسخه 1.8.0-rc03 شامل این تعهدها است.

رفع اشکال‌ها

نسخه 1.8.0-rc02

‫۲۶ مارس ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0-rc02 منتشر شد. نسخه 1.8.0-rc02 شامل این تعهدات است.

رفع اشکال‌ها

  • رفع مشکلی که در آن نماهای کانونی جاسازی‌شده در سلسله‌مراتب «نوشتن» باعث ترکیب‌بندی مجدد ورودی هنگام برداشتن نمای کانونی از فهرست تنبل می‌شد. (765562)

نسخه 1.8.0-rc01

‫۱۲ مارس ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0-rc01 منتشر شد. نسخه 1.8.0-rc01 شامل این تعهدات است.

رفع اشکال‌ها

  • وقتی AndroidView کانونی با صفحه‌کلید نرم فعال برداشته می‌شود، خرابی برطرف می‌شود. (Ic725a)
  • چند مشکل در پیاده‌سازی مدیریت وضعیت تمرکز جدید را برطرف می‌کند. (b/395895685)
  • مشکلی را برطرف می‌کند که هنگام استفاده از LaunchedEffect برای درخواست تمرکز روی فیلد نوشتاری، مانع «تکمیل خودکار» می‌شد. (b/392539099)

نسخه 1.8.0-beta03

‫۲۶ فوریه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0-beta03 منتشر شد. نسخه 1.8.0-beta03 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • میانای برنامه‌سازی کاربردی enableAccessibilityChecks() که «بررسی‌های دسترس‌پذیری برای Android» را روشن می‌کند به بسته‌های جداگانه‌ای منتقل شد که اگر از TestRule استفاده نمی‌کنید compose:ui:ui-test-accessibility و هنگام فراخوانی در TestRule compose:ui:ui-test-junit4-accessibility است (I547ef، b/391560768)
  • دارایی معنایی جدیدی به‌نام InputText اضافه شد که مقدار فیلد نوشتاری را قبل‌از اعمال تبدیل برونداد ضبط می‌کند. (Iae46a)

رفع اشکال‌ها

  • رفع مشکلی که باعث می‌شد سرویس‌های تکمیل خودکار به‌جای نوشتار ورودی، نوشتار تبدیل‌شده برونداد را ذخیره کنند. (Iae46a،‏ b/395911609،‏ b/176949051)

نسخه 1.8.0-beta02

‫۱۲ فوریه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0-beta02 منتشر شد. نسخه 1.8.0-beta02 شامل این تعهدات است.

ویژگی‌های جدید

  • بررسی lint اضافه شد تا درباره تماس با Configuration#screenWidth/heightDp هشدار دهد - به‌جای آن می‌توان از LocalWindowInfo.current.containerSize برای بازیابی اندازه پنجره فعلی استفاده کرد.

نسخه 1.8.0-beta01

‫۲۹ ژانویه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0-beta01 منتشر شد. نسخه 1.8.0-beta01 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫ContextualFlowRow و ContextualFlowColumn به‌عنوان منسوخ علامت‌گذاری شده‌اند. این عنصر آزمایشی در نسخه ۱.۷ معرفی شد و هنوز پایدار نشده بود و پیاده‌سازی آن نامطلوب تشخیص داده شده است. در آینده، ممکن است مؤلفه‌ای ارائه شود که موارد استفاده‌ای را که این مؤلفه برای حل آن‌ها درنظر گرفته شده است حل کند.
    • ‫FlowRow و FlowColumn دارای سربارهای آزمایشی هستند که در نسخه ۱.۷ معرفی شده‌اند و شامل پارامتر overflow می‌شوند. استفاده از این پارامتر منسوخ شده است و به‌جای آن می‌توان از سربارهای بدون این پارامتر استفاده کرد. عملکرد پیش‌فرض «سرریز» برای این سربارها «برش» خواهد بود، همان‌طور که از زمان معرفی آن بوده است.
    • بسیاری از موارد استفاده برای ContextualFlowRow را می‌توان بااستفاده از FlowRow انجام داد، اما می‌دانیم که این در همه موارد صادق نیست. ‫ContextualFlowRow کاملاً در فضای کاربر قابل پیاده‌سازی است و درصورت تمایل می‌توان پیاده‌سازی آن را کپی و تطبیق داد. در آینده، امیدواریم این موارد استفاده را به روشی متفاوت حل کنیم. (Ibafec)
  • ‫SemanticsNodeInteraction.semanticsId() برداشته شده است. درعوض از SemanticsNodeInteraction.fetchSemanticsNode().id استفاده کنید. (Ie397a)
  • میاناهای برنامه‌سازی کاربردی تکمیل خودکار قدیمی نامناسب است. به‌جای آن از میانای برنامه‌سازی کاربردی جدید مبتنی بر معناشناسی استفاده کنید. ‫(I943ff)
  • بازنویسی requestAutofill API برای وجود در خارج از مدیر تکمیل خودکار. (Id1929)

رفع اشکال‌ها

  • مشکل تمرکز برطرف شد. در این مشکل، requestFocus() با پارامتر previouslyFocusedRect بی‌معنی (مرتبط با جهت تمرکز) از ComposeView رد می‌شد. (Ifdc2f، b/388590015)
  • مشکل گاه‌به‌گاه NPE هنگام استفاده از GraphicsLayer.record { this@ContentDrawScope.drawContent() } برطرف شد. اگر drawContent() را به این روش ضبط می‌کنید، حتماً از تابع افزونه GraphicsLayer#record در DrawScope استفاده کنید، نه از تابع عضو در GraphicsLayer. (I75fc0،‏ b/389046242)
  • رفع اشکال چیدمان نوشتار با بیضی که گاهی اوقات درطول پویانمایی‌ها به‌اشتباه ترجمه می‌شود، برای اطلاعات بیشتر b/389707025 را ببینید (Ie55b1، b/389707025)

نسخه 1.8.0-alpha08

‫۱۵ ژانویه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.8.0-alpha08 منتشر شد. نسخه 1.8.0-alpha08 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • درحال تبدیل AutofillManager به کلاس انتزاعی. (I0a3b0)
  • چندین مشکل مربوط به تمرکز را برطرف کردیم، ازجمله ازکارافتادن هنگام تلاش «ویرایشگر روش ورودی» برای تمرکز روی ComposeView بدون عناصر قابل‌تمرکز، تغییر تمرکز در AndroidViews فرزند، و درخواست تمرکز که AndroidView را ترک می‌کند. (Ia03c3،‏ b/369256395،‏ b/378570682،‏ b/376142752)
  • تغییر FocusEnterExitScope.cancelFocus() به cancelFocusChange() (I89959)
  • اکنون می‌توانید انسدادهای ترکیبی را با RectInfo.calculateOcclusions() محاسبه کنید.
  • عملکرد افزونه در DelegatableNode اضافه شد تا شنونده‌ای برای تغییرات چیدمان سراسری ثبت کند. (I68b59)

رفع اشکال‌ها

  • فعالیتی که به‌عنوان میزبان برای عنصر ترکیبی تحت آزمایش هنگام استفاده از ComposeContentTestRule.setContent استفاده می‌شود اکنون از زمینه Theme.Material.Light.NoActionBar استفاده می‌کند تا از هم‌پوشانی ActionBar با محتوای آزمایش هنگام هدف‌یابی کیت توسعه نرم‌افزار ۳۵ جلوگیری شود. برای انصراف دادن از این رفتار، می‌توانید وابستگی به ui-test-manifest را بردارید و ورودی فعالیتی را در AndroidManifest.xml برنامه آزمایشی‌تان برای ComponentActivity با زمینه انتخابی‌تان اضافه کنید. (I7ae1b، b/383368165)
  • قلم‌های منبع با تنظیمات گونه یکسان اکنون از ذخیره بیش‌ازحد در حافظه نهان که باعث اعمال تنظیمات گونه نادرست می‌شود جلوگیری می‌کنند. (If3dff، b/372044241)
  • ‫AnnotatedString.fromHtml اکنون از <ul>/<li> برچسب پشتیبانی می‌کند. (I7c2fe, b/299662276, b/139326648)

همیاری خارجی

  • میانای «کلیپ‌بورد» جدید و ترکیب محلی برای آن اضافه شد. (I80809)

نسخه 1.8.0-alpha07

۱۱ دسامبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.8.0-alpha07 منتشر شد. نسخه 1.8.0-alpha07 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • مالک از LayoutNode برای ابزارها آشکار شد. (I26f7f)
  • ‫LocalAutofillHighlightColor قطعه موسیقی محلی از نوع «رنگ» استفاده می‌کند. (I0e05b)
  • ‫UrlAnnotation منسوخ‌شده و روش‌های آن را که به‌عنوان آزمایشی علامت‌گذاری شده‌اند نگه دارید. (Ic0021)

رفع اشکال‌ها

  • خرابی IndexOutOfBoundsException هنگام استفاده از LinkAnnotation در BasicText یا عنصر ترکیب‌شدنی «نوشتار» برطرف شد (be7605،‏ b/374115892)
  • رفع مشکلی که در آن فیلدهای نوشتاری پرشده با شکل سفارشی خط نشانگر را برش نمی‌دادند. (I4f87f, b/380704151)
  • پس‌زمینه‌های ازدست‌رفته در نماگرفت‌های طولانی اصلاح شد. (I4d57a)
  • این کتابخانه اکنون از JSpecify nullness annotations استفاده می‌کند که نوع استفاده است. توسعه‌دهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند: -Xjspecify-annotations=strict (این آرگومان از نسخه ۲.۱.۰ کامپایلر Kotlin به‌صورت پیش‌فرض شروع می‌شود). (Idfef8، b/326456246)
  • وقتی در Android Q+ اجرا می‌شود، پشتیبانی «نگارش» را برای گستره رنگ وسیع و رنگ‌های HDR به‌روزرسانی کنید. (Icd8be،‏ b/379135036)
  • قلم‌های منبعی که بارگیری نمی‌شوند اکنون به‌جای رفتار قبلی که استثنایی در واحد اندازه‌گیری ایجاد می‌کرد، بی‌صدا به قلم پیش‌فرض برمی‌گردند. (Ib6a49)
  • رفع مشکل ازدست رفتن تمرکز هنگام جدا کردن و متصل کردن AndroidView. (I53446)
  • پذیرفتن requestFocus() از کنش چیدمان فراتر از محدوده. (Ia8461)

همیاری خارجی

  • ‫BringIntoViewResponderModifierNode را به «واسط کاربر» اضافه کنید، که روش جدیدی برای پیاده‌سازی عملکرد «نمایش در نما» ارائه می‌دهد و همچنین امکان پیاده‌سازی در سطح پلاتفرم را فراهم می‌کند. (Ia6dd8)

نسخه 1.8.0-alpha06

‫۱۳ نوامبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.8.0-alpha06 منتشر شد. نسخه 1.8.0-alpha06 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • اصلاح‌گر stylusHoverIcon را اضافه می‌کند. (Iff20a،‏ b/331289114)
  • «مدیر تکمیل خودکار» را به یک میان‌کار تغییر می‌دهد. (I84914، b/376080755)
  • ‫requestFocus(FocusDirection) را به focusRequester و FocusTargetModifierNode اضافه می‌کند تا امکان تمرکز در جهتی خاص فراهم شود. (I5d9ec، b/245755256)
  • ‫FocusProperties.enter و FocusProperties.exit با onEnter و onExit جایگزین شده‌اند و به‌جای پارامتر FocusDirection از محدوده گیرنده استفاده می‌کنند. (I6e667)
  • درحال افزودن پشتیبانی از تکمیل خودکار در نوارابزار نوشتار. (Ie6a4c)
  • تغییرات «میانای برنامه‌سازی کاربردی» در Modifier.focusRestorer() (I99c03):
    • نام پارامتر به «fallback» تغییر کرد
    • پارامتر اکنون FocusRequester است و lambda نیست
    • اکنون پارامتر غیرNULL است و «پیش‌فرض» به‌عنوان مقدار پیش‌فرض درنظر گرفته می‌شود
  • درحال برداشتن گزارمان @Experimental از میانای مدیر تکمیل خودکار. این ویژگی هنوز درحال کار است و این نسخه پخش را هدف‌یابی می‌کند، اما نمی‌خواهیم @Expemiental API (Id8398) را معرفی کنیم
  • اکنون وقتی «میانای برنامه‌سازی کاربردی لرزاننده» نشان می‌دهد که لمس‌پذیری پشتیبانی می‌شود، LocalHapticFeedback پیاده‌سازی پیش‌فرض HapticFeedback را ارائه می‌دهد. موارد زیر به HapticFeedbackType اضافه شده است - Confirm، ContextClick، GestureEnd، GestureThresholdActivate، Reject، SegmentFrequentTick، SegmentTick، ToggleOn، ToggleOff، VirtualKey. اکنون عناصر Wear Compose که قابلیت کلیک طولانی دارند، مثل Button، IconButton، TextButton، و Card، وقتی مدیریت‌کننده کلیک طولانی ارائه شده باشد، LONG_PRESS لمسی را اجرا می‌کنند. (I5083d)
  • OverscrollConfiguration و LocalOverscrollConfiguration را برمی‌دارد و rememberPlatformOverscrollFactory را اضافه می‌کند تا نمونه‌ای از / سفارشی‌سازی پارامترهای پیاده‌سازی پیش‌فرض پیمایش بیش‌از حد ایجاد کند. برای غیرفعال کردن پیمایش اضافی، به‌جای LocalOverscrollConfiguration provides null، از LocalOverscrollFactory provides null استفاده کنید. برای تغییر رنگ درخشش / حاشیه، به‌جای LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)، از LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) استفاده کنید. (Ie71f9،‏ b/255554340،‏ b/234451516)
  • ‫API آزمایشی GlobalAssertions برداشته شد. هدف اصلی آن اجرای بررسی‌های دسترس‌پذیری بود، برای این منظور به‌جای آن از enableAccessibilityChecks() استفاده کنید. (I59322)

نسخه 1.8.0-alpha05

۳۰ اکتبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.8.0-alpha05 منتشر شد. نسخه 1.8.0-alpha05 شامل این تعهدات است.

ویژگی‌های جدید

«تکمیل خودکار» در این نسخهٔ پخش پشت پرچم ویژگی قرار دارد. ما درحال کار روی بهبود عملکرد هستیم و به‌دنبال بازخورد اولیه درباره میاناهای برنامه‌سازی کاربردی هستیم. انتظار می‌رود براساس بازخورد، پیش‌از پایدار شدن، این «میاناهای برنامه‌سازی کاربردی» تکامل یابند.

  • برای فعال کردن «تکمیل خودکار»، ComposeUiFlags.isSemanticAutofillEnabled را در onCreate روی درست تنظیم کنید و از «عکس فوری نوشتن» استفاده کنید.
  • این نسخه «تکمیل خودکار» از ذخیره کردن اطلاعات اعتباری به‌صورت دستی، ازطریق «پیشنهاد گذرواژه قوی»، و ازطریق پیمایش پشتیبانی می‌کند. همچنین از تکمیل کردن وقتی فیلد تکمیل‌شدنی به‌کانون توجه می‌آید یا وقتی «تکمیل خودکار» ازطریق نوارابزار نوشتار در عناصر نوشتاری راه‌اندازی می‌شود پشتیبانی می‌کند. وقتی تکمیل خودکار انجام شد، مؤلفه برجسته می‌شود.

تغییرات میانای برنامه‌سازی کاربردی

  • واسط تکمیل خودکار را اصلاح کنید تا از ساختار expect/actual پیروی کند. (I22dce)
  • ‫CompositionLocal را معرفی کنید که می‌تواند برای تغییر رنگ برجستگی تکمیل موفقیت‌آمیز «تکمیل خودکار» استفاده شود. (I32092)
  • میانای برنامه‌سازی کاربردی Modifier.onRectChanged اضافه شد که میانای برنامه‌سازی کاربردی‌ای است که به کاربر امکان می‌دهد در موقعیت و اندازه نسبی ریشه/پنجره/صفحه LayoutNode مشترک شود. این API بسیاری از موارد استفاده‌ای را که اصلاح‌گر onGloballyPositioned کنونی انجام می‌دهد حل می‌کند، اما این کار را با سربار بسیار کمتری انجام می‌دهد و API دارای امکاناتی برای نوفه‌گیری و محدود کردن تماس برگشتی براساس نیازهای مورد استفاده است. (Id28c7، b/372765423، b/372757007، b/372994338)
  • «مدیر تکمیل خودکار» را گسترش می‌دهد تا شامل میاناهای برنامه‌سازی کاربردی commit() و cancel() شود که به کاربران کمک می‌کند اطلاعات اعتباری جدید واردشده را ذخیره کنند. (I2da00)
  • میانای جدید AutofillManager را معرفی می‌کند که می‌توان از آن برای تنظیم دقیق سفر «تکمیل خودکار» کاربران و پرچم isSemanticAutofillEnabled برای روشن کردن این نسخه جدید «تکمیل خودکار» استفاده کرد. (I9d484)
  • میانای برنامه‌سازی کاربردی Modifier.onRectChanged اضافه شد که میانای برنامه‌سازی کاربردی‌ای است که به کاربر امکان می‌دهد در موقعیت و اندازه نسبی ریشه/پنجره/صفحه LayoutNode مشترک شود. این API بسیاری از موارد استفاده‌ای را که اصلاح‌گر onGloballyPositioned کنونی انجام می‌دهد حل می‌کند، اما این کار را با سربار بسیار کمتری انجام می‌دهد و API دارای امکاناتی برای نوفه‌گیری و محدود کردن تماس برگشتی براساس نیازهای مورد استفاده است. (I3c8fa)
  • برای پشتیبانی از «تکمیل خودکار» گسترده، دارایی‌های معنایی و انواع داده را اضافه کنید. (I52c7d)
  • اکنون همه روش‌ها در سازنده AnnotatedString غیرآزمایشی هستند (Ia89c8، b/261561823)

رفع اشکال‌ها

  • اکنون نماهای جاسازی‌شده در نوشتن می‌توانند رویدادهای چرخشی را درصورت کانونی بودن دریافت کنند (I4d53a، b/320510084)
  • مشکلی برطرف شد که در آن انواع مختلف منابع با تغییرات پیکربندی به‌روز نمی‌شدند (Ia9b99، b/352336694)
  • مشکلی که مانع از عملکرد صحیح TextField هنگام استفاده از «صفحه‌کلید ژاپنی POBox» در برخی‌از دستگاه‌های قدیمی‌تر Sony می‌شد برطرف شد. (Ia9b99, b/373743376)
  • مشکل نمایش کادرهای گفتگو در پایین صفحه‌نمایش به‌جای مرکز آن برطرف شد (Ia2ec، b/373093006)
  • هدف‌یابی «میانای برنامه‌سازی کاربردی ۳۵ به بالا» دیگر باعث نمی‌شود که decorFitsSystemWindows در چارگوش‌های گفتگو روی «نادرست» تنظیم شود. (Ibc94، b/364492593)
  • رفع خرابی هنگام جابه‌جا شدن لایه‌ها بین پنجره‌ها (برای نمونه، محتوای اصلی و کادر گفتگو) (I675ba، b/330955281)

نسخه 1.8.0-alpha04

‫۱۶ اکتبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.8.0-alpha04 منتشر شد. نسخه 1.8.0-alpha04 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫DelegatableNode#onDensityChange و DelegatableNode#onLayoutDirectionChange پادзвоن‌ها را اضافه می‌کند تا امکان به‌روزرسانی وضعیت گره هنگام تغییر آن‌ها فراهم شود (I04f3e، b/340662451)
  • ‫WindowInfo#containerSize را اضافه می‌کند تا اندازه ظرف محتوای پنجره کنونی را ارائه دهد. بااستفاده از LocalWindowInfo می‌توان آن را بازیابی کرد. (Idc38c،‏ b/369334429،‏ b/360343819)
  • رفع اشکال برای پیمایش‌پذیرهای تودرتو که درطول حرکت سریع از درخت گره برداشته می‌شوند. اکنون این گره‌ها پرتاب را لغو می‌کنند و رویداد onPostFling را با سرعت باقی‌مانده به‌درستی ارسال می‌کنند. همچنین پرچم NewNestedScrollFlingDispatchingEnabled را برای کنترل رفتار درصورت پسرفت معرفی می‌کنیم. پرچم قبل‌از نسخه بتا برداشته خواهد شد. (I05c37،‏ b/371168883)
  • ‫PointerInputModifierNode#touchBoundsExpansion معرفی شد که می‌توان از آن برای بزرگ کردن محدوده لمس اصلاح‌کننده ورودی اشاره‌گر تکی استفاده کرد. (Iccf02، b/335339283)
  • ‫WindowInfo#containerSize را اضافه می‌کند تا اندازه ظرف محتوای پنجره کنونی را ارائه دهد. بااستفاده از LocalWindowInfo می‌توان آن را بازیابی کرد. (I27767، b/369334429، b/360343819)
  • ‫readOnly را از TextFields بردارید تا به نسخه پایه پایدار سنجاق شود. (I3aaba)
  • ‫Paragraph و ParagraphIntrinsics اکنون فهرست همه گزارمان‌های اعمال‌شده بر AnnotatedString را می‌گیرد، قبلاً فقط فهرست SpanStyles را داشت (I12f80)

رفع اشکال‌ها

  • نحوه برخورد با پاراگراف‌ها در AnnotatedString به‌روزرسانی شد. قبلاً فقط می‌توانستید پاراگراف‌های غیرهم‌پوشان ایجاد کنید. اکنون AnnotatedString اجازه می‌دهد پاراگراف‌ها کاملاً روی هم قرار بگیرند که در این صورت با هم ادغام می‌شوند، و پاراگراف‌های تودرتو که در این صورت پاراگراف بیرونی در مرزهای پاراگراف درونی تقسیم می‌شود، و سبک پاراگراف درونی با سبک پاراگراف بیرونی ادغام می‌شود (Ic9554)
  • خرابی در AnnotatedString با LinkAnnotation با طول صفر برطرف شد. (89aac6)

نسخه 1.8.0-alpha03

‫۲ اکتبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.8.0-alpha03 منتشر شد. نسخه 1.8.0-alpha03 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • به‌روزرسانی نسخه Kotlin به ۱.۹ (I1a14c)
  • «نقش معنایی» جدیدی به نام «گردونه» معرفی شد تا رفتار فهرست را در «صفحه‌بندها» برای خدمات دسترس‌پذیری شبیه‌سازی کند. (Id354b، b/354109776، b/239672673)
  • نام invisibleToUser() به hideFromAccessibility تغییر کند. عملکرد آن تغییری نکرده است. برای جزئیات بیشتر، مستندات را ببینید. (Ib43a3)

رفع اشکال‌ها

  • درحال به‌روزرسانی اسناد برای اصلاح‌کننده SensitiveContent (Ib0442)
  • رفع مشکلی که باعث می‌شد کلیپ‌های طرح کلی عمومی خاصی در ترکیب با سایه‌های ارتفاع در برخی‌از نسخه‌های Android نادیده گرفته شوند
  • رفع مشکلی که باعث می‌شد وقتی کلیپ‌های طرح کلی کلی در نسخه‌های خاصی از Android مشخص می‌شد، کلیپ‌های خالی اعمال شود.
  • استثنای ثابت پرتاب‌شده وقتی «ویرایشگر روش ورودی» در «نمای» خارجی فعال است و از کنش «بعدی» برای وارد کردن کانون در ComposeView استفاده می‌شود. عملکرد clearFocus() با عملکرد «مشاهده» در API < 28 هم‌تراز است، جایی که clearFocus() می‌تواند باعث شود «مشاهده» پیش‌فرض کانونی شود.
  • با جدا کردن مدیریت زیرترکیب برای عبورهای چیدمان مختلف، مشکلی برطرف شد که در آن جای‌گذاری در گره‌های جداشده در LazyList اتفاق می‌افتاد.
  • مشکلی برطرف شد که در آن وقتی کانون توجه از TextField به EditText یا هر ویرایشگر مبتنی بر «نمای» دیگری تغییر می‌کرد، «صفحه‌کلید نرم‌افزاری» سوسو می‌زد.
  • اکنون گره‌های «پیمایش تودرتو» پس‌از جدا شدن، رویدادهای onPostFling را به‌درستی ارسال می‌کنند.
  • بهبودهای کلی عملکرد

نسخه 1.8.0-alpha02

‫۱۸ سپتامبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.8.0-alpha02 منتشر شد. نسخه 1.8.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • TextOverflow.StartEllipsis و TextOverflow.MiddleEllipsis اکنون دردسترس است که امکان قرار دادن سه‌نقطه در ابتدا یا وسط خط نوشتار تک‌خطی را فراهم می‌کند. (I38913، b/185418980)

رفع اشکال‌ها

  • رفع اشکال Dalog dismissOnClickoutside (39a3d، b/364508685)
  • سایه‌های محتوای کادر گفتگو برش داده نشود (e8e2f، b/363027803)
  • رفع رفتار اشتباه هنگام حرکت جستجوی تمرکز بین «نگارش» و «نما» (۵۸۳۷۷، b/350534714)

همیاری خارجی

  • ‫AlignmentLines Map اکنون VerticalAlignmentLine یا انواع عینی HorizontalAlignmentLine را می‌پذیرد. (I02912)
  • روش ByteArray.decodeToImageBitmap(): ImageBitmap مشترک جدید. (I83c21)

نسخه 1.8.0-alpha01

۴ سپتامبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.8.0-alpha01 منتشر شد. نسخه 1.8.0-alpha01 شامل این تعهدات است.

نسخه ۱.۷

نسخه ۱.۷.۸

‫۱۲ فوریه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.7.8 منتشر شد. نسخه ۱.۷.۸ شامل این تعهدات است.

نسخه ۱.۷.۷

‫۲۹ ژانویه ۲۰۲۵

‫androidx.compose.ui:ui-*:1.7.7 منتشر شد. نسخه ۱.۷.۷ شامل این تعهدات است.

رفع اشکال‌ها

  • ‫IndexOutOfBoundsException هنگام ارسال AnnotatedString با LinkAnnotation به عنصر ترکیبی «نوشتار» اصلاح شد. (Ic96d2)
  • رفع مشکل زمان انتظار در آزمایش‌ها در برخی‌از موارد نادر که از LinkAnnotation در AnnotatedString استفاده می‌شود. (I04a03)

نسخه ۱.۷.۶

۱۱ دسامبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.6 منتشر شد. نسخه ۱.۷.۶ شامل این تعهدات است.

رفع اشکال‌ها

  • قبلاً وقتی با رویداد کلیدی مواجه می‌شدیم که سیستم تمرکز دارای ابطال‌های معلقه بود، خطا ایجاد می‌کردیم. اکنون به‌جای آن خطا را ثبت می‌کنیم (I7ea0، b/346370327).
  • گزارمان آزمایشی از SemanticsPropertyReceiver.invisibleToUser() برداشته شد. این مورد در نسخه ۱.۸ منسوخ خواهد شد و با SemanticsPropertyReceiver.hideFromAccessibility() جایگزین خواهد شد. (I448f0, b/376479686)
  • مشکلی که مانع از عملکرد صحیح TextField هنگام استفاده از «صفحه‌کلید ژاپنی POBox» در برخی‌از دستگاه‌های قدیمی‌تر Sony می‌شد برطرف شد. ‫(I94e0e، b/373743376)
  • مشکل دسترس‌پذیری که در آن TalkBack محتوای ردیفی BasicText را اعلام نمی‌کرد برطرف شد. (I67bcb، b/376479686)

نسخه ۱.۷.۵

۳۰ اکتبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.5 منتشر شد. نسخه ۱.۷.۵ شامل این تعهدات است.

رفع اشکال‌ها

  • رفع مشکلاتی که در آن‌ها ارتفاع و برش با خطوط کلی سفارشی به‌درستی پرداز نمی‌شد.
  • خرابی نوشتار که با LinkAnnotation عرض صفر رخ می‌دهد را برطرف می‌کند. (Ic1e2e)
  • وقتی دکمه به‌عنوان «ترکیب‌کردنی نوشتاری» کلیک‌کردنی ساخته می‌شود، اعلانی را در Talkback دکمه اصلاح می‌کند. (I1f588)

نسخه ۱.۷.۴

‫۱۶ اکتبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.4 منتشر شد. نسخه ۱.۷.۴ شامل این تعهدات است.

نسخه ۱.۷.۳

‫۲ اکتبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.3 منتشر شد. نسخه ۱.۷.۳ شامل این تعهدها است.

رفع اشکال‌ها

  • رفع مشکلی که در آن مشخص کردن کلیپ طرح کلی کلی منجر به مرز کلیپ خالی در نسخه‌های خاصی از Android می‌شد.
  • وقتی «ویرایشگر روش ورودی» در «نمای» خارجی فعال باشد و از کنش «بعدی» برای وارد کردن کانون در ComposeView استفاده شود، استثنای ثابت پرتاب می‌شود. عملکرد clearFocus() با عملکرد «مشاهده» در API < 28 هم‌تراز است، جایی که clearFocus() می‌تواند باعث شود «مشاهده» پیش‌فرض کانونی شود.
  • مشکلی برطرف شد که در آن از placeOrder نادرستی برای نامعتبر کردن پیش‌نگاه استفاده می‌شد، بنابراین حالت حاشیه‌ای که در آن جای‌گذاری پیش‌نگاه رد می‌شد برطرف شد.

نسخه ۱.۷.۲

‫۱۸ سپتامبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.2 منتشر شد. نسخه ۱.۷.۲ شامل این تعهدات است.

رفع اشکال‌ها

  • با برداشتن ردیابی پرحرف، عملکرد اطلاعات گره دسترس‌پذیری و رویدادهای معنایی بهبود یافت. (I89156, b/362530618)
  • وقتی اندازه اندازه‌گیری استثنائاً بزرگ به ComposeView داده می‌شود، دیگر ازکار نمی‌افتد (da5db، b/347036173)
  • مشکل صفحه‌خوان دسترس‌پذیری که باعث می‌شد اعلان‌های LiveRegion در دکمه‌ها انجام نشود برطرف شد. (f66fa7، b/348590026)

نسخه ۱.۷.۱

‫۱۰ سپتامبر ۲۰۲۴

  • هیچ تغییری در آرتیفکت‌های Android ایجاد نشده است. ‫-desktop مصنوع برداشته شد و -jvmStubs و -linuxx64Stubs مصنوع اضافه شد. هیچ‌کدام از این هدف‌ها برای استفاده درنظر گرفته نشده‌اند، بلکه جای‌گذاری‌هایی هستند که به تلاش‌های Jetbrains Compose کمک می‌کنند.

نسخه ۱.۷.۰

۴ سپتامبر ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0 منتشر شد.

تغییرات مهم از نسخه ۱.۶.۰

تغییرات مهم در نسخه ۱.۷.۰ در این پست وبلاگ پوشش داده شده است.

نسخه 1.7.0-rc01

‫۲۱ اوت ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-rc01 منتشر شد. نسخه 1.7.0-rc01 شامل این تعهدات است.

تغییرات قابل‌توجه

  • واحد ui:ui اکنون حداقل نسخه foundation:foundation را مجبور می‌کند که حداقل 1.7.0-rc01 یا جدیدتر باشد. این کار برای اصلاح ناسازگاری رفتاری بین واسط کاربر و پایه درخصوص تغییرات NestedScrollSource که در اوایل نسخه 1.7.0-alpha01 رخ داد انجام می‌شود.

نسخه 1.7.0-beta07

‫۷ اوت ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-beta07 منتشر شد. نسخه 1.7.0-beta07 شامل این تعهدات است.

رفع اشکال‌ها

  • توابع مرتبط با ورودی نوشتاری SemanticsNodeInteraction performTextReplacement، performTextInput، و performTextClearance اکنون وقتی در TextFields فقط خواندنی فراخوانده می‌شوند خطاهای ادعایی ایجاد می‌کنند. (I4ae8f)

نسخه 1.7.0-beta06

۲۴ ژوئیه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-beta06 منتشر شد. نسخه 1.7.0-beta06 شامل این تعهدات است.

نسخه 1.7.0-beta05

۱۰ ژوئیه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-beta05 منتشر شد. نسخه 1.7.0-beta05 شامل این تعهدات است.

رفع اشکال‌ها

  • اشکالی برطرف شد که در آن تغییر صفحه‌کلید نرم‌افزاری باعث می‌شد TextField ورودی صفحه‌کلید جدید را تا زمانی‌که تمرکز ازدست می‌رفت و دوباره به‌دست می‌آمد نپذیرد.
  • رفع مشکلی که در آن تلاش برای ماندگار کردن محتوای لایه باعث ایجاد عوارض جانبی ناخواسته هنگام پرداز با محتوای SurfaceView می‌شد.

نسخه 1.7.0-beta04

۲۶ ژوئن ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-beta04 منتشر شد. نسخه 1.7.0-beta04 حاوی این تعهدات است.

رفع اشکال‌ها

  • جلوگیری از خرابی هنگام اندازه‌گیری خطوط نوشتاری بسیار بزرگ (مثلاً ۱۰ هزار نویسه) (8157ab)
  • پشتیبانی از پرداز زدن نرم‌افزار را برای میانای برنامه‌سازی کاربردی GraphicsLayer غیرفعال کنید. (35ddd8)
  • رفع خرابی در منطق ماندگاری لایه. (70b13e)
  • بهینه‌سازی استفاده مجدد از اشیای لایه واگرد شد، زیرا باعث مشکلات پردازش می‌شد. (70b13e)

نسخه 1.7.0-beta03

۱۲ ژوئن ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-beta03 منتشر شد. نسخه 1.7.0-beta03 شامل این تعهدات است.

نسخه 1.7.0-beta02

۲۹ مه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-beta02 منتشر شد. نسخه 1.7.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نام SemanticsProperties.Editable به IsEditable تغییر کرد و SemanticsPropertyReceiver.editable به مقدار isEditable تغییر کرد. اکنون این دارایی بولی است و همیشه با فیلدهای نوشتاری مشخص می‌شود. (I8acd8)
  • تغییر نام پارامتر محک دسترس‌پذیری. (I3d440)
  • میانای برنامه‌سازی کاربردی برای سبک‌دهی پیوندها به‌روز شد: TextLinkStyles اکنون بخشی از سازنده LinkAnnotation و روش AnnotatedString.fromHtml است (I90b2b). همچنین TextDefaults را از محتوا (I5477b) برداشت

رفع اشکال‌ها

  • نام LayoutCoordinates.introducesFrameOfReference به LayoutCoordinates.introducesMotionFrameOfReference تغییر کرد تا هدف آن بهتر منعکس شود. تابع مرتبط را تغییر نام داد تا مختصات را براساس آن پرچم محاسبه کند. (I3a330)

نسخه 1.7.0-beta01

۱۴ مه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-beta01 منتشر شد. نسخه 1.7.0-beta01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نام performCustomAccessibilityActionLabelled به performCustomAccessibilityActionWithLabel و performCustomAccessibilityActionWhere به performCustomAccessibilityActionWithLabelMatching تغییر کرد. (I5387f)
  • ‫AnnotatedString.hasEqualsAnnotations اکنون hasEqualAnnotations است (I685c0)
  • «میانای برنامه‌سازی کاربردی» برای دریافت پیوندهای زمینه‌ای «طراحی مواد» در نوشتار به‌روز شد. به‌طور خاص، روش‌های ساخت LinkAnnotations با موضوع و تجزیه HTML با پیوندهای موضوعی را از TextDefaults برداشتیم. درعوض، کلاس TextLinkStyles اضافه شد که امکان می‌دهد پیوندها به‌عنوان پارامتر به «ترکیب‌بندی نوشتار» سبک‌دهی شوند. (I31b93)

رفع اشکال‌ها

  • رفع موارد استفاده اضافی هنگام افزودن پویا اصلاح‌کننده‌های ورودی اشاره‌گر درطول رویدادها ۶۳e۱۵۰۴

نسخه 1.7.0-alpha08

۱ مه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-alpha08 منتشر شد. نسخه 1.7.0-alpha08 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پشتیبانی از پیاده‌سازی‌های شکل تغییرپذیر را اضافه می‌کند. اکنون Shape#createOutline در لایه‌های گرافیکی مشاهده می‌شود، بنابراین خواندن مقادیر وضعیت در داخل آن باعث نامعتبر شدن وضعیت هنگام تغییر می‌شود و امکان پویانمایی‌های شکل با عملکرد بهتر را فراهم می‌کند. (Id1629،‏ b/326070216)
  • نام isPositionedByParentWithDirectManipulation به introducesFrameOfReference تغییر کرد. توجه داشته باشید که اکنون اثر معکوس دارد، یعنی به‌طور پیش‌فرض، اکثر LayoutCoordinates چارچوب مرجعی را معرفی می‌کنند، و فقط زمانی که تحت دستکاری مستقیم قرار می‌گیرد، دارایی نادرست خواهد بود. برای پُرسمان کردن موقعیت با فقط مواردی که چارچوب مرجع را معرفی می‌کنند، از positionInLocalFrameOfReference(...) استفاده کنید. یا positionInLocalLookaheadFrameOfReference از LookaheadScope. (Ifc5f7)
  • ‫LookaheadScope میانای برنامه‌سازی کاربردی پایدار شده است (I21507)
  • کنش لامبدا را برای getScrollViewportLength براساس بازخورد شورای API تغییر دهید. (Ibc74a)
  • میاناهای برنامه‌سازی کاربردی GraphicsLayer طرح کلی به‌روزرسانی شد تا به‌جای عدد صحیح از پارامترهای ممیز شناور استفاده کند. مقادیر نگهبان UnsetOffset/UnsetSize IntSize به‌نفع ثابت‌های «نامشخص» ازقبل موجود در کلاس‌های درون‌خطی «اندازه» و «آفست» براساس ممیز شناور برداشته شد (I2fb03، b/333863462)
  • هنگام تزریق ورودی موشواره درطول آزمایش‌ها، MouseInjectionScope.click()، MouseInjectionScope.doubleClick()، MouseInjectionScope.tripleClick()، MouseInjectionScope.longClick() اکنون پارامتر button: MouseButton را می‌پذیرند تا آن‌ها را برای کاربردهای عمومی‌تر مناسب‌تر کنند. مقدار پیش‌فرض برای همه روش‌ها MouseButton.Primary است. (I31a23،‏ b/190493367،‏ b/261439695)
  • نام onClicked به onClick در LinkInteractionListener تغییر کرد. (Iaa35c)
  • نام TextInclusionStrategy.isInside به isIncluded تغییر کند. نوع برگشتی Paragraph/MultiParagraph#getRangeForRect() را غیرقابل تهی کنید. (I51f26)

رفع اشکال‌ها

  • ضبط نماگرفت طولانی برای محتویات پیمایشی با reverseScrolling=true اصلاح شد. (I7c59c)

همیاری خارجی

  • پشتیبانی از پیش‌دریافت کردن عناصر در LazyLists تودرتو (برای نمونه، LazyColumn که LazyRows تودرتو را پرداز می‌کند) اضافه شد. انتظار می‌رود این تغییر باعث کاهش افت فریم درحین پیمایش برای این LazyLists شود. پیاده‌سازی پیش‌فرض این است که ۲ مورد تودرتوی اول را پیش‌دریافت کند، اما این رفتار را می‌توان با APIهای جدید LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) و LazyListPrefetchStrategy#onNestedPrefetch کنترل کرد. (I51952)

نسخه 1.7.0-alpha07

‫۱۷ آوریل ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-alpha07 منتشر شد. نسخه 1.7.0-alpha07 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫ClickableText به‌عنوان منسوخ علامت‌گذاری شده است. برای افزودن پیوند به نوشتار، AnnotatedString را با LinkAnnotation متناظر با پیوندتان ایجاد کنید و این AnnotatedString را به «ترکیب‌کردنی نوشتار» ارسال کنید. (I34d4b،‏ b/323346994)
  • ‫ViewConfiguration.HandwritingGestureLineMargin را برای اشاره‌های دست‌نویس معرفی کنید. پشتیبانی از اشاره JoinOrSplit برای BasicTextField (Ie6e13، b/325660505)
  • ‫FocusProperties.enter و FocusProperties.exit دیگر آزمایشی نیستند. ‫FocusDirection.Enter و FocusDirection.Exit دیگر آزمایشی نیستند. ‫FocusRequester.Cancel دیگر آزمایشی نیست (I461a1، b/261564106)
  • هنگام پُرسمان کردن مختصات «چیدمان»، اکنون می‌توانید از آرگومان excludeDirectManipulationOffset برای کنار گذاشتن انحراف تنظیم‌شده توسط «چیدمان‌های» والد که فرزندانشان را بااستفاده از Placeable.PlacementScope.withDirectManipulationPlacement قرار داده‌اند استفاده کنید. به‌همین ترتیب، «چیدمانی» که موقعیت فرزندانش را به‌طور مکرر تغییر می‌دهد، اکنون می‌تواند آن‌ها را بااستفاده از withDirectManipulationPlacement (مثل «پیمایش» که به‌طور پیش‌فرض پیاده‌سازی شده است) قرار دهد. این کار به پویانمایی‌های مبتنی بر approachLayout کمک می‌کند تا شهودی‌تر باشند و اکنون این فرصت را دارند که هنگام تصمیم‌گیری برای پویانمایی رویکرد خود، بین آنچه باید جابه‌جا شود و آنچه باید مستقیماً اعمال شود تمایز قائل شوند. (I60ec7)
  • پرچم ویژگی نماگرفت‌های بلند برداشته شده است. (I28648، b/329128246)
  • ‫LazyColumn اکنون سرایندهای چسبان را در نماگرفت‌های بلند به‌درستی ارائه می‌کند. (I8d239، b/329296635)
  • منابع «کشیدن و پرتاب کردن» NestedScroll با UserInput و SideEffect جایگزین می‌شوند تا تعریف گسترده این منابع را که اکنون شامل پویانمایی‌ها (اثر جانبی) و «چرخ موشواره» و «صفحه‌کلید» (UserInput) می‌شود دربر بگیرند. (I40579)
  • ‫ApproachLayoutModifierNode و Modifier.approachLayout اکنون پایدار هستند و isMeasurementApproachInProgress() و isPlacementApproachInProgress() جدید جایگزین isMeasurementApproachComplete() و isPlacementApproachComplete() قدیمی شده‌اند.
  • اصلاح‌گر منسوخ intermediateLayout برداشته شد. (I3e91c)
  • برای انعکاس روش‌های begin/endRecording در Displaylist backed APIs (واسط‌های برنامه‌سازی کاربردی پشتیبانی‌شده با Displaylist) مثل RenderNode و Picture، نام GraphicsLayer#buildLayer را به record تغییر دهید.
  • ‫rememberGraphicsLayer به‌روز شد تا از rememberObserver استفاده کند. (I312c1،‏ b/288494724،‏ b/330758155)
  • ‫UrlAnnotation منسوخ شده است، درعوض از LinkAnnotation.Url استفاده کنید. اگر از موضوع‌دهی Material استفاده می‌کنید، از TextDefaults شیء برای ایجاد گزارمان با موضوع‌دهی Material اعمال‌شده روی آن استفاده کنید (I8d180، b/323346545)
  • پیوندهای نوشتاری علاوه بر سبک‌بندی عادی، سبک‌بندی حالت فشرده، سبک‌بندی با نگه‌داشتن، و سبک‌بندی با تمرکز، گزینه سبک‌بندی حالت فشرده را نیز دریافت کردند (I5f864، b/139312671)
  • نام String.parseAsHtml به AnnotatedString.Companion.fromHtml تغییر کرد. (I43dcd)
  • متغیرهای مستقل سبک‌دهی (linkStyle،‏ focusedLinkStyle،‏ hoveredLinkStyle) و شنونده تعامل پیوند به روش parseAsHtml اضافه شد. وقتی رشته برچسب‌گذاری‌شده HTML با برچسب‌های <a> تجزیه می‌شود، این روش برای هریک از این برچسب‌ها LinkAnnotation.Url می‌سازد و اشیای سبک‌دهی و شنونده تعامل پیوند را به هریک از این گزارمان‌ها منتقل می‌کند. (I7c977)
  • ‫LinkAnnotation اکنون آرگومان‌های سبک‌دهی مبتنی بر وضعیت و LinkInteractionListener را می‌گیرد. این گزارمان را به AnnotatedString اضافه کنید تا پیوند دریافت کنید. با گذراندن focusedState و/یا hoveredState می‌توانید configuration تصویری را برای پیوندها وقتی که کانونی و/یا معلق هستند تعریف کنید. (I81ce4, b/139312671)
  • ‫ImeOptions.hintLocales دیگر نمی‌تواند تهی باشد. اگر می‌خواهید فهرست «منطقه» خالی را بگذرانید، لطفاً از LocaleList.Empty استفاده کنید. (Ic5bc4)

رفع اشکال‌ها

  • داده‌های رویداد ورودی تاریخی بد/خراب را به‌خوبی مدیریت می‌کند (داده‌های افست بد را نادیده می‌گیرد).
  • رویدادهای اشاره‌گر غیرمنتظره را زمانی که یک اصلاح‌کننده ورودی اشاره‌گر به‌صورت پویا قبل‌از اصلاح‌کننده ورودی اشاره‌گر دیگری درطول یک جاری‌سازی رویداد ورودی اشاره‌گر فعال اضافه می‌شود (برای مثال، بین ورود و خروج شناور [موشواره/قلم]) برطرف می‌کند.

نسخه 1.7.0-alpha06

۳ آوریل ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-alpha06 منتشر شد. نسخه 1.7.0-alpha06 شامل این تعهدها است.

ویژگی‌های جدید

  • روش parseAsHtml برای رشته‌های سبک‌دار اضافه شد: این روش امکان تبدیل رشته‌ای را که با برچسب‌های HTML نشان‌گذاری شده است به AnnotatedString فراهم می‌کند. توجه داشته باشید که همه برچسب‌ها پشتیبانی نمی‌شوند، برای مثال هنوز نمی‌توانید فهرست‌های گلوله‌ای را نمایش دهید. (I84d3d،‏ I30626،‏ b/139326648)
  • پشتیبانی آزمایشی برای نماگرفت‌های طولانی در محتویات پیمایش «نوشتن» بااستفاده از «میانای برنامه‌سازی کاربردی» رسمی Android (ScrollCaptureCallback) پیاده‌سازی شد. این ویژگی آزمایشی است و ممکن است درحال‌حاضر همه موارد را به‌درستی مدیریت نکند. به همین دلیل، درحال‌حاضر به‌طور پیش‌فرض غیرفعال است. برای موافقت کردن، پرچم ComposeFeatureFlag_LongScreenshotsEnabled را روی «درست» تنظیم کنید. (I2b055, b/329296471)

تغییرات میانای برنامه‌سازی کاربردی

  • ‫fun ClipEntry.getMetadata() به val ClipEntry.clipMetadata تغییر کرد. (I50155)
  • ‫ClipboardManager.getClipMetadata و ClipboardManager.hasClip تابع برداشته شد. لطفاً از clipEntry.getMetadata() برای خواندن فراداده ورودی کلیپ فعلی استفاده کنید. همچنین نتیجه ClipboardManager.getClip را بررسی کنید که آیا تهی است یا نه تا متوجه شوید آیا «کلیپ‌بورد» کلیپ فعلی دارد یا نه. (I50498)
  • اکنون می‌توانید GraphicsLayer شیء را به placeable.placeWithLayer() تابع (I1b22f) منتقل کنید
  • ‫ClipboardManager.setClip اکنون مقدار null را می‌پذیرد تا بتواند «بریده‌دان» را پاک کند. (I7d2e9)
  • شناسه‌های منبع برای کمک به پنهان کردن «نماهای» استفاده‌شده به‌عنوان جزئیات پیاده‌سازی در ابزارهای ساخت اضافه شد (I99531)
  • روش تعلیق GraphicsLayer#toImageBitmap برای پشتیبانی از پرداز محتوای یک بیت‌مپ در GraphicsLayer اضافه شد. این یک عملیات پردازش شتاب‌یافته سخت‌افزاری در سطح API 22+ (شامل) است که از بیش‌از ۹۹٪ از همه دستگاه‌های Android پشتیبانی می‌کند. در سطح میانای برنامه‌سازی کاربردی Android 21، این مورد به پردازش نرم‌افزاری برمی‌گردد. (I9e114)
  • روش کمکی برای تبدیل RectF در Android به ComposeRect (I39925،‏ b/325660505)
  • همه پارامترهای KeyboardOptions اکنون به‌طور پیش‌فرض مقدار نامشخص دارند. روش KeyboardOptions.merge اضافه شد.
  • ‫KeyboardOptions.autoCorrect به autoCorrectEnabled تغییر نام داد و آن را تهی‌پذیر کرد، جایی که تهی نشان می‌دهد مقداری مشخص نشده است. (Ia8ba0، b/295951492)
  • ‫BasicTextField(state) گونه و BasicSecureTextField اکنون به‌جای KeyboardActions از KeyboardActionHandler برای پردازش کنش‌های انجام‌شده توسط صفحه‌کلید نرم‌افزاری استفاده می‌کنند. (I58dda)

نسخه 1.7.0-alpha05

‫۲۰ مارس ۲۰۲۴

‫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 آرگومان برداشته شد. ‫API جایگزینی برای پشتیبانی از پیوندها در آینده ارائه خواهد شد. (I107d5)

رفع اشکال‌ها

  • تعریف API GraphicsLayer انتظار/واقعیت اضافه شد تا از ضبط و بازپخش دستورات طراحی با جلوه‌های دیداری و تبدیل‌های اختیاری ترکیب‌بندی پشتیبانی کند. معرفی رابط GraphicsContext برای دربرگرفتن وابستگی‌های گرافیکی ازجمله ایجاد و مدیریت نمونه‌های GraphicsLayer. (I4a8d6، b/288494724)
  • مشکل تعامل‌پذیری با جستجوی تمرکز یک‌بعدی رفع شد. در این مشکل، تمرکز در ComposeView که در میان نماهای دیگر جاسازی شده بود گیر می‌کرد. (I08fd4)

همیاری خارجی

  • ‫LocalLifecycleOwner از «میانای کاربر Compose» به lifecycle-runtime-compose منتقل شد تا بتوان از میاناهای برنامه‌سازی کاربردی کمکی مبتنی بر Compose آن در خارج از «میانای کاربر Compose» استفاده کرد. از Jake Wharton برای همیاری‌اش سپاس‌گزاریم. (I6c41b، b/328263448)
  • به‌طور پیوسته ویژگی‌های شناور گرایش را در همه زیرگونه‌های تراز مبتنی بر گرایش آشکار کنید. (I69f0f, b/328088992)

نسخه 1.7.0-alpha04

۶ مارس ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-alpha04 منتشر شد. نسخه 1.7.0-alpha04 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • پشتیبانی از ویژگی دست‌نویسی با قلم برای BasicTextField2 در دستگاه‌های دارای Android U و نسخه‌های جدیدتر. (I002e4)
  • در این CL، کنش معنایی GetScrollViewportLength را اضافه می‌کنیم تا بتوانیم اطلاعات مربوط به عناصر پیمایش‌شده در نوشتن را به سیستم دسترس‌پذیری منتقل کنیم. این CL همچنین استفاده از دارایی مذکور را در «فهرست‌های پیمایش‌پذیر Foundation» اعمال می‌کند. (Ic5fa2)
  • ‫FocusRequester.createRefs اکنون پایدار است (I4d92c، b/261436820)
  • ‫DelegatableNode.requireView() معرفی شد تا گره‌های اصلاح‌کننده بتوانند View کنونی Android را بدون خواندن ترکیب محلی دریافت کنند. (I40768)
  • میانای برنامه‌سازی کاربردی جدید Path.reverse() برای معکوس کردن جهت مسیر (I36348)
  • ‫hintLocales به KeyboardOptions اضافه شد تا به TextFields امکان دهد «روش‌های ورودی» را با منطقه‌های خاصی راهنمایی کند تا زبان ترجیحی ازپیش تنظیم شود.
  • نمایش platformLocale دارایی از Locale که شیء پلاتفرم زیرین را برمی‌گرداند، برای نمونه java.util.Locale. (I921c6)

نسخه 1.7.0-alpha03

۲۱ فوریه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-alpha03 منتشر شد. نسخه 1.7.0-alpha03 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • معرفی ContextualFlowRow و FlowRow/Column بهبودیافته با MaxLines و سرریز. با خوشحالی اعلام می‌کنیم که FlowRow و FlowColumn آزمایشی بهبود یافته‌اند و اکنون از maxLines و پشتیبانی سرریز، همراه با رونمایی از ContextualFlowRow و ContextualFlowColumn برخوردارند. این به‌روزرسانی برای ارائه عناصر با عملکرد بهینه طراحی شده است، جایی که ContextualFlow* برای تعداد زیادی از موارد که از پیکربندی کوچک maxLines و دکمه‌های پویا +N دیدن موارد بیشتر استفاده می‌کنند عالی است، و FlowRow و FlowColumn برای تعداد کمی از موارد، کمتر از ۱۰۰ مورد، عالی است. مهم: برای حفظ رفتار موجود در FlowRow یا FlowColumn که در آن همه عناصر صرف‌نظر از اینکه با حداکثر محور متقاطع مطابقت دارند یا نه ترکیب می‌شوند، overflow را درطول مقداردهی اولیه روی FlowRowOverflow.Visible یا FlowColumnOverflow.Visible تنظیم کنید. برای دیدن نمونه‌هایی از این ویژگی‌های جدید در عمل، ContextualFlowRowSample و FlowRowSample را کاوش کنید. (Ib9135، b/293577082)
  • ‫maxTextLength دارایی معنایی اضافه کنید که باید در فیلدهای نوشتاری که حداکثر تعداد مجاز نویسه‌ها را فیلتر می‌کنند تنظیم شود. (I24d9f، b/170648072)
  • بسته‌بندی‌کننده Modifier.inspectable منسوخ شده است. این API بیش‌از حد لازم تغییردهنده شما را نامعتبر می‌کند، بنابراین اکنون استفاده از آن توصیه نمی‌شود. اگر توسعه‌دهندگان می‌خواهند ویژگی‌های اصلاح‌کننده را در ابزارها نشان دهند، توصیه می‌شود روش inspectableProperties() را در ModifierNodeElement پیاده‌سازی کنند. (Ib3236)
  • سازنده جدید برای PopupProperties که امکان کنترل کامل پرچم‌های WindowManager.LayoutParams را فراهم می‌کند. (Ibb33e، b/312485503)
  • ‫DelegatableNode.requireLayoutCoordinates() به‌عنوان روشی برای دریافت LayoutCoordinates کنونی Modifier.Node بدون نیاز به ملغی کردن onPlaced و ذخیره کردن مختصات در دارایی خودتان معرفی شد. (Ia8657)
  • ‫DelegatableNode.currentLayoutCoordinates به‌عنوان روشی برای دریافت LayoutCoordinates کنونی Modifier.Node بدون نیاز به ملغی کردن onPlaced و ذخیره کردن مختصات در دارایی خودتان معرفی شد. (Iaebaa)
  • ‫BasicTextField2 و میاناهای برنامه‌سازی کاربردی مرتبط تحت بسته androidx.compose.foundation.text2 به androidx.compose.foundation.text منتقل می‌شوند. (I9f635)
  • میانای برنامه‌سازی کاربردی ApproachLayoutModifierNode جدیدی برای پشتیبانی از ایجاد منطق رویکرد سفارشی در «گره اصلاح‌کننده» صریح اضافه شد. همچنین یک DeferredTargetAnimation API آزمایشی جدید برای پویانمایی‌هایی که هدف آن‌ها در زمان نمونه‌سازی ناشناخته است اضافه شد. (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

۷ فوریه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-alpha02 منتشر شد. نسخه 1.7.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • مشکل سازگاری باینری با SemanticsPropertyReceiver.performImeAction برطرف شد. (I65865،‏ b/322269946)
  • سازنده PopupProperties که پارامتر usePlatformDefaultWidth را می‌گیرد دیگر آزمایشی نیست. (I8f8d2)
  • بار اضافه ComposeTestRule.waitUntil اضافه شد که شرح رشته‌ای وضعیت را برای گنجاندن در پیام مهلت زمانی می‌گیرد. (I9413e)
  • ‫API معنایی جدید unset() برای برداشتن دارایی‌های معنایی که در همان زنجیره اصلاح‌کننده اضافه شده‌اند. دارایی معنایی جدید isOpaque. (I8c583، b/317966058، b/246056649)
  • ‫originalEventPosition از روش کپی در «میانای برنامه‌سازی کاربردی» عمومی PointerInputChange برداشته شد. (I7bead)

رفع اشکال‌ها

  • اشکال دسترس‌پذیری که باعث می‌شد عناصر غیرزبانه و غیردکمه رادیویی هنگام انتخاب کلیک‌کردنی شوند برطرف شد. (I2181c)
  • ‫VelocityTracker اکنون به‌طور پیش‌فرض اصلاح افزودن امتیازها را خواهد داشت. درصورت بروز مشکل، با تنظیم VelocityTrackerAddPointsFix روی «نادرست»، همچنان می‌توانید این اصلاح را خاموش کنید. (Ib3877، b/269487059)
  • ناسازگاری با نسخه قدیمی در TextStyle و ParagraphStyle برطرف شد. (I179f0, b/320819734)

همیاری خارجی

  • سازنده DialogProperties جدیدی بدون پارامترهای مختص پلاتفرم اضافه شد. (I45829)
  • سازنده PopupProperties جدیدی بدون پارامترهای مختص پلاتفرم اضافه شد. (I9a038)

نسخه 1.7.0-alpha01

۲۴ ژانویه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.7.0-alpha01 منتشر شد. نسخه 1.7.0-alpha01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • با افزودن ClipEntry و ClipMetadata برای پشتیبانی از محتوای دلخواه مثل تصاویر، ClipboardManager گسترش یافت.
  • DeviceConfigurationOverride API را به ui-test اضافه می‌کند تا امکان لغو محلی رفتار محتوای درحال آزمایش را فراهم کند، برای مثال، امکان تعیین اندازه، محل، جهت چیدمان، مقیاس قلم، یا زمینه دردسترس را فراهم می‌کند.

نسخه ۱.۶

نسخه ۱.۶.۸

۱۲ ژوئن ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.8 منتشر شد. نسخه ۱.۶.۸ شامل این تعهدها است.

رفع اشکال‌ها

  • ناهمخوانی‌های مربوط به مقیاس‌بندی قلم وقتی مقیاس قلم کمتر از پایین‌ترین جدول تعریف‌شده است برطرف شد. در این مورد، اکنون بین مقیاس خطی ۱ برابر و پایین‌ترین جدول تعریف‌شده میان‌یابی می‌کنیم، به‌طوری‌که اندازه قلم با افزایش مقیاس‌ها به‌صورت یکنواخت افزایش می‌یابد. (Icbae3)

نسخه ۱.۶.۷

۱ مه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.7 منتشر شد. نسخه ۱.۶.۷ شامل این تعهدات است.

نسخه ۱.۶.۶

‫۱۷ آوریل ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.6 منتشر شد. نسخه ۱.۶.۶ شامل این تعهدات است.

رفع اشکال‌ها

  • مشکل ازکارافتادن نادر BasicTextField را برطرف می‌کند.

نسخه ۱.۶.۵

۳ آوریل ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.5 منتشر شد. نسخه ۱.۶.۵ شامل این تعهدات است.

نسخه ۱.۶.۴

‫۲۰ مارس ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.4 منتشر شد. نسخه ۱.۶.۴ شامل این تعهدات است.

نسخه ۱.۶.۳

۶ مارس ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.3 منتشر شد. نسخه ۱.۶.۳ شامل این تعهدات است.

نسخه ۱.۶.۲

۲۱ فوریه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.2 منتشر شد. نسخه ۱.۶.۲ شامل این تعهدات است.

نسخه ۱.۶.۱

‫۷ فوریه ۲۰۲۴ androidx.compose.ui:ui-*:1.6.1 منتشر می‌شود. نسخه ۱.۶.۱ حاوی این تعهدات است.

رفع اشکال‌ها

  • مشکل سازگاری با نسخه قدیمی SemanticsPropertyReceiver.performImeAction و SemanticsActions.PerformImeAction برطرف شد. (Ie0bb2، b/322269946)
  • اکنون چیدمان‌ها هنگام اندازه‌گیری، درصورتی‌که اندازه غیرعادی بزرگی برگردانده شود، خطا صادر می‌کنند. این نوع خطا معمولاً زمانی رخ می‌دهد که اندازه‌گیری مستقیماً از محدودیت‌های حداکثر بدون بررسی Constraints.Infinity استفاده می‌کند. این بررسی به توسعه‌دهندگان کمک می‌کند مشکلات چیدمانی را که اندازه اشتباهی دارد پیدا کنند، نه چیدمانی که آن را دربر دارد. (I339a9)

نسخه ۱.۶.۰

۲۴ ژانویه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.0 منتشر شد. نسخه ۱.۶.۰ حاوی این تعهدات است.

نسخه 1.6.0-rc01

‫۱۰ ژانویه ۲۰۲۴

‫androidx.compose.ui:ui-*:1.6.0-rc01 منتشر شد. نسخه 1.6.0-rc01 حاوی این تعهدات است.

رفع اشکال‌ها

  • پیاده‌سازی گرافیک برداری بهینه‌سازی‌شده برای بهبود عملکرد با به‌حداقل رساندن ترکیب‌های مجدد اضافی.

نسخه 1.6.0-beta03

‫۱۳ دسامبر ۲۰۲۳

‫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

۲۹ نوامبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-beta02 منتشر شد. نسخه 1.6.0-beta02 حاوی این تعهدها است.

نسخه 1.6.0-beta01

۱۵ نوامبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-beta01 منتشر شد. نسخه 1.6.0-beta01 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • اصلاح‌گر DragAndDropTarget اکنون DragAndDropTarget دریافت‌کننده را به‌طور صریح می‌پذیرد و یک لامبدا برای موافقت با جلسه کشیدن و رها کردن دارد. اکنون دو تابع کارخانه‌ای برای DragAndDropModifierNode وجود دارد. یکی برای دریافت انتقال‌ها و یکی برای انتقال داده‌ها (I69481)
  • ‫maximumFlingVelocity به‌روز شد تا به‌صورت «شناور» نشان داده شود. اسناد به‌روزرسانی‌شده برای شفاف‌تر کردن maximumFlingVelocity وحدت. (I8adc7)
  • ‫onDragAndDropStart در کارخانه DragAndDropModifierNode به acceptDragAndDropTransfer تغییر نام داده است.‫acceptsDragAndDropTransfer به «اصلاح‌گر dragAndDropTarget» اضافه شد تا از جلسه کشیدن و رها کردن پذیرفته شود. اگر به جلسه کشیدن و رها کردن علاقه‌مند باشید، این لامبدا DragAndDropTarget قابل‌اجرایی را برمی‌گرداند. لامبداهای دیگر برای پردازش رویدادهای کشیدن با این جایگزین شده است. تابع کارخانه DragAndDropTarget برای دریافت از جلسه‌های کشیدن و رها کردن اضافه شده است (Iebf3a)
  • ‫DragAndDropInfo به‌عنوان نوع برداشته شد و اکنون DragAndDropModifierNode.drag پارامترهای transferData، اندازه تزئین، و تزئین کشیدن DrawScope لامبدا را می‌پذیرد

    ‫DragAndDropTarget به‌جای اینکه یک روش انتزاعی واحد باشد، روش‌هایی برای رویدادهای خاص کشیدن و رها کردن دارد

    ‫onDragAndDropEvent در تابع کارخانه‌ای برای DragAndDropModifierNode به onDragAndDropStart تغییر نام داده است تا بهتر نشان دهد که DragAndDropTarget ارائه‌شده فقط برای جلسه معینی از کشیدن و رها کردن معتبر است

    ‫DragAndDropEventType برداشته شد (I645b1)

  • نام PlatformTextInputModifierNode.runTextInputSession به establishTextInputSession تغییر کرد. (I03cd0)

  • نام‌های API گره پیمایش‌پذیر را بهبود می‌بخشد تا قابل‌فهم‌تر شوند. (Ia4474)

  • ‫OriginalText را تا TextSubstitution جایگزین کنید. (Ifa5a8)

  • نام PlatformTextInputModifierNode.textInputSession به runTextInputSession تغییر کرد. (Ie9c6b)

  • فرزندان SubcomposeLayout (و چیدمان‌هایی مثل LazyColumn که براساس آن ساخته شده‌اند) که برای استفاده مجدد در آینده نگهداری می‌شوند غیرفعال درنظر گرفته می‌شوند. میانای برنامه‌سازی کاربردی آزمایشی assertIsDeactivated() جدیدی برای آزمایش چنین گره‌هایی معرفی شده است. بقیه واسط‌های برنامه‌سازی کاربردی آزمایشی به‌طور پیش‌فرض گره‌های غیرفعال را فیلتر می‌کنند. (I2ef84،‏ b/187188981)

  • ‫FocusDirection.In برداشته شد و FocusDirection.Out به‌جای آن از FocusDirection.Enter و FocusDirection.Exit استفاده می‌کند (I2f660)

  • «میاناهای برنامه‌سازی کاربردی» SwipeToReveal Material (برای «کارت‌ها» و «تراشه‌ها») اکنون برای ایجاد آن جایگاه‌ها به‌جای نمونه‌های مبتنی بر کلاس داده، به «میانای برنامه‌سازی کاربردی» مبتنی بر جایگاه (طبق توصیه Compose) متکی است. این تغییر یک تغییر اساسی است، لطفاً برای دیدن نمونه‌هایی از نحوه استفاده از API جدید، کد نمونه و نسخه نمایشی را ببینید. (Ia8943)

  • سازنده FontStyle(int) منسوخ شده است، درعوض از FontStyle.Normal یا FontStyle.Italic استفاده کنید. (I66610)

  • نام رابط FontScalable به FontScaling تغییر کرد (Ie804a)

رفع اشکال‌ها

  • اگر ویرایشگر نوشتاری در کانون نباشد، SoftwareKeyboardController.show() دیگر صفحه‌کلید نرم‌افزاری را نشان نخواهد داد. (I2165a، b/301477279)
  • رویدادهای «کلید سخت‌افزاری بالا» برای کلیدهایی که در همان «نمای نوشتن» رویداد «پایین» دریافت نکرده‌اند اکنون نادیده گرفته می‌شوند. (Ib37b4, b/305518328)
  • پشتیبانی از رندرکننده برای «گرادیان جارویی» در ArcLine اضافه کنید. (I4d5bb)
  • ‫equals و hashcode را برای PageSize.Fixed پیاده‌سازی کنید. (Ie3ede, b/300134276)
  • رفع مشکل سازگاری باینری با تغییر «حاشیه پنجره» (Iee695)
  • لایه اصلی مطالب را برای «تراشه/دکمه Material3» بردارید زیرا ریزسنجش‌ها نشان می‌دهد که بدون آن عملکرد بهتری دارد. (I55555)
  • ‫TestDispatchers که به‌عنوان effectContext به «آزمایش‌های نوشتن» ارسال شده است اکنون برای ایجاد آزمایش و قاب ساعت‌ها استفاده خواهد شد. (Ia7178)

نسخه 1.6.0-alpha08

۱۸ اکتبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-alpha08 منتشر شد. نسخه 1.6.0-alpha08 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫Modifier.dragAndDrawSource تابع لامبدای onDrawDragShadow را به drawDragDecoration تغییر نام داده است و DragAndDropInfo پارامتر اندازه را به dragDecorationSize تغییر نام داده است. (Id0e30, b/303904810)
  • ‫SemanticsNodeInteraction.isDisplayed() و SemanticsNodeInteraction.isNotDisplayed() را معرفی کنید تا بررسی شود آیا گره منطبق بدون ادعای آن قابل‌مشاهده است یا نه. ‫(I2c196،‏ b/302100809)
  • مقدار ویژه Unspecified برای فیلدهای TextAlign،‏ TextDirection،‏ Hyphens، و LineBreak در ParagraphTextStyle معرفی شد تا جایگزین null شود. ازآنجایی‌که این کلاس‌ها کلاس‌های درون‌خطی هستند، با جایگزین کردن «پوچ‌شدنی» با «نامشخص»، از جعبه‌گذاری نوع اولیه جلوگیری می‌کنیم. سازنده‌ها، دریافت‌کننده‌ها، و روش‌های دیگر در 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

۴ اکتبر ۲۰۲۳

‫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 را در آن‌ها تنظیم کنید. این پرچم در Compose 1.6.0-beta01 برداشته خواهد شد. (Ic9486)

رفع اشکال‌ها

  • تجزیه بهینه‌سازی‌شده دارایی‌های برداری XML. (Ibb015)

نسخه 1.6.0-alpha06

‫۲۰ سپتامبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-alpha06 منتشر شد. نسخه 1.6.0-alpha06 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • بهینه‌سازی‌های بیشتر برای نمادهای Material. (I3e08d)
  • امکان پیمایش درخت اصلاح‌گر بالا/پایین را برای یافتن گره‌های مشابه اضافه می‌کند. (I2d234)
  • ‫onRestoreFailed() فراخوان به اصلاح‌گر focusRestorer() (Ie1d43) اضافه شد
  • به‌منظور مشخص کردن ColorInt، FloatRange، IntRange، Size، و موارد دیگر، حاشیه‌نویسی‌های androidx به APIهای گرافیکی مختلف اضافه شد. (Id65c8، b/290950582)
  • افزودن showSystemUi=true به تعریف PreviewScreenSizes (Ib61d3)

تغییرات رفتار

  • ‫Compose اکنون از مقیاس‌بندی غیرخطی قلم برای خوانایی و دسترس‌پذیری بهتر استفاده می‌کند. وقتی مقیاس قلم در تنظیمات سیستم >‏ ‎٪۱۰۰ باشد، اندازه نوشتار کوچک به‌طور معمول افزایش می‌یابد، اما اندازه نوشتار بزرگ ازقبل فقط کمی افزایش می‌یابد. همچنین، ارتفاع خطوط تعریف‌شده در SP به‌طور خودکار تنظیم می‌شود تا با ارتفاع موردنظر در مقیاس ۱۰۰٪ متناسب بماند. برای اطلاعات بیشتر، روال‌های مطلوب برای مقیاس‌بندی قلم را ببینید. (I11518)

نسخه 1.6.0-alpha05

۶ سپتامبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-alpha05 منتشر شد. نسخه 1.6.0-alpha05 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ضبط محتوا را در AndroidComposeViewAccessibilityDelegateCompat فعال کنید. (Ib2969)
  • سرعت‌های پرتاب در عناصر «نما» مانند ScrollView و RecyclerView در ViewConfiguration.ScaledMaximumFlingVelocity محدود شده است. «نوشتن» اکنون حاوی نسخه خودش از maximumFlingVelocity است که اکنون برای Draggable اعمال می‌شود. (Ibf974)
  • داربست اولیه را برای پشتیبانی از میاناهای برنامه‌سازی کاربردی کشیدن و رها کردن پلاتفرم اضافه می‌کند. (If84ce)
  • افزودن deviceId به RotaryScrollEvent (Iba3bf)
  • «میانای برنامه‌سازی کاربردی دستگاه‌ها» در ui-tooling به‌روزرسانی شد تا دستگاه‌های جدیدتر (Ib25b4) را دربر بگیرد

نسخه 1.6.0-alpha04

۲۳ اوت ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-alpha04 منتشر شد. نسخه 1.6.0-alpha04 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • روشی برای غیرفعال کردن ReusableComposition اضافه شد، مشاهدات برداشته می‌شود اما گره‌ها در جای خود باقی می‌مانند. با تماس گرفتن با setContent می‌توانید قطعه غیرفعال‌شده را دوباره فعال کنید. (Ib7f31)
  • واسط ReusableComposition را برای مدیریت چرخه عمر و استفاده مجدد از زیرترکیب‌ها اضافه کنید. ‫(I812d1،‏ b/252846775)
  • ‫Modifier.focusGroup به میاناهای برنامه‌سازی کاربردی پایدار ارتقا یافته است. (I7ffa3)
  • برای مشخص کردن ColorInt،‏ FloatRange،‏ IntRange،‏ Size، و غیره، حاشیه‌نویسی‌های androidx به میاناهای برنامه‌سازی کاربردی گرافیکی مختلف اضافه شد. (I70487، b/290950582)
  • ‫ColorFilter API به‌روز شد تا انواع زیرکلاس مشخصی برای بهبود قابلیت بازرسی پارامترها داشته باشد. (I5fe29)
  • معرفی کتابخانه wear-tooling-preview برای فهرست کردن دستگاه‌های Wear معتبری که می‌توانند برای پیش‌نمایش‌های میانای کاربر استفاده شوند (Ib036e)
  • میانای FontScalable را برای مدیریت بخش مقیاس‌بندی قلم میانای «تراکم» ایجاد کرد. (I2cf3f)

نسخه 1.6.0-alpha03

۹ اوت ۲۰۲۳

‫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

۲۶ ژوئیه ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-alpha02 منتشر شد. نسخه 1.6.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • واسط مکان‌یاب سرویسی اضافه شد که توسط پیاده‌سازان «ترکیب» قابل پیاده‌سازی است و به پیاده‌سازی «ترکیب» امکان می‌دهد جستجوهای سرویس نماینده ترکیب دیگر را به «ترکیب» اصلی واگذار کند. این نباید مستقیماً فراخوانی شود و برای فعال کردن ایجاد میاناهای برنامه‌سازی کاربردی آزمایشی در زمان اجرا استفاده می‌شود که می‌توان آن‌ها را از نسخه‌های بسته‌بندی‌شده آهنگ‌ساز پیدا کرد، مثل کاری که واحد رابط کاربری انجام می‌دهد. (I296b9)
  • میانای برنامه‌سازی کاربردی PlatformTextInput* کاملاً بازطراحی شده است. (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

۲۱ ژوئن ۲۰۲۳

‫androidx.compose.ui:ui-*:1.6.0-alpha01 منتشر شد. نسخه 1.6.0-alpha01 حاوی این تعهدات است.

ویژگی‌های جدید

  • پشتیبانی از پیش‌بینی در LazyList. این کار به LazyList در گذر پیش‌نگر اجازه می‌دهد هرگونه پویانمایی (مثلاً پویانمایی جای‌گذاری مورد، AnimatedVisibility، و غیره) را دور بزند و اندازه و موقعیت پیش‌نگر را برای همه فرزندان محاسبه کند. پس‌از پاس پیش‌نگر، کودکان LazyList می‌توانستند به‌طور مستقل با واقعیت همان‌گونه که در پاس پیش‌نگر دیده می‌شود پویانمایی کنند.

تغییر رفتار: includeFontPadding اکنون به‌طور پیش‌فرض در «نوشتن» روی false تنظیم شده است

اکنون includeFontPadding به‌طور پیش‌فرض در «نوشتن» نادرست است (21d806).

‫includeFontPadding یک مشخصه قدیمی است که کنترل می‌کند آیا حاشیه‌گذاری داخلی اضافی در بالای خط اول و خط آخر نوشتار اضافه شود یا نه تا نویسه‌هایی که ممکن است بالاتر یا پایین‌تر از خط پایه نوشتار قرار بگیرند را دربر بگیرد.

به‌روزرسانی این نسخه «نگارش» نحوه پرداز همه نوشتارها را در واسط کاربرتان با برداشتن حاشیه اضافی در بالای خط اول و خط آخر هر نوشتاری که نمایش می‌دهید تغییر می‌دهد.

بسته به الزامات واسط کاربر و سنجه‌های قلمی که استفاده می‌کنید، تغییرات باید حداقل باشد. بااین‌حال، ممکن است با مسدودکننده‌هایی مثل موارد زیر مواجه شوید: - آزمایش‌های نماگرفت خراب. درصورت نیاز، واسط کاربر را اصلاح کنید و تصاویر طلایی را بازتولید کنید. - نوشتار کمی ناهم‌تراز است. هرگونه حاشیه منفی سفارشی را بردارید یا درصورت نیاز حاشیه اضافه کنید.

بااستفاده از PlatformTextStyle برای هر نوشتار می‌توانید با includeFontPadding موافقت کنید:

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

با پیکربندی سبک‌های Material می‌توانید برای همه پیامک‌هایتان با 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 api به‌روزرسانی شد تا امکان هدف‌یابی مجدد پردازش در بوم دیگری با تراکم/جهت چیدمان و اندازه جایگزین معرفی شود.
  • ‫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 API اضافه شد تا جایگزین toComposePaint شود زیرا شیء برگشتی android.graphics.Paint اصلی را دربرمی‌گیرد (I22b4c)
  • ‫SemanticsProperties.imeAction را منسوخ کنید و آن را با پارامتر جدیدی برای SemanticsActions.performImeAction جایگزین کنید. (I4a587)
  • پشتیبانی از انتخاب با موشواره اضافه شد. انتخاب براساس لمس براساس کلمه گسترش می‌یابد و براساس نویسه کوچک می‌شود. (Ic0c6c،‏ b/180639271)
  • ‫Paragraph روش که قبلاً برای جبران خارج از محدوده AssertionError را پرتاب می‌کرد اکنون IllegalArgumentException را مانند MultiParagraph پرتاب می‌کند. ‫(I549d3،‏ b/243338896)

نسخه 1.5

نسخه ۱.۵.۴

۱۸ اکتبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.4 منتشر شد. نسخه 1.5.4 شامل این تعهدات است.

نسخه ۱.۵.۳

۴ اکتبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.3 منتشر شد. نسخه ۱.۵.۳ حاوی این تعهدات است.

رفع اشکال‌ها

  • (b/301209788) TextField گاهی‌اوقات هنگام تمرکز و وارد کردن ورودی کره‌ای، دستورات قبلی را به‌اشتباه اعمال می‌کرد و باعث ازدست رفتن نویسه‌ها می‌شد.

نسخه 1.5.2

۲۷ سپتامبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.2 منتشر شد. نسخه ۱.۵.۲ شامل این تعهدات است.

رفع اشکال‌ها

  • راهکار موقتی برای خرابی‌ها هنگام دسترسی به «میانای برنامه‌سازی کاربردی پیمایش دسترس‌پذیری» از رشته پس‌زمینه اضافه شد.
  • رفع اشکال گره‌های پیوست‌نشده که به درخت معنایی اضافه می‌شوند.

نسخه 1.5.1

۶ سپتامبر ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.1 منتشر شد. نسخه 1.5.1 حاوی این تعهدات است.

رفع اشکال‌ها

  • وقتی readOnly درست باشد، فیلدهای نوشتاری ثابت صفحه‌کلید را نشان می‌دهند و قابل‌ویرایش هستند. همچنین مشکل نمایش داده نشدن صفحه‌کلید هنگام تغییر readOnly از درست به نادرست درحالی‌که تمرکز روی آن است برطرف شد. (I34a19, b/246909589)

نسخه ۱.۵.۰

۹ اوت ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.0 منتشر شد. نسخه ۱.۵.۰ حاوی این تعهدات است.

نسخه 1.5.0-rc01

۲۶ ژوئیه ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.0-rc01 منتشر شد. نسخه 1.5.0-rc01 شامل این تعهدات است.

رفع اشکال‌ها

  • ازکارافتادگی هنگام استفاده از SubcomposeLayout در movableContentOf() رفع شد.

نسخه 1.5.0-beta03

۲۸ ژوئن ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.0-beta03 منتشر شد. نسخه 1.5.0-beta03 حاوی این تعهدات است.

رفع اشکال‌ها

  • واسط FocusTargetModifierNode اضافه شد که می‌توان از آن برای ایجاد FocusTarget سفارشی استفاده کرد. (Ifb1d6)
  • مشکلی در عناصر ترکیبی «کادر گفتگو» و «بالاپر» برطرف شد که می‌توانست باعث شود پنجره فرزند هنگام usePlatformDefaultWidth=true به اندازه موردانتظار تغییر نکند. (I112ee)

نسخه 1.5.0-beta02

۷ ژوئن ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.0-beta02 منتشر شد. نسخه 1.5.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫asComposePaint API اضافه شد تا مصرف نمونه android.graphics.Paint برای استفاده در «نگارش» فعال شود

رفع اشکال‌ها

  • ‫asComposePaint API اضافه شد تا جایگزین toComposePaint شود زیرا شیء برگشتی android.graphics.Paint اصلی را دربرمی‌گیرد (I22b4c)

نسخه 1.5.0-beta01

۲۴ مه ۲۰۲۳

‫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 اکنون به‌جای produce،‏ operator fun invoke دارد (I4a9a2)
  • ‫Path API تبدیل را اضافه کنید تا تبدیل‌های ترجمه/مقیاس/چرخش را روی اشیای مسیر اعمال کنید. (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)
  • استثناهای بیشتری از enum valueOf (I818fe) پرتاب شد
  • «میانای برنامه‌سازی کاربردی» سطح پایین جدید PlatformTextInputAdapter برای ساختن پیاده‌سازی‌های ورودی نوشتار سفارشی که مستقیماً با «میاناهای برنامه‌سازی کاربردی پلاتفرم» ارتباط برقرار می‌کند معرفی شد. (I58df4)
  • پارامتر BlendMode به روش‌های DrawScope.drawText، Paragraph.paint، و MultiParagraph.paint اضافه شد تا از الگوریتم‌های ترکیب مختلف هنگام رسم نوشتار در «بوم نقاشی» پشتیبانی کند. (I57508)
  • نام Font.MaximumAsyncTimeout به Font.MaximumAsyncTimeoutMillis تغییر کند. فقط تغییر نام. (I07af5)
  • مقادیر DPI به‌روزشده @Preview دستگاه مرجع (Id6151، b/254528382)
  • پارامترهای brush و alpha را به BasicText اضافه کنید تا امکان پویانمایی یا تنظیم قلم‌موی نوشتار به‌طور کارآمد فراهم شود.
  • تعریف انواع لامبدای بدون جعبه برای Float،‏ Double،‏ Long،‏ Int،‏ Short در :ui:ui-unit (I6f18d،‏ b/246961787)

رفع اشکال‌ها

  • چند تخصیص در ردیابی سرعت اشاره‌گر برداشته شد (I26bae)
  • کاهش تخصیص در مدیریت چیدمان و ورودی اشاره‌گر (I5333a)
  • بهینه‌سازی مصرف حافظه برداری و پرداز کردن اولین قاب‌ها (I2f3c6)
  • وقتی با «بوم نقاشی» خط و نقطه می‌کشیدید، تخصیص‌ها برداشته می‌شد (I9f535)
  • افزودن اسناد برای AndroidFont.fontVariationSettings (I7d9e2)

همیاری خارجی

  • بهبود عملکرد و کاهش تخصیص در «میاناهای برنامه‌سازی کاربردی برداری» (I906cb)

نسخه 1.5.0-alpha04

۱۰ مه ۲۰۲۳

‫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)
  • «میانای برنامه‌سازی کاربردی مسیر نوشتن» به‌روزرسانی شد تا از عملیات‌های عقب‌بردن برای پشتیبانی از موارد استفاده دستکاری مکرر «مسیر» با استفاده مجدد سریع‌تر پشتیبانی کند. (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

‫۱۹ آوریل ۲۰۲۳

‫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

۵ آوریل ۲۰۲۳

‫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

۲۲ مارس ۲۰۲۳

‫androidx.compose.ui:ui-*:1.5.0-alpha01 منتشر شد. نسخه 1.5.0-alpha01 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫Modifier.intermediateLayout اکنون به LookaheadScope صریح نیاز ندارد. بلوک اندازه‌گیری در intermediateLayout دارای IntermediateMeasureScope به‌عنوان گیرنده است که CoroutineScope،‏ LookaheadScope، و MeasureScope مناسبی را ارائه می‌دهد.(Ibe2e5)
  • ‫LookaheadLayout با LookaheadScope جایگزین شده است که دیگر Layout نیست. این کار باعث می‌شود محتوای کودک در LookaheadScope مستقیماً توسط MeasurePolicy ولی کنترل شود. (Ibe2e5)
  • ‫Modifier.Node#coroutineScope را اضافه می‌کند تا به Modifier.Nodes اجازه دهد روتین‌های هم‌زمان را راه‌اندازی کند. (I76ef9)
  • با پیاده‌سازی رابط CompositionLocalConsumerModifierNode، به Modifier.Nodes اجازه دهید CompositionLocals را بخواند. (Ib44df)
  • انتقال کلاس @Deprecated به دارایی. (I882d1)

نسخه ۱.۴

نسخه ۱.۴.۳

۳ مه ۲۰۲۳

‫androidx.compose.ui:ui-*:1.4.3 منتشر شد. نسخه 1.4.3 حاوی این تعهدات است.

رفع اشکال‌ها

  • رفع مشکلی که باعث می‌شد AndroidView هنگام استفاده با «اصلاح‌کننده‌های» خاص به‌درستی چیده نشود. (I4dc77، b/274797771)
  • اشکالی در «جستجوی فوکوس دوبعدی» برطرف شد که روی منوهای DropDown تأثیر می‌گذاشت (b/276811828)
  • اشکالی در ویژگی‌های ورود/خروج تمرکز سفارشی برطرف شد که فقط بلوک ورود/خروج را در اولین‌باری که لامبدا فراخوانی می‌شد اجرا می‌کرد (b/277234245)
  • پس‌رفتگی در سیستم کانون که باعث ازکارافتادن برنامه هنگام خواندن focusProperties می‌شد برطرف شد. (b/271324781، b/274897776)

نسخه 1.4.2

‫۱۹ آوریل ۲۰۲۳

‫androidx.compose.ui:ui-*:1.4.2 منتشر شد. نسخه ۱.۴.۲ شامل این تعهدات است.

رفع اشکال‌ها

  • مشکلی برطرف شد که در آن AndroidView اصلاح‌کننده‌های خود را به‌درستی استفاده مجدد نمی‌کرد و احتمالاً منجر به رفتار غیرمنتظره و ازکارافتادن می‌شد. (Ib67ee، b/275919849)
  • پس‌رفتگی‌ای که در آن صفحه‌کلید برای فیلدهای نوشتاری داخل چارگوش‌های گفتگویی که با عنصر ترکیبی Dialog ایجاد نشده بود نشان داده نمی‌شد برطرف شد (I82551، b/262140644)

نسخه ۱.۴.۱

۵ آوریل ۲۰۲۳

‫androidx.compose.ui:ui-*:1.4.1 منتشر شد. نسخه 1.4.1 حاوی این تعهدات است.

رفع اشکال‌ها

  • مشکلی را برطرف می‌کند که در آن ParentDataModifier بر AndroidView تأثیر نمی‌گذاشت (b/274797771)

نسخه ۱.۴.۰

۲۲ مارس ۲۰۲۳

‫androidx.compose.ui:ui-*:1.4.0 منتشر شد. نسخه ۱.۴.۰ حاوی این تعهدات است.

تغییرات مهم از نسخه ۱.۳.۰

  • «میانای برنامه‌سازی کاربردی» جدیدی برای PinnableContainer اضافه شد که به موارد فهرست تنبل اجازه می‌دهد سنجاق شوند تا وقتی از محدوده پیمایش خارج می‌شوند ازدست نروند. برای مثال، Modifier.focusable() از این سازوکار برای سنجاق کردن مورد درحال تمرکز استفاده می‌کند. (Ib8881،‏ b/259274257،‏ b/195049010)
  • سیستم تمرکز بااستفاده از میاناهای برنامه‌سازی کاربردی آزمایشی جدید Modifier.Node بازنویسی شده است. (I7f4d7، b/247708726، b/255352203، b/253043481، b/247716483، b/254529934، b/251840112، b/251859987، b/257141589)
  • در 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

۸ مارس ۲۰۲۳

‫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

۲۲ فوریه ۲۰۲۳

‫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

۸ فوریه ۲۰۲۳

‫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

۲۵ ژانویه ۲۰۲۳

‫androidx.compose.ui:ui-*:1.4.0-alpha05 منتشر شد. نسخه 1.4.0-alpha05 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • سربارهای آزمایشی جدیدی برای تابع runComposeUiTest و تابع‌های create*ComposeRule که پارامترهای CoroutineContext را می‌پذیرند معرفی شد. از زمینه برای ترکیب آزمایشی و هرگونه تماس LaunchedEffect و rememberCoroutineScope() در ترکیب استفاده خواهد شد. (I10614، b/265177763)
  • میانای برنامه‌سازی کاربردی جدیدی برای ردیابی سرعت یک‌بعدی اضافه کنید (If5a82)
  • ‫FocusRequester اکنون به‌عنوان @Stable علامت‌گذاری شده است. (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 API در TextStyle به وضعیت پایدار ارتقا یافتند. (Ic1e1d)

همیاری خارجی

  • ‫notifyFocusedRect روش در TextInputSession و TextInputService دیگر منسوخ نیستند. (I23a04, b/262648050)

نسخه 1.4.0-alpha04

۱۱ ژانویه ۲۰۲۳

‫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/251840112، b/251859987، b/257141589)
  • در 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 باشد، تماس با یک تابع ترکیبی درون‌خطی است. بااین‌حال، مقدار ممکن است برای فراخوانی‌های توابع ترکیب‌شدنی درون‌خطی که از واحدهایی هستند که با نسخه‌ای از افزایه کامپایلر Compose کامپایل شده‌اند که اطلاعات تابع درون‌خطی را تولید نمی‌کند، نادرست باشد. (Idb846)
  • تعدادی از «میاناهای برنامه‌سازی کاربردی» که قبلاً آزمایشی بودند به وضعیت پایدار ارتقا یافتند
  • ‫Rotary Scroll Event API اکنون پایدار است (I42ad3، b/261561229)
  • ‫FontVariation API اکنون پایدار است (I8779f، b/241016309)
  • اکنون همه سازنده‌های Font() میانای برنامه‌سازی کاربردی پایدار هستند (I5948b، b/261435386)
  • ‫DeviceFontFamilyName اکنون پایدار است (I8b640، b/261435386)
  • سازنده AndroidFont با variationSettings اکنون یک API پایدار است و می‌توان از آن برای ایجاد انواع جدید توصیفگر قلم استفاده کرد. (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

۷ دسامبر ۲۰۲۲

‫androidx.compose.ui:ui-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • درحال برداشتن ExperimentalComposeUiApi از PointerIcon (I23af8)
  • معرفی کنش‌های دسترس‌پذیری «صفحه»: PageUp، PageDown، PageLeft، PageRight. توجه داشته باشید که این موارد فقط از API 29 دردسترس هستند. (Ida4ab)
  • نمای rememberNestedScrollConnection پارامتر از نمای ریشه به نمای میزبان به‌روز شد. (Ia5200)
  • «میانای برنامه کاربردی اصلاح‌کننده» برای پُرسمان کردن اطلاعات پیمایش اجداد اضافه شد. (I2ba9d، b/203141462)
  • در Clickable استفاده می‌شود تا تعاملات فشار دادن به‌درستی به‌تأخیر بیفتد، زمانی که اشاره‌ها می‌توانند به رویدادهای پیمایش تبدیل شوند.
  • ‫Clickables که هنگام استفاده در Scrollable ViewGroup، موج‌ها را به‌درستی به‌تأخیر نمی‌انداخت، رفع شد.
  • «کشویی‌ها» و «کاربرگ‌نگار» به‌روزرسانی شدند تا فشارها را به‌درستی به‌تأخیر بیندازند تا درصورتی‌که اشاره‌ها بتوانند به رویدادهای پیمایش تبدیل شوند.
  • نام CompositingStrategy.Always به Offscreen تغییر کرد تا نشان دهد که graphicsLayer همیشه در یک بافر میانی (I47dc1) پرداز می‌شود
  • بارگذاری بیش‌ازحد چیدمان با چندین جایگاه محتوا اکنون پایدار است (I10566، b/248294649)
  • میاناهای برنامه‌سازی کاربردی جدید آزمایشی PerfettoTrace.record {} و PerfettoTraceRule برای ضبط ردپاهای Perfetto (که به‌عنوان «ردپاهای سیستم» نیز شناخته می‌شود) به‌عنوان بخشی از آزمایش اضافه شد تا رفتار و عملکرد آزمایش را بازرسی کنید. (I3ba16)
  • در آزمایش‌های رابط کاربری که از قانون «نوشتن» استفاده می‌کنند، ادامه درطول withFrameNanos تماس برگشتی ازسر گرفته نخواهد شد تا زمانی که همه تماس‌های برگشتی چارچوب اجرا شوند. این با رفتار نوشتن در حالت عادی مطابقت دارد. بااین‌حال، آزمایش‌هایی که به رفتار قدیمی متکی هستند ممکن است ناموفق باشند. این تغییر فقط باید بر کدی که مستقیماً 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)

به‌روزرسانی‌های وابستگی

  • اکنون «واسط کاربر Compose» و «مواد Compose» به «چرخه حیات ۲.۵.۱» وابسته هستند. (I05ab0, b/258038814)

نسخه 1.4.0-alpha02

۹ نوامبر ۲۰۲۲

‫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 را اضافه کنید تا ابزارها بتوانند وضعیت‌های داخلی «ترکیب‌شدنی» را تغییر دهند (Ie6614)
  • ابزارسازی مجدد برای پشتیبانی بهتر از پویانمایی‌های جدید اضافه‌شده (I8677b)
  • پارامتر minLines به «نوشتار» ماده و ماده۳،‏ TextField، و OutlinedTextField اضافه شد که امکان تنظیم حداقل ارتفاع عنصر براساس تعداد خطوط را فراهم می‌کند (I4af1d)

نسخه 1.4.0-alpha01

‫۲۴ اکتبر ۲۰۲۲

‫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)

نسخه ۱.۳

نسخه ۱.۳.۳

۱۱ ژانویه ۲۰۲۳

‫androidx.compose.ui:ui-*:1.3.3 منتشر شد. نسخه ۱.۳.۳ حاوی این تعهدات است.

رفع اشکال‌ها

  • رفع اشکال خرابی که گاهی اوقات در Android 9 هنگام ذخیره وضعیت «نمای نوشتن» توسط «فعالیت» رخ می‌دهد. (I0b755, b/260322832)

نسخه ۱.۳.۲

۷ دسامبر ۲۰۲۲

‫androidx.compose.ui:ui-*:1.3.2 منتشر شد. نسخه ۱.۳.۲ حاوی این تعهدات است.

رفع اشکال‌ها

  • به‌روزرسانی برای استفاده از Profobuf 3.21.8 که از هشدار امنیتی در protobuf-javalite:3.19.4 جلوگیری می‌کند (CVE-2022-3171) (b/255545055)

نسخه ۱.۳.۱

۹ نوامبر ۲۰۲۲

‫androidx.compose.ui:ui-*:1.3.1 منتشر شد. نسخه 1.3.1 شامل این تعهدات است.

نسخه ۱.۳.۰

‫۲۴ اکتبر ۲۰۲۲

‫androidx.compose.ui:ui-*:1.3.0 منتشر شد. نسخه ۱.۳.۰ حاوی این تعهدات است.

تغییرات مهم از نسخه ۱.۲.۰

  • مجموعه جدید میانای برنامه‌سازی کاربردی آزمایشی LookaheadLayout (فعال کردن رفتارهای پویانمایی که قبلاً غیرممکن بود)
  • مجموعه جدید میانای برنامه‌سازی کاربردی آزمایشی Modifier.Node (جایگزین با عملکرد بالاتر برای Modifier.composed)
  • پشتیبانی بهبودیافته از حاشیه‌های پنجره.
  • پشتیبانی از تمرکز برای پد کنترل و صفحه‌کلید سخت‌افزاری در LazyLists.
  • حداکثر ارتفاع پشتیبانی‌شده در چارگوش‌های گفتگو و بالاپَرها به ۸ پیکسل کاهش یافته است (تغییر رفتار شکننده برای برخی‌از سیستم‌های طراحی سفارشی‌سازی‌شده – دلیل منطقی در یادداشت‌های انتشار نسخه بتا۰۱)
  • بسیاری از بهبودهای جزئی و غیرمخل در «میانای برنامه‌سازی کاربردی»
  • رفع اشکالات متعدد و بهبود عملکرد

نسخه 1.3.0-rc01

۵ اکتبر ۲۰۲۲

‫androidx.compose.ui:ui-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫API آزمایشی جدیدی به نام «خط تیره» اضافه شد تا از خط‌گذاری خودکار در «نوشتار» پشتیبانی کند (Iaa869)

رفع اشکال‌ها

  • قلم‌های DeviceFontFamilyName به‌طور پیش‌فرض تنظیمات wght و ital را پیکربندی نخواهند کرد و به‌جای آن از تنظیمات پلاتفرم برای Typeface بارگیری‌شده استفاده خواهند کرد. (Ia7a6d،‏ b/246989332)
  • رفع نشت حافظه LazyColumn - وقتی اصلاح‌کننده‌ها دوباره استفاده می‌شدند، onModifierLocalsUpdated با مقدار پیش‌فرض فراخوانده نمی‌شد (b/230168389)

نسخه 1.3.0-beta03

۲۱ سپتامبر ۲۰۲۲

‫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

۷ سپتامبر ۲۰۲۲

‫androidx.compose.ui:ui-*:1.3.0-beta02 منتشر شد. نسخه 1.3.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • یک سربار آزمایشی برای «چیدمان» اضافه شد که فهرست چند لامبدای محتوای ترکیب‌پذیر را می‌پذیرد و امکان می‌دهد با مقادیر قابل‌اندازه‌گیری که در لامبدهای محتوای مختلف قرار می‌گیرند به‌صورت متفاوت برخورد شود (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

۲۴ اوت ۲۰۲۲

‫androidx.compose.ui:ui-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 حاوی این تعهدات است.

بازسازی گره اصلاح‌کننده

لایه مدیریت‌کننده Modifier/Modifier.Element نمونه و هماهنگ‌کننده عملکرد آن‌ها در LayoutNodes به‌طور عمده بازسازی شده است. در وضعیت فعلی، این یک بازسازی بود که بر میانای برنامه‌سازی کاربردی عمومی هیچ‌یک از اصلاح‌کننده‌های متعدد در Compose تأثیر نگذاشت و می‌توان آن را به‌عنوان تغییری فقط در پیاده‌سازی درنظر گرفت. باوجوداین، این تغییر به دلایل مختلفی مهم است. (Ie4313)

تغییر خلاصه

میاناهای برنامه‌سازی کاربردی Modifier.Node آزمایشی اضافه‌شده، تجریدی ارائه می‌دهد که امکان می‌دهد وضعیت در نمونه‌ای که با چرخه حیات گره چیدمان حفظ می‌شود نگهداری شود و براساس گره چیدمان و براساس استفاده از Modifier.Element مربوطه که آن را تولید کرده است تخصیص داده شود.

به‌طور کلی، این انتزاع سازوکار جایگزینی برای تولید اصلاح‌کننده‌های حالت‌دار بدون تکیه بر سازوکار میانای برنامه‌سازی کاربردی Modifier.composed ارائه می‌دهد.

خطر

این تغییر کاملاً با نسخه‌های قبلی سازگار است و تا حد امکان و معقول، ازنظر رفتار قابل‌مشاهده با نسخه‌های قدیمی سازگار است. بااین‌حال، زیرسیستم‌های کمی در Compose وجود دارد که این بازسازی به آن‌ها دست نزده باشد، و احتمالاً رفتار به روش‌هایی تغییر کرده است که در آزمایش‌های ما پوشش داده نشده‌اند و هنوز پیدا و اصلاح نشده‌اند.

لطفاً بااحتیاط به این نسخه ارتقا دهید. اگر فکر می‌کنید این تغییر باعث بروز مشکلاتی برای شما شده است، لطفاً به ما اطلاع دهید.

میاناهای برنامه‌سازی کاربردی آزمایشی

چندین API آزمایشی اضافه شده است که همه آن‌ها به مفهوم جدید «گره اصلاح‌کننده» مربوط می‌شوند. ‫Modifier.Node’s در نتیجه این موارد ایجاد می‌شود

  • 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

تغییر رفتار مخرب

حداکثر ارتفاع پشتیبانی‌شده در کادرهای گفتگو و بالاپرها به ۸dp کاهش یافته است.

حداکثر ارتفاع پشتیبانی‌شده برای کادرهای «نوشتن» و بالاپَرها از ۳۰dp به ۸dp کاهش یافته است. این تغییر هم بر کادرهای گفتگوی سفارشی و هم بر بالاپرهای رابط کاربری تأثیر می‌گذارد. این تغییر برای کاهش اشکال دسترس‌پذیری در نسخه‌های Android پایین‌تر از S و برای اطمینان از اینکه سرویس‌های دسترس‌پذیری در این پنجره‌ها می‌توانند با محتوای داخل کادر گفتگو یا بالاپر تعامل داشته باشند، انجام شده است.

تنها درصورتی تحت تأثیر این تغییر قرار می‌گیرید که پیاده‌سازی سفارشی برای چارگوش گفتگو یا بالاپری با ارتفاعی بالاتر از ۸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

۱۰ اوت ۲۰۲۲

‫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)
  • «قلم‌های منبع» اکنون از تنظیمات گونه قلم (API 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)
  • «میانای پاراگراف» اکنون به «میانای مهروموم‌شده پاراگراف» تبدیل شده است. هیچ مورد استفاده‌ای برای زیرکلاس‌بندی پاراگراف وجود ندارد و توصیه می‌کنیم اگر این تغییر بر شما تأثیر می‌گذارد با ما تماس بگیرید. (If5247،‏ b/239962983)
  • گزارمان آزمایشی از PlatformTextStyle و LineHeightStyle برداشته شد. (I64bef)
  • ‫TextInputService.show|hideSoftwareKeyboard منسوخ شود. لطفاً در کد برنامه از SoftwareKeyboardController و در کد مدیریت IME از TextInputSession استفاده کنید. (I14e4c، b/183448615)
  • افزودن میانای برنامه‌سازی کاربردی جدید برای انواع پویانمایی موجود (I26179)

رفع اشکال‌ها

  • ‫@RequiresPermission به میاناهای برنامه‌سازی کاربردی‌ای که در کیت توسعه نرم‌افزار ۳۳ و بالاتر نیاز به اعطای اجازه POST_NOTIFICATIONS دارند اضافه شد. (Ie542e، b/238790278)

نسخه 1.3.0-alpha02

۲۷ ژوئیه ۲۰۲۲

‫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 بردارید، زیرا می‌توان آن‌ها را به‌راحتی با بخش‌های ساده‌تر API پیاده‌سازی کرد. عملکردهایی که برداشته شده‌اند شامل pressKeys، keysDown، و keysUp می‌شود. (I81d77)
  • نام‌های ثابت و پارامتر در KeyInjectionScope بازسازی شد تا پسوند «Millis» را دربرگیرد، درصورتی‌که واحد آن ثابت‌ها و پارامترها میلی‌ثانیه باشد. (Iabef5)
  • روش toStringForLog() به EditCommand اضافه شد تا به عیب‌یابی مشکلات ویرایش نوشتار کمک کند. (I53354، b/228862731)
  • در DrawScope، تابع افزونه drawText اضافه شد تا روشی برای رسم نوشتار چندسبکی در عناصر ترکیبی و اصلاح‌کننده‌هایی که روی DrawScope مثل Canvas و drawBehind عمل می‌کنند ارائه دهد. (I16a62، b/190787898)
  • میانای برنامه‌سازی کاربردی آزمایشی جدیدی به‌نام TextMeasurer معرفی شده است که امکان محاسبه چیدمان نوشتاری دلخواه را فراهم می‌کند و نتایجی یکسان با BasicText ایجاد می‌کند، مستقل از زمان اجرای Compose. (I17101)
  • ‫mapTree را به SlotTree.kt اضافه کنید. این کار به ابزارها امکان می‌دهد SlotTree را بدون اینکه ابتدا نسخه‌ای در حافظه ایجاد کنند (مثل کاری که asTree انجام می‌دهد) بازرسی کنند. برای «بازرس چیدمان»، این کار باعث بهبود عملکرد تا حدود ۱۰ برابر می‌شود. (I5e113)
  • «پیش‌نمایش نوشتن» تغییر کرد تا در فایل‌های برونداد باینری ذخیره شود، تا به توسعه‌دهندگان اجازه دهد MultiPreview گزارمان را از کتابخانه‌ها بنویسند و دوباره استفاده کنند. (I85699، b/233511976)

رفع اشکال‌ها

  • هنگام افزودن InputEventChange رویداد به «ردیاب» Velocity، اکنون به‌جای موقعیت‌ها، دلتاها را درنظر می‌گیریم. این کار تضمین می‌کند که سرعت در همه موارد به‌درستی محاسبه شود، حتی اگر عنصر هدف حرکت کند (Icea9d، b/216582726، b/223440806، b/227709803)
  • رفع خطای NPE ناشی از AnnotatedString.toUpperCase درصورت وجود گزارمان‌ها. (I0aca2،‏ b/210899140)

نسخه 1.3.0-alpha01

۲۹ ژوئن ۲۰۲۲

‫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)

رفع اشکال‌ها

  • ‫TextLayoutResult.getLineForOffset پرتاب نمی‌کند. (Idc5d6، b/235876324)

همیاری خارجی

  • میانای برنامه‌سازی کاربردی جدیدی WindowInfo.keyboardModifiers اضافه شد تا وضعیت آن در توابع ترکیب‌شدنی یا ازطریق snapshotFlow مشاهده شود (Icdb8a)

نسخه ۱.۲

نسخه ۱.۲.۱

۱۰ اوت ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.1 منتشر شد. نسخه ۱.۲.۱ حاوی این تعهدات است.

رفع اشکال‌ها

  • رفع مشکل اشاره‌گر تهی در بازرس (b/237987764)
  • رفع استثنای تبدیل کلاس درحین به‌یادآوری در بازرس (b/235526153)

نسخه ۱.۲.۰

۲۷ ژوئیه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ حاوی این تعهدها است.

تغییرات مهم از نسخه ۱.۱.۰

  • بهبودهایی در پیمایش تمرکز:

    • پیمایش فهرست‌های «تنبل» با تمرکز اکنون بااستفاده از BeyondBoundsLayout میانای برنامه‌سازی کاربردی اصلی جدید کار می‌کند
    • میاناهای برنامه‌سازی کاربردی جدید برای سفارشی‌سازی رفتار در FocusOrder و FocusProperties
    • عملکرد بهبودیافته با صفحه‌کلید فیزیکی یا کنترل از دور تلویزیون
  • میاناهای برنامه‌سازی کاربردی جدید برای:

    • حاشیه‌های پنجره
    • عناصر اصلی برای پویانمایی‌های چیدمان، بی‌نهایت، و مبتنی بر اشاره
    • ‫GraphicsLayer قابلیت، ازجمله RenderEffect
  • رفع اشکالات متعدد و بهبود عملکرد

نسخه 1.2.0-rc03

۲۹ ژوئن ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-rc03 منتشر شد. نسخه 1.2.0-rc03 حاوی این تعهدات است.

  • از نسخه 1.2.0-rc02 تغییری نکرده است.

نسخه 1.2.0-rc02

‫۲۲ ژوئن ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-rc02 منتشر شد. نسخه 1.2.0-rc02 حاوی این تعهدات است.

نسخه 1.2.0-rc01

۱۵ ژوئن ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • میاناهای کتابخانه‌های Compose اکنون بااستفاده از روش‌های میانای پیش‌فرض 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

۱ ژوئن ۲۰۲۲

‫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» پشتیبانی‌شده توسط 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

‫۱۸ مه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • استفاده مجدد از عملکرد در انواع پیش‌نمایش دیگر (I19f39)

رفع اشکال‌ها

  • ‫ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer به DisposeOnDetachedFromWindowOrReleasedFromPool تغییر نام داده است تا بهتر نشان دهد که وقتی دفع انجام می‌شود، نه صرفاً وقتی انجام نمی‌شود. (If15ca)

نسخه 1.2.0-beta01

۱۱ مه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 حاوی این تعهدها است.

ویژگی‌های جدید

  • این اولین نسخه بتای ۱.۲ است!

تغییرات میانای برنامه‌سازی کاربردی

  • ‫BeyondBoundsInterval آزمایشی اضافه شد که پیاده‌سازی‌های سفارشی LazyList می‌توانند از آن برای چیدن موارد فراتر از محدوده‌های قابل‌مشاهده استفاده کنند (Ifabfb، b/184670295)
  • نسخه‌های کلیددار Modifier.composed اکنون «میانای برنامه‌سازی کاربردی» پایدار است (Ie65e4، b/229988420)
  • میانای برنامه‌سازی کاربردی rememberNestedScrollConnection ساده شد تا از متغیرهای محلی ترکیب برای دریافت اطلاعات نمای کنونی استفاده شود (I67ca7)
  • حاشیه‌نویسی @ComposableTarget و حاشیه‌نویسی‌های علامت‌گذاری‌شده با @ComposableTargetMarker اکنون می‌توانند بااستفاده از پیشوند @file در حوزه فایل استفاده شوند. استفاده از گزارمان هدف در حوزه فایل باعث می‌شود که کامپایلر فرض کند همه توابع ترکیب‌شدنی در فایل برای هدف‌یابی کردن اعمال‌کننده منسوب درنظر گرفته شده‌اند. برای مثال، استفاده از @file:UiComposable اعلام می‌کند که همه توابع @Composable هدفشان برنامه اعمال‌کننده «واسط کاربر نوشتن» است. تابعی که باید متوجه درخواست‌کننده دیگری باشد باید شرح نشانگر هدف را به‌طور صریح برای درخواست‌کننده موردنظر ارائه دهد. (I40804)
  • ‫API آزمایشی، مستقل از پلاتفرم، و جدیدی معرفی شد: یک interface ComposeUiTest و یک fun runComposeUiTest(block: ComposeUiTest.() -> Unit) که می‌توان از آن‌ها برای اجرای آزمایش‌های Compose Ui بدون نیاز به TestRule استفاده کرد. برای اجرای آزمایشی بدون ComposeTestRule، آزمون را به‌عنوان لامبدا به 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 مقادیر ۴ وضعیت تعریف‌شده با دو مقدار بولی دارد: 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

‫۲۰ آوریل ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-alpha08 منتشر شد. نسخه 1.2.0-alpha08 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫pluralStringResource تابع به‌عنوان آزمایشی علامت‌گذاری شده است تا امکان تکامل برای پشتیبانی بهتر از بین‌المللی‌سازی در آینده فراهم شود. (If24e4)
  • اکنون «پاراگراف» و «پاراگراف چندگانه» پارامتر «محدودیت‌ها» را می‌پذیرند. درحال‌حاضر عبور از Constraints.maxHeight عملیات بدون نتیجه است اما در آینده امکان انجام برخی محاسبات را فراهم می‌کند، مثلاً حذف براساس ارتفاع. (I6afee, b/168720622)
  • ‫SubcomposeSlotReusePolicy.getSlotsToRetain() اکنون کلاس سفارشی شبیه MutableSet را می‌پذیرد که اجازه نمی‌دهد موارد جدید به آن اضافه شود. (Icd314)
  • ‫PointerIcon اکنون میانای @Stable است (I9dafe)
  • مصرف جزئی (پایین یا موقعیت) در PointerInputChange منسوخ شده است. می‌توانید از consume() برای مصرف کامل تغییر استفاده کنید. می‌توانید از isConsumed برای تعیین اینکه آیا شخص دیگری قبلاً تغییر را مصرف کرده است یا نه استفاده کنید.
  • ‫PointerInputChange::copy() اکنون همیشه کپی سطحی می‌سازد. یعنی وقتی یکی از نسخه‌های PointerInputChange مصرف شود، نسخه‌های دیگر هم مصرف خواهد شد. اگر می‌خواهید PointerInputChange بدون محدودیت ایجاد کنید، به‌جای آن از سازنده استفاده کنید. (Ie6be4، b/225669674)
  • فعال کردن قابلیت تعامل «پیمایش تودرتو» بین Compose و View در جهت Compose > View. این یعنی یک عنصر والد ترکیبی می‌تواند تغییرات پیمایش تودرتو را از نمای پیمایش تودرتو دریافت کند. (If7949،‏ b/174348612)
  • ‫SemanticsProperty testTagsAsResourceId جدید، که می‌تواند برای مطابقت دادن «نوشتن» با آزمایش‌های UIAutomator طراحی‌شده برای سیستم View استفاده شود. (I39c20)
  • هنگام استفاده از FontFamily.SansSerif، همه وزن‌های دردسترس برای قلم‌های سیستم در Android نمایش داده می‌شود. این کار از نام‌های قلم جایگزین مثل sans-serif-medium به‌صورت داخلی در API 21-28 استفاده می‌کند. این تغییر در رفتار است زیرا قبلاً فقط وزن‌های ۴۰۰ و ۷۰۰ در API 21-28 پشتیبانی می‌شد. (I380fe،‏ b/156048036،‏ b/226441992)
  • مربیان «پاراگراف» و «چندپاراگراف» استدلال‌های جایگاهی را به قبل‌از استدلال‌های اختیاری تغییر دادند. (Idafaa)
  • ‫AndroidFont اکنون typefaceLoader را به‌عنوان پارامتر سازنده می‌گیرد. (I2c971)

نسخه 1.2.0-alpha07

‫۶ آوریل ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-alpha07 منتشر شد. نسخه 1.2.0-alpha07 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • تابع جدید Snapshot.withoutReadObservation { ... } اضافه شد. این تابع به کاربران اجازه می‌دهد تا لامبدای ارسال‌شده را بدون مشترک شدن در تغییرات مقادیر وضعیت خوانده‌شده درطول این بلوک اجرا کنند. در موارد استفاده‌ای که می‌خواهید از نوشتن/خواندن ایمن رشته براساس نمای فوری بهره‌مند شوید، اما می‌خواهید بتوانید مقدار را بدون ایجاد ترکیب مجدد یا اندازه‌گیری مجدد غیرضروری بخوانید، می‌توانید از آن استفاده کنید. (I9f365، b/214054486)
  • دارایی افزونه consumeWindowInsets در ComposeView به توسعه‌دهندگان اجازه می‌دهد مصرف WindowInsets در Android را غیرفعال کنند. این کار به ComposeViews جداگانه در سلسله مراتب اجازه می‌دهد تا هرکدام WindowInsets را بدون تداخل با یکدیگر اعمال کنند. (I0ef08، b/220943142)
  • ‫KeyboardType.Decimal به‌عنوان جایگزین Keyboard.Number برای گنجاندن جداکننده اعشاری در «ویرایشگر روش ورودی» اضافه شد. (Iec4c8، b/209835363)
  • ‫PointerEventType.Scroll و PointerEvent.scrollDelta اکنون میاناهای برنامه‌سازی کاربردی پایدار هستند (I574c5،‏ b/225669674)
  • فعال کردن قابلیت تعامل «پیمایش تودرتو» بین View و Compose برای کلاس‌های View همکار. این یعنی Compose اکنون می‌تواند تغییرات پیمایش را به «نمای» والد (همکار) ارسال کند. (I5d1ac، b/174348612)
  • ‫FontFamily.Resolver برای ادغام تنظیمات دسترس‌پذیری نوشتار پررنگ در کل سیستم (I6c1e7) به‌روزرسانی شد
  • ‫Font(AssetManager, String, ...) منسوخ شده است، با Font(String, AssetManager, ...) جایگزین شده است. این یک API آزمایشی است. (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)

رفع اشکال‌ها

  • بررسی lint به material/Scaffold اضافه شد تا اطمینان حاصل شود که از بالشتک داخلی استفاده می‌شود (Ifb111)

نسخه 1.2.0-alpha06

۲۳ مارس ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-alpha06 منتشر شد. نسخه 1.2.0-alpha06 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫RequestFocus کنش معنایی به درخواست تمرکز روی هدف قابل‌تمرکز اضافه شد. (I17b71)
  • تجزیه به‌روزشده داراها برداری برای پشتیبانی از قرینه‌سازی خودکار برای برگرداندن محتوای VectorPainter درصورتی‌که جهت چیدمان کنونی راست‌به‌چپ باشد. (I79cd9, b/185760237)
  • رنگ‌های سایه/محیط به‌روزرسانی‌شده تا پارامترهای دنباله‌دار Modifier.graphicsLayer برای سازگاری API (I3f864، b/160665122)

  • پیاده‌سازی‌های پیش‌فرض به رنگ سایه/محیط در GraphicsLayerScope اضافه شد تا از تغییرات API بدون وقفه اطمینان حاصل شود

  • زمان رویداد به رویدادهای RSB (Ief8ae) اضافه شد

  • ‫FocusOrder اکنون در FocusProperties ادغام شده است و focusProperties() اکنون همه قابلیت‌های focusOrder() را دارد. ‫FocusOrder و focusOrder() منسوخ شده‌اند. ‫focusOrder() که focusRequester را می‌پذیرد باید با اصلاح‌گر focusRequester() در ترکیب با focusProperties() جایگزین شود. این کار به اصلاح‌کننده‌ها اجازه می‌دهد تا نگرانی‌هایشان را بهتر تفکیک کنند. (I601b7)

  • ارتقا دادن هم RecyclerView و هم Compose اکنون منجر به عملکرد پیمایش بسیار بهتری برای RecyclerViews با نمای Compose به‌عنوان فرزند می‌شود.

  • ‫ViewCompositionStrategy.Default را به‌عنوان روشی برای بازیابی استراتژی پیش‌فرض داخلی اضافه کنید

  • ‫ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer را اضافه کنید که راهبرد پیش‌فرض جدید است و به‌درستی از استخرهای حاوی مثل RecyclerView استفاده می‌کند. (If7282)

  • پشتیبانی از حاشیه‌نویسی کلاس‌های حاشیه‌نویسی با @Preview به‌عنوان اولین گام برای افزودن ویژگی «چندپیش‌نمایش» اضافه شد. از چنین حاشیه‌نویسی‌هایی می‌توان برای حاشیه‌نویسی کردن روش‌های «ترکیبی» یا کلاس‌های حاشیه‌نویسی دیگر استفاده کرد، که دراین‌صورت می‌توان آن‌ها را به‌عنوان حاشیه‌نویسی غیرمستقیم با @Preview داده‌شده درنظر گرفت. (I12eff)

  • دستگاه‌های مرجع به فهرست «دستگاه‌ها» برای @Preview (I071c9) اضافه شد

رفع اشکال‌ها

  • میاناهای برنامه‌سازی کاربردی گرافیک برداری به‌روزرسانی شد تا به‌جای ‎ @UiComposable از گزارمان ترکیبی مناسب ‎ @VectorComposable استفاده کند (I942bc)
  • برداشتن میان‌خط از AnnotatedString.Builder.withStyle (If84d5)

همیاری خارجی

  • compose-ui: افزودن ambientShadowColor و spotShadowColor دارایی به GraphicsLayerScope (I1ba1a،‏ b/160665122)
  • اکنون از منابع جمع ازطریق تابع‌های pluralStringResource پشتیبانی می‌شود. (Ib2f23،‏ b/191375123)

نسخه 1.2.0-alpha05

۹ مارس ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-alpha05 منتشر شد. نسخه 1.2.0-alpha05 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫TextToolbar اکنون به‌جای ActionCallback، متغیرهای مستقل lambda می‌گیرد. (Ib2eb9، b/197950089)
  • به‌روزرسانی قابلیت تهی بودن در هسته و appcompat برای مطابقت با Tiramisu DP2 (I0cbb7)
  • واسط اندازه‌گیری‌شده اکنون خصوصیت parentData را آشکار می‌کند (I3313f)
  • ‫Modifier.onPlaced و میانای OnPlacedModifier اکنون پایدار هستند. (Ib5482)
  • هورا! پویانمایی «ترکیب» اکنون از تنظیم «مقیاس مدت زمان پویانمایی» در «گزینه‌های توسعه‌دهندگان» پشتیبانی می‌کند. (I5a4fc, b/161675988)
  • اصلاح‌گر BeyondBoundsLayout محلی اضافه شد (If8b51،‏ b/184670295)
  • نوشتار: includeFontPadding اکنون به‌طور پیش‌فرض خاموش است. مشکلات برش ناشی از includeFontPadding=false برطرف شده است و هیچ برشی برای متن‌های بلند رخ نخواهد داد. (I31c84، b/171394808)

رفع اشکال‌ها

  • اکنون اگر بخواهید محتوایی را تنظیم کنید که ازقبل محتوا دارد، ComposeContentTestRule.setContent IllegalStateException را پرتاب خواهد کرد. (I888a5، b/199631334)
  • رفع خرابی ناشی از محتوای بریده‌دان هنگام خواندن از بریده‌دان در Android. (I06020, b/197769306)
  • نمونه‌های پیمایش RSB را بهبود دهید. (I6a596)

همیاری خارجی

  • برای استفاده از روال‌های مشترک Kotlinx نسخه ۱.۶.۰ به‌روز شد (I3366d)

نسخه 1.2.0-alpha04

۲۳ فوریه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-alpha04 منتشر شد. نسخه 1.2.0-alpha04 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫ComposableTarget،‏ ComposableTargetMarker، و ComposableOpenTarget اضافه شد که گزارش زمان ترجمه را برای زمانی که یک تابع ترکیب‌پذیر با هدف یک اعمال‌کننده فراخوانده می‌شود که برای استفاده از آن طراحی نشده است امکان‌پذیر می‌کند.

    در بیشتر موارد، حاشیه‌نویسی‌ها را می‌توان از افزایه کامپایلر compose استنباط کرد، بنابراین استفاده مستقیم از این حاشیه‌نویسی‌ها باید نادر باشد . مواردی که نمی‌توانند استنباط شوند شامل ایجاد و استفاده از اعمال‌کننده سفارشی، توابع ترکیبی انتزاعی (مثل روش‌های واسط)، فیلدها یا متغیرهای سراسری که لامبداهای ترکیبی هستند (متغیرهای محلی و پارامترها استنباط می‌شوند)، یا هنگام استفاده از ComposeNode یا توابع ترکیبی مرتبط می‌شود.

    برای اعمال‌کننده‌های سفارشی، توابع ترکیبی که ComposeNode یا ReusableComposeNode را فراخوانی می‌کنند باید حاشیه‌نویسی ComposableTarget را برای تابع و هر نوع پارامتر لامبدای ترکیبی اضافه کنند. بااین‌حال، توصیه می‌شود یک گزارمان ایجاد کنید که با ComposableTargetMarker گزارمان‌گذاری شده باشد و سپس از گزارمان علامت‌گذاری‌شده به‌جای ComposableTarget مستقیماً استفاده شود. یک گزارمان ترکیبی علامت‌گذاری‌شده با ComposableTargetMarker معادل ComposbleTarget با نام کاملاً واجدشرایط کلاس مشخصه به‌عنوان پارامتر اعمال‌کننده است. برای نمونه‌ای از استفاده از ComposableTargetMarker، به anroidx.compose.ui.UiComposable مراجعه کنید. (I38f11)

  • ‫Font(resId, ...) اکنون loadingStrategy را در API پایدار می‌پذیرد. (Ief3d2)

  • ‫FontLoadingStrategy اکنون میانای برنامه‌سازی کاربردی پایدار است. (I1ee35، b/174162090)

  • پشتیبانی از بار کردن غیرهم‌زمان قلم در «نوشتار» (I77057، b/214587005)

  • میانای برنامه‌سازی کاربردی پلی برای تبدیل Font.ResourceLoader سفارشی به FontFamily.Resolver اضافه کنید. (Ia0060)

رفع اشکال‌ها

  • FontFamily.Resolver ارائه‌شده به زیرترکیب‌هایی مثل «بالاپر» منتقل می‌شود.
  • Font.ResourceLoader ارائه‌شده به زیرترکیب‌هایی مثل «بالاپر» منتقل می‌شود. (I48fa5)

نسخه 1.2.0-alpha03

۹ فوریه ۲۰۲۲

‫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 اضافه شد که لامبدای ترکیب‌شدنی را به لامبدایی تبدیل می‌کند که وضعیت آن و گره‌های مربوطه را به هر مکان جدیدی که فراخوانی می‌شود منتقل می‌کند. وقتی تماس قبلی از ترکیب خارج می‌شود، وضعیت به‌طور موقت حفظ می‌شود و اگر تماس جدیدی با لامبدا وارد ترکیب شود، وضعیت و گره‌های مرتبط به مکان تماس جدید منتقل می‌شوند. اگر تماس جدیدی اضافه نشود، وضعیت برای همیشه برداشته می‌شود و ناظران مطلع می‌شوند.

    اگر یک لامبدای movableContentOf چندین بار در یک ترکیب فراخوانی شود، وضعیت و گره‌های جدیدی برای هر فراخوانی ایجاد می‌شود و با خروج فراخوانی‌ها از ترکیب و ورود فراخوانی‌های جدید، وضعیت از اولین فراخوانی‌های خروجی به فراخوانی‌های ورودی به ترتیب فراخوانی آن‌ها منتقل می‌شود. همه وضعیت‌هایی که تماس‌های جدید ادعای مالکیت نکرده‌اند برای همیشه برداشته می‌شود. (Ib4850)

  • ‫FontFamilyResolver اکنون ازطریق LocalFontFamilyResolver.current دردسترس است

  • ‫createFontFamilyResolver(context) و createFontFamilyResolver(context, coroutineScope) برای ایجاد FontFamily جدید خارج از کاربرد compose اضافه شد.

  • اکنون «پاراگراف» و «چندپاراگراف» FontFamily.Resolver را می‌پذیرند

  • اکنون TextLayoutResult.layoutInput.fontFamilyResolver حاوی حل‌کننده‌ای است که برای این چیدمان استفاده می‌شود، TextLayoutResult.layoutInput.resourceLoader منسوخ شده است زیرا دیگر استفاده نمی‌شود. (Id5a45، b/174162090)

  • پشتیبانی از بار کردن غیرهمگام و اختیاری قلم، با رفتار بازگشتی. این مسیر توسط «نوشتار» و «فیلد نوشتاری» استفاده می‌شود و ازطریق FontFamilyResolver نمایان می‌شود

  • پشتیبانی از پیش‌بار کردن قلم‌ها ازطریق FontFamilyResolver.preload

  • ‫FontFamilyResolver.setAsyncLoadContext امکان تنظیم بافت سراسری روتین هم‌زمان را که برای بار کردن قلم‌های ناهم‌زمان استفاده می‌شود فراهم می‌کند. (I87fe8، b/174162090)

  • ‫AndroidFont، میانای برنامه‌سازی کاربردی سطح پایین جدیدی برای ارائه انواع جدید توصیف‌گرهای منبع قلم در Android اضافه شد. برای مثال، بار کردن قلم‌ها از پشتیبان ویژه برنامه، به‌صورت اختیاری مکان‌یابی قلم‌های ازپیش نصب‌شده در دستگاه، یا بار کردن قلم از منبعی که کارخانه‌های قلم فعلی ارائه نمی‌دهند.

  • میانای برنامه‌سازی کاربردی Font.ResourceLoaded گسترش یافت تا از بارگیری اختیاری و ناهم‌زمان قلم پشتیبانی کند. توصیه نمی‌شود که توسعه‌دهندگان برنامه از این API مستقیماً استفاده کنند. برای افزودن انواع جدید قلم، AndroidFont را ببینید.

  • تابع افزونه Font.AndroidResourceLoader امکان ایجاد Font.ResourceLoader را در خارج از ترکیب فراهم می‌کند.

  • پارامتر loadingStrategy به قلم‌های منبع‌محور اضافه شد تا بارگیری ناهم‌زمان هنگام ارجاع قلم منبع به قلم‌های قابل‌بارگیری XML مجاز شود. (Ie5aea، b/174162090)

  • سازنده Typeface(FontFamily) منسوخ شده است. این ویژگی قبلاً برای پیش‌بار کردن قلم‌ها استفاده می‌شد که ممکن است برای قلم‌های قابل‌بارگیری تا ۱۰ ثانیه طول بکشد. با قلم‌های قابل‌بارگیری، این تماس ممکن است ۱۰ ثانیه مسدود شود. درعوض از FontFamilyResolver.preload استفاده کنید.

  • ‫fontResource(FontFamily): Typeface منسوخ شده است. این ویژگی قبلاً برای پیش‌بار کردن قلم‌ها استفاده می‌شد که ممکن است برای قلم‌های قابل‌بارگیری تا ۱۰ ثانیه طول بکشد. به‌جای آن از FontFamilyResolver.preload استفاده کنید (If8e7c، b/174162090)

  • سازنده SubcomposeLayoutState که maxSlotsToRetainForReuse را می‌پذیرد اکنون منسوخ شده است. درعوض، سازنده جدیدی وجود دارد که SubcomposeSlotReusePolicy را می‌پذیرد - میانای جدیدی که امکان کنترل دقیق‌تری را بر اینکه کدام جایگاه‌ها باید برای استفاده مجدد در آینده حفظ شوند فراهم می‌کند. (I52c4d)

  • تابع HSV و HSL را در Color به‌عنوان API غیرآزمایشی نمایان می‌کند. فضای رنگ 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 استفاده می‌کند
  • ‫Desktop FontLoader منسوخ شده است
  • کارخانه جدید createFontFamilyResolver در «رایانه» (I6bbbb، b/174162090)
  • وقتی فوکوس بین فیلدهای نوشتار تغییر می‌کند، نوع ورودی صفحه‌کلید نرم دیگر سوسو نمی‌زند. (I1bf50،‏ b/187746439)

نسخه 1.2.0-alpha02

‫۲۶ ژانویه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫Modifier.onRotaryScrollEvent() و Modifier.onPreRotaryScrollEvent() برای دستگاه‌های پوشیدنی دارای دکمه کناری چرخان اضافه شد (I18bf5، b/210748686)
  • افزودن افزونه View.createLifecycleAwareRecomposer آزمایشی (I0cde6)

همیاری خارجی

  • اکنون PointerEvent.scrollDelta.y در Android معکوس شده است (اکنون اگر چرخ موشواره را به راست کج کنیم، به‌جای ‎-۱ مقدار ۱ را برمی‌گرداند) (Ia9811)

نسخه 1.2.0-alpha01

‫۱۲ ژانویه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫FontFamily.canLoadSynchronously منسوخ شده است. این دارایی معنای ضمنی ندارد. (Ica5ef)
  • فیلد هویت به CompositionData برای تولید شناسه‌های تغییرناپذیر در «بازرس چیدمان» اضافه شد. (Ic116e)
  • شناسه‌های دستگاه Wear OS به فهرست «دستگاه‌های پیش‌نمایش» اضافه شد (I93232)

به‌روزرسانی‌های وابستگی

  • اکنون به Kotlin 1.6.10 بستگی دارد.

نسخه ۱.۱

نسخه ۱.۱.۱

۲۳ فوریه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.1.1 منتشر شد. نسخه ۱.۱.۱ حاوی این تعهدات است.

رفع اشکال‌ها

  • رفع اشکال NullPointerException در androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059،‏ b/206677462)
  • رفع خرابی ناشی از محتوای بریده‌دان هنگام خواندن از بریده‌دان در Android. (I06020, b/197769306)
  • رفع مشکل راست‌به‌چپ در LazyVerticalGrid (aosp/1931080،‏ b/207510535)

نسخه ۱.۱.۰

۹ فوریه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.1.0 منتشر شد. نسخه ۱.۱.۰ حاوی این تعهدات است.

تغییرات مهم از نسخه ۱.۰.۰

  • پشتیبانی پایدار از جلوه پیمایش اضافی در Android 12
  • بهبود اندازه هدف لمسی
    • توجه داشته باشید که درخصوص «نوشتن ۱.۰»، عناصر Material فضای چیدمان خود را گسترش خواهند داد تا با دستورالعمل‌های دسترس‌پذیری Material برای اندازه هدف لمسی مطابقت داشته باشند. برای مثال، هدف لمسی «دکمه» به حداقل اندازه ۴۸×۴۸ پیکسل مستقل از تراکم گسترش خواهد یافت، حتی اگر اندازه «دکمه» را کوچک‌تر تنظیم کنید. این کار باعث می‌شود Compose Material با رفتار یکسان «عناصر طراحی سه‌بعدی» هماهنگ شود و درصورت ترکیب کردن «نماها» و Compose، رفتار یکسانی ارائه دهد. این تغییر همچنین تضمین می‌کند که وقتی میانای کاربر خود را بااستفاده از عناصر Compose Material ایجاد می‌کنید، حداقل الزامات دسترسی‌پذیری هدف لمسی برآورده شود.
  • پشتیبانی پایدار از ریل پیمایش
  • تعدادی از میاناهای برنامه‌سازی کاربردی آزمایشی قبلی را به پایدار ارتقا می‌دهد
  • پشتیبانی از نسخه‌های جدیدتر Kotlin

نسخه 1.1.0-rc03

‫۲۶ ژانویه ۲۰۲۲

‫androidx.compose.ui:ui-*:1.1.0-rc03 منتشر شد. نسخه 1.1.0-rc03 حاوی این تعهدات است.

رفع اشکال‌ها

  • به‌روزرسانی‌شده برای پشتیبانی از Compose Material نسخه 1.1.0-rc03

نسخه 1.1.0-rc01

۱۵ دسامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 حاوی این تعهدات است.

رفع اشکال‌ها

  • اشکالی که باعث می‌شد کنش‌های پیمایش دسترس‌پذیری وجود نداشته باشد برطرف شد (I7cbfb)
  • اکنون SemanticsNodeInteraction.captureToImage() درصورتی‌که HardwareRenderer.isDrawingEnabled() false باشد نیز کار می‌کند، زیرا برای مدت تماس فعال می‌شود (Idf3d0)

نسخه 1.1.0-beta04

۱ دسامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-beta04 منتشر شد. نسخه 1.1.0-beta04 حاوی این تعهدات است.

ویژگی‌های جدید

  • به‌روزرسانی‌شده برای سازگاری با Kotlin 1.6.0

تغییرات میانای برنامه‌سازی کاربردی

  • پاک‌سازی قابلیت تهی بودن در androidx.core.view (I7078a، b/204917439)
  • «میاناهای برنامه‌سازی کاربردی» آزمایشی اضافه شده است که به کاربران امکان می‌دهد PointerInputchange را به‌طور کامل مصرف کنند یا بررسی کنند که مصرف شده است یا نه. (I2e59d)
  • از رویدادهای چرخ پیمایش موشواره در لایه واسط کاربر پشتیبانی می‌کند. (Ia14eb, b/198214718)
  • افزودن سربارهای آزمایشی Modifier.composed که کلیدهایی را برای مقایسه برابری و واجدشرایط شدن برای رد کردن بهینه‌سازی‌ها می‌پذیرند. (Ice799، b/205851704)
  • ‫ComposeNotIdleException اکنون از Exception شروع می‌شود نه مستقیماً از Throwable. توجه داشته باشید که این یعنی بندهای catch که Exception را می‌گرفتند ممکن است اکنون ComposeNotIdleException را بگیرند، درحالی‌که قبلاً این کار را نمی‌کردند. (I9c217)

رفع اشکال‌ها

  • رفع مشکل حرکت نکردن دستگیره‌های نوشتار هنگام تغییر رؤیت‌پذیری IME. (I25f2e)

نسخه 1.1.0-beta03

۱۷ نوامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-beta03 منتشر شد. نسخه 1.1.0-beta03 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • توصیف‌گر جدید Modifier.onPlaced اضافه شد تا امکان مشاهده تغییر جای آگهی فراهم شود. بنابراین، براساس تغییر جایگاه مشاهده‌شده، می‌توان تغییرات بیشتری در انحراف اصلاح‌کننده کودک ایجاد کرد. (I558fd)
  • ‫InjectionScope.flush() و InjectionScope.dispose() برداشته شد. اکنون پاک‌سازی همه رویدادها و دور انداختن محدوده در پایان روش perform*Input()‎ فراخوانده‌شده مانند قبل انجام می‌شود. (I2bed8)
  • ‫MultiModalInjectionScope.Touch و MultiModalInjectionScope.Mouse برداشته شد. برای تزریق رویدادهای لمس و موشواره برای اشاره‌های چندوجهی، اکنون می‌توانید از MultiModalInjectionScope.touch() و MultiModalInjectionScope.mouse() استفاده کنید، که هر دو لامبدایی را می‌پذیرند که دامنه گیرنده آن وجه را دارد. (Idde18)

رفع اشکال‌ها

  • اکنون مقدار پیش‌فرض برای durationMillis در TouchInjectionScope.swipeWithVelocity به‌گونه‌ای محاسبه می‌شود که کشیدن امکان‌پذیر باشد. (I19deb)

نسخه 1.1.0-beta02

۳ نوامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • «میانای برنامه‌سازی کاربردی BringIntoView» آزمایشی اضافه شد که به شما امکان می‌دهد درخواستی به والدین ارسال کنید تا آن‌ها پیمایش کنند و محصول را به نمای دید بیاورند (Ib918d، b/195353459)
  • «میاناهای برنامه‌سازی کاربردی» جدید پویانمایی برای پشتیبانی از ابزارها. به‌طور خاص، این‌ها به ابزارها اجازه می‌دهند پویانمایی‌ها و پیکربندی‌های آن‌ها را در «گذرها» بازرسی کنند. (I4116e)

همیاری خارجی

  • «اصلاح‌گر» اضافه شد.pointerHoverIcon (I95f01)

نسخه 1.1.0-beta01

‫۲۷ اکتبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • میانای برنامه‌سازی کاربردی آزمایشی BringIntoView اضافه شد که به شما امکان می‌دهد درخواستی به والدین ارسال کنید تا آن‌ها پیمایش کنند و محصول را به دید بیاورند (Ib918d، b/195353459)
  • «میاناهای برنامه‌سازی کاربردی» جدید پویانمایی برای پشتیبانی از ابزارها. به‌طور خاص، این‌ها به ابزارها اجازه می‌دهند پویانمایی‌ها و پیکربندی‌های آن‌ها را در «گذرها» بازرسی کنند. (I4116e)

نسخه 1.1.0-alpha06

‫۱۳ اکتبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • برداشتن ExperimentalComposeUiApi از ViewRootForInspector و LayoutInfo.ownerViewId (I5c2e3)
  • یک سربار بدون فرزند برای «چیدمان» اضافه شد که کارایی را بهبود می‌بخشد (Ib0d9a)
  • ‫InternalCompilerApi از روش‌های «آهنگ‌ساز» که باید بین واحدها فراخوانی شوند برداشته شد (I1aa0b)
  • ‫SemanticsNodeInteraction.performSemanticsAction اکنون SemanticsNodeInteraction را که تابع در آن فراخوانده شده است برمی‌گرداند. (I9e5db)
  • ‫LocalInputModeManager‏ CompositionLocal برای تشخیص TouchMode/NonTouchMode اضافه شد. (I6a83c، b/175899786)
  • ‫viewConfiguration: ViewConfiguration به LayoutInfo اضافه شد تا به مصرف‌کنندگان اجازه دهد مقدار صحیح را برای مواردی مثل مهلت زمانی فشار طولانی دریافت کنند. (I76ca6)
    • ‫viewConfiguration: ViewConfiguration به InjectionScope اضافه شد تا آزمون‌ها بتوانند تزریق ورودی را براساس مواردی مثل مهلت فشار طولانی یا شیب لمس تنظیم کنند.
    • مدت زمان پیش‌فرض فشار طولانی و دوتک‌ضرب برای ورودی لمسی و موشواره تغییر کرد تا براساس مقادیر در InjectionScope.viewConfiguration باشد.
  • پیاده‌سازی ExposedDropdownMenu براساس ExposedDropdownMenuBox با TextField و DropdownMenu در داخل (If60b2)
  • ‫dismissOnOutsideClick به PopupProperties اضافه شد و جایگزین dismissOnClickOutside شد که منسوخ شده بود. دارایی جدید موقعیت کلیک و محدوده‌های لنگر را دریافت می‌کند و کنترل دقیق‌تری بر اینکه آیا onDismissRequest باید فراخوانی شود یا نه ارائه می‌دهد. برای مثال، این کار می‌تواند برای جلوگیری از بسته شدن لنگر درصورت لمس لنگر مفید باشد.
    • ‫updateAndroidWindowManagerFlags به PopupProperties اضافه شد و کنترل سطح پایینی را بر پرچم‌های منتقل‌شده توسط بالاپر به Android WindowManager ارائه می‌دهد. پارامتر لامبدا پرچم‌هایی خواهد بود که از مقادیر PopupProperties محاسبه شده و منجر به پرچم‌های WindowManager می‌شود: مثلاً قابل تمرکز. نتیجه لامبدا پرچم‌های نهایی خواهد بود که به Android WindowManager منتقل می‌شود. به‌طور پیش‌فرض، updateAndroidWindowManagerFlags پرچم‌های محاسبه‌شده از پارامترها را بدون تغییر باقی می‌گذارد. این API باید با احتیاط و فقط در مواردی استفاده شود که بالاپَر دارای الزامات رفتاری بسیار خاصی باشد. (I6e9f9)
  • ‫Recomposer.state منسوخ شده است و با Recomposer.currentState جایگزین شده است تا نوع آن را به StateFlow تغییر دهد (Ic2ab3، b/197773820)
  • ‫flush() و dispose() را به InjectionScope اضافه کرد. از آن‌ها وقتی می‌خواهید همه رویدادهای در صف را بلافاصله خالی کنید و وقتی می‌خواهید از محدوده خلاص شوید، استفاده کنید. (Ifb73a)
  • ‫performScrollToNode(matcher: SemanticsMatcher) اضافه شد که ظرف پیمایش‌شدنی را به محتوایی که با تطبیق‌دهنده داده‌شده مطابقت دارد پیمایش می‌کند. (Ic1cb8)
  • ‫InjectionScope اکنون Density را پیاده‌سازی می‌کند و به شما امکان می‌دهد به‌راحتی بین پیکسل و پیکسل چگال در performTouchInput و موارد مشابه تبدیل کنید. (I8fe1f)

رفع اشکال‌ها

  • ‫AndroidView اکنون LocalLifecycleOwner و LocalSavedStateRegistryOwner را ازطریق ViewTreeLifecycleOwner و ViewTreeSavedStateRegistryOwner به نمای خود منتشر می‌کند. (I38f96، b/179708470)
  • رفع مشکل WearOS SwipeToDismissBox که گاهی اوقات تند کشیدن‌ها را مدیریت نمی‌کرد. (I9387e)
  • زمان پیش‌فرض بین رویدادهای ورودی تزریق‌شده از ۱۰ میلی‌ثانیه به ۱۶ میلی‌ثانیه تغییر کرده است. این کار احتمالاً نتیجه آزمایش‌هایی را که از اشاره‌های ورودی استفاده می‌کنند، مثل تند کشیدن خاص، تغییر می‌دهد. (I829fd)

نسخه 1.1.0-alpha05

۲۹ سپتامبر ۲۰۲۱

‫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 ارسال کنید. برای مستندات API دردسترس، MouseInjectionScope را ببینید. (Iaa4a8, b/190493367)

رفع اشکال‌ها

  • پشتیبانی از دسترس‌پذیری برای پیمایش‌پذیرها (هم تنبل و هم غیرتنبل) درخصوص پیمایش (I6cdb0) اصلاح شد
  • ‫TouchInjectionScope.swipeWithVelocity بهبود یافت. اکنون طیف وسیع‌تری از متغیرهای ورودی را می‌پذیرد و اگر کشیدن نتواند ایجاد شود، تغییراتی را برای ورودی پیشنهاد می‌دهد (I40fbe، b/182477143)

نسخه 1.1.0-alpha04

۱۵ سپتامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-alpha04 منتشر شد. نسخه 1.1.0-alpha04 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫PointerEvent اکنون PointerEventType برای پشتیبانی از رویدادهای نگه داشتن دارد. (I091fa)
  • به کودکان اجازه می‌دهد ورودی اشاره‌گر را خارج از محدوده ورودی اشاره‌گر ولی بپذیرند. والدین می‌توانند این تماس‌ها را با ویژگی PointerInputScope.alwaysInterceptChildEvents (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

۱ سپتامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 حاوی این تعهدات است.

ویژگی‌های جدید

  • ‫Compose 1.1.0-alpha03 به‌روزرسانی شد تا به Kotlin 1.5.30 وابسته باشد. (I74545)

تغییرات میانای برنامه‌سازی کاربردی

  • ‫Modifier.inspectable برای پیچیدن اصلاح‌کننده‌های دیگر اضافه شد. (I1909b،‏ b/191017532)
  • ‫BlurredEdgeTreatment API اضافه شد تا موارد استفاده از محو کردن را به ترکیب‌های متداول‌تر پرچم‌های کلیپ و TileModes ساده کند. بیشتر موارد استفاده شامل یا اجازه دادن به محتوای محو شده برای رندر شدن خارج از محدوده محتوای اصلی و محو کردن مناطق خارج از این محدوده با رنگ سیاه شفاف، یا برش محتوا به محدوده محتوا با نمونه‌برداری از نزدیک‌ترین لبه برای هسته‌های محوی که فراتر از محدوده محتوا امتداد می‌یابند. (I6b4b7، b/166927547)
  • پشتیبانی از RenderEffect در ترکیب رایانه اضافه شد. ‫OffsetEffect و همچنین اصلاح‌گر محو به‌عنوان روشی ساده برای معرفی جلوه‌های دیداری محو به بخشی از سلسله‌مراتب ترکیب معرفی شد. (I0f6aa، b/166927547)
  • «میانای برنامه‌سازی کاربردی RenderEffect» معرفی شد که می‌تواند به‌صورت اختیاری در Modifier.graphicsLayer پیکربندی شود تا محتوای خود لایه را تغییر دهد. از این اصلاح‌گر می‌توان برای محو کردن محتوای عناصر ترکیبی و عناصر ترکیبی فرزند در سلسله‌مراتب ترکیب استفاده کرد. (I47c4d، b/166927547)
  • ‫AwaitPointerEventScope اکنون withTimeout() و withTimeoutOrNull() دارد (I507f0، b/179239764، b/182397793)
  • حداقل اندازه هدف لمسی به ViewConfiguration برای استفاده در معناشناسی و ورودی اشاره‌گر اضافه شد تا دسترسی‌پذیری تضمین شود. (Ie861c)
  • پشتیبانی TileMode.Decal را اضافه کنید که در تعریف رفتار لبه برای RenderEffects مبتنی بر محو کردن مفید است. (I7e8ed، b/166927547)
  • ‫performScrollToIndex،‏ performScrollToKey، hasScrollToIndexAction، و hasScrollToKeyAction اکنون میانای برنامه‌سازی کاربردی پایدار هستند (I142ae، b/178483889)
  • روش آزمایشی برای دریافت محدوده‌های کلیپ‌شده اضافه شد. (I6b28e)

رفع اشکال‌ها

  • روش isBounded از BlurredEdgeTreatment برداشته شد و به‌جای آن به‌طور صریح بررسی می‌شود که آیا پارامتر شکل تهی است یا نه. (I85d68)

نسخه 1.1.0-alpha02

۱۸ اوت ۲۰۲۱

‫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 «گرافیک بُرداری» به‌روز شد تا از «فهرست‌های وضعیت رنگ» به‌عنوان ویژگی‌های سایه‌رنگ ریشه در «ترسیم‌های بُرداری» پشتیبانی کند. (I86915، b/195668138)

نسخه 1.1.0-alpha01

۴ اوت ۲۰۲۱

‫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» معرفی شد تا از طراحی «قلم‌مو» دلخواه در «نقاش» پشتیبانی کند، مشابه «نقاش رنگ»

    «میانای برنامه‌سازی کاربردی قلم‌مو» به‌روزرسانی شد تا پارامتر اندازه ذاتی داشته باشد که در «قلم‌موی نقاش» پُرسمان می‌شود (Ia2752، b/189466433)

  • روش DrawScope#drawImage را به‌روزرسانی کرد که مستطیل‌های منبع و مقصد را مصرف می‌کند تا پارامتر اختیاری FilterQuality را مصرف کند. این گزینه برای هنر پیکسلی که قرار است هنگام بزرگ شدن برای هنر مبتنی بر پیکسل پیکسل‌دار شود مفید است. ‫BitmapPainter + Image composable به‌روزرسانی شد تا پارامتر اختیاری FilterQuality را نیز مصرف کند (Ie4fb0، b/180311607)

  • روش GestureScope.advanceEventTime اضافه شد تا کنترل بیشتری بر زمان‌بندی رویدادها در اشاره داشته باشید (Ibf3e2)

رفع اشکال‌ها

  • برای پشتیبانی بهتر از زنجیر کردن اصلاح‌کننده‌های طراحی، مطمئن شوید پیاده‌سازی Modifier.paint اصلاح‌کننده‌های طراحی، drawsContent را فرا می‌خواند. قبلاً انتظار می‌رفت که Modifier.paint یک گره برگ در زنجیره «اصلاح‌کننده‌ها» باشد، اما با انجام این کار، از پیکربندی آن در یک محفظه ترکیب‌پذیر (مثلاً جعبه) یا افزودن تزئینات اضافی در بالا مانند Modifier.paint().border() جلوگیری می‌شود. با فراخوانی Modifier.paint call drawContent پس‌از رسم محتوای نقاش داده‌شده، در رفتار با الگوی اصلاح‌گر، ثبات رفتاری بهتری داریم. (Ibb2a7, b/178201337, b/186213275)
  • اکنون اندازه کادرهای گفتگو از رفتار اندازه پلاتفرم پیروی می‌کند. برای ملغی کردن این رفتار، usePlatformDefaultWidth را روی false تنظیم کنید. (Iffaed, b/192682388)
  • ‫InfiniteAnimationPolicy به :compose:ui (I5eb09،‏ b/160602714) منتقل شد
  • پیمایش ازطریق کنش‌های معنایی برای فهرست‌های تنبل و عناصر پیمایش معمولی اکنون پویانمایی می‌شود (Id9066، b/190742024)

نسخه 1.0

نسخه ۱.۰.۵

۳ نوامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.5 منتشر شد. نسخه ۱.۰.۵ حاوی این تعهدات است.

رفع اشکال‌ها

  • ازکارافتادگی ردیابی نمونه‌های derivedStateOf برطرف شد. (aosp/1792247)

نسخه ۱.۰.۴

‫۱۳ اکتبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.4 منتشر شد. نسخه 1.0.4 شامل این تعهدات است.

به‌روزرسانی‌های وابستگی

  • به‌روزرسانی شد تا به Kotlin 1.5.31 وابسته باشد

نسخه ۱.۰.۳

۲۹ سپتامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.3 منتشر شد. نسخه 1.0.3 شامل این تعهدات است.

به‌روزرسانی‌های وابستگی

  • به‌روزرسانی شد تا به Kotlin 1.5.30 وابسته باشد

نسخه ۱.۰.۲

۱ سپتامبر ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.2 منتشر شد. نسخه 1.0.2 حاوی این تعهدات است.

برای پشتیبانی از نسخه 1.0.2 «نوشتن» به‌روز شد. ‫Compose 1.0.2 همچنان با Kotlin 1.5.21 سازگار است.

نسخه ۱.۰.۱

۴ اوت ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.1 منتشر شد. نسخه 1.0.1 شامل این تعهدات است.

به‌روزرسانی‌های وابستگی

  • به‌روزرسانی شد تا به Kotlin 1.5.21 وابسته باشد.

نسخه ۱.۰.۰

۲۸ ژوئیه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0 منتشر شد. نسخه ۱.۰.۰ حاوی این تعهدات است.

ویژگی‌های اصلی نسخه 1.0.0

این اولین نسخه پایدار «نگارش» است. برای جزئیات بیشتر، لطفاً وبلاگ رسمی «نسخه آماده‌سازی» را ببینید!

مشکلات شناخته‌شده

  • اگر از 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 را در فایل build.gradle به ۲۴ یا بالاتر افزایش دهید. این مشکل در نسخه بعدی Android Studio Bumblebee و AGP 7.1 برطرف خواهد شد. (b/194289155)

نسخه 1.0.0-rc02

‫۱۴ ژوئیه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-rc02 منتشر شد. نسخه 1.0.0-rc02 حاوی این تعهدها است.

رفع اشکال‌ها

  • اکنون اندازه کادرهای گفتگو از رفتار اندازه پلاتفرم پیروی می‌کند. برای ملغی کردن این رفتار، usePlatformDefaultWidth را روی false تنظیم کنید. (Iffaed, b/192682388)

نسخه 1.0.0-rc01

۱ ژوئیه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 حاوی این تعهدات است.

ویژگی‌های جدید

  • واحد ui-tooling را به ui-tooling و ui-tooling-preview تقسیم کنید (Iefa28،‏ b/190649014)

تغییرات میانای برنامه‌سازی کاربردی

  • ‫FocusManager#moveFocusIn و FocusManager#moveFocusOut آزمایشی منسوخ‌شده برداشته شد (I227d7،‏ b/170154986،‏ b/186567354،‏ b/168510304)
  • اکنون «بوم» از پارامتر contentDescription برای دسترس‌پذیری پشتیبانی می‌کند. (Ib547c)
  • نام useDefaultMaxWidth در PopupProperties به usePlatformDefaultWidth تغییر کرد. (I05710)
  • اکنون کادرهای گفتگو می‌توانند از کل پهنای صفحه استفاده کنند. (I83929،‏ b/190810877)
  • پشتیبانی آزمایشی برای نمایش رنگ HSV و HSL اضافه شد. (Id7cf8،‏ b/180731008)

تغییرات رفتار

  • ‫Compose @Preview اکنون LocalActivityResultRegistryOwner را ارائه می‌دهد که به شما امکان می‌دهد «ترکیب‌پذیرهایی» را که از APIهایی مثل rememberLauncherForActivityResult() استفاده می‌کنند و به وجود آن مالک بستگی دارند پیش‌نمایش کنید. (Ib13d1، b/185693006)
  • ‫Compose @Preview اکنون LocalOnBackPressedDispatcherOwner را ارائه می‌دهد که به شما امکان می‌دهد «ترکیب‌شونده‌هایی» را که از میاناهای برنامه‌سازی کاربردی مانند BackHandler استفاده می‌کنند و به وجود آن مالک وابسته هستند پیش‌نمایش کنید. (Ia1c05،‏ b/185693006)

رفع اشکال‌ها

  • ‫InfiniteAnimationPolicy به androidx.compose.ui:ui منتقل شد (I5eb09،‏ b/160602714)
  • ‫AnimatedImageVector به‌طور موقت برداشته شد تا ساختار واحد تغییر کند. (I41906, b/160602714)

نسخه 1.0.0-beta09

‫۱۶ ژوئن ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta09 منتشر شد. نسخه 1.0.0-beta09 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • تغییر دادن enum «نقش» و «حالت ناحیه زنده» به کلاس‌های درون‌خطی با سازنده خصوصی (Id1890)
  • ‫KeyboardCapitalization به کلاس درون‌خطی تبدیل می‌شود. (Id5a1c)
  • ‫HapticFeedbackType را به کلاس درون‌خطی تغییر دهید. (I255ec)
  • ‫Modifier.pointerInteropFilter در ‎ @ExperimentalComposeUiApi است. (Iede6c)
  • ‫TextAlign،‏ FontSynthesis، و TextDirection اکنون کلاس‌های درون‌خطی هستند. (I212fe)
  • ‫TextOverflow به کلاس به‌خط تغییر می‌کند. (I433af)
  • ‫FontStyle اکنون یک کلاس درون‌خطی است. (I9e48b)

رفع اشکال‌ها

  • ثابت‌های کلیدی درحال‌حاضر @ExperimentalComposeUiApi است. کد مصرف‌کننده می‌تواند ثابت‌های خصوصی را قبل‌از پایدارسازی اعلام کند. (Ia5d48)
  • اکنون می‌توان آزمایش‌های Compose را در Robolectric اجرا کرد. محدودیت‌های زیر تاکنون شناسایی شده است:
    • هیچ بیت‌مپ بومی وجود ندارد، بنابراین ImageBitmap() به NullPointerException منتهی می‌شود.
    • هیچ طراحی‌ای وجود ندارد، بنابراین captureToImage() تا گذر طراحی بعدی به‌طور نامحدود منتظر می‌ماند (یعنی بن‌بست ایجاد می‌شود).
    • هیچ قلمی بار نشده است، بنابراین هر نوشتاری به‌اشتباه اندازه‌گیری خواهد شد. همه نویسه‌ها ارتفاع ثابت حدود ۲۰ پیکسل و عرض ۱ پیکسل دارند.
    • ‫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> توصیف‌گر کلاسی است که روش هدف‌گذاری‌شده به آن تعلق دارد. برای مثال، کلاس androidx.compose.runtime.SlotTable توصیف‌گر Landroidx/compose/runtime/SlotTable; را خواهد داشت.

  • ‫<METHOD_SIGNATURE> امضای روش است و شامل نام، انواع پارامتر، و انواع برگشتی روش می‌شود. برای مثال، روش fun isPlaced(): Boolean در LayoutNode امضای isPlaced()Z را دارد.

  • این الگوها می‌توانند دارای نویسه‌های عام (**،‏ *،‏ و ?) باشند تا یک قانون واحد چندین روش یا کلاس را دربر بگیرد.

قوانین چه کاری انجام می‌دهند؟

  • روشی که پرچم H را دارد نشان می‌دهد که این روش یک روش «داغ» است و باید ازقبل کامپایل شود.

  • روشی که پرچم S را دارد نشان می‌دهد که این روش در زمان راه‌اندازی فراخوانده می‌شود و باید ازقبل کامپایل شود تا از هزینه کامپایل و تفسیر روش در زمان راه‌اندازی جلوگیری شود.

  • روشی که پرچم P را دارد نشان می‌دهد که این روشی است که پس‌از راه‌اندازی فراخوانده می‌شود.

  • کلاسی که در این فایل وجود دارد نشان می‌دهد که درطول راه‌اندازی استفاده می‌شود و باید در پشته ازپیش تخصیص داده شود تا از هزینه بار کردن کلاس جلوگیری شود.

این چگونه کار می‌کند؟

  • کتابخانه‌ها می‌توانند این قوانین را تعریف کنند که در آرتیفکت‌های AAR بسته‌بندی می‌شوند. وقتی برنامه‌ای ساخته می‌شود که شامل این آرتیفکت‌ها است، این قوانین با هم ادغام می‌شوند و از قوانین ادغام‌شده برای ساختن نمایه باینری فشرده ART که مختص برنامه است استفاده می‌شود. سپس ART می‌تواند هنگام نصب برنامه در دستگاه‌ها از این نمایه استفاده کند تا زیرمجموعه خاصی از برنامه را ازپیش کامپایل کند و عملکرد برنامه، به‌ویژه اولین اجرا، را بهبود دهد. توجه داشته باشید که این کار هیچ تأثیری بر برنامه‌های اشکال‌زدایی‌شدنی نخواهد داشت.

نسخه 1.0.0-beta08

۲ ژوئن ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta08 منتشر شد. نسخه 1.0.0-beta08 حاوی این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫enum NestedScrollSource با کلاس به‌خط جایگزین می‌شود. (Ie321b،‏ b/187055290)
  • نام FocusManager.clearFocus(forcedClear = true) به FocusManager.clearFocus(force = true) تغییر کرد (Ia0c41)
  • استفاده‌های شمارشی را به کلاس‌های درون‌خطی تغییر دادیم تا از مشکلات مربوط به دستورات جامع when هنگام اضافه شدن مقادیر شمارشی جدید جلوگیری کنیم. (I2b5eb)
  • @ExperimentalComposeUiApi از PopupProperties حذف می‌شود. (I01fa6)
  • ‫PointerType از شمارشی به کلاس درون‌خطی تغییر کرد (If5058)
  • خواص معنایی «شرح محتوا» و «نوشتار» دیگر مقادیر واحد نیستند بلکه فهرست هستند. این کار باعث می‌شود آن‌ها به‌جای اینکه به‌هم متصل شوند، به‌هم ادغام شوند. همچنین میاناهای برنامه‌سازی کاربردی آزمایش بهتری برای استفاده از این تغییرات ارائه شده است (Ica6bf، b/184825850)
  • ‫Modifier.focusModifier() منسوخ شده است و با Modifier.focusTarget() (I6c860) جایگزین شده است
  • ‫Modifier.onSizeChanged() و Modifier.onGloballyPositioned() دیگر تابع درون‌خطی نیستند (I727f6،‏ b/186109675)
  • ‫enum KeyboardType با کلاس به‌خط جایگزین می‌شود. (I73045، b/187055290)
  • ‫FocusState enum با رابط FocusState جایگزین شد (Iccc1a،‏ b/187055290)
  • عدد ثابت ImeAction با کلاس به‌خط جایگزین می‌شود. (I18be5،‏ b/187055290)
  • ‫PlaceholderVerticalAlign به کلاس به‌خط تبدیل می‌شود. (If6290)
  • ‫TextUnitType اکنون یک کلاس درون‌خطی است. (I4cba9)
  • ‫AnnotatedString.withAnnotation تابع اکنون به‌جای ExperimentalComposeApi،‏ ExperimentalTextApi است. (I0cd0a)
    • سازنده TextUnit با TextUnitType اکنون به‌جای ExperimentalComposeApi،‏ ExperimentalTextApi است.

رفع اشکال‌ها

  • اشکالی که در نسخه بتا ۰۷ معرفی شده بود و باعث می‌شد عناصر LazyColumn/Row پس‌از پیمایش به‌صورت ناقص نمایش داده شوند رفع شد (I8c9ac، b/188566058)
  • اکنون detectDragGesures، detectVerticalGestures، و detectHorizontalGestures تغییر موقعیت را به‌طور خودکار مصرف می‌کنند و نیازی به فراخوانی change.consumePositionChange در برگشتی‌های onDrag نیست (I42fc4، b/185096350، b/187320697)
  • «تغییردهنده‌های چیدمان» که خطوط تراز ارائه می‌دادند اصلاح شد. اشکالی که باعث می‌شد وقتی خطوط تراز فرزندان تغییر می‌کردند، والدین دوباره اندازه‌گیری نشوند، برطرف شد. (I4401f،‏ b/174315652)
  • ‫Modifier.onGloballyPositioned() تغییر کرد تا مختصات این اصلاح‌کننده را در زنجیره اصلاح‌کننده گزارش کند، نه مختصات چیدمان را پس‌از اعمال همه اصلاح‌کننده‌ها. این یعنی اکنون ترتیب اصلاح‌کننده‌ها بر مختصاتی که گزارش می‌شود تأثیر می‌گذارد. (Ieb67d،‏ b/177926591)

نسخه 1.0.0-beta07

۱۸ مه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta07 منتشر شد. نسخه 1.0.0-beta07 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • واسط ViewRootForInspector برای استفاده در بازرس اضافه شد (Ib70df)
  • ‫SubcomposeLayoutState اکنون از تنظیم تعداد جایگاه‌های قابل‌استفاده مجدد پشتیبانی می‌کند. چیدمان تا این تعداد جایگاه را فعال نگه می‌دارد و آن‌ها را حذف نمی‌کند تا دفعه بعد که به جایگاه جدیدی نیاز داشتیم بتوانیم از جایگاه‌های قبلی استفاده کنیم (Ieb981)
  • enum‏ KeyEventType با کلاس به‌خط جایگزین می‌شود. (Id670a، b/187055290)
  • ‫enum FocusDirection با کلاس به‌خط جایگزین می‌شود. (Ib6d03, b/187055290, b/184086802)
  • قابلیت برافراشتن وضعیت SubcomposeLayout را معرفی می‌کند که به شما امکان می‌دهد محتوا را در یک slotId موردنیاز ازپیش ترکیب کنید که باعث می‌شود مرحله اندازه‌گیری بعدی سریع‌تر شود زیرا وقتی دفعه بعد سعی می‌کنیم با slotId داده‌شده ترکیب فرعی کنیم، دیگر نیازی به ترکیب کردن نیست. (I42580، b/184940225)
  • دستگیره انتخاب کلیپ اضافه شد (Iff80d، b/183408447)
  • میاناهای برنامه‌سازی کاربردی استفاده‌نشده مربوط به پشتیبانی LayoutInspector برداشته شد. (I2ac78)

رفع اشکال‌ها

  • ‫LazyColumn/Row اکنون حداکثر ۲ مورد قبلاً نمایان را حتی وقتی که قبلاً پیمایش شده‌اند فعال (دور ریخته نشده) نگه می‌دارد. این کار به عنصر امکان می‌دهد وقتی نیاز به ساختن عنصر جدیدی داریم از ترکیب‌های فرعی فعال دوباره استفاده کند که باعث بهبود عملکرد پیمایش می‌شود. (Ie5555)
  • ‫TextGeomerticTransform و TextDecoration در AnnotatedString همان‌طور که ارائه شده است اعمال خواهد شد. (I61900، b/184760917)

نسخه 1.0.0-beta06

۵ مه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta06 منتشر شد. نسخه 1.0.0-beta06 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • حل تعارض با اشاره پیمایش (I1145e)
  • ‫@ComposeCompilerApi دیگر @RequiresOptIn نیست (Iab690)
  • میاناهای برنامه‌سازی کاربردی دسترس‌پذیری CollectionInfo و CollectionItemInfo اضافه شد که امکان علامت‌گذاری مجموعه و موارد آن را برای خدمات دسترس‌پذیری فراهم می‌کند (Id54ef،‏ b/180479017)
  • ‫SemanticsActions.ScrollToIndex برای پیمایش فهرست با موارد نمایه‌گذاری‌شده به مورد با نمایه‌ای خاص، و SemanticsProperties.IndexForKey برای دریافت نمایه‌ای از مورد در فهرست با موارد کلیددار اضافه شد. هر دو کنش توسط LazyList پیاده‌سازی می‌شوند.
    • ‫SemanticsNodeInteraction.performScrollToIndex اضافه شد که فهرستی را به نمایه داده‌شده پیمایش می‌کند، و SemanticsNodeInteraction.performScrollToKey که فهرستی را به مورد با کلید داده‌شده پیمایش می‌کند. (I4fe63، b/178483889، b/161584524)
  • ‫ownerViewId به GraphicLayerInfo اضافه شد (I19f62)
  • سربارهای Font() برای بار کردن قلم‌ها از دارایی‌ها، «فایل»، و «شرح‌گر فایل» اضافه شد (I5d382)
  • «میانای برنامه‌سازی کاربردی» دسترس‌پذیری error اضافه شد که امکان علامت‌گذاری گره حاوی ورودی نامعتبر را فراهم می‌کند (I12997، b/180584804، b/182142737)
  • ‫Font() سربار برای بار کردن قلم‌ها از دارایی‌ها، «فایل»، و «شرح‌گر فایل» اضافه شد (I43007)
  • ‫AnnotatedString از ذخیره کردن در TextFieldValue.Saver پشتیبانی می‌کند. ‫addTtsAnnotation و توابع کمکی withAnnotation به AnnotatedString.Builder اضافه شد (I8cbdc، b/178446304)
  • تابع سازنده TextUnit اضافه شد TextUnit(value: Float, type: TextUnitType) (I7ecce،‏ b/178446304)

نسخه 1.0.0-beta05

۲۱ آوریل ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta05 منتشر شد. نسخه 1.0.0-beta05 حاوی این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫FocusManager.moveFocus(In) و FocusManager.moveFocus(Out) آزمایشی اضافه شد (Ic5534،‏ b/183746743)
  • ‫performTextInputSelection API آزمایشی (I2dcbb،‏ b/178510628) اضافه شد
  • میانای InputEventCallback منسوخ شده است. استفاده از این میانای کاربری در هیچ میانای برنامه‌سازی کاربردی عمومی امکان‌پذیر نبود؛ و در کد از آن استفاده نشده بود. (I34a02, b/184003208)
  • تابع TextLayoutResult/createTextLayoutResult منسوخ شده است. این تابع عمومی استفاده‌نشده‌ای است که برای آزمایش اضافه شده است. این تابع هیچ کاربری‌ای برای میاناهای برنامه‌سازی کاربردی «نوشتن نوشتار» ندارد. این تابع اکنون منسوخ شده است و بعداً برداشته خواهد شد. (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

۷ آوریل ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta04 منتشر شد. نسخه 1.0.0-beta04 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نام hideSoftwareKeyboard و showSoftwareKeyboard در SoftwareKeyboardController را به‌ترتیب به hide() و show() تغییر دهید.
    • ارائه میانای کامل CompositionLocal برای 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 ViewBinding به Fragment 1.3.2 وابسته است و اکنون به‌طور پیوسته قطعه‌هایی را که ازطریق FragmentContainerView پس‌از تغییرات پیکربندی باد شده‌اند نشان می‌دهد. (I0743d،‏ b/179915946)

نسخه 1.0.0-beta03

۲۴ مارس ۲۰۲۱

‫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

۱۰ مارس ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta02 منتشر شد. نسخه 1.0.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫API محلی ترکیب LocalSoftwareKeyboardController جدیدی برای جایگزینی واسط SoftwareKeyboardController قبلی در TextField اضافه شد. (I5951e، b/168778053)
  • ترکیب جدید LocalSoftwareKeyboardController محلی API برای جایگزینی رابط قبلی «کنترل‌کننده صفحه‌کلید نرم‌افزاری» در 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 زیر را به‌عنوان @ExperimentalTestApi علامت‌گذاری کرد:
    • 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+ / Fragment نسخه 1.3+ استفاده می‌کنید - این نسخه‌ها برای تنظیم صحیح مالکان چرخه حیات و وضعیت ذخیره‌شده موردنیاز برای ComposeView لازم است. (I1d6fa،‏ b/161814404)
  • رفع مشکل rememberSaveable { mutableStateOf(0) } خراب هنگام استفاده در مقصد پیمایش-نوشتن. (I1312b،‏ b/180042685،‏ b/180701630)
  • ترکیب جدید LocalSoftwareKeyboardController محلی API برای جایگزینی رابط قبلی «کنترل‌کننده صفحه‌کلید نرم‌افزاری» در TextField اضافه شد. (I658b6، b/168778053)
  • رفع خطای نادر NoSuchElementException در ComposeRootRegistry tearDownRegistry() (Iddce1)

نسخه 1.0.0-beta01

۲۴ فوریه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 شامل این تعهدات است.

این اولین نسخهٔ پخش Compose 1.0.0 Beta است.

تغییرات میانای برنامه‌سازی کاربردی

  • onStart برگشت تماس به detectDragGestures (I67269، b/179995594) اضافه شد
  • اصلاح‌کننده‌های اندازه‌گیری براساس ویژگی‌های ذاتی دیگر آزمایشی نیستند. (I15744)
  • نام MeasureBlocks به MeasurePolicy تغییر کرد که به یک رابط کاربری سرگرم‌کننده تبدیل شد. «میاناهای برنامه‌سازی کاربردی چیدمان» به‌روزرسانی / ساده‌سازی شد تا از MeasurePolicy استفاده کند. (Icab48، b/167662468، b/156751158)
  • ‫InteractionState با [Mutable]InteractionSource جایگزین شد
    • واسط‌ها مسئول انتشار / جمع‌آوری رویدادهای «تعامل» هستند.
    • به‌جای انتقال interactionState = remember { InteractionState() } به عناصری مثل Button و Modifier.clickable()، از interactionSource = remember { MutableInteractionSource() } استفاده کنید.
    • به‌جای: Interaction.Pressed in interactionState باید از توابع افزونه در InteractionSource استفاده کنید، مثلاً InteractionSource.collectIsPressedAsState().
    • برای موارد استفاده پیچیده می‌توانید از InteractionSource.interactions برای مشاهده جاری‌سازی «تعامل‌ها» استفاده کنید. برای اطلاعات بیشتر، به اسناد و نمونه‌های InteractionSource مراجعه کنید.
    • (I85965،‏ b/152525426،‏ b/171913923،‏ b/171710801،‏ b/174852378)
  • افزودن میانای AccessibilityMananger و LocalAccessibilityMananger در CompositionLocals (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)
  • ‫Placeable اکنون measuredSize را آشکار می‌کند که نشان‌دهنده اندازه‌ای است که چیدمان فرزند درواقع اندازه‌گیری کرده است. این اندازه ممکن است محدودیت‌های اندازه‌گیری را رعایت نکند. (Ib2729، b/172560206، b/172338608)
  • افزودن اصلاح‌گر selectionGroup که امکان علامت‌گذاری مجموعه «برگه‌ها» یا «دکمه‌های رادیویی» را برای اهداف دسترس‌پذیری فراهم می‌کند (Ie5c29)
  • اکنون defaultFactory برای compositionLocalOf و staticCompositionLocalOf به‌جای اختیاری الزامی است.

    این تغییر خطای نوع احتمالی را برای انواع غیرقابل‌تهی که کارخانه پیش‌فرضی برای آن‌ها ارائه نشده است برطرف می‌کند. قبلاً این کار برای نوع غیرقابل‌تهی مرجع تهی ارائه می‌کرد.

    برای انواع تهی‌شدنی، { null } را به‌عنوان کارخانه پیش‌فرض ارائه دهید.

    توصیه نمی‌کنیم از متغیرهای محلی با انواع غیرتهی استفاده کنید، مگر اینکه پیش‌فرض معقولی ارائه شود. اگر پیش‌فرض منطقی وجود نداشته باشد، تابع defaultFactory باید استثنا ایجاد کند. بااین‌حال، پرتاب استثنا به این معنی است که مصرف‌کنندگان محلی وابستگی ضمنی به ارائه آن دارند که توسط سیستم نوع اجباری نیست. (Ifbd2a)

  • روش‌های منسوخ‌شده از واحدهای رابط کاربری برداشته شد (I646f6)

  • نام اصلاح‌گرهای اندازه تغییر کرد. Modifier.width/height/size به requiredWidth/requiredHeight/requiredSize تغییر نام داد. نام Modifier.preferredWidth/preferredHeight/preferredSize به width/height/size تغییر کرد. (I5b414)

  • ‫Modifier.tapGestureFilter برداشته شده است. درعوض از Modifier.pointerInput { detectTapGestures(...) } استفاده کنید. (I266ed, b/175294473)

  • مصرف جزئی از سیستم ورودی اشاره‌گر برداشته شد. روش توصیه‌شده برای هماهنگ کردن مصرف جزئی، Modifier.nestedScroll است. (Ie9c9b)

  • جهت‌یابی به بسته پایه منتقل شده است. ‫VelocirtTracker از ui.gesture به ui.input.pointer منتقل شد. (Iff4a8، b/175294473)

  • ‫imageResource و vectorResource اکنون تابع‌های افزونه‌ای در همراهان ImageBitmap و ImageVector هستند. ‫load{Image,Vector,Font}Resource تابع حذف شده است. (I89130)

  • ‫AnimationClockObservable و زیرکلاس‌های آن برداشته شده‌اند. ‫AnimatedFloat برداشته شده است. (Icde52، b/177457083)

  • نام «ارائه‌دهندگان» به CompositionLocalProvider تغییر کرده است

    • سازنده «ترکیب» دیگر پارامتر کلید را نمی‌پذیرد و منسوخ شده است.
    • ‫currentCompositeKeyHash به‌جای تابع سطح بالای ترکیب‌شدنی به دارایی سطح بالای ترکیب‌شدنی تبدیل شده است.
    • ‫CompositionData و CompositionGroup به فضای نام androidx.compose.runtime.tooling منتقل شده‌اند
    • ‫ComposableLambda به‌جای کلاس عینی به یک رابط تبدیل شده است و دیگر پارامترهای نوع ندارد.
    • ‫ComposableLambdaN به‌جای کلاس عینی به یک میانای تبدیل شده است و دیگر پارامترهای نوع ندارد.
    • تابع snapshotFlow به جای‌نام androidx.compose.runtime منتقل شده است
    • روش ادغام SnapshotMutationPolicy دیگر آزمایشی نیست
    • تابع سطح بالای @TestOnly clearRoots برداشته شده است. دیگر ضروری نیست.
    • توابع keySourceInfoOf و resetSourceInfo برداشته شده‌اند. دیگر ضروری نیستند.
    • ‫Composer.collectKeySourceInformation برداشته شده است. دیگر ضروری نیست.
    • روش‌های isJoinedKey، joinedKeyLeft، و joinedKeyRight برداشته شده‌اند. دیگر ضروری نیستند.
    • میاناهای برنامه‌سازی کاربردی سطح بالای مختلفی به فایل‌های دیگری منتقل و در آن‌ها سازمان‌دهی مجدد شده‌اند. به‌دلیل معناشناسی کلاس فایل Kotlin، این کار سازگاری باینری را ازبین می‌برد اما سازگاری منبع را ازبین نمی‌برد، بنابراین نباید برای اکثر کاربران مشکلی ایجاد کند.
    • (I99b7d، b/177245490)
  • ‫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 بازطراحی شده است. اکنون به‌جای کلاس ScrollableController از رابط Scrollable استفاده می‌کند (I4f5a5، b/174485541، b/175294473)

  • پشتیبانی CustomEvens از PointerInputModifier برداشته شده است (I02707، b/175294473)

  • ‫SnapshotStateObserver دیگر «آزمایشی» نیست (Id2e6a)

  • برخی‌از میاناهای برنامه‌سازی کاربردی که قبلاً منسوخ شده بودند حذف شدند (Ice5da، b/178633932)

  • longPressGestureFilter و doubleClickGestureFilter برداشته شده‌اند. از Modifier.pointerInput با توابع کمکی مثل detectTapGestures (I2fedf، b/175294473) استفاده کنید

  • ‫String.format API برداشته شد کاربردهای آن در روش‌های toString مختلف بازسازی شد تا از String.format به‌صورت داخلی استفاده نشود. (Id1290)

  • ادعاهای dp برداشته شد (I798d2)

  • ‫androidx.compose.runtime:runtime-dispatch برداشته شد (I55feb)

  • کنش‌های نوشتاری اکنون به‌طور خودکار تمرکز را بررسی می‌کنند (I13777، b/179648629)

  • برداشته شد runBlockingWithManualClock (I15cdc، b/179664814)

  • موقعیت پیمایش در Modifier.verticalScroll()/horizontalScroll() اکنون با Ints نشان داده می‌شود (I81298)

  • نام FlingConfig به FlingBehavior تغییر کرده است و اکنون به‌جای Decays ازپیش‌تعریف‌شده، امکان سفارشی‌سازی پویانمایی تعلیق را فراهم می‌کند. (I02b86، b/175294473)

  • تابع کمکی‌ای اضافه شد که برای تنظیم کنش یکسان برای همه برگشت‌های ImeAction مفید است (I63447، b/179226323)

  • کاربرگ «کنترل‌کننده صفحه‌کلید نرم‌افزاری» از همه فیلدهای نوشتاری برداشته شد تا به‌زودی با API جدیدی جایگزین شود. (Iae869، b/168778053)

  • دیگر از FontSpan و FontWeigthStyleSpan استفاده نمی‌شود و برداشته شده‌اند. (Ie5b56، b/177423444)

  • تغییرات زیر در «میانای برنامه‌سازی کاربردی Material» ایجاد شد:

    • پارامتر contentPadding به Top/BottomAppBar اضافه شد تا امکان سفارشی‌سازی حاشیه پیش‌فرض فراهم شود.
    • پارامترها در BackdropScaffold دوباره مرتب شدند تا از دستورالعمل‌های میانای برنامه‌سازی کاربردی برای پارامترهای الزامی که قبل‌از پارامترهای اختیاری قرار می‌گیرند پیروی شود.
    • پارامتر icon در BottomNavigationItem به بعداز selected و onClick منتقل شد.
    • نام پارامتر alwaysShowLabels در BottomNavigationItem به alwaysShowLabel تغییر کرد.
    • نام bodyContent پارامتر در چند عنصر به content تغییر کرد.
    • ترتیب پارامترها در ButtonDefaults.buttonColors() تغییر کرد. لطفاً توجه داشته باشید که چون نوع پارامترها تغییر نکرده است، این تغییر باعث بروز خطا در کد شما نخواهد شد. لطفاً مطمئن شوید که از پارامترهای نام‌دار استفاده می‌کنید یا ترتیب را به‌صورت دستی به‌روزرسانی می‌کنید، درغیراین‌صورت کد شما مثل قبل کار نخواهد کرد.
    • ‫secondaryVariant پارامتر به darkColors() اضافه شد. این رنگ معمولاً با secondary در زمینه تیره یکسان است، اما برای یکنواختی و سفارشی‌سازی بیشتر اضافه شده است.
    • ‫ElevationDefaults و animateElevation() را از سطح API عمومی برداشتیم زیرا معمولاً استفاده نمی‌شدند / مفید نبودند.
    • نام onValueChangeEnd در Slider به onValueChangeFinished تغییر کرد و قابل‌تهی شد.
    • نام پارامتر text در Snackbar به content تغییر کرد تا یکپارچگی حفظ شود.
    • پارامتر contentPadding به DropdownMenuItem اضافه شد تا امکان سفارشی‌سازی حاشیه پیش‌فرض فراهم شود و content به افزونه‌ای در RowScope تبدیل شد.
    • نام ModalDrawerLayout به ModalDrawer تغییر کرد.
    • نام BottomDrawerLayout به BottomDrawer تغییر کرد.
    • (I1cc66)

رفع اشکال‌ها

  • میانای برنامه‌سازی کاربردی برای استفاده از منابع AnimatedVectorDrawable در Compose اضافه شد. از animatedVectorResource برای بار کردن <animated-vector> XML به‌عنوان AnimatedImageVector و پویانمایی آن با painterFor (I8ea91) استفاده کنید
  • ترکیب جدید LocalSoftwareKeyboardController API محلی اضافه شد تا جایگزین رابط قبلی SoftwareKeyboardController در TextField شود. (I658b6، b/168778053)

نسخه 1.0.0-alpha12

۱۰ فوریه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-alpha12 منتشر شد. نسخه 1.0.0-alpha12 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پشتیبانی از ViewGroups از UiApplier برداشته شد. ترکیب‌های Deprecated emitView برداشته شد. (Ifb214)
  • ‫Modifier.pointerInput اکنون برای نشان دادن اینکه روتین مشترک تشخیص ورودی اشاره‌گر باید برای وابستگی‌های جدید بازراه‌اندازی شود به کلیدهای یادآوری نیاز دارد. (I849cd)
  • ‫CompositionReference به CompositionContext تغییر نام داد (I53fcb)
  • نام «محدوده» به DpRect (I4b32a) تغییر کرده است
  • به‌روزرسانی آزمایش: ()hasText هم نوشتار ورودی و هم نوشتار برچسب/راهنمایی/جای‌بان را در فیلد نوشتاری بررسی می‌کند (Iab803)
  • ‫viewModel() composable و LocalViewModelStoreOwner به androidx.lifecycle.viewmodel.compose منتقل شدند. اکنون برای استفاده از آن باید وابستگی جداگانه‌ای به‌نام androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 اضافه کنید. (I7a374)
  • مجاز کردن کنش تهی در «کنش دسترس‌پذیری»، تغییر کنش برچسب در «کنش دسترس‌پذیری» و «کنش دسترس‌پذیری سفارشی» از «دنباله نویسه» به «رشته» (I0dc82)
  • برای مطابقت بهتر با قراردادهای نام‌گذاری ImageBitmap و ImageVector، نام ImagePainter به BitmapPainter تغییر کرده است تا با VectorPainter موازی شود. (Iba381, b/174565889)
  • میاناهای برنامه‌سازی کاربردی بهتر برای آزمایش زیررشته با زیررشته به‌عنوان آرگومان (Icbe78)
  • ‫Modifier.focusOrder() را اضافه کرد که «درخواست‌کننده تمرکز» را بدون مشخص کردن ترتیب تمرکز سفارشی یا لامبدا می‌پذیرد. این کار زمانی مفید است که فقط نیاز داریم مرجعی را مشخص کنیم اما ترتیب کانونی سفارشی برای یک عنصر ترکیبی لازم نیست (I4f52a، b/179180978)
  • ‫ComponentActivity.setContent به androidx.activity.compose.setContent در androidx.activity:activity-compose module منتقل شده است. (Icf416)
  • روش‌های ساختارشکنی و copy() از چندین کلاس که به‌ندرت استفاده می‌شدند برداشته شده است. (I26702, b/178659281)
  • «بالاپر» به پلاتفرم خاصی منتقل شد. نام AndroidPopupProperties به PopupProperties تغییر کرده است و isFocusable به پارامتر focusable در PopupProperties منتقل شده است (Ieeea5)
  • «کادر گفتگو» به پلاتفرم خاص منتقل شد. ‫AndroidDialogProperties به DialogProperties تغییر نام داد. (I4ef69, b/179138130)
  • ‫LayoutNode داخلی شد (I8a7b1، b/175103944)
  • ‫Constraints.enforce با Constraints.constrain جایگزین شد. (I8b8ea)
  • ‫loadFontResource منسوخ شده است. به‌جای آن از fontResource استفاده کنید. imageResource،‏ loadImageResource،‏ vectorResource، و loadVectorResource منسوخ شده‌اند. درعوض از painterResource استفاده کنید. (I6b809)
  • به‌دلایل عملکردی، معناشناسی ScrollAxisRange اکنون به‌جای مقادیر مستقیم Float، لامبداهایی را می‌پذیرد که مقادیر Float را برمی‌گردانند. (If4a35، b/178657186)
  • معناشناسی EditableText برای علامت‌گذاری نوشتار ورودی قابل‌ویرایش فیلد نوشتاری برای دسترس‌پذیری و روش‌های آزمایش مربوطه برای بررسی معناشناسی (I8e07a) اضافه شد
  • ‫OwnerLayer/OwnerScope/OwnerSnapshotObserver داخلی شد (I4ffaf، b/175103944)
  • نام toIntPx() به roundToPx() تغییر کرد. (I9b7e4، b/173502290)
  • نام IntBounds به IntRect تغییر کرد و «میانای برنامه کاربردی» بهبود یافت. (I1f6ff)
  • «میانای برنامه‌سازی کاربردی Snapshot» به‌روزرسانی شد تا با دستورالعمل میانای برنامه‌سازی کاربردی سازگارتر باشد و همچنین کلاس‌های پیاده‌سازی داخلی از میانای برنامه‌سازی کاربردی عمومی پنهان شود. (Id9e32)
  • کنش‌های معنایی ازهم بازکردن و جمع کردن اضافه شد. افزودن expand و halfExpand در ModalBottomSheetState (Ib5064)
  • ‫Modifier.dragGestureFilter منسوخ شده است. درعوض از Modifier.pointerInput { detectDragGestures (...)} استفاده کنید. یا از Modifier.draggable برای کشیدن در یک محور استفاده کنید (I0ba93، b/175294473)
  • نام Ambients تغییر کرد تا با تغییر نام Ambient -> CompositionLocal مطابقت داشته باشد. قبلاً نام «محیط‌ها» AmbientFoo بود، اکنون نام «ترکیب‌های محلی» LocalFoo است. (I2d55d)
  • ‫BaseTextField منسوخ‌شده اکنون برداشته شده است. درعوض از BasicTextField استفاده کنید. (I71368)
  • مورد انتخابی به پایه منتقل شد. (I7892b)
  • همان‌طور که قبلاً state { 0 } قابل ترکیب را برداشتیم و اکنون استفاده از remember { mutableStateOf(0) } را ترویج می‌کنیم، savedInstanceState { 0 } قابل ترکیب را نیز برمی‌داریم. باید از rememberSaveable { mutableStateOf(0) } استفاده کنید و اگر نوع استفاده‌شده در MutableState بتواند در Bundle ذخیره شود، به‌طور خودکار ذخیره و بازیابی خواهد شد. اگر قبلاً یک شیء ذخیره‌کننده سفارشی را ارسال می‌کردید، اکنون باید از سربار جدیدی از rememberSaveable استفاده کنید که 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 به cancel تغییر نام داد تا با close تفاوت داشته باشد. (Ib6d76)
  • نام UiSavedStateRegistry به SaveableStateRegistry تغییر کرد، نام AmbientUiSavedStateRegistry به AmbientSaveableStateRegistry تغییر کرد، و هر دو به بسته androidx.compose.runtime.saveable منتقل شدند. (I30224)
  • نام مصنوعه androidx:compose:runtime:runtime-saved-instance-state به androidx:compose:runtime:runtime-saveable تغییر کرد (I6dcac)
  • بسیاری از APIهای منسوخ‌شده قدیمی در بسته ui حذف شده‌اند. (I2f2dc)
  • ساخت‌افزار compose:runtime-dispatch اکنون منسوخ شده است. اکنون می‌توانید MonotonicFrameClock را در compose:runtime و AndroidUiDispatcher را در compose:ui پیدا کنید. ‫(Ib5c36)
  • کلاس‌های Outline.* دیگر کلاس داده نیستند (I4879e، b/178001427)
  • ‫view.captureToImage() بدون هیچ جایگزینی برداشته شد. (I7fcd2)
  • ‫ColorMatrix API معرفی‌شده برای اصلاح مقادیر rgb محتوای منبع استفاده می‌شود ‫ColorFilter API بازسازی‌شده برای تبدیل شدن به یک میانای کاربر و مطابقت با پیاده‌سازی ‫PathEffect. (Ica1e8)
  • پارامتر layoutDirection را به 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)
  • ‫tapGestureFilter،‏ doubleTapGestureFilter،‏ longPressGestureFilter، و pressIndicaitonGestureFilter منسوخ شده‌اند. درعوض از Modifier.clickable یا Modifier.pointerInput با تابع detectTapGestures استفاده کنید. (I6baf9، b/175294473)
  • ‫unregisterProvider در SaveableStateRegistry برداشته شد. درعوض، ()registerProvider اکنون شیء SaveableStateRegistry.Entry را برمی‌گرداند که می‌توانید از آن برای لغو ثبت استفاده کنید (Ic4274، b/178583739)
  • نام rememberSavedInstanceState() به rememberSaveable() تغییر کرده است و به بسته androidx.compose.runtime.saveable منتقل شده است. (I1366e،‏ b/177338004)
  • ‫CoreText و CoreTextField از API عمومی برداشته شد
    • برداشتن سربار SelectionContainer منسوخ‌شده
    • (I99c19)
  • آزمایش‌هایی که در آن‌ها از Compose در سلسله‌مراتبی استفاده می‌شود که مستقیماً به WindowManager اضافه/حذف می‌شوند اکنون پایدارتر هستند. (Ie81ed،‏ b/175765614)
  • ‫Recomposer.current()‎ برداشته شد. اکنون [Abstract]ComposeView به‌طور پیش‌فرض به Recomposers با حوزه پنجره که به‌صورت تنبل ایجاد شده‌اند و توسط ViewTreeLifecycleOwner برای پنجره هدایت می‌شوند، تبدیل می‌شود. وقتی «چرخه حیات» میزبان متوقف می‌شود، بازسازی و تیک‌های پویانمایی مبتنی بر withFrameNanos موقتاً متوقف می‌شود. (I38e11)
  • ‫Recomposer.runningRecomposers اکنون StateFlow سراسری از RecomposerInfo فقط خواندنی برای مشاهده وضعیت ترکیب درحال انجام در فرایند ارائه می‌دهد. این API را به Recomposer.current()‎ که اکنون نامناسب است ترجیح دهید. (If8ebe)
  • ‫Saver،‏ listSaver()،‏ mapSaver()،‏ autoSaver از androidx.compose.runtime.savedinstancestate به androidx.compose.runtime.saveable منتقل شد (I77fe6)
  • ‫EditCommands‏ AnnotatedString را می‌پذیرد. بااین‌حال این تغییر فقط در میانای برنامه‌سازی کاربردی است و ویرایش نوشتار چندسبکی هنوز پیاده‌سازی نشده است. (I4c3ea)
  • «زمان روشن بودن» و «مدت» برداشته شده است. (Ib9bf4، b/177420019)
  • ‫CompositionData.asTree() و میاناهای برنامه‌سازی کاربردی مرتبط به واحد ui-tooling-data جداگانه منتقل شد و به‌عنوان آزمایشی علامت‌گذاری شد (Ic95b8)
  • پارامترهای RounderCornerShape،‏ CutCornerShape، و CornerBasedShape از چپ/راست به شروع/پایان تغییر نام دادند تا از قرینه‌سازی خودکار شکل در جهت راست‌به‌چپ پشتیبانی کنند. ‫AbsoluteRounderCornerShape و AbsoluteCutCornerShape برای مواردی معرفی شدند که آینه‌سازی خودکار مطلوب نیست. (I61040، b/152756983)
  • «میانای برنامه‌سازی کاربردی» که افزایه مترجم Compose هدف قرار می‌دهد برای استفاده از یک میانای کاربر به‌جای کلاس عینی بازسازی شده است. این واسط دیگر از پارامتر نوع استفاده نمی‌کند.

    این یک تغییر داخلی است که نباید بر سازگاری کد منبع تأثیر بگذارد، اما یک تغییر باینری است. ‫(I3b922،‏ b/169406779)

  • برداشتن تابع StringBuilder.deleteAt که به‌طور ناخواسته عمومی شده است (Id6ed9)

رفع اشکال‌ها

  • ‫ComposeViews که در سلسله‌مراتب نمای فرزندان ترکیب دیگری قرار می‌گیرند اکنون میزبان ترکیب‌های فرزندان اجداد خود هستند (I92883)
  • ‫API تصویرFromResource ترکیب به‌روزرسانی‌شده برای استفاده مجدد از حافظه نهان کشیدنی منبع هنگام بار کردن اشیاء ImageBitmap. (If3627، b/178751994)

نسخه 1.0.0-alpha11

‫۲۸ ژانویه ۲۰۲۱

‫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 را تغییر می‌دهد تا از مختصات نسبی پنجره استفاده کند، نه مختصات سراسری. نام parentGlobalBounds را به anchorBounds تغییر می‌دهد و windowGlobalBounds را به windowSize: IntSize تغییر می‌دهد (I2994a)
  • «مدت» و «زمان کار» با «میلی‌ثانیه طولانی» جایگزین خواهد شد، و این مرحله وابستگی ورودی اشاره‌گر به آن کلاس‌ها را برمی‌دارد. (Ia33b2،‏ b/175142755،‏ b/177420019)
  • ‫AmbientSavedStateRegistryOwner به‌روش مشابه AmbientLifecycleOwner و AmbientViewModelStoreOwner که ازقبل وجود داشتند اضافه شد (I9a3e8، b/176756365)
  • «میانای برنامه‌سازی کاربردی گرافیک برداری» به‌روزرسانی شد تا از تجزیه سایه‌رنگ اعمال‌شده به ریشه گرافیک برداری پشتیبانی کند. (Id9d53، b/177210509)
  • ‫toolType به PointerInputChange اضافه شد تا دستگاه‌ها متمایز شوند (Iac787، b/175142755)
  • نام AmbientWindowManager به AmbientWindowInfo تغییر کرد (I2686a، b/177084714، b/177084983)
  • روش‌های مختصات سراسری منسوخ شد و روش‌های مختصات مبتنی بر پنجره جدیدی ایجاد شد. (Iee284)
  • ‫Modifier.toolingGraphicsLayer اضافه شد که وقتی بازرسی روشن باشد اصلاح‌گر لایه گرافیکی اضافه می‌کند. ‫(I315df)
  • ‫FocusRequester.createRefs اکنون به‌عنوان آزمایشی علامت‌گذاری شده است زیرا ممکن است تغییر کند. ‫(I2d898،‏ b/177000821)
  • نام SemanticsPropertyReceiver.hidden به invisibleToUser تغییر کرد و با ‎ @ExperimentalComposeUiApi علامت‌گذاری شد. نام AccessibilityRangeInfo به ProgressBarRangeInfo تغییر کرد. نام stateDescriptionRange به progressBarRangeInfo تغییر کرد. نام AccessibilityScrollState به ScrollAxisRange تغییر کرد. نام horizontalAccessibilityScrollState به horizontalScrollAxisRange تغییر کرد. نام verticalAccessibilityScrollState به verticalScrollAxisRange تغییر کرد. (Id3148)
  • ‫PointerInputData برداشته شد و PointerInputChange اصلاح شد تا همه فیلدهای PointerInputData را داشته باشد. ‫PointerInputEvent و PointerInputEventData داخلی شدند زیرا در هیچ میانای برنامه‌سازی کاربردی عمومی استفاده نمی‌شوند. (Ifff97، b/175142755)
  • پیاده‌سازی GraphicsLayerScope تراکم به‌روز شد تا از تبدیل dp به پیکسل‌های خام پشتیبانی کند. (Ied528، b/176819695)
  • «میانای برنامه‌سازی کاربردی» ماتریس به‌روزرسانی شد تا از ترتیب اصلی ردیف پیروی کند و ثابت‌های نمایه را ارائه دهد تا به تبدیل بین نمایش‌های مختلف ماتریس برای مطابقت با منطق تبدیل چارچوب بین SkMatrix و Matrix4 در داخل کمک کند. (I432e6)
  • روش‌های آزمایشی monotonicFrameAnimationClockOf برداشته شد (Ib753f، b/170708374)
  • انتقال String.fintPrecedingBreak و String.fingFollowingBreak به InternalTextApi. (I657c4)
  • ‫androidx.compose.ui.util.isSurrogatePair از API عمومی برداشته شده است. (Ia9494)
  • نام TransformedText.transformedText به TransformedText.text تغییر کرد
    • ‫TransformedText دیگر کلاس داده نیست (Ie672a)
  • ‫data class از کلاس‌های زیر برداشته شد:
    • محتوای نوشتاری به‌خط
    • LocaleList (I605c7)
  • کلاس‌های زیر دیگر کلاس داده نیستند:
    • رشته حاشیه‌نویسی‌شده
    • ParagraphStyle
    • SpanStyle
    • سبک نوشتار
    • سیاهی قلم
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • ‫VisualTransformation به میانای عملکردی تغییر کرد (I3bba4)
  • نوع پارامتر مرجع تابع (I5e1bd) اضافه شد
  • افزودن حدود تبدیل‌شده به InspectorNode (Ice42f)

رفع اشکال‌ها

  • onCommit،‏ onDispose، و onActive به‌نفع SideEffect و DisposableEffect APIs منسوخ شده‌اند (If760e)
  • تغییرات در توابع کارخانه‌ای برای «قلم/خانواده قلم/طرح حروف»

    • توابع کارخانه‌ای که با حروف بزرگ شروع می‌شوند اضافه شد
    • توابع کارخانه قبلی با حروف کوچک اول منسوخ شد
    • توابع کارخانه‌ای جدید به‌جای زیرکلاس‌ها، 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() API و همه سربارها منسوخ شده‌اند و به ComposeNode تغییر نام داده‌اند. این میاناهای برنامه‌سازی کاربردی یکسان هستند، فقط نام آن‌ها متفاوت است تا از قراردادهای نام‌گذاری Compose پیروی کنند (I4137b)

  • ‫TextFieldValue،‏ AnnotatedString را می‌پذیرد. بااین‌حال این تغییر فقط در میانای برنامه‌سازی کاربردی است و ویرایش نوشتار چندسبکی هنوز پیاده‌سازی نشده است.

    • ‫initial از پارامترهای سازنده EditingBuffer برداشته شد. (I326d5)
  • ‫invalidate و compositionReference() اکنون به‌ترتیب به‌نفع currentRecomposeScope و rememberCompositionReference منسوخ شده‌اند. (I583a8)

  • ‫AnnotatedString تغییر کرده است تا از kotlin.CharSequence گسترش یابد. بنابراین length و subSequence اکنون تابع‌های نمونه هستند، و تابع‌های افزونه برداشته شده‌اند. (Iaf429)

  • ‫RememberObserver جایگزین CompositionLifecycleObserver شده است و CompositionLifecycleObserver اکنون منسوخ شده است.

    ‫RememberObserver جایگزین CompositionLifecycleObserver با معناشناسی اصلاح‌شده و روش‌های تغییرنام‌داده‌شده است. تغییر به API جدید می‌تواند به‌صورت مکانیکی برای اشیایی که فقط یک‌بار به‌یاد آورده می‌شوند انجام شود، که این روش همچنان توصیه می‌شود. بااین‌حال، اگر یک مرجع بیش از یک بار در یک قطعه موسیقی به‌یاد آورده شود، onRemembered برای هر مرجع فراخوانده می‌شود، درحالی‌که onEnter فقط یک بار فراخوانده می‌شود. onEnter اگر شیء در زیرترکیب‌ها استفاده شود، چندین بار فراخوانده می‌شود، برای مثال WithConstraints و Scaffold که باعث می‌شود فراخوان onEnter واحد غیرقابل‌اعتماد شود و برای RememberObserver برداشته شد.

    ‫RememberObserver‏ onAbandoned را اضافه می‌کند که اگر نمونه RememberObserver از تابع برگشتی ارسال‌شده به remember برگردانده شود فراخوانی می‌شود اما در وضعیت ترکیب به‌یاد آورده نشده است و بنابراین onRemembered هرگز فراخوانی نخواهد شد. این اتفاق می‌تواند زمانی رخ دهد که استثنایی آهنگ‌سازی را قبل‌از تکمیل شدن متوقف کند یا آهنگ‌سازی کنار گذاشته شود زیرا وضعیتی که آهنگ‌سازی برای آن تولید می‌شد دیگر جاری نیست یا به هر دلیلی دیگر موردنیاز نیست. اگر نمونه RememberObserver پس‌از توصیه مرجع تکی در بالا منبع خارجی را ردیابی می‌کند، هم onForgotten و هم onAbandoned نشان می‌دهند که دیگر به منبع نیاز نیست. اگر هدف درحال پیگیری کار شروع‌شده یا منابع تخصیص‌یافته در onRemembered است، onAbandoned می‌تواند نادیده گرفته شود زیرا اگر onRemembered فراخوانده شود، فراخوانده نخواهد شد. (I02c36)

  • عملگرهای حسابی منسوخ‌شده بین ۲ یا چند TextUnit. توابع منسوخ‌شده TextUnit.Sp و TextUnit.Em را به‌جای توابع افزونه‌ای مثل Int.sp و Int.em ترجیح دهید. (I48369)

  • منابع موجود در کتابخانه‌هایی که منابع عمومی در آن‌ها به‌طور صریح اعلام نشده است (مثلاً ازطریق public.xml) اکنون به‌طور پیش‌فرض خصوصی هستند. (Ia1dcc، b/170882230)

  • ‫ScrollableColumn/Row منسوخ شده است. وقتی محتوای پیمایشی زیادی دارید، استفاده از ScrollableColumn در مقایسه با LazyColumn کارایی کمتری دارد زیرا با LazyColumn می‌توانیم فقط عناصر نمایان را ترکیب/اندازه‌گیری/طراحی کنیم. برای جلوگیری از اینکه کاربران از روش ناکارآمد استفاده کنند، تصمیم گرفتیم «ستون پیمایش‌پذیر» و «ردیف پیمایش‌پذیر» را منسوخ کنیم و به‌جای آن استفاده از «ستون تنبل» و «ردیف تنبل» را ترویج کنیم. کاربران همچنان می‌توانند تصمیم بگیرند که به رفتار تنبل نیاز ندارند و از اصلاح‌کننده‌ها به‌طور مستقیم به این صورت استفاده کنند: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b،‏ b/170468083)

  • روش کارخانه جدید items(count: Int) برای محدوده LazyColumn/LazyRow/LazyVerticalGrid. ‫items(items: List) و itemsIndexed(items: List) اکنون تابع‌های افزونه هستند، بنابراین باید آن‌ها را هنگام استفاده به‌صورت دستی وارد کنید. سربار جدید افزونه برای «آرایه‌ها»: items(items: Array) و itemsIndexed(Array) (I803fc، b/175562574)

  • لطفاً به‌جای ImeAction.NoAction از ImeAction.None استفاده کنید

    • لطفاً به‌جای ImeAction.Unspecified (Ie1bcc) از ImeAction.Default استفاده کنید
  • استفاده از TestCoroutineDispatcher در آزمایش (I532b6)

  • نام TextInputService.onStateUpdated به updateState تغییر کرد (Id4853)

  • «گذار» مبتنی بر «تعریف گذار» نامناسب شده است (I0ac57)

  • ‫TextUnitType.Inherit برداشته شده است. لطفاً درعوض از TextUnitType.Unspecified استفاده کنید. (I9ff64)

نسخه 1.0.0-alpha10

‫۱۳ ژانویه ۲۰۲۱

‫androidx.compose.ui:ui-*:1.0.0-alpha10 منتشر شد. نسخه 1.0.0-alpha10 حاوی این تعهدات است.

تغییر ناگهانی

  • بازسازی API کامپایلر داخلی امکان دسته‌بندی تغییرات در گره‌های تولیدشده درنتیجه ترکیب را در مرحله «اعمال تغییرات» ترکیب، پس‌از تکمیل همه @Composable تابع، فراهم می‌کند.

    این یک تغییر رفتاری است که ممکن است بر کد برنامه تأثیر بگذارد زیرا گره‌ها دیگر از میاناهای برنامه‌سازی کاربردی داخلی و آزمایشی تا زمانی که تغییرات اعمال نشده‌اند دردسترس نیستند. معمولاً می‌توان با قرار دادن کد دارای چنین وابستگی‌هایی در عنصر SideEffect ترکیب‌شدنی، اجرای کد را تا بعداز ایجاد و مقداردهی اولیه گره‌ها به‌تعویق انداخت. (I018da)

تغییرات میانای برنامه‌سازی کاربردی

  • ‫Modifier.focusOrder()‎ اضافه شد که می‌توان از آن برای مشخص کردن ترتیب پیمایش سفارشی تمرکز استفاده کرد (I90cf5، b/175899543، b/170155556، b/170155429)
  • استفاده از focusObserver منسوخ‌شده برداشته شد. به‌جای آن از onFocusChanged یا onFocusEvent استفاده کنید (I3ecb9، b/175156387)
  • تغییرات EditOperations API
    • ‫EditOperation به EditCommand تغییر نام داد
    • پسوند «فرمان» برای پیاده‌سازی‌های عینی EditOperation اضافه شد
    • ‫EditCommand دیگر کلاس داده نیست
    • نام تابع EditOperation.process به applyTo تغییر کرد
    • ‫InputEventListener به InputEventCallback تغییر نام داد
    • (I0a366)
  • ‫PxSquared،‏ PxCubed،‏ PxInverse استفاده‌نشده برداشته شد. ‫Size.center() به خصوصیت تغییر کرد. (I973f7)
  • واحد ui-test اکنون می‌تواند ایجاد Recomposers را برای میاناهای کاربری تحت آزمایش پیکربندی کند (Ibebd8)
  • «سرعت» اصلاح شد تا دارای اجزای تشکیل‌دهنده و عملیات ریاضی باشد. (Ib0447)
  • نام @ExperimentalTesting به @ExperimentalTestApi تغییر کرد تا با حاشیه‌نویسی‌های مشابه میانای برنامه‌سازی کاربردی آزمایشی (Ia4502، b/171464963) سازگار باشد
  • نام Color.useOrElse() به Color.takeOrElse() تغییر کرد (Ifdcf5)
  • کلاس‌های DpInverse،‏ DpSquared، و DpCubed استفاده‌نشده برداشته شد. (I4d62b)
  • نام Constraints#satisfiedBy به isSatisfiedBy تغییر کرد. (I9cf5c)
  • وقتی محدوده layoutnode تغییر می‌کند، یک تماس برگشتی اضافه کنید تا به «مالک» اطلاع دهد. (I72fd1)
  • ‫isSpecified،‏ isUnspecified، و useOrElse برای کلاس‌های سطری با ثابت Unspecified اضافه شد. (I93f7b، b/174310811)
  • میاناهای برنامه‌سازی کاربردی [Abstract]ComposeView را گسترش دهید تا امکان بازیافت نماهای مبتنی بر Compose فراهم شود، ترکیب آن‌ها را دور بیندازید تا بعداً دوباره ایجاد شوند. میاناهایی برای نصب و کاوش «ترکیب‌کننده‌های» با محدوده پنجره و «مرجع‌های ترکیب» برای ایجاد ترکیب‌های فرزند اضافه کنید.

    ‫ViewCompositionStrategy را برای پیکربندی استراتژی دور ریختن ترکیب [Abstract]ComposeViews اضافه کنید؛ رفتار پیش‌فرض دور ریختن در جدا کردن پنجره است. (I860ab)

  • میانای برنامه کاربردی عمومی Any.identityHashCode() برداشته شد (I025d7)

  • ‫toStringAsFixed API را برداشتیم و به‌جای آن مستقیماً از String.format استفاده کردیم. (Iaba6b)

  • افزودن «تغییر وضعیت» به foundation Strings.kt (I4a5b7،‏ b/172366489)

  • ‫nativeClass به واحد ui منتقل شد و داخلی شد. کاربردهای به‌روزشده nativeClass در پیاده‌سازی‌های equals برای استفاده از '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)

  • تغییرات «میانای برنامه‌سازی کاربردی تبدیل تصویری»

    • نام OffsetMap به OffsetMapping تغییر کرد
    • نام OffsetMapping.identityOffsetMap به OffsetMapping.Identity تغییر کرد
    • ‫PasswordTransformation دیگر کلاس داده نیست
    • ‫OffsetMapping به فایل خودش منتقل شد
    • (I0bdf3)
  • «موقعیت» به «DpOffset» تغییر نام داد و getDistance() برداشته شد (Ib2dfd)

  • ‫Dp.isFinite()‎ تابع به Dp.isFinite مقدار تغییر کرد (I50e00)

رفع اشکال‌ها

  • اکنون «بازساز» یک «جریان» از وضعیت کنونی خود را آشکار می‌کند و امکان نظارت بر فعالیت آن و فعالیت جلوه‌های مرتبط را فراهم می‌کند. (Ifb2b9)
  • اکنون می‌توان ازطریق keyEvent.nativeKeyEvent به keyEvent بومی دسترسی داشت (I87c57، b/173086397)
  • ‫animate() اکنون با animateAsState() جایگزین شده است، که به‌جای T،‏ State<T> برمی‌گرداند. این کار عملکرد را بهبود می‌بخشد، زیرا محدوده نامعتبرسازی می‌تواند به جایی که مقدار «وضعیت» خوانده می‌شود محدود شود. (Ib179e)
  • «میانای برنامه‌سازی کاربردی نقش معنایی» را اضافه کنید و «نقش» را به‌عنوان پارامتر به «اصلاح‌کننده معنایی» کلیک‌کردنی، انتخاب‌کردنی، و قابل‌تغییر اضافه کنید. ‫Modifier.progressSemantics تغییر کرد تا «لغزنده» هم بتواند از آن استفاده کند. (I216cd)
  • میانای برنامه‌سازی کاربردی جدید مبتنی بر روتین همکار Animatable که انحصاری بودن متقابل بین پویانمایی‌هایش را تضمین می‌کند.
    • ‫DecayAnimationSpec جدید برای پشتیبانی از پویانمایی زوال چندبعدی
    • (I820f2،‏ b/168014930)

نسخه 1.0.0-alpha09

‫۱۶ دسامبر ۲۰۲۰

‫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.focusObserver منسوخ شده است. به‌جای آن از Modifier.onFocusChanged یا Modifier.onFocusEvent استفاده کنید (I30f17، b/168511863، b/168511484)
  • برای تعلیق کردن ورودی اشاره‌گر APIs، HandlePointerInputScope به AwaitPointerEventScope و handlePointerInput() به awaitPointerEventScope() تغییر نام داد. (Idf0a1، b/175142755)
  • «میانای برنامه‌سازی کاربردی تکمیل خودکار» اکنون میانای برنامه‌سازی کاربردی آزمایشی است و نیاز به موافقت دارد (I0a1ec)
  • افزودن اظهارنامه‌های ساختارشکنی برای ایجاد نمونه‌های FocuSRequester (I35d84، b/174817008)
  • نام accessibilityLabel به contentDescription تغییر کرده است. نام accessibilityValue به stateDescription تغییر کرده است. (I250f2)
  • رویدادهای سفارشی از API ورودی اشاره‌گر تعلیق برداشته شد (Ia54d5، b/175142755)
  • چند تابع جدید در SelectionRegistrar معرفی شد و همچنین نام onPositionChange به notifyPositionChange تغییر کرد. (Ifbaf7)
  • اعضای بیشتری از LayoutNode را به‌عنوان داخلی علامت‌گذاری کردیم (I443c6)
  • ‫LayoutInfo برای استفاده در ابزارها و آزمایش معرفی شد (I9b190)
  • ‫AndroidOwner داخلی شد (Ibcad0، b/170296980)
  • حاشیه‌نویسی ExperimentalPointerInput برداشته شد (Ia7a24)
  • سیستم پیمایش تودرتو اضافه شد. برای جزئیات بیشتر، به Modifier.nestedScroll مراجعه کنید (I36e15، b/162408885)
  • ‫subcomposeInto(LayoutNode) داخلی شد (Id724a)
  • واسط Applier تغییر کرده است تا ساختن درخت‌ها از پایین به بالا به‌جای بالا به پایین ساده‌تر شود.

    نام روش insert() به insertTopDown() تغییر کرده است.

    روش جدیدی به‌نام insertBottomUp() اضافه شد.

    کاربردی‌کننده یا گره‌ها را در درختی که ویرایش می‌کند بااستفاده از insertTopDown() یا insertBottomUp() بسته به اینکه کدام بهتر عمل می‌کند درج می‌کند.

    برخی‌از درخت‌ها، مثل LayoutNode و View، برای ساختن از پایین به بالا بسیار کارآمدتر از ساختن از بالا به پایین هستند. قبل‌از این تغییر، برای پیاده‌سازی از پایین به بالا، پشته‌ای از درج‌ها لازم بود که باید در هر برنامه‌ای که به ساختار از پایین به بالا برای عملکرد نیاز داشت کپی می‌شد. با این تغییر، Applier insertBottomUp() را ملغی می‌کند تا درخت را از پایین به بالا بسازد و insertTopDown() درخت را از بالا به پایین می‌سازد. (Icbdc2)

  • ویژگی‌های dismissOnBackPress و dismissOnClickOutside به AndroidDialogProperties اضافه شد. این‌ها امکان پیکربندی زمان فراخوانی لامبدای onDismissRequest کادر گفتگو را فراهم می‌کنند. (If5e17)

  • ‫API painterResource اضافه شد تا بار کردن غیرشفاف اشیای «نقاش» از قالب‌های دارایی شطرنجی (مثل PNG) یا VectorDrawables را مدیریت کند. مصرف‌کنندگان دیگر نیازی ندارند نوع دارایی را ازقبل تعیین کنند و می‌توانند این روش را برای دریافت شیء Painter برای استفاده در Image composables یا اصلاح‌کننده‌های painter فراخوانی کنند. (I2c703، b/173818471)

  • ‫Modifier.clearAndSetSemantics اضافه شد تا معناشناسی فرزندان را پاک کند و معناشناسی جدیدی تنظیم کند. (I277ca)

  • ‫ContentDrawScope به ui-graphics انتقال یافت تا با DrawScope باشد. (Iee043، b/173832789)

  • ‫PathEffect graphics API معرفی شد تا الگوهای مختلفی برای شکل‌های خط‌دار ارائه دهد. استفاده منسوخ‌شده از NativePathEffect به‌نفع پیاده‌سازی موردانتظار/واقعی PathEffect. (I5e976،‏ b/171072166)

  • واسط‌های IdlingResource به Compose اضافه شد، به‌عنوان گونه پشتیبانی‌شده Compose از منابع درانتظار Espresso. می‌توانند ازطریق ComposeTestRule (I433f3) ثبت و لغو ثبت شوند

  • ثبت (لغو ثبت) سراسری ComposeIdlingResource و ثبت (لغو ثبت) سراسری ساعت‌ها در ComposeIdlingResource برداشته شد (I32660)

رفع اشکال‌ها

  • ‫Lambdas در اصلاح‌کننده‌های افست اکنون به‌جای Float، مقدار IntOffset برمی‌گرداند. (Ic9ee5،‏ b/174137212،‏ b/174146755)
  • ‫SlotTable،‏ SlotReader، و SlotWriter را از میانای برنامه‌سازی کاربردی عمومی برداشتیم. قبلاً این موارد به‌عنوان InternalComposeAPI علامت‌گذاری می‌شدند. اکنون این موارد داخلی واحد نوشتن هستند.

    ‫CompositionData و CompositionGroup به‌عنوان جایگزینی برای واسط برنامه‌سازی کاربردی ui-tooling اضافه شدند تا از آن‌ها برای استخراج اطلاعات ترکیب استفاده شود. این‌ها عمومی هستند اما برای استفاده خارج از میانای برنامه‌سازی کاربردی ui-tooling درنظر گرفته نشده‌اند زیرا اطلاعات خام را که میانای برنامه‌سازی کاربردی ui-tooling تفسیر می‌کند ارائه می‌دهند (I31a9c)

  • ‫ShaderBrush را بازسازی کرد تا نمونه سایه‌زن را وقتی اطلاعات اندازه محیط طراحی دردسترس است به‌صورت تنبل ایجاد کند. این کار برای تعریف گرادیان‌هایی که در زمان ترکیب، کل محدوده طراحی یک عنصر ترکیب‌پذیر را اشغال می‌کنند مفید است، بدون اینکه نیاز باشد پیاده‌سازی‌های سفارشی DrawModifier را پیاده‌سازی کنید.

    میاناهای برنامه‌سازی کاربردی سازنده تابع گرادیان منسوخ شده‌اند به‌نفع روش‌های کارخانه‌ای در یک شیء «گرادیان». (I511fc, b/173066799)

  • ‫LazyColumnFor،‏ LazyRowFor،‏ LazyColumnForIndexed، و LazyRowForIndexed را منسوخ کنید. به‌جای آن از LazyColumn و LazyRow استفاده کنید (I5b48c)

  • ‫BuildCompat.isAtLeastR منسوخ شده است (Idb37e)

  • تابع کارخانه‌ای buildAnnotatedString را برای ساختن AnnotatedString اضافه کرد. تابع سازنده annotatedString منسوخ‌شده. (Idfe0b)

  • روش‌های افزونه را در «شناور» و «دوبرابر» برداشتیم تا مقادیر را به رادیان تبدیل کنیم. به تابع خصوصی منتقل شد در پیاده‌سازی PathParser که تنها جایی بود که از آن استفاده می‌شد (I25f52)

نسخه 1.0.0-alpha08

‫۲ دسامبر ۲۰۲۰

‫androidx.compose.ui:ui-*:1.0.0-alpha08 منتشر شد. نسخه 1.0.0-alpha08 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • افزودن کنش معنایی بستن (I2b706)
  • «میاناهای برنامه‌سازی کاربردی DrawModifier» از بسته androidx.compose.ui به بسته androidx.compose.ui.draw منتقل شد. فایل DrawModifierDeprecated.kt را ایجاد کرد تا نام‌های مستعار نوع/روش‌های کمکی را برای کمک به انتقال از APIهای منسوخ‌شده به APIهای فعلی دربر بگیرد. (Id6044،‏ b/173834241)
  • نام Modifier.drawLayer به Modifier.graphicsLayer تغییر کرد همچنین کلاس‌های مرتبط طبق بازخورد API به GraphicsLayer به‌روزرسانی شد. (I0bd29, b/173834241)
  • روش‌های جدید placeable.placeWithLayer() و placeable.placeRelativeWithLayer() اضافه شده است که به چیدمان‌های سفارشی و اصلاح‌کننده‌های چیدمان اجازه می‌دهد فرزند را با معرفی لایه گرافیکی برای طراحی‌اش قرار دهند. با داشتن آن، ابتدا می‌توانیم بازطراحی‌ها را بهینه‌سازی کنیم، بنابراین وقتی نیاز به جابه‌جایی فرزند داریم لازم نیست محتوای آن را بازطراحی کنیم، دوم اینکه می‌توانیم تبدیل‌های طراحی را برای فرزند اعمال کنیم (Ibd8f6، b/170296989، b/171493718، b/173030831)
  • ‫<T> از بیانیه SubcomposeLayout برداشته شد. اکنون می‌توانید بدون مشخص کردن نوع از آن استفاده کنید. (Ib60c8)
  • «واسط‌های برنامه‌سازی کاربردی» Modifier.scale/rotate به‌عنوان تسهیلات برای drawLayer اضافه شد.
    • نام Modifier.drawOpacity به Modifier.alpha تغییر کرد
    • نام Modifier.drawShadow به Modifier.shadow تغییر کرد (I264ca، b/173208140)
  • فیلدهای زمان کار و موقعیت PointerInputData را غیرقابل‌تهی کرد. (Id468a)
  • ‫MaterialTheme اکنون رنگ‌های صحیح را برای دسته‌های انتخاب و پس‌زمینه انتخاب تنظیم می‌کند. برنامه‌های غیر Material می‌توانند به‌صورت دستی از AmbientTextSelectionColors برای سفارشی‌سازی رنگ‌های استفاده‌شده برای انتخاب استفاده کنند. (I1e6f4،‏ b/139320372،‏ b/139320907)
  • ‫WindowManager.isWindowFocused برای بررسی اینکه آیا پنجره میزبان در کانون توجه است یا نه، و WindowFocusObserver که یک پاسخ‌گویی onWindowFocusChanged ارائه می‌دهد اضافه شد. (I53b2a، b/170932874)
  • ‫TransformOrigin API به‌روزرسانی شد تا نحوه‌ ساختارشکنی برای برگرداندن pivotFractionX و pivotFractionY به‌عنوان component1 و component2 داشته باشد (If43c4، b/173586560)
  • بررسی lint برای نام‌گذاری و موقعیت پارامتر لامبدای ترکیب‌شدنی اضافه شد تا با رهنمودهای Compose سازگاری داشته باشد. همچنین برخی‌از APIها را بااستفاده از children به‌عنوان نام لامبدای انتهایی‌شان به content انتقال دادیم، طبق بررسی و راهنمایی lint. (Iec48e)
  • میانای برنامه‌سازی کاربردی برای بررسی اینکه آیا کلیدهای اصلاح‌گر Alt،‏ Ctrl،‏ Meta، یا Shift هنگام ارسال رویداد کلید فشار داده شده‌اند یا نه اضافه شد. (I50ed9)
  • بار اضافی Modifier.drawLayer() جدیدی اضافه شد. بلوک لامبدایی را در GraphicsLayerScope جدیدی می‌گیرد که در آن پارامترهای لایه را به‌گونه‌ای تعریف می‌کنید که وقتی وضعیت تغییر می‌کند، امکان رد کردن بازآرایی و بازچیدمان وجود داشته باشد. ‫DrawLayerModifier اکنون داخلی است تا برای انتقال منطق آن به روش placeable.placeWithLayer() از LayoutModifier آماده شود (I15e9f،‏ b/173030831)
  • «محیط‌های» منسوخ‌شده‌ای که نام آن‌ها با Ambient به‌عنوان پسوند بود، با دارایی‌های جدیدی که پیشوند آن‌ها «محیط» بود جایگزین شدند و از سایر «محیط‌ها» و دستورالعمل‌های «میانای برنامه‌سازی کاربردی Compose» پیروی کردند. (I33440)
  • ‫androidx.compose.ui.text.Typeface به androidx.compose.ui.text.font.Typeface (Ic2b81) منتقل شد
  • نام آرگومان معنایی mergeAllDescendants به mergeDescendants تغییر کرد. (Ib6250)
  • آشکارساز اشاره کشیدن جدیدی که میانای برنامه کاربردی ورودی اشاره‌گر، ازجمله قفل کردن جهت، را معلق می‌کند. (Icef25)
  • ‫VectorAsset به ImageVector تغییر نام داد ‫VectorAsset به Builder منتقل و تغییر نام داد تا طبق دستورالعمل‌های API، کلاس داخلی ImageVector باشد. نام مستعار نوع VectorAssetBuilder به پیوند به ImageVector.Builder برای سازگاری اضافه شد. (Icfdc8)
  • ‫ImageAsset و روش‌های مرتبط را به ImageBitmap تغییر نام داد. (Ia2d99)
  • پارامتر zIndex را برای place() در PlacementScope اضافه کنید تا Modifier.zIndex() اکنون به‌عنوان LayoutModifier کار کند و هر چیدمان سفارشی بتواند zIndex را برای فرزندانش مستقیماً در بلوک جای‌گذاری تنظیم کند (I711f7،‏ b/171493718)
  • خصوصیات معناشناسی بنیاد به ui منتقل شد (I6f05c)
  • ‫place(Offset) و placeRelative(Offset) را منسوخ کنید. به‌جای آن از سربار با جبران‌های int استفاده کنید (I4c5e7)
  • «میاناهای برنامه‌سازی کاربردی» منسوخ‌شده قبلی برداشته شد: Modifier.onPositioned برداشته شد، از Modifier.onGloballyPositioned استفاده کنید. ‫Modifier.onDraw برداشته شد، از Modifier.onDrawBehind استفاده کنید. ‫Modifier.plus برداشته شد، از Modifier.then استفاده کنید. ‫Color.Unset برداشته شد، از Color.Unspecified استفاده کنید. کلاس PxBounds برداشته شد، درعوض از Rect استفاده کنید. (Ie9d02, b/172562222)
  • میانای «تراز» به‌روزرسانی و کاربردی شد. (I46a07،‏ b/172311734)
  • آشکارساز اشاره برای تک‌ضرب، دو تک‌ضرب، فشار طولانی، و نشانگر فشار بااستفاده از ورودی جدید اشاره معلق اضافه شد. چند ابزار کمکی نیز اضافه شده است که نوشتن آشکارسازهای اشاره را برای توسعه‌دهندگان آسان‌تر می‌کند. (I00807)
  • نام id به layoutId برای LayoutIdParentData تغییر کرد. نام Measurable.id به Measurable.layoutId تغییر کرد. (Iadbcb، b/172449643)
  • آشکارساز اشاره چندلمسی جدید، شامل یاری‌رسان‌هایی برای تشخیص چرخش، بزرگ‌نمایی، و حرکت افقی. (Ic459d)
  • ‫SweepGradientShader و SweepGradientBrush API معرفی شد. (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.getLineVisibleEnd منسوخ شده است. به‌عنوان جایگزین TextLayoutResult.getLineEnd اکنون پارامتر جدیدی به‌نام visibleEnd دارد. (I73282)

  • میانای برنامه‌سازی کاربردی TextFieldValue به‌روزشده

    • ‫TextFieldValue.composition فقط خواندنی شد
    • استثنای برداشته‌شده برای محدوده انتخاب نامعتبر (I4a675،‏ b/172239032)
  • پشتیبانی از TtsAnnotation برای موتور نوشتار به گفتار. (I54cc6)

  • میاناهای برنامه‌سازی کاربردی جدید برای اجرای پویانمایی‌ها در روتین‌های همکار (Ied662)

رفع اشکال‌ها

  • پارامتر تراز «چارگوش» به contentAlignment تغییر نام داد. ‫(I2c957)
  • نام اصلاح‌کننده‌های offsetPx به offset تغییر کرد. اکنون به‌جای State، پارامترهای لامبدا می‌گیرند. (Ic3021، b/173594846)
  • پارامتر resetInput به TextInputService#onStateUpdated اضافه شد (I3e8f5، b/172239032، b/171860947)
  • بررسی lint برای پارامترهای «اصلاح‌گر» در توابع «ترکیبی» اضافه شد. این بررسی lint نام‌گذاری، نوع برگشتی، مقدار پیش‌فرض، و ترتیب پارامتر را برای سازگاری با رهنمودهای Compose بررسی می‌کند. (If493b)
  • گزینه موقتاً اضافه شد تا اجازه دهد TestAnimationClock توسط MonotonicFrameClock کنترل شود (I1403b، b/173402197)
  • بسته‌بندی‌کننده «قلم Android» اضافه شد. می‌توانید Android Typeface را ازطریق تابع typeface یعنی typeface(Typeface.DEFAULT) بار کنید. همچنین نام typefaceFromFontFamily() را به typeface() تغییر داد (I52ab7)
  • بررسی lint اضافه شد تا بررسی کند که توابع کارخانه «اصلاح‌گر» به‌عنوان افزونه‌های «اصلاح‌گر» تعریف شده‌اند تا بتوانند به‌صورت روان به‌هم زنجیر شوند. (I07981)
  • برداشتن واحد ui-test قدیمی و کدهای جای‌خالی آن (I3a7cb)
  • «بازساز» دیگر EmbeddingContext را نمی‌پذیرد؛ وابستگی‌های زمان‌بندی موردنیاز از effectCoroutineContext به‌دست می‌آید. ‫FrameManager منسوخ شده است؛ یکپارچه‌سازی‌های پلاتفرم باید مدیریت عکس آنی سراسری خودشان را مقداردهی اولیه کنند. (I02369)
  • اطلاعات سبک را به گره دسترس‌پذیری ارسال کنید. (If5e8d)
  • ‫TextUnit.Inherit برای هماهنگی با واحدهای دیگر به TextUnit.Unspecified تغییر نام داده شده است. (Ifce19)

Compose UI Version 1.0.0-alpha07

۱۱ نوامبر ۲۰۲۰

‫androidx.compose.ui:ui-*:1.0.0-alpha07 منتشر شد. نسخه 1.0.0-alpha07 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • کلاس درون‌خطی ScaleFactor برای نشان دادن عوامل مقیاس برای محورهای افقی و عمودی به‌صورت مستقل از یکدیگر معرفی شد تا از موارد استفاده مقیاس‌بندی غیریکنواخت پشتیبانی کند.
    • روش computeScaleFactor به ContentScale اضافه شد
    • ‫ContentScale.FillBounds اضافه شد تا مقیاس‌بندی غیریکنواخت برای کشیدن مرزهای منبع برای اشغال کامل مقصد انجام شود.
    • روش‌های عامل به محاسبه پارامترهای «عامل مقیاس» با پارامترهای «اندازه» اضافه شد.
    • (Ic96a6, b/172291582)
  • کارخانه‌های BiasAlignment و BiasAbsoluteAlignment برای ایجاد Alignments اضافه شدند. (Iac836, b/169406772)
  • به توسعه‌دهنده اجازه می‌دهد فوکوس را به‌اجبار پاک کند. (I90372)
  • اشکالی که باعث می‌شد ارتفاع برای «نماها» در «نوشتن» ترسیم نشود برطرف شد. (If7782)
  • میانای برنامه‌سازی کاربردی onDrawBehind در ContentDrawScope ایجاد شد تا با قرارداد نام‌گذاری Modifier.drawBehind مطابقت داشته باشد. (I4fc3a, b/171955269)
  • افزودن پشتیبانی از فاصله دوربین برای تکمیل تبدیل‌های سه‌بعدی چرخش X/چرخش Y در میاناهای برنامه‌سازی کاربردی لایه. (I40213, b/171492100)
  • ‫SelectionContainer بدون پاسخ‌برگ (Ibfadb) اضافه شد
  • گزارمان ExperimentalSubcomposeLayoutApi برداشته شد. اکنون می‌توان از SubcomposeLayout بدون افزودن ‎ @OptIn استفاده کرد (I708ad)
  • ‫FirstBaseline و LastBaseline به بسته androidx.compose.ui.layout منتقل شدند (Ied2e7)
  • ماتی را از اصلاح‌گر drawShadow() برداشته شد زیرا گیج‌کننده بود. (I82c62، b/171624638)
  • ‫MeasureResult از MeasureScope خارج شد. (Ibf96d،‏ b/171184002)
  • چندین نماد مربوط به چیدمان از androidx.compose.ui به androidx.compose.layout.ui منتقل شدند. (I0fa98، b/170475424)
  • ‫Deprecated FocusState2 برداشته شد (I686cb، b/168686446)
  • ‫ZIndexModifier اکنون داخلی است (I1808b، b/171493718)
  • نوع برگشتی روش lerp در پارامترهای «اندازه» به‌روز شد تا «اندازه» غیرتهی برگرداند و از جعبه‌گذاری غیرضروری جلوگیری شود. (Ib0044)
  • ‫TestMonotonicFrameClock برای آزمایش کدی که برای انتظار رویدادهای قاب ترکیب‌بندی به MonotonicFrameClock در Compose متکی است بااستفاده از runBlockingTest در kotlinx-coroutines-test اضافه شد (I4402f)
  • ‫GestureScope.localToGlobal برداشته شد (I15299، b/171462785)
  • ‫onAllNodesWithSubstring ردیاب اضافه شد (I81dd7،‏ b/171462889)
  • واحد androidx.ui.test منسوخ شده است. لطفاً به androidx.compose.ui.test و androidx.compose.ui.test.junit4 انتقال دهید (I452e8)

رفع اشکال‌ها

  • ‫captureToBitmap به captureToImage منتقل شد. (I86385)
  • ‫foundation.Text منسوخ شده است و با material.Text جایگزین شده است. برای میانای برنامه‌سازی کاربردی نوشتاری ساده و بی‌طرف که مقادیر را از زمینه مصرف نمی‌کند، androidx.compose.foundation.BasicText را ببینید. (If64cb)
  • به‌روزرسانی TextFields برای پذیرفتن KeyboardOptions (Ida7f3)
  • تغییر نام KeyboardOptions به ImeOptions (I82f36)
  • ‫KeyboardType و ImeAction به KeyboardOptions منتقل شد (I910ce)
  • ‫provideDefault به‌عنوان جایگزینی برای ارائه محیط‌ها اضافه شده است و می‌توان از آن برای مشخص کردن مقادیر محیطی استفاده کرد که فقط زمانی تنظیم می‌شوند که مقدار محیطی ازقبل ارائه نشده باشد. (Id6635، b/171024925)
  • ‫BaseTextField منسوخ شده است. درعوض از BasicTextField استفاده کنید. (I896eb)
  • معرفی واحد ui-test-junit4 (Ib91f8)
  • نام relativePaddingFrom به paddingFrom تغییر کرد. اصلاح‌گر paddingFromBaseline برای راحتی مشخص کردن فاصله‌ها از محدوده‌های چیدمان تا خطوط پایه نوشتار اضافه شده است. ‫(I0440a،‏ b/170633813)
  • ‫LaunchedTask برای هماهنگی با میاناهای برنامه‌سازی کاربردی SideEffect و DisposableEffect به LaunchedEffect تغییر نام داد. ‫LaunchedEffect بدون پارامترهای موضوع مجاز نیست تا روال‌های مطلوب تشویق شود. (Ifd3d4)
  • منابع ترکیبی معرفی شد که وقتی پیکربندی به‌روز می‌شود، دوباره ترکیب می‌شود. (I6387c، b/167352819)
  • اکنون Recomposer در زمان ساخت به CoroutineContext نیاز دارد (Ic4610)
  • وقتی چند Modifier.zIndex() اعمال می‌شود، مقادیر zIndex را جمع کنید. قبلاً نفر اول برنده می‌شد. (Ic514c،‏ b/170623936)
  • تغییرات در پیاده‌سازی داخلی SlotTable که نباید بر میانای برنامه‌سازی کاربردی عمومی تأثیر بگذارد. (If9828)
  • «گزینه ویرایشگر روش ورودی» تصحیح خودکار «صفحه‌کلید» اضافه شد (I57b8d)
  • ‫androidx.ui.test به androidx.compose.ui.test منتقل شد (I9ffdb)
  • ‫KeyboardOptions.toImeOptions از «میانای برنامه‌سازی کاربردی» عمومی برداشته شد. (Ic2e45)

همیاری خارجی

  • انتشار آرتیفکت داخلی androidx.compose.ui:ui-text-android (Ib93fa) غیرفعال شد

نسخه 1.0.0-alpha06

‫۲۸ اکتبر ۲۰۲۰

‫androidx.compose.ui:ui-*:1.0.0-alpha06 منتشر شد. نسخه 1.0.0-alpha06 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • اکنون «بازساز» یک CompositionReference و یک والد ترکیب معتبر است. اکنون «بازساز صریح» در مکان‌های کمتری لازم است. (I4036f)
  • ‫VectorPainter را در مقابل rememberVectorPainter منسوخ کنید تا بهتر نشان دهید که API ترکیبی به‌صورت داخلی از «به‌خاطرآوری» برای ماندگار کردن داده‌ها در ترکیب‌ها استفاده می‌کند. (Ifda43)
  • ‫Modifier.drawWithCache API به‌روزرسانی شد تا ContentDrawScope را به‌عنوان محدوده گیرنده به‌جای DrawScope آشکار کند تا پیاده‌سازی‌ها بتوانند دستورات رسم را دوباره مرتب کنند. این برای موارد استفاده ترکیب کردن/ رنگ کردن مفید است که در آن‌ها پیکسل‌های محتوا باید ابتدا پرداز شوند تا الگوریتم حالت ترکیب مربوطه به‌درستی اعمال شود. (Ie7ec8)
  • انتقال SimpleContainer به PopupTestUtils.kt (I78c57)
  • ‫ConsumedData دیگر کلاس داده نیست. برای جزئیات بیشتر، https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 را ببینید (I1737f)
  • موقعیت دستگیره راست‌به‌چپ را اصلاح کنید. (I6e1e0)
  • ‫DrawScope و ContentDrawScope را بازسازی کردیم تا به‌جای کلاس‌های انتزاعی واسط باشند
    • پیاده‌سازی CanvasDrawScope از DrawScope ایجاد شد
    • پیاده‌سازی‌های بازسازی‌شده DrawScope برای استفاده از CanvasScope
    • ‫DrawContext برای بسته‌بندی وابستگی‌ها برای DrawScope ایجاد شد
    • روش‌های منسوخ‌شده در DrawScope برداشته شد (I56f5e)
  • تغییر مخرب: مقدار برگشتی از PointerInputFilter.onPointerEvent(...) برداشته شد زیرا تنها مقداری که باید در رویدادهای اشاره‌گر تغییر کند داده‌های مصرف است. به‌جای برگرداندن داده‌ها از PointerInputFilter.onPointerEvent(...)، اکنون می‌توانید داده‌های مصرف «رویدادهای اشاره‌گر» را که ارسال شده است تغییر دهید. (I6acd0)
  • ‫MeasureScope و IntrinsicMeasureScope به واسط تبدیل شدند. (I1a087, b/170461665)
  • تابع ادغام برای AlignmentLine پنهان شد. (I9da1a، b/170612900، b/170611568)
  • افزودن قابلیت مشخص کردن اطلاعات بازرس در اصلاح‌گر ترکیبی (Idee08، b/163494569)
  • گزینه «انتخاب همه» به منو انتخاب (Ief02b) اضافه شد
  • ‫DrawTransform.rotate به‌روزرسانی شد تا پارامتر پیش‌فرض مرکز را برای مطابقت با مستندات محور بگیرد.
    • ‫DrawScope.rotateRad به‌روزرسانی شد تا «آفست» را برای نقطه محور مصرف کند تا با دیگر روش‌های تبدیل مطابقت داشته باشد.
    • بار اضافه DrawScope.rotateRad منسوخ شد که شناورها را برای مختصات x و y محور مصرف می‌کرد.
    • (Iffcbb، b/170434992)

رفع اشکال‌ها

  • بررسی لینت «میانای برنامه‌سازی کاربردی» برای MissingGetterMatchingBuilder برای androidx فعال است (I4bbea، b/138602561)
  • آزمون اضافه کنید. (I6b8ae)
  • فعال کردن گذارها در ComposeTestRule؛ برداشتن گزینه فعال کردن مکان‌نمای چشمک‌زن از ComposeTestRule. (If0de3)
  • گزینه «حروف بزرگ صفحه‌کلید» به IME اضافه شد (I8ac38)
  • گزینه صفحه‌کلید تک‌خطی به CoreTextField اضافه شد (I72e6d)
  • انتقال SimpleContainer به PopupTestUtils.kt (I65c3e)
  • «میانای برنامه کاربردی شعاع» به CornerRadius تغییر نام داد تا بهتر بیان کند چگونه در سراسر Compose استفاده می‌شود. مستندات به‌روزرسانی شد تا نشان دهد شعاع‌های گوشه منفی به صفر مقید می‌شوند. (I130c7،‏ b/168762961)
  • با ادامه ارسال MotionEvents به «نمای Android» فرزند که برای onTouchEvent برای همه کنش‌ها به‌جز ACTION_DOWN مقدار نادرست برمی‌گرداند، قابلیت تعامل Android بهبود یافت (I94c5a،‏ b/170320973)
  • ‫Box به تابع درون‌خطی تبدیل شد. (Ibce0c، b/155056091)

همیاری خارجی

  • پشتیبانی از منطقه‌های زبانی مختلف برای AnnotatedString.capitalize و AnnotatedString.decapitalize (I4aa7f)

نسخه 1.0.0-alpha05

‫۱۴ اکتبر ۲۰۲۰

‫androidx.compose.ui:ui-*:1.0.0-alpha05 منتشر شد. نسخه 1.0.0-alpha05 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • افزودن DSL برای مشخص کردن اطلاعات بازرس (Ic9a22)
  • «فشار طولانی» را به «نوشتار» منتقل کنید. (Iff2bc)
  • «تعدیل‌کننده آزمایشی». تعدیل‌کننده ورودی تعلیق ورودی «ورودی اشاره‌گر» (Ia77d2)
  • کنش‌های دسترس‌پذیری «کپی کردن/جای‌گذاری کردن/برش دادن» اضافه شد (I6db4f)
  • سازنده عمومی برای AndroidOwner برداشته شد (Iacaef)
  • اکنون پنجره‌های بالاپَر و کادرهای گفتگو FLAG_SECURE را از «پنجره» والد به‌ارث می‌برند. همچنین گزینه پیکربندی صریح این مورد اضافه شد (I64966، b/143778148، b/143778149)
  • داده‌های مصرف اکنون قابل‌تغییر است. همچنین فراخوانی‌های توابع افزونه که مصرف دارند اکنون دیگر PointerInputChange جدیدی برنمی‌گردانند، بلکه به‌جای آن PointerInputChange ارائه‌شده را تغییر می‌دهند.

    این اولین مرحله از فرایند ۲ مرحله‌ای برای تغییرپذیر کردن داده‌های PointerEvent است تا داده‌های اشاره‌گر دیگر نتواند توسط کد کاربر ویرایش شود. مرحله دوم برداشتن نوع برگشتی List<PointerInputChange> از PointerInputFilter.onPointerEvent(...) خواهد بود. (Id067e)

  • «انتخاب در نوشتار» و «نسخه نمایشی» را غیرفعال کنید. (Ie7e97)

  • ‫onGloballyPositioned را به تابع به‌خط تبدیل کرد (I15830)

  • ‫OnPositionedModifier به OnGloballyPositionedModifier تغییر نام داده شد و onPositioned() به onGloballyPositioned() تغییر نام داد. (I587e8، b/169083903)

  • دارایی hasPendingMeasureOrLayout به «مالک» اضافه شد و مشخص می‌کند که آیا «مالک» کار چیدمان معلقی دارد یا نه. (I3d9f8، b/169038599)

  • میانای برنامه‌سازی کاربردی برای پاک کردن تمرکز به‌طور برنامه‌ریزی‌شده اضافه شد (Ie1dc2، b/161487952)

  • ‫PointerInputFilter.onPointerInput(...) حذف شد. باید به‌جای آن از PointerInputFilter.onPointerEvent(...) استفاده شود. (I6f04a)

  • تغییرات در اندازه

    • ‫Removed Size.getFlipped
    • اندازه برداشته شد.rem
    • ‫Size.truncDiv برداشته شد (Ief44d،‏ b/169790720)
  • به‌عنوان بخشی از استانداردسازی مقادیر نگهبان برای کلاس‌های درون‌خطی، برای هماهنگی با دیگر کلاس‌های درون‌خطی، نام Color.Unset را به Color.Unspecified تغییر دهید (I97611، b/169797763)

  • ‫TextOverflow.None معرفی شده است. وقتی سرریز «هیچ» باشد، «نوشتار» دیگر سرریز را مدیریت نمی‌کند و اندازه واقعی‌اش را به «گره چیدمان» گزارش می‌کند. (I175c9، b/158830170)

  • پارامتر محدوده در AnnotatedString.Builder.addStringAnnotation برای یکپارچگی API به برچسب تغییر نام داده است. (I7c8cb)

رفع اشکال‌ها

  • عملکرد پیمایش LazyColumn/Row با انجام کار کمتر در ترکیب فرعی در هر پیمایش بهبود می‌یابد. روش جدید hasInvalidations()‎ برای کلاس Composition اضافه شد. روش hasPendingChanges()‎ از Recomposer به hasInvalidations()‎ تغییر نام داد (Ib2f32، b/168293643، b/167972292، b/165028371)
  • پارامترهای Size.Unspecified به‌روزرسانی شد تا به‌جای Float.POSITIVE_INFINITY به Float.NaN تبدیل شود. پیاده‌سازی‌های «نقاش» به‌روزرسانی شد تا «اندازه.نامشخص» و همچنین «اندازه‌های» غیرمحدود را بررسی کند. (I95a7e)
  • ترتیب فراخوانی‌های place() در «چیدمان‌های» سفارشی اکنون ترتیب ترسیم فرزندان را تعریف می‌کند (Ibc9f6)
  • از تبدیل AnnotatedString به SpannableString برای دسترس‌پذیری پشتیبانی کنید. (Ief907)
  • برای کلاس‌های Android که در پلاتفرم‌های قدیمی‌تر هستند، ته‌برگ اضافه شد تا درصورت امکان از انعکاس استفاده نشود. (Ia1790)
  • اشکال برطرف شد: اگر نمایش صفحه‌کلید نرم‌افزاری باعث می‌شد برنامه ترجمه کند، مختصات ورودی اشاره‌گر نادرست می‌شد. (Ic4cec، b/163077821)

نسخه 1.0.0-alpha04

۱ اکتبر ۲۰۲۰

‫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)

  • PlacementScope#parentWidth و PlacementScope#parentLayoutDirection دیگر نمی‌توانند از بلوک جای آگهی چیدمان سفارشی خوانده شوند. (Icc1ae, b/168295623)

  • ‫AccessibilityScrollState را به ویژگی‌های معنایی اضافه کنید. (Ifeda9)

  • «اصلاح‌گر» معرفی شد.drawWithCache برای پشتیبانی از ایجاد شیء طراحی که وابستگی‌هایی را که به اطلاعات اندازه/وضعیت بستگی دارند به‌صورت شرطی بازسازی می‌کند (I376dc)

  • ‫ParagraphConstraints برداشته شد. اکنون عرض مستقیماً به «پاراگراف» منتقل می‌شود. (Ica712)

رفع اشکال‌ها

  • بسیاری از «میاناهای برنامه‌سازی کاربردی گرافیک» به‌روزرسانی شد
    • میاناهای برنامه‌سازی کاربردی تبدیل چرخش و مقیاس به‌روزرسانی شد تا از یک پارامتر «آفست» برای نشان دادن مختصات محور به‌جای پارامترهای شناور جداگانه برای مختصات x/y در DrawScope و DrawTransform استفاده کند
    • روش‌های Rect.expandToInclude و Rect.join برداشته شد
    • مستندات «شعاع» به‌روز شد تا علاوه‌بر بیضی، بیضی‌شکل را نیز شامل شود
    • اسناد اضافه شد تا نشان دهد سازنده عمومی برای کلاس درون‌خطی «شعاع» نباید مستقیماً فراخوانده شود، بلکه اشیا «شعاع» باید ازطریق سازنده‌های تابع آن‌ها نمونه‌سازی شوند
    • «میاناهای برنامه‌سازی کاربردی RoundRect» برای پُرسمان topRight، bottomRight،‏ bottomCenter، و غیره برداشته شد.
    • ‫Rect.shift منسوخ شده است. به‌جای آن از Rect.translate استفاده کنید
    • ‫RoundRect.grow و Rect.shrink API برداشته شد
    • نام RoundRect.outerRect به Rect.boundingRect تغییر کرد
    • روش‌های RoundRect.middleRect/tallMiddleRect/wideMiddleRect و Rect.isStadium برداشته شد
    • نام RoundRect.longestSide به RoundRect.maxDimension تغییر کرد
    • نام RoundRect.shortestSide به RoundRect.minDimension تغییر کرد
    • ‫RoundRect.center را به‌جای تابع به دارایی تغییر داد
    • سازنده RoundRect به‌روزرسانی شد تا به‌جای پارامترهای جداگانه برای مقادیر شعاع x/y، از خصوصیات «شعاع» استفاده کند
    • «میاناهای برنامه‌سازی کاربردی اندازه» که فرض می‌کرد «مستطیل» با مبدأ در ۰٫۰ است برداشته شد
    • میانای برنامه‌سازی کاربردی مخربی به Radius اضافه شد
    • انتقال توابع افزونه RoundRect مختلف به به‌جای آن، ویژگی‌ها
    • (I8f5c7، b/168762961)
  • ‫foundation.Box منسوخ شده است. لطفاً درعوض از foundation.layout.Box استفاده کنید. (Ie5950، b/167680279)
  • نام دسته عکس به Box تغییر کرد. «جعبه» قبلی موجود به نفع «جعبه» جدید در compose.foundation.layout منسوخ خواهد شد. عملکرد «چارگوش» جدید این است که وقتی چند فرزند دارد، آن‌ها را روی هم قرار می‌دهد - این عملکرد با «چارگوش» قبلی که عملکردی مشابه «ستون» داشت متفاوت است. (I94893، b/167680279)
  • پارامترهای تزئین جعبه منسوخ شده است. اگر می‌خواهید جعبه‌تان تزئینات/حاشیه داشته باشد، به‌جای آن از «اصلاح‌گرها» استفاده کنید (Modifier.background،‏ Modifier.border،‏ Modifier.padding) (Ibae92،‏ b/167680279)
  • بسیاری از «میاناهای برنامه‌سازی کاربردی گرافیک» به‌روزرسانی شد
    • ‫DrawScope APIs با روش‌های تبدیل محدوده‌دار به‌روزرسانی شد تا نشان دهد تبدیل فقط در محدوده تماس برگشتی اعمال می‌شود و پس‌از فراخوانی تماس برگشتی برداشته می‌شود
    • مستندات clipPath به‌روزرسانی شد تا به‌جای مستطیل گرد به «مسیر» اشاره کند
    • فاصله ثابت در مستندات برای پارامتر راست در clipPath
    • ‫DrawScope.drawCanvas به drawIntoCanvas تغییر نام داد و پارامتر اندازه برداشته شد
    • پارامترهای dx/dy در روش درج به افقی و عمودی تغییر نام داد
    • سرباری درونی اضافه شد که مقدار درونی یکسانی را برای همه ۴ محدوده ارائه می‌دهد
    • مستندات مربوط به روش درج که نشان می‌داد درج روی هر ۴ طرف اعمال می‌شود برداشته شد
    • سند به‌روزشده برای کلاس Rect
    • نظرات پارامترهای «مستطیل» به‌روز شد تا با سبک kdoc مطابقت داشته باشد
    • ‫Rect.join و Rect.expandToInclude برداشته شد
    • بار اضافه برای Rect.translate(offset) ایجاد شد و Rect.shift منسوخ شد
    • (If086a، b/167737376)
  • ‫Annotated rootAnimationClockFactory،‏ transitionsEnabled،‏ blinkingCursorEnabled، و textInputServiceFactory را با ‎@VisibleForTesting به API داخلی تبدیل کنید و kdoc آن‌ها را پنهان کنید (I554eb،‏ b/168308412)
  • برای غیرفعال کردن انتخاب پیش‌فرض و جلوگیری از عملکرد غیرمنتظره، SelectionContainer را از Top بردارید. به‌جای آن، می‌توان به‌طور خاص از SelectionContainer برای پوشاندن محتوایی که باید قابل‌انتخاب باشد استفاده کرد. (I8dfe0،‏ b/158459594)

نسخه 1.0.0-alpha03

‫۱۶ سپتامبر ۲۰۲۰

‫androidx.compose.ui:ui-*:1.0.0-alpha03 منتشر شد. نسخه 1.0.0-alpha03 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • کنش‌های معنایی پیمایش به‌جلو/به‌عقب را بردارید. مراحل اضافه شده در AccessibilityRangeInfo. (Ia47b0)
  • ‫onInvalidate() از Owner برداشته شد -- OwnedLayer باطل کردن را مدیریت می‌کند. (Ica72b، b/162061312)
  • روش‌های عامل در «میانای برنامه‌سازی کاربردی» Size (اندازه) که پارامترهای 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

‫۲ سپتامبر ۲۰۲۰

‫androidx.compose.ui:ui-*:1.0.0-alpha02 منتشر شد. نسخه 1.0.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • حذف کردن بازخوانی برای اطلاع دادن به «مالک» هنگام تغییر مرزهای layoutnode. (If654e، b/166106882)
  • پشتیبانی از پارامترهای filltype در مسیرهای گرافیک برداری برای پشتیبانی از برش‌های اشکال براساس قوانین پر کردن مسیر evenOdd یا NonZero اضافه شد. (I43dd2)
  • «زمان کار» و «سرعت» اکنون کلاس‌های درون‌خطی هستند (I48f4a)
  • مدت‌زمان اکنون یک کلاس درون‌خطی است (I565eb)
  • وقتی محدوده layoutnode تغییر می‌کند، یک تماس برگشتی اضافه کنید تا به «مالک» اطلاع دهد. (Ic40b3)
  • مشکلی برطرف شد که در آن سازنده تابع Rect با «آفست» و شعاع، Rect را به‌ترتیب چپ، راست، بالا، پایین به‌جای چپ، بالا، راست، پایین ایجاد می‌کرد.

    روش‌های همراه منسوخ‌شده در «مستطیل» برداشته شد و سازنده‌های تابع جایگزین شد.

    آزمایش‌هایی برای تأیید روش‌ها در Rect.kt اضافه شد (I08460، b/165822356)

رفع اشکال‌ها

  • ‫MutableRect، مستطیلی که می‌تواند اصلاح شود، اضافه شد. (I71bd2, b/160140398)
  • ‫Matrix4 با Matrix جایگزین شد. همه بخش‌های دیگر بسته vectormath برداشته شده است. (Ibd665،‏ b/160140398)
  • قرارداد فراخوانی برای توابع ترکیبی تغییر کرده است. این تغییر ناگهانی دودویی است. همه کتابخانه‌ها باید برای کار با این نسخه افزایه کامپایلر Compose دوباره کامپایل شوند.

    این تغییر باعث ایجاد تغییرات اساسی در سطح منبع نمی‌شود زیرا تنها میاناهای برنامه‌سازی کاربردی که تغییر کرده‌اند میاناهای برنامه‌سازی کاربردی مترجم هستند که دارای موافقت صریح هستند. (I7afd2،‏ b/158123185)

  • ازکارافتادنی که ممکن بود هنگام اعزام به PointerInputFilter باعث شود ‏PointerInputFilter به‌صورت هم‌زمان برداشته شود برطرف شد. (I58f25)

نسخه 1.0.0-alpha01

۲۶ اوت ۲۰۲۰

‫androidx.compose.ui:ui-*:1.0.0-alpha01 منتشر شد. نسخه 1.0.0-alpha01 شامل این تعهدات است.

نسخه 0.1.0-dev

نسخه 0.1.0-dev17

۱۹ اوت ۲۰۲۰

‫androidx.compose.ui:ui-*:0.1.0-dev17 منتشر شد. نسخه 0.1.0-dev17 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫emitView منسوخ شد. درصورت امکان، برای انتشار «نماها» در «نوشتن»، از AndroidView استفاده کنید. توجه داشته باشید که در آینده، نوشتن مستقیم «نماها» و «گروه‌های نما» پشتیبانی نخواهد شد، مگر اینکه این‌ها برگ‌های درخت ترکیب باشند، در این صورت می‌توان بااستفاده از 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)

  • ‫Offset به کلاس به‌خط تبدیل شده است (Iaec70)

  • پارامتر اصلاح‌گری به SelectionContainer اضافه شد (I4aada، b/161487952)

  • ‫FocusModifier منسوخ‌شده برداشته شد (I0b4ba،‏ b/160922116،‏ b/160821157،‏ b/162441435،‏ b/160822875،‏ b/160921940)

  • ‫mergePolicy لامبدا به SemanticsPropertyKey اضافه شد. از این می‌توان برای تعریف خط‌مشی سفارشی برای معناشناسی ادغام کردن mergeAllDescendants استفاده کرد. خط‌مشی پیش‌فرض این است که اگر مقدار والد ازقبل وجود داشته باشد از آن استفاده شود، درغیراین‌صورت از مقدار فرزند استفاده می‌شود. (Iaf6c4، b/161979921)

  • «محدودیت‌ها» اکنون یک کلاس درون‌خطی است (I88736)

  • ‫FocusManager اضافه شد که منطق کانونی مشترک را از AndroidComposeView خارج می‌کند (I528ef، b/161487952، b/162206799)

  • نام‌های PointerEventPass برای نسخه آلفا به‌روزرسانی شد. (Ifda6f)

  • ‫IntOffset اکنون یک کلاس درون‌خطی است (Iac0bf)

  • ‫IntSize اکنون کلاس به‌خط است (I2bf42)

  • نام PlacementScope.placeAbsolute() به PlacementScope.place() تغییر کرد و نام PlacementScope.place() قبلی به PlacementScope.placeRelative() تغییر کرد. درنتیجه، روش PlacementScope.place() دیگر به‌طور خودکار موقعیت را در زمینه‌های راست‌به‌چپ قرینه نخواهد کرد. اگر این تغییر مطلوب است، درعوض از PlacementScope.placeRelative() استفاده کنید. (I873ac، b/162916675)

  • ‫AlertDialog اکنون از FlowRow برای دکمه‌ها استفاده می‌کند (I00ec1، b/161809319، b/143682374)

  • برخی‌از ابزارهای آزمایشی را غیرعمومی کرد زیرا در جای مناسب خود قرار نداشتند. در آینده عمومی خواهد شد. (I32ab1)

  • سازماندهی مجدد کد ورودی اشاره‌گر. (Ie3f45)

  • ‫PxBounds منسوخ‌شده به‌نفع Rect. همه موارد استفاده از PxBounds با rect به‌روزرسانی شد و حاشیه‌نویسی‌های مناسب منسوخ کردن/جایگزین کردن برای کمک به انتقال اضافه شد. (I37038، b/162627058)

  • ‫KeyEvent2 منسوخ‌شده برداشته شد. درعوض از KeyEvent استفاده کنید. (Ied2d0،‏ b/162097587)

  • ‫KeyEvent دارای دارایی یونی‌کد است که می‌توان از آن برای دریافت نویسه یونی‌کد تولیدشده توسط ترکیب کلید و وضعیت کلید فراداده مشخص‌شده استفاده کرد (If3afc)

  • رویداد سفارشی DelayUp و کلاس‌های مرتبط را به میانای برنامه‌سازی کاربردی اختیاری تبدیل کردیم زیرا به‌احتمال زیاد تغییر خواهد کرد. (I56d6f)

  • ‫۲ مورد PointerEventPass که دیگر لازم نیست برداشته شد. (I3dd9d)

  • رنگ پارامتر، سایه، و TextDecoration را به Paragraph.paint اضافه کنید. این تابع برای جلوگیری از بازآفرینی غیرضروری Paragraph مفید است. (I81689)

رفع اشکال‌ها

  • کاربردهای برگشتی OnFocusChanged را از «فیلد نوشتاری» برداشت. درعوض از Modifier.focusObserver استفاده کنید. (I51089، b/161297615)
  • ‫Modifier.drawBorder نامناسب شده است. درعوض از Modifier.border استفاده کنید. کلاس داده «حاشیه» با BorderStroke جایگزین شده است (I4257d، b/158160576)
  • تماس‌های منسوخ FrameManager برداشته شد.

    میاناهای برنامه‌سازی کاربردی داخلی نوشتن تغییر کرده است تا مقدار سربار برای ردیابی کردن وضعیت اشیایی مثل mutableStateof() (I80ba6) کاهش یابد

  • ‫VerticalScroller و HorizontalScroller برداشته شده‌اند. درعوض از ScrollableColumn/Row استفاده کنید. ‫Modifier.drawBackground برداشته شده است. از «اصلاح‌گر.پس‌زمینه» استفاده کنید (I73b0d، b/163019183)

  • وقتی از چیزی که وضعیت را ذخیره می‌کند در حلقه for استفاده شود، ازکار افتادن برطرف می‌شود. اکنون داشتن همان کلید در savedInstanceState() مجاز است، api مربوط به UiSavedStateRegistry اکنون با این الزام جدید تطبیق داده شده است (I4ab76، b/160042650، b/156853976، b/159026663، b/154920561)

  • ‫state { ... } قابل ترکیب اکنون به‌نفع فراخوانی‌های صریح به remember { mutableStateOf(...) } برای وضوح منسوخ شده است. این کار سطح کلی میانای برنامه‌سازی کاربردی و تعداد مفاهیم مدیریت وضعیت را کاهش می‌دهد و با الگوی by mutableStateOf() برای واگذاری دارایی کلاس مطابقت دارد. (Ia5727)

  • نام RRect به RoundRect تغییر کرد تا بهتر با الگوهای نام‌گذاری Compose مطابقت داشته باشد سازنده‌های تابع مشابهی برای RRect ایجاد شد و سازنده‌های تابع RRect منسوخ شد (I5d325)

نسخه 0.1.0-dev16

۵ اوت ۲۰۲۰

‫androidx.compose.ui:ui-*:0.1.0-dev16 منتشر شد. نسخه 0.1.0-dev16 حاوی این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫OnChildPositioned منسوخ شده است. درعوض از OnPositioned در فرزند استفاده کنید. (I87f95, b/162109766)
  • ‫setViewContent منسوخ شده است. به‌جای آن باید از setContent استفاده شود. (I7e497, b/160335130)
  • «میانای برنامه‌سازی کاربردی AndroidViewBinding» برای ازهم بازکردن و ترکیب کردن منابع چیدمان براساس ViewBinding اضافه شد. (I081c6)
  • ‫KeyEvent2 با KeyEvent جایگزین می‌شود (I2d770، b/162097585)
  • پشتیبانی از کلید سخت‌افزاری «دگرساز» (I9036b) اضافه شد
  • ‫FocusManager منسوخ شده است. درعوض از Modifier.focus()‎،‏ Modifier.focusObserver()‎، و Modifier.focusRequester()‎ استفاده کنید. (I74ae4، b/162211322)
  • ‫loadVectorResource از مشخصه‌های trimPath پشتیبانی می‌کند (I808fe)
  • انتقال کادر گفتگو به ui (I47fa6)
  • ‫۲ مورد PointerEventPass که دیگر لازم نیست برداشته شد. (I33ca7)
  • ‫PointerInteropModifier پیاده‌سازی شد که امکان دریافت MotionEvents و تعامل با Compose را فراهم می‌کند، انگار که پیاده‌سازی Android View هستید. (Ieb08c)
  • اصلاح‌گر برچسب منسوخ را برداشت. لطفاً به‌جای آن از layoutId استفاده کنید. (Idaa05، b/162023919)
  • میاناهای برنامه‌سازی کاربردی برای پشتیبانی از راست‌به‌چپ به‌روز شده است. ‫LayoutDirectionAmbient اضافه شده است که می‌توان از آن برای خواندن و تغییر دادن جهت چیدمان استفاده کرد. ‫Modifier.rtl و Modifier.ltr برداشته شده‌اند. (I080b3)
  • پشتیبانی از برش مسیر در گرافیک‌های برداری (Ie16c9، b/158188351)
  • ‫Modifier.layout()‎ اضافه شد که امکان ایجاد راحت تعدیل‌کننده چیدمان سفارشی را فراهم می‌کند (I73b69، b/161355194)
  • میانای برنامه‌سازی کاربردی AndroidView جدیدی اضافه شد و میاناهای برنامه‌سازی کاربردی موجود منسوخ شدند. (I5bcfd)
  • ‫Modifier.plus منسوخ شده است، درعوض از Modifier.then استفاده کنید. «سپس» نشان قوی‌تری از ترتیب دارد و همچنین از تایپ کردن Modifier.padding().background() + anotherModifier جلوگیری می‌کند، که زنجیره را می‌شکند و خواندن را سخت‌تر می‌کند (Iedd58، b/161529964)
  • زیرکلاس‌های [Abstract]ComposeView View را برای میزبانی محتوای Compose در سلسله‌مراتب View اضافه کنید. (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)
  • ‫getLineEllipsisOffset/getLineEllipsisCount را بردارید. درعوض از getLineVisibleEnd/getLineEnd/isLineEllipsized استفاده کنید. (I85aa2)
  • برای دلیل رویه مطلوب، چند «علامت»/ «گزارمان» اضافه کنید. (I66b20)
  • میاناهای برنامه‌سازی کاربردی خط بیشتری را در TextLayoutResult نمایان کنید. (I79bd2)
  • تبدیل‌کننده‌های بردار داخلی برای تبدیل واحدهای داخلی اکنون ازطریق Foo.VectorConverter دردسترس هستند. برای نمونه، Dp.VectorConverter،‏ Color.VectorConverter،‏ Float.VectorConverter، و غیره (I3e273)

رفع اشکال‌ها

  • رفع اشکالات گسترده در Address API (I077bc)
    1. برداشتن میانای OffsetBase استفاده‌نشده
    2. تراز کردن کلاس‌های «آفست» و «آفست داخلی» برای داشتن سطح میانای برنامه‌سازی کاربردی یکپارچه
    3. برای هماهنگی با Offset API،‏ IntOffset.Origin را به IntOffset.Zero تغییر نام دهید
    4. روش nativeCanvas از رابط Canvas منتقل شد تا از مصرف‌کنندگان برای ایجاد نمونه‌های Canvas خودشان پشتیبانی شود
    5. کلاس EmptyCanvas برای بازسازی DrawScope ایجاد شد تا به‌جای lateinit پارامتر غیرتهی باشد و غیرتهی بودن فیلد تضمین شود
    6. نام‌گذاری مجدد ثابت‌های ClipOp به «حروف آغازین کلمات بزرگ»
    7. نام‌گذاری مجدد شمارش‌های FilterQuality به «حروف آغازین کلمات بزرگ»
    8. نام‌گذاری مجدد شمارش‌های StrokeJoin به «حروف آغازین کلمات بزرگ»
    9. نام شمارش‌های PointMode به «حروف آغازین کلمات بزرگ» تغییر کرد
    10. نام‌گذاری شمارشی PaintingStyle به «حروف آغازین کلمات بزرگ» تغییر کرد
    11. نام‌گذاری مجدد شمارشگرهای PathFillType به «حروف آغازین کلمات»
    12. نام‌گذاری مجدد شمارش‌های StrokeCap به «حروف آغازین بزرگ»
    13. پیاده‌سازی DrawCache به‌روزرسانی شد تا دیگر از پارامترهای lateinit استفاده نکند
    14. ‫DrawScope به‌روزرسانی شد تا دیگر از واگذاری تنبل برای پارامترهای داخلی fillPaint و strokePaint استفاده نکند
    15. «تصویر» قابل‌تألیف به‌روزرسانی شد تا از «جعبه» برای سربار کمتر استفاده شود
    16. به‌روزرسانی کلاس «طرح کلی» برای داشتن شرح‌های ‎ @Immutable
    17. ‫PathNode به‌روز شد تا برای هر دستورالعمل مسیر، حاشیه‌نویسی‌های ‎ @Immutable داشته باشد
    18. زیرترکیب برداری به‌روزرسانی شد تا بررسی‌های شرطی اضافی برای برابری برداشته شود زیرا ترکیب ازقبل آن‌ها را مدیریت می‌کند
    19. روش‌های سازنده همراه Rect منسوخ شد و به‌جای آن از سازنده‌های تابع استفاده شد
    20. سازندگان تابع و کلاس‌های «قلم‌مو» با ‫@Immutable و @Stable APIs به‌روزرسانی شدند
    21. به‌روزرسانی عدد ثابت VertexMode به PascalCase
    22. روش selectPaint در DrawScope به‌روزرسانی شد تا پارامترهای ضربه را در نقاشی به‌صورت شرطی بازنویسی کند، اگر تغییر کرده باشند
    23. «اندازه» به‌روزرسانی شد تا میانای برنامه‌سازی کاربردی ساختارشکن اضافه شود، UnspecifiedSize به Unspecified تغییر نام داده شد، و روش‌های استفاده‌نشده برداشته شد
  • مصرف «میانای برنامه‌سازی کاربردی» BlendMode برای نگاشت صحیح بین BlendModes چارچوب Android و حالت‌های PorterDuff براساس سطح میانای برنامه‌سازی کاربردی به‌روز شد. میانای برنامه‌سازی کاربردی BlendMode#isSupported معرفی شد تا به‌عنوان پُرسمان قابلیت عمل کند و مشخص کند آیا BlendMode قبل‌از استفاده در دستگاه پشتیبانی می‌شود یا نه. (I0ef42)
  • ‫LazyItemScope برای پارامتر itemContent فهرست‌های Lazy اضافه شد. این تابع اصلاح‌کننده‌هایی را برای پر کردن حداکثر اندازه والد ارائه می‌دهد که مورد استفاده‌ای را که در آن عنصر باید نمای دید را پر کند و اصلاح‌کننده معمولی 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)
  • ‫Material FilledTextField به TextField تغییر نام داد و foundational TextField به BaseTextField تغییر نام داد تا ساده‌ترین API موردنظر به‌راحتی قابل‌کشف و استفاده باشد (Ia6242،‏ b/155482676)
  • نام Modifier.drawBackground به Modifier.background تغییر کرده است (I13677)

نسخه 0.1.0-dev15

‫۲۲ ژوئیه ۲۰۲۰

‫androidx.compose.ui:ui-*:0.1.0-dev15 منتشر شد. نسخه 0.1.0-dev15 حاوی این تعهدات است.

به‌روزرسانی وابستگی‌ها

  • برای استفاده از نسخه 0.1.0-dev15 «نوشتن»، باید وابستگی‌هایتان را مطابق با تکه‌کدهای جدیدی که در بالا در اعلام وابستگی‌ها نشان داده شده است به‌روز کنید.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫FocusModifier به‌نفع Modifier.focus،‏ Modifier.focusRequester،‏ Modifier.focusObserver منسوخ شده است. ‫FocusState و FocusDetailedState به‌نفع FocusState2 منسوخ شده‌اند (I46919، b/160822875، b/160922136)
  • یک اصلاح‌گر برای مشاهده تغییر وضعیت تمرکز اضافه شد. ‫(I05866،‏ b/160924455،‏ b/160923326)
  • یک اصلاح‌گر به درخواست تغییرات تمرکز اضافه شد (I8dd73، b/161182057، b/160924778)
  • «منو نوارابزار» را تنظیم کنید تا کپی، برش، و جای‌گذاری به‌درستی نمایش داده شود. (Id3955)
  • اکنون دارایی‌های معنایی تک‌مقدار از سبک تماس استفاده می‌کنند. برای مثال، «semantics { hidden = true }» اکنون به‌صورت زیر نوشته می‌شود: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • ‫Modifier.focus اضافه شد که جایگزین FocusModifier می‌شود. (Ib852a، b/160924778)
  • «نوارابزار شناور» را برای انتخاب «فیلد نوشتار» اضافه کنید. (Ie8b07)
  • یک گزارمان api آزمایشی برای API مربوط به ورودی کلید (I53c0a) اضافه شد
  • یک شرح api آزمایشی برای همه «میاناهای برنامه‌سازی کاربردی» مربوط به «تمرکز» اضافه شد (I53b24، b/160903352)
  • ‫FocusState2 اضافه شد که جایگزین FocusDetailedState خواهد شد (I0a3ba، b/160822595)
  • ‫ExperimentalFocus اضافه شد که یک شرح @OptIn برای Focus API است. (I1544b، b/160820961)
  • یک کلاس واحد IntBounds اضافه شده است که نشان‌دهنده محدوده‌های پیکسل عدد صحیح از چیدمان است. «میانای برنامه کاربردی» PopupPositionProvider برای استفاده از آن به‌روز شده است. (I0d8d0، b/159596546)
  • اکنون «اعمال‌کننده» برای کنار گذاشتن ترکیب‌ها به روش clear() نیاز دارد (Ibe697)
  • ‫KeyEvent منسوخ شده است و با KeyEvent2 (I68730) جایگزین شده است
  • پرچم اختیاری جدیدی به‌نام useUnmergedTree برای آزمایش یابنده‌ها اضافه شد. (I2ce48)
  • میانای برنامه‌سازی کاربردی آزمایشی 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)

  • قبل‌از این تغییر، افزایه کامپایلر Compose اگر (I5205a، b/158123804) وجود داشت، به‌طور غیرساده‌ای تماس‌های سازنده‌ها را در تابع @Composable رهگیری می‌کرد

  • ‫Modifier.tag به Modifier.layoutId تغییر نام داد تا با Modifier.testTag اشتباه نشود. (I995f0)

  • موقعیت‌های خط تراز Int که از Placeable#get(AlignmentLine) برگردانده می‌شوند اکنون غیرتهی هستند. اگر خط تراز موردپُرسمان وجود نداشته باشد، AlignmentLine.Unspecified برگردانده خواهد شد. (I896c5، b/158134875)

  • پارامتر اصلاح‌کننده به عنصر ترکیبی AndroidView اضافه شد. (I48a88، b/158746303)

  • ‫Semantics()‎ منسوخ شده است. درعوض از Modifier.semantics()‎ استفاده کنید. (I72407،‏ b/158841414)

  • ‫viewModel() ترکیب‌شدنی را اضافه کنید که امکان ایجاد یا دریافت ViewModel ازقبل ایجادشده را به‌روش مشابه عملکرد آن در «فعالیت» یا «تکه» فراهم می‌کند (I5fdd1)

  • استفاده از IntPx با Int جایگزین شد. IntPxPosition با IntOffset جایگزین شد. ‫IntPxSize با IntSize جایگزین شد. (Ib7b44)

  • برای ادغام کردن تعداد کلاس‌های استفاده‌شده برای نمایش اطلاعات اندازه‌بندی، به‌جای PxSize، استفاده از کلاس «اندازه» را استاندارد کنید. این کار مزایای کلاس درون‌خطی را برای استفاده از long به‌منظور بسته‌بندی ۲ مقدار شناور برای نشان دادن عرض و ارتفاع نشان‌داده‌شده به‌صورت شناور فراهم می‌کند. (Ic0191)

  • برای ادغام کردن تعداد کلاس‌های استفاده‌شده برای نمایش اطلاعات مکان‌یابی، به‌جای استفاده از PxPosition، از کلاس «آفست» استفاده کنید. این کار مزایای کلاس درون‌خطی را برای استفاده از عدد صحیح طولانی برای بسته‌بندی ۲ مقدار ممیز شناور برای نمایش انحراف‌های x و y که به‌صورت ممیز شناور نمایش داده می‌شوند فراهم می‌کند. (I3ad98)

  • استفاده از کلاس Px در کلاس‌های مختلف compose به‌عنوان بخشی از تلاش بزرگ بازسازی برای تکیه کردن فقط بر Dp و انواع اولیه برای پارامترهای پیکسل جایگزین شد. کلاس Px به‌طور کامل حذف شد (I3ff33)

  • جایگزین کردن استفاده از کلاس Px در کلاس‌های مختلف ترکیب به‌عنوان بخشی از تلاش بزرگ بازسازی برای تکیه کردن فقط بر Dp و انواع اولیه برای پارامترهای پیکسل (I086f4)

  • جایگزین کردن استفاده از کلاس Px در کلاس‌های مختلف ترکیب به‌عنوان بخشی از تلاش بزرگ بازسازی برای تکیه کردن فقط بر Dp و انواع اولیه برای پارامترهای پیکسل (Id3434)

  • جایگزین کردن استفاده از کلاس Px در کلاس‌های مختلف compose به‌عنوان بخشی از تلاش بزرگ بازسازی برای تکیه کردن فقط بر Dp و انواع اولیه برای پارامترهای پیکسل (I97a5a)

  • ‫TestTag اکنون منسوخ شده است. درعوض از Modifier.testTag استفاده کنید. (If5110،‏ b/157173105)

  • پیاده‌سازی پیش‌فرض، بدون عملیات، از ParentDataModifier#modifyParentData برداشته شده است - این پیاده‌سازی معادل با عدم پیاده‌سازی رابط در وهله اول بود. (I0deaa)

  • «مقیاس‌بندی» قبلاً منسوخ شده بود و برداشته شد. درعوض از ContentScale استفاده کنید. (Ifbc5b)

  • جایگزین کردن استفاده از کلاس Px در کلاس‌های مختلف ترکیب به‌عنوان بخشی از تلاش بزرگ بازسازی برای تکیه کردن فقط بر Dp و انواع ابتدایی برای پارامترهای پیکسل (I19d02)

  • عنصر DropdownMenu را در ui-material، پیاده‌سازی منو «طراحی مواد» اضافه کرد. (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)

  • ‫DoubleTapGestureFilter اکنون ‫SingleTapGestureFilter را در سراسر درخت متمایز می‌کند. (If92b1)

  • ‫Alignment API به‌روزرسانی شد و از تراز مطلق (که در زمینه راست‌به‌چپ به‌طور خودکار قرینه نمی‌شود) پشتیبانی شد (I38cd3)

  • ‫DrawLayer modifiers api تغییر کرده است: outlineShape به shape تغییر نام داده است و مقدار پیش‌فرض آن RectangleShape است و اکنون غیرقابل تهی است؛ clipToOutline به clip تغییر نام داده است؛ clipToBounds برداشته شده است زیرا با clip == true با RectangleShape یکسان است (I7ef11، b/155075735)

  • میاناهای برنامه‌سازی کاربردی سطح بالاتر ترکیب به‌روزرسانی‌شده که «بوم نقاشی» را آشکار می‌کند به‌جای آن «محدوده بوم نقاشی» را آشکار می‌کند. این کار نیاز مصرف‌کنندگان به نگهداری اشیاء Paint خود را برطرف می‌کند. مصرف‌کنندگانی که هنوز به Canvas نیاز دارند می‌توانند از روش افزونه drawCanvas استفاده کنند که برای صدور فرمان‌های طراحی با Canvas زیرین بازخوانی ارائه می‌دهد. (I80afd)

  • «میانای برنامه‌سازی کاربردی» لامبدای انتهایی WithConstraints تغییر کرده است. اکنون به‌جای دو پارامتر، حوزه گیرنده‌ای دارد که علاوه‌بر محدودیت‌ها و layoutDirection، ویژگی‌های minWidth،‏ maxWidth،‏ minHeight، و maxHeight را در Dp ارائه می‌دهد (I91b9a، b/149979702)

  • نام LayoutModifier2 به LayoutModifier تغییر کرد. (Id29f3)

  • واسط LayoutModifier منسوخ‌شده برداشته شد. (I2a9d6)

  • توابع اندازه‌گیری ذاتی در Layout و LayoutModifier2 اکنون گیرنده IntrinsicMeasureScope دارند که میانای برنامه‌سازی کاربردی پُرسمان ذاتی را با جهت چیدمان ضمنی منتشرشده ارائه می‌دهد. (Id9945)

  • فرزندان «چیدمان» و «تغییردهنده چیدمان» را می‌توان با جهت چیدمان متفاوتی اندازه‌گیری کرد. (Ibd731)

  • ‫Modifier.zIndex() جدید برای کنترل ترتیب رسم فرزندان در چیدمان والد یکسان اضافه شده است. دارایی ارتفاع در DrawLayerModifier به shadowElevation تغییر نام داده است و دیگر ترتیب رسم را کنترل نمی‌کند. ترتیب پارامترهای DrawShadow تغییر کرده است: اکنون ارتفاع اولین پارامتر و شکل دومین پارامتر با پیش‌فرض RectangleShape است. (I20150, b/152417501)

  • ‫onSizeChange و onPositionChange در «مالک» برداشته شد. (I5c718)

  • ‫Constraints2 اضافه شد، نسخه‌ای از «محدودیت‌ها» که فقط از مقادیر محدودیت‌های «عدد صحیح» پشتیبانی می‌کند، نه IntPx. ‫IntPx برداشته خواهد شد و همه محدودیت‌های عدد صحیح مثل Android پیکسل درنظر گرفته خواهد شد.

    • ‫IntSize را نیز اضافه کردیم که درنهایت جایگزین IntPxSize خواهد شد. (I4b43a)
  • «تراز» را با مقادیر دلخواه نمونه‌سازی‌پذیر کرد. «ترازهای یک‌بعدی» اضافه شد. (Ia0c05)

  • ‫alignToSiblings اکنون به‌جای Placeable، یک Measured را می‌پذیرد. (I5788d)

  • (I45f09, b/152842521)

    • ‫ScaleFit به ContentScale تغییر نام داد
    • ‫ContentScale از ui-graphics به ui-core ماژول منتقل شد تا در همان ماژول Alignment API قرار گیرد.
    • نام FillMaxDimension به Crop تغییر کرد
    • نام FillMinDimension به Fit تغییر کرد
    • نام Fit به Inside تغییر کرد تا بهتر مطابقت داشته باشد
    • معادل‌های ImageView.ScaleType
    • اسناد اضافه‌شده نشان می‌دهد که ترکیب «برش» و «تراز کردن.مرکز» به همان نتیجه «ImageView.ScaleType.CENTER_CROP» می‌رسد و «برازنده» که با «تراز کردن.مرکز» استفاده می‌شود به همان نتیجه «ImageView.ScaleType.FIT_CENTER» می‌رسد «درون» که با «تراز کردن.مرکز» استفاده می‌شود به همان نتیجه «ImageView.ScaleType.CENTER_INSIDE» می‌رسد
  • پشتیبانی از راست‌به‌چپ برای اصلاح‌کننده‌های طراحی. (I0aaf9)

  • میانای برنامه‌سازی کاربردی برای ازهم بازکردن «نمای Android» از XML منتشر شد. برای جزئیات بیشتر، نسخه نمایشی ViewInCompose را ببینید. (I42916)

  • بهبود دادن DrawModifier API:

    • محدوده گیرنده را برای draw() به ContentDrawScope تغییر داد
    • همه پارامترهای draw() برداشته شد
    • ‫DrawScope همان رابط کاربری CanvasScope سابق را دارد
    • ‫ContentDrawScope روش drawContent() دارد (Ibaced، b/152919067)
  • ‫positionInParent و boundsInParent را برای LayoutCoordinates اضافه کرد. (Icacdd، b/152735784)

  • ‫DrawLayerModifier و drawLayer() اکنون به‌طور پیش‌فرض clipToBounds و clipToOutline را روی false تنظیم می‌کنند. (I0eb8b، b/152810850)

  • نام LayoutResult به MeasureResult تغییر کرد. (Id8c68)

  • ‫LayoutModifier2، میانای برنامه‌سازی کاربردی جدیدی برای تعریف اصلاح‌کننده‌های چیدمان، اضافه شد؛ ‫LayoutModifier (If32ac) منسوخ شد

  • جایگزین کردن «اصلاح‌گر به‌علاوه اپراتور» با توابع افزونه کارخانه (I225e4)

  • ویژگی‌های translationX/Y برای پشتیبانی از جبران فهرست نمایش فرمان‌های طراحی برای یک «لایه» معین اضافه شد. این ویژگی برای حرکت دادن محتوا در پاسخ به پویانمایی‌ها یا رویدادهای لمسی مفید است. (I8641c)

  • پارامترهای pivotX و pivotY به «میاناهای برنامه‌سازی کاربردی لایه» اضافه شد تا از چرخش و مقیاس‌بندی در اطراف نقطه‌ای خاص در لایه پشتیبانی شود (Icf7c3)

  • ‫OnPositionedModifier و OnChildPositionedModifier را اضافه کنید تا جایگزین توابع ترکیب‌پذیر OnPositioned و OnChildPositioned شود. (I2ec8f)

  • ‫LayerModifier اضافه شد، اصلاح‌گری که امکان افزودن RenderNode برای Layout را فراهم می‌کند. این ویژگی امکان تنظیم برش، کدری، چرخش، مقیاس‌بندی، و سایه‌ها را فراهم می‌کند. این مورد جایگزین RepaintBoundary خواهد شد. ‫(I7100d،‏ b/150774014)

  • جهت چیدمان از گره چیدمان والد به فرزندان منتقل می‌شود. اصلاح‌گر جهت چیدمان اضافه شد. ‫(I3d955)

  • عنصر پشته از جهت‌گیری راست‌به‌چپ پشتیبانی می‌کند (Ic9e00)

  • پشتیبانی اولیه از «راست به چپ» در چیدمان Compose (Ia5519)

  • ‫Density و DensityScope در یک میانای واحد ادغام شدند. اکنون به‌جای ambientDensity() می‌توانید از DensityAmbient.current استفاده کنید. به‌جای withDensity(density) فقط with(density) (I11cb1)

  • ‫LayoutCoordinates تغییر کرد تا providedAlignmentLines به‌جای Map به Set تبدیل شود و LayoutCoordinates عملگر get() را برای بازیابی مقدار پیاده‌سازی کند. این کار باعث می‌شود اصلاح‌گرها بتوانند یک یا چند مقدار مجموعه را بدون ایجاد مجموعه جدید برای هر اصلاح‌گر اصلاح کنند. (I0245a)

  • ‫LayoutCoordinates دیگر ویژگی موقعیت ندارد. وقتی «LayoutModifiers»، چرخش، یا مقیاس‌بندی درنظر گرفته می‌شود، دارایی موقعیت معنایی ندارد. به‌جای آن، توسعه‌دهندگان باید از parentCoordinates و childToLocal() برای محاسبه تبدیل از یک LayoutCoordinate به دیگری استفاده کنند.

    ‫LayoutCoordinates به‌جای PxSize از IntPxSize برای خصوصیت اندازه استفاده می‌کند. چیدمان‌ها از اندازه‌های پیکسل عدد صحیح برای چیدمان‌ها استفاده می‌کنند، بنابراین همه اندازه‌های چیدمان باید از اعداد صحیح استفاده کنند و نه مقادیر ممیز شناور. (I9367b)

  • بهبودهای سطح API «محدودیت‌ها» (I0fd15)

  • ‫CanvasScope API ایجاد شد که شیء Canvas را می‌پیچد تا سطح API طراحی بی‌حالت و بیانی را نمایان کند. تبدیل‌ها در محدوده گیرنده خودشان قرار دارند و اطلاعات اندازه نیز به محدوده درج مربوطه محدود می‌شود. برای پیکربندی عملیات طراحی، نیازی نیست که مصرف‌کننده شیء وضعیت Paint خود را حفظ کند.

    • ‫CanvasScopeSample اضافه شد و همچنین برنامه نمایشی به‌روزرسانی شد تا شامل نمایش گرافیک بیانی (Ifd86d) شود
  • «میانای برنامه‌سازی کاربردی» استفاده‌نشده MaskFilter برداشته شد زیرا استفاده محدودی دارد و برای شتاب سخت‌افزاری در اکثر موارد استفاده بهینه‌سازی نشده است (I54f76)

  • RectangleShape از androidx.ui.foundation.shape.* به androidx.ui.graphics.* منتقل شد (Ia74d5،‏ b/154507984)

  • همه موارد استفاده از «رنگ» تهی‌پذیر در API با غیرتهی‌پذیر جایگزین شد و به‌جای تهی از Color.Unset استفاده شد (Iabaa7)

  • پارامتر اختیاری rect اضافی به ImagePainter اضافه کنید تا از رسم زیربخش ImageAsset زیرین پشتیبانی کند (I0ea9e)

  • «رنگ تنظیم‌نشده» اضافه شد تا مقدار تنظیم‌نشده را بدون جعبه‌بندی «رنگ‌ها» نشان دهد. (If901a)

  • روش‌های افزونه Canvas.rotate و Canvas.scale را برای مصرف مختصات اختیاری محور برای تبدیل‌ها اضافه کرد. این‌ها به‌طور پیش‌فرض در گوشه بالای ترجمه بوم فعلی قرار می‌گیرند.

    همچنین Canvas.rotateRad به روش توسعه برای یکپارچگی منتقل شد (Ibaca6)

  • «میانای برنامه‌سازی کاربردی PixelMap» برای پشتیبانی از پرسش اطلاعات پیکسل از «دارایی تصویر» ایجاد شد. (I69ad6)

  • به toFrameworkRect/toFrameworkRectF به toAndroidRect/toAndroidRectF تغییر نام داد تا با قرارداد نام‌گذاری برای تبدیل‌های شیء بین Compose و میاناهای برنامه‌سازی کاربردی چارچوب Android که روی آن‌ها ساخته شده است مطابقت داشته باشد. همچنین اسناد مربوط به این میاناهای برنامه‌سازی کاربردی (I86337) به‌روزرسانی شد

  • ‫VectorPainter API اضافه شد تا جایگزین میانای برنامه‌سازی کاربردی زیرترکیب موجود برای گرافیک برداری شود. نتیجه زیرترکیب یک شیء VectorPainter به‌جای DrawModifier است. ترکیب‌های قبلی منسوخ‌شده DrawVector به‌نفع VectorPainter.

    نام «میانای برنامه کاربردی تصویر(نقاش)» به «جعبه رنگ(نقاش)» تغییر کرد عنصر ترکیبی «برداری» ایجاد شد که مانند عنصر ترکیبی «تصویر» عمل می‌کند، با این تفاوت که به‌جای «دارایی تصویر» از «دارایی برداری» استفاده می‌کند (I9af9a، b/149030271)

  • نام «تصویر» به «دارایی تصویر» تغییر کرد تا تفاوت بین داده‌های «تصویر» و عنصر ترکیبی «تصویر» که برای شرکت در چیدمان و رسم محتوا استفاده می‌شود بهتر مشخص شود. _بدنه:روش افزونه‌ای در android.graphics.Bitmap ایجاد شد، Bitmap.asImageAsset()‎، برای ایجاد نمونه‌ای از ImageAsset که برای ترکیب توسعه سنتی برنامه Android با چارچوب Compose مفید است (Id5bbd)

  • ‫TextDirection.Content اضافه شد (I48f36)

  • عملگر TextDecoration.plus (I0ad1a) اضافه شد

  • ‫Force از مقادیر شمارشی TextDirectionAlgorithm برداشته شد (Icc944)

  • نام TextDirectionAlgorithm به TextDirection تغییر کرد (I75ce8)

  • «فشار طولانی و کشیدن» را برای «انتخاب فیلد نوشتاری» پیاده‌سازی می‌کند. (I17919)

  • ‫AnnotatedString.getStringAnnotations اضافه شد که همه حاشیه‌نویسی‌ها را در محدوده برمی‌گرداند. (I1fa00)

  • نام بسته Locale و LocaleList از androidx.ui.text به androidx.ui.intl تغییر کرد (I8132c)

  • مکان‌نمای «فیلد نوشتاری» پویانمایی چشمک‌زن دارد (Id10a7)

  • تغییر API: نام AnnotatedString(builder: Builder) به annotatedString(builder: Builder) تغییر کرد. (Ia6377)

  • تغییر API: نام AnnotatedString.Item به AnnotatedString.Range تغییر کرد. (I2d44d)

  • نام AnnotatedString.Builder.addAnnotationString را به addStringAnnotation تغییر دهید. (I5059e)

  • اکنون بااستفاده از SoftwareKeyboardController که ازطریق بازخوان onTextInputStarted ارائه می‌شود، می‌توان صفحه‌کلید نرم‌افزاری را پنهان/آشکار کرد (I8dc44، b/151860051)

  • عملگر به‌علاوه برای (Text/Paragraph/Span)Style اضافه شد که به تابع merge() واگذار می‌کند. (Ia1add)

  • ‫FontWeight.lerp دیگر به‌سرعت تغییر نمی‌کند. همچنان یک کلاس داده است. (I521c2)

  • سازنده FontWeight اکنون عمومی است، دیگر کلاس داده نیست. (Id6b1f)

  • افزودن getLineStart،‏ getLineEnd،‏ getEllipsisOffset، و getEllipsisCount به TextLayoutResult (Ibc801)

  • نام واحد ui-text به ui-text-core تغییر کرد (I57dec)

  • «کلاس اندازه» بدون استفاده برداشته شد زیرا «کلاس اندازه» تکراری در واحد ui-geometry وجود دارد که مصرف می‌شود. (I1b602)

  • ‫AdapterList اضافه شد، عنصر فهرست پیمایش‌شدنی که فقط موارد نمایان را می‌سازد و چیدمان می‌کند. مشکلات شناخته‌شده فعلی شامل این است که فقط عمودی است و به‌طور کامل از عهده همه موارد تغییر در فرزندانش برنمی‌آید. (Ib351b)

  • افزودن پارامترهای حاشیه، قاب، شکل، و پس‌زمینه به «چارگوش» (I05027، b/148147281)

رفع اشکال‌ها

  • بازخوان onFocusChange در فیلدهای نوشتاری به onFocusChanged تغییر نام داد (Ida4a1)
  • ‫VerticalScroller و HoriziontalScroller منسوخ شده‌اند. از ScrollableColumn و ScrollableRow برای تجربه داخلی با رفتار و پارامترهای Column/Row، یا Modifier.verticalScroll و Modifier.horizontalScroll در عنصر خودتان استفاده کنید. به‌همین ترتیب، ScrollerPosition به‌نفع ScrollState منسوخ شده است (I400ce، b/157225838، b/149460415، b/154105299)
  • نام runOnIdleCompose به runOnIdle تغییر کرد (I83607)
  • چندین API آزمایشی برای شهودی‌تر شدن تغییر نام دادند. همه میاناهای برنامه‌سازی کاربردی findXYZ به onNodeXYZ تغییر نام داده شدند. نام همه «میاناهای برنامه‌سازی کاربردی doXYZ» به performXYZ تغییر کرد. (I7f164)
  • اکنون «واسط کاربر نوشتن» می‌تواند بدون نیاز به ترکیب جدید، در ViewGroups ترکیب شود. برای نمونه، ViewInteropDemo را ببینید. (I9ab0b, b/160455080)
  • ‫sortWith و removeRange به MutableVector اضافه شد (Icccf7)
  • «دستگیره‌های انتخاب کشیدنی» را پیاده‌سازی کنید تا انتخاب «فیلد نوشتاری» را تغییر دهید. (I27032)
  • برداشتن کلاس درون‌خطی Shader که کلاس انتظار NativeShader را می‌پیچید نام NativeShader به Shader تغییر یافت. کلاس درون‌خطی Shader بسته‌بندی‌شده چیزی ارزشمند به سطح API اضافه نکرد و کلاس درون‌خطی بود، بنابراین از کلاس NativeShader مستقیماً استفاده کنید. (I25e4d)
  • ‫PainterModifier بازسازی شد تا دیگر براساس محدودیت‌های داده‌شده و پارامتر ContentScale مقیاس‌بندی ارائه نکند. پیاده‌سازی‌های Painter باید محتوای طراحی خود را براساس اندازه داده‌شده DrawScope که در آن طراحی می‌کنند، مقیاس‌بندی کنند.

    مشکلی رفع شد که در آن اندازه بیت‌مپ حافظه نهان VectorPainter به اندازه پیش‌فرض آن تنظیم می‌شد به‌جای اینکه به اندازه داده‌شده برای رسم کردن تنظیم شود.

    ‫ImagePainter به‌روزرسانی شد تا محتوایش را مقیاس‌بندی کند به‌جای اینکه برای انجام این کار از PainterModifier استفاده کند. (I6ba90)

  • افزودن تابع سطح بالا باFrameNanos برای زمان‌بندی پویانمایی (Ie34c5)

  • گزارمان @Untracked منسوخ شده است. جایگزینی با @ComposableContract(tracked=false) (Id211e)

  • ‫androidx.ui.foundation.TextFieldValue و androidx.ui.input.EditorValue منسوخ شده است. ترکیب‌های TextField،‏ FilledTextField، و CoreTextField که از این نوع استفاده می‌کنند نیز منسوخ شده‌اند. لطفاً به‌جای آن از androidx.ui.input.TextFieldValue استفاده کنید (I4066d، b/155211005)

  • رفع مشکلی که در آن توزیع ورودی اشاره‌گر باعث ازکارافتادن برنامه می‌شد اگر فیلترهای ورودی اشاره‌گر ازطریق ترکیب فرعی درطول توزیع برداشته می‌شدند. اکنون این مشکل رفع شده است. (I1f48b،‏ b/157998762)

  • رفع مشکلی که در آن توزیع ورودی اشاره‌گر باعث ازکارافتادن برنامه می‌شد اگر «فیلترهای ورودی اشاره‌گر» ازطریق ترکیب فرعی درطول توزیع برداشته می‌شدند. اکنون این مشکل رفع شده است. (Iab398،‏ b/157998762)

  • کلاس «شعاع» بازسازی شد تا به کلاس درون‌خطی تبدیل شود. روش‌های ایجاد همراه را به‌نفع سازنده تابع با پارامتر پیش‌فرض برداشتیم تا شعاع در امتداد محور y با شعاع پارامتر محور x اجباری مطابقت داشته باشد.

    ‫DrawScope.drawRoundRect به‌روزرسانی شد تا به‌جای ۲ مقدار شناور جداگانه برای شعاع در امتداد محور x و y، یک پارامتر Radius مصرف کند (I46d1b)

  • ترکیب‌بندی Recompose دیگر یک انتزاع مفید نیست. بیشتر بازآرایی‌ها باید درنتیجه تخصیص‌های MutableState انجام شود. برای هر چیزی فراتر از آن، توصیه می‌شود از تابع invalidate برای راه‌اندازی یک ترکیب مجدد از محدوده فعلی استفاده کنید. (Ifc992)

  • جایگزین کردن استفاده از کلاس Px در کلاس‌های مختلف ترکیبی به‌عنوان بخشی از تلاش بزرگ بازسازی برای تکیه کردن فقط بر Dp و انواع ابتدایی برای پارامترهای پیکسل (Iede0b)

  • استراتژی تولید کد کامپایلر Compose را تغییر می‌دهد. پیش‌از این تغییر، کامپایلر Compose تماس‌ها را به توابع ترکیب‌شدنی تبدیل می‌کرد. با این تغییر، اکنون بدنه تابع ترکیبی را تبدیل می‌کنیم و سایت تماس را (بیشتر اوقات) بدون تغییر باقی می‌گذاریم.

    این یعنی بیشتر منطقی که با زمان اجرای Compose ارتباط برقرار می‌کند در ابتدای بدنه تابع اتفاق می‌افتد، نه در محل فراخوانی.

    این تغییر باید برای همه موارد استفاده از نوشتن سازگار با منبع باشد. اکثر کاربران Compose نباید درنتیجه این تغییر کد را به‌روز کنند.

    برای پشتیبانی از این کار، امضای JVM همه توابع ترکیب‌پذیر تغییر کرده است. تابع «ترکیب‌شدنی» که یک پارامتر را می‌پذیرد به تابعی تبدیل می‌شود که ۳ پارامتر را می‌پذیرد، پارامترهای اضافی عبارت‌اند از «ترکیب‌کننده»، عدد صحیح «کلید»، عدد صحیح ماسک بیتی که برای انتشار فراداده ازطریق تماس‌ها استفاده می‌شود.

    ‫Compose اکنون آرگومان‌های پیش‌فرض را نیز به تابع ترکیب‌شدنی تبدیل می‌کند. این کار بدون معرفی سربار پیش‌فرض مصنوعی اضافی برای خود تابع انجام می‌شود، بنابراین این تغییر منجر به تعریف توابع کمتری خواهد شد.

    تغییرات رفتاری عمدی شناخته‌شده ناشی از این:

    1. برخی‌از تماس‌ها در جایی که قبلاً رد نمی‌شدند رد خواهند شد
    2. اکنون عبارت‌های ترکیبی در عبارت‌های آرگومان پیش‌فرض به‌درستی مشترک می‌شوند و مدیریت می‌شوند

    این کار شامل برخی بهینه‌سازی‌ها بود: ‫۱. نتیجه مقایسه‌های پارامترها ازطریق گراف تماس به دیگر توابع ترکیبی منتقل می‌شود. این کار منجر به مقایسه‌های کمتر در زمان اجرا می‌شود، اندازه جدول جایگاه را کاهش می‌دهد، و همچنین باعث می‌شود توابع ترکیبی که قبلاً رد نمی‌شدند بیشتر رد شوند ۲. پارامترهایی که در زمان ترجمه «ایستا» تشخیص داده می‌شوند دیگر در زمان اجرا مقایسه یا ذخیره نمی‌شوند. این کار تعداد مقایسه‌ها و اندازه جدول جایگاه را کاهش می‌دهد. ۳. از ساختار جریان کنترل بدنه توابع برای به‌حداقل رساندن تعداد گروه‌های تولیدشده استفاده می‌شود. این کار اندازه جدول شکاف را کاهش می‌دهد و درنتیجه زمان اجرا کار کمتری انجام می‌دهد ‫۴. پارامترهای گیرنده و اعزام استفاده‌نشده به توابع در تعیین قابلیت رد کردن تابع لحاظ نمی‌شوند، مگر اینکه در بدنه تابع استفاده شوند.

    بیشتر تغییرات اساسی مربوط به میاناهای برنامه‌سازی کاربردی‌ای بود که کامپایلر مستقیماً آن‌ها را هدف قرار می‌دهد و استفاده معمول از Compose تحت‌تأثیر قرار نخواهد گرفت: ۱. Composer::startExpr برداشته شد ‫۲. ‫Composer::endExpr برداشته شد ‫۳. Composer::call منسوخ شده است ‫۴. سربارهای غیر varargs از key برداشته شده است. ازاین‌پس از نسخه vararg استفاده کنید. ۵. گزارمان Pivotal منسوخ شده است. از key به‌عنوان جایگزین استفاده کنید. ۶. ‫ScopeUpdateScope::updateScope تغییر کرد تا به‌جای Function1، انتظار Function3 داشته باشد ‫restartableFunction و restartableFunctionN به‌روز شدند تا پارامترهای زمان گردآوری اضافی را دربر بگیرند (I60756، b/143464846)

  • اصلاح‌کننده‌های منسوخ‌شده LayoutAlign برداشته شد. (I10877)

  • ‫RepaintBoundary برداشته شد و DrawLayerModifier جایگزین آن شد (I00aa4)

  • اکنون دکمه، FloatingActionButton، و Clickable پارامتر enabled جداگانه‌ای دارند. برخی‌از پارامترهای «دکمه» تغییر نام داده یا ترتیب آن‌ها تغییر کرده است. (I54b5a)

  • ‫ButtonStyle با توابع متمایز جایگزین شد و بار اضافه نوشتار (رشته) برداشته شد. برای اطلاعات استفاده، نمونه‌های به‌روزشده را ببینید. (If63ab،‏ b/146478620،‏ b/146482131)

  • تغییرات ناگهانی در ambients API. برای جزئیات، گزارش و مستندات Ambient<T> را ببینید (I4c7ee، b/143769776)

  • عملکرد پیش‌فرض TextDirection تغییر کرد تا براساس LayoutDirection تعیین شود. یعنی اگر LayoutDirection از راست به چپ باشد، TextDirection پیش‌فرض از راست به چپ خواهد بود. قبلاً 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)