Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(सभी Compose पैकेज के लिए, एपीआई का संदर्भ देने वाले दस्तावेज़ देखें)
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 09 सितंबर, 2026 | 1.12.1 | - | - | 1.13.0-alpha03 |
संरचना
Compose, androidx में मौजूद सात Maven ग्रुप आईडी का कॉम्बिनेशन है. हर ग्रुप में, फ़ंक्शन का एक सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक दिए गए हैं.
| समूह | ब्यौरा |
|---|---|
| compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
| compose.compiler | Kotlin कंपाइलर प्लगिन की मदद से, @Composable फ़ंक्शन को बदलें और ऑप्टिमाइज़ेशन चालू करें. |
| compose.foundation | इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं. |
| compose.material | मटीरियल डिज़ाइन कॉम्पोनेंट का इस्तेमाल करके, Jetpack Compose यूज़र इंटरफ़ेस बनाएं. यह Compose का हायर लेवल एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं. |
| compose.material3 | Material Design 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. ये कॉम्पोनेंट, Material Design का अगला वर्शन हैं. Material 3 में अपडेट की गई थीमिंग और कॉम्पोनेंट शामिल हैं. साथ ही, इसमें Material You की उपयोगकर्ता की गतिविधि और दिलचस्पी के हिसाब से उपलब्ध सुविधाएं भी हैं. जैसे, डाइनैमिक कलर. इसे Android 12 की नई विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है. |
| compose.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, Compose Compiler Plugin के लिए मुख्य रनटाइम, ताकि उसे टारगेट किया जा सके. |
| compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, Compose यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.13
वर्शन 1.13.0-alpha03
09 सितंबर, 2026
androidx.compose.ui:ui-*:1.13.0-alpha03 रिलीज़ हो गया है. वर्शन 1.13.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Material 2 के टेक्स्ट फ़ील्ड ओवरलोड,
value, onValueChangeपैरामीटर स्वीकार नहीं करते. कृपया उस ओवरलोड पर माइग्रेट करें जो अपनी स्थिति को ऊपर ले जाने के लिएTextFieldStateका इस्तेमाल करता है. (I6b841, b/556234973) - पहला कंपोज़ रूट बनाने से पहले,
WindowInsetsRulersको ग्लोबल लेवल पर बंद करने के लिए, एक सामान्य एपीआई जोड़ें. सिर्फ़ Android के लिए उपलब्धComposeView.disableWindowInsetsRulers()को बंद करके, सामान्यWindowInsetsRulers.disable()(Iadc8f) को चालू करें - यह Compose Foundation में
PolygonShape.transformedऔरPolygonShape.scaledToFitएक्सटेंशन फ़ंक्शन जोड़ता है. इनका इस्तेमाल पॉलीगॉन शेप को बदलने और फ़िट करने के लिए किया जाता है. (I3f327) - बदलाव करने वाले व्यक्ति ने
LineHeight.Trim.isTrimLastLineBottom()फ़ंक्शन का नाम बदलकरLineHeight.Trim.trimsLastLineBottomऔरLineHeight.Trim.isTrimFirstLineTopका नाम बदलकरLineHeight.Trim.trimsFirstLineTopकर दिया है (I02211) ComposeUiTestConfig.platformमेंPlatformTestConfigके तहतboundsAssertionToleranceजोड़ा गया है. इससे टेस्ट, एनवायरमेंट/नियम के लेवल पर डिफ़ॉल्ट बाउंड्री असर्शन टॉलरेंस को कॉन्फ़िगर कर सकते हैं. (I7819d, b/545673912)BasicTextFieldvalue, onValueChangeपैरामीटर स्वीकार करने वाले ओवरलोड अब काम नहीं करते. कृपयाBasicTextFieldओवरलोड पर माइग्रेट करें, जो अपनी स्थिति को ऊपर ले जाने के लिएTextFieldStateका इस्तेमाल करता है. (I636bf, b/552879150)BasicTextField(value, onValueChange)के साथ-साथ,VisualTransformationके इस्तेमाल पर भी रोक लगा दी गई है. ऐसा इसलिए, क्योंकि यह सिर्फ़TextFieldके इस फ़्लेवर के ज़रिए दिखता है. मौजूदा ट्रांसफ़ॉर्मेशन कोOutputTransformationपर माइग्रेट किया जाना चाहिए. (I636bf, b/552879150)- हर लाइन के लिए लाइन की ऊंचाई का हिसाब अलग-अलग लगाने के लिए,
LineHeightStyle.Mode.PerLineजोड़ा गया है. इससे एक ही पैराग्राफ़ में अलग-अलग फ़ॉन्ट साइज़ इस्तेमाल किए जा सकते हैं. साथ ही, टेक्स्ट एक-दूसरे पर ओवरलैप नहीं होता. (I41738) LazyListStateके ज़रिएLazyLayoutCacheWindowऔरLazyListPrefetchStrategyउपलब्ध कराने की सुविधा बंद कर दी गई है. इसके बजाय, कंपोज़ेबल फ़ंक्शन कोLazyLayoutCacheWindowउपलब्ध कराने की सुविधा दी गई है. (I71f19)- प्रोग्रेसिव ब्लर (जैसे, ग्रेडिएंट और कस्टम शेडर) के लिए,
Modifier.blur { ... }API जोड़ा गया (Ie6595, b/481685669) - टच, फ़ोकस, और सुलभता से जुड़े इंटरैक्शन को ब्लॉक करने के लिए, Modifier.
interactionBarrier() जोड़ा गया. (I7c1b7, b/347038246) - Android पर डेवलपर को सिस्टम-वाइड क्रॉस-विंडो ब्लर की स्थिति के बारे में क्वेरी करने और उसे मॉनिटर करने की अनुमति देने के लिए,
WindowInfoपरisCrossWindowBlurEnabledएक्सटेंशन प्रॉपर्टी जोड़ी गई. (If38e2, b/538405295) LocalWindow CompositionLocalको जोड़ा गया है, ताकि मौजूदाandroid.view.Windowऑब्जेक्ट को वापस पाया जा सके. इससे कंपोज़ेबल के अंदर से विंडो-लेवल के एपीआई को कंट्रोल करना आसान हो जाता है. (I4d4ff, b/221889664)
गड़बड़ियां ठीक की गईं
- यह सुविधा
isMinimalistLocalsEnabledडिफ़ॉल्ट रूप से चालू होती है. (Ibb4eb, b/523295932) - लाइन की ऊंचाई को ऑप्टिमाइज़ करने की सुविधा डिफ़ॉल्ट रूप से चालू की गई है. इससे कुछ टेक्स्ट मेट्रिक में कुछ पिक्सल का अंतर आ सकता है. जैसे, ऊंचाई या चुनने का पाथ (I5575a)
compileSdkके लिए, Compose लाइब्रेरी को 37.1 पर अपडेट किया गया है. इसके लिए, Compose का इस्तेमाल करने वाले सभी ऐप्लिकेशन और लाइब्रेरी के लिए,compileSdkको ट्रांज़िटिव तरीके से अपडेट करना होगा. (I05b0f)WindowInsetsRulersआईएमई इनसेट को, अनुमानित बैक जेस्चर के दौरान ऐनिमेशन के तौर पर मार्क न किए जाने की समस्या को ठीक किया गया है. साथ ही, टेक्स्ट फ़ील्ड के बीच फ़ोकस स्विच करने परimePaddingके अपडेट न होने की समस्या को ठीक किया गया है. (Id4562, b/537386261, b/539686000)- उस समस्या को ठीक किया गया है जिसमें स्टैंडर्ड Android
ViewGroupमेंComposeViewहोस्ट किए जाने पर, ट्रैकपैड पर पिंच करने के जेस्चर को अनदेखा कर दिया जाता था. (I80f79)
बाहरी योगदान
- एक ही फ़्रेम में
ComposeViewको अलग करने और फिर से जोड़ने पर, गतिविधि के लीक होने की समस्या को ठीक किया गया. उदाहरण के लिए,removeViewऔरaddViewका इस्तेमाल करके क्रम बदलने पर. (Ib5129, b/547675867)
वर्शन 1.13.0-alpha02
26 अगस्त, 2026
androidx.compose.ui:ui-*:1.13.0-alpha02 रिलीज़ हो गया है. वर्शन 1.13.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Modifier.background के लिए नई सिमैंटिक्स प्रॉपर्टी
BackgroundColorजोड़ी गई (I7eec3, b/518049030) - अब मौजूदा प्रिमिटिव ऐरे से
Verticesबनाए जा सकते हैं. (Ifaba8, b/496412761) VectorPainterअब एक से ज़्यादा कंपोज़ेबल में एक हीImageVectorको रेंडर करते समय, इंटरनल ग्राफ़िक रिसोर्स (ImageBitmap) शेयर करेगा. इससे, एक जैसे कई टेक्सचर अपलोड करने की ज़रूरत नहीं पड़ती और मेमोरी का इस्तेमाल भी कम होता है. साथ ही, इससे उन स्थितियों में परफ़ॉर्मेंस बेहतर होती है जहां एक ही आइकॉन को बार-बार इस्तेमाल किया जाता है. जैसे, सूचियों में. इस ऑप्टिमाइज़ेशन कोComposeUiFlags.isVectorDrawCacheSharingEnabledके ज़रिए बंद किया जा सकता है. (I35639, b/331283180)requestFocusForChildInLocalBoundsहेल्पर जोड़ें (Ib1a48)
वर्शन 1.13.0-alpha01
12 अगस्त, 2026
androidx.compose.ui:ui-*:1.13.0-alpha01 रिलीज़ हो गया है. वर्शन 1.13.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
isVelocityTrackerMinSampleSizeFixEnabledफ़ीचर फ़्लैग जोड़ा गया (Ic9b51, b/533444810, b/533775739, b/523705159)- पुरानी हो चुकी
ExperimentalVelocityTrackerApiएनोटेशन क्लास को हटा दिया गया है. (I6f9c6, b/483449576) - Remove isClearNestedScrollCoroutineScopeFixEnabled flag (Iedfd7, b/506963276)
TextFieldStateअब टेक्स्ट स्टाइल की जानकारी को सेव और वापस लाता है.AnnotatedString.Annotation.Saverअब सार्वजनिक तौर पर उपलब्ध है, ताकिAnnotatedString.Annotationऑब्जेक्ट को सेव और वापस लाया जा सके. (I8b533, b/135556699)ComposeTestConfigमेंTestFailurePolicyऔरTestFailureHandlerको जोड़ा गया है. इससे Compose यूज़र इंटरफ़ेस (यूआई) टेस्ट में, कस्टम फ़ेलियर इवेंट हैंडलर और फ़ेलियर आर्टफ़ैक्ट कॉन्टेक्स्ट का इस्तेमाल किया जा सकेगा. (Ib1a85, b/414802953, b/291106656, b/430644575)SemanticsProperties.alpha जोड़ा गया है. इससे लेआउट नोड की हल की गई कंपोज़िट पैरंट-चाइल्ड ऐल्फ़ा वैल्यू को टेस्टिंग के लिए दिखाया जा सकता है. (Ifddb6, b/524035059)ui-test-junit4v2 पैकेज में,createComposeRule,createAndroidComposeRule, औरcreateEmptyComposeRuleओवरलोड को बंद कर दिया गया है. ये अलग-अलग पैरामीटर लेते हैं.ComposeUiTestConfigको स्वीकार करने वाले ओवरलोड या पैरामीटर रहित ओवरलोड का इस्तेमाल करें. ये डिफ़ॉल्टComposeUiTestConfigका इस्तेमाल करते हैं. ध्यान दें कि डिफ़ॉल्टComposeUiTestConfig, हर टेस्ट की शुरुआत में इनपुट मोड कोInputMode.Touchपर सेट करता है. इस वजह से, कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट फ़ेल हो सकते हैं. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए,ComposeUiTestConfig(inputMode = InputMode.Keyboard)को साफ़ तौर पर पास करें. साथ ही, इनपुट मोड के लिए मैन्युअल सेटअप का कोई भी लॉजिक हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए,AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseसेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि उनके कॉन्फ़िगरेशन में बदलाव करके, उन्हें सीधे तौर पर ठीक करें. (Idfb86, b/504195741)createComposeRuleऔरcreateAndroidComposeRuleको बिना किसी तर्क के कॉल करने पर (जैसे,createComposeRule()याcreateAndroidComposeRule<MyActivity>()), अब डिफ़ॉल्टComposeUiTestConfigका इस्तेमाल किया जाता है.इससे हर टेस्ट की शुरुआत में, इनपुट मोड कोInputMode.Touchपर सेट किया जाता है. इससे यह पक्का होता है कि डिवाइस क्लीन स्टेट में है और इनपुट मोड में किए गए पिछले बदलाव, टेस्ट के दौरान लीक नहीं होते. हालांकि, टच मोड को डिफ़ॉल्ट मोड के तौर पर सेट करने पर, हो सकता है कि कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट काम न करें. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए,ComposeUiTestConfig(inputMode = InputMode.Keyboard)को साफ़ तौर पर पास करें और इनपुट मोड के लिए, मैन्युअल सेटअप के लॉजिक को हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए,AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseसेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि आप सीधे तौर पर टेस्ट के कॉन्फ़िगरेशन में बदलाव करके, उन्हें ठीक करें. (Idc4dd, b/267253920, b/504195741)- Compose में, ओवरराइड किए जा सकने वाले खाली बेस मेथड को
@EmptySuperके साथ एनोटेट किया गया है. इससे यह पता चलता है कि ओवरराइड करने वाले इंप्लिमेंटेशन को सुपर को लागू नहीं करना चाहिए. (Id407b) ExposedDropdownMenuअब सदस्य के बजाय,ExposedDropdownMenuBoxScopeपर एक्सटेंशन फ़ंक्शन है. आपको नए इंपोर्ट के साथ अपना कोड अपडेट करना पड़ सकता है. (Ie8a65, b/356452026)DialogPropertiesमेंblurBehindRadius,backgroundBlurRadius,scrimAlpha, औरwindowShapeप्रॉपर्टी जोड़ी गई हैं. साथ ही,PopupPropertiesमेंblurBehindRadiusऔरscrimAlphaप्रॉपर्टी जोड़ी गई हैं. डेवलपर अब सीधे तौर पर डायलॉग और पॉप-अप पर, बैकग्राउंड को धुंधला करने, विंडो को धुंधला करने, और स्क्रिम की ओपैसिटी को कॉन्फ़िगर कर सकते हैं.windowShapeको सेट करने से, डायलॉग विंडो के बैकग्राउंड में मौजूद धुंधलेपन को गोल कोनों पर काटा जा सकता है. (I5d437)- हटाया गया सुविधा फ़्लैग - अब कंपोज़ बटन, सुलभता फ़ोकस को सही तरीके से बनाए रखते हैं. साथ ही, टच करके एक्सप्लोर करने की सुविधा चालू होने पर, ये बटन फ़्लिकर नहीं करते. ऐसा इसलिए, क्योंकि होवर इवेंट को सही तरीके से हैंडल किया गया है. (Ib1c80)
- अन्य सेटिंग कलेक्शन को मर्ज करने या सेटिंग को इनलाइन तौर पर बदलने के लिए,
FontVariation.Settingsमें मर्ज ओवरलोड जोड़े गए हैं. (I6340c) - फ़ॉन्ट इंटरफ़ेस पर
variationSettingsको दिखाया गया है. यह डिफ़ॉल्ट रूप से नएFontVariation.Emptyपर सेट होता है. ऐरे कॉपी के लिए मेमोरी एलोकेशन से बचने के लिए,FontVariation.Settingsvararg कंस्ट्रक्टर कोasList()का इस्तेमाल करने के लिए ऑप्टिमाइज़ किया गया है. (I9c22f) - रद्द किए गए
CoroutineScopeको सुरक्षित तरीके से वापस करने के लिए,NestedScrollDispatcher.coroutineScopeप्रॉपर्टी को अपडेट किया गया है. ऐसा तब किया जाता है, जब किसी ऐसेट से अटैच न हो या उसे अलग कर दिया गया हो. (I9b112, b/535290281) runComposeUiTest,runAndroidComposeUiTest, औरAndroidComposeUiTestEnvironmentके उन ओवरलोड को बंद कर दिया गया है जो अलग-अलगeffectContext,runTestContext, औरtestTimeoutपैरामीटर लेते हैं.ComposeUiTestConfigको स्वीकार करने वाले ओवरलोड या पैरामीटर रहित ओवरलोड का इस्तेमाल करें. ये डिफ़ॉल्टComposeUiTestConfigका इस्तेमाल करते हैं. ध्यान दें कि डिफ़ॉल्टComposeUiTestConfig, हर टेस्ट की शुरुआत में इनपुट मोड कोInputMode.Touchपर सेट करता है. इससे, कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट फ़ेल हो सकते हैं. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए,ComposeUiTestConfig(inputMode = InputMode.Keyboard)को साफ़ तौर पर पास करें और इनपुट मोड के लिए, मैन्युअल सेटअप के लॉजिक को हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए,AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseसेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि उनके कॉन्फ़िगरेशन में बदलाव करके, उन्हें सीधे तौर पर ठीक करें. (Ia6d55, b/504195741)- सिर्फ़ ट्रेलिंग लैम्डा के साथ
runComposeUiTest,runAndroidComposeUiTest, औरAndroidComposeUiTestEnvironmentको कॉल करने पर, अब डिफ़ॉल्टComposeUiTestConfigका इस्तेमाल किया जाता है. इससे हर टेस्ट की शुरुआत में, शुरुआती इनपुट मोड कोInputMode.Touchपर सेट किया जाता है. इससे यह पक्का होता है कि डिवाइस सही स्थिति में है और इनपुट मोड में किए गए पिछले बदलाव, टेस्ट के दौरान लीक नहीं होते. हालांकि, इस नए डिफ़ॉल्ट टच मोड की वजह से, कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट फ़ेल हो सकते हैं. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए,ComposeUiTestConfig(inputMode = InputMode.Keyboard)को साफ़ तौर पर पास करें और इनपुट मोड के लिए, मैन्युअल सेटअप के लॉजिक को हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए,AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseसेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि उनके कॉन्फ़िगरेशन में बदलाव करके, उन्हें सीधे तौर पर ठीक करें. (I8c85d, b/504195741) SemanticsNodeInteraction.isDisplayed() औरisNotDisplayed() में @CheckResultजोड़ा गया है, ताकि यह पक्का किया जा सके कि उनकी रिटर्न वैल्यू की पुष्टि हो गई है. इससे डेवलपर के पुष्टि करने वाले एपीआई के बजाय इनका इस्तेमाल करने पर, टेस्ट फ़ेल होने की सूचना नहीं मिलती. (I1b447, b/508178494)- इस फ़्लैग
AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabledकी वजह से,ViewGroupमें मौजूदAndroidViewसिर्फ़ तब इंस्टैंटिएट होंगे, जबAndroidViewको उनComposeViewकी परफ़ॉर्मेंस को बेहतर बनाने के लिए जोड़ा जाएगा जिनमेंAndroidViewनहीं हैं. फ़्लैग के बंद होने पर,ViewGroupको इंस्टैंटिएट किया जाता है और जबComposeViewको विंडो से अटैच किया जाता है, तब इसे अटैच किया जाता है. (I306a3, b/524283041) - डिस्पैचर के पैरंट को-रूटीन स्कोप को ऐक्सेस करने के लिए,
NestedScrollDispatcherमेंcoroutineScopeOrNull()नाम का एक वैकल्पिक एपीआई जोड़ा गया है. (I18c0f) clearCallbacksकोrunAndClearCallbacksमें बदलें, ताकि यह पक्का किया जा सके कि डेटा को साफ़ करने वाले ऐक्शन हमेशा लागू हों. (If4720, b/526700075)ComposeTestConfigका नाम बदलकरComposeUiTestConfigकर दिया गया है. साथ ही, इसे v2 पैकेज से पैरंटandroidx.compose.ui.testपैकेज में ट्रांसफ़र कर दिया गया है. (I1d2a1, b/504195741)- रीड्रॉ पास का इंतज़ार करते समय, कस्टम टाइमआउट कॉन्फ़िगर करने की अनुमति देने के लिए,
SemanticsNodeInteraction.captureToImage() मेंtimeoutMillisपैरामीटर जोड़ा गया है. इसकी डिफ़ॉल्ट वैल्यू 2000 मि॰से॰ होती है. (Ib7d62, b/249501063) - यह कुकी, पॉइंटर के इनडायरेक्ट इनपुट में हुए बदलावों के बारे में पुरानी जानकारी जोड़ती है (Ie62d2, b/526961645)
- टेक्स्ट फ़ील्ड में हिंट टेक्स्ट दिखाने के लिए, नई
hintTextसिमैंटिक प्रॉपर्टी जोड़ी गई है. इससेAccessibilityNodeInfo.hintTextपर मैप करके, ऐक्सेसिबिलिटी की सुविधा को बेहतर बनाया जा सकता है. (Ib65da, b/448376876) LocalOwnerसे डाइनैमिक तरीके से औरLocalAndroidComposeViewसे मांग परCompositionLocalरिज़ॉल्यूशन को ऑप्टिमाइज़ किया जाता है. इसेComposeUiFlags.isMinimalistLocalsEnabledका इस्तेमाल करके टॉगल किया जा सकता है. (I2bf6d)androidx.benchmarkका स्कोरminSdkअब 24 है. (Ic2a85)- हमने
AndroidComposeUiFlagsमें एक एक्सपेरिमेंटल फ़्लैगisPropagateHideFromAccessibilityToMergingChildrenEnabledजोड़ा है. इससेhideFromAccessibilityको बच्चों के खातों में मर्ज करने की प्रोसेस को कंट्रोल किया जा सकेगा. (Ie41ff, b/483506400) - एक्सपेरिमेंटल से स्टेबल वर्शन में प्रमोट किए गए
ComposeUiTestऔर इससे जुड़े टेस्टिंग एपीआई (इसमेंComposeTestRuleऔरwaitUntilवैरिएंट शामिल हैं). (Iaec77, b/471148519, b/485124363) - मर्ज किए गए ट्रैवर्सल ग्रुप में,
TalkBackनेविगेशन के क्रम से जुड़ी समस्या ठीक की गई. अगर ज़रूरी हो, तोAndroidComposeUiFlags.isTraversalGroupSortingEnabledको बंद करके इस बदलाव को पहले जैसा किया जा सकता है. (I5ae09, b/285043826) - एक्सपेरिमेंट के तौर पर उपलब्ध, पुराना
IndirectPointerEventहेल्पर फ़ंक्शन हटाता है. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - एक्सपेरिमेंट के तौर पर उपलब्ध @AnimationToolingApi की जगह @RestrictTo API का इस्तेमाल करें. यह एपीआई, ट्रैकिंग की ज़्यादा गारंटी देता है. (Ia4fd1, b/524317805)
- किसी दिए गए नोड के सबट्री में मौजूद सभी सिमैंटिक्स नोड ढूंढने के लिए,
onDescendants()सिलेक्टर जोड़ा गया. (Id6b9b, b/444588117) waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExists, औरwaitUntilDoesNotExistहेल्पर एपीआई अब काम नहीं करते. येuseUnmergedTreeको स्वीकार नहीं करते. नए ओवरलोड जोड़े गए हैं, जोuseUnmergedTreeको स्वीकार करते हैं, ताकि अनमर्ज किए गए सिमैंटिक्स ट्री में नोड के इंतज़ार को सपोर्ट किया जा सके. (If675f, b/268432145)- हमने
SemanticsNodeInteractionसाइज़ और पोज़िशन के दावे (assertWidthIsEqualTo,assertHeightIsEqualTo,assertTouchWidthIsEqualTo,assertTouchHeightIsEqualTo,assertPositionInRootIsEqualTo,assertTopPositionInRootIsEqualTo,assertLeftPositionInRootIsEqualTo) मेंtoleranceपैरामीटर जोड़ा है. इससे डेवलपर, तुलना करने के थ्रेशोल्ड को कॉन्फ़िगर कर पाएंगे. साथ ही, अलग-अलग स्क्रीन डेंसिटी पर टेस्ट की मज़बूती को बेहतर बना पाएंगे. (I3a477, b/202752461) - Compose टेस्टिंग अब मुख्य थ्रेड के साथ सिंक करने की सुविधा के साथ काम करती है. अब सिंक्रनाइज़ेशन एपीआई (जैसे कि
waitForIdle() औरrunOnIdle()) को सुरक्षित तरीके से लागू किया जा सकता है. साथ ही, यूज़र इंटरफ़ेस (यूआई)/मुख्य थ्रेड के कॉलबैक में सीधे तौर पर कंपोज़ असर्शन या कार्रवाइयां की जा सकती हैं. (I0247a, b/498478569) - पैरामीटर मैनेजमेंट को आसान बनाने और स्केलेबिलिटी को बेहतर बनाने के लिए, Compose टेस्ट एपीआई के लिए नया कॉन्फ़िगरेशन मॉडल (
ComposeTestConfig) पेश किया गया.ComposeTestConfigके ज़रिए सीधे तौर पर इनपुट मोड (टच/कीबोर्ड) को कॉन्फ़िगर करने की सुविधा जोड़ी गई है. इससे, अपने-आप सेटअप होने और रीसेट होने की सुविधा मिलती है. इससे स्टेट लीक होने की वजह से, टेस्ट के फ़ेल होने की समस्या को रोका जा सकता है.run*ComposeUiTestऔरcreate*ComposeRuleके लिए नए ओवरलोड जोड़े गए हैं. येComposeTestConfigऑब्जेक्ट को स्वीकार करते हैं. (Ia3da9, b/267253920, b/504195741) - मीडिया क्वेरी प्रॉपर्टी (
Posture,PointerPrecisionवगैरह) के साथPreviewParameterProviderका इस्तेमाल करने पर, Compose Preview में क्रैश होने की समस्या ठीक की गई है. इसके लिए, उनके बुनियादी प्रज़ेंटेशन कोStringसेIntमें बदल दिया गया है. (Ic8f92, b/489939558) hasTextExactlyऔरassertTextEqualsमेंincludeInputTextपैरामीटर जोड़ा गया है, ताकि विज़ुअल टेक्स्ट के साथ-साथ रॉ इनपुट टेक्स्ट को भी सटीक तरीके से मैच किया जा सके. (Iee329, b/519026043)
गड़बड़ियां ठीक की गईं
SaveableStateRegistry.performSave()को ऑप्टिमाइज़ किया गया है, ताकिHashMapको रोका जा सके. यह कुकी,ScatterMapका इस्तेमाल करती है. (I7d510)- टेक्स्ट कंपोज़ेबल के लिए, AccessibilityNodeInfo.ExtraRenderingInfo में टेक्स्ट के रंग भरे गए हैं. (I11c94, b/518049030)
- लेआउट नोड को अलग करते समय
NestedScrollDispatcher.coroutineScopeOrNullको ऐक्सेस करने पर,nullके बजायIllegalStateExceptionथ्रो करने की समस्या को ठीक किया गया है. (I55634, b/533444810) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:uiटॉप-लेवल वैल्यू क्लास की प्रॉपर्टी के फ़ाइल-लेवल के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया है. (I34184) - डाइनैमिक गेटर का इस्तेमाल करके,
ui-unitवैल्यू क्लास (TextUnit) के कंपैनियन ऑब्जेक्ट के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया. (If4a99) - डाइनैमिक गेटर का इस्तेमाल करके,
ui-graphicsवैल्यू क्लास (BlendMode,Colorवगैरह) के ऑप्टिमाइज़ किए गए कंपैनियन ऑब्जेक्ट को शुरू किया गया. (Iaa86a) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:ui:uiवैल्यू क्लास (Key,CompositingStrategyवगैरह) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा. (I1a340) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:uiटेक्स्ट वैल्यू क्लास (TextAlign,TextOverflow,ImeActionवगैरह) के कंपैनियन ऑब्जेक्ट को ऑप्टिमाइज़ किया गया है. (I776e0) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:uiटूलिंग और टेस्ट वैल्यू क्लास (AnimatedVisibilityState,MouseButton,ScrollWheel) के कंपैनियन ऑब्जेक्ट के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया है. (I23e1b) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:uiयूनिट वैल्यू क्लास (Dp,DpOffset,TextUnitTypeवगैरह) के कंपैनियन ऑब्जेक्ट को ऑप्टिमाइज़ किया गया है. (If5eb5) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:uiज्यामिति की वैल्यू वाले क्लास (Offset,Size,CornerRadius) के कंपैनियन ऑब्जेक्ट के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया है. (I3b110) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:uiवैल्यू क्लास (Role,FocusDirection,PointerEventTypeवगैरह) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा. (Ie35dd) BaselineShift.None,BaselineShift.Unspecified, औरBaselineShift(0f)को सही तरीके से हैंडल करें, ताकि लेआउट को बार-बार रेंडर करने से बचा जा सके. (I4350c)- उस समस्या को ठीक किया गया है जिसमें तुलना या समानता की जांच में, नेगेटिव ज़ीरो (-0.0) वाली Dp वैल्यू, फ़्लोटिंग पॉइंट की तुलना या समानता की जांच से अलग तरीके से काम करती है. (I7dbcf, b/525506543)
- यह कुकी, एपीआई की जानकारी को मिटाती है (Ia8066)
बाहरी योगदान
Alignment.topRatio,Trim.isTrimFirstLineTop(), औरTrim.isTrimLastLineBottom()अब सार्वजनिक एपीआई हैं (I84f62)
वर्शन 1.12
वर्शन 1.12.1
09 सितंबर, 2026
androidx.compose.ui:ui-*:1.12.1 रिलीज़ हो गया है. वर्शन 1.12.1 में ये बदलाव शामिल हैं.
वर्शन 1.12.0
12 अगस्त, 2026
androidx.compose.ui:ui-*:1.12.0 रिलीज़ हो गया है. वर्शन 1.12.0 में ये बदलाव शामिल हैं.
### डाउनलोड किए जा सकने वाले वैरिएबल फ़ॉन्ट और बिना कॉन्फ़िगरेशन वाला सेटअप (ui-text-google-fonts)
• वैरिएबल फ़ॉन्ट और बिना कॉन्फ़िगरेशन वाले GMS सर्टिफ़िकेट!
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontVariation
import androidx.compose.ui.text.googlefonts.Font
import androidx.compose.ui.text.googlefonts.GoogleFont
val fontFamily = FontFamily(
Font(
googleFont = GoogleFont("Google Sans Flex"),
// Automatically uses default GMS certificates!
variationSettings = FontVariation.Settings(
FontVariation.weight(900),
FontVariation.slant(0f)
)
)
)
──────
### वाइड कलर गैमट (डब्ल्यूसीजी) सपोर्ट (ui-graphics)
WCG Preservation: * Paint या Shader पर सेट किए गए नॉन-एसआरजीबी कलर स्पेस (जैसे, AdobeRgb, DisplayP3) को API 29 और इसके बाद के वर्शन पर बनाए रखा जाता है. * पुराने एपीआई लेवल पर, यह sRGB पर वापस आ जाता है.
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Paint
import androidx.compose.ui.graphics.colorspace.ColorSpaces
val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)
val paint = Paint().apply {
color = wcgColor // Preserved on API 29+
}
──────
### हार्डवेयर की मदद से तेज़ी से रेंडर होने वाले मेश ग्रेडिएंट (ui)
• Painter API: Modifier.meshGradient को MeshGradientPainter से बदल दिया गया है. यह हार्डवेयर की मदद से तेज़ी से काम करने वाले Canvas.drawMesh का इस्तेमाल करता है.
• इस्तेमाल: Modifier.paint के अंदर MeshGradientPainter का इस्तेमाल करें.
import androidx.compose.ui.draw.paint
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.MeshGradientPainter
val meshPainter = remember {
MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {
setVertex(0, 0, Offset(0f, 0f), Color.Red)
setVertex(0, 1, Offset(1f, 0f), Color.Blue)
setVertex(1, 0, Offset(0f, 1f), Color.Green)
setVertex(1, 1, Offset(1f, 1f), Color.Yellow)
}
}
Box(Modifier.fillMaxSize().paint(meshPainter))
──────
### 4. Credential Manager इंटिग्रेशन (ui)
अपने-आप भरने की सुविधा: * एपीआई 34 और इसके बाद के वर्शन के टेक्स्ट फ़ील्ड के लिए, क्रेडेंशियल अनुरोध की सिमैंटिक्स प्रॉपर्टी का लो लेवल जोड़ा गया है.
import androidx.compose.ui.semantics.credentialRequest
import androidx.compose.ui.semantics.CredentialRequestData
import androidx.compose.ui.semantics.semantics
BasicTextField(
value = value,
onValueChange = onValueChange,
modifier = Modifier.semantics {
if (Build.VERSION.SDK_INT >= 34) {
credentialRequest = CredentialRequestData(request, callback)
}
}
)
──────
### 5. अपने-आप जनरेट होने वाले इंटरैक्शन साउंड (यूज़र इंटरफ़ेस)
क्लिक और नेविगेशन की आवाज़ें: * प्लैटफ़ॉर्म साउंड कॉन्फ़िगरेशन का इस्तेमाल करके, Android के साथ काम करने वाली क्लिक और नेविगेशन की आवाज़ों की सुविधा उपलब्ध है. * ऑप्ट-आउट करना: किसी सबट्री के लिए आवाज़ें बंद करने के लिए, SoundEffectOnInteraction रैपर का इस्तेमाल करें.
import androidx.compose.ui.platform.SoundEffectOnInteraction
// Opt-out of sounds for everything inside
SoundEffectOnInteraction(enabled = false) {
Button(onClick = {}) {
Text("Silent Button")
}
}
### 6. हाइब्रिड यूज़र इंटरफ़ेस (यूआई) के लिए Espresso इंटिग्रेशन (ui-test)
Espresso ViewInteraction से मैच होने वाली व्यू हैरारकी के लिए, Compose इंटरैक्शन को स्कोप करें.
import androidx.compose.ui.test.junit4.onRootWithViewInteraction
import androidx.test.espresso.Espresso.onView
// Match RecyclerView row using Espresso
val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))
// Scope Compose interactions to that row
composeTestRule.onRootWithViewInteraction(specificRow)
.onNodeWithTag("fav_icon")
.performClick()
वर्शन 1.12.0-rc01
29 जुलाई, 2026
androidx.compose.ui:ui-*:1.12.0-rc01 रिलीज़ हो गया है. वर्शन 1.12.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.12.0-beta02
01 जुलाई, 2026
androidx.compose.ui:ui-*:1.12.0-beta02 रिलीज़ हो गया है. वर्शन 1.12.0-beta02 में ये बदलाव शामिल हैं.
वर्शन 1.12.0-beta01
17 जून, 2026
androidx.compose.ui:ui-*:1.12.0-beta01 रिलीज़ हो गया है. वर्शन 1.12.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लागू नहीं है (इंटरनल डेवलपर फ़ीचर फ़्लैग को दूसरी जगह ले जाया जा रहा है) (Iaf2c4, b/368702588)
- लागू नहीं - फ़ीचर फ़्लैग को दूसरी जगह ले जाया गया. (I24668, b/521811270)
- एक्सपेरिमेंट के तौर पर उपलब्ध फ़ीचर फ़्लैग
ComposeUiFlagsजोड़ा गया.isTrackpadPinchReinterpretationEnabledका इस्तेमाल, ट्रैकपैड के पिंच जेस्चर को स्केल फ़ैक्टर के साथ माउस इवेंट के तौर पर फिर से समझने के लिए किया जाता है. (Id3477, b/478053727) - यह टेस्ट फ़ंक्शन का नाम बदलता है. इसका इस्तेमाल, इनडायरेक्ट पॉइंटर इवेंट (I3ee35, b/509618414) को ट्रिगर करने के लिए किया जाता है
BasicTextऔरBasicTextFieldमें ऑप्टिमाइज़ेशन जोड़ा गया है. अब softwrap=false वाले टेक्स्ट के लिए लाइन की ऊंचाई को ज़्यादा बेहतर तरीके से कैलकुलेट किया जा रहा है (I2150a)
गड़बड़ियां ठीक की गईं
- स्क्रोल कैप्चर करने की ऑप्टिमाइज़ की गई स्थिति को सभी सबकंपोज़िशन में फैलाया गया है, ताकि यूज़र इंटरफ़ेस (यूआई) को ग़ैर-ज़रूरी तौर पर फिर से कंपोज़ होने से रोका जा सके. (I05830)
- एक्सपेरिमेंट के तौर पर उपलब्ध फ़ीचर फ़्लैग
ComposeUiFlagsचालू किया गया.isTrackpadPinchReinterpretationEnabledडिफ़ॉल्ट रूप से. (I35ab8, b/478053727) - वेक्टर ड्रॉएबल संसाधन पार्स करने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, अगर पैरंट
<clip-path>एलिमेंट में नेस्ट किए गए<group>एलिमेंट शामिल होते थे, तो उन्हें अनदेखा कर दिया जाता था. (Id4ea9, b/474530439) AndroidComposeTestRuleमें, JUnit 4 के स्टैंडर्ड टेस्ट फिर से आज़माने के नियमों के लिए सहायता जोड़ी गई है. इसके लिए, एक्ज़ीक्यूशन की कोशिशों के बीच इंटरनल टेस्ट एनवायरमेंट और कोराउटीन स्कोप को फिर से जनरेट किया जाता है. (Iafaa7, b/235383900)
बाहरी योगदान
- टेस्टिंग के लिए
AndroidClipboardइंटरफ़ेस उपलब्ध कराएं, ताकि क्लिपबोर्ड को लागू करने की प्रोसेस को मॉक किया जा सके (Ie4d72, b/512924975) commitText()औरsetComposingText()केTextAttributeवैरिएंट के लिए, पुराने सिस्टम के साथ काम करने की सुविधा जोड़ी गई. SDK>=37 के लिए, सुलभता सेवाएं यह सूचना दे पाएंगी कि सुझाव के तौर पर दिए गए टेक्स्ट को चुना गया है या नहीं. SDK<37 के लिए, इससे बोले गए जवाब पर कोई असर नहीं पड़ेगा. इसका मतलब है कि यह सुविधा पहले की तरह काम करेगी. (I90e3d, b/439879822)
वर्शन 1.12.0-alpha03
19 मई, 2026
androidx.compose.ui:ui-*:1.12.0-alpha03 रिलीज़ हो गया है. वर्शन 1.12.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एपीआई 34 और इसके बाद के वर्शन पर, नई
credentialRequestSemantics प्रॉपर्टी औरCredentialRequestDataहेल्पर जोड़ा गया है. इससे Jetpack Compose के टेक्स्ट फ़ील्ड, ऑटोमैटिक तरीके से जानकारी भरने वाले फ़्रेमवर्क के ज़रिए Android के Credential Manager के साथ इंटिग्रेट हो सकेंगे. (Ida2bf, b/488446455) ParagraphIntrinsicsफ़ैक्ट्री फ़ंक्शन जोड़ा गया है. यह फ़ंक्शन, अन्य आर्ग्युमेंट के साथ-साथsoftWrapआर्ग्युमेंट भी लेता है. हम इसका इस्तेमाल, इस सिग्नल के तौर पर कर सकते हैं कि टेक्स्ट को एक लाइन के तौर पर रेंडर किया गया है. साथ ही, कुछ ऑप्टिमाइज़ेशन किए जा सकते हैं. (I66ca4, b/485495112)- Compose कॉम्पोनेंट में, अपने-आप इंटरैक्शन की आवाज़ें (क्लिक और फ़ोकस नेविगेशन) चलाने की सुविधा जोड़ी गई है. साथ ही, ऑप्ट-आउट करने के लिए नया
SoundEffectOnInteractionComposable जोड़ा गया है. ध्यान दें कि इस बदलाव के बाद, सिमैंटिक्स क्लिक लिसनर को मुख्य थ्रेड से कॉल करना होगा. इससे कुछ टेस्ट केस पर असर पड़ सकता है. (I78f65) variationSettingsलेने वालेFontफ़ैक्ट्री फ़ंक्शन को बेहतर बनाया गया. (I183f2)ResourceFontloadingStrategyप्रॉपर्टी औरcopyतरीके को स्थिर किया गया. (I40d84)InterceptPlatformTextInputऔरPlatformTextInputInterceptorएपीआई को स्टेबलाइज़ किया गया. (Id2784)- प्लेटफ़ॉर्म को अलग-अलग करने के लिए,
registerIdlingResourceऔरunregisterIdlingResourceको एक्सटेंशन फ़ंक्शन में ले जाया गया है. आपको अपने इंपोर्ट अपडेट करने पड़ सकते हैं. (I21d3d, b/471148519) ComposeTestRuleमेंrunWithoutImplicitWaitऔरComposeUiTestको जोड़ा गया है, ताकि राज्य की जांच के दौरान टेस्ट की परफ़ॉर्मेंस को बेहतर बनाया जा सके. इस एपीआई की मदद से, कोड के किसी ब्लॉक को इस तरह से एक्ज़ीक्यूट किया जा सकता है कि उसमें इंप्लिसिट सिंक्रनाइज़ेशन बंद हो. इससे हर नोड क्वेरी के लिए, बार-बार सिंक्रनाइज़ेशन करने की ज़रूरत नहीं पड़ती. इससे टेस्ट को बहुत तेज़ी से पूरा किया जा सकता है. खास तौर पर, उन टेस्ट को जिनमें फ़्रेम को मैन्युअल तरीके से देखा जाता है और कई प्रॉपर्टी के सैंपल लिए जाते हैं. जैसे, ऐनिमेशन टेस्टिंग. (Ie00e9, b/490270394)- अब
@PreviewWrapperएनोटेशन कोMultiPreviewएनोटेशन क्लास पर लागू किया जा सकता है. इससे डेवलपर, पहले से रैप किए गए ऐसे प्रीव्यू कॉन्फ़िगरेशन बना सकते हैं जिनका दोबारा इस्तेमाल किया जा सकता है. (I8ae66, b/511170361) - मेश ग्रेडिएंट रेंडर करने के लिए,
MeshGradientPainterको जोड़ा गया है.Modifier.meshGradientको हटा दिया गया है. इसके बजाय,Modifier.paintके साथMeshGradientPainterका इस्तेमाल करें.MeshGradientRendererअब इंटरनल है. (I2d170, b/508110246) - अब रूलर को अलग-अलग तौर पर उपलब्ध कराया जा सकता है. इसके लिए, एक ऐसा लैम्डा उपलब्ध कराएं जो यह बताए कि रूलर उपलब्ध कराया जा सकता है या नहीं. साथ ही, एक अलग लैम्डा उपलब्ध कराएं जो रूलर की वैल्यू दे.
isRulerProvidedलैंबडा का इस्तेमाल नहीं किया गया है. इसलिए, यह अनुमान लगाया जाना चाहिए कि वैल्यू दी जा सकती है या नहीं.rulerProviderलैम्डा को ऑब्ज़र्व किया जाता है, ताकि अगर कोई वैल्यू बदलती है, तो यह रूलर वैल्यू और रूलर के सभी रीडर को अपडेट कर सके. (Ie9089) - एक्सपेरिमेंट के तौर पर उपलब्ध Style API में, पसंद के मुताबिक स्टाइल टाइप बनाने की सुविधा जोड़ी गई है. इनमें पसंद के मुताबिक स्टाइल स्कोप हो सकते हैं. इससे स्टाइल के हिसाब से सेट की जा सकने वाली प्रॉपर्टी को सबसेट किया जा सकता है. जैसे, ग्राफ़िक्स लेयर या टेक्स्ट प्रॉपर्टी को पूरी तरह से हटाया जा सकता है. साथ ही, स्कोप को अन्य स्टाइल से अलग करके बढ़ाया जा सकता है. जैसे,
MediaPlayerकंपोज़ेबल में सिर्फ़playing { }सिंटैक्स का इस्तेमाल किया जा सकता है. इस बदलाव से, बाइनरी और सोर्स कंपैटिबिलिटी पर असर पड़ता है. सोर्स के साथ काम न करने वाला मुख्य बदलाव यह है किStyleScopeमें मौजूद हेल्पर फ़ंक्शन, अब एक्सटेंशन फ़ंक्शन बन गए हैं. उदाहरण के लिए,fun contentProperty(all: Dp)अब एक एक्सटेंशन फ़ंक्शन है. इन तरीकों को कॉल करने वाले कोड को सही तरीके से कंपाइल करने के लिए, ज़रूरी एक्सटेंशन फ़ंक्शन इंपोर्ट करने या androidx.compose.foundation.styles से सभी सिंबल इंपोर्ट करने की ज़रूरत होती है. (I1ef27, b/493676648) - यह फ़ंक्शन, पॉइंटर आईडी के लिए डिफ़ॉल्ट आर्ग्युमेंट के साथ
updatePointerBy()जोड़ता है. (I99f30, b/502001776) DeferredTargetAnimationअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. कृपया ऑप्ट-इन करने की सुविधा हटाएं." को androidx-main में जोड़ें- समस्या को ठीक करने की सुविधा को कंट्रोल करने के लिए, फ़्लैग
isClearNestedScrollCoroutineScopeFixEnabledजोड़ा गया. (Ibd394, b/505343254) DeferredTargetAnimationअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. कृपया ऑप्ट-इन करने की सुविधा हटाएं. (I1e4ae, b/500030165)- ui-tooling में ट्रिगर के लिए नया enum (I6e198, b/478807872)
ComposeViewContextको रेफ़रंस व्यू अटैच किए बिना बनाया जा सकता है. हालांकि,setContent()को कॉल करने से पहले, रेफ़रंस व्यू को अटैच करना ज़रूरी है. (Id0952)
गड़बड़ियां ठीक की गईं
focusRestorerमें, एक ही लेआउट के लिए सेव करने के कई कॉल होने पर फ़ोकस को ठीक से रीस्टोर न करने की समस्या को ठीक किया गया है (I10277, b/505371994)- परफ़ॉर्मेंस में सुधार करने के लिए किए गए पिछले बदलाव की वजह से, अटैच नहीं किए गए
ComposeViewsको मेज़र नहीं किया जा सका. इस बदलाव के बाद, अब ऐसा किया जा सकता है. साथ ही, परफ़ॉर्मेंस से जुड़ी समस्या फिर से नहीं आएगी. (I9b2c5, b/508650647) - अब
ComposeViewContextमें बदलाव करने पर, कंपोज़िशन फिर से बनाई जाती है, ताकिComposeViewContextको तेज़ी से ऐक्सेस किया जा सके. (I3b3a8, b/487364963) - Android पर पेंट और शेडर के लिए, Compose को नॉन-एसआरजीबी रंग सेट करने की अनुमति दें. साथ ही, Compose के कलर स्पेस को प्लैटफ़ॉर्म के बराबर के कलर स्पेस पर सही तरीके से मैप करके, वाइड कलर गैमट को बनाए रखें. जिन कलर स्पेस को प्लैटफ़ॉर्म रेंडरिंग ऑपरेशन के लिए इस्तेमाल नहीं किया जा सकता (जैसे, CIE XYZ, CIE Lab, OkLab) या जो मौजूदा एपीआई लेवल पर उपलब्ध नहीं हैं वे सुरक्षित तरीके से sRGB कलर स्पेस पर फ़ॉलबैक हो जाएंगे. (I3efb5, b/388511109)
बाहरी योगदान
androidx.compose.ui.platform.NativeClipboardtypealias के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, सीधे तौर परandroid.content.ClipboardManagerका इस्तेमाल करें (Ibc611)Clipboard.nativeClipboardप्रॉपर्टी कोClipboard.nativeClipboardManagerएक्सटेंशन से बदलें, ताकिtypealiasके ज़रिएcommonMainसोर्ससेट में प्लैटफ़ॉर्म टाइप का पता न चले (Ibc611)
वर्शन 1.12.0-alpha02
6 मई, 2026
androidx.compose.ui:ui-*:1.12.0-alpha02 रिलीज़ हो गया है. वर्शन 1.12.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MeshGradientमॉडिफ़ायर पेश किया गया. (Ia9a08, b/455752719)- यह बिल्ट-इन ऑटोमैटिक भरने की सुविधा के डीबग लॉगिंग कॉलबैक को हटाता है.
AutofillManager.AutofillCallbackसे लॉग इन करके भी इसी तरह की सुविधा का इस्तेमाल किया जा सकता है. (I631c7, b/502279690) - डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, वेरिएशन सेटिंग की सुविधा जोड़ी गई (Ic25c7, b/496278020)
mediaQueryऔरderivedMediaQueryको अपडेट किया गया है, ताकिBooleanके बजाय सामान्य टाइप दिखाया जा सके. इससे अडैप्टिव यूज़र इंटरफ़ेस (यूआई) बनाते समय, इनका ज़्यादा आसानी से इस्तेमाल किया जा सकता है. (I93830, b/498698350)
वर्शन 1.12.0-alpha01
22 अप्रैल, 2026
androidx.compose.ui:ui-*:1.12.0-alpha01 रिलीज़ हो गया है. वर्शन 1.12.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इस कुकी से,
ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled(I82be3, b/455601135) फ़ीचर फ़्लैग हट जाता है mediaQueryको इनलाइन फ़ंक्शन बनाया गया (Ie9457, b/498698350)ComposeViewContextको एक्सपेरिमेंट के तौर पर उपलब्ध होने की स्थिति से हटा दिया गया है औरExperimentalComposeViewContextApiएनोटेशन हटा दिया गया है (I32eca)ComposeView.disableWindowInsetsRulers()अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है (Ia81a5)hasPendingWork()एपीआई जोड़ा गया है. इससे यह पता लगाया जा सकता है कि कंपोज़ यूज़र इंटरफ़ेस (यूआई) में फ़िलहाल कोई काम बाकी है या नहीं. इसके लिए, इंतज़ार करने या घड़ी को आगे बढ़ाने की ज़रूरत नहीं होती. यह मैन्युअल क्लॉक टेस्ट के लिए मददगार होता है. इससे यह तय किया जा सकता है कि ऐनिमेशन या बैकग्राउंड में चल रहे अन्य काम कब पूरे हुए. (Ic54e3)- फ़ीचर फ़्लैग
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled(I7fd25, b/491111451) हटाया गया - फ़ीचर फ़्लैग
AndroidComposeUiFlags.isSharedFontEnabled(I2cebe, b/479898293) हटाया गया - यह Android पर कीबोर्ड के साथ काम करने वाले विकल्पों का सेट पूरा करने के लिए, अतिरिक्त
KeyboardTypeविकल्प जोड़ता है. इनमें तारीख, समय, तारीख और समय, दशमलव वाली संख्या वगैरह शामिल हैं. (I3713e, b/202353328) AndroidComposeUiFlags.isSharedHapticsEnabledफ़्लैग हटाया गया (I6a1d4, b/479895628)AndroidComposeUiFlags.isSharedClipboardManagerEnabledफ़्लैग हटाया गया (I41e3c, b/479895130)AndroidComposeUiFlags.isSharedViewConfigurationEnabledफ़्लैग हटाया गया (I6d3aa, b/479890645)- सुविधा के फ़्लैग
AndroidComposeUiFlags.isSharedDrawingEnabledको हटाया गया. (I27912, b/479849019) - सुविधा फ़्लैग
AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled(I6b726, b/479845566) को हटाया गया AndroidComposeUiFlags.isSharedWindowInfoEnabledफ़्लैग हटाएं (Ife9a9, b/479837249)AndroidComposeUiFlags.isSharedComposeViewContextEnabledफ़्लैग हटाएं. (Ic522a, b/479834257)- डाउनलोड किए जा सकने वाले वैरिएबल फ़ॉन्ट को पसंद के मुताबिक बनाने के लिए, वेरिएशन सेटिंग जोड़ी गईं (Ifdc93, b/223262013)
- डाउनलोड किए जा सकने वाले वैरिएबल फ़ॉन्ट को पसंद के मुताबिक बनाने के लिए, वेरिएशन सेटिंग जोड़ी गईं (I390af, b/223262013)
- फ़्लैग हटाएं
isTraversableDelegatesFixEnabled(Ia7dfe, b/485962494) - टेस्ट की परफ़ॉर्मेंस और स्टेटस को स्थिर बनाने के लिए,
ComposeTestRuleऔरComposeUiTestपरrunWhenIdleऔर इसके निलंबित किए गए वैरिएंटawaitAndRunWhenIdleको लॉन्च किया गया है. ये एपीआई, यूज़र इंटरफ़ेस (यूआई) को एक बार सिंक करते हैं. इसके बाद, हर ऑपरेशन के लिए बार-बार सिंक करने के ओवरहेड के बिना, कोड के एक ब्लॉक को एक्ज़ीक्यूट करते हैं. इससे टेस्ट को बहुत तेज़ी से और कम गड़बड़ियों के साथ पूरा किया जा सकता है. खास तौर पर, उन टेस्ट के लिए जो कई प्रॉपर्टी के सैंपल लेते हैं. जैसे, ऐनिमेशन टेस्टिंग में. (Iabf66, b/490270394) - यह
LayerOutsetsकोGraphicsLayerऔरModifier.graphicsLayerमें जोड़ता है. इसका इस्तेमाल, लेयर की मेज़र की गई साइज़ की सीमा से ज़्यादा विज़ुअल बाउंड्री बढ़ाने के लिए किया जा सकता है. इसका इस्तेमाल, लेयर को ऑफ़स्क्रीन बफ़र में प्रमोट किए जाने पर,clipToBoundsके डिफ़ॉल्ट व्यवहार से बचने के लिए किया जा सकता है. (Ic1189) - ऑटोमैटिक भरे जाने वाले इनपुट इवेंट को लॉग करने की सुविधा डिफ़ॉल्ट रूप से बंद कर दी गई है. इन्हें अब
ComposeView.setAutofillDebugEnabledपर कॉल करके चालू किया जा सकता है. (I5b430, b/487947860) - VelocityTracker को Android फ़्रेमवर्क (
AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabledके साथ कॉन्फ़िगर किया जा सकता है) से मिले हुए तरीके का इस्तेमाल करने के लिए बदला गया. (Ibc7e2, b/359962905) AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabledके सही होने पर, चाइल्ड व्यू में हमेशा लेआउट पास के दौरान मेज़रमेंट के बाद कॉल किया गया लेआउट होगा. मेज़रमेंट के बाद, कंपोज़ हमेशा चाइल्ड को लेआउट नहीं करता है. हालांकि, व्यू को सही स्टेट मैनेजमेंट के लिए इसकी ज़रूरत होती है. (Ib4fe9, b/430974758)LayoutInfoमेंisVirtualजोड़ा गया (I3e5cd, b/494243978)isGraphicsLayerShapeSemanticsEnabledफ़्लैग को हटा दिया गया है. (I44be0, b/455600081)- एक नया Font API जोड़ा गया है. इसका इस्तेमाल करके, फ़ॉन्ट को डाउनलोड किया जा सकता है. इसके लिए, कोडबेस में फ़ॉन्ट सर्टिफ़िकेट को मैन्युअल तरीके से जोड़ने की ज़रूरत नहीं होती. (I30b86, b/479454159)
- Compose की सिमैंटिक खोजों को खास Android व्यू तक सीमित करने के लिए,
onRootWithViewInteractionजोड़ा गया . इससे हाइब्रिड यूज़र इंटरफ़ेस (यूआई), जैसे किRecyclerViewsकी टेस्टिंग आसान हो जाती है. इसके लिए, प्रोडक्शन कोड में यूनीक टेस्ट टैग की ज़रूरत नहीं होती . (Ic02c4, b/175226753)
गड़बड़ियां ठीक की गईं
captureToImage()API की मदद से, अब पॉप-अप या डायलॉग को उसके ऐंकर के साथ एक ही बिटमैप में कैप्चर किया जा सकता है. (I9b83a, b/443137545)- Compose
compileSdkको एपीआई 37 पर अपडेट किया गया. इसका मतलब है कि Compose का इस्तेमाल करने के लिए, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743) - सिमैंटिक्स में
ContentDataType.Noneसेट करने पर, अब Compose की सुविधा से अपने-आप भरने वाले इवेंट नहीं भेजे जा सकेंगे. इससे, अपने-आप भरने की सेवाओं का अनुरोध करने से जुड़ी शुरुआती लागत को रोका जा सकेगा. (I8fbda, b/487947860)
वर्शन 1.11
वर्शन 1.11.4
01 जुलाई, 2026
androidx.compose.ui:ui-*:1.11.4 रिलीज़ हो गया है. वर्शन 1.11.4 में ये बदलाव शामिल हैं.
वर्शन 1.11.3
17 जून, 2026
androidx.compose.ui:ui-*:1.11.3 रिलीज़ हो गया है. वर्शन 1.11.3 में ये बदलाव शामिल हैं.
वर्शन 1.11.2
19 मई, 2026
androidx.compose.ui:ui-*:1.11.2 रिलीज़ हो गया है. वर्शन 1.11.2 में ये बदलाव शामिल हैं.
वर्शन 1.11.1
6 मई, 2026
androidx.compose.ui:ui-*:1.11.1 रिलीज़ हो गया है. वर्शन 1.11.1 में ये बदलाव शामिल हैं.
वर्शन 1.11.0
22 अप्रैल, 2026
androidx.compose.ui:ui-*:1.11.0 रिलीज़ हो गया है. वर्शन 1.11.0 में ये बदलाव शामिल हैं.
वर्शन 1.11.0-rc01
08 अप्रैल, 2026
androidx.compose.ui:ui-*:1.11.0-rc01 रिलीज़ हो गया है. वर्शन 1.11.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.11.0-beta02
25 मार्च, 2026
androidx.compose.ui:ui-*:1.11.0-beta02 रिलीज़ हो गया है. वर्शन 1.11.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नाम बदलने वाले
PreviewWrapperएपीआई का नाम बदलकर एक जैसा करें (I62659, b/490085948) ComposeViewContextकी मदद से,ComposeViewको व्यू हैरारकी से अटैच किए बिना कंपोज़ किया जा सकता है.ComposeViewअटैच किए बिना ईमेल लिखना शुरू करने के लिए,AbstractComposeView.createComposition(composeViewContext)का इस्तेमाल करें. (I46e6f)panEndऔरscaleEndके लिए, ट्रैकपैड टेस्ट एपीआई मेंdelayMillisजोड़ा गया (If80fe)
गड़बड़ियां ठीक की गईं
ClipboardऔरClipboardManagerअब पहले तरीके से कॉल करने पर, सिस्टम सेवा का अनुरोध करते हैं (If0016, b/487947860)- फ़ोकस नोड और ग्रुप का फिर से इस्तेमाल किए जा रहे लेज़ी कंटेनर में, फ़ोकस को सही तरीके से रीस्टोर किया जाएगा (I18d36, b/481564275)
clippingEnabled = falseके साथ पॉपअप अब पूरी विंडो का इस्तेमाल करता है, ताकि किनारे से किनारे तक कॉन्टेंट दिखाया जा सके (I206408, b/327017902)
वर्शन 1.11.0-beta01
11 मार्च, 2026
androidx.compose.ui:ui-*:1.11.0-beta01 रिलीज़ हो गया है. वर्शन 1.11.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Jetpack Compose Dialog (Ic7728) में कस्टम
windowTokenके लिए सहायता जोड़ी गई है - Jetpack Compose Popups में, कस्टम
windowTokenऔरwindowTypeके लिए सहायता जोड़ी गई है. (I0a04f) PreviewWrapperइंटरफ़ेस और एनोटेशन की सुविधा देने वाली कंपनी के बारे में जानकारी दें. इससे डेवलपर, अपनी झलक को पसंद के मुताबिक व्यवहार के साथ आसानी से रैप कर पाएंगे. (I29f54, b/484306729)AndroidComposeUiFlags.isSharedFontEnabledको सही पर सेट करने पर, फ़ॉन्ट से जुड़े ऑब्जेक्ट इंस्टेंस, जैसे किFontLoaderऔरFontFamilyResolver, कोComposeViewContextमें मौजूदComposeViewइंस्टेंस के साथ शेयर किया जा सकता है. (I403e8)- Compose semantics processors,
mainLooperके बजाय view.handler का इस्तेमाल करेंगे. इससे उन व्यू में क्रैश होने की समस्या नहीं आएगी जो मुख्य हैंडलर का इस्तेमाल नहीं करते हैं. (I671c3, b/486235925) isSkipNonImportantSemanticsNodesHitTestEnabledफ़्लैग जोड़ा गया है. यह सिमैंटिक हिट टेस्टिंग के लिए बग को ठीक करता है. इससेTalkBackके टच-टू-एक्सप्लोर पर असर पड़ता है. (I2933f, b/481011169, b/454377558, b/461360154)- Android सेवाओं से Jetpack Compose Dialogs दिखाने की सुविधा जोड़ी गई है. डेवलपर अब
DialogPropertiesमें नएwindowTypeपैरामीटर के ज़रिए, कस्टम विंडो टाइप उपलब्ध करा सकते हैं. इससे वे ओवरले विंडो में डायलॉग दिखा सकते हैं. (I7c504, b/478214962) - यह कुकी, स्केल और पैन की वैल्यू वापस पाने के लिए
PointerInputChangeऔरHistoricalChangeप्रॉपर्टी का नाम बदलती है. (I989a8, b/481333653) - ट्रैकपैड के जेस्चर के लिए अलग-अलग कर्व और इनपुट को सिम्युलेट करने के लिए, ट्रैकपैड टेस्टिंग एपीआई में ज़्यादा सुविधाएं जोड़ी गई हैं. (I290fb, b/473603145, b/479213358)
- नए
PointerEventType.PanकोPointerEventType.PanStart,PointerEventType.PanMove, औरPointerEventType.PanEndमें बांटता है. इसी तरह,PointerEventType.ScaleकोPointerEventType.ScaleStart,PointerEventType.ScaleChange, औरPointerEventType.ScaleEndमें बांट दिया गया है. इस स्प्लिट से, प्लैटफ़ॉर्म पर इंटरप्रेट किए गए पैन और स्केल के जेस्चर की शुरुआत और खत्म होने के बारे में अतिरिक्त जानकारी मिलती है. इससे Compose में पॉइंटर इनपुट हैंडलर, इवेंट का सही तरीके से पता लगाने के लिए इस जानकारी का इस्तेमाल कर पाते हैं. साथ ही, उन्हें यह भी पता चलता है कि पैन या स्केल कब किया गया. (I4daf6, b/479285849, b/481333653) - जब
AndroidComposeUiFlags.isSharedHapticsEnabledकी वैल्यू true होती है, तबComposeViewContextमें शेयर किया गया हैप्टिक्स कंट्रोलर इंस्टेंस होता है. (Icd79a) - हमने एक्सपेरिमेंट के तौर पर
mediaQuery,derivedMediaQuery, औरUiMediaScopeएपीआई (@ExperimentalMediaQueryApiके तौर पर मार्क किए गए) लॉन्च किए हैं. इनकी मदद से, विंडो के डाइमेंशन, विंडो के पोस्चर, और डिवाइस और एनवायरमेंट की अन्य सुविधाओं के आधार पर, अडैप्टिव यूज़र इंटरफ़ेस (यूआई) को डिक्लेरेटिव तरीके से डेवलप किया जा सकता है. (I2d21e, b/479800750)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, Shape पैरामीटर को डाइनैमिक तरीके से बदलने पर, ब्लॉक-स्कोप किए गए
Modifier.dropShadowऔरModifier.innerShadowफिर से नहीं दिखते थे. (Ida262, b/486202623) - उस बग को ठीक किया गया है जिसकी वजह से, एलटीआर टेक्स्ट वाले आरटीएल लेआउट या आरटीएल टेक्स्ट वाले एलटीआर लेआउट में इनलाइन कॉन्टेंट गलत जगह पर दिखता था. (I09789)
- इस गड़बड़ी को ठीक किया गया है. इसमें फ़्रैगमेंट ट्रांज़िशन में
ComposeViewका इस्तेमाल करने पर, अपवाद थ्रो किया जा रहा था. (Ia425f, b/484100557)
बाहरी योगदान
InputTextSuggestionStateप्रॉपर्टी जोड़ें. इससे यह पता लगाने में मदद मिलती है कि टेक्स्ट बदलने के सुझाव उपलब्ध होने पर, लिप्यंतरण इनपुट की अलग-अलग स्थितियां क्या हो सकती हैं. इसमेंTextCompositionRangeभी शामिल किया गया है, ताकि मौजूदा लिप्यंतरण टेक्स्ट कंपोज़िशन रेंज को ट्रैक किया जा सके. शून्य वैल्यू से पता चलता है कि कोई कंपोज़िशन मौजूद नहीं है. (I7a67f, b/476472318)
वर्शन 1.11.0-alpha06
25 फ़रवरी, 2026
androidx.compose.ui:ui-*:1.11.0-alpha06 रिलीज़ हो गया है. वर्शन 1.11.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposeUiFlags.areWindowInsetsRulersEnabledफ़्लैग कोComposeView.disableWindowInsetsRulers()एपीआई से बदल दिया गया है. (Idcdb4, b/455590696)- Android के लिए एक्सपेरिमेंट के तौर पर उपलब्ध फ़ीचर फ़्लैग
isAccessibilityShowOnScreenNestedScrollingEnabledको (I1c13a) में ले जाया गया - चलने की सुविधा जोड़ी गई (I1c13a)
- स्क्रोल किए जा सकने वाले कंटेनर में, आंशिक रूप से दिखने वाले मर्जिंग नोड के चाइल्ड नोड के तौर पर मौजूद, स्क्रीन से बाहर के सिमैंटिक नोड की रिपोर्ट करें. इससे स्क्रीन रीडर और सुलभता से जुड़ी अन्य सेवाओं के साथ, उपयोगकर्ता अनुभव को बेहतर बनाया जा सकेगा (I71df9, b/434782764)
- जब
AndroidComposeUiFlags.isSharedClipboardManagerEnabledसही होता है, तब क्लिपबोर्ड से जुड़े इंस्टेंस कोComposeViewsपर शेयर किया जा सकता है. इसके लिए,ComposeViewContext(I65e2c) का इस्तेमाल किया जाता है ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabledको हटा दिया गया है (I6e14a, b/455601894)
वर्शन 1.11.0-alpha05
11 फ़रवरी, 2026
androidx.compose.ui:ui-*:1.11.0-alpha05 रिलीज़ हो गया है. वर्शन 1.11.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AndroidComposeUiFlags.isSharedWindowInfoEnabled,WindowInfoकी जानकारी कोComposeViewContextमें ट्रांसफ़र करता है. इस फ़्लैग को बंद करने पर,WindowInfoकोAndroidComposeView(I3b364) कंट्रोल करता हैComposeViewमें मौजूद सामान्य स्ट्रक्चर, शेयर की गईComposeViewContextमें ले जाए जाएंगे. यह पहला बदलाव है, जिसमेंCoroutineContextकोComposeViewContextमें बदला गया है.AndroidComposeUiFlags.isSharedComposeViewContextEnabledकी वैल्यू सही होने पर, वैल्यू अपने-आप शेयर हो जाती हैं. 'गलत है' पर सेट होने पर, इन्हें शेयर नहीं किया जाता. (I9364d, b/461566955)- इस अपडेट में, ट्रैकपैड के जेस्चर और ट्रैकपैड के इनपुट इवेंट को माउस में बदलने की सुविधा जोड़ी गई है. इस बदलाव के बाद, ट्रैकपैड पॉइंटर इवेंट को आम तौर पर माउस पॉइंटर के तौर पर रिपोर्ट किया जाएगा. ये इवेंट, टैबलेट या लैपटॉप जैसे डिवाइसों पर कर्सर को कंट्रोल करते हैं. इससे पॉइंटर स्लोप, स्क्रोलिंग, और होवर करने से जुड़ी परफ़ॉर्मेंस बेहतर होती है. पैन और स्केल के जेस्चर की जानकारी भी दी जाएगी. साथ ही, पॉइंटर इवेंट में हुए बदलावों के बारे में ज़्यादा जानकारी दी जाएगी. इसमें PointerEventType.Pan और PointerEventType.Scale के तौर पर नया PointerEventType होगा. इससे पता चलेगा कि ये वैल्यू सेट की जाएंगी (Id071a, b/315527861, b/459831570)
गड़बड़ियां ठीक की गईं
- टॉगल की जा सकने वाली प्रॉपर्टी में बदलाव करने के लिए,
CONTENT_CHANGE_TYPE_CHECKEDभेजें. (I6ac64, b/476894689, b/474538004, b/475754416)
बाहरी योगदान
androidx.compose.ui.graphics.NativePainttypealias का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, सीधेandroid.graphics.Paintका इस्तेमाल करें (I6303c, b/477394763)Paint.asFrameworkPaint()कोPaint.nativePaintएक्सटेंशन से बदलें, ताकिtypealiasके ज़रिएcommonMainसोर्ससेट में प्लैटफ़ॉर्म टाइप को शामिल न किया जा सके (I6303c, b/477394763)NumPadको मूव करने वाली कुंजियों (I1ff12) के लिए सहायता जोड़ी गई
वर्शन 1.11.0-alpha04
28 जनवरी, 2026
androidx.compose.ui:ui-*:1.11.0-alpha04 रिलीज़ हो गया है. वर्शन 1.11.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
runCurrent()को चालू करने के लिएTestCoroutineSchedulerको दिखाया गया है. इससे यह पक्का किया जा सकेगा कि शेयर किए गए शेड्यूलर इंस्टेंस को ऐक्सेस किया जा सके. (Iea662, b/254115946)- सुलभता सेटिंग से
android.R.id.accessibilityActionShowOnScreenके जवाब में, नेस्ट किए गए स्क्रोलिंग को ऊपर की ओर ले जाने की सुविधा जोड़ी गई. (Ib2723, b/431148846)
गड़बड़ियां ठीक की गईं
- Android के कस्टम आरजीबी कलर स्पेस के कन्वर्ज़न की समस्या ठीक की गई. कस्टम ग्रेस्केल ट्रांसफ़ॉर्म को, कस्टम कंपोज़ और Android RGB कलर स्पेस के बीच गलत तरीके से बदला गया था.(ebd45,b/377021410)
वर्शन 1.11.0-alpha03
14 जनवरी, 2026
androidx.compose.ui:ui-*:1.11.0-alpha03 रिलीज़ हो गया है. वर्शन 1.11.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposeUiTestFlags.isStandardTestDispatcherSupportEnabledफ़्लैग हटाया गया. v2run*ComposeUiTestऔरcreate*ComposeRuleएपीआई अब डिफ़ॉल्ट रूप सेStandardTestDispatcherका इस्तेमाल करते हैं.UnconfinedTestDispatcherका इस्तेमाल जारी रखने के लिए, बंद किए गए एपीआई के वैरिएंट का इस्तेमाल किया जा सकता है. हालांकि, हम को-रूटीन के एक्ज़ीक्यूशन पर बेहतर कंट्रोल पाने के लिए, v2 एपीआई पर माइग्रेट करने का सुझाव देते हैं. (Iecc9c, b/455601592)androidx.compose.ui.test.junit4.v2.create*ComposeRuleएपीआई लॉन्च किए गए. ये नए एपीआई, डिफ़ॉल्ट रूप सेStandardTestDispatcherका इस्तेमाल करते हैं. इससे प्रोडक्शन के व्यवहार को बेहतर तरीके से सिम्युलेट किया जा सकता है. इसमें को-रूटीन को तुरंत लागू करने के बजाय, उन्हें लाइन में लगाया जाता है. ज़्यादा जानकारी के लिए, माइग्रेशन से जुड़ी गाइडलाइन देखें. (I1870e, b/254115946)androidx.compose.ui.test.v2.run*ComposeUiTestएपीआई लॉन्च किए गए. ये नए एपीआई, डिफ़ॉल्ट रूप सेStandardTestDispatcherका इस्तेमाल करते हैं. इससे प्रोडक्शन के व्यवहार को बेहतर तरीके से सिम्युलेट किया जा सकता है. इसमें को-रूटीन को तुरंत लागू करने के बजाय, उन्हें लाइन में लगाया जाता है. ज़्यादा जानकारी के लिए, माइग्रेशन से जुड़ी गाइडलाइन देखें. (I4f782, b/254115946)- अब
ComposeViewमें मौजूद सामान्य स्ट्रक्चर शेयर किए जा सकते हैं.ComposeUiFlags.isSharedComposeViewContextEnabledकी वैल्यू सही होने पर, वैल्यू अपने-आप शेयर हो जाती हैं. 'गलत है' पर सेट होने पर, इन्हें शेयर नहीं किया जाता. (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)
गड़बड़ियां ठीक की गईं
- इस अपडेट में, उस बग को ठीक किया गया है जिसमें
ComposeViewसे सारा कॉन्टेंट हटाने पर, ड्रॉ किया गया कॉन्टेंट नहीं हटता था. (I8b382, b/299503084) LookaheadScopeके साथ ऐनिमेशन किए जाने पर, रोके जा सकने वाले कंपोज़िशन के क्रैश होने की समस्या ठीक की गई. (I7e649, b/469669851)- उस समस्या को ठीक कर दिया गया है जिसकी वजह से, पासवर्ड अपने-आप भरने की सेवा को बहुत लंबी स्ट्रिंग ट्रांसमिट करने पर, ऐप्लिकेशन क्रैश हो जाता था. ऐसा न हो, इसके लिए अब टेक्स्ट को भेजने से पहले, मान्य लंबाई के हिसाब से अपने-आप छोटा कर दिया जाता है.
- इस अपडेट में, उस गड़बड़ी को ठीक किया गया है जिसमें कुछ खास स्थितियों में, कर्सर हटाने पर क्लिक हो जाता था (a3d5a0f)
- यह कुंडलिका के होवर इवेंट को टेस्ट के लिए भेजने की समस्या को ठीक करता है. साथ ही, नई कुंडलिका के टेस्ट के लिए माउस टेस्ट तैयार करता है. (9ca9bc9)
- यह कुकी, पॉइंटर इनपुट की मदद से यूज़र इंटरफ़ेस (यूआई) एलिमेंट को हटाने/जोड़ने की सुविधा के लिए सहायता जोड़ती है. (d0742b0, b/BUD_ID)
- Jetpack Compose
Popupमें मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें ऐंकर बाउंड के ऐब्सलूट कोऑर्डिनेट,PopupPositionProviderको पास किए जा रहे थे. इस वजह से, पॉप-अप गलत जगह पर दिख रहे थे. पॉप-अप की पोज़िशन का हिसाब लगाने के लिए, अब सही रिलेटिव कोऑर्डिनेट का इस्तेमाल किया जाता है.(1f7edf,b/469940907)
वर्शन 1.11.0-alpha02
17 दिसंबर, 2025
androidx.compose.ui:ui-*:1.11.0-alpha02 रिलीज़ हो गया है. वर्शन 1.11.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MultiModalInjectionScopeएपीआई अब स्थिर हो गए हैं. इसमेंperformKeyInputऔरperformRotaryScrollInputके साथ-साथ, इनके मुख्य और रोटरी एपीआई भी शामिल हैं. एक्सपेरिमेंट के तौर पर जोड़े गए एनोटेशन को हटा दिया गया है. (Ie8bbc, b/261561237)- इस कुकी से, ट्रैकपैड टेस्टिंग एपीआई जोड़े जाते हैं. ये माउस टेस्टिंग एपीआई की तरह होते हैं. ये ऐसे इवेंट इंजेक्ट करते हैं जो टैबलेट या लैपटॉप के ट्रैकपैड के व्यवहार की नकल करते हैं. मुख्य एंट्री पॉइंट
SemanticsNodeInteraction.performTrackpadInputऔरMultiModalInjectionScope.trackpad(I2ce67), b/432326139 हैं.
गड़बड़ियां ठीक की गईं
- माउस के पहिए को स्क्रोल करने के इनपुट की इंटरोऑपरेबिलिटी से जुड़ी समस्या ठीक की गई है. अब यह सिर्फ़ तब इस्तेमाल होगा, जब इसे Compose में इस्तेमाल किया गया हो. अगर इसे Compose में डिसपैच किया गया था, तो इसका इस्तेमाल नहीं किया जाएगा. (I5e0c4),
वर्शन 1.11.0-alpha01
03 दिसंबर, 2025
androidx.compose.ui:ui-*:1.11.0-alpha01 रिलीज़ हो गया है. वर्शन 1.11.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह कुकी,
isSemanticAutofillEnabledयूज़र इंटरफ़ेस (यूआई) फ़्लैग को हटाती है, क्योंकि सिमैंटिक ऑटोमैटिक जानकारी भरने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. (I849cf, b/455587954) findNearestAncestorको खोजने के लिए, ट्रैवर्स किए जा सकने वाले तरीके में बदलाव किया गया है, ताकि काम के नोड खोजे जा सकें. अब ट्रैवर्सल के दौरान, एक ही तरह के डेलिगेट (NodeKind) दिखेंगे. इस बदलाव कोisTraversableDelegatesFixEnabledफ़्लैग से सुरक्षित किया गया है. (Ia3165, b/280804097)ANI#isTextEntryKeyके लिएTextEntryKeyमैपिंग जोड़ी गई (Ifde7b, b/399540654)Modifier.onFirstVisible()को बंद कर दिया गया है, क्योंकि इसका व्यवहार गुमराह करने वाला है. साथ ही, यह हमेशा नाम के हिसाब से काम नहीं करता. उदाहरण के लिए, जब इसेLazyColumnके किसी आइटम में जोड़ा जाता है, तो स्क्रोल करने के बाद यह आइटम दिखने पर, इस कॉलबैक को हर बार कॉल किया जाएगा. इस नाम वाले मॉडिफ़ायर का इस्तेमाल करने वाले लोगों को शायद यह नतीजा न मिले. हमारा सुझाव है कि इसके बजायModifier.onVisibilityChanged()का इस्तेमाल करें. साथ ही, मैन्युअल तरीके से ट्रैक करें कि लेआउट पहले से दिख रहा था या नहीं. यह इस बात पर निर्भर करता है कि इस्तेमाल के खास उदाहरण की क्या ज़रूरत है. (Ia7095, b/447601783)MeasuredSizeAwareModifierNodeको लॉन्च किया गया है. इसकी ज़रूरत तब पड़ती है, जब आपकोonRemeasured()कॉलबैक की ज़रूरत होती है. जब आपको अन्य कॉलबैक की ज़रूरत न हो, तब कृपया ज़्यादा सामान्यLayoutAwareModifierNodeका इस्तेमाल करने के बजाय, सीधे इस इंटरफ़ेस का इस्तेमाल करें. (If6fb0)
वर्शन 1.10
वर्शन 1.10.6
25 मार्च, 2026
androidx.compose.ui:ui-*:1.10.6 रिलीज़ हो गया है. वर्शन 1.10.6 में ये बदलाव शामिल हैं.
वर्शन 1.10.5
11 मार्च, 2026
androidx.compose.ui:ui-*:1.10.5 रिलीज़ हो गया है. वर्शन 1.10.5 में ये बदलाव शामिल हैं.
वर्शन 1.10.4
25 फ़रवरी, 2026
androidx.compose.ui:ui-*:1.10.4 रिलीज़ हो गया है. वर्शन 1.10.4 में ये बदलाव शामिल हैं.
वर्शन 1.10.3
11 फ़रवरी, 2026
androidx.compose.ui:ui-*:1.10.3 रिलीज़ हो गया है. वर्शन 1.10.3 में ये बदलाव शामिल हैं.
वर्शन 1.10.2
28 जनवरी, 2026
androidx.compose.ui:ui-*:1.10.2 रिलीज़ हो गया है. वर्शन 1.10.2 में ये बदलाव शामिल हैं.
वर्शन 1.10.1
14 जनवरी, 2026
androidx.compose.ui:ui-*:1.10.1 रिलीज़ हो गया है. वर्शन 1.10.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LookaheadScopeकी मदद से ऐनिमेशन किए जाने पर, रोके जा सकने वाले कंपोज़िशन के क्रैश होने की समस्या को ठीक किया गया (I7e649, b/469669851)- Jetpack Compose
Popupमें मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें ऐंकर बाउंड के ऐब्सलूट कोऑर्डिनेट,PopupPositionProviderको पास किए जा रहे थे. इस वजह से, पॉप-अप गलत जगह पर दिख रहे थे. पॉप-अप की पोज़िशन का हिसाब लगाने के लिए, अब सही रिलेटिव कोऑर्डिनेट का इस्तेमाल किया जाता है.(1f7edf,b/469940907)
वर्शन 1.10.0
03 दिसंबर, 2025
androidx.compose.ui:ui-*:1.10.0 रिलीज़ हो गया है. वर्शन 1.10.0 में ये बदलाव शामिल हैं.
वर्शन 1.10.0-rc01
19 नवंबर, 2025
androidx.compose.ui:ui-*:1.10.0-rc01 रिलीज़ हो गया है. वर्शन 1.10.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब
minDurationMsकी वैल्यू शून्य नहीं होती है, तबvisibilityChangedकॉलबैक को 'गलत' वैल्यू के साथ सही तरीके से भेजें. (2ac08b8, b/456384555) - जब नोड शुरू में नहीं दिखता है, तब
onVisibilityChangedकॉलबैक को कॉल न करें. (3969e8d, b/447364998)
वर्शन 1.10.0-beta02
05 नवंबर, 2025
androidx.compose.ui:ui-*:1.10.0-beta02 रिलीज़ हो गया है. वर्शन 1.10.0-beta02 में ये बदलाव शामिल हैं.
वर्शन 1.10.0-beta01
22 अक्टूबर, 2025
androidx.compose.ui:ui-*:1.10.0-beta01 रिलीज़ हो गया है. वर्शन 1.10.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह कुकी, फ़ोकस बदलने के लिए डिसपैचिंग की सुविधा को ऑप्टिमाइज़ करती है. इसे
isOptimizedFocusEventDispatchEnabled = false(I919fb, b/449228515) की मदद से बंद किया जा सकता है - यह सभी इनडायरेक्ट टच एपीआई को अपडेट करता है, ताकि वे पॉइंटर इनपुट एपीआई से मैच करने के लिए, इनडायरेक्ट पॉइंटर एपीआई के नाम का इस्तेमाल कर सकें. (I238ce, b/451607214)
TextDirection,TextAlign,Hyphens,FontSynthesisvalueOfफ़ंक्शन को अब कोई ऐसी वैल्यू मिलने परIllegalArgumentExceptionदिखता है जिसके बारे में उसे जानकारी नहीं है. (I07c67)- रैपर फ़ंक्शन के बजाय डिफ़ॉल्ट वैल्यू पास करने के लिए,
CompositionDataTree.makeTreeको अपडेट करें. (Id64a6, b/445229688) - टेस्ट रूल वाले एपीआई
createComposeRule,createAndroidComposeRule, औरcreateEmptyComposeRule,effectContextपैरामीटर को स्वीकार करते हैं. ये एपीआई स्टेबल हैं और पैरामीटर डिफ़ॉल्ट रूप सेEmptyCoroutineContextपर सेट होता है. (If400c, b/450540702) UnplacedStateAwareModifierNodeका नाम बदलकरUnplacedAwareModifierNodeकर दिया गया (I6a551, b/449719932)- कॉन्टेंट कैप्चर ऑप्टिमाइज़ेशन (Ic000b, b/442364065) को पहले जैसा करें
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabledफ़ीचर फ़्लैग जोड़ा गया. इससे परफ़ॉर्मेंस ऑप्टिमाइज़ेशन चालू हो गया. इसमेंLayoutCoordinates.positionInRoot()जैसे कोऑर्डिनेट के अनुरोध, हर कॉल पर पूरे ट्री को ट्रैवर्स करने के बजाय,RectManagerमें मौजूद पहले से कैश किए गए ऑफ़सेट का इस्तेमाल कर रहे हैं. (Ieaadc)
गड़बड़ियां ठीक की गईं
PlaceholderSpanअब साइज़ के लिए, नॉन-लीनियर फ़ॉन्ट स्केलिंग का सही तरीके से इस्तेमाल करता है (Id2ead, b/324462728)- प्लैटफ़ॉर्म लेवल पर काम करने वाले हैप्टिक फ़ीडबैक कॉन्स्टेंट को लागू करने के लिए,
ViewCompatका इस्तेमाल करें. साथ ही, नए कॉन्स्टेंट के लिए फ़ॉलबैक सपोर्ट पर भरोसा करें. (Ib5a00)
वर्शन 1.10.0-alpha05
08 अक्टूबर, 2025
androidx.compose.ui:ui-*:1.10.0-alpha05 रिलीज़ हो गया है. वर्शन 1.10.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए पॉप-अप को स्क्रीन के सबसे ऊपर गलत तरीके से दिखाने वाली गड़बड़ी को ठीक किया गया है. अब ये अपने पैरंट पॉप-अप से सही तरीके से जुड़ जाते हैं. (Id4603, b/191279752)
- फ़ोकस रैपिंग की समस्या को ठीक किया गया है. यह समस्या, क्रम में मौजूद अन्य व्यू के साथ होती थी. (I95223, b/446028624)
- Kotlin 2.2.20 (I9855d, b/447110005) से जनरेट किए गए लैम्डा में, इंस्पेक्टर से गायब इनलाइन पैरामीटर वाले फ़ील्ड ठीक किए गए
- यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन मॉड्यूल के बीच, ऑटोमैटिक भरने की सुविधा के संसाधनों के नाम में बदलाव करने से जुड़ी समस्या ठीक की गई है (I5da5a)
बाहरी योगदान
UiModesऑब्जेक्ट का नाम बदलकर AndroidUiModes कर दिया गया है, ताकि यह पता चल सके कि इसके कॉन्स्टेंट, Android API से लिए गए हैं. (Ia0a77)
वर्शन 1.10.0-alpha04
24 सितंबर, 2025
androidx.compose.ui:ui-*:1.10.0-alpha04 रिलीज़ हो गया है. वर्शन 1.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose test rule variant,
CoroutineContextपैरामीटर को स्वीकार करता है. इसे स्टेबल वर्शन में प्रमोट कर दिया गया है. एक्सपेरिमेंट के तौर पर उपलब्ध एनोटेशन को हटा दिया गया है. साथ ही, डेवलपर को अब इस एपीआई का इस्तेमाल करने के लिए ऑप्ट-इन करने की ज़रूरत नहीं है. (I74e6e) ComposeUiFlags.isRectTrackingEnabledहटाया गया. यह लॉजिक हमेशा चालू नहीं रहता. (Id78df)Updater#setके इनलाइन ओवरलोड को बंद कर दिया गया है, क्योंकि वे दी गई वैल्यू को कई बार बॉक्स में डालते थे (Id679e)onAutofillTextसिमैंटिक प्रॉपर्टी को 'अब काम नहीं करती' के तौर पर मार्क करें. (I6f81c)UnplacedStateAwareModifierNodeको लॉन्च किया गया था. यह एक कॉलबैक उपलब्ध कराता है. इसे तब कॉल किया जाता है, जब पहले से सेट किया गया लेआउट अब सेट नहीं किया जाता. (I8fdd8, b/309776096)RetainObserver.onRetainedके दस्तावेज़ में सुधार किया गया है. साथ ही,RetainObserver.onUnusedजोड़ा गया है, जोRememberObserver.onAbandonedकी तरह काम करता है. (Ia6fc5)onVisibilityChangedNode()जोड़ा गया है, जोModifier.Nodeबना रहा है. इसका इस्तेमालModifier.onVisibilityChanged(), डेलिगेशन के ज़रिए कर रहा है. इससे आपको अपने कस्टमModifier.Nodeमें इस सुविधा को बढ़ाने में मदद मिलती है. (I70d84, b/443001320)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, कई लाइनों वाले टेक्स्ट की आखिरी लाइन में मौजूद इनलाइन कॉन्टेंट रेंडर नहीं हो रहा था. ऐसा तब हो रहा था, जब प्लेसहोल्डर को टेक्स्ट के उस हिस्से से पहले रखा गया था जिसे छोटा किया गया था. (I76aaf, b/441829208)
वर्शन 1.10.0-alpha03
10 सितंबर, 2025
androidx.compose.ui:ui-*:1.10.0-alpha03 रिलीज़ हो गया है. वर्शन 1.10.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DelegatableNode.invalidateLayoutForSubtreeका नाम बदलकरDelegatableNode.invalidateMeasurementForSubtreeकर देता है. (I94257, b/430106107)- यह फ़ंक्शन, काम न करने वाले
isInHiddenAccessibilitySubtreeमैच करने वाले फ़ंक्शन को हटाता है. (I4476c, b/443792965) - इसमें ग्रुप की पर आधारित कंपोज़ स्टैक ट्रेस की सुविधा जोड़ी गई है. यह सुविधा, छोटे किए गए सभी ऐप्लिकेशन के लिए डिफ़ॉल्ट रूप से चालू होती है. इन ट्रेस के लिए ProGuard मैपिंग, Compose कंपाइलर Gradle प्लगिन जनरेट करेगा. यह सुविधा, 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)WindowInfoमें डीपी पर आधारित विंडो का साइज़ उपलब्ध कराएं (I9322b, b/424442112)isNestedScrollDispatcherNodeFixEnabledफ़्लैग हटाया गया. (If451a)FillableDataएपीआई में, ऑटोमैटिक भरने की सुविधा में तारीख की वैल्यू के लिए सहायता जोड़ी गई.val dateMillisValue: Longको तारीख की जानकारी पाने के लिए जोड़ा गया है. साथ ही, तारीख के आधार परFillableDataइंस्टेंस बनाने के लिए, इससे जुड़ाFillableData(dateMillisValue: Long)कंस्ट्रक्टर जोड़ा गया है. (Id072a)
बाहरी योगदान
UiModesऑब्जेक्ट को इसलिए पेश किया गया है, ताकि उन कॉन्स्टेंट का एलान किया जा सके जिनका इस्तेमालUiModeएनोटेशन (I03cb8) के लिए किया जाता है
वर्शन 1.10.0-alpha02
27 अगस्त, 2025
androidx.compose.ui:ui-*:1.10.0-alpha02 रिलीज़ हो गया है. वर्शन 1.10.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
FillableDataको अपडेट करें, ताकि यह गैर-टेक्स्ट कॉम्पोनेंट के साथ काम कर सके. जैसे, टॉगल और सूचियां. इसमेंFillableDataके अंदर बूलियन और पूर्णांक वैल्यू शामिल हैं. साथ ही, फ़ैक्ट्री कंस्ट्रक्टर, ताकिFillableDataके बूलियन और सूची इंस्टेंस बनाए जा सकें. ये इंस्टेंस, प्लैटफ़ॉर्म केAutofillValueमें बदल जाते हैं. इससे मिलती-जुलती सिमैंटिक प्रॉपर्टी और कार्रवाई भी जोड़ दी जाती है. (Ia8105, Icc5cf)- बिना टच वाले मोड में, व्यू सिस्टम स्क्रीन पर मौजूद फ़ोकस किए जा सकने वाले किसी आइटम को शुरुआती/डिफ़ॉल्ट फ़ोकस असाइन करता है. इस सुविधा को Compose में जोड़ा गया है. इसे
ComposeUiFlags.isInitialFocusOnFocusableAvailableको चालू करके इस्तेमाल किया जा सकता है. (Ib9178) isPointerInteropFilterDispatchingFixEnabledफ़्लैग हटाया गया. (Iaa589)isNestedScrollInteropPostFlingFixEnabledफ़्लैग हटाया गया. (I2a756)isHiddenFromAccessibility()औरisInHiddenAccessibilitySubtree()सिमैंटिक मैचिंग की सुविधा जोड़ें. (I9f5a1)- शेड्यूलर पर सभी टास्क चलाने के लिए,
MainTestClockमेंrunCurrent()जोड़ा गया. ऐसाStandardTestDispatcherपर टेस्ट चलाने के लिए किया जाता है. इसमें, टास्क को शेड्यूलर में जोड़ा जाता है. अगर टास्क में 0 मि॰से॰ की देरी होती है, तो उन्हें तुरंत पूरा नहीं किया जाता.StandardTestDispatcherका इस्तेमाल करने के लिए, टेस्ट को सेट अप किया जा सकता है. इसके लिए,ComposeTestRuleको बनाएं और उसमेंStandardTestDispatcherपास करें. डिफ़ॉल्ट रूप से, टेस्टUnconfinedTestDispatcherपर चलाए जाते हैं. ऐसे में,runCurrent()को कभी भी कॉल नहीं करना पड़ेगा. StandardTestDispatcherपर टेस्ट चलाने की सुविधा जोड़ी गई. पहले, टेस्ट फ़्रेमवर्क कोUnconfinedTestDispatcherका इस्तेमाल करके सेट अप किया जाता था. अब भी ऐसा किया जाता है. यह प्रोडक्शन एनवायरमेंट से कुछ मामलों में अलग होता है. अब इस सेटअप को बदला जा सकता है. इसके लिए, आपको अपनाStandardTestDispatcherबनाना होगा. इसके बाद,ComposeTestRuleबनाते समय (या runComposeUiTest को कॉल करते समय), इसेeffectContextमें जोड़ना होगा. (I334d0, b/254115946)SlotTreeसे नोड का ट्री बनाने के लिए कोड अपडेट करें. (I997d3)
गड़बड़ियां ठीक की गईं
- Compose यूज़र इंटरफ़ेस (यूआई) अब Android पर, लाइफ़साइकल के बारे में जानकारी रखने वाला
RetainScopesइंस्टॉल करता है. डिफ़ॉल्ट सेटिंग के तहत, कॉन्फ़िगरेशन में बदलाव होने पर भीretainवैल्यू बनी रहेंगी. (Id4a09, b/177562901)
बाहरी योगदान
- इस सुविधा की मदद से,
VelocityTrackerप्लैटफ़ॉर्म के हिसाब से ट्रैक किए गए पॉइंटर इवेंट के आधार पर, पॉइंटर की वेलोसिटी का हिसाब लगा सकता है. (I621e8)
वर्शन 1.10.0-alpha01
13 अगस्त, 2025
androidx.compose.ui:ui-*:1.10.0-alpha01 रिलीज़ हो गया है. वर्शन 1.10.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposeViewमें माउस या टचपैड से पॉइंटर डाउन करने पर, अब फ़ोकस अपने-आप हट जाएगा. ऐसा तब होगा, जब पॉइंटर डाउन, फ़ोकस किए गए नोड की सीमाओं के अंदर नहीं होगा. इससे "टैप करके फ़ोकस हटाएं" वाला यूज़र एक्सपीरियंस मिलता है. पॉइंटर इनपुट डिवाइसों का इस्तेमाल करते समय, यह यूज़र एक्सपीरियंस मौजूदा यूज़र एक्सपीरियंस से ज़्यादा बेहतर होता है. इस सुविधा से ऑप्ट-आउट करने के लिए, नएAbstractComposeView.isClearFocusOnPointerDownEnabledएपीआई का इस्तेमाल किया जा सकता है. (I6322b, b/282963174)- टेक्स्ट के अलावा, अलग-अलग तरह के ऑटिफ़िल कॉम्पोनेंट के लिए
FillableDataइंटरफ़ेस लॉन्च किया गया है. (If9bd2) - शेयर किए गए एलिमेंट को डाइनैमिक तरीके से चालू और बंद करने की अनुमति देने वाला नया एपीआई. इससे यह भी पता चलता है कि शेयर किए गए एलिमेंट का ट्रांज़िशन पहले से चल रहा है या नहीं. नया एपीआई, ट्रांज़िशन के दौरान टारगेट किए गए शेयर किए गए एलिमेंट को हटाने पर, टारगेट की गई दूसरी सीमाएं सेट अप करने के लिए.
LookaheadScopeकाLayoutCoordinatesपाने के लिए नया एपीआई. (I18dd4, b/409819304, b/395670637) - नेस्ट किए गए स्क्रोल इंटरऑप को सही पूर्णांक भेजने के एक्सपेरिमेंट को कंट्रोल करने के लिए, फ़्लैग
isNestedScrollInteropIntegerPropagationEnabledजोड़ा गया है. (If8316) requestFocusForChildInRootBounds()मेंDelegatableNodeजोड़ा गया, ताकि फ़ोकस को उस चाइल्ड पर ले जाया जा सके जो दिए गए रेक्ट के साथ ओवरलैप करता है. (I001ef)- फ़्लैग हटाए गए
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) SemanticsNodeफ़ाइंडर और सिलेक्टर फ़ंक्शन पर@CheckResultएनोटेशन जोड़ा गया है, ताकि रिटर्न की गई वैल्यू का इस्तेमाल किया जा सके. (I6f86e, b/201652748)- कॉन्टेंट कैप्चर करने की प्रोसेस की परफ़ॉर्मेंस को बेहतर बनाएं (I3c7c0)
CompositionLocalपेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट किए गए हिस्से के ब्रश में बदलाव करने के लिए किया जा सकता है. (I52329)- नया इंटरपोलेटबल इंटरफ़ेस जोड़ा गया है. इससे अलग-अलग टाइप के बीच अपने-आप इंटरपोलेशन हो जाता है. हालांकि, इसके लिए यह ज़रूरी है कि एक टाइप को दूसरे टाइप में बदलने का तरीका पता हो. इस इंटरफ़ेस का इस्तेमाल, कंपोज़ के कई टाइप में किया जाता है. जैसे, ब्रश और शेप. हालांकि, इसका इस्तेमाल बाहरी तौर पर भी किया जा सकता है. (I58eab)
- अब Scrollable, माउस के पहिए को दो डाइमेंशन में घुमाने के इवेंट को बेहतर तरीके से सपोर्ट करता है.
MouseInjectionScopeमें इस्तेमाल के उदाहरणों की जांच करने के लिए, एक नया टेस्ट एपीआई उपलब्ध कराया गया है. हमनेMouseInjectionScopeमें स्क्रोल करने के तरीकों के लिए एक नया ओवरलोड भी पेश किया है. साथ ही, नई सुविधा को कंट्रोल करने के लिए एक फ़्लैग भी पेश किया है, जिसेisMouseWheel1DAxisLockingEnabled(I136df) कहा जाता है - कीबोर्ड टाइप और स्थिति, नेविगेशन टाइप और स्थिति, टचस्क्रीन की स्थिति, और यूज़र इंटरफ़ेस (यूआई) मोड टाइप (I282f0) के लिए
DeviceConfigurationOverridesजोड़ें Tightनाम का नयाLineHeightStyle.Modeजोड़ा गया. इस मोड की मदद से, लाइन की ऊंचाई को कम किया जा सकता है. भले ही, इससे बड़े ग्लिफ़ कट जाएं. (Id3849)BaselineShiftमें अब Unspecified वैल्यू है, ताकि बॉक्सिंग को रोका जा सकेBaselineShift,Hyphens,LineBreak,TextAlign, औरTextDirectionमें अबisSpecifiedहेल्पर फ़ंक्शन हैंHyphens,TextAlign,TextDecoration, औरTextDirectionमें अबvalueOf()और वैल्यू के तरीके हैं, ताकि सीरियलाइज़ेशन/डीसीरियलाइज़ेशन को बेहतर तरीके से किया जा सके. (I8d44c)getDisplayNameका नया तरीका जोड़ा गया है, ताकि झलक वाले पैरामीटर इंस्टेंस के लिए कस्टम डिसप्ले नेम इस्तेमाल किए जा सकें. (I19bdf, b/241699422)- Dp वैल्यू की तुलना Unspecified से करने पर, अब हमेशा false वैल्यू मिलती है. ऐसा, less-than या greater-than का इस्तेमाल करने पर होता है.
Dp.compareTo(Unspecified)का इस्तेमाल करने पर, हमेशा 0 दिखता है.ComposeUiUnitFlags.isDpCompareToChangedफ़्लैग को 'गलत' पर सेट करने से,Dp.compareTo()पहले की तरह काम करेगा. इसमें Unspecified की तुलना less-than और greater-than से करने पर, हमेशा 'गलत' नहीं मिलता है. साथ ही,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में, प्लैटफ़ॉर्म के हिसाब से स्टेट एन्कोडिंग की सुविधा अब हमेशा चालू रहती है. इससे टेस्ट का व्यवहार, ऐप्लिकेशन की स्थिति को वापस लाने के असली तरीके के साथ अलाइन हो जाता है. जैसे, Android पर पार्सल बनाना. (I38211, b/408154192, b/382294247)- फ़ोकस का अनुरोध करते समय कभी-कभी क्रैश होने की समस्या ठीक की गई है. (57b31a11, b/431111149)
वर्शन 1.9
वर्शन 1.9.5
19 नवंबर, 2025
androidx.compose.ui:ui-*:1.9.5 रिलीज़ हो गया है. वर्शन 1.9.5 में ये बदलाव शामिल हैं.
वर्शन 1.9.4
22 अक्टूबर, 2025
androidx.compose.ui:ui-*:1.9.4 रिलीज़ हो गया है. वर्शन 1.9.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें कई लाइनों वाले टेक्स्ट की आखिरी लाइन पर मौजूद इनलाइन टेक्स्ट कॉन्टेंट गायब हो जाता था. ऐसा तब होता था, जब इनलाइन कॉन्टेंट, टेक्स्ट के उस हिस्से में मौजूद नहीं होता था जिसे छोटा किया गया हो. (I76aaf, b/441829208)
- उस समस्या को ठीक किया गया है जिसकी वजह से
debounceMillisके शून्य न होने पर,onLayoutRectChangedमॉडिफ़ायर के कॉलबैक हमेशा कॉल नहीं किए जाते थे. (72aba47, b/445324854)
वर्शन 1.9.3
08 अक्टूबर, 2025
androidx.compose.ui:ui-*:1.9.3 रिलीज़ हो गया है. वर्शन 1.9.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें लेआउट को एक जगह से दूसरी जगह ले जाने पर,
onVisibilityChanged/onFirstVisible/onLayoutRectChangedमॉडिफ़ायर को कॉलबैक नहीं मिल रहे थे. ऐसा तब होता था, जब लेआउट में 170 से ज़्यादा डिसेंडेंट होते थे. (4f2fdd, b/445356774)
वर्शन 1.9.2
24 सितंबर, 2025
androidx.compose.ui:ui-*:1.9.2 रिलीज़ हो गया है. वर्शन 1.9.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
Modifier.onVisibilityChanged()अब किसी नोड को अलग करने या फिर से इस्तेमाल करने पर सही तरीके से ट्रिगर होता है. (Ic5ce20)Modifier.onVisibilityChanged()औरonLayoutRectChanged()अब माता-पिता के लेआउट को सही तरीके से मैनेज करते हैं. इसके लिए, बच्चों को रखने के लिएplaceWithLayer()का इस्तेमाल किया जाता है. (Ia05ac9)Modifier.onVisibilityChanged()औरonLayoutRectChanged()के लिए, खास मामलों में सही तरीके से सूचना दें. जैसे, लेयर/लेयर मॉडिफ़ायर हटाना या लेयर की प्रॉपर्टी अपडेट करना. (Ia05ac)
वर्शन 1.9.1
10 सितंबर, 2025
androidx.compose.ui:ui-*:1.9.1 रिलीज़ हो गया है. वर्शन 1.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस अपडेट में, एक रंग का इस्तेमाल करने वाले वेक्टर ड्रॉएबल का इस्तेमाल करते समय, रंग से जुड़ी समस्या को ठीक किया गया है. साथ ही,
fillColorन तो पूरी तरह से अपारदर्शी है और न ही पूरी तरह से पारदर्शी है. (I3b041, b/328677973)
वर्शन 1.9.0
13 अगस्त, 2025
androidx.compose.ui:ui-*:1.9.0 रिलीज़ हो गया है. वर्शन 1.9.0 में ये बदलाव शामिल हैं.
1.8.0 के बाद हुए अहम बदलाव
- वर्शन 1.9.0 में हुए अहम बदलावों के बारे में इस ब्लॉग पोस्ट में बताया गया है
- Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.propertiesमेंandroid.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद के वर्शन की ज़रूरत होती है. - बदलाव:
graphicsLayerमॉडिफ़ायर नोड अबSemanticsModifierNodeलागू करता है. इससे सिमैंटिक्स ट्री में नएSemanticsNodesजुड़ सकते हैं. इसलिए, सिमैंटिक्स ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट में गड़बड़ियां हो सकती हैं. उदाहरण के लिए, अगर मौजूदा नोड और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है, तोonChild,onParent,onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट फ़ेल हो सकते हैं. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर परtestTagजोड़ें. एक और तरीका है कि आपonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))जैसे लूज़र मैचिंग वाले मैचिंग टाइप का इस्तेमाल करें. (I638b5)
वर्शन 1.9.0-rc01
30 जुलाई, 2025
androidx.compose.ui:ui-*:1.9.0-rc01 रिलीज़ हो गया है. वर्शन 1.9.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें थीम के हिसाब से रंग वाले आइकॉन, सिस्टम की थीम में बदलाव होने पर अपडेट नहीं होते थे. ये आइकॉन,
painterResourceके ज़रिए लोड किए जाते थे. (I85ea0, b/424416571) - एपीआई 21(लॉलीपॉप) और 28(पाई) में होने वाली गड़बड़ियों को ठीक करता है. इन गड़बड़ियों में, ऑप्टिमाइज़ेशन के दौरान अहम ग्राफ़िक्स के तरीकों के नाम बदल दिए गए थे. (Iebf99, b/425120571, b/420462749)
- पक्का करें कि नए जोड़े गए
onLayoutRectChangedमॉडिफ़ायर को शुरुआत में वापस कॉल किया जाए. (l9aa91), (lb348a) - ऑफ़सेट कैश को गलत तरीके से अमान्य किए जाने की समस्या को ठीक किया गया है. इसकी वजह से,
onLayoutRectChangedमॉडिफ़ायर को गलत कोऑर्डिनेट (ibd4cd), (lddc57) के साथ कॉल किया जाता था - रोटेट किए गए/तिरछे लेआउट के लिए,
onLayoutRectChangedमॉडिफ़ायर से गलत कोऑर्डिनेट मिलने की समस्या ठीक की गई (lddc57, b/426750475)
बाहरी योगदान
- उस समस्या को ठीक किया गया है जिसकी वजह से स्क्रोल करने पर,
LazyListमें मौजूदdragAndDropSourceआइटम गायब हो जाते थे. धन्यवाद, विक्टर रेंडिना! (dc3bcd3, b/425894792)
वर्शन 1.9.0-beta03
16 जुलाई, 2025
androidx.compose.ui:ui-*:1.9.0-beta03 रिलीज़ हो गया है. वर्शन 1.9.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस अपडेट में, उस समस्या को ठीक किया गया है जिसकी वजह से एक जैसी धुंधली इनर शैडो, ऑफ़सेट के साथ सही तरीके से नहीं घूम रही थीं.
वर्शन 1.9.0-beta02
2 जुलाई, 2025
androidx.compose.ui:ui-*:1.9.0-beta02 रिलीज़ हो गया है. वर्शन 1.9.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह क्लास से मैच करने के लिए, कंपैनियन ऑब्जेक्ट को एक्सपेरिमेंटल में बदलता है. (I8452a)
isTrackFocusEnabledएक्सपेरिमेंटल फ़्लैग (I003fd) हटाया गया
गड़बड़ियां ठीक की गईं
- जब
WindowInsets,ComposeViewके कॉन्टेंट पर कोई असर नहीं डालता है, तबWindowInsetsRulersवैल्यू नहीं दी जाती हैं. (I71221)
वर्शन 1.9.0-beta01
18 जून, 2025
androidx.compose.ui:ui-*:1.9.0-beta01 रिलीज़ हो गया है. वर्शन 1.9.0-beta01 में ये बदलाव शामिल हैं.
नुकसान पहुंचा सकने वाले बदलाव
graphicsLayerमॉडिफ़ायर नोड अबSemanticsModifierNodeलागू करता है. इसकी वजह से, सिमैंटिक्स ट्री में नएSemanticsNodesजुड़ सकते हैं. इसलिए, सिमैंटिक्स ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट में गड़बड़ियां हो सकती हैं. उदाहरण के लिए, अगर मौजूदा नोड और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है, तोonChild,onParent,onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट फ़ेल हो सकते हैं. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर परtestTagजोड़ें. एक और तरीका है कि आपonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))जैसे लूज़र मैचिंग वाले मैचिंग टाइप का इस्तेमाल करें. (I638b5)
एपीआई में हुए बदलाव
ShadowContextको सील किए गए इंटरफ़ेस (I3ce40) के तौर पर बदला गया- यह कुकी, अलग-अलग मॉड्यूल में इनडायरेक्ट टच इवेंट बनाने का तरीका जोड़ती है. इसका इस्तेमाल टेस्टिंग के लिए किया जाता है (I22e4c)
IndirectTouchEvent.nativeEventको एक्सपेरिमेंट के तौर पर उपलब्ध कराता है. (I6fda5)- एपीआई काउंसिल से मिले सुझाव/राय के आधार पर, एपीआई सरफ़ेस में बदलाव करता है. (Ibf378)
FrameRateCategory.NoPreferenceकॉन्स्टेंट हटाएं.Modifier.requestedFrameRateका नाम बदलकरModifier.preferredFrameRateकर दें. (I2f976)WindowInsetsRulers:rulersIgnoringVisibilityको ज़्यादा से ज़्यादा पर सेट किया गया.getDisplayCutoutBounds()कोPlacementScopeके एक्सटेंशन फ़ंक्शन के तौर पर बदला गया.WindowInsetsAnimationPropertiesको बदलकरWindowInsetsAnimationकर दिया गया है औरgetAnimationProperties()को बदलकरgetAnimation()कर दिया गया है. (I3816f)- क्लास
ShadowParamsकोShadow(I11cca) में बदला गया - फ़्रेम रेट एपीआई के पैकेज को
androidx.compose.ui.uiसे बदलकरandroidx.compose.uiकरें (I8994e) InsetsRulersको बदलकर,WindowInsetsRulersनाम के सामान्य कोड में शामिल किया गया. एपीआई को आसान बनाया गया है, ताकि सभी इनसेटWindowInsetsRulersहों. नॉन-रूलर ऐनिमेशन प्रॉपर्टी कोAnimationPropertiesक्लास में एक्सट्रैक्ट किया गया.WindowInsetsRulers.innermostOf()का इस्तेमाल करके, कईWindowInsetsRulersको मर्ज किया जा सकता है. (I2f0c6, b/415012444)- Compose कंपाइलर से जोड़ी गई सोर्स जानकारी को पार्स करने के लिए, टूलिंग एपीआई जोड़ा गया. (Iceaf9, b/408492167)
गड़बड़ियां ठीक की गईं
isGetFocusedRectReturnEmptyEnabledके लिए फ़्लैग हटा दिया गया है, क्योंकि इस सुविधा की पूरी तरह से पुष्टि हो गई है. (Ife722)performScrollToNodeमें मौजूद एक गड़बड़ी को ठीक किया गया है. कुछ मामलों में, यह गड़बड़ी टारगेट नोड तक नहीं पहुंच रही थी. इस सुधार के बाद, इन मामलों में यह हमेशा टारगेट नोड तक पहुंचना चाहिए. इस बदलाव का एक साइड इफ़ेक्ट यह है कि कार्रवाई के आखिर में स्क्रोल करने की सटीक जगह अब अलग हो सकती है. इससे स्क्रीनशॉट टेस्ट और ऐसे टेस्ट पर असर पड़ता है जो स्क्रोल करने की सटीक जगह के बारे में अनुमान लगाते हैं. (I2c8a1)
वर्शन 1.9.0-alpha04
4 जून, 2025
androidx.compose.ui:ui-*:1.9.0-alpha04 रिलीज़ हो गया है. वर्शन 1.9.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पसंद के मुताबिक शैडो बनाने के लिए, मॉडिफ़ायर एपीआई जोड़े गए हैं. (I2058d, b/160665122)
- एक
SemanticsModifierNode.isImportantForBoundsप्रॉपर्टी जोड़ी गई है. इससे यह तय होता है कि बाउंड्री का हिसाब लगाते समय नोड को ध्यान में रखा जाना चाहिए या नहीं. डिफ़ॉल्ट रूप से, प्रॉपर्टी की वैल्यू सही होती है. इसे गलत पर सेट किया जा सकता है. इससे यह पता चलता है कि नोड को सीमाओं के लिए ध्यान में नहीं रखा जाना चाहिए. (I7ebec) - Android के लिए खास तौर पर तैयार की गई सिमैंटिक्स प्रॉपर्टी के बारे में बताने के लिए,
SemanticsPropertyKeyफ़ैक्ट्री फ़ंक्शन जोड़ा गया है. ये प्रॉपर्टी,AccessibilityNodeInfo.getExtrasके ज़रिए सुलभता से जुड़ी अतिरिक्त सुविधाओं के तौर पर उपलब्ध कराई जाती हैं. (I2ed51) ComposeUiFlags.isRemoveFocusedViewFixEnabledके इस्तेमाल को हटा दिया गया है और फ़्लैग को बंद कर दिया गया है. (I50328)- कस्टमाइज़ की जा सकने वाली नई शैडो फ़्रेमवर्क की सुविधा जोड़ी गई. इसमें
DropShadowPainterऔरInnerShadowPainterके साथ-साथDropShadow/InnerShadowकी डिपेंडेंसी भी शामिल हैं. शैडो इन्फ़्रास्ट्रक्चर को इस तरह से शेयर किया जाता है कि जनरेट की गई एक ही शैडो को कई कॉलसाइट पर शेयर किया जा सके. इसके लिए, शैडो को n बार फिर से जनरेट करने की ज़रूरत नहीं होती. (I24f7a, b/160665122) CompositeShaderऔरCompositeShaderBrushको पेश किया गया है. इससे दो शेडर के बीच कंपोज़िट किया गया नतीजा मिलता है. शेडर के लिए ट्रांसफ़ॉर्मेशन मैट्रिक्स सेट करने के लिए,ShaderBrush#transformभी जोड़ें. (I2621a, b/160665122)
गड़बड़ियां ठीक की गईं
NestedScrollInteropConnectionमें एक गड़बड़ी को ठीक किया गया है. इसमें फ़्लिंग के तरीके, व्यू के हिसाब से गलत क्रम में दिख रहे थे. (I56ad4)- इससे पहले, फ़ुल स्क्रीन पर दिखने वाले डायलॉग, डिसप्ले कटआउट वाले हिस्से में नहीं दिखते थे. इस बग को ठीक कर दिया गया है, ताकि
decorFitsSystemWindows = falseऔरusePlatformDefaultWidth = falseवाले डायलॉग, डिसप्ले कटआउट वाले हिस्से का इस्तेमाल कर सकें. (I9e975) - उस गड़बड़ी को ठीक किया गया है जिसमें Compose ऐप्लिकेशन के बैकग्राउंड में होने पर,
TalkBackके हरे रंग के फ़ोकस इंडिकेटर को चालू करने के बाद भी नहीं दिखाया जाता था. (Ifd12a)
वर्शन 1.9.0-alpha03
20 मई, 2025
androidx.compose.ui:ui-*:1.9.0-alpha03 रिलीज़ हो गया है. वर्शन 1.9.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledफ़्लैग की वजह से, जबComposeViewमें किसी भी चीज़ पर फ़ोकस नहीं किया जा सकता, तो यह रेक्ट को खाली वैल्यू पर सेट कर देता है. इससे फ़ोकस सर्च को, फ़ोकस करने के लिए व्यू चुनने से रोका जाता है. यह तब खास तौर पर ज़रूरी होता है, जब IME में NEXT विकल्प होता है और वहComposeViewपर फ़ोकस करने की कोशिश करता है औरrequestFocus()फ़ेल हो जाता है. (Ibd0e2, b/369256395)- फ़्लैग
isNestedScrollDispatcherNodeFixEnabledके बारे में जानकारी दें. (I0d24a) DialogProperties'dialogContentTitleका नाम बदलकरwindowTitle(Ibd27b) किया गयाModifier.onFirstVisibleऔरModifier.onVisibilityChangedमॉडिफ़ायर लॉन्च किए गए. येModifier.onLayoutRectChangedके ऊपर बनाए गए हाई लेवल मॉडिफ़ायर हैं. इन मॉडिफ़ायर को खास तौर पर, ऐप्लिकेशन की कई सामान्य ज़रूरतों को पूरा करने के लिए बनाया गया है. जैसे, इंप्रेशन लॉग करना, वीडियो अपने-आप चलना वगैरह. इन्हें परफ़ॉर्मेंस को ध्यान में रखकर बनाया गया है, ताकि इनका इस्तेमाल लिस्ट पर आधारित ज़रूरी स्थितियों में किया जा सके. साथ ही, स्क्रोल करने की परफ़ॉर्मेंस पर कोई असर न पड़े. इन मॉडिफ़ायर एपीआई के अलावा, इस्तेमाल के इन उदाहरणों के लिएRelativeLayoutBoundsअन्य एपीआई जोड़े गए हैं. साथ ही, डेवलपर के लिए ऐसे कस्टम मॉडिफ़ायर बनाना आसान हो गया है जो इस्तेमाल के उदाहरणों के हिसाब से सही हों. (I759b8)- इस सुविधा के आने वाले समय में होने वाले डेवलपमेंट को ध्यान में रखते हुए,
setDiagnosticStackTraceEnabledको एक्सपेरिमेंटल में बदलें. (I11db3) - स्टेट बनाने के लिए,
Modifier.scrollable2D,Scrollable2DState, और कंपैनियन एपीआई पेश किए गए हैं. इसके अलावा, स्क्रोल एक्सटेंशन के सामान्य फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040) - Compose में इस्तेमाल की गई 64-बिट कलर वैल्यू की तुलना सीधे तौर पर Android
ColorLongsसे नहीं की जा सकती. इसकी वजह यह है कि कुछ कलर स्पेस के लिए, कलर स्पेस आईडी क्रम में नहीं हैं. Android कलर स्पेस में बदलने और उससे वापस लाने के लिए, दो नए एपीआई जोड़े गए हैं:toColorLong()औरfromColorLong(). (I36899) - फ़्लिंग की कम से कम स्पीड को कंट्रोल करने के लिए,
ViewConfiguration.minimumFlingVelocityको जोड़ा गया. (I11aab)
वर्शन 1.9.0-alpha02
7 मई, 2025
androidx.compose.ui:ui-*:1.9.0-alpha02 रिलीज़ हो गया है. वर्शन 1.9.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
dialogContentTitleसेDialogPropertiesमें जोड़ें. इससे कॉन्टेंट विंडो का टाइटल सेट होता है. bf9d670
गड़बड़ियां ठीक की गईं
- इंटरनल टेस्ट की समस्याओं को ठीक करने के दौरान, विंडो इंसर्ट रूलर को कुछ समय के लिए बंद कर दिया गया है. 8d1402
DragGestureNodeमेंVelocityTrackerमें पॉइंटर इनपुट में हुए बदलावों को जोड़ने के तरीके को ठीक किया गया है. इसे नए फ़्लैगisAdjustPointerInputChangeOffsetForVelocityTrackerEnabledसे कंट्रोल किया जा सकता है.254ddb
वर्शन 1.9.0-alpha01
23 अप्रैल, 2025
androidx.compose.ui:ui-*:1.9.0-alpha01 रिलीज़ हो गया है. वर्शन 1.9.0-alpha01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.propertiesमेंandroid.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.
एपीआई में हुए बदलाव
- यह कुकी, हिट पाथ ट्रैकर (डीबग) के लिए ट्रेस स्टेटमेंट चालू करने के लिए फ़्लैग हटाती है. (I1b2a1)
InnerRectRulersऔरOuterRectRulesको बदलकर, तरीके कर दिए गए हैं.RectRulersपब्लिक एपीआई से नाम पैरामीटर हटाया गया.DerivedRulersअब वर्टिकल और हॉरिज़ॉन्टल रूलर के लिए कंस्ट्रक्टर विकल्प है. इंस्टेंस जनरेट करने के लिए,MergedHorizontalRulersऔरMergedVerticalRulersकोminOfऔरmaxOfतरीकों से बदल दिया गया है. (Iee89f, b/408192133)androidx.compose.ui.LocalSavedStateRegistryOwnerके बजायandroidx.savedstate.compose.LocalSavedStateRegistryOwnerका इस्तेमाल करें. (I5439f, b/377946781)- स्क्रीन को चालू रखने के लिए
Modifier.keepScreenOnजोड़ें (Ib5af4, b/408284174) - नई सिमैंटिक्स प्रॉपर्टी
Shapeजोड़ें.इसे तब सेट किया जा सकता है, जब यूज़र इंटरफ़ेस (यूआई) एलिमेंट का आकार, उसके बाउंडिंग रेक्टैंगल से अलग हो. उदाहरण के लिए, गोल कोने वाला रेक्टैंगल. (I1376f) AndroidViewsमें पॉइंटर इवेंट डिसपैच करने से जुड़ी समस्या को ठीक किया गया है. साथ ही, बदलावों को सुरक्षित रखने के लिएisPointerInteropFilterDispatchingFixEnabledफ़्लैग जोड़ा गया है. (I0e272, b/372055500, b/408002332)FocusRestorerअब पहले फ़ोकस किए गए आइटम को पिन नहीं करता है. उपयोगकर्ताओं को यह पक्का करने के लिए किसी कुंजी का इस्तेमाल करना चाहिए कि पहले फ़ोकस किए गए आइटम का कंपोज़िशन हैश एक जैसा हो, ताकि फ़ोकस को वापस लाया जा सके. (I4203b, b/330696779)- कंपोज़ की सुविधा को
ViewTreeObserver.OnScrollChangedको ट्रिगर करने की अनुमति दें. इस सुविधा कोisOnScrollChangedCallbackEnabledफ़्लैग के तहत लॉन्च किया गया है. हमनेDelegatableNode dispatchOnScrollChangedका एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286) currentCompositeKeyHashका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,currentCompositeKeyHashCodeका इस्तेमाल करें. बदलाव करने वाला एपीआई, एक ही हैश को ज़्यादा बिट के साथ कोड करता है. इससे कंपोज़िशन हैरारकी में मौजूद दो रैंडम ग्रुप के लिए, एक जैसी हैश कुंजी होने की संभावना बहुत कम हो जाती है. (I4cb6a, b/177562901)- Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद के वर्शन का इस्तेमाल करना ज़रूरी है (Idb6b5)
FocusRequesterके लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन (I6bf91) में याद रखा गया है- Composables के लिए, पसंदीदा फ़्रेम रेट या फ़्रेम रेट कैटगरी सेट करने की सुविधा जोड़ी गई है. इससे यह तय किया जा सकेगा कि किस फ़्रेम रेट पर रेंडर किया जाना चाहिए (Ie5201)
- Android पर नेटिव
MotionEventको दिखाना. (I17286) getChecked() + setChecked(int)जोड़ा गया,isChecked + setChecked(boolean)को बंद किया गया (Iaac9d)graphicsLayerमॉडिफ़ायर अबblendModeऔरcolorFilter(Iab0e6) स्वीकार करता है- क्वेरी रिसॉर्स में
LocalResourcesकंपोज़िशन लोकल जोड़ी गई. कॉन्फ़िगरेशन में बदलाव होने पर,LocalResources.currentफिर से कंपोज़ होगा. इसलिए,stringResource()जैसे एपीआई को किए गए कॉल, अपडेट की गई वैल्यू दिखाएंगे. (I50c13, b/274786917) - कॉम्पोज़ेबल के लिए एक्सपेरिमेंटल एपीआई उपलब्ध कराया गया है, ताकि अप्रत्यक्ष टच इवेंट मैनेज किए जा सकें (Icff57)
- इस रिलीज़ से, कंपोज़ेबल कॉन्टेंट के लेआउट और ड्रॉ फ़ेज़ के दौरान थ्रो किए गए अनहैंडल्ड एक्सेप्शन की रिपोर्टिंग को बेहतर बनाया गया है. इससे पहले, यहां बिना हैंडल की गई गड़बड़ी की वजह से, टेस्ट रनर क्रैश हो जाता था और टेस्ट सुइट समय से पहले खत्म हो जाता था. अब इन अपवादों की जानकारी, टेस्ट सुइट को बंद किए बिना ज़्यादा आसानी से दी जा सकती है. (I9928b, b/314128080)
- एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertionsएपीआई को बंद कर दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय, enableAccessibilityChecks()का इस्तेमाल करें. (I50aa5) SemanticsNodeInteraction.performTextInputSelectionअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. साथ ही, अब यहrelativeToOriginalपैरामीटर के साथ काम करता है. इससे, चुने गए टेक्स्ट को ओरिजनल टेक्स्ट या बदले गए टेक्स्ट पर लागू किया जा सकता है. (I3a905, b/261561038, b/277018945)AnnotatedString(I1d066, b/383269496, b/139326648) के ज़रिए, कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गयाrunWithTimingDisabledकोrunWithMeasurementDisabledके पक्ष में बंद कर दिया गया है. इससे यह साफ़ तौर पर पता चलता है कि सभी मेट्रिक को रोक दिया गया है. इसके अलावा,MicrobenchmarkScopeसुपरक्लास को दिखाएं, क्योंकि ओपन ऐक्सेस के लिएrunWithMeasurementDisabledफ़ंक्शन को फिर से एलान नहीं किया जा सकता. ऐसा इसलिए, क्योंकि यह इनलाइन है. (I9e23b, b/389149423, b/149979716)- नए डिवाइसों को शामिल करने के लिए, ui-tooling Devices API को अपडेट किया गया है. (Ia2ac1)
- डेवलपर को बड़ी विंडो के बारे में जानकारी देने के लिए, झलक वाली स्क्रीन के साइज़ के कलेक्शन में टैबलेट पोर्ट्रेट जोड़ें (Ia1976)
- किसी समय पर वैल्यू के साथ ट्रेस को मार्क/लॉग करने के लिए, ट्रेस वैल्यू एपीआई लॉन्च किया गया. ट्रेस वैल्यू, Prefetto में नई लेन के तौर पर दिखती हैं. इन्हें ट्रेस की टाइमलाइन के ज़रिए देखा जा सकता है. Android पर, इन्हें
Trace.setCounterका इस्तेमाल करके लागू किया जाता है. (Idcf48)
गड़बड़ियां ठीक की गईं
- pausable कंपोज़िशन में remember observers को भेजने की सुविधा ठीक की गई है, ताकि एक ही apply में याद रखे गए/भूल गए observers को भेजने से बचा जा सके (I570b2, b/404645679, b/407931790)
- अब
android:dialogThemeको सेट किया जा सकता है, ताकिdecorFitsSystemWindowsके फ़ॉल्स होने पर डायलॉग प्रॉपर्टी को कंट्रोल किया जा सके (I7922f, b/246909281) - उस गड़बड़ी को ठीक किया गया है जिसमें डायलॉग बॉक्स के बाहर होने वाली किसी भी हलचल से डायलॉग बॉक्स बंद हो जाता था. (Ia78fd)
- Compose lint की जांचों के लिए, अब कमांड लाइन से कम से कम AGP 8.8.2 वर्शन की ज़रूरत होती है. साथ ही, IDE के साथ काम करने के लिए, कम से कम Android Studio Ladybug की ज़रूरत होती है. अगर AGP का पुराना वर्शन इस्तेमाल किया जा रहा है, तो AGP पर असर डाले बिना Lint के वर्शन को अपग्रेड करने के लिए, gradle.properties में
android.experimental.lint.version=8.8.2सेट किया जा सकता है. (I6f2a8) - नई सिमैंटिक्स प्रॉपर्टी
InputTextजोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले,textfieldकी वैल्यू कैप्चर करती है. (Iae46a, b/395911609, b/176949051) - Android के लिए सुलभता जांच की सुविधा चालू करने वाले
enableAccessibilityChecks()एपीआई को अलग-अलग पैकेज में ले जाया गया है. अगरTestRuleऔरcompose:ui:ui-test-junit4-accessibilityका इस्तेमाल नहीं किया जा रहा है, तो ये पैकेजcompose:ui:ui-test-accessibilityहोते हैं.TestRuleको कॉल करते समय (I3c318, b/391560768) LaunchedEffectऔरrememberCoroutineScopeमें, कंपोज़ स्टैक ट्रेस के लिए सहायता जोड़ी गई (I705c0, b/354163858)
बाहरी योगदान
- एक्सपेरिमेंट के तौर पर उपलब्ध
runComposeUiTestफ़ंक्शन में बदलाव किया गया है, ताकि निलंबन ब्लॉक को स्वीकार किया जा सके. बाइनरी कंपैटिबिलिटी के लिए, काम न करने वाला फ़ंक्शनrunComposeUiTestभी जोड़ा गया (I3b88c, b/361577328)
वर्शन 1.8
वर्शन 1.8.3
18 जून, 2025
androidx.compose.ui:ui-*:1.8.3 रिलीज़ हो गया है. वर्शन 1.8.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सुविधा की पूरी तरह से पुष्टि हो जाने के बाद,
isGetFocusedRectReturnEmptyEnabledके लिए फ़्लैग हटा दिया गया है. (Ife722) ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledफ़्लैग की मदद से,ComposeViewमें किसी भी चीज़ पर फ़ोकस न किए जाने पर, रेक्ट को खाली वैल्यू पर सेट किया जाता है. इससे फ़ोकस सर्च को, फ़ोकस करने के लिए व्यू चुनने से रोका जाता है. यह तब खास तौर पर ज़रूरी होता है, जब IME में NEXT का विकल्प होता है और वहComposeViewपर फ़ोकस करने की कोशिश करता है, लेकिनrequestFocus()काम नहीं करता. (Ibd0e2, b/369256395)
वर्शन 1.8.2
20 मई, 2025
androidx.compose.ui:ui-*:1.8.2 रिलीज़ हो गया है. वर्शन 1.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डायलॉग पर इवेंट स्ट्रीम चालू होने के दौरान डायलॉग हटाए जाने पर, NPE को ठीक करता है (6a7e7f)
- सिर्फ़ ड्रॉ करने के अपडेट होने पर, थ्रॉटल की गई टाइमलाइन के हिसाब से
onLayoutRectChangeअपडेट न होने की समस्या ठीक की गई. (03b82d)
वर्शन 1.8.1
7 मई, 2025
androidx.compose.ui:ui-*:1.8.1 रिलीज़ हो गया है. वर्शन 1.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
onLayoutRectChangedऔरLazyLayoutd791b11 से जुड़ी कुछ समस्याएं ठीक की गईं- पहले से कंपोज़ किए गए आइटम के लिए, फिर से मेज़र करने के अनुरोधों को स्किप करें. इस बग की वजह से, लेज़ी लेआउट की स्क्रोलिंग परफ़ॉर्मेंस पर असर पड़ा. ऐसा इसलिए हुआ, क्योंकि कुछ मामलों में प्रीफ़ेचिंग की सुविधा ठीक से काम नहीं कर रही थी. साथ ही, मेज़रमेंट फ़्रेम के अंदर हो रहा था. 742087a
वर्शन 1.8.0
23 अप्रैल, 2025
androidx.compose.ui:ui-*:1.8.0 रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.
1.7.0 के बाद हुए अहम बदलाव
- Compose 1.8 में, सिमैंटिक ऑटोकंप्लीट सुविधा के लिए नई सुविधा जोड़ी गई है. पक्का करें कि आपके पास यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन का 1.8 या इसके बाद का वर्शन हो. ऐसा इसलिए, क्योंकि टेक्स्ट कॉम्पोनेंट के लिए ऑटोमैटिक तरीके से भरने की सुविधा के लिए, दोनों मॉड्यूल के नए वर्शन की ज़रूरत होती है. एपीआई के इस्तेमाल और उदाहरणों के बारे में ज़्यादा जानने के लिए, कृपया ऑटोमैटिक तरीके से भरने की सुविधा से जुड़ा दस्तावेज़ यहां देखें.
- Compose 1.8 में हैप्टिक फ़ीडबैक के इन टाइप को सपोर्ट किया जाता है:
Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. इसेLocalHapticFeedbackके ज़रिए ऐक्सेस किया जा सकता है. Android पर, Vibrator API से यह पता चलता है कि हैप्टिक फ़ीडबैक की सुविधा काम करती है या नहीं. अगर यह सुविधा काम करती है, तो यह डिफ़ॉल्ट रूप से उपलब्ध होती है. - अब कई फ़ोकस एपीआई स्टेबल हो गए हैं. इनमें
Modifier.focusRestorer(),onEnter,onExit, औरFocusProperties(I6e667) शामिल हैं. अबrequestFocusको कॉल करते समय,FocusDirectionके बारे में बताया जा सकता है. हमनेfocusRequesterऔरFocusTargetModifierNode, दोनों मेंrequestFocus(FocusDirection)एपीआई जोड़ा है, ताकि किसी खास दिशा पर फ़ोकस किया जा सके. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
वर्शन 1.8.0-rc03
9 अप्रैल, 2025
androidx.compose.ui:ui-*:1.8.0-rc03 रिलीज़ हो गया है. वर्शन 1.8.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- यह कुकी, फ़ोकस इंटरऑप से जुड़ी कुछ ऐसी समस्याओं को ठीक करने की सुविधा बंद करती है जिनकी वजह से रिग्रेशन हुआ था. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
वर्शन 1.8.0-rc02
26 मार्च, 2025
androidx.compose.ui:ui-*:1.8.0-rc02 रिलीज़ हो गया है. वर्शन 1.8.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें Compose के क्रम में एम्बेड किए गए फ़ोकस किए गए व्यू, फ़ोकस किए गए व्यू को लेज़ीलिस्ट से हटाने पर, फिर से कंपोज़िशन शुरू कर देते थे. (765562)
वर्शन 1.8.0-rc01
12 मार्च, 2025
androidx.compose.ui:ui-*:1.8.0-rc01 रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सॉफ़्ट कीबोर्ड चालू होने पर, फ़ोकस किए गए
AndroidViewको हटाने पर क्रैश होने की समस्या ठीक की गई. (Ic725a) - फ़ोकस की नई स्थिति को मैनेज करने की सुविधा लागू करने से जुड़ी कुछ समस्याओं को ठीक किया गया है. (b/395895685)
- यह समस्या को ठीक करता है. इस समस्या की वजह से, टेक्स्ट फ़ील्ड पर फ़ोकस करने का अनुरोध करने के लिए
LaunchedEffectका इस्तेमाल करते समय, जानकारी अपने-आप भरने की सुविधा काम नहीं करती थी. (b/392539099)
वर्शन 1.8.0-beta03
26 फ़रवरी, 2025
androidx.compose.ui:ui-*:1.8.0-beta03 रिलीज़ हो गया है. वर्शन 1.8.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Android के लिए सुलभता जांच की सुविधा चालू करने वाले
enableAccessibilityChecks()एपीआई को अलग-अलग पैकेज में ले जाया गया है. अगर TestRule का इस्तेमाल नहीं किया जा रहा है, तो ये पैकेजcompose:ui:ui-test-accessibilityहैं. वहीं,TestRuleको कॉल करने पर ये पैकेजcompose:ui:ui-test-junit4-accessibilityहैं (I547ef, b/391560768) - नई सिमैंटिक्स प्रॉपर्टी
InputTextजोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले, टेक्स्ट फ़ील्ड की वैल्यू कैप्चर करती है. (Iae46a)
गड़बड़ियां ठीक की गईं
- जानकारी अपने-आप भरने की सेवाओं के, इनपुट टेक्स्ट के बजाय बदले गए आउटपुट टेक्स्ट को सेव करने की समस्या को ठीक किया गया है. (Iae46a, b/395911609, b/176949051)
वर्शन 1.8.0-beta02
12 फ़रवरी, 2025
androidx.compose.ui:ui-*:1.8.0-beta02 रिलीज़ हो गया है. वर्शन 1.8.0-beta02 में ये बदलाव शामिल हैं.
नई सुविधाएं
Configuration#screenWidth/heightDpको कॉल करने के ख़िलाफ़ चेतावनी देने के लिए, लिंट चेक जोड़ा गया है - मौजूदा विंडो का साइज़ वापस पाने के लिए,LocalWindowInfo.current.containerSizeका इस्तेमाल किया जा सकता है.
वर्शन 1.8.0-beta01
29 जनवरी, 2025
androidx.compose.ui:ui-*:1.8.0-beta01 रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ContextualFlowRowऔरContextualFlowColumnके इस्तेमाल पर रोक लगा दी गई है. इस एक्सपेरिमेंटल कॉम्पोनेंट को 1.7 में पेश किया गया था. यह अब तक स्थिर नहीं हुआ है. साथ ही, इसे लागू करना सही नहीं माना गया है. आने वाले समय में, इस कॉम्पोनेंट के इस्तेमाल के उदाहरणों को हल करने वाला कॉम्पोनेंट उपलब्ध कराया जा सकता है.FlowRowऔरFlowColumnमें एक्सपेरिमेंटल ओवरलोड होते हैं. इन्हें 1.7 में पेश किया गया था. इनमेंoverflowपैरामीटर शामिल होता है. इस पैरामीटर का इस्तेमाल बंद कर दिया गया है. इसके बजाय, इस पैरामीटर के बिना ओवरलोड का इस्तेमाल किया जा सकता है. इन ओवरलोड के लिए, "overflow" का डिफ़ॉल्ट तरीका "Clip" होगा. यह तरीका, इसे लॉन्च किए जाने के बाद से ही इस्तेमाल किया जा रहा है.ContextualFlowRowके कई इस्तेमाल के मामलों को FlowRow का इस्तेमाल करके पूरा किया जा सकता है. हालांकि, हम मानते हैं कि यह पूरी तरह से सही नहीं है.ContextualFlowRowको पूरी तरह से उपयोगकर्ता-स्पेस में लागू किया जा सकता है. साथ ही, कोई भी व्यक्ति इसे लागू करने की प्रोसेस को कॉपी कर सकता है और अपनी ज़रूरत के हिसाब से इसमें बदलाव कर सकता है. हम चाहते हैं कि आने वाले समय में, हम इन इस्तेमाल के उदाहरणों को अलग तरीके से हल कर पाएं. (Ibafec)
SemanticsNodeInteraction.semanticsId()को हटा दिया गया है. इसके बजाय,SemanticsNodeInteraction.fetchSemanticsNode().idका इस्तेमाल करें. (Ie397a)- अपने-आप भरने की सुविधा देने वाले पुराने एपीआई अब काम नहीं करते. इसके बजाय, सिमैंटिक पर आधारित नए एपीआई का इस्तेमाल करें. (I943ff)
- ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल के बाहर,
requestAutofillएपीआई को फिर से लिखें. (Id1929)
गड़बड़ियां ठीक की गईं
- फ़ोकस से जुड़ी समस्या को ठीक किया गया है. इस समस्या में,
previouslyFocusedRectपैरामीटर (फ़ोकस की दिशा से जुड़ा) के साथrequestFocus()का इस्तेमाल करने पर,ComposeViewको छोड़ दिया जाता था. (Ifdc2f, b/388590015) GraphicsLayer.record { this@ContentDrawScope.drawContent() }का इस्तेमाल करते समय, कभी-कभी होने वाली NPE की समस्या को ठीक किया गया. अगर आपको इस तरह सेdrawContent()रिकॉर्ड करना है, तो पक्का करें कि आपनेDrawScopeके अंदरGraphicsLayer#recordएक्सटेंशन फ़ंक्शन का इस्तेमाल किया हो. साथ ही,GraphicsLayerपर मौजूद सदस्य फ़ंक्शन का इस्तेमाल न किया हो. (I75fc0, b/389046242)- टेक्स्ट लेआउट से जुड़ी समस्या ठीक की गई. इस समस्या में, ऐनिमेशन के दौरान एलिप्सिस का इस्तेमाल करने पर, टेक्स्ट का अनुवाद कभी-कभी गलत हो जाता था. ज़्यादा जानकारी के लिए, b/389707025 देखें (Ie55b1, b/389707025)
वर्शन 1.8.0-alpha08
15 जनवरी, 2025
androidx.compose.ui:ui-*:1.8.0-alpha08 रिलीज़ हो गया है. वर्शन 1.8.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AutofillManagerको ऐब्स्ट्रैक्ट क्लास बनाना. (I0a3b0)- फ़ोकस से जुड़ी कई समस्याओं को ठीक किया गया है. इनमें ये समस्याएं शामिल हैं: फ़ोकस किए जा सकने वाले आइटम के बिना
ComposeViewपर फ़ोकस करने की कोशिश करते समय क्रैश होना, चाइल्डAndroidViewsमें फ़ोकस बदलना, और फ़ोकस का अनुरोध करने परAndroidViewका दिखना. (Ia03c3, b/369256395, b/378570682, b/376142752) FocusEnterExitScope.cancelFocus()कोcancelFocusChange()में बदलें (I89959)- अब
RectInfo.calculateOcclusions()की मदद से, कंपोज़ेबल ऑक्लूज़न का हिसाब लगाया जा सकता है. - ग्लोबल लेआउट में होने वाले बदलावों के लिए लिसनर रजिस्टर करने के लिए,
DelegatableNodeपर एक्सटेंशन फ़ंक्शन जोड़ा गया. (I68b59)
गड़बड़ियां ठीक की गईं
ComposeContentTestRule.setContentका इस्तेमाल करते समय, टेस्ट किए जा रहे कंपोज़ेबल के लिए होस्ट के तौर पर इस्तेमाल की जाने वाली गतिविधि अबTheme.Material.Light.NoActionBarथीम का इस्तेमाल करती है. इससे एसडीके 35 को टारगेट करते समय,ActionBarको टेस्ट कॉन्टेंट के साथ ओवरलैप होने से रोका जा सकेगा. इस सुविधा से ऑप्ट आउट करने के लिए,ui-test-manifestपर मौजूद निर्भरता को हटाया जा सकता है. साथ ही, अपने टेस्ट ऐप्लिकेशन के AndroidManifest.xml मेंComponentActivityके लिए गतिविधि की एंट्री जोड़ी जा सकती है. इसमें अपनी पसंद की थीम का इस्तेमाल किया जा सकता है. (I7ae1b, b/383368165)- एक जैसी वैरिएशन सेटिंग वाले संसाधन फ़ॉन्ट, अब ज़्यादा कैश मेमोरी में सेव होने से बचेंगे. इससे वैरिएशन की गलत सेटिंग लागू नहीं होंगी. (If3dff, b/372044241)
AnnotatedString.fromHtmlअब<ul>/<li>टैग के साथ काम करता है. (I7c2fe, b/299662276, b/139326648)
बाहरी योगदान
- नया क्लिपबोर्ड इंटरफ़ेस और उसके लिए कंपोज़िशन लोकल जोड़ा गया. (I80809)
वर्शन 1.8.0-alpha07
11 दिसंबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha07 रिलीज़ हो गया है. वर्शन 1.8.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टूल के लिए,
LayoutNodeसे मालिक की जानकारी दिखाई गई. (I26f7f) LocalAutofillHighlightColorकंपोज़िशन लोकल में, कलर टाइप का इस्तेमाल किया जाता है. (I0e05b)- डेप्रिकेट किए गए
UrlAnnotationऔर उसके तरीकों को एक्सपेरिमेंट के तौर पर मार्क किया गया है. (Ic0021)
गड़बड़ियां ठीक की गईं
IndexOutOfBoundsExceptionके क्रैश होने की समस्या ठीक की गई. यह समस्या,BasicTextया टेक्स्ट कंपोज़ेबल के अंदरLinkAnnotationका इस्तेमाल करने पर होती थी (be7605, b/374115892)- कस्टम शेप वाले भरे हुए टेक्स्ट फ़ील्ड में, इंडिकेटर लाइन के न दिखने की समस्या को ठीक किया गया है. (I4f87f, b/380704151)
- लंबे स्क्रीनशॉट में बैकग्राउंड न दिखने की समस्या ठीक की गई. (I4d57a)
- यह लाइब्रेरी अब JSpecify के nullness एनोटेशन का इस्तेमाल करती है. ये एनोटेशन, टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल लागू करने के लिए, कंपाइलर के इस आर्ग्युमेंट का इस्तेमाल करना चाहिए:
-Xjspecify-annotations=strict(यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से उपलब्ध है). (Idfef8, b/326456246) - Android Q+ पर चलने वाले ऐप्लिकेशन के लिए, वाइड गैमट और एचडीआर कलर के लिए Compose की सुविधा को अपडेट किया गया. (Icd8be, b/379135036)
- अब लोड न होने वाले संसाधन फ़ॉन्ट, मेज़र में अपवाद दिखाने के बजाय डिफ़ॉल्ट फ़ॉन्ट पर वापस आ जाएंगे. (Ib6a49)
AndroidViewको अलग करने और फिर से जोड़ने पर, फ़ोकस हट जाने की समस्या ठीक की गई. (I53446)- बाउंड लेआउट ऐक्शन से बाहर
requestFocus()को स्वीकार करें. (Ia8461)
बाहरी योगदान
- यूज़र इंटरफ़ेस (यूआई) में
BringIntoViewResponderModifierNodeजोड़ें. इससे 'व्यू में लाएं' सुविधा को लागू करने का नया तरीका मिलता है. साथ ही, इसे प्लैटफ़ॉर्म लेवल पर लागू किया जा सकता है. (Ia6dd8)
वर्शन 1.8.0-alpha06
13 नवंबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha06 रिलीज़ हो गया है. वर्शन 1.8.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
stylusHoverIconमॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)- ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल को इंटरफ़ेस में बदलता है. (I84914, b/376080755)
- इसमें
focusRequesterऔरFocusTargetModifierNode, दोनों मेंrequestFocus(FocusDirection)जोड़ा जाता है, ताकि किसी खास दिशा में फ़ोकस किया जा सके. (I5d9ec, b/245755256) FocusProperties.enterऔरFocusProperties.exitकोonEnterऔरonExitसे बदल दिया गया है. साथ ही,FocusDirectionपैरामीटर के बजाय रिसीवर स्कोप का इस्तेमाल किया गया है. (I6e667)- टेक्स्ट टूलबार में ऑटोफ़िल की सुविधा जोड़ी गई है. (Ie6a4c)
Modifier.focusRestorer()(I99c03) में एपीआई से जुड़े बदलाव:- पैरामीटर का नाम बदलकर 'fallback' कर दिया गया है
- पैरामीटर अब
FocusRequesterहै, न कि लैम्डा - पैरामीटर अब गैर-शून्य है. इसकी डिफ़ॉल्ट वैल्यू, डिफ़ॉल्ट के तौर पर सेट है
- ऑटोमैटिक तरीके से भरने की सुविधा के मैनेजर इंटरफ़ेस से
@Experimentalएनोटेशन को हटाया जा रहा है. यह सुविधा अब भी WIP है और इसे इस रिलीज़ में टारगेट किया जा रहा है. हालांकि, हम @Expemiental API (Id8398) को लॉन्च नहीं करना चाहते LocalHapticFeedbackअब डिफ़ॉल्ट रूप सेHapticFeedbackलागू करता है. ऐसा तब होता है, जब Vibrator API से पता चलता है कि हैप्टिक फ़ीडबैक की सुविधा काम करती है.HapticFeedbackType-Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKeyमें ये जोड़े गए हैं. Wear Compose के ऐसे कॉम्पोनेंट जिन पर देर तक क्लिक किया जा सकता है, जैसे किButton,IconButton,TextButton, औरCardअबLONG_PRESSहैप्टिक फ़ीडबैक देते हैं. ऐसा तब होता है, जब देर तक क्लिक करने वाले हैंडलर को उपलब्ध कराया गया हो. (I5083d)- यह कुकी,
OverscrollConfigurationऔरLocalOverscrollConfigurationको हटाती है. साथ ही,rememberPlatformOverscrollFactoryको जोड़ती है, ताकि डिफ़ॉल्ट ओवरस्क्रोल लागू करने का इंस्टेंस बनाया जा सके या उसके पैरामीटर को पसंद के मुताबिक बनाया जा सके. ओवरस्क्रोल की सुविधा बंद करने के लिए,LocalOverscrollConfiguration provides nullके बजायLocalOverscrollFactory provides nullका इस्तेमाल करें. ग्लो का रंग / पैडिंग बदलने के लिए,LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)के बजायLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516) - एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertionsएपीआई को हटा दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय,enableAccessibilityChecks()का इस्तेमाल करें. (I59322)
वर्शन 1.8.0-alpha05
30 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha05 रिलीज़ हो गया है. वर्शन 1.8.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
इस रिलीज़ में, ऑटोमैटिक भरने की सुविधा को फ़ीचर फ़्लैग के पीछे रखा गया है. हम परफ़ॉर्मेंस को बेहतर बनाने के लिए काम कर रहे हैं. साथ ही, एपीआई के बारे में शुरुआती सुझाव/राय पाने या शिकायत करने के लिए इंतज़ार कर रहे हैं. सुझावों/राय के आधार पर, एपीआई में बदलाव किए जा सकते हैं.
- अपने-आप भरने की सुविधा चालू करने के लिए,
onCreateमेंComposeUiFlags.isSemanticAutofillEnabledको true पर सेट करें. साथ ही, कंपोज़ स्नैपशॉट के सबसे नए वर्शन का इस्तेमाल करें. - ऑटोमैटिक तरीके से भरने की सुविधा के इस वर्शन में, क्रेडेंशियल को मैन्युअल तरीके से सेव करने, मज़बूत पासवर्ड का सुझाव पाने, और नेविगेशन की सुविधा मिलती है. यह सुविधा, ऑटोमैटिक भरने की सुविधा वाले फ़ील्ड पर फ़ोकस करने या टेक्स्ट कॉम्पोनेंट पर टेक्स्ट टूलबार के ज़रिए ऑटोमैटिक भरने की सुविधा चालू होने पर भी काम करती है. ऑटोमैटिक भरने की सुविधा पूरी होने पर, कॉम्पोनेंट हाइलाइट हो जाएगा.
एपीआई में हुए बदलाव
- ऑटोमैटिक भरने की सुविधा के इंटरफ़ेस में बदलाव किया गया है, ताकि वह
expect/actualस्ट्रक्चर के मुताबिक काम करे. (I22dce) CompositionLocalको पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट किए गए रंग में बदलाव करने के लिए किया जा सकता है. (I32092)Modifier.onRectChangedएपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसकी मदद से,LayoutNodeकी रूट/विंडो/स्क्रीन के हिसाब से पोज़िशन और साइज़ की सदस्यता ली जा सकती है. यह एपीआई, इस्तेमाल के कई ऐसे उदाहरणों को हल करता है जो मौजूदाonGloballyPositionedमॉडिफ़ायर करता है. हालांकि, यह ऐसा बहुत कम ओवरहेड के साथ करता है. साथ ही, एपीआई में कॉल बैक को डीबाउंस और थ्रॉटल करने की सुविधाएं होती हैं, जो इस्तेमाल के उदाहरण की मांग के हिसाब से होती हैं. (Id28c7, b/372765423, b/372757007, b/372994338)- ऑटोमैटिक भरने की सुविधा देने वाले मैनेजर को बड़ा किया गया है, ताकि इसमें
commit()औरcancel()एपीआई शामिल किए जा सकें. इनसे उपयोगकर्ताओं को नए क्रेडेंशियल सेव करने में मदद मिलती है. (I2da00) - इसमें नया
AutofillManagerइंटरफ़ेस शामिल है. इसका इस्तेमाल करके, उपयोगकर्ताओं के लिए ऑटोमैटिक तरीके से भरने की सुविधा को बेहतर बनाया जा सकता है. साथ ही, इसमेंisSemanticAutofillEnabledफ़्लैग भी शामिल है. इसका इस्तेमाल करके, ऑटोमैटिक तरीके से भरने की सुविधा के इस नए वर्शन को चालू किया जा सकता है. (I9d484) Modifier.onRectChangedएपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसकी मदद से,LayoutNodeकी रूट/विंडो/स्क्रीन के हिसाब से पोज़िशन और साइज़ की सदस्यता ली जा सकती है. यह एपीआई, इस्तेमाल के कई ऐसे उदाहरणों को हल करता है जो मौजूदाonGloballyPositionedमॉडिफ़ायर करता है. हालांकि, यह ऐसा बहुत कम ओवरहेड के साथ करता है. साथ ही, एपीआई में कॉल बैक को डीबाउंस और थ्रॉटल करने की सुविधाएं होती हैं, जो इस्तेमाल के उदाहरण की मांग के हिसाब से होती हैं. (I3c8fa)- ऑटोमैटिक तरीके से भरने की बेहतर सुविधा के लिए, सिमैंटिक प्रॉपर्टी और डेटा टाइप जोड़ें. (I52c7d)
AnnotatedStringबिल्डर में मौजूद सभी तरीके अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं (Ia89c8, b/261561823)
गड़बड़ियां ठीक की गईं
- कंपोज़ में एम्बेड किए गए व्यू, अब रोटरी इवेंट पा सकते हैं. हालांकि, ऐसा तब होगा, जब वे फ़ोकस में हों (I4d53a, b/320510084)
- उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव करने पर, अलग-अलग तरह के संसाधन अपडेट नहीं होते थे (Ia9b99, b/352336694)
- हमने उस समस्या को ठीक कर दिया है जिसकी वजह से, Sony के कुछ पुराने डिवाइसों पर POBox Japanese Keyboard का इस्तेमाल करते समय,
TextFieldठीक से काम नहीं कर रहा था. (Ia9b99, b/373743376) - डायलॉग को स्क्रीन के बीच में दिखाने के बजाय सबसे नीचे दिखाने की समस्या ठीक की गई (Ia2ec, b/373093006)
- Targeting API 35+ अब डायलॉग को
decorFitsSystemWindowsको गलत पर सेट करने के लिए मजबूर नहीं करता है. (Ibc94, b/364492593) - विंडो (जैसे, डायलॉग और मुख्य कॉन्टेंट) के बीच लेयर ले जाते समय क्रैश होने की समस्या ठीक की गई (I675ba, b/330955281)
वर्शन 1.8.0-alpha04
16 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha04 रिलीज़ हो गया है. वर्शन 1.8.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DelegatableNode#onDensityChangeऔरDelegatableNode#onLayoutDirectionChangeकॉलबैक जोड़े गए, ताकि नोड की स्थिति में बदलाव होने पर उसे अपडेट किया जा सके (I04f3e, b/340662451)- यह कुकी,
WindowInfo#containerSizeको जोड़ती है, ताकि मौजूदा विंडो के कॉन्टेंट कंटेनर का साइज़ पता चल सके. इसेLocalWindowInfoका इस्तेमाल करके वापस पाया जा सकता है. (Idc38c, b/369334429, b/360343819) - नेस्ट किए गए स्क्रोल करने लायक़ कॉम्पोनेंट के लिए एक फ़िक्स जोड़ा गया है. ये कॉम्पोनेंट, फ़्लिंग के दौरान नोड ट्री से हटा दिए जाते हैं. अब ये नोड, फ़्लिंग को रद्द कर देंगे और बची हुई वेलोसिटी के साथ
onPostFlingइवेंट को सही तरीके से भेजेंगे. हम रिग्रेशन के मामलों में व्यवहार को कंट्रोल करने के लिए,NewNestedScrollFlingDispatchingEnabledफ़्लैग भी लॉन्च कर रहे हैं. इस फ़्लैग को बीटा वर्शन से पहले हटा दिया जाएगा. (I05c37, b/371168883) PointerInputModifierNode#touchBoundsExpansionको जोड़ा गया है. इसका इस्तेमाल, एक पॉइंटर इनपुट मॉडिफ़ायर के टच बाउंड को बड़ा करने के लिए किया जा सकता है. (Iccf02, b/335339283)- यह कुकी,
WindowInfo#containerSizeको जोड़ती है, ताकि मौजूदा विंडो के कॉन्टेंट कंटेनर का साइज़ पता चल सके. इसेLocalWindowInfoका इस्तेमाल करके वापस पाया जा सकता है. (I27767, b/369334429, b/360343819) - स्टेबल फ़ाउंडेशन वर्शन पर पिन करने के लिए,
TextFields' सेreadOnlyहटाएं. (I3aaba) ParagraphऔरParagraphIntrinsicsअबAnnotatedStringपर लागू किए गए सभी एनोटेशन की सूची लेता है. इससे पहले, इसमें सिर्फ़SpanStyles(I12f80) की सूची होती थी
गड़बड़ियां ठीक की गईं
AnnotatedStringमें पैराग्राफ़ को मैनेज करने के तरीके को अपडेट किया गया है. इससे पहले, सिर्फ़ ऐसे पैराग्राफ़ बनाए जा सकते थे जो एक-दूसरे से ओवरलैप नहीं होते थे. अबAnnotatedStringमें पूरी तरह से ओवरलैप होने वाले पैराग्राफ़ इस्तेमाल किए जा सकते हैं. इन्हें एक साथ मर्ज कर दिया जाएगा. साथ ही, नेस्ट किए गए पैराग्राफ़ भी इस्तेमाल किए जा सकते हैं. ऐसे में, बाहरी पैराग्राफ़ को अंदरूनी पैराग्राफ़ की सीमाओं के हिसाब से बांटा जाएगा. साथ ही, अंदरूनी पैराग्राफ़ की स्टाइल को बाहरी पैराग्राफ़ की स्टाइल के साथ मर्ज कर दिया जाएगा (Ic9554)- शून्य लंबाई वाले
LinkAnnotationकी वजह से,AnnotatedStringमें क्रैश होने की समस्या ठीक की गई. (89aac6)
वर्शन 1.8.0-alpha03
2 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha03 रिलीज़ हो गया है. वर्शन 1.8.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin का वर्शन 1.9 पर अपडेट किया गया (I1a14c)
- सुलभता सेवाओं के लिए, पेजर्स में सूची के व्यवहार को दोहराने के लिए, नई सिमैंटिक्स भूमिका, कैरसेल पेश की गई है. (Id354b, b/354109776, b/239672673)
invisibleToUser()का नाम बदलकरhideFromAccessibilityकर दें. इसके काम करने के तरीके में कोई बदलाव नहीं हुआ है. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें. (Ib43a3)
गड़बड़ियां ठीक की गईं
SensitiveContentमॉडिफ़ायर (Ib0442) के लिए दस्तावेज़ अपडेट किए जा रहे हैं- उस समस्या को ठीक कर दिया गया है जिसमें Android के कुछ वर्शन पर, एलिवेशन शैडो के साथ सामान्य आउटलाइन क्लिप को अनदेखा कर दिया जाता था
- उस समस्या को ठीक कर दिया गया है जिसमें Android के कुछ वर्शन पर, सामान्य आउटलाइन वाली क्लिप के बारे में जानकारी देने पर खाली क्लिप लागू हो जाती थीं.
- बाहरी व्यू पर IME चालू होने पर, अपवाद को ठीक किया गया है. साथ ही,
ComposeViewपर फ़ोकस करने के लिए, 'अगला' कार्रवाई का इस्तेमाल किया जाता है.clearFocus()का व्यवहार, एपीआई < 28 पर View के व्यवहार के जैसा होता है. इसमेंclearFocus()की वजह से, डिफ़ॉल्ट View पर फ़ोकस किया जा सकता है. LazyListमें अलग किए गए नोड पर प्लेसमेंट होने की समस्या को ठीक किया गया है. इसके लिए, अलग-अलग लेआउट पास के लिए सबकंपोज़िशन को मैनेज करने की सुविधा जोड़ी गई है.- उस समस्या को ठीक किया गया है जिसमें फ़ोकस को
TextFieldसेEditTextया किसी अन्य व्यू पर आधारित एडिटर पर स्विच करने पर, सॉफ़्टवेयर कीबोर्ड फ़्लिकर करता था. - नेस्ट किए गए स्क्रोल नोड अब अलग होने के बाद,
onPostFlingइवेंट को सही तरीके से डिस्पैच करेंगे. - परफ़ॉर्मेंस में सामान्य सुधार
वर्शन 1.8.0-alpha02
18 सितंबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha02 रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब
TextOverflow.StartEllipsisऔरTextOverflow.MiddleEllipsisउपलब्ध हैं. इनकी मदद से, एक लाइन वाले टेक्स्ट की शुरुआत या बीच में तीन बिंदु लगाए जा सकते हैं. (I38913, b/185418980)
गड़बड़ियां ठीक की गईं
- डायलॉग ठीक करें
dismissOnClickoutside(39a3d, b/364508685) - डायलॉग कॉन्टेंट की परछाइयों को न काटें (e8e2f, b/363027803)
- फ़ोकस सर्च के कंपोज़ और व्यू के बीच ले जाने पर होने वाली गड़बड़ी को ठीक किया गया (58377, b/350534714)
बाहरी योगदान
AlignmentLinesMapअबVerticalAlignmentLineयाHorizontalAlignmentLineकॉन्क्रीट टाइप स्वीकार करता है. (I02912)ByteArray.decodeToImageBitmap(): ImageBitmapका नया तरीका. (I83c21)
वर्शन 1.8.0-alpha01
4 सितंबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha01 रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 1.7
वर्शन 1.7.8
12 फ़रवरी, 2025
androidx.compose.ui:ui-*:1.7.8 रिलीज़ हो गया है. वर्शन 1.7.8 में ये बदलाव शामिल हैं.
वर्शन 1.7.7
29 जनवरी, 2025
androidx.compose.ui:ui-*:1.7.7 रिलीज़ हो गया है. वर्शन 1.7.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Text कंपोज़ेबल को
LinkAnnotationके साथAnnotatedStringपास करते समय,IndexOutOfBoundsExceptionको ठीक किया गया. (Ic96d2) - कुछ मामलों में,
AnnotatedStringमेंLinkAnnotationका इस्तेमाल करने पर, टेस्ट में टाइमआउट की समस्या ठीक की गई है. (I04a03)
वर्शन 1.7.6
11 दिसंबर, 2024
androidx.compose.ui:ui-*:1.7.6 रिलीज़ हो गया है. वर्शन 1.7.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पहले, जब फ़ोकस सिस्टम में अमान्य किए गए अनुरोध लंबित होते थे, तब मुख्य इवेंट का सामना करने पर हम गड़बड़ी दिखाते थे. अब हम इसके बजाय गड़बड़ी को लॉग करते हैं (I7ea0, b/346370327).
SemanticsPropertyReceiver.invisibleToUser()से एक्सपेरिमेंटल एनोटेशन हटा दिया गया है. इसे 1.8 में बंद कर दिया जाएगा. इसकी जगहSemanticsPropertyReceiver.hideFromAccessibility()का इस्तेमाल किया जाएगा. (I448f0, b/376479686)- कुछ पुराने Sony डिवाइसों पर POBox Japanese Keyboard का इस्तेमाल करते समय,
TextFieldके ठीक से काम न करने की समस्या को ठीक कर दिया गया है. (I94e0e, b/373743376) - ऐक्सेसिबिलिटी से जुड़ी उस समस्या को ठीक किया गया है जिसमें
BasicTextके inlineContent कोTalkBackनहीं पढ़ता था. (I67bcb, b/376479686)
वर्शन 1.7.5
30 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.7.5 रिलीज़ हो गया है. वर्शन 1.7.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उन समस्याओं को ठीक किया गया है जिनकी वजह से, कस्टम आउटलाइन के साथ एलिवेशन और क्लिपिंग ठीक से रेंडर नहीं हो रही थी.
- यह अपडेट, ज़ीरो-विड्थ
LinkAnnotationकी वजह से होने वाले टेक्स्ट क्रैश की समस्या को ठीक करता है. (Ic1e2e) - जब बटन को क्लिक किए जा सकने वाले Text कंपोज़ेबल के तौर पर बनाया जाता है, तब यह फ़ंक्शन
Talkbackमें सूचना से जुड़ी समस्या को ठीक करता है. (I1f588)
वर्शन 1.7.4
16 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.7.4 रिलीज़ हो गया है. वर्शन 1.7.4 में ये बदलाव शामिल हैं.
वर्शन 1.7.3
2 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.7.3 रिलीज़ हो गया है. वर्शन 1.7.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें सामान्य आउटलाइन क्लिप तय करने पर, Android के कुछ वर्शन में क्लिप की सीमा खाली दिखती थी.
- जब IME किसी बाहरी व्यू पर चालू होता है और
ComposeViewपर फ़ोकस करने के लिए 'अगला' कार्रवाई का इस्तेमाल किया जाता है, तब थ्रो की गई गड़बड़ी को ठीक किया गया.clearFocus()का व्यवहार, एपीआई < 28 पर View के व्यवहार के जैसा होता है. इसमेंclearFocus()की वजह से, डिफ़ॉल्ट View पर फ़ोकस किया जा सकता है. - लुकअहेड इनवैलिडेशन के लिए गलत
placeOrderइस्तेमाल करने की समस्या को ठीक किया गया है. इसलिए, एक ऐसी समस्या को ठीक किया गया है जिसमें लुकअहेड प्लेसमेंट को छोड़ दिया गया था.
वर्शन 1.7.2
18 सितंबर, 2024
androidx.compose.ui:ui-*:1.7.2 रिलीज़ हो गया है. वर्शन 1.7.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ज़्यादा जानकारी वाली ट्रेसिंग को हटाने से, सुलभता नोड की जानकारी और सिमैंटिक्स इवेंट की परफ़ॉर्मेंस बेहतर हुई है. (I89156, b/362530618)
ComposeViewको बहुत बड़ा मेज़रमेंट साइज़ (da5db, b/347036173) मिलने पर अब क्रैश नहीं होगा- सुलभता सुविधाओं वाले स्क्रीनरीडर से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, बटन पर
LiveRegionसूचनाएं नहीं दी जाती थीं. (f66fa7, b/348590026)
वर्शन 1.7.1
10 सितंबर, 2024
- Android आर्टफ़ैक्ट में कोई बदलाव नहीं किया गया है.
-desktopआर्टफ़ैक्ट हटा दिए गए हैं. साथ ही,-jvmStubsऔर-linuxx64Stubsआर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके.
वर्शन 1.7.0
4 सितंबर, 2024
androidx.compose.ui:ui-*:1.7.0 रिलीज़ हो गया है.
1.6.0 के बाद हुए ज़रूरी बदलाव
वर्शन 1.7.0 में हुए अहम बदलावों के बारे में जानने के लिए, यह ब्लॉग पोस्ट पढ़ें.
वर्शन 1.7.0-rc01
21 अगस्त, 2024
androidx.compose.ui:ui-*:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.
ध्यान देने लायक बदलाव
- ui:ui मॉड्यूल अब foundation:foundation के कम से कम 1.7.0-rc01 या इसके बाद के वर्शन की ज़रूरत को लागू करता है. इसे इसलिए लागू किया गया है, ताकि
NestedScrollSourceसे जुड़े उन बदलावों को ठीक किया जा सके जो 1.7.0-alpha01 के शुरुआती वर्शन में यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन के बीच काम नहीं कर रहे थे.
वर्शन 1.7.0-beta07
7 अगस्त, 2024
androidx.compose.ui:ui-*:1.7.0-beta07 रिलीज़ हो गया है. वर्शन 1.7.0-beta07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट इनपुट से जुड़े
SemanticsNodeInteractionफ़ंक्शनperformTextReplacement,performTextInput, औरperformTextClearanceको अब सिर्फ़ पढ़ने के लिए उपलब्धTextFieldsपर कॉल करने पर, पुष्टि से जुड़ी गड़बड़ियां दिखेंगी. (I4ae8f)
वर्शन 1.7.0-beta06
24 जुलाई, 2024
androidx.compose.ui:ui-*:1.7.0-beta06 रिलीज़ हो गया है. वर्शन 1.7.0-beta06 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta05
10 जुलाई, 2024
androidx.compose.ui:ui-*:1.7.0-beta05 रिलीज़ हो गया है. वर्शन 1.7.0-beta05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इसमें सॉफ़्टवेयर कीबोर्ड बदलने पर,
TextFieldनए कीबोर्ड से तब तक इनपुट स्वीकार नहीं करता था, जब तक फ़ोकस हट नहीं जाता और फिर से नहीं आ जाता. - उस समस्या को ठीक किया गया है जिसकी वजह से लेयर के कॉन्टेंट को सेव करने की कोशिश करने पर,
SurfaceViewकॉन्टेंट रेंडर करते समय अनचाहे साइड इफ़ेक्ट होते थे.
वर्शन 1.7.0-beta04
26 जून, 2024
androidx.compose.ui:ui-*:1.7.0-beta04 रिलीज़ हो गया है. वर्शन 1.7.0-beta04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बहुत बड़ी टेक्स्ट लाइनों (जैसे, 10 हज़ार वर्ण) को मेज़र करते समय क्रैश होने की समस्या ठीक की गई (8157ab)
GraphicsLayerएपीआई के लिए, सॉफ़्टवेयर रेंडरिंग की सुविधा बंद करें. (35ddd8)- लेयर के डेटा को सेव रखने के लॉजिक में क्रैश की समस्या को ठीक किया गया है. (70b13e)
- लेयर ऑब्जेक्ट को फिर से इस्तेमाल करने की सुविधा को पहले जैसा कर दिया गया है, क्योंकि इससे रेंडरिंग से जुड़ी समस्याएं आ रही थीं. (70b13e)
वर्शन 1.7.0-beta03
12 जून, 2024
androidx.compose.ui:ui-*:1.7.0-beta03 रिलीज़ हो गया है. वर्शन 1.7.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta02
29 मई, 2024
androidx.compose.ui:ui-*:1.7.0-beta02 रिलीज़ हो गया है. वर्शन 1.7.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SemanticsProperties.Editableका नाम बदलकरIsEditableकर दिया गया है औरSemanticsPropertyReceiver.editableकोisEditableमें बदल दिया गया है. अब यह प्रॉपर्टी बूलियन है और इसे हमेशा टेक्स्ट फ़ील्ड से तय किया जाता है. (I8acd8)- सुलभता बेंचमार्क पैरामीटर का नाम बदलें. (I3d440)
- लिंक को स्टाइल करने के लिए अपडेट किया गया एपीआई:
TextLinkStylesअबLinkAnnotationकंस्ट्रक्टर औरAnnotatedString.fromHtmlतरीके का हिस्सा है (I90b2b). इसके अलावा,TextDefaultsको भी कॉन्टेंट (I5477b) से हटा दिया गया है
गड़बड़ियां ठीक की गईं
- इसके मकसद को बेहतर तरीके से दिखाने के लिए,
LayoutCoordinates.introducesFrameOfReferenceका नाम बदलकरLayoutCoordinates.introducesMotionFrameOfReferenceकर दिया गया है. उस फ़्लैग के आधार पर निर्देशांकों का हिसाब लगाने के लिए, संबंधित फ़ंक्शन का नाम बदला गया. (I3a330)
वर्शन 1.7.0-beta01
14 मई, 2024
androidx.compose.ui:ui-*:1.7.0-beta01 रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
performCustomAccessibilityActionLabelledका नाम बदलकरperformCustomAccessibilityActionWithLabelऔरperformCustomAccessibilityActionWhereका नाम बदलकरperformCustomAccessibilityActionWithLabelMatchingकर दिया गया है. (I5387f)AnnotatedString.hasEqualsAnnotationsअबhasEqualAnnotations(I685c0) हो गया है- टेक्स्ट में, Material थीम वाले लिंक पाने के लिए एपीआई को अपडेट किया गया है. खास तौर पर, थीम वाले
LinkAnnotationsबनाने और थीम वाले लिंक के साथ एचटीएमएल पार्स करने के लिए,TextDefaultsसे तरीकों को हटा दिया गया है. इसके बजाय, एकTextLinkStylesक्लास जोड़ी गई है. इससे टेक्स्ट कंपोज़ेबल के पैरामीटर के तौर पर लिंक को स्टाइल किया जा सकता है. (I31b93)
गड़बड़ियां ठीक की गईं
- इवेंट के दौरान पॉइंटर इनपुट मॉडिफ़ायर को डाइनैमिक तौर पर जोड़ने से जुड़े अन्य इस्तेमाल के उदाहरणों को ठीक किया गया है 63e1504
वर्शन 1.7.0-alpha08
1 मई, 2024
androidx.compose.ui:ui-*:1.7.0-alpha08 रिलीज़ हो गया है. वर्शन 1.7.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- बदले जा सकने वाले शेप को लागू करने की सुविधा जोड़ी गई.
Shape#createOutlineको अब ग्राफ़िक्स लेयर में देखा जाता है. इसलिए, इसके अंदर मौजूद स्टेट वैल्यू को पढ़ने पर, स्टेट में बदलाव होने पर अमान्य हो जाएंगी. इससे शेप के बेहतर ऐनिमेशन बनाए जा सकेंगे. (Id1629, b/326070216) isPositionedByParentWithDirectManipulationका नाम बदलकरintroducesFrameOfReferenceकर दिया गया. ध्यान दें कि अब इसका असर उल्टा होता है. इसका मतलब है कि डिफ़ॉल्ट रूप से, ज़्यादातरLayoutCoordinatesरेफ़रंस फ़्रेम पेश करते हैं. साथ ही, जब प्रॉपर्टी को सीधे तौर पर कंट्रोल किया जाता है, तब ही यह गलत होगी. सिर्फ़ उन ऑब्जेक्ट की पोज़िशन के बारे में क्वेरी करने के लिएpositionInLocalFrameOfReference(...)का इस्तेमाल करें जो फ़्रेम ऑफ़ रेफ़रंस देते हैं. याLookaheadScopeसेpositionInLocalLookaheadFrameOfReference. (Ifc5f7)LookaheadScopeएपीआई को स्टेबल बना दिया गया है (I21507)- एपीआई काउंसिल के सुझाव के मुताबिक,
getScrollViewportLengthके लिए ऐक्शन लैंबडा बदलें. (Ibc74a) GraphicsLayerआउटलाइन एपीआई को अपडेट किया गया है, ताकि वे int के बजाय फ़्लोट पैरामीटर का इस्तेमाल कर सकें. फ़्लोट पर आधारित ऑफ़सेट और साइज़ इनलाइन क्लास (I2fb03, b/333863462) पर, पहले से मौजूद Unspecified कॉन्स्टेंट के पक्ष मेंUnsetOffset/UnsetSize IntSizeसेंटिनल वैल्यू हटा दी गई हैं- जांच के दौरान माउस इनपुट डालने पर,
MouseInjectionScope.click(),MouseInjectionScope.doubleClick(),MouseInjectionScope.tripleClick(),MouseInjectionScope.longClick()अबbutton: MouseButtonपैरामीटर स्वीकार करते हैं, ताकि इन्हें ज़्यादातर मामलों में इस्तेमाल किया जा सके. सभी तरीकों के लिए डिफ़ॉल्ट वैल्यूMouseButton.Primaryहोती है. (I31a23, b/190493367, b/261439695) LinkInteractionListenerमें मौजूदonClickedका नाम बदलकरonClickकर दिया गया. (Iaa35c)TextInclusionStrategy.isInsideका नाम बदलकरisIncludedकर दें.Paragraph/MultiParagraph#getRangeForRect()के रिटर्न टाइप को नॉन-नलेबल बनाएं. (I51f26)
गड़बड़ियां ठीक की गईं
reverseScrolling=trueकी सुविधा वाले स्क्रोल किए जा सकने वाले कंटेनर के लिए, लंबा स्क्रीनशॉट कैप्चर करने की सुविधा से जुड़ी समस्या ठीक की गई. (I7c59c)
बाहरी योगदान
- नेस्ट किए गए
LazyListsमें आइटम को पहले से फ़ेच करने की सुविधा जोड़ी गई है. उदाहरण के लिए, एकLazyColumnजो नेस्ट किए गएLazyRowsको रेंडर करता है. इस बदलाव से, इनLazyListsके लिए स्क्रोलिंग के दौरान फ़्रेम ड्रॉप कम होने की उम्मीद है. लागू करने के लिए डिफ़ॉल्ट तौर पर, पहले दो नेस्ट किए गए आइटम को प्रीफ़ेच किया जाता है. हालांकि, इस व्यवहार को नएLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)औरLazyListPrefetchStrategy#onNestedPrefetchएपीआई से कंट्रोल किया जा सकता है. (I51952)
वर्शन 1.7.0-alpha07
17 अप्रैल, 2024
androidx.compose.ui:ui-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ClickableTextको अब इस्तेमाल नहीं किया जा सकता. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से मेल खाने वालाAnnotatedStringLinkAnnotationबनाएं और इसAnnotatedStringको Text कंपोज़ेबल में पास करें. (I34d4b, b/323346994)- हैंडराइटिंग के जेस्चर के लिए
ViewConfiguration.HandwritingGestureLineMarginकी सुविधा लॉन्च की गई.BasicTextFieldके लिएJoinOrSplitजेस्चर की सुविधा जोड़ी गई (Ie6e13, b/325660505) FocusProperties.enterऔरFocusProperties.exitअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.FocusDirection.EnterऔरFocusDirection.Exitअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.FocusRequester.Cancelअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है (I461a1, b/261564106)- लेआउट के कोऑर्डिनेट के बारे में क्वेरी करते समय, अब
excludeDirectManipulationOffsetआर्ग्युमेंट का इस्तेमाल किया जा सकता है. इससे, पैरंट लेआउट के सेट किए गए ऑफ़सेट को बाहर रखा जा सकता है. पैरंट लेआउट ने अपने बच्चों कोPlaceable.PlacementScope.withDirectManipulationPlacementका इस्तेमाल करके रखा था. इसी तरह, अगर कोई लेआउट अपने चाइल्ड व्यू की पोज़िशन को बार-बार बदलता है, तो अब वह उन्हेंwithDirectManipulationPlacementका इस्तेमाल करके रख सकता है. जैसे, स्क्रोल करने की सुविधा, जो डिफ़ॉल्ट रूप से लागू होती है. इससेapproachLayoutपर आधारित ऐनिमेशन को ज़्यादा सहज बनाने में मदद मिलती है. अब इसमें यह तय करने का विकल्प होता है कि किस ऑफ़सेट को ऐनिमेट करना है और ऐनिमेशन का तरीका तय करते समय, किस ऑफ़सेट को सीधे तौर पर लागू करना है. (I60ec7) - लंबे स्क्रीनशॉट लेने की सुविधा के लिए फ़ीचर फ़्लैग हटा दिया गया है. (I28648, b/329128246)
LazyColumnअब लंबे स्क्रीनशॉट में स्टिकी हेडर को सही तरीके से रेंडर करेगा. (I8d239, b/329296635)NestedScrollसोर्स को खींचकर छोड़ना और फ़्लिंग करना, अबUserInputऔरSideEffectसे बदल दिया गया है. ऐसा इसलिए किया गया है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं. (I40579)ApproachLayoutModifierNodeऔरModifier.approachLayoutअब स्टेबल हो गए हैं. इनमें पुरानेisMeasurementApproachComplete()औरisPlacementApproachComplete()की जगह, नएisMeasurementApproachInProgress()औरisPlacementApproachInProgress()का इस्तेमाल किया गया है.- बहिष्कृत किए गए
intermediateLayoutमॉडिफ़ायर को हटाया गया. (I3e91c) GraphicsLayer#buildLayerका नाम बदलकर record कर दिया गया है, ताकि यह Displaylist के साथ काम करने वाले एपीआई के begin/endRecording तरीकों को दिखा सके. जैसे,RenderNodeऔर Picture.rememberObserverका फ़ायदा पाने के लिए,rememberGraphicsLayerको अपडेट किया गया. (I312c1, b/288494724, b/330758155)UrlAnnotationके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,LinkAnnotation.Urlका इस्तेमाल करें. अगर Material theming का इस्तेमाल किया जा रहा है, तोTextDefaultsऑब्जेक्ट का इस्तेमाल करके एनोटेशन बनाएं. इसमें Material theming लागू की गई हो (I8d180, b/323346545)- टेक्स्ट लिंक के लिए, सामान्य स्टाइलिंग के साथ-साथ दबाए जाने की स्थिति में स्टाइलिंग का विकल्प भी जोड़ा गया है. इसके अलावा, कर्सर घुमाने और फ़ोकस करने की सुविधा भी जोड़ी गई है (I5f864, b/139312671)
String.parseAsHtmlका नाम बदलकरAnnotatedString.Companion.fromHtmlकर दिया गया है. (I43dcd)parseAsHtmlतरीके में स्टाइलिंग के तर्क (linkStyle,focusedLinkStyle,hoveredLinkStyle) और लिंक इंटरैक्शन लिसनर जोड़ा गया.<a>टैग की मदद से एचटीएमएल टैग की गई स्ट्रिंग को पार्स करते समय, यह तरीका ऐसे हर टैग के लिएLinkAnnotation.Urlबनाएगा. साथ ही, स्टाइलिंग ऑब्जेक्ट और लिंक इंटरैक्शन लिसनर को हर एनोटेशन में पास करेगा. (I7c977)LinkAnnotationअब राज्य के हिसाब से स्टाइलिंग के आर्ग्युमेंट औरLinkInteractionListenerलेता है. हाइपरलिंक पाने के लिए, इस एनोटेशन कोAnnotatedStringमें जोड़ें.focusedStateऔर/याhoveredStateपास करके, लिंक के लिए विज़ुअलconfigurationतय किया जा सकता है. ऐसा तब किया जाता है, जब लिंक पर फ़ोकस किया जाता है और/या उस पर कर्सर घुमाया जाता है. (I81ce4, b/139312671)ImeOptions.hintLocalesअब नल नहीं हो सकता. अगर आपको खाली स्थानीय भाषा की सूची पास करनी है, तो कृपयाLocaleList.Emptyका इस्तेमाल करें. (Ic5bc4)
गड़बड़ियां ठीक की गईं
- यह खराब/करप्ट किए गए पुराने इनपुट इवेंट डेटा को आसानी से मैनेज करता है. साथ ही, खराब ऑफ़सेट डेटा को अनदेखा करता है.
- इस कुकी से, पॉइंटर इनपुट इवेंट की चालू स्ट्रीम के दौरान, किसी अन्य पॉइंटर इनपुट मॉडिफ़ायर से पहले डाइनैमिक तौर पर पॉइंटर इनपुट मॉडिफ़ायर जोड़ने पर होने वाले अनचाहे पॉइंटर इवेंट ठीक किए जाते हैं. उदाहरण के लिए, होवर एंटर और होवर एक्ज़िट [माउस/स्टाइलस] के बीच.
वर्शन 1.7.0-alpha06
3 अप्रैल, 2024
androidx.compose.ui:ui-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
- स्टाइल की गई स्ट्रिंग के लिए
parseAsHtmlतरीका जोड़ा गया: इससे एचटीएमएल टैग से मार्क की गई स्ट्रिंग कोAnnotatedStringमें बदला जा सकता है. ध्यान दें कि सभी टैग इस्तेमाल नहीं किए जा सकते. उदाहरण के लिए, फ़िलहाल बुलेट लिस्ट नहीं दिखाई जा सकती. (I84d3d, I30626, b/139326648) - Compose के स्क्रोल कंटेनर में लंबी स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback) का इस्तेमाल किया गया है. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हो सकता है कि फ़िलहाल यह सभी मामलों में ठीक से काम न करे. इस वजह से, फ़िलहाल यह सुविधा डिफ़ॉल्ट रूप से बंद है. ऑप्ट-इन करने के लिए,ComposeFeatureFlag_LongScreenshotsEnabledफ़्लैग को सही पर सेट करें. (I2b055, b/329296471)
एपीआई में हुए बदलाव
fun ClipEntry.getMetadata()को बदलकरval ClipEntry.clipMetadataकर दिया गया है. (I50155)ClipboardManager.getClipMetadataऔरClipboardManager.hasClipफ़ंक्शन हटा दिए गए हैं. कृपया मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए,clipEntry.getMetadata()का इस्तेमाल करें. यह भी देखें किClipboardManager.getClipका नतीजा शून्य है या नहीं, ताकि यह पता चल सके कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं. (I50498)- अब
GraphicsLayerऑब्जेक्ट कोplaceable.placeWithLayer()फ़ंक्शन में पास किया जा सकता है (I1b22f) ClipboardManager.setClipअब क्लिपबोर्ड को मिटाने के लिए, null वैल्यू स्वीकार करता है. (I7d2e9)- बिल्ड टूलिंग में लागू करने की जानकारी के तौर पर इस्तेमाल किए गए व्यू को छिपाने में मदद करने के लिए, रिसॉर्स आईडी जोड़े गए (I99531)
GraphicsLayer#toImageBitmapमें,GraphicsLayerको निलंबित करने का तरीका जोड़ा गया है, ताकि बिटमैप के कॉन्टेंट को रेंडर किया जा सके. यह एपीआई लेवल 22 और इसके बाद के वर्शन पर, हार्डवेयर की मदद से रेंडर करने की प्रोसेस है. यह 99% से ज़्यादा Android डिवाइसों के साथ काम करती है. Android के एपीआई लेवल 21 पर, यह सॉफ़्टवेयर रेंडरिंग पर वापस आ जाता है. (I9e114)- Android
RectFकोComposeRectमें बदलने का हेल्पर तरीका (I39925, b/325660505) - सभी
KeyboardOptionsपैरामीटर की वैल्यू अब डिफ़ॉल्ट रूप से 'तय नहीं की गई' होती है.KeyboardOptions.mergeतरीका जोड़ा गया. KeyboardOptions.autoCorrectका नाम बदलकरautoCorrectEnabledकर दिया गया है. साथ ही, इसे नल वैल्यू के तौर पर सेट किया जा सकता है. नल वैल्यू का मतलब है कि कोई वैल्यू नहीं दी गई है. (Ia8ba0, b/295951492)BasicTextField(state)वैरिएंट औरBasicSecureTextFieldअब सॉफ़्टवेयर कीबोर्ड से की गई कार्रवाइयों को प्रोसेस करने के लिए,KeyboardActionsके बजायKeyboardActionHandlerका इस्तेमाल करते हैं. (I58dda)
वर्शन 1.7.0-alpha05
20 मार्च, 2024
androidx.compose.ui:ui-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- डिसप्ले लिस्ट में ड्राइंग कमांड रिकॉर्ड करने के लिए, नया
GraphicsLayerAPI लॉन्च किया गया है. साथ ही, ऐसी अतिरिक्त प्रॉपर्टी भी लॉन्च की गई हैं जो डिसप्ले लिस्ट की रेंडरिंग पर असर डालती हैं. इससे किसी मुश्किल सीन को छोटे-छोटे हिस्सों में बांटने के लिए, आइसोलेशन बाउंड्री मिलती है. इन हिस्सों को एक-दूसरे से अलग अपडेट किया जा सकता है. इसके लिए, पूरे सीन को फिर से बनाने की ज़रूरत नहीं होती.GraphicsLayerमें किए गए बदलावों को, डिसप्ले लिस्ट को फिर से रिकॉर्ड किए बिना लागू किया जा सकता है.Modifier.graphicsLayerके उलट,GraphicsLayerकी मदद से कंपोज़ेबल कॉन्टेंट को कहीं और रेंडर किया जा सकता है. यह ऐनिमेशन के ऐसे मामलों में काम आता है जहां कॉन्टेंट को अलग-अलग सीन में रेंडर किया जाना होता है.
एपीआई में हुए बदलाव
GraphicsLayer.draw(Canvas)अब सार्वजनिक एपीआई नहीं है. लेयर बनाने के लिए, कृपयाDrawScope.drawLayer(GraphicsLayer)एक्सटेंशन फ़ंक्शन का इस्तेमाल करें. (I7a7c0)restrictedConstraints()को दो तरीकों में बांटा गया है:fitPrioritizingWidth()औरfitPrioritizingHeight()(I6d7fd)- Android L के लिए
HardwareCanvasस्टब पेश किया गया (I1c3b5, b/288494724) - Compose फ़्रेमवर्क को अपडेट किया गया है, ताकि
GraphicsContextकंपोज़िशन लोकल को दिखाया जा सके. साथ ही, Owner,DelegateableNode, औरdrawWithCacheModifier के लागू करने के तरीके को अपडेट किया गया है, ताकि स्कोप किए गए ऐक्सेस के लिएGraphicsContextको दिखाया जा सके. इससे Modifiers को बंद करने पर,GraphicsLayerइंस्टेंस अपने-आप मिट जाएंगे. (I64a2f, b/288494724) InterceptPlatformTextInputको इसलिए लॉन्च किया गया है, ताकि लो-लेवल IME से जुड़े टेस्ट और IME के अन्य लो-लेवल इस्तेमाल के उदाहरणों को लिखने में मदद मिल सके.PlatformTextInputTestOverrideका अब इस्तेमाल नहीं किया जा सकता. (I862ed, b/322680547)GraphicsLayer.setOutline(Outline)एक्सटेंशन फ़ंक्शन जोड़ा गया. (Ib81f4)GraphicsLayerइंस्टेंस बनाने के लिए फ़ैक्ट्री बनाने के लिए,GraphicsContextफ़ंक्शन कंस्ट्रक्टर लॉन्च किया गया (Ib98d6, b/288494724)GraphicsLayerएपीआई को इस तरह से बनाया गया है कि डेवलपर, ड्राइंग के निर्देशों को अपनी ज़रूरत के हिसाब से कैप्चर कर सकें. इन निर्देशों का इस्तेमाल, किसी दूसरी जगह पर ड्राइंग बनाने के लिए किया जा सकता है. साथ ही, इनसे फ़ाइनल नतीजे पर अलग-अलग विज़ुअल इफ़ेक्ट भी लागू किए जा सकते हैं. (I80245, b/288494724)Paragraph#getRangeForRectफ़ंक्शन का इस्तेमाल करें. यह फ़ंक्शन, रेक्टैंगल के दिए गए एरिया में मौजूद टेक्स्ट की रेंज दिखाता है. (Iee516, b/325660505)onLinkClickedआर्ग्युमेंट के साथBasicTextके एक्सपेरिमेंटल ओवरराइड को हटाया गया. आने वाले समय में, हाइपरलिंक की सुविधा के लिए एपीआई उपलब्ध कराया जाएगा. (I107d5)
गड़बड़ियां ठीक की गईं
GraphicsLayerexpect/actual एपीआई की परिभाषा जोड़ी गई है, ताकि ड्राइंग कमांड को कैप्चर और फिर से चलाया जा सके. साथ ही, कंपोज़िटिंग विज़ुअल इफ़ेक्ट और ट्रांसफ़ॉर्म को भी जोड़ा जा सके. ग्राफ़िक्स डिपेंडेंसी को शामिल करने के लिए,GraphicsContextइंटरफ़ेस पेश किया गया है. इसमेंGraphicsLayerइंस्टेंस बनाना और उन्हें मैनेज करना शामिल है. (I4a8d6, b/288494724)- फ़ोकस सर्च की सुविधा के साथ इंटरऑप से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, फ़ोकस अन्य व्यू में एम्बेड किए गए
ComposeViewके अंदर अटक जाता था. (I08fd4)
बाहरी योगदान
LocalLifecycleOwnerको Compose यूज़र इंटरफ़ेस (यूआई) सेlifecycle-runtime-composeमें ले जाया गया है, ताकि इसके Compose पर आधारित हेल्पर एपीआई को Compose यूज़र इंटरफ़ेस (यूआई) के बाहर इस्तेमाल किया जा सके. योगदान देने के लिए, Jake Wharton का धन्यवाद. (I6c41b, b/328263448)- बायस के आधार पर अलाइनमेंट के सभी सबटाइप पर, बायस फ़्लोट प्रॉपर्टी को लगातार दिखाना. (I69f0f, b/328088992)
वर्शन 1.7.0-alpha04
6 मार्च, 2024
androidx.compose.ui:ui-*:1.7.0-alpha04 रिलीज़ हो गया है. वर्शन 1.7.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Android U के बाद के वर्शन वाले डिवाइसों पर, BasicTextField2 के लिए स्टाइलस से लिखने की सुविधा जोड़ी गई है. (I002e4)
- इस सीएल में, हम
GetScrollViewportLengthसिमैंटिक ऐक्शन जोड़ रहे हैं, ताकि हम कंपोज़ में स्क्रोल किए जा रहे कॉम्पोनेंट के बारे में जानकारी को a11y सिस्टम तक पहुंचा सकें. यह सीएल, स्क्रोल की जा सकने वाली फ़ाउंडेशन लिस्ट में बताई गई प्रॉपर्टी के इस्तेमाल पर भी लागू होता है. (Ic5fa2) FocusRequester.createRefsअब स्टेबल हो गया है (I4d92c, b/261436820)DelegatableNode.requireView()को इसलिए पेश किया गया है, ताकि मॉडिफ़ायर नोड, कंपोज़िशन लोकल को पढ़े बिना मौजूदा AndroidViewको पा सकें. (I40768)- पाथ की दिशा बदलने के लिए नया एपीआई
Path.reverse()(I36348) hintLocalesकोKeyboardOptionsमें जोड़ा गया है, ताकिTextFieldsको यह सुविधा मिल सके कि वह IME को खास स्थानीय भाषाओं के बारे में जानकारी दे सके, ताकि पसंदीदा भाषा को पहले से सेट किया जा सके.LocaleसेplatformLocaleप्रॉपर्टी को दिखाएं.यह प्रॉपर्टी, प्लैटफ़ॉर्म ऑब्जेक्ट दिखाती है. जैसे,java.util.Locale. (I921c6)
वर्शन 1.7.0-alpha03
21 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पेश है
ContextualFlowRowऔर MaxLines और ओवरफ़्लो के साथ बेहतरFlowRow/Column. हमें यह बताते हुए बेहद खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्धFlowRowऔरFlowColumnको बेहतर बनाया गया है. अब इनमें maxLines और ओवरफ़्लो की सुविधा उपलब्ध है. साथ ही,ContextualFlowRowऔरContextualFlowColumnको पहली बार लॉन्च किया गया है. इस अपडेट को परफ़ॉर्मेंस के हिसाब से सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*उन आइटम के लिए सबसे सही है जिनकी संख्या ज़्यादा है और जोmaxLinesकॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल करते हैं. वहीं,FlowRowऔरFlowColumnउन आइटम के लिए सबसे सही है जिनकी संख्या कम है. जैसे, 100 से कम आइटम. अहम जानकारी:FlowRowयाFlowColumnमें मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, वहां शुरू करने के दौरानoverflowकोFlowRowOverflow.VisibleयाFlowColumnOverflow.Visibleपर सेट करें. इन नई सुविधाओं के उदाहरण देखने के लिए,ContextualFlowRowSampleऔरFlowRowSampleपर जाएं. (Ib9135, b/293577082) maxTextLengthसिमैंटिक्स प्रॉपर्टी जोड़ें. इसे उन टेक्स्ट फ़ील्ड पर सेट किया जाना चाहिए जो ज़्यादा से ज़्यादा वर्णों को फ़िल्टर करते हैं. (I24d9f, b/170648072)Modifier.inspectableरैपर को बंद कर दिया गया है. यह एपीआई, आपके मॉडिफ़ायर को ज़रूरत से ज़्यादा बार अमान्य कर देगा. इसलिए, अब इसका इस्तेमाल न करने का सुझाव दिया जाता है. अगर डेवलपर को टूलिंग के लिए, मॉडिफ़ायर प्रॉपर्टी को दिखाना है, तो उन्हेंModifierNodeElementपरinspectableProperties()वाला तरीका लागू करने का सुझाव दिया जाता है. (Ib3236)PopupPropertiesके लिए नया कंस्ट्रक्टर, जिससेWindowManager.LayoutParamsफ़्लैग को पूरी तरह से कंट्रोल किया जा सकता है. (Ibb33e, b/312485503)DelegatableNode.requireLayoutCoordinates()कोModifier.Nodeके मौजूदाLayoutCoordinatesको पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपकोonPlacedको बदलने और प्रॉपर्टी में खुद निर्देशांकों को सेव करने की ज़रूरत नहीं है. (Ia8657)DelegatableNode.currentLayoutCoordinatesकोModifier.Nodeके मौजूदाLayoutCoordinatesको पाने के तरीके के तौर पर पेश किया गया है. इसके लिए,onPlacedको बदलने और प्रॉपर्टी में खुद निर्देशांक सेव करने की ज़रूरत नहीं होती. (Iaebaa)BasicTextField2औरandroidx.compose.foundation.text2पैकेज के तहत आने वाले इससे जुड़े एपीआई कोandroidx.compose.foundation.textमें ले जाया गया है. (I9f635)ApproachLayoutModifierNodeनया एपीआई जोड़ा गया है. इससे, मॉडिफ़ायर नोड में कस्टम अप्रोच लॉजिक बनाया जा सकता है. इसके अलावा, ऐनिमेशन के लिए एक नया एक्सपेरिमेंटलDeferredTargetAnimationएपीआई जोड़ा गया है. इसका टारगेट इंस्टैंटिएशन के समय पता नहीं होता. (I60745)- पाथ की दिशा के बारे में क्वेरी करने और
Pathसे कंटूर निकालने के लिए, नएPathएपीआई. (I63d04) PathHitTestऔरPath.contains(Offset)को जोड़ा गया है, ताकि यह पता लगाया जा सके किPathमें कोई खास पॉइंट शामिल है या नहीं. (I3b218)- अब
TextLayoutResult,getLineBaseline(lineIndex)तरीके को दिखाता है. इससे मौजूदा सुविधा वाली प्रॉपर्टीfirstBaselineऔरlastBaselineके अलावा, टेक्स्ट की किसी भी लाइन के बेसलाइन को पढ़ा जा सकता है. (Ide4e8, b/237428541) - सिर्फ़ दो
AnnotatedStringsके एनोटेशन की तुलना करने का तरीका जोड़ा गया. (I32659)
गड़बड़ियां ठीक की गईं
SemanticsPropertyReceiver.performImeActionऔरSemanticsActions.PerformImeActionके साथ पुराने सिस्टम के साथ काम करने की सुविधा से जुड़ी समस्या ठीक की गई. (Id0528, b/322269946)
वर्शन 1.7.0-alpha02
7 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.7.0-alpha02 रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SemanticsPropertyReceiver.performImeActionके साथ बाइनरी कंपैटिबिलिटी से जुड़ी समस्या को ठीक किया गया है. (I65865, b/322269946)PopupPropertiesकंस्ट्रक्टर,usePlatformDefaultWidthपैरामीटर लेता है. यह अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I8f8d2)ComposeTestRule.waitUntilको ज़्यादा बार जोड़ा गया है. यह टाइमआउट मैसेज में शामिल करने के लिए, शर्त की स्ट्रिंग के बारे में जानकारी देता है. (I9413e)- सेमंटिक्स एपीआई
unset()का नया वर्शन, जो एक ही मॉडिफ़ायर चेन में जोड़ी गई सेमंटिक्स प्रॉपर्टी को हटाने के लिए इस्तेमाल किया जाता है. नई सिमैंटिक्स प्रॉपर्टीisOpaque. (I8c583, b/317966058, b/246056649) PointerInputChangeके सार्वजनिक एपीआई में, कॉपी करने के तरीके सेoriginalEventPositionको हटाया गया. (I7bead)
गड़बड़ियां ठीक की गईं
- एक्सेसिबिलिटी से जुड़ी एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, चुने जाने पर टैब और रेडियो बटन के अलावा अन्य आइटम पर क्लिक किया जा सकता था. (I2181c)
VelocityTrackerमें अब डिफ़ॉल्ट रूप से पॉइंट जोड़ने की सुविधा चालू होगी. अगर कोई समस्या आती है, तोVelocityTrackerAddPointsFixको false पर सेट करके, गड़बड़ी ठीक करने की सुविधा को बंद किया जा सकता है. (Ib3877, b/269487059)TextStyleऔरParagraphStyleमें, बाइनरी फ़ाइल के पुराने वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (I179f0, b/320819734)
बाहरी योगदान
- प्लैटफ़ॉर्म के हिसाब से तय किए गए पैरामीटर के बिना, नया
DialogPropertiesकंस्ट्रक्टर जोड़ा गया. (I45829) - प्लैटफ़ॉर्म के हिसाब से तय किए गए पैरामीटर के बिना, नया
PopupPropertiesकंस्ट्रक्टर जोड़ा गया. (I9a038)
वर्शन 1.7.0-alpha01
24 जनवरी, 2024
androidx.compose.ui:ui-*:1.7.0-alpha01 रिलीज़ हो गया है. वर्शन 1.7.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ClipboardManagerको बड़ा किया गया है. इसमेंClipEntryऔरClipMetadataको जोड़ा गया है, ताकि इमेज जैसे किसी भी कॉन्टेंट को शामिल किया जा सके.ui-testमेंDeviceConfigurationOverrideAPI जोड़ता है, ताकि स्थानीय तौर पर टेस्ट किए जा रहे कॉन्टेंट के व्यवहार को बदला जा सके. जैसे, उपलब्ध साइज़, स्थान-भाषा, लेआउट की दिशा, फ़ॉन्ट स्केल या थीम तय करना.
वर्शन 1.6
वर्शन 1.6.8
12 जून, 2024
androidx.compose.ui:ui-*:1.6.8 रिलीज़ हो गया है. वर्शन 1.6.8 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब फ़ॉन्ट का स्केल, टेबल में तय किए गए सबसे कम स्केल से कम होता है, तब फ़ॉन्ट के स्केल में होने वाली गड़बड़ियों को ठीक किया गया है. इस मामले में, हम अब लीनियर 1x स्केल और सबसे छोटी टेबल के बीच इंटरपोलेट करते हैं, ताकि स्केल बढ़ने पर फ़ॉन्ट साइज़ लगातार बढ़ता रहे. (Icbae3)
वर्शन 1.6.7
1 मई, 2024
androidx.compose.ui:ui-*:1.6.7 रिलीज़ हो गया है. वर्शन 1.6.7 में ये बदलाव शामिल हैं.
वर्शन 1.6.6
17 अप्रैल, 2024
androidx.compose.ui:ui-*:1.6.6 रिलीज़ हो गया है. वर्शन 1.6.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BasicTextFieldके क्रैश होने की समस्या को ठीक किया गया है.
वर्शन 1.6.5
3 अप्रैल, 2024
androidx.compose.ui:ui-*:1.6.5 रिलीज़ हो गया है. वर्शन 1.6.5 में ये बदलाव शामिल हैं.
वर्शन 1.6.4
20 मार्च, 2024
androidx.compose.ui:ui-*:1.6.4 रिलीज़ हो गया है. वर्शन 1.6.4 में ये बदलाव शामिल हैं.
वर्शन 1.6.3
6 मार्च, 2024
androidx.compose.ui:ui-*:1.6.3 रिलीज़ हो गया है. वर्शन 1.6.3 में ये बदलाव शामिल हैं.
वर्शन 1.6.2
21 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.6.2 रिलीज़ हो गया है. वर्शन 1.6.2 में ये बदलाव शामिल हैं.
वर्शन 1.6.1
7 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.6.1 रिलीज़ हो गया है. वर्शन 1.6.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SemanticsPropertyReceiver.performImeActionऔरSemanticsActions.PerformImeActionके साथ पुराने सिस्टम के साथ काम करने की सुविधा से जुड़ी समस्या ठीक की गई. (Ie0bb2, b/322269946)- लेआउट अब मेज़रमेंट के दौरान गड़बड़ी का मैसेज दिखाते हैं, जब कोई लेआउट बहुत बड़ा साइज़ दिखाता है. आम तौर पर, इस तरह की गड़बड़ी तब होती है, जब मेज़रमेंट सीधे तौर पर ज़्यादा से ज़्यादा कंस्ट्रेंट का इस्तेमाल करता है और
Constraints.Infinityकी जांच नहीं करता. इस जांच से डेवलपर को, गलत साइज़ वाले लेआउट में मौजूद समस्याओं का पता लगाने में मदद मिलेगी. (I339a9)
वर्शन 1.6.0
24 जनवरी, 2024
androidx.compose.ui:ui-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये बदलाव शामिल हैं.
वर्शन 1.6.0-rc01
10 जनवरी, 2024
androidx.compose.ui:ui-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- वेक्टर ग्राफ़िक को ऑप्टिमाइज़ करके लागू किया गया है, ताकि अतिरिक्त रीकंपोज़िशन को कम करके परफ़ॉर्मेंस को बेहतर बनाया जा सके.
वर्शन 1.6.0-beta03
13 दिसंबर, 2023
androidx.compose.ui:ui-*:1.6.0-beta03 रिलीज़ हो गया है. वर्शन 1.6.0-beta03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब नोड को अलग किए बिना,
LayoutCoordinatesको अलग किया जा सकता है. Compose के लेआउट इंस्पेक्टर (If693) में इसकी जांच करें
गड़बड़ियां ठीक की गईं
PlatformImeOptionsअब इंटरफ़ेस के बजाय एक कॉन्क्रीट क्लास है. (If40a4)LocalSoftwareKeyboardControllerऔरLocalTextInputServiceको हर बार नई वैल्यू मिलने की वजह से, डाउनस्ट्रीम में होने वाले अतिरिक्त रीकंपोज़िशन की समस्या ठीक की गई. (I42190, b/310510985)
वर्शन 1.6.0-beta02
29 नवंबर, 2023
androidx.compose.ui:ui-*:1.6.0-beta02 रिलीज़ हो गया है. वर्शन 1.6.0-beta02 में ये बदलाव शामिल हैं.
वर्शन 1.6.0-beta01
15 नवंबर, 2023
androidx.compose.ui:ui-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragAndDropTargetमॉडिफ़ायर अबDragAndDropTargetको साफ़ तौर पर लेता है. साथ ही, इसमें ड्रैग और ड्रॉप सेशन में ऑप्ट इन करने के लिए लैम्डा होता है. अबDragAndDropModifierNodeके लिए दो फ़ैक्ट्री फ़ंक्शन उपलब्ध हैं. एक ट्रांसफ़र पाने के लिए और दूसरा डेटा ट्रांसफ़र करने के लिए (I69481)maximumFlingVelocityको फ़्लोट के तौर पर दिखाने के लिए अपडेट किया गया.maximumFlingVelocityयूनिटी के बारे में ज़्यादा जानकारी देने के लिए, दस्तावेज़ अपडेट किए गए हैं. (I8adc7)DragAndDropModifierNodeफ़ैक्ट्री में मौजूदonDragAndDropStartका नाम बदलकरacceptDragAndDropTransferकर दिया गया है.acceptsDragAndDropTransferकोdragAndDropTargetमॉडिफ़ायर में जोड़ा गया है, ताकि खींचकर छोड़ने वाले सेशन से इसे स्वीकार किया जा सके. अगर आपको ड्रैग और ड्रॉप सेशन में दिलचस्पी है, तो यह लैंबडा एक मान्यDragAndDropTargetदिखाता है. ड्रैग इवेंट को प्रोसेस करने के लिए, अन्य लैम्ब्डा को इससे बदल दिया गया है. ड्रैग और ड्रॉप सेशन (Iebf3a) से डेटा पाने के लिए,DragAndDropTargetफ़ैक्ट्री फ़ंक्शन जोड़ा गया हैDragAndDropInfoको हटा दिया गया है.DragAndDropModifierNode.dragअबtransferData, डेकोरेशन के साइज़, और ड्रैग डेकोरेशनDrawScopeलैम्डा के लिए पैरामीटर लेता हैDragAndDropTargetमें, एक ही ऐब्स्ट्रैक्ट तरीके के बजाय, खींचकर छोड़ने के खास इवेंट के तरीके होते हैंDragAndDropModifierNodeके फ़ैक्ट्री फ़ंक्शन में मौजूदonDragAndDropEventका नाम बदलकरonDragAndDropStartकर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि दिया गयाDragAndDropTarget, सिर्फ़ ड्रैग और ड्रॉप वाले सेशन के लिए मान्य हैDragAndDropEventTypeको हटा दिया गया है (I645b1)PlatformTextInputModifierNode.runTextInputSessionका नाम बदलकरestablishTextInputSessionकर दिया गया है. (I03cd0)नोड एपीआई के नामों को बेहतर बनाता है, ताकि उन्हें आसानी से समझा जा सके. (Ia4474)
OriginalTextकोTextSubstitutionसे बदलें. (Ifa5a8)PlatformTextInputModifierNode.textInputSessionका नाम बदलकरrunTextInputSessionकर दिया गया. (Ie9c6b)SubcomposeLayoutके बच्चों (और इस पर आधारितLazyColumnजैसे लेआउट) को निष्क्रिय माना जाता है. इन्हें आने वाले समय में फिर से इस्तेमाल करने के लिए सेव किया जाता है. ऐसे नोड की जांच करने के लिए, नयाassertIsDeactivated()टेस्ट एपीआई लॉन्च किया गया है. टेस्ट एपीआई के बाकी हिस्से, डिफ़ॉल्ट रूप से बंद किए गए नोड को फ़िल्टर कर देंगे. (I2ef84, b/187188981)FocusDirection.InऔरFocusDirection.Outको हटा दिया गया है. इसके बजाय,FocusDirection.EnterऔरFocusDirection.Exitका इस्तेमाल करें (I2f660)कार्ड और चिप के लिए, Material
SwipeToRevealAPI अब उन स्लॉट को बनाने के लिए, डेटा क्लास पर आधारित इंस्टेंस के बजाय, स्लॉट पर आधारित API का इस्तेमाल करते हैं. Compose ने भी इसी API का इस्तेमाल करने का सुझाव दिया है. यह एक बड़ा बदलाव है. नए एपीआई को इस्तेमाल करने के तरीके के बारे में जानने के लिए, कृपया डेमो और सैंपल कोड देखें. (Ia8943)FontStyle(int)कंस्ट्रक्टर के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,FontStyle.NormalयाFontStyle.Italicका इस्तेमाल करें. (I66610)FontScalableइंटरफ़ेस का नाम बदलकरFontScalingकर दिया गया (Ie804a)
गड़बड़ियां ठीक की गईं
- अगर किसी टेक्स्ट एडिटर पर फ़ोकस नहीं किया जाता है, तो
SoftwareKeyboardController.show()अब सॉफ़्टवेयर कीबोर्ड नहीं दिखाएगा. (I2165a, b/301477279) - अब उन कुंजियों के लिए हार्डवेयर कुंजी के अप इवेंट को अनदेखा कर दिया जाएगा जिन्हें उसी कंपोज़ व्यू में डाउन इवेंट नहीं मिला है. (Ib37b4, b/305518328)
ArcLineमें स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ी गई. (I4d5bb)PageSize.Fixedके लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)- विंडो इंसर्ट में बदलाव करने से जुड़ी बाइनरी कंपैटिबिलिटी की समस्या ठीक की गई (Iee695)
- Material3 चिप/बटन के लिए, मटेरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)
TestDispatcherको Compose टेस्ट के लिएeffectContextके तौर पर पास किया जाता है. अब इसका इस्तेमाल टेस्ट बनाने और फ़्रेम क्लॉक के लिए किया जाएगा. (Ia7178)
वर्शन 1.6.0-alpha08
18 अक्टूबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Modifier.dragAndDrawSourceफ़ंक्शन में,onDrawDragShadowलैम्डा का नाम बदलकरdrawDragDecorationकर दिया गया है. साथ ही,DragAndDropInfoफ़ंक्शन में, साइज़ पैरामीटर का नाम बदलकरdragDecorationSizeकर दिया गया है. (Id0e30, b/303904810)SemanticsNodeInteraction.isDisplayed()औरSemanticsNodeInteraction.isNotDisplayed()को पेश किया गया है. इनकी मदद से, यह पता लगाया जा सकता है कि मैच किया गया नोड दिख रहा है या नहीं. इसके लिए, उस पर दावा करने की ज़रूरत नहीं है. (I2c196, b/302100809)nullको बदलने के लिए,ParagraphTextStyleकेTextAlign,TextDirection,Hyphens, औरLineBreakफ़ील्ड के लिए,Unspecifiedवैल्यू जोड़ी गई है. ये इनलाइन क्लास हैं. इसलिए, Nullable को Unspecified से बदलने पर, हम प्रिमिटिव टाइप बॉक्सिंग से बचते हैं.TextStyleऔर पैराग्राफ़ स्टाइल में कंस्ट्रक्टर, गेटर, और अन्य तरीकों को अपडेट किया गया है, ताकि वे बताए गए पैरामीटर को नॉन-नल टाइप के तौर पर स्वीकार कर सकें. (I4197e, b/299490814)- एक्सएमएल से
GoogleFontको पढ़ने के लिए,GoogleFontओवरलोड जोड़ें. (If8f59) LoremIpsumPreviewParameterProviderको ओपन क्लास के तौर पर सेट किया गया हो. (I41bf5, b/266918816, b/300116360)
गड़बड़ियां ठीक की गईं
FontFamilyResolverअब कैश मेमोरी को मैनेज करने वाली कोराउटीन के लिएDispatchers.Mainका इस्तेमाल करता है. (Ie8dd9)AndroidViewBindingअबonReleaseके हिस्से के तौर पर, लेआउट मेंFragmentContainerViewको शामिल करके बढ़ाए गएFragmentइंस्टेंस को एसिंक्रोनस तरीके से हटाता है. इसके लिए,commitके बजायcommitNowका इस्तेमाल किया जाता है. इससे, बदलावों के बाद कंपोज़िशन को बदलने के लिए, लाइव एडिट के तरीके से जुड़ी समस्याएं ठीक हो जाती हैं. (I58fbf)
वर्शन 1.6.0-alpha07
4 अक्टूबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट एडिटर के लिए, टेस्ट लिखने की सुविधा
PlatformTextInputMethodTestOverrideलॉन्च की गई. (Id159b) - यह कुकी, ड्रैग ऐंड ड्रॉप सेशन शुरू करने के लिए
dragAndDropSourceमॉडिफ़ायर और ड्रैग ऐंड ड्रॉप सेशन से डेटा पाने के लिएdragAndDropTargetमॉडिफ़ायर जोड़ती है. (Ib7828, b/286038936) - ऐसे
ColorListऔरColorSetकलेक्शन जोड़े गए हैं जिनमें एट्रिब्यूशन नहीं होता. (I744bd) - नॉन-लीनियर फ़ॉन्ट स्केलिंग को बंद करने के लिए,
DisableNonLinearFontScalingInComposeअस्थायी फ़्लैग जोड़ा गया. अगर आपको टेस्ट को ठीक करने के लिए समय चाहिए, तो उन्हेंDisableNonLinearFontScalingInCompose = trueके तौर पर सेट करें. इस फ़्लैग को Compose 1.6.0-beta01 में हटा दिया जाएगा. (Ic9486)
गड़बड़ियां ठीक की गईं
- एक्सएमएल वेक्टर ड्रॉएबल पार्स करने की प्रोसेस को ऑप्टिमाइज़ किया गया है. (Ibb015)
वर्शन 1.6.0-alpha06
20 सितंबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Material आइकॉन में अतिरिक्त ऑप्टिमाइज़ेशन किए गए हैं. (I3e08d)
- इससे मिलते-जुलते नोड ढूंढने के लिए, मॉडिफ़ायर ट्री को ऊपर/नीचे ले जाने की सुविधा मिलती है. (I2d234)
focusRestorer()मॉडिफ़ायर (Ie1d43) मेंonRestoreFailed()कॉलबैक जोड़ा गया- अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं, ताकि
ColorInt,FloatRange,IntRange,Sizeवगैरह के बारे में बताया जा सके. (Id65c8, b/290950582) PreviewScreenSizesकी परिभाषा मेंshowSystemUi=trueजोड़ा गया (Ib61d3)
व्यवहार में बदलाव
- अब कंपोज़ फ़ीचर, पढ़ने और ऐक्सेस करने में आसानी के लिए नॉन-लीनियर फ़ॉन्ट स्केलिंग का इस्तेमाल करती है. सिस्टम सेटिंग में फ़ॉन्ट स्केल > 100% होने पर, छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ सिर्फ़ थोड़ा बढ़ेगा. साथ ही, एसपी में तय की गई लाइन की ऊंचाई, 100% स्केल के हिसाब से तय की गई ऊंचाई के अनुपात में अपने-आप अडजस्ट हो जाएगी. ज़्यादा जानकारी के लिए, फ़ॉन्ट स्केलिंग के सबसे सही तरीके देखें. (I11518)
वर्शन 1.6.0-alpha05
6 सितंबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इस नीति से,
AndroidComposeViewAccessibilityDelegateCompatमें कॉन्टेंट कैप्चर करने की सुविधा चालू होती है. (Ib2969) ScrollViewऔरRecyclerViewजैसे व्यू कॉम्पोनेंट में फ़्लिंग की स्पीड,ViewConfiguration.ScaledMaximumFlingVelocityपर सेट होती है. Compose में अबmaximumFlingVelocityका अपना वर्शन शामिल है. यह अबDraggableपर लागू होता है. (Ibf974)- यह प्लैटफ़ॉर्म पर ड्रैग और ड्रॉप करने वाले एपीआई के लिए, शुरुआती स्केफ़ोल्डिंग जोड़ता है. (If84ce)
RotaryScrollEventमेंdeviceIdजोड़ा गया (Iba3bf)- नए डिवाइसों (Ib25b4) को शामिल करने के लिए,
ui-toolingDevices API को अपडेट किया गया है
वर्शन 1.6.0-alpha04
23 अगस्त, 2023
androidx.compose.ui:ui-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ReusableCompositionको बंद करने का एक तरीका जोड़ा गया है. इससे निगरानी की सुविधा बंद हो जाएगी, लेकिन नोड बने रहेंगे. बंद की गई कंपोज़िशन कोsetContentको कॉल करके फिर से चालू किया जा सकता है. (Ib7f31)- सबकंपोज़िशन के लाइफ़साइकल को मैनेज करने और उनका दोबारा इस्तेमाल करने के लिए,
ReusableCompositionइंटरफ़ेस जोड़ा गया. (I812d1, b/252846775) Modifier.focusGroupको स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I7ffa3)- अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं, ताकि
ColorInt,FloatRange,IntRange,Sizeवगैरह के बारे में बताया जा सके. (I70487, b/290950582) ColorFilterएपीआई को अपडेट किया गया है, ताकि पैरामीटर की बेहतर जांच के लिए सबक्लास टाइप तय किए जा सकें. (I5fe29)- wear-tooling-preview लाइब्रेरी को पेश किया गया है. इससे, यूज़र इंटरफ़ेस (यूआई) की झलक देखने के लिए इस्तेमाल किए जा सकने वाले मान्य Wear डिवाइसों की सूची बनाई जा सकती है (Ib036e)
- डेंसिटी इंटरफ़ेस के फ़ॉन्ट स्केलिंग वाले हिस्से को मैनेज करने के लिए,
FontScalableइंटरफ़ेस बनाया गया है. (I2cf3f)
वर्शन 1.6.0-alpha03
9 अगस्त, 2023
androidx.compose.ui:ui-*:1.6.0-alpha03 रिलीज़ हो गया है. वर्शन 1.6.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- ऑब्जेक्ट को सीन में शामिल करने और हटाने के लिए, ट्रांज़िशन का नया टाइप. इसमें ऑब्जेक्ट को सीन में शामिल करने और हटाने के दौरान, ऐनिमेशन वाले कंटेनर के साइज़ के हिसाब से कॉन्टेंट को स्केल किया जाता है.
LookaheadScopeअब कंपोज़ेबल फ़न और इंटरफ़ेस स्टेबल हो गए हैं. (Ifb2ce) privateImeOptionsको कॉन्फ़िगर करने की सुविधा जोड़ी गई (Idb772)
गड़बड़ियां ठीक की गईं
PopupPositionProvider.calculatePositionअब कैलकुलेशन में पढ़े गए राज्य के बदलने पर, पॉप-अप की पोज़िशन को अपने-आप अपडेट कर देगा. (I676a1, b/292257547)readOnlyके सही होने पर, टेक्स्ट फ़ील्ड में कीबोर्ड दिखने और उनमें बदलाव किए जा सकने की समस्या को ठीक किया गया है. इसके अलावा, फ़ोकस किए जाने के दौरानreadOnlyको सही से गलत पर बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)- यूज़र इंटरफ़ेस (यूआई) की टेस्टिंग में ग्लोबल असर्शन का इस्तेमाल किया जा सकता है. (I1f90d)
वर्शन 1.6.0-alpha02
26 जुलाई, 2023
androidx.compose.ui:ui-*:1.6.0-alpha02 रिलीज़ हो गया है. वर्शन 1.6.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक सर्विस लोकेटर इंटरफ़ेस जोड़ा गया है. इसे कंपोज़िशन को लागू करने वाले लोग लागू कर सकते हैं. इससे कंपोज़िशन को लागू करने की अनुमति मिलती है. यह कंपोज़िशन, कंपोज़िशन डेलिगेट सर्विस के लुकअप को ओरिजनल कंपोज़िशन को सौंपती है. इसे सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसका इस्तेमाल रनटाइम में एक्सपेरिमेंटल एपीआई बनाने के लिए किया जाता है. इन्हें कंपोज़र के रैप किए गए वर्शन से ढूंढा जा सकता है. जैसे, यूज़र इंटरफ़ेस (यूआई) मॉड्यूल करता है. (I296b9)
PlatformTextInput*API को पूरी तरह से फिर से डिज़ाइन किया गया है. (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardControllerऔरLocalSoftwareKeyboardControllerअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.LocalSoftwareKeyboardControllerअब एक सहीCompositionLocalभी है. (I4c364)LookaheadLayoutऔरLookaheadLayoutScopeको कुछ रिलीज़ के लिए बंद कर दिया गया था. अब इन्हें हटा दिया गया है. बदले गए एपीआई,LookaheadScopeहैं. ये किसी भी लेआउट के साथ काम कर सकते हैं. (I12ac3)- टेस्ट में फ़ोकस करने का अनुरोध करने के लिए,
SemanticsNodeInteraction.requestFocusको ज़्यादा सुविधाजनक और आसानी से ढूंढने वाले तरीके के तौर पर जोड़ा गया है. (Ie8722) - ग्लोबल असर्शन रजिस्टर करने के लिए, एक्सपेरिमेंटल एपीआई जोड़े गए हैं. इनका इस्तेमाल आने वाले समय में टेस्टिंग फ़्रेमवर्क कर पाएंगे. (I12d77)
गड़बड़ियां ठीक की गईं
AndroidViewके कंपोज़िशन में शामिल होने पर,updateके कॉलबैक को तुरंत लागू करने के बजाय, अब व्यू अटैच होने तक इसे टाला जाएगा.AndroidViewइस अपडेट में, उस बग को ठीक किया गया है जिसमें किसी इफ़ेक्ट के ज़रिए, पढ़ी गई स्थिति में तुरंत बदलाव होने पर,updateकॉलबैक अमान्य नहीं होता था. (Ie9438, b/291094055)
वर्शन 1.6.0-alpha01
21 जून, 2023
androidx.compose.ui:ui-*:1.6.0-alpha01 रिलीज़ हो गया है. वर्शन 1.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
LazyListमें लुकअहेड की सुविधा काम करती है. इससे, लुकअहेड पास में मौजूदLazyList, किसी भी ऐनिमेशन (जैसे कि आइटम प्लेसमेंट ऐनिमेशन,AnimatedVisibilityवगैरह) को बायपास कर सकता है. साथ ही, सभी बच्चों के लिए लुकअहेड का साइज़ और पोज़िशन का हिसाब लगा सकता है. लुकअहेड पास के बाद,LazyListके बच्चे, लुकअहेड पास में दिखाई गई चीज़ों को अपने हिसाब से ऐनिमेट कर सकते हैं.
व्यवहार में बदलाव: Compose में, includeFontPadding अब डिफ़ॉल्ट रूप से फ़ॉल्स पर सेट है
Compose में, includeFontPadding अब डिफ़ॉल्ट रूप से गलत (21d806) पर सेट है.
includeFontPadding एक लेगसी एट्रिब्यूट है. इससे यह कंट्रोल किया जाता है कि टेक्स्ट की पहली और आखिरी लाइन के ऊपर अतिरिक्त पैडिंग शामिल करनी है या नहीं. ऐसा इसलिए किया जाता है, ताकि टेक्स्ट की बेसलाइन के ऊपर या नीचे बढ़ने वाले किसी भी वर्ण को शामिल किया जा सके.
Compose के इस वर्शन को अपडेट करने से, आपके यूज़र इंटरफ़ेस (यूआई) में सभी टेक्स्ट रेंडर करने का तरीका बदल जाएगा. ऐसा इसलिए होगा, क्योंकि यह हर टेक्स्ट की पहली और आखिरी लाइन के ऊपर मौजूद अतिरिक्त पैडिंग को हटा देगा.
यूज़र इंटरफ़ेस (यूआई) की ज़रूरतों और इस्तेमाल की जा रही फ़ॉन्ट मेट्रिक के आधार पर, बदलाव कम से कम होने चाहिए. हालांकि, आपको इन जैसी समस्याओं का सामना करना पड़ सकता है: - स्क्रीनशॉट टेस्ट काम नहीं कर रहे हैं. अगर ज़रूरी हो, तो यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्या ठीक करें और अहम इमेज फिर से जनरेट करें. - टेक्स्ट थोड़ा गलत तरीके से अलाइन किया गया है. कस्टम नेगेटिव पैडिंग हटाएं या अगर ज़रूरी हो, तो पैडिंग जोड़ें.
हर टेक्स्ट के लिए PlatformTextStyle का इस्तेमाल करके, includeFontPadding में ऑप्ट-इन किया जा सकता है:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Material स्टाइल कॉन्फ़िगर करके, अपने सभी टेक्स्ट के लिए includeFontPadding की सुविधा चालू की जा सकती है. ध्यान दें कि M2 और M3 के बीच पैरामीटर के नाम अलग-अलग होंगे.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Compose includeFontPadding के बारे में ज़्यादा जानने के लिए, डेवलपर के लिए बनाए गए दस्तावेज़ और यह ब्लॉग पोस्ट पढ़ें.
अगर आपको इस बदलाव से जुड़ी कोई समस्या या गड़बड़ी मिलती है, तो समस्या ट्रैकर का इस्तेमाल करके, गड़बड़ी की रिपोर्ट करें.
एपीआई में हुए बदलाव
InputConnection#requestCursorUpdates(I0c69b)FocusRequester.saveFocusedChildऔरFocusRequester.restoreFocusedChildको जोड़ा गया (Ic557e, b/272302679, b/275157318)ResourceResolutionExceptionटाइप जोड़ें, ताकि लोड न हो पाने वाली बिटमैप ऐसेट को लोड करने की कोशिश करते समय थ्रो किए गए थ्रोएबल को रैप किया जा सके. साथ ही, लोड न हो पाने वाली ऐसेट के पाथ की जानकारी दी जा सके. (I19f44, b/230166331, b/278424788)- परफ़ॉर्मेंस और मेमोरी के बंटवारे के लिए, सुलभता को ऑप्टिमाइज़ किया गया है. (Iede48)
- टेक्स्ट का अनुवाद करने के लिए, सिमैंटिक्स प्रॉपर्टी और कार्रवाइयां जोड़ी गई हैं. (I4a6bc)
IntrinsincMeasureScopeमें नई प्रॉपर्टी और उसके लागू करने के तरीके (जैसे,MeasureScope), ताकि यह पता चल सके कि मौजूदा मेज़र पास, लुकअहेड पास है या नहीं. (I7a812)DrawScopeएपीआई को अपडेट किया गया है, ताकि रेंडरिंग को किसी दूसरे कैनवस में फिर से टारगेट किया जा सके. इसके लिए, घनत्व/लेआउट की दिशा और साइज़ को बदला जा सकता है.DrawContextको अपडेट किया गया है, ताकि डेंसिटी और लेआउट की दिशा को कॉन्फ़िगर किया जा सके. साथ ही, कैनवस को कॉन्फ़िगर किया जा सके. (Ie1f9b, b/225408150)- वर्णों के बाउंडिंग बॉक्स का हिसाब लगाने के लिए,
Paragraph#fillBoundingBoxesको जोड़ा गया. (If30ee) - सामान्य
MultiPreviewsका सेट जोड़ा गया (Ia5a27)
गड़बड़ियां ठीक की गईं
- कस्टम
FocusTargetबनाने के लिए,FocusTargetModifierNodeइंटरफ़ेस जोड़ा गया. (I9790e) TextMeasurerकंस्ट्रक्टर पर मौजूदfallback*पैरामीटर का नाम बदलकरdefault*कर दिया गया है. (I940a5)SemanticsPropertyReceiver.performImeActionका नाम बदलकरonImeActionऔरSemanticsActions.PerformImeActionका नाम बदलकरOnImeActionकर दिया गया है. (I8e841)- नेस्ट की गई स्क्रोलिंग में, माउस के स्क्रोल और ड्रैग के बीच अंतर करने के लिए, व्हील जोड़ता है. खास तौर पर,
NestedScrollConnectionमें. (Ie57e4) asComposePaintएपीआई जोड़ा गया है, ताकिtoComposePaintको बदला जा सके. ऐसा इसलिए, क्योंकि लौटाया गया ऑब्जेक्ट, ओरिजनलandroid.graphics.Paint(I22b4c) को रैप करता हैSemanticsProperties.imeActionको बंद कर दिया गया है. इसेSemanticsActions.performImeActionके नए पैरामीटर से बदलें. (I4a587)- माउस से चुनने की सुविधा जोड़ी गई. टच करके चुने गए हिस्से को शब्द के हिसाब से बढ़ाया जाएगा और वर्ण के हिसाब से कम किया जाएगा. (Ic0c6c, b/180639271)
Paragraphके जिन तरीकों से, सीमा से बाहर के ऑफ़सेट के लिएAssertionErrorमिलता था उनसे अबIllegalArgumentExceptionमिलता है. ऐसा इसलिए, क्योंकिMultiParagraphसे भी मिलता है. (I549d3, b/243338896)
संस्करण 1.5
वर्शन 1.5.4
18 अक्टूबर, 2023
androidx.compose.ui:ui-*:1.5.4 रिलीज़ हो गया है. वर्शन 1.5.4 में ये बदलाव शामिल हैं.
वर्शन 1.5.3
4 अक्टूबर, 2023
androidx.compose.ui:ui-*:1.5.3 रिलीज़ हो गया है. वर्शन 1.5.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- (b/301209788)
TextFieldकभी-कभी फ़ोकस करते समय और कोरियन इनपुट डालते समय, पिछली कमांड को गलत तरीके से लागू कर देता था. इससे वर्ण गायब हो जाते थे.
संस्करण 1.5.2
27 सितंबर, 2023
androidx.compose.ui:ui-*:1.5.2 रिलीज़ हो गया है. वर्शन 1.5.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बैकग्राउंड थ्रेड से ऐक्सेसबिलिटी स्क्रोल एपीआई को ऐक्सेस करने पर होने वाली क्रैश की समस्या को ठीक करने का तरीका जोड़ा गया.
- सिमैंटिक्स ट्री में जोड़े जा रहे बिना अटैच किए गए नोड की समस्या ठीक की गई.
संस्करण 1.5.1
6 सितंबर, 2023
androidx.compose.ui:ui-*:1.5.1 रिलीज़ हो गया है. वर्शन 1.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
readOnlyके सही होने पर, कीबोर्ड दिखाने वाले टेक्स्ट फ़ील्ड और उनमें बदलाव करने की सुविधा से जुड़ी समस्या ठीक की गई. इसके अलावा, फ़ोकस किए जाने के दौरानreadOnlyको सही से गलत पर बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)
वर्शन 1.5.0
9 अगस्त, 2023
androidx.compose.ui:ui-*:1.5.0 रिलीज़ हो गया है. वर्शन 1.5.0 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-rc01
26 जुलाई, 2023
androidx.compose.ui:ui-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SubcomposeLayoutके अंदरmovableContentOf()का इस्तेमाल करने पर, क्रैश होने की समस्या ठीक की गई.
वर्शन 1.5.0-beta03
28 जून, 2023
androidx.compose.ui:ui-*:1.5.0-beta03 रिलीज़ हो गया है. वर्शन 1.5.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- FocusTargetModifierNode इंटरफ़ेस जोड़ा गया है. इसका इस्तेमाल, कस्टम FocusTarget बनाने के लिए किया जा सकता है. (Ifb1d6)
- डायलॉग और पॉप-अप कंपोज़ेबल से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से,
usePlatformDefaultWidth=trueकरने पर चाइल्ड विंडो का साइज़ उम्मीद के मुताबिक नहीं बदलता था. (I112ee)
वर्शन 1.5.0-beta02
7 जून, 2023
androidx.compose.ui:ui-*:1.5.0-beta02 रिलीज़ हो गया है. वर्शन 1.5.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose में इस्तेमाल किए जाने वाले
android.graphics.Paintइंस्टेंस के इस्तेमाल को चालू करने के लिए,asComposePaintAPI जोड़ा गया
गड़बड़ियां ठीक की गईं
asComposePaintएपीआई जोड़ा गया है, ताकिtoComposePaintको बदला जा सके. ऐसा इसलिए, क्योंकि लौटाया गया ऑब्जेक्ट, ओरिजनलandroid.graphics.Paint(I22b4c) को रैप करता है
वर्शन 1.5.0-beta01
24 मई, 2023
androidx.compose.ui:ui-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- रीकंपोज़िशन, कलर ऐनिमेशन, और
AndroidComposeView(Ib2bfa) में किए गए बदलावों को हटाया गया - डेलिगेशन की अनुमति देने के लिए, हेल्पर फ़ंक्शन
CacheDrawModifierNode()जोड़ा गया (Icf8f9) isLookingAheadप्रॉपर्टी लॉन्च की गई है. इसेMeasureScopeसे ऐक्सेस किया जा सकता है. इसकी मदद से, लुकअहेड के नतीजों को देखा जा सकता है. साथ ही, अगर चाहें, तो मुख्य पास पर असर डाला जा सकता है. (Ibf4c3)- नई सिमैंटिक्स प्रॉपर्टी
traversalIndex. यह एक फ़्लोट है, जिसका इस्तेमालTalkBackट्रैवर्सल में नोड का क्रम बदलने के लिए किया जाता है. इसमें कम वैल्यू वाले नोड पहले आते हैं. (I9a81b, b/186443263) - सेमैंटिक्स प्रॉपर्टी
isContainerका नाम बदलकरisTraversalGroup(I121f6) किया जा रहा है ColorProducerमें अबproduceके बजायoperator fun invokeहै (I4a9a2)- पाथ ऑब्जेक्ट पर अनुवाद/स्केल/रोटेशन ट्रांसफ़ॉर्मेशन लागू करने के लिए,
Pathट्रांसफ़ॉर्म एपीआई जोड़ें. (I23434, b/233772232) ColorProducerके तरीके कोproduceकहा जाता है. (I78bde)toFrameworkColorSpaceका नाम बदलकरtoAndroidColorSpace(I4f547) किया गयाColorLambdaका नाम बदलकरColorProducerकर दें. (I73b1a)- Android और Compose के कलरस्पेस टाइप के बीच बदलने के लिए, एपीआई पेश किए गए हैं. (Ie7db4, b/279979665)
BasicTextमें रंग पैरामीटर जोड़ा गया है, ताकि टेक्स्ट के रंग को आसानी से ऐनिमेट किया जा सके या सेट किया जा सके. (Iffd88, b/246961787)TextRange.constrainका नाम बदलकरTextRange.coerceInकर दिया गया. (I31be2)- पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया
TextStyle.merge(...)जोड़ा गया. (Iad234, b/246961787) - कई टेक्स्ट एपीआई को बेहतर बनाया गया है. इनमें
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush)शामिल हैं. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingको फिर से इस्तेमाल किया जा सकता है. हमारा मकसद इस फ़ील्ड को हटाना था. हालांकि, मिले सुझाव/राय के आधार पर हमें पता चला है कि डेवलपर को इस कॉन्फ़िगरेशन विकल्प की ज़रूरत है. इसलिए, फ़ील्ड से बंद होने की सूचना को हटाया जा रहा है (I98e96, b/277703184)- सार्वजनिक
TextRange.constrainतरीका जोड़ा गया. (I97912) AnnotatedStringमें मौजूदUrlAnnotationको अब सुलभता सेवाओं के ज़रिए खोला जा सकता है. जैसे,TalkBack. (If4d82, b/253292081)- टेक्स्ट फ़ील्ड के लिए,
InsertTextAtCursorसिमैंटिक्स ऐक्शन जोड़ा गया. (I11ed5) LineHeightStyle.Alignment(topRatio)कंस्ट्रक्टर को स्टेबल एपीआई के तौर पर प्रमोट किया गया है. (I79c32, b/261565383)TextMeasurerऔर इससे जुड़े एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I74647, b/261581753)- टेक्स्ट एडिटर नोड पर IME ऐक्शन शुरू करने के लिए,
PerformImeActionसिमैंटिक्स ऐक्शन जोड़ा गया. (Ic606f, b/269633506) - Android के लिए,
PlatformTextInputएपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I668eb) Enum.valueOfके लिए वैल्यू पैरामीटर का नाम बदला गया (Ia9b89)- enum valueOf (I818fe) से ज़्यादा थ्रो किए गए अपवाद
- कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल
PlatformTextInputAdapterएपीआई लॉन्च किया गया है. यह सीधे तौर पर प्लैटफ़ॉर्म एपीआई से कम्यूनिकेट करता है. (I58df4) - Canvas पर टेक्स्ट बनाते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम का इस्तेमाल करने के लिए,
DrawScope.drawText,Paragraph.paint, औरMultiParagraph.paintतरीकों मेंBlendModeपैरामीटर जोड़ा गया. (I57508) Font.MaximumAsyncTimeoutका नाम बदलकरFont.MaximumAsyncTimeoutMillisकर दें. सिर्फ़ नाम बदलें. (I07af5)@Previewरेफ़रंस डिवाइसों (Id6151, b/254528382) की अपडेट की गई डीपीआई वैल्यूBasicTextमेंbrush,alphaपैरामीटर जोड़ें, ताकि टेक्स्ट ब्रश को आसानी से ऐनिमेट किया जा सके या सेट किया जा सके.- :ui:ui-unit में फ़्लोट, डबल, लॉन्ग, इंट, शॉर्ट के लिए बॉक्स-फ़्री लैंबडा टाइप तय करें (I6f18d, b/246961787)
गड़बड़ियां ठीक की गईं
- पॉइंटर की वेलोसिटी ट्रैकिंग में कई ऐसेट के लिए किए गए असाइनमेंट हटाए गए (I26bae)
- लेआउट और पॉइंटर इनपुट मैनेजमेंट में कम किए गए असाइनमेंट (I5333a)
- वेक्टर मेमोरी के इस्तेमाल और पहले फ़्रेम की रेंडरिंग को ऑप्टिमाइज़ करें (I2f3c6)
- Canvas की मदद से लाइनें और पॉइंट बनाते समय, मेमोरी के इस्तेमाल से जुड़ी समस्या को ठीक किया गया (I9f535)
AndroidFont.fontVariationSettingsके लिए दस्तावेज़ जोड़े गए (I7d9e2)
बाहरी योगदान
- वेक्टर एपीआई (I906cb) में परफ़ॉर्मेंस को बेहतर बनाया गया है और ऐलोकेशन को कम किया गया है
वर्शन 1.5.0-alpha04
10 मई, 2023
androidx.compose.ui:ui-*:1.5.0-alpha04 रिलीज़ हो गया है. वर्शन 1.5.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
Modifier.Nodeडेलिगेशन से जुड़ी सुविधाएं बेहतर बनाई गईंModifier.Nodeसे अन्यDelegatingNodeइंस्टेंस को डेलिगेट करने की बेहतर सुविधा जोड़ी गई. ऐसाdelegateऔरundelegateएपीआई की मदद से किया जा सकता है. इस बदलाव से पहले, डेलिगेट करने वाले नोड के हर एपीआई को डेलिगेट किए गए नोड को साफ़ तौर पर डेलिगेट करना पड़ता था. इस बदलाव के बाद, नोड इंटरफ़ेस अपने-आप डेलिगेट हो जाएंगे. हालांकि,DelegatingNodeउन्हें साफ़ तौर पर बदल सकता है. (67352bc)
एपीआई में हुए बदलाव
NestedScrollModifierNodeको पेश किया गया है. यह एकNestedScroll Modifier.Nodeहै जिसे डेलिगेट किया जा सकता है. (I69513)AndroidViewBindingकंपोज़ेबल मेंonResetऔरonReleaseपैरामीटर जोड़े गए हैं. येAndroidViewकंपोज़ेबल की तरह काम करते हैं. साथ ही,ViewBindingकी मदद से व्यू को फिर से इस्तेमाल करने की सुविधा चालू करते हैं. (I00b1e, b/276802519)- Compose Path API को अपडेट किया गया है, ताकि रीवाइंड ऑपरेशन काम कर सकें. इससे, बार-बार पाथ में बदलाव करने के इस्तेमाल के उदाहरणों को तेज़ी से फिर से इस्तेमाल किया जा सकेगा. (I7b797)
- पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया
TextStyle.merge(...)जोड़ा गया. (Iad234, b/246961787) - कई टेक्स्ट एपीआई को बेहतर बनाया गया है. इनमें
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush)शामिल हैं. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingको फिर से इस्तेमाल किया जा सकता है. हमारा मकसद इस फ़ील्ड को हटाना था. हालांकि, सुझाव/राय या शिकायत से पता चलता है कि डेवलपर को इस कॉन्फ़िगरेशन विकल्प की ज़रूरत है. इसलिए, फ़ील्ड से डेप्रिकेशन हटाया जा रहा है (I98e96, b/277703184)
गड़बड़ियां ठीक की गईं
- उस रिग्रेशन को ठीक किया गया है जिसमें
Dialogकंपोज़ेबल से नहीं बनाए गए डायलॉग में मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था. (I82551, b/262140644)
वर्शन 1.5.0-alpha03
19 अप्रैल, 2023
androidx.compose.ui:ui-*:1.5.0-alpha03 रिलीज़ हो गया है. वर्शन 1.5.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
LookaheadScopeमेंSubcomposeLayoutके लिए डिफ़ॉल्ट व्यवहार में बदलाव:SubcomposeLayoutsजिनमें शर्त के हिसाब से स्लॉट नहीं होते हैं (जैसे,TabRow,Scaffold,BoxWithConstraintsवगैरह), अब लुकअहेड ऐनिमेशन के साथ बेहतर तरीके से काम करते हैं.
एपीआई में हुए बदलाव
- नया डिफ़ॉल्ट
intermediateMeasurePolicy, लुकअहेड पास से मेज़रमेंट की नीति का फिर से इस्तेमाल करता है. इससेSubcomposeLayoutके ऐसे सबटाइप लुकअहेड के साथ डिफ़ॉल्ट रूप से काम कर सकते हैं जिनमें कंडिशनल स्लॉट नहीं होते. जैसे,Scaffold,TabRow, औरBoxWithConstraints. (Id84c8) - Android विंडो के लिए बनाया गया रीकंपोज़र, अब
ON_STOPसूचना मिलने पर, पूरी कंपोज़िशन के बजाय सिर्फ़withFrameNanosको कॉल ब्लॉक करेगा. इसका मतलब है कि बंद की गई गतिविधियों से जुड़ी विंडो, डेटा में हुए बदलावों के लिए फिर से कंपोज़ होती रहेंगी. हालांकि, ऐनिमेशन याwithFrameNanosको कॉल करने वाला कोई भी अन्य व्यक्ति ब्लॉक हो जाएगा. (Id9e7f, b/240975572) motionEventSpyको स्टेबल वर्शन में बदलता है. (Ic5ec4, b/261560988)- सार्वजनिक
TextRange.constrainतरीका जोड़ा गया. (I97912) PlatformTextStyle.includeFontPaddingको अब सेवा में नहीं रखा गया है, ताकि डेवलपर इस कंपैटिबिलिटी एपीआई का इस्तेमाल करके,includeFontPaddingको 'गलत है' पर सेट करने की सुविधा को स्विच और टेस्ट कर सकें. (I98e96, b/277703184)
वर्शन 1.5.0-alpha02
5 अप्रैल, 2023
androidx.compose.ui:ui-*:1.5.0-alpha02 रिलीज़ हो गया है. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नया
SubcomposeLayoutएपीआई, जो लुकअहेड पर आधारित ऐनिमेशन के दौरान मेज़र/लेआउट लॉजिक को मैनेज करने के लिए, बीच में लागू होने वाली नीति का इस्तेमाल करता है. (I017d3) - PointerInput अब लेज़ी है और बेहतर परफ़ॉर्मेंस के लिए Modifier.Node का इस्तेमाल करता है (व्यवहार में हुए छोटे बदलाव के बारे में पढ़ें). (15dab9)
- यह कुकी, मुख्य इवेंट के साथ एक्सपेरिमेंटल एपीआई को स्टेबल एपीआई में बदल देती है. (I9c7d8, b/261566839, b/261567368)
PointerInputChangeमें, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई को स्टेबल एपीआई में बदलता है. (I1b543, b/261560988, b/261565762, b/261565749)- यह ज़्यादा जटिल
Modifier.Nodeलागू करने के लिए,SuspendingPointerInputModifierNodeको इंस्टैंशिएट करने का तरीका जोड़ता है. (Ic4933) AnnotatedStringमें मौजूदUrlAnnotations को अब सुलभता सेवाओं के ज़रिए खोला जा सकता है. जैसे,TalkBack. (If4d82, b/253292081)- हार्डवेयर की को सॉफ़्ट कीबोर्ड पर भेजे जाने से पहले ही इंटरसेप्ट करने के लिए, एक एपीआई जोड़ा गया है (I4f4c6, b/186800395)
- टेक्स्ट फ़ील्ड के लिए,
InsertTextAtCursorसिमैंटिक्स ऐक्शन जोड़ा गया. (I11ed5) - टेक्स्ट से जुड़ी टेस्ट कार्रवाइयों (जैसे,
performTextInput) के लिए, अब सीधे फ़ोकस करने का अनुरोध किया जाएगा. इसके लिए, फ़ील्ड पर क्लिक करने के बजाय, सिमैंटिक्स ऐक्शन का इस्तेमाल किया जाएगा. (I6ed05)
गड़बड़ियां ठीक की गईं
- टेक्स्ट टेस्ट की कार्रवाइयों के लिए, अब टेक्स्ट फ़ील्ड चालू करना ज़रूरी है. (Iab328)
वर्शन 1.5.0-alpha01
22 मार्च, 2023
androidx.compose.ui:ui-*:1.5.0-alpha01 रिलीज़ हो गया है. वर्शन 1.5.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Modifier.intermediateLayout को अब LookaheadScope की ज़रूरत नहीं होती. intermediateLayout में मौजूद मेज़र ब्लॉक में IntermediateMeasureScope को रिसीवर के तौर पर इस्तेमाल किया जाता है. यह CoroutineScope, LookaheadScope, और MeasureScope को आसानी से उपलब्ध कराता है.(Ibe2e5)
- LookaheadLayout को LookaheadScope से बदल दिया गया है. यह अब Layout नहीं है. इससे LookaheadScope में मौजूद चाइल्ड कॉन्टेंट को सीधे तौर पर पैरंट की MeasurePolicy से कंट्रोल किया जा सकता है. (Ibe2e5)
Modifier.Node#coroutineScopeजोड़ता है, ताकि Modifier.Nodes को रूटीन लॉन्च करने की अनुमति मिल सके. (I76ef9)- CompositionLocalConsumerModifierNode इंटरफ़ेस लागू करके, Modifier.Nodes को CompositionLocals पढ़ने की अनुमति देता है. (Ib44df)
- @Deprecated क्लास को प्रॉपर्टी में ट्रांसफ़र करना. (I882d1)
वर्शन 1.4
वर्शन 1.4.3
3 मई, 2023
androidx.compose.ui:ui-*:1.4.3 रिलीज़ हो गया है. वर्शन 1.4.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कुछ मॉडिफ़ायर के साथ इस्तेमाल करने पर,
AndroidViewको सही तरीके से लेआउट न किए जाने की समस्या को ठीक किया गया है. (I4dc77, b/274797771) - 2D फ़ोकस सर्च में मौजूद एक गड़बड़ी को ठीक किया गया है. इससे
DropDownमेन्यू पर असर पड़ता था (b/276811828) - कस्टम फ़ोकस में जाने/बाहर निकलने की प्रॉपर्टी में मौजूद उस बग को ठीक किया गया है जिसकी वजह से, लैंबडा को पहली बार शुरू करने पर ही, फ़ोकस में जाने/बाहर निकलने वाला ब्लॉक चलता था (b/277234245)
- फ़ोकस सिस्टम में हुई रिग्रेशन की समस्या को ठीक किया गया है. इसकी वजह से,
focusPropertiesको पढ़ते समय ऐप्लिकेशन क्रैश हो जाता था. (b/271324781, b/274897776)
वर्शन 1.4.2
19 अप्रैल, 2023
androidx.compose.ui:ui-*:1.4.2 रिलीज़ हो गया है. वर्शन 1.4.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐसी समस्या को ठीक किया गया है जिसमें
AndroidViewअपने मॉडिफ़ायर का सही तरीके से फिर से इस्तेमाल नहीं कर पाता था. इससे ऐप्लिकेशन के क्रैश होने और अनचाहे नतीजे मिलने की समस्या हो सकती थी. (Ib67ee, b/275919849) - रिग्रेशन की समस्या ठीक की गई. इसमें
Dialogकंपोज़ेबल से नहीं बनाए गए डायलॉग में मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था (I82551, b/262140644)
वर्शन 1.4.1
5 अप्रैल, 2023
androidx.compose.ui:ui-*:1.4.1 रिलीज़ हो गया है. वर्शन 1.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
ParentDataModifierसेAndroidViewपर असर न पड़ने की समस्या को ठीक किया गया है (b/274797771)
वर्शन 1.4.0
22 मार्च, 2023
androidx.compose.ui:ui-*:1.4.0 रिलीज़ हो गया है. वर्शन 1.4.0 में ये बदलाव शामिल हैं.
1.3.0 के बाद हुए अहम बदलाव
- एक नया
PinnableContainerएपीआई जोड़ा गया है. इससे सूची के आइटम को पिन किया जा सकता है, ताकि स्क्रोल करने पर वे तय सीमा से बाहर न जाएं. उदाहरण के लिए,Modifier.focusable()इस सुविधा का इस्तेमाल करके, फ़िलहाल फ़ोकस किए गए आइटम को पिन करता है. (Ib8881, b/259274257, b/195049010) - फ़ोकस सिस्टम को नए एक्सपेरिमेंटल
Modifier.Nodeएपीआई का इस्तेमाल करके फिर से लिखा गया है. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Surfaces पर
IsContainerसिमैंटिक्स प्रॉपर्टी जोड़ी गई. इस प्रॉपर्टी का इस्तेमाल बाद में किए जाने वाले बदलाव में किया जाएगा. इससे, एलिमेंट के सिमैंटिक मतलब के आधार पर ट्रैवर्सल का क्रम तय किया जाएगा. जैसे, सर्फ़ेस. (I63379) - सुलभता से जुड़ी नई भूमिका
DropdownListजोड़ी गई है. इसका इस्तेमाल,android.widget.Spinnerपर फ़ोकस करते समयTalkBackके व्यवहार को दोहराने के लिए किया जा सकता है. (I177e5, b/236159001) - अब
PlatformTextStyle(emojiSupportMatch)का इस्तेमाल करके, किसी पैराग्राफ़ के लिए इमोजी की सुविधा को बंद किया जा सकता है. (Ia7100, b/139326806) - Android Compose UI टेस्ट अब हर फ़्रेम के लिए लेआउट पास चलाएंगे.ऐसा तब होगा, जब फ़्रेम को आइडल स्टेट में ले जाया जाएगा. उदाहरण के लिए,
waitForIdleके ज़रिए. इससे उन टेस्ट पर असर पड़ सकता है जो लेआउट ऐनिमेशन के अलग-अलग फ़्रेम पर दावा करते हैं. (I8ea08, b/222093277) TextStyleमें एक्सपेरिमेंटलTextMotionजोड़ा गया है, ताकि यह तय किया जा सके कि टेक्स्ट कोStatic(default)के तौर पर दिखाना है या ऐनिमेशन के तौर पर. अगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जाना है, उसका अनुवाद किया जाना है या उसे घुमाया जाना है, तोTextMotion.Animatedका इस्तेमाल करें. (I24dd7)
वर्शन 1.4.0-rc01
8 मार्च, 2023
androidx.compose.ui:ui-*:1.4.0-rc01 रिलीज़ हो गया है. वर्शन 1.4.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AndroidViewकंपोज़ेबल फ़ंक्शन का ओवरलोड जोड़ा गया है, जोonResetपैरामीटर स्वीकार करता है. इससे व्यू इंस्टेंस को फिर से इस्तेमाल किया जा सकता है. ऐसा तब होता है, जब कंपोज़िशन में मौजूद उनके नोड को हटा दिया जाता है और उन्हें कंपैटिबल तरीके से फिर से इस्तेमाल किया जाता है. यह खास तौर पर, व्यू केLazyRowsऔरLazyColumnsके लिए मददगार है. (I3f10d, b/230099236)- कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल
PlatformTextInputAdapterएपीआई लॉन्च किया गया है. यह सीधे तौर पर प्लैटफ़ॉर्म एपीआई से कम्यूनिकेट करता है. (I58df4)
गड़बड़ियां ठीक की गईं
BasicTextFieldकीSetTextसिमैंटिक्स कार्रवाई, अब टेक्स्ट बफ़र को अपडेट करेगी. इसके लिए, वही कोड पाथ इस्तेमाल किया जाएगा जो IME अपडेट और टेस्टिंग फ़ंक्शन (जैसे किperformTextReplacement) के लिए इस्तेमाल किया जाता है.- टेक्स्ट टेस्टिंग के फ़ंक्शन
performTextClearance,performTextReplacement, औरperformTextSelectionअबSemanticsActionsका इस्तेमाल करते हैं. (I0807d, b/269633168, b/269624358)
वर्शन 1.4.0-beta02
22 फ़रवरी, 2023
androidx.compose.ui:ui-*:1.4.0-beta02 रिलीज़ हो गया है. वर्शन 1.4.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
modifierElementOf()API को हटा दिया गया है. इसके बजाय, कृपया सीधेModifierNodeElementसे एक्सटेंशन लागू करें. (I2256b)- एक नया
Modifier.Node.onReset()कॉलबैक जोड़ा गया है. इससे, कुछ लोकल स्टेट को रीसेट किया जा सकता है. ऐसा तब किया जाता है, जबLayoutका फिर से इस्तेमाल किया जाता है. उदाहरण के लिए,LazyColumnके आइटम के तौर पर. फ़ोकस की गई स्थिति को ठीक से रीसेट करने के लिए,FocusTargetModifierNodeको ठीक किया गया है. (I65495, b/265201972) - Canvas पर टेक्स्ट बनाते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम इस्तेमाल करने के लिए,
DrawScope.drawText,Paragraph.paint, औरMultiParagraph.paintतरीकों मेंBlendModeपैरामीटर जोड़ा गया. (I57508)
गड़बड़ियां ठीक की गईं
- सुलभता फ़ोकस ऑर्डर एल्गोरिदम को बेहतर बनाया गया है. उदाहरण के लिए, टॉप/बॉटम बार को ज़्यादातर पहले/आखिरी में पढ़ा जाता है (74e9c5)
वर्शन 1.4.0-beta01
8 फ़रवरी, 2023
androidx.compose.ui:ui-*:1.4.0-beta01 रिलीज़ हो गया है. वर्शन 1.4.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PinnableContainer.PinnedHandle.unpin()का नाम बदलकरrelease()कर दिया गया है (I4667a)ComposeTestRuleमें एक्सपेरिमेंटल एपीआई के तौर परwaitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExists, औरwaitUntilDoesNotExistको जोड़ा गया है. साथ ही,waitUntilएपीआई को किसी भी मैच करने वाले और नोड की किसी भी संख्या को स्वीकार करने के लिए बढ़ाया गया है. ज़्यादा जानकारी के लिए,ComposeTestRuleपर जाएं. (Ifa1b9, b/226934294)Font.MaximumAsyncTimeoutका नाम बदलकरFont.MaximumAsyncTimeoutMillisकर दें. (I07af5)GoogleFont.Provider.AllFontsListUriको हटा दिया गया है और इसके बजाय ktdoc में लिंक कर दिया गया है. (I16f29)
गड़बड़ियां ठीक की गईं
AndroidFont.fontVariationSettingsके लिए दस्तावेज़ जोड़े गए (I7d9e2)
वर्शन 1.4.0-alpha05
25 जनवरी, 2023
androidx.compose.ui:ui-*:1.4.0-alpha05 रिलीज़ हो गया है. वर्शन 1.4.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
runComposeUiTestफ़ंक्शन औरcreate*ComposeRuleफ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContextपैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भीLaunchedEffectऔरrememberCoroutineScope()कॉल के लिए किया जाएगा. (I10614, b/265177763)- एक डाइमेंशन वाली वेलोसिटी (If5a82) को ट्रैक करने के लिए, नया एपीआई जोड़ा गया है
FocusRequesterको अब@Stableके तौर पर मार्क कर दिया गया है. (I580ee)DialogPropertiesकंस्ट्रक्टर से एक्सपेरिमेंटल एनोटेशन हटाएं. यह कंस्ट्रक्टर,usePlatformDefaultWidthपैरामीटर लेता है. (Ic4048)- पाथ पर किसी दूरी पर मौजूद बिंदु की पोज़िशन और स्पर्शरेखा का हिसाब लगाने के लिए फ़ंक्शन जोड़ा गया है. इसमें
PathMeasure.getPosition()औरPathMeasure.getTangent()का इस्तेमाल किया गया है (I3b47c) PlatformParagraphStyleपर गलती से सार्वजनिक सेटर को हटा दिया गया. (I07f47)- इनलाइन/इस्तेमाल बंद किए गए-छिपाए गए फ़ंक्शन के टाइप/शून्य होने की स्थिति के बारे में ज़्यादा जानकारी (I24f91)
- शून्य-बंटन वाली व्याख्याओं के लिए क्वेरी करने के लिए,
AnnotatedString.hasStringAnnotationsजोड़ें. (I94dfe, b/246960758) TextMeasurer.measureफ़ंक्शन के लिए एक नया ओवरलोड जोड़ा गया है, जोStringको टेक्स्ट के तौर पर लेता है. (I47b2d, b/242705342)- TextStyle में मौजूद
LineBreakऔरHyphensएपीआई को स्टेबल रिलीज़ में अपग्रेड कर दिया गया है. (Ic1e1d)
बाहरी योगदान
TextInputSessionऔरTextInputServiceमें मौजूदnotifyFocusedRectतरीकों को फिर से बंद नहीं किया गया है. (I23a04, b/262648050)
वर्शन 1.4.0-alpha04
11 जनवरी, 2023
androidx.compose.ui:ui-*:1.4.0-alpha04 रिलीज़ हो गया है. वर्शन 1.4.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक नया
PinnableContainerएपीआई जोड़ा गया है. इससे सूची के आइटम को पिन किया जा सकता है, ताकि स्क्रोल करने पर वे तय सीमा से बाहर न जाएं. उदाहरण के लिए,Modifier.focusable()इस सुविधा का इस्तेमाल करके, फ़िलहाल फ़ोकस किए गए आइटम को पिन करता है. (Ib8881, b/259274257, b/195049010) - फ़ोकस सिस्टम को नए एक्सपेरिमेंटल
Modifier.NodeAPI का इस्तेमाल करके फिर से लिखा गया है. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Surfaces पर
IsContainerसिमैंटिक्स प्रॉपर्टी जोड़ी गई. इस प्रॉपर्टी का इस्तेमाल बाद में किए जाने वाले बदलाव में किया जाएगा. इससे, एलिमेंट के सिमैंटिक मतलब के आधार पर ट्रैवर्सल का क्रम तय किया जाएगा. जैसे, सर्फ़ेस. (I63379) - सुलभता से जुड़ी नई भूमिका
DropdownListजोड़ी गई. इसका इस्तेमाल,android.widget.Spinnerपर फ़ोकस करते समयTalkBack'sके व्यवहार को दोहराने के लिए किया जा सकता है. (I177e5, b/236159001) - अब
PlatformTextStyle(emojiSupportMatch)का इस्तेमाल करके, किसी पैराग्राफ़ के लिए इमोजी सपोर्ट प्रोसेसिंग को बंद किया जा सकता है. (Ia7100, b/139326806) - Android Compose UI टेस्ट अब हर फ़्रेम के लिए लेआउट पास चलाएंगे.ऐसा तब होगा, जब फ़्रेम को आइडल स्टेट में ले जाया जाएगा. उदाहरण के लिए,
waitForIdleके ज़रिए. इससे उन टेस्ट पर असर पड़ सकता है जो लेआउट ऐनिमेशन के अलग-अलग फ़्रेम पर दावा करते हैं. (I8ea08, b/222093277) TextStyleमें एक्सपेरिमेंटलTextMotionजोड़ा गया है, ताकि यह तय किया जा सके कि टेक्स्ट कोStatic(default)के तौर पर दिखाना है या ऐनिमेशन के तौर पर. अगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जाना है, उसका अनुवाद किया जाना है या उसे घुमाया जाना है, तोTextMotion.Animatedका इस्तेमाल करें. (I24dd7)
एपीआई में हुए बदलाव
DrawScopeफ़ंक्शन के साथ काम करने के लिए,drawTextफ़ंक्शन मेंmaxSize: IntSizeआर्ग्युमेंट कोsize: Sizeसे बदल दिया गया है. डिफ़ॉल्ट रूप सेsizeकोSize.Unspecifiedपर सेट किया जाता है. इससे, डिफ़ॉल्ट ऐक्शन और सेटिंग में कोई बदलाव नहीं होना चाहिए. (Icd27d)- अब इस्तेमाल में नहीं आने वाले एक्सपेरिमेंटल फ़ॉन्ट कंस्ट्रक्टर को हटा दिया गया है. (I8a724, b/261435386)
- यूआई टूलिंग डेटा क्लास
Groupमें अब एक फ़ील्ड,isInlineहै. इससे पता चलता है कि ग्रुप, इनलाइन कंपोज़ेबल फ़ंक्शन को कॉल करने के लिए है या नहीं. अगरisInline,trueहै, तो कॉल किसी इनलाइन कंपोज़ेबल फ़ंक्शन को किया जाता है. हालांकि, कंपोज़ कंपाइलर प्लगिन के ऐसे वर्शन के साथ कंपाइल किए गए मॉड्यूल से इनलाइन कंपोज़ेबल फ़ंक्शन को कॉल करने पर, वैल्यू गलत हो सकती है जो इनलाइन फ़ंक्शन की जानकारी जनरेट नहीं करता है. (Idb846) - पहले एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल वर्शन में अपग्रेड किया गया
- Rotary Scroll Event API अब स्टेबल हो गया है (I42ad3, b/261561229)
FontVariationएपीआई अब स्टेबल हो गया है (I8779f, b/241016309)- सभी
Font()कंस्ट्रक्टर अब स्टेबल एपीआई (I5948b, b/261435386) हैं DeviceFontFamilyNameअब स्थिर हो गया है (I8b640, b/261435386)AndroidFontकंस्ट्रक्टर,variationSettingsअब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)createFontFamilyResolverएपीआई अब स्थिर हो गया है. इसका इस्तेमाल, फ़ॉन्ट को एसिंक तरीके से लोड करने के दौरान, बिना हैंडल किए गए अपवादों को पकड़ने के लिए किया जा सकता है. (Ibb481, b/261435386)Font.loadingStrategyAPI अब स्टेबल हो गया है. (I5937c, b/261435386)GoogleFontएपीआई अब स्थिर हो गया है. (Ic90b0, b/261435386)TextUnit(float, TextUnitType)अब स्टेबल एपीआई है. (I90c84, b/261561612)pluralStringResourceअब स्टेबल एपीआई है. (I09849, b/261439703)
वर्शन 1.4.0-alpha03
7 दिसंबर, 2022
androidx.compose.ui:ui-*:1.4.0-alpha03 रिलीज़ हो गया है. वर्शन 1.4.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PointerIcon(I23af8) सेExperimentalComposeUiApiहटाया गया- पेज पर सुलभता से जुड़ी कार्रवाइयों के बारे में जानकारी देने वाले एट्रिब्यूट:
PageUp,PageDown,PageLeft,PageRight. ध्यान दें कि ये सिर्फ़ एपीआई 29 से उपलब्ध हैं. (Ida4ab) rememberNestedScrollConnectionपैरामीटर व्यू को रूट व्यू से होस्ट व्यू में अपडेट किया गया. (Ia5200)- स्क्रोल करने की जानकारी के लिए, Modifier API जोड़ा गया. (I2ba9d, b/203141462)
- इस कुकी का इस्तेमाल
Clickableमें किया जाता है. इससे प्रेस इंटरैक्शन को सही तरीके से डिले किया जा सकता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं. Clickablesको ठीक किया गया है.Scrollable ViewGroupके अंदर इस्तेमाल किए जाने पर, यह रिपल्स को सही तरीके से डिले नहीं करता था.- ड्रॉअर और शीट को अपडेट किया गया है, ताकि अगर जेस्चर स्क्रोल इवेंट बन सकते हैं, तो प्रेस में सही तरीके से देरी हो.
CompositingStrategy.Alwaysका नाम बदलकरOffscreenकर दिया गया है. इससे पता चलता है किgraphicsLayerको हमेशा इंटरमीडिएट बफ़र (I47dc1) में रेंडर किया जाएगा- एक से ज़्यादा कॉन्टेंट स्लॉट वाले लेआउट ओवरलोड की समस्या अब ठीक हो गई है (I10566, b/248294649)
- टेस्ट के दौरान Perfetto ट्रेस (इन्हें सिस्टम ट्रेस भी कहा जाता है) कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर नए एपीआई
PerfettoTrace.record {}औरPerfettoTraceRuleजोड़े गए हैं. इससे टेस्ट के काम करने के तरीके और परफ़ॉर्मेंस की जांच की जा सकेगी. (I3ba16) - Compose नियम का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) टेस्ट में,
withFrameNanosकॉलबैक के दौरान रोके गए कंटीन्यूएशन तब तक डिस्पैच नहीं किए जाएंगे, जब तक सभी फ़्रेम कॉलबैक पूरे नहीं हो जाते. यह सामान्य तौर पर कंपोज़ करने के तरीके से मेल खाता है. हालांकि, पुरानी सेटिंग पर आधारित टेस्ट फ़ेल हो सकते हैं. इससे सिर्फ़ उस कोड पर असर पड़ना चाहिए जो सीधे तौर परwithFrameNanosयाwithFrameMillisको कॉल करता है. साथ ही, जिसमें उन फ़ंक्शन को पास किए गए कॉलबैक के बाहर लॉजिक होता है. इस लॉजिक को कॉलबैक के अंदर ले जाने की ज़रूरत पड़ सकती है. उदाहरणों के लिए, इस सीएल में ऐनिमेशन टेस्ट में हुए बदलाव देखें. TestMonotonicFrameClockकंस्ट्रक्टर और फ़ैक्ट्री फ़ंक्शन में,onPerformTraversals: (Long) -> Unitपैरामीटर जोड़ा गया है. यह पैरामीटर ज़रूरी नहीं है. इसका इस्तेमाल,withFrameNanosकॉलबैक के बाद और कॉलर की को-रूटीन फिर से शुरू होने से पहले कोड चलाने के लिए किया जाता है. (Idb413, b/254115946, b/222093277, b/255802670)- Compose में EmojiCompat जोड़ा गया (Ibf6f9, b/139326806)
- डाइनैमिक कलर की सुविधा के लिए,
@Previewमें नया वॉलपेपर पैरामीटर जोड़ा गया (I9f512)
गड़बड़ियां ठीक की गईं
- स्नैपशॉट लागू करने की सूचनाएं अब
Recomposerके बदलाव लागू करने के बाद भेजी जाती हैं. (Iad6c0, b/222093277) captureToImageमें बदलाव किए गए हैं, ताकि मल्टी विंडो के स्क्रीनशॉट कैप्चर किए जा सकें. यह उन स्क्रीनशॉट टेस्ट के लिए काम का है जिनमें कंपोज़ पॉप-अप का इस्तेमाल किया जाता है. (I169c5)
डिपेंडेंसी से जुड़े अपडेट
- Compose UI और Compose Material अब Lifecycle 2.5.1 पर निर्भर करते हैं. (I05ab0, b/258038814)
वर्शन 1.4.0-alpha02
9 नवंबर, 2022
androidx.compose.ui:ui-*:1.4.0-alpha02 रिलीज़ हो गया है. वर्शन 1.4.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
GraphicsLayerScopeको अपडेट किया गया है, ताकिgraphicsLayerका मौजूदा साइज़ दिखाया जा सके. यह कंपोज़ेबल के साइज़ के फ़ंक्शन के तौर पर,graphicsLayerट्रांसफ़ॉर्मेशन का हिसाब लगाने के लिए काम आता है. (If8c43,b/181387080)graphicsLayerकॉन्टेंट को रेंडर करने के लिए, ऑफ़स्क्रीन कंपोज़िटिंग लेयर का इस्तेमाल कब करना है, यह तय करने के लिएCompositingStrategyको पेश किया गया. Auto, डिफ़ॉल्ट व्यवहार को बनाए रखता है. अगर ऐल्फ़ा लागू किया जाता है याRenderEffect/Overscrollका इस्तेमाल किया जाता है, तो यह अंदरूनी तौर पर एक लेयर का इस्तेमाल करता है. Always में हमेशा एक ऑफ़स्क्रीन बफ़र शामिल होता है. वहीं,ModulateAlphaमें ऑफ़स्क्रीन बफ़र का इस्तेमाल नहीं किया जाता. इसके बजाय,graphicsLayerमें रिकॉर्ड किए गए हर ड्रॉइंग निर्देश को मॉड्युलेट किया जाता है.ModulateAlphaका इस्तेमाल करने पर,RenderEffect/Overscrollके इस्तेमाल के लिए अब भी ऑफ़स्क्रीन बफ़र का इस्तेमाल किया जाएगा (I25e82, b/256382834)- लेआउट और ड्रॉइंग के लिए, पूरी हैरारकी को अमान्य करने की अनुमति देने के लिए,
invalidateSubtree()कोModifier.Nodeमें जोड़ा गया था. (I4bd90) rememberNestedScrollInteropConnectionको स्टेबल वर्शन पर प्रमोट करें.rememberNestedScrollInteropConnectionमें रूट व्यू पास करने की सुविधा जोड़ी गई. इससे कस्टम व्यू को स्क्रोल करने से जुड़ी पाबंदियों के हिसाब से बेहतर तरीके से काम करने में मदद मिल सकती है. खास तौर पर, नॉन-स्टैंडर्ड व्यू (जैसे,ModalBottomSheetDialog) में. (I9e107)ObserverNodeइंटरफ़ेस जोड़ा गया है. इसका इस्तेमालModifier.Nodeलागू करने वाले उन लोगों के लिए किया जा सकता है जिन्हें यह सूचना देनी है कि पहले पढ़ी गई वैल्यू बदल गई है (I5728b, b/247716483)Paintमें एक नया कंस्ट्रक्टर जोड़ा गया है, जो नेटिवandroid.graphics.Paintको स्वीकार करता है. इसके अलावा, एक एक्सटेंशन फ़ंक्शनtoComposePaint()भी जोड़ा गया है. यह फ़ंक्शन, किसी मौजूदा नेटिव Paint ऑब्जेक्ट को Compose Paint में बदलता है. (Ica91b)- Android पर इस्तेमाल करने के लिए, नया
FontFamily.Resolver.resolveAsTypefaceजोड़ें. (I8950b) ToolingStateजोड़ा गया, ताकि टूलिंग, कंपोज़ेबल की इंटरनल स्थितियों को बदल सके (Ie6614)- नए जोड़े गए ऐनिमेशन (I8677b) के लिए बेहतर सहायता पाने के लिए, टूलिंग को फिर से फ़ैक्टर किया गया
- मटीरियल और मटीरियल3 टेक्स्ट में
minLinesपैरामीटर जोड़ा गया है. साथ ही,TextFieldऔरOutlinedTextFieldभी जोड़े गए हैं. इनकी मदद से, लाइनों की संख्या (I4af1d) के हिसाब से कॉम्पोनेंट की कम से कम ऊंचाई सेट की जा सकती है
वर्शन 1.4.0-alpha01
24 अक्टूबर, 2022
androidx.compose.ui:ui-*:1.4.0-alpha01 रिलीज़ हो गया है. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- हाथ के जेस्चर पहचानने वाले डिटेक्टर के लिए,
awaitEachGesture()नाम का एक नया तरीका जोड़ा गया. यहforEachGesture()की तरह ही काम करता है. हालांकि, इसमें जेस्चर का लूप पूरी तरह सेAwaitPointerEventScopeके अंदर काम करता है. इसलिए, इवेंट को दोहराने के दौरान इवेंट नहीं मिटते. forEachGesture()के इस्तेमाल पर रोक लगा दी गई है. अबawaitEachGesture()का इस्तेमाल किया जा सकता है. ऐसा इसलिए किया गया है, क्योंकि में जेस्चर के बीच इवेंट खो जाते हैं. (Iffc3f, b/251260206)- androidx में सुलभता ऑब्जेक्ट को रीसाइकल करने की सुविधा बंद की जा रही है. हमने पाया है कि परफ़ॉर्मेंस में बदलाव, सबसे पुराने वर्शन में भी न के बराबर है. (I0a961)
TextStyleऔरSpanStyleमेंDrawStyleको एक्सपेरिमेंट वाले एट्रिब्यूट के तौर पर जोड़ा गया है, ताकि आउटलाइन वाला टेक्स्ट बनाया जा सके. (If24b8, b/155421273)AnnotatedString.Builderअबkotlin.text.Appendableलागू करता है. (I1a061, b/231030444)AnnotatedString.Builderमें अबappend(AnnotatedString, start: Int, end: Int)तरीका है, जिससेAnnotatedStringऔर इंटरसेक्ट करने वाली स्टाइल के सबस्ट्रिंग को जोड़ा जा सकता है.ParagraphऔरMultiParagraphपेंट फ़ंक्शन मेंDrawStyleपैरामीटर जोड़ा गया है. इससे आउटलाइन वाला टेक्स्ट बनाया जा सकता है. (Ic8102, b/155421273)
बाहरी योगदान
vighneshके लिए धन्यवाद. आपने टीवी डिवाइसों को झलक देखने की सुविधा में जोड़ा है (Ie15cd)
वर्शन 1.3
वर्शन 1.3.3
11 जनवरी, 2023
androidx.compose.ui:ui-*:1.3.3 रिलीज़ हो गया है. वर्शन 1.3.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android 9 पर कभी-कभी क्रैश होने की समस्या को ठीक किया गया है. यह समस्या तब होती है, जब ऐक्टिविटी Compose View की स्टेट को सेव कर रही होती है. (I0b755, b/260322832)
वर्शन 1.3.2
7 दिसंबर, 2022
androidx.compose.ui:ui-*:1.3.2 रिलीज़ हो गया है. वर्शन 1.3.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इसे अपडेट करके, Profobuf 3.21.8 का इस्तेमाल किया गया है. इससे
protobuf-javalite:3.19.4में सुरक्षा से जुड़ी चेतावनी नहीं मिलती (CVE-2022-3171) (b/255545055)
वर्शन 1.3.1
9 नवंबर, 2022
androidx.compose.ui:ui-*:1.3.1 रिलीज़ हो गया है. वर्शन 1.3.1 में ये बदलाव शामिल हैं.
वर्शन 1.3.0
24 अक्टूबर, 2022
androidx.compose.ui:ui-*:1.3.0 रिलीज़ हो गया है. वर्शन 1.3.0 में ये बदलाव शामिल हैं.
1.2.0 के बाद हुए अहम बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई का नया सुइट
LookaheadLayout(इससे ऐनिमेशन के ऐसे व्यवहार चालू किए जा सकते हैं जो पहले मुमकिन नहीं थे) - नई एक्सपेरिमेंटल एपीआई सुइट
Modifier.Node(Modifier.composedके मुकाबले बेहतर परफ़ॉर्मेंस देने वाला विकल्प) - विंडो इंसर्ट के लिए बेहतर सहायता.
- LazyLists में डी-पैड और हार्डवेयर कीबोर्ड के लिए फ़ोकस की सुविधा.
- डायलॉग और पॉप-अप में, ज़्यादा से ज़्यादा 8 डीपी तक एलिवेशन का इस्तेमाल किया जा सकता है. इससे कुछ कस्टम डिज़ाइन सिस्टम के व्यवहार में बदलाव हो सकता है. beta01 के रिलीज़ नोट में इसकी वजह बताई गई है
- एपीआई में कई छोटे-मोटे सुधार किए गए हैं, जिनसे एपीआई के काम करने के तरीके पर कोई असर नहीं पड़ेगा
- कई गड़बड़ियां ठीक की गईं और परफ़ॉर्मेंस को बेहतर बनाया गया
वर्शन 1.3.0-rc01
5 अक्टूबर, 2022
androidx.compose.ui:ui-*:1.3.0-rc01 रिलीज़ हो गया है. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट में शब्दों को अपने-आप हाइफ़न लगाने की सुविधा के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध नया API Hyphens जोड़ा गया है (Iaa869)
गड़बड़ियां ठीक की गईं
DeviceFontFamilyNameफ़ॉन्ट, डिफ़ॉल्ट रूप सेwghtऔरitalकी वैरिएशन सेटिंग को कॉन्फ़िगर नहीं करेंगे. इसके बजाय, लोड किए गएTypefaceके लिए प्लैटफ़ॉर्म सेटिंग का इस्तेमाल करेंगे. (Ia7a6d, b/246989332)LazyColumnमेमोरी लीक की समस्या ठीक की गई - मॉडिफ़ायर का दोबारा इस्तेमाल किए जाने पर,onModifierLocalsUpdatedको डिफ़ॉल्ट वैल्यू के साथ कॉल नहीं किया जा रहा था (b/230168389)
वर्शन 1.3.0-beta03
21 सितंबर, 2022
androidx.compose.ui:ui-*:1.3.0-beta03 रिलीज़ हो गया है. वर्शन 1.3.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट में लाइन तोड़ने की सुविधा को पसंद के मुताबिक बनाने के विकल्प जोड़े गए. (I86907)
- कम से कम चौड़ाई की पाबंदियों को लागू करने के लिए,
TextMeasurer.measureतरीके मेंsize:IntSizeआर्ग्युमेंट कोconstraints: Constraintsसे बदल दिया गया है. (I37530, b/242707525)
गड़बड़ियां ठीक की गईं
- AndroidX Activity का
BackHandlerएपीआई अबDialogकंपोज़ेबल में काम करता है. (I35342)
वर्शन 1.3.0-beta02
7 सितंबर, 2022
androidx.compose.ui:ui-*:1.3.0-beta02 रिलीज़ हो गया है. वर्शन 1.3.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लेआउट के लिए एक्सपेरिमेंटल ओवरलोड जोड़ा गया है. यह कंपोज़ किए जा सकने वाले कॉन्टेंट के कई लैम्डा की सूची स्वीकार करता है. इससे, अलग-अलग कॉन्टेंट लैम्डा में रखे गए मेज़र किए जा सकने वाले कॉन्टेंट को अलग-अलग तरीके से थ्रेट किया जा सकता है (Ic1b4e)
एक्सपेरिमेंट के तौर पर उपलब्ध Focus API में हुए बदलाव:
FocusDirection.InऔरFocusDirection.Outके इस्तेमाल पर रोक लगा दी गई है. इनकी जगहFocusDirection.EnterऔरFocusDirection.Exitका इस्तेमाल किया जाएगा. (Ia4262, b/183746982)FocusManager.moveFocus(Enter)औरFocusManager.moveFocus(Exit)के लिए कस्टम व्यवहार तय करने के लिए, फ़ोकस की दो नई प्रॉपर्टी enter और exit जोड़ी गई हैं. (I5f3f9, b/183746982)- अब फ़ोकस को बदलने की सुविधा को रद्द करने के लिए,
FocusRequester.Cancelका इस्तेमाल किया जा सकता है.FocusRequester.Cancelका इस्तेमाल, फ़ोकस करने की इनमें से किसी भी प्रॉपर्टी में किया जा सकता है: up, down, left, right, next, previous, start, end, enter, और exit. (Ib300f)
वर्शन 1.3.0-beta01
24 अगस्त, 2022
androidx.compose.ui:ui-*:1.3.0-beta01 रिलीज़ हो गया है. वर्शन 1.3.0-beta01 में ये बदलाव शामिल हैं.
मॉडिफ़ायर नोड रिफ़ैक्टर
Modifier/Modifier.Element इंस्टेंस को मैनेज करने वाली लेयर को फिर से बनाया गया है. साथ ही, LayoutNodes पर उनके व्यवहार को कोऑर्डिनेट किया गया है. यह एक रीफ़ैक्टर था, जिससे Compose में मौजूद कई मॉडिफ़ायर के सार्वजनिक एपीआई पर कोई असर नहीं पड़ा. इसे सिर्फ़ लागू करने से जुड़ा बदलाव माना जा सकता है. इसके बावजूद, यह बदलाव कई वजहों से अहम है. (Ie4313)
बदलाव की खास जानकारी
जोड़े गए एक्सपेरिमेंटल Modifier.Node एपीआई, एक ऐसा ऐब्स्ट्रैक्शन उपलब्ध कराते हैं जिससे लेआउट नोड की लाइफ़साइकल के साथ बनाए रखे जाने वाले इंस्टेंस पर स्थिति को बनाए रखा जा सकता है. साथ ही, इसे हर लेआउट नोड और इसे बनाने वाले Modifier.Element के हर इस्तेमाल के हिसाब से असाइन किया जाएगा.
सामान्य तौर पर, यह ऐब्स्ट्रैक्शन, Modifier.composed एपीआई के मेकेनिज़्म पर भरोसा किए बिना, स्टेटफ़ुल मॉडिफ़ायर बनाने का एक वैकल्पिक तरीका उपलब्ध कराता है.
जोखिम
यह बदलाव, पिछली रिलीज़ के साथ बाइनरी के तौर पर काम करता है. साथ ही, इसका मकसद यह है कि यह बदलाव, पुराने सिस्टम के साथ काम करने की सुविधा के तौर पर काम करे. हालांकि, कंपोज़ के कुछ सबसिस्टम ऐसे हैं जिन पर इस रीफ़ैक्टरिंग का असर नहीं पड़ा है. साथ ही, ऐसा हो सकता है कि व्यवहार में ऐसे बदलाव हुए हों जिनके बारे में हमारे टेस्ट में पता न चला हो. साथ ही, उन्हें अब तक ठीक न किया गया हो.
कृपया इस रिलीज़ को सावधानी से अपग्रेड करें. अगर आपको लगता है कि इससे आपके लिए कोई समस्या हुई है, तो कृपया हमें बताएं.
एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई
कई एक्सपेरिमेंटल एपीआई जोड़े गए हैं. ये सभी "मॉडिफ़ायर नोड" की नई अवधारणा से जुड़े हैं. Modifier.Node’s, इन वजहों से बनाए जाते हैं
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
व्यवहार में बड़ा बदलाव
डायलॉग और पॉप-अप में, ज़्यादा से ज़्यादा 8dp एलिवेशन इस्तेमाल किया जा सकता है.
Compose डायलॉग और पॉप-अप के लिए, ज़्यादा से ज़्यादा एलिवेशन को 30dp से घटाकर 8dp कर दिया गया है. इस बदलाव का असर, मटीरियल और यूज़र इंटरफ़ेस (यूआई) के कस्टम डायलॉग और पॉप-अप, दोनों पर पड़ता है. यह बदलाव, Android के S से पहले के वर्शन में सुलभता से जुड़ी गड़बड़ी को ठीक करने के लिए किया गया है. साथ ही, यह पक्का करने के लिए किया गया है कि उन विंडो में सुलभता सेवाएं, डायलॉग या पॉपअप में मौजूद कॉन्टेंट के साथ इंटरैक्ट कर सकें.
इस बदलाव का असर सिर्फ़ तब पड़ेगा, जब आपने 8dp से ज़्यादा एलिवेशन लेवल वाला कस्टम डायलॉग या पॉप-अप लागू किया हो. डायलॉग या पॉप-अप की ऊंचाई कम करें. अगर आपको इस नए व्यवहार से ऑप्ट-आउट करना है, तो अपनी पसंद के मुताबिक एलिवेशन सेट करके, अपने डायलॉग या पॉप-अप को फ़ोर्क करें. हालांकि, इसके इस्तेमाल का सुझाव नहीं दिया जाता है. ऐसा इसलिए, क्योंकि इससे सुलभता पर बुरा असर पड़ सकता है. डेवलपर को यह पक्का करना होता है कि डायलॉग या पॉप-अप का सबसे नीचे वाला हिस्सा, सुलभता सेवाओं के साथ इंटरैक्ट किया जा सके और उसे पढ़ा जा सके.
एपीआई में हुए बदलाव
- उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने पर,
painterResourceअपडेट नहीं होता था (I58e73, b/228862715) rememberTextMeasurerअबFontFamily.Resolver,DensityयाLayoutDirectionपैरामीटर नहीं लेता है. इन पैरामीटर के लिए कस्टम वैल्यू देने के लिए, कृपयाTextMeasurerकंस्ट्रक्टर का इस्तेमाल करें. (Ia1da3)DialogProperties.decorFitsSystemWindowsप्रॉपर्टी जोड़ी गई है, ताकि डायलॉगWindowInsetsके साथ काम कर सकें. (I57742, b/229378542)- फ़ॉन्ट कंस्ट्रक्टर को वापस ओरिजनल Kotlin फ़ाइल में ले जाया गया है, ताकि बाइनरी कंपैटिबिलिटी बनी रहे. पिछले स्टेबल वर्शन की रिलीज़ में कोई बदलाव नहीं किया गया है. (Ieb2f3)
- कई बराबर की परिभाषाओं से गैर-ज़रूरी ऑपरेटर को हटाया गया है. इससे कोई असर नहीं पड़ता. (I6c309)
FontVariation.Settingएक सील किया गया इंटरफ़ेस है, ताकि आने वाले समय में क्लैंपिंग एपीआई का इस्तेमाल किया जा सके. (I11021, b/143703328)CompositionGroup.findParametersकोSlotTree.ktमें जोड़ें. इससे टूल, पूरी स्लॉट टेबल को पार्स किए बिनाCompositionGroupके पैरामीटर वापस पा सकते हैं. (I124fe)
वर्शन 1.3.0-alpha03
10 अगस्त, 2022
androidx.compose.ui:ui-*:1.3.0-alpha03 रिलीज़ हो गया है. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LayoutCoordinates.findRootCoordinates()अब सार्वजनिक तौर पर उपलब्ध है (I7fa37, b/204723384)PlacementScopeमेंLayoutCoordinatesपाने के लिए, एक्सपेरिमेंट वाला एपीआई जोड़ा गया. इससे डेवलपर को यह पता चलता है कि मौजूदा लेआउट कहां है, ताकि वह बच्चों को उसकी जगह के हिसाब से रख सके. (I5482b, b/238632578)- एक
LayoutCoordinatesसे दूसरे में मैट्रिक्स ट्रांसफ़ॉर्मेशन पाने के लिए,LayoutCoordinates.transformFromजोड़ा गया. (Ic5ab1, b/238632578) SemanticsModifier.idको बंद कर दिया गया है. इसके बजाय, सिमैंटिक आईडी कोLayoutInfo.semanticsIdपर ले जाया गया है. (Iac808, b/203559524)- अब रिसॉर्स फ़ॉन्ट, फ़ॉन्ट वेरिएशन सेटिंग (API 26 और इसके बाद के वर्शन) सेट करने की सुविधा के साथ काम करते हैं. (I900dd, b/143703328)
DeviceFontFamilyNameFontमें वैरिएबल फ़ॉन्ट इस्तेमाल करने की सुविधा (Ic1279, b/143703328)- फ़ॉन्ट कंस्ट्रक्टर अब O+ डिवाइसों पर वैरिएबल फ़ॉन्ट कॉन्फ़िगर करने के लिए,
FontVariation.Settingकी सूची स्वीकार करते हैं. (I11a9d, b/143703328) - वैरिएबल फ़ॉन्ट तय करने और उनका इस्तेमाल करने के लिए,
FontVariationएपीआई जोड़ा गया. (I3c40c, b/143703328) LineHeightStyle.Alignmentकंस्ट्रक्टर अब सार्वजनिक तौर पर उपलब्ध है (एक्सपेरिमेंट के तौर पर) (I4bbbe, b/235876330)- पैराग्राफ़ को अब expect|actual के तौर पर सेट किया गया है. साथ ही, इसे Android और डेस्कटॉप के लिए तय किया गया है. (Id387e, b/239962983)
- Interface Paragraph को अब सील किए गए इंटरफ़ेस Paragarph के तौर पर इस्तेमाल किया जा सकता है. पैराग्राफ़ को सबक्लास करने का कोई तरीका नहीं है. अगर इस बदलाव से आप पर असर पड़ता है, तो हमारा सुझाव है कि आप हमसे संपर्क करें. (If5247, b/239962983)
PlatformTextStyleऔरLineHeightStyleसे एक्सपेरिमेंटल एनोटेशन हटा दिया गया है. (I64bef)TextInputService.show|hideSoftwareKeyboardका इस्तेमाल बंद कर दिया गया है. कृपया ऐप्लिकेशन कोड मेंSoftwareKeyboardControllerऔर IME-मैनेजमेंट कोड मेंTextInputSessionका इस्तेमाल करें. (I14e4c, b/183448615)- मौजूदा ऐनिमेशन टाइप के लिए नया एपीआई जोड़ा गया (I26179)
गड़बड़ियां ठीक की गईं
- उन एपीआई में
@RequiresPermissionजोड़ा गया है जिनके लिए, SDK 33 और उसके बाद के वर्शन परPOST_NOTIFICATIONSअनुमति देना ज़रूरी है. (Ie542e, b/238790278)
वर्शन 1.3.0-alpha02
27 जुलाई, 2022
androidx.compose.ui:ui-*:1.3.0-alpha02 रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- दबाव की जानकारी पाने के लिए, नई प्रॉपर्टी
PointerInputChange#pressureजोड़ी गई है. (I45a5e, b/205164819) - कंपोज़िशन में
TextMeasurerइंस्टेंस को आसानी से बनाने और याद रखने के लिए,rememberTextMeasurerजोड़ा गया. (I8d66e) Rect,RoundRect, औरMutableRectअबcontainsफ़ंक्शन को कॉल करने के लिए, Kotlininसिंटैक्स के साथ काम करते हैं. (Ie42b0, b/238642990)KeyInjectionScopeसे गैर-ज़रूरी फ़ंक्शन हटाएं, क्योंकि इन्हें एपीआई के आसान हिस्सों के साथ आसानी से लागू किया जा सकता है. हटाए गए फ़ंक्शन मेंpressKeys,keysDown, औरkeysUpशामिल हैं. (I81d77)KeyInjectionScopeमें कॉन्स्टेंट और पैरामीटर के नामों को फिर से फ़ैक्टर किया गया है. इसमें 'Millis' सफ़िक्स को शामिल किया गया है. यह सफ़िक्स उन कॉन्स्टेंट और पैरामीटर के लिए इस्तेमाल किया जाता है जिनकी यूनिट मिलीसेकंड में होती है. (Iabef5)- टेक्स्ट में बदलाव करने से जुड़ी समस्याओं को हल करने के लिए,
EditCommandमेंtoStringForLog()तरीका जोड़ा गया. (I53354, b/228862731) DrawScopeपरdrawTextएक्सटेंशन फ़ंक्शन जोड़ा गया है. इससे, कंपोज़ेबल और मॉडिफ़ायर पर अलग-अलग स्टाइल वाला टेक्स्ट बनाया जा सकता है. ये कंपोज़ेबल और मॉडिफ़ायर,DrawScopeपर काम करते हैं. जैसे,CanvasऔरdrawBehind. (I16a62, b/190787898)TextMeasurerनाम का एक नया एक्सपेरिमेंटल एपीआई पेश किया गया है. यह एपीआई, टेक्स्ट लेआउट कंप्यूटेशन की सुविधा देता है. इससेBasicTextकी तरह ही नतीजे मिलते हैं. यह Compose रनटाइम से अलग होता है. (I17101)mapTreeकोSlotTree.ktमें जोड़ें. इससे टूल,SlotTreeकी जांच कर सकते हैं. इसके लिए, उन्हें पहले मेमोरी में कॉपी बनाने की ज़रूरत नहीं होती, जैसा कि asTree करता है. लेआउट इंस्पेक्टर के लिए, इससे परफ़ॉर्मेंस में करीब 10 गुना सुधार होता है. (I5e113)- Compose Preview को बाइनरी आउटपुट फ़ाइलों में सेव करने की सुविधा जोड़ी गई है, ताकि डेवलपर लाइब्रेरी से
MultiPreviewएनोटेशन लिख सकें और उनका फिर से इस्तेमाल कर सकें. (I85699, b/233511976)
गड़बड़ियां ठीक की गईं
Velocityट्रैकर मेंInputEventChangeइवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि सभी मामलों में वेलोसिटी का हिसाब सही तरीके से लगाया गया है. भले ही, टारगेट एलिमेंट मूव करता हो (Icea9d, b/216582726, b/223440806, b/227709803)- व्याख्याएं मौजूद होने पर,
AnnotatedString.toUpperCaseकी वजह से होने वाली NPE की समस्या ठीक की गई. (I0aca2, b/210899140)
वर्शन 1.3.0-alpha01
29 जून, 2022
androidx.compose.ui:ui-*:1.3.0-alpha01 रिलीज़ हो गया है. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नया
LookaheadLayout, जो मेज़र/लेआउट से पहले लुकअहेड पास की सुविधा देता है. इससे लेआउट में बदलाव होने पर, उसकी पहले से गणना की जा सकती है. साथ ही, पोस्ट-लुकअहेड मेज़रमेंट/लेआउट को पहले से कैलकुलेट किए गए साइज़/जगह का इस्तेमाल करके, साइज़ और जगहों को टारगेट की ओर ऐनिमेट करने की अनुमति मिलती है.SubcomposeLayoutsफ़िलहाल काम नहीं करते, लेकिन आने वाले समय में इसकी सुविधा उपलब्ध होगी. (I477f5) - पूरी
Textकी पारदर्शिता में बदलाव करने के लिए,TextStyleऔरSpanStyleके ब्रश फ़्लेवर में वैकल्पिक ऐल्फ़ा पैरामीटर जोड़ें. (Ic2fac, b/234117635) UrlAnnotationएनोटेशन टाइप और उससे जुड़े तरीकों को पेश किया गया है. इससेAnnotatedStringमेंTalkBackलिंक को इस्तेमाल करने में मदद मिलेगी. (I1c754, b/231495122)- यूटिलिटी फ़ंक्शन को रनटाइम में ले जाना (I4f729)
गड़बड़ियां ठीक की गईं
TextLayoutResult.getLineForOffsetथ्रो नहीं करता है. (Idc5d6, b/235876324)
बाहरी योगदान
- कंपोज़ेबल फ़ंक्शन या snapshotFlow (Icdb8a) में इसकी स्थिति देखने के लिए, नया एपीआई
WindowInfo.keyboardModifiersजोड़ा गया
वर्शन 1.2
वर्शन 1.2.1
10 अगस्त, 2022
androidx.compose.ui:ui-*:1.2.1 रिलीज़ हो गया है. वर्शन 1.2.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इंस्पेक्टर में nullpointer की समस्या ठीक की गई (b/237987764)
- इंस्पेक्टर में याद रखने की सुविधा के दौरान, क्लास कास्ट के अपवाद को ठीक किया गया (b/235526153)
वर्शन 1.2.0
27 जुलाई, 2022
androidx.compose.ui:ui-*:1.2.0 रिलीज़ हो गया है. वर्शन 1.2.0 में ये बदलाव शामिल हैं.
1.1.0 के बाद हुए अहम बदलाव
फ़ोकस ट्रैवर्सल में सुधार:
- अब लेज़ी लिस्ट में फ़ोकस-ड्रिवन-स्क्रॉलिंग की सुविधा काम करती है. इसके लिए, नए
BeyondBoundsLayoutकोर एपीआई का इस्तेमाल किया जाता है FocusOrderऔरFocusPropertiesमें, व्यवहार को पसंद के मुताबिक बनाने वाले नए एपीआई- फ़िज़िकल कीबोर्ड या टीवी रिमोट के साथ बेहतर तरीके से काम करना
- अब लेज़ी लिस्ट में फ़ोकस-ड्रिवन-स्क्रॉलिंग की सुविधा काम करती है. इसके लिए, नए
इनके लिए नए एपीआई:
- विंडो इंसर्ट
- जेस्चर, इनफ़िनिट, और लेआउट ऐनिमेशन के लिए बुनियादी प्रिमिटिव
GraphicsLayerकी क्षमताएं, जिनमेंRenderEffectशामिल हैं
कई गड़बड़ियां ठीक की गईं और परफ़ॉर्मेंस को बेहतर बनाया गया
वर्शन 1.2.0-rc03
29 जून, 2022
androidx.compose.ui:ui-*:1.2.0-rc03 रिलीज़ हो गया है. वर्शन 1.2.0-rc03 में ये बदलाव शामिल हैं.
- 1.2.0-rc02 के बाद से कोई बदलाव नहीं किया गया है.
वर्शन 1.2.0-rc02
22 जून, 2022
androidx.compose.ui:ui-*:1.2.0-rc02 रिलीज़ हो गया है. वर्शन 1.2.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.2.0-rc01
15 जून, 2022
androidx.compose.ui:ui-*:1.2.0-rc01 रिलीज़ हो गया है. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose लाइब्रेरी में इंटरफ़ेस अब jdk8 के डिफ़ॉल्ट इंटरफ़ेस के तरीकों का इस्तेमाल करके बनाए जाते हैं (I5bcf1)
KeyInjectionScopeमें हायर-ऑर्डर फ़ंक्शन जोड़े गए हैं. इनकी मदद से, अन्य बटन को दबाकर रखने या टॉगल करने के दौरान, बटन दबाए जा सकते हैं. इन फ़ंक्शन मेंwithKeysDown,withKeysToggledवगैरह शामिल हैं. साथ ही, यह देखने के लिए प्रॉपर्टी जोड़ी गई हैं कि कोई खास मेटा की डाउन है या नहीं. उदाहरण के लिए,isCtrlDownयह देखने के लिए कि कंट्रोल की दबी हुई है या नहीं. हर फ़ंक्शन के बारे में जानने के लिए,KeyInjectionScopeपर जाएं. (I9f6cd, b/229831515)- कस्टम ओवरस्क्रॉल इफ़ेक्ट की अनुमति देने के लिए, एक एक्सपेरिमेंटल
OverscrollEffectपेश किया गया है. साथ ही,Modifier.scrollableओवरलोड भी पेश किए गए हैं जो इसे स्वीकार करते हैं. - एक्सपेरिमेंट के तौर पर उपलब्ध
LocalOverScrollConfigurationकोfoundation.gestureसे फ़ाउंडेशन पैकेज में ले जाया गया है. साथ ही, इसका नाम बदलकरLocalOverscrollConfigurationकर दिया गया है (If19fb, b/204650733) runComposeUiTestWithoutActivity {}का नाम बदलकरrunEmptyComposeUiTest {}कर दें, ताकि यहcreateEmptyComposeRule()(I6fed7) के साथ अलाइन हो जाए
वर्शन 1.2.0-beta03
1 जून, 2022
androidx.compose.ui:ui-*:1.2.0-beta03 रिलीज़ हो गया है. वर्शन 1.2.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
pressKeyTimesके साथ-साथisCapsLockOnऔर दोस्तों कोKeyInjectionScopeमें जोड़ा गया. इसके अलावा, अब एपीआई में माउस और कीबोर्ड के कॉम्बिनेशन वाले इंजेक्शन पैटर्न काम करते हैं. जैसे, मेटा कुंजी को दबाकर माउस बटन पर क्लिक करना. (I4c8da, b/229831515)- मुख्य इवेंट इंजेक्ट करने की सुविधा के लिए, एक्सपेरिमेंटल सपोर्ट जोड़ी गई.
performKeyInputका इस्तेमाल करके मुख्य इवेंट भेजें. इसके अलावा,performMultiModalInputके साथ मल्टी मॉडल इनपुट जेस्चर के दौरान,MultiModalInjectionScopeकीkeyप्रॉपर्टी के ज़रिए भी मुख्य इवेंट भेजे जा सकते हैं. एपीआई के दस्तावेज़ के लिए,KeyInjectionScopeदेखें. (Ic5000, b/229831515) - Android के साथ काम करने वाले Google Fonts के कैननिकल इंटरनेट सोर्स को वापस पाने के लिए, नया
GoogleFont.Provider.AllFontsListUriजोड़ें. - Compose में GoogleFonts लोड न होने पर, फिर से थ्रो किए गए गड़बड़ी के मैसेज को बेहतर बनाएं. (I0416c)
गड़बड़ियां ठीक की गईं
- Velocity Tracker में
InputEventChangeइवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि टारगेट एलिमेंट के हिलने पर भी, वेलोसिटी की सही तरीके से गणना की गई है (I51ec3, b/216582726, b/223440806, b/227709803) Show Layout Boundsसेटिंग को अब कंपोज़ेबल पर तुरंत लागू किया जा सकेगा. इसके लिए, आपको क्विक सेटिंग टाइल से इसे टॉगल करना होगा. साथ ही, आपको गतिविधि से बाहर निकलने और फिर से उसमें शामिल होने की ज़रूरत नहीं होगी. (I843d5, b/225937688)- सुलभता स्ट्रिंग लुकअप से फ़ॉन्ट लोड नहीं होता है. इससे पहले, यह
StyleSpansके लिए फ़ॉन्ट लोड करने की कोशिश करता था. अगरFontFamily.Resolverको बदल दिया गया था, तो इससे क्रैश हो जाते थे. (I4609d) - कर्सर को टेक्स्ट फ़ील्ड के आखिर में रखकर, फ़ॉरवर्ड डिलीट बटन दबाने पर अब ऐप्लिकेशन क्रैश नहीं होगा.
DeleteSurroundingTextCommandऔरDeleteSurroundingTextInCodePointsCommandको अब अपने कंस्ट्रक्टर आर्ग्युमेंट के लिए, शून्य या उससे ज़्यादा वैल्यू की ज़रूरत होती है. (Ica8e6, b/199919707)
वर्शन 1.2.0-beta02
18 मई, 2022
androidx.compose.ui:ui-*:1.2.0-beta02 रिलीज़ हो गया है. वर्शन 1.2.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- झलक के अन्य टाइप में फ़ंक्शन का फिर से इस्तेमाल करना (I19f39)
गड़बड़ियां ठीक की गईं
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerका नाम बदलकरDisposeOnDetachedFromWindowOrReleasedFromPoolकर दिया गया है, ताकि यह बेहतर तरीके से पता चल सके कि इन्वेंट्री का निपटान कब किया जाता है. (If15ca)
वर्शन 1.2.0-beta01
11 मई, 2022
androidx.compose.ui:ui-*:1.2.0-beta01 रिलीज़ हो गया है. वर्शन 1.2.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- यह 1.2 का पहला बीटा वर्शन है!
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर
BeyondBoundsIntervalजोड़ा गया है. इसका इस्तेमालLazyListके कस्टम इंप्लीमेंटेशन के लिए किया जा सकता है. ऐसा तब किया जाता है, जब वे दिखने वाली सीमाओं से बाहर आइटम लेआउट करते हैं (Ifabfb, b/184670295) Modifier.composedके की-आधारित वर्शन अब स्टेबल एपीआई (Ie65e4, b/229988420) हैंrememberNestedScrollConnectionएपीआई को आसान बनाया गया है, ताकि कंपोज़िशन लोकल का इस्तेमाल करके मौजूदा व्यू की जानकारी (I67ca7) हासिल की जा सके@fileप्रीफ़िक्स का इस्तेमाल करके, अब फ़ाइल स्कोप में@ComposableTargetएनोटेशन और@ComposableTargetMarkerसे मार्क किए गए एनोटेशन का इस्तेमाल किया जा सकता है. फ़ाइल स्कोप पर टारगेट एनोटेशन का इस्तेमाल करने से, कंपाइलर यह मान लेगा कि फ़ाइल में मौजूद सभी कंपोज़ेबल फ़ंक्शन, ऐप्लिकेशन से जुड़े ऐप्लिकेशन को टारगेट करने के लिए हैं. उदाहरण के लिए,@file:UiComposableका इस्तेमाल करने से यह पता चलता है कि सभी@Composableफ़ंक्शन, Compose UI applier को टारगेट करते हैं. जिस फ़ंक्शन को किसी दूसरे ऐप्लिकेशन पर टारगेट करना है उसे टारगेट मार्कर एनोटेशन को साफ़ तौर पर सप्लाई करना होगा. (I40804)एक्सपेरिमेंट के तौर पर, प्लैटफ़ॉर्म से अलग टेस्ट एपीआई लॉन्च किया गया है: एक
interface ComposeUiTestऔर एकfun runComposeUiTest(block: ComposeUiTest.() -> Unit). इनका इस्तेमाल,TestRuleकी ज़रूरत के बिना Compose Ui टेस्ट चलाने के लिए किया जा सकता है.ComposeTestRuleके बिना टेस्ट चलाने के लिए, टेस्ट कोrunComposeUiTestमें लैम्डा के तौर पर पास करें. इसके बाद, रिसीवर स्कोपComposeUiTestमें मौजूद तरीकों और सदस्यों का इस्तेमाल करें. ये वही तरीके और सदस्य हैं जोComposeContentTestRuleमें मौजूद हैं.Android के लिए खास तौर पर बनाए गए
interface AndroidComposeUiTestऔरfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)को इसलिए जोड़ा जाता है, ताकिAndroidComposeTestRuleकी तरह ही, ऐक्टिविटी को ऐक्सेस किया जा सके. ज़्यादा कंट्रोल के लिए,class AndroidComposeUiTestEnvironmentको खुद इंस्टैंशिएट किया जा सकता है.डेस्कटॉप पर
class DesktopComposeUiTestलागू किया गया है. हालांकि, फ़िलहाल डेस्कटॉप के लिए खास तौर पर बनाए गए रन फ़ंक्शन उपलब्ध नहीं हैं.किसी टेस्ट को
ComposeTestRuleसेComposeUiTestपर इस तरह माइग्रेट किया जा सकता है (Android का उदाहरण). 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() } }फ़िलहाल,
ComposeContentTestRuleऔरComposeTestRule,ComposeUiTestसे एक्सटेंड नहीं होते हैं. इसका मतलब है किComposeUiTestपर मौजूद एक्सटेंशन फ़ंक्शन कोTestRuleइंटरफ़ेस पर अभी कॉल नहीं किया जा सकता. जबComposeUiTestस्टेबल एपीआई में अपग्रेड हो जाएगा, तबComposeContentTestRuleऔरComposeTestRuleकोComposeUiTestसे एक्सटेंड करने के लिए बदल दिया जाएगा. (Ib4e90)LineHeightBehaviorका नाम बदलकरLineHeightStyleकर दिया गया हैLineVerticalAlignmentका नाम बदलकरLineHeightStyle.Alignmentकर दिया गया हैLineHeightTrimका नाम बदलकरLineHeightStyle.Trimकर दिया गया हैLineHeightStyleसे डिफ़ॉल्ट कंस्ट्रक्टर वैल्यू हटा दी गई हैं (I582bf, b/181155707)ग्रेडिएंट कलरिंग के साथ टेक्स्ट बनाने का तरीका उपलब्ध कराने के लिए,
TextStyleमेंBrushऔरSpanStyleजोड़ा गया. (I53869, b/187839528)trimFirstLineTopऔरtrimLastLineBottomएट्रिब्यूट केLineHeightBehaviorको बदलकर एक ही इनम कर दिया गया है:LineHeightTrim.LineHeightTrimमें चार स्थितियां होती हैं, जिन्हें दो बूलियन से तय किया जाता है:FirstLineTop,LastLineBottom, दोनों, और कोई नहीं (Ifc6a5, b/181155707)LineHeightBehaviorकोTextStyleऔरParagraphStyleमें जोड़ा गया.LineHeightBehaviorयह कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के सबसे ऊपर और आखिरी लाइन के सबसे नीचे लागू की गई है या नहीं. यहTextStyle(lineHeight)के ज़रिए उपलब्ध कराए गए स्पेस में लाइन के अलाइनमेंट के बारे में भी बताता है.उदाहरण के लिए,
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)के ज़रिए सीएसएस के जैसा व्यवहार पाया जा सकता है.trimFirstLineTopऔरtrimLastLineBottomकॉन्फ़िगरेशन, सिर्फ़ तब सही तरीके से काम करते हैं, जबincludeFontPaddingकी वैल्यू false हो. (I97332, b/181155707)PlatformParagraphStyle.lerpऔरPlatformSpanStyle.lerpफ़ंक्शन को टॉप लेवल के फ़ंक्शन (I9a268) के तौर पर बदला गया है
गड़बड़ियां ठीक की गईं
PointerInputChange::copyके दस्तावेज़ में अब यह सही तरीके से बताया गया है कि यह एक शैलो कॉपी है. (I182f5)- जब ऊंचाई सीमित हो और सभी टेक्स्ट लाइनें फ़िट न हो रही हों, तो एलिप्सिस का इस्तेमाल किया जा सकता है (Ie528c, b/168720622)
- डिफ़ॉल्ट
includeFontPaddingचालू किया गया.TextStyle.platformTextStyleएट्रिब्यूट का इस्तेमाल करके,includeFontPaddingको बंद किया जा सकता है. हम आने वाले समय में, डिफ़ॉल्ट व्यवहार में बदलाव करेंगे. हालांकि, तब तक इससे हमें लाइन की ऊंचाई को बेहतर बनाने (aosp/2058653) औरTextFieldक्लिप करने की समस्याओं को हल करने में मदद मिलेगी. (I01423, b/171394808)
बाहरी योगदान
MouseInjectionScope.scroll(delta = someDelta)को अब Android पर उलटा कर दिया गया है. ऐसा तब होता है, जब हम ऊपर से नीचे या नीचे से ऊपर की ओर स्क्रोल करते हैं. अगर कुछ डेल्टा पॉज़िटिव है, तो यह नीचे की ओर स्क्रोल करेगा (Ifb697, b/224992993)
वर्शन 1.2.0-alpha08
20 अप्रैल, 2022
androidx.compose.ui:ui-*:1.2.0-alpha08 रिलीज़ हो गया है. वर्शन 1.2.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
pluralStringResourceफ़ंक्शन को एक्सपेरिमेंटल के तौर पर मार्क किया गया था, ताकि आने वाले समय में इन्हें बेहतर बनाया जा सके और ये अलग-अलग भाषाओं में काम कर सकें. (If24e4)- Paragraph और MultiParagraph अब Constraints पैरामीटर स्वीकार कर रहे हैं. फ़िलहाल,
Constraints.maxHeightका इस्तेमाल नहीं किया जा सकता. हालांकि, आने वाले समय में इसकी मदद से कुछ कैलकुलेशन की जा सकेंगी. जैसे, ऊंचाई के आधार पर टेक्स्ट को छोटा करना. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()अब MutableSet जैसी कस्टम क्लास स्वीकार करता है. इसमें नए आइटम जोड़ने की अनुमति नहीं होती. (Icd314)- PointerIcon अब एक
@Stableइंटरफ़ेस है (I9dafe) PointerInputChangeमें, आंशिक खपत (नीचे या स्थिति) को बंद कर दिया गया है. बदलाव को पूरी तरह से लागू करने के लिए,consume()का इस्तेमाल किया जा सकता है.isConsumedका इस्तेमाल करके यह पता लगाया जा सकता है कि किसी और ने पहले बदलाव का इस्तेमाल किया है या नहीं.PointerInputChange::copy()अब हमेशा शैलो कॉपी बनाता है. इसका मतलब है किPointerInputChangeकी कॉपी का इस्तेमाल एक बार होने के बाद, बाकी कॉपी का इस्तेमाल नहीं किया जा सकेगा. अगर आपको अनबाउंडPointerInputChangeबनाना है, तो कंस्ट्रक्टर का इस्तेमाल करें. (Ie6be4, b/225669674)- Compose और View के बीच नेस्टेड स्क्रोल इंटरऑप को चालू करता है. यह Compose > View की दिशा में काम करता है. इसका मतलब है कि कंपोज़ पैरंट, नेस्ट किए गए स्क्रोल व्यू से नेस्ट किए गए स्क्रोल डेल्टा पा सकेगा. (If7949, b/174348612)
- नया
SemanticsProperty testTagsAsResourceId, जिसका इस्तेमाल Compose को View सिस्टम के लिए डिज़ाइन किए गए UIAutomator टेस्ट के मुताबिक बनाने के लिए किया जा सकता है. (I39c20) FontFamily.SansSerifका इस्तेमाल करते समय, Android पर सिस्टम फ़ॉन्ट के लिए उपलब्ध सभी वेट दिखाएं. यह API 21-28 पर, फ़ॉलबैक फ़ॉन्ट के नामों का इस्तेमाल करेगा. जैसे, sans-serif-medium. यह एक व्यवहार में बदलाव है, क्योंकि इससे पहले एपीआई 21 से 28 पर सिर्फ़ 400 और 700 वज़न वाले फ़ॉन्ट काम करते थे. (I380fe, b/156048036, b/226441992)- पैराग्राफ़ और मल्टीपैराग्राफ़ इंस्ट्रक्टर ने, पोज़ीशनल आर्ग्युमेंट को ज़रूरी आर्ग्युमेंट से पहले रखा है. (Idafaa)
AndroidFontअब टाइपफ़ेसलोडर को कंस्ट्रक्टर पैरामीटर के तौर पर लेता है. (I2c971)
वर्शन 1.2.0-alpha07
6 अप्रैल, 2022
androidx.compose.ui:ui-*:1.2.0-alpha07 रिलीज़ हो गया है. वर्शन 1.2.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नया फ़ंक्शन
Snapshot.withoutReadObservation { ... }जोड़ा गया. इससे उपयोगकर्ता, इस ब्लॉक के दौरान पढ़ी गई स्थिति की वैल्यू में हुए बदलावों की सदस्यता लिए बिना, पास किए गए लैम्ब्डा को चला सकते हैं. यह उन मामलों में आपके काम आ सकता है जब आपको स्नैपशॉट पर आधारित थ्रेड सेफ़ राइट/रीड से फ़ायदा पाना हो, लेकिन आपको बिना किसी ज़रूरत के फिर से कंपोज़ किए या फिर से मेज़र किए बिना वैल्यू को पढ़ने की सुविधा चाहिए. (I9f365, b/214054486) ComposeViewकीconsumeWindowInsetsएक्सटेंशन प्रॉपर्टी की मदद से डेवलपर, AndroidWindowInsetsके इस्तेमाल को बंद कर सकते हैं. इससे हैरारकी में मौजूद हरComposeViews, एक-दूसरे में दखल दिए बिनाWindowInsetsलागू कर सकता है. (I0ef08, b/220943142)- आईएमई में दशमलव सेपरेटर को शामिल करने के लिए,
Keyboard.Numberके विकल्प के तौर परKeyboardType.Decimalको जोड़ा गया है. (Iec4c8, b/209835363) PointerEventType.ScrollऔरPointerEvent.scrollDeltaअब स्टेबल एपीआई हैं (I574c5, b/225669674)- View और Compose के बीच नेस्ट किए गए स्क्रोल इंटरऑप को चालू करें, ताकि View क्लास के साथ काम किया जा सके. इसका मतलब है कि कंपोज़ अब स्क्रोल डेल्टा को (सहयोग करने वाले) व्यू पैरंट को भेज सकता है. (I5d1ac, b/174348612)
FontFamily.Resolverको अपडेट किया गया है, ताकि सिस्टम-वाइड टेक्स्ट को बोल्ड करने की सुविधा की सुलभता सेटिंग (I6c1e7) को इंटिग्रेट किया जा सकेFont(AssetManager, String, ...)का अब इस्तेमाल नहीं किया जा सकता. इसकी जगहFont(String, AssetManager, ...)का इस्तेमाल किया जा सकता है. यह एपीआई, एक्सपेरिमेंट के तौर पर उपलब्ध है. (I1c7a4)- नया फ़ॉन्ट डिस्क्रिप्टर
Font(DeviceFontFamilyName)जोड़ा गया है. इससे फ़ॉन्ट फ़ॉलबैक चेन के दौरान, सिस्टम में इंस्टॉल किए गए फ़ॉन्ट को विकल्प के तौर पर ढूंढा जा सकता है. (I30468, b/219754572) - TextStyle/ParagraphStyle में
includeFontPaddingके लिए, कुछ समय के लिए कंपैटिबिलिटी कॉन्फ़िगरेशन जोड़ा गया.includeFontPaddingकोTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))के ज़रिए बदला जा सकता है. यह माइग्रेशन को चालू करने के लिए, कॉन्फ़िगरेशन का एक अस्थायी विकल्प है. इसे हटा दिया जाएगा. (If47be, b/171394808) - डीबग करने में मदद पाने के लिए,
GoogleFont.Provider.isAvailableOnDeviceएक्सटेंशन जोड़ें. (I64e31) @ArrayResके साथ इस्तेमाल करने के लिए,GoogleFont.Providerकंस्ट्रक्टर जोड़ा गया (Ic5ee1, b/225984280)Compose GoogleFontको अबFont(GoogleFont)कहा जाता है. हालांकि, एपीआई में कोई और बदलाव नहीं किया गया है. (I125f2)
गड़बड़ियां ठीक की गईं
- यह पक्का करने के लिए कि इनर पैडिंग का इस्तेमाल किया जा रहा है, material/Scaffold में लिंट चेक जोड़ा गया (Ifb111)
वर्शन 1.2.0-alpha06
23 मार्च, 2022
androidx.compose.ui:ui-*:1.2.0-alpha06 रिलीज़ हो गया है. वर्शन 1.2.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने के अनुरोध के लिए,
RequestFocusसिमैंटिक्स ऐक्शन जोड़ा गया. (I17b71) - वेक्टर ड्रॉएबल को पार्स करने की सुविधा को अपडेट किया गया है. इससे, मौजूदा लेआउट की दिशा RTL होने पर,
VectorPainterके कॉन्टेंट को अपने-आप फ़्लिप करने में मदद मिलती है. (I79cd9, b/185760237) एपीआई के साथ काम करने के लिए, शैडो/ऐम्बिएंट कलर को
Modifier.graphicsLayerके ट्रेलिंग पैरामीटर के तौर पर अपडेट किया गया (I3f864, b/160665122)GraphicsLayerScopeमें शैडो/ऐम्बिएंट कलर के लिए डिफ़ॉल्ट सेटिंग जोड़ी गई हैं, ताकि एपीआई में हुए बदलावों से कोई समस्या न होRSB इवेंट में इवेंट का समय जोड़ा गया (Ief8ae)
FocusOrderको अबFocusPropertiesमें मर्ज कर दिया गया है. साथ ही,focusProperties()में अबfocusOrder()की सभी सुविधाएं उपलब्ध हैं.FocusOrderऔरfocusOrder()का अब इस्तेमाल नहीं किया जा सकता.focusOrder()जोfocusRequesterस्वीकार करता है उसेfocusProperties()के साथfocusRequester()मॉडिफ़ायर से बदला जाना चाहिए. इससे मॉडिफ़ायर को अलग-अलग काम करने में मदद मिलती है. (I601b7)RecyclerViewऔरCompose, दोनों को अपग्रेड करने पर, अब Compose व्यू वाले RecyclerViews के लिए स्क्रोलिंग की परफ़ॉर्मेंस काफ़ी बेहतर हो जाएगी.डिफ़ॉल्ट रूप से उपलब्ध रणनीति को वापस पाने के लिए,
ViewCompositionStrategy.Defaultको जोड़ेंViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerजोड़ें. यह नई डिफ़ॉल्ट रणनीति है और RecyclerView जैसे पूलिंग कंटेनर को सही तरीके से मैनेज करती है. (If7282)मल्टीप्रीव्यू सुविधा जोड़ने के लिए, एनोटेशन क्लास को @Preview के साथ एनोटेट करने की सुविधा जोड़ी गई. इस तरह के एनोटेशन का इस्तेमाल, कंपोज़ेबल तरीकों या अन्य एनोटेशन क्लास को एनोटेट करने के लिए किया जा सकता है. इसके बाद, इन्हें दिए गए @Preview के साथ परोक्ष रूप से एनोटेट किया जा सकता है. (I12eff)
@Preview (I071c9) के लिए, डिवाइसों की सूची में रेफ़रंस डिवाइस जोड़े गए
गड़बड़ियां ठीक की गईं
- वेक्टर ग्राफ़िक एपीआई को अपडेट किया गया है, ताकि @UiComposable के बजाय सही कंपोज़ेबल एनोटेशन @VectorComposable का इस्तेमाल किया जा सके (I942bc)
AnnotatedString.Builder.withStyle(If84d5) से crossinline हटाया गया
बाहरी योगदान
- compose-ui:
GraphicsLayerScopeमेंambientShadowColorऔरspotShadowColorप्रॉपर्टी जोड़ें (I1ba1a, b/160665122) - अब
pluralStringResourceफ़ंक्शन के ज़रिए, प्लुरल रिसॉर्स इस्तेमाल किए जा सकते हैं. (Ib2f23, b/191375123)
वर्शन 1.2.0-alpha05
9 मार्च, 2022
androidx.compose.ui:ui-*:1.2.0-alpha05 रिलीज़ हो गया है. वर्शन 1.2.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TextToolbarअबActionCallbackके बजाय लैम्डा आर्ग्युमेंट लेता है. (Ib2eb9, b/197950089)- Tiramisu DP2 से मेल खाने के लिए, कोर और appcompat में अपडेट की गई नल वैल्यू (I0cbb7)
- मेज़र किए गए इंटरफ़ेस में अब parentData प्रॉपर्टी (I3313f) दिखती है
Modifier.onPlacedऔरOnPlacedModifierइंटरफ़ेस अब स्थिर हो गए हैं. (Ib5482)- हुर्रे! Compose ऐनिमेशन में अब डेवलपर विकल्पों में मौजूद 'एनिमेटर अवधि स्केल' सेटिंग काम करती है. (I5a4fc, b/161675988)
BeyondBoundsLayoutमॉडिफ़ायर लोकल (If8b51, b/184670295) जोड़ा गया- टेक्स्ट: includeFontPadding अब डिफ़ॉल्ट रूप से बंद है.
includeFontPadding=falseकी वजह से होने वाली क्लिपिंग की समस्याओं को ठीक कर दिया गया है. साथ ही, लंबी स्क्रिप्ट के लिए क्लिपिंग नहीं होनी चाहिए. (I31c84, b/171394808)
गड़बड़ियां ठीक की गईं
- अगर पहले से कोई कॉन्टेंट मौजूद है, तो कॉन्टेंट सेट करने की कोशिश करने पर
ComposeContentTestRule.setContentअबIllegalStateExceptionदिखाएगा. (I888a5, b/199631334) - Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड के कॉन्टेंट की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. (I06020, b/197769306)
- RSB स्क्रोलिंग के सैंपल बेहतर बनाएं. (I6a596)
बाहरी योगदान
- Kotlinx coroutines 1.6.0 (I3366d) का इस्तेमाल करने के लिए अपडेट किया गया
वर्शन 1.2.0-alpha04
23 फ़रवरी, 2022
androidx.compose.ui:ui-*:1.2.0-alpha04 रिलीज़ हो गया है. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposableTarget,ComposableTargetMarker, औरComposableOpenTargetजोड़े गए हैं. इनकी मदद से, कंपाइल टाइम रिपोर्टिंग की जा सकती है. इससे यह पता चलता है कि किसी कंपोज़ेबल फ़ंक्शन को कब कॉल किया गया था. साथ ही, यह भी पता चलता है कि उस फ़ंक्शन को किसी ऐसे ऐप्लिकेशन को टारगेट करने के लिए कॉल किया गया था जिसे इस्तेमाल करने के लिए उसे डिज़ाइन नहीं किया गया था.ज़्यादातर मामलों में, कंपोज़ कंपाइलर प्लगिन से एनोटेशन का अनुमान लगाया जा सकता है. इसलिए, इन एनोटेशन का सीधे तौर पर इस्तेमाल कम ही करना चाहिए. ऐसे मामलों में टाइप का अनुमान नहीं लगाया जा सकता: कस्टम ऐप्लिकेशन बनाना और उसका इस्तेमाल करना, ऐब्स्ट्रैक्ट कंपोज़ेबल फ़ंक्शन (जैसे कि इंटरफ़ेस के तरीके), कंपोज़ेबल लैम्डा (लोकल वैरिएबल और पैरामीटर का अनुमान लगाया जाता है) वाले फ़ील्ड या ग्लोबल वैरिएबल, या
ComposeNodeया उससे जुड़े कंपोज़ेबल फ़ंक्शन का इस्तेमाल करना.कस्टम ऐप्लिकेशन के लिए,
ComposeNodeयाReusableComposeNodeको कॉल करने वाले कंपोज़ेबल फ़ंक्शन को फ़ंक्शन और किसी भी कंपोज़ेबल लैम्डा पैरामीटर टाइप के लिए,ComposableTargetएनोटेशन जोड़ना होगा. हालांकि, हमारा सुझाव है कि आप ऐसा एनोटेशन बनाएं जिसेComposableTargetMarkerके साथ एनोटेट किया गया हो. इसके बाद, सीधेComposableTargetके बजाय, मार्क किए गए एनोटेशन का इस्तेमाल करें.ComposableTargetMarkerके तौर पर मार्क किया गया कंपोज़ेबल एनोटेशन,ComposbleTargetके बराबर होता है. इसमें एट्रिब्यूट क्लास का पूरी तरह क्वालिफ़ाइड नाम, ऐप्लिकेशन पैरामीटर के तौर पर होता है.ComposableTargetMarkerका इस्तेमाल करने का उदाहरण देखने के लिए,anroidx.compose.ui.UiComposableदेखें. (I38f11)Font(resId, ...)अब स्टेबल एपीआई पर loadingStrategy का इस्तेमाल करता है. (Ief3d2)FontLoadingStrategyअब स्टेबल एपीआई है. (I1ee35, b/174162090)टेक्स्ट में एसिंक फ़ॉन्ट लोडिंग की सुविधा जोड़ी गई (I77057, b/214587005)
कस्टम
Font.ResourceLoaderकोFontFamily.Resolverमें बदलने के लिए, ब्रिज एपीआई जोड़ें. (Ia0060)
गड़बड़ियां ठीक की गईं
- उपलब्ध कराए गए
FontFamily.Resolverको Popup जैसी सबकंपोज़िशन में पास किया जाता है. - उपलब्ध कराए गए
Font.ResourceLoaderको Popup जैसी सबकंपोज़िशन में पास किया जाता है. (I48fa5)
वर्शन 1.2.0-alpha03
9 फ़रवरी, 2022
androidx.compose.ui:ui-*:1.2.0-alpha03 रिलीज़ हो गया है. वर्शन 1.2.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TextInputSessionऔरTextInputServiceमें मौजूदnotifyFocusedRectतरीके अब काम नहीं करेंगे और इन्हें कॉल नहीं किया जाएगा. इसके बजाय,BringIntoViewRequesterका इस्तेमाल करें. (Ia4302, b/192043120, b/216842427, b/178211874)RenderNodeस्टब क्लास परdestroyDisplayListDataमेथड जोड़ा गया (I1e659, b/216660268)- एक नया एपीआई जोड़ा गया है. इसकी मदद से,
SubcomposeLayoutके बच्चों को पहले से मेज़र किया जा सकता है. (I857ea) movableContentOfजोड़ा गया है. यह कंपोज़ेबल लैम्डा को ऐसे लैम्डा में बदलता है जो इसके स्टेटस और इससे जुड़े नोड को किसी भी नई जगह पर ले जाता है. जब पिछला कॉल कंपोज़िशन से हट जाता है, तो स्थिति को कुछ समय के लिए सेव कर लिया जाता है. अगर लैंबडा को किया गया कोई नया कॉल कंपोज़िशन में शामिल होता है, तो स्थिति और उससे जुड़े नोड को नए कॉल की जगह पर ले जाया जाता है. अगर कोई नया कॉल नहीं जोड़ा जाता है, तो स्थिति को हमेशा के लिए हटा दिया जाता है. साथ ही, मॉनिटर करने वालों को इसकी सूचना दी जाती है.अगर एक ही कंपोज़िशन में
movableContentOfलैम्डा को कई बार कॉल किया जाता है, तो हर कॉल के लिए नई स्थिति और नोड बनाए जाते हैं. साथ ही, जैसे-जैसे कॉल कंपोज़िशन से बाहर निकलते हैं और नए कॉल शामिल होते हैं, स्थिति को पहले बाहर निकलने वाले कॉल से, शामिल होने वाले कॉल में ट्रांसफ़र किया जाता है. यह ट्रांसफ़र, कॉल किए जाने के क्रम में होता है. नए कॉल से नहीं जुड़े सभी राज्यों की जानकारी हमेशा के लिए हटा दी जाती है. (Ib4850)FontFamilyResolverअबLocalFontFamilyResolver.currentके ज़रिए उपलब्ध हैCompose के बाहर FontFamily रिज़ॉल्वर बनाने के लिए,
createFontFamilyResolver(context)औरcreateFontFamilyResolver(context, coroutineScope)जोड़े गए हैं.पैराग्राफ़ और मल्टीपैराग्राफ़ अब
FontFamily.Resolverलेते हैंTextLayoutResult.layoutInput.fontFamilyResolverमें अब इस लेआउट के लिए इस्तेमाल किया गया रिज़ॉल्वर शामिल है.TextLayoutResult.layoutInput.resourceLoaderको अब इस्तेमाल नहीं किया जाता, इसलिए इसे बंद कर दिया गया है. (Id5a45, b/174162090)फ़ॉन्ट को एसिंक तरीके से लोड करने और फ़ॉन्ट लोड करने की सुविधा को चालू या बंद करने की सुविधा. साथ ही, फ़ॉन्ट लोड न होने पर फ़ॉन्ट को वापस पहले जैसा करने की सुविधा. इस पाथ का इस्तेमाल Text और TextField करते हैं. साथ ही, इसे FontFamilyResolver के ज़रिए दिखाया जाता है
FontFamilyResolver.preloadके ज़रिए फ़ॉन्ट को पहले से लोड करने की सुविधाFontFamilyResolver.setAsyncLoadContextकी मदद से, एसिंक फ़ॉन्ट लोड करने के लिए इस्तेमाल किया जाने वाला ग्लोबल कोरूटीन कॉन्टेक्स्ट सेट किया जा सकता है. (I87fe8, b/174162090)Android पर नए टाइप के फ़ॉन्ट रिसॉर्स डिस्क्रिप्टर उपलब्ध कराने के लिए, नया लो-लेवल एपीआई
AndroidFontजोड़ा गया है. उदाहरण के लिए, किसी ऐप्लिकेशन के बैकएंड से फ़ॉन्ट लोड करना, उपयोगकर्ता के डिवाइस पर पहले से इंस्टॉल किए गए फ़ॉन्ट का पता लगाना या ऐसे संसाधन से फ़ॉन्ट लोड करना जो फ़ॉन्ट फ़ैक्ट्रियों के मौजूदा वर्शन में उपलब्ध नहीं है.Font.ResourceLoadedएपीआई को बेहतर बनाया गया है, ताकि फ़ॉन्ट को ज़रूरत के हिसाब से और एसिंक्रोनस तरीके से लोड किया जा सके. हमारा सुझाव है कि ऐप्लिकेशन डेवलपर इस एपीआई का सीधे तौर पर इस्तेमाल न करें. नए तरह के फ़ॉन्ट जोड़ने के लिए,AndroidFontदेखें.Font.AndroidResourceLoaderएक्सटेंशन फ़ंक्शन, कंपोज़िशन के बाहर होने परFont.ResourceLoaderबनाने की अनुमति देता है.संसाधन पर आधारित फ़ॉन्ट में
loadingStrategyपैरामीटर जोड़ा गया, ताकि संसाधन फ़ॉन्ट, डाउनलोड किए जा सकने वाले फ़ॉन्ट के एक्सएमएल को रेफ़रंस करते समय, एसिंक लोडिंग की अनुमति दी जा सके. (Ie5aea, b/174162090)Typeface(FontFamily)कंस्ट्रक्टर का अब इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. डाउनलोड किए जा सकने वाले फ़ॉन्ट के साथ, यह कॉल 10 सेकंड के लिए ब्लॉक हो सकता है. इसके बजाय,FontFamilyResolver.preloadका इस्तेमाल करें.fontResource(FontFamily): Typefaceके इस्तेमाल पर रोक लगा दी गई है. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. इसके बजाय,FontFamilyResolver.preload(If8e7c, b/174162090) का इस्तेमाल करेंSubcomposeLayoutStateकंस्ट्रक्टर मेंmaxSlotsToRetainForReuseस्वीकार करने की सुविधा अब काम नहीं करती. इसके बजाय, एक नया कंस्ट्रक्टर है जोSubcomposeSlotReusePolicyस्वीकार करता है. यह एक नया इंटरफ़ेस है, जो यह तय करने के लिए ज़्यादा कंट्रोल देता है कि आने वाले समय में फिर से इस्तेमाल करने के लिए, किन स्लॉट को बनाए रखना चाहिए. (I52c4d)Colorमें HSV और HSL फ़ंक्शन को नॉन-एक्सपेरिमेंटल एपीआई के तौर पर दिखाता है. Oklab कलर स्पेस अब सार्वजनिक एपीआई है. (I08fb6, b/180731008)अब इस्तेमाल नहीं किया जाता
AndroidComposeTestRule.AndroidComposeStatement. इसे सार्वजनिक एपीआई में शामिल नहीं किया जाना था. साथ ही, इससे आपको कोई फ़ायदा नहीं मिलता था. (Ibc46b)Internal generated kt class rename (Ia0b9e, b/174162090)
FontLoadingStrategy.valuesको हटा दिया गया (I42a9d, b/174162090)ग्लोबल फ़ॉन्ट लोडर को अब
FontFamilyResolverकहा जाता है. (I4f773, b/174162090)डेस्कटॉप के लिए, फ़ॉन्ट लोड करने वाले नए सिस्टम का इस्तेमाल करें. (I9ce5c, b/174162090)
FontFamily.Resolver.resolvereturnsState<Any>(I4406c, b/174162090)
गड़बड़ियां ठीक की गईं
- अब टेक्स्ट फ़ील्ड को कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब उन्हें फ़ोकस किया जाएगा और कीबोर्ड दिखेगा. साथ ही, जब सॉफ़्ट इनपुट मोड
ADJUST_PANपर सेट होगा. (I8eaeb, b/190539358, b/192043120) - डेस्कटॉप,
FontFamily.Resolverके लिए कंपोज़िशन लोकल का इस्तेमाल करता है - डेस्कटॉप पर
FontLoaderकी सुविधा अब काम नहीं करती - डेस्कटॉप पर नई
createFontFamilyResolverफ़ैक्ट्री (I6bbbb, b/174162090) - टेक्स्ट फ़ील्ड के बीच फ़ोकस बदलने पर, अब सॉफ़्ट कीबोर्ड इनपुट टाइप फ़्लिकर नहीं होता. (I1bf50, b/187746439)
वर्शन 1.2.0-alpha02
26 जनवरी, 2022
androidx.compose.ui:ui-*:1.2.0-alpha02 रिलीज़ हो गया है. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- रोटेटिंग साइड बटन वाले Wear डिवाइसों के लिए,
Modifier.onRotaryScrollEvent()औरModifier.onPreRotaryScrollEvent()जोड़े गए (I18bf5, b/210748686) - एक्सपेरिमेंट के लिए
View.createLifecycleAwareRecomposerएक्सटेंशन (I0cde6) जोड़ें
बाहरी योगदान
PointerEvent.scrollDelta.yअब Android पर उलट गया है. अब माउस के पहिए को दाईं ओर झुकाने पर, -1 के बजाय 1 दिखता है (Ia9811)
वर्शन 1.2.0-alpha01
12 जनवरी, 2022
androidx.compose.ui:ui-*:1.2.0-alpha01 रिलीज़ हो गया है. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
FontFamily.canLoadSynchronouslyअब काम नहीं करता. इस प्रॉपर्टी का कोई सिमैंटिक मतलब नहीं है. (Ica5ef)- लेआउट इंस्पेक्टर में इनवेरिएंट आईडी जनरेट करने के लिए,
CompositionDataमें आइडेंटिटी फ़ील्ड जोड़ा गया. (Ic116e) - Wear OS डिवाइसों के आईडी, 'डिवाइसों की झलक देखें' सूची में जोड़े गए (I93232)
डिपेंडेंसी से जुड़े अपडेट
- अब Kotlin
1.6.10पर निर्भर करता है.
वर्शन 1.1
वर्शन 1.1.1
23 फ़रवरी, 2022
androidx.compose.ui:ui-*:1.1.1 रिलीज़ हो गया है. वर्शन 1.1.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayListपरNullPointerExceptionठीक करें (aosp/1947059, b/206677462)- Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड के कॉन्टेंट की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. (I06020, b/197769306)
LazyVerticalGridमें आरटीएल की समस्या ठीक की गई (aosp/1931080, b/207510535)
वर्शन 1.1.0
9 फ़रवरी, 2022
androidx.compose.ui:ui-*:1.1.0 रिलीज़ हो गया है. वर्शन 1.1.0 में ये बदलाव शामिल हैं.
1.0.0 के बाद हुए अहम बदलाव
- Android 12 के ओवरस्क्रॉल इफ़ेक्ट के लिए स्टेबल सपोर्ट
- टच टारगेट के साइज़ में सुधार
- ध्यान दें कि Compose 1.0 के हिसाब से, मटीरियल कॉम्पोनेंट अपने लेआउट स्पेस को बढ़ाएंगे, ताकि टच टारगेट साइज़ के लिए, मटीरियल के सुलभता से जुड़े दिशा-निर्देशों का पालन किया जा सके. उदाहरण के लिए, अगर आपने बटन का साइज़ छोटा सेट किया है, तब भी बटन का टच टारगेट कम से कम 48x48dp तक बढ़ जाएगा. इससे Compose Material, मटीरियल डिज़ाइन कॉम्पोनेंट के जैसा ही काम करता है. साथ ही, Views और Compose को एक साथ इस्तेमाल करने पर, एक जैसा अनुभव मिलता है. इस बदलाव से यह भी पक्का होता है कि Compose Material कॉम्पोनेंट का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) बनाने पर, टच टारगेट की ऐक्सेसिबिलिटी से जुड़ी ज़रूरी शर्तें पूरी होंगी.
- नेविगेशन रेल के लिए स्टेबल सपोर्ट
- पहले एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल वर्शन में अपग्रेड किया गया है
- Kotlin के नए वर्शन के लिए सहायता
वर्शन 1.1.0-rc03
26 जनवरी, 2022
androidx.compose.ui:ui-*:1.1.0-rc03 रिलीज़ हो गया है. वर्शन 1.1.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose Material 1.1.0-rc03 के साथ काम करने के लिए अपडेट किया गया
वर्शन 1.1.0-rc01
15 दिसंबर, 2021
androidx.compose.ui:ui-*:1.1.0-rc01 रिलीज़ हो गया है. वर्शन 1.1.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐक्सेसिबिलिटी की स्क्रोल करने की कार्रवाइयों (I7cbfb) के गायब होने की वजह बनने वाली गड़बड़ी को ठीक किया गया है
SemanticsNodeInteraction.captureToImage()अब तब भी काम करेगा, जबHardwareRenderer.isDrawingEnabled()falseपर सेट हो. इसके लिए, कॉल के दौरान इसे चालू करना होगा (Idf3d0)
वर्शन 1.1.0-beta04
1 दिसंबर, 2021
androidx.compose.ui:ui-*:1.1.0-beta04 रिलीज़ हो गया है. वर्शन 1.1.0-beta04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Kotlin
1.6.0के साथ काम करने के लिए अपडेट किया गया
एपीआई में हुए बदलाव
androidx.core.viewमें नल वैल्यू की समस्या ठीक की गई (I7078a, b/204917439)- इसमें एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई जोड़े गए हैं. इनकी मदद से, उपयोगकर्ता PointerInputchange को पूरी तरह से इस्तेमाल कर सकते हैं. इसके अलावा, यह भी देख सकते हैं कि इसका इस्तेमाल किया गया है या नहीं. (I2e59d)
- इस कुकी से, यूज़र इंटरफ़ेस (यूआई) लेयर में माउस के स्क्रोल व्हील इवेंट के लिए सहायता जोड़ी जाती है. (Ia14eb, b/198214718)
- एक्सपेरिमेंट के तौर पर
Modifier.composedओवरलोड जोड़े गए हैं. ये समानता की तुलना करने के लिए कुंजियां स्वीकार करते हैं और ऑप्टिमाइज़ेशन को स्किप करने की ज़रूरी शर्तें पूरी करते हैं. (Ice799, b/205851704) ComposeNotIdleExceptionअब सीधेThrowableसे न होकर,Exceptionसे शुरू होता है. ध्यान दें कि इसका मतलब यह है किExceptionको मैच करने वाले कैच क्लॉज़ अबComposeNotIdleExceptionको मैच कर सकते हैं. हालांकि, पहले ऐसा नहीं होता था. (I9c217)
गड़बड़ियां ठीक की गईं
- IME की दृश्यता बदलने पर, टेक्स्ट हैंडल के न हिलने की समस्या ठीक की गई. (I25f2e)
वर्शन 1.1.0-beta03
17 नवंबर, 2021
androidx.compose.ui:ui-*:1.1.0-beta03 रिलीज़ हो गया है. वर्शन 1.1.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- प्लेसमेंट में बदलाव को मॉनिटर करने के लिए, नया मॉडिफ़ायर Modifier.onPlaced जोड़ा गया. इसलिए, प्लेसमेंट में हुए बदलाव के आधार पर, चाइल्ड मॉडिफ़ायर के ऑफ़सेट में अन्य बदलाव किए जा सकते हैं. (I558fd)
InjectionScope.flush()औरInjectionScope.dispose()को हटा दिया गया है. सभी इवेंट को फ़्लश करने और स्कोप को हटाने की प्रोसेस, अब perform*Input() तरीके को कॉल करने के बाद होती है. यह प्रोसेस पहले की तरह ही होती है. (I2bed8)MultiModalInjectionScope.TouchऔरMultiModalInjectionScope.Mouseको हटा दिया गया है. मल्टी-मॉडल जेस्चर के लिए टच और माउस इवेंट इंजेक्ट करने के लिए, अबMultiModalInjectionScope.touch()औरMultiModalInjectionScope.mouse()का इस्तेमाल किया जा सकता है. ये दोनों, ऐसे लैम्डा को स्वीकार करते हैं जिनमें उस मोडेलिटी का रिसीवर स्कोप होता है. (Idde18)
गड़बड़ियां ठीक की गईं
TouchInjectionScope.swipeWithVelocityमें मौजूदdurationMillisकी डिफ़ॉल्ट वैल्यू अब इस तरह से कैलकुलेट की जाती है कि स्वाइप करना मुमकिन हो. (I19deb)
वर्शन 1.1.0-beta02
3 नवंबर, 2021
androidx.compose.ui:ui-*:1.1.0-beta02 रिलीज़ हो गया है. वर्शन 1.1.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- BringIntoView API का एक्सपेरिमेंटल वर्शन जोड़ा गया है. इसकी मदद से, माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे स्क्रोल करके किसी आइटम को देख सकें (Ib918d, b/195353459)
- टूलिंग के लिए नए ऐनिमेशन एपीआई. खास तौर पर, ये टूल को ट्रांज़िशन में ऐनिमेशन और उनके कॉन्फ़िगरेशन की जांच करने की अनुमति देते हैं. (I4116e)
बाहरी योगदान
- Modifier.pointerHoverIcon (I95f01) जोड़ा गया
वर्शन 1.1.0-beta01
27 अक्टूबर, 2021
androidx.compose.ui:ui-*:1.1.0-beta01 रिलीज़ हो गया है. वर्शन 1.1.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर
BringIntoViewएपीआई जोड़ा गया है. इससे माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे स्क्रोल करके किसी आइटम को व्यू में ला सकें (Ib918d, b/195353459) - टूलिंग के लिए नए ऐनिमेशन एपीआई. खास तौर पर, ये टूल को ट्रांज़िशन में ऐनिमेशन और उनके कॉन्फ़िगरेशन की जांच करने की अनुमति देते हैं. (I4116e)
वर्शन 1.1.0-alpha06
13 अक्टूबर, 2021
androidx.compose.ui:ui-*:1.1.0-alpha06 रिलीज़ हो गया है. वर्शन 1.1.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ViewRootForInspectorऔरLayoutInfo.ownerViewId(I5c2e3) सेExperimentalComposeUiApiहटाएं- लेआउट के लिए, बिना चाइल्ड नोड वाला ओवरलोड जोड़ा गया है. इससे परफ़ॉर्मेंस बेहतर हुई है (Ib0d9a)
- कंपोज़र के उन तरीकों से
InternalCompilerApiहटाया गया है जिन्हें क्रॉस-मॉड्यूल (I1aa0b) कहा जाना ज़रूरी है - अब
SemanticsNodeInteraction.performSemanticsAction, उसSemanticsNodeInteractionको दिखाता है जिस पर फ़ंक्शन को कॉल किया गया था. (I9e5db) - TouchMode/NonTouchMode का पता लगाने के लिए, LocalInputModeManager CompositionLocal जोड़ा गया. (I6a83c, b/175899786)
LayoutInfoमेंviewConfiguration: ViewConfigurationजोड़ा गया है, ताकि उपभोक्ताओं को लंबी प्रेस के लिए टाइमआउट जैसी चीज़ों की सही वैल्यू मिल सके. (I76ca6)viewConfiguration: ViewConfigurationकोInjectionScopeमें जोड़ा गया है, ताकि टेस्ट, इनपुट इंजेक्शन को अडजस्ट कर सकें. ऐसा, टच स्लोप या बटन को दबाकर रखने के टाइम आउट जैसी चीज़ों के आधार पर किया जा सकता है.- टच और माउस इनपुट, दोनों के लिए दबाकर रखने और दो बार टैप करने की डिफ़ॉल्ट अवधि को बदल दिया गया है. अब यह अवधि,
InjectionScope.viewConfigurationमें दी गई वैल्यू के हिसाब से तय होगी.
- TextField और DropdownMenu के साथ ExposedDropdownMenuBox के आधार पर ExposedDropdownMenu को लागू करना (If60b2)
- dismissOnOutsideClick को PopupProperties में जोड़ा गया है. यह dismissOnClickOutside की जगह इस्तेमाल किया जाएगा. dismissOnClickOutside के इस्तेमाल पर रोक लगा दी गई है. नई प्रॉपर्टी को क्लिक की पोज़िशन और ऐंकर बाउंड्री मिलती है. इससे यह बेहतर तरीके से कंट्रोल किया जा सकता है कि onDismissRequest को कॉल किया जाना चाहिए या नहीं. उदाहरण के लिए, यह ऐंकर पर किए गए टच के लिए ऐंकर को खारिज होने से रोकने में मददगार हो सकता है.
- updateAndroidWindowManagerFlags को PopupProperties में जोड़ा गया है. इससे, पॉप-अप के ज़रिए Android WindowManager को पास किए गए फ़्लैग पर लो-लेवल कंट्रोल मिलता है. लैम्डा का पैरामीटर, PopupProperties वैल्यू से कैलकुलेट किए गए फ़्लैग होंगे.इनसे WindowManager फ़्लैग मिलते हैं. उदाहरण के लिए, फ़ोकस किया जा सकने वाला. लैंबडा का नतीजा, फ़ाइनल फ़्लैग होगा. इन्हें Android WindowManager को पास किया जाएगा. डिफ़ॉल्ट रूप से, updateAndroidWindowManagerFlags, पैरामीटर से कैलकुलेट किए गए फ़्लैग में कोई बदलाव नहीं करेगा. इस एपीआई का इस्तेमाल सावधानी से करना चाहिए. इसका इस्तेमाल सिर्फ़ उन मामलों में करना चाहिए जहां पॉप-अप के लिए, व्यवहार से जुड़ी कुछ खास ज़रूरी शर्तें हों. (I6e9f9)
Recomposer.stateको बंद कर दिया गया है और इसकी जगहRecomposer.currentStateका इस्तेमाल किया जा रहा है, ताकि इसके टाइप को StateFlow में बदला जा सके (Ic2ab3, b/197773820)flush()औरdispose()कोInjectionScopeमें जोड़ा गया. इनका इस्तेमाल तब करें, जब आपको सभी इवेंट को तुरंत फ़्लश करना हो और जब आपको स्कोप को बंद करना हो. (Ifb73a)performScrollToNode(matcher: SemanticsMatcher)जोड़ा गया है. यह स्क्रोल किए जा सकने वाले कंटेनर को उस कॉन्टेंट पर स्क्रोल करता है जो दिए गए मैच करने वाले फ़ंक्शन से मैच करता है. (Ic1cb8)InjectionScopeअबDensityलागू करता है. इससे आपकोperformTouchInputऔर इससे जुड़े अन्य टूल में, पिक्सल और डीपी के बीच आसानी से कन्वर्ज़न करने की सुविधा मिलती है. (I8fe1f)
गड़बड़ियां ठीक की गईं
- AndroidView अब ViewTreeLifecycleOwner और ViewTreeSavedStateRegistryOwner के ज़रिए, LocalLifecycleOwner और LocalSavedStateRegistryOwner को अपने व्यू में भेजता है. (I38f96, b/179708470)
- WearOS SwipeToDismissBox में स्वाइप करने की सुविधा कभी-कभी काम नहीं करती. इस समस्या को ठीक किया गया है. (I9387e)
- इंजेक्ट किए गए इनपुट इवेंट के बीच का डिफ़ॉल्ट समय, 10 मि॰से॰ से बदलकर 16 मि॰से॰ कर दिया गया है. इससे, इनपुट के लिए किए जाने वाले जेस्चर (जैसे, स्वाइप) की जांच के नतीजे बदल सकते हैं. (I829fd)
वर्शन 1.1.0-alpha05
29 सितंबर, 2021
androidx.compose.ui:ui-*:1.1.0-alpha05 रिलीज़ हो गया है. वर्शन 1.1.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- मॉडिफ़ायर के बीच कम्यूनिकेशन की सुविधा जोड़ी गई (Id5467, b/198826874)
- PointerEventChange में एक्सपेरिमेंट के तौर पर उपलब्ध, पुराने पॉइंटर जोड़े गए. (Ic1fd8, b/197553056, b/199921305)
density: DensityऔरlayoutDirection: LayoutDirectionकोLayoutInfoमें जोड़ा गया. इससेLayoutInfoके उपयोगकर्ताओं को,LayoutInfoमें दिखाए गए डाइमेंशन और पोज़िशन को सही तरीके से समझने में मदद मिलती है. (I002f1)- माउस इवेंट इंजेक्ट करने की सुविधा को एक्सपेरिमेंट के तौर पर जोड़ा गया है. माउस इवेंट भेजना शुरू करने के लिए,
performMouseInputका इस्तेमाल करें. इसके अलावा,performMultiModalInputके साथ मल्टी मॉडल इनपुट जेस्चर के दौरान,MultiModalInjectionScopeकीMouseप्रॉपर्टी के ज़रिए माउस इवेंट भेजें. उपलब्ध एपीआई के दस्तावेज़ के लिए,MouseInjectionScopeपर जाएं. (Iaa4a8, b/190493367)
गड़बड़ियां ठीक की गईं
- स्क्रोल करने की सुविधा के साथ-साथ, स्क्रोल किए जा सकने वाले (लेज़ी और नॉन-लेज़ी, दोनों) आइटम के लिए सुलभता से जुड़ी समस्या ठीक की गई है (I6cdb0)
TouchInjectionScope.swipeWithVelocityको बेहतर बनाया गया. अब यह ज़्यादा इनपुट वैरिएबल स्वीकार करता है. साथ ही, अगर स्वाइप नहीं बनाया जा सकता, तो यह इनपुट में बदलाव करने का सुझाव देगा (I40fbe, b/182477143)
वर्शन 1.1.0-alpha04
15 सितंबर, 2021
androidx.compose.ui:ui-*:1.1.0-alpha04 रिलीज़ हो गया है. वर्शन 1.1.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PointerEventमें अबPointerEventTypeहै, ताकि होवर इवेंट को सपोर्ट किया जा सके. (I091fa)- बच्चों को, पैरंट के पॉइंटर इनपुट की सीमाओं से बाहर पॉइंटर इनपुट स्वीकार करने की अनुमति दें. माता-पिता, प्रॉपर्टी PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655) का इस्तेमाल करके, उन कॉल को इंटरसेप्ट कर सकते हैं
performGestureऔरGestureScopeके इस्तेमाल पर रोक लगा दी गई है. इनकी जगहperformTouchInputऔरTouchInjectionScopeका इस्तेमाल किया जाएगा. (Ia5f3f, b/190493367)SemanticsNodeमेंtouchBoundsInRootजोड़ा गया है. इसमें टच टारगेट का कम से कम साइज़ शामिल है, ताकि डेवलपर यह पक्का कर सकें कि टच टारगेट, सुलभता से जुड़ी ज़रूरी शर्तों को पूरा करते हैं. (I2e14b, b/197751214)- इंस्पेक्ट किए जा सकने वाले एलिमेंट को फिर से लागू किया गया (I927bc, b/191017532)
- जांच किए जा सकने वाले पैरामीटर का नाम बदलकर, कंपोज़ किए गए पैरामीटर के नाम से मैच किया गया (I3a482, b/191017532)
performTouchInputऔरTouchInjectionScopeकोperformTouchInputऔरTouchInjectionScopeके विकल्प के तौर पर लॉन्च किया गया. इससे माउस जैसे अन्य तरीकों से भी बातचीत करने का रास्ता खुल गया.TouchInjectionScopeमेंGestureScopeवाले तरीके ही इस्तेमाल किए जाते हैं. हालांकि,movePointerToऔरmovePointerByकोupdatePointerToऔरupdatePointerByके तौर पर रीनेम कर दिया गया है. अन्य सभी तरीके एक जैसे हैं.TouchInjectionScopeका व्यवहार,GestureScopeके व्यवहार से काफ़ी हद तक मिलता-जुलता है. हालांकि, इसमें दो छोटी-छोटी बातें अलग हैं:- जब पॉइंटर को बिना किसी मूव इवेंट के भेजे ही, डाउन इवेंट भेजा जाता है (दूसरे शब्दों में,
updatePointerTo()का इस्तेमाल किया गया है, लेकिनmove()का नहीं. इसके बाद,down()को कॉल किया जाता है), तो पिछला वर्शन, इवेंट के समय को आगे बढ़ा देता था. साथ ही, डाउन इवेंट भेजने से पहले एक मूव इवेंट भेजता था. नया तरीका लागू करने के बाद भी, move इवेंट भेजा जाता है. हालांकि, इस खास स्थिति में इवेंट का समय नहीं बढ़ता. - जब पॉइंटर को बिना किसी मूव इवेंट को भेजे (ऊपर दिए गए उदाहरण की तरह) ले जाया जाता है, तब अप इवेंट भेजने पर, पिछला तरीका इवेंट के समय को आगे बढ़ा देता था. साथ ही, अप इवेंट भेजने से पहले मूव इवेंट भेज देता था. नया तरीका इन दोनों में से कोई भी काम नहीं करता: पॉइंटर की नई पोज़िशन सिर्फ़ अप इवेंट के ज़रिए दिखेगी.
आखिर में,
TouchInjectionScope, दिए गए पॉइंटर की मौजूदा पोज़िशन पाने के लिए एक नया तरीकाcurrentPosition(pointerId: Int)पेश करता है. (If1191, b/190493367)- जब पॉइंटर को बिना किसी मूव इवेंट के भेजे ही, डाउन इवेंट भेजा जाता है (दूसरे शब्दों में,
गड़बड़ियां ठीक की गईं
- इस विकल्प से, क्लिप को टच टारगेट के साइज़ को बढ़ाने की अनुमति मिलती है. ऐसा क्लिप क्षेत्र से बाहर जाकर किया जाता है, ताकि टच टारगेट का साइज़ कम से कम हो. (I43e10, b/171509422)
- Android 12 डिवाइसों पर, स्ट्रेच ओवरस्क्रोल की सुविधा जोड़ी गई है. (Iccf3c, b/171682480)
वर्शन 1.1.0-alpha03
1 सितंबर, 2021
androidx.compose.ui:ui-*:1.1.0-alpha03 रिलीज़ हो गया है. वर्शन 1.1.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Compose
1.1.0-alpha03को Kotlin1.5.30पर निर्भर रहने के लिए अपडेट किया गया. (I74545)
एपीआई में हुए बदलाव
- अन्य मॉडिफ़ायर को रैप करने के लिए,
Modifier.inspectableजोड़ा गया. (I1909b, b/191017532) BlurredEdgeTreatmentएपीआई जोड़ा गया है, ताकि धुंधला करने की सुविधा को क्लिप फ़्लैग और TileModes के ज़्यादातर इस्तेमाल किए जाने वाले कॉम्बिनेशन में आसानी से इस्तेमाल किया जा सके. ज़्यादातर इस्तेमाल के उदाहरणों में, धुंधले किए गए कॉन्टेंट को ओरिजनल कॉन्टेंट की सीमाओं से बाहर रेंडर करने और इन सीमाओं से बाहर के हिस्सों को पारदर्शी काले रंग से धुंधला करने या कॉन्टेंट को कॉन्टेंट की सीमाओं में क्लिप करने के लिए, धुंधलेपन के कर्नल के लिए सबसे नज़दीकी किनारे का सैंपल लेने की सुविधा शामिल होती है. (I6b4b7, b/166927547)- Compose Desktop में RenderEffect के लिए सहायता जोड़ी गई. OffsetEffect के साथ-साथ ब्लर मॉडिफ़ायर भी जोड़ा गया है. इससे कंपोज़िशन हाइरार्की के किसी हिस्से में ब्लर विज़ुअल इफ़ेक्ट आसानी से जोड़े जा सकते हैं. (I0f6aa, b/166927547)
- RenderEffect API लॉन्च किया गया है. इसे
Modifier.graphicsLayerपर कॉन्फ़िगर किया जा सकता है, ताकि लेयर के कॉन्टेंट में बदलाव किया जा सके. इसका इस्तेमाल, कंपोज़ेबल के कॉन्टेंट और कंपोज़िशन के क्रम में मौजूद चाइल्ड कंपोज़ेबल को धुंधला करने के लिए किया जा सकता है. (I47c4d, b/166927547) - AwaitPointerEventScope में अब withTimeout() और withTimeoutOrNull() फ़ंक्शन उपलब्ध हैं (I507f0, b/179239764, b/182397793)
- ViewConfiguration में टच टारगेट का कम से कम साइज़ जोड़ा गया है. इसका इस्तेमाल सिमैंटिक्स और पॉइंटर इनपुट में किया जा सकता है, ताकि यह पक्का किया जा सके कि ऐप्लिकेशन को ऐक्सेस किया जा सकता है. (Ie861c)
- TileMode.Decal के लिए सहायता जोड़ी गई है. यह धुंधलेपन पर आधारित RenderEffects के लिए, किनारे के व्यवहार को तय करने में मददगार है. (I7e8ed, b/166927547)
performScrollToIndex,performScrollToKey,hasScrollToIndexAction, औरhasScrollToKeyActionअब स्टेबल एपीआई हैं (I142ae, b/178483889)- क्लिप किए गए बाउंड्री बॉक्स पाने के लिए, टेस्ट का तरीका जोड़ा गया. (I6b28e)
गड़बड़ियां ठीक की गईं
- BlurredEdgeTreatment से isBounded तरीके को हटा दिया गया है. इसके बजाय, यह साफ़ तौर पर जांच की जाती है कि शेप पैरामीटर शून्य है या नहीं. (I85d68)
वर्शन 1.1.0-alpha02
18 अगस्त, 2021
androidx.compose.ui:ui-*:1.1.0-alpha02 रिलीज़ हो गया है. वर्शन 1.1.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- PointerEvent अब माउस बटन की स्थिति और कीबोर्ड मॉडिफ़ायर की स्थिति को पढ़ने की सुविधा देता है. (I6310c, b/180075467)
- इंजेक्ट किए गए जेस्चर अब MainTestClock के समय का इस्तेमाल करते हैं. यह समय के लिए सोर्स ऑफ़ ट्रुथ के तौर पर काम करता है.
performGestureमें इंजेक्ट किए गए इवेंट के लिए मौजूदा समय, MainTestClock के मौजूदा समय पर सेट किया जाएगा. (Ifb364, b/192064452) DpRect(DpOffset, DpSize)कंस्ट्रक्टर जोड़ा गया (I2cf16, b/194219828)- DpSize क्लास जोड़ी गई (I7abb1, b/194219828)
गड़बड़ियां ठीक की गईं
- वेक्टर ग्राफ़िक्स के एक्सएमएल पार्सिंग को अपडेट किया गया है, ताकि VectorDrawables पर ColorStateLists को रूट कलर टिंट प्रॉपर्टी के तौर पर इस्तेमाल किया जा सके. (I86915, b/195668138)
वर्शन 1.1.0-alpha01
4 अगस्त, 2021
androidx.compose.ui:ui-*:1.1.0-alpha01 रिलीज़ हो गया है. वर्शन 1.1.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
RelocationRequester.bringIntoViewअब पैरामीटर के तौर पर रेक्टैंगल स्वीकार करता है. इससे हम कंपोज़ेबल के किसी हिस्से को व्यू में ला सकते हैं (Ice2c5, b/194330245)AnimatedImageVectorऔर इससे जुड़े एपीआई अब नएandroidx.compose.animation:animation-graphicsमॉड्यूल में हैं. (I60873)- जगह बदलने के अनुरोधों को मैनेज करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध मॉडिफ़ायर जोड़ा गया. (I65a97, b/178211874)
BrushPainter API लॉन्च किया गया है. इससे Painter में किसी भी Brush को ड्रॉ किया जा सकता है. यह ColorPainter की तरह ही काम करता है
Brush API को अपडेट किया गया है, ताकि इसमें इंट्रिंसिक साइज़ पैरामीटर हो. इसे BrushPainter (Ia2752, b/189466433) में क्वेरी किया जाता है
DrawScope#drawImage तरीके को अपडेट किया गया है. यह सोर्स और डेस्टिनेशन रेक्ट का इस्तेमाल करता है, ताकि वैकल्पिक FilterQuality पैरामीटर का इस्तेमाल किया जा सके. यह पिक्सल आर्ट के लिए फ़ायदेमंद है. पिक्सल आर्ट को बड़ा करने पर, उसे पिक्सलेट किया जाता है. BitmapPainter और Image कंपोज़ेबल को अपडेट किया गया है, ताकि वे FilterQuality पैरामीटर (Ie4fb0, b/180311607) का इस्तेमाल कर सकें. हालांकि, यह पैरामीटर इस्तेमाल करना ज़रूरी नहीं है
GestureScope.advanceEventTimeतरीका जोड़ा गया, ताकि जेस्चर (Ibf3e2) में इवेंट के समय को ज़्यादा कंट्रोल किया जा सके
गड़बड़ियां ठीक की गईं
- ड्रॉ मॉडिफ़ायर की चेनिंग को बेहतर तरीके से सपोर्ट करने के लिए, पक्का करें कि Modifier.paint लागू करने से drawsContent कॉल होता हो.
पहले, Modifier.paint को मॉडिफ़ायर की चेन में लीफ़ नोड माना जाता था. हालांकि, ऐसा करने से इसे कंपोज़ेबल कंटेनर (जैसे कि बॉक्स) पर कॉन्फ़िगर नहीं किया जा सकता या इसके ऊपर अतिरिक्त डेकोरेशन नहीं जोड़े जा सकते. जैसे,
Modifier.paint().border(). Modifier.paint कॉल में, दिए गए पेंटर के कॉन्टेंट को ड्रॉ करने के बाद drawContent को कॉल किया जाता है. इससे, मॉडिफ़ायर पैटर्न के साथ व्यवहार में बेहतर स्थिरता मिलती है. (Ibb2a7, b/178201337, b/186213275) - डायलॉग अब प्लैटफ़ॉर्म के साइज़िंग के व्यवहार के मुताबिक काम करते हैं. इस व्यवहार को बदलने के लिए,
usePlatformDefaultWidthको false पर सेट करें. (Iffaed, b/192682388) InfiniteAnimationPolicyको :compose:ui पर ले जाया गया (I5eb09, b/160602714)- लेज़ी लिस्ट और रेगुलर स्क्रोलिंग कॉम्पोनेंट के लिए, सिमैंटिक्स ऐक्शन के ज़रिए स्क्रोल करने की सुविधा अब ऐनिमेटेड है (Id9066, b/190742024)
संस्करण 1.0
वर्शन 1.0.5
3 नवंबर, 2021
androidx.compose.ui:ui-*:1.0.5 रिलीज़ हो गया है. वर्शन 1.0.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- derivedStateOf इंस्टेंस के क्रैश ट्रैकिंग की समस्या ठीक की गई. (aosp/1792247)
वर्शन 1.0.4
13 अक्टूबर, 2021
androidx.compose.ui:ui-*:1.0.4 रिलीज़ हो गया है. वर्शन 1.0.4 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.31पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.3
29 सितंबर, 2021
androidx.compose.ui:ui-*:1.0.3 रिलीज़ हो गया है. वर्शन 1.0.3 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.30पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.2
1 सितंबर, 2021
androidx.compose.ui:ui-*:1.0.2 रिलीज़ हो गया है. वर्शन 1.0.2 में ये बदलाव शामिल हैं.
Compose 1.0.2 रिलीज़ के साथ काम करने के लिए अपडेट किया गया. Compose 1.0.2 अब भी Kotlin 1.5.21 के साथ काम करता है.
वर्शन 1.0.1
4 अगस्त, 2021
androidx.compose.ui:ui-*:1.0.1 रिलीज़ हो गया है. वर्शन 1.0.1 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.21पर निर्भर रहने के लिए अपडेट किया गया.
वर्शन 1.0.0
28 जुलाई, 2021
androidx.compose.ui:ui-*:1.0.0 रिलीज़ हो गया है. वर्शन 1.0.0 में ये बदलाव शामिल हैं.
1.0.0 वर्शन की मुख्य सुविधाएं
यह Compose का पहला स्टेबल वर्शन है. ज़्यादा जानकारी के लिए, कृपया Compose Release का आधिकारिक ब्लॉग देखें!
मौजूदा समस्याएं
अगर Android Studio Bumblebee Canary 4 या AGP
7.1.0-alpha04/7.1.0-alpha05का इस्तेमाल किया जा रहा है, तो आपको यह क्रैश मिल सकता है:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"इस समस्या को ठीक करने के लिए, अपनी
build.gradleफ़ाइल में minSdkVersion को कुछ समय के लिए 24 या उससे ज़्यादा पर सेट करें. यह समस्या, Android Studio Bumblebee और AGP7.1के अगले वर्शन में ठीक कर दी जाएगी. (b/194289155)
वर्शन 1.0.0-rc02
14 जुलाई, 2021
androidx.compose.ui:ui-*:1.0.0-rc02 रिलीज़ हो गया है. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डायलॉग अब प्लैटफ़ॉर्म के साइज़िंग के व्यवहार के मुताबिक काम करते हैं. इस व्यवहार को बदलने के लिए,
usePlatformDefaultWidthको false पर सेट करें. (Iffaed, b/192682388)
वर्शन 1.0.0-rc01
1 जुलाई, 2021
androidx.compose.ui:ui-*:1.0.0-rc01 रिलीज़ हो गया है. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- ui-tooling मॉड्यूल को
ui-toolingऔरui-tooling-previewमें बांटें (Iefa28, b/190649014)
एपीआई में हुए बदलाव
- काम न करने वाले एक्सपेरिमेंटल
FocusManager#moveFocusInऔरFocusManager#moveFocusOutको हटाया गया (I227d7, b/170154986, b/186567354, b/168510304) - Canvas में अब accessibility के लिए, contentDescription पैरामीटर का इस्तेमाल किया जा सकता है. (Ib547c)
PopupPropertiesमें मौजूदuseDefaultMaxWidthका नाम बदलकरusePlatformDefaultWidthकर दिया गया है. (I05710)- डायलॉग अब पूरी स्क्रीन की चौड़ाई का इस्तेमाल कर सकते हैं. (I83929, b/190810877)
- एचएसवी और एचएसएल कलर के लिए एक्सपेरिमेंटल सपोर्ट जोड़ा गया. (Id7cf8, b/180731008)
व्यवहार में बदलाव
- Compose
@Previewअब एकLocalActivityResultRegistryOwnerउपलब्ध कराता है. इसकी मदद से, उन कंपोज़ेबल की झलक देखी जा सकती है जोrememberLauncherForActivityResult()जैसे एपीआई का इस्तेमाल करते हैं. ये एपीआई, मालिकाना हक रखने वाले व्यक्ति के मौजूद होने पर निर्भर करते हैं. (Ib13d1, b/185693006) - Compose
@PreviewअबLocalOnBackPressedDispatcherOwnerउपलब्ध कराता है. इसकी मदद से,BackHandlerजैसे एपीआई का इस्तेमाल करने वाले कंपोज़ेबल का पूर्वावलोकन किया जा सकता है. ये एपीआई, मालिकाना हक रखने वाले व्यक्ति के मौजूद होने पर काम करते हैं. (Ia1c05, b/185693006)
गड़बड़ियां ठीक की गईं
InfiniteAnimationPolicyकोandroidx.compose.ui:uiमें ले जाया गया (I5eb09, b/160602714)- मॉड्यूल के स्ट्रक्चर में बदलाव करने के लिए, AnimatedImageVector को कुछ समय के लिए हटा दिया गया था. (I41906, b/160602714)
वर्शन 1.0.0-beta09
16 जून, 2021
androidx.compose.ui:ui-*:1.0.0-beta09 रिलीज़ हो गया है. वर्शन 1.0.0-beta09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- enum Role और LiveRegionMode को प्राइवेट कंस्ट्रक्टर (Id1890) के साथ इनलाइन क्लास में बदलें
- KeyboardCapitalization को इनलाइन क्लास में बदल दिया गया है. (Id5a1c)
- HapticFeedbackType को इनलाइन क्लास में बदलें. (I255ec)
- Modifier.pointerInteropFilter is @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis, और TextDirection अब इनलाइन क्लास हैं. (I212fe)
- TextOverflow को इनलाइन क्लास में बदल दिया गया है. (I433af)
- FontStyle अब एक इनलाइन क्लास है. (I9e48b)
गड़बड़ियां ठीक की गईं
- फ़िलहाल, मुख्य कॉन्स्टेंट @ExperimentalComposeUiApi हैं. कोड का इस्तेमाल करने वाला व्यक्ति, स्टेबलाइज़ेशन से पहले प्राइवेट कॉन्स्टेंट का एलान कर सकता है. (Ia5d48)
- अब Robolectric पर कंपोज़ टेस्ट किए जा सकते हैं. अब तक इन सीमाओं का पता चला है:
- कोई नेटिव बिटमैप नहीं है. इसलिए,
ImageBitmap()से NullPointerException मिलता है. - कोई ड्राइंग नहीं है.इसलिए,
captureToImage()अगले ड्रॉ पास का इंतज़ार करता रहेगा. इसका मतलब है कि यह डेडलॉक हो जाता है. - कोई फ़ॉन्ट लोड नहीं किया गया है. इसलिए, किसी भी टेक्स्ट को गलत तरीके से मेज़र किया जाएगा. सभी वर्णों की ऊंचाई करीब 20 पिक्सल और चौड़ाई 1 पिक्सल होती है.
ComposeTestRule.waitUntil {}इंतज़ार करते समय मुख्य थ्रेड को नहीं चलाता है. इसलिए, यहComposeTestRule.mainClock.advanceTimeUntil {}के जैसा ही है आने वाले समय में, इसकी और भी सीमाएं पता चल सकती हैं. (I284fa)
- कोई नेटिव बिटमैप नहीं है. इसलिए,
जोड़े गए प्रोफ़ाइल के नियम
इस रिलीज़ में, कंपोज़ मॉड्यूल में प्रोफ़ाइल के नियम जोड़े गए हैं (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
प्रोफ़ाइल के नियम क्या हैं?
किसी लाइब्रेरी के लिए प्रोफ़ाइल के नियम,
src/mainया उससे मिलती-जुलती डायरेक्ट्री में मौजूद टेक्स्ट फ़ाइलbaseline-prof.txtमें तय किए जाते हैं. इस फ़ाइल में हर लाइन में एक नियम दिया जाता है. इस मामले में, नियम एक ऐसा पैटर्न होता है जो लाइब्रेरी में मौजूद तरीकों या क्लास से मेल खाता है. इन नियमों का सिंटैक्स, एआरटी प्रोफ़ाइल फ़ॉर्मैट का सुपरसेट है. इसे आसानी से पढ़ा जा सकता है. इसका इस्तेमालadb shell profman --dump-classes-and-methods ...का इस्तेमाल करते समय किया जाता है. ये नियम, तरीकों या क्लास को टारगेट करने के लिए दो में से किसी एक फ़ॉर्म में होते हैं.किसी तरीके के लिए बनाए गए नियम का पैटर्न इस तरह होगा:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>क्लास के लिए बनाए गए नियम का पैटर्न इस तरह होगा:
<CLASS_DESCRIPTOR>यहां
<FLAGS>,H,S, औरPमें से एक या उससे ज़्यादा वर्ण हैं. इनसे यह पता चलता है कि इस तरीके को "हॉट", "स्टार्टअप" या "पोस्ट स्टार्टअप" के तौर पर फ़्लैग किया जाना चाहिए या नहीं.<CLASS_DESCRIPTOR>उस क्लास का डिस्क्रिप्टर है जिससे टारगेट किया गया तरीका जुड़ा है. उदाहरण के लिए, क्लासandroidx.compose.runtime.SlotTableका डिस्क्रिप्टरLandroidx/compose/runtime/SlotTable;होगा.<METHOD_SIGNATURE>, मेथड का सिग्नेचर होता है. इसमें मेथड का नाम, पैरामीटर टाइप, और रिटर्न टाइप शामिल होते हैं. उदाहरण के लिए,LayoutNodeपर मौजूदfun isPlaced(): Booleanतरीके का सिग्नेचरisPlaced()Zहै.इन पैटर्न में वाइल्डकार्ड (
**,*, और?) हो सकते हैं, ताकि एक नियम में कई तरीके या क्लास शामिल हों.
नियमों से क्या होता है?
जिस तरीके में
Hफ़्लैग होता है उससे पता चलता है कि यह "हॉट" तरीका है और इसे पहले से कंपाइल किया जाना चाहिए.जिस तरीके में
Sफ़्लैग होता है उससे पता चलता है कि इसे स्टार्टअप के समय कॉल किया जाता है. इसलिए, इसे पहले से कंपाइल किया जाना चाहिए, ताकि स्टार्टअप के समय कंपाइल करने और समझने में लगने वाले समय को बचाया जा सके.जिस तरीके में
Pफ़्लैग होता है उससे पता चलता है कि यह एक ऐसा तरीका है जिसे स्टार्टअप के बाद कॉल किया जाता है.इस फ़ाइल में मौजूद क्लास से पता चलता है कि इसका इस्तेमाल स्टार्टअप के दौरान किया जाता है. इसलिए, क्लास लोडिंग की लागत से बचने के लिए, इसे हीप में पहले से ही असाइन किया जाना चाहिए.
यह कैसे काम करता है?
- लाइब्रेरी इन नियमों को तय कर सकती हैं. ये नियम, एएआर आर्टफ़ैक्ट में शामिल किए जाएंगे. जब इन आर्टफ़ैक्ट को शामिल करके कोई ऐप्लिकेशन बनाया जाता है, तो इन नियमों को एक साथ मर्ज कर दिया जाता है. इसके बाद, मर्ज किए गए नियमों का इस्तेमाल करके, ऐप्लिकेशन के लिए एक कॉम्पैक्ट बाइनरी एआरटी प्रोफ़ाइल बनाई जाती है. जब ऐप्लिकेशन को डिवाइसों पर इंस्टॉल किया जाता है, तब एआरटी इस प्रोफ़ाइल का इस्तेमाल कर सकता है. इससे ऐप्लिकेशन के किसी खास सबसेट को पहले से कंपाइल किया जा सकता है, ताकि ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सके. खास तौर पर, पहली बार ऐप्लिकेशन चलाने पर. ध्यान दें कि इससे डीबग किए जा सकने वाले ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.
वर्शन 1.0.0-beta08
2 जून, 2021
androidx.compose.ui:ui-*:1.0.0-beta08 रिलीज़ हो गया है. वर्शन 1.0.0-beta08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NestedScrollSourceenum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)FocusManager.clearFocus(forcedClear = true)का नाम बदलकरFocusManager.clearFocus(force = true)(Ia0c41) कर दिया गया है- नई enum वैल्यू जोड़े जाने पर, when स्टेटमेंट के साथ पूरी तरह से काम करने से जुड़ी समस्याओं से बचने के लिए, enum के इस्तेमाल को इनलाइन क्लास में बदला गया है. (I2b5eb)
PopupPropertiesसे@ExperimentalComposeUiApiको हटाएं. (I01fa6)PointerTypeको enum से बदलकर इनलाइन क्लास (If5058) कर दिया गया है- ContentDescription और Text सिमैंटिक्स प्रॉपर्टी अब सिंगल वैल्यू नहीं, बल्कि सूचियां हैं. इससे उन्हें जोड़ने के बजाय, मर्ज किया जा सकता है. इन बदलावों का इस्तेमाल करने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
Modifier.focusModifier()का अब इस्तेमाल नहीं किया जा सकता. इसेModifier.focusTarget()(I6c860) से बदल दिया गया हैModifier.onSizeChanged()औरModifier.onGloballyPositioned()अब इनलाइन फ़ंक्शन नहीं हैं (I727f6, b/186109675)KeyboardTypeenum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)FocusStateenum कोFocusStateइंटरफ़ेस से बदला गया (Iccc1a, b/187055290)- ImeAction enum को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
PlaceholderVerticalAlignको इनलाइन क्लास में बदल दिया जाता है. (If6290)- TextUnitType अब एक इनलाइन क्लास है. (I4cba9)
AnnotatedString.withAnnotationफ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)- TextUnitType के साथ TextUnit कंस्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.
गड़बड़ियां ठीक की गईं
- beta07 में पेश की गई उस गड़बड़ी को ठीक किया गया है जिसमें स्क्रोल करने के बाद, LazyColumn/Row आइटम आंशिक रूप से दिखते थे (I8c9ac, b/188566058)
- अब
detectDragGesures,detectVerticalGestures, औरdetectHorizontalGestures, अपने-आप पोज़िशन बदलने की सुविधा का इस्तेमाल करेंगे. इसलिए, onDrag कॉलबैक (I42fc4, b/185096350, b/187320697) में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है - LayoutModifiers में अलाइनमेंट लाइनें दिखाने की सुविधा से जुड़ी समस्या ठीक कर दी गई है. इस बग को ठीक कर दिया गया है. इस बग की वजह से, बच्चों के अलाइनमेंट की लाइनें बदलने पर, माता-पिता की मेज़रमेंट नहीं बदलती थी. (I4401f, b/174315652)
Modifier.onGloballyPositioned()को बदलकर, इस मॉडिफ़ायर के कोऑर्डिनेट को मॉडिफ़ायर चेन में रिपोर्ट करने के लिए इस्तेमाल किया गया. इसमें सभी मॉडिफ़ायर लागू करने के बाद, लेआउट के कोऑर्डिनेट रिपोर्ट नहीं किए जाते. इसका मतलब है कि अब मॉडिफ़ायर के क्रम से यह तय होगा कि कौनसे कोऑर्डिनेट रिपोर्ट किए जाएंगे. (Ieb67d, b/177926591)
वर्शन 1.0.0-beta07
18 मई, 2021
androidx.compose.ui:ui-*:1.0.0-beta07 रिलीज़ हो गया है. वर्शन 1.0.0-beta07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ViewRootForInspectorइंटरफ़ेस जोड़ा गया, ताकि इसका इस्तेमाल इंस्पेक्टर में किया जा सके (Ib70df)SubcomposeLayoutStateमें अब रीयूज़ किए जा सकने वाले स्लॉट की संख्या सेट करने की सुविधा उपलब्ध है. लेआउट, इस संख्या तक स्लॉट चालू रखेगा. ऐसा इसलिए किया जाता है, ताकि अगली बार जब हमें नए स्लॉट की ज़रूरत हो, तो उनका फिर से इस्तेमाल किया जा सके. इसके लिए, लेआउट उन्हें बंद नहीं करेगा (Ieb981)- KeyEventType enum को इनलाइन क्लास से बदल दिया गया है. (Id670a, b/187055290)
FocusDirectionenum को इनलाइन क्लास से बदल दिया गया है. (Ib6d03, b/187055290, b/184086802)- इससे SubcomposeLayout की स्थिति को ऊपर ले जाने की सुविधा मिलती है. इससे कॉन्टेंट को ऐसे slotId में पहले से कंपोज़ किया जा सकता है जिसकी ज़रूरत होती है. इससे अगली बार मेज़रमेंट तेज़ी से हो पाएगा, क्योंकि अगली बार दिए गए slotId के साथ सबकंपोज़ करने की कोशिश करने पर, कंपोज़िशन की ज़रूरत नहीं होगी. (I42580, b/184940225)
- क्लिप चुनने के लिए हैंडल जोड़ा गया (Iff80d, b/183408447)
- LayoutInspector के साथ काम न करने वाले एपीआई हटा दिए गए हैं. (I2ac78)
गड़बड़ियां ठीक की गईं
- LazyColumn/Row अब पहले से दिख रहे दो आइटम को ऐक्टिव रखेगा (डिस्पोज़ नहीं करेगा). भले ही, उन्हें स्क्रोल करके हटा दिया गया हो. इससे कॉम्पोनेंट, चालू सबकंपोज़िशन का फिर से इस्तेमाल कर पाता है. ऐसा तब होता है, जब हमें कोई नया आइटम कंपोज़ करना होता है. इससे स्क्रोलिंग की परफ़ॉर्मेंस बेहतर होती है. (Ie5555)
TextGeomerticTransformऔरTextDecorationकोAnnotatedStringपर दिए गए तरीके से लागू किया जाएगा. (I61900, b/184760917)
वर्शन 1.0.0-beta06
5 मई, 2021
androidx.compose.ui:ui-*:1.0.0-beta06 रिलीज़ हो गया है. वर्शन 1.0.0-beta06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नेविगेशन के जेस्चर (I1145e) से जुड़े विवाद को हल करना
@ComposeCompilerApiअब@RequiresOptInनहीं है (Iab690)- CollectionInfo और CollectionItemInfo के सुलभता एपीआई जोड़े गए हैं. इनकी मदद से, कलेक्शन और उसके आइटम को सुलभता सेवाओं के लिए मार्क किया जा सकता है (Id54ef, b/180479017)
- इंडेक्स किए गए आइटम की सूची को किसी खास इंडेक्स वाले आइटम पर स्क्रोल करने के लिए,
SemanticsActions.ScrollToIndexजोड़ा गया है. साथ ही, कुंजी वाले आइटम की सूची में किसी आइटम का इंडेक्स पाने के लिए,SemanticsProperties.IndexForKeyजोड़ा गया है. ये दोनों कार्रवाइयां LazyList लागू करती है.SemanticsNodeInteraction.performScrollToIndexजोड़ा गया है. यह सूची को दिए गए इंडेक्स पर स्क्रोल करता है. साथ ही,SemanticsNodeInteraction.performScrollToKeyजोड़ा गया है. यह सूची को दी गई कुंजी वाले आइटम पर स्क्रोल करता है. (I4fe63, b/178483889, b/161584524)
- GraphicLayerInfo में ownerViewId जोड़ा गया (I19f62)
- फ़ॉन्ट लोड करने के लिए, ऐसेट, फ़ाइल, और FileDescriptor से Font() ओवरलोड जोड़े गए (I5d382)
- सुलभता एपीआई
errorजोड़ा गया है. इससे ऐसे नोड को मार्क किया जा सकता है जिनमें अमान्य इनपुट शामिल है (I12997, b/180584804, b/182142737) - फ़ॉन्ट लोड करने के लिए, ऐसेट, फ़ाइल, और FileDescriptor से
Font()ओवरलोड जोड़े गए (I43007) - AnnotatedString को
TextFieldValue.Saverमें सेव करने की सुविधा जोड़ी गई.AnnotatedString.BuilderमेंaddTtsAnnotationऔर withAnnotation यूटिलिटी फ़ंक्शन जोड़े गए (I8cbdc, b/178446304) - TextUnit कंस्ट्रक्टर फ़ंक्शन जोड़ा गया
TextUnit(value: Float, type: TextUnitType)(I7ecce, b/178446304)
वर्शन 1.0.0-beta05
21 अप्रैल, 2021
androidx.compose.ui:ui-*:1.0.0-beta05 रिलीज़ हो गया है. वर्शन 1.0.0-beta05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध
FocusManager.moveFocus(In)औरFocusManager.moveFocus(Out)को जोड़ा गया (Ic5534, b/183746743) - एक्सपेरिमेंट के तौर पर
performTextInputSelectionAPI जोड़ा गया (I2dcbb, b/178510628) InputEventCallbackइंटरफ़ेस का अब इस्तेमाल नहीं किया जा सकता. किसी भी सार्वजनिक एपीआई में इंटरफ़ेस का इस्तेमाल नहीं किया जा सका. साथ ही, कोड में भी इसका इस्तेमाल नहीं किया गया. (I34a02, b/184003208)TextLayoutResult/createTextLayoutResultफ़ंक्शन अब काम नहीं करता. यह एक ऐसा सार्वजनिक फ़ंक्शन है जिसका इस्तेमाल नहीं किया गया है. इसे टेस्टिंग के लिए जोड़ा गया था. यह फ़ंक्शन, Compose text API के लिए किसी काम का नहीं है. यह फ़ंक्शन अब काम नहीं करता. इसे बाद में हटा दिया जाएगा. (I80413)
गड़बड़ियां ठीक की गईं
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRight, औरaccessibilityActionScrollDownऐक्सेसिबिलिटी स्क्रोल करने की कार्रवाइयों से जुड़ी समस्या ठीक की गई. अब स्क्रोल करने पर, स्क्रोल किए जा सकने वाले कॉन्टेंट के आखिर तक जाने के बजाय, यह दी गई दिशा में एक स्क्रीन तक स्क्रोल होगा. (Ieccb0)- ui-test-manifest और ui-tooling-data की AndroidManifest फ़ाइलें अब Android 12 के साथ काम करती हैं (I6f9de, b/184718994)
वर्शन 1.0.0-beta04
7 अप्रैल, 2021
androidx.compose.ui:ui-*:1.0.0-beta04 रिलीज़ हो गया है. वर्शन 1.0.0-beta04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SoftwareKeyboardControllerपर मौजूदhideSoftwareKeyboardऔरshowSoftwareKeyboardका नाम बदलकर,hide()औरshow()करें.- LocalSoftwareKeyboardController के लिए पूरा CompositionLocal इंटरफ़ेस उपलब्ध कराएं, ताकि इसे सेट किया जा सके. यह खास तौर पर टेस्ट में काम आता है (I579a6)
- LiveRegion accessibility API जोड़ा गया है. अगर नोड को लाइव रीजन के तौर पर मार्क किया गया है, तो सुलभता सेवाएं उपयोगकर्ता को इसके बदलावों के बारे में अपने-आप सूचना देंगी (Idcf6f, b/172590946)
- TextOverflow.Visible को लॉन्च किया गया है. (Ic8f89)
गड़बड़ियां ठीक की गईं
- तेज़ी से फ़्लिंग करने के बाद, किनारों पर मौजूद
LazyColumn/LazyRowआइटम गलत तरीके से पोज़िशन किए जाते थे. इस समस्या को ठीक किया गया है (Ie4d13, b/183877420) AndroidViewBindingअबFragmentContainerViewके ज़रिए बढ़ाए गए फ़्रैगमेंट को ठीक से हटा देता है. ऐसा तब होता है, जबAndroidViewBindingको कंपोज़ करने वाले हाइरार्की से हटा दिया जाता है. (Ib0248, b/179915946)AndroidViewBindingअबFragmentContainerViewके ज़रिए इन्फ़्लेट किए गए फ़्रैगमेंट को सही तरीके से नेस्ट करता है. ऐसा तब होता है, जब आपकाComposeViewकिसीFragmentके अंदर होता है. इससे उन फ़्रैगमेंट की स्थिति को सेव करने और वापस लाने से जुड़ी समस्याएं ठीक हो जाती हैं. (I70eb0, b/179915946)- Compose ViewBinding अब Fragment
1.3.2पर निर्भर करता है. साथ ही, कॉन्फ़िगरेशन में बदलाव होने के बाद,FragmentContainerViewके ज़रिए बढ़ाए गए फ़्रैगमेंट को लगातार दिखाता है. (I0743d, b/179915946)
वर्शन 1.0.0-beta03
24 मार्च, 2021
androidx.compose.ui:ui-*:1.0.0-beta03 रिलीज़ हो गया है. वर्शन 1.0.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- ComposeView की ViewTree डिपेंडेंसी के लिए, बाद में जांच करने की सुविधा (I8dbbf, b/182466548)
GestureScopeमें,swipeUp/swipeDown/swipeLeft/swipeRightफ़ंक्शन में वैकल्पिकstartX/endXऔरstartY/endYपैरामीटर जोड़े गए हैं. (I49e2d, b/182063305)
वर्शन 1.0.0-beta02
10 मार्च, 2021
androidx.compose.ui:ui-*:1.0.0-beta02 रिलीज़ हो गया है. वर्शन 1.0.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया
LocalSoftwareKeyboardControllerकंपोज़िशन लोकल एपीआई जोड़ा गया. (I5951e, b/168778053) - TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया
LocalSoftwareKeyboardControllerकंपोज़िशन लोकल एपीआई जोड़ा गया. (I84472, b/168778053) - इन
SemanticsMatcherको हटा दिया गया है:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- इन
SemanticsMatchersको @ExperimentalTestApi के तौर पर मार्क किया गया है:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- ये
SemanticsMatcherजोड़े गए:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(I2f502)
गड़बड़ियां ठीक की गईं
- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई (I6aa29, b/174531520) के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें
androidx.compose.ui:uiअब AppCompat या Fragment पर निर्भर नहीं करता. अगर आपके ऐप्लिकेशन में ComposeView का इस्तेमाल किया जा रहा है और Fragment और/या AppCompat का इस्तेमाल किया जा रहा है, तो पक्का करें कि AppCompat 1.3+ / Fragment 1.3+ का इस्तेमाल किया जा रहा हो. ComposeView के लिए लाइफ़साइकल और सेव किए गए स्टेट ओनर को सही तरीके से सेट करने के लिए, इन वर्शन की ज़रूरत होती है. (I1d6fa, b/161814404)- navigation-compose के डेस्टिनेशन में इस्तेमाल किए जाने पर, टूटे हुए
rememberSaveable { mutableStateOf(0) }को ठीक किया गया. (I1312b, b/180042685, b/180701630) - TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया
LocalSoftwareKeyboardControllerकंपोज़िशन लोकल एपीआई जोड़ा गया. (I658b6, b/168778053) ComposeRootRegistryकेtearDownRegistry()में NoSuchElementException की समस्या ठीक की गई (Iddce1)
वर्शन 1.0.0-beta01
24 फ़रवरी, 2021
androidx.compose.ui:ui-*:1.0.0-beta01 रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये बदलाव शामिल हैं.
यह Compose 1.0.0 Beta का पहला वर्शन है.
एपीआई में हुए बदलाव
- onStart कॉलबैक को
detectDragGestures(I67269, b/179995594) में जोड़ा गया है - इंट्रिंसिक साइज़िंग के लिए मॉडिफ़ायर, अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I15744)
- MeasureBlocks का नाम बदलकर MeasurePolicy कर दिया गया. यह एक मज़ेदार इंटरफ़ेस बन गया. MeasurePolicy का इस्तेमाल करने के लिए, Layout API को अपडेट किया गया है / आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
InteractionStateको[Mutable]InteractionSourceसे बदल दिया गया है- इंटरफ़ेस, इंटरैक्शन इवेंट को ट्रिगर करने / इकट्ठा करने के लिए ज़िम्मेदार होते हैं.
ButtonऔरModifier.clickable()जैसे कॉम्पोनेंट कोinteractionState = remember { InteractionState() }पास करने के बजाय,interactionSource = remember { MutableInteractionSource() }का इस्तेमाल करें.Interaction.Pressed in interactionStateके बजाय, आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए. जैसे, InteractionSource.collectIsPressedAsState().- जटिल इस्तेमाल के उदाहरणों के लिए, InteractionSource.interactions का इस्तेमाल करके इंटरैक्शन की स्ट्रीम को देखा जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource का दस्तावेज़ और सैंपल देखें.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- CompositionLocals में AccessibilityMananger इंटरफ़ेस और LocalAccessibilityMananger जोड़ें (I53520)
- LayoutCoordinates के बंद किए गए तरीकों को हटाया गया. positionInParent और boundsInParent के लिए प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
- टाइपएलियास को उनके मूल टाइप से बदल दिया गया है:
ColorStopअबPair<Float, Color>हो गया हैSpanStyleRangeअब `AnnotatedString.Rangeहै ParagraphStyleRangeअबAnnotatedString.Range<ParagraphStyle>हो गया हैStringAnnotationअबAnnotatedString.Range<String>हो गया है- (I8dd1a)
- CoreTextField जैसे लो लेवल टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
- Placeable अब measuredSize दिखाता है. इससे पता चलता है कि चाइल्ड लेआउट का साइज़ कितना है. ऐसा हो सकता है कि इस साइज़ में मेज़रमेंट की शर्तों का पालन न किया गया हो. (Ib2729, b/172560206, b/172338608)
- selectionGroup मॉडिफ़ायर जोड़ें. इससे, सुलभता के लिए टैब या रेडियो बटन के कलेक्शन को मार्क किया जा सकता है (Ie5c29)
compositionLocalOfऔरstaticCompositionLocalOfके लिएdefaultFactoryकी जानकारी देना अब ज़रूरी है. पहले यह जानकारी देना ज़रूरी नहीं था.इस बदलाव से, उन टाइप के लिए संभावित टाइप गड़बड़ी को हटाया जाता है जिनमें डिफ़ॉल्ट फ़ैक्ट्री नहीं दी गई थी. इससे पहले, यह नॉन-नलेबल टाइप के लिए शून्य रेफ़रंस देता था.
शून्य वैल्यू वाले टाइप के लिए,
{ null }को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल करें.हमारा सुझाव है कि नॉन-नलेबल टाइप के साथ लोकल का इस्तेमाल न करें. हालांकि, ऐसा तब किया जा सकता है, जब कोई डिफ़ॉल्ट वैल्यू दी जा सकती हो. अगर कोई काम का डिफ़ॉल्ट मान मौजूद नहीं है, तो
defaultFactoryलैम्डा को एक अपवाद दिखाना चाहिए. हालांकि, अपवाद का मतलब है कि स्थानीय स्तर पर मौजूद उपभोक्ताओं को इस बात पर निर्भर रहना होगा कि यह सुविधा उपलब्ध कराई गई है या नहीं. हालांकि, टाइप सिस्टम इसे लागू नहीं करता है. (Ifbd2a)यूआई मॉड्यूल से बंद किए गए तरीकों को हटा दिया गया है (I646f6)
साइज़ मॉडिफ़ायर के नाम बदल दिए गए हैं. Modifier.width/height/size का नाम बदलकर requiredWidth/requiredHeight/requiredSize कर दिया गया है. Modifier.preferredWidth/preferredHeight/preferredSize का नाम बदलकर width/height/size कर दिया गया है. (I5b414)
Modifier.tapGestureFilterको हटा दिया गया है. इसके बजाय,Modifier.pointerInput { detectTapGestures(...) }का इस्तेमाल करें. (I266ed, b/175294473)पॉइंटर इनपुट सिस्टम से, आंशिक तौर पर इस्तेमाल की गई मेमोरी को हटा दिया गया है. कुछ हिस्से के इस्तेमाल को कोऑर्डिनेट करने का सुझाया गया तरीका, Modifier.nestedScroll है. (Ie9c9b)
ओरिएंटेशन को फ़ाउंडेशन पैकेज में शामिल कर दिया गया है. VelocirtTracker को ui.gesture से ui.input.pointer में ले जाया गया. (Iff4a8, b/175294473)
imageResource और vectorResource अब ImageBitmap और ImageVector कंपैनियन पर एक्सटेंशन फ़ंक्शन हैं.
load{Image,Vector,Font}Resourceफ़ंक्शन मिटा दिए गए हैं. (I89130)AnimationClockObservable और इसकी सबक्लास हटा दी गई हैं. AnimatedFloat को हटा दिया गया है. (Icde52, b/177457083)
Providers का नाम बदलकर CompositionLocalProvider कर दिया गया है
- Composition कंस्ट्रक्टर अब key पैरामीटर स्वीकार नहीं करता है. इसे बंद कर दिया गया है.
- currentCompositeKeyHash को कंपोज़ेबल टॉप लेवल फ़ंक्शन के बजाय, कंपोज़ेबल टॉप लेवल प्रॉपर्टी में बदल दिया गया है.
- CompositionData और CompositionGroup को androidx.compose.runtime.tooling नेमस्पेस में ले जाया गया है
- ComposableLambda को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- ComposableLambdaN को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- snapshotFlow फ़ंक्शन को androidx.compose.runtime नेमस्पेस में ले जाया गया है
- SnapshotMutationPolicy के मर्ज करने के तरीके को अब एक्सपेरिमेंट के तौर पर इस्तेमाल नहीं किया जा सकता
- @TestOnly टॉप लेवल के clearRoots फ़ंक्शन को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
- keySourceInfoOf और resetSourceInfo फ़ंक्शन हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
- Composer.collectKeySourceInformation को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
- isJoinedKey, joinedKeyLeft, और joinedKeyRight तरीकों को हटा दिया गया है. अब इनकी ज़रूरत नहीं है.
- कई टॉप लेवल एपीआई को अलग-अलग फ़ाइलों में ले जाया गया है और उन्हें फिर से व्यवस्थित किया गया है. Kotlin के फ़ाइल क्लास सिमैंटिक्स की वजह से, इससे बाइनरी कंपैटिबिलिटी पर असर पड़ेगा, लेकिन सोर्स कंपैटिबिलिटी पर नहीं. इसलिए, ज़्यादातर उपयोगकर्ताओं को इससे कोई समस्या नहीं होनी चाहिए.
- (I99b7d, b/177245490)
ComponentActivity.setContent()को compose:ui से हटा दिया गया है.androidx.activity:activity-compose:1.3.0-alpha01से मिले कोड का इस्तेमाल करें.viewModel()औरLocalViewModelStoreOwnerको compose:ui से हटा दिया गया है.androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b) से मिले जवाबों का इस्तेमाल करोModifier.scrollable में बदलाव किया गया है. अब यह ScrollableController क्लास के बजाय, स्क्रोल किए जा सकने वाले इंटरफ़ेस का इस्तेमाल करता है (I4f5a5, b/174485541, b/175294473)
PointerInputModifier से CustomEvens के लिए सहायता देने की सुविधा हटा दी गई है (I02707, b/175294473)
SnapshotStateObserver अब एक्सपेरिमेंटल नहीं है (Id2e6a)
पहले बंद किए जा चुके कुछ एपीआई मिटाए गए (Ice5da, b/178633932)
longPressGestureFilter और doubleClickGestureFilter को हटा दिया गया है. Modifier.pointerInput का इस्तेमाल करें. इसके साथ, सहायक फ़ंक्शन इस्तेमाल करें. जैसे, detectTapGestures (I2fedf, b/175294473)
String.format API हटाया गया toString के अलग-अलग तरीकों में इस्तेमाल किए गए कोड को फिर से लिखा गया है, ताकि String.format का इस्तेमाल न किया जा सके. (Id1290)
dp दावे हटाए गए (I798d2)
androidx.compose.runtime:runtime-dispatch (I55feb) को हटाया गया
टेक्स्ट से जुड़ी कार्रवाइयां अब फ़ोकस की जांच अपने-आप करती हैं (I13777, b/179648629)
हटाया गया
runBlockingWithManualClock(I15cdc, b/179664814)Modifier.verticalScroll()/horizontalScroll() में स्क्रोल की पोज़िशन को अब पूर्णांकों से दिखाया जाता है (I81298)
FlingConfig का नाम बदलकर FlingBehavior कर दिया गया है. अब इसमें पहले से तय किए गए Decays के बजाय, सस्पेंड ऐनिमेशन को पसंद के मुताबिक बनाने की सुविधा मिलती है. (I02b86, b/175294473)
एक हेल्पर फ़ंक्शन जोड़ा गया है. यह सभी ImeAction कॉलबैक (I63447, b/179226323) के लिए एक ही कार्रवाई सेट करने में मदद करता है
सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक हटा दिया गया है. इसकी जगह जल्द ही एक नया एपीआई ले लेगा. (Iae869, b/168778053)
FontSpan और FontWeigthStyleSpan का इस्तेमाल अब नहीं किया जाता है. इन्हें हटा दिया गया है. (Ie5b56, b/177423444)
Material API में ये बदलाव किए गए हैं:
- TopAppBar/BottomAppBar में contentPadding पैरामीटर जोड़ा गया है, ताकि डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाया जा सके.
- BackdropScaffold में पैरामीटर का क्रम बदला गया है, ताकि एपीआई के दिशा-निर्देशों का पालन किया जा सके. दिशा-निर्देशों के मुताबिक, ज़रूरी पैरामीटर, वैकल्पिक पैरामीटर से पहले होने चाहिए.
- BottomNavigationItem में
iconपैरामीटर कोselectedऔरonClickके बाद ले जाया गया. - BottomNavigationItem में मौजूद
alwaysShowLabelsपैरामीटर का नाम बदलकरalwaysShowLabelकर दिया गया है. - कुछ कॉम्पोनेंट में
bodyContentपैरामीटर का नाम बदलकर सिर्फ़contentकर दिया गया है. ButtonDefaults.buttonColors()में पैरामीटर का क्रम बदला गया है. कृपया ध्यान दें कि पैरामीटर के टाइप में कोई बदलाव नहीं हुआ है. इसलिए, आपके कोड में कोई गड़बड़ी नहीं होगी. कृपया पक्का करें कि आपने नाम वाले पैरामीटर का इस्तेमाल किया हो या क्रम को मैन्युअल तरीके से अपडेट किया हो. ऐसा न करने पर, आपका कोड पहले की तरह काम नहीं करेगा.secondaryVariantपैरामीटर कोdarkColors()में जोड़ा गया. आम तौर पर, यह रंग गहरे रंग वाली थीम मेंsecondaryके जैसा ही होता है. हालांकि, इसे एक जैसा रखने और अपनी पसंद के मुताबिक बनाने के लिए जोड़ा जाता है.- ElevationDefaults और animateElevation() को सार्वजनिक एपीआई से हटा दिया गया है, क्योंकि इनका इस्तेमाल आम तौर पर नहीं किया जाता था / ये काम के नहीं थे.
Sliderमें मौजूदonValueChangeEndका नाम बदलकरonValueChangeFinishedकर दिया गया है. साथ ही, इसे नल वैल्यू स्वीकार करने वाला बना दिया गया है.- एक जैसा नाम रखने के लिए,
Snackbarमें मौजूदtextपैरामीटर का नाम बदलकरcontentकर दिया गया है. DropdownMenuItemमेंcontentPaddingपैरामीटर जोड़ा गया, ताकि डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाया जा सके. साथ ही,contentकोRowScopeका एक्सटेंशन बनाया गया.ModalDrawerLayoutका नाम बदलकरModalDrawerकर दिया गया.BottomDrawerLayoutका नाम बदलकरBottomDrawerकर दिया गया.- (I1cc66)
गड़बड़ियां ठीक की गईं
- Compose में AnimatedVectorDrawable संसाधनों का इस्तेमाल करने के लिए, एपीआई जोड़ा गया. AnimatedImageVector के तौर पर
<animated-vector>XML को लोड करने के लिए, animatedVectorResource का इस्तेमाल करें. साथ ही, painterFor (I8ea91) की मदद से इसे ऐनिमेट करें - TextField पर, SoftwareKeyboardController के पिछले इंटरफ़ेस को बदलने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I658b6, b/168778053)
वर्शन 1.0.0-alpha12
10 फ़रवरी, 2021
androidx.compose.ui:ui-*:1.0.0-alpha12 रिलीज़ हो गया है. वर्शन 1.0.0-alpha12 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- UiApplier से ViewGroups के लिए सहायता हटा दी गई है. emitView कंपोज़ेबल को हटा दिया गया है. (Ifb214)
- Modifier.pointerInput को अब याद रखने वाली कुंजियों की ज़रूरत होती है. इससे यह पता चलता है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोराउटीन को कब रीस्टार्ट करना चाहिए. (I849cd)
- CompositionReference का नाम बदलकर CompositionContext कर दिया गया है (I53fcb)
- Bounds का नाम बदलकर DpRect (I4b32a) कर दिया गया है
- टेस्टिंग से जुड़ा अपडेट: hasText() फ़ंक्शन, टेक्स्ट फ़ील्ड (Iab803) में इनपुट और लेबल/हिंट/प्लेसहोल्डर, दोनों तरह के टेक्स्ट की जांच करेगा
- viewModel() कंपोज़ेबल और LocalViewModelStoreOwner को androidx.lifecycle.viewmodel.compose में ले जाया गया है. अब आपको इसका इस्तेमाल करने के लिए, androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 नाम की एक अलग डिपेंडेंसी जोड़नी होगी. (I7a374)
- AccessibilityAction में नल वैल्यू की अनुमति दें. साथ ही, AccessibilityAction और CustomAccessibilityAction में कार्रवाई के लेबल को CharSequence से String में बदलें (I0dc82)
- ImageBitmap और ImageVector के साथ नाम रखने के नियमों को बेहतर तरीके से मैच करने के लिए, ImagePainter का नाम बदलकर BitmapPainter कर दिया गया है, ताकि यह VectorPainter के जैसा हो. (Iba381, b/174565889)
- सबस्ट्रिंग के लिए बेहतर टेस्ट एपीआई. अब सबस्ट्रिंग को आर्ग्युमेंट के तौर पर इस्तेमाल किया जा सकता है (Icbe78)
- एक
Modifier.focusOrder()जोड़ा गया है, जो कस्टम फ़ोकस ऑर्डर के लिए लैंबडा तय किए बिना, FocusRequester को स्वीकार करता है. यह तब काम आता है, जब हमें सिर्फ़ रेफ़रंस तय करना होता है, लेकिन कंपोज़ेबल के लिए फ़ोकस का कस्टम ऑर्डर तय नहीं करना होता (I4f52a, b/179180978) - ComponentActivity.setContent को androidx.activity:activity-compose मॉड्यूल में androidx.activity.compose.setContent पर ले जाया गया है. (Icf416)
- डिस्ट्रक्चरिंग और copy() तरीकों को उन क्लास से हटा दिया गया है जहां इनका इस्तेमाल कभी-कभार ही किया जाता था. (I26702, b/178659281)
- पॉप-अप को प्लैटफ़ॉर्म के हिसाब से बनाया गया. AndroidPopupProperties का नाम बदलकर PopupProperties कर दिया गया है. साथ ही,
isFocusableकोPopupProperties(Ieeea5) मेंfocusableपैरामीटर में ले जाया गया है - डायलॉग को प्लैटफ़ॉर्म के हिसाब से बनाया गया. AndroidDialogProperties का नाम बदलकर DialogProperties कर दिया गया है. (I4ef69, b/179138130)
- LayoutNode को इंटरनल बनाया गया (I8a7b1, b/175103944)
- Constraints.enforce को Constraints.constrain से बदल दिया गया है. (I8b8ea)
- loadFontResource का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, fontResource का इस्तेमाल करें. imageResource, loadImageResource, vectorResource, और loadVectorResource अब काम नहीं करते. इसके बजाय, painterResource का इस्तेमाल करें. (I6b809)
- परफ़ॉर्मेंस को बेहतर बनाने के लिए, ScrollAxisRange सिमैंटिक्स अब सीधे तौर पर फ़्लोट वैल्यू के बजाय, फ़्लोट वैल्यू दिखाने वाले लैम्डा लेता है. (If4a35, b/178657186)
- सुलभता के लिए, टेक्स्ट फ़ील्ड के बदलाव किए जा सकने वाले इनपुट टेक्स्ट को मार्क करने के लिए, EditableText सिमैंटिक जोड़े गए. साथ ही, सिमैंटिक की जांच करने के लिए, इससे जुड़ी टेस्ट के तरीके जोड़े गए (I8e07a)
- OwnerLayer/OwnerScope/OwnerSnapshotObserver को इंटरनल बनाया गया (I4ffaf, b/175103944)
- toIntPx() का नाम बदलकर roundToPx() कर दिया गया है. (I9b7e4, b/173502290)
- IntBounds का नाम बदलकर IntRect कर दिया गया है. साथ ही, एपीआई को बेहतर बनाया गया है. (I1f6ff)
- स्नैपशॉट एपीआई को अपडेट किया गया है, ताकि यह एपीआई के दिशा-निर्देशों के मुताबिक काम करे. साथ ही, सार्वजनिक एपीआई से इंटरनल इंप्लीमेंटेशन क्लास को छिपाया जा सके. (Id9e32)
- सेमैंटिक कार्रवाइयों को बड़ा और छोटा करने की सुविधा जोड़ी गई. ModalBottomSheetState में expand और halfExpand को जोड़ा गया (Ib5064)
- Modifier.dragGestureFilter अब काम नहीं करता है. इसके बजाय,
Modifier.pointerInput { detectDragGestures (...)}का इस्तेमाल करें. इसके अलावा, एक ऐक्सिस पर ड्रैग करने के लिए, Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473) - Ambient का नाम बदलकर CompositionLocal कर दिया गया है. इसलिए, Ambients का नाम भी बदल दिया गया है. पहले, ऐंबिएंट का नाम AmbientFoo होता था. अब CompositionLocals का नाम LocalFoo है. (I2d55d)
- अब इस्तेमाल में नहीं रहे BaseTextField को हटा दिया गया है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I71368)
- चुने गए हिस्से को फ़ाउंडेशन में ले जाया गया. (I7892b)
- जिस तरह हमने पहले
state { 0 }कंपोज़ेबल को हटाया था और अबremember { mutableStateOf(0) }जैसे कंपोज़ेबल के इस्तेमाल को बढ़ावा दे रहे हैं, उसी तरह हमsavedInstanceState { 0 }कंपोज़ेबल को हटाने जा रहे हैं. आपकोrememberSaveable { mutableStateOf(0) }का इस्तेमाल करना चाहिए. अगर MutableState में इस्तेमाल किया गया टाइप, बंडल में सेव किया जा सकता है, तो यह अपने-आप सेव और रीस्टोर हो जाएगा. अगर आपने पहले कस्टम सेवर ऑब्जेक्ट पास किया था, तो अब आपको rememberSaveable के नए ओवरलोड का इस्तेमाल करना होगा. इसमेंstateSaverपैरामीटर होता है. इसका इस्तेमाल कुछ इस तरह किया जाएगा:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004) - ऐक्सेसिबिलिटी के लिए पासवर्ड के सिमैंटिक जोड़े गए (I231ce)
- सुलभता के लिए, ProgressBarRangeInfo.Indeterminate जोड़ा गया है, ताकि अनिश्चित प्रोग्रेस बार को मार्क किया जा सके (I6fe05)
emptyContent()और(@Composable () -> Unit).orEmpty()यूटिलिटी का इस्तेमाल अब नहीं किया जा सकता, क्योंकि अब इनसे परफ़ॉर्मेंस पर कोई सकारात्मक असर नहीं पड़ता या इनकी कोई वैल्यू नहीं है (I0484d)snapshotFlowऔरwithMutableSnapshotअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं (I6a45f)- अब रीकंपोज़र बंद किए जा सकते हैं. बंद किए गए कंपोज़र, कंपोज़िशन चाइल्ड कोरूटीन के पूरा होने तक फिर से कंपोज़ करना जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)
- UiSavedStateRegistry का नाम बदलकर SaveableStateRegistry कर दिया गया है. साथ ही, AmbientUiSavedStateRegistry का नाम बदलकर AmbientSaveableStateRegistry कर दिया गया है. इन दोनों को androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I30224)
- आर्टफ़ैक्ट androidx:compose:runtime:runtime-saved-instance-state का नाम बदलकर androidx:compose:runtime:runtime-saveable कर दिया गया है (I6dcac)
- ui पैकेज में मौजूद, लंबे समय से काम न करने वाले कई एपीआई मिटा दिए गए हैं. (I2f2dc)
- compose:runtime-dispatch आर्टफ़ैक्ट अब काम नहीं करता. MonotonicFrameClock को अब compose:runtime में देखा जा सकता है. साथ ही, AndroidUiDispatcher को compose:ui में देखा जा सकता है. (Ib5c36)
- आउटलाइन.* क्लास अब डेटा क्लास नहीं हैं (I4879e, b/178001427)
view.captureToImage()को बिना किसी बदलाव के हटा दिया गया है. (I7fcd2)- ColorMatrix API पेश किया गया है. इसका इस्तेमाल, सोर्स कॉन्टेंट की आरजीबी वैल्यू में बदलाव करने के लिए किया जाता है ColorFilter API को इंटरफ़ेस के तौर पर फिर से बनाया गया है, ताकि यह PathEffect के साथ काम कर सके. (Ica1e8)
- Shape के createOutline में layoutDirection पैरामीटर जोड़ें. इससे लेआउट की दिशा के हिसाब से शेप बनाए जा सकते हैं. (I57c20, b/152756983)
- onImeActionPerformed को बंद कर दिया गया है. इसके बजाय, KeyboardActions का इस्तेमाल करें (If0bbd, b/179071523)
InfiniteAnimationPolicyकोरुटीन कॉन्टेक्स्ट एलिमेंट जोड़ा गया है. इसका इस्तेमाल, हमेशा चलने वाले ऐनिमेशन में किया जाएगा. डिफ़ॉल्ट रूप से कोई नीति इंस्टॉल नहीं की जाती. हालांकि,ComposeTestRuleके साथ टेस्ट चलाने पर ऐसा होता है. (I50ec4, b/151940543)- canDrag को Modifier.scrollable से हटा दिया गया है. (Id66e7, b/175294473)
- LayoutCoordinates.parentCoordinates का नाम बदलकर LayoutCoordinates.parentLayoutCoordinates कर दिया गया है, ताकि नई parentCoordinates प्रॉपर्टी का इस्तेमाल किया जा सके. parentCoordinates प्रॉपर्टी अब पैरंट मॉडिफ़ायर के LayoutCoordintes दिखाती है. इससे onSizeChanged() और onGloballyPositioned() के इस्तेमाल के उदाहरणों को ज़्यादा बेहतर बनाया जा सकेगा (Idfbfd, b/177926591)
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, और pressIndicaitonGestureFilter अब काम नहीं करते. इसके बजाय, Modifier.clickable या Modifier.pointerInput के साथ detectTapGestures फ़ंक्शन का इस्तेमाल करें. (I6baf9, b/175294473)
- SaveableStateRegistry से unregisterProvider को हटा दिया गया है. इसके बजाय, registerProvider() अब SaveableStateRegistry.Entry ऑब्जेक्ट दिखाता है. इसका इस्तेमाल, रजिस्टर किए गए डेटा को हटाने के लिए किया जा सकता है (Ic4274, b/178583739)
- rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)
- सार्वजनिक एपीआई से CoreText और CoreTextField हटा दिया गया है
- SelectionContainer के ऐसे ओवरलोड को हटाया गया जो अब काम नहीं करते
- (I99c19)
- अब उन टेस्ट में ज़्यादा स्थिरता देखने को मिलेगी जिनमें WindowManager में सीधे तौर पर जोड़ी/हटाई गई हैरारकी में Compose का इस्तेमाल किया जाता है. (Ie81ed, b/175765614)
- Recomposer.current() को हटाया गया. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के दायरे वाले Recomposer को लेज़ी तरीके से बनाता है. ये Recomposer, विंडो के लिए ViewTreeLifecycleOwner से मैनेज होते हैं. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)
- Recomposer.runningRecomposers अब read-only RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. इससे प्रोसेस में चल रही कंपोज़िशन की स्थिति को देखा जा सकता है. Recomposer.current() के बजाय इस एपीआई का इस्तेमाल करें. यह अब काम नहीं करता. (If8ebe)
- Saver, listSaver(), mapSaver(), और autoSaver को androidx.compose.runtime.savedinstancestate से androidx.compose.runtime.saveable में ले जाया गया है (I77fe6)
- EditCommands, AnnotatedString स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. एक साथ कई स्टाइल में टेक्स्ट में बदलाव करने की सुविधा अभी लागू नहीं की गई है. (I4c3ea)
- अपटाइम और अवधि को हटा दिया गया है. (Ib9bf4, b/177420019)
- CompositionData.asTree() और इससे जुड़े एपीआई को अलग ui-tooling-data मॉड्यूल में ले जाया गया है. साथ ही, इन्हें एक्सपेरिमेंट के तौर पर मार्क किया गया है (Ic95b8)
- RounderCornerShape, CutCornerShape, और CornerBasedShape पर मौजूद पैरामीटर के नाम बदलकर, बाएं/दाएं से शुरू/खत्म कर दिए गए हैं. ऐसा इसलिए किया गया है, ताकि आरटीएल दिशा में शेप की ऑटो मिररिंग की सुविधा काम कर सके. AbsoluteRounderCornerShape और AbsoluteCutCornerShape को उन मामलों के लिए पेश किया गया था जहां ऑटो-मिररिंग की ज़रूरत नहीं होती. (I61040, b/152756983)
Compose कंपाइलर प्लगिन जिस एपीआई को टारगेट करता है उसे रिफ़ैक्टर किया गया है. अब यह कॉंक्रीट क्लास के बजाय इंटरफ़ेस का इस्तेमाल करता है. इंटरफ़ेस में अब टाइप पैरामीटर का इस्तेमाल नहीं किया जाता.
यह एक इंटरनल बदलाव है. इससे सोर्स कोड के साथ काम करने की सुविधा पर कोई असर नहीं पड़ना चाहिए. हालांकि, यह एक बाइनरी ब्रेकिंग चेंज है. (I3b922, b/169406779)
StringBuilder.deleteAt फ़ंक्शन (Id6ed9) को गलती से सार्वजनिक किए जाने की समस्या ठीक की गई
गड़बड़ियां ठीक की गईं
- व्यू हाइरारकी में रखे गए ComposeViews, अब अपने पूर्वजों की चाइल्ड कंपोज़िशन को होस्ट करते हैं. ये ComposeViews, किसी दूसरी कंपोज़िशन के चाइल्ड होते हैं (I92883)
- ImageBitmap ऑब्जेक्ट लोड करते समय, संसाधन के ड्रॉ करने लायक कैश मेमोरी का फिर से इस्तेमाल करने के लिए, Compose के imageFromResource एपीआई को अपडेट किया गया है. (If3627, b/178751994)
वर्शन 1.0.0-alpha11
28 जनवरी, 2021
androidx.compose.ui:ui-*:1.0.0-alpha11 रिलीज़ हो गया है. वर्शन 1.0.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- WithConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया है और इसे foundation.layout में ले जाया गया है. (I9420b, b/173387208)
- Key.DPadUp के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, Key.DirectionUp का इस्तेमाल करें. (Iab335, b/177954892)
- मालिक का इंटरफ़ेस अब से इंटरनल होगा. (If8e35)
- प्रोग्राम के हिसाब से फ़ोकस को दूसरी जगह ले जाने के लिए, FocusManager.moveFocus() API जोड़ा गया. (I045cb, b/177681839)
- यह कुकी, PopupPositionProvider में बदलाव करती है, ताकि वह ग्लोबल कोऑर्डिनेट के बजाय विंडो के हिसाब से कोऑर्डिनेट का इस्तेमाल कर सके. parentGlobalBounds का नाम बदलकर anchorBounds कर दिया गया है. साथ ही, windowGlobalBounds को windowSize: IntSize (I2994a) में बदल दिया गया है
- अवधि और अपटाइम को लंबे मिलीसेकंड से बदल दिया जाएगा. साथ ही, इस चरण में उन क्लास पर पॉइंटर इनपुट की डिपेंडेंसी को हटा दिया जाएगा. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner को, पहले से मौजूद AmbientLifecycleOwner और AmbientViewModelStoreOwner की तरह ही जोड़ा गया था (I9a3e8, b/176756365)
- वेक्टर ग्राफ़िक एपीआई को अपडेट किया गया है, ताकि वेक्टर ग्राफ़िक के रूट पर लागू किए गए टिंटिंग को पार्स किया जा सके. (Id9d53, b/177210509)
- डिवाइसों में अंतर करने के लिए, PointerInputChange में toolType जोड़ा गया (Iac787, b/175142755)
- AmbientWindowManager का नाम बदलकर AmbientWindowInfo कर दिया गया है (I2686a, b/177084714, b/177084983)
- ग्लोबल कोऑर्डिनेट के तरीकों का इस्तेमाल बंद कर दिया गया है. साथ ही, विंडो पर आधारित कोऑर्डिनेट के नए तरीके बनाए गए हैं. (Iee284)
- Modifier.toolingGraphicsLayer जोड़ा गया है. इससे जांच चालू होने पर, ग्राफ़िक्स लेयर मॉडिफ़ायर जुड़ जाता है. (I315df)
- FocusRequester.createRefs को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है, क्योंकि इसमें बदलाव हो सकता है. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden का नाम बदलकर invisibleToUser कर दिया गया है. साथ ही, इसे @ExperimentalComposeUiApi के तौर पर मार्क किया गया है. AccessibilityRangeInfo का नाम बदलकर ProgressBarRangeInfo कर दिया गया है. stateDescriptionRange का नाम बदलकर progressBarRangeInfo कर दिया गया है. AccessibilityScrollState का नाम बदलकर ScrollAxisRange कर दिया गया है. horizontalAccessibilityScrollState का नाम बदलकर horizontalScrollAxisRange कर दिया गया है. verticalAccessibilityScrollState का नाम बदलकर verticalScrollAxisRange कर दिया गया है. (Id3148)
- PointerInputData को हटाया गया और PointerInputChange में बदलाव किया गया, ताकि इसमें PointerInputData के सभी फ़ील्ड शामिल किए जा सकें. PointerInputEvent और PointerInputEventData को इंटरनल बना दिया गया है, क्योंकि इनका इस्तेमाल किसी भी सार्वजनिक एपीआई में नहीं किया जाता है. (Ifff97, b/175142755)
- GraphicsLayerScope में डेंसिटी लागू करने की सुविधा को अपडेट किया गया है, ताकि डीपी को रॉ पिक्सल में बदला जा सके. (Ied528, b/176819695)
- मैट्रिक्स एपीआई को अपडेट किया गया है, ताकि वह लाइन के हिसाब से क्रम में लगे डेटा को फ़ॉलो कर सके. साथ ही, इंडेक्स कॉन्स्टेंट दे सके, ताकि अलग-अलग मैट्रिक्स के बीच कन्वर्ज़न में मदद मिल सके. इससे SkMatrix और Matrix4 के बीच फ़्रेमवर्क कन्वर्ज़न लॉजिक को इंटरनल तौर पर मैच किया जा सकेगा. (I432e6)
- monotonicFrameAnimationClockOf के एक्सपेरिमेंटल तरीके हटा दिए गए हैं (Ib753f, b/170708374)
- String.fintPrecedingBreak और String.fingFollowingBreak को InternalTextApi में ले जाएं. (I657c4)
- androidx.compose.ui.util.isSurrogatePair को सार्वजनिक एपीआई से हटा दिया गया है. (Ia9494)
- TransformedText.transformedText का नाम बदलकर TransformedText.text कर दिया गया है
- TransformedText अब डेटा क्लास नहीं है (Ie672a)
data classको इन क्लास से हटा दिया गया है:- InlineTextContent
- LocaleList (I605c7)
- ये क्लास अब डेटा क्लास नहीं हैं:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- VisualTransformation को फ़ंक्शनल इंटरफ़ेस के तौर पर बदला गया (I3bba4)
- फ़ंक्शन रेफ़रंस पैरामीटर टाइप (I5e1bd) जोड़ा गया
- InspectorNode (Ice42f) में बदले गए बाउंड जोड़ें
गड़बड़ियां ठीक की गईं
- SideEffect और DisposableEffect API के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है (If760e)
Font/FontFamily/Typeface के लिए फ़ैक्ट्री फ़ंक्शन में बदलाव
- कैपिटल लेटर से शुरू होने वाले फ़ैक्ट्री फ़ंक्शन जोड़े गए
- पहले के फ़ैक्ट्री फ़ंक्शन को बंद कर दिया गया है. इनके पहले अक्षर छोटे होते थे
- नए फ़ैक्ट्री फ़ंक्शन, सबक्लास के बजाय FontFamily दिखाते हैं
- सबक्लास के कंस्ट्रक्टर छिपाए गए हैं, ताकि उन्हें सिर्फ़ फ़ैक्ट्री फ़ंक्शन के ज़रिए बनाया जा सके.
- Font.asFontFamily का नाम बदलकर Font.toFontFamily कर दिया गया है (I42aa7)
ComposeContentTestRuleको पेश किया गया है, जोComposeTestRuleको बढ़ाता है. साथ ही,setContentको तय करता है. इसेComposeTestRuleसे हटा दिया गया है.createEmptyComposeRule()फ़ैक्ट्री मेथड जोड़ा गया है. यहComposeTestRuleदिखाता है और आपके लिए कोई गतिविधि लॉन्च नहीं करता. इस विकल्प का इस्तेमाल तब करें, जब आपको टेस्ट के दौरान अपनी ऐक्टिविटी लॉन्च करनी हो. उदाहरण के लिए,ActivityScenario.launch(I9d782, b/174472899) का इस्तेमाल करनाanimateAsState को अब animateFooAsState कर दिया गया है. यहां Foo, ऐनिमेट की जा रही वैरिएबल का टाइप है. जैसे, फ़्लोट, डीपी, ऑफ़सेट वगैरह (Ie7e25)
इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा देने वाला पैरामीटर जोड़ा गया है. इस कुकी का इस्तेमाल, सुलभता सेवाओं (I2ac4c) के बारे में जानकारी देने के लिए किया जाता है
displaySize को हटाएं, क्योंकि इसका इस्तेमाल नहीं किया जाना चाहिए. आम तौर पर, onRoot() या कम से कम विंडो के साइज़ का इस्तेमाल करना बेहतर होता है. (I62db4)
OnSizeChanged, लेआउट के कॉन्टेंट का साइज़ दिखा रहा था. अब यह मॉडिफ़ायर चेन में अपनी पोज़िशन के हिसाब से साइज़ की जानकारी देता है. (I36b78, b/177562900)
emit() एपीआई और सभी ओवरलोड अब काम नहीं करते. इनका नाम बदलकर ComposeNode कर दिया गया है. एपीआई एक जैसे हैं. हालांकि, Compose (I4137b) के नामकरण के नियमों का पालन करने के लिए, इनका नाम अलग है
TextFieldValue, AnnotatedString को स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. फ़िलहाल, एक से ज़्यादा स्टाइल में टेक्स्ट में बदलाव करने की सुविधा लागू नहीं की गई है.
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
initialको हटाया गया. (I326d5)
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
invalidate और compositionReference() को अब बंद कर दिया गया है. इनके बजाय, currentRecomposeScope और rememberCompositionReference का इस्तेमाल करें. (I583a8)
AnnotatedString को kotlin.CharSequence से एक्सटेंड करने के लिए बदला गया है. इसलिए, length और subSequence अब इंस्टेंस फ़ंक्शन हैं. साथ ही, एक्सटेंशन फ़ंक्शन हटा दिए गए हैं. (Iaf429)
RememberObserver, CompositionLifecycleObserver की जगह लेता है. साथ ही, अब CompositionLifecycleObserver का इस्तेमाल नहीं किया जा सकता.
RememberObserver,CompositionLifecycleObserverकी जगह इस्तेमाल किया जा सकता है. इसमें सिमैंटिक में बदलाव किया गया है और तरीकों के नाम बदले गए हैं. जिन ऑब्जेक्ट को सिर्फ़ एक बार याद किया जाता है उनके लिए, नए एपीआई पर अपने-आप स्विच किया जा सकता है. यह तरीका सुझाया जाता है और इसका इस्तेमाल जारी रखा जाना चाहिए. हालांकि, अगर किसी कंपोज़िशन में किसी रेफ़रंस को एक से ज़्यादा बार याद किया गया है, तोonRememberedको हर रेफ़रंस के लिए कॉल किया जाता है. वहीं,onEnterको सिर्फ़ एक बार कॉल किया जाता है.onEnterwas called multiple time if the object was used in subcompositions, such asWithConstraintsandScaffoldmaking the singleonEntercall guarantee unreliable and it was removed forRememberObserver.RememberObserver,onAbandonedको जोड़ता है. इसे तब कॉल किया जाता है, जबrememberको पास किए गए कॉलबैक सेRememberObserverइंस्टेंस वापस आ जाता है. हालांकि, इसे कंपोज़िशन की स्थिति में याद नहीं रखा जाता. इसलिए, इसे कभी भीonRememberedकॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कंपोज़िशन को पूरा होने से पहले ही खत्म कर देता है या कंपोज़िशन को इसलिए खारिज कर दिया जाता है, क्योंकि जिस स्थिति के लिए कंपोज़िशन जनरेट की जा रही थी वह अब मौजूद नहीं है या अब उसकी ज़रूरत नहीं है. अगर ऊपर दिए गए सिंगल रेफ़रंस के सुझाव के बादRememberObserverइंस्टेंस, किसी बाहरी संसाधन को ट्रैक कर रहा है, तोonForgottenऔरonAbandoned, दोनों से पता चलता है कि अब उस संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट,onRememberedमें शुरू किए गए काम या असाइन किए गए संसाधनों को ट्रैक कर रहा है, तोonAbandonedको अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकिonRememberedको कॉल किए जाने पर, को कॉल नहीं किया जाएगा. (I02c36)दो या उससे ज़्यादा TextUnit के बीच अंकगणितीय कार्रवाइयों को बंद कर दिया गया है. Int.sp और Int.em जैसे एक्सटेंशन फ़ंक्शन के बजाय, TextUnit.Sp और TextUnit.Em फ़ंक्शन का इस्तेमाल बंद कर दिया गया है. (I48369)
जिन लाइब्रेरी में सार्वजनिक संसाधनों के बारे में साफ़ तौर पर नहीं बताया गया है (जैसे, public.xml के ज़रिए), उनमें मौजूद संसाधन अब डिफ़ॉल्ट रूप से निजी होंगे. (Ia1dcc, b/170882230)
ScrollableColumn/Row को अब इस्तेमाल नहीं किया जा सकता. अगर आपको स्क्रोल करने के लिए ज़्यादा कॉन्टेंट दिखाना है, तो LazyColumn के मुकाबले ScrollableColumn का इस्तेमाल करना कम असरदार होता है. ऐसा इसलिए, क्योंकि LazyColumn में सिर्फ़ दिखने वाले एलिमेंट को कंपोज़/मेज़र/ड्रॉ किया जा सकता है. उपयोगकर्ताओं को कम असरदार तरीके से स्क्रोल करने से रोकने के लिए, हमने ScrollableColumn और ScrollableRow को बंद करने का फ़ैसला किया है. इसके बजाय, हम LazyColumn और LazyRow के इस्तेमाल को बढ़ावा देंगे. उपयोगकर्ता अब भी यह तय कर सकते हैं कि उन्हें लेज़ी बिहेवियर की ज़रूरत नहीं है. वे सीधे तौर पर इस तरह से मॉडिफ़ायर का इस्तेमाल कर सकते हैं: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
LazyColumn/LazyRow/LazyVerticalGrid के स्कोप के लिए, नई
items(count: Int)फ़ैक्ट्री मेथड.items(items: List)औरitemsIndexed(items: List)अब एक्सटेंशन फ़ंक्शन हैं. इसलिए, इनका इस्तेमाल करते समय आपको इन्हें मैन्युअल तरीके से इंपोर्ट करना होगा. ऐरे के लिए नए एक्सटेंशन ओवरलोड:items(items: Array)औरitemsIndexed(Array)(I803fc, b/175562574)कृपया ImeAction.NoAction के बजाय ImeAction.None का इस्तेमाल करें
- कृपया ImeAction.Unspecified (Ie1bcc) के बजाय ImeAction.Default का इस्तेमाल करें
टेस्टिंग में TestCoroutineDispatcher का इस्तेमाल करना (I532b6)
TextInputService.onStateUpdated का नाम बदलकर updateState कर दिया गया है (Id4853)
TransitionDefinition पर आधारित ट्रांज़िशन अब काम नहीं करता (I0ac57)
TextUnitType.Inherit को हटा दिया गया है. इसके बजाय, कृपया TextUnitType.Unspecified का इस्तेमाल करें. (I9ff64)
वर्शन 1.0.0-alpha10
13 जनवरी, 2021
androidx.compose.ui:ui-*:1.0.0-alpha10 रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये बदलाव शामिल हैं.
अहम बदलाव
इंटरनल कंपाइलर एपीआई में बदलाव करने से, कंपोज़िशन के दौरान जनरेट हुए नोड में किए गए बदलावों को कंपोज़िशन के "बदलाव लागू करें" फ़ेज़ में बैच किया जा सकता है. ऐसा तब किया जाता है, जब सभी
@Composableफ़ंक्शन पूरे हो जाते हैं.यह व्यवहार में होने वाला ऐसा बड़ा बदलाव है जिससे ऐप्लिकेशन कोड पर असर पड़ सकता है. ऐसा इसलिए, क्योंकि बदलाव लागू होने तक नोड, इंटरनल और एक्सपेरिमेंटल एपीआई से उपलब्ध नहीं होते हैं. आम तौर पर, इस समस्या को ठीक करने के लिए, ऐसे कोड को
SideEffectकंपोज़ेबल में रखा जाता है जिसमें इस तरह की डिपेंडेंसी होती हैं. इससे नोड बनाए जाने और शुरू होने के बाद ही कोड को लागू किया जा सकता है. (I018da)
एपीआई में हुए बदलाव
- Modifier.focusOrder() जोड़ा गया है. इसका इस्तेमाल, फ़ोकस ट्रैवर्सल का कस्टम क्रम तय करने के लिए किया जा सकता है (I90cf5, b/175899543, b/170155556, b/170155429)
- focusObserver के इस्तेमाल को बंद किया गया. इसके बजाय, onFocusChanged या onFocusEvent का इस्तेमाल करें (I3ecb9, b/175156387)
- EditOperations API में हुए बदलाव
- EditOperation का नाम बदलकर EditCommand कर दिया गया है
- EditOperation के कॉन्क्रीट इंप्लीमेंटेशन के लिए, कमांड सफ़िक्स जोड़ा गया
- EditCommand अब डेटा क्लास नहीं हैं
- EditOperation.process फ़ंक्शन का नाम बदलकर applyTo कर दिया गया है
- InputEventListener का नाम बदलकर InputEventCallback कर दिया गया है
- (I0a366)
- इस्तेमाल न होने वाले PxSquared, PxCubed, PxInverse को हटाया गया. Size.center() को प्रॉपर्टी के तौर पर बदला गया. (I973f7)
- ui-test मॉड्यूल अब टेस्ट किए जा रहे यूज़र इंटरफ़ेस (यूआई) के लिए, Recomposer बनाने की सुविधा को कॉन्फ़िगर कर पाएगा (Ibebd8)
- वेलोसिटी में बदलाव किया गया है, ताकि इसमें कॉम्पोनेंट पार्ट और गणितीय ऑपरेशन शामिल किए जा सकें. (Ib0447)
@ExperimentalTestingका नाम बदलकर@ExperimentalTestApiकर दिया गया है, ताकि यह इसी तरह के एक्सपेरिमेंटल एपीआई एनोटेशन (Ia4502, b/171464963) के साथ काम कर सके- Color.useOrElse() का नाम बदलकर Color.takeOrElse() कर दिया गया (Ifdcf5)
- DpInverse, DpSquared, और DpCubed क्लास का इस्तेमाल नहीं किया गया था. इसलिए, उन्हें हटा दिया गया है. (I4d62b)
- Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
- लेआउटनोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (I72fd1)
- Unspecified कॉन्सटेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse को जोड़ा गया है. (I93f7b, b/174310811)
ComposeView एपीआई को बड़ा करें, ताकि Compose पर आधारित व्यू को रीसाइकल किया जा सके. साथ ही, उनकी कंपोज़िशन को डिस्पोज़ किया जा सके, ताकि बाद में उन्हें फिर से बनाया जा सके. विंडो के स्कोप वाले Recomposer और CompositionReference को इंस्टॉल करने और खोजने के लिए एपीआई जोड़े गए हैं. इनका इस्तेमाल, चाइल्ड कंपोज़िशन बनाने के लिए किया जाता है.
[Abstract]ComposeViews की कंपोज़िशन डिस्पोज़ल की रणनीति को कॉन्फ़िगर करने के लिए, ViewCompositionStrategy जोड़ें; डिफ़ॉल्ट व्यवहार, विंडो के अलग होने पर डिस्पोज़ करना है. (I860ab)
Any.identityHashCode() public api (I025d7) को हटाया गया
toStringAsFixed API को हटा दिया गया है. इसके बजाय, सीधे तौर पर String.format का इस्तेमाल किया जा सकता है. (Iaba6b)
Add Toggle to foundation Strings.kt (I4a5b7, b/172366489)
nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बना दिया गया. equals लागू करने के लिए, nativeClass के अपडेट किए गए इस्तेमाल. इसके बजाय, 'is MyClass' का इस्तेमाल करें. (I4f734)
Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
SelectionRegistrar.notifySelectableChange को पेश किया गया है. इससे SelectionManager को Selectable के अपडेट के बारे में सूचना दी जा सकेगी. (I6ff30, b/173215242)
आउटलाइन.bounds प्रॉपर्टी जोड़ी गई है, ताकि आउटलाइन लागू करने के अलग-अलग तरीकों के लिए बाउंडिंग रेक्ट हासिल किया जा सके. (I16e74, b/175093504)
TestUiDispatcher को बंद कर दिया गया है. इसके बजाय, Dispatchers.Main का इस्तेमाल करें (Ic171f, b/175385255)
ImeOptions और KeyboardOptions अब डेटा क्लास नहीं हैं (I3c898, b/168684531)
VisualTransformation API में हुए बदलाव
- OffsetMap का नाम बदलकर OffsetMapping किया गया
- OffsetMapping.identityOffsetMap का नाम बदलकर OffsetMapping.Identity कर दिया गया है
- PasswordTransformation अब डेटा-क्लास नहीं है
- OffsetMapping को उसकी फ़ाइल में ले जाया गया
- (I0bdf3)
Position का नाम बदलकर DpOffset कर दिया गया है और getDistance() (Ib2dfd) को हटा दिया गया है
fun Dp.isFinite() को val Dp.isFinite में बदला गया (I50e00)
गड़बड़ियां ठीक की गईं
- Recomposer अब अपनी मौजूदा स्थिति का फ़्लो दिखाता है. इससे इसकी गतिविधि और इससे जुड़े इफ़ेक्ट की गतिविधि को मॉनिटर किया जा सकता है. (Ifb2b9)
- अब keyEvent.nativeKeyEvent (I87c57, b/173086397) के ज़रिए, नेटिव keyEvent को ऐक्सेस किया जा सकता है
animate()को अबanimateAsState()से बदल दिया गया है. यहTके बजायState<T>दिखाता है. इससे बेहतर परफ़ॉर्मेंस मिलती है, क्योंकि अमान्य होने के दायरे को उस जगह तक सीमित किया जा सकता है जहां State वैल्यू पढ़ी जाती है. (Ib179e)- Semantics role API जोड़ें. साथ ही, क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले SemanticsModifier में Role को पैरामीटर के तौर पर जोड़ें. Modifier.progressSemantics में बदलाव किया गया है, ताकि Slider भी इसका इस्तेमाल कर सके. (I216cd)
- कोरूटीन पर आधारित नया एपीआई
Animatable, जो यह पक्का करता है कि इसके ऐनिमेशन एक-दूसरे से अलग हों.- मल्टी-डाइमेंशनल डेके ऐनिमेशन के लिए, नया DecayAnimationSpec
- (I820f2, b/168014930)
वर्शन 1.0.0-alpha09
16 दिसंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha09 रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- KeyEvent.Alt के इस्तेमाल पर रोक लगा दी गई है. इसे हटा दिया गया है. इसके बजाय, KeyEvent.isAltPressed का इस्तेमाल करें. (Idd695)
- Modifier.keyInputFilter और Modifier.previewKeyInputFilter अब काम नहीं करते. इसके बजाय, Modifier.onKeyEvent और Modifier.onPreviewKeyEvent का इस्तेमाल करें (Idbf1b, b/175156384)
- Modifier.focusObserver अब काम नहीं करता है. इसके बजाय, Modifier.onFocusChanged या Modifier.onFocusEvent का इस्तेमाल करें (I30f17, b/168511863, b/168511484)
- पॉइंटर इनपुट एपीआई को निलंबित करने के लिए, HandlePointerInputScope का नाम बदलकर AwaitPointerEventScope और handlePointerInput() का नाम बदलकर awaitPointerEventScope() कर दिया गया है. (Idf0a1, b/175142755)
- ऑटोमैटिक भरने वाला एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध है. इसके लिए, ऑप्ट-इन करना ज़रूरी है (I0a1ec)
- FocuSRequester इंस्टेंस बनाने के लिए, डिस्ट्रक्चरिंग डिक्लेरेशन जोड़े गए (I35d84, b/174817008)
- accessibilityLabel का नाम बदलकर contentDescription कर दिया गया है. accessibilityValue का नाम बदलकर stateDescription कर दिया गया है. (I250f2)
- सस्पेंड किए गए पॉइंटर इनपुट एपीआई (Ia54d5, b/175142755) से कस्टम इवेंट हटा दिए गए
- SelectionRegistrar में कई नए फ़ंक्शन जोड़े गए हैं. साथ ही, onPositionChange का नाम बदलकर notifyPositionChange कर दिया गया है. (Ifbaf7)
- LayoutNode के ज़्यादा सदस्यों को हमने इंटरनल के तौर पर मार्क किया है (I443c6)
- LayoutInfo को टूलिंग और टेस्टिंग के लिए इस्तेमाल किया जाता है (I9b190)
- AndroidOwner ने इंटरनल टेस्ट के लिए बनाया (Ibcad0, b/170296980)
- ExperimentalPointerInput एनोटेशन हटाया गया (Ia7a24)
- नेस्टेड स्क्रोल सिस्टम जोड़ा गया. ज़्यादा जानकारी के लिए, Modifier.nestedScroll देखें (I36e15, b/162408885)
- subcomposeInto(LayoutNode) को इंटरनल बनाया गया (Id724a)
Applierइंटरफ़ेस में बदलाव किया गया है, ताकि बॉटम-अप तरीके से ट्री बनाना आसान हो. पहले टॉप-डाउन तरीके से ट्री बनाए जाते थे.insert()तरीके का नाम बदलकरinsertTopDown()कर दिया गया है.insertBottomUp()नाम का एक नया तरीका जोड़ा गया है.लागू करने वाला,
insertTopDown()याinsertBottomUp()का इस्तेमाल करके, उस ट्री में नोड डालता है जिसे वह बदल रहा है. यह इस बात पर निर्भर करता है कि कौनसी कार्रवाई बेहतर तरीके से काम करती है.कुछ ट्री, जैसे कि
LayoutNodeऔरView, को टॉप-डाउन की तुलना में बॉटम-अप तरीके से बनाना ज़्यादा आसान होता है. इस बदलाव से पहले, बॉटम-अप को लागू करने के लिए इंसर्ट के स्टैक की ज़रूरत होती थी. इसे हर ऐप्लिकेशन में कॉपी करना पड़ता था. साथ ही, परफ़ॉर्मेंस के लिए बॉटम-अप कंस्ट्रक्शन की ज़रूरत होती थी. इस बदलाव के साथ, ट्री को बॉटम-अप बनाने के लिएApplierओवरराइडinsertBottomUp()और टॉप-डाउन बनाने के लिएinsertTopDown()का इस्तेमाल किया जाता है. (Icbdc2)AndroidDialogProperties में dismissOnBackPress और dismissOnClickOutside प्रॉपर्टी जोड़ी गईं. इनसे यह कॉन्फ़िगर किया जा सकता है कि dialog's onDismissRequest लैम्डा कब शुरू होगा. (If5e17)
Painter ऑब्जेक्ट को ओपेक तरीके से लोड करने के लिए, painterResource API जोड़ा गया है. ये ऑब्जेक्ट, रास्टर इमेज फ़ॉर्मैट (जैसे कि PNG) या VectorDrawables से लोड किए जाते हैं. उपभोक्ताओं को अब पहले से यह तय नहीं करना होगा कि किस तरह की ऐसेट का इस्तेमाल करना है. वे इस तरीके को कॉल करके, Painter ऑब्जेक्ट पा सकते हैं. इसका इस्तेमाल Image कंपोज़ेबल या पेंटर मॉडिफ़ायर में किया जा सकता है. (I2c703, b/173818471)
Modifier.clearAndSetSemantics को जोड़ा गया है, ताकि डिसेंडेंट के सिमैंटिक को मिटाया जा सके और नए सिमैंटिक सेट किए जा सकें. (I277ca)
DrawScope के साथ रखने के लिए, ContentDrawScope को ui-graphics मॉड्यूल में ले जाया गया. (Iee043, b/173832789)
स्ट्रोक किए गए शेप को अलग-अलग पैटर्न देने के लिए, PathEffect ग्राफ़िक्स एपीआई पेश किया गया. PathEffect के expect/actual लागू करने के पक्ष में, NativePathEffect के इस्तेमाल को बंद कर दिया गया है. (I5e976, b/171072166)
Espresso के आइडलिंग रिसॉर्स के Compose के साथ काम करने वाले वैरिएंट के तौर पर, Compose में IdlingResource इंटरफ़ेस जोड़े गए. इन्हें ComposeTestRule (I433f3) के ज़रिए रजिस्टर और अनरजिस्टर किया जा सकता है
ComposeIdlingResource के ग्लोबल (अन)रजिस्ट्रेशन और ComposeIdlingResource में क्लॉक के ग्लोबल (अन)रजिस्ट्रेशन को हटाया गया (I32660)
गड़बड़ियां ठीक की गईं
- ऑफ़सेट मॉडिफ़ायर में लैम्ब्डा अब फ़्लोट के बजाय IntOffset दिखाता है. (Ic9ee5, b/174137212, b/174146755)
पब्लिक एपीआई से SlotTable, SlotReader, और SlotWriter को हटा दिया गया है. इन्हें पहले InternalComposeAPI के तौर पर मार्क किया गया था. अब ये कंपोज़ मॉड्यूल के इंटरनल हैं.
कंपोज़िशन की जानकारी निकालने के लिए, ui-tooling API की जगह CompositionData और CompositionGroup को जोड़ा गया है. ये सार्वजनिक हैं, लेकिन इनका इस्तेमाल ui-tooling API के बाहर नहीं किया जा सकता. ऐसा इसलिए, क्योंकि ये ui-tooling API को ऐसी जानकारी देते हैं जिसे वह समझता है (I31a9c)
ShaderBrush को फिर से फ़ैक्टर किया गया है, ताकि ड्रॉइंग एनवायरमेंट के साइज़ की जानकारी उपलब्ध होने पर, शेडर इंस्टेंस को लेज़ी तरीके से बनाया जा सके. यह कंपोज़िशन के समय, कंपोज़ेबल के पूरे ड्रॉइंग बाउंड को भरने वाले ग्रेडिएंट तय करने के लिए उपयोगी है. इसके लिए, आपको DrawModifier को लागू करने की ज़रूरत नहीं होती.
Gradient ऑब्जेक्ट पर फ़ैक्ट्री के तरीकों के पक्ष में, ग्रेडिएंट फ़ंक्शन कंस्ट्रक्टर एपीआई को बंद कर दिया गया है. (I511fc, b/173066799)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed, और LazyRowForIndexed को बंद कर दिया गया है. इसके बजाय, LazyColumn और LazyRow का इस्तेमाल करें (I5b48c)
BuildCompat.isAtLeastR का इस्तेमाल नहीं किया जा सकता (Idb37e)
AnnotatedString बनाने के लिए, buildAnnotatedString फ़ैक्ट्री फ़ंक्शन जोड़ा गया. annotatedString बिल्डर फ़ंक्शन अब काम नहीं करता. (Idfe0b)
वैल्यू को रेडियन में बदलने के लिए, फ़्लोट और डबल पर एक्सटेंशन के तरीके हटा दिए गए हैं. इसे लागू करने वाले PathParser में एक निजी फ़ंक्शन के तौर पर ले जाया गया है. इसका इस्तेमाल सिर्फ़ इसी जगह पर किया जाता था (I25f52)
वर्शन 1.0.0-alpha08
2 दिसंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- सिमैंटिक ऐक्शन Dismiss (I2b706) जोड़ा गया
- DrawModifier एपीआई को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया है. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि टाइपएलियास/सहायता करने वाले तरीकों को शामिल किया जा सके. इससे, पुराने एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद मिलेगी. (Id6044, b/173834241)
- Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है साथ ही, एपीआई के सुझाव के मुताबिक, GraphicsLayer से जुड़ी क्लास भी अपडेट की गई हैं. (I0bd29, b/173834241)
- placeable.placeWithLayer() और placeable.placeRelativeWithLayer() नाम के नए तरीके जोड़े गए हैं. इनकी मदद से, कस्टम लेआउट और लेआउट मॉडिफ़ायर, ड्राइंग के लिए ग्राफ़िक्स लेयर जोड़कर चाइल्ड को प्लेस कर सकते हैं. इससे हम सबसे पहले रीड्रॉइंग को ऑप्टिमाइज़ कर सकते हैं. इसलिए, जब हमें किसी चाइल्ड को मूव करना होता है, तो हमें उसके कॉन्टेंट को रीड्रॉ नहीं करना पड़ता. दूसरा, हम किसी चाइल्ड के लिए ड्रॉ ट्रांसफ़ॉर्मेशन लागू कर सकते हैं (Ibd8f6, b/170296989, b/171493718, b/173030831)
<T>को SubcomposeLayout के एलान से हटा दिया गया है. अब इसका इस्तेमाल, टाइप की जानकारी दिए बिना किया जा सकता है. (Ib60c8)- drawLayer के लिए, Modifier.scale/rotate API जोड़े गए हैं.
Modifier.drawOpacityका नाम बदलकरModifier.alphaकिया गयाModifier.drawShadowका नाम बदलकरModifier.shadowकिया गया (I264ca, b/173208140)
- PointerInputData के अपटाइम और पोजीशन फ़ील्ड को नॉन-नलेबल बनाया गया है. (Id468a)
- MaterialTheme अब चुनने के हैंडल और चुनने के बैकग्राउंड के लिए सही रंग सेट करता है. नॉन-मटेरियल ऐप्लिकेशन, AmbientTextSelectionColors का इस्तेमाल करके, चुनने के लिए इस्तेमाल किए गए रंगों को पसंद के मुताबिक बना सकते हैं. (I1e6f4, b/139320372, b/139320907)
- WindowManager.isWindowFocused को जोड़ा गया है. इससे यह पता चलता है कि होस्ट विंडो फ़ोकस में है या नहीं. साथ ही, WindowFocusObserver को जोड़ा गया है. यह onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
- TransformOrigin API को अपडेट किया गया है, ताकि
component1औरcomponent2कोpivotFractionXऔरpivotFractionYके तौर पर दिखाने के लिए, डिस्ट्रक्चरिंग सिंटैक्स का इस्तेमाल किया जा सके (If43c4, b/173586560) - कंपोज़ेबल लैम्डा पैरामीटर के नाम और पोज़िशन के लिए, लिंट चेक की सुविधा जोड़ी गई है. इससे Compose के दिशा-निर्देशों के मुताबिक, अनुकूलता की जांच की जा सकेगी.
इसके अलावा, कुछ एपीआई को माइग्रेट किया गया है. इनमें,
childrenका इस्तेमाल ट्रेलिंग लैम्डा के नाम के तौर पर किया गया था. इन्हें लिंट चेक और दिशा-निर्देशों के मुताबिकcontentमें माइग्रेट किया गया है. (Iec48e) - यह एपीआई जोड़ा गया है. इससे यह पता चलता है कि की इवेंट भेजे जाने के दौरान, Alt, Ctrl, Meta या Shift बटन दबाए गए थे या नहीं. (I50ed9)
- नया
Modifier.drawLayer()ओवरलोड जोड़ा गया. यह नए GraphicsLayerScope पर एक लैम्ब्डा ब्लॉक लेता है. इसमें लेयर के पैरामीटर इस तरह से तय किए जाते हैं कि स्थिति में बदलाव होने पर, दोबारा कंपोज़ करने और फिर से लेआउट करने की प्रोसेस को स्किप किया जा सके. DrawLayerModifier अब इंटरनल है. ऐसा इसलिए किया गया है, ताकि इसके लॉजिक को LayoutModifier के placeable.placeWithLayer() तरीके में माइग्रेट किया जा सके (I15e9f, b/173030831) Ambientसफ़िक्स वाली पुरानी एंबिएंट प्रॉपर्टी को बंद कर दिया गया है. साथ ही, उन्हें नई प्रॉपर्टी से बदल दिया गया है. नई प्रॉपर्टी के नाम से पहले, एंबिएंट जोड़ा गया है. ये प्रॉपर्टी, अन्य एंबिएंट प्रॉपर्टी और Compose API के दिशा-निर्देशों के मुताबिक हैं. (I33440)androidx.compose.ui.text.Typefaceकोandroidx.compose.ui.text.font.Typeface(Ic2b81) में ले जाया गया- सिमैंटिक आर्ग्युमेंट mergeAllDescendants का नाम बदलकर mergeDescendants कर दिया गया है. (Ib6250)
- ड्रैग जेस्चर का पता लगाने वाला नया टूल, जो पॉइंटर इनपुट एपीआई को निलंबित करता है. इसमें ओरिएंटेशन लॉक करने की सुविधा भी शामिल है. (Icef25)
- VectorAsset का नाम बदलकर ImageVector कर दिया गया है VectorAsset को Builder में ले जाया गया है और इसका नाम बदल दिया गया है, ताकि यह API के दिशा-निर्देशों के मुताबिक ImageVector की इनर क्लास बन सके. VectorAssetBuilder का टाइपएलियास जोड़ा गया, ताकि ImageVector.Builder के साथ काम कर सके. (Icfdc8)
- ImageAsset और इससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया है. (Ia2d99)
- PlacementScope के place() के लिए zIndex पैरामीटर जोड़ा गया है, ताकि अब Modifier.zIndex() LayoutModifier के तौर पर काम करे. साथ ही, कोई भी कस्टम लेआउट, प्लेसमेंट ब्लॉक (I711f7, b/171493718) में अपने बच्चों के लिए zIndex सेट कर सके
- फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (I6f05c) में ले जाया गया
- place(Offset) और placeRelative(Offset) को बंद कर दिया गया है. इसके बजाय, int ऑफ़सेट के साथ ओवरलोड का इस्तेमाल करें (I4c5e7)
- पहले इस्तेमाल नहीं किए जा रहे एपीआई हटा दिए गए हैं: Modifier.onPositioned को हटा दिया गया है. Modifier.onGloballyPositioned का इस्तेमाल करें. Modifier.onDraw को हटा दिया गया है. Modifier.onDrawBehind का इस्तेमाल करें. Modifier.plus को हटा दिया गया है. Modifier.then का इस्तेमाल करें. Color.Unset को हटा दिया गया है. Color.Unspecified का इस्तेमाल करें. PxBounds क्लास को हटा दिया गया है. इसके बजाय, Rect का इस्तेमाल करें. (Ie9d02, b/172562222)
- अलाइनमेंट इंटरफ़ेस को अपडेट किया गया है और इसे चालू कर दिया गया है. (I46a07, b/172311734)
- टैप, डबल-टैप, दबाकर रखने, और दबाने के इंडिकेशन के लिए, जेस्चर डिटेक्टर जोड़े गए. इसके लिए, सस्पेंडिंग पॉइंटर इनपुट का इस्तेमाल किया गया. कुछ यूटिलिटी भी जोड़ी गई हैं, ताकि डेवलपर के लिए अपने जेस्चर डिटेक्टर लिखना आसान हो जाए. (I00807)
LayoutIdParentDataके लिए,idका नाम बदलकरlayoutIdकर दिया गया है.Measurable.idका नाम बदलकरMeasurable.layoutIdकर दिया गया है. (Iadbcb, b/172449643)- मल्टीटच जेस्चर डिटेक्टर की नई सुविधा. इसमें रोटेशन, ज़ूम, और पैनिंग का पता लगाने के लिए हेल्पर शामिल हैं. (Ic459d)
- SweepGradientShader और SweepGradientBrush API लॉन्च किए गए. (Ia22c1)
- टेस्ट में टाइम कंट्रोल (TestAnimationClock और इसके इस्तेमाल) की सुविधा अब एक्सपेरिमेंटल है (I6ef86, b/171378521)
कोरूटीन पर आधारित स्क्रोलिंग एपीआई जोड़े गए:
इसमें LazyListState.snapToItem और LazyListState.smoothScrollBy को जोड़ा गया है. साथ ही, स्क्रोल कंट्रोल के लिए लोअर-लेवल एपीआई भी जोड़े गए हैं. ये एपीआई, स्क्रोलिंग को कंट्रोल करने के लिए एक सस्पेंड इंटरफ़ेस उपलब्ध कराते हैं. यह इंटरफ़ेस, स्क्रोलिंग पूरी होने तक इंतज़ार करता है और उसके बाद ही वापस आता है. (Ie5642)
Modifier.focusable में, फ़ाउंडेशन में जोड़े गए फ़ंक्शन की ज़रूरत होती है. इसका इस्तेमाल, किसी कॉम्पोनेंट में फ़ोकस करने की सुविधा जोड़ने के लिए किया जाता है. इससे सही सिमैंटिक और ऐक्सेसिबिलिटी मिलती है. (I41eb9, b/152525426, b/162865824)
AnimationClockTestRule में तरीकों और प्रॉपर्टी के डिफ़ॉल्ट तौर पर लागू होने की सुविधा उपलब्ध कराई गई है. इसे
clock(I7ea3d, b/173399709) को सौंपा जा सकता हैAndroidComposeTestRule अब कस्टम ऐक्टिविटी लॉन्चर स्वीकार कर सकता है (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibleEnd अब काम नहीं करता. TextLayoutResult.getLineEnd को बदलने के लिए, अब एक नया पैरामीटर visibleEnd उपलब्ध है. (I73282)
TextFieldValue API अपडेट किया गया
- TextFieldValue.composition को रीड ओनली बनाया गया
- चुनी गई अमान्य रेंज (I4a675, b/172239032) के लिए थ्रो किया गया अपवाद हटाया गया
लिखे गए शब्दों को सुनने की सुविधा के लिए, TtsAnnotation की सुविधा उपलब्ध कराई गई है. (I54cc6)
कोरूटीन में ऐनिमेशन चलाने के लिए नए एपीआई (Ied662)
गड़बड़ियां ठीक की गईं
- Box के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
- offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया है. अब ये State के बजाय लैम्डा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
- TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
- Composable फ़ंक्शन में, Modifier पैरामीटर के लिए लिंट चेक जोड़ा गया. यह लिंट चेक, Compose के दिशा-निर्देशों के मुताबिक पैरामीटर के नाम, रिटर्न टाइप, डिफ़ॉल्ट वैल्यू, और क्रम की जांच करता है. (If493b)
- TestAnimationClock को MonotonicFrameClock से कंट्रोल करने के लिए, कुछ समय के लिए विकल्प जोड़ा गया (I1403b, b/173402197)
- Android Typeface रैपर जोड़ा गया.
typefaceफ़ंक्शन के ज़रिए, Android Typeface लोड किया जा सकता है. जैसे,typeface(Typeface.DEFAULT).typefaceFromFontFamily()का नाम बदलकरtypeface()(I52ab7) भी कर दिया गया है - लिंट चेक जोड़ा गया है. इससे यह पता चलता है कि मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर पर एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें एक साथ आसानी से जोड़ा जा सके. (I07981)
- Remove old ui-test module and its stubs (I3a7cb)
- Recomposer अब EmbeddingContext को स्वीकार नहीं करता है. शेड्यूल करने से जुड़ी ज़रूरी डिपेंडेंसी, effectCoroutineContext से मिलती हैं. FrameManager को बंद कर दिया गया है. प्लैटफ़ॉर्म इंटिग्रेशन को अपने ग्लोबल स्नैपशॉट हैंडलिंग को शुरू करना चाहिए. (I02369)
- सुलभता नोड को स्टाइल की जानकारी पास करता है. (If5e8d)
- अन्य यूनिट के साथ एक जैसा रखने के लिए, TextUnit.Inherit का नाम बदलकर TextUnit.Unspecified कर दिया गया है. (Ifce19)
Compose यूज़र इंटरफ़ेस का वर्शन 1.0.0-alpha07
11 नवंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- ScaleFactor
इनलाइन क्लास को पेश किया गया है. इसका इस्तेमाल, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के स्केल फ़ैक्टर को एक-दूसरे से अलग दिखाने के लिए किया जाता है. इससे, नॉन-यूनिफ़ॉर्म स्केलिंग के इस्तेमाल के उदाहरणों को सपोर्ट किया जा सकेगा.
- ContentScale में computeScaleFactor तरीका जोड़ा गया
- ContentScale.FillBounds जोड़ा गया है, ताकि src के डाइमेंशन को खींचकर डेस्टिनेशन के डाइमेंशन के बराबर किया जा सके.
- साइज़ पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर के तरीके जोड़े गए.
- (Ic96a6, b/172291582)
- अलाइनमेंट बनाने के लिए, BiasAlignment और BiasAbsoluteAlignment फ़ैक्ट्री जोड़ी गईं. (Iac836, b/169406772)
- डेवलपर को फ़ोकस को ज़बरदस्ती हटाने की अनुमति दें. (I90372)
- Compose में व्यू के लिए एलिवेशन नहीं दिखने की समस्या को ठीक किया गया. (If7782)
- Modifier.drawBehind के साथ नाम रखने के नियम का पालन करने के लिए, ContentDrawScope में onDrawBehind API बनाया गया. (I4fc3a, b/171955269)
- लेयर एपीआई पर 3D ट्रांसफ़ॉर्मेशन rotationX/rotationY को पूरा करने के लिए, कैमरे की दूरी की सुविधा जोड़ी गई है. (I40213, b/171492100)
- कॉलबैक के बिना SelectionContainer जोड़ा गया (Ibfadb)
- ExperimentalSubcomposeLayoutApi एनोटेशन हटा दिया गया है. अब SubcomposeLayout का इस्तेमाल, @OptIn (I708ad) को जोड़े बिना किया जा सकता है
- FirstBaseline और LastBaseline को androidx.compose.ui.layout पैकेज में ले जाया गया (Ied2e7)
- drawShadow() मॉडिफ़ायर से ओपैसिटी को हटा दिया गया है, क्योंकि यह भ्रम पैदा कर रहा था. (I82c62, b/171624638)
- MeasureResult को MeasureScope से बाहर ले जाया गया. (Ibf96d, b/171184002)
- लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.layout.ui में ले जाया गया है. (I0fa98, b/170475424)
- FocusState2 को हटाया गया (I686cb, b/168686446)
- ZIndexModifier अब इंटरनल है (I1808b, b/171493718)
- साइज़ पैरामीटर पर lerp मेथड के रिटर्न टाइप को अपडेट किया गया है, ताकि गैर-शून्य साइज़ को दिखाया जा सके. इससे गैर-ज़रूरी बॉक्सिंग से बचा जा सकेगा. (Ib0044)
- ऐसे कोड की जांच करने के लिए TestMonotonicFrameClock जोड़ा गया है जो कंपोज़ के MonotonicFrameClock पर निर्भर करता है. यह कंपोज़िशन फ़्रेम इवेंट का इंतज़ार करता है. इसके लिए, kotlinx-coroutines-test के runBlockingTest का इस्तेमाल किया जाता है (I4402f)
- GestureScope.localToGlobal को हटाया गया (I15299, b/171462785)
onAllNodesWithSubstringफ़ाइंडर जोड़ा गया (I81dd7, b/171462889)- androidx.ui.test मॉड्यूल अब काम नहीं करता. कृपया androidx.compose.ui.test और androidx.compose.ui.test.junit4 (I452e8) पर माइग्रेट करें
गड़बड़ियां ठीक की गईं
- captureToBitmap को captureToImage में ले जाया गया है. (I86385)
- foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू इस्तेमाल न करने वाले सामान्य टेक्स्ट एपीआई के लिए, androidx.compose.foundation.BasicText देखें. (If64cb)
- KeyboardOptions को स्वीकार करने के लिए, TextFields को अपडेट करें (Ida7f3)
- KeyboardOptions का नाम बदलकर ImeOptions करें (I82f36)
- KeyboardType और ImeAction को KeyboardOptions में ले जाया गया (I910ce)
- provideDefault को ऐंबियंट वैल्यू देने के विकल्प के तौर पर जोड़ा गया था. इसका इस्तेमाल ऐसी ऐंबियंट वैल्यू तय करने के लिए किया जा सकता है जो सिर्फ़ तब सेट की जाएंगी, जब पहले से कोई ऐंबियंट वैल्यू न दी गई हो. (Id6635, b/171024925)
- BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
- ui-test-junit4 मॉड्यूल जोड़ें (Ib91f8)
relativePaddingFromका नाम बदलकरpaddingFromकर दिया गया है. लेआउट बाउंड से टेक्स्ट बेसलाइन तक की दूरी तय करने में आसानी के लिए,paddingFromBaselineमॉडिफ़ायर जोड़ा गया है. (I0440a, b/170633813)- LaunchedTask का नाम बदलकर LaunchedEffect कर दिया गया है, ताकि यह SideEffect और DisposableEffect API के साथ अनुकूलता रख सके. सबसे सही तरीकों को बढ़ावा देने के लिए, LaunchedEffect में subject पैरामीटर के बिना इस्तेमाल करने की अनुमति नहीं है. (Ifd3d4)
- कॉन्फ़िगरेशन अपडेट होने पर, फिर से कंपोज़ होने वाले रिसॉर्स कंपोज़ेबल को जोड़ा गया. (I6387c, b/167352819)
- Recomposer को अब कंस्ट्रक्शन के समय CoroutineContext की ज़रूरत होती है (Ic4610)
- एक से ज़्यादा
Modifier.zIndex()लागू होने पर,zIndexवैल्यू का योग करें. इससे पहले, पहली टीम जीत रही थी. (Ic514c, b/170623936) - SlotTable को लागू करने के तरीके में अंदरूनी तौर पर बदलाव किए गए हैं. इससे सार्वजनिक एपीआई पर कोई असर नहीं पड़ना चाहिए. (If9828)
- कीबोर्ड में ऑटो करेक्ट IME का विकल्प जोड़ा गया (I57b8d)
- androidx.ui.test को androidx.compose.ui.test में ले जाया गया (I9ffdb)
- सार्वजनिक एपीआई से KeyboardOptions.toImeOptions को हटाया गया. (Ic2e45)
बाहरी योगदान
- androidx.compose.ui:ui-text-android (Ib93fa) के इंटरनल आर्टफ़ैक्ट के पब्लिकेशन को बंद कर दिया गया है
वर्शन 1.0.0-alpha06
28 अक्टूबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Recomposer अब एक CompositionReference और एक मान्य कंपोज़िशन पैरंट है. अब कम जगहों पर Explicit Recomposer की ज़रूरत होगी. (I4036f)
- VectorPainter को बंद कर दिया गया है. अब rememberVectorPainter का इस्तेमाल किया जा सकता है. इससे यह बेहतर तरीके से पता चलता है कि कंपोज़ेबल एपीआई, कंपोज़िशन के बीच डेटा को बनाए रखने के लिए, 'remember' का इस्तेमाल करता है. (Ifda43)
- Modifier.drawWithCache API को अपडेट किया गया है, ताकि ContentDrawScope को DrawScope के बजाय रिसीवर स्कोप के तौर पर दिखाया जा सके. इससे, लागू करने वालों को ड्रॉइंग कमांड को फिर से क्रम में लगाने की सुविधा मिलती है. यह ब्लेंडिंग/टिंटिंग के उन मामलों में काम आता है जिनमें कॉन्टेंट पिक्सल को पहले रेंडर किया जाना चाहिए, ताकि ब्लेंड मोड के एल्गोरिदम को सही तरीके से लागू किया जा सके. (Ie7ec8)
- SimpleContainer को PopupTestUtils.kt में ले जाएं (I78c57)
- ConsumedData अब डेटा क्लास नहीं है. ज़्यादा जानकारी के लिए, https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 पर जाएं (I1737f)
- Rtl हैंडल की जगह ठीक करें. (I6e1e0)
- DrawScope और ContentDrawScope को इंटरफ़ेस के तौर पर फिर से फ़ैक्टर किया गया है, ताकि वे ऐब्स्ट्रैक्ट क्लास के बजाय इंटरफ़ेस के तौर पर काम कर सकें
- DrawScope का CanvasDrawScope लागू किया गया
- DrawScope के लागू किए गए कोड को फिर से लिखा गया है, ताकि CanvasScope का इस्तेमाल किया जा सके
- DrawScope के लिए, DrawContext बनाया गया है, ताकि डिपेंडेंसी को रैप किया जा सके
- DrawScope (I56f5e) पर, इस्तेमाल में नहीं रहे तरीकों को हटाया गया
- बदलाव:
PointerInputFilter.onPointerEvent(...)से रिटर्न वैल्यू हटा दी गई है, क्योंकि पॉइंटर इवेंट में सिर्फ़ इस्तेमाल किए गए डेटा की वैल्यू बदली जा सकती है.PointerInputFilter.onPointerEvent(...)से डेटा वापस पाने के बजाय, अब पास किए गए PointerEvents के इस्तेमाल के डेटा में बदलाव किया जा सकता है. (I6acd0) - MeasureScope और IntrinsicMeasureScope को इंटरफ़ेस बनाया गया. (I1a087, b/170461665)
- AlignmentLine के लिए मर्ज फ़ंक्शन को छिपा दिया गया था. (I9da1a, b/170612900, b/170611568)
- कंपोज़ किए गए मॉडिफ़ायर में, इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
- चुने गए मेन्यू (Ief02b) में, 'सभी चुनें' विकल्प जोड़ा गया
- DrawTransform.rotate को अपडेट किया गया है, ताकि यह दस्तावेज़ से मेल खाने के लिए, डिफ़ॉल्ट पिवट पैरामीटर के तौर पर सेंटर का इस्तेमाल कर सके.
- DrawScope.rotateRad को अपडेट किया गया है, ताकि यह पिवट पॉइंट के लिए ऑफ़सेट का इस्तेमाल कर सके. इससे, यह ट्रांसफ़ॉर्मेशन के अन्य तरीकों से मैच हो पाएगा.
- DrawScope.rotateRad के उस ओवरलोड को बंद कर दिया गया है जो पिवट के x और y कोऑर्डिनेट के लिए फ़्लोट का इस्तेमाल करता था.
- (Iffcbb, b/170434992)
गड़बड़ियां ठीक की गईं
- androidx के लिए, MissingGetterMatchingBuilder के लिए एपीआई लिंट चेक की सुविधा चालू है (I4bbea, b/138602561)
- टेस्ट जोड़ें. (I6b8ae)
- ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से, ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
- KeyboardCapitalization IME विकल्प जोड़ा गया (I8ac38)
- CoreTextField में एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया (I72e6d)
- SimpleContainer को PopupTestUtils.kt में ले जाएं (I65c3e)
- Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि इसका इस्तेमाल पूरे Compose में कैसे किया जाता है. दस्तावेज़ों को अपडेट किया गया है, ताकि यह बताया जा सके कि नेगेटिव कॉर्नर रेडियस को शून्य पर सेट किया जाता है. (I130c7, b/168762961)
- Android के साथ इंटरऑपरेबिलिटी को बेहतर बनाया गया है. इसके लिए, उन चाइल्ड Android व्यू को MotionEvents भेजना जारी रखा गया है जो
ACTION_DOWNको छोड़कर, सभी कार्रवाइयों के लिए onTouchEvent के लिए फ़ॉल्स वैल्यू दिखाते हैं (I94c5a, b/170320973) - Box को इनलाइन फ़ंक्शन बनाया गया. (Ibce0c, b/155056091)
बाहरी योगदान
AnnotatedString.capitalizeऔरAnnotatedString.decapitalizeके लिए अलग-अलग स्थान-भाषाओं का इस्तेमाल किया जा सकता है (I4aa7f)
वर्शन 1.0.0-alpha05
14 अक्टूबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इंस्पेक्टर की जानकारी देने के लिए डीएसएल जोड़ा गया (Ic9a22)
- LongPress को Text में ले जाएं. (Iff2bc)
- Experimental Modifier.pointerInput suspending input modifier (Ia77d2)
- कॉपी/चिपकाने/कट करने की सुलभता से जुड़ी कार्रवाइयां जोड़ी गईं (I6db4f)
- AndroidOwner के लिए सार्वजनिक कंस्ट्रक्टर हटा दिया गया (Iacaef)
- पॉप-अप और डायलॉग अब पैरंट विंडो से FLAG_SECURE को इनहेरिट करते हैं. इसे साफ़ तौर पर कॉन्फ़िगर करने का विकल्प भी जोड़ा गया है (I64966, b/143778148, b/143778149)
अब खपत के डेटा में बदलाव किया जा सकता है. इसके अलावा, एक्सटेंशन फ़ंक्शन को कॉल करने पर, अब नया PointerInputChange नहीं मिलता है. इसके बजाय, दिए गए PointerInputChange में बदलाव होता है.
यह दो चरणों वाली प्रोसेस का पहला चरण है. इसका मकसद PointerEvent डेटा को इस तरह से बदलना है कि उपयोगकर्ता के कोड से, अन्य पॉइंटर डेटा में बदलाव न किया जा सके. दूसरे चरण में,
List<PointerInputChange>सेPointerInputFilter.onPointerEvent(...)का रिटर्न टाइप हटाना होगा. (Id067e)टेक्स्ट में चुनने की सुविधा और डेमो बंद करें. (Ie7e97)
onGloballyPositioned को इनलाइन फ़ंक्शन बनाया गया (I15830)
OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है. साथ ही, onPositioned() का नाम बदलकर onGloballyPositioned() कर दिया गया है. (I587e8, b/169083903)
मालिक के लिए hasPendingMeasureOrLayout प्रॉपर्टी जोड़ी गई है. इससे यह पता चलता है कि मालिक के पास लेआउट से जुड़ा कोई काम बाकी है या नहीं. (I3d9f8, b/169038599)
प्रोग्राम के हिसाब से फ़ोकस हटाने के लिए API जोड़ा गया (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)को हटाया गया. इसकी जगहPointerInputFilter.onPointerEvent(...)का इस्तेमाल किया जाना चाहिए. (I6f04a)साइज में बदलाव
- Size.getFlipped को हटाया गया
- Size.rem को हटाया गया
- Removed Size.truncDiv (Ief44d, b/169790720)
इनलाइन क्लास के लिए, सेंटिनल वैल्यू को स्टैंडर्ड बनाने के लिए, Color.Unset का नाम बदलकर Color.Unspecified कर दिया गया है. ऐसा इसलिए किया गया है, ताकि यह अन्य इनलाइन क्लास (I97611, b/169797763) के साथ काम कर सके
TextOverflow.None को जोड़ा गया है. जब ओवरफ़्लो की वैल्यू None होती है, तब Text, ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने असल साइज़ की जानकारी देगा. (I175c9, b/158830170)
एपीआई में एक जैसा नाम रखने के लिए, AnnotatedString.Builder.addStringAnnotation में मौजूद स्कोप पैरामीटर का नाम बदलकर टैग कर दिया गया है. (I7c8cb)
गड़बड़ियां ठीक की गईं
- LazyColumn/Row की स्क्रोलिंग परफ़ॉर्मेंस को बेहतर बनाया गया है. इसके लिए, हर स्क्रोल पर सबकंपोज़िशन में कम काम किया जाता है. Composition क्लास के लिए, नया hasInvalidations() तरीका जोड़ा गया है. Recomposer के hasPendingChanges() तरीके का नाम बदलकर hasInvalidations() कर दिया गया है (Ib2f32, b/168293643, b/167972292, b/165028371)
- Float.POSITIVE_INFINITY के बजाय, अपडेट किए गए Size.Unspecified पैरामीटर को Float.NaN पर सेट किया गया है. Painter के लागू करने के तरीके को अपडेट किया गया है, ताकि Size.Unspecified के साथ-साथ नॉन-फ़ाइनिट साइज़ की जांच की जा सके. (I95a7e)
- कस्टम लेआउट में place() कॉल का क्रम अब चाइल्ड के लिए ड्रॉइंग का क्रम तय करता है (Ibc9f6)
- सुलभता के लिए, एनोटेटेडस्ट्रिंग को स्पैनबलस्ट्रिंग में बदलने की सुविधा जोड़ी गई है. (Ief907)
- Android की उन क्लास के लिए स्टब जोड़े गए हैं जो पुराने प्लैटफ़ॉर्म पर हैं, ताकि जब भी हो सके रिफ़्लेक्शन का इस्तेमाल न किया जाए. (Ia1790)
- बग ठीक किया गया: अगर सॉफ़्टवेयर कीबोर्ड दिखने की वजह से ऐप्लिकेशन ट्रांसलेट करता है, तो पॉइंटर इनपुट कोऑर्डिनेट गलत हो जाएंगे. (Ic4cec, b/163077821)
वर्शन 1.0.0-alpha04
1 अक्टूबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- OwnerScope जोड़ा गया है, ताकि लेआउट और ड्रॉइंग के ऑब्ज़र्वेशन स्कोप को इकट्ठा किया जा सके. ऐसा तब किया जाता है, जब वे अब मान्य नहीं रहते. (Ic4cf8)
- कॉन्टेंट के लेआउट को फिर से मेज़र करने और साइज़ बदलने पर, कॉलबैक पाने के लिए OnRemeasuredModifier और onSizeChanged() जोड़ा गया है. (I657cf, b/154108792)
- लंबे समय तक दबाकर रखने की सिमैंटिक कार्रवाई जोड़ी गई (I6281b, b/156468846)
- FocusManager को निजी के तौर पर सेट किया गया. (I7872f)
DrawModifier पर वैकल्पिक प्रॉपर्टी जोड़ने के बजाय, DrawCacheModifier को लागू करने के लिए अपडेट किया गया.
अलग-अलग तरीकों के लिए दस्तावेज़ अपडेट किए गए (Ibd166)
ऑब्जेक्ट बनाने से बचने के लिए, TextRange को इनलाइन करें. (Id034b)
PlacementScope#parentWidth और PlacementScope#parentLayoutDirection को अब कस्टम लेआउट के प्लेसमेंट ब्लॉक से नहीं पढ़ा जा सकता. (Icc1ae, b/168295623)
सेमैंटिक्स प्रॉपर्टी में AccessibilityScrollState जोड़ें. (Ifeda9)
Modifier.drawWithCache को पेश किया गया है, ताकि एक ऐसा ड्रॉइंग ऑब्जेक्ट बनाया जा सके जो साइज़/स्टेट की जानकारी पर निर्भर रहने वाली डिपेंडेंसी को शर्तों के हिसाब से फिर से बनाता है (I376dc)
ParagraphConstraints को हटा दिया गया है. चौड़ाई की जानकारी अब सीधे तौर पर पैराग्राफ़ को दी जाती है. (Ica712)
गड़बड़ियां ठीक की गईं
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- स्केल और रोटेशन ट्रांसफ़ॉर्मेशन एपीआई को अपडेट किया गया है. अब ये DrawScope और DrawTransform में x/y कोऑर्डिनेट के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट कोऑर्डिनेट को दिखाने के लिए एक ही ऑफ़सेट पैरामीटर का इस्तेमाल करेंगे
- Rect.expandToInclude और Rect.join तरीकों को हटाया गया
- दायरे से जुड़े दस्तावेज़ को अपडेट किया गया है. इसमें अंडाकार के साथ-साथ, दीर्घवृत्ताकार के बारे में भी बताया गया है
- दस्तावेज़ जोड़ा गया है. इससे पता चलता है कि इनलाइन रेडियस क्लास के लिए, सार्वजनिक कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसके बजाय, रेडियस ऑब्जेक्ट को उनके फ़ंक्शन कंस्ट्रक्टर के ज़रिए इंस्टैंटिएट किया जाना चाहिए
- topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी करने के लिए, RoundRect API हटा दिए गए हैं
- Rect.shift को बंद कर दिया गया है. अब Rect.translate का इस्तेमाल करें
- RoundRect.grow और Rect.shrink API हटा दिए गए हैं
- RoundRect.outerRect का नाम बदलकर Rect.boundingRect कर दिया गया है
- RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीके हटाए गए
- RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया है
- RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया है
- RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी के तौर पर बदला गया
- RoundRect कंस्ट्रक्टर को अपडेट किया गया है, ताकि वह x/y रेडियस वैल्यू के लिए अलग-अलग पैरामीटर के बजाय, रेडियस प्रॉपर्टी का इस्तेमाल कर सके
- ऐसे साइज़ एपीआई हटा दिए गए हैं जो यह मानते थे कि यह एक आयत है और इसका मूल बिंदु 0,0 पर है
- Radius में डिस्ट्रक्टिंग एपीआई जोड़ा गया
- RoundRect एक्सटेंशन फ़ंक्शन को प्रॉपर्टी के तौर पर माइग्रेट किया गया
- (I8f5c7, b/168762961)
- foundation.Box को बंद कर दिया गया है. इसके बजाय, कृपया foundation.layout.Box का इस्तेमाल करें. (Ie5950, b/167680279)
- स्टैक का नाम बदलकर Box कर दिया गया है. compose.foundation.layout में मौजूद नए Box के लिए, पहले से मौजूद Box को बंद कर दिया जाएगा. नए बॉक्स का व्यवहार यह है कि जब इसमें एक से ज़्यादा चाइल्ड होते हैं, तो उन्हें एक के ऊपर एक रखा जाता है. यह पिछले बॉक्स से अलग है, जो कॉलम की तरह काम करता था. (I94893, b/167680279)
- बॉक्स डेकोरेशन पैरामीटर का इस्तेमाल बंद कर दिया गया है. अगर आपको अपने बॉक्स में डेकोरेशन/पैडिंग चाहिए, तो इसके बजाय मॉडिफ़ायर का इस्तेमाल करें (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- कई Graphics API अपडेट किए गए
- DrawScope API को स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीकों के साथ अपडेट किया गया है. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद हटा दिया जाता है
- clipPath के दस्तावेज़ को अपडेट किया गया है, ताकि गोल किनारों वाले आयत के बजाय Path का इस्तेमाल किया जा सके
- clipPath में मौजूद right पैरामीटर के दस्तावेज़ में स्पेसिंग की समस्या ठीक की गई
- DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
- इनसेट तरीके में dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
- इसमें इनसेट ओवरलोड जोड़ा गया है. इससे चारों सीमाओं के लिए एक जैसी इनसेट वैल्यू मिलती है
- इंसर्ट करने के तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इंसर्ट करने का तरीका चारों साइड पर लागू होगा
- Rect क्लास के लिए दस्तावेज़ अपडेट किया गया
- kdoc स्टाइल से मेल खाने के लिए, Rect पैरामीटर पर टिप्पणियां अपडेट की गईं
- Rect.join और Rect.expandToInclude को हटाया गया
- Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को डेप्रिकेट किया गया
- (If086a, b/167737376)
- rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को @VisibleForTesting के साथ एनोटेट किया गया है. इन्हें इंटरनल एपीआई बनाया गया है और इनके kdoc को छिपाया गया है (I554eb, b/168308412)
- डिफ़ॉल्ट रूप से चुने जाने की सुविधा को बंद करने के लिए, SelectionContainer को सबसे ऊपर से हटाएं. इससे अनचाहे व्यवहार से बचा जा सकेगा. इसके बजाय, SelectionContainer का इस्तेमाल करके, उस कॉन्टेंट को रैप किया जा सकता है जिसे चुना जाना है. (I8dfe0, b/158459594)
वर्शन 1.0.0-alpha03
16 सितंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- आगे/पीछे स्क्रोल करने की सिमैंटिक कार्रवाइयों को हटाएं. AccessibilityRangeInfo में चरण जोड़े गए. (Ia47b0)
onInvalidate()कोOwnerसे हटाया गया --OwnedLayerअमान्य होने की स्थिति को मैनेज करता है. (Ica72b, b/162061312)Size API में, ऑपरेटर के उन तरीकों को हटाया गया है जो ऑफ़सेट पैरामीटर का इस्तेमाल करते हैं. इन कार्रवाइयों के नतीजे साफ़ तौर पर नहीं दिखते. साथ ही, इनके नतीजे उम्मीद के मुताबिक नहीं होते. उदाहरण के लिए, क्या साइज़ - ऑफ़सेट से, अंतर के साथ ऑफ़सेट या साइज़ का नतीजा मिलना चाहिए?
साथ ही, Size क्लास में बंद किए गए तरीकों को भी हटा दिया गया है. (Iec902, b/166514214)
गड़बड़ियां ठीक की गईं
- LazyColumn के आइटम कभी-कभी गलत तरीके से ड्रॉ हो जाते थे. इस समस्या को ठीक किया गया है. कुछ मामलों में, इसकी वजह से ऐप्लिकेशन क्रैश भी हो जाता था. (Ibcf17, b/163066980, b/165921895)
- DpConstraints और इसका इस्तेमाल करने वाले एपीआई अब काम नहीं करते. (I90cdb, b/167389835)
createAndroidComposeRuleऔरAndroidInputDispatcherकोandroidx.ui.test.androidसेandroidx.ui.testमें ले जाया गया (Idef08, b/164060572)- लेआउट एपीआई में, ग्रेविटी के इस्तेमाल के नाम को लगातार बदलकर अलाइन या अलाइनमेंट किया गया. (I2421a, b/164077038)
- ComposeTestRule पर addedOnNode और अन्य ग्लोबल तरीके जोड़े गए हैं, क्योंकि मौजूदा ग्लोबल तरीके बंद होने वाले हैं. (Ieae36)
वर्शन 1.0.0-alpha02
2 सितंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लेआउटनोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक हटाएं. (If654e, b/166106882)
- वेक्टर ग्राफ़िक पाथ पर filltype पैरामीटर के लिए सहायता जोड़ी गई है, ताकि evenOdd या NonZero पाथ फ़िल करने के नियमों के मुताबिक आकृतियों के कटआउट बनाए जा सकें. (I43dd2)
- अपटाइम और वेलोसिटी अब इनलाइन क्लास (I48f4a) हैं
- Duration अब एक इनलाइन क्लास (I565eb) है
- लेआउट नोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (Ic40b3)
उस समस्या को ठीक किया गया है जिसमें ऑफ़सेट और रेडियस के साथ Rect फ़ंक्शन कन्स्ट्रक्टर, Rect को बाएं, दाएं, ऊपर, नीचे के क्रम में बनाता था. हालांकि, इसे बाएं, ऊपर, दाएं, नीचे के क्रम में बनाना चाहिए.
Rect में, फ़ंक्शन कंस्ट्रक्टर के पक्ष में, बंद किए गए कंपैनियन तरीकों को हटा दिया गया है.
Rect.kt में मौजूद तरीकों की पुष्टि करने के लिए टेस्ट जोड़े गए (I08460, b/165822356)
गड़बड़ियां ठीक की गईं
- बदले जा सकने वाले आयत MutableRect को जोड़ा गया है. (I71bd2, b/160140398)
- Matrix4 को Matrix से बदल दिया गया है. vectormath पैकेज के अन्य सभी हिस्सों को हटा दिया गया है. (Ibd665, b/160140398)
कंपोज़ेबल फ़ंक्शन के लिए कॉलिंग कन्वेंशन बदल गया है. यह बाइनरी ब्रेकिंग चेंज है. Compose कंपाइलर प्लगिन के इस वर्शन के साथ काम करने के लिए, सभी लाइब्रेरी को फिर से कंपाइल करना होगा.
इस बदलाव से, सोर्स लेवल पर कोई बड़ा बदलाव नहीं हुआ है. ऐसा इसलिए, क्योंकि सिर्फ़ कंपाइलर एपीआई में बदलाव किया गया है. साथ ही, इन एपीआई के लिए ऑप्ट इन करना ज़रूरी है. (I7afd2, b/158123185)
उस क्रैश को ठीक किया गया है जो तब हो सकता है, जब PointerInputFilter को डिस्पैच करने से PointerInputFilter को तुरंत हटाया जा सकता है. (I58f25)
वर्शन 1.0.0-alpha01
26 अगस्त, 2020
androidx.compose.ui:ui-*:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 0.1.0-dev
वर्शन 0.1.0-dev17
19 अगस्त, 2020
androidx.compose.ui:ui-*:0.1.0-dev17 रिलीज़ हो गया है. वर्शन 0.1.0-dev17 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
emitViewका अब इस्तेमाल नहीं किया जा सकता. अगर हो सके, तो Compose में व्यू दिखाने के लिएAndroidViewका इस्तेमाल करें. ध्यान दें कि आने वाले समय में, व्यू और व्यूग्रुप को सीधे तौर पर कंपोज़ करने की सुविधा काम नहीं करेगी. ऐसा तब तक नहीं होगा, जब तक ये कंपोज़िशन ट्री में लीफ़ न हों. ऐसा AndroidView का इस्तेमाल करके किया जा सकता है. (I29b1e, b/163871221)FocusState2अब काम नहीं करता है. इसेFocusState(Ia8b79, b/160822876, b/160923332) से बदल दिया गया है- AndroidView के बंद किए गए ओवरलोड हटा दिए गए हैं. (I946b9, b/163802393)
- कस्टम इवेंट अब यह एलान कर सकते हैं कि उनके एक या उससे ज़्यादा सेटर को स्किप किया जा सकता है. साथ ही, उन्हें इवेंट से अलग करके फिर से कंपोज़ किया जा सकता है. (Ibbd13)
वेक्टर क्लास को अब डेटा क्लास नहीं माना जाएगा, क्योंकि कंपोज़िशन के लिए एक ही ऑब्जेक्ट इंस्टेंस का इस्तेमाल किया जाता है.
VectorPainter के लिए mutableStateOf फ़्लैग जोड़ा गया है, ताकि वेक्टर के कॉन्टेंट में बदलाव होने पर, उसे फिर से ड्रा किया जा सके.
VectorComponent इंस्टेंस को फिर से फ़ैक्टर किया गया है, ताकि यह VectorPainter का हिस्सा बन सके. ऐसा इसलिए किया गया है, क्योंकि इसे कंपोज़िशन में फिर से इस्तेमाल किया जाता है.
GroupComponent और PathComponent को अपडेट किया गया है, ताकि उनके नाम वाले फ़ील्ड में बदलाव किया जा सके (Ieae45, b/151378808)
onChildPositionedऔरOnChildPositionedModifierको हटाया गया. डेवलपर को इसके बजाय, चाइल्ड लेआउट परonPositionedऔरOnPositionedModifierका इस्तेमाल करना चाहिए. (I4522e, b/162109766)ऑफ़सेट को अब इनलाइन क्लास (Iaec70) के तौर पर इस्तेमाल किया जाता है
SelectionContainer में मॉडिफ़ायर पैरामीटर जोड़ा गया (I4aada, b/161487952)
डेप्रिकेट किए गए FocusModifier को हटाया गया (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
mergePolicyलैंबडा कोSemanticsPropertyKeyमें जोड़ा गया. इसका इस्तेमाल, mergeAllDescendants सिमैंटिक मर्जिंग के लिए कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के तहत, अगर पैरंट वैल्यू पहले से मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)Constraints अब एक इनलाइन क्लास है (I88736)
FocusManager जोड़ा गया है. यह फ़ोकस करने के सामान्य लॉजिक को AndroidComposeView से बाहर ले जाता है (I528ef, b/161487952, b/162206799)
ऐल्फ़ा वर्शन के लिए, PointerEventPass के नाम अपडेट किए गए. (Ifda6f)
IntOffset अब एक इनलाइन क्लास है (Iac0bf)
IntSize अब एक इनलाइन क्लास (I2bf42) है
PlacementScope.placeAbsolute()का नाम बदलकरPlacementScope.place()कर दिया गया है. साथ ही,PlacementScope.place()का नाम बदलकरPlacementScope.placeRelative()कर दिया गया है. इस वजह से,PlacementScope.place()तरीका अब दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में, अपने-आप स्थिति को मिरर नहीं करेगा. अगर आपको ऐसा करना है, तो इसके बजायPlacementScope.placeRelative()का इस्तेमाल करें. (I873ac, b/162916675)AlertDialog अब बटन के लिए FlowRow का इस्तेमाल करता है (I00ec1, b/161809319, b/143682374)
कुछ टेस्ट यूटिलिटी को गैर-सार्वजनिक बना दिया गया है, क्योंकि वे सही जगह पर नहीं हैं. इसे आने वाले समय में सार्वजनिक किया जाएगा. (I32ab1)
पॉइंटर इनपुट कोड को फिर से व्यवस्थित किया गया है. (Ie3f45)
Rect के पक्ष में PxBounds को बंद कर दिया गया है. PxBounds के सभी इस्तेमाल को rect से अपडेट किया गया है. साथ ही, माइग्रेशन में मदद करने के लिए, प्रॉपर डेप्रिकेट/रिप्लेस के साथ एनोटेशन जोड़े गए हैं. (I37038, b/162627058)
अब सेवा में नहीं है/अब काम नहीं करता KeyEvent2 को हटाया गया. इसके बजाय, KeyEvent का इस्तेमाल करें. (Ied2d0, b/162097587)
KeyEvent में एक यूनिकोड प्रॉपर्टी होती है. इसका इस्तेमाल, तय की गई कुंजी और मेटा कुंजी की स्थिति के कॉम्बिनेशन (If3afc) से जनरेट किए गए यूनिकोड वर्ण को पाने के लिए किया जा सकता है
DelayUp कस्टम इवेंट और उससे जुड़ी क्लास को ऑप्ट इन एपीआई बनाया गया है, क्योंकि इसमें बदलाव होने की संभावना है. (I56d6f)
अब ज़रूरी नहीं रह गए दो PointerEventPasses हटा दिए गए हैं. (I3dd9d)
Paragraph.paint में पैरामीटर color, shadow, और TextDecoration जोड़ें. यह फ़ंक्शन, Paragraph को बेवजह फिर से बनाने से बचने के लिए काम का है. (I81689)
गड़बड़ियां ठीक की गईं
- TextField से onFocusChanged कॉलबैक हटा दिए गए हैं. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
- Modifier.drawBorder का इस्तेमाल बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border डेटा क्लास को BorderStroke से बदल दिया गया है (I4257d, b/158160576)
FrameManager के उन कॉल को हटा दिया गया है जो अब इस्तेमाल में नहीं हैं.
इंटरनल कंपोज़ एपीआई में बदलाव किया गया है, ताकि
mutableStateof()(I80ba6) जैसे स्टेट ऑब्जेक्ट को ट्रैक करने के लिए, ओवरहेड की मात्रा को कम किया जा सकेVerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करें (I73b0d, b/163019183)
ऐसी समस्या को ठीक किया गया है जिसमें for लूप के अंदर, स्थिति को सेव करने वाली किसी चीज़ का इस्तेमाल करने पर ऐप्लिकेशन क्रैश हो जाता था. अब savedInstanceState() में एक ही कुंजी का इस्तेमाल किया जा सकता है. UiSavedStateRegistry का एपीआई, अब इस नई ज़रूरत के हिसाब से काम करेगा (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
अब
state { ... }कंपोज़ेबल का इस्तेमाल नहीं किया जा सकता. इसके बजाय, साफ़ तौर परremember { mutableStateOf(...) }को कॉल करें. इससे स्टेट मैनेजमेंट के लिए, एपीआई के कुल सर्फ़ेस और कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी डेलिगेशन के लिएby mutableStateOf()पैटर्न से मेल खाता है. (Ia5727)Compose के नाम रखने के पैटर्न के हिसाब से, RRect का नाम बदलकर RoundRect कर दिया गया है RRect के लिए, मिलते-जुलते फ़ंक्शन कंस्ट्रक्टर बनाए गए हैं RRect फ़ंक्शन कंस्ट्रक्टर (I5d325) को बंद कर दिया गया है
वर्शन 0.1.0-dev16
5 अगस्त, 2020
androidx.compose.ui:ui-*:0.1.0-dev16 रिलीज़ हो गया है. वर्शन 0.1.0-dev16 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- OnChildPositioned को बंद कर दिया गया है. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)
- setViewContent को बंद कर दिया गया है. इसके बजाय, setContent का इस्तेमाल किया जाना चाहिए. (I7e497, b/160335130)
- ViewBinding के आधार पर, लेआउट संसाधनों को बढ़ाने और कंपोज़ करने के लिए AndroidViewBinding API जोड़ा गया. (I081c6)
- KeyEvent2 को KeyEvent से बदल दिया गया है (I2d770, b/162097585)
- वैकल्पिक हार्डवेयर कुंजी (I9036b) के लिए सहायता जोड़ी गई
- FocusManager का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus(), Modifier.focusObserver(), और Modifier.focusRequester() का इस्तेमाल करें. (I74ae4, b/162211322)
- loadVectorResource, trimPath एट्रिब्यूट (I808fe) के साथ काम करता है
- डायलॉग को यूज़र इंटरफ़ेस (यूआई) पर ले जाएं (I47fa6)
- अब ज़रूरी नहीं रह गए दो PointerEventPasses हटा दिए गए हैं. (I33ca7)
- PointerInteropModifier लागू किया गया है. इससे MotionEvents पाने और Compose के साथ इंटरैक्ट करने की सुविधा मिलती है. ऐसा तब होता है, जब Android View लागू किया गया हो. (Ieb08c)
- इस्तेमाल में नहीं रहे टैग मॉडिफ़ायर को हटा दिया गया है. इसके बजाय, कृपया layoutId का इस्तेमाल करें. (Idaa05, b/162023919)
- दाएं से बाएं लिखने की सुविधा के लिए, एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient को जोड़ा गया है. इसका इस्तेमाल, लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)
- वेक्टर ग्राफ़िक में पाथ ट्रिम करने की सुविधा जोड़ी गई (Ie16c9, b/158188351)
- Modifier.layout() जोड़ा गया. इससे कस्टम लेआउट मॉडिफ़ायर आसानी से बनाया जा सकता है (I73b69, b/161355194)
- नया AndroidView API जोड़ा गया है और मौजूदा एपीआई को बंद कर दिया गया है. (I5bcfd)
- Modifier.plus अब काम नहीं करता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से, क्रम के बारे में ज़्यादा जानकारी मिलती है. साथ ही, इसमें
Modifier.padding().background() + anotherModifierटाइप करने की अनुमति नहीं है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964) - व्यू हैरारकी में Compose कॉन्टेंट को होस्ट करने के लिए, [Abstract]ComposeView की व्यू सबक्लास जोड़ें. (I46357)
RowऔरColumnअब इनलाइन फ़ंक्शन हैं. इससे, इनका इस्तेमाल करने में होने वाला ओवरहेड काफ़ी कम हो गया है. (I75c10)- SubcomposeLayout को जोड़ा गया है. यह एक लो लेवल प्रिमिटिव है. इसकी मदद से, मेज़रमेंट के दौरान चाइल्ड कॉम्पोनेंट बनाए जा सकते हैं. ऐसा तब किया जाता है, जब हमें सबट्री कंपोज़िशन के लिए, मेज़रमेंट के दौरान बाद में उपलब्ध होने वाली कुछ वैल्यू का इस्तेमाल करना हो. उदाहरण के लिए, WithConstraints को SubcomposeLayout का इस्तेमाल करके लागू नहीं किया जाता है. (I25cc8)
- Compose हैरारकी (Icdf26, b/161336532) के रूट के हिसाब से SemanticsNode की पोज़िशन पाने के लिए,
SemanticsNode.positionInRootको जोड़ा गया - MotionEvent को Android से Compose और फिर वापस Android में पास किया गया. (I14be8, b/158034713)
- dropdownPopup को हटा दिया गया है. (I00430)
- कट-आउट डिसप्ले पर पॉप-अप की जगह तय की गई है. (Idd7dd)
- TextLayoutResult (I9d6e6) पाने के लिए, सुलभता से जुड़ी कार्रवाई जोड़ें
- RemeasurementModifier जोड़ा गया. इससे लेआउट को एक साथ फिर से मेज़र किया जा सकता है. आम तौर पर, इसकी ज़रूरत नहीं होती, क्योंकि रीमेज़र/रीलेआउट अपने-आप होता है. हालांकि, हम इसका इस्तेमाल स्क्रोल के दौरान LazyColumnItems में करते हैं. (I5f331, b/160791058)
- getLineEllipsisOffset/getLineEllipsisCount को हटाएं. इसके बजाय, getLineVisibleEnd/getLineEnd/isLineEllipsized का इस्तेमाल करें. (I85aa2)
- सबसे सही तरीके से काम करने के लिए, कुछ मार्क/एनोटेशन जोड़ें. (I66b20)
- TextLayoutResult में ज़्यादा लाइन एपीआई उपलब्ध कराए गए हैं. (I79bd2)
- बिल्ट-इन यूनिट को बदलने के लिए, बिल्ट-इन वेक्टर कन्वर्टर अब Foo.VectorConverter के ज़रिए ऐक्सेस किए जा सकते हैं. उदाहरण के लिए, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter वगैरह (I3e273)
गड़बड़ियां ठीक की गईं
- एपीआई से जुड़ी कई समस्याओं को ठीक किया गया (I077bc)
- इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाएं
- Offset और IntOffset क्लास को अलाइन किया गया है, ताकि एपीआई का एक जैसा इंटरफ़ेस हो
- Offset API के साथ एक जैसा रखने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero कर दिया गया है
- उपयोगकर्ताओं को अपने Canvas इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है
- DrawScope को refactor करने के लिए, EmptyCanvas क्लास का स्टब बनाया गया है, ताकि इसे lateinit के बजाय non-null पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड में null वैल्यू न हो
- ClipOp एनम का नाम बदलकर, पास्कल केस में रखा गया
- FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeJoin enum का नाम बदलकर, पास्कल केस में रखा गया
- PointMode enum के नाम बदलकर, उन्हें पास्कल केस में कर दिया गया है
- PaintingStyle enum के नाम बदलकर, उन्हें पास्कल केस में कर दिया गया है
- PathFillType enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeCap enum का नाम बदलकर पास्कल केस कर दिया गया है
- DrawCache को लागू करने के तरीके को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है. अब यह fillPaint और strokePaint इंटरनल पैरामीटर के लिए, लेज़ी डेलिगेशन का इस्तेमाल नहीं करेगा
- इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न करना पड़े
- @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
- हर पाथ के निर्देश के लिए @Immutable एनोटेशन पाने के लिए, PathNode को अपडेट किया गया
- वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए ज़रूरत से ज़्यादा शर्तों की जांच न हो. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही इनकी जांच करता है
- फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद कर दिया गया है
- @Immutable और @Stable एपीआई के साथ अपडेट की गई ब्रशिंग क्लास और फ़ंक्शन कंस्ट्रक्टर
- VertexMode enum को PascalCase में अपडेट किया गया
- DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि पेंट पर स्ट्रोक पैरामीटर को शर्तों के आधार पर बदला जा सके. ऐसा तब किया जाएगा, जब वे बदल गए हों
- साइज़ को अपडेट किया गया है, ताकि इसमें डिस्ट्रक्चरिंग एपीआई जोड़ा जा सके. साथ ही, UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया है. इसके अलावा, इस्तेमाल न किए गए तरीकों को हटा दिया गया है
- API लेवल के आधार पर, Android फ़्रेमवर्क के BlendModes और PorterDuff मोड के बीच सही तरीके से मैप करने के लिए, कंपोज़ के BlendMode API के इस्तेमाल को अपडेट किया गया है. BlendMode#isSupported API को पेश किया गया है. यह एक क्षमता क्वेरी के तौर पर काम करता है. इससे यह तय किया जा सकता है कि BlendMode का इस्तेमाल करने से पहले, यह डिवाइस पर काम करता है या नहीं. (I0ef42)
- LazyItemScope को Lazy लिस्ट के itemContent पैरामीटर के लिए जोड़ा गया था. यह पैरंट के ज़्यादा से ज़्यादा साइज़ को भरने के लिए मॉडिफ़ायर उपलब्ध कराता है. इससे उस समस्या को हल किया जा सकता है जब आइटम को व्यूपोर्ट और रेगुलर Modifier.fillMaxSize() को भरना चाहिए. हालांकि, आइटम को इनफ़िनिटी कंस्ट्रेंट के साथ मेज़र किया जाता है, इसलिए यह काम नहीं करता. (Ibd3b2, b/162248854)
SemanticsNodeInteraction.performPartialGestureको हटाया गया. इसके बजाय,SemanticsNodeInteraction.performGestureका इस्तेमाल करें. (Id9b62)LazyColumnItemsका नाम बदलकरLazyColumnForकर दिया गया है.LazyRowItemsका नाम बदलकरLazyRowFor(I84f84) कर दिया गया हैfoundation.shape.cornerपैकेज कोfoundation.shareमें बदल दिया गया है (I46491, b/161887429)AndroidComposeTestRuleका नाम बदलकरcreateAndroidComposeRuleकर दिया गया. (I70aaf)TextLayoutResultमें ज़्यादा एपीआई जोड़े गए. (Id7e04)- Material
FilledTextFieldका नाम बदलकरTextFieldऔर foundationalTextFieldका नाम बदलकरBaseTextFieldकर दिया गया है. इससे, सबसे आसान एपीआई को ढूंढना और इस्तेमाल करना आसान हो जाएगा (Ia6242, b/155482676) - Modifier.drawBackground का नाम बदलकर Modifier.background कर दिया गया है (I13677)
वर्शन 0.1.0-dev15
22 जुलाई, 2020
androidx.compose.ui:ui-*:0.1.0-dev15 रिलीज़ हो गया है. वर्शन 0.1.0-dev15 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़ा अपडेट
- Compose के
0.1.0-dev15वर्शन का इस्तेमाल करने के लिए, आपको अपनी डिपेंडेंसी अपडेट करनी होंगी. इसके लिए, डिपेंडेंसी तय करना सेक्शन में ऊपर दिखाए गए नए कोड स्निपेट का इस्तेमाल करें.
एपीआई में हुए बदलाव
- FocusModifier को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus, Modifier.focusRequester, और Modifier.focusObserver का इस्तेमाल करें. FocusState और FocusDetailedState को अब इस्तेमाल नहीं किया जा सकता. इनके बजाय, FocusState2 का इस्तेमाल करें (I46919, b/160822875, b/160922136)
- फ़ोकस की स्थिति में बदलाव को मॉनिटर करने के लिए, एक मॉडिफ़ायर जोड़ा गया. (I05866, b/160924455, b/160923326)
- फ़ोकस में बदलाव करने के अनुरोध के लिए एक मॉडिफ़ायर जोड़ा गया (I8dd73, b/161182057, b/160924778)
- टूलबार मेन्यू को इस तरह से अडजस्ट करें कि कॉपी, कट, और चिपकाएं विकल्प ठीक से दिखें. (Id3955)
- सिंगल-वैल्यू सिमैंटिक्स प्रॉपर्टी अब कॉलिंग स्टाइल का इस्तेमाल करती हैं.
उदाहरण के लिए, 'semantics { hidden = true }' को अब इस तरह लिखा जाता है:
semantics { hidden() }. (Ic1afd, b/145951226, b/145955412) - Modifier.focus जोड़ा गया है. यह FocusModifier की जगह लेता है. (Ib852a, b/160924778)
- TextField में टेक्स्ट चुनने के लिए, FloatingToolbar जोड़ा गया. (Ie8b07)
- कीबोर्ड से इनपुट देने से जुड़े एपीआई (I53c0a) के लिए, एक्सपेरिमेंटल एपीआई एनोटेशन जोड़ा गया
- फ़ोकस से जुड़े सभी एपीआई के लिए, एक्सपेरिमेंटल एपीआई एनोटेशन जोड़ा गया (I53b24, b/160903352)
- FocusState2 जोड़ा गया है. यह FocusDetailedState (I0a3ba, b/160822595) की जगह लेगा
- ExperimentalFocus जोड़ा गया है. यह Focus API के लिए @OptIn एनोटेशन है. (I1544b, b/160820961)
- IntBounds यूनिट क्लास जोड़ी गई है. यह लेआउट से पूर्णांक पिक्सल की सीमाओं को दिखाती है. PopupPositionProvider के एपीआई को अपडेट कर दिया गया है, ताकि इसका इस्तेमाल किया जा सके. (I0d8d0, b/159596546)
- ऐप्लिकेशन को अब कंपोज़िशन (Ibe697) को हटाने के लिए, clear() तरीके की ज़रूरत होती है
- KeyEvent अब काम नहीं करता. इसे KeyEvent2 (I68730) से बदल दिया गया है
- टेस्ट फ़ाइंडर में, useUnmergedTree नाम का एक नया वैकल्पिक फ़्लैग जोड़ा गया. (I2ce48)
- LayoutNode के एक्सपेरिमेंटल एपीआई को बनाया गया (I4f2e9)
अलग-अलग तरह की इनलाइन क्लास में कॉपी करने के तरीके जोड़े गए हैं. इनमें ये शामिल हैं:
- ऑफ़सेट
- साइज़
- दायरा
- मोशन
TransformOrigin
Size.copy कंपैनियन ऑब्जेक्ट के तरीके को बंद कर दिया गया है इंस्टेंस कॉपी करने के तरीके का इस्तेमाल करें (Ife290, b/159905651)
पॉप-अप, डायलॉग, और मेन्यू अब कॉन्टेक्स्ट के हिसाब से MaterialTheme का इस्तेमाल कर रहे हैं (Ia3665, b/156527485)
TextDirection का नाम बदलकर ResolvedTextDirection (I3ff38) कर दिया गया है
Layout() फ़ंक्शन के मेज़र ब्लॉक से, लेआउट की दिशा का पैरामीटर हटा दिया गया है. हालांकि, लेआउट की दिशा को मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए, कॉलबैक के अंदर उपलब्ध कराया जाता है
दोबारा इस्तेमाल करने के लिए, SelectionHandles को रीफ़ैक्टर किया गया. (I420e0)
क्लिक करने की सुविधा हटा दी गई है. Modifier.clickable (I84bdf) का इस्तेमाल करें
TestTag और Semantics को मिटा दिया गया है. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)
इस बदलाव से पहले, अगर कोई (I5205a, b/158123804) मौजूद होता था, तो कंपोज़ कंपाइलर प्लगिन, @Composable फ़ंक्शन के अंदर कंस्ट्रक्टर को कॉल करने के अनुरोधों को इंटरसेप्ट कर लेता था.
Modifier.tag का नाम बदलकर Modifier.layoutId कर दिया गया है, ताकि Modifier.testTag के साथ भ्रम न हो. (I995f0)
Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की इंट वैल्यू अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)
AndroidView कंपोज़ेबल में, मॉडिफ़ायर पैरामीटर जोड़ा गया. (I48a88, b/158746303)
Semantics() अब काम नहीं करता. इसके बजाय, Modifier.semantics() का इस्तेमाल करें. (I72407, b/158841414)
viewModel() कंपोज़ेबल जोड़ा गया है. इससे, पहले से बनाए गए ViewModel को उसी तरह से बनाया या पाया जा सकता है जिस तरह से यह Activity या Fragment में काम करता है (I5fdd1)
IntPx के बजाय Int का इस्तेमाल किया गया. IntPxPosition के बजाय IntOffset का इस्तेमाल किया गया. IntPxSize को IntSize से बदला गया. (Ib7b44)
साइज़ की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxSize के बजाय Size क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. इससे दो फ़्लोट वैल्यू को एक साथ पैक करने में मदद मिलती है, ताकि चौड़ाई और ऊंचाई को फ़्लोट के तौर पर दिखाया जा सके. (Ic0191)
पोजीशनिंग की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. साथ ही, x और y ऑफ़सेट को दिखाने के लिए, दो फ़्लोट वैल्यू को पैक करने के लिए एक लॉन्ग का इस्तेमाल किया जा सकता है. (I3ad98)
पिक्सेल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है. पूरी Px क्लास मिटा दी गई (I3ff33)
पिक्सेल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I086f4)
पिक्सल पैरामीटर (Id3434) के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है
पिक्सेल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I97a5a)
TestTag अब काम नहीं करता. इसके बजाय, Modifier.testTag का इस्तेमाल करें. (If5110, b/157173105)
ParentDataModifier#modifyParentData के डिफ़ॉल्ट, नो-ऑप, इंप्लीमेंटेशन को हटा दिया गया है. यह इंटरफ़ेस को लागू न करने के बराबर था. (I0deaa)
पहले से बंद की जा चुकी ScaleFit को हटा दिया गया है. इसके बजाय, ContentScale का इस्तेमाल करें. (Ifbc5b)
पिक्सेल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I19d02)
ui-material में DropdownMenu कॉम्पोनेंट जोड़ा गया है. यह कॉम्पोनेंट, मटीरियल डिज़ाइन मेन्यू को लागू करता है. (I9bb3d)
LayoutTag() को हटा दिया गया है. इसके बजाय, कृपया Modifier.tag() का इस्तेमाल करें. अब Modifier.matchParent() का इस्तेमाल नहीं किया जा सकता. इसके बजाय, कृपया Modifier.matchParentSize() का इस्तेमाल करें. (If8044)
पिक्सेल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I57bff)
Modifier.semantics को फिर से इस्तेमाल किया जा सकता है, ताकि इसका इस्तेमाल हाई लेवल कॉम्पोनेंट के लिए किया जा सके. (I4cfdc)
CanvasScope को लागू करने के तरीके को बेहतर बनाया गया है. अब सिर्फ़ DrawScope और ContentDrawScope उपलब्ध हैं. CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस को लागू करने के लिए, DrawScope को अपडेट किया गया है. साथ ही, LayoutDirection उपलब्ध कराया गया है ContentDrawScope में DrawScope की सबक्लास को मिटाया गया है Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब RTL प्रॉपर्टी को बनाए न रखें DrawScope पहले से ही इसे मैन्युअल तरीके से उपलब्ध कराता है (I1798e)
DoubleTapGestureFilter अब पूरे ट्री में SingleTapGestureFilter के बीच अंतर करता है. (If92b1)
अलाइनमेंट एपीआई को अपडेट किया गया है. साथ ही, ऐब्सलूट अलाइनमेंट के लिए सहायता जोड़ी गई है. यह आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता (I38cd3)
DrawLayer मॉडिफ़ायर एपीआई में बदलाव किया गया है: outlineShape का नाम बदलकर shape कर दिया गया है. इसकी डिफ़ॉल्ट वैल्यू RectangleShape है और अब इसे शून्य नहीं किया जा सकता; clipToOutline का नाम बदलकर clip कर दिया गया है; clipToBounds को हटा दिया गया है, क्योंकि यह RectangleShape के साथ clip == true के बराबर है (I7ef11, b/155075735)
ज़्यादा लेवल वाले Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय Canvas को दिखाते हैं. इससे उपभोक्ताओं को अपने Paint ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी Canvas का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, Canvas के साथ ड्राइंग के निर्देश जारी करने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
WithConstraints ट्रेलिंग लैम्डा एपीआई को बदल दिया गया है. अब इसमें दो पैरामीटर के बजाय रिसीवर स्कोप है. यह कंस्ट्रेंट और layoutDirection के साथ-साथ, Dp में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी भी उपलब्ध कराता है (I91b9a, b/149979702)
LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया है. (Id29f3)
LayoutModifier इंटरफ़ेस को हटाया गया, जो अब इस्तेमाल में नहीं है. (I2a9d6)
Layout और LayoutModifier2 में मौजूद इंट्रिंसिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिंसिक क्वेरी एपीआई को लेआउट की दिशा के बारे में जानकारी देता है. (Id9945)
Layout और LayoutModifier के चाइल्ड को, लेआउट की अलग दिशा के हिसाब से मेज़र किया जा सकता है. (Ibd731)
एक ही पैरंट लेआउट में मौजूद चाइल्ड के ड्रॉइंग ऑर्डर को कंट्रोल करने के लिए, नया Modifier.zIndex() जोड़ा गया है. DrawLayerModifier पर मौजूद elevation प्रॉपर्टी का नाम बदलकर shadowElevation कर दिया गया है. साथ ही, अब यह ड्रॉइंग ऑर्डर को कंट्रोल नहीं करती है. DrawShadow के पैरामीटर का क्रम बदल गया है: एलिवेशन अब पहला पैरामीटर है और शेप दूसरा पैरामीटर है. इसका डिफ़ॉल्ट मान RectangleShape है. (I20150, b/152417501)
मालिक के लिए, onSizeChange और onPositionChange को हटा दिया गया है. (I5c718)
Constraints2 जोड़ा गया है. यह Constraints की कॉपी है. यह IntPx के बजाय सिर्फ़ Int connstraints वैल्यू के साथ काम करता है. IntPx को हटा दिया जाएगा और सभी पूर्णांक की सीमाओं को Android की तरह पिक्सल मान लिया जाएगा.
- IntSize को भी जोड़ा गया है. यह सुविधा, IntPxSize की जगह ले लेगी. (I4b43a)
एलाइनमेंट को किसी भी वैल्यू के साथ इंस्टैंटिएट किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)
alignToSiblings अब Placeable के बजाय Measured को स्वीकार करता है. (I5788d)
-
- ScaleFit का नाम बदलकर ContentScale कर दिया गया है
- ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में रहे.
- FillMaxDimension का नाम बदलकर Crop कर दिया गया है
- FillMinDimension का नाम बदलकर Fit कर दिया गया है
- Fit का नाम बदलकर Inside कर दिया गया है, ताकि यह ज़्यादा सटीक हो
- ImageView.ScaleType के बराबर
- दस्तावेज़ जोड़ा गया है. इसमें बताया गया है कि Crop और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_CROP के जैसा ही नतीजा देता है. साथ ही, Fit और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.FIT_CENTER के जैसा ही नतीजा देता है. इसके अलावा, Inside और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_INSIDE के जैसा ही नतीजा देता है
ड्रॉ मॉडिफ़ायर के लिए, RTL की सुविधा. (I0aaf9)
एक्सएमएल से Android व्यू को बड़ा करने के लिए एपीआई रिलीज़ किया गया. ज़्यादा जानकारी के लिए, ViewInCompose डेमो देखें. (I42916)
DrawModifier API को बेहतर बनाया गया है:
- draw() के लिए रिसीवर स्कोप को ContentDrawScope बनाया गया
- draw() पर मौजूद सभी पैरामीटर हटा दिए गए हैं
- DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
- ContentDrawScope में drawContent() तरीका है (Ibaced, b/152919067)
LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)
DrawLayerModifier और drawLayer() अब clipToBounds और clipToOutline को डिफ़ॉल्ट रूप से फ़ॉल्स पर सेट करते हैं. (I0eb8b, b/152810850)
LayoutResult का नाम बदलकर MeasureResult कर दिया गया है. (Id8c68)
लेआउट मॉडिफ़ायर तय करने के लिए, नया एपीआई LayoutModifier2 जोड़ा गया; LayoutModifier (If32ac) अब काम नहीं करता
मॉडिफ़ायर प्लस ऑपरेटर को फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) से बदल दिया गया है
translationX/Y प्रॉपर्टी जोड़ी गई हैं. इनकी मदद से, किसी लेयर के लिए ड्रॉइंग कमांड की डिसप्ले लिस्ट को ऑफ़सेट किया जा सकता है. यह सुविधा, ऐनिमेशन या टच इवेंट के जवाब में कॉन्टेंट को मूव करने के लिए काम की है. (I8641c)
लेयर एपीआई में pivotX और pivotY पैरामीटर जोड़े गए हैं, ताकि लेयर पर किसी खास पॉइंट के आस-पास रोटेशन और स्केलिंग की जा सके (Icf7c3)
OnPositioned और OnChildPositioned कंपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)
LayerModifier जोड़ा गया है. यह एक ऐसा मॉडिफ़ायर है जिसकी मदद से, लेआउट के लिए RenderNode जोड़ा जा सकता है. इसकी मदद से, क्लिपिंग, ओपैसिटी, रोटेशन, स्केलिंग, और शैडो सेट की जा सकती हैं. यह RepaintBoundary की जगह लेगा. (I7100d, b/150774014)
लेआउट की दिशा को पैरंट लेआउट नोड से चाइल्ड नोड तक ले जाने की सुविधा जोड़ी गई. लेआउट की दिशा बदलने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)
स्टैक कॉम्पोनेंट, दाएं से बाएं लिखने की सुविधा के साथ काम करता है (Ic9e00)
Compose लेआउट में RTL के लिए शुरुआती सहायता (Ia5519)
Density और DensityScope को एक ही इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय सिर्फ़ with(density) (I11cb1)
LayoutCoordinates में बदलाव किया गया है, ताकि providedAlignmentLines को Map के बजाय Set बनाया जा सके. साथ ही, LayoutCoordinates में वैल्यू वापस पाने के लिए, get() ऑपरेटर को लागू किया जा सके. इससे मॉडिफ़ायर के लिए, हर मॉडिफ़ायर के लिए नया कलेक्शन बनाए बिना, सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. (I0245a)
LayoutCoordinates में अब position प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के लिए, position प्रॉपर्टी का कोई मतलब नहीं होता. इसके बजाय, डेवलपर को parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए, ताकि एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म की गणना की जा सके.
LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए, लेआउट में पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, लेआउट के सभी साइज़ में पूर्णांक का इस्तेमाल किया जाना चाहिए, न कि फ़्लोटिंग पॉइंट वैल्यू का. (I9367b)
पाबंदियों (I0fd15) के एपीआई सरफ़ेस में सुधार किए गए हैं
CanvasScope API बनाया गया है. यह Canvas ऑब्जेक्ट को रैप करता है, ताकि बिना किसी स्टेटस के, डिक्लेरेटिव ड्राइंग एपीआई सरफेस को दिखाया जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर स्कोप में शामिल होते हैं. साथ ही, साइज़िंग की जानकारी भी, उससे जुड़े इंसर्ट बाउंड्री के हिसाब से तय होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, Paint स्टेट ऑब्जेक्ट को बनाए रखने की ज़रूरत नहीं होती.
- CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि उसमें डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके
इस्तेमाल नहीं किए जा रहे MaskFilter API को हटा दिया गया है. ऐसा इसलिए किया गया है, क्योंकि इसका इस्तेमाल सीमित है और ज़्यादातर इस्तेमाल के मामलों में, यह हार्डवेयर ऐक्सेलरेट के लिए ऑप्टिमाइज़ नहीं किया गया है (I54f76)
RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)
एपीआई में, नल हो सकने वाले Color के सभी इस्तेमाल को, नल नहीं हो सकने वाले Color से बदल दिया गया है. साथ ही, null की जगह Color.Unset का इस्तेमाल किया गया है (Iabaa7)
ImagePainter में एक और वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि इमेजसेट के किसी सबसेट को ड्रा करने की सुविधा दी जा सके (I0ea9e)
'सेट नहीं है' रंग जोड़ा गया है, ताकि रंगों को बॉक्स में रखे बिना, सेट नहीं की गई वैल्यू को दिखाया जा सके. (If901a)
ट्रांसफ़ॉर्मेशन के लिए वैकल्पिक पिवट कोऑर्डिनेट का इस्तेमाल करने के लिए, Canvas.rotate और Canvas.scale एक्सटेंशन के तरीके जोड़े गए. ये डिफ़ॉल्ट रूप से, कैनवस के मौजूदा अनुवाद के सबसे ऊपर बाएं कोने में दिखते हैं.
Canvas.rotateRad को भी एक एक्सटेंशन मेथड के तौर पर ले जाया गया है, ताकि यह एक जैसा रहे (Ibaca6)
PixelMap API बनाया गया है, ताकि ImageAsset से पिक्सल की जानकारी क्वेरी की जा सके. (I69ad6)
नाम बदलकर toFrameworkRect/toFrameworkRectF से toAndroidRect/toAndroidRectF कर दिया गया है, ताकि Compose और Android फ़्रेमवर्क एपीआई के बीच ऑब्जेक्ट कन्वर्ज़न के लिए, नाम रखने के तरीके से मेल खा सके. इन एपीआई के दस्तावेज़ भी अपडेट किए गए हैं (I86337)
वेक्टर ग्राफ़िक के लिए, मौजूदा सबकंपोज़िशन एपीआई को बदलने के लिए VectorPainter API जोड़ा गया. सबकंपोज़िशन का नतीजा, DrawModifier के बजाय VectorPainter ऑब्जेक्ट होता है. VectorPainter के पक्ष में, DrawVector कंपोज़ेबल के पिछले वर्शन को बंद कर दिया गया है.
Image(Painter) API का नाम बदलकर PaintBox(Painter) कर दिया गया है एक वेक्टर कंपोज़ेबल बनाया गया है, जो Image कंपोज़ेबल की तरह काम करता है. हालांकि, इसमें ImageAsset के बजाय VectorAsset का इस्तेमाल किया जाता है (I9af9a, b/149030271)
Image का नाम बदलकर ImageAsset कर दिया गया है, ताकि इमेज डेटा और लेआउट और कॉन्टेंट बनाने के लिए इस्तेमाल किए जाने वाले आने वाले Image कंपोज़ेबल के बीच अंतर को बेहतर तरीके से समझा जा सके. _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)
TextDirection.Content जोड़ा गया (I48f36)
TextDecoration.plus ऑपरेटर (I0ad1a) जोड़ा गया
Forceको TextDirectionAlgorithm enum वैल्यू (Icc944) से हटाया गया हैTextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)
यह LongPressAndDrag को TextField Selection के लिए लागू करता है. (I17919)
AnnotatedString.getStringAnnotations जोड़ा गया है. यह रेंज में मौजूद सभी एनोटेशन दिखाता है. (I1fa00)
Locale और LocaleList के लिए पैकेज का नाम, androidx.ui.text से बदलकर androidx.ui.intl कर दिया गया है (I8132c)
TextField के कर्सर में ब्लिंक करने वाला ऐनिमेशन है (Id10a7)
एपीआई में बदलाव: AnnotatedString(builder: Builder) का नाम बदलकर annotatedString(builder: Builder) कर दिया गया है. (Ia6377)
एपीआई में बदलाव: AnnotatedString.Item का नाम बदलकर AnnotatedString.Range कर दिया गया है. (I2d44d)
AnnotatedString.Builder.addAnnotationString का नाम बदलकर addStringAnnotation कर दिया गया है. (I5059e)
अब SoftwareKeyboardController का इस्तेमाल करके, सॉफ़्टवेयर कीबोर्ड को छिपाया/दिखाया जा सकता है. यह onTextInputStarted कॉलबैक (I8dc44, b/151860051) से डिलीवर किया जाता है
(Text/Paragraph/Span)Style के लिए प्लस ऑपरेटर जोड़ा गया है. यह merge() फ़ंक्शन को डेलिगेट करता है. (Ia1add)
FontWeight.lerp अब स्नैप नहीं करता. यह अब भी एक डेटा क्लास है. (I521c2)
FontWeight कंस्ट्रक्टर अब सार्वजनिक है. यह अब डेटा क्लास नहीं है. (Id6b1f)
TextLayoutResult में getLineStart, getLineEnd, getEllipsisOffset, और getEllipsisCount जोड़ें (Ibc801)
ui-text मॉड्यूल का नाम बदलकर ui-text-core कर दिया गया है (I57dec)
इस्तेमाल नहीं की गई साइज़ क्लास को हटा दिया गया है, क्योंकि ui-geometry मॉड्यूल में डुप्लीकेट साइज़ क्लास मौजूद है. (I1b602)
AdapterList जोड़ा गया है. यह स्क्रोल करने लायक सूची वाला कॉम्पोनेंट है. यह सिर्फ़ दिखने वाले आइटम को कंपोज़ और लेआउट करता है. फ़िलहाल, इसकी कुछ समस्याएं हैं. जैसे, यह सिर्फ़ वर्टिकल है और यह अपने चाइल्ड नोड में होने वाले सभी बदलावों को पूरी तरह से हैंडल नहीं करता है. (Ib351b)
Box में पैडिंग, बॉर्डर, शेप, और बैकग्राउंड पैरामीटर जोड़ें (I05027, b/148147281)
गड़बड़ियां ठीक की गईं
- टेक्स्ट फ़ील्ड में onFocusChange कॉलबैक का नाम बदलकर onFocusChanged कर दिया गया है (Ida4a1)
- VerticalScroller और HoriziontalScroller को बंद कर दिया गया है. Column/Row के व्यवहार और पैरामीटर के साथ-साथ Modifier के साथ बिल्ड-इन अनुभव के लिए, ScrollableColumn और ScrollableRow का इस्तेमाल करें. इसके अलावा, अपने एलिमेंट पर Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करें. इसी तरह, ScrollerPosition को ScrollState' के पक्ष में बंद कर दिया गया है (I400ce, b/157225838, b/149460415, b/154105299)
runOnIdleComposeका नाम बदलकरrunOnIdleकर दिया गया (I83607)- टेस्टिंग से जुड़े कई एपीआई के नाम बदलकर, उन्हें ज़्यादा आसान बना दिया गया है. findXYZ एपीआई के नाम बदलकर onNodeXYZ कर दिए गए हैं. doXYZ नाम वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
- अब Compose यूज़र इंटरफ़ेस (यूआई) को ViewGroups में कंपोज़ किया जा सकता है. इसके लिए, नई कंपोज़िशन की ज़रूरत नहीं होती. उदाहरण के लिए, ViewInteropDemo देखें. (I9ab0b, b/160455080)
- MutableVector में sortWith और removeRange जोड़ा गया (Icccf7)
- TextField के लिए, चुने गए हिस्से में बदलाव करने के लिए, खींचकर चुनने वाले हैंडल लागू करें. (I27032)
- Shader इनलाइन क्लास को हटाया गया, जिसने NativeShader expect क्लास को रैप किया था. NativeShader का नाम बदलकर Shader कर दिया गया. रैप की गई Shader इनलाइन क्लास ने एपीआई सर्फ़ेस में कोई भी काम की चीज़ नहीं जोड़ी. साथ ही, यह एक इनलाइन क्लास थी. इसलिए, NativeShader क्लास का सीधे तौर पर इस्तेमाल करें. (I25e4d)
PainterModifier को फिर से फ़ैक्टर किया गया है, ताकि अब यह दी गई सीमाओं और ContentScale पैरामीटर के आधार पर स्केलिंग न करे. Painter के लागू करने के तरीके, ड्रॉइंग कॉन्टेंट को खुद ही स्केल करते हैं. ऐसा, DrawScope के दिए गए साइज़ के आधार पर किया जाता है.
उस समस्या को ठीक किया गया है जिसमें VectorPainter के कैश मेमोरी वाले बिटमैप का साइज़, ड्रॉ करने के लिए दिए गए साइज़ के बजाय डिफ़ॉल्ट साइज़ पर सेट हो जाता था.
ImagePainter को अपडेट किया गया है, ताकि वह अपने कॉन्टेंट को स्केल कर सके. इसके लिए, उसे PainterModifier पर निर्भर न रहना पड़े. (I6ba90)
ऐनिमेशन के समय के लिए, टॉप-लेवल का withFrameNanos फ़ंक्शन जोड़ा गया (Ie34c5)
@Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. @ComposableContract(tracked=false) से बदलें (Id211e)
androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करते. TextField, FilledTextField, और CoreTextField कंपोज़ेबल, जो उस टाइप का इस्तेमाल करते हैं उन्हें भी बंद कर दिया गया है. कृपया androidx.ui.input.TextFieldValue का इस्तेमाल करें (I4066d, b/155211005)
उस समस्या को ठीक किया गया है जिसकी वजह से, PointerInputFilters को डिसपैच के दौरान सबकंपोज़िशन के ज़रिए हटाने पर, पॉइंटर इनपुट डिसपैच क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (I1f48b, b/157998762)
उस समस्या को ठीक कर दिया गया है जिसमें पॉइंटर इनपुट डिस्पैच के दौरान, PointerInputFilters को डिस्पैच के दौरान सबकंपोज़िशन के ज़रिए हटाने पर क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (Iab398, b/157998762)
Radius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया है. कंपैनियन क्रिएशन के तरीकों को हटा दिया गया है. इसके बजाय, डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल किया गया है, ताकि y-ऐक्सिस के साथ रेडियस, अनिवार्य x-ऐक्सिस रेडियस पैरामीटर से मेल खाए.
DrawScope.drawRoundRect को अपडेट किया गया है. अब यह x और y ऐक्सिस के साथ रेडियस के लिए दो अलग-अलग फ़्लोट वैल्यू के बजाय, एक ही रेडियस पैरामीटर का इस्तेमाल करेगा (I46d1b)
Recompose कंपोज़ेबल अब काम का ऐब्स्ट्रैक्शन नहीं है. ज़्यादातर रीकंपोज़िशन, MutableState असाइनमेंट की वजह से होने चाहिए. इससे ज़्यादा के लिए, हमारा सुझाव है कि आप
invalidateफ़ंक्शन का इस्तेमाल करके, मौजूदा स्कोप को फिर से कंपोज़ करें. (Ifc992)Px क्लास का इस्तेमाल, अलग-अलग कंपोज़ क्लास में किया गया था. इसे बड़े पैमाने पर रीफ़ैक्टर करने के दौरान, सिर्फ़ Dp और प्रिमिटिव टाइप पर निर्भर रहने के लिए बदल दिया गया है. ऐसा पिक्सल पैरामीटर के लिए किया गया है (Iede0b)
यह Compose के कंपाइलर की कोड जनरेशन रणनीति को बदलता है. बदलाव से पहले, कंपोज़ कंपाइलर, कंपोज़ेबल फ़ंक्शन को कॉल में बदल देता था. इस बदलाव के बाद, हम कंपोज़ेबल फ़ंक्शन के मुख्य हिस्से को बदल देते हैं और कॉलसाइट में कोई बदलाव नहीं करते.
इसका मतलब है कि कंपोज़ रनटाइम के साथ कम्यूनिकेट करने वाला ज़्यादातर लॉजिक, कॉलसाइट के बजाय फ़ंक्शन बॉडी की शुरुआत में होता है.
यह बदलाव, कंपोज़ फ़ंक्शन के सभी इस्तेमाल के लिए सोर्स के साथ काम करने वाला होना चाहिए. Compose का इस्तेमाल करने वाले ज़्यादातर लोगों को इस बदलाव के बाद, किसी भी कोड को अपडेट करने की ज़रूरत नहीं होगी.
इस काम को पूरा करने के लिए, सभी कंपोज़ेबल फ़ंक्शन के JVM सिग्नेचर में बदलाव किया गया है. एक पैरामीटर स्वीकार करने वाले कंपोज़ेबल फ़ंक्शन को तीन पैरामीटर स्वीकार करने वाले फ़ंक्शन में बदल दिया जाता है. अतिरिक्त पैरामीटर, कंपोज़र और एक ‘key’ पूर्णांक होते हैं. यह एक बिटमास्क पूर्णांक होता है, जिसका इस्तेमाल कॉल के ज़रिए मेटाडेटा को आगे बढ़ाने के लिए किया जाता है.
Compose अब डिफ़ॉल्ट आर्ग्युमेंट को भी कंपोज़ेबल फ़ंक्शन में बदलता है. यह फ़ंक्शन के सिंथेटिक डिफ़ॉल्ट ओवरलोड को बढ़ाए बिना ऐसा करता है. इसलिए, इस बदलाव से कम फ़ंक्शन तय किए जाएंगे.
इस अपडेट की वजह से, जान-बूझकर किए गए व्यवहार में ये बदलाव हुए हैं:
- कुछ कॉल में, पहले जहां स्किप करने का विकल्प नहीं मिलता था वहां अब मिलेगा
- डिफ़ॉल्ट आर्ग्युमेंट एक्सप्रेशन में कंपोज़ेबल एक्सप्रेशन को अब सही तरीके से सब्सक्राइब किया जाता है और हैंडल किया जाता है
इस काम में कुछ ऑप्टिमाइज़ेशन शामिल थे: 1. पैरामीटर की तुलना के नतीजे, कॉल ग्राफ़ के ज़रिए अन्य कंपोज़ेबल फ़ंक्शन तक पहुंचाए जाते हैं. इससे रनटाइम में तुलनाएं कम होंगी, स्लॉट टेबल का साइज़ कम होगा, और कंपोज़ेबल फ़ंक्शन को ज़्यादा बार स्किप किया जाएगा. पहले इन फ़ंक्शन को स्किप नहीं किया जाता था 2. कंपाइल टाइम में “स्टैटिक” के तौर पर तय किए गए पैरामीटर की तुलना अब रनटाइम में नहीं की जाती है. साथ ही, उन्हें रनटाइम में सेव भी नहीं किया जाता है. इससे तुलनाओं की संख्या कम हो जाती है और स्लॉट टेबल का साइज़ भी कम हो जाता है. 3. जनरेट किए गए ग्रुप की संख्या को कम करने के लिए, फ़ंक्शन के मुख्य हिस्से के कंट्रोल फ़्लो स्ट्रक्चर का इस्तेमाल किया जाता है. इससे स्लॉट टेबल का साइज़ कम हो जाता है और रनटाइम 4 के लिए कम काम होता है. अगर फ़ंक्शन के मुख्य हिस्से में, डिस्पैच और रिसीवर के ऐसे पैरामीटर का इस्तेमाल नहीं किया जाता है जिनका इस्तेमाल नहीं किया गया है, तो उन्हें यह तय करने के लिए शामिल नहीं किया जाता कि फ़ंक्शन को स्किप किया जा सकता है या नहीं.
ज़्यादातर बड़े बदलाव उन एपीआई के लिए किए गए थे जिन्हें कंपाइलर सीधे तौर पर टारगेट करता है. हालांकि, Compose के सामान्य इस्तेमाल पर कोई असर नहीं पड़ेगा: 1. Composer::startExpr को हटा दिया गया 2. Composer::endExpr को हटा दिया गया है 3. Composer::call को बंद कर दिया गया है 4.
keyके नॉन-वैरआर्ग ओवरलोड हटा दिए गए हैं. आगे सेvarargवर्शन का इस्तेमाल करें. 5. पिवटल एनोटेशन को बंद कर दिया गया है. इसके बजाय,keyका इस्तेमाल करें. 6. ScopeUpdateScope::updateScope को बदलकर, Function1 के बजाय Function3 का इस्तेमाल किया गया है 7. restartableFunction और restartableFunctionN को अपडेट किया गया है, ताकि उनमें कंपाइल टाइम के अतिरिक्त पैरामीटर शामिल किए जा सकें (I60756, b/143464846)LayoutAlign मॉडिफ़ायर हटा दिए गए हैं. (I10877)
DrawLayerModifier के पक्ष में RepaintBoundary को हटाया गया (I00aa4)
Button, FloatingActionButton, और Clickable में अब अलग
enabledपैरामीटर है. बटन पर मौजूद कुछ पैरामीटर के नाम बदल दिए गए हैं या उनका क्रम बदल दिया गया है. (I54b5a)ButtonStyle को अलग-अलग फ़ंक्शन से बदल दिया गया है. साथ ही, टेक्स्ट (स्ट्रिंग) ओवरलोड को हटा दिया गया है. इस्तेमाल की जानकारी के लिए, अपडेट किए गए सैंपल देखें. (If63ab, b/146478620, b/146482131)
ambients API में नुकसान पहुंचा सकने वाले बदलाव. ज़्यादा जानकारी के लिए, लॉग और
Ambient<T>दस्तावेज़ देखें (I4c7ee, b/143769776)डिफ़ॉल्ट TextDirection के तरीके में बदलाव किया गया है, ताकि LayoutDirection के हिसाब से इसे तय किया जा सके. इसका मतलब है कि अगर LayoutDirection RTL है, तो डिफ़ॉल्ट TextDirection भी RTL होगा. इससे पहले, यह TextDirection.ContentOrLtr/Rtl (I4e803) था
बग ठीक किया गया: जब एनोटेटेडस्ट्रिंग पर फ़ॉन्ट वेट और फ़ॉन्ट स्टाइल को नेस्ट किया जाता है, तो टेक्स्ट सही तरीके से रेंडर नहीं होता है. (I77a9d)
यह फ़ंक्शन, Text() में आम तौर पर इस्तेमाल किए जाने वाले पैरामीटर जोड़ता है. अगर आपको इन पैरामीटर में से कुछ को पास करने के लिए, फ़िलहाल कोई लोकल टेक्स्ट स्टाइल बनानी है, जैसे कि Text(style = TextStyle(textAlign = TextAlign.Center)), तो अब सीधे तौर पर पैरामीटर दिए जा सकते हैं: Text(textAlign = TextAlign.Center) (I82768)
ui-android-text मॉड्यूल का नाम बदलकर ui-text-android कर दिया गया है (I68cbe)