Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(सभी कंपोज़ पैकेज के लिए, एपीआई के बारे में जानकारी देने वाले दस्तावेज़ देखें)
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 14 जनवरी, 2026 | 1.10.1 | - | - | 1.11.0-alpha03 |
संरचना
Compose, androidx में मौजूद सात Maven Group Id का कॉम्बिनेशन है. हर ग्रुप में, फ़ंक्शन का एक टारगेट किया गया सबसेट होता है. हर ग्रुप के लिए, रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक के बारे में बताया गया है.
| ग्रुप | ब्यौरा |
|---|---|
| compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, अपने Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
| compose.compiler | Kotlin कंपाइलर प्लगिन की मदद से, @Composable फ़ंक्शन को बदलें और ऑप्टिमाइज़ेशन चालू करें. |
| compose.foundation | इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं. |
| compose.material | इस्तेमाल के लिए तैयार मटीरियल डिज़ाइन कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का हायर लेवल एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं. |
| compose.material3 | मटीरियल डिज़ाइन 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. ये कॉम्पोनेंट, मटीरियल डिज़ाइन का अगला वर्शन हैं. Material 3 में अपडेट की गई थीमिंग और कॉम्पोनेंट शामिल हैं. साथ ही, इसमें Material You की मनमुताबिक सेटिंग से जुड़ी सुविधाएं भी हैं. जैसे, डाइनैमिक कलर. इसे Android 12 की नई विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है. |
| compose.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, Compose Compiler Plugin के लिए कोर रनटाइम, ताकि उसे टारगेट किया जा सके. |
| compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, कंपोज़ यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.10.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.10.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.11
वर्शन 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)- traversable तरीके से काम करने वाले find
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.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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
CoroutineContextपैरामीटर को स्वीकार करने वाले, Compose टेस्ट के नियम वाले वैरिएंट को स्टेबल वर्शन में प्रमोट कर दिया गया है. एक्सपेरिमेंट के तौर पर उपलब्ध एनोटेशन को हटा दिया गया है. साथ ही, डेवलपर को अब इस एपीआई का इस्तेमाल करने के लिए ऑप्ट-इन करने की ज़रूरत नहीं है. (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अब डिफ़ॉल्ट रूप से चालू किए गए lambda का इस्तेमाल करता है. यह सिर्फ़ तब साइज़ स्किप करने की सुविधा चालू करता है, जब शेयर किया गया ट्रांज़िशन चालू हो. यह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 वैल्यू की तुलना, 'कम है' या 'ज़्यादा है' ऑपरेटर का इस्तेमाल करके 'तय नहीं किया गया' से करने पर, अब हमेशा 'गलत है' वैल्यू मिलती है.
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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें लेआउट को एक जगह से दूसरी जगह ले जाने पर, 170 से ज़्यादा डिसेंडेंट होने पर
onVisibilityChanged/onFirstVisible/onLayoutRectChangedमॉडिफ़ायर को कॉलबैक नहीं मिल रहे थे. (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को एक साथ कईWindowInsetsRulersको मर्ज करने के लिए इस्तेमाल किया जा सकता है.WindowInsetsRulers.innermostOf()(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.savedstate.compose.LocalSavedStateRegistryOwnerके पक्ष मेंandroidx.compose.ui.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 ऑब्ज़र्वर को डिसपैच करने की समस्या ठीक की गई है, ताकि एक ही apply में याद रखे गए/भूल गए ऑब्ज़र्वर को डिसपैच करने से बचा जा सके (I570b2, b/404645679, b/407931790)
android:dialogThemeको अबdecorFitsSystemWindowsके गलत होने पर, डायलॉग प्रॉपर्टी को कंट्रोल करने के लिए सेट किया जा सकता है (I7922f, b/246909281)- उस गड़बड़ी को ठीक किया गया है जिसमें डायलॉग बॉक्स के बाहर होने वाली किसी भी गतिविधि से डायलॉग बॉक्स बंद हो जाता था. (Ia78fd)
- Compose lint checks के लिए, अब कमांड लाइन से कम से कम 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पर कॉल करते समयTestRuleऔरcompose:ui:ui-test-junit4-accessibilityका इस्तेमाल नहीं किया जा रहा है, तो ये पैकेजcompose:ui:ui-test-accessibilityहोते हैं (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, औरonExitFocusProperties(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 हैरारकी में एम्बेड किए गए फ़ोकस किए गए व्यू, lazylist से फ़ोकस किए गए व्यू को हटाने पर री-एंट्रेंट कंपोज़िशन की वजह बनते थे. (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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
enableAccessibilityChecks()API को अलग-अलग पैकेज में ले जाया गया है. यह API, Android के लिए सुलभता जांच की सुविधा चालू करता है. अगर TestRule का इस्तेमाल नहीं किया जा रहा है, तो यहcompose:ui:ui-test-accessibilityहै. साथ ही,TestRuleको कॉल करने पर यहcompose:ui:ui-test-junit4-accessibilityहै (I547ef, b/391560768)- नई सिमैंटिक्स प्रॉपर्टी
InputTextजोड़ी गई है. यह प्रॉपर्टी, आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले टेक्स्ट फ़ील्ड की वैल्यू कैप्चर करती है. (Iae46a)
गड़बड़ियां ठीक की गईं
- अपने-आप भरने की सुविधा से जुड़ी एक समस्या को ठीक किया गया है. इस समस्या की वजह से, इनपुट टेक्स्ट के बजाय बदले गए आउटपुट टेक्स्ट को सेव किया जा रहा था. (Iae46a, b/395911609, b/176949051)
वर्शन 1.8.0-beta02
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 मेंui-test-manifestके लिए, अपनी पसंद की थीम के साथ गतिविधि की एंट्री जोड़ी जा सकती है.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या टेक्स्ट कंपोज़ेबल (be7605, b/374115892) के अंदरLinkAnnotationका इस्तेमाल करते समय होने वालीIndexOutOfBoundsExceptionक्रैश की समस्या ठीक की गईBasicText- कस्टम शेप वाले भरे हुए टेक्स्ट फ़ील्ड में, इंडिकेटर लाइन के न दिखने की समस्या को ठीक किया गया है. (I4f87f, b/380704151)
- लंबे स्क्रीनशॉट में बैकग्राउंड न दिखने की समस्या ठीक की गई. (I4d57a)
- यह लाइब्रेरी अब JSpecify nullness annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. 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है, न कि लैम्डा - पैरामीटर अब NULL नहीं है. इसकी डिफ़ॉल्ट वैल्यू Default है
- ऑटोमैटिक तरीके से भरने की सुविधा के मैनेजर इंटरफ़ेस से
@Experimentalएनोटेशन हटाया जा रहा है. यह सुविधा अब भी WIP है और इसे इस रिलीज़ को टारगेट करने के लिए बनाया गया है. हालांकि, हम @Expemiental API (Id8398) को लॉन्च नहीं करना चाहते LocalHapticFeedbackअब डिफ़ॉल्टHapticFeedbackलागू करता है, जब वाइब्रेटर एपीआई यह बताता है कि हैप्टिक फ़ीडबैक की सुविधा काम करती है.HapticFeedbackTypeमें ये जोड़े गए हैं -Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Wear Compose में, ज़्यादा देर तक क्लिक करके रखे जा सकने वाले कॉम्पोनेंट, जैसे किButton,IconButton,TextButton, औरCardअब ज़्यादा देर तक क्लिक करके रखने वाले हैंडलर के उपलब्ध होने पर,LONG_PRESSहैप्टिक फ़ीडबैक देते हैं. (I5083d)- यह कुकी,
OverscrollConfigurationऔरLocalOverscrollConfigurationको हटाती है. साथ ही,rememberPlatformOverscrollFactoryको जोड़ती है, ताकि डिफ़ॉल्ट ओवरस्क्रोल लागू करने का इंस्टेंस बनाया जा सके या उसके पैरामीटर को पसंद के मुताबिक बनाया जा सके. ओवरस्क्रोल की सुविधा बंद करने के लिए,LocalOverscrollConfiguration provides nullके बजायLocalOverscrollFactory provides nullका इस्तेमाल करें. ग्लो का रंग / पैडिंग बदलने के लिए,LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)के बजायLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516) - एक्सपेरिमेंट के तौर पर उपलब्ध
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 पर सेट करें. साथ ही, Compose Snapshot का नया वर्शन इस्तेमाल करें. - ऑटोमैटिक भरने की सुविधा के इस वर्शन में, क्रेडेंशियल को मैन्युअल तरीके से सेव करने, मज़बूत पासवर्ड सुझाने, और नेविगेशन की सुविधा मिलती है. यह सुविधा, फ़ोकस किए गए ऐसे फ़ील्ड में भी काम करती है जिसमें अपने-आप भरने की सुविधा उपलब्ध है. इसके अलावा, यह टेक्स्ट कॉम्पोनेंट पर मौजूद टेक्स्ट टूलबार के ज़रिए, अपने-आप भरने की सुविधा ट्रिगर होने पर भी काम करती है. ऑटोमैटिक भरने की सुविधा पूरी होने पर, कॉम्पोनेंट हाइलाइट हो जाएगा.
एपीआई में हुए बदलाव
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पर फ़ोकस करने के लिए, Next कार्रवाई का इस्तेमाल किया जाता है, तब थ्रोन अपवाद ठीक किया गया.clearFocus()का व्यवहार, एपीआई < 28 पर व्यू के व्यवहार के मुताबिक होता है. इसमेंclearFocus()की वजह से, डिफ़ॉल्ट व्यू पर फ़ोकस किया जा सकता है. 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)
गड़बड़ियां ठीक की गईं
- Fix Dalog
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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट कंपोज़ेबल को
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पर फ़ोकस करने के लिए, Next कार्रवाई का इस्तेमाल किया जाता है, तब थ्रोन अपवाद ठीक किया गया.clearFocus()का व्यवहार, एपीआई < 28 पर व्यू के व्यवहार के मुताबिक होता है. इसमेंclearFocus()की वजह से, डिफ़ॉल्ट व्यू पर फ़ोकस किया जा सकता है. - उस समस्या को ठीक कर दिया गया है जिसमें लुकअहेड अमान्य करने के लिए गलत
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). सामग्री (I5477b) सेTextDefaultsको भी हटा दिया गया है
गड़बड़ियां ठीक की गईं
- इसके मकसद को बेहतर तरीके से दिखाने के लिए,
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 थीम वाले लिंक पाने के लिए, एपीआई को अपडेट किया गया है. खास तौर पर, थीम वाले
TextDefaultsबनाने के लिएTextDefaultsसे तरीके हटा दिए गए हैं. साथ ही, थीम वाले लिंक के साथ एचटीएमएल पार्स करने की सुविधा भी हटा दी गई है.LinkAnnotationsइसके बजाय,TextLinkStylesक्लास जोड़ी गई है. इससे Text कंपोज़ेबल के पैरामीटर के तौर पर लिंक को स्टाइल किया जा सकता है. (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को 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से मेल खाने वालाLinkAnnotationबनाएं. इसके बाद, इसAnnotatedStringको Text कंपोज़ेबल में पास करें.AnnotatedString(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.rememberGraphicsLayerकोrememberObserverका फ़ायदा पाने के लिए अपडेट किया गया. (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#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) - लो-लेवल IME से जुड़े टेस्ट और अन्य लो-लेवल IME के इस्तेमाल के उदाहरण लिखने में मदद करने के लिए,
InterceptPlatformTextInputको लॉन्च किया गया.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) - 1D फ़ोकस सर्च के साथ इंटरऑप की समस्या को ठीक किया गया है. इस समस्या में, फ़ोकस अन्य व्यू में एम्बेड किए गए
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को खास स्थानीय भाषाओं के साथ आईएमई के बारे में जानकारी दी जा सके. इससे, पसंदीदा भाषा को पहले से सेट किया जा सकेगा.LocaleसेplatformLocaleप्रॉपर्टी को दिखाएं.यह प्रॉपर्टी, प्लैटफ़ॉर्म के ऑब्जेक्ट को दिखाती है. उदाहरण के लिए,java.util.Locale. (I921c6)
वर्शन 1.7.0-alpha03
21 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पेश है MaxLines और ओवरफ़्लो के साथ बेहतर
FlowRow/ColumnऔरContextualFlowRow. हमें यह बताते हुए खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्ध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()को पेश किया गया है. इससेonPlacedको बदले बिना,Modifier.Nodeका मौजूदाLayoutCoordinatesपाया जा सकता है. साथ ही, आपको खुद प्रॉपर्टी में निर्देशांक सेव करने की ज़रूरत नहीं होती. (Ia8657)DelegatableNode.currentLayoutCoordinatesको पेश किया गया है. इससेonPlacedको बदले बिना,Modifier.Nodeका मौजूदाLayoutCoordinatesपाया जा सकता है. साथ ही, आपको खुद प्रॉपर्टी में निर्देशांक सेव करने की ज़रूरत नहीं होती. (Iaebaa)BasicTextField2और इससे जुड़े एपीआई कोandroidx.compose.foundation.text2पैकेज सेandroidx.compose.foundation.textमें ले जाया गया है. (I9f635)ApproachLayoutModifierNodeनया एपीआई जोड़ा गया है. इससे, मॉडिफ़ायर नोड में कस्टम अप्रोच लॉजिक बनाया जा सकता है. इसके अलावा, हमने एक्सपेरिमेंट के तौर पर एक नयाDeferredTargetAnimationएपीआई भी जोड़ा है. इसका इस्तेमाल उन एनिमेशन के लिए किया जाता है जिनके टारगेट के बारे में इंस्टैंटिएशन के समय पता नहीं होता. (I60745)- पाथ की दिशा के बारे में क्वेरी करने और
Pathसे कॉन्टूर निकालने के लिए, नएPathएपीआई. (I63d04) Pathमें कोई खास पॉइंट मौजूद है या नहीं, यह देखने के लिएPathHitTestऔरPath.contains(Offset)को जोड़ा गया. (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)- सेमंटिक्स प्रॉपर्टी हटाने के लिए, नया Semantics API
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)मटीरियल
SwipeToRevealएपीआई (कार्ड और चिप के लिए) अब उन स्लॉट को बनाने के लिए, डेटा क्लास पर आधारित इंस्टेंस के बजाय, स्लॉट पर आधारित एपीआई (जैसा कि Compose ने सुझाव दिया है) पर निर्भर करते हैं. यह एक बड़ा बदलाव है. नए एपीआई को इस्तेमाल करने के तरीके के बारे में जानने के लिए, कृपया डेमो और सैंपल कोड देखें. (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)- Window Inset में बदलाव करने पर, बाइनरी के साथ काम करने से जुड़ी समस्या को ठीक किया गया (Iee695)
- Material3 चिप/बटन के लिए, मटीरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)
TestDispatcherको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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- मटेरियल आइकॉन में अतिरिक्त ऑप्टिमाइज़ेशन किए गए हैं. (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)- नए डिवाइसों को शामिल करने के लिए,
ui-toolingDevices API को अपडेट किया गया (Ib25b4)
वर्शन 1.6.0-alpha04
23 अगस्त, 2023
androidx.compose.ui:ui-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ReusableCompositionको बंद करने का तरीका जोड़ा गया है. इससे निगरानी की सुविधा बंद हो जाएगी, लेकिन नोड बने रहेंगे. बंद की गई कंपोज़िशन कोsetContentपर कॉल करके फिर से चालू किया जा सकता है. (Ib7f31)- लाइफ़साइकल मैनेज करने और सबकंपोज़िशन का दोबारा इस्तेमाल करने के लिए,
ReusableCompositionइंटरफ़ेस जोड़ा गया. (I812d1, b/252846775) Modifier.focusGroupको स्टेबल एपीआई के तौर पर प्रमोट किया गया है. (I7ffa3)- अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं, ताकि
ColorInt,FloatRange,IntRange,Sizeवगैरह के बारे में बताया जा सके. (I70487, b/290950582) - पैरामीटर की बेहतर जांच के लिए,
ColorFilterएपीआई को अपडेट किया गया है, ताकि इसमें सबक्लास के टाइप शामिल किए जा सकें. (I5fe29) - wear-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*एपीआई को पूरी तरह से फिर से डिज़ाइन किया गया है. (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 अब डिफ़ॉल्ट रूप से false पर सेट है
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)- नेस्ट की गई स्क्रोलिंग में, माउस स्क्रोल और ड्रैग के बीच अंतर करने के लिए, Wheel इवेंट को जोड़ता है. खास तौर पर,
NestedScrollConnectionमें. (Ie57e4) asComposePaintएपीआई जोड़ा गया है, ताकिtoComposePaintको बदला जा सके. ऐसा इसलिए, क्योंकि लौटाया गया ऑब्जेक्ट, ओरिजनलandroid.graphics.Paintको रैप करता है (I22b4c)SemanticsProperties.imeActionको बंद कर दिया गया है और इसेSemanticsActions.performImeActionके नए पैरामीटर से बदल दिया गया है. (I4a587)- माउस से चुनने की सुविधा जोड़ी गई. टच करके चुने गए टेक्स्ट को शब्द के हिसाब से बढ़ाया जा सकता है और वर्ण के हिसाब से कम किया जा सकता है. (Ic0c6c, b/180639271)
Paragraphके जिन तरीकों से, सीमा से बाहर के ऑफ़सेट के लिएAssertionErrorमिलता था उनसे अबIllegalArgumentExceptionमिलता है. ऐसा इसलिए, क्योंकिMultiParagraphसे भीIllegalArgumentExceptionमिलता है. (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
movableContentOf()के अंदरSubcomposeLayoutका इस्तेमाल करने पर, ऐप्लिकेशन के क्रैश होने की समस्या ठीक की गई है.
वर्शन 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 में इस्तेमाल किए जाने वाले
asComposePaintइंस्टेंस के इस्तेमाल को चालू करने के लिए,asComposePaintएपीआई जोड़ा गयाandroid.graphics.Paint
गड़बड़ियां ठीक की गईं
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) PlatformTextInputएपीआई, अब Android के लिए एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (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से अन्य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में अब लुकअहेड ऐनिमेशन ठीक से काम करते हैं.इनमें वे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में मौजूदUrlAnnotationको अब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 से बदल दिया गया है. अब यह लेआउट नहीं है. इससे 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 के बाद हुए अहम बदलाव
- एक नया
PinnableContainerAPI जोड़ा गया है. इससे लेज़ी लिस्ट आइटम को पिन किया जा सकता है, ताकि स्क्रोल करने पर वे तय सीमा से बाहर न जाएं. उदाहरण के लिए,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 की यूज़र इंटरफ़ेस (यूआई) जांचें, अब हर फ़्रेम के लिए लेआउट पास चलाएंगी.ऐसा तब होगा, जब फ़्रेम को आइडल स्टेट में ले जाया जाएगा. उदाहरण के लिए,
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पैरामीटर स्वीकार करता है. इससे View इंस्टेंस को फिर से इस्तेमाल किया जा सकता है. ऐसा तब होता है, जब कंपोज़िशन में मौजूद उनके नोड को हटा दिया जाता है और उसे कंपैटिबल तरीके से फिर से इस्तेमाल किया जाता है. यह व्यू के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()एपीआई को हटा दिया गया है. इसके बजाय, कृपया सीधे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)- इनलाइन/deprecated-hidden फ़ंक्शन के टाइप/nullability के बारे में ज़्यादा जानकारी (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 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक नया
PinnableContainerAPI जोड़ा गया है. इससे लेज़ी लिस्ट आइटम को पिन किया जा सकता है, ताकि स्क्रोल करने पर वे तय सीमा से बाहर न जाएं. उदाहरण के लिए,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'sके व्यवहार को दोहराने के लिए किया जा सकता है. (I177e5, b/236159001) - अब
PlatformTextStyle(emojiSupportMatch)का इस्तेमाल करके, किसी पैराग्राफ़ के लिए इमोजी सपोर्ट प्रोसेसिंग को बंद किया जा सकता है. (Ia7100, b/139326806) - Android Compose की यूज़र इंटरफ़ेस (यूआई) जांचें, अब हर फ़्रेम के लिए लेआउट पास चलाएंगी.ऐसा तब होगा, जब फ़्रेम को आइडल स्टेट में ले जाया जाएगा. उदाहरण के लिए,
waitForIdleके ज़रिए. इससे उन जांचों पर असर पड़ सकता है जो लेआउट ऐनिमेशन के अलग-अलग फ़्रेम पर दावा करती हैं. (I8ea08, b/222093277) TextStyleमें एक्सपेरिमेंटलTextMotionजोड़ा गया है. इससे यह तय किया जा सकेगा कि टेक्स्टStatic(default)होगा या ऐनिमेशन वाला. अगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जाना है, उसका अनुवाद किया जाना है या उसे घुमाया जाना है, तोTextMotion.Animatedका इस्तेमाल करें. (I24dd7)
एपीआई में हुए बदलाव
DrawScopeफ़ंक्शन के साथ काम करने के लिए,drawTextमेंmaxSize: IntSizeआर्ग्युमेंट कोsize: Sizeसे बदल दिया गया है.sizeको डिफ़ॉल्ट रूप सेSize.Unspecifiedपर सेट किया जाता है. इससे, पिछली डिफ़ॉल्ट सेटिंग में कोई बदलाव नहीं होना चाहिए. (Icd27d)- अब इस्तेमाल में नहीं आने वाले एक्सपेरिमेंटल फ़ॉन्ट कंस्ट्रक्टर को हटाया गया. (I8a724, b/261435386)
- ui टूलिंग डेटा क्लास
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)createFontFamilyResolverAPI अब स्टेबल हो गया है. इसका इस्तेमाल, फ़ॉन्ट को एसिंक तरीके से लोड करने के दौरान, बिना हैंडल किए गए अपवादों को पकड़ने के लिए किया जा सकता है. (Ibb481, b/261435386)Font.loadingStrategyAPI अब स्टेबल हो गया है. (I5937c, b/261435386)GoogleFontAPI अब स्टेबल हो गया है. (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. ध्यान दें कि ये सिर्फ़ API 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)CompositingStrategyको इसलिए पेश किया गया है, ताकि यह तय किया जा सके किgraphicsLayerकॉन्टेंट को रेंडर करने के लिए, ऑफ़स्क्रीन कंपोज़िटिंग लेयर का इस्तेमाल कब करना है. 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()का इस्तेमाल किया जाता है. ऐसा इसलिए किया गया है, क्योंकिforEachGesture()का इस्तेमाल करने पर, जेस्चर के बीच इवेंट खो सकते हैं. (Iffc3f, b/251260206)- androidx में सुलभता ऑब्जेक्ट को रीसाइकल करने की सुविधा बंद की जा रही है. हमने पाया है कि परफ़ॉर्मेंस में बदलाव, सबसे पुराने वर्शन में भी न के बराबर है. (I0a961)
TextStyleऔरSpanStyleमेंDrawStyleको एक्सपेरिमेंट वाले एट्रिब्यूट के तौर पर जोड़ा गया है, ताकि आउटलाइन वाला टेक्स्ट बनाया जा सके. (If24b8, b/155421273)AnnotatedString.Builderअबkotlin.text.Appendableको लागू करता है. (I1a061, b/231030444)AnnotatedString.Builderमें अबAnnotatedStringके सबस्ट्रिंग और इंटरसेक्टिंग स्टाइल को जोड़ने काappend(AnnotatedString, start: Int, end: Int)तरीका है.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 व्यू की स्थिति को सेव कर रही होती है. (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 में डी-पैड और हार्डवेयर कीबोर्ड के लिए फ़ोकस की सुविधा.
- डायलॉग और पॉप-अप में, ज़्यादा से ज़्यादा 8dp तक एलिवेशन का इस्तेमाल किया जा सकता है. इससे कुछ कस्टम डिज़ाइन सिस्टम के व्यवहार में बदलाव हो सकता है. 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)SlotTree.ktमेंCompositionGroup.findParametersजोड़ें. इससे टूल, पूरी स्लॉट टेबल को पार्स किए बिना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में मैट्रिक्स ट्रांसफ़ॉर्मेशन पाने के लिए,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)- पैराग्राफ़ को अब 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)SlotTree.ktमेंmapTreeजोड़ें. इससे टूल,SlotTreeकी जांच कर सकते हैं. इसके लिए, उन्हें asTree की तरह पहले इन मेमोरी कॉपी बनाने की ज़रूरत नहीं होती. लेआउट इंस्पेक्टर के लिए, इससे परफ़ॉर्मेंस में करीब 10 गुना सुधार होता है. (I5e113)- कंपोज़ प्रीव्यू को बाइनरी आउटपुट फ़ाइलों में सेव करने की सुविधा जोड़ी गई है, ताकि डेवलपर लाइब्रेरी से
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)ग्रेडिएंट कलरिंग के साथ टेक्स्ट बनाने का तरीका उपलब्ध कराने के लिए,
BrushकोTextStyleऔरSpanStyleमें जोड़ा गया. (I53869, b/187839528)trimFirstLineTopऔरtrimLastLineBottomएट्रिब्यूट केLineHeightBehaviorको बदलकर एक ही enum कर दिया गया है:LineHeightTrim.LineHeightTrimमें दो बूलियन के हिसाब से चार स्थितियां होती हैं:FirstLineTop,LastLineBottom, दोनों, और कोई नहीं (Ifc6a5, b/181155707)TextStyleऔरParagraphStyleमेंLineHeightBehaviorजोड़ा गया.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)- पैराग्राफ़ और मल्टीपैराग्राफ़ अब 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 पर सिस्टम फ़ॉन्ट के लिए उपलब्ध सभी वेट दिखाएं. यह एपीआई 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)
गड़बड़ियां ठीक की गईं
- मटेरियल/स्कैफ़ोल्ड में लिंट चेक जोड़ा गया है, ताकि यह पक्का किया जा सके कि इनर पैडिंग का इस्तेमाल किया जा रहा है (Ifb111)
वर्शन 1.2.0-alpha06
23 मार्च, 2022
androidx.compose.ui:ui-*:1.2.0-alpha06 रिलीज़ हो गया है. वर्शन 1.2.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने का अनुरोध करने के लिए,
RequestFocusसिमैंटिक्स ऐक्शन जोड़ा गया. (I17b71) - वेक्टर ड्रॉएबल को पार्स करने की सुविधा को अपडेट किया गया है. इससे,
VectorPainterके कॉन्टेंट को अपने-आप फ़्लिप करने में मदद मिलती है. ऐसा तब होता है, जब मौजूदा लेआउट की दिशा RTL होती है. (I79cd9, b/185760237) एपीआई के साथ काम करने के लिए, शैडो/ऐम्बिएंट कलर को
Modifier.graphicsLayerके ट्रेलिंग पैरामीटर के तौर पर अपडेट किया गया (I3f864, b/160665122)GraphicsLayerScopeमें शैडो/ऐम्बिएंट कलर के लिए डिफ़ॉल्ट सेटिंग जोड़ी गई हैं, ताकि एपीआई में बदलावों के बावजूद कोई समस्या न होRSB इवेंट में इवेंट का समय जोड़ा गया (Ief8ae)
FocusOrderको अबFocusPropertiesमें मर्ज कर दिया गया है. साथ ही,focusProperties()में अबfocusOrder()की सभी सुविधाएं उपलब्ध हैं.FocusOrderऔरfocusOrder()का अब इस्तेमाल नहीं किया जा सकता.focusRequesterस्वीकार करने वालेfocusOrder()को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 (I0cbb7) से मेल खाने के लिए, कोर और appcompat में अपडेट की गई nullability
- मेज़र किए गए इंटरफ़ेस में अब 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के साथ एनोटेट किया गया एनोटेशन बनाएं. इसके बाद, सीधेComposableTargetMarkerका इस्तेमाल करने के बजाय, मार्क किए गए एनोटेशन का इस्तेमाल करें.ComposableTargetComposableTargetMarkerके तौर पर मार्क किया गया कंपोज़ेबल एनोटेशन,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)destroyDisplayListDataस्टब क्लास परdestroyDisplayListDataमेथड जोड़ा गया (I1e659, b/216660268)RenderNode- एक नया एपीआई जोड़ा गया है. इसकी मदद से,
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)इंटरनल जनरेट की गई kt क्लास का नाम बदला गया (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NullPointerExceptionपरandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayListठीक करें (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, Material Design Components के जैसा ही काम करता है. साथ ही, 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)
गड़बड़ियां ठीक की गईं
durationMillisमेंdurationMillisके लिए डिफ़ॉल्ट वैल्यू अब इस तरह से कैलकुलेट की जाती है कि स्वाइप करना मुमकिन हो.TouchInjectionScope.swipeWithVelocity(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)
- Composer के उन तरीकों से
InternalCompilerApiहटाया गया है जिन्हें क्रॉस-मॉड्यूल (I1aa0b) कहा जाना ज़रूरी है - अब
SemanticsNodeInteraction.performSemanticsAction, उसSemanticsNodeInteractionको दिखाता है जिस पर फ़ंक्शन को कॉल किया गया था. (I9e5db) - TouchMode/NonTouchMode का पता लगाने के लिए, LocalInputModeManager CompositionLocal जोड़ा गया. (I6a83c, b/175899786)
LayoutInfoमेंviewConfiguration: ViewConfigurationजोड़ा गया है, ताकि उपभोक्ताओं को लंबी प्रेस के लिए टाइमआउट जैसी चीज़ों की सही वैल्यू मिल सके. (I76ca6)viewConfiguration: ViewConfigurationकोInjectionScopeमें जोड़ा गया है, ताकि टेस्ट, इनपुट इंजेक्शन को अडजस्ट कर सकें. ऐसा, लॉन्ग प्रेस टाइमआउट या टच स्लोप जैसी चीज़ों के आधार पर किया जा सकता है.- टच और माउस, दोनों के लिए दबाकर रखने और दो बार टैप करने की डिफ़ॉल्ट अवधि को बदल दिया गया है. अब यह अवधि,
InjectionScope.viewConfigurationमें दी गई वैल्यू के हिसाब से तय होगी.
- ExposedDropdownMenuBox के आधार पर ExposedDropdownMenu को लागू करना. इसमें TextField और DropdownMenu शामिल हैं (If60b2)
- dismissOnOutsideClick को PopupProperties में जोड़ा गया है. यह dismissOnClickOutside की जगह लेगा. dismissOnClickOutside के इस्तेमाल पर रोक लगा दी गई है. नई प्रॉपर्टी को क्लिक की पोज़िशन और ऐंकर बाउंड्री मिलती है. इससे यह बेहतर तरीके से कंट्रोल किया जा सकता है कि onDismissRequest को लागू किया जाना चाहिए या नहीं. उदाहरण के लिए, यह ऐंकर पर किए गए टच के लिए, ऐंकर को खारिज होने से रोकने के लिए काम आ सकता है.
- PopupProperties में updateAndroidWindowManagerFlags जोड़ा गया है. इससे, Android WindowManager को पॉप-अप से पास किए गए फ़्लैग पर लो-लेवल कंट्रोल मिलता है. लैम्डा का पैरामीटर, PopupProperties वैल्यू से कैलकुलेट किए गए फ़्लैग होंगे.इनसे WindowManager फ़्लैग मिलेंगे. उदाहरण के लिए, focusable. लैंबडा का नतीजा, फ़ाइनल फ़्लैग होगा. इसे 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) touchBoundsInRootकोSemanticsNodeमें जोड़ा गया है. इसमें टच टारगेट का कम से कम साइज़ शामिल है, ताकि डेवलपर यह पक्का कर सकें कि टच टारगेट, ऐक्सेसिबिलिटी से जुड़ी ज़रूरी शर्तों को पूरा करते हों. (I2e14b, b/197751214)- inspectable को फिर से लागू किया गया (I927bc, b/191017532)
- जांच किए जा सकने वाले पैरामीटर का नाम बदलकर, कंपोज़ किए गए पैरामीटर के नाम से मैच किया गया (I3a482, b/191017532)
performTouchInputऔरTouchInjectionScopeकोperformTouchInputऔरTouchInjectionScopeके विकल्प के तौर पर पेश किया गया. इससे अन्य मोडैलिटी (जैसे, माउस) के लिए रास्ता खुल गया.TouchInjectionScopeमेंGestureScopeके जैसे ही तरीके हैं. हालांकि,movePointerToऔरmovePointerByको छोड़कर, जिनका नाम बदलकरupdatePointerToऔरupdatePointerByकर दिया गया है. अन्य सभी तरीके एक जैसे हैं.TouchInjectionScopeका व्यवहार,GestureScopeके जैसा ही होता है. हालांकि, इसमें दो छोटे-छोटे अंतर होते हैं:- जब पॉइंटर को move इवेंट भेजे बिना ही दूसरी जगह ले जाया जाता है और फिर down इवेंट भेजा जाता है (दूसरे शब्दों में,
updatePointerTo()का इस्तेमाल किया जाता है, लेकिनmove()का नहीं. इसके बाद,down()को कॉल किया जाता है), तो पिछले वर्शन में इवेंट का समय बढ़ जाता था. साथ ही, down इवेंट भेजने से पहले move इवेंट भेजा जाता था. नया तरीका लागू करने के बाद भी, move इवेंट भेजा जाता है. हालांकि, इस खास स्थिति में इवेंट का समय नहीं बढ़ता. - जब पॉइंटर को बिना किसी मूव इवेंट को भेजे (ऊपर दिए गए उदाहरण की तरह) ले जाया जाता था, तब अप इवेंट भेजते समय, पिछला तरीका इवेंट के समय को आगे बढ़ाता था. साथ ही, अप इवेंट भेजने से पहले एक मूव इवेंट भेजता था. नया तरीका इन दोनों में से कोई भी काम नहीं करता: पॉइंटर की नई पोज़िशन सिर्फ़ अप इवेंट के ज़रिए दिखेगी.
आखिर में,
TouchInjectionScope, दिए गए पॉइंटर की मौजूदा पोज़िशन पाने के लिए एक नया तरीकाcurrentPosition(pointerId: Int)पेश करता है. (If1191, b/190493367)- जब पॉइंटर को move इवेंट भेजे बिना ही दूसरी जगह ले जाया जाता है और फिर down इवेंट भेजा जाता है (दूसरे शब्दों में,
गड़बड़ियां ठीक की गईं
- इससे क्लिप को टच टारगेट के लिए, क्लिप के क्षेत्र से बाहर जाने की अनुमति मिलती है. (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 तरीके को अपडेट किया गया है. यह सोर्स और डेस्टिनेशन रेक्ट का इस्तेमाल करता है, ताकि फ़िल्टर क्वालिटी पैरामीटर का इस्तेमाल किया जा सके. यह पिक्सल आर्ट के लिए फ़ायदेमंद है. पिक्सल आर्ट को पिक्सल के आधार पर बड़ा करने पर, उसे पिक्सलेट किया जाता है. BitmapPainter और Image कंपोज़ेबल को अपडेट किया गया है, ताकि वे FilterQuality पैरामीटर का इस्तेमाल कर सकें. हालांकि, यह पैरामीटर इस्तेमाल करना ज़रूरी नहीं है (Ie4fb0, b/180311607)
इशारे (Ibf3e2) में इवेंट के समय को ज़्यादा कंट्रोल करने के लिए,
GestureScope.advanceEventTimeतरीका जोड़ा गया
गड़बड़ियां ठीक की गईं
- ड्रॉ मॉडिफ़ायर की चेनिंग को बेहतर तरीके से सपोर्ट करने के लिए, पक्का करें कि 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 रिलीज़ का आधिकारिक ब्लॉग देखें!
मौजूदा समस्याएं
अगर 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()जैसे एपीआई का इस्तेमाल करते हैं. ये एपीआई,rememberLauncherForActivityResult()पर निर्भर होते हैं. (Ib13d1, b/185693006) - Compose
@PreviewअबLocalOnBackPressedDispatcherOwnerउपलब्ध कराता है. इसकी मदद से,BackHandlerजैसे एपीआई का इस्तेमाल करने वाले कंपोज़ेबल की झलक देखी जा सकती है.LocalOnBackPressedDispatcherOwnerके लिए, यह ज़रूरी है कि मालिक मौजूद हो. (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में सेव करने की सुविधा.addTtsAnnotationमें withAnnotation और utility फ़ंक्शन जोड़े गए (I8cbdc, b/178446304)AnnotatedString.Builder - 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()(Iddce1) में NoSuchElementException की समस्या ठीक की गई
वर्शन 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 का इस्तेमाल करने के लिए, लेआउट एपीआई को अपडेट किया गया है / आसान बनाया गया है. (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() में स्क्रोल की पोज़िशन को अब Ints के साथ दिखाया जाता है (I81298)
FlingConfig का नाम बदलकर अब FlingBehavior कर दिया गया है. अब इसमें पहले से तय किए गए Decays के बजाय, suspend ऐनिमेशन को पसंद के मुताबिक बनाने की सुविधा मिलती है. (I02b86, b/175294473)
एक हेल्पर फ़ंक्शन जोड़ा गया है. यह सभी ImeAction कॉलबैक (I63447, b/179226323) के लिए एक ही कार्रवाई सेट करने में मदद करता है
सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक को हटा दिया गया है. इसकी जगह जल्द ही एक नया एपीआई ले लेगा. (Iae869, b/168778053)
FontSpan और FontWeigthStyleSpan का इस्तेमाल अब नहीं किया जाता और इन्हें हटा दिया गया है. (Ie5b56, b/177423444)
Material API में ये बदलाव किए गए हैं:
- Top/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 को अब यह बताने के लिए remember कुंजियों की ज़रूरत होती है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोरूटीन को कब रीस्टार्ट करना चाहिए. (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)
- Snapshot API को अपडेट किया गया है, ताकि यह एपीआई के दिशा-निर्देशों के मुताबिक काम करे. साथ ही, सार्वजनिक एपीआई से इंटरनल इंप्लीमेंटेशन क्लास को छिपाया जा सके. (Id9e32)
- सेमैंटिक कार्रवाइयों को बड़ा और छोटा करने की सुविधा जोड़ी गई. ModalBottomSheetState में expand और halfExpand को जोड़ा गया (Ib5064)
- Modifier.dragGestureFilter अब काम नहीं करता है. इसके बजाय,
Modifier.pointerInput { detectDragGestures (...)}का इस्तेमाल करें. इसके अलावा, एक ऐक्सिस पर ड्रैग करने के लिए Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473) - Ambients का नाम बदलकर, Ambient -> CompositionLocal के नाम के मुताबिक कर दिया गया है. पहले, ऐम्बिएंट का नाम 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)
- Outline.* क्लास अब डेटा क्लास नहीं हैं (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)
- अब उन टेस्ट में ज़्यादा स्थिरता देखने को मिलेगी जिनमें Compose का इस्तेमाल, WindowManager में सीधे तौर पर जोड़े/हटाए गए क्रम में किया जाता है. (Ie81ed, b/175765614)
- Recomposer.current() को हटाया गया. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner की मदद से बनाए गए, विंडो के दायरे वाले Recomposer को लेज़ी तरीके से बनाता है. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और 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, जो किसी अन्य कंपोज़िशन के चाइल्ड हैं, अब अपने पूर्वजों की चाइल्ड कंपोज़िशन को होस्ट करते हैं (I92883)
- ImageBitmap ऑब्जेक्ट लोड करते समय, संसाधन के ड्रॉएबल कैश मेमोरी का फिर से इस्तेमाल करने के लिए, compose के imageFromResource API को अपडेट किया गया है. (If3627, b/178751994)
वर्शन 1.0.0-alpha11
28 जनवरी, 2021
androidx.compose.ui:ui-*:1.0.0-alpha11 रिलीज़ हो गया है. वर्शन 1.0.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- WithConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया है और इसे foundation.layout में ले जाया गया है. (I9420b, b/173387208)
- Key.DPadUp के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, Key.DirectionUp का इस्तेमाल करें. (Iab335, b/177954892)
- मालिक का इंटरफ़ेस, अब से इंटरनल होगा. (If8e35)
- प्रोग्राम के हिसाब से फ़ोकस को दूसरी जगह ले जाने के लिए, FocusManager.moveFocus() एपीआई जोड़ा गया. (I045cb, b/177681839)
- यह कुकी, PopupPositionProvider में बदलाव करती है. इससे विंडो के हिसाब से कोऑर्डिनेट का इस्तेमाल किया जाता है, न कि ग्लोबल कोऑर्डिनेट का. 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 (If760e) के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है
Font/FontFamily/Typeface के लिए फ़ैक्ट्री फ़ंक्शन में किए गए बदलाव
- कैपिटल लेटर से शुरू होने वाले फ़ैक्ट्री फ़ंक्शन जोड़े गए
- पहले के फ़ैक्ट्री फ़ंक्शन को बंद कर दिया गया है. इनके पहले अक्षर छोटे होते थे
- नए फ़ैक्ट्री फ़ंक्शन, सबक्लास के बजाय FontFamily दिखाते हैं
- सबक्लास के कंस्ट्रक्टर छिपाए गए हैं, ताकि उन्हें सिर्फ़ फ़ैक्ट्री फ़ंक्शन के ज़रिए बनाया जा सके.
- Font.asFontFamily का नाम बदलकर Font.toFontFamily कर दिया गया है (I42aa7)
ComposeContentTestRuleको पेश किया गया है. यहComposeTestRuleको बढ़ाता है औरsetContentको तय करता है.setContentकोComposeTestRuleसे हटा दिया गया है. फ़ैक्ट्री मेथडcreateEmptyComposeRule()जोड़ा गया है. यहComposeTestRuleदिखाता है और आपके लिए कोई गतिविधि लॉन्च नहीं करता. इस विकल्प का इस्तेमाल तब करें, जब आपको टेस्ट के दौरान अपनी गतिविधि लॉन्च करनी हो. उदाहरण के लिए,ActivityScenario.launch(I9d782, b/174472899) का इस्तेमाल करनाanimateAsState को अब animateFooAsState कर दिया गया है. यहां Foo, ऐनिमेट किए जा रहे वैरिएबल का टाइप है. जैसे, फ़्लोट, डीपी, ऑफ़सेट वगैरह (Ie7e25)
इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा देने वाला पैरामीटर जोड़ा गया है. इसका इस्तेमाल, सुलभता सेवाओं (I2ac4c) को जानकारी देने के लिए किया जाता है
डिसप्ले साइज़ को हटाएं, क्योंकि इसका इस्तेमाल नहीं किया जाना चाहिए. आम तौर पर, 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को जोड़ता है. इसे तब कॉल किया जाता है, जबRememberObserverइंस्टेंस कोrememberको पास किए गए कॉलबैक से वापस कर दिया जाता है. हालांकि, इसे कंपोज़िशन की स्थिति में सेव नहीं किया जाता है. इसलिए, इसे कभी भीonRememberedकॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कंपोज़िशन को पूरा होने से पहले ही खत्म कर देता है या कंपोज़िशन को इसलिए खारिज कर दिया जाता है, क्योंकि जिस स्थिति के लिए कंपोज़िशन बनाई जा रही थी वह अब मौजूद नहीं है या अब इसकी ज़रूरत नहीं है. अगर ऊपर दिए गए सिंगल रेफ़रंस वाले सुझाव के बादRememberObserverइंस्टेंस, किसी बाहरी संसाधन को ट्रैक कर रहा है, तोonForgottenऔरonAbandoned, दोनों से पता चलता है कि अब संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट,onRememberedमें शुरू किए गए काम या असाइन किए गए संसाधनों को ट्रैक कर रहा है, तोonAbandonedको अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकि अगरonRememberedको कॉल किया जाता है, तोonAbandonedको कॉल नहीं किया जाएगा. (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 मॉड्यूल अब टेस्ट किए जा रहे यूज़र इंटरफ़ेस (यूआई) के लिए, रीकंपोज़र बनाने की सुविधा को कॉन्फ़िगर कर पाएगा (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() पब्लिक एपीआई (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)
आउटलाइन.बाउंड्स प्रॉपर्टी जोड़ी गई है, ताकि आउटलाइन लागू करने के अलग-अलग तरीकों के लिए बाउंडिंग रेक्ट हासिल किया जा सके. (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)
DpOffset के लिए, Position का नाम बदला गया और getDistance() को हटाया गया (Ib2dfd)
Dp.isFinite() फ़ंक्शन को val Dp.isFinite में बदला गया (I50e00)
गड़बड़ियां ठीक की गईं
- Recomposer अब अपनी मौजूदा स्थिति का फ़्लो दिखाता है. इससे इसकी गतिविधि और इससे जुड़े इफ़ेक्ट की गतिविधि को मॉनिटर किया जा सकता है. (Ifb2b9)
- अब keyEvent.nativeKeyEvent (I87c57, b/173086397) के ज़रिए, native keyEvent को ऐक्सेस किया जा सकता है
animate()को अबanimateAsState()से बदल दिया गया है. यहTके बजायState<T>दिखाता है. इससे बेहतर परफ़ॉर्मेंस मिलती है, क्योंकि अमान्य होने के दायरे को उस जगह तक सीमित किया जा सकता है जहां राज्य की वैल्यू पढ़ी जाती है. (Ib179e)- Semantics role API जोड़ें. साथ ही, Role को क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले SemanticsModifier के पैरामीटर के तौर पर जोड़ें. 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 प्रॉपर्टी जोड़ी गईं. इनसे यह कॉन्फ़िगर किया जा सकता है कि डायलॉग का onDismissRequest लैम्ब्डा कब शुरू होगा. (If5e17)
Painter ऑब्जेक्ट को ओपेक तरीके से लोड करने के लिए, painterResource API जोड़ा गया है. ये ऑब्जेक्ट, रास्टर इमेज फ़ॉर्मैट (जैसे कि PNG) या VectorDrawable से लोड किए जा सकते हैं. उपयोगकर्ताओं को अब पहले से यह तय करने की ज़रूरत नहीं है कि किस तरह की ऐसेट का इस्तेमाल करना है. वे इस तरीके को कॉल करके, Painter ऑब्जेक्ट पा सकते हैं. इसका इस्तेमाल Image कंपोज़ेबल या पेंटर मॉडिफ़ायर में किया जा सकता है. (I2c703, b/173818471)
Modifier.clearAndSetSemantics को जोड़ा गया है, ताकि डिसेंडेंट के सेमेंटिक को मिटाया जा सके और नए सेमेंटिक सेट किए जा सकें. (I277ca)
DrawScope के साथ रखने के लिए, ContentDrawScope को ui-graphics मॉड्यूल में ले जाया गया. (Iee043, b/173832789)
स्ट्रोक किए गए शेप को अलग-अलग पैटर्न देने के लिए, PathEffect ग्राफ़िक्स एपीआई लॉन्च किया गया. PathEffect के expect/actual लागू करने के पक्ष में, NativePathEffect के इस्तेमाल को बंद कर दिया गया है. (I5e976, b/171072166)
Compose में IdlingResource इंटरफ़ेस जोड़े गए हैं. ये Espresso के आइडलिंग रिसॉर्स के Compose के साथ काम करने वाले वैरिएंट के तौर पर जोड़े गए हैं. इन्हें 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 API को 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 को अपडेट किया गया है, ताकि
pivotFractionXऔरpivotFractionYकोcomponent1औरcomponent2के तौर पर दिखाने के लिए, डिस्ट्रक्चरिंग सिंटैक्स का इस्तेमाल किया जा सके (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 का typealias जोड़ा गया, ताकि इसे ImageVector.Builder से लिंक किया जा सके. (Icfdc8)
- ImageAsset और इससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया है. (Ia2d99)
- PlacementScope के place() के लिए zIndex पैरामीटर जोड़ा गया है, ताकि अब Modifier.zIndex() LayoutModifier के तौर पर काम करे. साथ ही, कोई भी कस्टम लेआउट, प्लेसमेंट ब्लॉक में अपने बच्चों के लिए zIndex सेट कर सके (I711f7, b/171493718)
- फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (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फ़ंक्शन यानीtypeface(Typeface.DEFAULT)के ज़रिए, Android टाइपफ़ेस लोड किया जा सकता है.typefaceFromFontFamily()का नाम बदलकरtypeface()(I52ab7) भी कर दिया गया है - लिंट चेक जोड़ा गया है. इससे यह पता चलता है कि मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर पर एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें आसानी से एक साथ जोड़ा जा सके. (I07981)
- ui-test मॉड्यूल और उसके स्टब (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 की सीमाओं को खींचकर डेस्टिनेशन को पूरी तरह से भरा जा सके. इसके लिए, नॉन-यूनिफ़ॉर्म स्केलिंग की जाती है.
- Size पैरामीटर के साथ 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)
- Size पैरामीटर पर lerp मेथड के रिटर्न टाइप को अपडेट किया गया है, ताकि गैर-शून्य Size को लौटाया जा सके. इससे गैर-ज़रूरी बॉक्सिंग से बचा जा सकेगा. (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 डेटा को इस तरह से बदला जा सकता है कि उपयोगकर्ता कोड से, पॉइंटर के अन्य डेटा में बदलाव न किया जा सके. दूसरे चरण में,
PointerInputFilter.onPointerEvent(...)सेList<PointerInputChange>के रिटर्न टाइप को हटाना होगा. (Id067e)टेक्स्ट में चुनने की सुविधा और डेमो बंद करें. (Ie7e97)
onGloballyPositioned को इनलाइन फ़ंक्शन बनाया गया (I15830)
OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है. साथ ही, onPositioned() का नाम बदलकर onGloballyPositioned() कर दिया गया है. (I587e8, b/169083903)
मालिक के लिए hasPendingMeasureOrLayout प्रॉपर्टी जोड़ी गई है. इससे यह पता चलता है कि मालिक के पास लेआउट से जुड़ा कोई काम बाकी है या नहीं. (I3d9f8, b/169038599)
प्रोग्राम के हिसाब से फ़ोकस हटाने के लिए एपीआई जोड़ा गया (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)को हटा दिया गया है. इसकी जगहPointerInputFilter.onPointerEvent(...)का इस्तेमाल किया जाना चाहिए. (I6f04a)साइज़ में बदलाव
- Removed Size.getFlipped
- Removed 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) के ड्रॉइंग ऑर्डर को तय करता है
- सुलभता के लिए, AnnotatedString को SpannableString में बदलने की सुविधा. (Ief907)
- हमने Android की उन क्लास के लिए स्टब जोड़े हैं जो पुराने प्लैटफ़ॉर्म पर हैं, ताकि जब भी हो सके रिफ़्लेक्शन का इस्तेमाल न किया जाए. (Ia1790)
- बग ठीक किया गया: अगर सॉफ़्टवेयर कीबोर्ड दिखने की वजह से ऐप्लिकेशन ट्रांसलेट करता है, तो पॉइंटर इनपुट कोऑर्डिनेट गलत हो जाते थे. (Ic4cec, b/163077821)
वर्शन 1.0.0-alpha04
1 अक्टूबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- OwnerScope जोड़ा गया है, ताकि लेआउट और ड्रॉइंग के ऑब्ज़र्वेशन स्कोप को इकट्ठा किया जा सके. ऐसा तब किया जाता है, जब वे अब मान्य नहीं रहते. (Ic4cf8)
- कॉन्टेंट के लेआउट को फिर से मेज़र करने और साइज़ बदलने पर, कॉलबैक पाने के लिए OnRemeasuredModifier और onSizeChanged() को जोड़ा गया है. (I657cf, b/154108792)
- लंबे समय तक दबाकर रखने की सुविधा के लिए, सिमैंटिक्स ऐक्शन जोड़ा गया (I6281b, b/156468846)
- FocusManager को निजी के तौर पर सेट किया गया. (I7872f)
DrawCacheModifier को लागू करने के लिए, DrawModifier पर वैकल्पिक प्रॉपर्टी जोड़ने के बजाय, लागू करने की सुविधा को अपडेट किया गया.
अलग-अलग तरीकों के लिए अपडेट किया गया दस्तावेज़ (Ibd166)
ऑब्जेक्ट बनाने से बचने के लिए, TextRange को इनलाइन बनाएं. (Id034b)
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)
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- DrawScope एपीआई को अपडेट किया गया है. इनमें स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीके शामिल हैं. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद इसे हटा दिया जाता है
- clipPath के दस्तावेज़ को अपडेट किया गया है, ताकि गोल आयत के बजाय Path का रेफ़रंस दिया जा सके
- clipPath में मौजूद right पैरामीटर के दस्तावेज़ में स्पेसिंग से जुड़ी समस्या ठीक की गई
- DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
- इनसेट तरीके में dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
- इनसेट ओवरलोड जोड़ा गया है, जो सभी चार सीमाओं के लिए एक जैसी इनसेट वैल्यू देता है
- इनसेट तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इनसेट को चारों साइड पर लागू किया जाएगा
- Rect क्लास के लिए अपडेट किया गया दस्तावेज़
- kdoc स्टाइल से मेल खाने के लिए, आयत के पैरामीटर पर टिप्पणियां अपडेट की गईं
- Rect.join और Rect.expandToInclude को हटाया गया
- Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को बंद कर दिया गया
- (If086a, b/167737376)
- @VisibleForTesting के साथ एनोटेट किए गए rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को इंटरनल एपीआई बनाएं और उनके 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 से, Offset पैरामीटर का इस्तेमाल करने वाले ऑपरेटर मेथड हटा दिए गए हैं. इन कार्रवाइयों का नतीजा साफ़ तौर पर नहीं बताया गया है. साथ ही, इनके नतीजे का टाइप भी उम्मीद के मुताबिक नहीं है. उदाहरण के लिए, क्या साइज़ - ऑफ़सेट से, अंतर के साथ ऑफ़सेट या साइज़ का नतीजा मिलना चाहिए?
साथ ही, 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का इस्तेमाल करें. ध्यान दें कि आने वाले समय में, व्यू और ViewGroup को सीधे तौर पर कंपोज़ करने की सुविधा काम नहीं करेगी. ऐसा तब तक नहीं होगा, जब तक ये कंपोज़िशन ट्री में लीफ़ न हों. ऐसा तब किया जा सकता है, जब 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)
- Alt हार्डवेयर कुंजी (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 जोड़ा गया है और मौजूदा 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 हैरारकी के रूट के हिसाब से SemanticsNode की पोज़िशन पाने के लिए
SemanticsNode.positionInRootजोड़ा गया (Icdf26, b/161336532) - Android से Compose और फिर वापस Android में MotionEvents पास किए गए. (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 को lateinit के बजाय, गैर-शून्य पैरामीटर के तौर पर फिर से फ़ैक्टर करने के लिए, EmptyCanvas क्लास का स्टब बनाया गया. साथ ही, यह पक्का किया गया कि फ़ील्ड में शून्य वैल्यू न हो
- ClipOp एनम का नाम बदलकर, पास्कल केस में कर दिया गया है
- FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeJoin enums के नाम बदलकर, उन्हें पास्कल केस में बदला गया
- PointMode enum का नाम बदलकर, पास्कल केस कर दिया गया है
- PaintingStyle enum का नाम बदलकर Pascal Case कर दिया गया है
- PathFillType enum का नाम बदलकर, पास्कल केस में रखा गया
- StrokeCap enums का नाम बदलकर, पास्कल केस किया गया
- DrawCache को लागू करने के तरीके को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है, ताकि fillPaint और strokePaint इंटरनल पैरामीटर के लिए, लेज़ी डेलिगेशन का इस्तेमाल न किया जा सके
- इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न करना पड़े
- @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
- हर पाथ के निर्देश के लिए, @Immutable एनोटेशन वाले PathNode को अपडेट किया गया है
- वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए ज़रूरत से ज़्यादा शर्तों की जांच को हटाया जा सके. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही उन्हें हैंडल करता है
- फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद कर दिया गया है
- @Immutable और @Stable एपीआई के साथ अपडेट की गई ब्रशिंग क्लास और फ़ंक्शन कंस्ट्रक्टर
- VertexMode enum को PascalCase में अपडेट किया गया
- DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि अगर स्ट्रोक के पैरामीटर बदल गए हैं, तो पेंट पर उन्हें शर्तों के साथ बदला जा सके
- डिस्ट्रक्चरिंग एपीआई जोड़ने के लिए, साइज़ अपडेट किया गया. UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया और इस्तेमाल न होने वाले तरीकों को हटा दिया गया
- Compose के BlendMode API के इस्तेमाल को अपडेट किया गया है, ताकि एपीआई लेवल के आधार पर Android फ़्रेमवर्क के BlendModes और PorterDuff मोड के बीच सही तरीके से मैप किया जा सके. 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) - FocusModifier की जगह Modifier.focus को जोड़ा गया. (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)
- Applier को अब कंपोज़िशन (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)
इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कंस्ट्रक्टर को कॉल किया जाता था, तो कंपोज़ कंपाइलर प्लगिन उसे इंटरसेप्ट कर लेता था. ऐसा तब होता था, जब (I5205a, b/158123804) मौजूद होता था
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 को उसी तरह बनाया या पाया जा सकता है जिस तरह ऐक्टिविटी या फ़्रैगमेंट में काम करता है (I5fdd1)
IntPx की जगह Int का इस्तेमाल किया गया. IntPxPosition की जगह IntOffset का इस्तेमाल किया गया. IntPxSize को IntSize से बदल दिया गया है. (Ib7b44)
साइज की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxSize के बजाय Size क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. जैसे, दो फ़्लोट वैल्यू को पैक करने के लिए, लंबे समय तक इस्तेमाल किया जा सकता है. इससे फ़्लोट के तौर पर दिखाई गई चौड़ाई और ऊंचाई को दिखाया जा सकता है. (Ic0191)
पोजीशनिंग की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. साथ ही, x और y ऑफ़सेट को फ़्लोट के तौर पर दिखाने के लिए, दो फ़्लोट वैल्यू को पैक करने के लिए long का इस्तेमाल किया जा सकता है. (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 कॉम्पोनेंट जोड़ा गया है. यह Material Design मेन्यू को लागू करने वाला कॉम्पोनेंट है. (I9bb3d)
LayoutTag() को हटा दिया गया है. इसके बजाय, कृपया Modifier.tag() का इस्तेमाल करें. अब Modifier.matchParent() का इस्तेमाल नहीं किया जा सकता. इसके बजाय, कृपया Modifier.matchParentSize() का इस्तेमाल करें. (If8044)
पिक्सेल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I57bff)
Modifier.semantics को फिर से इस्तेमाल किया जा सकता है, ताकि इसका इस्तेमाल टॉप लेवल के कॉम्पोनेंट के लिए किया जा सके. (I4cfdc)
CanvasScope को एक साथ लागू किया गया है, इसलिए अब सिर्फ़ DrawScope और ContentDrawScope उपलब्ध हैं CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस लागू करने और LayoutDirection उपलब्ध कराने के लिए, DrawScope को अपडेट किया गया ContentDrawScope में DrawScope सबक्लास को मिटाया गया Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब खुद RTL प्रॉपर्टी को बनाए न रखें, क्योंकि DrawScope इसे मैन्युअल तरीके से उपलब्ध कराए बिना ही उपलब्ध कराता है (I1798e)
DoubleTapGestureFilter अब पूरे ट्री में SingleTapGestureFilter के बीच अंतर करता है. (If92b1)
Alignment API को अपडेट किया गया है. साथ ही, इसमें ऐब्सलूट अलाइनमेंट के लिए सहायता जोड़ी गई है. यह आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता (I38cd3)
DrawLayer मॉडिफ़ायर एपीआई में बदलाव किया गया है: outlineShape का नाम बदलकर shape कर दिया गया है. इसकी डिफ़ॉल्ट वैल्यू RectangleShape है और अब इसे शून्य पर सेट नहीं किया जा सकता; clipToOutline का नाम बदलकर clip कर दिया गया है; clipToBounds को हटा दिया गया है, क्योंकि यह RectangleShape के साथ clip == true के जैसा ही है (I7ef11, b/155075735)
अपडेट किए गए ज़्यादा लेवल वाले Compose API, जो Canvas को CanvasScope के बजाय Canvas को दिखाते हैं. इससे उपभोक्ताओं को अपने पेंट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी 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)
Made Alignment को किसी भी वैल्यू के साथ इंस्टैंटिएट किया जा सकता है. 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 के जैसा ही नतीजा देता है
ड्रॉ मॉडिफ़ायर के लिए, दाएं से बाएं लिखे जाने वाली भाषाओं के लिए सहायता. (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 प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. इसके बजाय, डेवलपर को एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.
LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, लेआउट के सभी साइज़ में पूर्णांक का इस्तेमाल किया जाना चाहिए, न कि फ़्लोटिंग पॉइंट वैल्यू का. (I9367b)
Constraints (I0fd15) के एपीआई में सुधार
CanvasScope API बनाया गया है. यह Canvas ऑब्जेक्ट को रैप करता है, ताकि बिना किसी स्टेटस के, डिक्लेरेटिव ड्राइंग एपीआई सरफेस को दिखाया जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर स्कोप में शामिल होते हैं. साथ ही, साइज़िंग की जानकारी भी, उससे जुड़े इंसर्ट बाउंड्री के हिसाब से तय होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, Paint का अपना स्टेट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं होती.
- CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि उसमें डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके
इस्तेमाल नहीं किए जा रहे MaskFilter API को हटा दिया गया है, क्योंकि इसका इस्तेमाल सीमित है और ज़्यादातर इस्तेमाल के मामलों में, यह हार्डवेयर ऐक्सेलरेट के लिए ऑप्टिमाइज़ नहीं किया गया है (I54f76)
RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)
एपीआई में, Color के सभी ऐसे इस्तेमाल को बदला गया है जिनमें null वैल्यू इस्तेमाल की जा सकती थी. अब null वैल्यू इस्तेमाल नहीं की जा सकती. साथ ही, 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)
यह TextField में टेक्स्ट चुनने के लिए, LongPressAndDrag को लागू करता है. (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.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करके, ScrollableColumn और ScrollableRow को अपने एलिमेंट पर लागू करें. इसी तरह, 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 को dispatch के दौरान subcomposition के ज़रिए हटाने पर, पॉइंटर इनपुट dispatch क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (Iab398, b/157998762)
Radius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया है. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, कंपैनियन ऑब्जेक्ट बनाने के तरीके हटा दिए गए हैं. साथ ही, डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल किया गया है, ताकि y-ऐक्सिस के साथ रेडियस, x-ऐक्सिस के रेडियस पैरामीटर से मेल खाए.
DrawScope.drawRoundRect को अपडेट किया गया है, ताकि यह x और y ऐक्सिस के साथ रेडियस के लिए दो अलग-अलग फ़्लोट वैल्यू के बजाय, एक ही रेडियस पैरामीटर का इस्तेमाल कर सके (I46d1b)
Recompose कंपोज़ेबल अब काम का ऐब्स्ट्रैक्शन नहीं है. MutableState असाइनमेंट की वजह से, ज़्यादातर रीकंपोज़िशन होने चाहिए. इससे ज़्यादा के लिए, हमारा सुझाव है कि आप
invalidateफ़ंक्शन का इस्तेमाल करके, मौजूदा स्कोप को फिर से कंपोज़ करें. (Ifc992)Compose की अलग-अलग क्लास में Px क्लास के इस्तेमाल को बदला गया है. यह बड़े पैमाने पर रिफ़ैक्टरिंग के तहत किया गया है, ताकि पिक्सल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा किया जा सके (Iede0b)
यह 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)