رابط کاربری را بنویسید
اندروید.کامپوز.ui
هندسه رابط کاربری اندروید (androidx.compose.ui.geometry)
گرافیک رابط کاربری اندروید
پلتفرم اندروید.کامپوز.یو.آی
androidx.compose.ui.test
( برای مشاهدهی تمام بستههای compose به مستندات مرجع API مراجعه کنید )
آخرین بهروزرسانی | انتشار پایدار | کاندیدای انتشار | انتشار بتا | انتشار آلفا |
---|---|---|---|---|
۲۲ اکتبر ۲۰۲۵ | ۱.۹.۴ | - | ۱.۱۰.۰-بتا۰۱ | - |
ساختار
Compose ترکیبی از ۷ شناسه گروه Maven در androidx
است. هر گروه شامل زیرمجموعهای هدفمند از عملکردها است که هر کدام مجموعه یادداشتهای انتشار خود را دارند.
این جدول گروهها و پیوندهای مربوط به هر مجموعه از یادداشتهای انتشار را توضیح میدهد.
گروه | توضیحات |
---|---|
ساخت.انیمیشن | برای غنیسازی تجربه کاربری، در برنامههای Jetpack Compose خود انیمیشن بسازید. |
کامپایلر compose | توابع @Composable را تبدیل کنید و بهینهسازیها را با یک افزونه کامپایلر Kotlin فعال کنید. |
آهنگسازی.بنیاد | با استفاده از بلوکهای سازنده آماده، برنامههای Jetpack Compose بنویسید و پایه و اساس را برای ساخت قطعات سیستم طراحی خود گسترش دهید. |
نوشتن.ماده | رابطهای کاربری Jetpack Compose را با کامپوننتهای آمادهی طراحی متریال بسازید. این نقطهی ورود سطح بالاتر Compose است که برای ارائه کامپوننتهایی مطابق با کامپوننتهای شرح داده شده در www.material.io طراحی شده است. |
ترکیب.material3 | ساخت رابطهای کاربری Jetpack Compose با کامپوننتهای Material Design 3، تکامل بعدی طراحی متریال. متریال ۳ شامل قالببندی و کامپوننتهای بهروز شده و ویژگیهای شخصیسازی Material You مانند رنگ پویا است و به گونهای طراحی شده است که با سبک بصری جدید اندروید ۱۲ و رابط کاربری سیستم هماهنگ باشد. |
نوشتن.زمان اجرا | بلوکهای سازندهی اساسی مدل برنامهنویسی و مدیریت حالت Compose، و زمان اجرای اصلی برای افزونهی کامپایلر Compose جهت هدف قرار دادن. |
آهنگسازی.ui | اجزای اساسی رابط کاربری compose که برای تعامل با دستگاه مورد نیاز هستند، شامل طرحبندی، ترسیم و ورودی. |
اعلام وابستگیها
برای افزودن یک وابستگی به Compose، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven گوگل را مطالعه کنید.
وابستگیهای مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.compose.ui:ui:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
کاتلین
dependencies { implementation("androidx.compose.ui:ui:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
برای اطلاعات بیشتر در مورد وابستگیها، به «افزودن وابستگیهای ساخت» مراجعه کنید.
بازخورد
بازخورد شما به بهبود Jetpack کمک میکند. اگر مشکلات جدیدی کشف کردید یا ایدههایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. میتوانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه ۱.۱۰
نسخه ۱.۱۰.۰-بتا۰۱
۲۲ اکتبر ۲۰۲۵
androidx.compose.ui:ui-*:1.10.0-beta01
منتشر شد. نسخه 1.10.0-beta01 شامل این کامیتها است.
تغییرات API
- بهینهسازی برای ارسال تغییر فوکوس اضافه میکند. این قابلیت را میتوان با
isOptimizedFocusEventDispatchEnabled = false
( I919fb , b/449228515 ) غیرفعال کرد. - تمام APIهای لمس غیرمستقیم را بهروزرسانی میکند تا از نام APIهای اشارهگر غیرمستقیم برای تطبیق با APIهای ورودی اشارهگر استفاده کنند. ( I238ce ، b/451607214 )
- توابع
valueOf
TextDirection
،TextAlign
،Hyphens
وFontSynthesis
اکنون هنگام دریافت مقدار نامشخص، خطایIllegalArgumentException
صادر میکنند. ( I07c67 ) -
CompositionDataTree.makeTree
را بهروزرسانی کنید تا به جای تابع پوششی، مقادیر پیشفرض را ارسال کند. ( Id64a6 ، b/445229688 ) - APIهای قواعد تست
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 )
نسخه ۱.۱۰.۰-آلفا۰۵
۸ اکتبر ۲۰۲۵
androidx.compose.ui:ui-*:1.10.0-alpha05
منتشر شد. نسخه 1.10.0-alpha05 شامل این کامیتها است.
رفع اشکالات
- اشکالی که باعث میشد پاپآپهای تو در تو به اشتباه در بالای صفحه قرار بگیرند، برطرف شد؛ اکنون آنها به درستی به پاپآپ والد خود متصل میشوند. ( Id4603 ، b/191279752 )
- مشکل بستهبندی فوکوس با سایر نماها در سلسله مراتب برطرف شد. ( I95223 ، b/446028624 )
- فیلدهایی که پارامترهای درونخطی آنها در تابع بازرس در لامبداهای تولید شده توسط کاتلین ۲.۲.۲۰ ( I9855d ، b/447110005 ) وجود نداشت، رفع شدند.
- سایه نام منابع تکمیل خودکار بین رابط کاربری و ماژولهای پایه ( I5da5a ) را برطرف میکند.
مشارکت خارجی
- شیء
UiModes
به AndroidUiModes تغییر نام داده شده است تا نشان دهد که ثابتهای آن از API اندروید برداشته شدهاند. ( Ia0a77 )
نسخه ۱.۱۰.۰-آلفا۰۴
۲۴ سپتامبر ۲۰۲۵
androidx.compose.ui:ui-*:1.10.0-alpha04
منتشر شد. نسخه 1.10.0-alpha04 شامل این کامیتها است.
تغییرات API
- نوع قانون تست Compose که پارامتر
CoroutineContext
را میپذیرد، به پایدار ارتقا یافته است. حاشیهنویسی آزمایشی حذف شده است و توسعهدهندگان دیگر نیازی به انتخاب برای استفاده از این API ندارند. ( 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()
از طریق Delegation استفاده میشود و امکان گسترش این قابلیت را درModifier.Node
سفارشی شما فراهم میکند. ( I70d84 , b/443001320 )
رفع اشکالات
- مشکلی که باعث میشد محتوای درونخطی هنگام قرارگیری در خط آخر متن چندخطی بیضیشکل، علیرغم وجود placeholder قبل از ناحیه بیضیشکل، رندر نشود، برطرف شد. ( I76aaf ، b/441829208 )
نسخه ۱.۱۰.۰-آلفا۰۳
۱۰ سپتامبر ۲۰۲۵
androidx.compose.ui:ui-*:1.10.0-alpha03
منتشر شد. نسخه 1.10.0-alpha03 شامل این کامیتها است.
تغییرات API
- نام
DelegatableNode.invalidateLayoutForSubtree
را بهDelegatableNode.invalidateMeasurementForSubtree
تغییر میدهد. ( I94257 ، b/430106107 ) - تطبیقدهندهی تکراریِ
isInHiddenAccessibilitySubtree
حذف میکند. ( I4476c ، b/443792965 ) - ردیابیهای پشته Compose مبتنی بر کلید گروهی را معرفی میکند که به طور پیشفرض برای همه برنامههای کوچکشده فعال هستند. نگاشت proguard برای این ردیابیها توسط افزونه Gradle کامپایلر Compose از Kotlin 2.3.0 شروع میشود. ( 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 ) - پشتیبانی از مقادیر تاریخ در تکمیل خودکار در API
FillableData
اضافه شود.val dateMillisValue: Long
برای بازیابی اطلاعات تاریخ اضافه شده است، و یک سازندهFillableData(dateMillisValue: Long)
مربوطه برای ایجاد نمونههایFillableData
مبتنی بر تاریخ اضافه شده است. ( Id072a )
مشارکت خارجی
- شیء
UiModes
برای اعلان ثابتهایی که برای حاشیهنویسیUiMode
استفاده میشوند، معرفی شده است ( I03cb8 )
نسخه ۱.۱۰.۰-آلفا۰۲
۲۷ آگوست ۲۰۲۵
androidx.compose.ui:ui-*:1.10.0-alpha02
منتشر شد. نسخه 1.10.0-alpha02 شامل این کامیتها است.
تغییرات API
- بهروزرسانی
FillableData
برای پشتیبانی از اجزای غیرمتنی مانند دکمههای تغییر وضعیت و لیستها، شامل مقادیر بولی و صحیح درونFillableData
و سازندههای کارخانهای برای ایجاد نمونههای بولی و لیستی ازFillableData
که بهAutofillValue
پلتفرم ترجمه میشوند. ویژگی و عمل معنایی مربوطه نیز اضافه شده است. ( Ia8105 ، Icc5cf ) - در حالت غیر لمسی، سیستم نمایش، فوکوس اولیه/پیشفرض را به یکی از آیتمهای قابل فوکوس روی صفحه اختصاص میدهد. این ویژگی به Compose اضافه شده است و میتوان آن را با فعال کردن
ComposeUiFlags.isInitialFocusOnFocusableAvailable
فعال کرد. ( Ib9178 ) - پرچم
isPointerInteropFilterDispatchingFixEnabled
حذف شد. ( Iaa589 ) - پرچم
isNestedScrollInteropPostFlingFixEnabled
حذف شد. ( I2a756 ) - تطبیقدهندههای معنایی
isHiddenFromAccessibility()
وisInHiddenAccessibilitySubtree()
را اضافه کنید. ( I9f5a1 ) - تابع
runCurrent()
بهMainTestClock
اضافه شد تا تمام وظایف مقرر در زمانبند اصلی اجرا شوند. این کار برای پشتیبانی از اجرای تستها رویStandardTestDispatcher
انجام میشود، جایی که وظایف به زمانبند اضافه میشوند و وقتی تأخیر 0 میلیثانیهای دارند، بلافاصله اجرا نمیشوند. میتوان با ایجاد یکComposeTestRule
و ارسال یکStandardTestDispatcher
StandardTestDispatcher
کند. به طور پیشفرض، تستها رویUnconfinedTestDispatcher
اجرا میشوند، که در این صورتrunCurrent()
هرگز فراخوانی نخواهد شد. - پشتیبانی از اجرای تستها روی
StandardTestDispatcher
اضافه شد. از لحاظ تاریخی، چارچوب تست با استفاده ازUnconfinedTestDispatcher
تنظیم میشد (و هنوز هم میشود)، که با محیط تولید تفاوتهای ظریفی دارد. اکنون میتوانید این تنظیم را با ایجادStandardTestDispatcher
خودتان و افزودن آن بهeffectContext
هنگام ایجادComposeTestRule
(یا هنگام فراخوانی runComposeUiTest ) تغییر دهید. ( I334d0 ، b/254115946 ) - کد مربوط به ایجاد درخت گرهها از
SlotTree
را بهروزرسانی کنید. ( I997d3 )
رفع اشکالات
- رابط کاربری Compose اکنون
RetainScopes
آگاه از چرخه حیات را در اندروید نصب میکند. رفتار پیشفرض اکنون مقادیر -ed را در طول تغییرات پیکربندیretain
میکند. ( Id4a09 ، b/177562901 )
مشارکت خارجی
- قابلیتی به
VelocityTracker
اضافه شد تا سرعت یک اشارهگر را بر اساس رویدادهای اشارهگر ردیابیشده با استفاده از رفتار مختص پلتفرم محاسبه کند. ( I621e8 )
نسخه ۱.۱۰.۰-آلفا۰۱
۱۳ آگوست ۲۰۲۵
androidx.compose.ui:ui-*:1.10.0-alpha01
منتشر شد. نسخه 1.10.0-alpha01 شامل این کامیتها است.
تغییرات API
- پایین آوردن اشارهگر با ماوس یا تاچپد در
ComposeView
اکنون اگر اشارهگر در محدوده گره فوکوسشده قرار نگیرد، فوکوس را بهطور خودکار پاک میکند. این منجر به یک تجربه کاربری "tap-to-clear focus" میشود که بیشتر از رفتار فعلی هنگام استفاده از دستگاههای ورودی اشارهگر مورد انتظار است. این رفتار را میتوان با یکAbstractComposeView.isClearFocusOnPointerDownEnabled
API جدید غیرفعال کرد. ( I6322b ، b/282963174 ) - رابط
FillableData
برای پشتیبانی از انواع مختلف کامپوننتهای تکمیل خودکار، علاوه بر متن، معرفی کنید. ( If9bd2 ) - API جدید برای فعال و غیرفعال کردن پویای عناصر مشترک که امکان در نظر گرفتن اینکه آیا از قبل یک انتقال عنصر مشترک در حال انجام وجود دارد یا خیر را نیز فراهم میکند. API جدید برای تنظیم محدودههای هدف جایگزین هنگامی که عنصر مشترک هدف در حین انتقال از بین میرود. API جدید برای به دست آوردن
LayoutCoordinates
یکLookaheadScope
. ( I18dd4 ، b/409819304 ، b/395670637 ) - برای کنترل آزمایش ارسال اعداد صحیح صحیح به اینتروفن اسکرول تو در تو، پرچم
isNestedScrollInteropIntegerPropagationEnabled
را معرفی کنید. ( If8316 ) - تابع
requestFocusForChildInRootBounds()
بهDelegatableNode
اضافه شد تا فوکوس به فرزندی که با rect داده شده همپوشانی دارد، منتقل شود. ( I001ef ) - پرچمهای حذفشده عبارتند از:
isOnScrollChangedCallbackEnabled
،isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
،isFlingContinuationAtBoundsEnabled
،isAutomaticNestedPrefetchEnabled
،DragGesturePickUpEnabled
،isPointerInteropFilterDispatchingFixEnabled
،isNestedScrollInteropPostFlingFixEnabled
،isNestedScrollDispatcherNodeFixEnabled
( I36c18 ) - حاشیهنویسی
@CheckResult
روی توابع یابنده و انتخابگرSemanticsNode
اضافه شد تا استفاده از مقادیر برگشتی اجباری شود. ( I6f86e ، b/201652748 ) - بهبود عملکرد فرآیند ضبط محتوا ( I3c7c0 )
- معرفی
CompositionLocal
که میتواند برای اصلاح قلمموهای پر کردن موفق هایلایت Autofill استفاده شود. ( I52329 ) - رابط کاربری جدید Interpolatable معرفی شد که امکان درونیابی خودکار بین انواع مختلف را فراهم میکند، با فرض اینکه یک نوع میداند چگونه از نوع دیگر تبدیل کند. این رابط در چندین نوع نوشتن مانند Brush و Shape استفاده میشود، اما میتواند به صورت خارجی نیز مورد استفاده قرار گیرد. ( I58eab )
- حالا Scrollable از رویدادهای اسکرول دوبعدی چرخ ماوس بهتر پشتیبانی میکند. یک API تست جدید برای کمک به موارد استفاده آزمایشی در
MouseInjectionScope
ارائه شده است. ما همچنین یک overload جدید برای متدهای اسکرول درMouseInjectionScope
و یک flag برای کنترل رفتار جدید به نامisMouseWheel1DAxisLockingEnabled
( I136df ) معرفی کردهایم. - اضافه کردن
DeviceConfigurationOverrides
برای نوع و وضعیت صفحه کلید، نوع و وضعیت ناوبری، وضعیت صفحه لمسی و نوع حالت رابط کاربری ( I282f0 ) - یک
LineHeightStyle.Mode
جدید به نامTight
اضافه شد. این حالت به اعمال ارتفاع خطوط کوچکتر کمک میکند، حتی زمانی که ممکن است گلیفهای بلندتر را حذف کنند. ( Id3849 ) -
BaselineShift
اکنون یک مقدار نامشخص برای جلوگیری از boxing دارد.BaselineShift
،Hyphens
،LineBreak
،TextAlign
وTextDirection
اکنون دارای توابع کمکیisSpecified
هستند.Hyphens
،TextAlign
،TextDecoration
وTextDirection
اکنون دارای متدهایvalueOf()
و value هستند که امکان serialization/deserialization کارآمد را فراهم میکنند. ( I8d44c ) - یک رابط متد
getDisplayName
جدید اضافه شد تا امکان نمایش نامهای نمایشی سفارشی برای نمونههای پارامتر پیشنمایش فراهم شود. ( I19bdf ، b/241699422 ) - وقتی مقادیر Dp با استفاده از مقادیر کمتر از یا بیشتر از با مقادیر نامشخص (Unspecified) مقایسه میشوند، اکنون همیشه مقدار نادرست (false) را برمیگرداند. استفاده از
Dp.compareTo(Unspecified)
همیشه مقدار ۰ را برمیگرداند. تنظیم پرچمComposeUiUnitFlags.isDpCompareToChanged
به falseDp.compareTo()
را به رفتار قبلی برمیگرداند، جایی که مقایسه Unspecified با کمتر از و بزرگتر از همیشه مقدار نادرست (false) را برنمیگرداند، وcompareTo()
با Unspecified با رفتار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
فعال است. این امر رفتار تست را با بازیابی وضعیت واقعی برنامه، مانند Parcelization در اندروید، همسو میکند. ( I38211 ، b/408154192 ، b/382294247 ) - رفع کرشهای گاه به گاه هنگام درخواست فوکوس. ( 57b31a11 ، b/431111149 )
نسخه ۱.۹
نسخه ۱.۹.۴
۲۲ اکتبر ۲۰۲۵
androidx.compose.ui:ui-*:1.9.4
منتشر شد. نسخه ۱.۹.۴ شامل این کامیتها است.
رفع اشکالات
- مشکلی که باعث میشد محتوای متن درونخطی در آخرین خط یک متن چندخطی بیضیشکل ناپدید شود، حتی اگر محتوای درونخطی در ناحیه بیضیشکل نبود، برطرف شد. ( I76aaf ، b/441829208 )
- مشکلی که باعث میشد وقتی
debounceMillis
صفر نیست، همیشه فراخوانیهای اصلاحکنندهonLayoutRectChanged
انجام نشود، برطرف شد. ( 72aba47 , b/445324854 )
نسخه ۱.۹.۳
۸ اکتبر ۲۰۲۵
androidx.compose.ui:ui-*:1.9.3
منتشر شد. نسخه ۱.۹.۳ شامل این کامیتها است.
رفع اشکالات
- اشکالی که باعث میشد اصلاحکنندههای
onVisibilityChanged/onFirstVisible/onLayoutRectChanged
در صورت وجود بیش از ۱۷۰ فرزند در طرحبندیِ در حال انتقال، فراخوانی مجدد دریافت نکنند، برطرف شد. ( 4f2fdd ، b/445356774 )
نسخه ۱.۹.۲
۲۴ سپتامبر ۲۰۲۵
androidx.compose.ui:ui-*:1.9.2
منتشر شد. نسخه ۱.۹.۲ شامل این کامیتها است.
رفع اشکالات
-
Modifier.onVisibilityChanged()
اکنون هنگام جدا شدن یا استفاده مجدد از یک گره، به درستی اجرا میشود. ( Ic5ce20 ) -
Modifier.onVisibilityChanged()
وonLayoutRectChanged()
اکنون با استفاده ازplaceWithLayer()
برای قرار دادن فرزندان، طرحبندیهای والد را به درستی مدیریت میکنند. ( Ia05ac9 ) - برای
Modifier.onVisibilityChanged()
وonLayoutRectChanged()
، در موارد حساس مانند حذف یک لایه/اصلاحکننده لایه یا بهروزرسانی ویژگیهای لایه، به درستی اطلاعرسانی کنید. ( Ia05ac )
نسخه ۱.۹.۱
۱۰ سپتامبر ۲۰۲۵
androidx.compose.ui:ui-*:1.9.1
منتشر شد. نسخه ۱.۹.۱ شامل این کامیتها است.
رفع اشکالات
- اشکال رنگ هنگام استفاده از یک بردار قابل ترسیم که از یک رنگ استفاده میکند و
fillColor
نه کاملاً مات است و نه کاملاً شفاف، برطرف میشود. ( I3b041 ، b/328677973 )
نسخه ۱.۹.۰
۱۳ آگوست ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0
منتشر شد. نسخه 1.9.0 شامل این کامیتها است.
تغییرات مهم از زمان ۱.۸.۰
- تغییرات مهم در نسخه ۱.۹.۰ در این پست وبلاگ پوشش داده شده است.
- بررسیهای Lint که با Compose ارائه میشوند، اکنون به حداقل نسخه AGP 8.8.2 نیاز دارند. اگر نمیتوانید AGP را ارتقا دهید، میتوانید Lint را با استفاده از
android.experimental.lint.version=8.8.2
(یا نسخه جدیدتر) درgradle.properties
خود، به تنهایی ارتقا دهید. برای اجرای بررسیهای Lint در Compose در داخل IDE، به Android Studio Ladybug یا جدیدتر نیاز است. - تغییر اساسی: گرههای اصلاحکنندهی
graphicsLayer
اکنونSemanticsModifierNode
پیادهسازی میکنند. این میتواند منجر بهSemanticsNodes
جدیدی شود که به درخت معنایی اضافه میشوند و بنابراین، در تستهایی که فرضیاتی در مورد ساختار درخت معنایی دارند، منجر به شکست تست میشوند. به عنوان مثال، تستهایی کهonChild
،onParent
،onSibling
و سایر روشهای مشابه برای ایجاد assertion استفاده میکنند، در صورت اضافه شدن یک گره جدید بین گرههای فعلی و هدف، میتوانند شکست بخورند. راه ترجیحی برای رفع این شکستها، اضافه کردن مستقیم یکtestTag
به گره هدف است. رویکرد دیگر، استفاده از یک تطبیقدهندهی آزادتر، مانندonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))
. ( I638b5 )
نسخه ۱.۹.۰-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 )
نسخه ۱.۹.۰-بتا۰۳
۱۶ ژوئیه ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0-beta03
منتشر شد. نسخه 1.9.0-beta03 شامل این کامیتها است.
رفع اشکالات
- مشکلی که باعث میشد سایههای داخلیِ تارِ یکنواخت با وجود آفست به درستی حرکت نکنند، برطرف شد.
نسخه ۱.۹.۰-بتا۰۲
۲ ژوئیه ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0-beta02
منتشر شد. نسخه 1.9.0-beta02 شامل این کامیتها است.
تغییرات API
- شیء همراه را به کلاس آزمایشی برای مطابقت تغییر میدهد. ( I8452a )
- پرچم آزمایشی
isTrackFocusEnabled
( I003fd ) حذف شد
رفع اشکالات
- وقتی هیچ
WindowInsets
به محتوایComposeView
نفوذ نکند، مقادیرWindowInsetsRulers
ارائه نمیشوند. ( I71221 )
نسخه ۱.۹.۰-بتا۰۱
۱۸ ژوئن ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0-beta01
منتشر شد. نسخه 1.9.0-beta01 شامل این کامیتها است.
تغییرات اساسی
- گرههای اصلاحکنندهی
graphicsLayer
اکنونSemanticsModifierNode
پیادهسازی میکنند. این میتواند منجر بهSemanticsNodes
جدیدی شود که به درخت معنایی اضافه میشوند و بنابراین، در تستهایی که فرضیاتی در مورد ساختار درخت معنایی دارند، منجر به شکست تست میشوند. به عنوان مثال، تستهایی کهonChild
،onParent
،onSibling
و سایر روشهای مشابه برای ایجاد assertion استفاده میکنند، در صورت اضافه شدن یک گره جدید بین گرههای فعلی و هدف، میتوانند شکست بخورند. راه ترجیحی برای رفع این شکستها، اضافه کردن مستقیم یکtestTag
به گره هدف است. رویکرد دیگر، استفاده از یک تطبیقدهندهی آزادتر، مانندonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))
است. ( I638b5 )
تغییرات API
-
ShadowContext
به یک رابط مهر و موم شده تغییر یافت ( I3ce40 ) - یک روش بین ماژولی برای ایجاد یک رویداد لمس غیرمستقیم (برای آزمایش) اضافه میکند ( I22e4c )
-
IndirectTouchEvent.nativeEvent
را آزمایشی میکند. ( I6fda5 ) - سطح API را بر اساس بازخورد شورای API اصلاح میکند. ( 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
باشد. API ساده شد تا همه insets هاWindowInsetsRulers
باشند. ویژگیهای انیمیشن غیر خطکشی را در یک کلاسAnimationProperties
استخراج کرد.WindowInsetsRulers.innermostOf()
میتواند برای ادغام چندینWindowInsetsRulers
استفاده شود. ( I2f0c6 , b/415012444 ) - یک API ابزاری برای تجزیه اطلاعات منبع اضافه شده توسط کامپایلر Compose اضافه شد. ( Iceaf9 ، b/408492167 )
رفع اشکالات
- اکنون که این ویژگی به طور کامل تأیید شده است، پرچم
isGetFocusedRectReturnEmptyEnabled
حذف شده است. ( Ife722 ) - اشکالی در
performScrollToNode
برطرف شد که در برخی موارد به گره هدف نمیرسید. با این اصلاح، در آن موارد باید همیشه به گره هدف برسد. یکی از عوارض جانبی این تغییر این است که موقعیت دقیق اسکرول در انتهای عمل اکنون ممکن است متفاوت باشد، که بر تستهای اسکرینشات و تستهایی که در مورد موقعیت دقیق اسکرول فرض میکنند، تأثیر میگذارد. ( I2c8a1 )
نسخه ۱.۹.۰-آلفا۰۴
۴ ژوئن ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0-alpha04
منتشر شد. نسخه 1.9.0-alpha04 شامل این کامیتها است.
تغییرات API
- APIهای اصلاحکننده برای سایههای قابل تنظیم اضافه شد. ( I2058d ، b/160665122 )
- یک ویژگی
SemanticsModifierNode.isImportantForBounds
اضافه کنید که تعیین میکند آیا گره هنگام محاسبه مرزها باید در نظر گرفته شود یا خیر. این ویژگی به طور پیشفرض true است و میتوان آن را روی false تنظیم کرد تا نشان دهد که گره نباید برای مرزها در نظر گرفته شود. ( I7ebec ) - یک تابع کارخانهای
SemanticsPropertyKey
برای اعلان ویژگیهای معنایی مختص اندروید اضافه کنید که به عنوان اضافات دسترسی از طریقAccessibilityNodeInfo.getExtras
در دسترس قرار میگیرند. ( I2ed51 ) - کاربردهای
ComposeUiFlags.isRemoveFocusedViewFixEnabled
حذف و پرچم ( I50328 ) منسوخ شد. - معرفی چارچوب سایه قابل تنظیم جدید. این شامل
DropShadowPainter
وInnerShadowPainter
و همچنین وابستگیهایDropShadow/InnerShadow
میشود. زیرساخت سایه به گونهای به اشتراک گذاشته شده است که سایههای تولید شده یکسان میتوانند در چندین سایت تماس به اشتراک گذاشته شوند، بدون اینکه نیاز به تولید مجدد سایهها به تعداد n بار باشد. ( I24f7a ، b/160665122 ) -
CompositeShader
وCompositeShaderBrush
را معرفی کنید که یک نتیجه ترکیبی بین دو سایهزن ایجاد میکنند. همچنینShaderBrush#transform
برای تنظیم ماتریس تبدیل برای سایهزن اضافه کنید. ( I2621a ، b/160665122 )
رفع اشکالات
- اشکالی در
NestedScrollInteropConnection
که در آن متدهای fling نسبت به نماها در ترتیب نادرستی قرار میگرفتند، برطرف شد ( I56ad4 ) - پیش از این، دیالوگهایی که تمام صفحه نمایش داده میشدند، در ناحیه برش نمایشگر رسم نمیشدند. این اشکال برطرف شده است، به طوری که دیالوگهایی با
decorFitsSystemWindows = false
وusePlatformDefaultWidth = false
میتوانند ناحیه برش نمایشگر را در نظر بگیرند. ( I9e975 ) - اشکالی که باعث میشد نشانگر فوکوس سبز
TalkBack
پس از روشن شدن در حالی که برنامه Compose در پسزمینه است، رسم نشود، برطرف شد. ( Ifd12a )
نسخه ۱.۹.۰-آلفا۰۳
۲۰ مه ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0-alpha03
منتشر شد. نسخه 1.9.0-alpha03 شامل این کامیتها است.
تغییرات API
- تابع Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
باعث میشود وقتی هیچ چیزی درComposeView
قابل فوکوس نیست، مقدار rect روی Empty تنظیم شود. این کار مانع از انتخاب View برای فوکوس در جستجوی focus میشود. این امر به ویژه برای زمانی که یک IME گزینه NEXT دارد که ممکن است سعی کند رویComposeView
فوکوس کند وrequestFocus()
با شکست مواجه میشود، مهم است. ( Ibd0e2 , b/369256395 ) - پرچم
isNestedScrollDispatcherNodeFixEnabled
را معرفی کنید. ( I0d24a ) - تغییر نام
DialogProperties
ازdialogContentTitle
بهwindowTitle
( Ibd27b ) - اصلاحکنندههای
Modifier.onFirstVisible
وModifier.onVisibilityChanged
معرفی شدند که اصلاحکنندههای سطح بالایی هستند که بر رویModifier.onLayoutRectChanged
ساخته شدهاند. این اصلاحکنندهها بهطور خاص برای مدیریت بسیاری از نیازهای رایج برنامهها مانند ثبت نمایشها، پخش خودکار ویدیوها و غیره ساخته شدهاند. این اصلاحکنندهها با در نظر گرفتن عملکرد ساخته شدهاند تا بتوان از آنها در سناریوهای حیاتی مبتنی بر لیست بدون خطر کاهش عملکرد اسکرول استفاده کرد. علاوه بر این APIهای اصلاحکننده، APIهای اضافی بهRelativeLayoutBounds
اضافه شدهاند تا از این موارد استفاده پشتیبانی کنند و همچنین ایجاد اصلاحکنندههای سفارشی مشابه را که دقیقاً متناسب با مورد استفاده آنها هستند، برای توسعهدهندگان آسانتر کنند. ( I759b8 ) - برای در نظر گرفتن توسعههای آینده این ویژگی،
setDiagnosticStackTraceEnabled
به آزمایشی تغییر دهید. ( I11db3 ) - معرفی
Modifier.scrollable2D
،Scrollable2DState
و APIهای همراه برای ایجاد حالت. همچنین توابع افزونه اسکرول رایج معرفی شدند. ( Ic61c8 ، b/214410040 ) - مقادیر رنگ ۶۴ بیتی Compose مستقیماً با Android
ColorLongs
قابل مقایسه نیستند زیرا شناسههای فضای رنگ برای برخی از فضاهای رنگ نامرتب هستند. برای تبدیل به و از فضاهای رنگ اندروید، دو API جدید اضافه شدهاند:toColorLong()
وfromColorLong()
. ( I36899 ) -
ViewConfiguration.minimumFlingVelocity
برای کنترل سرعت پرتاب با حد پایین معرفی شد. ( I11aab )
نسخه ۱.۹.۰-آلفا۰۲
۷ مه ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0-alpha02
منتشر شد. نسخه 1.9.0-alpha02 شامل این کامیتها است.
تغییرات API
-
dialogContentTitle
بهDialogProperties
اضافه کنید، که عنوان پنجره محتوا را تنظیم میکند. bf9d670
رفع اشکالات
- خطکشهای پنجرههای داخلی موقتاً غیرفعال شدهاند تا تستهای داخلی اصلاح شوند. 8d1402
- نحوه اضافه شدن تغییرات ورودی اشارهگر به
VelocityTracker
درDragGestureNode
اصلاح شد، این مورد را میتوان با پرچم جدیدisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
کنترل کرد. 254ddb
نسخه ۱.۹.۰-آلفا۰۱
۲۳ آوریل ۲۰۲۵
androidx.compose.ui:ui-*:1.9.0-alpha01
منتشر شد. نسخه 1.9.0-alpha01 شامل این کامیتها است.
تغییرات رفتاری
- بررسیهای Lint که با Compose ارائه میشوند، اکنون به حداقل نسخه AGP 8.8.2 نیاز دارند. اگر نمیتوانید AGP را ارتقا دهید، میتوانید Lint را با استفاده از
android.experimental.lint.version=8.8.2
(یا نسخه جدیدتر) درgradle.properties
خود، به تنهایی ارتقا دهید. برای اجرای بررسیهای Lint در Compose در داخل IDE، به Android Studio Ladybug یا جدیدتر نیاز است.
تغییرات API
- پرچم را حذف میکند تا دستورات ردیابی برای ردیاب مسیر برخورد (اشکالزدایی) فعال شوند. ( I1b2a1 )
-
InnerRectRulers
وOuterRectRules
به متد تبدیل شدند. پارامتر نام از API عمومیRectRulers
حذف شد.DerivedRulers
اکنون یک گزینه سازنده برای Vertical و Horizontal Rulers است.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 ) - به Compose اجازه دهید تا
ViewTreeObserver.OnScrollChanged
را فعال کند. این رفتار تحت پرچمisOnScrollChangedCallbackEnabled
معرفی شده است. ما همچنین یک تابع افزونه ازDelegatableNode dispatchOnScrollChanged
معرفی کردهایم. ( I34b9d , b/238109286 ) -
currentCompositeKeyHash
اکنون منسوخ شده است. به جای آن ازcurrentCompositeKeyHashCode
استفاده کنید. API جایگزین، هش یکسانی را با بیتهای بیشتر رمزگذاری میکند، که به صورت نمایی احتمال اینکه دو گروه تصادفی نامرتبط در سلسله مراتب ترکیب، کلید هش یکسانی داشته باشند را کاهش میدهد. ( I4cb6a , b/177562901 ) - پروژههای منتشر شده با کاتلین ۲.۰ برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند ( Idb6b5 )
- پشتیبانی از بررسی پرز برای
FocusRequester
اضافه شد تا مطمئن شویم که در داخل ترکیب به خاطر سپرده میشود ( I6bf91 ) - قابلیت تنظیم نرخ فریم ترجیحی یا دستهبندی نرخ فریم در Composable که باید در ( Ie5201 ) رندر شود، اضافه شد.
- نمایش
MotionEvent
بومی در اندروید. ( I17286 ) -
getChecked() + setChecked(int)
اضافه کنید،isChecked + setChecked(boolean)
منسوخ کنید ( Iaac9d ) - اصلاحکنندهی
graphicsLayer
اکنون یکblendMode
و یکcolorFilter
( Iab0e6 ) را میپذیرد. - ترکیب
LocalResources
به صورت محلی برای پرسوجوی منابع اضافه شد. فراخوانیLocalResources.current
با تغییر پیکربندی، دوباره ترکیب میشود، بنابراین فراخوانیهای API مانندstringResource()
مقادیر بهروز شده را برمیگردانند. ( I50c13 ، b/274786917 ) - ارائه API آزمایشی برای Composables جهت مدیریت رویدادهای لمس غیرمستقیم ( Icff57 )
- این نسخه، گزارش خطاهای مدیریت نشدهای که در طول مراحل طرحبندی و ترسیم محتوای قابل ترکیب شما رخ میدهند را بهبود میبخشد. پیش از این، یک خطای شناسایی نشده در اینجا، اجرای تست را مختل میکرد و مجموعه تست را زودتر از موعد خاتمه میداد. اکنون میتوان این خطاها را بدون پایان دادن به مجموعه تست، با ظرافت بیشتری گزارش کرد. ( I9928b ، b/314128080 )
- API آزمایشی
GlobalAssertions
منسوخ شد. کاربرد مورد نظر آن اجرای بررسیهای دسترسیپذیری بود، برای این منظور بهenableAccessibilityChecks()
مراجعه کنید. ( I50aa5 ) -
SemanticsNodeInteraction.performTextInputSelection
دیگر آزمایشی نیست و اکنون از یک پارامتر اضافیrelativeToOriginal
پشتیبانی میکند که به شما امکان میدهد انتخاب را یا روی متن اصلی تبدیل نشده یا متن تبدیل شده اعمال کنید. ( I3a905 , b/261561038 , b/277018945 ) - معرفی API برای ایجاد لیستهای گلولهای سفارشی از طریق
AnnotatedString
( I1d066 ، b/383269496 ، b/139326648 ) -
runWithTimingDisabled
به نفعrunWithMeasurementDisabled
منسوخ کنید، که رفتار را واضحتر توصیف میکند - همه معیارها متوقف میشوند. علاوه بر این، سوپرکلاسMicrobenchmarkScope
در معرض دید قرار دهید زیرا تعریف مجدد تابعrunWithMeasurementDisabled
برای دسترسی آزاد امکانپذیر نیست، زیرا درونخطی است. ( I9e23b ، b/389149423 ، b/149979716 ) - رابط کاربری ابزارهای دستگاهها (UI-tooling Devices API) بهروزرسانی شد تا دستگاههای جدیدتر را نیز شامل شود. ( Ia2ac1 )
- حالت عمودی تبلت را به مجموعه اندازههای پیشنمایش صفحه اضافه کنید تا به توسعهدهنده کمک کنید پنجرههای بزرگتر را در نظر بگیرد ( Ia1976 )
- معرفی API مقدار ردیابی برای علامتگذاری/ثبت ردیابی با مقادیر در یک نقطه زمانی مشخص. مقادیر ردیابی در Prefetto به عنوان یک خط جدید نشان داده میشوند که میتوان از طریق جدول زمانی ردیابی آنها را مشاهده کرد. در اندروید، آنها با استفاده از
Trace.setCounter
پیادهسازی میشوند. ( Idcf48 )
رفع اشکالات
- رفع مشکل ارسال ناظران یادآوری در ترکیب قابل مکث برای جلوگیری از ارسال موارد به خاطر سپرده شده/فراموش شده در یک درخواست ( I570b2 ، b/404645679 ، b/407931790 )
- اکنون میتوان
android:dialogTheme
طوری تنظیم کرد که وقتیdecorFitsSystemWindows
نادرست است ( I7922f ، b/246909281 ) ویژگیهای کادر محاورهای را کنترل کند. - اشکالی که باعث میشد هر رویداد حرکتی خارج از یک کادر محاورهای، کادر محاورهای را رد کند، برطرف شد. ( Ia78fd )
- بررسیهای lint در Compose اکنون به حداقل نسخه AGP 8.8.2 از خط فرمان و حداقل Android Studio Ladybug برای پشتیبانی از IDE نیاز دارند. اگر از نسخه قدیمیتر AGP استفاده میکنید، میتوانید
android.experimental.lint.version=8.8.2
در gradle.properties تنظیم کنید تا نسخه Lint را بدون تأثیر بر AGP ارتقا دهید. ( I6f2a8 ) - یک ویژگی معنایی جدید به نام
InputText
اضافه شد که مقدار یکtextfield
را قبل از اعمال تبدیل خروجی دریافت میکند. ( Iae46a , b/395911609 , b/176949051 ) - API مربوط به
enableAccessibilityChecks()
که بررسیهای دسترسیپذیری اندروید را فعال میکند، بستههایی را که در صورت عدم استفاده ازTestRule
compose:ui:ui-test-accessibility
هستند و در هنگام فراخوانیTestRule
،compose:ui:ui-test-junit4-accessibility
، جدا میکند ( I3c318 ، b/391560768 ). - پشتیبانی از ردیابی پشتههای نوشتن در
LaunchedEffect
وrememberCoroutineScope
اضافه شد ( I705c0 ، b/354163858 )
مشارکت خارجی
- تغییر تابع آزمایشی
runComposeUiTest
برای پذیرش یک بلوک suspend. همچنین یک fun منسوخ شدهrunComposeUiTest
برای سازگاری باینری اضافه شد ( I3b88c ، b/361577328 )
نسخه ۱.۸
نسخه ۱.۸.۳
۱۸ ژوئن ۲۰۲۵
androidx.compose.ui:ui-*:1.8.3
منتشر شد. نسخه ۱.۸.۳ شامل این کامیتها است.
رفع اشکالات
- اکنون که این ویژگی به طور کامل تأیید شده است، پرچم
isGetFocusedRectReturnEmptyEnabled
حذف شده است. ( Ife722 ) - تابع Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
باعث میشود وقتی هیچ چیزی درComposeView
قابل فوکوس نیست، مقدار rect روی Empty تنظیم شود. این کار مانع از انتخاب View برای فوکوس در جستجوی focus میشود. این امر به ویژه برای زمانی که یک IME گزینه NEXT دارد که ممکن است سعی کند رویComposeView
فوکوس کند وrequestFocus()
با شکست مواجه میشود، مهم است. ( Ibd0e2 , b/369256395 )
نسخه ۱.۸.۲
۲۰ مه ۲۰۲۵
androidx.compose.ui:ui-*:1.8.2
منتشر شد. نسخه ۱.۸.۲ شامل این کامیتها است.
رفع اشکالات
- رفع مشکل NPE هنگام حذف شدن دیالوگ در حین اجرای رویداد فعال روی دیالوگ ( 6a7e7f )
- رفع مشکل بهروزرسانی نشدن
onLayoutRectChange
بر اساس جدول زمانی محدود شده، زمانی که بهروزرسانیهای فقط ترسیمی رخ میدهند. ( 03b82d )
نسخه ۱.۸.۱
۷ مه ۲۰۲۵
androidx.compose.ui:ui-*:1.8.1
منتشر شد. نسخه ۱.۸.۱ شامل این کامیتها است.
رفع اشکالات
- رفع برخی مشکلات با
onLayoutRectChanged
وLazyLayout
d791b11 - درخواستهای اندازهگیری مجدد برای موارد از پیش تنظیمشده را نادیده بگیرید. این اشکال بر عملکرد پیمایش طرحبندیهای تنبل تأثیر گذاشت زیرا پیشواکشی در برخی موارد به طور مؤثر کار نمیکرد و اندازهگیری در داخل قاب اتفاق میافتاد. 742087a
نسخه ۱.۸.۰
۲۳ آوریل ۲۰۲۵
androidx.compose.ui:ui-*:1.8.0
منتشر شد. نسخه ۱.۸.۰ شامل این کامیتها است.
تغییرات مهم از زمان ۱.۷.۰
- Compose 1.8 شامل پشتیبانی جدیدی برای تکمیل خودکار معنایی است. مطمئن شوید که نسخههای UI و Foundation که استفاده میکنید نسخه ۱.۸ یا بالاتر هستند، زیرا تکمیل خودکار برای اجزای متنی به آخرین نسخههای هر دو ماژول نیاز دارد. برای استفاده از API و مثالها، لطفاً برای جزئیات بیشتر به مستندات تکمیل خودکار، اینجا مراجعه کنید.
- Compose 1.8 از انواع دیگری از بازخورد لمسی پشتیبانی میکند:
Confirm
،ContextClick
،GestureEnd
،GestureThresholdActivate
،Reject
،SegmentFrequentTick
،SegmentTick
،ToggleOn
،ToggleOff
،VirtualKey
. این قابلیت از طریقLocalHapticFeedback
قابل دسترسی است و در اندروید، این قابلیت به طور پیشفرض زمانی که Vibrator API پشتیبانی از لمس را نشان میدهد، در دسترس است. - APIهای چندگانه Focus اکنون پایدار هستند، از جمله
Modifier.focusRestorer()
وonEnter
وonExit
FocusProperties
( I6e667 ). اکنون میتوانید هنگام فراخوانیrequestFocus
، یکFocusDirection
مشخص کنید. ما یک APIrequestFocus(FocusDirection)
را بهfocusRequester
وFocusTargetModifierNode
اضافه کردهایم تا امکان فوکوس با یک جهت خاص فراهم شود. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256 )
نسخه ۱.۸.۰-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 )
نسخه ۱.۸.۰-rc02
۲۶ مارس ۲۰۲۵
androidx.compose.ui:ui-*:1.8.0-rc02
منتشر شد. نسخه 1.8.0-rc02 شامل این کامیتها است.
رفع اشکالات
- مشکلی که باعث میشد نماهای متمرکز تعبیهشده در سلسله مراتب Compose، هنگام حذف نمای متمرکز از lazylist، باعث ترکیب مجدد شوند، برطرف شد. ( 765562 )
نسخه ۱.۸.۰-rc01
۱۲ مارس ۲۰۲۵
androidx.compose.ui:ui-*:1.8.0-rc01
منتشر شد. نسخه 1.8.0-rc01 شامل این کامیتها است.
رفع اشکالات
- رفع مشکل کرش کردن برنامه هنگام حذف
AndroidView
متمرکز با فعال بودن کیبورد نرم افزاری ( Ic725a ) - چند مشکل در پیادهسازی جدید مدیریت حالت فوکوس برطرف شد. ( b/395895685 )
- مشکلی که باعث میشد هنگام استفاده از
LaunchedEffect
برای درخواست فوکوس روی یک فیلد متنی، Autofill مسدود شود، برطرف شد. ( b/392539099 )
نسخه ۱.۸.۰-بتا۰۳
۲۶ فوریه ۲۰۲۵
androidx.compose.ui:ui-*:1.8.0-beta03
منتشر شد. نسخه 1.8.0-beta03 شامل این کامیتها است.
تغییرات API
- API مربوط به
enableAccessibilityChecks()
که بررسیهای دسترسیپذیری اندروید را فعال میکند، برای جدا کردن بستههایی کهcompose:ui:ui-test-accessibility
(در صورتی که از TestRule استفاده نمیکنید) وcompose:ui:ui-test-junit4-accessibility
هنگام فراخوانیTestRule
( I547ef ، b/391560768 ) هستند، منتقل شد. - یک ویژگی معنایی جدید
InputText
اضافه شده است که مقدار یک فیلد متنی را قبل از اعمال تبدیل خروجی ثبت میکند. ( Iae46a )
رفع اشکالات
- مشکلی که باعث میشد سرویسهای تکمیل خودکار به جای متن ورودی، متن تبدیلشده خروجی را ذخیره کنند، برطرف شد. ( Iae46a , b/395911609 , b/176949051 )
نسخه ۱.۸.۰-بتا۰۲
۱۲ فوریه ۲۰۲۵
androidx.compose.ui:ui-*:1.8.0-beta02
منتشر شد. نسخه 1.8.0-beta02 شامل این کامیتها است.
ویژگیهای جدید
- یک بررسی خط کد (lint check) اضافه شد تا در مورد فراخوانیهای
Configuration#screenWidth
/heightDp
هشدار دهد - به جای آن میتوان ازLocalWindowInfo.current.containerSize
برای بازیابی اندازه پنجره فعلی استفاده کرد.
نسخه ۱.۸.۰-بتا۰۱
۲۹ ژانویه ۲۰۲۵
androidx.compose.ui:ui-*:1.8.0-beta01
منتشر شد. نسخه 1.8.0-beta01 شامل این کامیتها است.
تغییرات API
-
ContextualFlowRow
وContextualFlowColumn
به عنوان منسوخ علامتگذاری شدهاند. این مؤلفه آزمایشی در نسخه ۱.۷ معرفی شده و هنوز تثبیت نشده است و پیادهسازی آن نامطلوب تشخیص داده شده است. در آینده، ممکن است مؤلفهای ارائه شود که موارد استفادهای را که این مؤلفه قرار بود حل کند، حل کند.-
FlowRow
وFlowColumn
دارای overloadهای آزمایشی هستند که در نسخه ۱.۷ معرفی شدهاند و شامل یک پارامترoverflow
هستند. استفاده از این پارامتر منسوخ شده است و overloadهای بدون این پارامتر میتوانند به جای آن استفاده شوند. رفتار پیشفرض "overflow" برای این overloadها، همانطور که از زمان معرفی آن بوده، "Clip" خواهد بود. - بسیاری از موارد استفاده برای
ContextualFlowRow
را میتوان با استفاده از FlowRow انجام داد، اما اذعان داریم که این به طور کلی درست نیست.ContextualFlowRow
کاملاً در فضای کاربر قابل پیادهسازی است و میتوان پیادهسازی آن را کپی کرد و در صورت تمایل آن را تطبیق داد. در آینده، امیدواریم این موارد استفاده را به روشی متفاوت حل کنیم. ( Ibafec )
-
-
SemanticsNodeInteraction.semanticsId()
حذف شده است. به جای آنSemanticsNodeInteraction.fetchSemanticsNode().id
( Ie397a ) - API های قدیمی تکمیل خودکار منسوخ شدهاند. به جای آن از API جدید مبتنی بر معناشناسی استفاده کنید. ( I943ff )
- API
requestAutofill
طوری بازنویسی کنید که خارج از مدیریت تکمیل خودکار وجود داشته باشد. ( 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 )
نسخه ۱.۸.۰-آلفا۰۸
۱۵ ژانویه ۲۰۲۵
androidx.compose.ui:ui-*:1.8.0-alpha08
منتشر شد. نسخه 1.8.0-alpha08 شامل این کامیتها است.
تغییرات API
- تبدیل
AutofillManager
به یک کلاس انتزاعی. ( I0a3b0 ) - چندین مشکل مربوط به فوکوس برطرف شد، از جمله خرابیهایی که هنگام تلاش IME برای فوکوس روی
ComposeView
بدون آیتمهای قابل فوکوس، تغییر فوکوس درAndroidViews
فرزند و درخواست فوکوس هنگام خروج ازAndroidView
رخ میداد. ( Ia03c3 ، b/369256395 ، b/378570682 ، b/376142752 ) - تغییر
FocusEnterExitScope.cancelFocus()
بهcancelFocusChange()
( I89959 ) - اکنون میتوانید انسدادهای ترکیبی (Composable occlusions) را با
RectInfo.calculateOcclusions()
محاسبه کنید. - Added extension function on
DelegatableNode
to register a listener for global layout changes. ( I68b59 )
رفع اشکالات
- اکتیویتیای که هنگام استفاده از
ComposeContentTestRule.setContent
به عنوان میزبان برای composable تحت تست استفاده میشود، اکنون از تمTheme.Material.Light.NoActionBar
استفاده میکند تا از همپوشانیActionBar
با محتوای تست هنگام هدف قرار دادن SDK 35 جلوگیری شود. برای جلوگیری از این رفتار، میتوانید وابستگی بهui-test-manifest
حذف کرده و یک ورودی اکتیویتی در AndroidManifest.xml برنامه تست خود برایComponentActivity
با تم دلخواه خود اضافه کنید. ( I7ae1b ، b/383368165 ) - Resource fonts with the same variation settings will now avoid over-caching causing the incorrect variation settings to be applied. ( If3dff , b/372044241 )
-
AnnotatedString.fromHtml
now supports<ul>/<li>
tags. ( I7c2fe , b/299662276 , b/139326648 )
مشارکت خارجی
- Added a new Clipboard interface and a composition local for it. ( I80809 )
نسخه ۱.۸.۰-آلفا۰۷
۱۱ دسامبر ۲۰۲۴
androidx.compose.ui:ui-*:1.8.0-alpha07
is released. Version 1.8.0-alpha07 contains these commits .
تغییرات API
- Exposed owner from
LayoutNode
for tools. ( I26f7f ) - Has
LocalAutofillHighlightColor
composition local use a Color type. ( I0e05b ) - Keep deprecated
UrlAnnotation
and its methods marked as experimental. ( Ic0021 )
رفع اشکالات
- Fixed
IndexOutOfBoundsException
crash when usingLinkAnnotation
inside theBasicText
or Text composable ( be7605 , b/374115892 ) - Fixed issue where filled text fields with custom shape didn't clip the indicator line. ( I4f87f , b/380704151 )
- Fixed missing backgrounds with long screenshots. ( I4d57a )
- This library now uses JSpecify nullness annotations , which are type-use. Kotlin developers should use the following compiler argument to enforce correct usage:
-Xjspecify-annotations=strict
(this is the default starting with version 2.1.0 of the Kotlin compiler). ( Idfef8 , b/326456246 ) - Update Compose support for wide gamut and HDR colors when running on Android Q+. ( Icd8be , b/379135036 )
- Resource fonts that fail to load will now silently fall back to the default font, instead of the prior behavior of throwing an exception in measure. ( Ib6a49 )
- Fix focus lost when
AndroidView
is detached and attached. ( I53446 ) - Accept
requestFocus()
from beyond bound layout action. ( Ia8461 )
مشارکت خارجی
- Add
BringIntoViewResponderModifierNode
to UI, which provides a new way to implement Bring Into View functionality as well as allows implementing in on a platform level. ( Ia6dd8 )
نسخه ۱.۸.۰-alpha06
۱۳ نوامبر ۲۰۲۴
androidx.compose.ui:ui-*:1.8.0-alpha06
is released. Version 1.8.0-alpha06 contains these commits .
تغییرات API
- Adds
stylusHoverIcon
modifier. ( Iff20a , b/331289114 ) - Changes Autofill manager to be an interface. ( I84914 , b/376080755 )
- Adds
requestFocus(FocusDirection)
to bothfocusRequester
andFocusTargetModifierNode
to allow focusing with a specific direction. ( I5d9ec , b/245755256 ) -
FocusProperties.enter
andFocusProperties.exit
have been replaced withonEnter
andonExit
, using a receiver scope instead ofFocusDirection
parameter. ( I6e667 ) - Adding autofill support in text toolbar. ( Ie6a4c )
- API changes to
Modifier.focusRestorer()
( I99c03 ):- parameter name changed to 'fallback'
- parameter is now a
FocusRequester
and not a lambda - parameter is now non-NULL with Default as the default value
- Removing
@Experimental
annotation from autofill manager interface. The feature is still WIP targeting this release but we do not want to introduce @Expemiental API ( Id8398 ) -
LocalHapticFeedback
now provides a defaultHapticFeedback
implementation when the Vibrator API indicates that haptics are supported. The following have been added to theHapticFeedbackType
-Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
. Wear Compose long-clickable components such asButton
,IconButton
,TextButton
, andCard
now perform theLONG_PRESS
haptic when a long-click handler has been supplied. ( I5083d ) - Removes
OverscrollConfiguration
andLocalOverscrollConfiguration
, and addsrememberPlatformOverscrollFactory
to create an instance of / customize parameters of the default overscroll implementation. To disable overscroll, instead ofLocalOverscrollConfiguration provides null
, useLocalOverscrollFactory provides null
. To change the glow color / padding, instead ofLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
, useLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. ( Ie71f9 , b/255554340 , b/234451516 ) - Removed the experimental
GlobalAssertions
API. It's intended use was to run accessibility checks, seeenableAccessibilityChecks()
for that purpose instead. ( I59322 )
نسخه ۱.۸.۰-آلفا۰۵
۳۰ اکتبر ۲۰۲۴
androidx.compose.ui:ui-*:1.8.0-alpha05
is released. Version 1.8.0-alpha05 contains these commits .
ویژگیهای جدید
Autofill is exposed behind a feature flag in this release. We are working on improving performance, and are looking for early feedback on the APIs. The APIs are expected to evolve prior to stable based on feedback.
- To enable Autofill, set
ComposeUiFlags.isSemanticAutofillEnabled
to true inonCreate
and use the latest Compose Snapshot. - This version of Autofill supports saving credentials manually, through Suggest Strong Password, and through navigation. It also supports filling when an autofillable field receives focus or when Autofill is triggered via the text toolbar on text components. The component will become highlighted to indicate when autofill has completed.
تغییرات API
- Modify Autofill interface to follow
expect
/actual
structure. ( I22dce ) - Introduce
CompositionLocal
that can be used to modify the hue of Autofill's successful filling highlight. ( I32092 ) - Added
Modifier.onRectChanged
API which is an API that allows one to subscribe to the root/window/screen-relative position and size of aLayoutNode
. The API solves many use cases that the existingonGloballyPositioned
modifier does, however it does so with much less overhead and the API comes with facilities to debounce and throttle the callback per what one's use case demands. ( Id28c7 , b/372765423 , b/372757007 , b/372994338 ) - Expands Autofill manager to include
commit()
andcancel()
APIs that help users save newly entered credentials. ( I2da00 ) - Introduces new
AutofillManager
interface that can be used to fine-tune users' Autofill journey and aisSemanticAutofillEnabled
flag to turn on this new version of Autofill. ( I9d484 ) - Added
Modifier.onRectChanged
API which is an API that allows one to subscribe to the root/window/screen-relative position and size of aLayoutNode
. The API solves many use cases that the existingonGloballyPositioned
modifier does, however it does so with much less overhead and the API comes with facilities to debounce and throttle the callback per what one's use case demands. ( I3c8fa ) - Add in semantic properties and data types for extended Autofill support. ( I52c7d )
- All methods in
AnnotatedString
builder are non-experimental now ( Ia89c8 , b/261561823 )
رفع اشکالات
- Views embedded in compose can now receive rotary events if they are focused ( I4d53a , b/320510084 )
- Fixed an issue where various resource types wouldn't update on configuration changes ( Ia9b99 , b/352336694 )
- Addressed an issue that prevented
TextField
from functioning correctly when using the POBox Japanese Keyboard on certain older Sony devices. ( Ia9b99 , b/373743376 ) - Fixed problem with dialogs showing at bottom of the screen instead of centering ( Ia2ec , b/373093006 )
- Targeting API 35+ no longer forces dialogs to have
decorFitsSystemWindows
set to false. ( Ibc94 , b/364492593 ) - Fix crash when layers are moved between windows (eg dialog and main content) ( I675ba , b/330955281 )
نسخه ۱.۸.۰-آلفا۰۴
۱۶ اکتبر ۲۰۲۴
androidx.compose.ui:ui-*:1.8.0-alpha04
is released. Version 1.8.0-alpha04 contains these commits .
تغییرات API
- Adds
DelegatableNode#onDensityChange
andDelegatableNode#onLayoutDirectionChange
callbacks to allow updating node state when these change ( I04f3e , b/340662451 ) - Adds
WindowInfo#containerSize
to provide the current window's content container size. This can be retrieved usingLocalWindowInfo
. ( Idc38c , b/369334429 , b/360343819 ) - Introduce a fix for nested scrollables that are removed from the node tree during an ongoing fling. Now these nodes will cancel the fling and correctly send the
onPostFling
event with the remaining velocity. We're also introducing the flagNewNestedScrollFlingDispatchingEnabled
to control the behavior in case of regressions. The flag will be removed before beta. ( I05c37 , b/371168883 ) - Introduced
PointerInputModifierNode#touchBoundsExpansion
, which can be used to enlarge the touch bounds of a single pointer input modifier. ( Iccf02 , b/335339283 ) - Adds
WindowInfo#containerSize
to provide the current window's content container size. This can be retrieved usingLocalWindowInfo
. ( I27767 , b/369334429 , b/360343819 ) - برای پین کردن به نسخه پایه پایدار،
readOnly
ازTextFields
حذف کنید. ( I3aaba ) -
Paragraph
andParagraphIntrinsics
now takes a list of all annotations applied to theAnnotatedString
, previously it only had a list ofSpanStyles
( I12f80 )
رفع اشکالات
- Updated how paragraphs are treated in
AnnotatedString
. Before you could only create non-overlapping paragraphs. Now theAnnotatedString
allows fully-overlapping paragraphs which will be merged together, and nested paragraphs in which case the outer paragraph will be split on bounds of the inner one, and the inner paragraph's style will be merged with the outer paragraph's style ( Ic9554 ) - Fix crash in
AnnotatedString
with a zero-lengthLinkAnnotation
. ( 89aac6 )
Version 1.8.0-alpha03
۲ اکتبر ۲۰۲۴
androidx.compose.ui:ui-*:1.8.0-alpha03
is released. Version 1.8.0-alpha03 contains these commits .
تغییرات API
- Kotlin version update to 1.9 ( I1a14c )
- Introduced a new Semantics Role called Carousel to emulate the list behavior in Pagers for a11y services. ( Id354b , b/354109776 , b/239672673 )
- Rename
invisibleToUser()
tohideFromAccessibility
. Its function remains the same. See documentation for more details. ( Ib43a3 )
رفع اشکالات
- Updating docs for
SensitiveContent
modifier ( Ib0442 ) - Fixed issue where certain generic outline clips would be ignored in combination with elevation shadows on some Android versions
- Fixed issue where empty clips would be applied when a generic outline clips was specified on certain Android versions.
- Fixed exception thrown when the IME is active on an external View and the Next action is used to enter focus on the
ComposeView
. TheclearFocus()
behavior aligns with View behavior on API < 28, whereclearFocus()
can cause the default View to be focused. - Fixed an issue where placement happened on detached nodes in
LazyList
by separating the management of subcomposition for different layout passes. - Fixed a problem where the Software Keyboard flickers when focus switches from a
TextField
to anEditText
or any other View based editor. - Nested Scroll nodes will now dispatch
onPostFling
events correctly after they get detached. - General performance improvements
نسخه ۱.۸.۰-آلفا۰۲
۱۸ سپتامبر ۲۰۲۴
androidx.compose.ui:ui-*:1.8.0-alpha02
is released. Version 1.8.0-alpha02 contains these commits .
تغییرات API
-
TextOverflow.StartEllipsis
andTextOverflow.MiddleEllipsis
are now available which allows to place ellipsis at the start or middle of the line of the single line text. ( I38913 , b/185418980 )
رفع اشکالات
- Fix Dalog
dismissOnClickoutside
( 39a3d , b/364508685 ) - Don't clip shadows of dialog content ( e8e2f , b/363027803 )
- Fix errant behavior when focus search moves between Compose and a View ( 58377 , b/350534714 )
مشارکت خارجی
- The
AlignmentLines
Map
now acceptsVerticalAlignmentLine
orHorizontalAlignmentLine
concrete types. ( I02912 ) - New common
ByteArray.decodeToImageBitmap(): ImageBitmap
method. ( I83c21 )
نسخه ۱.۸.۰-آلفا۰۱
۴ سپتامبر ۲۰۲۴
androidx.compose.ui:ui-*:1.8.0-alpha01
is released. Version 1.8.0-alpha01 contains these commits .
نسخه ۱.۷
نسخه ۱.۷.۸
۱۲ فوریه ۲۰۲۵
androidx.compose.ui:ui-*:1.7.8
is released. Version 1.7.8 contains these commits .
نسخه ۱.۷.۷
۲۹ ژانویه ۲۰۲۵
androidx.compose.ui:ui-*:1.7.7
is released. Version 1.7.7 contains these commits .
رفع اشکالات
- Fixed
IndexOutOfBoundsException
when passing anAnnotatedString
with theLinkAnnotation
to the Text composable. ( Ic96d2 ) - Fixed a timeout issue in tests in some rare cases when
LinkAnnotation
is used in theAnnotatedString
. ( I04a03 )
نسخه ۱.۷.۶
۱۱ دسامبر ۲۰۲۴
androidx.compose.ui:ui-*:1.7.6
is released. Version 1.7.6 contains these commits .
رفع اشکالات
- We previously used to throw an error whenever we encountered a key event when we encountered a key event when the focus system had pending invalidations. We now log an error instead ( I7ea0 , b/346370327 ).
- Removed experimental annotation from
SemanticsPropertyReceiver.invisibleToUser()
. This will be deprecated in 1.8 to be replaced withSemanticsPropertyReceiver.hideFromAccessibility()
. ( I448f0 , b/376479686 ) - Fixed an issue that prevented
TextField
from functioning correctly when using the POBox Japanese Keyboard on certain older Sony devices. ( I94e0e , b/373743376 ) - Fixed an accessibility issue where
BasicText
's inlineContent was not announced byTalkBack
. ( I67bcb , b/376479686 )
نسخه ۱.۷.۵
۳۰ اکتبر ۲۰۲۴
androidx.compose.ui:ui-*:1.7.5
is released. Version 1.7.5 contains these commits .
رفع اشکالات
- Fixed issues where elevation and clipping with custom outlines would not render properly.
- Fixes a text crash that happens with a zero-width
LinkAnnotation
. ( Ic1e2e ) - Fixes an announcement in
Talkback
of the button when it's built as a clickable Text composable. ( I1f588 )
نسخه ۱.۷.۴
۱۶ اکتبر ۲۰۲۴
androidx.compose.ui:ui-*:1.7.4
is released. Version 1.7.4 contains these commits .
نسخه ۱.۷.۳
۲ اکتبر ۲۰۲۴
androidx.compose.ui:ui-*:1.7.3
is released. Version 1.7.3 contains these commits .
رفع اشکالات
- Fixed issue where specifying a generic outline clip would lead to an empty clip boundary on certain Android versions.
- Fixed exception thrown when the IME is active on an external View and the Next action is used to enter focus on the
ComposeView
. TheclearFocus()
behavior aligns with View behavior on API < 28, whereclearFocus()
can cause the default View to be focused. - Fixed an issue where an incorrect
placeOrder
was used for lookahead invalidation, therefore fixing an edge case where lookahead placement was skipped.
نسخه ۱.۷.۲
۱۸ سپتامبر ۲۰۲۴
androidx.compose.ui:ui-*:1.7.2
is released. Version 1.7.2 contains these commits .
رفع اشکالات
- Improved performance of accessibility node info and semantics events by removing verbose tracing. ( I89156 , b/362530618 )
-
ComposeView
will no longer crash when passed exceptionally large measurement size ( da5db , b/347036173 ) - Fixed an accessibility screenreader issue where
LiveRegion
announcements on buttons were not made. ( f66fa7 , b/348590026 )
نسخه ۱.۷.۱
۱۰ سپتامبر ۲۰۲۴
- هیچ تغییری در مصنوعات اندروید ایجاد نشده است. مصنوعات
-desktop
حذف شده و مصنوعات-jvmStubs
و-linuxx64Stubs
اضافه شدهاند. هیچ یک از این اهداف برای استفاده در نظر گرفته نشدهاند، آنها متغیرهایی برای کمک به تلاشهای Jetbrains Compose هستند.
نسخه ۱.۷.۰
۴ سپتامبر ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0
is released.
تغییرات مهم از زمان ۱.۶.۰
Important changes in version 1.7.0 are covered in this blogpost .
نسخه ۱.۷.۰-rc01
۲۱ آگوست ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-rc01
is released. Version 1.7.0-rc01 contains these commits .
تغییرات قابل توجه
- ui:ui module now forces requirement of a minimum version of foundation:foundation to be at least 1.7.0-rc01 or newer. This is enforced to remedy a behaviour incompatibility between ui and foundation in regards to
NestedScrollSource
changes that happened early during 1.7.0-alpha01.
نسخه ۱.۷.۰-بتا۰۷
۷ آگوست ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-beta07
is released. Version 1.7.0-beta07 contains these commits .
رفع اشکالات
- Text input related
SemanticsNodeInteraction
functionsperformTextReplacement
,performTextInput
, andperformTextClearance
is now going to throw assertion errors when they are called on read onlyTextFields
. ( I4ae8f )
نسخه ۱.۷.۰-بتا۰۶
۲۴ ژوئیه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-beta06
is released. Version 1.7.0-beta06 contains these commits .
نسخه ۱.۷.۰-بتا۰۵
۱۰ ژوئیه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-beta05
is released. Version 1.7.0-beta05 contains these commits .
رفع اشکالات
- Fixed a bug where changing the software keyboard would cause
TextField
to not accept input from the new keyboard until the focus is lost and regained. - Fixed an issue where attempts to persist layer contents would cause unintended side effects when rendering with
SurfaceView
content.
نسخه ۱.۷.۰-بتا۰۴
۲۶ ژوئن ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-beta04
is released. Version 1.7.0-beta04 contains these commits .
رفع اشکالات
- Avoid crashes when measuring very large text lines (eg 10k characters) ( 8157ab )
- Disable software rendering support for the
GraphicsLayer
API. ( 35ddd8 ) - Fix for a crash in layer persistence logic. ( 70b13e )
- Reusing layer objects optimization was reverted, as it caused rendering issues. ( 70b13e )
نسخه ۱.۷.۰-بتا۰۳
۱۲ ژوئن ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-beta03
is released. Version 1.7.0-beta03 contains these commits .
نسخه ۱.۷.۰-بتا۰۲
۲۹ مه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-beta02
is released. Version 1.7.0-beta02 contains these commits .
تغییرات API
- Renamed
SemanticsProperties.Editable
toIsEditable
and changesSemanticsPropertyReceiver.editable
to a valisEditable
. The property is now a boolean and always specified by text fields. ( I8acd8 ) - Rename accessibility benchmark parameter. ( I3d440 )
- Updated API for styling the links:
TextLinkStyles
is now part of theLinkAnnotation
constructor and theAnnotatedString.fromHtml
method ( I90b2b ). Also removed theTextDefaults
from material ( I5477b )
رفع اشکالات
- Renamed
LayoutCoordinates.introducesFrameOfReference
toLayoutCoordinates.introducesMotionFrameOfReference
to better reflect its purpose. Renamed related function to calculate coordinates based on that flag. ( I3a330 )
نسخه ۱.۷.۰-بتا۰۱
۱۴ مه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-beta01
is released. Version 1.7.0-beta01 contains these commits .
تغییرات API
- Renamed
performCustomAccessibilityActionLabelled
toperformCustomAccessibilityActionWithLabel
andperformCustomAccessibilityActionWhere
toperformCustomAccessibilityActionWithLabelMatching
. ( I5387f ) -
AnnotatedString.hasEqualsAnnotations
is nowhasEqualAnnotations
( I685c0 ) - Updated the API for getting Material themed links in text. Specifically, removed the methods from the
TextDefaults
for constructing themedLinkAnnotations
and parse HTML with themed links. Instead, added aTextLinkStyles
class that allows to style the links as a parameter to the Text composable. ( I31b93 )
رفع اشکالات
- Fixes additional use cases when dynamically adding pointer input modifiers during events 63e1504
نسخه ۱.۷.۰-آلفا۰۸
۱ مه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha08
is released. Version 1.7.0-alpha08 contains these commits .
تغییرات API
- Adds support for mutable shape implementations.
Shape#createOutline
is now observed inside graphics layers, so reading state values inside will cause invalidations when the state changes, allowing for more performant shape animations. ( Id1629 , b/326070216 ) - Renamed
isPositionedByParentWithDirectManipulation
tointroducesFrameOfReference
. Note that it now has the reverse effect, meaning that by default, mostLayoutCoordinates
introduce a frame of reference, and, only when placed under direct manipulation the property will be false. To query position with only those that introduce a frame of reference, usepositionInLocalFrameOfReference(...)
. OrpositionInLocalLookaheadFrameOfReference
from aLookaheadScope
. ( Ifc5f7 ) -
LookaheadScope
APIs have been made stable ( I21507 ) - Change action lambda for
getScrollViewportLength
as per API council feedback. ( Ibc74a ) - Updated
GraphicsLayer
outline APIs to consume float parameters instead of int. RemovedUnsetOffset/UnsetSize IntSize
sentinel values in favor of already existing Unspecified constants on float based Offset and Size inline classes ( I2fb03 , b/333863462 ) - When injecting mouse input during tests,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
now accept abutton: MouseButton
parameter to make them more universally applicable. The default value isMouseButton.Primary
for all methods. ( I31a23 , b/190493367 , b/261439695 ) - Renamed
onClicked
toonClick
insideLinkInteractionListener
. ( Iaa35c ) - Rename
TextInclusionStrategy.isInside
toisIncluded
. MakeParagraph/MultiParagraph#getRangeForRect()
return type non nullable. ( I51f26 )
رفع اشکالات
- Fixed long screenshot capture for scrolling containers with
reverseScrolling=true
. ( I7c59c )
مشارکت خارجی
- Added support for prefetching items in nested
LazyLists
(eg aLazyColumn
that renders nestedLazyRows
). This change is expected to reduce frame drops during scrolling for theseLazyLists
. The implementation default is to prefetch the first 2 nested items, however this behavior can be controlled by the newLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
andLazyListPrefetchStrategy#onNestedPrefetch
APIs. ( I51952 )
نسخه ۱.۷.۰-آلفا۰۷
۱۷ آوریل ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha07
is released. Version 1.7.0-alpha07 contains these commits .
تغییرات API
-
ClickableText
is marked as deprecated. To add links to the text, create anAnnotatedString
with aLinkAnnotation
corresponding to your link and pass thisAnnotatedString
to the Text composable. ( I34d4b , b/323346994 ) - Introduce
ViewConfiguration.HandwritingGestureLineMargin
for handwriting gestures. SupportJoinOrSplit
gesture forBasicTextField
( Ie6e13 , b/325660505 ) -
FocusProperties.enter
andFocusProperties.exit
are no longer experimental.FocusDirection.Enter
andFocusDirection.Exit
are no longer experimental.FocusRequester.Cancel
is no longer experimental ( I461a1 , b/261564106 ) - When querying Layout coordinates, you may now use the
excludeDirectManipulationOffset
argument to exclude the offset set by parent Layouts that placed their children usingPlaceable.PlacementScope.withDirectManipulationPlacement
. Likewise, a Layout that changes the position of its children frequently may now place them usingwithDirectManipulationPlacement
(such as Scroll, implemented by default). This helpsapproachLayout
based animations to be more intuitive, having now the opportunity to differentiate what offset to animate, and what to apply directly when deciding to animate their approach. ( I60ec7 ) - The feature flag for long screenshots has been removed. ( I28648 , b/329128246 )
-
LazyColumn
will now render sticky headers correctly in long screenshots. ( I8d239 , b/329296635 ) -
NestedScroll
sources Drag and Fling are being replaced byUserInput
andSideEffect
to accommodate for the extended definition of these sources that now include animations (Side Effect) and Mouse Wheel and Keyboard (UserInput
). ( I40579 ) -
ApproachLayoutModifierNode
andModifier.approachLayout
are now stable, with newisMeasurementApproachInProgress()
andisPlacementApproachInProgress()
to replace the oldisMeasurementApproachComplete()
andisPlacementApproachComplete()
respectively. - Removed deprecated
intermediateLayout
modifier. ( I3e91c ) - Rename
GraphicsLayer#buildLayer
to record to mirror the begin/endRecording methods of Displaylist backed APIs likeRenderNode
and Picture. - Updated
rememberGraphicsLayer
to leveragerememberObserver
. ( I312c1 , b/288494724 , b/330758155 ) -
UrlAnnotation
is deprecated, useLinkAnnotation.Url
instead. If you're using Material theming, then useTextDefaults
object to create the annotation with Material theming applied to it ( I8d180 , b/323346545 ) - Text links got pressed state styling option in addition to normal styling, hovered and focused ( I5f864 , b/139312671 )
-
String.parseAsHtml
renamed toAnnotatedString.Companion.fromHtml
. ( I43dcd ) - Added styling arguments (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) and a link interaction listener to theparseAsHtml
method. When parsing the HTML-tagged string with<a>
tags, the method will construct aLinkAnnotation.Url
for each such tag and pass the styling objects and link interaction listener to each annotation. ( I7c977 ) -
LinkAnnotation
now takes the state-based styling arguments and aLinkInteractionListener
. Add this annotation to theAnnotatedString
to get a hyperlink. By passingfocusedState
and/orhoveredState
you can define the visualconfiguration
for links when they are focused and/or hovered. ( I81ce4 , b/139312671 ) -
ImeOptions.hintLocales
is no longer nullable. If you want to pass an empty Locale list, please useLocaleList.Empty
. ( Ic5bc4 )
رفع اشکالات
- Gracefully handles bad/corrupt historical input event data (ignores bad offset data).
- Fixes unexpected pointer events when a pointer input modifier is added dynamically before another pointer input modifier during an active pointer input event stream (for example, between a hover enter and hover exit [mouse/stylus]).
نسخه ۱.۷.۰-alpha06
۳ آوریل ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha06
is released. Version 1.7.0-alpha06 contains these commits .
ویژگیهای جدید
- Added
parseAsHtml
method for styled strings: it allows to convert a string marked with HTML tags intoAnnotatedString
. Note that not all tags are supported, for example you won't be able to display bullet lists yet. ( I84d3d , I30626 , b/139326648 ) - Implemented experimental support for long screenshots in Compose scroll containers using the official Android API (
ScrollCaptureCallback
). This feature is experimental and may not currently handle all cases correctly. For that reason it is currently disabled by default. To opt-in, set theComposeFeatureFlag_LongScreenshotsEnabled
flag to true. ( I2b055 , b/329296471 )
تغییرات API
-
fun ClipEntry.getMetadata()
is changed toval ClipEntry.clipMetadata
. ( I50155 ) - Removed
ClipboardManager.getClipMetadata
andClipboardManager.hasClip
functions. Please useclipEntry.getMetadata()
to read the current clip entry's metadata. Also checkClipboardManager.getClip
's result if it's null or not to understand whether Clipboard has a current clip. ( I50498 ) - Now you can pass
GraphicsLayer
objects intoplaceable.placeWithLayer()
functions ( I1b22f ) -
ClipboardManager.setClip
now accepts null to be able to clear the Clipboard. ( I7d2e9 ) - Added resource ids for assist with hiding Views used as implementation details within build tooling ( I99531 )
- Added
GraphicsLayer#toImageBitmap
suspend method to support rendering contents of a bitmap into aGraphicsLayer
. This is a hardware accelerated rendering operation on API level 22+ (inclusive) which supports over 99% of all Android devices. On Android API level 21 this falls back onto software rendering. ( I9e114 ) - Helper method to convert an Android
RectF
toComposeRect
( I39925 , b/325660505 ) - All
KeyboardOptions
parameters now have an unspecified value by default. AddedKeyboardOptions.merge
method. - Renamed
KeyboardOptions.autoCorrect
toautoCorrectEnabled
and made it nullable, where null indicates no value was specified. ( Ia8ba0 , b/295951492 ) -
BasicTextField(state)
variant andBasicSecureTextField
now useKeyboardActionHandler
instead ofKeyboardActions
to process actions taken by the software keyboard. ( I58dda )
نسخه ۱.۷.۰-آلفا۰۵
۲۰ مارس ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha05
is released. Version 1.7.0-alpha05 contains these commits .
ویژگیهای جدید
- Introduce new
GraphicsLayer
API to record drawing commands in a display list as well as additional properties that affect the rendering of the display list. This provides an isolation boundary to divide a complex scene into smaller pieces that can be updated individually of one another without recreating the entire scene. Transformations made to aGraphicsLayer
can be done without re-recording the display list. UnlikeModifier.graphicsLayer
,GraphicsLayer
allows for rendering of Composable content elsewhere and is useful in animated use cases where content is expected to be rendered in different scenes.
تغییرات API
-
GraphicsLayer.draw(Canvas)
is not a public api anymore. Please use theDrawScope.drawLayer(GraphicsLayer)
extension function instead to draw the layer. ( I7a7c0 ) - Split
restrictedConstraints()
to two methods:fitPrioritizingWidth()
andfitPrioritizingHeight()
( I6d7fd ) - Introduced
HardwareCanvas
stub for Android L usage ( I1c3b5 , b/288494724 ) - Update Compose framework to expose a
GraphicsContext
composition local alongside updating Owner,DelegateableNode
anddrawWithCache
Modifier implementations to expose access to theGraphicsContext
for scoped access that will automatically cleanupGraphicsLayer
instances when Modifiers are torn down. ( I64a2f , b/288494724 ) - Introduced
InterceptPlatformTextInput
for helping write low-level IME-related tests and other low-level IME use cases.PlatformTextInputTestOverride
has been deprecated. ( I862ed , b/322680547 ) -
GraphicsLayer.setOutline(Outline)
extension function was added. ( Ib81f4 ) - Introduce
GraphicsContext
function constructor to create a factory to createGraphicsLayer
instances ( Ib98d6 , b/288494724 ) - Exposed
GraphicsLayer
API to provide developer defined flexibility in capturing drawing commands that can be used to draw elsewhere and also apply different visual effects to the end result. ( I80245 , b/288494724 ) - Introduce the
Paragraph#getRangeForRect
which returns a range of text covered by a given rectangle area. ( Iee516 , b/325660505 ) - Removed experimental override of
BasicText
withonLinkClicked
argument. A replacement API for hyperlinks support will follow in the future. ( I107d5 )
رفع اشکالات
- Added
GraphicsLayer
expect/actual API definition to support capturing and replaying of drawing commands with optional compositing visual effects and transforms. IntroduceGraphicsContext
interface to contain graphics dependencies including creation and management ofGraphicsLayer
instances. ( I4a8d6 , b/288494724 ) - Fixed an interop issue with 1D focus search where focus would get stuck inside a
ComposeView
that was embedded among other views. ( I08fd4 )
مشارکت خارجی
-
LocalLifecycleOwner
moved from Compose UI tolifecycle-runtime-compose
so that its Compose-based helper APIs can be used outside of Compose UI. Thanks Jake Wharton for the contribution. ( I6c41b , b/328263448 ) - Consistently expose bias float properties on all bias-based alignment subtypes. ( I69f0f , b/328088992 )
نسخه ۱.۷.۰-آلفا۰۴
۶ مارس ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha04
is released. Version 1.7.0-alpha04 contains these commits .
تغییرات API
- Support stylus handwriting feature for BasicTextField2 on devices after Android U. ( I002e4 )
- In this CL we are adding the
GetScrollViewportLength
semantic action so we can pipe up information about the components being scrolled in compose to the a11y system. This CL also applies the usage of said property in Foundation Scrollable Lists. ( Ic5fa2 ) -
FocusRequester.createRefs
is now stable ( I4d92c , b/261436820 ) - Introduced
DelegatableNode.requireView()
to allow modifier nodes to get the current AndroidView
without reading a composition local. ( I40768 ) - New API
Path.reverse()
to reverse a path's direction ( I36348 ) - Added
hintLocales
toKeyboardOptions
to provideTextFields
with the ability to hint IMEs with specific locales to preset a preferred language. - Expose
platformLocale
property fromLocale
that returns the underlying platform object, egjava.util.Locale
. ( I921c6 )
نسخه ۱.۷.۰-آلفا۰۳
۲۱ فوریه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha03
is released. Version 1.7.0-alpha03 contains these commits.
تغییرات API
- Introducing
ContextualFlowRow
and EnhancedFlowRow
/Column
with MaxLines and Overflow. We are excited to announce enhancements to the experimentalFlowRow
andFlowColumn
, now featuring maxLines and overflow support, alongside the debut ofContextualFlowRow
andContextualFlowColumn
. This update is designed to provide performance optimal components, whereContextualFlow*
is perfect for a large number of items making use of a smallmaxLines
config and dynamic +N see more buttons, andFlowRow
andFlowColumn
is perfect for a small number of items, less than 100 items. Important: To maintain existing behavior inFlowRow
orFlowColumn
where all items are composed regardless of if they fit the cross axis max, setoverflow
toFlowRowOverflow.Visible
orFlowColumnOverflow.Visible
during initialization. ExploreContextualFlowRowSample
andFlowRowSample
for examples of these new features in action. ( Ib9135 , b/293577082 ) - Add
maxTextLength
semantics property that should be set on text fields that filter the maximum allowed number of characters. ( I24d9f , b/170648072 ) - The
Modifier.inspectable
wrapper has been deprecated. This API will create more invalidations of your modifier than necessary, so its use is now discouraged. Developers are encouraged to implement theinspectableProperties()
method onModifierNodeElement
if they would like to expose modifier properties to tooling. ( Ib3236 ) - New constructor for
PopupProperties
which allows for full control overWindowManager.LayoutParams
flags. ( Ibb33e , b/312485503 ) - Introduced
DelegatableNode.requireLayoutCoordinates()
as a way to get aModifier.Node
's currentLayoutCoordinates
without needing to overrideonPlaced
and store the coordinates in a property yourself. ( Ia8657 ) - Introduced
DelegatableNode.currentLayoutCoordinates
as a way to get aModifier.Node
's currentLayoutCoordinates
without needing to overrideonPlaced
and store the coordinates in a property yourself. ( Iaebaa ) -
BasicTextField2
and related APIs underandroidx.compose.foundation.text2
package are moved toandroidx.compose.foundation.text
. ( I9f635 ) - Added a new
ApproachLayoutModifierNode
API to support creating custom approach logic in an explicit Modifier Node. Also added a new experimentalDeferredTargetAnimation
API for animations whose target is unknown at instantiation. ( I60745 ) - New
Path
APIs to query the direction of a Path and to extract contours from aPath
. ( I63d04 ) - Added
PathHitTest
andPath.contains(Offset)
to check if aPath
contains a specific point. ( I3b218 ) - The
TextLayoutResult
now exposes thegetLineBaseline(lineIndex)
method. This allows to read the baseline of an arbitrary line of the text in addition to existing convenience propertiesfirstBaseline
andlastBaseline
. ( Ide4e8 , b/237428541 ) - Added method to compare only the annotations of two
AnnotatedStrings
. ( I32659 )
رفع اشکالات
- Fixed a backwards compatibility issue with
SemanticsPropertyReceiver.performImeAction
andSemanticsActions.PerformImeAction
. ( Id0528 , b/322269946 )
نسخه ۱.۷.۰-آلفا۰۲
۷ فوریه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha02
is released. Version 1.7.0-alpha02 contains these commits.
تغییرات API
- Fixed a binary compatibility issue with
SemanticsPropertyReceiver.performImeAction
. ( I65865 , b/322269946 ) -
PopupProperties
constructor that takes ausePlatformDefaultWidth
parameter is no longer experimental. ( I8f8d2 ) - Added an overload of
ComposeTestRule.waitUntil
that takes a string description of the condition to include in the timeout message. ( I9413e ) - New semantics API
unset()
to remove semantics properties that are added in the same modifier chain. New semantics propertyisOpaque
. ( I8c583 , b/317966058 , b/246056649 ) - Removed
originalEventPosition
from copy method in public API ofPointerInputChange
. ( I7bead )
رفع اشکالات
- Fixed an a11y bug allowing non-tabs and non-radiobuttons to be clickable when selected. ( I2181c )
-
VelocityTracker
will now have the fix for adding points on by default. The fix can still be turned off by settingVelocityTrackerAddPointsFix
to false if there's any issues. ( Ib3877 , b/269487059 ) - Fixed backwards binary incompatibility in
TextStyle
andParagraphStyle
. ( I179f0 , b/320819734 )
مشارکت خارجی
- Added a new
DialogProperties
constructor without platform-specific parameters. ( I45829 ) - Added a new
PopupProperties
constructor without platform-specific parameters. ( I9a038 )
نسخه ۱.۷.۰-آلفا۰۱
۲۴ ژانویه ۲۰۲۴
androidx.compose.ui:ui-*:1.7.0-alpha01
is released. Version 1.7.0-alpha01 contains these commits.
تغییرات API
- Expanded
ClipboardManager
by addingClipEntry
andClipMetadata
to support arbitrary content such as images. - Adds
DeviceConfigurationOverride
API toui-test
to allow locally overriding the behavior of content under test, such as to specify an available size, locale, layout direction, font scale, or theme.
نسخه ۱.۶
نسخه ۱.۶.۸
۱۲ ژوئن ۲۰۲۴
androidx.compose.ui:ui-*:1.6.8
is released. Version 1.6.8 contains these commits .
رفع اشکالات
- Fixed inconsistencies in font scaling when the font scale is less than the lowest defined table. In this case, we now interpolate between the linear 1x scale and the lowest defined table, so that the font size is monotonically increasing as scales increase. ( Icbae3 )
نسخه ۱.۶.۷
۱ مه ۲۰۲۴
androidx.compose.ui:ui-*:1.6.7
is released. Version 1.6.7 contains these commits .
نسخه ۱.۶.۶
۱۷ آوریل ۲۰۲۴
androidx.compose.ui:ui-*:1.6.6
is released. Version 1.6.6 contains these commits .
رفع اشکالات
- Fixes a rare
BasicTextField
crash.
نسخه ۱.۶.۵
۳ آوریل ۲۰۲۴
androidx.compose.ui:ui-*:1.6.5
is released. Version 1.6.5 contains these commits .
نسخه ۱.۶.۴
۲۰ مارس ۲۰۲۴
androidx.compose.ui:ui-*:1.6.4
is released. Version 1.6.4 contains these commits .
نسخه ۱.۶.۳
۶ مارس ۲۰۲۴
androidx.compose.ui:ui-*:1.6.3
is released. Version 1.6.3 contains these commits .
نسخه ۱.۶.۲
۲۱ فوریه ۲۰۲۴
androidx.compose.ui:ui-*:1.6.2
is released. Version 1.6.2 contains these commits.
نسخه ۱.۶.۱
February 7, 2024 androidx.compose.ui:ui-*:1.6.1
is released. Version 1.6.1 contains these commits.
رفع اشکالات
- Fixed a backwards compatibility issue with
SemanticsPropertyReceiver.performImeAction
andSemanticsActions.PerformImeAction
. ( Ie0bb2 , b/322269946 ) - Layouts now issue an error while measuring when one returns an abnormally large size. This kind of error normally happens when the measurement uses maximum constraints directly without checking for
Constraints.Infinity
. The check will help developers find problems with the layout having the wrong size rather than in a layout that contains it. ( I339a9 )
نسخه ۱.۶.۰
۲۴ ژانویه ۲۰۲۴
androidx.compose.ui:ui-*:1.6.0
is released. Version 1.6.0 contains these commits.
نسخه ۱.۶.۰-rc01
۱۰ ژانویه ۲۰۲۴
androidx.compose.ui:ui-*:1.6.0-rc01
is released. Version 1.6.0-rc01 contains these commits.
رفع اشکالات
- Optimized vector graphics implementation to improve performance by minimizing additional recompositions.
نسخه ۱.۶.۰-بتا۰۳
۱۳ دسامبر ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-beta03
is released. Version 1.6.0-beta03 contains these commits.
ویژگیهای جدید
- It is now possible for a
LayoutCoordinates
to be detached without the node being detached. Guard against that in the compose Layout Inspector ( If693 )
رفع اشکالات
-
PlatformImeOptions
is now a concrete class instead of an interface. ( If40a4 ) - Fixed extra downstream recompositions caused by
LocalSoftwareKeyboardController
andLocalTextInputService
being provided new values every time a root recomposed. ( I42190 , b/310510985 )
نسخه ۱.۶.۰-بتا۰۲
۲۹ نوامبر ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-beta02
is released. Version 1.6.0-beta02 contains these commits.
نسخه ۱.۶.۰-بتا۰۱
۱۵ نوامبر ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-beta01
is released. Version 1.6.0-beta01 contains these commits.
تغییرات API
- The
DragAndDropTarget
modifier now takes in the receivingDragAndDropTarget
explicitly and has a lambda to opt into a drag and drop session. There are now two factory functions for aDragAndDropModifierNode
. One for receiving transfers and one for transferring data ( I69481 ) - Updated
maximumFlingVelocity
to be represented as Float. Updated documentation to be more clear about themaximumFlingVelocity
unity. ( I8adc7 ) -
onDragAndDropStart
in theDragAndDropModifierNode
factory has been renamed toacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
has been added to thedragAndDropTarget
Modifier to accept from a drag and drop session. This lambda returns a viableDragAndDropTarget
if interested in a drag and drop session. Other lambdas for processing drag events have been replaced by this. aDragAndDropTarget
factory function has been added to receive from drag and drop sessions ( Iebf3a ) Removed
DragAndDropInfo
as a typeDragAndDropModifierNode.drag
now takes parameters for thetransferData
, decoration size and drag decorationDrawScope
lambdaDragAndDropTarget
has methods for particular drag and drop events instead of being a single abstract methodonDragAndDropEvent
in the factory function for aDragAndDropModifierNode
has been renamed toonDragAndDropStart
to better communicate that theDragAndDropTarget
provided is valid for a given drag and drop session onlyThe
DragAndDropEventType
has been removed ( I645b1 )Renamed
PlatformTextInputModifierNode.runTextInputSession
toestablishTextInputSession
. ( I03cd0 )Improves traversable node api names to make them more understandable. ( Ia4474 )
Replace
OriginalText
byTextSubstitution
. ( Ifa5a8 )Renamed
PlatformTextInputModifierNode.textInputSession
torunTextInputSession
. ( Ie9c6b )The children of
SubcomposeLayout
(and layouts likeLazyColumn
based on it) which are retained to be reused in future are considered deactivated. NewassertIsDeactivated()
test API was introduced to test such nodes. The rests of the test apis will filter out deactivated nodes by default. ( I2ef84 , b/187188981 )Removed
FocusDirection.In
andFocusDirection.Out
useFocusDirection.Enter
andFocusDirection.Exit
instead ( I2f660 )Material
SwipeToReveal
APIs (for Cards and Chips) now rely on a slot based API (as recommended by Compose) instead of data class based instances to create those slots. This is a breaking change, please see the demo and sample code for examples on how to use the new API. ( Ia8943 )FontStyle(int)
constructor is deprecated, useFontStyle.Normal
orFontStyle.Italic
instead. ( I66610 )Renamed
FontScalable
interface toFontScaling
( Ie804a )
رفع اشکالات
-
SoftwareKeyboardController.show()
will no longer show the software keyboard if no text editor is focused. ( I2165a , b/301477279 ) - Hardware key Up events for keys that haven't received a Down event in the same Compose View will now be ignored. ( Ib37b4 , b/305518328 )
- Add renderer support for Sweep Gradient in
ArcLine
. ( I4d5bb ) - Implement equals and hashcode for
PageSize.Fixed
. ( Ie3ede , b/300134276 ) - Fix binary compatibility issue with Window Inset change ( Iee695 )
- Remove material core layer for Material3 Chip/Button as the microbenchmarks show better performance without it. ( I55555 )
-
TestDispatcher
s passed as theeffectContext
to Compose tests will now be used to create the test and frame clocks. ( Ia7178 )
نسخه ۱.۶.۰-آلفا۰۸
۱۸ اکتبر ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha08
is released. Version 1.6.0-alpha08 contains these commits.
تغییرات API
-
Modifier.dragAndDrawSource
has had theonDrawDragShadow
lambda renamed todrawDragDecoration
andDragAndDropInfo
has had the size parameter renamed todragDecorationSize
. ( Id0e30 , b/303904810 ) - Introduce
SemanticsNodeInteraction.isDisplayed()
andSemanticsNodeInteraction.isNotDisplayed()
to check if a matched node is visible or not without also asserting on it. ( I2c196 , b/302100809 ) - Introduced a special
Unspecified
value forTextAlign
,TextDirection
,Hyphens
andLineBreak
fields of theParagraphTextStyle
to replacenull
. Because these classes are inline classes, by replacing nullable with the Unspecified, we avoid primitive type boxing. Constructors, getters and other methods inTextStyle
and Paragraph style were updated to accept the mentioned parameters as non-null types. ( I4197e , b/299490814 ) - Add
GoogleFont
overload for reading aGoogleFont
from XML. ( If8f59 ) - Made
LoremIpsum
PreviewParameterProvider
an open class. ( I41bf5 , b/266918816 , b/300116360 )
رفع اشکالات
-
FontFamilyResolver
now usesDispatchers.Main
for cache management coroutines. ( Ie8dd9 ) -
AndroidViewBinding
now synchronously removesFragment
instances inflated by including aFragmentContainerView
in your layout as part of itsonRelease
by usingcommitNow
(instead of thecommit
it was using previously), thus fixing issues with Live Edit's method with replacing the composition upon changes. ( I58fbf )
نسخه ۱.۶.۰-آلفا۰۷
۴ اکتبر ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha07
is released. Version 1.6.0-alpha07 contains these commits.
تغییرات API
- Introduced
PlatformTextInputMethodTestOverride
for writing tests for custom text editors. ( Id159b ) - Adds
dragAndDropSource
Modifier for starting drag and drop sessions, anddragAndDropTarget
Modifier for receiving from drag and drop sessions. ( Ib7828 , b/286038936 ) - Added
ColorList
andColorSet
collections that avoid allocations. ( I744bd ) - Added
DisableNonLinearFontScalingInCompose
temporary flag to disable non-linear font scaling. SetDisableNonLinearFontScalingInCompose = true
in your tests if you need time to clean them up. This flag will be removed in Compose 1.6.0-beta01. ( Ic9486 )
رفع اشکالات
- Optimized XML vector drawables parsing. ( Ibb015 )
نسخه ۱.۶.۰-alpha06
۲۰ سپتامبر ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha06
is released. Version 1.6.0-alpha06 contains these commits.
تغییرات API
- Additional optimizations to Material icons. ( I3e08d )
- Adds ability to traverse up/down modifier tree to find similar nodes. ( I2d234 )
- Added
onRestoreFailed()
callback to thefocusRestorer()
modifier ( Ie1d43 ) - Added androidx annotations to various graphics APIs to specify
ColorInt
,FloatRange
,IntRange
,Size
and more. ( Id65c8 , b/290950582 ) - Add
showSystemUi=true
toPreviewScreenSizes
definition ( Ib61d3 )
تغییرات رفتاری
- Compose now uses non-linear font scaling for better readability and accessibility. When font scale > 100% in system settings, small text will increase in size normally, but already-large text will only increase a little bit. Also, line heights defined in SP will automatically adjust to stay proportional to the 100% scale intended height. See the Font Scaling Best Practices for more info. ( I11518 )
نسخه ۱.۶.۰-آلفا۰۵
۶ سپتامبر ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha05
is released. Version 1.6.0-alpha05 contains these commits.
تغییرات API
- Enable content capture in
AndroidComposeViewAccessibilityDelegateCompat
. ( Ib2969 ) - Fling velocities in View components like
ScrollView
andRecyclerView
are capped atViewConfiguration.ScaledMaximumFlingVelocity
. Compose now contains its own version ofmaximumFlingVelocity
which now applies toDraggable
. ( Ibf974 ) - Adds initial scaffolding to support platform drag and drop APIs. ( If84ce )
- Add
deviceId
intoRotaryScrollEvent
( Iba3bf ) - Updated
ui-tooling
Devices API to include newer devices ( Ib25b4 )
نسخه ۱.۶.۰-آلفا۰۴
۲۳ آگوست ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha04
is released. Version 1.6.0-alpha04 contains these commits.
تغییرات API
- Added a method to deactivate
ReusableComposition
, removing observations but keeping nodes in place. The deactivated composition can be activated again by callingsetContent
. ( Ib7f31 ) - Add
ReusableComposition
interface for managing lifecycle and reuse of subcompositions. ( I812d1 , b/252846775 ) -
Modifier.focusGroup
has been promoted to stable APIs. ( I7ffa3 ) - Added androidx annotations to various graphics APIs to specify
ColorInt
,FloatRange
,IntRange
,Size
and more. ( I70487 , b/290950582 ) - Updated
ColorFilter
API to have concrete subclass types for improved inspectability of parameters. ( I5fe29 ) - Introduce wear-tooling-preview library to list valid wear devices that can be used for UI previews ( Ib036e )
- Created the
FontScalable
interface to handle the font scaling part of the Density interface. ( I2cf3f )
نسخه ۱.۶.۰-آلفا۰۳
۹ آگوست ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha03
is released. Version 1.6.0-alpha03 contains these commits.
تغییرات API
- New type of enter/exit transition that scales the content based on the size of the animating container during enter & exit animation.
LookaheadScope
Composable fun and interface are now stable. ( Ifb2ce ) - Added support for configuring
privateImeOptions
( Idb772 )
رفع اشکالات
-
PopupPositionProvider.calculatePosition
will now automatically update the popup's position when state read in the calculation is changed. ( I676a1 , b/292257547 ) - Fixed text fields showing keyboard and being editable when
readOnly
is true. Also fixed the keyboard not showing whenreadOnly
is changed from true to false while focused. ( I34a19 , b/246909589 ) - Expanded application of global assertions in UI testing. ( I1f90d )
نسخه ۱.۶.۰-آلفا۰۲
۲۶ ژوئیه ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha02
is released. Version 1.6.0-alpha02 contains these commits.
تغییرات API
- Added a service locator interface that can be implemented by implementors of Composition that allows an implementation of Composition that delegates to another composition delegate service lookups to the original Composition. This should not be called directy and is used to enable creating experimental APIs in the runtime that can be found from wrapped versions of the composer such as the UI module does. ( I296b9 )
- Completely redesigned
PlatformTextInput*
API. ( I6c93a , b/274661182 , b/267235947 , b/277380808 ) -
SoftwareKeyboardController
andLocalSoftwareKeyboardController
are no longer experimental.LocalSoftwareKeyboardController
is also now a properCompositionLocal
. ( I4c364 ) -
LookaheadLayout
andLookaheadLayoutScope
have been deprecated for a few releases and are now removed. The replacement APIs areLookaheadScope
that can work with any Layout. ( I12ac3 ) - Added
SemanticsNodeInteraction.requestFocus
as a more convenient and discoverable way to request focus in tests. ( Ie8722 ) - Add experimental APIs for registering global assertions, for use by testing frameworks in the future. ( I12d77 )
رفع اشکالات
-
AndroidView
'supdate
callback's first invocation will now be defered until the view is attached, instead of running when the composition that introduces theAndroidView
is applied. This fixes a bug where theupdate
callback wouldn't be invalidated if a state it read was changed immediately by an effect. ( Ie9438 , b/291094055 )
نسخه ۱.۶.۰-آلفا۰۱
۲۱ ژوئن ۲۰۲۳
androidx.compose.ui:ui-*:1.6.0-alpha01
is released. Version 1.6.0-alpha01 contains these commits.
ویژگیهای جدید
- Support lookahead in
LazyList
. This allowsLazyList
in the lookahead pass to bypass any animation (eg item placement animation,AnimatedVisibility
, etc) and to calculate the lookahead size and position for all children. After the lookahead pass, children ofLazyList
could animate independently to the reality as seen in the lookahead pass.
Behavior Change: includeFontPadding is now false by default in Compose
includeFontPadding
is now false by default ( 21d806 ) in Compose.
includeFontPadding
is a legacy attribute that controls whether or not to include extra padding on top of the first line and last line of the text to accommodate any characters that may extend above or below the text baselines.
Updating this Compose version will modify how all texts render in your UI by removing the extra padding on top of the first line and last line of every text you display.
Depending on your UI requirements and the font metrics you're using, the changes should be minimal. However you might encounter blockers such as: - Broken screenshot tests. Fix the UI if required, and regenerate the golden images. - Text is slightly misaligned. Remove any custom negative paddings or add padding if required.
You can opt-in to includeFontPadding
by using PlatformTextStyle
for each text:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
You can opt-in to includeFontPadding
for all your texts by configuring your Material styles. Note that parameter names will vary between M2 and M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
You can find more about Compose includeFontPadding
in developer documentation and this blog post .
If you experience issues/bugs connected with this change, file a bug using the issue tracker .
تغییرات API
- Support
InputConnection#requestCursorUpdates
( I0c69b ) - Added
FocusRequester.saveFocusedChild
andFocusRequester.restoreFocusedChild
( Ic557e , b/272302679 , b/275157318 ) - Add
ResourceResolutionException
type to wrap throwables thrown when attempting to load bitmap assets with a description of the asset path that failed to load. ( I19f44 , b/230166331 , b/278424788 ) - Optimized accessibility for performance and memory allocations. ( Iede48 )
- Added semantics properties and actions to support text translation. ( I4a6bc )
- New property in
IntrinsincMeasureScope
and its implementations (egMeasureScope
) to indicate whether the current measure pass is a lookahead pass. ( I7a812 ) - Updated
DrawScope
api to introduce the ability to retarget rendering into a different canvas with alternative density/layoutdirection and size. - Updated
DrawContext
to support configuration of density and layout direction as well as making the canvas configurable. ( Ie1f9b , b/225408150 ) - Added
Paragraph#fillBoundingBoxes
to calculate character bounding boxes. ( If30ee ) - Added a set of common
MultiPreviews
( Ia5a27 )
رفع اشکالات
- Added
FocusTargetModifierNode
interface that can be used to create a customFocusTarget
. ( I9790e ) - Renamed the
fallback*
parameters on theTextMeasurer
constructor todefault*
. ( I940a5 ) - Renamed
SemanticsPropertyReceiver.performImeAction
toonImeAction
andSemanticsActions.PerformImeAction
toOnImeAction
. ( I8e841 ) - Adds Wheel to differentiate a mouse scroll from a drag in nested scrolling (specifically, in
NestedScrollConnection
). ( Ie57e4 ) - Added
asComposePaint
API to replacetoComposePaint
as the returned object wraps the originalandroid.graphics.Paint
( I22b4c ) - Deprecate
SemanticsProperties.imeAction
and replace with a new parameter toSemanticsActions.performImeAction
. ( I4a587 ) - Added support for selection by mouse. Touch based selection will expand by word, and shrink by character. ( Ic0c6c , b/180639271 )
-
Paragraph
methods that used to throwAssertionError
for out of bounds offsets now throwIllegalArgumentException
asMultiParagraph
does. ( I549d3 , b/243338896 )
نسخه ۱.۵
نسخه ۱.۵.۴
۱۸ اکتبر ۲۰۲۳
androidx.compose.ui:ui-*:1.5.4
is released. Version 1.5.4 contains these commits.
نسخه ۱.۵.۳
۴ اکتبر ۲۰۲۳
androidx.compose.ui:ui-*:1.5.3
is released. Version 1.5.3 contains these commits.
رفع اشکالات
- ( b/301209788 )
TextField
would sometimes incorrectly apply previous commands when focusing and inputting Korean input, leading to lost characters.
نسخه ۱.۵.۲
۲۷ سپتامبر ۲۰۲۳
androidx.compose.ui:ui-*:1.5.2
is released. Version 1.5.2 contains these commits.
رفع اشکالات
- Added workaround for crashes when accessibility scroll API was accessed from background thread.
- Fix unattached nodes being added to the semantics tree.
نسخه ۱.۵.۱
۶ سپتامبر ۲۰۲۳
androidx.compose.ui:ui-*:1.5.1
is released. Version 1.5.1 contains these commits.
رفع اشکالات
- Fixed text fields showing keyboard and being editable when
readOnly
is true. Also fixed the keyboard not showing whenreadOnly
is changed from true to false while focused. ( I34a19 , b/246909589 )
نسخه ۱.۵.۰
۹ آگوست ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0
is released. Version 1.5.0 contains these commits.
نسخه ۱.۵.۰-rc01
۲۶ ژوئیه ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-rc01
is released. Version 1.5.0-rc01 contains these commits.
رفع اشکالات
- Fixed crash happening when
SubcomposeLayout
is used insidemovableContentOf()
.
نسخه ۱.۵.۰-بتا۰۳
۲۸ ژوئن ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-beta03
is released. Version 1.5.0-beta03 contains these commits.
رفع اشکالات
- Added FocusTargetModifierNode interface that can be used to create a custom FocusTarget. ( Ifb1d6 )
- Fixed an issue with Dialog and Popup composables that could result in the child window not resizing as expected when
usePlatformDefaultWidth=true
. ( I112ee )
نسخه ۱.۵.۰-بتا۰۲
۷ ژوئن ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-beta02
is released. Version 1.5.0-beta02 contains these commits.
تغییرات API
- Added
asComposePaint
API to enable consumption of anandroid.graphics.Paint
instance to be used in Compose
رفع اشکالات
- Added
asComposePaint
API to replacetoComposePaint
as the returned object wraps the originalandroid.graphics.Paint
( I22b4c )
نسخه ۱.۵.۰-بتا۰۱
۲۴ مه ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-beta01
is released. Version 1.5.0-beta01 contains these commits.
تغییرات API
- Removed allocations in recomposition, color animations, and
AndroidComposeView
( Ib2bfa ) - Adds helper fun
CacheDrawModifierNode()
to allow delegation ( Icf8f9 ) - Introducing
isLookingAhead
property, accessible fromMeasureScope
, to observe lookahead results and influence main pass if desired. ( Ibf4c3 ) - New semantics property
traversalIndex
, a float used to reorder nodes inTalkBack
traversal (lower values come before). ( I9a81b , b/186443263 ) - تغییر نام ویژگی Semantics به
isContainer
بهisTraversalGroup
( I121f6 ) -
ColorProducer
now has anoperator fun invoke
instead ofproduce
( I4a9a2 ) - Add
Path
transform API to apply translation/scale/rotation transformations to path objects. ( I23434 , b/233772232 ) -
ColorProducer
's method is calledproduce
. ( I78bde ) - Rename
toFrameworkColorSpace
totoAndroidColorSpace
( I4f547 ) - Rename
ColorLambda
toColorProducer
. ( I73b1a ) - Introduce APIs to convert between Android and Compose colorspace types. ( Ie7db4 , b/279979665 )
- یک پارامتر رنگ به
BasicText
اضافه شد تا امکان متحرکسازی یا تنظیم رنگ متن به طور مؤثر فراهم شود. ( Iffd88 ، b/246961787 ) - Renamed
TextRange.constrain
toTextRange.coerceIn
. ( I31be2 ) - Added optimized
TextStyle.merge(...)
with full parameter list. ( Iad234 , b/246961787 ) - Stabilized many Text APIs that include
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. ( I2f740 , b/261581564 , b/261581931 , b/261561245 ) -
PlatformTextStyle.includeFontPadding
is undeprecated. Our original intent was to remove the field, however the feedback shows that developers need this configuration option. Therefore removing deprecation from the field ( I98e96 , b/277703184 ) - Added public
TextRange.constrain
method. ( I97912 ) -
UrlAnnotation
s inAnnotatedString
s can now be opened via accessibility services likeTalkBack
. ( If4d82 , b/253292081 ) - Added the
InsertTextAtCursor
semantics action for text fields. ( I11ed5 ) -
LineHeightStyle.Alignment(topRatio)
constructor is promoted to stable API. ( I79c32 , b/261565383 ) -
TextMeasurer
and related APIs are no longer experimental. ( I74647 , b/261581753 ) - Added the
PerformImeAction
semantics action to invoke the IME action on text editor nodes. ( Ic606f , b/269633506 ) -
PlatformTextInput
APIs are no longer experimental for Android. ( I668eb ) - value parameter name for
Enum.valueOf
changed ( Ia9b89 ) - more thrown exceptions from enum valueOf ( I818fe )
- Introduced new low-level
PlatformTextInputAdapter
API for building custom text input implementations that talk directly to platform APIs. ( I58df4 ) - Added
BlendMode
parameter toDrawScope.drawText
,Paragraph.paint
, andMultiParagraph.paint
methods to support different blending algorithms when drawing text on Canvas. ( I57508 ) - Rename
Font.MaximumAsyncTimeout
toFont.MaximumAsyncTimeoutMillis
. Rename only. ( I07af5 ) - Updated DPI values of
@Preview
reference devices ( Id6151 , b/254528382 ) - Add
brush
,alpha
parameters toBasicText
to allow efficiently animating or setting text brush. - Define box-free lambda types for Float, Double, Long, Int, Short in :ui:ui-unit ( I6f18d , b/246961787 )
رفع اشکالات
- Removed multiple allocations in pointer velocity tracking ( I26bae )
- Reduced allocations in layout and pointer input management ( I5333a )
- Optimize Vector memory usage and first-frames rendering ( I2f3c6 )
- Removed allocations when drawing lines and points with Canvas ( I9f535 )
- Add docs for
AndroidFont.fontVariationSettings
( I7d9e2 )
مشارکت خارجی
- Improved performance and reduce allocations in Vector APIs ( I906cb )
نسخه ۱.۵.۰-آلفا۰۴
۱۰ مه ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-alpha04
is released. Version 1.5.0-alpha04 contains these commits.
ویژگیهای جدید
-
Modifier.Node
Delegation Improvements Added an enhanced ability to delegate to otherModifier.Node
instances from aDelegatingNode
. This can be done with thedelegate
andundelegate
APIs. Prior to this change, every API from the delegating node needed to be delegated explicitly to the delegated node. After this change, node interfaces will get delegated implicitly unless theDelegatingNode
is explicitly overriding them. ( 67352bc )
تغییرات API
- Introduce
NestedScrollModifierNode
, aNestedScroll Modifier.Node
that can be delegated to. ( I69513 ) - Added
onReset
andonRelease
parameters to theAndroidViewBinding
composable, mirroring theAndroidView
composable and enabling support for View reuse withViewBinding
. ( I00b1e , b/276802519 ) - Updated Compose Path API to support rewind operations to support usecases of frequent Path manipulation with faster re-use. ( I7b797 )
- Added optimized
TextStyle.merge(...)
with full parameter list. ( Iad234 , b/246961787 ) - Stabilized many Text APIs that include
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. ( I2f740 , b/261581564 , b/261581931 , b/261561245 ) -
PlatformTextStyle.includeFontPadding
is undeprecated. Our original intent was to remove the field, however the feedback shows that developers need this configuration option. Therefore removing deprecation from the field ( I98e96 , b/277703184 )
رفع اشکالات
- Fixed regression where keyboard wasn't showing for text fields inside dialogs not created by the
Dialog
composable. ( I82551 , b/262140644 )
نسخه ۱.۵.۰-آلفا۰۳
۱۹ آوریل ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-alpha03
is released. Version 1.5.0-alpha03 contains these commits.
ویژگیهای جدید
- New default behavior for
SubcomposeLayout
inLookaheadScope
:SubcomposeLayouts
that don't have conditional slots (egTabRow
,Scaffold
,BoxWithConstraints
, etc) now work nicely with lookahead animations.
تغییرات API
- New default
intermediateMeasurePolicy
that reuses measure policy from lookahead pass allowsSubcomposeLayout
subtypes without conditional slots such asScaffold
,TabRow
, andBoxWithConstraints
to work with lookahead by default. ( Id84c8 ) - The recomposer created for an Android window will now only block calls to
withFrameNanos
instead of all composition when it receives anON_STOP
notification. This means windows associated with stopped activites will continue to recompose for data changes but the animations, or any other caller ofwithFrameNanos
, will block. ( Id9e7f , b/240975572 ) - Changes
motionEventSpy
to stable. ( Ic5ec4 , b/261560988 ) - Added public
TextRange.constrain
method. ( I97912 ) -
PlatformTextStyle.includeFontPadding
is no longer deprecated to encourage developers to use this compatibility API to switch and test settingincludeFontPadding
false. ( I98e96 , b/277703184 )
نسخه ۱.۵.۰-آلفا۰۲
۵ آوریل ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-alpha02
is released. Version 1.5.0-alpha02 contains these commits.
تغییرات API
- New
SubcomposeLayout
API that takes an additional intermediate measure policy for handling measure/layout logic during lookahead-based animations. ( I017d3 ) - PointerInput is now lazy and uses Modifier.Node for better performance ( read about the minor behavior change ). ( 15dab9 )
- Changes experimental APIs to stable with Key events. ( I9c7d8 , b/261566839 , b/261567368 )
- Changes experimental APIs to stable in
PointerInputChange
. ( I1b543 , b/261560988 , b/261565762 , b/261565749 ) - Adds a way to instantiate a
SuspendingPointerInputModifierNode
for more complexModifier.Node
implementations. ( Ic4933 ) -
UrlAnnotation
s inAnnotatedString
s can now be opened via accessibility services likeTalkBack
. ( If4d82 , b/253292081 ) - Added an API to intercept hardware keys before they are sent to the soft keyboard ( I4f4c6 , b/186800395 )
- Added the
InsertTextAtCursor
semantics action for text fields. ( I11ed5 ) - Text-related test actions (eg
performTextInput
) will now request focus directly, using the semantics action, instead of clicking on the field. ( I6ed05 )
رفع اشکالات
- Text test actions now require text fields to be enabled. ( Iab328 )
نسخه ۱.۵.۰-آلفا۰۱
۲۲ مارس ۲۰۲۳
androidx.compose.ui:ui-*:1.5.0-alpha01
is released. Version 1.5.0-alpha01 contains these commits.
تغییرات API
- Modifier.intermediateLayout now doesn't require an explicit LookaheadScope. The measure block in intermediateLayout has IntermediateMeasureScope as receiver, which provides convenient CoroutineScope, LookaheadScope and MeasureScope.( Ibe2e5 )
- LookaheadLayout has been replaced by LookaheadScope, which is no longer a Layout. This allows chid content in a LookaheadScope to be directly controlled by parent's MeasurePolicy. ( Ibe2e5 )
- Adds
Modifier.Node#coroutineScope
to allow Modifier.Nodes to launch coroutines. ( I76ef9 ) - Allow Modifier.Nodes to read CompositionLocals by implementing the CompositionLocalConsumerModifierNode interface. ( Ib44df )
- Propagation of @Deprecated class to property. ( I882d1 )
نسخه ۱.۴
نسخه ۱.۴.۳
۳ مه ۲۰۲۳
androidx.compose.ui:ui-*:1.4.3
is released. Version 1.4.3 contains these commits.
رفع اشکالات
- Fixed an issue where
AndroidView
may not be laid out correctly when used with certain Modifiers. ( I4dc77 , b/274797771 ) - Fixed a bug in 2D Focus Search that affected
DropDown
Menus ( b/276811828 ) - Fixed a bug in custom focus enter/exit properties that only ran the enter/exit block the first time the lambda was invoked ( b/277234245 )
- Fixed a regression in the focus system that caused a crash while reading
focusProperties
. ( b/271324781 , b/274897776 )
نسخه ۱.۴.۲
۱۹ آوریل ۲۰۲۳
androidx.compose.ui:ui-*:1.4.2
is released. Version 1.4.2 contains these commits.
رفع اشکالات
- Fixed an issue where
AndroidView
would not reuse its modifiers correctly, potentially resulting in unexpected behavior and crashes. ( Ib67ee , b/275919849 ) - Fixed regression where keyboard wasn't showing for text fields inside dialogs not created by the
Dialog
composable ( I82551 , b/262140644 )
نسخه ۱.۴.۱
۵ آوریل ۲۰۲۳
androidx.compose.ui:ui-*:1.4.1
is released. Version 1.4.1 contains these commits.
رفع اشکالات
- Fixes an issue with
ParentDataModifier
not affectingAndroidView
( b/274797771 )
نسخه ۱.۴.۰
۲۲ مارس ۲۰۲۳
androidx.compose.ui:ui-*:1.4.0
is released. Version 1.4.0 contains these commits.
تغییرات مهم از زمان ۱.۳.۰
- Added a new
PinnableContainer
API that allows lazy list items to be pinned, so that they are not disposed when they are scrolled out of bounds. For example,Modifier.focusable()
uses this mechanism to pin the currently focused item. ( Ib8881 , b/259274257 , b/195049010 ) - The focus system is rewritten using the new experimental
Modifier.Node
APIs. ( I7f4d7 , b/247708726 , b/255352203 , b/253043481 , b/247716483 , b/254529934 , b/251840112 , b/251859987 , b/257141589 ) - Added in
IsContainer
semantics property on Surfaces. This property will be used in a later change that determines traversal order based on the semantic meaning of elements such as surfaces. ( I63379 ) - Added a new accessibility role
DropdownList
. This can be used to replicateTalkBack
's behavior when focusingandroid.widget.Spinner
. ( I177e5 , b/236159001 ) - You can now use
PlatformTextStyle(emojiSupportMatch)
to optionally disable emoji support processing for a single Paragraph. ( Ia7100 , b/139326806 ) - Android Compose UI tests will now run layout passes for each frame when executing frames to get to idle (eg via
waitForIdle
). This may affect tests that assert on individual frames of layout animations. ( I8ea08 , b/222093277 ) - Added experimental
TextMotion
toTextStyle
to define Text either to beStatic(default)
or Animated. UseTextMotion.Animated
if Text is going to be scaled, translated, or rotated via animation. ( I24dd7 )
نسخه ۱.۴.۰-rc01
۸ مارس ۲۰۲۳
androidx.compose.ui:ui-*:1.4.0-rc01
is released. Version 1.4.0-rc01 contains these commits.
تغییرات API
- Added an overload of
AndroidView
composable function, which accepts theonReset
param. It allows View instances to be reused when their node in the composition is discarded and reused in a compatible way. This is especially useful forLazyRows
andLazyColumns
of Views. ( I3f10d , b/230099236 ) - Introduced new low-level
PlatformTextInputAdapter
API for building custom text input implementations that talk directly to platform APIs. ( I58df4 )
رفع اشکالات
-
BasicTextField
'sSetText
semantics action will now update the text buffer using the same code path as IME updates and the testing functions (egperformTextReplacement
). - Text testing functions
performTextClearance
,performTextReplacement
, andperformTextSelection
now useSemanticsActions
. ( I0807d , b/269633168 , b/269624358 )
نسخه ۱.۴.۰-بتا۰۲
۲۲ فوریه ۲۰۲۳
androidx.compose.ui:ui-*:1.4.0-beta02
is released. Version 1.4.0-beta02 contains these commits.
تغییرات API
- Removed the
modifierElementOf()
API. Please extend fromModifierNodeElement
directly instead. ( I2256b ) - Added a new
Modifier.Node.onReset()
callback allowing you to reset some local state to properly handle the case when theLayout
will be reused (for example as an item ofLazyColumn
). FixedFocusTargetModifierNode
to properly reset the focused state. ( I65495 , b/265201972 ) - Added
BlendMode
parameter toDrawScope.drawText
,Paragraph.paint
, andMultiParagraph.paint
methods to support different blending algorithms when drawing text on Canvas. ( I57508 )
رفع اشکالات
- Accessibility focus order algorithm improved, for example top/bottom bars are more often read first/last respectively ( 74e9c5 )
نسخه ۱.۴.۰-بتا۰۱
۸ فوریه ۲۰۲۳
androidx.compose.ui:ui-*:1.4.0-beta01
is released. Version 1.4.0-beta01 contains these commits.
تغییرات API
-
PinnableContainer.PinnedHandle.unpin()
was renamed torelease()
( I4667a ) - Added
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
andwaitUntilDoesNotExist
as experimental API toComposeTestRule
, extending thewaitUntil
API to accept any matcher and any count of nodes. SeeComposeTestRule
for further documentation. ( Ifa1b9 , b/226934294 ) - Rename
Font.MaximumAsyncTimeout
toFont.MaximumAsyncTimeoutMillis
. ( I07af5 ) - Removed
GoogleFont.Provider.AllFontsListUri
and linked to it in ktdoc instead. ( I16f29 )
رفع اشکالات
- Add docs for
AndroidFont.fontVariationSettings
( I7d9e2 )
نسخه ۱.۴.۰-آلفا۰۵
۲۵ ژانویه ۲۰۲۳
androidx.compose.ui:ui-*:1.4.0-alpha05
is released. Version 1.4.0-alpha05 contains these commits.
تغییرات API
- Introduced new experimental overloads for the
runComposeUiTest
function andcreate*ComposeRule
functions that acceptCoroutineContext
parameters. The context will be used for the test composition and anyLaunchedEffect
andrememberCoroutineScope()
calls in the composition. ( I10614 , b/265177763 ) - Add a new API to track 1 dimensional velocity ( If5a82 )
-
FocusRequester
is now marked as@Stable
. ( I580ee ) - Remove an experimental annotation from the
DialogProperties
constructor that takes ausePlatformDefaultWidth
parameter. ( Ic4048 ) - Added function to calculation position and tangent at a distance on a path - with
PathMeasure.getPosition()
andPathMeasure.getTangent()
( I3b47c ) - Removed accidentally exposed public setter on
PlatformParagraphStyle
. ( I07f47 ) - More type/nullability of inline/deprecated-hidden functions ( I24f91 )
- Add
AnnotatedString.hasStringAnnotations
to query for annotations with zero-allocations. ( I94dfe , b/246960758 ) - Added a new overload for
TextMeasurer.measure
function which takes in aString
as text. ( I47b2d , b/242705342 ) -
LineBreak
andHyphens
APIs in TextStyle are graduated to stable. ( Ic1e1d )
مشارکت خارجی
-
notifyFocusedRect
methods inTextInputSession
andTextInputService
are not deprecated again. ( I23a04 , b/262648050 )
Version 1.4.0-alpha04
۱۱ ژانویه ۲۰۲۳
androidx.compose.ui:ui-*:1.4.0-alpha04
is released. Version 1.4.0-alpha04 contains these commits.
ویژگیهای جدید
- Added a new
PinnableContainer
API that allows lazy list items to be pinned, so that they are not disposed when they are scrolled out of bounds. For example,Modifier.focusable()
uses this mechanism to pin the currently focused item. ( Ib8881 , b/259274257 , b/195049010 ) - The focus system is rewritten using the new experimental
Modifier.Node
APIs. ( I7f4d7 , b/247708726 , b/255352203 , b/253043481 , b/247716483 , b/254529934 , b/251840112 , b/251859987 , b/257141589 ) - Added in
IsContainer
semantics property on Surfaces. This property will be used in a later change that determines traversal order based on the semantic meaning of elements such as surfaces. ( I63379 ) - Added new accessibility role
DropdownList
. This can be used to replicateTalkBack's
behavior when focusingandroid.widget.Spinner
. ( I177e5 , b/236159001 ) - You can now use
PlatformTextStyle(emojiSupportMatch)
to optionally disable emoji support processing for a single Paragraph. ( Ia7100 , b/139326806 ) - Android Compose UI tests will now run layout passes for each frame when executing frames to get to idle (eg via
waitForIdle
). This may affect tests that assert on individual frames of layout animations. ( I8ea08 , b/222093277 ) - Added experimental
TextMotion
toTextStyle
to define Text either to beStatic(default)
or Animated. UseTextMotion.Animated
if Text is going to be scaled, translated, or rotated via animation. ( I24dd7 )
تغییرات API
- Replaced
maxSize: IntSize
argument indrawText
withsize: Size
to be inline with otherDrawScope
functions.size
is set toSize.Unspecified
by default which should not change the previous default behavior. ( Icd27d ) - Removed deprecated experimental font constructor. ( I8a724 , b/261435386 )
- The ui tooling data class
Group
now has a field,isInline
, that indicates if the group is for a call to an inline composable function. IfisInline
istrue
then the call is to an inline composable function. However, the value might be false for calls to inline composable functions that are from modules that are compiled with a version of the compose compiler plugin that doesn't generate the inline function information. ( Idb846 ) - Graduated a number of previously experimental APIs to stable
- Rotary Scroll Event API is now stable ( I42ad3 , b/261561229 )
-
FontVariation
API is now stable ( I8779f , b/241016309 ) - All
Font()
constructors are now stable API ( I5948b , b/261435386 ) -
DeviceFontFamilyName
is now stable ( I8b640 , b/261435386 ) -
AndroidFont
constructor withvariationSettings
is now a stable API, and can be used to create new types of font descriptors. ( I5adcc , b/261565807 ) -
createFontFamilyResolver
API is now stable. This can be used to catch uncaught exceptions during async font loading. ( Ibb481 , b/261435386 ) -
Font.loadingStrategy
API is now stable. ( I5937c , b/261435386 ) -
GoogleFont
API is now stable. ( Ic90b0 , b/261435386 ) -
TextUnit(float, TextUnitType)
is now stable API. ( I90c84 , b/261561612 ) -
pluralStringResource
is now stable API. ( I09849 , b/261439703 )
Version 1.4.0-alpha03
۷ دسامبر ۲۰۲۲
androidx.compose.ui:ui-*:1.4.0-alpha03
is released. Version 1.4.0-alpha03 contains these commits.
تغییرات API
- Removing
ExperimentalComposeUiApi
fromPointerIcon
( I23af8 ) - Introduce Page accessibility actions:
PageUp
,PageDown
,PageLeft
,PageRight
. Note that these are only available from API 29. ( Ida4ab ) - Updated
rememberNestedScrollConnection
parameter view from root view to host view. ( Ia5200 ) - Added an Modifier API to query ancestors scroll info. ( I2ba9d , b/203141462 )
- Used in
Clickable
to correctly delay press interactions, when gestures could become scroll events. - Fixed
Clickables
not correctly delaying ripples, when used inside anScrollable ViewGroup
. - کشوها و برگهها بهروزرسانی شدند تا در صورت تبدیل شدن حرکات به رویدادهای پیمایش، فشارها را به درستی به تأخیر بیندازند.
- Renamed
CompositingStrategy.Always
toOffscreen
to indicate that thegraphicsLayer
will always be rendered into an intermediate buffer ( I47dc1 ) - Layout overload with multiple content slots is now stable ( I10566 , b/248294649 )
- Added experimental new APIs
PerfettoTrace.record {}
andPerfettoTraceRule
to capture Perfetto traces (also known as System Traces) as part of a test, to inspect test behavior and performance. ( I3ba16 ) - In UI tests using a Compose rule, continuations resumed during
withFrameNanos
callbacks will not be dispatched until after all frame callbacks have finished running. This matches the behavior of compose when running normally. However, tests that rely on the old behavior may fail. This should only affect code that callswithFrameNanos
orwithFrameMillis
directly, and has logic outside of callback passed to those functions that may need to be moved inside the callbacks. See the animation test changes in this CL for examples. - Added optional
onPerformTraversals: (Long) -> Unit
parameter toTestMonotonicFrameClock
constructor and factory function to run code afterwithFrameNanos
callbacks but before resuming callers' coroutines. ( Idb413 , b/254115946 , b/222093277 , b/255802670 ) - Added EmojiCompat to Compose ( Ibf6f9 , b/139326806 )
- Added new wallpaper parameter to
@Preview
for dynamic colour support ( I9f512 )
رفع اشکالات
- Snapshot apply notifications are now sent after the
Recomposer
finishes applying changes. ( Iad6c0 , b/222093277 ) - Introduced changes in
captureToImage
to allow for capturing multi window screenshots. This is useful for screenshot tests that use compose PopUps. ( I169c5 )
Dependency Updates
- Compose UI and Compose Material now depend on Lifecycle 2.5.1. ( I05ab0 , b/258038814 )
Version 1.4.0-alpha02
۹ نوامبر ۲۰۲۲
androidx.compose.ui:ui-*:1.4.0-alpha02
is released. Version 1.4.0-alpha02 contains these commits.
تغییرات API
- Updated
GraphicsLayerScope
to expose the current size of thegraphicsLayer
. This is useful for computinggraphicsLayer
transformations as a function of the Composable size. ( If8c43 , b/181387080 ) - Introduced
CompositingStrategy
to determine when to leverage an offscreen compositing layer for rendering ofgraphicsLayer
content. Auto maintains the default behavior which internally leverages a layer if alpha is applied or aRenderEffect/Overscroll
. Always will always introduce an offscreen buffer whereModulateAlpha
will avoid leveraging an offscreen buffer and instead will modulate each of the recorded drawing instructions within thegraphicsLayer
.ModulateAlpha
usage will still leverage an offscreen buffer forRenderEffect/Overscroll
usages ( I25e82 , b/256382834 ) -
invalidateSubtree()
was added toModifier.Node
to allow invalidating entire hierarchies for layout and drawing. ( I4bd90 ) - Promote
rememberNestedScrollInteropConnection
to stable. Introduced the ability to pass a root view torememberNestedScrollInteropConnection
. This can help the custom view better react to scrolling constraints, specially in non-standard views (egModalBottomSheetDialog
). ( I9e107 ) - Added
ObserverNode
interface that can be used byModifier.Node
implementations that need to be notified when a value that they had previously read has changed ( I5728b , b/247716483 ) - Added a new constructor to
Paint
that accepts a nativeandroid.graphics.Paint
. Also added an extension functiontoComposePaint()
that converts an existing native Paint object to Compose Paint. ( Ica91b ) - Add new
FontFamily.Resolver.resolveAsTypeface
for use on Android. ( I8950b ) - Add
ToolingState
to allow tooling to change internal states of Composable ( Ie6614 ) - Refactor tooling to have better support for new added animations ( I8677b )
- پارامتر
minLines
به material و material3 Text،TextField
وOutlinedTextField
اضافه شد که امکان تنظیم حداقل ارتفاع کامپوننت بر حسب تعداد خطوط را فراهم میکند ( I4af1d )
Version 1.4.0-alpha01
۲۴ اکتبر ۲۰۲۲
androidx.compose.ui:ui-*:1.4.0-alpha01
is released. Version 1.4.0-alpha01 contains these commits.
تغییرات API
- A new method,
awaitEachGesture()
, for gesture detectors was added. It operates similar toforEachGesture()
, but the loop over gestures operates entirely within theAwaitPointerEventScope
so events can't be lost between iterations. -
forEachGesture()
has been deprecated in favor ofawaitEachGesture()
because it allows events to be lost between gestures. ( Iffc3f , b/251260206 ) - Deprecating recycling of acccessibility objects in androidx. We've found performance changes to be negligible in even the oldest supported versions. ( I0a961 )
- Added
DrawStyle
as an Experimental attribute toTextStyle
andSpanStyle
to enable drawing outlined text. ( If24b8 , b/155421273 ) -
AnnotatedString.Builder
now implementskotlin.text.Appendable
. ( I1a061 , b/231030444 ) -
AnnotatedString.Builder
now has anappend(AnnotatedString, start: Int, end: Int)
method to append a substring of anAnnotatedString
and the intersecting styles. - Added
DrawStyle
parameter toParagraph
andMultiParagraph
paint functions that enables drawing outlined text. ( Ic8102 , b/155421273 )
مشارکت خارجی
- Thanks for
vighnesh
for adding TV Devices to Previews ( Ie15cd )
نسخه ۱.۳
نسخه ۱.۳.۳
۱۱ ژانویه ۲۰۲۳
androidx.compose.ui:ui-*:1.3.3
is released. Version 1.3.3 contains these commits.
رفع اشکالات
- Fix for a crash sometimes happening on Android 9 when Activity is saving the state of the Compose View. ( I0b755 , b/260322832 )
نسخه ۱.۳.۲
۷ دسامبر ۲۰۲۲
androidx.compose.ui:ui-*:1.3.2
is released. Version 1.3.2 contains these commits.
رفع اشکالات
- Updated to use Profobuf 3.21.8, which avoids a security alert in
protobuf-javalite:3.19.4
(CVE-2022-3171) ( b/255545055 )
نسخه ۱.۳.۱
۹ نوامبر ۲۰۲۲
androidx.compose.ui:ui-*:1.3.1
is released. Version 1.3.1 contains these commits.
نسخه ۱.۳.۰
۲۴ اکتبر ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0
is released. Version 1.3.0 contains these commits.
Important changes since 1.2.0
- New experimental API suite
LookaheadLayout
(enabling previously impossible animation behaviors) - New experimental API suite
Modifier.Node
(higher-performance alternative toModifier.composed
) - Improved window insets support.
- Focus support for D-Pads and hardware keyboard in LazyLists.
- Maximum supported elevation in dialogs and popups has been reduced to 8dp (behavior breaking change for some customized design systems – rationale in beta01 release notes )
- Many minor, nonbreaking API improvements
- Many bugfixes and performance improvements
Version 1.3.0-rc01
۵ اکتبر ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0-rc01
is released. Version 1.3.0-rc01 contains these commits.
تغییرات API
- Added new experimental API Hyphens to support automatic hyphenation in Text ( Iaa869 )
رفع اشکالات
-
DeviceFontFamilyName
fonts will not configurewght
andital
variation settings by default, instead using platform setting for loadedTypeface
. ( Ia7a6d , b/246989332 ) - Fixed
LazyColumn
memory leak -onModifierLocalsUpdated
was not being called with the default value when modifiers were reused ( b/230168389 )
Version 1.3.0-beta03
۲۱ سپتامبر ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0-beta03
is released. Version 1.3.0-beta03 contains these commits.
تغییرات API
- Add options to customize line breaking in Text. ( I86907 )
- Changed
size:IntSize
argument withconstraints: Constraints
inTextMeasurer.measure
method to support minimum width constraints. ( I37530 , b/242707525 )
رفع اشکالات
- AndroidX Activity's
BackHandler
API now works within aDialog
composable. ( I35342 )
Version 1.3.0-beta02
۷ سپتامبر ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0-beta02
is released. Version 1.3.0-beta02 contains these commits.
تغییرات API
- Added an experimental overload for Layout which accepts a list of multiple composable content lambdas, which allows to threat measurables put into different content lambdas differently ( Ic1b4e )
Changes to experimental Focus APIs:
-
FocusDirection.In
andFocusDirection.Out
are deprecated and replaced byFocusDirection.Enter
andFocusDirection.Exit
. ( Ia4262 , b/183746982 ) - Added two new focus properties enter and exit to specify a custom behavior for
FocusManager.moveFocus(Enter)
andFocusManager.moveFocus(Exit)
. ( I5f3f9 , b/183746982 ) - You can now use
FocusRequester.Cancel
to cancel a focus move.FocusRequester.Cancel
can be used in any of the following focus properties: up, down, left, right, next, previous, start, end, enter and exit. ( Ib300f )
Version 1.3.0-beta01
۲۴ آگوست ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0-beta01
is released. Version 1.3.0-beta01 contains these commits.
Modifier Node Refactor
The layer which handles Modifier/Modifier.Element
instances and coordinates their behavior on LayoutNodes
has been majorly refactored. As it stands this was a refactor which did not affect the public API of any of the many modifiers in Compose, and can be viewed as an implementation-only change. Despite that, this is an important change for various reasons. ( Ie4313 )
خلاصه تغییر
The added experimental Modifier.Node
APIs provide an abstraction that allows for state to be maintained on an instance that will be retained with the lifecycle of the layout node, and will be allocated per-layout-node and per-usage of the corresponding Modifier.Element
that produced it.
Broadly speaking, this abstraction provides an alternative mechanism to produce stateful modifiers without relying on the mechanics of the Modifier.composed
API.
ریسک
This change is strictly binary compatible with prior releases, and is intended to be backwards compatible in terms of observable behavior as much as practical and reasonable. That said, there are few subsystems of compose this refactor did not touch, and it is likely that behavior has changed in ways that were not covered by our tests and have not yet been found and fixed .
Please upgrade to this release with caution. If you believe this has broken something for you, please let us know.
Experimental APIs
Various experimental APIs have been added, all relating to the new concept of a "Modifier Node". Modifier.Node's are created as a result of
-
fun modifierElementOf(…): Modifier
-
abstract class ModifierNodeElement
-
abstract class Modifier.Node
-
abstract class DelegatingNode
-
interface LayoutModifierNode
-
interface DrawModifierNode
-
interface SemanticsNode
-
interface PointerInputNode
-
interface ModifierLocalNode
-
interface ParentDataModifierNode
-
interface LayoutAwareModifierNode
-
interface GlobalPositionAwareModifierNode
-
interface IntermediateLayoutModifierNode
Behavior breaking change
Maximum supported elevation in dialogs and popups has been reduced to 8dp.
The maximum supported elevation for Compose dialogs and popups has been reduced from 30dp to 8dp. This change affects both material and ui custom dialogs and popups. This change is made to mitigate an accessibility bug on Android versions below S, and to ensure that accessibility services within those windows are able to interact with the content inside the dialog or popup.
You will only be impacted by this change if you are creating a custom dialog or popup implementation with an elevation set to levels higher than 8dp. Consider lowering the elevation of your dialog or popup. If you need to opt-out from this new behavior, consider forking your own dialog or popup with the desired elevation set. This is not recommended, as accessibility might be negatively impacted and it is on the developer to ensure the bottom part of the dialog or popup is interactable and readable by accessibility services.
تغییرات API
- Fixed an issue where
painterResource
wouldn't update on configuration changes ( I58e73 , b/228862715 ) -
rememberTextMeasurer
no longer takesFontFamily.Resolver
,Density
, orLayoutDirection
parameters. Please use theTextMeasurer
constructor to provide custom values for these parameters. ( Ia1da3 ) - Added
DialogProperties.decorFitsSystemWindows
property to allow Dialogs to supportWindowInsets
. ( I57742 , b/229378542 ) - Moved font constructors back to original kotlin file to retain binary compatibility. No change from last stable release. ( Ieb2f3 )
- Removed unnecessary operator from several equals definitions - this has no effect. ( I6c309 )
-
FontVariation.Setting
is a sealed interface, to allow future clamping APIs. ( I11021 , b/143703328 ) - Add
CompositionGroup.findParameters
toSlotTree.kt
. This allows tools to retrieve parameters for aCompositionGroup
without having to parse the entire slot table. ( I124fe )
Version 1.3.0-alpha03
۱۰ آگوست ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0-alpha03
is released. Version 1.3.0-alpha03 contains these commits.
تغییرات API
-
LayoutCoordinates.findRootCoordinates()
is now public ( I7fa37 , b/204723384 ) - Added experimental API to get the
LayoutCoordinates
in thePlacementScope
. This lets developers know where the current layout is to place children relative to its position. ( I5482b , b/238632578 ) - Added
LayoutCoordinates.transformFrom
to get the Matrix transformation from oneLayoutCoordinates
to another. ( Ic5ab1 , b/238632578 ) - Deprecated
SemanticsModifier.id
and moved the semantics id toLayoutInfo.semanticsId
instead. ( Iac808 , b/203559524 ) - Resource Fonts now support setting font variation settings (API 26+). ( I900dd , b/143703328 )
- Variable font support in
DeviceFontFamilyNameFont
( Ic1279 , b/143703328 ) - Font constructors now accept a list of
FontVariation.Setting
for configuring variable fonts on O+ devices. ( I11a9d , b/143703328 ) - Add
FontVariation
API for defining and using variable fonts. ( I3c40c , b/143703328 ) -
LineHeightStyle.Alignment
constructor is now public (experimental) ( I4bbbe , b/235876330 ) - Paragraph is now expect|actual and defined for Android and Desktop. ( Id387e , b/239962983 )
- Interface Paragraph is now sealed interface Paragarph. There is no use case for subclassing paragraph, and we recommend reaching out if this change impacts you. ( If5247 , b/239962983 )
- Removed experimental annotation from
PlatformTextStyle
andLineHeightStyle
. ( I64bef ) - Deprecate
TextInputService.show|hideSoftwareKeyboard
. Please useSoftwareKeyboardController
instead in app code andTextInputSession
in IME-management code. ( I14e4c , b/183448615 ) - Add new API for existing animation types ( I26179 )
رفع اشکالات
- Added
@RequiresPermission
to APIs that require granting thePOST_NOTIFICATIONS
permission on SDK 33 and above. ( Ie542e , b/238790278 )
Version 1.3.0-alpha02
۲۷ ژوئیه ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0-alpha02
is released. Version 1.3.0-alpha02 contains these commits.
تغییرات API
- Added a new property
PointerInputChange#pressure
to retrieve the pressure. ( I45a5e , b/205164819 ) - Added
rememberTextMeasurer
to easily create and rememberTextMeasurer
instances in composition. ( I8d66e ) -
Rect
,RoundRect
, andMutableRect
now support the Kotlinin
syntax for calling thecontains
function. ( Ie42b0 , b/238642990 ) - Remove unnecessary functions from
KeyInjectionScope
, as they can be easily implemented with simpler parts of the API. The functions that have been removed includepressKeys
,keysDown
andkeysUp
. ( I81d77 ) - Refactored constant and parameter names in
KeyInjectionScope
to include the suffix 'Millis' where the units of said constants and parameters are milliseconds. ( Iabef5 ) - Added
toStringForLog()
method toEditCommand
to help troubleshoot text editing issues. ( I53354 , b/228862731 ) - Added
drawText
extension function onDrawScope
to provide a way to draw multi-styled text on composables and modifiers that operate on aDrawScope
likeCanvas
anddrawBehind
. ( I16a62 , b/190787898 ) - Introduce a new experimental API called
TextMeasurer
that enables arbitrary text layout computation that creates identical results toBasicText
, independent from Compose runtime. ( I17101 ) - Add
mapTree
toSlotTree.kt
. This allows tools to inspect theSlotTree
without making an in memory copy first like asTree does. For the Layout Inspector this gives a performance improvement of about a factor 10. ( I5e113 ) - Changed Compose Preview to be stored in binary output files, in order to allow developers to write and reuse
MultiPreview
annotations from libraries. ( I85699 , b/233511976 )
رفع اشکالات
- When adding
InputEventChange
events toVelocity
Tracker we will consider now deltas instead of positions, this will guarantee the velocity is correctly calculated for all cases even if the target element moves ( Icea9d , b/216582726 , b/223440806 , b/227709803 ) - Fix NPE caused by
AnnotatedString.toUpperCase
when annotations are present. ( I0aca2 , b/210899140 )
Version 1.3.0-alpha01
۲۹ ژوئن ۲۰۲۲
androidx.compose.ui:ui-*:1.3.0-alpha01
is released. Version 1.3.0-alpha01 contains these commits.
تغییرات API
- New
LookaheadLayout
that supports a lookahead pass before the actual measure/layout. This allows a pre-calculation of the layout when it changes, while permitting the post-lookahead measure/layout to use the pre-calculated size/position to animate the size and positions towards the target.SubcomposeLayouts
are not yet supported, but will be in an upcoming release. ( I477f5 ) - Add optional alpha parameter to Brush flavor of
TextStyle
andSpanStyle
to modify opacity of the wholeText
. ( Ic2fac , b/234117635 ) - Introduced the
UrlAnnotation
annotation type and associated methods to supportTalkBack
link support inAnnotatedString
s. ( I1c754 , b/231495122 ) - Moving utility functionality to runtime ( I4f729 )
رفع اشکالات
-
TextLayoutResult.getLineForOffset
does not throw. ( Idc5d6 , b/235876324 )
مشارکت خارجی
- Added a new API
WindowInfo.keyboardModifiers
to observe its state within composable functions or via snapshotFlow ( Icdb8a )
نسخه ۱.۲
نسخه ۱.۲.۱
۱۰ آگوست ۲۰۲۲
androidx.compose.ui:ui-*:1.2.1
is released. Version 1.2.1 contains these commits.
رفع اشکالات
- Fixed nullpointer in the inspector ( b/237987764 )
- Fixed class cast exception during remember in the inspector ( b/235526153 )
نسخه ۱.۲.۰
۲۷ ژوئیه ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0
is released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
Improvements in focus traversal:
- Focus-driven-scrolling of Lazy lists now works, using the new
BeyondBoundsLayout
core API - New behavior customization APIs in
FocusOrder
andFocusProperties
- Improved behavior with physical keyboard or TV remote
- Focus-driven-scrolling of Lazy lists now works, using the new
New APIs for:
- Window insets
- Core primitives for gesture-driven, infinite and layout animations
-
GraphicsLayer
capabilities, includingRenderEffect
Many bugfixes and performance improvements
Version 1.2.0-rc03
۲۹ ژوئن ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-rc03
is released. Version 1.2.0-rc03 contains these commits.
- No changes since 1.2.0-rc02.
Version 1.2.0-rc02
۲۲ ژوئن ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-rc02
is released. Version 1.2.0-rc02 contains these commits.
Version 1.2.0-rc01
۱۵ ژوئن ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-rc01
is released. Version 1.2.0-rc01 contains these commits.
تغییرات API
- Interfaces in compose libraries are now built using jdk8 default interface methods ( I5bcf1 )
- Added higher-order functions to
KeyInjectionScope
for injecting key presses while other keys are held down or toggled on. These functions includewithKeysDown
,withKeysToggled
etc. Also added properties for checking if a particular meta key is down, for example,isCtrlDown
to check if either control key is depressed. Refer toKeyInjectionScope
for documentation on each function. ( I9f6cd , b/229831515 ) - An experimental
OverscrollEffect
has been introduced to allow for custom overscroll effects, alongside theModifier.scrollable
overloads that accept it. - Experimental
LocalOverScrollConfiguration
has been moved fromfoundation.gesture
to foundation package and renamed toLocalOverscrollConfiguration
( If19fb , b/204650733 ) - Rename
runComposeUiTestWithoutActivity {}
torunEmptyComposeUiTest {}
, which aligns it withcreateEmptyComposeRule()
( I6fed7 )
Version 1.2.0-beta03
۱ ژوئن ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-beta03
is released. Version 1.2.0-beta03 contains these commits.
تغییرات API
- Added
pressKeyTimes
as well asisCapsLockOn
and friends toKeyInjectionScope
. Additionally, the API now supports mouse and keyboard combined injection patterns such as clicking a mouse button with a meta key held down. ( I4c8da , b/229831515 ) - Added experimental support for injecting key events. Use
performKeyInput
to send key events, or send them through thekey
property ofMultiModalInjectionScope
during a multi modal input gesture withperformMultiModalInput
. SeeKeyInjectionScope
for documentation of the API. ( Ic5000 , b/229831515 ) - Add new
GoogleFont.Provider.AllFontsListUri
for retrieving the canonical internet source of Google Fonts supported by Android. - Improve error messages rethrown when GoogleFonts fail to load in compose. ( I0416c )
رفع اشکالات
- When adding
InputEventChange
events to Velocity Tracker we will consider now deltas instead of positions, this will guarantee the velocity is correctly calculated for all cases even if the target element moves ( I51ec3 , b/216582726 , b/223440806 , b/227709803 ) - The
Show Layout Bounds
setting will now be applied for composables immediately after toggling it from the quick settings tile, without having to leave and re-enter the activity. ( I843d5 , b/225937688 ) - Accessibility string lookup does not trigger font loading. Previously, it would attempt to load fonts for
StyleSpans
, which lead to crashes ifFontFamily.Resolver
had been overwritten. ( I4609d ) - Pressing the forward delete key when the cursor is at the end of a text field will no longer crash.
-
DeleteSurroundingTextCommand
andDeleteSurroundingTextInCodePointsCommand
now require their constructor arguments to be non-negative. ( Ica8e6 , b/199919707 )
Version 1.2.0-beta02
۱۸ مه ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-beta02
is released. Version 1.2.0-beta02 contains these commits.
تغییرات API
- Reusing functionality in other preview types ( I19f39 )
رفع اشکالات
-
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
has been renamed toDisposeOnDetachedFromWindowOrReleasedFromPool
to better reflect that when disposals do occur, rather than simply when they do not occur. ( If15ca )
Version 1.2.0-beta01
۱۱ مه ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-beta01
is released. Version 1.2.0-beta01 contains these commits.
ویژگیهای جدید
- This is the first beta release of 1.2!
تغییرات API
- Added experimental
BeyondBoundsInterval
that can be used by custom implementations ofLazyList
when they layout items beyond visible bounds ( Ifabfb , b/184670295 ) - Keyed versions of
Modifier.composed
are now stable API ( Ie65e4 , b/229988420 ) - Simplified the
rememberNestedScrollConnection
API to use composition locals to acquire the current view information ( I67ca7 ) - The
@ComposableTarget
annotation and annotations marked by@ComposableTargetMarker
can now be used at the file scope using the@file
prefix. Using a target annotation at the file scope will cause the compiler to assume all composable functions in the file are intended to be target the associated applier. For example, using@file:UiComposable
declares that all@Composable
functions target the Compose UI applier. A function that needs to target another applier must explicitly supply the target marker annotation for the desired applier. ( I40804 ) Introduced new experimental, platform independent, test API: an
interface ComposeUiTest
and afun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, that can be used to run Compose Ui tests without the need for aTestRule
. To run a test without aComposeTestRule
, pass the test as a lambda torunComposeUiTest
, and use the methods and members in the receiver scopeComposeUiTest
, which are the same ones as inComposeContentTestRule
.The Android specific
interface AndroidComposeUiTest
andfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
are added to provide access to the underlying Activity, similar toAndroidComposeTestRule
. For even more control, you can instantiate aclass AndroidComposeUiTestEnvironment
yourself.The Desktop implementation is the
class DesktopComposeUiTest
, but no Desktop specific run functions are offered at the moment.Migrating a test from a
ComposeTestRule
toComposeUiTest
can be done like this (Android example). From:@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() } }
For now,
ComposeContentTestRule
andComposeTestRule
don't extend fromComposeUiTest
, which means extension functions onComposeUiTest
can't be called yet on theTestRule
interface. WhenComposeUiTest
graduates to stable API,ComposeContentTestRule
andComposeTestRule
will be changed to extend fromComposeUiTest
. ( Ib4e90 )LineHeightBehavior
is renamed asLineHeightStyle
LineVerticalAlignment
is renamed asLineHeightStyle.Alignment
Renames
LineHeightTrim
is renamed asLineHeightStyle.Trim
Default constructor values from
LineHeightStyle
is removed ( I582bf , b/181155707 )Added
Brush
toTextStyle
andSpanStyle
to provide a way to draw text with gradient coloring. ( I53869 , b/187839528 )trimFirstLineTop
,trimLastLineBottom
attributes ofLineHeightBehavior
changed into a single enum:LineHeightTrim
.LineHeightTrim
have values of 4 states defined by two booleans:FirstLineTop
,LastLineBottom
, Both and None ( Ifc6a5 , b/181155707 )Added
LineHeightBehavior
to theTextStyle
andParagraphStyle
.LineHeightBehavior
controls whether line height is applied to the top of the first line and to the bottom of the last line. It also defines the alignment of line in the space provided byTextStyle(lineHeight)
.For example it is possible to get a behavior similar to what CSS defines via
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.trimFirstLineTop
,trimLastLineBottom
configurations works correctly only whenincludeFontPadding
is false. ( I97332 , b/181155707 )PlatformParagraphStyle.lerp
andPlatformSpanStyle.lerp
functions are changed to be top level functions ( I9a268 )
رفع اشکالات
-
PointerInputChange::copy
documentation now correctly states that it is a shallow copy. ( I182f5 ) - Support ellipsis when height is limited and doesn't fit all text lines ( Ie528c , b/168720622 )
- Turned on default
includeFontPadding
. It is possible to turn off theincludeFontPadding
usingTextStyle.platformTextStyle
attribute. In the near future we will change the default behavior however until that time this allows us to better integrate line height improvements (aosp/2058653) and solveTextField
clipping issues. ( I01423 , b/171394808 )
مشارکت خارجی
-
MouseInjectionScope.scroll(delta = someDelta)
is now inverted on Android if we scroll vertically (if someDelta is positive, it will scroll downward) ( Ifb697 , b/224992993 )
Version 1.2.0-alpha08
۲۰ آوریل ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha08
is released. Version 1.2.0-alpha08 contains these commits.
تغییرات API
- The
pluralStringResource
functions were marked as experimental in order to allow evolution to support better internationalization in the future. ( If24e4 ) - Paragraph and MultiParagraph are now accepting Constraints parameter. Passing
Constraints.maxHeight
is a no-op at the moment but will allow to do some calculation in the future, like ellipsizing based on the height. ( I6afee , b/168720622 ) -
SubcomposeSlotReusePolicy.getSlotsToRetain()
now accepts a custom MutableSet-like class which doesn't allow adding new items in it. ( Icd314 ) - PointerIcon is now a
@Stable
interface ( I9dafe ) - Partial consumption (down OR position) has been deprecated in
PointerInputChange
. You can useconsume()
to consume the change completely. You can useisConsumed
to determine whether or not someone else has previously consumed the change. -
PointerInputChange::copy()
now always makes a shallow copy. It means that copies ofPointerInputChange
will be consumed once one of the copies is consumed. If you want to create an unboundPointerInputChange
, use constructor instead. ( Ie6be4 , b/225669674 ) - Enable Nested Scroll interop between Compose and View in the direction Compose > View. This means that a compose parent will be able to receive nested scroll deltas from a nested scroll view. ( If7949 , b/174348612 )
- New
SemanticsProperty testTagsAsResourceId
, which can be used to make Compose conform with UIAutomator tests designed for the View system. ( I39c20 ) - Display all available weights for systems fonts on Android when using
FontFamily.SansSerif
. This will use fallback font names like sans-serif-medium internally on API 21-28. This is a behavior change as previously only weights 400 and 700 were supported on API 21-28. ( I380fe , b/156048036 , b/226441992 ) - Paragraph and Multiparagraph instructors reordered positional arguments to before optional arguments. ( Idafaa )
-
AndroidFont
now takes typefaceLoader as a constructor parameter. ( I2c971 )
Version 1.2.0-alpha07
۶ آوریل ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha07
is released. Version 1.2.0-alpha07 contains these commits.
تغییرات API
- New function
Snapshot.withoutReadObservation { ... }
was added. It allows users to run the passed lambda without subscribing to the changes of the state values read during this block. You could find it useful in use cases when you want to benefit from the snapshot based thread safe write/reads, but want to be able to read the value without causing unnecessary recomposition or remeasure. ( I9f365 , b/214054486 ) - The
consumeWindowInsets
extension property ofComposeView
allows developers to disable consumption of AndroidWindowInsets
. This allows separateComposeViews
in the hierarchy to each applyWindowInsets
without interfering with each other. ( I0ef08 , b/220943142 ) - Added
KeyboardType.Decimal
as an alternative toKeyboard.Number
for specifically including decimal separator in IME. ( Iec4c8 , b/209835363 ) -
PointerEventType.Scroll
andPointerEvent.scrollDelta
are stable APIs now ( I574c5 , b/225669674 ) - Enable Nested Scroll interop between View and Compose for cooperating View classes. This means compose is now able to dispatch scroll deltas to a (cooperating) View parent. ( I5d1ac , b/174348612 )
- Updated
FontFamily.Resolver
to integrate System-wide bold text accessibility setting ( I6c1e7 ) -
Font(AssetManager, String, ...)
is deprecated, replaced withFont(String, AssetManager, ...)
. This is an experimental API. ( I1c7a4 ) - Add new font descriptor
Font(DeviceFontFamilyName)
to optionally lookup system-installed fonts during font fallback chains. ( I30468 , b/219754572 ) - Added temporary compatibility configuration for
includeFontPadding
in TextStyle/ParagraphStyle.includeFontPadding
can be changed viaTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. This is a temporary configuration option to enable migration and will be removed. ( If47be , b/171394808 ) - Add
GoogleFont.Provider.isAvailableOnDevice
extension for debugging help. ( I64e31 ) - Add
GoogleFont.Provider
constructor for use with@ArrayRes
( Ic5ee1 , b/225984280 ) -
Compose GoogleFont
is now calledFont(GoogleFont)
, API remains stable otherwise. ( I125f2 )
رفع اشکالات
- Added lint check to material/Scaffold to ensure that the inner padding is being used ( Ifb111 )
Version 1.2.0-alpha06
۲۳ مارس ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha06
is released. Version 1.2.0-alpha06 contains these commits.
تغییرات API
- Added
RequestFocus
semantics action to request focus on the focusable target. ( I17b71 ) - Updated parsing of vector drawables to support auto mirroring to flip the content of a
VectorPainter
if the current layout direction is RTL. ( I79cd9 , b/185760237 ) Updated shadow/ambient colors to be trailing parameters of
Modifier.graphicsLayer
for API compatibility ( I3f864 , b/160665122 )Added default implementations to shadow/ambient color on
GraphicsLayerScope
to ensure non-breaking API changesAdded event time to RSB events ( Ief8ae )
FocusOrder
has now been merged intoFocusProperties
andfocusProperties()
now has all the capabilities offocusOrder()
.FocusOrder
andfocusOrder()
have been deprecated.focusOrder()
that accepts afocusRequester
should be replaced with afocusRequester()
modifier in combination withfocusProperties()
. This allows the modifiers to have a stronger separation of concerns. ( I601b7 )Upgrading both
RecyclerView
andCompose
will now result in much better scrolling performance for RecyclerViews with Compose views as children.Add
ViewCompositionStrategy.Default
as a means of retrieving the built-in default strategyAdd
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, which is the new default strategy and properly handles pooling containers such as RecyclerView. ( If7282 )Added support for annotating annotations classes with @Preview as a first step for adding the Multipreview feature. Such annotations could be used to annotate Composable methods or other annotation classes, which could then be considered as indirectly annotated with the given @Preview. ( I12eff )
Reference devices added to the Devices list for @Preview ( I071c9 )
رفع اشکالات
- Updated Vector graphics APIs to use the proper composable annotation @VectorComposable instead of @UiComposable ( I942bc )
- Remove crossinline from
AnnotatedString.Builder.withStyle
( If84d5 )
مشارکت خارجی
- compose-ui: Add
ambientShadowColor
andspotShadowColor
properties toGraphicsLayerScope
( I1ba1a , b/160665122 ) - Plural resources are now supported via the
pluralStringResource
functions. ( Ib2f23 , b/191375123 )
Version 1.2.0-alpha05
۹ مارس ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha05
is released. Version 1.2.0-alpha05 contains these commits.
تغییرات API
-
TextToolbar
now takes lambda arguments instead ofActionCallback
. ( Ib2eb9 , b/197950089 ) - Updated nullability in core and appcompat to match Tiramisu DP2 ( I0cbb7 )
- Measured interface now exposes parentData property ( I3313f )
-
Modifier.onPlaced
and theOnPlacedModifier
interface are now stable. ( Ib5482 ) - Hooray! Compose animation now supports 'Animator duration scale' setting from Developer Options. ( I5a4fc , b/161675988 )
- Added a
BeyondBoundsLayout
modifier local ( If8b51 , b/184670295 ) - Text: includeFontPadding is now turned off by default. The clipping issues as a result of
includeFontPadding=false
is handled and no clipping should occur for tall scripts. ( I31c84 , b/171394808 )
رفع اشکالات
-
ComposeContentTestRule.setContent
will now throw anIllegalStateException
if you try to set content when there already is content. ( I888a5 , b/199631334 ) - Fix crash caused by clipboard content while reading from clipboard on Android. ( I06020 , b/197769306 )
- Improve RSB scrolling samples. ( I6a596 )
مشارکت خارجی
- Updated to use Kotlinx coroutines 1.6.0 ( I3366d )
Version 1.2.0-alpha04
۲۳ فوریه ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha04
is released. Version 1.2.0-alpha04 contains these commits.
تغییرات API
Added
ComposableTarget
,ComposableTargetMarker
andComposableOpenTarget
that allows compile time reporting of when a composable function is called targeting an applier it was not designed to use.In most cases the annotations can be inferred by the compose compiler plugin so using these annotation directly should be rare . The cases that cannot be inferred include creating and using a custom applier, abstract composable functions (such as interface methods), fields or global variables that are composable lambdas (local variables and parameters are inferred), or when using
ComposeNode
or a related composable functions.For custom appliers the composable functions that calls
ComposeNode
orReusableComposeNode
need to add aComposableTarget
annotation for the function and any composable lambda parameter types. It is recommended, however, to create an annotation that is annotated withComposableTargetMarker
and then the marked annotation be used instead ofComposableTarget
directly. A composable annotation marked withComposableTargetMarker
is equivalent to aComposbleTarget
with the fully qualified name of the attribute class as the applier parameter. For an example of usingComposableTargetMarker
seeanroidx.compose.ui.UiComposable
. ( I38f11 )Font(resId, ...)
now takes loadingStrategy on stable API. ( Ief3d2 )FontLoadingStrategy
is now stable API. ( I1ee35 , b/174162090 )Support async font loading in Text ( I77057 , b/214587005 )
Add bridge API for converting custom
Font.ResourceLoader
intoFontFamily.Resolver
. ( Ia0060 )
رفع اشکالات
- Provided
FontFamily.Resolver
are passed to subcompositions such as Popup. - Provided
Font.ResourceLoader
are passed to subcompositions such as Popup. ( I48fa5 )
Version 1.2.0-alpha03
۹ فوریه ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha03
is released. Version 1.2.0-alpha03 contains these commits.
تغییرات API
-
notifyFocusedRect
methods inTextInputSession
andTextInputService
are now deprecated and won't be called. UseBringIntoViewRequester
instead. ( Ia4302 , b/192043120 , b/216842427 , b/178211874 ) - Introduced
destroyDisplayListData
method onRenderNode
stub class ( I1e659 , b/216660268 ) - Added a new api which allows to premeasure children of
SubcomposeLayout
you precomposed. ( I857ea ) Added
movableContentOf
which converts a composable lambda into a lambda that moves it state, and corresponding nodes, to any new location it is called. When the previous call leaves the composition the state is temporarily preserved and if a new call to the lambda enters the composition then the state, and associated nodes, are moved to the location of the new call. If no new call is added the state is removed permanently and remember observers are notified.If a
movableContentOf
lambda is called multiple times in the same composition, new state and nodes are created for each call and, as calls leave the composition and new calls enter, the state is moved from the first leaving calls to the entering calls in the order they are called. All state not claimed by new calls is removed permanently. ( Ib4850 )FontFamilyResolver
is now available viaLocalFontFamilyResolver.current
Added
createFontFamilyResolver(context)
andcreateFontFamilyResolver(context, coroutineScope)
to create new FontFamily resolvers outside of compose usage.Paragraph and MultiParagraph now take
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
now contains the resolver used for this layout, deprecatedTextLayoutResult.layoutInput.resourceLoader
as it is no longer used. ( Id5a45 , b/174162090 )Support for async and optional font loading, with fallback behavior. This path is used by Text and TextField, and exposed through FontFamilyResolver
Support for preloading fonts via
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
allows setting the global coroutine context used for loading async fonts. ( I87fe8 , b/174162090 )Added
AndroidFont
, a new low-level API for providing new types of font resource descriptors on Android. For example, loading fonts from an app-specific backend, optionally locating pre-installed fonts on-device, or loading a font from a resource not provided by the current Font factories.Expanded
Font.ResourceLoaded
API to support optional and async font loading. It is not recommended that application developers use this API directly. To add new types of fonts seeAndroidFont
.Font.AndroidResourceLoader
extension function allows construction of aFont.ResourceLoader
when outside of composition.Added
loadingStrategy
parameter to resource-based fonts, to allow async loading when resource font references downloadable fonts XML. ( Ie5aea , b/174162090 )Typeface(FontFamily)
constructor is deprecated. This was previously used to preload fonts, which may take up to 10 seconds for downloadable fonts. With downloadable fonts, this call may block for 10 seconds. Instead useFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
is deprecated. This was previously used to preload fonts, which may take up to 10 seconds for downloadable fonts. Instead useFontFamilyResolver.preload
( If8e7c , b/174162090 )SubcomposeLayoutState
constructor acceptingmaxSlotsToRetainForReuse
is now deprecated. Instead there is a new constructor acceptingSubcomposeSlotReusePolicy
- a new interface allowing more granular control on what slots should be retained for the future reuse. ( I52c4d )Exposes HSV and HSL function in
Color
as non-experimental API. The Oklab color space is now public API. ( I08fb6 , b/180731008 )Deprecated
AndroidComposeTestRule.AndroidComposeStatement
, which was not meant to be in public API and didn't do anything for you anyway. ( Ibc46b )Internal generated kt class rename ( Ia0b9e , b/174162090 )
Removed
FontLoadingStrategy.values
( I42a9d , b/174162090 )Global font loader is now called
FontFamilyResolver
. ( I4f773 , b/174162090 )Use new font loading system for desktop. ( I9ce5c , b/174162090 )
FontFamily.Resolver.resolve
returnsState<Any>
( I4406c , b/174162090 )
رفع اشکالات
- TextFields will now be kept above the keyboard when they are focused and the keyboard is shown, when the soft input mode is
ADJUST_PAN
. ( I8eaeb , b/190539358 , b/192043120 ) - Desktop uses composition local for
FontFamily.Resolver
- Desktop
FontLoader
is deprecated - New
createFontFamilyResolver
factory on Desktop ( I6bbbb , b/174162090 ) - The soft keyboard input type no longer flickers when changing focus between text fields. ( I1bf50 , b/187746439 )
Version 1.2.0-alpha02
۲۶ ژانویه ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha02
is released. Version 1.2.0-alpha02 contains these commits.
تغییرات API
- Added
Modifier.onRotaryScrollEvent()
andModifier.onPreRotaryScrollEvent()
for wear devices with a rotating side button ( I18bf5 , b/210748686 ) - Add experimental
View.createLifecycleAwareRecomposer
extension ( I0cde6 )
مشارکت خارجی
-
PointerEvent.scrollDelta.y
is now inverted on Android (now it returns 1 instead of -1 if we tilt mouse wheel to the right) ( Ia9811 )
Version 1.2.0-alpha01
۱۲ ژانویه ۲۰۲۲
androidx.compose.ui:ui-*:1.2.0-alpha01
is released. Version 1.2.0-alpha01 contains these commits.
تغییرات API
- Deprecated
FontFamily.canLoadSynchronously
. This property has no semantic meaning. ( Ica5ef ) - Added identity field to
CompositionData
for generating invariant ids in the Layout Inspector. ( Ic116e ) - Added Wear OS device ids to Preview devices list ( I93232 )
Dependency Updates
- Now depends on Kotlin
1.6.10
.
نسخه ۱.۱
نسخه ۱.۱.۱
۲۳ فوریه ۲۰۲۲
androidx.compose.ui:ui-*:1.1.1
is released. Version 1.1.1 contains these commits.
رفع اشکالات
- Fix
NullPointerException
atandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
( aosp/1947059 , b/206677462 ) - Fix crash caused by clipboard content while reading from clipboard on Android. ( I06020 , b/197769306 )
- Fixed RTL in
LazyVerticalGrid
( aosp/1931080 , b/207510535 )
نسخه ۱.۱.۰
۹ فوریه ۲۰۲۲
androidx.compose.ui:ui-*:1.1.0
is released. Version 1.1.0 contains these commits.
Important changes since 1.0.0
- Stable support for the Android 12 Overscroll effect
- Improvements to touch target sizing
- Note that, with respect to Compose 1.0, Material components will expand their layout space to meet Material accessibility guidelines for touch target size . For instance, Button touch target will expand to a minimum size of 48x48dp, even if you set the Button's size to be smaller. This aligns Compose Material to the same behavior of Material Design Components, providing consistent behavior if you mix Views and Compose. This change also ensures that when you create your UI using Compose Material components, minimum requirements for touch target accessibility will be met.
- Stable Support for Navigation Rail
- Graduates a number of previously experimental APIs to stable
- Support for newer versions of Kotlin
Version 1.1.0-rc03
۲۶ ژانویه ۲۰۲۲
androidx.compose.ui:ui-*:1.1.0-rc03
is released. Version 1.1.0-rc03 contains these commits.
رفع اشکالات
- Updated to support Compose Material 1.1.0-rc03
Version 1.1.0-rc01
۱۵ دسامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-rc01
is released. Version 1.1.0-rc01 contains these commits.
رفع اشکالات
- Fixed a bug that caused missing accessibility scroll actions ( I7cbfb )
-
SemanticsNodeInteraction.captureToImage()
will now also work ifHardwareRenderer.isDrawingEnabled()
isfalse
, by enabling it for the duration of the call ( Idf3d0 )
Version 1.1.0-beta04
۱ دسامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-beta04
is released. Version 1.1.0-beta04 contains these commits.
ویژگیهای جدید
- Updated to be compatible with Kotlin
1.6.0
تغییرات API
- Cleaned up nullability in
androidx.core.view
( I7078a , b/204917439 ) - Experimental APIs were added that allow users to consume PointerInputchange as a whole or check whether it was consumed or not. ( I2e59d )
- Adds support for mouse scroll wheel events in the UI layer. ( Ia14eb , b/198214718 )
- Add experimental
Modifier.composed
overloads that accept keys to compare for equality and qualify for skipping optimizations. ( Ice799 , b/205851704 ) -
ComposeNotIdleException
now extends fromException
instead of directly fromThrowable
. Note that this means that catch clauses that were catchingException
might now catchComposeNotIdleException
s, where they wouldn't do that previously. ( I9c217 )
رفع اشکالات
- Fix text handles not moving when IME visibility changes. ( I25f2e )
Version 1.1.0-beta03
۱۷ نوامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-beta03
is released. Version 1.1.0-beta03 contains these commits.
تغییرات API
- Added new modifier Modifier.onPlaced to allow placement change to be observed. Additional changes to child modifier's offset can therefore be made based on the observed placement change. ( I558fd )
- Removed
InjectionScope.flush()
andInjectionScope.dispose()
. Flushing of all events and disposing of the scope now happens at the end of the called perform*Input() method like before. ( I2bed8 ) - Removed
MultiModalInjectionScope.Touch
andMultiModalInjectionScope.Mouse
. In order to inject touch and mouse events for multi-modal gestures, you can now useMultiModalInjectionScope.touch()
andMultiModalInjectionScope.mouse()
, both of which accept a lambda that has the receiver scope of that modality. ( Idde18 )
رفع اشکالات
- The default value for
durationMillis
inTouchInjectionScope.swipeWithVelocity
is now calculated such that the swipe is feasible. ( I19deb )
Version 1.1.0-beta02
۳ نوامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-beta02
is released. Version 1.1.0-beta02 contains these commits.
تغییرات API
- Added experimental BringIntoView API that lets you send a request to parents so that they scroll to bring an item into view ( Ib918d , b/195353459 )
- New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. ( I4116e )
مشارکت خارجی
- Added Modifier.pointerHoverIcon ( I95f01 )
Version 1.1.0-beta01
۲۷ اکتبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-beta01
is released. Version 1.1.0-beta01 contains these commits.
تغییرات API
- Added experimental
BringIntoView
API that lets you send a request to parents so that they scroll to bring an item into view ( Ib918d , b/195353459 ) - New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. ( I4116e )
Version 1.1.0-alpha06
۱۳ اکتبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-alpha06
is released. Version 1.1.0-alpha06 contains these commits.
تغییرات API
- Remove
ExperimentalComposeUiApi
fromViewRootForInspector
andLayoutInfo.ownerViewId
( I5c2e3 ) - A child-less overload for Layout was added, with improved efficiency ( Ib0d9a )
- Removed
InternalCompilerApi
from Composer methods that are required to be called cross-module ( I1aa0b ) -
SemanticsNodeInteraction.performSemanticsAction
now returns theSemanticsNodeInteraction
on which the function was called. ( I9e5db ) - Added LocalInputModeManager CompositionLocal to detect TouchMode/NonTouchMode. ( I6a83c , b/175899786 )
- Added
viewConfiguration: ViewConfiguration
toLayoutInfo
to allow consumers get the correct value for things like long press timeout. ( I76ca6 )- Added
viewConfiguration: ViewConfiguration
toInjectionScope
to allow tests to adjust input injection based on things like long press timeout or touch slop. - Changed default duration of long press and double tap for both touch and mouse input to be based on the values in
InjectionScope.viewConfiguration
.
- Added
- Implementation of ExposedDropdownMenu based on ExposedDropdownMenuBox with TextField and DropdownMenu inside ( If60b2 )
- dismissOnOutsideClick was added to PopupProperties, replacing dismissOnClickOutside which was deprecated. The new property receives the click position and the anchor bounds, providing finer control over whether onDismissRequest should be invoked or not. For example, this can be useful to prevent anchor dismissal for touches on the anchor.
- updateAndroidWindowManagerFlags was added to PopupProperties, offering low-level control over the flags passed by the popup to the Android WindowManager. The parameter of the lambda will be the flags calculated from the PopupProperties values that result in WindowManager flags: eg focusable. The result of the lambda will be the final flags which will be passed to the Android WindowManager. By default, updateAndroidWindowManagerFlags will leave the flags calculated from parameters unchanged. This API should be used with caution, only in cases where the popup has very specific behavior requirements. ( I6e9f9 )
-
Recomposer.state
has been deprecated and replaced byRecomposer.currentState
to change its type to a StateFlow ( Ic2ab3 , b/197773820 ) - Added
flush()
anddispose()
toInjectionScope
. Use them when you want to flush all queued up events immediately and when you want to dispose of the scope, respectively. ( Ifb73a ) - Added
performScrollToNode(matcher: SemanticsMatcher)
that scrolls a scrollable container to the content that is matched by the given matcher. ( Ic1cb8 ) -
InjectionScope
now implementsDensity
, allowing you to easily convert between px and dp inperformTouchInput
and friends. ( I8fe1f )
رفع اشکالات
- AndroidView now propagates LocalLifecycleOwner and LocalSavedStateRegistryOwner to its view via ViewTreeLifecycleOwner and ViewTreeSavedStateRegistryOwner. ( I38f96 , b/179708470 )
- Fix WearOS SwipeToDismissBox sometimes not handling swipes. ( I9387e )
- The default time between injected input events has been changed from 10ms to 16ms. This potentially changes the outcome of tests that perform input gestures, like a specific swipe. ( I829fd )
Version 1.1.0-alpha05
۲۹ سپتامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-alpha05
is released. Version 1.1.0-alpha05 contains these commits.
تغییرات API
- Added support for inter-modifier communication ( Id5467 , b/198826874 )
- Added experimental historical pointers to PointerEventChange. ( Ic1fd8 , b/197553056 , b/199921305 )
- Added
density: Density
andlayoutDirection: LayoutDirection
toLayoutInfo
. This allows consumers ofLayoutInfo
to interpret the dimensions and position exposed inLayoutInfo
properly. ( I002f1 ) - Added experimental support for injecting mouse events. Use
performMouseInput
to start sending mouse events, or send mouse events through theMouse
property ofMultiModalInjectionScope
during a multi modal input gesture withperformMultiModalInput
. SeeMouseInjectionScope
for documentation of the available API. ( Iaa4a8 , b/190493367 )
رفع اشکالات
- Fixed accessibility support for scrollables (both lazy and non-lazy) with respect to scrolling ( I6cdb0 )
- Improved
TouchInjectionScope.swipeWithVelocity
. It now accepts a wider range of input variables and will suggest changes to the input if a swipe can't be created ( I40fbe , b/182477143 )
Version 1.1.0-alpha04
۱۵ سپتامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-alpha04
is released. Version 1.1.0-alpha04 contains these commits.
تغییرات API
-
PointerEvent
now has aPointerEventType
to support hover events. ( I091fa ) - Allow children to accept pointer input outside of parent's pointer input bounds. Parents may intercept those calls with a property PointerInputScope.alwaysInterceptChildEvents ( I9eae3 , b/192479655 )
- Deprecated
performGesture
andGestureScope
, which have been replaced byperformTouchInput
andTouchInjectionScope
. ( Ia5f3f , b/190493367 ) - Added
touchBoundsInRoot
toSemanticsNode
that includes the minimum touch target size so that developers can ensure that touch targets meet accessibility minimums. ( I2e14b , b/197751214 ) - Redo implementation of inspectable ( I927bc , b/191017532 )
- Changed parameter name of inspectable to match composed ( I3a482 , b/191017532 )
Introduced
performTouchInput
andTouchInjectionScope
as a replacement forperformTouchInput
andTouchInjectionScope
, paving the way for other modalities (like mouse).TouchInjectionScope
has the same methods asGestureScope
, with the exception ofmovePointerTo
andmovePointerBy
, which have been renamed toupdatePointerTo
andupdatePointerBy
. All other methods are the same.The behavior of
TouchInjectionScope
is almost identical toGestureScope
, with two small details:- When sending a down event while pointers had been moved without sending a move event (in other words,
updatePointerTo()
has been used, but notmove()
, and thendown()
is called), the previous implementation would advance the event time and send a move event before sending the down event. The new implementation still sends the move event, but doesn't advance the event time in this specific scenario. - When sending an up event while pointers had been moved without sending a move event (similar as above), the previous implementation would advance the event time and send a move event before sending the up event. The new implementation does neither: the new positions of the pointers will only be reflected through the up event.
Finally,
TouchInjectionScope
introduces a new methodcurrentPosition(pointerId: Int)
to get the current position of the given pointer. ( If1191 , b/190493367 )- When sending a down event while pointers had been moved without sending a move event (in other words,
رفع اشکالات
- Allow clip to extend touch target bounds beyond the clip region for minimum touch target purposes. ( I43e10 , b/171509422 )
- Support for stretch overscroll has been added on Android 12 devices. ( Iccf3c , b/171682480 )
Version 1.1.0-alpha03
۱ سپتامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-alpha03
is released. Version 1.1.0-alpha03 contains these commits.
ویژگیهای جدید
- Updated Compose
1.1.0-alpha03
to depend on Kotlin1.5.30
. ( I74545 )
تغییرات API
- Added
Modifier.inspectable
for wrapping other modifiers. ( I1909b , b/191017532 ) - Added
BlurredEdgeTreatment
API to simplify blur use cases into more commonly used combinations of clip flags and TileModes. Most use cases involve either letting blurred content render outside the original content bounds and blurring regions outside these bounds with transparent black, or clipping content to content bounds sampling the closest edge for blur kernels that extend beyond content bounds. ( I6b4b7 , b/166927547 ) - Added support for RenderEffect in compose desktop. Introduced OffsetEffect as well as the blur modifier as a simple way to introduce blur visual effects to a portion of the composition hierarchy. ( I0f6aa , b/166927547 )
- Introduced RenderEffect API that can be optionally configured on a
Modifier.graphicsLayer
to alter the contents of the layer itself. This can be used to blur contents of a composable and child composables within a composition hierarchy. ( I47c4d , b/166927547 ) - AwaitPointerEventScope now has withTimeout() and withTimeoutOrNull() ( I507f0 , b/179239764 , b/182397793 )
- Added minimum touch target size to ViewConfiguration for use in semantics and pointer input to ensure accessibility. ( Ie861c )
- Add TileMode.Decal support which is useful in defining edge behavior for blur based RenderEffects. ( I7e8ed , b/166927547 )
-
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
andhasScrollToKeyAction
are now stable API ( I142ae , b/178483889 ) - Added test method to get the clipped bounds. ( I6b28e )
رفع اشکالات
- Removed isBounded method from BlurredEdgeTreatment in favor of explicitly checking if the shape parameter is null. ( I85d68 )
Version 1.1.0-alpha02
۱۸ آگوست ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-alpha02
is released. Version 1.1.0-alpha02 contains these commits.
تغییرات API
- PointerEvent now has support for reading mouse button state and keyboard modifier state. ( I6310c , b/180075467 )
- Injected gestures now use the MainTestClock's time as the source of truth for time. The current time for injected events in
performGesture
will be initialized to the current time of the MainTestClock. ( Ifb364 , b/192064452 ) - Added
DpRect(DpOffset, DpSize)
constructor ( I2cf16 , b/194219828 ) - Added DpSize class ( I7abb1 , b/194219828 )
رفع اشکالات
- Updated Vector graphics xml parsing to support ColorStateLists as root color tint properties on VectorDrawables. ( I86915 , b/195668138 )
Version 1.1.0-alpha01
۴ آگوست ۲۰۲۱
androidx.compose.ui:ui-*:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
تغییرات API
-
RelocationRequester.bringIntoView
now accepts a rectangle as a parameter which enables us to bring a part of a composable into view ( Ice2c5 , b/194330245 ) -
AnimatedImageVector
and the related APIs are now in the newandroidx.compose.animation:animation-graphics
module. ( I60873 ) - Added experimental modifier to handle relocation requests. ( I65a97 , b/178211874 )
Introduced BrushPainter API to support drawing of an arbitrary Brush within a Painter, similar to ColorPainter
Updated Brush API to have an intrinsic size parameter that is queried within BrushPainter ( Ia2752 , b/189466433 )
Updated DrawScope#drawImage method that consumes source and destination rects to consume an optional FilterQuality parameter. This is useful for pixel art that is intended to be pixelated when scaled up for pixel based art. Updated BitmapPainter + Image composable to also consume an optional FilterQuality parameter ( Ie4fb0 , b/180311607 )
Added
GestureScope.advanceEventTime
method to give more control over the timing of events in a gesture ( Ibf3e2 )
رفع اشکالات
- In order to better support chaining of draw modifiers, make sure the Modifier.paint implementation calls drawsContent. Previously Modifier.paint was expected to a leaf node in the chain of Modifiers, however, by doing so it prevents it from being configured on a composable container (ex. box) or adding additional decorations on top such as
Modifier.paint().border()
. By having Modifier.paint call drawContent after drawing the contents of the given painter, we have better behavior consistency in behavior with the modifier pattern. ( Ibb2a7 , b/178201337 , b/186213275 ) - Dialogs now follow the platform sizing behaviour. Set
usePlatformDefaultWidth
to false to override this behaviour. ( Iffaed , b/192682388 ) - Moved
InfiniteAnimationPolicy
to :compose:ui ( I5eb09 , b/160602714 ) - Scrolling via semantics actions for lazy lists and regular scrolling components is now animated ( Id9066 , b/190742024 )
نسخه ۱.۰
Version 1.0.5
۳ نوامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.0.5
is released. Version 1.0.5 contains these commits.
رفع اشکالات
- Fixed a crash tracking derivedStateOf instances. ( aosp/1792247 )
نسخه ۱.۰.۴
۱۳ اکتبر ۲۰۲۱
androidx.compose.ui:ui-*:1.0.4
is released. Version 1.0.4 contains these commits.
Dependency Updates
- Updated to depend on Kotlin
1.5.31
نسخه ۱.۰.۳
۲۹ سپتامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.0.3
is released. Version 1.0.3 contains these commits.
Dependency Updates
- Updated to depend on Kotlin
1.5.30
نسخه ۱.۰.۲
۱ سپتامبر ۲۰۲۱
androidx.compose.ui:ui-*:1.0.2
is released. Version 1.0.2 contains these commits.
Updated to support the Compose 1.0.2
release. Compose 1.0.2
is still compatible with Kotlin 1.5.21
.
نسخه ۱.۰.۱
۴ آگوست ۲۰۲۱
androidx.compose.ui:ui-*:1.0.1
is released. Version 1.0.1 contains these commits.
Dependency Updates
- Updated to depend on Kotlin
1.5.21
.
نسخه ۱.۰.۰
۲۸ ژوئیه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0
is released. Version 1.0.0 contains these commits.
Major features of 1.0.0
This is the first stable release of Compose. Please see the official Compose Release blog for more details!
مشکلات شناخته شده
If you are using Android Studio Bumblebee Canary 4 or AGP
7.1.0-alpha04
/7.1.0-alpha05
, you may hit the following crash:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
To fix, temporarily increase your minSdkVersion to 24+ in your
build.gradle
file. This issue will be fixed in the next version of Android Studio Bumblebee and AGP7.1
. ( b/194289155 )
Version 1.0.0-rc02
۱۴ ژوئیه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-rc02
is released. Version 1.0.0-rc02 contains these commits.
رفع اشکالات
- Dialogs now follow the platform sizing behaviour. Set
usePlatformDefaultWidth
to false to override this behaviour. ( Iffaed , b/192682388 )
Version 1.0.0-rc01
۱ ژوئیه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-rc01
is released. Version 1.0.0-rc01 contains these commits.
ویژگیهای جدید
- Split ui-tooling module into
ui-tooling
andui-tooling-preview
( Iefa28 , b/190649014 )
تغییرات API
- Removed deprecated experimental
FocusManager#moveFocusIn
andFocusManager#moveFocusOut
( I227d7 , b/170154986 , b/186567354 , b/168510304 ) - Canvas now supports a contentDescription parameter for accessibility. ( Ib547c )
-
useDefaultMaxWidth
inPopupProperties
was renamed tousePlatformDefaultWidth
. ( I05710 ) - Dialogs are now able to use the entire screen width. ( I83929 , b/190810877 )
- Added experimental support for HSV and HSL color representations. ( Id7cf8 , b/180731008 )
تغییرات رفتاری
- Compose
@Preview
now provides aLocalActivityResultRegistryOwner
that allows you to preview Composables that use APIs likerememberLauncherForActivityResult()
that depend on that owner existing. ( Ib13d1 , b/185693006 ) - Compose
@Preview
now provides aLocalOnBackPressedDispatcherOwner
that allows you to preview Composables that use APIs likeBackHandler
that depend on that owner existing. ( Ia1c05 , b/185693006 )
رفع اشکالات
- Moved
InfiniteAnimationPolicy
toandroidx.compose.ui:ui
( I5eb09 , b/160602714 ) - AnimatedImageVector was temporarily removed in order to change the module structure. ( I41906 , b/160602714 )
Version 1.0.0-beta09
۱۶ ژوئن ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta09
is released. Version 1.0.0-beta09 contains these commits.
تغییرات API
- Change enum Role and LiveRegionMode into inline classes with private constructor ( Id1890 )
- KeyboardCapitalization is converted into an inline class. ( Id5a1c )
- Change HapticFeedbackType to inline class. ( I255ec )
- Modifier.pointerInteropFilter is @ExperimentalComposeUiApi. ( Iede6c )
- TextAlign, FontSynthesis and TextDirection are now inline classes. ( I212fe )
- TextOverflow is changed to an inline class. ( I433af )
- FontStyle is now an inline class. ( I9e48b )
رفع اشکالات
- Key constants are @ExperimentalComposeUiApi for now. Consuming code can declare private constants prior to stabilization. ( Ia5d48 )
- Compose tests can now be run on Robolectric. The following limitations have so far been identified:
- There is no native bitmap, so
ImageBitmap()
leads to a NullPointerException. - There is no drawing, so
captureToImage()
will indefinitely await the next draw pass (ie it deadlocks). - There is no font loaded, so any text will be measured incorrectly. All characters have a fixed height of around 20px and width of 1px.
-
ComposeTestRule.waitUntil {}
does not run the main thread while it's waiting, making it effectively the same asComposeTestRule.mainClock.advanceTimeUntil {}
More limitations are expected to be identified in the future. ( I284fa )
- There is no native bitmap, so
Added Profile Rules
This release adds profile rules to the following compose modules ( I14ed6 ):
- androidx.compose.animation
- androidx.compose.animation-core
- اندروید ایکس.کامپوز.فونداسیون
- androidx.compose.foundation-layout
- اندروید.کامپوز.متریال
- 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
What are profile rules?
Profile rules for a library are specified in a text file
baseline-prof.txt
located in thesrc/main
or equivalent directory. The file specifies a rule per line, where a rule in this case is a pattern for matching to methods or classes in the library. The syntax for these rules is a superset of the human-readable ART profile format that is used when usingadb shell profman --dump-classes-and-methods ...
. These rules take one of two forms to target either methods or classes.A method rule will have the following pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
And a class rule will have the following pattern:
<CLASS_DESCRIPTOR>
Here
<FLAGS>
is one or more of the charactersH
,S
, andP
to indicate whether or not this method should be flagged as "Hot", "Startup", or "Post Startup".The
<CLASS_DESCRIPTOR>
is the descriptor for the class that the targeted method belongs to. For example, the classandroidx.compose.runtime.SlotTable
would have a descriptor ofLandroidx/compose/runtime/SlotTable;
.The
<METHOD_SIGNATURE>
is the signature of the method, and includes the name, parameter types, and return types of the method. For example, the methodfun isPlaced(): Boolean
onLayoutNode
has the signatureisPlaced()Z
.These patterns can have wildcards (
**
,*
, and?
) in order to have a single rule encompass multiple methods or classes.
What do the rules do?
A method that has the flag
H
indicates that this method is a "hot" method, and should be compiled ahead of time.A method that has the flag
S
indicates that it is a method which is called at startup, and should be compiled ahead of time to avoid the cost of compilation and interpreting the method at startup time.A method that has the flag
P
indicates that it is a method which is called after startup.A class that is present in this file indicates that it is used during startup and should be pre-allocated in the heap to avoid the cost of class loading.
این چطور کار میکند؟
- Libraries can define these rules which will be packaged in AAR artifacts. When an app is then built which includes these artifacts, these rules are merged together and the merged rules are used to build a compact binary ART profile that is specific to the app. ART can then leverage this profile when the app is installed on devices in order to ahead-of-time compile a specific subset of the application to improve the performance of the application, especially the first run. Note that this will have no effect on debuggable applications.
Version 1.0.0-beta08
۲ ژوئن ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta08
is released. Version 1.0.0-beta08 contains these commits.
تغییرات API
-
NestedScrollSource
enum is replaced by an inline class. ( Ie321b , b/187055290 ) -
FocusManager.clearFocus(forcedClear = true)
is renamed toFocusManager.clearFocus(force = true)
( Ia0c41 ) - Refactored enum usages to inline classes to avoid issues with exhaustive when statements when new enum values are added. ( I2b5eb )
- Remove
@ExperimentalComposeUiApi
fromPopupProperties
. ( I01fa6 ) -
PointerType
was changed from an enum to an inline class ( If5058 ) - ContentDescription and Text semantics properties are no longer single values but lists. This enables to merge them as they are instead of concatenations. Also provided better testing APIs to utilize these changes ( Ica6bf , b/184825850 )
-
Modifier.focusModifier()
is deprecated and replaced byModifier.focusTarget()
( I6c860 ) -
Modifier.onSizeChanged()
andModifier.onGloballyPositioned()
are not inlined functions anymore ( I727f6 , b/186109675 ) -
KeyboardType
enum is replaced by an inline class. ( I73045 , b/187055290 ) - Replaced
FocusState
enum with aFocusState
interface ( Iccc1a , b/187055290 ) - ImeAction enum is replaced by an inline class. ( I18be5 , b/187055290 )
-
PlaceholderVerticalAlign
is converted into an inline class. ( If6290 ) - TextUnitType is an inline class now. ( I4cba9 )
-
AnnotatedString.withAnnotation
functions are now ExperimentalTextApi instead of ExperimentalComposeApi. ( I0cd0a )- TextUnit constructor with TextUnitType is now ExperimentalTextApi instead of ExperimentalComposeApi.
رفع اشکالات
- Fixed the bug introduced in beta07 where LazyColumn/Row items were displayed partially after the scroll ( I8c9ac , b/188566058 )
- Now
detectDragGesures
,detectVerticalGestures
, anddetectHorizontalGestures
will consume the position change automatically, no need to call change.consumePositionChange in the onDrag callbacks ( I42fc4 , b/185096350 , b/187320697 ) - LayoutModifiers providing alignment lines was fixed. A bug causing the parent not being remeasured when the alignment lines of the children were changing was fixed. ( I4401f , b/174315652 )
-
Modifier.onGloballyPositioned()
was changed to report the coordinates of this modifier in the modifier chain, not the layout coordinates after applying all the modifiers. This means that now the ordering of modifiers is affecting what coordinates would be reported. ( Ieb67d , b/177926591 )
Version 1.0.0-beta07
۱۸ مه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta07
is released. Version 1.0.0-beta07 contains these commits.
تغییرات API
- Added
ViewRootForInspector
interface for use in inspector ( Ib70df ) -
SubcomposeLayoutState
now supports setting count of reusable slots. The layout will keep up to this count slots active instead of disposing them in order to reuse the slot next time we need a new one ( Ieb981 ) - KeyEventType enum is replaced by an inline class. ( Id670a , b/187055290 )
-
FocusDirection
enum is replaced by an inline class. ( Ib6d03 , b/187055290 , b/184086802 ) - Introduces ability to hoist the SubcomposeLayout state which allows you to precompose the content into a requires slotId which would make the next measure pass faster as once we try to subcompose with the given slotId next time there will be no composition needed. ( I42580 , b/184940225 )
- Added Clip Selection Handle ( Iff80d , b/183408447 )
- Removed unused APIs related to LayoutInspector support. ( I2ac78 )
رفع اشکالات
- LazyColumn/Row will now keep up to 2 previously visible items active (not disposed) even when they are scrolled out already. This allows the component to reuse the active subcompositions when we will need to compose a new item which improves the scrolling performance. ( Ie5555 )
-
TextGeomerticTransform
andTextDecoration
onAnnotatedString
will be applied as given. ( I61900 , b/184760917 )
Version 1.0.0-beta06
۵ مه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
تغییرات API
- Solve Conflict with Navigation Gesture ( I1145e )
-
@ComposeCompilerApi
no longer@RequiresOptIn
( Iab690 ) - Added CollectionInfo and CollectionItemInfo accessibility APIs that allows to mark collection and its items for accessibility services ( Id54ef , b/180479017 )
- Added
SemanticsActions.ScrollToIndex
to scroll a list with indexed items to the item with a certain index, andSemanticsProperties.IndexForKey
to get the index of an item in a list with keyed items. Both actions are implemented by LazyList.- Added
SemanticsNodeInteraction.performScrollToIndex
that scrolls a list to the given index, andSemanticsNodeInteraction.performScrollToKey
that scrolls a list to the item with the given key. ( I4fe63 , b/178483889 , b/161584524 )
- Added
- Added ownerViewId to GraphicLayerInfo ( I19f62 )
- Added Font() overloads to load fonts from assets, File and FileDescriptor ( I5d382 )
- Added accessibility API
error
that allows to mark a node that contains invalid input ( I12997 , b/180584804 , b/182142737 ) - Added
Font()
overloads to load fonts from assets, File and FileDescriptor ( I43007 ) - AnnotatedString save support to
TextFieldValue.Saver
. AddedaddTtsAnnotation
and withAnnotation utility functions toAnnotatedString.Builder
( I8cbdc , b/178446304 ) - Added TextUnit constructor function
TextUnit(value: Float, type: TextUnitType)
( I7ecce , b/178446304 )
Version 1.0.0-beta05
۲۱ آوریل ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta05
is released. Version 1.0.0-beta05 contains these commits.
تغییرات API
- Added experimental
FocusManager.moveFocus(In)
andFocusManager.moveFocus(Out)
( Ic5534 , b/183746743 ) - Added experimental
performTextInputSelection
API ( I2dcbb , b/178510628 ) -
InputEventCallback
interface is deprecated. It was not possible to use the interface in any public API; and there was no usage of it in the code. ( I34a02 , b/184003208 ) - Deprecated
TextLayoutResult/createTextLayoutResult
function. It is an unused public function which was added for testing. The function does not do anything usable for Compose text APIs. The function is now deprecated and will be removed later. ( I80413 )
رفع اشکالات
- Fixed
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
andaccessibilityActionScrollDown
accessibility scroll actions. Instead of scrolling to the end of the scrollable, it will now scroll by one screen in the given direction. ( Ieccb0 ) - The AndroidManifest files from ui-test-manifest and ui-tooling-data are now compatible with Android 12 ( I6f9de , b/184718994 )
Version 1.0.0-beta04
April 7, 2021
androidx.compose.ui:ui-*:1.0.0-beta04
is released. Version 1.0.0-beta04 contains these commits.
تغییرات API
- Rename
hideSoftwareKeyboard
andshowSoftwareKeyboard
onSoftwareKeyboardController
tohide()
andshow()
respectively.- Provide the full CompositionLocal interface for LocalSoftwareKeyboardController, allowing it to be set (especially useful in tests) ( I579a6 )
- LiveRegion accessibility API is added. If node is marked as a live region, the accessibility services will automatically notify the user about its changes ( Idcf6f , b/172590946 )
- TextOverflow.Visible is introduced. ( Ic8f89 )
رفع اشکالات
- Fixed the issue when items of
LazyColumn
/LazyRow
located on the edges were incorrectly positioned after fast fling ( Ie4d13 , b/183877420 ) -
AndroidViewBinding
now properly removes fragments inflated viaFragmentContainerView
when theAndroidViewBinding
is removed from the compose hierarchy. ( Ib0248 , b/179915946 ) -
AndroidViewBinding
now correctly nests fragments inflated viaFragmentContainerView
when yourComposeView
is within aFragment
, fixing issues with saving and restoring the state of those fragments. ( I70eb0 , b/179915946 ) - Compose ViewBinding now depends on Fragment
1.3.2
and now consistently shows fragments inflated viaFragmentContainerView
after configuration changes. ( I0743d , b/179915946 )
Version 1.0.0-beta03
۲۴ مارس ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta03
is released. Version 1.0.0-beta03 contains these commits.
تغییرات API
- Deferred check for ViewTree dependencies of ComposeView ( I8dbbf , b/182466548 )
- Added optional
startX
/endX
andstartY
/endY
parameters toswipeUp
/swipeDown
/swipeLeft
/swipeRight
functions inGestureScope
. ( I49e2d , b/182063305 )
Version 1.0.0-beta02
۱۰ مارس ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta02
is released. Version 1.0.0-beta02 contains these commits.
تغییرات API
- Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I5951e , b/168778053 ) - Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I84472 , b/168778053 ) - Removed the following
SemanticsMatcher
s:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( If16bd )
-
- Marked the following
SemanticsMatchers
as @ExperimentalTestApi:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( Ia600c )
-
- Added the following
SemanticsMatcher
s:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( I2f502 )
-
رفع اشکالات
- Enforce restrictions on public usage of experimental APIs ( I6aa29 , b/174531520 )
-
androidx.compose.ui:ui
no longer depends on AppCompat or Fragment. If you are using a ComposeView in your application, and you are using Fragment and/or AppCompat, make sure that you are using AppCompat 1.3+ / Fragment 1.3+ - these versions are needed to correctly set lifecycle and saved state owners required for ComposeView. ( I1d6fa , b/161814404 ) - Fix for broken
rememberSaveable { mutableStateOf(0) }
when used inside a destination of navigation-compose. ( I1312b , b/180042685 , b/180701630 ) - Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 ) - Fixed rare NoSuchElementException in
ComposeRootRegistry
'stearDownRegistry()
( Iddce1 )
Version 1.0.0-beta01
۲۴ فوریه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
This is the first release of Compose 1.0.0 Beta.
تغییرات API
- onStart callback has been added to
detectDragGestures
( I67269 , b/179995594 ) - Modifiers for sizing to intrinsics are no longer experimental. ( I15744 )
- MeasureBlocks was renamed to MeasurePolicy which became a fun interface. Layout APIs were updated / simplified to use MeasurePolicy. ( Icab48 , b/167662468 , b/156751158 )
-
InteractionState
has been replaced with[Mutable]InteractionSource
- Interfaces are responsible for emitting / collecting Interaction events.
- Instead of passing
interactionState = remember { InteractionState() }
to components such asButton
andModifier.clickable()
, useinteractionSource = remember { MutableInteractionSource() }
. - Instead of:
Interaction.Pressed in interactionState
you should instead use the extension functions on InteractionSource, such as InteractionSource.collectIsPressedAsState(). - For complex use cases you can use InteractionSource.interactions to observe the stream of Interactions. See the InteractionSource documentation and samples for more information.
- ( I85965 , b/152525426 , b/171913923 , b/171710801 , b/174852378 )
- Add AccessibilityMananger interface and LocalAccessibilityMananger in CompositionLocals ( I53520 )
- Removed deprecated LayoutCoordinates methods, use function instead of the property for positionInParent and boundsInParent ( I580ed , b/169874631 , b/175142755 )
- Typealiases replaced by underlying types:
-
ColorStop
is nowPair<Float, Color>
-
SpanStyleRange
is now `AnnotatedString.Range -
ParagraphStyleRange
is nowAnnotatedString.Range<ParagraphStyle>
-
StringAnnotation
is nowAnnotatedString.Range<String>
- ( I8dd1a )
-
- Created new TextInputSession for input sessions from low level text components such as CoreTextField. ( I8817f , b/177662148 )
- Placeable now exposes measuredSize, representing the size which the child layout actually measured to. This size might not respect the measurement constraints. ( Ib2729 , b/172560206 , b/172338608 )
- Add selectionGroup modifier that allows to mark collection of Tabs or RadioButtons for accessibility purposes ( Ie5c29 )
The
defaultFactory
forcompositionLocalOf
andstaticCompositionLocalOf
is now required instead of optional.This changes removes a potential type error for non-nullable types where no default factory was provided. Previously this would provide a null reference for a non-nullable type.
For nullable types consider supplying
{ null }
as the default factory.We do not recommend using locals with non-nullable types unless a sensible default can be provided. If no sensible default exists, the
defaultFactory
lambda should throw an exception. However throwing an exception means that consumers of the local will have an implicit dependency on it being provided that is not enforced by the type system. ( Ifbd2a )Deprecated methods from ui modules were removed ( I646f6 )
Size modifiers were renamed. Modifier.width/height/size were renamed to requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize were renamed to width/height/size. ( I5b414 )
Modifier.tapGestureFilter
has been removed. UseModifier.pointerInput { detectTapGestures(...) }
instead. ( I266ed , b/175294473 )partial consumption was removed from pointer input system. The recommended way of coordinating partial consumtion is Modifier.nestedScroll. ( Ie9c9b )
Orientation has been moved to foundation package. VelocirtTracker moved from ui.gesture to ui.input.pointer. ( Iff4a8 , b/175294473 )
imageResource and vectorResource are now extension functions on ImageBitmap and ImageVector companions respectively.
load{Image,Vector,Font}Resource
functions have been deleted. ( I89130 )AnimationClockObservable and subclasses have been removed. AnimatedFloat has been removed. ( Icde52 , b/177457083 )
Providers has been renamed to CompositionLocalProvider
- The Composition constructor no longer accepts a key parameter, and has been deprecated.
- currentCompositeKeyHash has been turned into a composable top level property instead of a composable top level function.
- CompositionData and CompositionGroup have been moved to the androidx.compose.runtime.tooling namespace
- ComposableLambda has been made an interface instead of a concrete class, and no longer has type parameters.
- ComposableLambdaN has been made an interface instead of a concrete class, and no longer has type parameters.
- The snapshotFlow function has been moved to the androidx.compose.runtime namespace
- the merge method of SnapshotMutationPolicy is no longer experimental
- The @TestOnly top level clearRoots function has been removed. It is no longer necessary.
- keySourceInfoOf and resetSourceInfo functions have been removed. They are no longer necessary.
- Composer.collectKeySourceInformation has been removed. It is no longer necessary.
- isJoinedKey, joinedKeyLeft, and joinedKeyRight methods have been removed. They are no longer necessary.
- Various top level APIs have been moved and reorganized into different files. Due to Kotlin's file class semantics, this will break binary compatibility but not source compatibility, so should not be an issue for most users.
- ( I99b7d , b/177245490 )
ComponentActivity.setContent()
was removed from compose:ui. Use the one fromandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
andLocalViewModelStoreOwner
were removed from compose:ui. Use the ones fromandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
( I6f36b )Modifier.scrollable has been reworked. Now it uses Scrollable interface instead of ScrollableController class ( I4f5a5 , b/174485541 , b/175294473 )
CustomEvens support from PointerInputModifier has been removed ( I02707 , b/175294473 )
SnapshotStateObserver is not Experimental anymore ( Id2e6a )
Deleted some previously deprecated APIs ( Ice5da , b/178633932 )
longPressGestureFilter and doubleClickGestureFilter have been removed. use Modifier.pointerInput with helper functions eg detectTapGestures ( I2fedf , b/175294473 )
Removed String.format API refactored usages in various toString methods to not leverage String.format internally. ( Id1290 )
Removed dp assertions ( I798d2 )
Removed androidx.compose.runtime:runtime-dispatch ( I55feb )
Text actions now check focus automatically ( I13777 , b/179648629 )
Removed
runBlockingWithManualClock
( I15cdc , b/179664814 )Scroll position in Modifier.verticalScroll()/horizontalScroll() is represented with Ints now ( I81298 )
FlingConfig has been renamed to FlingBehavior now allows for customization of suspend animation rather than predefined Decays. ( I02b86 , b/175294473 )
Added a helper function that is helpful to set the same action for all ImeAction callbacks ( I63447 , b/179226323 )
Removed SoftwareKeyboardController callback from all text fields to be replaced by a new API shortly. ( Iae869 , b/168778053 )
FontSpan and FontWeigthStyleSpan are no longer used and removed. ( Ie5b56 , b/177423444 )
Made the following Material API changes:
- Added contentPadding parameter to Top/BottomAppBar to allow customizing the default padding.
- Reordered parameters in BackdropScaffold to follow API guidelines for required parameters being before optional parameters.
- Moved
icon
parameter in BottomNavigationItem to be afterselected
andonClick
. - Renamed
alwaysShowLabels
parameter in BottomNavigationItem toalwaysShowLabel
. - Renamed
bodyContent
parameters in a few components to justcontent
. - Reordered parameters in
ButtonDefaults.buttonColors()
. Please note that because the type of the parameters have not changed, this will not cause an error in your code - please ensure you are either using named parameters or update the ordering manually, otherwise your code will not work the same as previously. - Added
secondaryVariant
parameter todarkColors()
. This color is typically the same assecondary
in dark theme, but adding for consistency and further customization. - Removed ElevationDefaults and animateElevation() from the public API surface since they were not commonly used / useful.
- Renamed
onValueChangeEnd
inSlider
toonValueChangeFinished
and made it nullable. - Renamed
text
parameter inSnackbar
tocontent
for consistency. - Added
contentPadding
parameter toDropdownMenuItem
to allow customizing the default padding and madecontent
be an extension onRowScope
. - Renamed
ModalDrawerLayout
toModalDrawer
. - Renamed
BottomDrawerLayout
toBottomDrawer
. - ( I1cc66 )
رفع اشکالات
- Added API to use AnimatedVectorDrawable resources in Compose. Use animatedVectorResource to load an
<animated-vector>
XML as an AnimatedImageVector and animate it with painterFor ( I8ea91 ) - Added new LocalSoftwareKeyboardController composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 )
Version 1.0.0-alpha12
۱۰ فوریه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-alpha12
is released. Version 1.0.0-alpha12 contains these commits.
تغییرات API
- Support for ViewGroups was removed from UiApplier. The Deprecated emitView composables were removed. ( Ifb214 )
- Modifier.pointerInput now requires remember keys to indicate when the pointer input detection coroutine should restart for new dependencies. ( I849cd )
- CompositionReference renamed to CompositionContext ( I53fcb )
- Bounds has been renamed to DpRect ( I4b32a )
- Testing update: hasText() will check for both input and label/hint/placeholder texts in the text field ( Iab803 )
- viewModel() composable and LocalViewModelStoreOwner were moved to androidx.lifecycle.viewmodel.compose. You will now need to add a separate dependency androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 in order to use it. ( I7a374 )
- Allow nullable action in AccessibilityAction, change action label in AccessibilityAction and CustomAccessibilityAction from CharSequence to String ( I0dc82 )
- In order to better match naming conventions with ImageBitmap and ImageVector, ImagePainter has been renamed to BitmapPainter to parallel VectorPainter. ( Iba381 , b/174565889 )
- Better substring test APIs with substring now as an argument ( Icbe78 )
- Added an
Modifier.focusOrder()
that accepts a FocusRequester without specifying a custom focus order a lambda. This is useful when we only need to specify a reference but not a custom focus order for a composable ( I4f52a , b/179180978 ) - ComponentActivity.setContent has moved to androidx.activity.compose.setContent in the androidx.activity:activity-compose module. ( Icf416 )
- Destructuring and copy() methods have been removed from several classes where they were rarely used. ( I26702 , b/178659281 )
- Moved Popup to be platform specific. AndroidPopupProperties has been renamed to PopupProperties, and
isFocusable
has been moved to afocusable
parameter inPopupProperties
( Ieeea5 ) - Moved Dialog to be platform specific. Renamed AndroidDialogProperties to DialogProperties. ( I4ef69 , b/179138130 )
- Made LayoutNode internal ( I8a7b1 , b/175103944 )
- Constraints.enforce was replaced with Constraints.constrain. ( I8b8ea )
- loadFontResource is deprecated. Use fontResource instead. imageResource, loadImageResource, vectorResource, and loadVectorResource are deprecated. Use painterResource instead. ( I6b809 )
- For performance reasons, ScrollAxisRange semantics now takes lambdas returning Floats instead of direct Float values. ( If4a35 , b/178657186 )
- Added EditableText semantics to mark editable input text of the text field for accessibility and corresponding test methods to check the semantics ( I8e07a )
- Made OwnerLayer/OwnerScope/OwnerSnapshotObserver internal ( I4ffaf , b/175103944 )
- toIntPx() was renamed to roundToPx(). ( I9b7e4 , b/173502290 )
- IntBounds was renamed to IntRect and the API was improved. ( I1f6ff )
- Snapshot API was updated to be more consistent with API guideline as well as hiding internal implementation classes from the public API. ( Id9e32 )
- Added expand and collapse semantics actions. Added expand and halfExpand in ModalBottomSheetState ( Ib5064 )
- Modifier.dragGestureFilter has been deprecated. Use
Modifier.pointerInput { detectDragGestures (...)}
instead. Alternatively, use Modifier.draggable for one axis drags ( I0ba93 , b/175294473 ) - Renamed Ambients to match the Ambient -> CompositionLocal rename. Ambients used to be named AmbientFoo, now CompositionLocals are named LocalFoo. ( I2d55d )
- The deprecated BaseTextField is now removed. Use BasicTextField instead. ( I71368 )
- Selection was moved to foundation. ( I7892b )
- Similarly to how we previously removed
state { 0 }
composable and now promote usage likeremember { mutableStateOf(0) }
we are going to removesavedInstanceState { 0 }
composable. You should userememberSaveable { mutableStateOf(0) }
instead and it will save and restore automatically if the type used inside the MutableState can be stored in the Bundle. If previously you were passing a custom saver object now you need to use a new overload of rememberSaveable which hasstateSaver
parameter. The usage will look like this:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
( Ib4c26 , b/177338004 ) - Added password semantics for accessibility ( I231ce )
- Added ProgressBarRangeInfo.Indeterminate to mark indeterminate progress bars for accessibility ( I6fe05 )
-
emptyContent()
and(@Composable () -> Unit).orEmpty()
utilities have been deprecated as they no longer have any positive performance impact or value ( I0484d ) -
snapshotFlow
andwithMutableSnapshot
are no longer experimental ( I6a45f ) - Recomposers can now be closed. Closed recomposers will continue recomposition until composition child coroutines complete. Recomposer.shutDown renamed to cancel to contrast with close. ( Ib6d76 )
- UiSavedStateRegistry was renamed to SaveableStateRegistry, AmbientUiSavedStateRegistry was renamed to AmbientSaveableStateRegistry and both moved to androidx.compose.runtime.saveable package. ( I30224 )
- Artefact androidx:compose:runtime:runtime-saved-instance-state was renamed to androidx:compose:runtime:runtime-saveable ( I6dcac )
- Many longstanding deprecated APIs in the ui package are deleted. ( I2f2dc )
- The compose:runtime-dispatch artifact is now deprecated. MonotonicFrameClock can now be found in compose:runtime and AndroidUiDispatcher can be found in compose:ui. ( Ib5c36 )
- Outline.* classes are not data classes anymore ( I4879e , b/178001427 )
- Removed
view.captureToImage()
without any replacement. ( I7fcd2 ) - Introduced ColorMatrix API used to modify rgb values of source content Refactored ColorFilter API to be an interface and match the implementation of PathEffect. ( Ica1e8 )
- Add layoutDirection param to Shape's createOutline. This allows to create layout direction aware shapes. ( I57c20 , b/152756983 )
- onImeActionPerformed is deprecated. use KeyboardActions instead ( If0bbd , b/179071523 )
- Introduced an
InfiniteAnimationPolicy
coroutine context element that will be applied in infinite animations. By default no policy is installed, except when running tests withComposeTestRule
. ( I50ec4 , b/151940543 ) - canDrag has been removed from the Modifier.scrollable. ( Id66e7 , b/175294473 )
- Renamed LayoutCoordinates.parentCoordinates to LayoutCoordinates.parentLayoutCoordinates to allow for a new parentCoordinates property. The parentCoordinates property now offers the parent modifier's LayoutCoordintes. This will make for more complete use cases for onSizeChanged() and onGloballyPositioned() ( Idfbfd , b/177926591 )
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter and pressIndicaitonGestureFilter have been deprecated. Use Modifier.clickable or Modifier.pointerInput with detectTapGestures function instead. ( I6baf9 , b/175294473 )
- SaveableStateRegistry's unregisterProvider was removed. Instead registerProvider() now returns SaveableStateRegistry.Entry object which you can use to unregister ( Ic4274 , b/178583739 )
- rememberSavedInstanceState() was renamed to rememberSaveable() and moved to androidx.compose.runtime.saveable package. ( I1366e , b/177338004 )
- Removed CoreText and CoreTextField from public API
- Removed deprecated SelectionContainer overload
- ( I99c19 )
- Tests in which Compose is used in hierarchies that are added/removed directly to the WindowManager are now more stable. ( Ie81ed , b/175765614 )
- Removed Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Recomposition and withFrameNanos-based animation ticks are paused while the host Lifecycle is stopped. ( I38e11 )
- Recomposer.runningRecomposers now offers a global StateFlow of read-only RecomposerInfo for observing ongoing composition state in the process. Prefer this API to Recomposer.current(), which is now deprecated. ( If8ebe )
- Saver, listSaver(), mapSaver(), autoSaver was moved from androidx.compose.runtime.savedinstancestate to androidx.compose.runtime.saveable ( I77fe6 )
- EditCommands accept AnnotatedString. However this is an API only change and multi-style text editing is not implemented yet. ( I4c3ea )
- Uptime and Duration have been removed. ( Ib9bf4 , b/177420019 )
- CompositionData.asTree() and related APIs moved to separate ui-tooling-data module and marked as experimental ( Ic95b8 )
- Parameters on RounderCornerShape, CutCornerShape and CornerBasedShape were renamed from left/right to start/end in order to support the shape's auto mirroring in the rtl direction. AbsoluteRounderCornerShape and AbsoluteCutCornerShape were introduced for the cases when auto-mirroring is not desired. ( I61040 , b/152756983 )
The API the Compose compiler plugin targets has been refactored to use an interface instead of a concrete class. The interface also no longer uses a type parameter.
This is an internal change that should not effect source code compatibility but is a binary breaking change. ( I3b922 , b/169406779 )
Remove unintentionally public StringBuilder.deleteAt function ( Id6ed9 )
رفع اشکالات
- ComposeViews placed in view hierarchies that are children of another composition now host child compositions of their ancestors ( I92883 )
- Updated compose's imageFromResource API to reuse the resource drawable cache when loading ImageBitmap objects. ( If3627 , b/178751994 )
Version 1.0.0-alpha11
۲۸ ژانویه ۲۰۲۱
androidx.compose.ui:ui-*:1.0.0-alpha11
is released. Version 1.0.0-alpha11 contains these commits.
تغییرات API
- WithConstraints was reworked as BoxWithConstraints and moved to foundation.layout. ( I9420b , b/173387208 )
- Key.DPadUp is deprecated. Use Key.DirectionUp instead. ( Iab335 , b/177954892 )
- Owner interface from now on internal. ( If8e35 )
- Added FocusManager.moveFocus() API to move focus programmatically. ( I045cb , b/177681839 )
- Changes PopupPositionProvider to use window-relative coordinates, not global coordinates. Renames parentGlobalBounds to anchorBounds, and changes windowGlobalBounds to be windowSize: IntSize ( I2994a )
- Duration and Uptime will be replace with Long milliseconds, and this step removes the dependency of pointer input on those classes. ( Ia33b2 , b/175142755 , b/177420019 )
- AmbientSavedStateRegistryOwner was added similarly to already existing AmbientLifecycleOwner and AmbientViewModelStoreOwner ( I9a3e8 , b/176756365 )
- Updated vector graphics API to support parsing of tinting applied to the root of vector graphics. ( Id9d53 , b/177210509 )
- Added toolType to PointerInputChange to differentiate devices ( Iac787 , b/175142755 )
- AmbientWindowManager is renamed to AmbientWindowInfo ( I2686a , b/177084714 , b/177084983 )
- Deprecated global coordinates methods and made new window-based coordinates methods. ( Iee284 )
- Added Modifier.toolingGraphicsLayer which adds a graphics layer modifier when inspection is turned on. ( I315df )
- FocusRequester.createRefs is now marked as experimental as it might change. ( I2d898 , b/177000821 )
- SemanticsPropertyReceiver.hidden was renamed to invisibleToUser and marked @ExperimentalComposeUiApi. AccessibilityRangeInfo was renamed to ProgressBarRangeInfo. stateDescriptionRange was renamed to progressBarRangeInfo. AccessibilityScrollState was renamed to ScrollAxisRange. horizontalAccessibilityScrollState was renamed to horizontalScrollAxisRange. verticalAccessibilityScrollState was renamed to verticalScrollAxisRange. ( Id3148 )
- Removed PointerInputData and modified PointerInputChange to give it all of PointerInputData's fields. Made PointerInputEvent and PointerInputEventData internal because they aren't used in any public API. ( Ifff97 , b/175142755 )
- Updated GraphicsLayerScope implement density to support conversions of dp into raw pixels. ( Ied528 , b/176819695 )
- Updated matrix API to follow row major ordering and provide index constants to assist with conversions between different matrix representations to match framework conversion logic between SkMatrix and Matrix4 internally. ( I432e6 )
- Removed experimental monotonicFrameAnimationClockOf methods ( Ib753f , b/170708374 )
- Move String.fintPrecedingBreak and String.fingFollowingBreak to InternalTextApi. ( I657c4 )
- androidx.compose.ui.util.isSurrogatePair has been removed from public API. ( Ia9494 )
- Renamed TransformedText.transformedText to TransformedText.text
- TransformedText is no longer a data class ( Ie672a )
- Removed
data class
from the following classes:- InlineTextContent
- LocaleList ( I605c7 )
- The following classes are not data classes anymore:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput ( Iaff99 )
- Changed VisualTransformation to be a functional interface ( I3bba4 )
- Added a function reference parameter type ( I5e1bd )
- Add transformed bounds to InspectorNode ( Ice42f )
رفع اشکالات
- onCommit, onDispose, and onActive have been deprecated in favor of SideEffect and DisposableEffect APIs ( If760e )
Changes to factory functions for Font/FontFamily/Typeface
- Added factory functions that start with capital letter
- Deprecated previous factory functions with lowercase first letters
- New factory functions return the FontFamily instead of subclasses
- Hid constructors of the subclasses, so that they can only be constructed via factory functions.
- Renamed Font.asFontFamily to Font.toFontFamily ( I42aa7 )
Introduced
ComposeContentTestRule
, which extendsComposeTestRule
and definessetContent
, which has been removed fromComposeTestRule
. Added a factory methodcreateEmptyComposeRule()
that returns aComposeTestRule
and does not launch an Activity for you. Use this when you want to launch your Activity during your test, eg usingActivityScenario.launch
( I9d782 , b/174472899 )animateAsState is now animateFooAsState, where Foo is the type of the variable being animated. eg Float, Dp, Offset, etc ( Ie7e25 )
Content description parameter has been added to the Image and Icon. It is used to provide description to the accessibility services ( I2ac4c )
Remove displaySize as it should be avoided. Typically it is better to use size of onRoot() or window size at least. ( I62db4 )
OnSizeChanged was reporting the size of the layout's contents. It now reports the size at its position within the modifier chain. ( I36b78 , b/177562900 )
The emit() API and all overloads have been deprecated and renamed to ComposeNode. The APIs are identical, just a different name in order to follow the naming conventions of Compose ( I4137b )
TextFieldValue accepts AnnotatedString. However this is an API only change and multi-style text editing is not implemented yet.
- Removed
initial
from EditingBuffer constructor parameters. ( I326d5 )
- Removed
invalidate and compositionReference() are now deprecated in favor of currentRecomposeScope and rememberCompositionReference respectively. ( I583a8 )
AnnotatedString is changed to extend from kotlin.CharSequence. Therefore length and subSequence are now instance functions, and extension functions are removed. ( Iaf429 )
RememberObserver replaces CompositionLifecycleObserver and CompositionLifecycleObserver is now deprecated.
RememberObserver
is a replacement forCompositionLifecycleObserver
with modified semantics and renamed methods. Changing to the new API can be done mechanically for objects that are only remembered once which is, and continues to be, the recommended practice. However, if a reference was remembered more than once in a compositiononRemembered
is called for each reference whereonEnter
is only called once.onEnter
was called multiple time if the object was used in subcompositions, such asWithConstraints
andScaffold
making the singleonEnter
call guarantee unreliable and it was removed forRememberObserver
.RememberObserver
addsonAbandoned
which is called if theRememberObserver
instance is returned from the callback passed toremember
but was not remembered in the composition state and, therefore, will never haveonRemembered
called. This can occur if an exception terminates composition before completing or the composition is discarded because the state is was producing a composition for is no longer current or otherwise is no longer needed. If the instance ofRememberObserver
following the single reference recommendation above is tracking an external resource bothonForgotten
andonAbandoned
each indicate that the resource is no longer needed. If the object is tracking work started or resources allocated inonRemembered
,onAbandoned
can be ignored as it will not be called ifonRemembered
is called. ( I02c36 )Deprecated arithmetic operations between 2 or more TextUnits. Deprecated TextUnit.Sp and TextUnit.Em functions in preference to the extension functions such as Int.sp and Int.em. ( I48369 )
Resources in libraries with no explicitly declared public resources (ex. via public.xml) are now private by default. ( Ia1dcc , b/170882230 )
ScrollableColumn/Row were deprecated. Using ScrollableColumn is less efficient compared to LazyColumn when you have a large scrolling content because with LazyColumn we can only compose/measure/draw visible elements. To prevent users from going the inefficient way we decided to deprecate ScrollableColumn and ScrollableRow and promote usages of LazyColumn and LazyRow instead. Users can still decide they don't need the lazy behaviour and use the modifiers directly like this: Column(Modifier.verticalScroll(rememberScrollState())) ( Ib976b , b/170468083 )
New
items(count: Int)
factory method for scope of LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
anditemsIndexed(items: List)
are now extension functions so you have to manually import them when used. New extension overloads for Arrays:items(items: Array)
anditemsIndexed(Array)
( I803fc , b/175562574 )Please use ImeAction.None instead of ImeAction.NoAction
- Please use ImeAction.Default instead of ImeAction.Unspecified ( Ie1bcc )
Leverage TestCoroutineDispatcher in testing ( I532b6 )
Renamed TextInputService.onStateUpdated as updateState ( Id4853 )
TransitionDefinition-based Transition has been deprecated ( I0ac57 )
TextUnitType.Inherit is removed. Please use TextUnitType.Unspecified instead. ( I9ff64 )
Version 1.0.0-alpha10
January 13, 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
شکستن تغییر
Restructuring of the internal compiler API allows batching changes to the nodes generated as a result of composition into the "apply changes" phase of composition, after all
@Composable
functions have completed.This is a behavioral breaking change that might affect application code as nodes are no longer available from internal and experimental APIs until after changes have been applied. This can usually be worked around by surrounding code with such dependencies in a
SideEffect
composable to defer execution of the code until after the nodes have been created and initialized. ( I018da )
تغییرات API
- Added Modifier.focusOrder() that can be used to specify a custom focus traversal order ( I90cf5 , b/175899543 , b/170155556 , b/170155429 )
- Removed deprecated focusObserver use onFocusChanged or onFocusEvent instead ( I3ecb9 , b/175156387 )
- EditOperations API Changes
- Renamed EditOperation as EditCommand
- Added Command suffix for EditOperation concrete implementations
- EditCommand's are no longer data classes
- Renamed EditOperation.process function to applyTo
- Renamed InputEventListener to InputEventCallback
- ( I0a366 )
- Removed unused PxSquared, PxCubed, PxInverse. Changed Size.center() to be a property. ( I973f7 )
- ui-test module will now be able to configure the creation of Recomposers for UIs under test ( Ibebd8 )
- Modified Velocity to have component parts and mathematical operations. ( Ib0447 )
- Renamed
@ExperimentalTesting
to@ExperimentalTestApi
to be consistent with similar experimental api annotations ( Ia4502 , b/171464963 ) - Renamed Color.useOrElse() to Color.takeOrElse() ( Ifdcf5 )
- Removed unused DpInverse, DpSquared, and DpCubed classes. ( I4d62b )
- Constraints#satisfiedBy was renamed to isSatisfiedBy. ( I9cf5c )
- Add a callback to notify Owner when layoutnode bounds change. ( I72fd1 )
- Added isSpecified, isUnspecified, and useOrElse for inline classes with an Unspecified constant. ( I93f7b , b/174310811 )
Expand [Abstract]ComposeView APIs to allow recycling Compose-based views, disposing their composition to recreate again later. Add APIs for installing and discovering window-scoped Recomposers and CompositionReferences for creating child compositions.
Add ViewCompositionStrategy for configuring the composition disposal strategy of [Abstract]ComposeViews; default behavior is dispose on window detach. ( I860ab )
Removed Any.identityHashCode() public api ( I025d7 )
Removed toStringAsFixed API in favor of using String.format instead directly. ( Iaba6b )
Add Toggle to foundation Strings.kt ( I4a5b7 , b/172366489 )
Moved nativeClass to ui module and made it internal. Updated usages of nativeClass in equals implementations to use 'is MyClass' instead. ( I4f734 )
Modifier.focus() and Modifier.focusRequester() are deprecated. Use Modifier.focusModifier() and Modifier.focusReference() instead. ( I75a48 , b/175160751 , b/175160532 , b/175077829 )
Introduced SelectionRegistrar.notifySelectableChange to notify Selectable updates to SelectionManager. ( I6ff30 , b/173215242 )
Introduced Outline.bounds property to obtain the bounding rect for various outline implementations. ( I16e74 , b/175093504 )
Deprecated TestUiDispatcher. Use Dispatchers.Main instead ( Ic171f , b/175385255 )
ImeOptions and KeyboardOptions are no more a data class ( I3c898 , b/168684531 )
VisualTransformation API Changes
- Renamed OffsetMap to OffsetMapping
- Renamed OffsetMapping.identityOffsetMap to OffsetMapping.Identity
- PasswordTransformation is no longer data-class
- Moved OffsetMapping to its own file
- ( I0bdf3 )
Renamed Position to DpOffset and removed getDistance() ( Ib2dfd )
Changed fun Dp.isFinite() to a val Dp.isFinite ( I50e00 )
رفع اشکالات
- Recomposer now exposes a Flow of its current state, allowing monitoring its activity and the activity of associated effects. ( Ifb2b9 )
- The native keyEvent can now be accessed through keyEvent.nativeKeyEvent ( I87c57 , b/173086397 )
-
animate()
is now replaced withanimateAsState()
, which returns aState<T>
instead ofT
. This allows better performance, as the invalidation scope can be narrowed down to where the State value is read. ( Ib179e ) - Add Semantics role API and add Role as a parameter to clickable, selectable and toggleable SemanticsModifier. Changed Modifier.progressSemantics so that Slider can also use it. ( I216cd )
- New coroutine-based API
Animatable
that ensures mutual exclusiveness among its animations.- New DecayAnimationSpec to support multi-dimensional decay animation
- ( I820f2 , b/168014930 )
Version 1.0.0-alpha09
۱۶ دسامبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha09
is released. Version 1.0.0-alpha09 contains these commits.
تغییرات API
- Deprecated KeyEvent.Alt is now removed. Use KeyEvent.isAltPressed instead. ( Idd695 )
- Modifier.keyInputFilter and Modifier.previewKeyInputFilter are deprecated use Modifier.onKeyEvent and Modifier.onPreviewKeyEvent instead ( Idbf1b , b/175156384 )
- Modifier.focusObserver is deprecated. Use Modifier.onFocusChanged or Modifier.onFocusEvent instead ( I30f17 , b/168511863 , b/168511484 )
- For suspending pointer input APIs, renamed HandlePointerInputScope to AwaitPointerEventScope and handlePointerInput() to awaitPointerEventScope(). ( Idf0a1 , b/175142755 )
- Autofill API is now experimental API and requires opt-in ( I0a1ec )
- Adding destructuring declarations to create FocuSRequester instances ( I35d84 , b/174817008 )
- accessibilityLabel has been renamed to contentDescription. accessibilityValue has been renamed to stateDescription. ( I250f2 )
- Custom events were removed from suspending pointer input API ( Ia54d5 , b/175142755 )
- Introduced several new functions in SelectionRegistrar and also renamed onPositionChange to notifyPositionChange. ( Ifbaf7 )
- More members of LayoutNode we marked as internal ( I443c6 )
- LayoutInfo was introduced to be used by tooling and testing ( I9b190 )
- AndroidOwner made internal ( Ibcad0 , b/170296980 )
- Removed ExperimentalPointerInput annotation ( Ia7a24 )
- Nested scroll system added. Refer to Modifier.nestedScroll for more details ( I36e15 , b/162408885 )
- subcomposeInto(LayoutNode) was made internal ( Id724a )
The
Applier
interface has changed to simplify building trees bottom-up instead of top-down.The
insert()
method has been renamed toinsertTopDown()
.A new method,
insertBottomUp()
, was added.An applier either inserts nodes into the tree it is editing using
insertTopDown()
orinsertBottomUp()
depending on which performs better.Some trees, such as
LayoutNode
andView
, are much more efficient to build bottom-up than top-down. Prior to this change, a stack of inserts was required to implement bottom-up which needed to be copied to every applier which needed bottom-up construction for performance. With this change anApplier
overridesinsertBottomUp()
to build a tree bottom-up andinsertTopDown()
to build the tree top-down. ( Icbdc2 )Added dismissOnBackPress and dismissOnClickOutside properties to AndroidDialogProperties. These allow configuring when the dialog's onDismissRequest lambda will be invoked. ( If5e17 )
Added painterResource API to handle opaquely loading Painter objects from either rasterized asset formats (like PNGs) or VectorDrawables. Consumers no longer have to determine the type of asset in advance and can call this method to get a Painter object to use in Image composables or painter modifiers. ( I2c703 , b/173818471 )
Added Modifier.clearAndSetSemantics to clear descendants' semantics and set new ones. ( I277ca )
Moved ContentDrawScope to ui-graphics module to be with DrawScope. ( Iee043 , b/173832789 )
Introduced PathEffect graphics API to provide different patterns to stroked shapes. Deprecated usage of NativePathEffect in favor of expect/actual implementation of PathEffect. ( I5e976 , b/171072166 )
Added IdlingResource interfaces to Compose, as a Compose supported variant of Espresso's idling resources. They can be registered and unregistered through the ComposeTestRule ( I433f3 )
Removed global (un)registration of ComposeIdlingResource and global (un)registration of clocks into ComposeIdlingResource ( I32660 )
رفع اشکالات
- Lambdas in offset modifiers now return IntOffset rather than Float. ( Ic9ee5 , b/174137212 , b/174146755 )
Removed SlotTable, SlotReader and SlotWriter from the public API. These were marked as InternalComposeAPI previously. Now they are internal to the compose module.
CompositionData and CompositionGroup were added as a replacement for the ui-tooling API to use to extract composition information. These are public but are not intended for use outside the ui-tooling API as they provide the raw information the ui-tooling API interprets ( I31a9c )
Refactored ShaderBrush to lazily create a shader instance when sizing information of the drawing environment is available. This is useful to define gradients that occupy the full drawing bounds of a composable at composition time, without having to implement custom DrawModifier implementations.
Deprecated gradient function constructor APIs in favor of factory methods on a Gradient object. ( I511fc , b/173066799 )
Deprecate LazyColumnFor, LazyRowFor, LazyColumnForIndexed and LazyRowForIndexed. Use LazyColumn and LazyRow instead ( I5b48c )
Deprecated BuildCompat.isAtLeastR ( Idb37e )
Added buildAnnotatedString factory function in order to build an AnnotatedString. Deprecated annotatedString builder function. ( Idfe0b )
Removed extension methods on Float and Double to convert values to radians. Moved to be a private function within the implementation PathParser which was the only place where it was used ( I25f52 )
نسخه ۱.۰.۰-آلفا۰۸
۲ دسامبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
تغییرات API
- Add semantics action Dismiss ( I2b706 )
- Moved DrawModifier APIs from the androidx.compose.ui package to the androidx.compose.ui.draw package. Created DrawModifierDeprecated.kt file to include typealiases/helper methods to assist with the migration from the deprecated to the current APIs. ( Id6044 , b/173834241 )
- Renamed Modifier.drawLayer to Modifier.graphicsLayer Also updated related classes to GraphicsLayer as per API feedback. ( I0bd29 , b/173834241 )
- New methods placeable.placeWithLayer() and placeable.placeRelativeWithLayer() were added which allows custom layouts and layout modifiers to place a child with introducing a graphics layer for their drawing. Having that we can first optimize redrawings, so when we need to move a child we don't have to redraw its content, second we can apply draw transformations for a child ( Ibd8f6 , b/170296989 , b/171493718 , b/173030831 )
-
<T>
was removed from SubcomposeLayout declaration. You can use it without specifying a type now. ( Ib60c8 ) - Added Modifier.scale/rotate APIs as conveniences for drawLayer.
- Renamed
Modifier.drawOpacity
toModifier.alpha
- Renamed
Modifier.drawShadow
toModifier.shadow
( I264ca , b/173208140 )
- Renamed
- Made PointerInputData's uptime and position fields non-nullable. ( Id468a )
- MaterialTheme now sets the correct colors for selection handles and selection background. Non-Material apps can manually use AmbientTextSelectionColors to customize the colors used for selection. ( I1e6f4 , b/139320372 , b/139320907 )
- Added WindowManager.isWindowFocused to check if the host window is in focus, and a WindowFocusObserver that provides an onWindowFocusChanged callback. ( I53b2a , b/170932874 )
- Updated TransformOrigin API to have destructuring syntax to return
pivotFractionX
andpivotFractionY
ascomponent1
andcomponent2
( If43c4 , b/173586560 ) - Added lint check for composable lambda parameter naming and position, to check for consistency with Compose guidelines. Also migrated some APIs using
children
as the name for their trailing lambda tocontent
, according to the lint check and guidance. ( Iec48e ) - Added API to check if Alt, Ctrl, Meta or Shift modifier keys were pressed when a keyevent was dispatched. ( I50ed9 )
- Added a new
Modifier.drawLayer()
overload. It takes a lambda block on a new GraphicsLayerScope where you define the layer parameters in a way which allows to skip recomposition and relayout when the state change happens. DrawLayerModifier is now internal in preparation to migrating its logic into placeable.placeWithLayer() method of LayoutModifier ( I15e9f , b/173030831 ) - Deprecated Ambients named with
Ambient
as their suffix, and replaced them with new properties prefixed with Ambient, following other Ambients and Compose API guidelines. ( I33440 ) - Moved
androidx.compose.ui.text.Typeface
toandroidx.compose.ui.text.font.Typeface
( Ic2b81 ) - Semantics argument mergeAllDescendants was renamed to mergeDescendants. ( Ib6250 )
- New drag gesture detector suspending pointer input API, including orientation locking. ( Icef25 )
- Renamed VectorAsset to ImageVector Moved and renamed VectorAsset to Builder to be an inner class of ImageVector as per API guidelines. Added typealias of VectorAssetBuilder to link to ImageVector.Builder for compat. ( Icfdc8 )
- Renamed ImageAsset and related methods to ImageBitmap. ( Ia2d99 )
- Add zIndex param for the PlacementScope's place() so Modifier.zIndex() now works as a LayoutModifier and any custom layout can set zIndexes for their children right in the placement block ( I711f7 , b/171493718 )
- Moved foundation semantics properties to ui ( I6f05c )
- Deprecate place(Offset) and placeRelative(Offset). Use overloads with int offsets instead ( I4c5e7 )
- Previously Deprecated APIs were removed: Modifier.onPositioned was removed, use Modifier.onGloballyPositioned. Modifier.onDraw was removed, use Modifier.onDrawBehind. Modifier.plus was removed, use Modifier.then. Color.Unset was removed, use Color.Unspecified. PxBounds class was removed, use Rect instead. ( Ie9d02 , b/172562222 )
- The Alignment interface was updated and made functional. ( I46a07 , b/172311734 )
- Gesture detector for tap, double-tap, long press, and press indication were added using the new suspending pointer input. A few utilities were added as well, making it easier for developers to write their own gesture detectors. ( I00807 )
-
id
was renamed tolayoutId
forLayoutIdParentData
.Measurable.id
was renamed toMeasurable.layoutId
. ( Iadbcb , b/172449643 ) - New multitouch gesture detector, including helpers for detecting rotation, zoom, and panning. ( Ic459d )
- Introduced SweepGradientShader and SweepGradientBrush APIs. ( Ia22c1 )
- Time control in tests (TestAnimationClock and its usages) is now experimental ( I6ef86 , b/171378521 )
Add coroutine-based scrolling APIs:
Adds LazyListState.snapToItem and LazyListState.smoothScrollBy, as well as lower-level APIs for scroll control. These APIs provide a suspend interface to control scrolling that waits until the scroll is finished before returning. ( Ie5642 )
Modifier.focusable has need added in foundation. Use this to add focusable behavior to a component, with correct semantics and accessibility. ( I41eb9 , b/152525426 , b/162865824 )
Provide default implementations of methods and properties in AnimationClockTestRule that can be delegated to its
clock
( I7ea3d , b/173399709 )AndroidComposeTestRule can now accept custom activity launchers ( Ib8288 , b/153623653 , b/154135019 )
TextLayoutResult.getLineVisibleEnd is deprecated. As a replacement TextLayoutResult.getLineEnd now has a new parameter visibleEnd. ( I73282 )
Updated TextFieldValue API
- made TextFieldValue.composition readonly
- removed exception thrown for invalid selection range ( I4a675 , b/172239032 )
Support TtsAnnotation for text to speech engine. ( I54cc6 )
New APIs for running animations in coroutines ( Ied662 )
رفع اشکالات
- The alignment parameter of Box was renamed to contentAlignment. ( I2c957 )
- offsetPx modifiers were renamed to offset. They are now taking lambda parameters instead of State. ( Ic3021 , b/173594846 )
- Added resetInput parameter to TextInputService#onStateUpdated ( I3e8f5 , b/172239032 , b/171860947 )
- Added lint check for Modifier parameters in Composable functions. This lint check checks the naming, return type, default value, and order of the parameter for consistency with Compose guidelines. ( If493b )
- Temporarily added option to let the TestAnimationClock be driven by the MonotonicFrameClock ( I1403b , b/173402197 )
- Added Android Typeface wrapper. You can load an Android Typeface via
typeface
function ietypeface(Typeface.DEFAULT)
. Also renamedtypefaceFromFontFamily()
totypeface()
( I52ab7 ) - Added lint check to check that Modifier factory functions are defined as extensions on Modifier, so they can be fluently chained together. ( I07981 )
- Remove old ui-test module and its stubs ( I3a7cb )
- Recomposer no longer accepts an EmbeddingContext; required scheduling dependencies are obtained from the effectCoroutineContext. FrameManager is deprecated; platform integrations should initialize their own global snapshot handling. ( I02369 )
- Pass style information to accessibility node. ( If5e8d )
- TextUnit.Inherit is renamed to TextUnit.Unspecified for consistency with other units. ( Ifce19 )
Compose UI Version 1.0.0-alpha07
۱۱ نوامبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
تغییرات API
- Introduced ScaleFactor inline class to represent scale factors for the horizontal and vertical axes independent of one another in order to support non-uniform scaling use cases.
- Added computeScaleFactor method to ContentScale
- Added ContentScale.FillBounds to perform non-uniform scaling to stretch the src bounds to fully occupy the destination.
- Added operator methods to compute ScaleFactor parameters with Size parameters.
- ( Ic96a6 , b/172291582 )
- The BiasAlignment and BiasAbsoluteAlignment factories for creating Alignments were added. ( Iac836 , b/169406772 )
- Allow a developer to forcefully clear focus. ( I90372 )
- A bug causing elevation not being drawn for Views inside Compose was fixed. ( If7782 )
- Created onDrawBehind API within ContentDrawScope to match naming convention with Modifier.drawBehind. ( I4fc3a , b/171955269 )
- Add support for camera distance to complement 3d transformations rotationX/rotationY on layer APIs. ( I40213 , b/171492100 )
- Added SelectionContainer without the callback ( Ibfadb )
- ExperimentalSubcomposeLayoutApi annotation was removed. SubcomposeLayout can now be used without adding @OptIn ( I708ad )
- FirstBaseline and LastBaseline were moved to androidx.compose.ui.layout package ( Ied2e7 )
- Removed opacity from drawShadow() modifier as it was confusing. ( I82c62 , b/171624638 )
- MeasureResult was moved out of MeasureScope. ( Ibf96d , b/171184002 )
- Several layout related symbols were moved from androidx.compose.ui to androidx.compose.layout.ui. ( I0fa98 , b/170475424 )
- Removed Deprecated FocusState2 ( I686cb , b/168686446 )
- ZIndexModifier is now internal ( I1808b , b/171493718 )
- Updated return type of lerp method on Size parameters to return a non-null Size to avoid unnecessary boxing. ( Ib0044 )
- Added TestMonotonicFrameClock for testing code that relies on Compose's MonotonicFrameClock for awaiting composition frame events using kotlinx-coroutines-test's runBlockingTest ( I4402f )
- Removed GestureScope.localToGlobal ( I15299 , b/171462785 )
- Added
onAllNodesWithSubstring
finder ( I81dd7 , b/171462889 ) - androidx.ui.test module deprecated. Please migrate to androidx.compose.ui.test and androidx.compose.ui.test.junit4 ( I452e8 )
رفع اشکالات
- captureToBitmap moved to captureToImage. ( I86385 )
- foundation.Text has been deprecated and replaced with material.Text. For a basic, unopinionated text API that does not consume values from a theme, see androidx.compose.foundation.BasicText. ( If64cb )
- Update TextFields to accept KeyboardOptions ( Ida7f3 )
- Rename KeyboardOptions as ImeOptions ( I82f36 )
- Moved KeyboardType and ImeAction into KeyboardOptions ( I910ce )
- provideDefault was added as an alternative for providing ambients, and it can be used to specify ambient values that will only be set when there is no ambient value already provided. ( Id6635 , b/171024925 )
- BaseTextField has been deprecated. Use BasicTextField instead. ( I896eb )
- Introduce ui-test-junit4 module ( Ib91f8 )
-
relativePaddingFrom
was renamed topaddingFrom
. ThepaddingFromBaseline
modifier was added, as convenience for specifying distances from layout bounds to text baselines. ( I0440a , b/170633813 ) - LaunchedTask was renamed to LaunchedEffect for consistency with the SideEffect and DisposableEffect APIs. LaunchedEffect with no subject params is not permitted in order to encourage best practices. ( Ifd3d4 )
- Introduced resources composable that recomposes when the configuration updates. ( I6387c , b/167352819 )
- Recomposer now requires a CoroutineContext at construction ( Ic4610 )
- Sum
zIndex
values when multipleModifier.zIndex()
applied. Previously the first one was winning. ( Ic514c , b/170623936 ) - Changes to the internal SlotTable implementation which should not affect the public API. ( If9828 )
- Added Keyboard auto correct IME Option ( I57b8d )
- androidx.ui.test moved to androidx.compose.ui.test ( I9ffdb )
- Removed KeyboardOptions.toImeOptions from public API. ( Ic2e45 )
مشارکت خارجی
- Disabled publication of internal artifact androidx.compose.ui:ui-text-android ( Ib93fa )
نسخه ۱.۰.۰-alpha06
۲۸ اکتبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
تغییرات API
- Recomposer is now a CompositionReference and a valid composition parent. Explicit Recomposer is now required in fewer places. ( I4036f )
- Deprecate VectorPainter in favor of rememberVectorPainter to better indicate that the composable API internally leverages 'remember' to persist data across compositions. ( Ifda43 )
- Updated Modifier.drawWithCache API to expose ContentDrawScope as a receiver scope instead of DrawScope in order to provide implementations the ability to re-order drawing commands. This is useful for blending/ tinting use cases in which content pixels must be rendered first in order for the corresponding blend mode algorithm to be applied properly. ( Ie7ec8 )
- Move SimpleContainer into PopupTestUtils.kt ( I78c57 )
- ConsumedData is no longer a data class. See https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 for details ( I1737f )
- Fix Rtl Handle Position. ( I6e1e0 )
- Refactored DrawScope and ContentDrawScope to be interfaces instead of abstract classes
- Created CanvasDrawScope implementation of DrawScope
- Refactored implementations of DrawScope to use CanvasScope instead
- Created DrawContext to wrap dependencies for DrawScope
- Removed deprecated methods on DrawScope ( I56f5e )
- Breaking change: removed the return value from
PointerInputFilter.onPointerEvent(...)
given that the only value that should be able to be changed in pointer events is consumption data. Instead of returning data fromPointerInputFilter.onPointerEvent(...)
, now you can just mutate the consumption data of the PointerEvents passed in. ( I6acd0 ) - MeasureScope and IntrinsicMeasureScope were made interfaces. ( I1a087 , b/170461665 )
- The merge function for AlignmentLine was hidden. ( I9da1a , b/170612900 , b/170611568 )
- Add ability to specify inspector info in composed modifier ( Idee08 , b/163494569 )
- Added SelectAll option into selection menu ( Ief02b )
- Updated DrawTransform.rotate to take a default pivot parameter of center to match the documentation.
- Updated DrawScope.rotateRad to consume an Offset for the pivot point to match other transformation methods.
- Deprecated DrawScope.rotateRad overload that consumed floats for the x and y coordinate of the pivot.
- ( Iffcbb , b/170434992 )
رفع اشکالات
- API lint check for MissingGetterMatchingBuilder is enabled for androidx ( I4bbea , b/138602561 )
- Add test. ( I6b8ae )
- Enable transitions in ComposeTestRule; remove option to enable the blinking cursor from ComposeTestRule. ( If0de3 )
- Added KeyboardCapitalization IME Option ( I8ac38 )
- Added single line keyboard option to CoreTextField ( I72e6d )
- Move SimpleContainer into PopupTestUtils.kt ( I65c3e )
- Renamed Radius API to CornerRadius to better express how it is used throughout Compose. Updated documentation to indicate that negative corner radii are clamped to zero. ( I130c7 , b/168762961 )
- Improved Android interop by continuing to send MotionEvents to child Android Views that return false for onTouchEvent for all actions except
ACTION_DOWN
( I94c5a , b/170320973 ) - Box was made an inline function. ( Ibce0c , b/155056091 )
مشارکت خارجی
- Support different locales for
AnnotatedString.capitalize
andAnnotatedString.decapitalize
( I4aa7f )
نسخه ۱.۰.۰-آلفا۰۵
۱۴ اکتبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
تغییرات API
- Add a DSL for specifying inspector information ( Ic9a22 )
- Move LongPress into Text. ( Iff2bc )
- Experimental Modifier.pointerInput suspending input modifier ( Ia77d2 )
- Added Copy/Paste/Cut accessibility actions ( I6db4f )
- Public constructor for AndroidOwner was removed ( Iacaef )
- Popups and dialogs now inherit FLAG_SECURE from parent Window. Also added option to configure this explicitly ( I64966 , b/143778148 , b/143778149 )
Consumption data is now mutable. Also calls to extension functions that do consumption now no longer return a new PointerInputChange, but instead mutate the provided PointerInputChange.
This is the first step in a 2 step process to make PointerEvent data mutable such that other pointer data cannot be edited by user code. The second step will be to remove the
List<PointerInputChange>
return type fromPointerInputFilter.onPointerEvent(...)
. ( Id067e )Disable Selection in Text, and a Demo. ( Ie7e97 )
Made onGloballyPositioned an inline function ( I15830 )
OnPositionedModifier is renamed to OnGloballyPositionedModifier and onPositioned() is renamed to onGloballyPositioned(). ( I587e8 , b/169083903 )
The hasPendingMeasureOrLayout property was added to Owner, telling whether the Owner has any pending layout work. ( I3d9f8 , b/169038599 )
Added API to programmatically clear focus ( Ie1dc2 , b/161487952 )
Removed
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
should be used in its place. ( I6f04a )Changes to Size
- Removed Size.getFlipped
- Removed Size.rem
- Removed Size.truncDiv ( Ief44d , b/169790720 )
As part of the standardization of sentinel values for inline classes, rename Color.Unset to Color.Unspecified for consistency with other inline classes ( I97611 , b/169797763 )
TextOverflow.None is introduced. When overflow is None, Text won't handle overflow anymore, and it will report its actual size to LayoutNode. ( I175c9 , b/158830170 )
The scope parameter within AnnotatedString.Builder.addStringAnnotation is renamed to tag for API consistency. ( I7c8cb )
رفع اشکالات
- The scrolling performance of LazyColumn/Row is improved by doing less work in subcomposition on every scroll. The new hasInvalidations() method was added for Composition class. hasPendingChanges() method from Recomposer was renamed to hasInvalidations() ( Ib2f32 , b/168293643 , b/167972292 , b/165028371 )
- Updated Size.Unspecified parameters to be Float.NaN instead of Float.POSITIVE_INFINITY. Updated Painter implementations to check against Size.Unspecified as well as non-finite Sizes. ( I95a7e )
- The order of place() calls in custom Layouts now defines the drawing order for the children ( Ibc9f6 )
- Support AnnotatedString to SpannableString conversion for accessibility. ( Ief907 )
- Added stubs for android classes that are on older platforms to avoid use of reflection when possible. ( Ia1790 )
- Fixed bug: If the software keyboard showing caused the app to translate, pointer input coordinates would become incorrect. ( Ic4cec , b/163077821 )
نسخه ۱.۰.۰-آلفا۰۴
۱ اکتبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
تغییرات API
- Added OwnerScope to allow collection of layout and drawing observation scopes once they are no longer valid. ( Ic4cf8 )
- Added OnRemeasuredModifier and onSizeChanged() to receive a callback when content layout has been remeasured and the size has changed, respectively. ( I657cf , b/154108792 )
- Add long click semantics action ( I6281b , b/156468846 )
- Made FocusManager private. ( I7872f )
Updated implementation to create a dedicated DrawCacheModifier implementation instead of adding optional properties on DrawModifier.
Updated documentation for various methods ( Ibd166 )
Make TextRange inline to avoid object creation. ( Id034b )
PlacementScope#parentWidth and PlacementScope#parentLayoutDirection can no longer be read from the placement block of a custom layout. ( Icc1ae , b/168295623 )
add AccessibilityScrollState to semantics properties. ( Ifeda9 )
Introduced Modifier.drawWithCache to support creating a drawing object that conditionally recreates dependencies that depend on size/state information ( I376dc )
ParagraphConstraints is removed. Width is directly passed to Paragraph now. ( Ica712 )
رفع اشکالات
- Updated many Graphics APIs
- Updated scale and rotation transformation APIs to consume a single Offset parameter to represent the pivot coordinate instead of separate float parameters for the x/y coordinates in DrawScope and DrawTransform
- Removed Rect.expandToInclude and Rect.join methods
- Updated Radius documentation to say oval in addition to elliptical
- Added documentation to indicate the public constructor for the inline Radius class is not to be called directly but instead Radius objects should be instantiated through their function constructors
- Removed RoundRect APIs to query topRight, bottomRight, bottomCenter, etc.
- Deprecated Rect.shift in favor of Rect.translate
- Removed RoundRect.grow and Rect.shrink APIs
- Renamed RoundRect.outerRect to Rect.boundingRect
- Removed RoundRect.middleRect/tallMiddleRect/wideMiddleRect and Rect.isStadium methods
- Renamed RoundRect.longestSide to RoundRect.maxDimension
- Renamed RoundRect.shortestSide to RoundRect.minDimension
- Changed RoundRect.center to be a property instead of a function
- Updated RoundRect constructor to consume Radius properties instead of individual parameters for x/y radius values
- Removed Size APIs that assumed it was a Rectangle with origin at 0,0
- Added a destructing API to Radius
- Migrated various RoundRect extension functions to be properties instead
- ( I8f5c7 , b/168762961 )
- foundation.Box was deprecated. Please use foundation.layout.Box instead. ( Ie5950 , b/167680279 )
- Stack was renamed to Box. The previously existing Box will be deprecated in favor of the new Box in compose.foundation.layout. The behavior of the new Box is to stack children one on top of another when it has multiple children - this is different from the previous Box, which was behaving similar to a Column. ( I94893 , b/167680279 )
- Box decoration parameters have been deprecated. If you want to have decorations/padding on your box, use Modifiers instead (Modifier.background, Modifier.border, Modifier.padding) ( Ibae92 , b/167680279 )
- Updated many Graphics APIs
- Updated DrawScope APIs with scoped transformation methods to indicate that the transformation is only applied within the callback and removed after the callback is invoked
- Updated clipPath documentation to refer to Path instead of rounded rectangle
- Fixed spacing in documentation for right parameter in clipPath
- Renamed DrawScope.drawCanvas to drawIntoCanvas and removed size parameter
- Renamed dx/dy parameters in inset method to horizontal and vertical
- Added inset overload that provides the same inset value to all 4 bounds
- Removed documentation on inset method indicating that inset would be applied to all 4 sides
- Updated documentation for Rect class
- Updated comments on Rect parameters to match kdoc style
- Removed Rect.join and Rect.expandToInclude
- Created overload for Rect.translate(offset) and deprecated Rect.shift
- ( If086a , b/167737376 )
- Annotated rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled and textInputServiceFactory with @VisibleForTesting, make them internal API and hide their kdoc ( I554eb , b/168308412 )
- Remove SelectionContainer from the Top to disable default selection and avoid unexpected behavior. One can specifically use a SelectionContainer to wrap the content that needs to be selectable instead. ( I8dfe0 , b/158459594 )
نسخه ۱.۰.۰-آلفا۰۳
۱۶ سپتامبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
تغییرات API
- Remove scroll forward/backward semantics actions. Added steps in AccessibilityRangeInfo. ( Ia47b0 )
- Removed
onInvalidate()
fromOwner
--OwnedLayer
handles invalidation. ( Ica72b , b/162061312 ) Removed operator methods on Size API that consume Offset parameters. The result of these operations is unclear and the type of result is unexpected for these. Ex. should size - offset return an offset or a size result with the difference?
Also removed deprecated methods on Size class. ( Iec902 , b/166514214 )
رفع اشکالات
- Fix for items of LazyColumn being incorrectly drawn sometimes, this was also causing crashes in some conditions. ( Ibcf17 , b/163066980 , b/165921895 )
- DpConstraints and APIs using it were deprecated. ( I90cdb , b/167389835 )
- Moved
createAndroidComposeRule
andAndroidInputDispatcher
fromandroidx.ui.test.android
toandroidx.ui.test
( Idef08 , b/164060572 ) - Usages of gravity were consistently renamed to align or alignment in layout APIs. ( I2421a , b/164077038 )
- Added onNode and other global methods on ComposeTestRule as the current global ones are going to be deprecated. ( Ieae36 )
نسخه ۱.۰.۰-آلفا۰۲
۲ سپتامبر ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
تغییرات API
- remove callback to notify Owner when layoutnode bounds change. ( If654e , b/166106882 )
- Added support for filltype parameters on vector graphics paths to support cutouts of shapes according to evenOdd or NonZero path fill rules. ( I43dd2 )
- Uptime and Velocity are now inline classes ( I48f4a )
- Duration is now an inline class ( I565eb )
- Add a callback to notify Owner when layoutnode bounds change. ( Ic40b3 )
Fixed issue where Rect function constructor with Offset and radius would create the Rect in the order of left, right, top, bottom instead of left, top, right, bottom.
Removed deprecated companion methods on Rect in favor of function constructors.
Added tests to verify methods in Rect.kt ( I08460 , b/165822356 )
رفع اشکالات
- Added MutableRect, a rectangle that can be modified. ( I71bd2 , b/160140398 )
- Matrix4 was replaced with Matrix. All other parts of vectormath package have been removed. ( Ibd665 , b/160140398 )
The calling convention for composable functions has changed. This is a binary breaking change. All libraries must be recompiled to work with this version of the compose compiler plugin.
This change does not create a source level breaking change as the only APIs that have changed are compiler APIs that have an explicit opt in. ( I7afd2 , b/158123185 )
Fixed crash that could occur when dispatch to a PointerInputFilter could cause the PointerInputFilter to be synchronously removed. ( I58f25 )
نسخه ۱.۰.۰-آلفا۰۱
۲۶ آگوست ۲۰۲۰
androidx.compose.ui:ui-*:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
Version 0.1.0-dev
Version 0.1.0-dev17
۱۹ آگوست ۲۰۲۰
androidx.compose.ui:ui-*:0.1.0-dev17
is released. Version 0.1.0-dev17 contains these commits.
تغییرات API
-
emitView
was deprecated. UseAndroidView
instead if possible for emitting Views inside Compose. Note that composing Views and ViewGroups directly will not be supported in the future unless these are leaves in the composition tree, case when this can be achieved using AndroidView. ( I29b1e , b/163871221 ) -
FocusState2
is deprecated and replaced byFocusState
( Ia8b79 , b/160822876 , b/160923332 ) - The deprecated AndroidView overloads were removed. ( I946b9 , b/163802393 )
- Custom emits can now declare that one or more of its setters can be skipped and recomposed independently of the emit. ( Ibbd13 )
Changed Vector classes to no longer be data classes as the same object instance is used for composition.
Added mutableStateOf flag for VectorPainter to conditionally re-draw if contents of the vector change.
Refactored VectorComponent instance to be part of VectorPainter as it is re-used across compositions.
Updated GroupComponent and PathComponent to have their name fields be mutable ( Ieae45 , b/151378808 )
Removed
onChildPositioned
andOnChildPositionedModifier
. Developers should useonPositioned
andOnPositionedModifier
on the child layout instead. ( I4522e , b/162109766 )Offset has become an inline class ( Iaec70 )
Added a modifier param to SelectionContainer ( I4aada , b/161487952 )
Removed deprecated FocusModifier ( I0b4ba , b/160922116 , b/160821157 , b/162441435 , b/160822875 , b/160921940 )
Added
mergePolicy
lambda toSemanticsPropertyKey
. This can be used to define a custom policy for mergeAllDescendants semantics merging. The default policy is to use the parent value if already present, otherwise the child value. ( Iaf6c4 , b/161979921 )Constraints is now an inline class ( I88736 )
Added FocusManager that moves common focus logic out of AndroidComposeView ( I528ef , b/161487952 , b/162206799 )
Updated PointerEventPass names for Alpha release. ( Ifda6f )
IntOffset is now an inline class ( Iac0bf )
IntSize is now an inline class ( I2bf42 )
PlacementScope.placeAbsolute()
was renamed toPlacementScope.place()
, and the previousPlacementScope.place()
was renamed toPlacementScope.placeRelative()
. As a result, thePlacementScope.place()
method will not automatically mirror the position in right-to-left contexts anymore. If this is desired, usePlacementScope.placeRelative()
instead. ( I873ac , b/162916675 )AlertDialog now uses FlowRow for buttons ( I00ec1 , b/161809319 , b/143682374 )
Made some test utilities non public because they are not where they belong. Will be made public in the future. ( I32ab1 )
Refactored organization of pointer input code. ( Ie3f45 )
Deprecated PxBounds in favor of Rect. Updated all usages of PxBounds with rect and added proper deprecate/replace with annotations to assist with the migration. ( I37038 , b/162627058 )
Removed Deprecated KeyEvent2. Use KeyEvent instead. ( Ied2d0 , b/162097587 )
KeyEvent has a unicode property that can be used to get the unicode character generated by the specified key and meta key state combination ( If3afc )
Made the DelayUp custom event and related classes an opt in API as it is very likely going to be changed. ( I56d6f )
Removed 2 PointerEventPasses that are no longer needed. ( I3dd9d )
Add parameter color, shadow and TextDecoration to Paragraph.paint This function is useful to avoid unnecessary Paragraph recreation. ( I81689 )
رفع اشکالات
- Removed onFocusChanged callbacks from TextField. Use Modifier.focusObserver instead. ( I51089 , b/161297615 )
- Modifier.drawBorder has been deprecated. Use Modifier.border instead. Border data class has been replaced by BorderStroke ( I4257d , b/158160576 )
Removed deprecated FrameManager calls.
Internal compose APIs have been changed to reduce the amount of overhead to track state objects such as
mutableStateof()
( I80ba6 )VerticalScroller and HorizontalScroller have been removed. Use ScrollableColumn/Row instead. Modifier.drawBackground has been removed. Use Modifier.background ( I73b0d , b/163019183 )
Crash when something which saves the state was used inside the for loop is fixed. Now having the same key in savedInstanceState() is allowed, api of UiSavedStateRegistry is now adjusted to this new requirement ( I4ab76 , b/160042650 , b/156853976 , b/159026663 , b/154920561 )
The
state { ... }
composable is now deprecated in favor of explicit calls toremember { mutableStateOf(...) }
for clarity. This reduces the overall API surface and number of concepts for state management, and matches theby mutableStateOf()
pattern for class property delegation. ( Ia5727 )Renamed RRect to RoundRect to better fit compose naming patterns Created similar function constructors to RRect and deprecated RRect function constructors ( I5d325 )
Version 0.1.0-dev16
۵ آگوست ۲۰۲۰
androidx.compose.ui:ui-*:0.1.0-dev16
is released. Version 0.1.0-dev16 contains these commits.
تغییرات API
- OnChildPositioned has been deprecated. Use OnPositioned on the child instead. ( I87f95 , b/162109766 )
- setViewContent was deprecated. setContent should be used instead. ( I7e497 , b/160335130 )
- Added the AndroidViewBinding API for inflating and composing layout resources, based on ViewBinding. ( I081c6 )
- KeyEvent2 is replaced by KeyEvent ( I2d770 , b/162097585 )
- Added support for Alt hardware key ( I9036b )
- FocusManager is Deprecated. Use Modifier.focus(), Modifier.focusObserver() and Modifier.focusRequester() instead. ( I74ae4 , b/162211322 )
- loadVectorResource supports trimPath attributes ( I808fe )
- Move dialog to ui ( I47fa6 )
- Removed 2 PointerEventPasses that are no longer needed. ( I33ca7 )
- Implemented PointerInteropModifier which provides the ability to receive MotionEvents and interact with Compose as if you are an implementation of an Android View. ( Ieb08c )
- Removed the deprecated tag modifier. Please use layoutId instead. ( Idaa05 , b/162023919 )
- The APIs for right-to-left support has been updated. LayoutDirectionAmbient has been added, which can be used to read and change the layout direction. Modifier.rtl and Modifier.ltr have been removed. ( I080b3 )
- Support path trimming in vector graphics ( Ie16c9 , b/158188351 )
- Added Modifier.layout() that allows to create a custom layout modifier conveniently ( I73b69 , b/161355194 )
- Added a new AndroidView API and deprecated the existing ones. ( I5bcfd )
- Modifier.plus has been deprecated, use Modifier.then instead. 'Then' has a stronger signal of ordering, while also prohibits to type
Modifier.padding().background() + anotherModifier
, which breaks the chain and harder to read ( Iedd58 , b/161529964 ) - Add [Abstract]ComposeView View subclasses for hosting Compose content in a View hierarchy. ( I46357 )
-
Row
andColumn
are now inline function significantly reducing the overhead of using them. ( I75c10 ) - SubcomposeLayout is added. It is a low level primitive which allows to compose the children during the measuring if we want to use some values available only later during the measure for the subtree composition. For example WithConstraints is not implemented using SubcomposeLayout. ( I25cc8 )
- Added
SemanticsNode.positionInRoot
to get the position of a SemanticsNode relative to the root of the Compose hierarchy ( Icdf26 , b/161336532 ) - MotionEvents passed all the way through from Android, into Compose, and back into Android. ( I14be8 , b/158034713 )
- Removed dropdownPopup. ( I00430 )
- Fixed popup position on cut-out displays. ( Idd7dd )
- Add accessibility action to get TextLayoutResult ( I9d6e6 )
- RemeasurementModifier added. it allows to synchronously remeasure the layout. In general you never need it as remeasure/relayout is happening automatically, but we use it inside LazyColumnItems during the scroll. ( I5f331 , b/160791058 )
- Remove getLineEllipsisOffset/getLineEllipsisCount. Use getLineVisibleEnd/getLineEnd/isLineEllipsized instead. ( I85aa2 )
- Add some Marks/Annotations for best practice reason. ( I66b20 )
- expose more line APIs in TextLayoutResult. ( I79bd2 )
- Built-in vector converters to convert built-in units are now accessible via Foo.VectorConverter. eg Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc ( I3e273 )
رفع اشکالات
- Address broad API fixes ( I077bc )
- Remove unused OffsetBase interface
- Align Offset and IntOffset classes to have a consistent API surface
- Rename IntOffset.Origin to IntOffset.Zero to be consistent with Offset API
- Moved nativeCanvas method off of Canvas interface to support consumers to create their own Canvas instances
- Created stub EmptyCanvas class to refactor DrawScope to be a non-null parameter instead of lateinit and ensure non-nullability of the field
- Renamed ClipOp enums to be Pascal Case
- Renamed FilterQuality enums to be Pascal Case
- Renamed StrokeJoin enums to be Pascal Case
- Renamed PointMode enums to be Pascal Case
- Renamed PaintingStyle enums to be Pascal Case
- Renamed PathFillType enums to be Pascal Case
- Renamed StrokeCap enums to be Pascal Case
- Updated DrawCache implementation to no longer use lateinit params
- Updated DrawScope to no longer use lazy delegation for fillPaint and strokePaint internal parameters
- Updated Image composable to avoid Box usage for less overhead
- Updated Outline class to have @Immutable annotations
- Updated PathNode to have @Immutable annotations for each path instruction
- Updated Vector subcomposition to remove redundant conditional checks for equality as compose already handles them
- Deprecated Rect companion constructor methods in favor of function constructors
- Updated Brush classes and function constructors with @Immutable and @Stable APIs
- Updated VertexMode enum to be PascalCase
- Updated DrawScope selectPaint method to conditionally overwrite stroke parameters on the paint if they have changed
- Updated Size to add destructuring API, rename UnspecifiedSize to Unspecified and removed unused methods
- Updated compose BlendMode API consumption to properly map between Android framework BlendModes and PorterDuff modes depending on API level. Introduced BlendMode#isSupported API to act as a capability query to determine if the BlendMode is supported on the device before it is used. ( I0ef42 )
- LazyItemScope was added for itemContent param of Lazy lists. It provides modifiers to fill the parent max size which solves the use case when the item should fill the viewport and the regular Modifier.fillMaxSize() doesn't work as the item is measured with infinity constraints. ( Ibd3b2 , b/162248854 )
- Removed
SemanticsNodeInteraction.performPartialGesture
. UseSemanticsNodeInteraction.performGesture
instead. ( Id9b62 ) -
LazyColumnItems
was renamed toLazyColumnFor
.LazyRowItems
was renamed toLazyRowFor
( I84f84 ) -
foundation.shape.corner
package was flattened tofoundation.share
( I46491 , b/161887429 ) - Renamed
AndroidComposeTestRule
tocreateAndroidComposeRule
. ( I70aaf ) - Added more APIs to
TextLayoutResult
. ( Id7e04 ) - Material
FilledTextField
was renamed toTextField
and foundationalTextField
was renamed toBaseTextField
to make simplest desired API easy to discover and use ( Ia6242 , b/155482676 ) - Modifier.drawBackground has been renamed to Modifier.background ( I13677 )
Version 0.1.0-dev15
۲۲ ژوئیه ۲۰۲۰
androidx.compose.ui:ui-*:0.1.0-dev15
is released. Version 0.1.0-dev15 contains these commits.
Dependencies Update
- To use the
0.1.0-dev15
version of Compose, you will need to update your dependencies according to the new code snippets shown above in Declaring dependencies .
تغییرات API
- FocusModifier is deprecated in favor of Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState and FocusDetailedState are deprecated in favor of FocusState2 ( I46919 , b/160822875 , b/160922136 )
- Added a modifier to observe focus state change. ( I05866 , b/160924455 , b/160923326 )
- Added a modifier to request focus changes ( I8dd73 , b/161182057 , b/160924778 )
- Ajdust the Toolbar Menu to show copy, cut, paste properly. ( Id3955 )
- Single-value semantics properties now use a calling style. For example, 'semantics { hidden = true }' is now written as:
semantics { hidden() }
. ( Ic1afd , b/145951226 , b/145955412 ) - Added Modifier.focus which replaces FocusModifier. ( Ib852a , b/160924778 )
- Add FloatingToolbar for TextField Selection. ( Ie8b07 )
- Added an experimental api annotation for key input related API ( I53c0a )
- Added an experimental api annotation for all Focus-related API ( I53b24 , b/160903352 )
- Added FocusState2 which will replace FocusDetailedState ( I0a3ba , b/160822595 )
- Added ExperimentalFocus which is an @OptIn annotation for Focus API. ( I1544b , b/160820961 )
- An IntBounds unit class has been added, representing integer pixel bounds from layout. The API of PopupPositionProvider has been updated to use it. ( I0d8d0 , b/159596546 )
- Applier now requires a clear() method for disposing compositions ( Ibe697 )
- KeyEvent is deprecated and replaced by KeyEvent2 ( I68730 )
- A new optional flag useUnmergedTree was added to test finders. ( I2ce48 )
- Made LayoutNode experimental API ( I4f2e9 )
Added copy methods to various inline class types including:
- افست
- اندازه
- شعاع
- حرکت
TransformOrigin
Deprecated Size.copy companion object method favor of instance copy method ( Ife290 , b/159905651 )
Popups, Dialogs and Menus are now inheriting the contextual MaterialTheme ( Ia3665 , b/156527485 )
TextDirection is renamed as ResolvedTextDirection ( I3ff38 )
Removed layout direction parameter from the measure block of the Layout() function. Layout direction is however available inside the callback through the measure scope object ( Ic7d9d )
Refactor SelectionHandles for reusing. ( I420e0 )
Clickable was removed. Use Modifier.clickable ( I84bdf )
TestTag and Semantics have been deleted. Use Modifier.testTag and Modifier.semantics instead ( I15ff0 , b/158841414 )
Prior to this change, the compose compiler plugin would non-trivially intercept calls to constructors inside of a @Composable function if there was an ( I5205a , b/158123804 )
Modifier.tag was renamed to Modifier.layoutId, to avoid confusion with Modifier.testTag. ( I995f0 )
Alignment line Int positions returned from Placeable#get(AlignmentLine) are now non-null. If the queried alignment line is missing, AlignmentLine.Unspecified will be returned. ( I896c5 , b/158134875 )
The AndroidView composable was added a modifier parameter. ( I48a88 , b/158746303 )
Semantics() is deprecated. Use Modifier.semantics() instead. ( I72407 , b/158841414 )
Add viewModel() composable which allows to create or get already created ViewModel similarly to how it works in Activity or Fragment ( I5fdd1 )
Replaced usage of IntPx with Int. Replaced IntPxPosition with IntOffset. Replaced IntPxSize with IntSize. ( Ib7b44 )
In order to consolidate the number of classes used to represent sizing information, standardize on usage of the Size class instead of PxSize. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent width and height represented as floats. ( Ic0191 )
In order to consolidate the number of classes used to represent positioning information, standardize on usage of the Offset class instead of PxPosition. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent x and y offsets represented as floats. ( I3ad98 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters. Deleted Px class in its entirety ( I3ff33 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I086f4 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Id3434 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I97a5a )
TestTag is now deprecated. Use Modifier.testTag instead. ( If5110 , b/157173105 )
The default, no-op, implementation of ParentDataModifier#modifyParentData has been removed - it was equivalent to not implementing the interface in the first place. ( I0deaa )
Previously deprecated ScaleFit as removed. Use ContentScale instead. ( Ifbc5b )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I19d02 )
Added the DropdownMenu component in ui-material, a Material Design menu implementation. ( I9bb3d )
Removed deprecated LayoutTag(), please use Modifier.tag() instead. Removed deprecated Modifier.matchParent(), please use Modifier.matchParentSize() instead. ( If8044 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I57bff )
Modifier.semantics has been undeprecated to allow usages for high level components. ( I4cfdc )
Consolidated CanvasScope implementations so there is now just DrawScope and ContentDrawScope Renamed CanvasScope to DrawScope. Updated DrawScope to implement Density interface and provide LayoutDirection Deleted DrawScope subclass in ContentDrawScope Painter and PainterModifier have been updated to no longer maintain an RTL property themselves as DrawScope provides this already without manually providing it ( I1798e )
DoubleTapGestureFilter now disambiguates SingleTapGestureFilter across the tree. ( If92b1 )
Updated Alignment API and added support for absolute alignment (which does not auto-mirror in Rtl context) ( I38cd3 )
DrawLayer modifiers api has been changed: outlineShape renamed to shape and has the RectangleShape default value and now non-nullable; clipToOutline renamed to clip; clipToBounds removed as it is the same as clip == true with RectangleShape ( I7ef11 , b/155075735 )
Updated higher level compose APIs that expose a Canvas to expose CanvasScope instead. This removes the need for consumers to maintain their own Paint objects. For consumers that still require access to a Canvas they can use the drawCanvas extension method which provides a callback to issue drawing commands with the underlying Canvas. ( I80afd )
WithConstraints trailing lambda API has been changed. Now instead of two params it has a receiver scope which in addition to constraints and layoutDirection provides minWidth, maxWidth, minHeight and maxHeight properties in Dp ( I91b9a , b/149979702 )
Renamed LayoutModifier2 to LayoutModifier. ( Id29f3 )
Removed deprecated LayoutModifier interface. ( I2a9d6 )
Intrinsic measurements functions in Layout and LayoutModifier2 have an IntrinsicMeasureScope receiver now which provides intrinsics query API with implicitly propagated layout direction. ( Id9945 )
Layout and LayoutModifier children can be measured with a different layout direction. ( Ibd731 )
New Modifier.zIndex() is added to control the drawing order of the children within the same parent layout. elevation property on DrawLayerModifier is renamed to shadowElevation and doesn't control the drawing order anymore. The params order fo DrawShadow is changed: elevation is now the first one and the shape is the second one with a RectangleShape default. ( I20150 , b/152417501 )
Removed onSizeChange and onPositionChange in Owner. ( I5c718 )
Added Constraints2, a copy of Constraints that does only supports Int connstraints values rather than IntPx. IntPx will be removed and all integer constraints will be assumed to be pixels like Android.
- Added IntSize as well, which will eventually replace IntPxSize. ( I4b43a )
Made Alignment instantiable with arbitrary values. Added 1D Alignments. ( Ia0c05 )
alignToSiblings now accepts a Measured instead of Placeable. ( I5788d )
( I45f09 , b/152842521 )
- Renamed ScaleFit to ContentScale
- Moved ContentScale from ui-graphics to ui-core module to live in the same module as the Alignment API.
- Renamed FillMaxDimension to Crop
- Renamed FillMinDimension to Fit
- Renamed Fit to Inside to better match
- ImageView.ScaleType equivalents
- Added documentation indicating that the combination of Crop and Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_CROP and Fit used with Alignment.Center achieves the same result as ImageView.ScaleType.FIT_CENTER Inside used with Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_INSIDE
Rtl support for draw modifiers. ( I0aaf9 )
Released API for inflating Android Views from XML. See ViewInCompose demo for more details. ( I42916 )
Improve DrawModifier API:
- Made the receiver scope for draw() ContentDrawScope
- Removed all parameters on draw()
- DrawScope has same interface as former CanvasScope
- ContentDrawScope has drawContent() method ( Ibaced , b/152919067 )
Added positionInParent and boundsInParent for LayoutCoordinates. ( Icacdd , b/152735784 )
DrawLayerModifier and drawLayer() now default clipToBounds and clipToOutline to false. ( I0eb8b , b/152810850 )
Renamed LayoutResult to MeasureResult. ( Id8c68 )
Added LayoutModifier2, a new API for defining layout modifiers; deprecated LayoutModifier ( If32ac )
Replaced Modifier plus operator with factory extension functions ( I225e4 )
Added translationX/Y properties to support offseting the display list of drawing commands for a given Layer. This is useful to move content in response to animations or touch events. ( I8641c )
Added pivotX, pivotY parameters to Layer APIs to support rotation and scaling around a particular point on a layer ( Icf7c3 )
Add OnPositionedModifier and OnChildPositionedModifier to replace OnPositioned and OnChildPositioned composable functions. ( I2ec8f )
Added LayerModifier, a modifier that allows adding a RenderNode for a Layout. It allows setting clipping, opacity, rotation, scaling, and shadows. This will replace RepaintBoundary. ( I7100d , b/150774014 )
Made the layout direction be propagated from parent layout node to children. Added layout direction modifier. ( I3d955 )
Stack component supports right-to-left directionality ( Ic9e00 )
Initial support for Rtl in Compose layout ( Ia5519 )
Density and DensityScope were merged into one interface. Instead of ambientDensity() you can now use DensityAmbient.current. Instead of withDensity(density) just with(density) ( I11cb1 )
Changed LayoutCoordinates to make providedAlignmentLines a Set instead of a Map and have LayoutCoordinates implement the get() operator instead for retrieving a value. This makes it easier for modifiers to modify one or more value of the set without creating a new collection for each modifier. ( I0245a )
LayoutCoordinates no longer has a position property. The position property does not make sense when considering LayoutModifiers, rotation, or scaling. Instead, developers should use parentCoordinates and childToLocal() to calculate the transform from one LayoutCoordinate to another.
LayoutCoordinates uses IntPxSize for the size property instead of PxSize. Layouts use integer pixel sizes for layouts, so all layout sizes should use integers and not floating point values. ( I9367b )
Improvements to the API surface of Constraints ( I0fd15 )
Created CanvasScope API that wraps a Canvas object to expose a stateless, declarative drawing API surface. Transformations are contained within their own receiver scope and sizing information is also scoped to corresponding inset bounds. It does not require a consumer to maintain its own Paint state object for configuring drawing operations.
- Added CanvasScopeSample as well as updated the demo app to include a declarative graphics demo ( Ifd86d )
Removed unused MaskFilter API as it has limited usage and is not optimized for hardware acceleration in most use cases ( I54f76 )
RectangleShape moved from androidx.ui.foundation.shape.* to androidx.ui.graphics.* ( Ia74d5 , b/154507984 )
Replaced all nullable Color uses in API with non-nullable and use Color.Unset instead of null ( Iabaa7 )
Introduce additional optional rect parameter to ImagePainter to support drawing a subsection of underlying ImageAsset ( I0ea9e )
Added Unset Color to represent an unset value without boxing Colors. ( If901a )
Added Canvas.rotate and Canvas.scale extension methods to consume optional pivot coordinates for transformations. These default to the top left corner of the current canvas translation.
Also moved Canvas.rotateRad to be an extension method for consistency ( Ibaca6 )
Created PixelMap API to support querying pixel information from an ImageAsset. ( I69ad6 )
Renamed toFrameworkRect/toFrameworkRectF to toAndroidRect/toAndroidRectF to match naming convention for object conversions between compose and the Android framework APIs they are built on top of. Also updated docs on these APIs ( I86337 )
Added VectorPainter API to replace existing subcomposition API for vector graphics. Result of subcomposition is a VectorPainter object instead of a DrawModifier. Deprecated previous DrawVector composables in favor of VectorPainter.
Renamed Image(Painter) API to PaintBox(Painter) Created Vector composable that behaves like the Image composable except with a VectorAsset instead of an ImageAsset ( I9af9a , b/149030271 )
Renamed Image to ImageAsset to better differentiate the difference between the Image data and the upcoming Image composable used to participate in layout and draw content. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework ( Id5bbd )
Added TextDirection.Content ( I48f36 )
Added TextDecoration.plus operator ( I0ad1a )
Force
is removed from TextDirectionAlgorithm enum values ( Icc944 )TextDirectionAlgorithm is renamed as TextDirection ( I75ce8 )
Implements LongPressAndDrag for TextField Selection. ( I17919 )
Added AnnotatedString.getStringAnnotations that returns all annotations within the range. ( I1fa00 )
Changed the package name for Locale and LocaleList from androidx.ui.text to androidx.ui.intl ( I8132c )
TextField's cursor has a blinking animation ( Id10a7 )
API change: AnnotatedString(builder: Builder) is renamed to annotatedString(builder: Builder). ( Ia6377 )
API change: AnnotatedString.Item is renamed to AnnotatedString.Range. ( I2d44d )
Rename AnnotatedString.Builder.addAnnotationString to addStringAnnotation. ( I5059e )
Now it is possible to hide/show software keyboard by using SoftwareKeyboardController which is delivered by onTextInputStarted callback ( I8dc44 , b/151860051 )
Added plus operator for (Text/Paragraph/Span)Style which delegates to merge() function. ( Ia1add )
FontWeight.lerp does not snap anymore. It is still a data class. ( I521c2 )
FontWeight constructor is now public, it is not data class anymore. ( Id6b1f )
Add getLineStart, getLineEnd, getEllipsisOffset and getEllipsisCount to TextLayoutResult ( Ibc801 )
ui-text module is renamed as ui-text-core ( I57dec )
Removed unused Size class as there is a duplicate Size class in the ui-geometry module that is being consumed. ( I1b602 )
Added AdapterList, a scrolling list component that only composes and lays out the visible items. Currently known issues include that it is vertical-only and does not fully handle all cases of changes to its children. ( Ib351b )
Add paddings, border, shape and background param to Box ( I05027 , b/148147281 )
رفع اشکالات
- onFocusChange callback in text fields renamed to onFocusChanged ( Ida4a1 )
- VerticalScroller and HoriziontalScroller have been deprecated. Use ScrollableColumn and ScrollableRow for build-in experience with Column/Row behaviour and parameters, or Modifier.verticalScroll and Modifier.horizontalScroll on your own element. Similarly, ScrollerPosition has been deprecated in favor of ScrollState' ( I400ce , b/157225838 , b/149460415 , b/154105299 )
-
runOnIdleCompose
renamed torunOnIdle
( I83607 ) - Several testing APIs were renamed to be more intuitive. All findXYZ APIs were renamed to onNodeXYZ. All doXYZ APIs were renamed to performXYZ. ( I7f164 )
- Compose UI can now be composed inside ViewGroups without requiring a new composition. See ViewInteropDemo for an example. ( I9ab0b , b/160455080 )
- Added sortWith and removeRange to MutableVector ( Icccf7 )
- Implement Drag Selection Handles to change selection for TextField. ( I27032 )
- Removed Shader inline class that wrapped the NativeShader expect class Renamed NativeShader to Shader. The wrapped Shader inline class did not add anything valuable to the API surface and was an inline class, so use the NativeShader class directly. ( I25e4d )
Refactored PainterModifier to no longer provide scaling based on the given constraints and ContentScale parameter. Implementations of Painter are to scale their drawing content themselves based on the given size of the DrawScope they are drawing into.
Fixed issue where VectorPainter's cache bitmap was sized to its default size instead of the given size to draw into.
Updated ImagePainter to scale its content instead of relying on PainterModifier to do so on its behalf. ( I6ba90 )
add top-level withFrameNanos function for animation timing ( Ie34c5 )
@Untracked annotation has been deprecated. Replace with @ComposableContract(tracked=false) ( Id211e )
androidx.ui.foundation.TextFieldValue and androidx.ui.input.EditorValue is deprecated. TextField, FilledTextField and CoreTextField composables that uses that type is also deprecated. Please use androidx.ui.input.TextFieldValue instead ( I4066d , b/155211005 )
Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. This is now fixed. ( I1f48b , b/157998762 )
Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. This is now fixed. ( Iab398 , b/157998762 )
Refactored Radius class to be an inline class. Removed companion creation methods in favor of function constructor with default parameter to have the radius along the y-axis match that of the mandatory x-axis radius parameter.
Updated DrawScope.drawRoundRect to consume a single Radius parameter instead of 2 separate float values for the radius along the x and y axis ( I46d1b )
The Recompose composable is no longer a useful abstraction. Most recomposition should happen as a result of MutableState assignments. For anything beyond that, it is recommended that you use the
invalidate
function to trigger a recomposition of the current scope. ( Ifc992 )Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Iede0b )
Changes the code generation strategy of Compose's compiler. Prior to the change, the compose compiler would transform calls to composable functions. With this change, we now transform the body of a composable function and leave the callsite unaltered (mostly).
This means that most of the logic communicating with the compose runtime happens at the start of the function body, instead of at the callsite.
This should be a source-compatible change for all usage of compose. Most users of compose should not have to update any code as a result of this change.
In order to support this work, the JVM signature of all composable functions has changed. A Composable function accepting a single parameter is transformed into a function accepting 3 parameters, the additional parameters are the Composer, a 'key' integer. a bitmask integer used to propagate metadata through calls.
Compose now also transforms default arguments to a composable function. It does this without introducing an additional synthetic default overload of the function itself, so this change will result in fewer functions being defined.
Known intentional behavioral changes resulting from this:
- Some calls will skip where they wouldn't have previously
- Composable expressions in default argument expressions are now correctly subscribed to and handled
This work included some optimizations: 1. The result of comparisons of parameters are propagated through the call graph to other composable functions. This will result in fewer comparisons at runtime, reduces the slot table size, as well as more skipping of composable functions that were previously not skipped 2. Paremeters which are determined to be “static” at compile time are no longer compared or stored in the runtime. This reduces the number of comparisons and reduces slot table size. 3. Control flow structure of the body of functions is used to minimize the number of groups that are generated. This reduces slot table size and results in less work for the runtime 4. Unused dispatch and receiver parameters to functions are not included in determining skippability of the function if they are not used inside of the body of the function.
Most breaking changes were for APIs that the compiler targets directly, and typical use of compose will not be affected: 1. Composer::startExpr was removed 2. Composer::endExpr was removed 3. Composer::call was deprecated 4. The non-varargs overloads of
key
have been removed. Use thevararg
version going forward. 5. The Pivotal annotation was deprecated. Usekey
as a replacement. 6. ScopeUpdateScope::updateScope was changed to expect a Function3 instead of Function1 7. restartableFunction and restartableFunctionN were updated to include additional compile time parameters ( I60756 , b/143464846 )Removed deprecated LayoutAlign modifiers. ( I10877 )
Removed RepaintBoundary in favor of DrawLayerModifier ( I00aa4 )
Button, FloatingActionButton and Clickable now have a separate
enabled
param. Some of the params on Button were renamed or reordered. ( I54b5a )Replaced ButtonStyle with distinct functions and removed text (string) overload. See updated samples for usage information. ( If63ab , b/146478620 , b/146482131 )
Breaking changes to the ambients API. See log and
Ambient<T>
documentation for details ( I4c7ee , b/143769776 )Changed the behavior of default TextDirection to be determined by LayoutDirection. ie If LayoutDirection is RTL, default TextDirection will be RTL. Previously it was TextDirection.ContentOrLtr/Rtl ( I4e803 )
Bug fix: When font weight and font style are nested on an AnnotatedString, text is not rendered correctly. ( I77a9d )
Adds commonly used parameters to Text(). If you are currently creating a local text style to pass a small number of these parameters, such as Text(style = TextStyle(textAlign = TextAlign.Center)), you can now just provide the parameters directly: Text(textAlign = TextAlign.Center) ( I82768 )
ui-android-text module is renamed as ui-text-android ( I68cbe )