میانای کاربر نوشتن
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(برای همه بستههای 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 onlyComposeView.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جدید تنظیم شد. سازنده varargFontVariation.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 و بالاتر، دارایی جدید
credentialRequestSemantics و دستیارCredentialRequestDataاضافه شد تا فیلدهای نوشتاری Jetpack Compose بتوانند ازطریق چارچوب «تکمیل خودکار» با «مدیر اطلاعات اعتباری» Android ادغام شوند. (Ida2bf، b/488446455) - تابع کارخانه
ParagraphIntrinsicsرا اضافه کرد که آرگومانsoftWrapرا در میان آرگومانهای دیگر میگیرد. در داخل، میتوانیم از آن بهعنوان نشانهای برای اینکه نوشتار بهعنوان یک خط واحد پرداز میشود استفاده کنیم و بهینهسازیهای خاصی را انجام دهیم. (I66ca4، b/485495112) - پشتیبانی از صداهای تعامل خودکار (کلیکها و پیمایش کانونی) به عناصر «نوشتن» اضافه شد، با
SoundEffectOnInteractionComposable جدید برای امکان انصراف دادن. توجه داشته باشید که در نتیجه این تغییر، اکنون باید شنوندگان کلیک معنایی از رشته اصلی فراخوانی شوند که ممکن است بر تعداد کمی از موارد آزمایشی تأثیر بگذارد. (I78f65) - عملکرد کارخانهای تثبیتشده
FontکهvariationSettingsطول میکشد. (I183f2) - ویژگی
ResourceFontloadingStrategyو روش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 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- تغییر نام
PreviewWrapperAPI برای یکپارچگی (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)
رفع اشکالها
- برای تغییر خصوصیت «قابلتغییر وضعیت»،
CONTENT_CHANGE_TYPE_CHECKEDرا ارسال کنید. (I6ac64، b/476894689، b/474538004، b/475754416)
همیاری خارجی
- نام مستعار نوع
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برداشته شد. «میاناهای برنامهسازی کاربردی» نسخه v2run*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،FontSynthesisvalueOfتابع اکنون هنگام دریافت مقدار ناشناخته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) - افزودن پشتیبانی از مقادیر تاریخ در تکمیل خودکار در
FillableDataAPI. 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) - «میانای برنامهسازی کاربردی» جدید برای فعال و غیرفعال کردن پویا عناصر مشترک که همچنین امکان محاسبه اینکه آیا ازقبل انتقال عنصر مشترک درحال انجام وجود دارد یا نه را فراهم میکند. «میانای برنامهسازی کاربردی» جدید برای تنظیم محدودههای هدف جایگزین وقتی عنصر مشترک هدف درطول انتقال ازبین میرود. میانای برنامهسازی کاربردی جدید برای دریافت
LayoutCoordinatesLookaheadScope. (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و هنگام فراخوانی درTestRulecompose: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وLazyLayoutd791b11 - درخواستهای اندازهگیری مجدد برای عناصر ازپیشساختهشده را رد کنید. این اشکال بر عملکرد پیمایش چیدمانهای تنبل تأثیر میگذاشت زیرا پیشواکشی در برخی موارد بهطور کارآمد کار نمیکرد و اندازهگیری در چارچوب انجام میشد. 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وonExitFocusProperties(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 شامل این تعهدها است.
رفع اشکالها
- برخیاز اصلاحات تعاملپذیری تمرکز را که باعث پسرفت میشد غیرفعال میکند. (b9d998، b/369256395، b/378570682، b/376142752، b388590015/، b/389994198، b/391378895)
نسخه 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و هنگام فراخوانی درTestRulecompose: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)
- بازنویسی
requestAutofillAPI برای وجود در خارج از مدیر تکمیل خودکار. (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)
همیاری خارجی
-
AlignmentLinesMapاکنون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 شامل این تعهدات است.
رفع اشکالها
- توابع مرتبط با ورودی نوشتاری
SemanticsNodeInteractionperformTextReplacement،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) -
GraphicsLayerAPI آشکارشده برای ارائه انعطافپذیری تعریفشده توسط توسعهدهنده در ضبط کردن دستورات رسم که میتوانند برای رسم در جاهای دیگر استفاده شوند و همچنین جلوههای دیداری مختلفی را به نتیجه نهایی اعمال کنند. (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جدیدی برای پشتیبانی از ایجاد منطق رویکرد سفارشی در «گره اصلاحکننده» صریح اضافه شد. همچنین یکDeferredTargetAnimationAPI آزمایشی جدید برای پویانماییهایی که هدف آنها در زمان نمونهسازی ناشناخته است اضافه شد. (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گسترش یافت. DeviceConfigurationOverrideAPI را به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)«میاناهای برنامهسازی کاربردی»
SwipeToRevealMaterial (برای «کارتها» و «تراشهها») اکنون برای ایجاد آن جایگاهها بهجای نمونههای مبتنی بر کلاس داده، به «میانای برنامهسازی کاربردی» مبتنی بر جایگاه (طبق توصیه 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) -
LoremIpsumPreviewParameterProviderرا به کلاس باز تبدیل کرد. (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) -
ColorFilterAPI بهروز شد تا انواع زیرکلاس مشخصی برای بهبود قابلیت بازرسی پارامترها داشته باشد. (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) -
DrawScopeapi بهروزرسانی شد تا امکان هدفیابی مجدد پردازش در بوم دیگری با تراکم/جهت چیدمان و اندازه جایگزین معرفی شود. -
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) -
asComposePaintAPI اضافه شد تا جایگزین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 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
asComposePaintAPI اضافه شد تا مصرف نمونهandroid.graphics.Paintبرای استفاده در «نگارش» فعال شود
رفع اشکالها
-
asComposePaintAPI اضافه شد تا جایگزین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) -
PathAPI تبدیل را اضافه کنید تا تبدیلهای ترجمه/مقیاس/چرخش را روی اشیای مسیر اعمال کنید. (I23434، b/233772232) - روش
ColorProducerproduceنامیده میشود. (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وHyphensAPI در 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)
-
FontVariationAPI اکنون پایدار است (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(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface 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اکنون از دستورگانinKotlin برای فراخوانی تابع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.setContentIllegalStateExceptionرا پرتاب خواهد کرد. (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.resolveState<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برای شروع ارسال رویدادهای موشواره استفاده کنید، یا رویدادهای موشواره را ازطریق داراییMouseMultiModalInjectionScopeدرطول اشاره ورودی چندوجهی با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است، با دو تفاوت جزئی:- وقتی رویداد پایین فرستاده میشود درحالیکه اشارهگرها بدون ارسال رویداد حرکت جابهجا شدهاند (بهعبارت دیگر،
updatePointerTo()استفاده شده است، اماmove()استفاده نشده است، و سپسdown()فراخوانده میشود)، پیادهسازی قبلی زمان رویداد را پیش میبرد و رویداد حرکت را قبلاز ارسال رویداد پایین ارسال میکند. پیادهسازی جدید همچنان رویداد حرکت را ارسال میکند، اما زمان رویداد را در این سناریو خاص پیش نمیبرد. - هنگام ارسال رویداد بالا درحالیکه اشارهگرها بدون ارسال رویداد حرکت جابهجا شده بودند (مشابه بالا)، پیادهسازی قبلی زمان رویداد را پیش میبرد و رویداد حرکت را قبلاز ارسال رویداد بالا ارسال میکرد. پیادهسازی جدید هیچکدام از این کارها را انجام نمیدهد: موقعیتهای جدید اشارهگرها فقط ازطریق رویداد بالا منعکس میشوند.
در آخر،
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بهروزرسانی شد تا به Kotlin1.5.30وابسته باشد. (I74545)
تغییرات میانای برنامهسازی کاربردی
-
Modifier.inspectableبرای پیچیدن اصلاحکنندههای دیگر اضافه شد. (I1909b، b/191017532) -
BlurredEdgeTreatmentAPI اضافه شد تا موارد استفاده از محو کردن را به ترکیبهای متداولتر پرچمهای کلیپ و 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 و AGP7.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) -
FocusStateenum با رابط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) -
performTextInputSelectionAPI آزمایشی (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 در
ComposeRootRegistrytearDownRegistry()(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برداشته شد.
RememberObserveronAbandonedرا اضافه میکند که اگر نمونه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، برای ساختن از پایین به بالا بسیار کارآمدتر از ساختن از بالا به پایین هستند. قبلاز این تغییر، برای پیادهسازی از پایین به بالا، پشتهای از درجها لازم بود که باید در هر برنامهای که به ساختار از پایین به بالا برای عملکرد نیاز داشت کپی میشد. با این تغییر،ApplierinsertBottomUp()را ملغی میکند تا درخت را از پایین به بالا بسازد و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)
- برداشتن میانای OffsetBase استفادهنشده
- تراز کردن کلاسهای «آفست» و «آفست داخلی» برای داشتن سطح میانای برنامهسازی کاربردی یکپارچه
- برای هماهنگی با Offset API، IntOffset.Origin را به IntOffset.Zero تغییر نام دهید
- روش nativeCanvas از رابط Canvas منتقل شد تا از مصرفکنندگان برای ایجاد نمونههای Canvas خودشان پشتیبانی شود
- کلاس EmptyCanvas برای بازسازی DrawScope ایجاد شد تا بهجای lateinit پارامتر غیرتهی باشد و غیرتهی بودن فیلد تضمین شود
- نامگذاری مجدد ثابتهای ClipOp به «حروف آغازین کلمات بزرگ»
- نامگذاری مجدد شمارشهای FilterQuality به «حروف آغازین کلمات بزرگ»
- نامگذاری مجدد شمارشهای StrokeJoin به «حروف آغازین کلمات بزرگ»
- نام شمارشهای PointMode به «حروف آغازین کلمات بزرگ» تغییر کرد
- نامگذاری شمارشی PaintingStyle به «حروف آغازین کلمات بزرگ» تغییر کرد
- نامگذاری مجدد شمارشگرهای PathFillType به «حروف آغازین کلمات»
- نامگذاری مجدد شمارشهای StrokeCap به «حروف آغازین بزرگ»
- پیادهسازی DrawCache بهروزرسانی شد تا دیگر از پارامترهای lateinit استفاده نکند
- DrawScope بهروزرسانی شد تا دیگر از واگذاری تنبل برای پارامترهای داخلی fillPaint و strokePaint استفاده نکند
- «تصویر» قابلتألیف بهروزرسانی شد تا از «جعبه» برای سربار کمتر استفاده شود
- بهروزرسانی کلاس «طرح کلی» برای داشتن شرحهای @Immutable
- PathNode بهروز شد تا برای هر دستورالعمل مسیر، حاشیهنویسیهای @Immutable داشته باشد
- زیرترکیب برداری بهروزرسانی شد تا بررسیهای شرطی اضافی برای برابری برداشته شود زیرا ترکیب ازقبل آنها را مدیریت میکند
- روشهای سازنده همراه Rect منسوخ شد و بهجای آن از سازندههای تابع استفاده شد
- سازندگان تابع و کلاسهای «قلممو» با @Immutable و @Stable APIs بهروزرسانی شدند
- بهروزرسانی عدد ثابت VertexMode به PascalCase
- روش selectPaint در DrawScope بهروزرسانی شد تا پارامترهای ضربه را در نقاشی بهصورت شرطی بازنویسی کند، اگر تغییر کرده باشند
- «اندازه» بهروزرسانی شد تا میانای برنامهسازی کاربردی ساختارشکن اضافه شود، 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تغییر نام داد و foundationalTextFieldبه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)
-
- 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 اکنون آرگومانهای پیشفرض را نیز به تابع ترکیبشدنی تبدیل میکند. این کار بدون معرفی سربار پیشفرض مصنوعی اضافی برای خود تابع انجام میشود، بنابراین این تغییر منجر به تعریف توابع کمتری خواهد شد.
تغییرات رفتاری عمدی شناختهشده ناشی از این:
- برخیاز تماسها در جایی که قبلاً رد نمیشدند رد خواهند شد
- اکنون عبارتهای ترکیبی در عبارتهای آرگومان پیشفرض بهدرستی مشترک میشوند و مدیریت میشوند
این کار شامل برخی بهینهسازیها بود: ۱. نتیجه مقایسههای پارامترها ازطریق گراف تماس به دیگر توابع ترکیبی منتقل میشود. این کار منجر به مقایسههای کمتر در زمان اجرا میشود، اندازه جدول جایگاه را کاهش میدهد، و همچنین باعث میشود توابع ترکیبی که قبلاً رد نمیشدند بیشتر رد شوند ۲. پارامترهایی که در زمان ترجمه «ایستا» تشخیص داده میشوند دیگر در زمان اجرا مقایسه یا ذخیره نمیشوند. این کار تعداد مقایسهها و اندازه جدول جایگاه را کاهش میدهد. ۳. از ساختار جریان کنترل بدنه توابع برای بهحداقل رساندن تعداد گروههای تولیدشده استفاده میشود. این کار اندازه جدول شکاف را کاهش میدهد و درنتیجه زمان اجرا کار کمتری انجام میدهد ۴. پارامترهای گیرنده و اعزام استفادهنشده به توابع در تعیین قابلیت رد کردن تابع لحاظ نمیشوند، مگر اینکه در بدنه تابع استفاده شوند.
بیشتر تغییرات اساسی مربوط به میاناهای برنامهسازی کاربردیای بود که کامپایلر مستقیماً آنها را هدف قرار میدهد و استفاده معمول از 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)