Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(सभी कंपोज़ पैकेज के लिए, एपीआई के बारे में जानकारी देने वाले दस्तावेज़ देखें)
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 22 अक्टूबर, 2025 | 1.9.4 | - | 1.10.0-beta01 | - |
संरचना
Compose, androidx में मौजूद सात Maven Group Id का कॉम्बिनेशन है. हर ग्रुप में, फ़ंक्शन का एक टारगेट किया गया सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक के बारे में बताया गया है.
| ग्रुप | ब्यौरा |
|---|---|
| compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
| compose.compiler | @Composable फ़ंक्शन को बदलें और Kotlin कंपाइलर प्लगिन की मदद से ऑप्टिमाइज़ेशन चालू करें. |
| 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 कंपाइलर प्लगिन के लिए कोर रनटाइम, ताकि उसे टारगेट किया जा सके. |
| compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, Compose यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.10
वर्शन 1.10.0-beta01
22 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-beta01 रिलीज़ हो गया है. वर्शन 1.10.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह सभी इनडायरेक्ट टच एपीआई को अपडेट करता है, ताकि वे पॉइंटर इनपुट एपीआई से मेल खाने के लिए, इनडायरेक्ट पॉइंटर एपीआई के नाम का इस्तेमाल कर सकें. (I238ce, b/451607214)
PagerState.currentPageOffsetFractionको@FrequentlyChangingValueसे एनोटेट किया गया. (Idfaab)
गड़बड़ियां ठीक की गईं
- इससे आरटीएल लेआउट की दिशाओं के लिए मार्की के व्यवहार से जुड़ी समस्या ठीक हो जाती है. (Ib8be3)
वर्शन 1.10.0-alpha05
08 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha05 रिलीज़ हो गया है. वर्शन 1.10.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PaddingValuesअब जोड़ और घटाव की सुविधा के साथ काम करते हैं, ताकि पैडिंग की सामान्य कैलकुलेशन को आसान बनाया जा सके. (I327e1, b/244468479)
गड़बड़ियां ठीक की गईं
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledडिफ़ॉल्ट रूप से चालू होती है. यह परफ़ॉर्मेंस ऑप्टिमाइज़ेशन है. इससे हमें प्रीफ़ेच के दौरान किए जाने वाले काम को बेहतर तरीके से डिस्ट्रिब्यूट करने में मदद मिलती है. उदाहरण के लिए, हम एक यूज़र इंटरफ़ेस (यूआई) फ़्रेम के दौरान,LazyColumnके अगले आइटम के कुछ हिस्सों के लिए ही कंपोज़िशन कर सकते हैं. इसके बाद, बाकी हिस्सों को अगले फ़्रेम में कंपोज़ करना जारी रख सकते हैं. (I4c7fe)
वर्शन 1.10.0-alpha04
24 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha04 रिलीज़ हो गया है. वर्शन 1.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PagerStateके लिएScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I113b7)LazyStaggeredGridStateके लिएScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I1028e)LazyGridStateके लिएScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I9e50c)LazyListStateके लिएScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I5ee29)ScrollStateके लिएScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I27f66)ScrollableStateइंटरफ़ेस (Idca93) मेंscrollIndicatorStateप्रॉपर्टी जोड़ेंisWindowInsetsModifierLocalNodeImplementationEnabledफ़्लैग हटा दिया गया (I15e8f, b/440964232)scrollableArea()मॉडिफ़ायर को दिखाएं. इसका इस्तेमाल करके, कॉम्पोनेंट को स्क्रोल किया जा सकता है. साथ ही, कॉन्टेंट को उसकी सीमाओं के हिसाब से काटा जा सकता है. इसके अलावा, ओरिएंटेशन, आरटीएल, औरreverseScrollingफ़्लैग के आधार पर, कॉन्टेंट के स्क्रोल करने की दिशा को अपने-आप मैनेज किया जा सकता है. (I9471b, b/316559454)
वर्शन 1.10.0-alpha03
10 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha03 रिलीज़ हो गया है. वर्शन 1.10.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposeFoundationFlags.isNonComposedClickableEnabledको हटाता है (I0dfc0, b/406228525)FillableDataइंस्टेंस बनाने के लिए, फ़ैक्ट्री फ़ंक्शन को कंपैनियन ऑब्जेक्ट में ले जाएं.FillableData(value)को कॉल करने के बजाय, फ़ैक्ट्री के नए तरीकों का इस्तेमाल करें:FillableData.createFrom(value). (I2e200, b/441719650)- फ़ोकस सर्च के लिए, बाउंड लेआउट से बाहर की कार्रवाई करने के लिए,
BeyondBoundsLayoutModifierNodeएक नया मॉडिफ़ायर नोड जोड़ा गया है. (I39be1, b/416133658) ScrollState.valueको@FrequentlyChangingValueप्रॉपर्टी के तौर पर मार्क किया गया है. (I4723d)- डिफ़ॉल्ट तौर पर लागू करने के लिए,
LazyLayoutKeyIndexMapऔर फ़ैक्ट्री शुरू की गई. (I4fd0c, b/415038029)
गड़बड़ियां ठीक की गईं
- कॉलम और लाइन अब आइटम के असल साइज़ को
Modifier.alignको सही तरीके से पास करते हैं. इससे उस समस्या को हल किया गया है जिसमें कस्टमModifier.alignलागू करने पर, गलत वैल्यू 0 मिलती थी. (I8194f, b/439716351)
वर्शन 1.10.0-alpha02
27 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha02 रिलीज़ हो गया है. वर्शन 1.10.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
isFlingContinuationAtBoundsEnabledफ़्लैग हटाया गया. (I6b84f)isAdjustPointerInputChangeOffsetForVelocityTrackerEnabledफ़्लैग हटाया गया. (I62380)isOnScrollChangedCallbackEnabledफ़्लैग हटाया गया. (I667dc)isAutomaticNestedPrefetchEnabledफ़्लैग हटाया गया. (I4f416)DragGesturePickUpEnabledफ़्लैग हटाया गया. (Ib8500)- स्क्रोलबार की स्थिति दिखाने के लिए
ScrollIndicatorStateAPI पेश किया गया (I5e229)
गड़बड़ियां ठीक की गईं
Modifier.anchoredDraggableका इस्तेमाल करने परconfirmValueChangeके चालू न होने की गड़बड़ी को ठीक किया गया है. (Iff7cc)
वर्शन 1.10.0-alpha01
13 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01 रिलीज़ हो गया है. वर्शन 1.10.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पेजर की प्रीफ़ेच रणनीति को अपडेट करें, ताकि स्क्रोल की दिशा में डिफ़ॉल्ट रूप से एक आइटम के बजाय, कैश विंडो का इस्तेमाल किया जा सके. अब Pager में, शुरुआती प्रीफ़ेचिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. साथ ही, प्रीफ़ेचिंग, एक व्यूपोर्ट के बराबर विंडो के साइज़ पर आधारित होगी. इसका मतलब है कि हम प्रीफ़ेच किए गए आइटम से पूरे व्यूपोर्ट को भरने की कोशिश करेंगे. साथ ही, आइटम को ज़्यादा समय तक दिखाया जाएगा. (I4d45e, b/292136289)
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabledफ़्लैग जोड़ा गया है. इससे,WindowInsetsपरफ़ॉर्मेंस ऑप्टिमाइज़ेशन को बंद किया जा सकता है. ऐसा तब किया जा सकता है, जब नए तरीके से लागू करने पर व्यवहार में बदलाव हो. (I8e912)SnapFlingBehaviorअब स्नैपिंग के दौरान, स्नैप ऐनिमेशन की खास बातों को ओवरशूट करने की अनुमति देता है. इससे,snapAnimationSpecके तौर पर बाउंस होने वाले स्प्रिंग स्पेसिफ़िकेशन को चालू किया जा सकता है, ताकि बाउंस होने वाला स्नैप ऐनिमेशन बनाया जा सके. स्नैप स्पेसिफ़िकेशन का इस्तेमाल करके अप्रोच करने पर, तय सीमा से ज़्यादा वैल्यू को अनदेखा किया जाता है. (I373c2)ComposeViewमें माउस या टचपैड से पॉइंटर डाउन करने पर, अब फ़ोकस अपने-आप हट जाएगा. ऐसा तब होगा, जब पॉइंटर डाउन, फ़ोकस किए गए नोड की सीमाओं के अंदर नहीं होता है. इससे "टैप करके फ़ोकस हटाएं" वाला यूज़र एक्सपीरियंस मिलता है. पॉइंटर इनपुट डिवाइसों का इस्तेमाल करते समय, यह मौजूदा व्यवहार से ज़्यादा बेहतर होता है. इस सुविधा से ऑप्ट-आउट करने के लिए, नएAbstractComposeView.isClearFocusOnPointerDownEnabledएपीआई का इस्तेमाल किया जा सकता है. (I6322b, b/282963174)- अब Scrollable, माउस व्हील को स्क्रोल करने पर होने वाले दो डाइमेंशन वाले इवेंट को बेहतर तरीके से सपोर्ट करता है.
MouseInjectionScopeमें इस्तेमाल के उदाहरणों की जांच करने के लिए, एक नया टेस्ट एपीआई उपलब्ध कराया गया है. हमनेMouseInjectionScopeमें स्क्रोल करने के तरीकों के लिए एक नया ओवरलोड भी पेश किया है. साथ ही, नई सुविधा को कंट्रोल करने के लिए एक फ़्लैग भी पेश किया है, जिसेisMouseWheel1DAxisLockingEnabled(I136df) कहा जाता है - ऑप्टिमाइज़ेशन के लिए पॉइंटर इनपुट को निलंबित करने के बजाय, रॉ पॉइंटर इनपुट का इस्तेमाल करने के लिए
DragGestureNodeको अपडेट किया गया. ये बदलाव, फ़्लैगisNonSuspendingPointerInputInDraggableEnabled(I0fa4b) के पीछे जोड़े गए हैं - कुछ
AnchoredDraggableएपीआई को@FrequentlyChangingValueके साथ एनोटेट किया गया है.offset,requireOffset, औरprogressमें अक्सर बदलाव होता रहता है. इसलिए, इन्हें कंपोज़िशन में नहीं पढ़ा जाना चाहिए. कृपया इन वैल्यू को लेआउट और ड्रॉ फ़ेज़, इफ़ेक्ट या कंपोज़िशन के बाहर से ऐक्सेस करें. (I05539) isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabledफ़्लैग हटाए गए (I36c18)CompositionLocalको पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए भरे गए सेल को हाइलाइट करने वाले ब्रश में बदलाव करने के लिए किया जा सकता है. (I52329)FocusPropertiesमें पसंद के मुताबिक फ़ोकस रेक्ट जोड़ा गया. अब फ़ोकस किए जा सकने वाले एलिमेंट के बाउंडिंग बॉक्स को डिफ़ॉल्ट करने के बजाय, फ़ोकस करने के लिए अपनी पसंद की जगह तय की जा सकती है. इस जानकारी का इस्तेमाल, फ़ोकस ट्रैवर्सल सिस्टम और स्क्रोल किए जा सकने वाले कंटेनर के 'व्यू में रखें' लॉजिक के लिए किया जाता है. (Id6555, b/368378073)Tightनाम का नयाLineHeightStyle.Modeजोड़ा गया. इस मोड की मदद से, लाइन की ऊंचाई को कम रखा जा सकता है. भले ही, इससे लंबे ग्लिफ़ कट जाएं. (Id3849)- नया इंटरपोलेटबल इंटरफ़ेस जोड़ा गया है. इससे अलग-अलग टाइप के बीच अपने-आप इंटरपोलेशन हो जाता है. हालांकि, इसके लिए यह ज़रूरी है कि एक टाइप को दूसरे टाइप में बदलने का तरीका पता हो. इस इंटरफ़ेस का इस्तेमाल, कंपोज़ के कई टाइप में किया जाता है. जैसे, ब्रश और शेप. हालांकि, इसका इस्तेमाल बाहरी तौर पर भी किया जा सकता है. (I58eab)
- यह इनडायरेक्ट इनपुट इवेंट और स्क्रोलिंग के लिए इस्तेमाल किए जाने वाले कोऑर्डिनेट ऐक्सिस को तय करने का तरीका जोड़ता है. (I58e7c)
- डिसप्ले कटआउट का पाथ पाने के लिए, नया
WindowInsets.cutoutPathएपीआई जोड़ता है (Ib90b1, b/279636456) isWindowInsetsDefaultPassThroughEnabledफ़्लैग को हटा दिया गया है. इससे WindowInsets डिफ़ॉल्ट रूप से इस्तेमाल नहीं होते हैं, ताकि चाइल्ड व्यू डिफ़ॉल्ट रूप सेWindowInsetsपा सकें. (I888e0, b/412469666)
गड़बड़ियां ठीक की गईं
- फ़िलहाल,
isNonSuspendingPointerInputInDraggableEnabledको बंद कर दें. (Ia41c4) - डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)
DraggableAnchors'minPosition/maxPositionके दस्तावेज़ को अपडेट किया गया है. इससे पता चलता है कि इन एपीआई को अन्यDraggableAnchorsएपीआई के मुताबिक, Float.NaN वैल्यू दिखानी चाहिए. (I0460a)- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से ऐंकर खाली होने पर
DraggableAnchors#closestAnchorक्रैश हो जाता था (I4e646) DraggableAnchorsकी परफ़ॉर्मेंस में सुधार (If4065, I0460a)TextFieldState.edit { }अब बदलावों को पहले जैसा करने के इतिहास को नहीं मिटाता. इसके बजाय, यह बदलाव को पहले जैसा करने के लिए एक अलग एंट्री बनाता है. अगर आपकोeditकॉल के बाद, अनडू स्टैक को मिटाना है, तो कृपयाTextFieldState.undoState.clearHistory()का इस्तेमाल करें. (I12c14)SelectionContainerऔरBasicTextField(value, onValueChange)ओवरलोड में, शब्द चुनने के लिए दो बार टैप करने की सुविधा जोड़ी गई. (Ibb06a)AutoboxingStateValuePropertyDetectorको K1 और K2, दोनों के साथ काम करने के लिए, छोटी-मोटी गड़बड़ियां ठीक की गई हैं (Ie81c1)- AndroidViews से किए गए
requestRectangleOnScreenअनुरोध अब Compose में सही तरीके से भेजे जाते हैं. इससेEditTextजैसे व्यू के साथ इंटरैक्ट करने पर, उन्हें स्क्रीन पर बनाए रखने में मदद मिलती है. (Ibbf4c) - कॉलम और लाइन अब आइटम के असल साइज़ को
Alignment.Vertical.alignऔरAlignment.Horizontal.alignको सही तरीके से पास करते हैं. इससे उस समस्या को हल किया गया है जिसमें कस्टम अलाइनमेंट लागू करने पर, गलत वैल्यू 0 मिलती थी. (I3e460, b/349722072)
वर्शन 1.9
वर्शन 1.9.4
22 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.9.4 रिलीज़ हो गया है. वर्शन 1.9.4 में ये बदलाव शामिल हैं.
वर्शन 1.9.3
08 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.9.3 रिलीज़ हो गया है. वर्शन 1.9.3 में ये बदलाव शामिल हैं.
वर्शन 1.9.2
24 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.9.2 रिलीज़ हो गया है. वर्शन 1.9.2 में ये बदलाव शामिल हैं.
वर्शन 1.9.1
10 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.9.1 रिलीज़ हो गया है. वर्शन 1.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LazyListsमेंLazyLayoutCacheWindowका इस्तेमाल करते समय क्रैश होने की समस्या ठीक की गई (c39f5f3)
वर्शन 1.9.0
13 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.9.0 रिलीज़ हो गया है. वर्शन 1.9.0 में ये बदलाव शामिल हैं
1.8.0 के बाद हुए ज़रूरी बदलाव
- Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.propertiesमेंandroid.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose lint की जांच करने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है. - बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए फ़ंक्शन, अब सिर्फ़IndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. ये इंस्टेंस,LocalIndicationका इस्तेमाल करके उपलब्ध कराए जाते हैं. Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल करने पर, यह बदलाव लागू होगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर इसका कोई असर नहीं पड़ता. अगरLocalIndicationको इंडिकेशन लागू करने का ऐसा तरीका दिया जा रहा है जिसे अब इस्तेमाल नहीं किया जा सकता और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान ऐप्लिकेशन क्रैश हो जाएगा. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे, इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन को रीकंपोज़िशन के दौरान स्किप करने की अनुमति मिलती है. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे, माइग्रेशन के दौरान ब्लॉक किए बिना Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333) - नेस्टेड स्क्रोलिंग में फ़्लिंग प्रोपगेशन से जुड़ी समस्या को ठीक करने के लिए,
isFlingCancellationWithNestedScrollFixEnabledको जोड़ा गया है. इस सीएल में, हम फ़्लिंग जारी रखने की सुविधा को पहले जैसा कर रहे हैं. इसे I9326a में हटा दिया गया था. अगर बच्चे को कंपोज़िशन से हटा दिया जाता है, तो हम फ़्लिंग ऐनिमेशन को अब भी रद्द कर देंगे. (I467f4, b/405910180, b/419049142, b/416784125) ContentInViewNodeमेंscrollAnimationSpecका इस्तेमाल फिर से जोड़ें.scrollAnimationSpecबंद करने की प्रोसेस के दौरान, इस सुविधा को हटा दिया गया था. इस वजह से, इस्तेमाल के उदाहरण काम नहीं कर रहे हैं. (I1436a, b/403301605)LazyLayoutको स्थिर किया गया. (If5db4),LazyLayoutPrefetchStateऔर इसकी शेड्यूलिंग का तरीकाschedulePrecompositionऔरschedulePrecompositionAndPremeasure. (I4362f, b/252853717) औरLazyLayoutItemProvider(Icce09,b/261565751)- कंपोज़ की सुविधा को
ViewTreeObserver.OnScrollChangedको ट्रिगर करने की अनुमति दें. इस सुविधा कोisOnScrollChangedCallbackEnabledफ़्लैग के तहत लॉन्च किया गया है. हमनेDelegatableNode dispatchOnScrollChangedका एक एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286) - स्टेट बनाने के लिए,
Modifier.scrollable2D,Scrollable2DState, और कंपैनियन एपीआई पेश किए गए. साथ ही, सामान्य स्क्रोल एक्सटेंशन फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040) PrefetchSchedulerऔर पसंद के मुताबिक बनाने की सुविधा को बंद कर दिया गया है. इसके बजाय, अब इंटरनल तौर पर लागू की गई सुविधा का इस्तेमाल किया जाता है. यह सुविधा, सभी काम अपने-आप करती है. (I3a9a6, b/420551535)TextFieldState.edit { }अब बदलावों को पहले जैसा करने के इतिहास को नहीं मिटाता. इसके बजाय, यह बदलाव को पहले जैसा करने के लिए एक अलग एंट्री बनाता है. अगर आपको बदलाव करने के बाद, बदलाव को पहले जैसा करने की सुविधा को बंद करना है, तो कृपयाTextFieldState.undoState.clearHistory()का इस्तेमाल करें. (I12c14)- कॉन्टेक्स्ट मेन्यू और सिलेक्शन टूलबार, अब दोनों स्मार्ट आइटम (स्मार्ट सिलेक्शन) के साथ काम करते हैं
- स्टाइल किया गया टेक्स्ट
OutputTransformationजोड़ा गया है, ताकिstateओवरलोड का इस्तेमाल करकेTextFieldके आउटपुट को स्टाइल किया जा सके. TextField: कॉन्टेक्स्ट मेन्यू (राइट क्लिक मेन्यू) के साथ काम करता है.- अब
SelectionContainerमें मौजूद एक से ज़्यादा टेक्स्ट कंपोज़ेबल से कॉपी किए गए टेक्स्ट के बीच, लाइन सेपरेटर \n जोड़ा जाएगा. (I25332, b/285036739) AnnotatedString(I1d066, b/383269496, b/139326648) के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गयाstateओवरलोड ऑफ़BasicTextFieldकी वजह से, कर्सर का साइज़ बदलने पर भी वह दिखता रहेगा. (I0eb41, b/406187741)- बदलाव:
backgroundऔरborderमॉडिफ़ायर नोड अबSemanticsModifierNodeलागू करते हैं. इसकी वजह से, सिमैंटिक्स ट्री में नएSemanticsNodesजुड़ सकते हैं. इसलिए, सिमैंटिक्स ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट में गड़बड़ियां हो सकती हैं. उदाहरण के लिए, अगर मौजूदा और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है, तोonChild,onParent,onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट फ़ेल हो सकते हैं. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर परtestTagजोड़ें. एक और तरीका है कि आपonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))जैसे लूज़र मैचिंग वाले टूल का इस्तेमाल करें. (I638b5)
वर्शन 1.9.0-rc01
30 जुलाई, 2025
androidx.compose.foundation:foundation-*:1.9.0-rc01 रिलीज़ हो गया है. वर्शन 1.9.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
TextFieldState.edit { }अब बदलावों को पहले जैसा करने के इतिहास को नहीं मिटाता. इसके बजाय, यह बदलाव को पहले जैसा करने के लिए एक अलग एंट्री बनाता है. अगर आपकोeditकॉल के बाद, अनडू स्टैक को मिटाना है, तो कृपयाTextFieldState.undoState.clearHistory()का इस्तेमाल करें. (I12c14)
वर्शन 1.9.0-beta03
16 जुलाई, 2025
androidx.compose.foundation:foundation-*:1.9.0-beta03 रिलीज़ हो गया है. वर्शन 1.9.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रिग्रेशन बग को ठीक किया गया है. इस बग की वजह से, हेडर का कॉन्टेंट खाली होने पर लेज़ी ग्रिड में स्टिकी हेडर ठीक से काम नहीं कर रहे थे. (e3e3400)
वर्शन 1.9.0-beta02
2 जुलाई, 2025
androidx.compose.foundation:foundation-*:1.9.0-beta02 रिलीज़ हो गया है. वर्शन 1.9.0-beta02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- संदर्भ मेन्यू और चुनने के टूलबार में स्मार्ट आइटम की सुविधा उपलब्ध कराई गई है.
एपीआई में हुए बदलाव
- एक गड़बड़ी को ठीक किया गया है. इसमें कुछ हार्डवेयर कीबोर्ड या टीवी रिमोट, डायरेक्शनल बटन का इस्तेमाल करके कर्सर को नए
TextFieldsमें ले जाने में फ़ेल हो जाते थे. इसके बजाय, वे फ़ोकस को किसी अन्य कंपोज़ेबल पर स्विच कर देते थे.ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabledजोड़ा गया है, ताकि अगर इस सुधार की वजह से कोई ऐसी समस्या होती है जिसे ठीक नहीं किया जा सकता, तो इसे कुछ समय के लिए बंद किया जा सके. (Ie1922)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें पिन किया गया आइटम मौजूद होने पर, स्टिकी हेडर अपनी जगह पर नहीं टिकते थे. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedअब सिस्टम सेटिंग “TEXT_SHOW_PASSWORD” के मुताबिक काम करता है. (I41c0c)- उस बग को ठीक किया गया है जिसकी वजह से, टेक्स्ट टूलबार पहली बार खुलने पर
BasicTextFieldमें “क्लिपबोर्ड से चिपकाया गया” चेतावनी गलत तरीके से दिखती थी. (I5fda2)
वर्शन 1.9.0-beta01
18 जून, 2025
androidx.compose.foundation:foundation-*:1.9.0-beta01 रिलीज़ हो गया है. वर्शन 1.9.0-beta01 में ये बदलाव शामिल हैं.
नुकसान पहुंचा सकने वाले बदलाव
backgroundऔरborderमॉडिफ़ायर नोड अबSemanticsModifierNodeलागू करते हैं. इसकी वजह से, सिमैंटिक्स ट्री में नएSemanticsNodesजुड़ सकते हैं. इसलिए, सिमैंटिक्स ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट में गड़बड़ियां हो सकती हैं. उदाहरण के लिए, अगर मौजूदा और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है, तोonChild,onParent,onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट फ़ेल हो सकते हैं. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर परtestTagजोड़ें. एक और तरीका है कि आपonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))जैसे लूज़र मैचिंग वाले टूल का इस्तेमाल करें. (I638b5)
एपीआई में हुए बदलाव
Modifier.addTextContextMenuComponentsका नाम बदलकरappendTextContextMenuComponentsकरें. (I4c43f)AnnotatedOutputTransformationको हटा दिया गया है औरaddStyleफ़ंक्शन कोTextFieldBufferमें ले जाया गया है.addStyleको अब भी सिर्फ़OutputTransformationसे कॉल किया जा सकता है. (I9930a, b/417991824)- Clickable को फिर से लिखा गया है, ताकि ऑप्टिमाइज़ेशन के तौर पर suspend pointer input का इस्तेमाल न किया जा सके. यह सुविधा एक फ़्लैग की मदद से चालू की जाती है. अगर आपको नई सुविधा में कोई गड़बड़ी मिलती है, तो इसे बंद किया जा सकता है -
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65) - नेस्टेड स्क्रोलिंग में फ़्लिंग प्रोपगेशन से जुड़ी समस्या को ठीक करने के लिए,
isFlingCancellationWithNestedScrollFixEnabledको जोड़ा गया है. इस सीएल में, हम फ़्लिंग जारी रखने की सुविधा को वापस ला रहे हैं. इसे aosp/3260391 में हटा दिया गया था. अगर बच्चे को कंपोज़िशन से हटा दिया जाता है, तो हम फ़्लिंग ऐनिमेशन को अब भी रद्द कर देंगे. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers:rulersIgnoringVisibilityको ज़्यादा से ज़्यादा पर सेट किया गया.getDisplayCutoutBounds()कोPlacementScopeके एक्सटेंशन फ़ंक्शन के तौर पर बदला गया.WindowInsetsAnimationPropertiesको बदलकरWindowInsetsAnimationकर दिया गया है औरgetAnimationProperties()को बदलकरgetAnimation()कर दिया गया है. (I3816f)InsetsRulersको बदलकर,WindowInsetsRulersनाम के सामान्य कोड में शामिल किया गया. एपीआई को आसान बनाया गया है, ताकि सभी इनसेटWindowInsetsRulersहों. रूलर से जुड़ी नहीं, बल्कि ऐनिमेशन से जुड़ी प्रॉपर्टी कोAnimationPropertiesक्लास में एक्सट्रैक्ट किया गया.WindowInsetsRulersको मर्ज करने के लिए,WindowInsetsRulers.innermostOf()का इस्तेमाल किया जा सकता है. (I2f0c6, b/415012444)
गड़बड़ियां ठीक की गईं
ContentInViewNodeमेंscrollAnimationSpecका इस्तेमाल फिर से जोड़ें.scrollAnimationSpecबंद करने की प्रोसेस के दौरान, इस सुविधा को हटा दिया गया था. इस वजह से, इस्तेमाल के उदाहरण काम नहीं कर रहे हैं. (I1436a, b/403301605)
वर्शन 1.9.0-alpha04
4 जून, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha04 रिलीज़ हो गया है. वर्शन 1.9.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PrefetchSchedulerऔर पसंद के मुताबिक बनाने की सुविधा को बंद कर दिया गया है. इसके बजाय, अब इंटरनल तौर पर लागू की गई सुविधा का इस्तेमाल किया जाता है. यह सुविधा, सभी काम अपने-आप करती है. (I3a9a6, b/420551535)canScrollको अपडेट किया गया है, ताकि कोण के बजायcanScrollतरीके में ऑफ़सेट का इस्तेमाल किया जा सके.Scrollable2DState(I28694, b/417268474)AnnotatedOutputTransformationमें मौजूदaddAnnotationकोaddStyleसे बदला गया. (I91c6f, b/417991824)LazyLayoutको स्थिर किया गया. (If5db4)LazyLayoutPrefetchStateके लिए, खाली कंस्ट्रक्टर को स्थिर किया गया है. साथ ही, इसके शेड्यूल करने के तरीकेschedulePrecompositionऔरschedulePrecompositionAndPremeasureको भी स्थिर किया गया है. (I4362f, b/252853717)ProcessTextKeyको Android पर लॉन्च किया गया है. इसका इस्तेमाल कॉन्टेक्स्ट मेन्यू आइटम के लिए किया जाता है. इसेPROCESS_TEXTइंटेंट ऐक्शन के लिए जोड़ा गया है. (If0ac4)- कॉन्टेक्स्ट मेन्यू वाले एपीआई को सार्वजनिक करें. कॉन्टेक्स्ट मेन्यू में आइटम जोड़ने और हटाने के लिए,
Modifier.addTextContextMenuComponentsऔरModifier.filterTextContextMenuComponentsको दिखाया गया है. हमने इन बुनियादी एपीआई को भी सार्वजनिक कर दिया है, ताकि कोई भी व्यक्ति अपनी पसंद के मुताबिक कॉन्टेक्स्ट मेन्यू बना सके:TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
LazyLayoutItemProviderको स्टेबल बनाएं (Icce09, b/261565751)- Android में स्मार्ट तरीके से चुनने की सुविधा जोड़ी गई है. इसे
ComposeFoundationFlags.isSmartSelectionEnabledके ज़रिए चालू/बंद किया जा सकता है. यह एक स्टैटिकcompositionLocalLocalTextClassifierCoroutineContextभी दिखाता है. इसका इस्तेमाल, उसCoroutineContextको तय करने के लिए किया जा सकता है जिसमेंTextClassificationजॉब लॉन्च की जाती है. (I1dbaa, b/139321320)
वर्शन 1.9.0-alpha03
20 मई, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha03 रिलीज़ हो गया है. वर्शन 1.9.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AnnotatedOutputTransformationजोड़ा गया है. इससे रेंडर करने से पहले,TextFieldमें एनोटेशन जोड़े जा सकते हैं. (Ibc6f0, b/389978748)LazyLayoutMeasurePolicyको लॉन्च किया गया औरLazyLayoutMeasureScopeको ज़्यादा स्थिर बनाया गया. (I8c5df, b/252853717)BasicSecureTextFieldअब अपने इंटरनलBasicTextFieldके ScrollState को ऊपर ले जाता है. (I6e576)Modifier.onFirstVisibleऔरModifier.onVisibilityChangedमॉडिफ़ायर लॉन्च किए गए. येModifier.onLayoutRectChangedके ऊपर बनाए गए हाई लेवल मॉडिफ़ायर हैं. इन मॉडिफ़ायर को खास तौर पर, ऐप्लिकेशन की कई सामान्य ज़रूरतों को पूरा करने के लिए बनाया गया है. जैसे, इंप्रेशन लॉग करना, वीडियो अपने-आप चलना वगैरह. इन्हें परफ़ॉर्मेंस को ध्यान में रखकर बनाया गया है, ताकि इनका इस्तेमाल लिस्ट पर आधारित ज़रूरी स्थितियों में किया जा सके. साथ ही, स्क्रोल करने की परफ़ॉर्मेंस पर कोई असर न पड़े. इन मॉडिफ़ायर एपीआई के अलावा, इस्तेमाल के इन उदाहरणों के लिएRelativeLayoutBoundsमें अन्य एपीआई जोड़े गए हैं. साथ ही, डेवलपर के लिए ऐसे कस्टम मॉडिफ़ायर बनाना आसान हो गया है जो इस्तेमाल के उदाहरणों के हिसाब से सही हों. (I759b8)detectDragGesturesओवरलोड किया गया है. इसमें टच स्लोप और ओरिएंटेशन लॉक कंट्रोल की सुविधा है. (Iadb0d)- स्टेट बनाने के लिए,
Modifier.scrollable2D,Scrollable2DState, और कंपैनियन एपीआई पेश किए गए. साथ ही, सामान्य स्क्रोल एक्सटेंशन फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040) - Compose में इस्तेमाल की गई 64-बिट कलर वैल्यू की तुलना सीधे तौर पर Android
ColorLongsसे नहीं की जा सकती. इसकी वजह यह है कि कुछ कलर स्पेस के लिए, कलर स्पेस आईडी क्रम में नहीं हैं. Android कलर स्पेस में बदलने और उससे वापस आने के लिए, दो नए एपीआई जोड़े गए हैं:toColorLong()औरfromColorLong(). (I36899)
गड़बड़ियां ठीक की गईं
- अब
SelectionContainerमें मौजूद एक से ज़्यादा टेक्स्ट कंपोज़ेबल से कॉपी किए गए टेक्स्ट के बीच, लाइन सेपरेटर\nजोड़ा जाएगा. (I25332, b/285036739)
वर्शन 1.9.0-alpha02
7 मई, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha02 रिलीज़ हो गया है. वर्शन 1.9.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragGestureNodeमें, पॉइंटर इनपुट में हुए बदलावों कोVelocityTrackerमें जोड़ने के तरीके को ठीक किया गया है. इसे नए फ़्लैगisOffsetPositionBeforeAddingToVelocityTrackerEnabledसे कंट्रोल किया जा सकता है. (Ic7992, b/292556787, b/236451818)await[Vertical/Horizontal]PointerSlopOrCancellationको सार्वजनिक करें (I6968b, b/298903681)AbstractComposeView.consumeWindowInsetsअब डिफ़ॉल्ट रूप से गलत पर सेट है. 'गलत है' पर सेट होने पर,WindowInsetsको बच्चे के साइज़ और पोज़िशन के हिसाब से अपने-आप अडजस्ट कर दिया जाएगा. इसलिए, अब इसे डिफ़ॉल्ट रूप से 'सही है' पर सेट करने की ज़रूरत नहीं है. इस अपडेट से, उस समस्या को ठीक किया गया है जिसमें चाइल्ड व्यू को डिफ़ॉल्ट रूप सेWindowInsetsअपडेट नहीं मिल रहे थे. डेवलपर, एक्सपेरिमेंटलComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledको true पर सेट करके या बेहतर होगा कि वे Compose व्यू के सभी इंस्टेंस परAbstractComposeView.consumeWindowInsetsको true पर सेट करके, अपडेट से ऑप्ट आउट कर सकते हैं. (I6fa0a, b/411868840)
बाहरी योगदान
- beyondViewportPageCount की बहुत बड़ी वैल्यू के साथ Pager क्रैश होने की समस्या ठीक की गई (Idb2db)
वर्शन 1.9.0-alpha01
23 अप्रैल, 2025
androidx.compose.foundation:foundation-*: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 lint की जांच करने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए इंस्टेंस, अब सिर्फ़IndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. ये इंस्टेंस,LocalIndicationका इस्तेमाल करके उपलब्ध कराए जाते हैं. Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल करने पर, यह बदलाव लागू होगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर इसका कोई असर नहीं पड़ता. अगरLocalIndicationको इंडिकेशन लागू करने का ऐसा तरीका दिया जा रहा है जिसे अब इस्तेमाल नहीं किया जा सकता और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान ऐप्लिकेशन क्रैश हो जाएगा. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे, इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन को रीकंपोज़िशन के दौरान स्किप करने की अनुमति मिलती है. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे, माइग्रेशन के दौरान ब्लॉक किए बिना Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333)
एपीआई में हुए बदलाव
AnnotatedString(I1d066, b/383269496, b/139326648) के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गया- कंपोज़ की सुविधा को
ViewTreeObserver.OnScrollChangedको ट्रिगर करने की अनुमति दें. इस सुविधा कोisOnScrollChangedCallbackEnabledफ़्लैग के तहत लॉन्च किया गया है. हमनेDelegatableNode dispatchOnScrollChangedका एक एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286) - Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद के वर्शन का इस्तेमाल करना ज़रूरी है (Idb6b5)
TextFieldStateके लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन में याद रखा गया है. इसके बजाय,rememberTextFieldStateका इस्तेमाल करें. (I53d74)FocusRequesterके लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन (I6bf91) में याद रखा गया हैBringIntoViewRequesterके लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन में याद रखा गया है. (Ibfba6)- ग्रिड और सूचियों में
schedulePrefetchकॉल के लिए स्कोप जोड़े गए हैं, ताकि साइज़ और इंडेक्स की जानकारी देने कीLazyListPrefetchStateसुविधाओं के साथ अलाइन किया जा सके. (Iad80c) - बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए इंस्टेंस, अब सिर्फ़IndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. ये इंस्टेंस,LocalIndicationका इस्तेमाल करके उपलब्ध कराए जाते हैं. Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल करने पर, यह बदलाव लागू होगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर इसका कोई असर नहीं पड़ता. अगरLocalIndicationको इंडिकेशन लागू करने का ऐसा तरीका दिया जा रहा है जिसे अब इस्तेमाल नहीं किया जा सकता और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान ऐप्लिकेशन क्रैश हो जाएगा. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे, इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन को रीकंपोज़िशन के दौरान स्किप करने की अनुमति मिलती है. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे, माइग्रेशन के दौरान ब्लॉक किए बिना Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333) - नेस्ट किए गए प्रीफ़ेच के अपने-आप होने वाले व्यवहार को कंट्रोल करने के लिए, एक फ़्लैग जोड़ा गया है:
isAutomaticNestedPrefetchEnabled(I8d448) LazyGridStateऔरrememberLazyGridStateके लिए एक ओवरलोड फ़ंक्शन बनाएं, जोLazyLayoutCacheWindowलेता है. (I51151)- विंडो इंसर्ट के लिए रूलर जोड़ता है.
DerivedRulerको जोड़ता है, ताकि किसी दूसरे रूलर से रूलर की गिनती की जा सके. डेंसिटी लागू करने के लिए,PlacmentScopeमें बदलाव करता है. (I658bc, b/359260964) - बिना किसी आर्ग्युमेंट वाला
WindowInsets()फ़ैक्ट्री फ़ंक्शन जोड़ा गया, ताकि आसानी से खालीWindowInsetsबनाया जा सके. (I65f62, b/395311689) - खाली
PaddingValuesके लिएPaddingValues.Zeroजोड़ा गया. (If193e, b/386255688)
गड़बड़ियां ठीक की गईं
stateओवरलोड ऑफ़BasicTextFieldकी वजह से, कर्सर का साइज़ बदलने पर भी वह दिखता रहेगा. (I0eb41, b/406187741)- शुरुआती स्थिति के बारे में बताने के लिए,
LazyListPrefetchStrategyऔरLazyGridPrefetchStrategyमेंonVisibleItemsUpdatedएपीआई अपडेट किए गए. (If2cfa)
वर्शन 1.8
वर्शन 1.8.3
18 जून, 2025
androidx.compose.foundation:foundation-*:1.8.3 रिलीज़ हो गया है. वर्शन 1.8.3 में ये बदलाव शामिल हैं.
वर्शन 1.8.2
20 मई, 2025
androidx.compose.foundation:foundation-*:1.8.2 रिलीज़ हो गया है. वर्शन 1.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसा फ़िक्स लागू किया है जिससे फ़ोकस सर्च के लिए लोड किए जाने वाले आइटम की संख्या की गिनती नहीं की जाएगी. इससे शून्य से भाग देने की समस्या नहीं होगी.
LazyLayoutBeyondBoundsStateका इस्तेमाल करने वाले सभी लेआउट पर जांच लागू की गई है. (8e6dc8)
वर्शन 1.8.1
7 मई, 2025
androidx.compose.foundation:foundation-*:1.8.1 रिलीज़ हो गया है. वर्शन 1.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BasicTextऔरTextAutoSizeमें मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से,TextOverflow.Ellipsizeका इस्तेमाल करने पर टेक्स्ट, ज़रूरत से ज़्यादा छोटा हो जाता था. (I1e1d8, b/396582066)BasicTextFieldमें मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,TextFieldDecoratorकेinnerTextFieldको कॉल न करने पर, अलग-अलग तरह से क्रैश होने की समस्याएं आ रही थीं. (I2638c), b/308398612TextFieldमें मौजूद एक बग को ठीक किया गया है. इस बग की वजह से,TextFieldStateइंस्टेंस बदलने पर टेक्स्ट टूलबार और सिलेक्शन हैंडल पूरी तरह से गायब हो जाते थे. (I8068a), b/390477786BasicTextमें मौजूद एक बग को ठीक किया गया है. इस बग की वजह से,textAlignको गैर-डिफ़ॉल्ट वैल्यू पर सेट करने पर, कम से कम चौड़ाई की सीमा बदलने से टेक्स्ट की जगह अपडेट नहीं होती थी. (I77a96), b/406305552
वर्शन 1.8.0
23 अप्रैल, 2025
androidx.compose.foundation:foundation-*:1.8.0 रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc03
9 अप्रैल, 2025
androidx.compose.foundation:foundation-*:1.8.0-rc03 रिलीज़ हो गया है. वर्शन 1.8.0-rc03 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc02
26 मार्च, 2025
androidx.compose.foundation:foundation-*:1.8.0-rc02 रिलीज़ हो गया है. वर्शन 1.8.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc01
12 मार्च, 2025
androidx.compose.foundation:foundation-*:1.8.0-rc01 रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-beta03
26 फ़रवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta03 रिलीज़ हो गया है. वर्शन 1.8.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नई सिमैंटिक्स प्रॉपर्टी
InputTextजोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले, टेक्स्ट फ़ील्ड की वैल्यू कैप्चर करती है. (Iae46a, b/395911609, b/176949051) - काम न करने वाले
AutoSizeओवरलोड हटा दिए गए हैं. कृपया एक ही फ़ंक्शन के लिए काम करने वालेTextAutoSizeएपीआई का इस्तेमाल करें. (I2c90f) - हमने
TextAutoSizeमें कैश मेमोरी से जुड़ी समस्या को ठीक किया है. इस समस्या की वजह से, एक ही तरह की सीमाओं के साथ लेआउट पास करने पर, सबसे बड़े फ़ॉन्ट साइज़ के बजाय दूसरे सबसे बड़े फ़ॉन्ट साइज़ का इस्तेमाल किया जा सकता था. (Id367f)
वर्शन 1.8.0-beta02
12 फ़रवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta02 रिलीज़ हो गया है. वर्शन 1.8.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
LayoutModifierNodeका इस्तेमाल करके ओवरस्क्रॉल लागू करने पर, स्क्रोल करने वाले कंटेनर में ठीक से काम नहीं करता था.
वर्शन 1.8.0-beta01
29 जनवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta01 रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SemanticsNodeInteraction.semanticsId()को हटा दिया गया है. इसके बजाय,SemanticsNodeInteraction.fetchSemanticsNode().idका इस्तेमाल करें. (Ie397a)requestAutofillएपीआई को फिर से लिखें, ताकि वह ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल के बाहर काम कर सके. (Id1929)ContextualFlowRowऔरContextualFlowColumnको बंद कर दिया गया है. इस एक्सपेरिमेंटल कॉम्पोनेंट को 1.7 वर्शन में पेश किया गया था. यह अब तक स्थिर नहीं हुआ है. साथ ही, इसे लागू करना सही नहीं माना गया है. आने वाले समय में, इस कॉम्पोनेंट के इस्तेमाल के उदाहरणों को हल करने वाला कॉम्पोनेंट उपलब्ध कराया जा सकता है.FlowRowऔरFlowColumnमें एक्सपेरिमेंट के तौर पर ओवरलोड किए गए फ़ंक्शन हैं. इन्हें 1.7 में पेश किया गया था. इनमेंoverflowपैरामीटर शामिल है. इस पैरामीटर के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, इस पैरामीटर के बिना ओवरलोड का इस्तेमाल किया जा सकता है. इन ओवरलोड के लिए, "overflow" का डिफ़ॉल्ट व्यवहार "Clip" होगा. यह सुविधा शुरू होने के बाद से ऐसा ही है.ContextualFlowRowके कई इस्तेमाल के मामलों कोFlowRowका इस्तेमाल करके पूरा किया जा सकता है. हालांकि, हम मानते हैं कि यह पूरी तरह से सही नहीं है.ContextualFlowRowको उपयोगकर्ता-स्पेस में पूरी तरह से लागू किया जा सकता है. साथ ही, इसके लागू करने के तरीके को कॉपी किया जा सकता है और ज़रूरत के हिसाब से बदला जा सकता है. हमें उम्मीद है कि आने वाले समय में, हम इन इस्तेमाल के उदाहरणों को अलग तरीके से हल कर पाएंगे. (Ibafec)
गड़बड़ियां ठीक की गईं
- टेक्स्ट लेआउट से जुड़ी समस्या ठीक की गई. इस समस्या में, ऐनिमेशन के दौरान एलिप्सिस का इस्तेमाल करने पर, टेक्स्ट का अनुवाद कभी-कभी गलत हो जाता था. ज़्यादा जानकारी के लिए, b/389707025 देखें (Ie55b1, b/389707025)
BasicTextमें मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी में,TextAutoSizeऔरmaxLinesको 1 पर सेट किया गया था. (Ic0450, b/376834366)- टेक्स्ट की कम से कम इंट्रिंसिक ऊंचाई के लिए, अब
minLinesपैरामीटर को ध्यान में रखा जाता है. इसका मतलब है कि रिपोर्ट की गई कम से कम इंट्रिंसिक ऊंचाई,minLinesपैरामीटर (I225f9, b/388299762) को पूरा करने के लिए ज़रूरी ऊंचाई से कम नहीं होगी
वर्शन 1.8.0-alpha08
15 जनवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-alpha08 रिलीज़ हो गया है. वर्शन 1.8.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- AutoSize:
AutoSizeका नाम बदलकरTextAutoSizeकर दिया गया है. साथ ही, कस्टमTextAutoSizeलागू करने की सुविधा देने वाले एपीआई पब्लिश किए गए हैं. कस्टम टेक्स्ट के अपने-आप अडजस्ट होने वाले साइज़ को लागू करने के उदाहरण के लिए,TextAutoSizeSampleदेखें. (I85756) DetectTapGesturesEnableNewDispatchingBehaviorफ़ीचर फ़्लैग कोComposeFoundationFlagsमें ले जाया गया है और इसका नाम बदलकरisDetectTapGesturesImmediateCoroutineDispatchEnabledकर दिया गया है. पुराने फ़्लैग के इस्तेमाल पर रोक लगा दी गई है. अब यहComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabledको डेलिगेट करेगा. (I62932)
गड़बड़ियां ठीक की गईं
- यह सुविधा
DetectTapGesturesEnableNewDispatchingBehaviorडिफ़ॉल्ट रूप से चालू होती है.TapGestureDetectorएपीआई अब डिफ़ॉल्ट रूप से, इवेंट की जानकारी भेजने की नई सुविधा (तुरंत जानकारी भेजना) का इस्तेमाल करते हैं. (I9f2bc, b/369648479) - इंट्रिंसिक साइज़ को सही तरीके से मैनेज करने के लिए,
requiredWidth/Height/Sizeमॉडिफ़ायर को ठीक किया गया है. (Ie3d7d, b/368113212)
बाहरी योगदान
- इसे फ़ाउंडेशन में
BasicTooltipऔर Material3 मेंBasicTooltip/Tooltipके तौर पर इस्तेमाल किया जाता है. (Ifc2e6) - नया क्लिपबोर्ड इंटरफ़ेस और उसके लिए कंपोज़िशन लोकल जोड़ा गया. (I80809)
वर्शन 1.8.0-alpha07
11 दिसंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha07 रिलीज़ हो गया है. वर्शन 1.8.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- मिटाया गया
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledफ़्लैग, जिसकी मदद सेBasicTextसे इंटरनलgraphicsLayerको हटाने की कार्रवाई को पहले जैसा किया जा सकता था. अगर आपने इस फ़्लैग का इस्तेमाल किया था, तो कृपया हमें इसकी वजह बताएं. इसके लिए, गड़बड़ी की शिकायत करें. इसके अलावा, पहले की तरह ही काम करने के लिए,BasicTextकॉल में सिर्फ़Modifier.graphicsLayer()पास किया जा सकता है. (Id9f90) - नए
stickyHeaderडीएसएल के लिए, डिफ़ॉल्ट तौर पर लागू होने वाली सुविधा जोड़ी गई है. (I68986) LocalAutofillHighlightColorकंपोज़िशन में, स्थानीय तौर पर इस्तेमाल किए जाने वाले कलर टाइप का इस्तेमाल किया गया हो. (I0e05b)OverscrollEffect#withoutDrawingका नाम बदलकरOverscrollEffect#withoutVisualEffectकर दिया गया. (I1a154)
गड़बड़ियां ठीक की गईं
AnchoredDraggableमें टारगेट कैलकुलेशन से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, कुछ स्वाइप के लिए गलत ऐंकर सेट हो सकता था. (I23b87, b/367660226)
बाहरी योगदान
- यूज़र इंटरफ़ेस (यूआई) में
BringIntoViewResponderModifierNodeजोड़ें. इससे 'व्यू में लाएं' सुविधा को लागू करने का नया तरीका मिलता है. साथ ही, इसे प्लैटफ़ॉर्म लेवल पर लागू करने की अनुमति मिलती है (Ia6dd8) - हम कर्सर को दिखाने के तरीके में लगातार थोड़ा-बहुत बदलाव करते रहते हैं. टेस्ट में कर्सर ड्राइंग की सुविधा बंद करने के लिए,
LocalCursorBlinkEnabledका इस्तेमाल किया जा सकता है. (I4c697)
वर्शन 1.8.0-alpha06
13 नवंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06 रिलीज़ हो गया है. वर्शन 1.8.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
stylusHoverIconमॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)AnchoredDraggableStateकेconfirmValueChangeअब काम नहीं करते. राज्य में होने वाले बदलावों को वीटो करने के बजाय, अनुमति न दी गई ऐंकर को चालू ऐंकर सेट में नहीं होना चाहिए. साथ ही, अनुरोध की गई कार्रवाई के उपलब्ध न होने की जानकारी देने के लिए,OverscrollEffectका इस्तेमाल किया जाना चाहिए. (Ia717f)- ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले क्लास को इंटरफ़ेस में बदलता है. (I84914, b/376080755)
OverscrollEffect#withoutDrawingऔरOverscrollEffect#withoutEventHandlingएपीआई जोड़े गए हैं. ये एपीआई, दिए गए ओवरस्क्रोल इफ़ेक्ट का रैप्ड इंस्टेंस बनाते हैं. यह इंस्टेंस, इवेंट को न तो ड्रॉ करता है और न ही हैंडल करता है. इससे, इवेंट भेजने वाले कॉम्पोनेंट से अलग कॉम्पोनेंट में ओवरस्क्रोल को रेंडर किया जा सकता है. उदाहरण के लिए, लेज़ी लिस्ट में ओवरस्क्रोल को बंद करना. इसके बाद, ओवरस्क्रोल को अलग से सबसे ऊपर / कहीं और पर दिखाना. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)- टेक्स्ट टूलबार में अपने-आप भरने की सुविधा जोड़ी गई है. (Ie6a4c)
- यह
OverscrollConfigurationऔरLocalOverscrollConfigurationको बंद कर देता है. साथ ही, डिफ़ॉल्ट ओवरस्क्रोल लागू करने के पैरामीटर का इंस्टेंस बनाने या उन्हें पसंद के मुताबिक बनाने के लिए,rememberPlatformOverscrollFactoryजोड़ता है. ओवरस्क्रोल की सुविधा बंद करने के लिए,LocalOverscrollConfiguration provides nullके बजायLocalOverscrollFactory provides nullका इस्तेमाल करें. ग्लो का रंग / पैडिंग बदलने के लिए,LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)के बजायLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516) OverscrollEffectपरeffectModifierप्रॉपर्टी को बदलकरnode: DelegatableNodeकर दिया गया है, ताकि यह अन्य एपीआई के साथ काम कर सके. (Ic0b46, b/255554340)- एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertionsएपीआई को हटा दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय,enableAccessibilityChecks()का इस्तेमाल करें. (I59322)
वर्शन 1.8.0-alpha05
30 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05 रिलीज़ हो गया है. वर्शन 1.8.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टेक्स्ट के साइज़ को अपने-आप अडजस्ट होने की सुविधा. अपने पसंदीदा टेक्स्ट कंपोज़ेबल (जैसे कि
BasicText) कोAutoSizeइंस्टेंस (जैसे किAutoSize.StepBased) पास करें. इसके बाद, देखें कि टेक्स्ट का साइज़ उपलब्ध जगह के हिसाब से अपने-आप अडजस्ट हो जाता है! (Ice7e0, b/139320827) - यह
OverscrollFactoryऔरLocalOverscrollFactoryएपीआई जोड़ता है, ताकि किसी क्रम में ओवरस्क्रॉल को कॉन्फ़िगर किया जा सके.LocalOverscrollFactoryएट्रिब्यूट के ज़रिए दी गई वैल्यू का इस्तेमाल, डिफ़ॉल्ट रूप सेOverscrollEffectएट्रिब्यूट की वैल्यू बनाने के लिए किया जाएगा. मौजूदा फ़ैक्ट्री से कोई इफ़ेक्ट बनाने और उसे सेव करने के लिए,rememberOverscrollEffect()का इस्तेमाल करें. (I51ca4, b/255554340)
एपीआई में हुए बदलाव
CompositionLocalको पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट किए गए रंग को बदलने के लिए किया जा सकता है. (I32092)ScrollableDefaults.overscrollEffectको हटा दिया गया है. इसके बजाय, आपकोrememberOverscrollEffectका इस्तेमाल करना चाहिए. इससेLocalOverscrollFactoryके साथ उपलब्ध कराए गए मौजूदा ओवरस्क्रोल को लागू करने का एक इंस्टेंस बन जाएगा. (I1651a, b/255554340),(b/234451516)- इसमें नया
AutofillManagerइंटरफ़ेस पेश किया गया है. इसका इस्तेमाल करके, उपयोगकर्ताओं के लिए ऑटोमैटिक भरने की सुविधा को बेहतर बनाया जा सकता है. साथ ही, ऑटोमैटिक भरने की सुविधा के इस नए वर्शन को चालू करने के लिएisSemanticAutofillEnabledफ़्लैग भी उपलब्ध है. (I9d484) CombinedClickableNodeको हटाता है. इस एक्सपेरिमेंटल एपीआई को कुछ समय के लिए इसलिए उपलब्ध कराया गया था, ताकि परफ़ॉर्मेंस से जुड़े काम को पूरा किया जा सके. हालांकि, अब इसकी ज़रूरत नहीं है. इसके बजाय, आपको सीधे तौर परModifier.combinedClickableका इस्तेमाल करना चाहिए. जैसे, अन्य मॉडिफ़ायर एपीआई के साथ किया जाता है. (I4b658)- यह
horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPager, औरVerticalPagerमें ओवरलोड जोड़ता है. साथ ही, इसमें कस्टमOverscrollEffectतय करने की सुविधा भी होती है. उपलब्ध कराए गएOverscrollEffectको इवेंट मिलेंगे और उन्हें इन कॉम्पोनेंट की सीमाओं के अंदर रेंडर किया जाएगा. ध्यान दें कि एक हीOverscrollEffectको दो बार नहीं बनाया जा सकता. इसलिए,Modifier.overscrollके साथ इनमें से किसी एक कॉम्पोनेंट को दिए गएOverscrollEffectको अलग से नहीं बनाया जा सकता. इन कॉम्पोनेंट की सीमाओं से बाहर ओवरस्क्रोल करने के इस्तेमाल के उदाहरण के बारे में, आने वाले समय में अलग से बताया जाएगा. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
वर्शन 1.8.0-alpha04
16 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04 रिलीज़ हो गया है. वर्शन 1.8.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DelegatableNode#onDensityChangeऔरDelegatableNode#onLayoutDirectionChangeकॉलबैक जोड़ता है, ताकि नोड की स्थिति में बदलाव होने पर उसे अपडेट किया जा सके. (I04f3e, b/340662451)- पैराग्राफ़ और
ParagraphIntrinsicsअबAnnotatedStringपर लागू किए गए सभी एनोटेशन की सूची लेता है. इससे पहले, इसमें सिर्फ़SpanStylesकी सूची होती थी. (I12f80) PointerInputModifierNode#touchBoundsExpansionको जोड़ा गया है. इसका इस्तेमाल, एक पॉइंटर इनपुट मॉडिफ़ायर के टच बाउंड को बड़ा करने के लिए किया जा सकता है. (Iccf02, b/335339283)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें कुछ मामलों में,
AnchoredDraggableDefaults.flingBehaviorको पास किए गए पोज़िशनल थ्रेशोल्ड पर सही तरीके से विचार नहीं किया गया था. (Ifdf0d, b/367660226) - नेस्ट किए गए स्क्रोल करने लायक आइटम के लिए एक फ़िक्स लागू किया गया है. इन आइटम को फ़्लिंग के दौरान नोड ट्री से हटा दिया जाता है. अब ये नोड, फ़्लिंग को रद्द कर देंगे और बची हुई वेलोसिटी के साथ
onPostFlingइवेंट को सही तरीके से भेजेंगे. हम रिग्रेशन के मामले में, व्यवहार को कंट्रोल करने के लिएNewNestedScrollFlingDispatchingEnabledफ़्लैग भी लॉन्च कर रहे हैं. इस फ़्लैग को बीटा वर्शन से पहले हटा दिया जाएगा. (I05c37, b/371168883) - उस बग को ठीक किया गया है जिसकी वजह से,
Modifier.anchoredDraggableको पास किए गएOverscrollEffectsको 1D के बजाय 2D डेल्टा मिलते थे. (Ie52c0)
वर्शन 1.8.0-alpha03
2 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03 रिलीज़ हो गया है. वर्शन 1.8.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin का वर्शन 1.9 (I1a14c) पर अपडेट किया गया
DraggableAddDownEventFixEnabledफ़्लैग (I848d5) जोड़ा गया- सुलभता सेवाओं के लिए, पेजर्स में सूची के व्यवहार को दोहराने के लिए, नई सिमैंटिक्स भूमिका, कैरसेल को पेश किया गया है. (Id354b, b/354109776, b/239672673)
BasicTextकंपोज़ेबल से, इंप्लिसिटgraphicsLayerमॉडिफ़ायर को हटाया गया. एक्सपेरिमेंट के तौर परComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledफ़्लैग जोड़ा गया है, ताकि पुराने वर्शन पर वापस जाया जा सके. (Ie478d)Modifier.recalculateWindowInsets()जोड़ा गया है, ताकि पैरंट खाते से जुड़े बच्चे,insetsPaddingका इस्तेमाल कर सकें. भले ही, माता-पिता ने उन्हेंconsumeWindowInsets()के बिना अलाइन किया हो. (I7f9e4)
गड़बड़ियां ठीक की गईं
detectDragGestures, ड्रैग किए जा सकने वाले आइटम, और स्क्रोल किए जा सकने वाले आइटम में, जेस्चर पिक-अप की सुविधा लागू की गई. अब अगर कोई बच्चा ड्रैग करने की सुविधा का इस्तेमाल नहीं करता है, तो माता-पिता के पास उसे चुनने का विकल्प होता है. इससे, जेस्चर को लगातार और इंटिग्रेट करके हैंडल किया जा सकता है. (Ic88fe)- स्क्रोल किए जा सकने वाले कॉम्पोनेंट में, फ़्लिंग को रद्द करने के तरीके को अपडेट किया गया. अब अगर स्क्रोल किए जा सकने वाले किसी कॉम्पोनेंट को तेज़ी से ऊपर या नीचे की ओर स्वाइप किया जाता है और वह अपनी सीमा तक पहुंच जाता है, तो वह स्वाइप करने की स्पीड को चेन में मौजूद अगले स्क्रोल किए जा सकने वाले कॉम्पोनेंट को सही तरीके से पास करेगा. ऐसा करने के बजाय, वह स्वाइप करने की प्रोसेस को जारी नहीं रखेगा. (I9326a)
वर्शन 1.8.0-alpha02
18 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02 रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TextOverflow.StartEllipsisऔरTextOverflow.MiddleEllipsisअब उपलब्ध हैं. इनकी मदद से, एक लाइन वाले टेक्स्ट (I38913, b/185418980) की लाइन की शुरुआत या बीच में एलिप्सिस रखा जा सकता है
वर्शन 1.8.0-alpha01
4 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01 रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 1.7
वर्शन 1.7.8
12 फ़रवरी, 2025
androidx.compose.foundation:foundation-*:1.7.8 रिलीज़ हो गया है. वर्शन 1.7.8 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- चिपकाए गए टेक्स्ट के किसी हिस्से को बदलते समय, इनपुट ट्रांसफ़ॉर्मेशन की वजह से
BasicTextFieldमें क्रैश होने की समस्या ठीक की गई. (I73702)
वर्शन 1.7.7
29 जनवरी, 2025
androidx.compose.foundation:foundation-*:1.7.7 रिलीज़ हो गया है. वर्शन 1.7.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लिंक एनोटेशन के साथ
IndexOutOfBoundके क्रैश होने की समस्या ठीक की गई. (Ic96d2) - लिंक के साथ कुछ खास मामलों में, बार-बार रेंडर होने की समस्या को ठीक किया गया है. (I04a03)
ऐसी गड़बड़ियां जिनकी जानकारी पहले से है
- एक बग का पता चला है. इससे Android API लेवल 35 पर, कुछ मामलों में टेक्स्ट अपने-आप रैप हो सकता है. इसे 1.7 में ठीक नहीं किया जा सकता. इसलिए, इसे 1.8 में ठीक किया जाएगा. (b/391378120)
वर्शन 1.7.6
11 दिसंबर, 2024
androidx.compose.foundation:foundation-*:1.7.6 रिलीज़ हो गया है. वर्शन 1.7.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सुलभता सेवाओं को, टेक्स्ट के साथ मौजूद कॉन्टेंट नहीं दिख रहा था. इस समस्या को ठीक कर दिया गया है.
- उस समस्या को ठीक किया गया है जिसकी वजह से लेज़ी लिस्ट में दोबारा इस्तेमाल करने पर,
AndroidEmbeddedExternalSurfaceठीक से रीसेट नहीं होता था और अटक जाता था.
वर्शन 1.7.5
30 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.5 रिलीज़ हो गया है. वर्शन 1.7.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पक्का करें कि पिन किए गए आइटम, कॉन्टेंट पैडिंग एरिया में दो बार शामिल न किए गए हों. (Ic6224)
वर्शन 1.7.4
16 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.4 रिलीज़ हो गया है. वर्शन 1.7.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट फ़ील्ड में कभी-कभी क्रैश होने की समस्या को ठीक किया गया है. (I475c6, b/313010266)
- लेज़ी लेआउट आइटम के रूट से
ReusableContentHostको हटाया गया. “मेज़रमेंट को बंद किए गए नोड पर कॉल किया गया” क्रैश की मुख्य वजह यही थी. (Id6e60)
वर्शन 1.7.3
2 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.3 रिलीज़ हो गया है. वर्शन 1.7.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब minLines को गैर-डिफ़ॉल्ट वैल्यू पर सेट किया जाता है, तब
BasicTextमें मेमोरी लीक की समस्या ठीक की गई.
वर्शन 1.7.2
18 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.7.2 रिलीज़ हो गया है. वर्शन 1.7.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ड्रैग किए जा सकने वाले आइटम से जुड़ी समस्या को ठीक किया गया है. इसमें डाउन इवेंट मौजूद नहीं थे. इस वजह से, फ़्लिंग सामान्य से ज़्यादा धीरे दिख रहे थे.
वर्शन 1.7.1
10 सितंबर, 2024
- Android आर्टफ़ैक्ट में कोई बदलाव नहीं किया गया है.
-desktopआर्टफ़ैक्ट हटा दिए गए हैं. साथ ही,-jvmStubsऔर-linuxx64Stubsआर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को मदद मिल सके.
वर्शन 1.7.0
4 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.7.0 रिलीज़ हो गया है. वर्शन 1.7.0 में ये बदलाव शामिल हैं.
1.6.0 के बाद हुए अहम बदलाव
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollable, औरModifier.draggableकी परफ़ॉर्मेंस में काफ़ी सुधार किया गया है. इस कोशिश के तहत, इंटरनल बदलावों के साथ-साथ एपीआई में ये बदलाव किए गए हैं- नया Indication API,
IndicationNodeFactoryजोड़ा गया. इससे,rememberUpdatedInstanceएपीआई (अब बंद हो चुका है) की तुलना में, इंडिकेशन को बेहतर तरीके से लागू किया जा सकता है. डेटा को दूसरी जगह भेजने से जुड़ी जानकारी के लिए, developer.android.com पर जाएं. clickable/combinedClickable/selectable/toggleableअब शून्य हो सकने वालेMutableInteractionSourceपैरामीटर को स्वीकार करता है. अगर यह वैल्यू शून्य है और दी गई इंडिकेशन वैल्यूIndicationNodeFactoryहै, तो इंडिकेशन को सिर्फ़ ज़रूरत पड़ने पर बनाया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर आपनेMutableInteractionSourceको होस्ट नहीं किया है और उसका इस्तेमाल नहीं किया है, तो हमारा सुझाव है किremember { MutableInteractionSource() }पास करने के बजाय, शून्य पास करें.Indication#rememberUpdatedInstanceका अब इस्तेमाल नहीं किया जा सकता. इससे परफ़ॉर्मेंस पर काफ़ी बुरा असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नएIndicationNodeFactoryएपीआई का इस्तेमाल करना चाहिए.
- नया Indication API,
BasicTextFieldका इस्तेमाल अब स्थिर हो गया है. हमारा सुझाव है कि सभी कॉल-साइट,BasicTextField(value, onValueChange)सेBasicTextField(TextFieldState)पर माइग्रेट करना शुरू करें.TextFieldStateClickableTextका अब इस्तेमाल नहीं किया जा सकता. अपने टेक्स्ट में क्लिक करने लायक लिंक जोड़ने के लिए,AnnotatedStringमें नएLinkAnnotationएनोटेशन के साथBasicTextका इस्तेमाल करें.LinkAnnotationकी मदद से, लिंक की स्थिति (जैसे, फ़ोकस किया गया, कर्सर घुमाया गया) के आधार पर कस्टम स्टाइलिंग की जा सकती है.- पेश है
MaxLinesऔरOverflowके साथContextualFlowRowऔरEnhanced FlowRow/Column. हमें यह बताते हुए बेहद खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्धFlowRowऔरFlowColumnको बेहतर बनाया गया है. अब इनमेंmaxLinesऔर ओवरफ़्लो सपोर्ट की सुविधा भी उपलब्ध है. साथ ही,ContextualFlowRowऔरContextualFlowColumnको पहली बार लॉन्च किया गया है. इस अपडेट को, परफ़ॉर्मेंस को बेहतर बनाने वाले कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*उन आइटम के लिए सबसे सही है जिनकी संख्या ज़्यादा है और जिनमें maxLines कॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल किया जाता है. वहीं,FlowRowऔरFlowColumnउन आइटम के लिए सबसे सही है जिनकी संख्या कम है. जैसे, 100 से कम आइटम. अहम जानकारी:FlowRowयाFlowColumnमें मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, इनिशियलाइज़ेशन के दौरान ओवरफ़्लो कोFlowRowOverflow.VisibleयाFlowColumnOverflow.Visibleपर सेट करें. इन नई सुविधाओं के काम करने के उदाहरण देखने के लिए,ContextualFlowRowSampleऔरFlowRowSampleपर जाएं. (Ib9135, b/293577082) LazyColumnऔरLazyRowमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक नया मॉडिफ़ायर लॉन्च किया है. यह एक्सपेरिमेंट के लिए नहीं है. इसका नामModifier.animateItem()है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), गायब होना (फ़ेड आउट), और क्रम बदलना. (I2d7f7, b/150812265)- Compose के स्क्रोल कंटेनर में लंबी स्क्रीनशॉट की सुविधा के लिए, एक्सपेरिमेंटल सपोर्ट लागू की गई है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback) का इस्तेमाल किया गया है. NestedScrollसोर्सेज़ ड्रैग और फ़्लिंग कोUserInputऔरSideEffectसे बदला जा रहा है. ऐसा इसलिए किया जा रहा है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं.LazyLayoutप्रीफ़ेच अनुरोधों को अब 'ज़रूरी' के तौर पर मार्क किया जा सकता है. इसका मतलब है कि हमें उम्मीद है कि अगले फ़्रेम में इस आइटम की ज़रूरत होगी. साथ ही, हम फ़्रेम बजट को अनदेखा करना चाहते हैं, ताकि पहले से ज़्यादा काम किया जा सके (Id513f)- Android U के बाद वाले वर्शन पर चलने वाले डिवाइसों पर, स्टाइलस से लिखने की सुविधा काम करती है. (I002e4)
- कई एपीआई को स्टेबल वर्शन में प्रमोट किया गया है
- पेजर, स्नैपिंग, विंडो इनसेट
वर्शन 1.7.0-rc01
21 अगस्त, 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या में, फ़ोकस किए जा सकने वाले (या क्लिक किए जा सकने वाले) और बंद किए गए पैरंट एलिमेंट के अंदर किसी एलिमेंट पर फ़ोकस करने पर क्रैश हो जाता था. (b/317561689)
वर्शन 1.7.0-beta07
7 अगस्त, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07 रिलीज़ हो गया है. वर्शन 1.7.0-beta07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट इनपुट से जुड़े
SemanticsNodeInteractionफ़ंक्शनperformTextReplacement,performTextInput, औरperformTextClearanceअब सिर्फ़ पढ़ने के लिए उपलब्धTextFieldsपर कॉल किए जाने पर, पुष्टि से जुड़ी गड़बड़ियां दिखाएंगे. (I4ae8f) - हाइपरलिंक में दिखने वाली गड़बड़ी को ठीक किया गया है. (I23311)
- कुछ आईएमई के साथ
contentReceiverमॉडिफ़ायर के काम न करने की समस्या ठीक की गई. - वेलोसिटी जनरेशन: Compose UI और Foundation में NaN वैल्यू के प्रसार को रोकें.
वर्शन 1.7.0-beta06
24 जुलाई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06 रिलीज़ हो गया है. वर्शन 1.7.0-beta06 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta05
10 जुलाई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05 रिलीज़ हो गया है. वर्शन 1.7.0-beta05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SnapFlingBehaviorऔर Pager में Nan वैल्यू को ठीक किया गया.
वर्शन 1.7.0-beta04
26 जून, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04 रिलीज़ हो गया है. वर्शन 1.7.0-beta04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बहुत बड़ी टेक्स्ट लाइनों (जैसे, 10 हज़ार वर्ण) को मेज़र करते समय क्रैश होने की समस्या ठीक की गई (8157ab)
- बहुत बड़े टेक्स्ट को मेज़र करने की समस्या ठीक की गई है. इसकी वजह से, नए
BasicTextFieldमें क्रैश हो रहा था (6b7575) - यह अपडेट, लाइन/कॉलम मेज़रमेंट में हुए ऐसे बदलाव को पहले जैसा कर देता है जिसकी वजह से कुछ मामलों में टेक्स्ट का इस्तेमाल नहीं किया जा सकता था (69e8ba)
वर्शन 1.7.0-beta03
12 जून, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03 रिलीज़ हो गया है. वर्शन 1.7.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta02
29 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02 रिलीज़ हो गया है. वर्शन 1.7.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह
LazyGridsके लिए, प्रीफ़ेच करने के तरीके को कॉन्फ़िगर करने के लिए एक एक्सपेरिमेंटल एपीआई जोड़ता है. यहLazyListsके लिए, मौजूदा एक्सपेरिमेंटल एपीआई जैसा ही है. इसमें नेस्ट किए गएLazyGridsमें आइटम को पहले से फ़ेच करने की सुविधा भी शामिल है.LazyListPrefetchStrategyकी तरह ही, लागू करने के लिए डिफ़ॉल्ट तौर पर हर ग्रिड के पहले दो नेस्ट किए गए आइटम को प्रीफ़ेच किया जाता है. हालांकि, इसे नएLazyGridPrefetchStrategy(nestedPrefetchItemCount)औरLazyListPrefetchStrategy#onNestedPrefetchएपीआई से कॉन्फ़िगर किया जा सकता है. (I591c4) SemanticsProperties.Editableका नाम बदलकरIsEditableकर दिया गया है औरSemanticsPropertyReceiver.editableकोisEditableमें बदल दिया गया है. अब यह प्रॉपर्टी बूलियन है और इसे हमेशा टेक्स्ट फ़ील्ड से तय किया जाता है. (I8acd8)basicMarqueeकी डिफ़ॉल्ट वैल्यू कोMarqueeDefaultsऑब्जेक्ट में ले जाया गया. (I12ff6)basicMarqueedelayMillisपैरामीटर का नाम बदलकरrepeatDelayMillisकर दिया गया. (I12ff6)- लिंक को स्टाइल करने के लिए एपीआई अपडेट किया गया:
TextLinkStylesकोTextStyleमें ले जाया गया औरTextDefaultsको मटीरियल से हटा दिया गया (I5477b)
गड़बड़ियां ठीक की गईं
- इसके मकसद को बेहतर तरीके से दिखाने के लिए,
LayoutCoordinates.introducesFrameOfReferenceका नाम बदलकरLayoutCoordinates.introducesMotionFrameOfReferenceकर दिया गया है. उस फ़्लैग के आधार पर कोऑर्डिनेट का हिसाब लगाने के लिए, संबंधित फ़ंक्शन का नाम बदला गया. (I3a330) MarqueeDefaultsप्रॉपर्टी से 'डिफ़ॉल्ट' हटाया गया. (I1d8a0)MarqueeDefaultsप्रॉपर्टी से 'Marquee' को हटा दिया गया है. (Iad4f4)TextLinkStylesकोTextStyleक्लास से हटा दिया गया है. इसके बजाय,TextLinkStyles,LinkAnntationकंस्ट्रक्टर औरAnnotatedString.fromHtmlतरीके (I90b2b) का हिस्सा है- उस गड़बड़ी को ठीक किया गया है जिसमें Pager, बाउंड्री की ओर फ़्लिंग करने पर स्नैप हो जाता था. ऐसा तब होता था, जब वह पहले से ही बाउंड्री पर सेटल हो जाता था. (I9f373, b/339171222)
- BTF2 में अब माउस से चुनने के लिए सही जेस्चर उपलब्ध हैं. (Ibe8c6)
बाहरी योगदान
- 'सटीकता को बेहतर बनाने के लिए, प्रीफ़ेच में कॉन्टेंट-टाइप के आधार पर कंपोज़/मेज़र टाइम कैलकुलेशन करें' (Iea622) को फिर से सबमिट करें
- सटीकता को बेहतर बनाने के लिए, प्रीफ़ेच में कॉन्टेंट टाइप के आधार पर कंपोज़/मेज़र टाइम कैलकुलेशन करें (Ibccb1)
- सामान्य सोर्स सेट (I070b2) से
WindowInsetsPaddingमॉडिफ़ायर उपलब्ध कराएं
वर्शन 1.7.0-beta01
14 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01 रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- बाइनरी कंपैटिबिलिटी के लिए,
KeyboardOptions.shouldShowKeyboardOnFocusप्रॉपर्टी को फिर से जोड़ा गया है. हालांकि, यह अब काम नहीं करती है और इसे छिपा दिया गया है. (I15cfe) - आरटीएल लेआउट में इस्तेमाल किए जाने वाले हॉरिज़ॉन्टल ओरिएंटेशन वाले कॉम्पोनेंट के लिए,
Modifier.anchoredDraggableअब डिफ़ॉल्ट रूप से ड्रैग डेल्टा को उलट देता है. (I3c6d9) AnnotatedString.hasEqualsAnnotationsअबhasEqualAnnotationsहै. (I685c0)- टेक्स्ट में Material थीम वाले लिंक पाने के लिए, एपीआई को अपडेट किया गया है. खास तौर पर, थीम वाले
TextDefaultsबनाने के लिएTextDefaultsसे तरीके हटा दिए गए हैं. साथ ही, थीम वाले लिंक के साथ एचटीएमएल पार्स करने की सुविधा भी हटा दी गई है.LinkAnnotationsइसके बजाय,TextLinkStylesक्लास जोड़ी गई है. इससे Text कंपोज़ेबल के पैरामीटर के तौर पर लिंक को स्टाइल किया जा सकता है. (I31b93) onDragStartedऔरonDragStoppedको, सस्पेंड न किए गए कॉलबैक से बदल दिया गया है. (I59de8)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से,
contentPaddingकी वैल्यू, इनपुट की गई वैल्यू से ज़्यादा होने पर Pager क्रैश हो जाता था. पेजर अबPageSizeसे मिली नेगेटिव वैल्यू को 0 पर सेट कर देता है. (Iba5d8, b/314008560)
वर्शन 1.7.0-alpha08
1 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08 रिलीज़ हो गया है. वर्शन 1.7.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
BasicTextFieldऔरSelectionContainerमें राइट-क्लिक करने पर दिखने वाला संदर्भ मेन्यू जोड़ा गया है. इसमें कट, कॉपी, चिपकाएं, और सभी चुनें कार्रवाइयों के लिए आइटम मौजूद हैं. (If8c93, Ia2b49, I6f268)
एपीआई में हुए बदलाव
LazyLayoutप्रीफ़ेच अनुरोधों को अब 'ज़रूरी' के तौर पर मार्क किया जा सकता है. इसका मतलब है कि हमें उम्मीद है कि अगले फ़्रेम में इस आइटम की ज़रूरत होगी. साथ ही, हम फ़्रेम बजट को अनदेखा करना चाहते हैं, ताकि पहले से ज़्यादा काम किया जा सके (Id513f)isPositionedByParentWithDirectManipulationका नाम बदलकरintroducesFrameOfReferenceकर दिया गया. ध्यान दें कि अब इसका असर उल्टा होता है. इसका मतलब है कि डिफ़ॉल्ट रूप से, ज़्यादातरLayoutCoordinatesरेफ़रंस फ़्रेम पेश करते हैं. साथ ही, सीधे तौर पर बदलाव करने पर ही प्रॉपर्टी की वैल्यू 'गलत है' पर सेट होगी. सिर्फ़ उन शब्दों की पोज़िशन के बारे में क्वेरी करने के लिएpositionInLocalFrameOfReference(...)का इस्तेमाल करें जो संदर्भ का फ़्रेम पेश करते हैं. याLookaheadScopeसेpositionInLocalLookaheadFrameOfReference. (Ifc5f7)onClickedका नाम बदलकरonClickकिया गया. यह बदलावLinkInteractionListener(Iaa35c) में किया गया है- एपीआई काउंसिल के सुझाव के मुताबिक,
getScrollViewportLengthके लिए ऐक्शन लैंबडा बदलें. (Ibc74a) - स्टाइलस हैंडराइटिंग डेलिगेशन एपीआई का नाम बदला गया. (Ica45f, b/327271923)
TextInclusionStrategy.isInsideका नाम बदलकरisIncludedकरें.Paragraph/MultiParagraph#getRangeForRect()के रिटर्न टाइप को नॉन-नलेबल बनाएं. (I51f26)
गड़बड़ियां ठीक की गईं
SelectionContainerमें, सभी टेक्स्ट के कॉन्टेक्स्ट मेन्यू में "सभी चुनें" विकल्प जोड़ा गया. (Ib750e, b/240143283)reverseScrolling=trueवाले स्क्रोलिंग कंटेनर के लिए, लंबा स्क्रीनशॉट लेने की सुविधा से जुड़ी समस्या ठीक की गई. (I7c59c)- उस समस्या को ठीक कर दिया गया है जिसकी वजह से, राज्य की सीमा के पास पहुंचने पर
AnchoredDraggableStateकाcurrentValueबदल जाता था. (Iea30b, b/333846848)
बाहरी योगदान
PrefetchExecutor->PrefetchSchedulerका नाम बदलकर, इसकी ज़िम्मेदारियों को बेहतर तरीके से दिखाया गया है. (Ib9154)- नेस्ट किए गए
LazyListsमें आइटम को पहले से फ़ेच करने की सुविधा जोड़ी गई है. उदाहरण के लिए,LazyColumnजो नेस्ट किए गएLazyRowsको रेंडर करता है. इस बदलाव से, इनLazyListsके लिए स्क्रोलिंग के दौरान फ़्रेम ड्रॉप कम होने की उम्मीद है. लागू करने के डिफ़ॉल्ट तरीके के तहत, पहले दो नेस्ट किए गए आइटम को पहले से फ़ेच किया जाता है. हालांकि, इस तरीके को नएLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)औरLazyListPrefetchStrategy#onNestedPrefetchएपीआई से कंट्रोल किया जा सकता है. (I51952)
वर्शन 1.7.0-alpha07
17 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक
TextDefaultsऑब्जेक्ट जोड़ा गया है. इसमेंLinkAnnotationबनाने के तरीके शामिल हैं. साथ ही, इसमें एचटीएमएल टैग वाली स्ट्रिंग को पार्स करने का तरीका भी शामिल है. इससे लिंक परMaterialThemeलागू होता है. (I98532, b/139312671) - आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा,
LazyVerticalGridऔरLazyHorizontalGridमें जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक नया मॉडिफ़ायर लॉन्च किया है. यह एक्सपेरिमेंट के लिए नहीं है. इसका नामModifier.animateItem()है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), गायब होना (फ़ेड आउट), और क्रम बदलना. (Ib7d12, b/330510929) LazyVerticalStaggeredGridऔरLazyHorizontalStaggeredGridमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक नया मॉडिफ़ायर लॉन्च किया है. यह एक्सपेरिमेंट के लिए नहीं है. इसका नामModifier.animateItem()है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), गायब होना (फ़ेड आउट), और क्रम बदलना. (I69bc9, b/330511290)
एपीआई में हुए बदलाव
ContextMenuColorsऔर उससे जुड़ेLocalContextMenuThemeProvidableCompositionLocalको जोड़ता है. टेक्स्ट फ़ील्ड और चुने जा सकने वाले टेक्स्ट पर मौजूद कॉन्टेक्स्ट मेन्यू के रंगों में बदलाव किया जा सकता है. इसके लिए, कंपोज़िशन लोकल उपलब्ध कराएं. (Ifa154)- टेक्स्ट लिंक में, सामान्य स्टाइलिंग, होवर किए गए, और फ़ोकस किए गए स्टाइलिंग के अलावा, दबाए गए स्टाइलिंग का विकल्प भी जोड़ा गया है. (I5f864, b/139312671)
- हैंडराइटिंग के जेस्चर के लिए
ViewConfiguration.HandwritingGestureLineMarginकी सुविधा लॉन्च की गई.BasicTextFieldके लिए, हाथ से लिखने वाले जेस्चर की सुविधा काम करती है. (Ie6e13, b/325660505) - हमने 1.7 रिलीज़ के लिए
DelegatableNode.scrollIntoViewको हटा दिया है, क्योंकि हमारे पास इससे जुड़े बाकी एपीआई को स्टेबल करने के लिए समय नहीं था. इस फ़ंक्शन को 1.8 (I6cf61, b/333421581, b/332900232) में फिर से शामिल किया जाएगा - लेआउट के कोऑर्डिनेट के बारे में क्वेरी करते समय, अब
excludeDirectManipulationOffsetआर्ग्युमेंट का इस्तेमाल किया जा सकता है. इससे, पैरंट लेआउट के सेट किए गए ऑफ़सेट को बाहर रखा जा सकता है. पैरंट लेआउट ने अपने बच्चों कोPlaceable.PlacementScope.withDirectManipulationPlacementका इस्तेमाल करके रखा था. इसी तरह, अगर कोई लेआउट अपने चाइल्ड एलिमेंट की पोज़िशन को बार-बार बदलता है, तो अब वह उन्हेंwithDirectManipulationPlacementका इस्तेमाल करके रख सकता है. जैसे, स्क्रोल करने की सुविधा, जो डिफ़ॉल्ट रूप से लागू होती है. इससेapproachLayoutपर आधारित ऐनिमेशन को ज़्यादा सहज बनाने में मदद मिलती है. अब ऐनिमेशन के लिए किस ऑफ़सेट का इस्तेमाल करना है और किस ऑफ़सेट को सीधे तौर पर लागू करना है, यह तय किया जा सकता है. (I60ec7) LazyStaggeredGridके लिएrequestScrollToItemको पेश करें. हर मेज़र-पास के लिए, क्लाइंट अबrequestScrollToItemको कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. इससे मौजूदा व्यवहार में किसी भी तरह का बदलाव नहीं होता है. हालांकि, ऐसा तब होता है, जबrequestScrollToItemको कॉल किया जाता है. (I63983)- पेजर में
requestScrollToPageकी सुविधा लॉन्च की गई है. हर मेज़र-पास के लिए, क्लाइंट अबrequestScrollToPageको कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. इससे मौजूदा व्यवहार में किसी भी तरह का बदलाव नहीं होता है. हालांकि, ऐसा तब होता है, जबrequestScrollToPageको कॉल किया जाता है. (Ic4213) LazyGridsके लिएrequestScrollToItemलॉन्च किया गया. हर मेज़र-पास के लिए, क्लाइंट अबrequestScrollToItemको कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. इससे मौजूदा व्यवहार में किसी भी तरह का बदलाव नहीं होता है. हालांकि, ऐसा तब होता है, जबrequestScrollToItemको कॉल किया जाता है. (I0a7a0)ClickableTextको 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से मेल खाने वालाLinkAnnotationबनाएं और इसAnnotatedStringकोTextकंपोज़ेबल (I34d4b, b/323346994) को पास करेंAnnotatedStringUrlAnnotationके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,LinkAnnotation.Urlका इस्तेमाल करें. अगर आपको Material theming का इस्तेमाल करना है, तोTextDefaultsऑब्जेक्ट का इस्तेमाल करके एनोटेशन बनाएं. इसमें Material theming लागू किया गया हो (I8d180, b/323346545)String.parseAsHtmlका नाम बदलकरAnnotatedString.Companion.fromHtmlकर दिया गया (I43dcd)parseAsHtmlतरीके में स्टाइलिंग के तर्क (linkStyle,focusedLinkStyle,hoveredLinkStyle) और लिंक इंटरैक्शन लिसनर जोड़ा गया.<a>टैग का इस्तेमाल करके, एचटीएमएल टैग की गई स्ट्रिंग को पार्स करते समय, यह तरीका ऐसे हर टैग के लिएLinkAnnotation.Urlबनाएगा. साथ ही, स्टाइलिंग ऑब्जेक्ट और लिंक इंटरैक्शन लिसनर को हर एनोटेशन में पास करेगा. (I7c977)LinkAnnotationअब राज्य के हिसाब से स्टाइलिंग के तर्क औरLinkInteractionListenerलेता है. हाइपरलिंक पाने के लिए, इस एनोटेशन कोAnnotatedStringमें जोड़ें.focusedStateऔर/याhoveredStateपास करके, लिंक के लिए विज़ुअल कॉन्फ़िगरेशन तय किया जा सकता है. ऐसा तब किया जा सकता है, जब लिंक पर फ़ोकस किया गया हो और/या उस पर कर्सर घुमाया गया हो. (I81ce4, b/139312671)- लंबे स्क्रीनशॉट की सुविधा के लिए फ़ीचर फ़्लैग हटा दिया गया है. (I28648, b/329128246)
LazyColumnअब लंबे स्क्रीनशॉट में स्टिकी हेडर को सही तरीके से रेंडर करेगा. (I8d239, b/329296635)- एक्सपेरिमेंट के तौर पर उपलब्ध ज़्यादातर एपीआई को स्थिर किया गया है. ये एपीआई, नए
BasicTextFieldके साथ लॉन्च किए गए थे. (I714e2) BasicSecureTextFieldमेंtextObfuscationCharacterपैरामीटर जोड़ा गया है. यह पैरामीटर कंट्रोल करता है कि कॉन्टेंट को धुंधला करते समय किस वर्ण का इस्तेमाल किया जाए. (I0588b)NestedScrollसोर्स को खींचकर छोड़ना और फ़्लिंग करना, अबUserInputऔरSideEffectसे बदल दिया गया है. ऐसा इसलिए किया गया है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं. (I40579)LocalBringIntoViewSpecको पेश किया गया है. यह प्लैटफ़ॉर्म पर निर्भर करने वाला फ़ोकस स्क्रोलिंग बिहेवियर है. इसे Scrollable मॉडिफ़ायर लेयर पर लागू किया जाता है. (I27aa5, b/317453911)TextFieldCharSequenceको हटा दिया गया है.TextFieldBuffer.originalValuesकोTextFieldBuffer.originalTextऔरTextFieldBuffer.originalSelectionसे बदल दिया जाता है. (I2c7d6)ImeOptions.hintLocalesअब नल नहीं हो सकता. अगर आपको खाली स्थानीय भाषा की सूची पास करनी है, तो कृपयाLocaleList.Emptyका इस्तेमाल करें. (Ic5bc4)getOffsetFractionForPageका नाम बदलकरgetOffsetDistanceInPagesकर दिया गया. (Ia05e2)
गड़बड़ियां ठीक की गईं
InputTransformationsकोnextके साथ जोड़ने पर, उनकेKeyboardOptionsको अबKeyboardOptions.mergeतरीके का इस्तेमाल करके, अलग-अलग विकल्पों के हिसाब से सही तरीके से मर्ज किया जाता है. (Ie5304, b/295951492)AnchoredDraggableStateकाtargetValueअब पोज़िशनल थ्रेशोल्ड को ध्यान में नहीं रखता. अब इसमें 50% का थ्रेशोल्ड है. इसका मतलब है किtargetValueदो ऐंकर के बीच के मिडपॉइंट पर बदलता है. (I82c2c)
बाहरी योगदान
- स्क्रोल करने के लिए इस्तेमाल होने वाले दो एपीआई के नाम बदले गए (I56a75)
वर्शन 1.7.0-alpha06
3 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
LazyColumnऔरLazyRowमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक नया मॉडिफ़ायर लॉन्च किया है. यह एक्सपेरिमेंट के लिए नहीं है. इसका नामModifier.animateItem()है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), गायब होना (फ़ेड आउट), और क्रम बदलना. (I2d7f7, b/150812265)LazyColumn/LazyRowके क्लाइंट अब आने वाले मेज़र-पास के लिए, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकते हैं. इसके लिए, उन्हें निलंबित न की गईLazyListState.requestToScrollको कॉल करना होगा. (I98036, b/209652366)- स्टाइल की गई स्ट्रिंग के लिए
parseAsHtmlतरीका जोड़ा गया: इससे एचटीएमएल टैग से मार्क की गई स्ट्रिंग कोAnnotatedStringमें बदला जा सकता है. ध्यान दें कि सभी टैग काम नहीं करते. उदाहरण के लिए, फ़िलहाल बुलेट लिस्ट नहीं दिखाई जा सकतीं. (I84d3d) - Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback) का इस्तेमाल किया गया है. फ़िलहाल, यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हो सकता है कि यह सभी मामलों में ठीक से काम न करे. इस वजह से, फ़िलहाल यह सुविधा डिफ़ॉल्ट रूप से बंद है. ऑप्ट-इन करने के लिए,ComposeFeatureFlag_LongScreenshotsEnabledफ़्लैग को सही पर सेट करें. इस फ़्लैग को 1.7 बीटा से पहले हटा दिया जाएगा. (I2b055, b/329296471) - नया
GraphicsLayerएपीआई लॉन्च किया गया है. इससेGraphicsLayerइंस्टेंस को प्लेस करने और रेंडर करने में ज़्यादा आसानी होगी. साथ ही,GraphicsLayerमॉडिफ़ायर इंस्टेंस तय करने के लिए, कंपोज़ेबल लागू करने के साथ समन्वय किए बिना, इंट्रिंसिक रेंडरिंग सुविधाओं का इस्तेमाल किया जा सकेगा.
एपीआई में हुए बदलाव
- सभी
KeyboardOptionsपैरामीटर की वैल्यू अब डिफ़ॉल्ट रूप से 'तय नहीं की गई' पर सेट होती है.KeyboardOptions.mergeतरीका जोड़ा गया. KeyboardOptions.autoCorrectका नाम बदलकरautoCorrectEnabledकर दिया गया है. साथ ही, इसे शून्य किया जा सकने वाला बना दिया गया है. शून्य का मतलब है कि कोई वैल्यू नहीं दी गई है. (Ia8ba0, b/295951492)outOfBoundsPageCountका नाम बदलकरbeyondViewportPageCountकर दिया गया. (I129c6)fun ClipEntry.getMetadata()को बदलकरval ClipEntry.clipMetadataकर दिया गया है. (I50155)TextFieldState.valueAsFlow()को हटा दिया गया है.snapshotFlow { state.text }याsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629) का इस्तेमाल करना ज़्यादा पसंद हैInputTransformation.transformInputपैरामीटर को फिर से व्यवस्थित किया गया.originalValue: TextFieldCharSequenceको हटाया गया. इसके बजाय,TextFieldBufferअब इसी नाम के साथ यह वैल्यू दिखाता है.valueWithChanges: TextFieldBufferपैरामीटर को भी हटा दिया गया है.TextFieldBufferअब फ़ंक्शन पर रिसीवर स्कोप है. (I919cc)BasicTextField(state)औरBasicSecureTextFieldअब सॉफ़्टवेयर कीबोर्ड से की गई कार्रवाइयों को प्रोसेस करने के लिए,KeyboardActionsके बजायKeyboardActionHandlerका इस्तेमाल करते हैं. (I58dda)- स्टाइलस हैंडराइटिंग डेलिगेशन एपीआई, ताकि "फ़र्ज़ी" टेक्स्ट इनपुट फ़ील्ड पर स्टाइलस हैंडराइटिंग की सुविधा काम कर सके. (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocusका नाम बदलकरshowKeyboardOnFocusकर दिया गया. (Ib4b7a, b/295951492)Modifier.contentReceiverसेhintMediaTypesपैरामीटर हटाया गया. डेवलपर को पहले ही यह सुझाव दिया गया था कि वे मिले हुएTransferableContentके मीडिया टाइप की जांच करें. ऐसा इसलिए, क्योंकि यह कॉन्फ़िगर किए गएhintMediaTypesके साथ काम नहीं कर सकता. (I82f99)BasicSecureTextFieldके पैरामीटर का क्रम बदला गया.BasicSecureTextFieldके लिए सही डिफ़ॉल्ट वैल्यू को बनाए रखते हुए,keyboardTypeऔरimeActionपैरामीटर हटा दिए गए हैं. इसके बजाय,KeyboardOptionsक्लास का इस्तेमाल किया गया है.scrollStateपैरामीटर को भी हटा दिया गया है. (Ibbfa9)TextFieldState.textके टाइप कोTextFieldCharSequenceसे बदलकर सिर्फ़CharSequenceकर दिया गया है. इसलिए, हमनेTextFieldState.selection: TextRangeऔरTextFieldState.composition: TextRange?को जोड़ा है, ताकि सीधे तौर पर स्टेट ऑब्जेक्ट से मौजूदा सिलेक्शन और कंपोज़िशन वैल्यू पढ़ी जा सकें.TextFieldState.forEachTextValueको हटा दिया गया है. (Idb2a2)ClipboardManager.getClipMetadataऔरClipboardManager.hasClipफ़ंक्शन हटा दिए गए हैं. मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए, कृपयाclipEntry.getMetadata()का इस्तेमाल करें. यह समझने के लिए कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं,ClipboardManager.getClipका नतीजा भी देखें. अगर यह शून्य है, तो इसका मतलब है कि क्लिपबोर्ड में कोई मौजूदा क्लिप नहीं है. (I50498)ClipboardManager.setClipअब क्लिपबोर्ड को मिटाने के लिए, null वैल्यू स्वीकार करता है. (I7d2e9)ReceiveContentListenerको फ़ंक्शन इंटरफ़ेस में बदल दिया जाता है. इसके अलावा, lambda को इनपुट के तौर पर लेने वालेModifier.receiveContentओवरलोड को हटा दिया गया है, क्योंकिReceiveContentListenerअब एक फ़ंक्शन इंटरफ़ेस है.Modifier.receiveContentका नाम बदलकरModifier.contentReceiverकर दिया गया है. (I1e6af)TransferableContent.consumeEachका नाम बदलकरTransferableContent.consumeकर दिया गया. (I1e462)rememberTextFieldStateको स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I37999)
गड़बड़ियां ठीक की गईं
- हमने एक गड़बड़ी को ठीक किया है. इस गड़बड़ी की वजह से,
BasicTextField(state)वैरिएंट, CJK(कंपोज़िशन पर आधारित) कीबोर्ड के साथ काम नहीं करता था. (I54425) Modifier.dragAndDropTarget()के फिर से इस्तेमाल किए जाने पर, कुछ स्थितियों मेंModifier.dragAndDropTarget()के पुराने डेटा को रेफ़रंस करने वाली गड़बड़ी को ठीक किया गया है.Modifier.Node(I05bb1)- हाल ही में अनुबंध में हुए बदलाव को पहले जैसा कर दिया गया है. इस बदलाव के तहत,
anchoredDragऑपरेशन के आखिर मेंAnchoredDraggableState#anchoredDragकॉल स्नैप हो जाते थे. (I95715)
वर्शन 1.7.0-alpha05
20 मार्च, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- हाइपरलिंक को स्टाइल करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध
LocalTextLinkStyleकंपोज़िशन लोकल को हटाया गया. (Iebfa7) onLinkClickedआर्ग्युमेंट के साथBasicTextके एक्सपेरिमेंटल ओवरराइड को हटाया गया. आने वाले समय में, हाइपरलिंक की सुविधा के लिए एपीआई उपलब्ध कराया जाएगा. (I107d5)TextFieldStateऔरTextFieldBufferमें, कोडपॉइंट से जुड़ी प्रॉपर्टी और तरीके हटाए गए. इसके अलावा, हमने चुने गए और कंपोज़िशन से जुड़े बाकी एपीआई सेinCharsसफ़िक्स भी हटा दिए हैं. (Ief7ce)- अब ऐंकर पॉइंट से गुज़रने पर,
AnchoredDraggableकाcurrentValueअपडेट हो जाएगा.settledValueका इस्तेमाल करके, पिछलीcurrentValueसिमैंटिक पाएं. यह सिर्फ़ तब अपडेट होता है, जब ऐंकर पर सेटल हो जाता है. प्रोग्रेस को अब प्रॉपर्टी के बजाय फ़ंक्शन के तौर पर दिखाया जाता है. इसके लिए, शुरुआती और आखिरी पॉइंट की ज़रूरत होती है. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimits,TextFieldDecoratorको स्टेबल वर्शन में अपग्रेड कर दिया गया है. (I9582b)- लो-लेवल IME से जुड़े टेस्ट और IME के अन्य लो-लेवल इस्तेमाल के मामलों को लिखने में मदद करने के लिए,
InterceptPlatformTextInputको लॉन्च किया गया.PlatformTextInputTestOverrideका अब इस्तेमाल नहीं किया जा सकता. (I862ed, b/322680547) restrictedConstraints()को दो तरीकों में बांटा गया है:fitPrioritizingWidth()औरfitPrioritizingHeight()(I6d7fd)
बाहरी योगदान
- स्क्रोल करने की नई कार्रवाई के लिए, स्क्रोल करने की दिशा की जांच करने के लिए दो नए एपीआई
isLastScrollForward/isLastScrollBackwardजोड़े गए हैं. अगर अब तक स्क्रोल करने की कोई कार्रवाई नहीं की गई है, तो यह फ़ंक्शन 'गलत है' वैल्यू दिखाता है. (I63a0e)
वर्शन 1.7.0-alpha04
6 मार्च, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04 रिलीज़ हो गया है. वर्शन 1.7.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Android U के बाद वाले वर्शन पर चलने वाले डिवाइसों पर, स्टाइलस से लिखने की सुविधा काम करती है. (I002e4)
hintLocalesकोKeyboardOptionsमें जोड़ा गया है, ताकिTextFieldsको यह सुविधा मिल सके कि वह आईएमई को खास स्थानीय भाषाओं के बारे में जानकारी दे सके, ताकि पसंदीदा भाषा को पहले से सेट किया जा सके. (Id18c2)- एक्सपेरिमेंट के तौर पर उपलब्ध
BasicTextField2औरBasicSecureTextFieldके उन ओवरलोड को हटा दिया गया है जोvalue: StringऔरonValueChange: () -> Stringपैरामीटर लेते थे. (I568b4) InputTransformationमें एक वैकल्पिकapplySemanticsफ़ंक्शन जोड़ें, ताकि उसBasicTextField2के सिमैंटिक पर असर डाला जा सके जिस पर इसे लागू किया गया है. (I74a2f, b/170648072)- इस सीएल में, हम
GetScrollViewportLengthसिमैंटिक ऐक्शन जोड़ रहे हैं, ताकि हम कंपोज़ में स्क्रोल किए जा रहे कॉम्पोनेंट के बारे में जानकारी को a11y सिस्टम तक पहुंचा सकें. यह सीएल, स्क्रोल की जा सकने वाली फ़ाउंडेशन लिस्ट में बताई गई प्रॉपर्टी के इस्तेमाल पर भी लागू होता है. (Ic5fa2) BasicTextField2का नाम बदलकरBasicTextFieldकर दिया गया है. (Ie5713)FocusRequester.createRefsअब स्थिर हो गया है (I4d92c, b/261436820)DelegatableNode.scrollIntoView()को इसलिए लॉन्च किया गया है, ताकि मॉडिफ़ायर नोड सीधेscrollIntoViewअनुरोध कर सकें. (I2b3b7, b/299939840)DelegatableNode.requireView()को इसलिए पेश किया गया है, ताकि मॉडिफ़ायर नोड, कंपोज़िशन लोकल को पढ़े बिना मौजूदा AndroidViewको पा सकें. (I40768)- कॉन्टेक्स्ट के हिसाब से लेआउट की जानकारी देने वाली सुविधा को कॉन्टेक्स्ट के हिसाब से फ़्लो रो स्कोप और कॉन्टेक्स्ट के हिसाब से फ़्लो कॉलम स्कोप में शामिल किया गया है. इसमें लाइन इंडेक्स, पोज़िशन, और ज़्यादा से ज़्यादा चौड़ाई और ऊंचाई की सीमाएं शामिल हैं, ताकि तय की गई पोज़िशन में बने रहें. ज़्यादा से ज़्यादा चौड़ाई/ऊंचाई से ज़्यादा वाले आइटम, ओवरफ़्लो सेटिंग के आधार पर अगली लाइन में जा सकते हैं या उन्हें हटाया जा सकता है. (Id13f8, b/292114798)
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, कुछ मामलों में
TextFieldकेenabledयाreadOnlyएट्रिब्यूट को टॉगल करने पर, ऐप्लिकेशन क्रैश हो जाता था. (Iae17b)
वर्शन 1.7.0-alpha03
21 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DelegatableNode.requireLayoutCoordinates()कोModifier.Nodeके मौजूदाLayoutCoordinatesको पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपकोonPlacedको बदलने और निर्देशांकों को खुद किसी प्रॉपर्टी में सेव करने की ज़रूरत नहीं है. (Ia8657)DelegatableNode.currentLayoutCoordinatesकोModifier.Nodeके मौजूदाLayoutCoordinatesको पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपकोonPlacedको बदलने और निर्देशांकों को खुद किसी प्रॉपर्टी में सेव करने की ज़रूरत नहीं है. (Iaebaa)AnchoredDraggableकी ओर से इस्तेमाल किए गएDraggableAnchorsमें परफ़ॉर्मेंस ऑप्टिमाइज़ेशन. (I89cff)androidx.compose.foundation.text2पैकेज के तहत आने वालेBasicTextField2और इससे जुड़े एपीआई कोandroidx.compose.foundation.textमें ले जाया गया है. (I9f635)BasicTextField2अबCodepointTransformationपैरामीटर स्वीकार नहीं करता. इसके लिए,BasicSecureTextFieldयाOutputTransformationका इस्तेमाल करें. (Id34ff)- सिर्फ़ दो
AnnotatedStringsके एनोटेशन की तुलना करने का तरीका जोड़ा गया. (I32659) MaxLinesऔरOverflowके साथ,ContextualFlowRowऔर बेहतरFlowRow/Columnकी सुविधा पेश की जा रही है. हमें यह बताते हुए बेहद खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्धFlowRowऔरFlowColumnको बेहतर बनाया गया है. अब इनमेंmaxLinesऔर ओवरफ़्लो सपोर्ट की सुविधा भी उपलब्ध है. साथ ही,ContextualFlowRowऔरContextualFlowColumnको पहली बार लॉन्च किया गया है. इस अपडेट को परफ़ॉर्मेंस के हिसाब से सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*उन आइटम के लिए सबसे सही है जिनकी संख्या ज़्यादा है और जोmaxLinesकॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल करते हैं. वहीं,FlowRowऔरFlowColumnउन आइटम के लिए सबसे सही है जिनकी संख्या कम है. जैसे, 100 से कम आइटम. अहम जानकारी:FlowRowयाFlowColumnमें मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, वहां शुरू करने के दौरानoverflowकोFlowRowOverflow.VisibleयाFlowColumnOverflow.Visibleपर सेट करें. इन नई सुविधाओं के काम करने के उदाहरण देखने के लिए,ContextualFlowRowSampleऔरFlowRowSampleपर जाएं. (Ib9135, b/293577082)
गड़बड़ियां ठीक की गईं
- कर्सर ऐनिमेशन, चालू और बंद स्थितियों के बीच अब फ़्रेम का अनुरोध नहीं करता है. (Ia2253)
KeyboardOptions' अब डेप्रिकेट किए गए कॉपी कंस्ट्रक्टर, सभी प्रॉपर्टी को सही तरीके से कॉपी करेंगे. (If12de)
वर्शन 1.7.0-alpha02
7 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02 रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
HorizontalPager,VerticalPager, औरPagerStateको स्टेबल वर्शन में प्रमोट किया जाता है. (I67660, b/316966909)LocalTextLinkStyleकंपोज़िशन लोकल जोड़ी गई है. इससे पूरे ऐप्लिकेशन में टेक्स्ट के लिंक की स्टाइल बदली जा सकती है. अगर ऐप्लिकेशन में अपनी थीम का इस्तेमाल किया जा रहा है, तो आपको इस कंपोज़िशन लोकल को अपनी थीम के हिसाब से सेट करना चाहिए. मटीरियल थीम का इस्तेमाल करने पर, लिंक का रंग डिफ़ॉल्ट रूप से मटीरियल के मुख्य रंग पर सेट होगा. (I7eb10)receiveContentमॉडिफ़ायर जोड़ा गया है. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.receiveContentके साथ इंटिग्रेट होता है, ताकि सॉफ़्टवेयर कीबोर्ड या क्लिपबोर्ड में चिपकाने की सुविधा के ज़रिए उपलब्ध कराए गए रिच कॉन्टेंट को स्वीकार किया जा सके.BasicTextField2(I81b72)- इस बदलाव में, हम पेजर में
SnapFlingBehaviorकोTargetedFlingBehaviorसे बदल रहे हैं, ताकि इस्तेमाल के अन्य उदाहरणों को अनलॉक किया जा सके और ज़्यादा विकल्प उपलब्ध कराए जा सकें. (I762ea) - इस बदलाव में, हम स्नैपिंग एपीआई को स्टेबल बना रहे हैं. हम टेस्टिंग कोड में भी कुछ बदलाव कर रहे हैं. साथ ही, स्नैपिंग में ज़्यादा सैंपल जोड़ रहे हैं. (Id8da9)
TargetedFlingBehaviorको पेश किया गया है. यह एकFlingBehaviorहै, जो चालू एनिमेशन की स्थिति और उसके टारगेट स्क्रोल ऑफ़सेट के बारे में जानकारी देता है. (I6a207)
गड़बड़ियां ठीक की गईं
BasicTextField2अब टाइप करते समय कर्सर को व्यू में रखता है. ऐसा तब होता है, जब कर्सर को स्क्रोल करके व्यू से बाहर कर दिया गया हो या इनपुट की वजह से वह व्यू से बाहर चला जाता हो. (Ieb856, b/237190748)
बाहरी योगदान
- LazyLists के प्रीफ़ेच करने के तरीके को कॉन्फ़िगर करने के लिए, एक एक्सपेरिमेंटल एपीआई जोड़ा गया है. (I022a4)
वर्शन 1.7.0-alpha01
24 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01 रिलीज़ हो गया है. वर्शन 1.7.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नया
Indication API,IndicationNodeFactoryजोड़ा गया. इससे,rememberUpdatedInstanceएपीआई की तुलना मेंIndicationको बेहतर तरीके से लागू किया जा सकता है.rememberUpdatedInstanceएपीआई अब काम नहीं करता. डेटा को दूसरी जगह भेजने से जुड़ी जानकारी के लिए, developer.android.com पर जाएं. clickable / combinedClickable / selectable / toggleableअब एक ऐसाMutableInteractionSourceपैरामीटर स्वीकार करता है जिसकी वैल्यू शून्य हो सकती है. अगर यह वैल्यू शून्य है और दी गईIndicationएकIndicationNodeFactoryहै, तोIndicationको सिर्फ़ ज़रूरत पड़ने पर बनाया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर आपनेMutableInteractionSourceको होस्ट नहीं किया है और इसका इस्तेमाल नहीं किया जा रहा है, तो हमारा सुझाव है कि आप null पास करें.
एपीआई में हुए बदलाव
AnchoredDraggableमेंDecayAnimationको शामिल किया गया है. इस बदलाव सेAnchoredDraggableमेंdecayAnimationSpecपैरामीटर जुड़ जाता है. इससे किसी एक ऐंकर पर सेटल होने के दौरान, डेके ऐनिमेशन का इस्तेमाल किया जा सकता है. बदलाव में, मौजूदाanimationSpecका नाम बदलकरsnapAnimationSpecकरना भी शामिल है, ताकि हर स्पेसिफ़िकेशन के इस्तेमाल के उदाहरण को समझा जा सके.BasicTextField2को एक्सपेरिमेंट के तौर पर इस्तेमाल किया जा सकता है. यहBasicTextFieldके बराबर होना चाहिए और इसका व्यवहार प्रोडक्शन के लिए तैयार होना चाहिए. हालांकि, यह एपीआई फ़िलहाल एक्सपेरिमेंट के तौर पर उपलब्ध है. स्थिर होने से पहले, इसका नाम बदलकरBasicTextFieldकर दिया जाएगा और इसे उसी पैकेज में ले जाया जाएगा.BasicTextField2के लिएOutputTransformationएपीआई का पहला ड्राफ़्ट लॉन्च किया गया. यह एपीआई, पुरानेBasicTextFieldमेंVisualTransformationके इस्तेमाल के ज़्यादातर उदाहरणों की जगह लेता है. हालांकि, यह अभी पूरी तरह से तैयार नहीं है और कुछ चीज़ें ठीक से काम नहीं करेंगी. इसलिए, हम आपके इस्तेमाल के उदाहरणों के लिए, एपीआई के इस्तेमाल से जुड़े किसी भी सुझाव/राय या शिकायत का स्वागत करते हैं. (aosp/2708848)LinkAnnotationफ़ंक्शन लॉन्च किया गया है. इससे टेक्स्ट में लिंक और क्लिक किए जा सकने वाले आइटम जोड़े जा सकते हैं. लिंक करने की सुविधा अभी पूरी तरह से तैयार नहीं है. साथ ही, एपीआई में और भी बदलाव होने वाले हैं.receiveContentमॉडिफ़ायर जोड़ा गया है. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.receiveContent,BasicTextField2के साथ इंटिग्रेट होता है, ताकि सॉफ़्टवेयर कीबोर्ड से मिले रिच कॉन्टेंट को स्वीकार किया जा सके. इसके अलावा, क्लिपबोर्ड से चिपकाए गए कॉन्टेंट को भी स्वीकार किया जा सके.KeyboardOptions.shouldShowKeyboardOnFocusकी मदद से, फ़ोकस करने पर सॉफ़्टवेयर कीबोर्ड का अनुरोध करने वालेBasicTextFieldके डिफ़ॉल्ट व्यवहार को बंद किया जा सकता है.TextInputServiceऔरLocalTextInputServiceका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, सीधे तौर पर प्लैटफ़ॉर्म के IME एपीआई के साथ इंटिग्रेट करने के लिए,PlatformTextInputModifierNodeका इस्तेमाल करें. (aosp/2862698)Indication#rememberUpdatedInstanceका अब इस्तेमाल नहीं किया जा सकता. इससे परफ़ॉर्मेंस पर काफ़ी बुरा असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नएIndicationNodeFactoryएपीआई का इस्तेमाल करना चाहिए.
गड़बड़ियां ठीक की गईं
- अब
VisualTransformationपास होने पर,BasicTextFieldऑफ़सेट मैपिंग के कुछ हिस्से की पहले से पुष्टि करेगा. इससे कोडिंग से जुड़ी सामान्य गड़बड़ियों का पता लगाने में मदद मिलती है. इन गड़बड़ियों की वजह से, बाद में मेज़र या ड्रॉ पास में ठीक न की जा सकने वाली समस्याएं आती हैं. कंपोज़िशन के दौरान गड़बड़ी होने पर, डेवलपर को डेवलपमेंट के दौरान ये गड़बड़ियां दिखने की संभावना ज़्यादा होती है. इससे प्रोडक्शन क्रैश होने से बचने में मदद मिलती है. (I0fd42) - अगर अमान्य इंडेक्स के लिए अमान्य इंडेक्स दिखाया जाता है, तो
VisualTransformationकोई गड़बड़ी नहीं दिखाएगा (b/316401857 )
वर्शन 1.6
वर्शन 1.6.8
12 जून, 2024
androidx.compose.foundation:foundation-*:1.6.8 रिलीज़ हो गया है. वर्शन 1.6.8 में ये बदलाव शामिल हैं.
वर्शन 1.6.7
1 मई, 2024
androidx.compose.foundation:foundation-*:1.6.7 रिलीज़ हो गया है. वर्शन 1.6.7 में ये बदलाव शामिल हैं.
वर्शन 1.6.6
17 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.6.6 रिलीज़ हो गया है. वर्शन 1.6.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, कुछ मामलों में
TextFieldकेenabledयाreadOnlyएट्रिब्यूट को टॉगल करने पर, ऐप्लिकेशन क्रैश हो जाता था. (Iae17b)
वर्शन 1.6.5
3 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.6.5 रिलीज़ हो गया है. वर्शन 1.6.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइन/कॉलम में, फिर से न दोहराई जा सकने वाली गड़बड़ियों के लिए डीबगिंग लॉग जोड़े गए: (b/300280216 और b/297974033)
वर्शन 1.6.4
20 मार्च, 2024
androidx.compose.foundation:foundation-*:1.6.4 रिलीज़ हो गया है. वर्शन 1.6.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट को चुनने के लिए, दबाकर रखने और फिर खींचने वाले जेस्चर का इस्तेमाल करने पर, अब ऐप्लिकेशन क्रैश नहीं होता. ऐसा तब होता है, जब खींचने की प्रोसेस के पहले फ़्रेम में, टेक्स्ट का लेआउट बाउंड्री से बाहर चला जाता है. (Icdf90, b/325307463)
वर्शन 1.6.3
6 मार्च, 2024
androidx.compose.foundation:foundation-*:1.6.3 रिलीज़ हो गया है. वर्शन 1.6.3 में ये बदलाव शामिल हैं.
वर्शन 1.6.2
21 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.6.2 रिलीज़ हो गया है. वर्शन 1.6.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
AnimateContentSizeके ठीक से रीसेट न होने की समस्या को ठीक करें. (I07051)- इस अपडेट में, कुछ मामलों में टेक्स्ट के
intrinsicHeightको ज़्यादा कैश मेमोरी में सेव करने की समस्या को ठीक किया गया है. (3cd398, b/217910352)
वर्शन 1.6.1
7 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.6.1 रिलीज़ हो गया है. वर्शन 1.6.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- स्क्रोल करने की सीमा पार होने पर, स्टैगर्ड ग्रिड मेज़रमेंट की समस्या ठीक की गई. (bffc39)
- बड़े डाइमेंशन वाले लेआउट के लिए जांच की सुविधा जोड़ी गई. (e74af5)
- स्टैगर्ड ग्रिड की शुरुआत में, शून्य साइज़ वाले आइटम की जगह तय की गई है. (785f94)
- onRelease कॉलबैक को उसी क्रम में कॉल करें जिस क्रम में onForgotten को कॉल किया गया था. (31ce3b)
वर्शन 1.6.0
24 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये बदलाव शामिल हैं.
1.5.0 के बाद हुए अहम बदलाव
- नया मॉडिफ़ायर
Modifier.anchoredDraggable, जो पहले से तय किए गए ऐंकर के सेट के बीच खींचने और ऐनिमेशन करने की सुविधा को अनलॉक करता है. इस मॉडिफ़ायर कोModifier.swipeableके बदले में इस्तेमाल किया जा सकता है. इसे इस्तेमाल करने का तरीका जानें. साथ ही, माइग्रेशन गाइड मेंModifier.swipeableसे माइग्रेट करने का तरीका जानें. - ऐप्लिकेशन और कॉम्पोनेंट के बीच, खींचकर छोड़ने की सुविधा जोड़ी गई है. शुरू करने के लिए,
DragAndDropTarget,Modifier.dragAndDropSourceऔर अन्य एपीआई देखें Modifier.draggable2Dनया मॉडिफ़ायर है. इसकी मदद से, 2D में आसानी से ड्रैग करने की सुविधा मिलती है. उदाहरण देखें.- Compose में, सर्फ़ेस के हिसाब से कॉम्पोनेंट जोड़ने की प्रोसेस को आसान बनाने के लिए,
AndroidExternalSurfaceऔरAndroidEmbeddedExternalSurfaceको जोड़ा गया है PagerऔरsnapFlingBehaviourमें कई एपीआई बदलाव और सुधार- फ़ोकस, टेक्स्ट, और इनसेट से जुड़े कई एपीआई को स्टेबल एपीआई के तौर पर प्रमोट किया गया है
वर्शन 1.6.0-rc01
10 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragAndDropTarget()एक्सटेंशन कंस्ट्रक्टर को हटा दिया गया है.object: DragAndDropTarget {}का इस्तेमाल करके नया इंस्टेंस बनाएं. (I32318)
वर्शन 1.6.0-beta03
13 दिसंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03 रिलीज़ हो गया है. वर्शन 1.6.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस क्रैश को ठीक किया गया है जिससे बहुत बड़े टेक्स्ट पर असर पड़ा था. इस टेक्स्ट को मेज़र करने के लिए, इनफ़िनिट कॉन्स्ट्रेंट का इस्तेमाल किया गया था. (I1a7df, b/312294386)
PlatformImeOptionsअब इंटरफ़ेस के बजाय एक कॉन्क्रीट क्लास है. (If40a4)
वर्शन 1.6.0-beta02
29 नवंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02 रिलीज़ हो गया है. वर्शन 1.6.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सिर्फ़ लेआउट बदलने के लिए स्क्रोल करने के बाद,
canScrollके अपडेट न होने की समस्या को ठीक किया गया. (I60a86) - थोड़ा स्क्रोल करने के बाद,
Modifier.animateItemPlacement()औरLookaheadScopeसे जुड़ी समस्या ठीक की गई. (I3a2b7)
वर्शन 1.6.0-beta01
15 नवंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragAndDropTargetमॉडिफ़ायर अबDragAndDropTargetको साफ़ तौर पर लेता है. साथ ही, इसमें ड्रैग और ड्रॉप सेशन में ऑप्ट इन करने के लिए लैम्ब्डा होता है. अबDragAndDropModifierNodeके लिए दो फ़ैक्ट्री फ़ंक्शन उपलब्ध हैं. एक ट्रांसफ़र पाने के लिए और दूसरा डेटा ट्रांसफ़र करने के लिए (I69481)maximumFlingVelocityको फ़्लोट के तौर पर दिखाने के लिए अपडेट किया गया.maximumFlingVelocityयूनिटी के बारे में ज़्यादा जानकारी देने के लिए, दस्तावेज़ों को अपडेट किया गया. (I8adc7)DragAndDropModifierNodeफ़ैक्ट्री में मौजूदonDragAndDropStartका नाम बदलकरacceptDragAndDropTransferकर दिया गया है.acceptsDragAndDropTransferकोdragAndDropTargetModifierमें जोड़ दिया गया है, ताकि खींचें और छोड़ें की सुविधा का इस्तेमाल करके इसे स्वीकार किया जा सके. अगर आपको ड्रैग और ड्रॉप सेशन में दिलचस्पी है, तो यह लैंबडा एक काम काDragAndDropTargetदिखाता है. ड्रैग इवेंट को प्रोसेस करने के लिए, अन्य लैम्ब्डा को इससे बदल दिया गया है.ड्रैग और ड्रॉप सेशन (Iebf3a) से डेटा पाने के लिए,
DragAndDropTargetफ़ैक्ट्री फ़ंक्शन जोड़ा गया हैAnchoredDraggableमेंstartDragImmediatelyको दिखाने से, इसका इस्तेमाल करते समय ड्रैग करने के जेस्चर (हाव-भाव) का पता लगाने के लिए कंट्रोल मिलता है. जब विजेट किसी टारगेट ऐंकर पर ऐनिमेट हो रहा हो, तब इसे सेट करना फ़ायदेमंद होता है. उदाहरण देखें. (Ie6d13, b/285139987)Foundation टूलटिप एपीआई अब
@ExperimentalFoundationApi(I30b0b) हैंDragAndDropInfoको टाइप के तौर पर हटा दिया गया है. अबDragAndDropModifierNode.drag,transferData, डेकोरेशन के साइज़, और ड्रैग डेकोरेशनDrawScopeलैम्डा के लिए पैरामीटर लेता हैDragAndDropTargetमें, एक ही ऐब्स्ट्रैक्ट तरीके के बजाय, ड्रैग और ड्रॉप करने के खास इवेंट के तरीके होते हैंDragAndDropModifierNodeके फ़ैक्ट्री फ़ंक्शन में मौजूदonDragAndDropEventका नाम बदलकरonDragAndDropStartकर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि दिया गयाDragAndDropTarget, सिर्फ़ ड्रैग और ड्रॉप वाले सेशन के लिए मान्य हैDragAndDropEventTypeको हटा दिया गया है (I645b1)PlatformTextInputModifierNode.runTextInputSessionका नाम बदलकरestablishTextInputSessionकर दिया गया. (I03cd0)OriginalTextकोTextSubstitutionसे बदलें. (Ifa5a8)PlatformTextInputModifierNode.textInputSessionका नाम बदलकरrunTextInputSessionकर दिया गया. (Ie9c6b)SubcomposeLayoutके उन बच्चों (औरLazyColumnजैसे लेआउट, जो इस पर आधारित हैं) को बंद माना जाता है जिन्हें आने वाले समय में फिर से इस्तेमाल करने के लिए सेव किया जाता है. ऐसे नोड की जांच करने के लिए, नयाassertIsDeactivated()टेस्ट एपीआई लॉन्च किया गया है. अन्य टेस्ट एपीआई, डिफ़ॉल्ट रूप से बंद किए गए नोड को फ़िल्टर कर देंगे. (I2ef84, b/187188981)Modifier.magnifierकेclippingEnabledपैरामीटर का नाम बदलकरclipकर दिया गया है.Modifier.magnifierकेmagnifierCenterपैरामीटर को नल वैल्यू स्वीकार करने वाला बनाया गया है. हालांकि, इसके डिफ़ॉल्ट व्यवहार में कोई बदलाव नहीं किया गया है. (I6aa66)कार्ड और चिप के लिए, Material
SwipeToRevealएपीआई अब उन स्लॉट को बनाने के लिए, डेटा क्लास पर आधारित इंस्टेंस के बजाय, स्लॉट पर आधारित एपीआई का इस्तेमाल करते हैं. यह एपीआई, Compose के सुझाव के मुताबिक काम करता है. यह एक बड़ा बदलाव है. नए एपीआई को इस्तेमाल करने के तरीके के बारे में जानने के लिए, कृपया डेमो और सैंपल कोड देखें. (Ia8943)
गड़बड़ियां ठीक की गईं
PageSize.Fixedके लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से
BasicTextबदलने पर,BasicTextलेआउट छोटा नहीं होता था. साथ ही,minWidth, मेज़रमेंट की शुरुआती शर्तोंmaxWidth(Idb19c) से कम होता थाminWidth ArcLineमें स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ी गई. (I4d5bb)- Window Inset में बदलाव करने पर, बाइनरी के साथ काम करने से जुड़ी समस्या को ठीक किया गया (Iee695)
- Material3 चिप/बटन के लिए, मटीरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)
वर्शन 1.6.0-alpha08
18 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
Modifier.draggable2Dनया मॉडिफ़ायर है. इसकी मदद से, 2D में आसानी से ड्रैग करने की सुविधा मिलती है. सैंपल (Id95f5, b/214412658) देखें
एपीआई में हुए बदलाव
Modifier.dragAndDrawSourceमें,onDrawDragShadowलैम्डा का नाम बदलकरdrawDragDecorationकर दिया गया है. साथ ही,DragAndDropInfoमें, साइज़ पैरामीटर का नाम बदलकरdragDecorationSizeकर दिया गया है. (Id0e30, b/303904810)BasicTextField2केdecorationBoxपैरामीटर का नाम बदलकरdecoratorकर दिया गया है. इसका टाइप भी बदलकर, मज़ेदार इंटरफ़ेसTextFieldDecoratorकर दिया गया है. (I23c1c)
गड़बड़ियां ठीक की गईं
BasicTextFieldकी ज़रूरी शर्तों के बारे में बेहतर दस्तावेज़.onValueChange(I90fc9, b/160257648)
वर्शन 1.6.0-alpha07
4 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट एडिटर के लिए, टेस्ट लिखने की सुविधा
PlatformTextInputMethodTestOverrideलॉन्च की गई. (Id159b) GraphicsSurfaceका नाम बदलकरAndroidExternalSurfaceकिया गया (I11680)- नॉन-लीनियर फ़ॉन्ट स्केलिंग को बंद करने के लिए,
DisableNonLinearFontScalingInComposeअस्थायी फ़्लैग जोड़ा गया. अगर आपको टेस्ट को ठीक करने के लिए समय चाहिए, तो उन्हेंDisableNonLinearFontScalingInCompose = trueके तौर पर सेट करें. इस फ़्लैग को Compose 1.6.0-beta01 में हटा दिया जाएगा. (Ic9486) ColorListऔरColorSetकलेक्शन जोड़े गए हैं, जिनसे एट्रिब्यूशन नहीं होता. (I744bd)- इस बदलाव से
shortSnapVelocityThresholdहट जाता है. इसेSnapLayoutInfoProviderको लागू करने के तरीके से जुड़ी जानकारी में बदल दिया गया है. (I65f6d) - ड्रैग और ड्रॉप सेशन शुरू करने के लिए
dragAndDropSourceमॉडिफ़ायर और ड्रैग और ड्रॉप सेशन से डेटा पाने के लिएdragAndDropTargetमॉडिफ़ायर जोड़ा गया (Ib7828, b/286038936) SnapPositionInLayoutदस्तावेज़ और पोज़िशन के तरीके को अपडेट करें.SnapPositionInLayoutमें, पोज़िशन के तरीके में कॉन्टेंट पैडिंग जोड़ें. (Id7938, b/300116110)TextFieldStateमेंUndoStateजोड़ा गया है. इससे उपयोगकर्ता को, किए गए बदलावों को पहले जैसा करने या फिर से करने की सुविधा मिलती है. (Icc024)
गड़बड़ियां ठीक की गईं
- स्पीड में बदलाव होने के बाद,
basicMarqueeके ऐनिमेट न होने की समस्या ठीक की गई. (Id2e77, b/297974036)
वर्शन 1.6.0-alpha06
20 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
SurfaceView,TextureView: GraphicsSurface(), औरEmbeddedGraphicsSurface()के लिए नए कंपोज़ेबल रैपर. यह एक एक्सपेरिमेंटल एपीआई है. इसमें बदलाव और संशोधन किए जा सकते हैं. (I9ddb2)Modifier.magnifier()अब एक स्टेबल एपीआई है. इसमें मॉडिफ़ायर में मौजूद इनलाइन पैरामीटर के पक्ष में,MagnifierStyleको हटाना शामिल है. (I83bec, b/298381260, b/262367109, b/261438887)
एपीआई में हुए बदलाव
ScrollScopeमेंupdateCurrentPageऔरupdateTargetPageको लॉन्च किया गया. येPagerState.scrollमें ऐनिमेटेड स्क्रोल को पसंद के मुताबिक बनाने के लिए ज़रूरी आखिरी चीज़ें हैं. (I9cad5, b/267744105, b/243786897)SnapFlingBehaviorसे डेंसिटी हटाएं.SnapLayoutInfoProviderके सभी वर्शन में, डेंसिटी को ऐक्सेस करने का तरीका पहले से मौजूद है. इसलिए, रिसीवर स्कोप को हटाया जा सकता है. इससेSnapFlingBehaviorऔरSnapLayoutInfoProviders, दोनों को लागू करना आसान हो जाएगा. (I153c3)- ज़्यादा मॉडिफ़ायर को स्टेबल के तौर पर मार्क किया गया है. (I56af1, b/298046462)
SnapStepSizeकोSnapLayoutInfoProviderसे हटाया गया. कैलकुलेशन, लेआउट की जानकारी का इस्तेमाल करके की जानी चाहिए. साथ ही, इसे स्नैपिंग ऑफ़सेट के तरीके से उपलब्ध कराया जाना चाहिए. (If320c)
व्यवहार में बदलाव
- अब कंपोज़ में, फ़ॉन्ट को बेहतर तरीके से पढ़ने और ऐक्सेस करने के लिए, नॉन-लीनियर फ़ॉन्ट स्केलिंग का इस्तेमाल किया जाता है. सिस्टम सेटिंग में फ़ॉन्ट स्केल > 100% होने पर, छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ सिर्फ़ थोड़ा बढ़ेगा. साथ ही, एसपी में तय की गई लाइन की ऊंचाई, 100% स्केल के हिसाब से तय की गई ऊंचाई के अनुपात में अपने-आप एडजस्ट हो जाएगी. ज़्यादा जानकारी के लिए, फ़ॉन्ट स्केलिंग के सबसे सही तरीके देखें. (I11518)
गड़बड़ियां ठीक की गईं
- टूलटिप के लिए,
rememberSaveableका इस्तेमाल बंद करें. (Icc131, b/299500338)
वर्शन 1.6.0-alpha05
6 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BasicSecureTextFieldके लिए ऐसे ओवरलोड जोड़ें जो न बदली जा सकने वाली वैल्यू और उस वैल्यू को बदलने के लिए कॉलबैक स्वीकार करते हैं. यह ठीक उसी तरह काम करता है जिस तरह मौजूदाBasicTextFieldएपीआई काम करता है. (Ia4882)- एपीआई लेवल 33 और इसके बाद के वर्शन पर फ़्लोटिंग विंडो से बचने के लिए,
Modifier.preferKeepClear()जोड़ें, ताकि इसे कंपोज़ेबल के तौर पर मार्क किया जा सके. (Ib51d5, b/297260115) ScrollViewऔरRecyclerViewजैसे व्यू कॉम्पोनेंट में फ़्लिंग की वेलोसिटी,ViewConfiguration.ScaledMaximumFlingVelocityपर सेट होती है. Compose में अबmaximumFlingVelocityका अपना वर्शन शामिल है, जो अबDraggableपर लागू होता है. (Ibf974)- इस्तेमाल में न रहने वाले
PagerऔरPagerStateओवरलोड हटा दिए गए हैं. (Iea07e) compose.foundationमेंBasicTooltipBoxको जोड़ा गया है. साथ ही,PlainTooltipBoxऔरRichTooltipBoxको अपडेट किया गया है, ताकि नएPlainTooltipऔरRichTooltipकंपोज़ेबल के साथTooltipBoxका इस्तेमाल किया जा सके. (I79e1d)
वर्शन 1.6.0-alpha04
23 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लाइफ़साइकल मैनेज करने और सबकंपोज़िशन का दोबारा इस्तेमाल करने के लिए,
ReusableCompositionइंटरफ़ेस जोड़ा गया. (I812d1, b/252846775) Modifier.focusGroupको स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I7ffa3)BasicTextField2के लिए ऐसे ओवरलोड जोड़ें जो न बदली जा सकने वाली वैल्यू और उस वैल्यू को बदलने के लिए कॉलबैक स्वीकार करते हैं. यह ठीक उसी तरह काम करता है जिस तरह मौजूदाBasicTextFieldएपीआई काम करता है. (I3f2b8)GridItemSpan::currentLineSpanअब एक स्टेबल एपीआई है. (Icc29c)contentDescriptionको स्वीकार करने वाला कैनवस अब एक स्टेबल एपीआई है. (Ib3d29)ScrollStateमेंviewportSizeको पेश किया गया है. यहScrollStateका इस्तेमाल करने वाले कॉम्पोनेंट केviewPortसाइज़ के बारे में जानने का एक तरीका है. (I8b85a, b/283102682)- उस समस्या को ठीक किया गया है जिसमें Pager में प्रीफ़ेचिंग, Views में प्रीफ़ेचिंग से मेल नहीं खाती थी. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)अब स्टेबल हो गया है.Deprecated Modifier.consumedWindowInsetsएपीआई को अब हटा दिया गया है. इसके बजाय,Modifier.consumeWindowInsetsका इस्तेमाल करें. (Id72bb)
वर्शन 1.6.0-alpha03
9 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03 रिलीज़ हो गया है. वर्शन 1.6.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyLayoutका ओवरलोड जोड़ा गया है. यहLazyLayoutItemProviderका लैम्ब्डा स्वीकार करता है, न कि पहले की तरह कोई सामान्य ऑब्जेक्ट. पिछला ओवरलोड बंद कर दिया गया है. (I42a5a)privateImeOptions(Idb772) को कॉन्फ़िगर करने की सुविधा जोड़ी गई
गड़बड़ियां ठीक की गईं
readOnlyकी वैल्यू सही होने पर, कीबोर्ड दिखाने वाले टेक्स्ट फ़ील्ड और उनमें बदलाव करने की सुविधा से जुड़ी समस्या ठीक की गई. इसके अलावा, फ़ोकस किए जाने के दौरानreadOnlyको सही से गलत पर बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)
वर्शन 1.6.0-alpha02
26 जुलाई, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02 रिलीज़ हो गया है. वर्शन 1.6.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Pagerमें मेज़रमेंट पास होने के बाद इकट्ठा की गई जानकारी के साथPagerLayoutInfoको लॉन्च किया गया. साथ ही,PageInfoको भी पेश किया गया है. यहPagerमें मेज़र किए गए किसी पेज के बारे में जानकारी देता है. (Iad003, b/283098900)- कंपोज़ेबल में इस्तेमाल किए जा सकने वाले इनपुट तय करने के लिए अतिरिक्त एनोटेशन (I51109)
- टेस्ट में फ़ोकस करने का अनुरोध करने के लिए,
SemanticsNodeInteraction.requestFocusको ज़्यादा सुविधाजनक और आसानी से ढूंढने वाले तरीके के तौर पर जोड़ा गया है. (Ie8722) PlatformTextInput*एपीआई को पूरी तरह से फिर से डिज़ाइन किया गया है. (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardControllerऔरLocalSoftwareKeyboardControllerअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.LocalSoftwareKeyboardControllerअब एक मान्यCompositionLocalभी है. (I4c364)Modifier.transformableअबcanPanपैरामीटर में पैन डेल्टा उपलब्ध कराता है. इससे पैन की दिशा का पता लगाने में मदद मिलती है, ताकि इसे अनुमति दी जा सके या अनुमति न दी जा सके. (I692aa, b/266829800)- सुपरक्लास
AbstractComposeViewको बढ़ाने के लिए, मॉडिफ़ायरconsumeWindowInsetsको अपडेट करता है (Iacd74, b/269479941)
वर्शन 1.6.0-alpha01
21 जून, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01 रिलीज़ हो गया है. वर्शन 1.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Foundation में एक नया
AnchoredDraggableएपीआई लॉन्च किया गया है. इसका इस्तेमाल ऐसे कॉम्पोनेंट बनाने के लिए किया जा सकता है जिन्हें अलग-अलग स्थितियों के बीच ड्रैग किया जा सकता है. जैसे, बॉटम शीट वाले मोडल. यह एपीआई, Material केSwipeableएपीआई की जगह लेगा. (I4a2ed)
एपीआई में हुए बदलाव
InputConnection#requestCursorUpdates(I0c69b)- कस्टम ऐनिमेशन स्पेसिफ़िकेशन की अनुमति देने के लिए,
scrollAnimationSpecको जोड़ा गया.BringIntoViewCalculatorकोBringIntoViewScrollerमें अपडेट किया गया. (Idb741) ResourceResolutionExceptionटाइप जोड़ें, ताकि लोड न हो पाने वाली बिटमैप ऐसेट के पाथ की जानकारी के साथ, लोड करने की कोशिश के दौरान थ्रो किए गए थ्रोएबल को रैप किया जा सके. (I19f44, b/230166331, b/278424788)- टेक्स्ट का अनुवाद करने की सुविधा के लिए, सिमैंटिक्स प्रॉपर्टी और कार्रवाइयां जोड़ी गईं. (I4a6bc)
BringIntoViewCalculatorAPI लॉन्च किया गया है. इसका इस्तेमाल करके, यह तय किया जा सकता है किScrollableजैसे कॉम्पोनेंट,bringIntoViewअनुरोधों का जवाब कैसे दें. स्क्रोल किए जा सकने वाले कॉन्टेंट के ओवरलोड को बदलकर,BringIntoViewCalculatorके इंस्टेंस को स्वीकार करने का विकल्प जोड़ा गया. (Iaf5af)
गड़बड़ियां ठीक की गईं
- अगर आपने कंपोज़िशन में
MutableInteractionSourceबनाया है, तो आपको चेतावनी देने के लिए लिंट चेक जोड़ा गया है. यह लिंट चेक, म्यूटेबल स्टेट /Animatableबनाने के लिए किए जाने वाले लिंट चेक की तरह ही काम करता है. (I5daae) - माउस से चुनने की सुविधा जोड़ी गई. टच करके चुने गए टेक्स्ट को शब्द के हिसाब से बढ़ाया जा सकता है और वर्ण के हिसाब से कम किया जा सकता है. (Ic0c6c, b/180639271)
FocusTargetModifierNodeइंटरफ़ेस जोड़ा गया है. इसका इस्तेमाल करके, कस्टमFocusTargetबनाया जा सकता है. (I9790e)
संस्करण 1.5
वर्शन 1.5.4
18 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.5.4 रिलीज़ हो गया है. वर्शन 1.5.4 में ये बदलाव शामिल हैं.
वर्शन 1.5.3
4 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.5.3 रिलीज़ हो गया है. इस वर्शन में कोई बदलाव नहीं किया गया है.
संस्करण 1.5.2
27 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.5.2 रिलीज़ हो गया है. वर्शन 1.5.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, सिमैंटिक अमान्य होने पर कुछ मामलों में क्रैश हो जाता था.
संस्करण 1.5.1
6 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.5.1 रिलीज़ हो गया है. वर्शन 1.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
readOnlyकी वैल्यू सही होने पर, कीबोर्ड दिखाने वाले टेक्स्ट फ़ील्ड और उनमें बदलाव करने की सुविधा से जुड़ी समस्या ठीक की गई. इसके अलावा, फ़ोकस किए जाने के दौरानreadOnlyको सही से गलत पर बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)
वर्शन 1.5.0
9 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.5.0 रिलीज़ हो गया है. वर्शन 1.5.0 में ये बदलाव शामिल हैं.
1.4.0 के बाद हुए ज़रूरी बदलाव
- कई बुनियादी मॉडिफ़ायर,
Modifier.Nodeएपीआई पर माइग्रेट कर दिए गए हैं. इनमेंModifier.clickable,Modifier.draggable,Modifier.scrollable, लेआउट मॉडिफ़ायर वगैरह शामिल हैं. इससे, शुरुआती कंपोज़िशन पर पड़ने वाला ओवरहेड कम हो गया है. - पेजर की स्थिरता में सुधार किए गए हैं. कई बग ठीक किए गए हैं.
pageCountपैरामीटर अब पेजर में नहीं, बल्किPagerStateमें मौजूद है
वर्शन 1.5.0-rc01
26 जुलाई, 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
प्रिमिटिव के लिए,
mutableStateOf()कॉल को उनके खास टाइप में माइग्रेट करने का सुझाव देने के लिए, जांच का विकल्प उपलब्ध है. इसका लिंट आईडीAutoboxingStateCreationहै. पहले, यह जांच सभी प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती थी. Android Studio के एडिटर और आपके प्रोजेक्ट के लिंट आउटपुट में इस चेतावनी को देखने के लिए, इसकी गंभीरता को सूचना से बदलकर चेतावनी (या इससे ज़्यादा) पर सेट करें. इसके लिए, अपने मॉड्यूल केbuild.gradleयाbuild.gradle.ktsकॉन्फ़िगरेशन मेंwarning "AutoboxingStateCreation"को इस तरह से एलान करें (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
वर्शन 1.5.0-beta03
28 जून, 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03 रिलीज़ हो गया है. वर्शन 1.5.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-beta02
7 जून, 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02 रिलीज़ हो गया है. वर्शन 1.5.0-beta02 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-beta01
24 मई, 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- धड़कन की दर और हर दिन चले गए कदमों की जानकारी देने के लिए,
PlatformDataProviderलागू करें.SensorGatewayइंटरफ़ेस को सार्वजनिक एपीआई से हटा दिया गया है. (I55b84)
गड़बड़ियां ठीक की गईं
- लेज़ी लिस्ट/ग्रिड वगैरह के मेज़रमेंट के दौरान, एट्रिब्यूशन कम करें (Iaf9e2)
- स्नैपशॉट लागू करते समय कम किए गए असाइनमेंट (I65c09)
- स्प्रिंग ऐनिमेशन से हटाए गए असाइनमेंट (Ie9431)
TextLayout(I0fd11) से बजट का बंटवारा हटाया गया- पॉइंटर की वेलोसिटी ट्रैकिंग में कई ऐसेट के लिए किए गए असाइनमेंट हटाए गए (I26bae)
वर्शन 1.5.0-alpha04
10 मई, 2023
androidx.compose.foundation:foundation:1.5.0-alpha04 और androidx.compose.foundation:foundation-layout:1.5.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया
TextStyle.merge(...)जोड़ा गया. (Iad234, b/246961787) SnapLayoutInfoProviderको लॉन्च किया गया है, जिसका इस्तेमालLazyGridStateके साथ किया जा सकता है. (I92134, b/269237141, b/260914964)- लेज़ी स्टैगर्ड ग्रिड के आइटम स्कोप के लिए, एक्सपेरिमेंटल
Modifier.animateItemPlacement()जोड़ा गया. ऑटोमेशन की मदद से, आइटम की पोज़िशन बदलने या उन्हें फिर से क्रम में लगाने वाले ऐनिमेशन बनाने के लिए, इस सुविधा का इस्तेमाल किया जा सकता है. (I4b62d, b/257034719) GridCells.FixedSizeको स्टेबल वर्शन पर प्रमोट करें.FixedSizeएकLazyGridको तय करता है. इसमें हर सेल, क्रॉस ऐक्सिस पर सटीक साइज़ लेता है. साथ ही, बाकी स्पेस को क्रॉस ऐक्सिस अरेंजमेंट के हिसाब से डिस्ट्रिब्यूट किया जाता है. (I8542f)- पेजर के लिए, रिसीवर स्कोप
PagerScopeजोड़ा गया है. साथ ही, दिए गए पेज ऑफ़सेट की गिनती करने के लिए, यूटिलिटी फ़ंक्शन जोड़ा गया है. (If2577) - स्नैप फ़्लिंग का व्यवहार बनाते समय
snapPositionalThresholdको शामिल करें. इस पैरामीटर का इस्तेमाल करके, Pager में शॉर्ट स्नैपिंग के लिए पोज़िशनल थ्रेशोल्ड तय करें. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBoundsकोcalculateSnappingOffsetसे बदला गया. इस नए तरीके में, हम सिर्फ़ स्नैप करने के लिए अगले ऑफ़सेट का अनुरोध करते हैं. बाउंड्री की गिनती, लागू करने के लेवल पर की जानी चाहिए. ऐसा इसलिए, क्योंकि यह इस बात पर निर्भर करता है कि स्नैपिंग कैसे होनी चाहिए. (I923a4)LazyStaggeredGridएपीआई को स्टेबल वर्शन में प्रमोट कर दिया गया है. (I633a5)Horizontal/VerticalPagerसेpageCountको हटाएं. इसे राज्य बनाते समय उपलब्ध कराया जाना चाहिए.pageCountको स्वीकार करने के लिए,PagerStateऔरrememberPagerStateको अपडेट किया गया. (Ieb52d, b/266965072)Horizontal/VerticalPagerसेpageCountको हटाएं. इसे राज्य बनाते समय उपलब्ध कराया जाना चाहिए.pageCountको स्वीकार करने के लिए,PagerStateऔरrememberPagerStateको अपडेट किया गया. (Ifa3cb, b/266965072)- पेजर के
SnapFlingBehaviorमेंshortSnapVelocityThresholdको शामिल करें. (I7379e, b/275579012) FlowRowScopeऔरFlowColumnScopeजोड़ता है. (I54fe2)
गड़बड़ियां ठीक की गईं
- टेक्स्ट के सिमैंटिक के बारे में जानकारी पाने के लिए किए गए कॉल अब क्रैश नहीं होंगे. ऐसा तब होगा, जब कंस्ट्रेंट में
minWidthऔरminHeightमौजूद हों. (Ibd072) - उस रिग्रेशन को ठीक किया गया है जिसमें
Dialogकंपोज़ेबल से नहीं बनाए गए डायलॉग में मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था. (I82551, b/262140644)
वर्शन 1.5.0-alpha03
19 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha03 और androidx.compose.foundation:foundation-layout:1.5.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha03 में ये बदलाव शामिल हैं.
इस रिलीज़ से, Compose के लिए नया टेक्स्ट रेंडरिंग स्टैक चालू हो जाता है. नया स्टैक, परफ़ॉर्मेंस के लिए ऑप्टिमाइज़ किया गया है. आपको इसमें कोई बदलाव नहीं दिखेगा.
अगर आपको रेंडर किए गए टेक्स्ट में बदलाव दिखते हैं, तो NewTextRendering1_5 = false सेट करके डीबग किया जा सकता है. इससे यह पुष्टि की जा सकती है कि दोनों वर्शन में क्या अंतर है. इसे सेट करने पर, लेआउट को फिर से कंपोज़ करना होगा. अगर आपको कोई अंतर दिखता है, तो कृपया उसे गड़बड़ी के तौर पर सबमिट करें.
डीबग फ़्लैग को 1.5 beta01 रिलीज़ होने से पहले हटा दिया जाएगा.(Iada23, b/246960758)
एपीआई में हुए बदलाव
FlowColumn/FlowRowको टेक्स्ट के साथ इनलाइन करें. (Idab37)
वर्शन 1.5.0-alpha02
5 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha02 और androidx.compose.foundation:foundation-layout:1.5.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyGridमें तय साइज़ वाली सेल के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित करने की सुविधा भी जोड़ी गई है. (I83ed9, b/235121277, b/267942510)LazyStaggeredGridमें तय साइज़ वाली लेन के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित किया गया है. (I7d519)AnnotatedStringमें मौजूदUrlAnnotationको अबTalkBackजैसी सुलभता सेवाओं के ज़रिए खोला जा सकता है. (If4d82, b/253292081)- टेक्स्ट फ़ील्ड के लिए,
InsertTextAtCursorसिमैंटिक्स ऐक्शन जोड़ा गया. (I11ed5) - टेक्स्ट से जुड़ी टेस्ट कार्रवाइयों (जैसे,
performTextInput) के लिए, अब सीधे तौर पर फ़ोकस करने का अनुरोध किया जाएगा. इसके लिए, फ़ील्ड पर क्लिक करने के बजाय, सिमैंटिक्स ऐक्शन का इस्तेमाल किया जाएगा. (I6ed05) FlowRowमेंverticalArrangementऔरFlowColumnमेंhorizontalArrangementका इस्तेमाल करके, क्रॉस ऐक्सिस स्पेसिंग/अरेंजमेंट के लिए सहायता जोड़ी गई है. हमFlowRow/FlowColumnमें टॉप-लेवलverticalAlignmentऔरhorizontalAlignmentको भी हटा देते हैं. डेवलपर, इसके बजायModifier.alignका इस्तेमाल कर सकते हैं. इससेverticalAlignmentऔरverticalArrangementके नाम रखने के नियमों के बीच भ्रम कम हो जाता है. (I87b60, b/268365538)
वर्शन 1.5.0-alpha01
22 मार्च, 2023
androidx.compose.foundation:foundation:1.5.0-alpha01 और androidx.compose.foundation:foundation-layout:1.5.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नए मॉडिफ़ायर सिस्टम का इस्तेमाल करने के लिए, टेक्स्ट और
BasicTextको फिर से फ़ैक्टर किया गया है. इससे कई मामलों में, परफ़ॉर्मेंस में काफ़ी सुधार होता है. कोई भी बदलाव नहीं दिखना चाहिए. (If1d17, b/246961435) - टेक्स्ट एडिटर नोड पर IME ऐक्शन शुरू करने के लिए,
PerformImeActionसिमैंटिक्स ऐक्शन जोड़ा गया. (Ic606f, b/269633506)
गड़बड़ियां ठीक की गईं
Modifier.hoverableके इंटरनल को अपडेट किया गया.hoverableमॉडिफ़ायर को सिर्फ़ तब इंस्पेक्टर में दिखाया जाएगा, जब इसे चालू किया गया हो. (I82103)
वर्शन 1.4
वर्शन 1.4.3
3 मई, 2023
androidx.compose.foundation:foundation:1.4.3 और androidx.compose.foundation:foundation-layout:1.4.3 को बिना किसी बदलाव के रिलीज़ किया गया है. हालांकि, इनके वर्शन में बदलाव किया गया है.
वर्शन 1.4.2
19 अप्रैल, 2023
androidx.compose.foundation:foundation:1.4.2 और androidx.compose.foundation:foundation-layout:1.4.2 रिलीज़ हो गए हैं. वर्शन 1.4.2 में ये बदलाव शामिल हैं.
वर्शन 1.4.1
5 अप्रैल, 2023
androidx.compose.foundation:foundation:1.4.1 और androidx.compose.foundation:foundation-layout:1.4.1 रिलीज़ हो गए हैं. वर्शन 1.4.1 में ये बदलाव शामिल हैं.
वर्शन 1.4.0
22 मार्च, 2023
androidx.compose.foundation:foundation:1.4.0 और androidx.compose.foundation:foundation-layout:1.4.0 रिलीज़ हो गए हैं. वर्शन 1.4.0 में ये बदलाव शामिल हैं.
1.3.0 के बाद हुए अहम बदलाव
TextऔरTextFieldके साथ-साथ निचले लेवल के पैराग्राफ़ में, इमोजी के साथ काम करने वाले इंटिग्रेशन को जोड़ा गया. emojicompat कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.EmojiCompatकोPlatformParagraphStyleका इस्तेमाल करके, किसी खास टेक्स्ट पर कॉन्फ़िगर किया जा सकता है.LazyStaggeredGrid(I28252) में पूरी लाइन स्पैन करने की सुविधा जोड़ी गईClickableText(I6938f) में एक्सपेरिमेंट के तौर परonHoverजोड़ा जा रहा हैrunComposeUiTestफ़ंक्शन औरcreate*ComposeRuleफ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर शुरू किए गए नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContextपैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भीLaunchedEffectऔरrememberCoroutineScope()कॉल के लिए किया जाएगा. (I10614, b/265177763)FlowRowऔरFlowColumnअब@ExperimentalFoundationApiके तौर पर उपलब्ध हैं. इनकी मदद से, कॉम्पोनेंट को ज़्यादा फ़्लेक्सिबल तरीके से लाइन और कॉलम के हिसाब से लेआउट किया जा सकता है. अगर मुख्य ऐक्सिस पर जगह नहीं होती है, तो कॉम्पोनेंट नई लाइन में चले जाएंगे. (I3a7b2)Modifier.basicMarquee()को एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया है. इसका इस्तेमाल, स्क्रोलिंग मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाने के लिए किया जाता है. (I2df44, b/139321650)
वर्शन 1.4.0-rc01
8 मार्च, 2023
androidx.compose.foundation:foundation:1.4.0-rc01 और androidx.compose.foundation:foundation-layout:1.4.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.4.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल
PlatformTextInputAdapterएपीआई लॉन्च किया गया है. यह सीधे तौर पर प्लैटफ़ॉर्म एपीआई से कम्यूनिकेट करता है. (I58df4) LazyStaggeredGridमें, लेआउट को उलटा करने की सुविधा जोड़ी गई. (I3ef4a)
गड़बड़ियां ठीक की गईं
BasicTextFieldकीSetTextसिमैंटिक्स ऐक्शन, अब टेक्स्ट बफ़र को अपडेट करेगा. इसके लिए, वह उसी कोड पाथ का इस्तेमाल करेगा जिसका इस्तेमाल IME अपडेट और टेस्टिंग फ़ंक्शन (जैसे किperformTextReplacement) करते हैं.- टेक्स्ट की जांच करने वाले फ़ंक्शन
performTextClearance,performTextReplacement, औरperformTextSelectionअबSemanticsActionsका इस्तेमाल करते हैं. (I0807d, b/269633168, b/269624358)
वर्शन 1.4.0-beta02
22 फ़रवरी, 2023
androidx.compose.foundation:foundation:1.4.0-beta02 और androidx.compose.foundation:foundation-layout:1.4.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.4.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक नया
Modifier.Node.onReset()कॉलबैक जोड़ा गया है. इससे, कुछ लोकल स्टेट को रीसेट किया जा सकता है. ऐसा तब किया जाता है, जबLayoutका फिर से इस्तेमाल किया जाता है. उदाहरण के लिए,LazyColumnके आइटम के तौर पर. फ़ोकस की गई स्थिति को ठीक से रीसेट करने के लिए,FocusTargetModifierNodeको ठीक किया गया है. (I65495, b/265201972) - Canvas पर टेक्स्ट बनाते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम इस्तेमाल करने के लिए,
DrawScope.drawText,Paragraph.paint, औरMultiParagraph.paintतरीकों मेंBlendModeपैरामीटर जोड़ा गया. (I57508) modifierElementOf()API को हटा दिया गया है. इसके बजाय, कृपया सीधेModifierNodeElementसे एक्सटेंड करें. (Ie6d21)
गड़बड़ियां ठीक की गईं
- चुने गए हिस्से के हैंडल को अडजस्ट करने पर, अब किसी वर्ण के कुछ हिस्से को नहीं चुना जा सकता. (Idedd1)
- खाली
TextFieldपर ctrl+backspace दबाने पर क्रैश होने की समस्या ठीक की गई (I0427f, b/244185537)
वर्शन 1.4.0-beta01
8 फ़रवरी, 2023
androidx.compose.foundation:foundation:1.4.0-beta01 और androidx.compose.foundation:foundation-layout:1.4.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.4.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- 1.3 वर्शन के बाद,
TextऔरTextFieldके साथ-साथ पैराग्राफ़ के निचले लेवल में इमोजी इंटिग्रेशन की सुविधा जोड़ी गई है. emojicompat कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है. EmojiCompatकोPlatformParagraphStyleका इस्तेमाल करके, किसी खास टेक्स्ट पर कॉन्फ़िगर किया जा सकता है.
एपीआई में हुए बदलाव
PinnableContainerएपीआई को लागू करने का सामान्य तरीका जोड़ा गया है. इसका इस्तेमाल सभीLazyLayoutsमें किया जाता है, ताकि कंपोज़िशन से बाहर निकलने वाले आइटम को बनाए रखा जा सके. हालांकि, उन्हें अब भी चालू रखने की ज़रूरत होती है. (If45a4)PinnableContainer.PinnedHandle.unpin()का नाम बदलकरrelease()कर दिया गया (I4667a)
बाहरी योगदान
LazyListLayoutInfo,LazyGridLayoutInfo, औरLazyStaggeredGridItemInfoमेंmainAxisItemSpacingप्रॉपर्टी जोड़ी गई (I52fad)
वर्शन 1.4.0-alpha05
25 जनवरी, 2023
androidx.compose.foundation:foundation:1.4.0-alpha05 और androidx.compose.foundation:foundation-layout:1.4.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
LazyStaggeredGridमें पूरी लाइन स्पैन करने की सुविधा जोड़ी गई (I28252)ClickableTextमें एक्सपेरिमेंट के तौर परonHoverजोड़ा गया (I6938f)runComposeUiTestफ़ंक्शन औरcreate*ComposeRuleफ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर शुरू किए गए नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContextपैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भीLaunchedEffectऔरrememberCoroutineScope()कॉल के लिए किया जाएगा. (I10614, b/265177763)
एपीआई में हुए बदलाव
OverscrollEffectके प्री/पोस्ट एपीआई को, 'डेकोरेटर'applyToScrollऔरapplyToFlingफ़ंक्शन में मर्ज करता है. नए एपीआई शेप के साथ ओवरस्क्रोल इफ़ेक्ट लागू करने के उदाहरणों के लिए, दस्तावेज़ में अपडेट किए गए सैंपल देखें. (I8a9c4, b/255554340)- इनलाइन/deprecated-hidden फ़ंक्शन के टाइप/nullability के बारे में ज़्यादा जानकारी (I24f91)
TextStyleमेंLineBreakऔरHyphensएपीआई को स्टेबल वर्शन में अपग्रेड कर दिया गया है. (Ic1e1d)
गड़बड़ियां ठीक की गईं
- अब ऐनिमेशन बंद होने पर भी, टेक्स्ट फ़ील्ड में कर्सर ब्लिंक करता रहेगा. (I95e70, b/265177763)
Modifier.basicMarqueeअब सिस्टम सेटिंग में ऐनिमेशन बंद होने पर भी ऐनिमेट होता है. (I23389, b/262298306, b/265177763)
बाहरी योगदान
TextInputSessionऔरTextInputServiceमें मौजूदnotifyFocusedRectतरीकों को फिर से बंद नहीं किया गया है. (I23a04, b/262648050)
वर्शन 1.4.0-alpha04
11 जनवरी, 2023
androidx.compose.foundation:foundation:1.4.0-alpha04 और androidx.compose.foundation:foundation-layout:1.4.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
FlowRowऔरFlowColumnअब@ExperimentalFoundationApiके तौर पर उपलब्ध हैं. इनकी मदद से, कॉम्पोनेंट को ज़्यादा फ़्लेक्सिबल तरीके से लाइन और कॉलम के हिसाब से लेआउट किया जा सकता है. अगर मुख्य ऐक्सिस पर जगह नहीं होती है, तो कॉम्पोनेंट नई लाइन में चले जाएंगे. (I3a7b2)Modifier.basicMarquee()को एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया है. इसका इस्तेमाल, स्क्रोलिंग मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाने के लिए किया जाता है. (I2df44, b/139321650)
एपीआई में हुए बदलाव
FocusRequesterModifierकोFocusRequesterNodeके पक्ष में बंद कर दिया गया है (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)AndroidFontकंस्ट्रक्टर के साथvariationSettingsअब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)PinnableContainerएपीआई को पेश किया गया है. इसे कंपोज़िशन लोकल के ज़रिए लेज़ी लिस्ट से फैलाया जाता है. इससे मौजूदा आइटम को पिन किया जा सकता है. इसका मतलब है कि स्क्रोल करके व्यू से हटाए जाने पर, ऐसे आइटम को हटाया नहीं जाएगा. उदाहरण के लिए,Modifier.focusable()इस तरीके से, फ़ोकस किए गए मौजूदा आइटम को पिन करेगा. (Ib8881, b/259274257, b/195049010)- स्क्रोल किए जा सकने वाले आइटम के
bringIntoViewRequestersऔर फ़ोकस किए जा सकने वाले आइटम के रिस्पॉन्स को फिर से लिखा गया है, ताकि इन कार्रवाइयों की जटिलता को बेहतर तरीके से मॉडल किया जा सके और ज़्यादा से ज़्यादा मुश्किल मामलों को हैंडल किया जा सके. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - बंद किए गए-छिपाए गए फ़ंक्शन के ज़्यादातर रिटर्न टाइप में null वैल्यू हो सकती है (Ibf7b0)
TextStyleमें एक्सपेरिमेंटलTextMotionजोड़ा गया है. इससे यह तय किया जा सकेगा कि टेक्स्ट कोStatic(default)या ऐनिमेशन के तौर पर दिखाया जाए. अगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जाना है, अनुवादित किया जाना है या घुमाया जाना है, तोTextMotion.Animatedका इस्तेमाल करें. (I24dd7)- Android प्लैटफ़ॉर्म के लिए फ़ोकस नेविगेशन के व्यवहार को ठीक करने के लिए
TextFieldFocusModifierजोड़ें (I00303) drawTextफ़ंक्शन मेंmaxSize: IntSizeआर्ग्युमेंट कोsize: Sizeसे बदल दिया गया है, ताकि यह अन्यDrawScopeफ़ंक्शन के साथ काम कर सके.sizeको डिफ़ॉल्ट रूप सेSize.Unspecifiedपर सेट किया जाता है. इससे, पिछले डिफ़ॉल्ट ऐक्शन और सेटिंग में कोई बदलाव नहीं होना चाहिए. (Icd27d)
गड़बड़ियां ठीक की गईं
- ज़्यादा नैचुरल फ़ील के लिए,
SnapFlingBehaviourमें स्नैपिंग फ़िज़िक्स में बदलाव किए गए हैं.
आम समस्या
androidx.compose.foundation:1.4.0-alpha03सेandroidx.compose.foundation:1.4.0-alpha04पर अपडेट करते समय, आपकोjava.lang.NoSuchFieldErrorगड़बड़ी दिख सकती है. समस्या की शिकायत यहां की गई थी. समस्या को ठीक करने के लिए, एक समाधान सबमिट किया गया है. यह Compose के अगले अपडेट में उपलब्ध होगा. इस समस्या को हल करने के लिए,androidx.compose.materialऔरandroidx.compose.material3लाइब्रेरी को नए वर्शन(1.1.0-alpha04) पर अपडेट करें याandroidx.compose.foundationको 1.4.0-alpha03 पर डाउनग्रेड करें.
वर्शन 1.4.0-alpha03
7 दिसंबर, 2022
androidx.compose.foundation:foundation:1.4.0-alpha03 और androidx.compose.foundation:foundation-layout:1.4.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose के नियम का इस्तेमाल करके की जाने वाली यूआई जांचों में,
withFrameNanosकॉलबैक के दौरान फिर से शुरू किए गए कंटीन्यूएशन तब तक डिस्पैच नहीं किए जाएंगे, जब तक सभी फ़्रेम कॉलबैक पूरे नहीं हो जाते. ऐसा सामान्य तौर पर कंपोज़ करने के तरीके में भी होता है. हालांकि, पुरानी सेटिंग पर आधारित टेस्ट फ़ेल हो सकते हैं. इसका असर सिर्फ़ उन कोड पर पड़ना चाहिए जो सीधे तौर परwithFrameNanosयाwithFrameMillisको कॉल करते हैं. साथ ही, उन फ़ंक्शन को पास किए गए कॉलबैक के बाहर लॉजिक होता है जिसे कॉलबैक के अंदर ले जाने की ज़रूरत हो सकती है. उदाहरणों के लिए, इस सीएल में ऐनिमेशन टेस्ट में किए गए बदलाव देखें. TestMonotonicFrameClockकंस्ट्रक्टर और फ़ैक्ट्री फ़ंक्शन में,onPerformTraversals: (Long) -> Unitपैरामीटर जोड़ा गया है. इसका इस्तेमाल,withFrameNanosकॉलबैक के बाद और कॉलर की को-रूटीन फिर से शुरू होने से पहले कोड चलाने के लिए किया जाता है. (Idb413, b/254115946, b/222093277, b/255802670)- पेज पर सुलभता से जुड़ी कार्रवाइयों के बारे में जानकारी दी गई है:
PageUp,PageDown,PageLeft,PageRight. ध्यान दें कि ये सिर्फ़ API 29 से उपलब्ध हैं. (Ida4ab) HorizontalPagerऔरVerticalPagerको पेश किया गया है. इनकी मदद से, कंपोज़ेबल को पेज के तौर पर दिखाया जा सकता है. पेजर को कंट्रोल करने के लिएPagerStateको पेश किया गया है. साथ ही, पेजर की मौजूदा स्थिति के बारे में क्वेरी की जा सकती है.PageSizeको पेश किया गया है. यह Pager के पेज के साइज़ को कंट्रोल करने का एक तरीका है. इसका इस्तेमाल, Pager जैसे कैरसेल बनाने के लिए किया जा सकता है. हमनेPagerSnapDistanceको पेश किया है. इससे यह कंट्रोल किया जा सकेगा कि Pager के फ़्लिंग बिहेवियर में स्नैपिंग कैसे काम करेगी. (I01120)SnapFlingBehavior.performFlingमें ओवरलोड की सुविधा जोड़ी गई है, ताकि यह समझने में मदद मिल सके कि फ़्लिंग कहां रुकेगी. (I569f6)OverscrollEffect#isEnabledको हटा दिया गया है. इस फ़्लैग को याद रखने और सेट करने के बजाय, उन मामलों में ओवरस्क्रोल इफ़ेक्ट को इवेंट डिसपैच न करें जहां आपको ओवरस्क्रोल नहीं दिखाना है. उदाहरण के लिए, अगरScrollableState#canScrollForward/backwardदोनों 'गलत है' वैल्यू दिखाते हैं. (I1a4b0, b/255554340, b/255557085)ScrollableState#canScrollForwardऔरScrollableState#canScrollBackwardको जोड़ा गया है, ताकि यह क्वेरी की जा सके कि क्याScrollableStateमें किसी भी दिशा में स्क्रोल करने की सुविधा है. इससे यह पता चलता है कि क्या यह अपनी रेंज के कम से कम / ज़्यादा से ज़्यादा मान पर है. यह डिफ़ॉल्ट रूप से 'सही है' पर सेट होती है, ताकिScrollableStateके मौजूदा वर्शन के साथ काम कर सके. उपयोगकर्ता इसका इस्तेमाल करके, यह दिखा सकते हैं कि अब भी स्क्रोल करने की जगह है. इसका इस्तेमाल, उनScrollableStatesको डेल्टा भेजने से बचने के लिए भी किया जा सकता है जिनमें किसी खास दिशा में स्क्रोल करने की जगह नहीं है. इससे गैर-ज़रूरी काम को कम किया जा सकता है. (Idf1a0, b/255557085)- स्क्रोल करने की जानकारी के लिए, Modifier API जोड़ा गया. (I2ba9d, b/203141462)
- इस कुकी का इस्तेमाल
Clickableमें किया जाता है. इससे प्रेस इंटरैक्शन को सही तरीके से डिले किया जा सकता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं. Clickablesके अंदर इस्तेमाल किए जाने पर,Clickablesके रिपल इफ़ेक्ट को सही तरीके से डिले न करने की समस्या को ठीक किया गया.Scrollable ViewGroup- ड्रॉअर और शीट को अपडेट किया गया है, ताकि अगर जेस्चर स्क्रोल इवेंट बन सकते हैं, तो प्रेस में सही तरीके से देरी हो.
snapStepSizeमें मौजूद अन्य तरीकों के हिसाब से,snapStepSizeके नाम को अपडेट किया गया है.SnapLayoutInfoProvider(Ife67c)ComposeमेंEmojiCompatजोड़ा गया (Ibf6f9, b/139326806)consumedWindowInsets()का नाम बदलकरconsumeWindowInsets()औरwithConsumedWindowInsets()का नाम बदलकरonConsumedWindowInsetsChanged()कर दिया गया है. साथ ही, मॉडिफ़ायर को सार्वजनिक कर दिया गया है. (Ie44e1)
गड़बड़ियां ठीक की गईं
Modifier.animateItemPlacement()और लेज़ी ग्रिड के साथ क्रैश होने की समस्या ठीक कर दी गई है. ऐसा कुछ मामलों में तब हो रहा था, जब नए आइटम की संख्या पिछले आइटम की संख्या से कम होती है. (I0bcac, b/253195989)
वर्शन 1.4.0-alpha02
9 नवंबर, 2022
androidx.compose.foundation:foundation:1.4.0-alpha02 और androidx.compose.foundation:foundation-layout:1.4.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
awaitFirstDownऔरwaitForUpOrCancellationअब ज़्यादा फ़ायदा पाने के लिए,PointerEventPassस्वीकार करते हैं. (I7579a, b/212091796)- Lazy* API से
beyondBoundCountAPI को पहले जैसा करें (I12197) - लेज़ी एपीआई में पैरामीटर जोड़ा गया, ताकि व्यूपोर्ट से बाहर मौजूद आइटम को कंपोज़ और प्लेस किया जा सके (I69e89, b/172029355)
BasicTextऔरBasicTextFieldमेंminLinesपैरामीटर जोड़ा गया. इससे, लाइनों की संख्या (I24294, b/122476634) के हिसाब से, इन कंपोज़ेबल की कम से कम ऊंचाई सेट की जा सकती है
वर्शन 1.4.0-alpha01
24 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.4.0-alpha01 और androidx.compose.foundation:foundation-layout:1.4.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- जेस्चर डिटेक्टर्स के लिए, एक नया तरीका
awaitEachGesture()जोड़ा गया. यहforEachGesture()की तरह काम करता है. हालांकि, जेस्चर पर लूप पूरी तरह सेAwaitPointerEventScopeके अंदर काम करता है, ताकि इवेंट को दोहराने के दौरान कोई इवेंट न छूटे. forEachGesture()के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,awaitEachGesture()का इस्तेमाल किया जा सकता है. ऐसा इसलिए किया गया है, क्योंकिforEachGesture()से इवेंट के बीच में होने वाले जेस्चर का पता नहीं चलता. (Iffc3f, b/251260206)- ऐनिमेशन की प्रोग्रेस का पता लगाने और ऐनिमेशन पूरा होने के बाद IME कहां होगा, यह जानने के लिए
WindowInsets.imeAnimationSource औरWindowInsets.imeAnimationTargetजोड़ा गया. (I356f1, b/217770337)
वर्शन 1.3
वर्शन 1.3.1
9 नवंबर, 2022
androidx.compose.foundation:foundation:1.3.1 और androidx.compose.foundation:foundation-layout:1.3.1 रिलीज़ हो गए हैं. वर्शन 1.3.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BeyondBoundsLayoutमें परफ़ॉर्मेंस से जुड़ी समस्या को ठीक किया गया (aosp/2255266)ContentInViewModifierतब तक लेआउट के कोऑर्डिनेट नहीं पढ़ेगा, जब तक इसे अटैच नहीं किया जाता (aosp/2241316)
वर्शन 1.3.0
24 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.3.0 और androidx.compose.foundation:foundation-layout:1.3.0 रिलीज़ हो गए हैं. वर्शन 1.3.0 में ये बदलाव शामिल हैं.
1.2.0 के बाद हुए ज़रूरी बदलाव
LazyVerticalStaggeredGridऔरLazyHorizontalStaggeredGridके एक्सपेरिमेंटल वर्शन लॉन्च किए गए.SnapFlingBehavior,rememberSnapFlingBehavior, और इनसे जुड़े अन्य एपीआई को एक्सपेरिमेंट के तौर पर जोड़ा गया था.Modifier.clickable,Modifier.toggleable, औरModifier.selectableपर अब कीबोर्ड या रिमोट कंट्रोल के डी-पैड से क्लिक करने पर, रिपल इफ़ेक्ट दिखता है.
वर्शन 1.3.0-rc01
5 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.3.0-rc01 और androidx.compose.foundation:foundation-layout:1.3.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
lowVelocityAnimationSpecको पेश किया गया. इसका इस्तेमाल अप्रोच स्टेप में तब किया जाता है, जब फ़्लिंग की वेलोसिटी कम होने के लिए काफ़ी नहीं होती. (Iaeb27)- टेक्स्ट में अपने-आप हाइफ़न लगने की सुविधा के लिए, एक्सपेरिमेंट के तौर पर नया API Hyphens जोड़ा गया (Iaa869)
वर्शन 1.3.0-beta03
21 सितंबर, 2022
androidx.compose.foundation:foundation:1.3.0-beta03 और androidx.compose.foundation:foundation-layout:1.3.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट में लाइन तोड़ने की सुविधा को पसंद के मुताबिक बनाने के विकल्प जोड़े गए. (I86907)
BringIntoViewResponderअब अनुरोध को प्रोसेस करते समय, अनुरोध की सबसे नई सीमाएं पा सकते हैं. (If86a5, b/241591211)- एक्सपेरिमेंट के तौर पर उपलब्ध
Staggered Grid(I10b82) में, आइटम के बीच की दूरी के लिए सहायता उपलब्ध कराई गई - एक्सपेरिमेंट के तौर पर उपलब्ध
Staggered Gridमें कॉन्टेंट पैडिंग की सुविधा जोड़ी गई (I342ea) - कम से कम चौड़ाई की पाबंदियों को लागू करने के लिए,
TextMeasurer.measureतरीके मेंsize:IntSizeआर्ग्युमेंट कोconstraints: Constraintsसे बदल दिया गया है. (I37530, b/242707525) windowInsetsPaddingके बाहर इस्तेमाल करने के लिए,WindowInsetsका इस्तेमाल करकेModifier.withConsumedWindowInsets()को जोड़ा गया.- बिना दोबारा कंपोज़ किए
WindowInsetsको आसानी से बदलने की अनुमति देने के लिए,MutableWindowInsetsजोड़ा गया. (I7fd28, b/237019262, b/243119659)
वर्शन 1.3.0-beta02
7 सितंबर, 2022
androidx.compose.foundation:foundation:1.3.0-beta02 और androidx.compose.foundation:foundation-layout:1.3.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध
StaggeredGridका शुरुआती वर्शन (Ia48be) FocusDirection.InऔरFocusDirection.Outका नाम बदलकरFocusDirection.EnterऔरFocusDirection.Exitकिया गया (Ia4262, b/183746982)rememberSnapFlingBehaviorओवरलोड की सुविधा जोड़ी गई है. इससेLazyListsमें स्नैपिंग की सुविधा को तुरंत चालू किया जा सकता है. (Ifb48a)snapFlingBehaviorफ़ैक्ट्री को कंक्रीटSnapFlingBehaviorक्लास से बदल दिया गया है. एपीआई का इस्तेमाल करने वाले लोगों के लिए, Dp<->Px कन्वर्ज़न को आसान बनाने के लिए, Density में स्कोप किए गएSnapLayoutInfoProviderतरीके. (I54a11)LazyLayoutMeasureScope.measureको अपडेट किया गया है, ताकि प्लेस किए जा सकने वाले आइटम की सूची दिखाई जा सके. साथ ही, दिखाई गई वैल्यू में बदलाव नहीं किया जा सकता. (I48b7c)SnapLayoutInfoProviderको पेश किया गया है. यहLazyListStateलेता है, ताकिSnapLayoutInfoProviderका एक इंस्टेंस बनाया जा सके. इसका इस्तेमाल,LazyListsके लिए स्नैपFlingBehaviorको चालू करने के लिए किया जा सकता है. (I2dd10)
गड़बड़ियां ठीक की गईं
- अन्य await फ़ंक्शन (I646e6) से मेल खाने के लिए,
AwaitPointerEventScope#awaitLongPressOrCancellationको फिर से फ़ैक्टर करता है
वर्शन 1.3.0-beta01
24 अगस्त, 2022
androidx.compose.foundation:foundation:1.3.0-beta01 और androidx.compose.foundation:foundation-layout:1.3.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
OverscrollEffectसेpointerPositionहटाया गया - ऐसे इफ़ेक्ट जो पॉइंटर की पोज़िशन के हिसाब से काम करते हैं वे अबeffectModifierमेंModifier.pointerInput { }का इस्तेमाल करके, पॉइंटर की मौजूदा पोज़िशन की जानकारी पा सकते हैं. (I9f606, b/241239306)- जटिल जेस्चर का पता लगाने के लिए,
AwaitPointerEventScope#awaitLongPressOrCancellationको अतिरिक्त बिल्डिंग ब्लॉक के तौर पर दिखाया गया (I04374, b/181577176) - लेज़ी लिस्ट में स्नैपिंग की सुविधा चालू करने के लिए,
lazyListSnapLayoutInfoProviderको पेश किया गया. (I3ecdf) SnapFlingBehaviorको पेश किया गया है. यह एक फ़्लिंग बिहेवियर है, जो सूची को स्नैप करने की सुविधा देता है. स्नैपिंग लेआउट के बारे में जानकारी के साथSnapLayoutInfoProviderका इंस्टेंस दें. (Ie754c)
वर्शन 1.3.0-alpha03
10 अगस्त, 2022
androidx.compose.foundation:foundation:1.3.0-alpha03 और androidx.compose.foundation:foundation-layout:1.3.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब रिसॉर्स फ़ॉन्ट, फ़ॉन्ट वेरिएशन सेटिंग (API 26+) सेट करने की सुविधा के साथ काम करते हैं. (I900dd, b/143703328)
DeviceFontFamilyNameFontमें वैरिएबल फ़ॉन्ट का इस्तेमाल किया जा सकता है (Ic1279, b/143703328)PlatformTextStyleऔरLineHeightStyleसे एक्सपेरिमेंटल एनोटेशन हटा दिया गया है. (I64bef)- अब टेक्स्ट फ़ील्ड में ज़्यादा जानकारी वाली गड़बड़ियां दिखेंगी. ऐसा तब होगा, जब
VisualTransformationसे मिलेOffsetMappingअमान्य इंडेक्स दिखाता है. (Ie73f9, b/229378536) - एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई पेश किए गए हैं, ताकि लेज़ी लेआउट के बीच आइटम उपलब्ध कराने वाले लॉजिक को शेयर किया जा सके. (Ic891c)
ScrollableDefaults.reverseDirection()अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Iba646)SemanticsModifier.idको बंद कर दिया गया है. इसके बजाय, सिमैंटिक्स आईडी कोLayoutInfo.semanticsIdमें ले जाया गया है. (Iac808, b/203559524)checkScrollableContainerConstraints()अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I2c290)Modifier.clipScrollableContainer()अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Ia2b44)TextInputService.show|hideSoftwareKeyboardका इस्तेमाल बंद करें. कृपया ऐप्लिकेशन कोड मेंSoftwareKeyboardControllerऔर IME-मैनेजमेंट कोड मेंTextInputSessionका इस्तेमाल करें. (I14e4c, b/183448615)
वर्शन 1.3.0-alpha02
27 जुलाई, 2022
androidx.compose.foundation:foundation:1.3.0-alpha02 और androidx.compose.foundation:foundation-layout:1.3.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DrawScopeपरdrawTextएक्सटेंशन फ़ंक्शन जोड़ा गया है. इससे, कंपोज़ेबल और मॉडिफ़ायर पर अलग-अलग स्टाइल वाला टेक्स्ट बनाया जा सकता है. येDrawScopeपर काम करते हैं, जैसे किCanvasऔरdrawBehind. (I16a62, b/190787898)
गड़बड़ियां ठीक की गईं
- अब फ़ोकस किए गए टेक्स्ट फ़ील्ड के बंद होने पर, सॉफ़्ट कीबोर्ड छिप जाएगा. (I6e3e4, b/237308379)
- वेलोसिटी ट्रैकर में
InputEventChangeइवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि सभी मामलों में वेलोसिटी का हिसाब सही तरीके से लगाया गया है. भले ही, टारगेट एलिमेंट मूव करता हो (Icea9d, b/216582726, b/223440806, b/227709803) - जब स्क्रोल किए जा सकने वाले किसी आइटम में फ़ोकस किया गया चाइल्ड आइटम होता है, तो अब वह सही तरीके से स्क्रोल करेगा, ताकि फ़ोकस किए गए चाइल्ड आइटम को तब भी देखा जा सके, जब उसका साइज़ कम हो जाता है. ऐसा तब भी होगा, जब साइज़ में बदलाव को ऐनिमेशन के तौर पर दिखाया गया हो. (I80867, b/230756508, b/220119990)
- उस क्रैश की समस्या को ठीक किया गया है जिसमें सिलेक्शन चालू होने पर,
TextFieldको मिटा दिया जाता था और फिर से भर दिया जाता था. (I1235b, b/208655565, b/214253689)
वर्शन 1.3.0-alpha01
29 जून, 2022
androidx.compose.foundation:foundation:1.3.0-alpha01 और androidx.compose.foundation:foundation-layout:1.3.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
UrlAnnotationएनोटेशन टाइप और उससे जुड़े तरीकों को पेश किया गया है. इससेAnnotatedStringमेंTalkBackलिंक को इस्तेमाल किया जा सकेगा. (I1c754, b/231495122)
गड़बड़ियां ठीक की गईं
- अब कर्सर टाइमर को रीस्टार्ट किए बिना,
BasicTextFieldcursorBrushको ऐनिमेट किया जा सकता है. (I812e6, b/236383522)
वर्शन 1.2
वर्शन 1.2.1
10 अगस्त, 2022
androidx.compose.foundation:foundation:1.2.1 और androidx.compose.foundation:foundation-layout:1.2.1 रिलीज़ हो गए हैं. वर्शन 1.2.1 में ये बदलाव शामिल हैं.
वर्शन 1.2.0
27 जुलाई, 2022
androidx.compose.foundation:foundation:1.2.0 और androidx.compose.foundation:foundation-layout:1.2.0 रिलीज़ हो गए हैं. वर्शन 1.2.0 में ये बदलाव शामिल हैं.
1.1.0 के बाद हुए अहम बदलाव
LazyVerticalGridऔरLazyHorizontalGridअब स्टेबल हो गए हैं.- अब लेज़ी लिस्ट और ग्रिड में मौजूद आइटम के लिए, कॉन्टेंट टाइप तय किया जा सकता है. इससे कॉम्पोनेंट, एलिमेंट का ज़्यादा बेहतर तरीके से फिर से इस्तेमाल कर पाएंगे.
- लेज़ी लिस्ट और ग्रिड में अब
userScrollEnabledपैरामीटर है. इससे उपयोगकर्ता के जेस्चर के ज़रिए स्क्रोल करने की सुविधा बंद की जा सकती है. LazyLayoutनाम का एक नया एक्सपेरिमेंटल एपीआई जोड़ा गया. It It is the API we use internally to power Lazy lists and grids.OverscrollEffectइस एपीआई को एक्सपेरिमेंट के तौर पर लॉन्च किया गया है. कस्टम स्क्रोल किए जा सकने वाले कंटेनर में, कस्टम ओवरस्क्रोल इफ़ेक्ट तय किए जा सकते हैं. साथ ही, स्टैंडर्ड प्लैटफ़ॉर्म इफ़ेक्ट भी जोड़ा जा सकता है.- नेस्टेड स्क्रोलिंग इंटरोऑपरेबिलिटी एपीआई पेश किए गए हैं. इनकी मदद से, व्यू और कंपोज़ स्क्रोलिंग ऐक्टर के बीच इंटरोऑपरेबिलिटी की अनुमति दी जा सकती है.
- स्क्रोल करने वाले सभी कंटेनर में, माउस और ट्रैकपैड से स्क्रोल करने की सुविधा जोड़ी गई है.
वर्शन 1.2.0-rc03
29 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc03 और androidx.compose.foundation:foundation-layout:1.2.0-rc03 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc03 में ये बदलाव शामिल हैं.
- 1.2.0-rc02 के बाद से कोई बदलाव नहीं किया गया है.
वर्शन 1.2.0-rc02
22 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc02 और androidx.compose.foundation:foundation-layout:1.2.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.2.0-rc01
15 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc01 और androidx.compose.foundation:foundation-layout:1.2.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम ओवरस्क्रॉल इफ़ेक्ट की अनुमति देने के लिए, एक एक्सपेरिमेंटल
OverscrollEffectपेश किया गया है. साथ ही,Modifier.scrollableओवरलोड भी पेश किए गए हैं जो इसे स्वीकार करते हैं. - एक्सपेरिमेंटल
LocalOverScrollConfigurationकोfoundation.gestureसे फ़ाउंडेशन पैकेज में ले जाया गया है. साथ ही, इसका नाम बदलकरLocalOverscrollConfigurationकर दिया गया है (If19fb, b/204650733) - Compose लाइब्रेरी में इंटरफ़ेस अब jdk8 के डिफ़ॉल्ट इंटरफ़ेस के तरीकों (I5bcf1) का इस्तेमाल करके बनाए जाते हैं
- एक एक्सपेरिमेंटल एपीआई
checkScrollableContainerConstraints()लॉन्च किया गया है. इससे यह जांच की जा सकती है कि हमने स्क्रोल किए जा सकने वाले कंटेनर को नेस्ट नहीं किया है.LazyLayoutकी मदद से स्क्रोल किए जा सकने वाले लेज़ी लेआउट बनाते समय, इसका इस्तेमाल किया जा सकता है. (Id6fab, b/233352497) androidx.compose.foundation.lazyपैकेज से, बंद किए गएLazyVerticalGridको हटा दिया गया है. नया स्टेबल एपीआई,androidx.compose.foundation.lazy.grid(I73c76, b/225192009) में मौजूद है
वर्शन 1.2.0-beta03
1 जून, 2022
androidx.compose.foundation:foundation:1.2.0-beta03 और androidx.compose.foundation:foundation-layout:1.2.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.2.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर, नए
IntervalListऔरMutableIntervalListजोड़े गए. इसकी मदद से, वैल्यू की किसी सूची को कई इंटरवल के ज़रिए दिखाया जा सकता है. यह तब काम आएगा, जब आपकोLazyColumnमें इस्तेमाल किए गए डीएसएल की तरह अपना डीएसएल तय करना हो. इसमें, आइटम/आइटम के कई कॉल के ज़रिए सूची के आइटम तय किए जा सकते हैं. (I2d05e, b/228580728)
गड़बड़ियां ठीक की गईं
WindowInsets.imeके दस्तावेज़ में यह जानकारी जोड़ी गई है किWindowInsets.imeइनसेट की जानकारी एपीआई 23 से ही उपलब्ध है. हालांकि, एपीआई 30 या इसके बाद के वर्शन पर सिर्फ़ ऐनिमेटेड इनसेट की जानकारी उपलब्ध है. (Ia7fc0, b/230756508)ime- अब टेक्स्ट फ़ील्ड के आखिर में कर्सर होने पर, फ़ॉरवर्ड डिलीट बटन दबाने से ऐप्लिकेशन क्रैश नहीं होगा.
DeleteSurroundingTextCommandऔरDeleteSurroundingTextInCodePointsCommandके कंस्ट्रक्टर आर्ग्युमेंट के लिए, अब गैर-ऋणात्मक होना ज़रूरी है. (Ica8e6, b/199919707)
वर्शन 1.2.0-beta02
18 मई, 2022
androidx.compose.foundation:foundation:1.2.0-beta02 और androidx.compose.foundation:foundation-layout:1.2.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.2.0-beta02 में ये बदलाव शामिल हैं.
- डाउनलोड किए जा सकने वाले फ़ॉन्ट का रिज़ॉल्यूशन, टेक्स्ट या
TextFieldके लेआउट के साइज़ को नहीं बदलता है. पहले, यह फिर से नहीं दिखता था. इस वजह से, फ़ॉन्ट का डिसप्ले पुराना हो जाता था. इस बग को ठीक करने से यह पक्का होता है कि टेक्स्ट लेआउट हमेशा फिर से रेंडर होने की प्रोसेस को ट्रिगर करता है (b/229727404). (I1d49e, b/229727404)
वर्शन 1.2.0-beta01
11 मई, 2022
androidx.compose.foundation:foundation:1.2.0-beta01 और androidx.compose.foundation:foundation-layout:1.2.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.2.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- यह 1.2 का पहला बीटा वर्शन है!
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर
BeyondBoundsIntervalजोड़ा गया है. इसका इस्तेमाल,LazyListके कस्टम वर्शन कर सकते हैं. ऐसा तब किया जाता है, जब वे दिखने वाली सीमाओं से बाहर आइटम लेआउट करते हैं (Ifabfb, b/184670295) LineHeightBehaviorका नाम बदलकरLineHeightStyleकर दिया गया हैLineVerticalAlignmentका नाम बदलकरLineHeightStyle.Alignmentकर दिया गया हैLineHeightTrimका नाम बदलकरLineHeightStyle.Trimकर दिया गया हैLineHeightStyleएट्रिब्यूट की डिफ़ॉल्ट कंस्ट्रक्टर वैल्यू हटा दी गई है (I582bf, b/181155707)LazyLayoutItemProviderइंटरफ़ेस के वैकल्पिक सदस्यों के लिए डिफ़ॉल्ट वैल्यू जोड़ी गईं. (Iba8a0)LazyLayoutItemProviderएपीआई में, अब फ़ैक्ट्री इंडेक्स के हिसाब से कंपोज़ेबल लैम्डा नहीं दिखाती है. अब हमारे पास इंडेक्स स्वीकार करने वाला एक आसान कंपोज़ेबल फ़ंक्शन आइटम है. (Id2196)- LazyLayoutItemsProvider का नाम बदलकर LazyLayoutItemProvider कर दिया गया है (I0638c)
LazyLayoutItemsProvider.itemsCountका नाम बदलकरitemCount(Id409c) कर दिया गया है- ग्रेडिएंट कलरिंग की मदद से टेक्स्ट बनाने के लिए,
TextStyleऔरSpanStyleमें ब्रश जोड़ा गया. (I53869, b/187839528) trimFirstLineTopऔरtrimLastLineBottomएट्रिब्यूट केLineHeightBehaviorको बदलकर एक ही enum:LineHeightTrimकर दिया गया है.LineHeightTrimमें चार स्थितियां होती हैं, जिन्हें दो बूलियन से तय किया जाता है:FirstLineTop,LastLineBottom, दोनों, और कोई नहीं (Ifc6a5, b/181155707)LineHeightBehaviorकोTextStyleमें जोड़ा गया है. साथ ही,ParagraphStyle. LineHeightBehaviorयह कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के सबसे ऊपर और आखिरी लाइन के सबसे नीचे लागू की गई है या नहीं. यहTextStyle(lineHeight) से मिले स्पेस में लाइन के अलाइनमेंट के बारे में भी बताता है.उदाहरण के लिए,
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)के ज़रिए सीएसएस के जैसा व्यवहार किया जा सकता है.trimFirstLineTopऔरtrimLastLineBottomकॉन्फ़िगरेशन, सिर्फ़ तब सही तरीके से काम करते हैं, जबincludeFontPaddingकी वैल्यू false हो. (I97332, b/181155707)एक्सपेरिमेंट के तौर पर
imeNestedScroll()मॉडिफ़ायर जोड़ा गया है, ताकि डेवलपर स्क्रोल करके IME को कंट्रोल कर सकें. (I60759)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें फ़ोकस किए गए टेक्स्ट फ़ील्ड को कंपोज़िशन से हटाने पर, कीबोर्ड नहीं छिपता था. (I7a410, b/230536793, b/225541817)
- ऊंचाई सीमित होने और सभी टेक्स्ट लाइनें फ़िट न होने पर, एलिप्सिस का इस्तेमाल किया जा सकता है (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoViewअब हमेशा तब तक निलंबित रहेगा, जब तक अनुरोध पूरा नहीं हो जाता या किसी नए अनुरोध की वजह से इसमें रुकावट नहीं आती. एक जैसे अनुरोधों को क्रम से लगाया जाएगा. (I43e7f, b/216790855)- पूरी तरह से ओवरलैप होने वाले रेक्टैंगल के लिए, एक साथ किए गए
BringIntoViewRequester.bringIntoViewकॉल में अब सिर्फ़ बड़े रेक्टैंगल के अनुरोध को पूरा किया जाएगा. (I34be7, b/216790855, b/184760918) - डिफ़ॉल्ट
includeFontPaddingचालू किया गया.TextStyle.platformTextStyleएट्रिब्यूट का इस्तेमाल करके,includeFontPaddingको बंद किया जा सकता है. हम आने वाले समय में डिफ़ॉल्ट व्यवहार में बदलाव करेंगे. हालांकि, तब तक इससे हमें लाइन की ऊंचाई को बेहतर तरीके से इंटिग्रेट करने (aosp/2058653) औरTextFieldक्लिपिंग की समस्याओं को हल करने में मदद मिलेगी. (I01423, b/171394808) Modifier.bringIntoViewRequesterअबonGloballyPositionedका इस्तेमाल नहीं करता. (I630f5)
बाहरी योगदान
MouseInjectionScope.scroll(delta = someDelta)अब Android पर उल्टा हो गया है. ऐसा तब होता है, जब हम ऊपर से नीचे या नीचे से ऊपर की ओर स्क्रोल करते हैं. अगर कुछ डेल्टा पॉज़िटिव है, तो यह नीचे की ओर स्क्रोल करेगा (Ifb697, b/224992993)
वर्शन 1.2.0-alpha08
20 अप्रैल, 2022
androidx.compose.foundation:foundation:1.2.0-alpha08 और androidx.compose.foundation:foundation-layout:1.2.0-alpha08 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
FontFamily.SansSerifका इस्तेमाल करते समय, Android पर सिस्टम फ़ॉन्ट के लिए उपलब्ध सभी वेट दिखाएं. यह एपीआई 21 से 28 पर, फ़ॉलबैक फ़ॉन्ट के नामों का इस्तेमाल करेगा. जैसे, sans-serif-medium. यह एक व्यवहार में बदलाव है, क्योंकि इससे पहले एपीआई 21 से 28 पर सिर्फ़ 400 और 700 वज़न वाले फ़ॉन्ट काम करते थे. (I380fe, b/156048036, b/226441992)- पैराग्राफ़ और मल्टीपैराग्राफ़ अब Constraints पैरामीटर स्वीकार कर रहे हैं. फ़िलहाल,
Constraints.maxHeightका इस्तेमाल नहीं किया जा सकता. हालांकि, आने वाले समय में इसकी मदद से कुछ कैलकुलेशन की जा सकेंगी. जैसे, ऊंचाई के आधार पर टेक्स्ट को छोटा करना. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()अब MutableSet जैसी कस्टम क्लास स्वीकार करता है. इसमें नए आइटम जोड़ने की अनुमति नहीं होती. (Icd314)PointerInputChangeमें, आंशिक खपत (नीचे या स्थिति) को बंद कर दिया गया है. बदलाव को पूरी तरह से लागू करने के लिए,consume()का इस्तेमाल किया जा सकता है.isConsumedका इस्तेमाल करके यह पता लगाया जा सकता है कि किसी और ने पहले बदलाव का इस्तेमाल किया है या नहीं.PointerInputChange::copy()अब हमेशा शैलो कॉपी बनाता है. इसका मतलब है किPointerInputChangeकी कॉपी का इस्तेमाल एक बार होने के बाद, बाकी कॉपी का इस्तेमाल नहीं किया जा सकेगा. अगर आपको अनबाउंडPointerInputChangeबनाना है, तो कंस्ट्रक्टर का इस्तेमाल करें. (Ie6be4, b/225669674)- एक्सपेरिमेंट के तौर पर उपलब्ध नया
LazyLayoutएपीआई लॉन्च किया गया है. इससे,LazyVerticalGridकेLazyColumnजैसे कॉम्पोनेंट बनाए जा सकते हैं. ध्यान दें कि यह एपीआई अभी शुरुआती दौर में है और आने वाली रिलीज़ में इसमें बदलाव किया जा सकता है. (Iba2bc, b/166591700) AndroidFontअबtypefaceLoaderको कंस्ट्रक्टर पैरामीटर के तौर पर लेता है. (I2c971)WindowInsetsकंपैनियन अब यह जानकारी दिखाता है कि वे स्क्रीन पर दिख रहे हैं या नहीं. भले ही, वे विंडो के साथ इंटरसेक्ट कर रहे हों या नहीं. साथ ही, यह भी दिखाता है कि अगर वे डिवाइस पर उपलब्ध हैं, लेकिन फ़िलहाल चालू नहीं हैं, तो उनका साइज़ क्या हो सकता है. (I65182, b/217770337)
वर्शन 1.2.0-alpha07
6 अप्रैल, 2022
androidx.compose.foundation:foundation:1.2.0-alpha07 और androidx.compose.foundation:foundation-layout:1.2.0-alpha07 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक
PinnableParentएपीआई जोड़ा गया है. इसकी मदद से, लेज़ी लेआउट के बच्चे, कंपोज़ किए गए मौजूदा आइटम को खारिज होने से रोक सकते हैं (Ibbdd0, b/184670295) LazyListLayoutInfoऔरLazyGridLayoutInfoमें अबbeforeContentPaddingऔरafterContentPaddingफ़ील्ड उपलब्ध हैं (I3b628, b/200920410)- आईएमई में दशमलव सेपरेटर को शामिल करने के लिए,
KeyboardType.DecimalकोKeyboard.Numberके विकल्प के तौर पर जोड़ा गया है. (Iec4c8, b/209835363) - फ़ॉन्ट फ़ॉलबैक चेन के दौरान, सिस्टम में इंस्टॉल किए गए फ़ॉन्ट को खोजने के लिए, नया फ़ॉन्ट डिस्क्रिप्टर Font(DeviceFontFamilyName) जोड़ें. (I30468, b/219754572)
PointerEventType.ScrollऔरPointerEvent.scrollDeltaअब स्टेबल एपीआई हैं (I574c5, b/225669674)TextStyle/ParagraphStyle. includeFontPaddingमेंincludeFontPaddingके लिए, कुछ समय के लिए काम करने वाला कॉन्फ़िगरेशन जोड़ा गया है. इसेTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))के ज़रिए बदला जा सकता है. यह माइग्रेशन को चालू करने के लिए, कॉन्फ़िगरेशन का एक अस्थायी विकल्प है. इसे हटा दिया जाएगा. (If47be, b/171394808)FontFamily.Resolverको अपडेट किया गया है, ताकि सिस्टम-वाइड बोल्ड टेक्स्ट की सुलभता सेटिंग (I6c1e7) को इंटिग्रेट किया जा सकेComposeViewकीconsumeWindowInsetsएक्सटेंशन प्रॉपर्टी की मदद से डेवलपर, Android WindowInsets के इस्तेमाल को बंद कर सकते हैं. इससे हैरारकी में मौजूद हरComposeViews, एक-दूसरे में रुकावट डाले बिनाWindowInsetsलागू कर सकता है. (I0ef08, b/220943142)
वर्शन 1.2.0-alpha06
23 मार्च, 2022
androidx.compose.foundation:foundation:1.2.0-alpha06 और androidx.compose.foundation:foundation-layout:1.2.0-alpha06 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने का अनुरोध करने के लिए,
RequestFocusसिमैंटिक्स ऐक्शन जोड़ा गया. (I17b71) FocusOrderको अबFocusPropertiesमें मर्ज कर दिया गया है. साथ ही,focusProperties()में अबfocusOrder()की सभी सुविधाएं उपलब्ध हैं.FocusOrderऔरfocusOrder()का अब इस्तेमाल नहीं किया जा सकता.focusRequesterको स्वीकार करने वालेfocusOrder()कोfocusProperties()के साथfocusRequester()मॉडिफ़ायर से बदला जाना चाहिए. इससे मॉडिफ़ायर को अलग-अलग काम करने में मदद मिलती है. (I601b7)WindowInsets.asPaddingValues(Density)को इसलिए जोड़ा गया है, ताकि डेवलपर कंपोज़िशन में शामिल हुए बिना कन्वर्ज़न कर सकें. (I94c35)- वेक्टर ड्रॉएबल को पार्स करने की सुविधा को अपडेट किया गया है, ताकि
VectorPainterके कॉन्टेंट को अपने-आप फ़्लिप करने की सुविधा काम कर सके. ऐसा तब होगा, जब मौजूदा लेआउट की दिशा RTL होगी. (I79cd9, b/185760237)
गड़बड़ियां ठीक की गईं
- स्क्रोल मॉडिफ़ायर (
Modifier.verticalScroll(),Modifier.horizontalScroll(), औरModifier.scrollable()) अब स्क्रोल करेंगे, ताकि फ़ोकस किए गए कंपोज़ेबल को दिखता रहे. ऐसा तब होगा, जब स्क्रोल एरिया का साइज़ बदला गया हो और फ़ोकस किया गया कंपोज़ेबल पहले से दिख रहा हो. - अब टेक्स्ट फ़ील्ड को कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब टेक्स्ट फ़ील्ड पर फ़ोकस किया गया हो और कीबोर्ड दिख रहा हो. साथ ही, जब टेक्स्ट फ़ील्ड, स्क्रोल किए जा सकने वाले नॉन-लेज़ी कंटेनर के अंदर हो और सॉफ़्ट इनपुट मोड
ADJUST_RESIZEहो. (I4a485, b/190539358, b/192043120, b/216842427)
वर्शन 1.2.0-alpha05
9 मार्च, 2022
androidx.compose.foundation:foundation:1.2.0-alpha05 और androidx.compose.foundation:foundation-layout:1.2.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyVerticalGridऔरLazyHorizontalGridअब स्टेबल हो गए हैं. (I307c0)LazyGridItemInfo.Unknownको अलग-अलगLazyGridItemInfo.UnknownRowऔरLazyGridItemInfo.UnknownColumn(I56d51) से बदल दिया गया हैLazyVerticalGrid/LazyHorizontalGridऔर इससे जुड़ी सभी एपीआई को.gridसब-पैकेज में ले जाया गया है. कृपयाandroidx.compose.foundation.lazyसेandroidx.compose.foundation.lazy.gridमें इंपोर्ट किए गए डेटा को अपडेट करें. (I2d446, b/219942574)- टेक्स्ट:
includeFontPaddingअब डिफ़ॉल्ट रूप से बंद है.includeFontPadding=falseकी वजह से होने वाली क्लिपिंग की समस्याओं को ठीक किया जाता है. साथ ही, लंबी स्क्रिप्ट के लिए क्लिपिंग नहीं होनी चाहिए. (I31c84, b/171394808) - मेज़र किए गए इंटरफ़ेस में अब parentData प्रॉपर्टी (I3313f) दिखती है
Modifier.onFocusedBoundsChangedको एक्सपेरिमेंट के तौर पर लॉन्च किया गया है, ताकि चाइल्ड फ़ोकस करने लायक आइटम की सीमाओं को देखा जा सके. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)- LazyHorizontalGrid को जोड़ा गया. (I61ae7, b/191238807)
- क्रॉस ऐक्सिस के साइज़ तय करने के लिए, नया
LazyVerticalGridएपीआई जोड़ा गया (I17723) - FocusGroup मॉडिफ़ायर जोड़ा गया (I64bc0, b/213508274, b/184670295)
गड़बड़ियां ठीक की गईं
WindowInsets.toString()में अब सही वैल्यू दिखेंगी. (I1585d)
बाहरी योगदान
- Kotlinx coroutines 1.6.0 (I3366d) का इस्तेमाल करने के लिए अपडेट किया गया
वर्शन 1.2.0-alpha04
23 फ़रवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha04 और androidx.compose.foundation:foundation-layout:1.2.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BringIntoViewRespondersको अब पैरंट रिस्पॉन्डर को मैन्युअल तरीके से अनुरोध भेजने की ज़रूरत नहीं है. इसके बजाय, उन्हें तुरंत वह रेक्टैंगल दिखाना होगा जिसे वे चाहते हैं कि उनका पैरंट व्यू में लाए. (I8e66a)- टेक्स्ट में एसिंक फ़ॉन्ट लोडिंग की सुविधा जोड़ी गई (I77057, b/214587005)
LazyVerticalGridअब उन आइटम से पहलेline breakingका इस्तेमाल किया जा सकता है जो मौजूदा लाइन में फ़िट नहीं होते. (I05c40, b/207462103)excludeFromSystemGesturesका नाम बदलकरsystemGesturesExclusionकिया गया (I19526)LazyVerticalGridअब reverseLayout के साथ काम करता है. (I6d7d7, b/215572963, b/211753558)- डेवलपर को सिर्फ़ WindowInsets से डाइमेंशन शामिल करने की अनुमति देने के लिए,
WindowInsets.only()तरीका जोड़ें. (I14c94, b/217768486) ComposableTarget,ComposableTargetMarker, औरComposableOpenTargetजोड़ा गया है. इससे कंपाइल टाइम रिपोर्टिंग की जा सकती है. इससे यह पता चलता है कि किसी ऐप्लिकेशन को टारगेट करने वाले कंपोज़ेबल फ़ंक्शन को कब कॉल किया गया था.ज़्यादातर मामलों में, कंपोज़ कंपाइलर प्लगिन से एनोटेशन का अनुमान लगाया जा सकता है. इसलिए, इन एनोटेशन का सीधे तौर पर इस्तेमाल कम ही करना चाहिए. ऐसे मामले जिनमें अनुमान नहीं लगाया जा सकता उनमें कस्टम ऐप्लिकेशन बनाना और उसका इस्तेमाल करना, ऐब्स्ट्रैक्ट कंपोज़ेबल फ़ंक्शन (जैसे कि इंटरफ़ेस के तरीके), कंपोज़ेबल लैम्ब्डा (स्थानीय वैरिएबल और पैरामीटर का अनुमान लगाया जाता है) वाले फ़ील्ड या ग्लोबल वैरिएबल या
ComposeNodeया उससे जुड़े कंपोज़ेबल फ़ंक्शन का इस्तेमाल करना शामिल है.कस्टम ऐप्लिकेशन के लिए,
ComposeNodeयाReusableComposeNodeको कॉल करने वाले कंपोज़ेबल फ़ंक्शन को फ़ंक्शन और किसी भी कंपोज़ेबल लैम्ब्डा पैरामीटर टाइप के लिएCompoableTargetएनोटेशन जोड़ना होगा. हालांकि, हमारा सुझाव है कि आपComposableTargetMarkerके साथ एनोटेट किया गया एनोटेशन बनाएं. इसके बाद, सीधेComposableTargetका इस्तेमाल करने के बजाय, मार्क किए गए एनोटेशन का इस्तेमाल करें.ComposableTargetMarkerके तौर पर मार्क किया गया कंपोज़ेबल एनोटेशन,ComposbleTargetके बराबर होता है. इसमें ऐप्लिकेशन पैरामीटर के तौर पर एट्रिब्यूट क्लास का पूरी तरह क्वालिफ़ाइड नाम होता है.ComposableTargetMarkerके इस्तेमाल का उदाहरण देखने के लिए,anroidx.compose.ui.UiComposableदेखें. (I38f11)
गड़बड़ियां ठीक की गईं
- अब
LazyGridState.scrollToItem()औरLazyGridState.animateScrollToItem()में नेगेटिव स्क्रोल ऑफ़सेट पास करने की अनुमति है. (I025c6, b/211753558) - TextField के लिए, फ़ॉन्ट को एसिंक तरीके से लोड करने की सुविधा जोड़ी गई. (Icc4bf, b/214587005)
वर्शन 1.2.0-alpha03
9 फ़रवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha03 और androidx.compose.foundation:foundation-layout:1.2.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TextInputSessionऔरTextInputServiceमें मौजूदnotifyFocusedRectतरीकों का इस्तेमाल अब नहीं किया जा सकेगा. इन्हें कॉल नहीं किया जाएगा. इसके बजाय,BringIntoViewRequesterका इस्तेमाल करें. (Ia4302, b/192043120, b/216842427, b/178211874)- Modifier.animateItemPlacement() का इस्तेमाल करके, लेज़ी ग्रिड के आइटम के लिए ऐनिमेशन चालू किए गए. (Ib6621, b/211753218)
BringIntoViewRequesterअब अनुरोधों को होस्टिंग वाले Android व्यू पर भेजता है. (Ia7a51)FontFamilyResolverअबLocalFontFamilyResolver.currentके ज़रिए उपलब्ध है- Compose के इस्तेमाल के बाहर नई FontFamily रिज़ॉल्वर बनाने के लिए,
createFontFamilyResolver(context)औरcreateFontFamilyResolver(context, coroutineScope)जोड़े गए हैं. - पैराग्राफ़ और मल्टीपैराग्राफ़ अब
FontFamily.Resolverलेते हैं TextLayoutResult.layoutInput.fontFamilyResolverमें अब इस लेआउट के लिए इस्तेमाल किया गया रिज़ॉल्वर मौजूद है.TextLayoutResult.layoutInput.resourceLoaderको अब इस्तेमाल नहीं किया जाता. (Id5a45, b/174162090)
- Compose के इस्तेमाल के बाहर नई FontFamily रिज़ॉल्वर बनाने के लिए,
- 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) का इस्तेमाल करें
- अब
LazyVerticalGridफ़ंक्शन के आइटम के लिए, कॉन्टेंट टाइप तय किया जा सकता है.LazyGridScopeपर मौजूद item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लिए लॉजिक का दोबारा इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ दोबारा इस्तेमाल किया जा सकता है. (I7b355, b/215372836) LazyListLayoutInfoऔरLazyGridLayoutInfoमें अब नई प्रॉपर्टी हैं:viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410)- अब LazyColumn/LazyRow के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है. LazyListScope पर मौजूद item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लिए लॉजिक का दोबारा इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ दोबारा इस्तेमाल किया जा सकता है. (I26506)
maxSlotsToRetainForReuseको स्वीकार करने वालेSubcomposeLayoutStateकंस्ट्रक्टर को अब बंद कर दिया गया है. इसके बजाय, एक नया कंस्ट्रक्टर है जोSubcomposeSlotReusePolicyस्वीकार करता है. यह एक नया इंटरफ़ेस है, जो इस बात पर ज़्यादा सटीक कंट्रोल देता है कि आने वाले समय में फिर से इस्तेमाल करने के लिए किन स्लॉट को बनाए रखना चाहिए. (I52c4d)- यह WindowInsets के लिए मॉडिफ़ायर जोड़ता है. ये मॉडिफ़ायर, पैडिंग और साइज़िंग, दोनों के लिए होते हैं. इससे कुछ कॉन्टेंट को इंसर्ट एरिया में बढ़ाया जा सकता है. हालांकि, मुख्य कॉन्टेंट अब भी इंसर्ट एरिया से बाहर रहेगा. उदाहरण के लिए, windowInsetsPadding का इस्तेमाल करके, कॉन्टेंट वाले हिस्से में पैडिंग जोड़ी जा सकती है. इससे, कॉन्टेंट को उन हिस्सों से दूर रखा जा सकता है जो पूरी तरह या कुछ हद तक ढके हुए हैं. (Id0395, b/213942085)
गड़बड़ियां ठीक की गईं
- अब टेक्स्ट फ़ील्ड को कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब टेक्स्ट फ़ील्ड पर फ़ोकस किया गया हो और कीबोर्ड दिख रहा हो. साथ ही, सॉफ़्ट इनपुट मोड
ADJUST_PANपर सेट हो. (I8eaeb, b/190539358, b/192043120) - डेस्कटॉप,
FontFamily.Resolverके लिए कंपोज़िशन लोकल का इस्तेमाल करता है- डेस्कटॉप पर
FontLoaderकी सुविधा अब काम नहीं करती - डेस्कटॉप पर नई
createFontFamilyResolverफ़ैक्ट्री (I6bbbb, b/174162090)
- डेस्कटॉप पर
- टेक्स्ट फ़ील्ड के बीच फ़ोकस बदलने पर, सॉफ़्ट कीबोर्ड का इनपुट टाइप अब नहीं चमकता. (I1bf50, b/187746439)
- कर्सर हैंडल दिखने पर, अब टेक्स्ट फ़ील्ड में वापस जाने के लिए अतिरिक्त बैक बटन दबाने की ज़रूरत नहीं होती. (Ideb4b, b/205726883)
- टेक्स्ट चुनने की सुविधा के लिए Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)
वर्शन 1.2.0-alpha02
26 जनवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha02 और androidx.compose.foundation:foundation-layout:1.2.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- उन तरीकों में
NonRestartableComposableजोड़ा गया है जो जटिल लॉजिक के बिना, मौजूदा तरीकों के ओवरलोड हैं. इससे, कंपाइलर के जनरेट किए गए मेमोइज़ेशन चेक (equals) कम हो जाते हैं. ये चेक, उन सभी पैरामीटर के लिए होते हैं जो कॉल किए गए इनर फ़ंक्शन में दोहराए जाते हैं. (I90490) - Android के
setSystemGestureExclusionRectsको आसानी से ऐक्सेस करने के लिए,excludeFromSystemGestureमॉडिफ़ायर जोड़े गए (I46f07)
गड़बड़ियां ठीक की गईं
- टेक्स्ट चुनने की सुविधा के लिए Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScroll, औरModifier.scrollableका इस्तेमाल करने वाले अन्य कंटेनर में अब माउस के पहिए को घुमाकर स्क्रोल करने की सुविधा काम करती है. (I2b5e1, b/198214718)
वर्शन 1.2.0-alpha01
12 जनवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha01 और androidx.compose.foundation:foundation-layout:1.2.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyColumn,LazyRow, औरLazyVerticalGridमें नया पैरामीटरuserScrollEnabledजोड़ा गया है. इससे उपयोगकर्ता, टच जेस्चर या सुलभता कार्रवाइयों के ज़रिए शुरू किए गए स्क्रोल को कुछ समय के लिए या हमेशा के लिए बंद कर सकते हैं. हालांकि, प्रोग्राम के हिसाब से स्क्रोल करने की सुविधा अब भी उपलब्ध रहेगी. इसके लिए, आपको स्टेट पर मौजूद तरीकों का इस्तेमाल करना होगा. (I7eae9, b/201150093)- स्क्रीन पर मौजूद कॉन्टेंट को बड़ा करके दिखाने की सुविधा के मॉडिफ़ायर में
onSizeChangedकॉलबैक जोड़ें. (I6879f) - अब
SelectionContainerमें सिलेक्शन हैंडल को खींचते समय, मैग्नीफ़ायर विजेट दिखता है. (I30b38, b/139320979)
गड़बड़ियां ठीक की गईं
TextFieldकर्सर हैंडल के स्क्रोल करके व्यू से बाहर जाने पर न दिखने की समस्या ठीक की गई. (I14552, b/208883748)
डिपेंडेंसी से जुड़े अपडेट
- अब Kotlin
1.6.10पर निर्भर करता है.
वर्शन 1.1
वर्शन 1.1.1
23 फ़रवरी, 2022
androidx.compose.foundation:foundation:1.1.1 और androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0 और androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0-rc03 और androidx.compose.foundation:foundation-layout:1.1.0-rc03 रिलीज़ हो गए हैं. वर्शन 1.1.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose Material 1.1.0-rc03 के साथ काम करने के लिए अपडेट किया गया
वर्शन 1.1.0-rc01
15 दिसंबर, 2021
androidx.compose.foundation:foundation:1.1.0-rc01 और androidx.compose.foundation:foundation-layout:1.1.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.1.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब
LazyListState.scrollToItem()औरLazyListState.animateScrollToItem()में नेगेटिव स्क्रोल ऑफ़सेट पास करने की अनुमति है. (Iceb90, b/184252837) - ऐक्सेसिबिलिटी से जुड़ी स्क्रोल करने की कार्रवाइयों (I7cbfb) के गायब होने की समस्या को ठीक किया गया है
वर्शन 1.1.0-beta04
1 दिसंबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta04 और androidx.compose.foundation:foundation-layout:1.1.0-beta04 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Kotlin
1.6.0के साथ काम करने के लिए अपडेट किया गया
एपीआई में हुए बदलाव
androidx.core.view(I7078a, b/204917439) में नल वैल्यू को हटाया गया- ऐसे एक्सपेरिमेंटल एपीआई जोड़े गए हैं जो PointerInputchange को पूरी तरह से इस्तेमाल करने या यह देखने की अनुमति देते हैं कि इसका इस्तेमाल किया गया है या नहीं. (I2e59d)
- टेक्स्ट फ़ील्ड में कर्सर या चुनने वाले हैंडल को खींचते समय, मैग्निफ़ायर विजेट दिखाएं. (I5391e, b/203781358)
गड़बड़ियां ठीक की गईं
- IME की दृश्यता बदलने पर, टेक्स्ट हैंडल के न हिलने की समस्या ठीक की गई. (I25f2e)
वर्शन 1.1.0-beta03
17 नवंबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta03 और androidx.compose.foundation:foundation-layout:1.1.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyVerticalGrid में हॉरिज़ॉन्टल स्पैन के लिए सहायता जोड़ी गई. (I7e2fa, b/176758183)
लेज़ी लिस्ट में आइटम की पोज़िशन को ऐनिमेट करने की एक्सपेरिमेंटल सुविधा जोड़ी गई. LazyItemScope में एक नया मॉडिफ़ायर उपलब्ध है, जिसे
Modifier.animateItemPlacement()कहा जाता है. इस्तेमाल का उदाहरण:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }LazyListScope.itemयाLazyListScope.itemsके ज़रिए कुंजी देने पर, यह मॉडिफ़ायर आइटम को फिर से क्रम में लगाने वाले ऐनिमेशन चालू कर देगा. आइटम की क्रम बदलने के अलावा, इवेंट की वजह से होने वाले अन्य सभी बदलावों को भी ऐनिमेट किया जाएगा. जैसे, आइटम के क्रम या अलाइनमेंट में बदलाव. (I59e7b, b/150812265)
वर्शन 1.1.0-beta02
3 नवंबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta02 और androidx.compose.foundation:foundation-layout:1.1.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब रिपल और अन्य इंडिकेटर सिर्फ़ तब देर से दिखेंगे, जब वे
Modifier.scrollable()कंटेनर के अंदर हों. ऐसा हमेशा डाउन इवेंट के लिए नहीं होगा. (Ibefe0, b/203141462) - BringIntoView API का एक्सपेरिमेंटल वर्शन जोड़ा गया है. इसकी मदद से, माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे स्क्रोल करके किसी आइटम को व्यू में ला सकें (Ib918d, b/195353459)
बाहरी योगदान
Modifier.pointerHoverIconको जोड़ा गया (I95f01)
वर्शन 1.1.0-beta01
27 अक्टूबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta01 और androidx.compose.foundation:foundation-layout:1.1.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- BringIntoView API का एक्सपेरिमेंटल वर्शन जोड़ा गया है. इसकी मदद से, माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे स्क्रोल करके किसी आइटम को व्यू में ला सकें (Ib918d, b/195353459)
वर्शन 1.1.0-alpha06
13 अक्टूबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha06 और androidx.compose.foundation:foundation-layout:1.1.0-alpha06 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लेआउट के लिए, बिना चाइल्ड नोड वाला ओवरलोड जोड़ा गया है. इससे परफ़ॉर्मेंस बेहतर हुई है (Ib0d9a)
- अब
SemanticsNodeInteraction.performSemanticsActionफ़ंक्शन, उसSemanticsNodeInteractionको दिखाता है जिस पर फ़ंक्शन को कॉल किया गया था. (I9e5db) performScrollToNode(matcher: SemanticsMatcher)जोड़ा गया है. यह स्क्रोल किए जा सकने वाले कंटेनर को उस कॉन्टेंट तक स्क्रोल करता है जो दिए गए मैच करने वाले फ़ंक्शन से मैच करता है. (Ic1cb8)
वर्शन 1.1.0-alpha05
29 सितंबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha05 और androidx.compose.foundation:foundation-layout:1.1.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- PointerEventChange में एक्सपेरिमेंट के तौर पर उपलब्ध हिस्टोरिकल पॉइंटर जोड़े गए. (Ic1fd8, b/197553056, b/199921305)
गड़बड़ियां ठीक की गईं
- स्क्रोल करने की सुविधा (I6cdb0) के साथ, स्क्रोल किए जा सकने वाले कॉन्टेंट (लेज़ी और नॉन-लेज़ी, दोनों) के लिए सुलभता से जुड़ी समस्या ठीक की गई
वर्शन 1.1.0-alpha04
15 सितंबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha04 और androidx.compose.foundation:foundation-layout:1.1.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
performGestureऔरGestureScopeको बंद कर दिया गया है. इनकी जगहperformTouchInputऔरTouchInjectionScopeका इस्तेमाल किया जा सकता है. (Ia5f3f, b/190493367)touchBoundsInRootसेSemanticsNodeमें जोड़ा गया है. इसमें टच टारगेट का कम से कम साइज़ शामिल है, ताकि डेवलपर यह पक्का कर सकें कि टच टारगेट, ऐक्सेसिबिलिटी से जुड़ी ज़रूरी शर्तों को पूरा करते हों. (I2e14b, b/197751214)
गड़बड़ियां ठीक की गईं
- Android 12 डिवाइसों पर, स्ट्रेच ओवरस्क्रोल की सुविधा जोड़ी गई है. (Iccf3c, b/171682480)
वर्शन 1.1.0-alpha03
1 सितंबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha03 और androidx.compose.foundation:foundation-layout:1.1.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Compose
1.1.0-alpha03को Kotlin1.5.30पर निर्भर रहने के लिए अपडेट किया गया. (I74545)
एपीआई में हुए बदलाव
- स्क्रोल करने पर दिखने वाले ग्लो इफ़ेक्ट को जोड़ा गया है. नया एक्सपेरिमेंटल OverScrollConfiguration API जोड़ा गया है. इससे ओवरस्क्रॉल के विज़ुअल इफ़ेक्ट को कॉन्फ़िगर किया जा सकता है. ओवरस्क्रोल इफ़ेक्ट को बंद करने के लिए, null वैल्यू दें. (I0c304, b/171682480)
- AwaitPointerEventScope में अब withTimeout() और withTimeoutOrNull() फ़ंक्शन उपलब्ध हैं (I507f0, b/179239764, b/182397793)
- क्लिप किए गए बाउंड्री पाने के लिए, टेस्ट का तरीका जोड़ा गया. (I6b28e)
- ViewConfiguration में, कम से कम टच टारगेट का साइज़ जोड़ा गया है. इसका इस्तेमाल सिमैंटिक्स और पॉइंटर इनपुट में किया जाता है, ताकि यह पक्का किया जा सके कि ऐप्लिकेशन को ऐक्सेस किया जा सकता है. (Ie861c)
वर्शन 1.1.0-alpha02
18 अगस्त, 2021
androidx.compose.foundation:foundation:1.1.0-alpha02 और androidx.compose.foundation:foundation-layout:1.1.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Modifier.sizeऔरrequiredSizeके लिए DpSize वर्शन जोड़े गए (I3fc7e, b/194219828)
वर्शन 1.1.0-alpha01
4 अगस्त, 2021
androidx.compose.foundation:foundation:1.1.0-alpha01 और androidx.compose.foundation:foundation-layout:1.1.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DrawScope#drawImageतरीके को अपडेट किया गया है. यह सोर्स और डेस्टिनेशन रेक्ट का इस्तेमाल करता है, ताकि फ़िल्टर क्वालिटी के वैकल्पिक पैरामीटर का इस्तेमाल किया जा सके. यह पिक्सल आर्ट के लिए फ़ायदेमंद है. पिक्सल आर्ट को पिक्सल के आधार पर बड़ा करने पर, उसे पिक्सल के हिसाब से बनाया जाता है. BitmapPainter और Image कंपोज़ेबल को अपडेट किया गया है, ताकि वे FilterQuality पैरामीटर का इस्तेमाल कर सकें. हालांकि, यह पैरामीटर इस्तेमाल करना ज़रूरी नहीं है (Ie4fb0, b/180311607)- अब बैक बटन दबाने पर, TextField में चुना गया टेक्स्ट हट जाता है. यह Android EditText के जैसा ही है. (I3ca16, b/174173645)
- कर्सर हैंडल जोड़ें. (I07a82, b/173016579)
गड़बड़ियां ठीक की गईं
- लेज़ी लिस्ट और रेगुलर स्क्रोलिंग कॉम्पोनेंट के लिए, सिमैंटिक ऐक्शन के ज़रिए स्क्रोल करने की सुविधा अब ऐनिमेट की गई है (Id9066, b/190742024)
बाहरी योगदान
LazyVerticalGridअब हॉरिज़ॉन्टल और वर्टिकल, दोनों तरह के अरेंजमेंट पैरामीटर स्वीकार करता है. (If9c92)
वर्शन 1.0
वर्शन 1.0.5
3 नवंबर, 2021
androidx.compose.foundation:foundation:1.0.5 और androidx.compose.foundation:foundation-layout:1.0.5 रिलीज़ हो गए हैं. वर्शन 1.0.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- derivedStateOf इंस्टेंस को ट्रैक करने के दौरान क्रैश होने की समस्या ठीक की गई. (aosp/1792247)
वर्शन 1.0.4
13 अक्टूबर, 2021
androidx.compose.foundation:foundation:1.0.4 और androidx.compose.foundation:foundation-layout:1.0.4 रिलीज़ हो गए हैं. वर्शन 1.0.4 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.31पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.3
29 सितंबर, 2021
androidx.compose.foundation:foundation:1.0.3 और androidx.compose.foundation:foundation-layout:1.0.3 रिलीज़ हो गए हैं. वर्शन 1.0.3 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.30पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.2
1 सितंबर, 2021
androidx.compose.foundation:foundation:1.0.2 और androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.1 और androidx.compose.foundation:foundation-layout:1.0.1 रिलीज़ हो गए हैं. वर्शन 1.0.1 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.21पर निर्भर रहने के लिए अपडेट किया गया.
वर्शन 1.0.0
28 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0 और androidx.compose.foundation:foundation-layout:1.0.0 रिलीज़ हो गए हैं. वर्शन 1.0.0 में ये बदलाव शामिल हैं.
1.0.0 वर्शन की मुख्य सुविधाएं
यह Compose का पहला स्टेबल वर्शन है. ज़्यादा जानकारी के लिए, कृपया Compose Release का आधिकारिक ब्लॉग देखें!
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
अगर Android Studio Bumblebee Canary 4 या AGP
7.1.0-alpha04/7.1.0-alpha05का इस्तेमाल किया जा रहा है, तो आपको यह क्रैश दिख सकता है:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"इस समस्या को ठीक करने के लिए, अपनी
build.gradleफ़ाइल में minSdkVersion को कुछ समय के लिए 24 या उससे ज़्यादा पर सेट करें. इस समस्या को Android Studio Bumblebee और AGP7.1के अगले वर्शन में ठीक कर दिया जाएगा. (b/194289155)
वर्शन 1.0.0-rc02
14 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0-rc02 और androidx.compose.foundation:foundation-layout:1.0.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.
- जेनरिक शेप के लिए, बॉर्डर रेंडरिंग को अपडेट किया गया है. इससे फ़िक्स्ड डाइमेंशन के साथ तय किए गए पाथ से जुड़ी समस्याओं को हल किया जा सकेगा. (aosp/1748871, b/191817116)
वर्शन 1.0.0-rc01
1 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0-rc01 और androidx.compose.foundation:foundation-layout:1.0.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Canvas में अब accessibility के लिए, contentDescription पैरामीटर काम करता है. (Ib547c)
गड़बड़ियां ठीक की गईं
- डिसैबल किया गया बटन, कार्ड, चेकबॉक्स, और
Modifier.clickable(enabled=false), माता-पिता को क्लिक करने से रोकेंगे. (Ic2c3b, b/183908811)
वर्शन 1.0.0-beta09
16 जून, 2021
androidx.compose.foundation:foundation:1.0.0-beta09 और androidx.compose.foundation:foundation-layout:1.0.0-beta09 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ManualFrameClockको हटा दिया गया है. अगर आपको ऐनिमेशन कंट्रोल करने हैं, तोcomposeTestRule.mainClockका इस्तेमाल करें. (I3c3e8, b/189951065)- enum Role और LiveRegionMode को प्राइवेट कंस्ट्रक्टर (Id1890) के साथ इनलाइन क्लास में बदलें
- KeyboardCapitalization को इनलाइन क्लास में बदल दिया गया है. (Id5a1c)
- TextOverflow को इनलाइन क्लास में बदल दिया गया है. (I433af)
गड़बड़ियां ठीक की गईं
- अब LazyColumn/Row आइटम के लिए यूनीक कुंजियां तय करने पर, स्क्रोल करने की पोज़िशन को कुंजी के आधार पर बनाए रखा जाएगा. इसका मतलब है कि अगर मौजूदा दिखने वाले आइटम से पहले आइटम जोड़े/हटाए जाते हैं, तो दी गई कुंजी वाला आइटम, दिखने वाला पहला आइटम बना रहेगा. (Id263f, b/184257857)
- फ़िलहाल, मुख्य कॉन्स्टेंट @ExperimentalComposeUiApi हैं. कोड का इस्तेमाल करने वाला व्यक्ति, स्टेबल होने से पहले ही प्राइवेट कॉन्स्टेंट का एलान कर सकता है. (Ia5d48)
- AndroidComposeTestRule में IdlingStrategy जोड़ा गया है. इसका इस्तेमाल टेस्टिंग फ़्रेमवर्क, इंतज़ार करने या शांत स्थिति पाने के लिए किसी अन्य तरीके को इंस्टॉल करने के लिए कर सकते हैं. अपनी रणनीति को लागू करने के लिए, टेस्ट शुरू होने से पहले
AndroidComposeTestRule.setIdlingStrategyFactory()का इस्तेमाल करें. (I608fa)
प्रोफ़ाइल के नियम जोड़े गए
इस रिलीज़ में, कंपोज़ मॉड्यूल (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.foundation:foundation:1.0.0-beta08 और androidx.compose.foundation:foundation-layout:1.0.0-beta08 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- NestedScrollSource enum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)
- नए enum वैल्यू जोड़ने पर, when स्टेटमेंट के साथ होने वाली समस्याओं से बचने के लिए, enum के इस्तेमाल को इनलाइन क्लास में बदला गया है. (I2b5eb)
- क्लिक किए जा सकने वाले / टॉगल किए जा सकने वाले कॉम्पोनेंट में टैप टाइमआउट जोड़ा गया है, ताकि स्क्रोल / खींचने के दौरान रिपल इफ़ेक्ट न दिखे (Ia2704, b/168524931)
- ContentDescription और Text सिमैंटिक्स प्रॉपर्टी अब सिंगल वैल्यू नहीं, बल्कि सूचियां हैं. इससे उन्हें जोड़ने के बजाय, मर्ज किया जा सकता है. इन बदलावों का इस्तेमाल करने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
Modifier.focusModifier()का अब इस्तेमाल नहीं किया जा सकता. इसेModifier.focusTarget()(I6c860) से बदल दिया गया है- KeyboardType enum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)
FocusStateenum कोFocusStateइंटरफ़ेस से बदला गया (Iccc1a, b/187055290)- ImeAction enum को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
AnnotatedString.withAnnotationफ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)- TextUnitType के साथ TextUnit कंस्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.
- PaddingValues अब
@Immutableके बजाय@Stableहै (I88c50)
गड़बड़ियां ठीक की गईं
- टेक्स्ट वाली जगह पर मौजूद खाली जगह को देर तक दबाने पर ऐप्लिकेशन क्रैश होने की समस्या ठीक की गई. (I33ab5, b/187437299)
- SelectAll के बाद टूलबार दिखाएं (I495d9, b/185919613)
- स्क्रोल किए जा सकने वाले कंटेनर में, क्रॉस ऐक्सिस पर मौजूद आइटम के कटने की समस्या को ठीक किया गया है. अगर आपके पास कार्ड आइटम के साथ LazyRow है, तो इसे आसानी से दोहराया जा सकता है. अब शैडो को काटा नहीं जाएगा. (Icb635, b/186318448)
- Modifier.combinedClickable (I2298c, b / 186223077) का इस्तेमाल करते समय, कभी-कभी लंबे समय तक क्लिक करने पर रिपल/अन्य इंडिकेशन अटक जाते थे. इस समस्या को ठीक कर दिया गया है
- अब
detectDragGesures,detectVerticalGestures, औरdetectHorizontalGestures, अपने-आप पोज़िशन बदल लेंगे. इसलिए, onDrag कॉलबैक (I42fc4, b/185096350, b/187320697) में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है Modifier.onGloballyPositioned()को इसलिए बदला गया, ताकि मॉडिफ़ायर चेन में इस मॉडिफ़ायर के कोऑर्डिनेट रिपोर्ट किए जा सकें. ऐसा इसलिए किया गया, ताकि सभी मॉडिफ़ायर लागू करने के बाद लेआउट के कोऑर्डिनेट रिपोर्ट न किए जाएं. इसका मतलब है कि अब मॉडिफ़ायर के क्रम से यह तय होगा कि कौनसे कोऑर्डिनेट रिपोर्ट किए जाएंगे. (Ieb67d, b/177926591)
वर्शन 1.0.0-beta07
18 मई, 2021
androidx.compose.foundation:foundation:1.0.0-beta07 और androidx.compose.foundation:foundation-layout:1.0.0-beta07 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyColumn/Row के लिए, दिखने वाले अगले आइटम को पहले से फ़ेच करने का लॉजिक लागू किया गया है (I8a4bc, b/184940225)
- क्लिप चुनने के लिए हैंडल जोड़ा गया (Iff80d, b/183408447)
गड़बड़ियां ठीक की गईं
- LazyColumn/Row अब पहले से दिखने वाले दो आइटम को चालू रखेगा (डिस्पोज़ नहीं करेगा). भले ही, उन्हें स्क्रोल करके हटा दिया गया हो. इससे कॉम्पोनेंट, चालू सबकंपोज़िशन का फिर से इस्तेमाल कर पाता है. ऐसा तब होता है, जब हमें कोई नया आइटम कंपोज़ करना होता है. इससे स्क्रोलिंग की परफ़ॉर्मेंस बेहतर होती है. (Ie5555)
- paintBackground को हटाएं. (I38660)
- DrawScope का इस्तेमाल करके, ड्रॉ सिलेक्शन बैकग्राउंड. (I73c61, b/186674472)
- बीटा06 रिग्रेशन में, Row/Column पर असर डालने वाली समस्या को ठीक किया गया. इस समस्या में, स्पेस वाले अरेंजमेंट का इस्तेमाल करके, वज़न के हिसाब से बच्चों को लेआउट किया जाता था. (Ifaf8c, b/187326588)
वर्शन 1.0.0-beta06
5 मई, 2021
androidx.compose.foundation:foundation:1.0.0-beta06 और androidx.compose.foundation:foundation-layout:1.0.0-beta06 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नेविगेशन के जेस्चर (I1145e) से जुड़े विवाद को हल करना
- CollectionInfo और CollectionItemInfo के सुलभता वाले एपीआई जोड़े गए हैं. इनकी मदद से, कलेक्शन और उसके आइटम को सुलभता सेवाओं के लिए मार्क किया जा सकता है (Id54ef, b/180479017)
- इंडेक्स किए गए आइटम की सूची को किसी खास इंडेक्स वाले आइटम पर स्क्रोल करने के लिए,
SemanticsActions.ScrollToIndexजोड़ा गया है. साथ ही, कुंजी वाले आइटम की सूची में किसी आइटम का इंडेक्स पाने के लिए,SemanticsProperties.IndexForKeyजोड़ा गया है. दोनों कार्रवाइयां LazyList लागू करता है.SemanticsNodeInteraction.performScrollToIndexजोड़ा गया है. यह सूची को दिए गए इंडेक्स तक स्क्रोल करता है. साथ ही,SemanticsNodeInteraction.performScrollToKeyजोड़ा गया है. यह सूची को दी गई कुंजी वाले आइटम तक स्क्रोल करता है. (I4fe63, b/178483889, b/161584524)
- AnnotatedString को TextFieldValue.Saver में सेव करने की सुविधा. AnnotatedString.Builder में addTtsAnnotation और withAnnotation यूटिलिटी फ़ंक्शन जोड़े गए (I8cbdc, b/178446304)
PaddingValues(horizontal, vertical)(I05571, b/181336792) में0.dpपैरामीटर की डिफ़ॉल्ट वैल्यू जोड़ी गईं
गड़बड़ियां ठीक की गईं
weight(fill = false)वाले कॉलम और लाइन के चाइल्ड एलिमेंट, अब पैरंट एलिमेंट के मुख्य ऐक्सिस की पूरी जगह नहीं भर रहे हैं. (Ied94d, b/186012444, b/184355105)
वर्शन 1.0.0-beta05
21 अप्रैल, 2021
androidx.compose.foundation:foundation:1.0.0-beta05 और androidx.compose.foundation:foundation-layout:1.0.0-beta05 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- FlingBehavior इंटरफ़ेस को अब @Stable के तौर पर मार्क किया गया है. सभी लागू करने के तरीके,
@Stableकॉन्ट्रैक्ट के मुताबिक होने चाहिए. (I93354, b/184830577)
गड़बड़ियां ठीक की गईं
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.foundation:foundation:1.0.0-beta04 और androidx.compose.foundation:foundation-layout:1.0.0-beta04 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- SoftwareKeyboardController पर hideSoftwareKeyboard और showSoftwareKeyboard का नाम बदलकर, क्रमशः
hide()औरshow()कर दिया गया है.- LocalSoftwareKeyboardController के लिए पूरा CompositionLocal इंटरफ़ेस उपलब्ध कराएं, ताकि इसे सेट किया जा सके. यह खास तौर पर टेस्ट में काम आता है (I579a6)
TextOverflow.Visibleको लॉन्च किया गया. (Ic8f89)RowScope,ColumnScope,BoxScope,BoxWithConstraintsScopeके सार्वजनिक इंस्टेंस हटा दिए गए हैं. (I4e83e, b/181869067)
गड़बड़ियां ठीक की गईं
- तेज़ी से फ़्लिंग करने के बाद, किनारों पर मौजूद
LazyColumn/LazyRowके आइटम गलत तरीके से सेट होने की समस्या ठीक की गई (Ie4d13, b/183877420) इस बदलाव से पहले, लोकल कंपोज़ेबल फ़ंक्शन को उनके पैरामीटर के आधार पर स्किप किया जा सकता था. इस बदलाव के बाद, कोई भी लोकल कंपोज़ेबल फ़ंक्शन स्किप नहीं होगा. यह बदलाव इसलिए किया गया है, क्योंकि स्थानीय फ़ंक्शन के लिए पैरंट से पैरामीटर कैप्चर करना सामान्य और ज़रूरी होता है. साथ ही, ऐसा न करने पर बग आने की संभावना बढ़ जाती है.
संक्षेप में, इस उदाहरण को देखें:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }इस बदलाव से पहले,
countपैरामीटर के अपडेट होने के बाद भी,ShowCountकंपोज़ेबल फ़ंक्शन हमेशा स्किप हो जाता था. अब ऐसा नहीं होता है. (I5648a)
वर्शन 1.0.0-beta03
24 मार्च, 2021
androidx.compose.foundation:foundation:1.0.0-beta03 और androidx.compose.foundation:foundation-layout:1.0.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DefaultMonotonicFrameClockका अब इस्तेमाल नहीं किया जा सकता.MonotonicFrameClockके बिनाwithFrameNanosयाRecomposer.runRecomposeAndApplyChangesको कॉल करने पर, अबIllegalStateExceptionदिखेगा. (I4eb0d)
गड़बड़ियां ठीक की गईं
FlingBehavior.performFling()को अब तब भी कॉल किया जाता है, जब वेलोसिटी 0 होती है (I0b6e5, b/181237123)
वर्शन 1.0.0-beta02
10 मार्च, 2021
androidx.compose.foundation:foundation:1.0.0-beta02 और androidx.compose.foundation:foundation-layout:1.0.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyColumn के मेज़रमेंट लॉजिक में कई छोटे-छोटे ऑप्टिमाइज़ेशन जोड़े गए (Ic6889)
- TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया
LocalSoftwareKeyboardControllerकंपोज़िशन लोकल एपीआई जोड़ा गया. (I5951e, b/168778053) - TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया
LocalSoftwareKeyboardControllerकंपोज़िशन लोकल एपीआई जोड़ा गया. (I84472, b/168778053)
गड़बड़ियां ठीक की गईं
- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें (I6aa29, b/174531520)
वर्शन 1.0.0-beta01
24 फ़रवरी, 2021
androidx.compose.foundation:foundation:1.0.0-beta01 और androidx.compose.foundation:foundation-layout:1.0.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta01 में ये बदलाव शामिल हैं.
यह Compose 1.0.0 Beta का पहला वर्शन है.
एपीआई में हुए बदलाव
- onStart कॉलबैक को
detectDragGestures(I67269, b/179995594) में जोड़ दिया गया है - इंट्रिंसिक साइज़िंग के लिए मॉडिफ़ायर अब एक्सपेरिमेंटल नहीं हैं. (I15744)
- डीपी दावे हटाए गए (I798d2)
- सभी टेक्स्ट फ़ील्ड से, SoftwareKeyboardController कॉलबैक को हटा दिया गया है. इसकी जगह जल्द ही एक नया एपीआई ले लेगा. (Iae869, b/168778053)
- 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)
- LayoutCoordinates के बंद किए गए तरीकों को हटाया गया. साथ ही, positionInParent और boundsInParent के लिए प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल किया गया (I580ed, b/169874631, b/175142755)
- CoreTextField जैसे लो लेवल टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
- Placeable अब measuredSize दिखाता है. इससे पता चलता है कि चाइल्ड लेआउट का साइज़ कितना है. ऐसा हो सकता है कि इस साइज़ में मेज़रमेंट की शर्तों का पालन न किया गया हो. (Ib2729, b/172560206, b/172338608)
- selectionGroup मॉडिफ़ायर जोड़ें. इससे, सुलभता के लिए टैब या रेडियो बटन के कलेक्शन को मार्क किया जा सकता है (Ie5c29)
LazyListState.animateScrollToItem को जोड़ें
इस तरीके से, सूची में मौजूद किसी आइटम पर आसानी से स्क्रोल किया जा सकता है. (I4bfd7)
ScrollableState.smoothScrollBy() का नाम बदलकर animateScrollBy() कर दिया गया है LazyListState.snapToItemIndex() का नाम बदलकर scrollToItem() कर दिया गया है ScrollState.smoothScrollTo() का नाम बदलकर animateScrollTo() कर दिया गया है (I35ded)
Modifier.zoomable को Modifier.transformable से बदल दिया गया है. smoothPanBy और smoothRotationBy को एक सुविधा के तौर पर जोड़ा गया है. (Ifc32b, b/175294473)
compositionLocalOfऔरstaticCompositionLocalOfके लिएdefaultFactoryकी जानकारी देना अब ज़रूरी है. पहले यह जानकारी देना ज़रूरी नहीं था.इस बदलाव से, उन नॉन-नलेबल टाइप के लिए संभावित टाइप गड़बड़ी हट जाती है जिनके लिए कोई डिफ़ॉल्ट फ़ैक्ट्री नहीं दी गई थी. इससे पहले, यह नॉन-नलेबल टाइप के लिए शून्य रेफ़रंस देता था.
शून्य वैल्यू वाले टाइप के लिए,
{ null }को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल करें.हमारा सुझाव है कि नॉन-नलेबल टाइप के साथ लोकल का इस्तेमाल न करें. हालांकि, ऐसा तब किया जा सकता है, जब कोई डिफ़ॉल्ट वैल्यू दी जा सकती हो. अगर कोई डिफ़ॉल्ट वैल्यू मौजूद नहीं है, तो
defaultFactoryलैम्डा को एक अपवाद दिखाना चाहिए. हालांकि, अपवाद का मतलब है कि स्थानीय स्तर पर काम करने वाले लोगों को इस बात पर निर्भर रहना होगा कि यह सुविधा उपलब्ध कराई गई है या नहीं. टाइप सिस्टम इसे लागू नहीं करता है. (Ifbd2a)Indication#createIndication()कोIndication#rememberUpdatedIndication(InteractionState)में बदलता है और IndicationInstance#drawIndication()सेInteractionStateपैरामीटर हटाता है. IndicationInstance को सिर्फ़ विज़ुअल इफ़ेक्ट दिखाने की ज़िम्मेदारी लेनी चाहिए. साथ ही, InteractionState में होने वाले बदलावों के जवाब में, ऐनिमेशन लॉन्च करने या स्थिति लिखने की ज़िम्मेदारी नहीं लेनी चाहिए. ये ऐनिमेशन और स्टेट राइट,rememberUpdatedIndication()के अंदर होने चाहिए.Modifier.indicationमें मौजूदindicationपैरामीटर को भी ज़रूरी पैरामीटर के तौर पर बदल दिया गया है. (Ic1764, b/152525426)टेक्स्ट से जुड़ी कार्रवाइयां अब फ़ोकस की जांच अपने-आप करती हैं (I13777, b/179648629)
हटाया गया
runBlockingWithManualClock(I15cdc, b/179664814)Modifier.verticalScroll()/horizontalScroll() में स्क्रोल की पोज़िशन को अब Ints के तौर पर दिखाया जाता है (I81298)
smoothScrollBy और scrollBy तरीकों के पैकेज को
androidx.compose.foundation.gestures.*(I3f7c1, b/175294473) में बदला गयाFlingConfig का नाम बदलकर FlingBehavior कर दिया गया है. अब इसमें पहले से तय किए गए Decays के बजाय, सस्पेंड ऐनिमेशन को पसंद के मुताबिक बनाने की सुविधा मिलती है. (I02b86, b/175294473)
साइज़ मॉडिफ़ायर के नाम बदल दिए गए हैं. Modifier.width/height/size का नाम बदलकर requiredWidth/requiredHeight/requiredSize कर दिया गया है. Modifier.preferredWidth/preferredHeight/preferredSize का नाम बदलकर width/height/size कर दिया गया है. (I5b414)
defaultMinSizeConstraints का नाम बदलकर defaultMinSize कर दिया गया है. (I4eaae)
Modifier.tapGestureFilter को हटा दिया गया है. इसके बजाय,
Modifier.pointerInput { detectTapGestures(...) }का इस्तेमाल करें. (I266ed, b/175294473)पॉइंटर इनपुट सिस्टम से, आंशिक तौर पर इस्तेमाल किए गए इवेंट को हटा दिया गया है. कुछ हिस्से के इस्तेमाल को मैनेज करने के लिए, Modifier.nestedScroll का इस्तेमाल करने का सुझाव दिया जाता है. (Ie9c9b)
ओरिएंटेशन को फ़ाउंडेशन पैकेज में ले जाया गया है. VelocirtTracker को ui.gesture से ui.input.pointer में ले जाया गया है. (Iff4a8, b/175294473)
AnimationClockObservable और इसकी सबक्लास हटा दी गई हैं. AnimatedFloat को हटा दिया गया है. (Icde52, b/177457083)
drawerState.open() और drawerState.close() अब सस्पेंडिंग फ़ंक्शन हैं. कंपोज़िशन का स्कोप पाने के लिए, rememberCoroutineScope() का इस्तेमाल करें, ताकि उन्हें कॉल किया जा सके (I16f60, b/175294473)
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)
Modifier.scrollable में बदलाव किया गया है. अब यह ScrollableController क्लास के बजाय, स्क्रोल किए जा सकने वाले इंटरफ़ेस का इस्तेमाल करता है (I4f5a5, b/174485541, b/175294473)
Modifier.draggable अब एक सामान्य लैम्ब्डा के बजाय DraggableState स्वीकार करता है.
rememberDraggableState { delta -> }की मदद से, पहले जैसा व्यवहार पाने के लिए स्टेट बनाई जा सकती है (Ica70f, b/175294473)इंट्रिंसिक साइज़ के लिए ज़रूरी साइज़िंग के लिए, requiredWidth(IntrinsicSize) और requiredHeight(IntrinsicSize) मॉडिफ़ायर जोड़े गए. (I0a6b4)
emptyContent()को हटा दिया गया है. इसके बजाय,{}का इस्तेमाल करें. (Idb33f, b/179432510)पहले बंद किए जा चुके कुछ एपीआई (Ice5da, b/178633932) मिटा दिए गए हैं
गड़बड़ियां ठीक की गईं
- TextField पर, SoftwareKeyboardController इंटरफ़ेस को बदलने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I658b6, b/168778053)
वर्शन 1.0.0-alpha12
10 फ़रवरी, 2021
androidx.compose.foundation:foundation:1.0.0-alpha12 और androidx.compose.foundation:foundation-layout:1.0.0-alpha12 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha12 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Modifier.pointerInput को अब यह बताने के लिए remember कुंजियों की ज़रूरत होती है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोराउटीन को कब रीस्टार्ट करना चाहिए. (I849cd)
- टेस्टिंग से जुड़ा अपडेट: hasText() फ़ंक्शन, टेक्स्ट फ़ील्ड (Iab803) में इनपुट और लेबल/हिंट/प्लेसहोल्डर, दोनों तरह के टेक्स्ट की जांच करेगा
- PaddingValues.Absolute को जोड़ा गया है. इसका इस्तेमाल, PaddingValues को स्वीकार करने वाले एपीआई में किया जा सकता है. (Ia5f30)
- onImeActionPerformed को बंद कर दिया गया है. इसके बजाय, KeyboardActions का इस्तेमाल करें (If0bbd, b/179071523)
- ImageBitmap और ImageVector के साथ नाम रखने के तरीकों को बेहतर तरीके से मैच करने के लिए, ImagePainter का नाम बदलकर BitmapPainter कर दिया गया है, ताकि यह VectorPainter के जैसा हो. (Iba381, b/174565889)
- सबस्ट्रिंग टेस्ट करने वाले बेहतर एपीआई. अब सबस्ट्रिंग को तर्क के तौर पर इस्तेमाल किया जा सकता है (Icbe78)
InfiniteAnimationPolicyको-रूटीन कॉन्टेक्स्ट एलिमेंट जोड़ा गया है. इसका इस्तेमाल हमेशा लूप में चलने वाले ऐनिमेशन में किया जाएगा. डिफ़ॉल्ट रूप से कोई नीति इंस्टॉल नहीं की जाती. हालांकि,ComposeTestRuleके साथ टेस्ट चलाने पर ऐसा होता है. (I50ec4, b/151940543)- Animatable.snapTo और Animatable.stop अब सस्पेंड फ़ंक्शन हैं (If4288)
- ComponentActivity.setContent को androidx.activity:activity-compose मॉड्यूल में androidx.activity.compose.setContent पर ले जाया गया है. (Icf416)
- डिस्ट्रक्चरिंग और copy() तरीकों को उन क्लास से हटा दिया गया है जहां इनका इस्तेमाल बहुत कम किया जाता था. (I26702, b/178659281)
LazyColumn/LazyRow के लिए कस्टम कुंजियों का इस्तेमाल करने की सुविधा जोड़ी गई. इससे हमें आइटम के क्रम को फिर से लगाने की प्रोसेस को बेहतर तरीके से मैनेज करने में मदद मिलती है. इसलिए, remember {} ब्लॉक में सेव किया गया स्टेट, आइटम के साथ ही ट्रांसफ़र हो जाएगा. ऐसा तब होगा, जब आइटम को फिर से क्रम में लगाया जाएगा या उसे बीच से हटाया जाएगा.
LazyColumn { items(users, key = { user -> user.id }) { ... } }Indication#createInstance को @Composable के तौर पर बदला गया है. साथ ही, LocalIndication को () -> Indication के बजाय, Indication के तौर पर बदला गया है. (I5eeea, b/157150564)
Constraints.enforceकोConstraints.constrainसे बदल दिया गया है. (I8b8ea)loadFontResource का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, fontResource का इस्तेमाल करें. imageResource, loadImageResource, vectorResource, और loadVectorResource अब काम नहीं करते. इसके बजाय, painterResource का इस्तेमाल करें. (I6b809)
परफ़ॉर्मेंस को बेहतर बनाने के लिए, ScrollAxisRange सिमैंटिक अब सीधे तौर पर फ़्लोट वैल्यू के बजाय, फ़्लोट वैल्यू दिखाने वाले लैम्डा लेता है. (If4a35, b/178657186)
सुलभता के लिए, टेक्स्ट फ़ील्ड के ऐसे टेक्स्ट को मार्क करने के लिए EditableText सिमैंटिक्स जोड़े गए हैं जिनमें बदलाव किया जा सकता है. साथ ही, सिमैंटिक्स की जांच करने के लिए, इससे जुड़ी टेस्ट के तरीके जोड़े गए हैं (I8e07a)
Modifier.clickable में अब डबल और ज़्यादा देर तक क्लिक करने की सुविधा काम नहीं करती. इस सुविधा को पाने के लिए, Modifier.combinedClickable का इस्तेमाल करें. (Iafad1)
toIntPx() का नाम बदलकर roundToPx() कर दिया गया है. (I9b7e4, b/173502290)
IntBounds का नाम बदलकर IntRect कर दिया गया है. साथ ही, एपीआई को बेहतर बनाया गया है. (I1f6ff)
Modifier.dragGestureFilter अब काम नहीं करता है. इसके बजाय,
Modifier.pointerInput { detectDragGestures (...)}का इस्तेमाल करें. इसके अलावा, एक ऐक्सिस पर ड्रैग करने के लिए Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473)Ambients का नाम बदलकर, Ambient -> CompositionLocal के नाम से मैच किया गया. पहले, ऐंबिएंट का नाम AmbientFoo होता था. अब कंपोज़िशन लोकल का नाम LocalFoo है. (I2d55d)
चुने गए हिस्से को फ़ाउंडेशन में ले जाया गया. (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)
ऐनिमेशन में चलने का समय अब नैनोसेकंड में बदल गया है (If776a)
@ComposableContract को बंद कर दिया गया है. इसके बजाय, तीन अन्य एनोटेशन का इस्तेमाल किया जा सकता है.
@ComposableContract(restartable = false)को@NonRestartableComposableबनाया गया है@ComposableContract(readonly = true)को@ReadOnlyComposableबनाया गया है@ComposableContract(preventCapture = true)को@DisallowComposableCallsबनाया गया है@ComposableContract(tracked = true)को हटा दिया गया है. (I60a9d)emptyContent()और(@Composable () -> Unit).orEmpty()यूटिलिटी को बंद कर दिया गया है, क्योंकि अब इनसे परफ़ॉर्मेंस पर कोई सकारात्मक असर नहीं पड़ता या इनकी कोई वैल्यू नहीं है (I0484d)अब रीकंपोज़र बंद किए जा सकते हैं. बंद किए गए कंपोज़र, कंपोज़िशन की चाइल्ड कोरूटीन पूरी होने तक कंपोज़िशन जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)
LazyVerticalGrid से जुड़े एपीआई को एक्सपेरिमेंटल के तौर पर मार्क किया गया है (Ia53e3, b/178519862)
rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)
RestorableStateHolder का नाम बदलकर SaveableStateHolder कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. RestorableStateProvider इनर मेथड का नाम बदलकर SaveableStateProvider कर दिया गया है. जेनेरिक टाइप को हटा दिया गया है, ताकि सिर्फ़ Any को कुंजी के तौर पर पास किया जा सके. अब एक्सपेरिमेंटल एनोटेशन की ज़रूरत नहीं है. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), और autoSaver को androidx.compose.runtime.savedinstancestate से androidx.compose.runtime.saveable में ले जाया गया (I77fe6)
आर्टफ़ैक्ट 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)
RounderCornerShape, CutCornerShape, और CornerBasedShape पर मौजूद पैरामीटर के नाम बदल दिए गए हैं. पहले इनके नाम left/right थे, लेकिन अब start/end कर दिए गए हैं. ऐसा इसलिए किया गया है, ताकि आरटीएल दिशा में शेप अपने-आप मिरर हो सके. AbsoluteRounderCornerShape और AbsoluteCutCornerShape को उन मामलों के लिए पेश किया गया था जहां ऑटो-मिररिंग की ज़रूरत नहीं होती है. (I61040, b/152756983)
canDrag को Modifier.scrollable से हटा दिया गया है. (Id66e7, b/175294473)
Compose कंपाइलर प्लगिन जिस एपीआई को टारगेट करता है उसे रिफ़ैक्टर किया गया है. अब यह कॉंक्रीट क्लास के बजाय इंटरफ़ेस का इस्तेमाल करता है. इंटरफ़ेस अब टाइप पैरामीटर का इस्तेमाल नहीं करता.
यह एक इंटरनल बदलाव है. इससे सोर्स कोड की कंपैटिबिलिटी पर कोई असर नहीं पड़ना चाहिए. हालांकि, यह एक बाइनरी ब्रेकिंग चेंज है. (I3b922, b/169406779)
Modifier.scaleGestureFilter को हटा दिया गया है. इसके बजाय, Modifier.zoomable का इस्तेमाल करें. इसके अलावा,
Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1, b/175294473) का इस्तेमाल करेंAnimatedValue/Float अब सेवा में नहीं है. इसके बजाय, कृपया Animatable का इस्तेमाल करें. (I71345, b/177457083)
- CoreText और CoreTextField को सार्वजनिक एपीआई से हटाया गया
- SelectionContainer के ऐसे ओवरलोड को हटाया गया जो अब काम नहीं करता (I99c19)
स्क्रोल करने की सुविधा से जुड़े ऐसे फ़ंक्शन हटा दिए गए हैं जो अब काम नहीं करते पिछली रिलीज़ में किए गए बदलावों को जारी रखते हुए, स्क्रोल करने की सुविधा से जुड़े ऐसे फ़ंक्शन हटा दिए गए हैं जो अब काम नहीं करते. कृपया एक ही नाम वाले फ़ंक्शन को निलंबित करने के लिए, फ़ंक्शन को निलंबित करने वाले फ़ंक्शन में बदलें. rememberCoroutineScope() का इस्तेमाल करके, कोरूटीन स्कोप पाया जा सकता है. (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout को androidx.constraintlayout.compose.ConstraintLayout के पक्ष में बंद कर दिया गया है. आपको
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01पर निर्भरता जोड़नी होगी. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, और pressIndicaitonGestureFilter अब काम नहीं करते. इसके बजाय, Modifier.clickable या Modifier.pointerInput के साथ detectTapGestures फ़ंक्शन का इस्तेमाल करें. (I6baf9, b/175294473)
Recomposer.current()को हटा दिया गया है. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner की मदद से चलाए जाने वाले, विंडो के दायरे में आने वाले Recomposers को लेज़ी तरीके से बनाता है. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)Recomposer.runningRecomposers अब प्रोसेस में चल रही कंपोज़िशन की स्थिति को देखने के लिए, read-only RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. Recomposer.current() के बजाय इस एपीआई का इस्तेमाल करें. इसे अब बंद कर दिया गया है. (If8ebe)
वर्शन 1.0.0-alpha11
28 जनवरी, 2021
androidx.compose.foundation:foundation:1.0.0-alpha11 और androidx.compose.foundation:foundation-layout:1.0.0-alpha11 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
scrollBy के नॉन-सस्पेंड वर्शन को बंद करें, scrollTo के नॉन-सस्पेंड वर्शन को हटाएं
हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने और स्क्रोलिंग के खत्म होने का इंतज़ार करने के लिए, निलंबित फ़ंक्शन का इस्तेमाल करें. इस बदलाव के तहत, हम इन फ़ंक्शन के ऐसे वर्शन को बंद कर रहे हैं जिन्हें निलंबित नहीं किया जा सकता और/या उन्हें हटा रहे हैं. (Ie9ced)
non-suspend smoothScrollBy को बंद कर दिया गया है हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने और स्क्रोल पूरा होने का इंतज़ार करने के लिए, सस्पेंड फ़ंक्शन का इस्तेमाल करें. हम इस बदलाव के तहत, इन फ़ंक्शन के ऐसे वर्शन को बंद कर रहे हैं जिन्हें निलंबित नहीं किया जा सकता. (I12880)
इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा देने वाला पैरामीटर जोड़ा गया है. इसका इस्तेमाल, सुलभता सेवाओं (I2ac4c) को जानकारी देने के लिए किया जाता है
BasicTextField को 'decorationBox' नाम का एक नया पैरामीटर मिला है. इसकी मदद से, टेक्स्ट फ़ील्ड में आइकॉन, प्लेसहोल्डर, लेबल वगैरह जोड़े जा सकते हैं. साथ ही, इसके हिट टारगेट एरिया को बढ़ाया जा सकता है. (I16996)
canDrag पैरामीटर को Modifier.draggable (Ic4bec, b/175294473) से हटा दिया गया है
FlingConfig को स्वीकार करने वाले AnimatedFloat.fling को हटा दिया गया है. इसके बजाय, कृपया suspend Animatable.animateDecay का इस्तेमाल करें. (I4659b, b/177457083)
data classको इन क्लास से हटा दिया गया है:- InlineTextContent
- LocaleList
- (I605c7)
अब क्लिक किए जा सकने वाले, टॉगल किए जा सकने वाले, और चुने जा सकने वाले एलिमेंट को कंपोज़िशन के बाहर बनाया जा सकता है (I0a130, b/172938345, b/175294473)
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)AbsoluteArrangement को हटा दिया गया है. (Iffa96, b/177641870)
Box में propagateMinConstraints पैरामीटर जोड़ा गया है. इससे यह तय किया जा सकता है कि आने वाली कम से कम सीमाएं, Box के कॉन्टेंट को पास की जानी चाहिए या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. (I0125b, b/152613457)
गड़बड़ियां ठीक की गईं
- SideEffect और DisposableEffect API के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है (If760e)
- WithConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया है और इसे foundation.layout में ले जाया गया है. (I9420b, b/173387208)
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)
अरेंजमेंट इंटरफ़ेस के लिए, डेंसिटी अब रिसीवर स्कोप है. (I18aad)
TextFieldValue, AnnotatedString को स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. फ़िलहाल, एक से ज़्यादा स्टाइल में टेक्स्ट में बदलाव करने की सुविधा लागू नहीं की गई है.
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
initialको हटाया गया. (I326d5)
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
invalidate और compositionReference() को अब बंद कर दिया गया है. इनके बजाय, currentRecomposeScope और rememberCompositionReference का इस्तेमाल करें. (I583a8)
AnnotatedString को बदलकर kotlin.CharSequence से एक्सटेंड किया गया है. इसलिए, length और subSequence अब इंस्टेंस फ़ंक्शन हैं. साथ ही, एक्सटेंशन फ़ंक्शन हटा दिए गए हैं. (Iaf429)
अवधि और अपटाइम को लंबे मिलीसेकंड से बदल दिया जाएगा. साथ ही, यह चरण उन क्लास पर पॉइंटर इनपुट की निर्भरता को हटा देता है. (Ia33b2, b/175142755, b/177420019)
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)TransformedText.transformedText का नाम बदलकर TransformedText.text कर दिया गया है
- TransformedText अब डेटा क्लास नहीं है (Ie672a)
ये क्लास अब डेटा क्लास नहीं हैं:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
monotonicFrameAnimationClockOf के एक्सपेरिमेंटल तरीकों को हटाया गया (Ib753f, b/170708374)
ग्लोबल कोऑर्डिनेट के तरीकों को बंद कर दिया गया है. साथ ही, विंडो पर आधारित कोऑर्डिनेट के नए तरीके उपलब्ध कराए गए हैं. (Iee284)
ImeAction.NoAction के बजाय, कृपया ImeAction.None का इस्तेमाल करें
- कृपया ImeAction.Unspecified (Ie1bcc) के बजाय ImeAction.Default का इस्तेमाल करें
FocusRequester.createRefs को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है, क्योंकि इसमें बदलाव हो सकता है. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden का नाम बदलकर invisibleToUser कर दिया गया है. साथ ही, इसे @ExperimentalComposeUiApi के तौर पर मार्क किया गया है. AccessibilityRangeInfo का नाम बदलकर ProgressBarRangeInfo कर दिया गया है. stateDescriptionRange का नाम बदलकर progressBarRangeInfo कर दिया गया है. AccessibilityScrollState का नाम बदलकर ScrollAxisRange कर दिया गया है. horizontalAccessibilityScrollState का नाम बदलकर horizontalScrollAxisRange कर दिया गया है. verticalAccessibilityScrollState का नाम बदलकर verticalScrollAxisRange कर दिया गया है. (Id3148)
VisualTransformation को फ़ंक्शनल इंटरफ़ेस के तौर पर बदला गया (I3bba4)
टेस्टिंग में TestCoroutineDispatcher का इस्तेमाल करें (I532b6)
PointerInputData को हटा दिया गया है. साथ ही, PointerInputChange में बदलाव किया गया है, ताकि इसमें PointerInputData के सभी फ़ील्ड शामिल किए जा सकें. PointerInputEvent और PointerInputEventData को इंटरनल बना दिया गया है, क्योंकि इनका इस्तेमाल किसी भी सार्वजनिक एपीआई में नहीं किया जाता है. (Ifff97, b/175142755)
TextInputService.onStateUpdated का नाम बदलकर updateState कर दिया गया है (Id4853)
डिसप्ले साइज़ को हटाएं, क्योंकि इसका इस्तेमाल नहीं किया जाना चाहिए. आम तौर पर, onRoot() या कम से कम विंडो के साइज़ का इस्तेमाल करना बेहतर होता है. (I62db4)
वर्शन 1.0.0-alpha10
13 जनवरी, 2021
androidx.compose.foundation:foundation:1.0.0-alpha10 और androidx.compose.foundation:foundation-layout:1.0.0-alpha10 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- ImeOptions और KeyboardOptions अब डेटा क्लास नहीं हैं (I3c898, b/168684531)
- VisualTransformation API में हुए बदलाव
- OffsetMap का नाम बदलकर OffsetMapping किया गया
- OffsetMapping.identityOffsetMap का नाम बदलकर OffsetMapping.Identity कर दिया गया है
- PasswordTransformation अब डेटा-क्लास नहीं है
- OffsetMapping को उसकी फ़ाइल में ले जाया गया
- (I0bdf3)
- EditOperations API में हुए बदलाव
- EditOperation का नाम बदलकर EditCommand कर दिया गया है
- EditOperation के कॉन्क्रीट इंप्लीमेंटेशन के लिए, कमांड सफ़िक्स जोड़ा गया
- EditCommand अब डेटा क्लास नहीं हैं
- EditOperation.process फ़ंक्शन का नाम बदलकर applyTo कर दिया गया है
- InputEventListener का नाम बदलकर InputEventCallback कर दिया गया है
- (I0a366)
- वेलोसिटी में बदलाव करके, उसके कॉम्पोनेंट और गणितीय ऑपरेशन शामिल किए गए हैं. (Ib0447)
- @ExperimentalTesting का नाम बदलकर @ExperimentalTestApi कर दिया गया है, ताकि यह एक्सपेरिमेंटल एपीआई के एनोटेशन (Ia4502, b/171464963) के साथ मेल खाए
- LazyColumn/LazyRow के लिए, एक्सपेरिमेंट के तौर पर stickyHeader तरीका जोड़ा गया (I0a81d)
- Color.useOrElse() का नाम बदलकर Color.takeOrElse() कर दिया गया (Ifdcf5)
- TestUiDispatcher को बंद कर दिया गया है. Dispatchers.Main का इस्तेमाल करें (Ic171f, b/175385255)
- Add Toggle to foundation Strings.kt (I4a5b7, b/172366489)
- nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बना दिया गया. equals फ़ंक्शन को लागू करने के लिए, nativeClass के अपडेट किए गए इस्तेमाल को 'is MyClass' के तौर पर इस्तेमाल किया गया है. (I4f734)
- FlowRow और FlowColumn अब काम नहीं करते हैं. इसके बजाय, कृपया कस्टम लेआउट का इस्तेमाल करें. (I09027)
- Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
- SelectionRegistrar.notifySelectableChange को पेश किया गया है. इससे SelectionManager को Selectable अपडेट के बारे में सूचना दी जा सकेगी. (I6ff30, b/173215242)
fun Dp.isFinite()कोval Dp.isFinite(I50e00) में बदला गया- Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
- Unspecified कॉन्सटेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse को जोड़ा गया है. (I93f7b, b/174310811)
गड़बड़ियां ठीक की गईं
- कोरूटीन पर आधारित नया एपीआई
Animatable, जो यह पक्का करता है कि इसके ऐनिमेशन एक-दूसरे से अलग हों. मल्टी-डाइमेंशनल डेके ऐनिमेशन के लिए, नया DecayAnimationSpec (I820f2, b/168014930) - बंद किए गए और सिर्फ़ पढ़ने के लिए उपलब्ध टेक्स्ट फ़ील्ड के लिए सहायता जोड़ी गई (I35279, b/171040474, b/166478534)
animate()को अबanimateAsState()से बदल दिया गया है. यहTके बजायState<T>दिखाता है. इससे बेहतर परफ़ॉर्मेंस मिलती है, क्योंकि अमान्य होने के दायरे को उस जगह तक सीमित किया जा सकता है जहां राज्य की वैल्यू पढ़ी जाती है. (Ib179e)- सेमैंटिक्स रोल एपीआई जोड़ें. साथ ही, क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले SemanticsModifier में Role को पैरामीटर के तौर पर जोड़ें. Modifier.progressSemantics को बदला गया है, ताकि Slider भी इसका इस्तेमाल कर सके. (I216cd)
- अब keyEvent.nativeKeyEvent के ज़रिए, native keyEvent को ऐक्सेस किया जा सकता है (I87c57, b/173086397)
वर्शन 1.0.0-alpha09
16 दिसंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha09 और androidx.compose.foundation:foundation-layout:1.0.0-alpha09 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
स्क्रोल किया जा सकने वाला इंटरफ़ेस जोड़ना
इससे ScrollState और LazyListState को एक सामान्य टाइप के तौर पर इस्तेमाल किया जा सकता है. इससे, दोनों टाइप में कस्टम स्क्रोलिंग लागू की जा सकती है.
इससे smoothScrollBy को Scrollable पर एक्सटेंशन फ़ंक्शन में भी ले जाया जाता है. इससे इस सुविधा का फ़ायदा मिलता है. (I2153b)
LazyVerticalGrid जोड़ा गया है. (I17267, b/162213211)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed, और LazyRowForIndexed को बंद कर दिया गया है. इसके बजाय, LazyColumn और LazyRow का इस्तेमाल करें (I5b48c)
पॉइंटर इनपुट एपीआई को निलंबित करने के लिए, HandlePointerInputScope का नाम बदलकर AwaitPointerEventScope और handlePointerInput() का नाम बदलकर awaitPointerEventScope() कर दिया गया है. (Idf0a1, b/175142755)
LazyListState.layoutInfo को जोड़ा गया है. इससे, फ़िलहाल दिख रहे आइटम के साइज़ और ऑफ़सेट की सूची दिखती है (If8678, b/170472532)
ExperimentalPointerInput एनोटेशन (Ia7a24) हटाया गया
TextFields के लिए, InteractionState की सुविधा जोड़ी गई है. (I61d91)
LazyColumn/Row के लिए reverseLayout पैरामीटर जोड़ें. जब
trueहोगा, तब आइटम नीचे से ऊपर की ओर कंपोज़ किए जाएंगे. साथ ही,LazyListState.firstVisibleItemIndex == 0का मतलब होगा कि पहला आइटम सबसे नीचे मौजूद है. (I552ae, b/166589935)LazyColumn के लिए, verticalArrangement पैरामीटर जोड़ा गया. LazyRow के लिए horizontalArrangement पैरामीटर जोड़ा गया. आइटम के बीच में जगह जोड़ने और आइटम की संख्या कम होने पर उन्हें व्यवस्थित करने के लिए, लेआउट का इस्तेमाल किया जाता है. (Icf79a, b/170394300)
detectMultitouchGestures अब एक ही कॉलबैक का इस्तेमाल करता है. इसमें सेंट्रॉइड, पैन, ज़ूम, और रोटेट पैरामीटर शामिल होते हैं. (Ie6e1c)
DrawScope के साथ रखने के लिए, ContentDrawScope को ui-graphics मॉड्यूल में ले जाया गया. (Iee043, b/173832789)
गड़बड़ियां ठीक की गईं
- ऑफ़सेट मॉडिफ़ायर में लैम्ब्डा अब फ़्लोट के बजाय 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)
Modifier.focusObserver काम नहीं कर रहा. इसके बजाय, Modifier.onFocusChanged या Modifier.onFocusEvent का इस्तेमाल करें (I30f17, b/168511863, b/168511484)
Autofill API अब एक्सपेरिमेंट के तौर पर उपलब्ध है. इसके लिए, ऑप्ट-इन करना ज़रूरी है (I0a1ec)
FocusRequester इंस्टेंस बनाने के लिए, डिस्ट्रक्चरिंग डिक्लेरेशन जोड़े गए (I35d84, b/174817008)
accessibilityLabel का नाम बदलकर contentDescription कर दिया गया है. accessibilityValue का नाम बदलकर stateDescription कर दिया गया है. (I250f2)
SelectionRegistrar में कई नए फ़ंक्शन जोड़े गए हैं. साथ ही, onPositionChange का नाम बदलकर notifyPositionChange कर दिया गया है. (Ifbaf7)
AndroidOwner ने इंटरनल टेस्ट के लिए उपलब्ध कराया (Ibcad0, b/170296980)
InfiniteRepeatableSpec बनाने के लिए, नया infiniteRepeatable फ़ंक्शन (I668e5)
Applierइंटरफ़ेस को बदल दिया गया है, ताकि ट्री को ऊपर से नीचे की ओर बनाने के बजाय, नीचे से ऊपर की ओर बनाना आसान हो.insert()तरीके का नाम बदलकरinsertTopDown()कर दिया गया है.insertBottomUp()नाम का एक नया तरीका जोड़ा गया है.बदलाव करने वाला ऐप्लिकेशन,
insertTopDown()याinsertBottomUp()का इस्तेमाल करके, ट्री में नोड डालता है. यह इस बात पर निर्भर करता है कि कौनसी कार्रवाई बेहतर तरीके से काम करती है.कुछ ट्री, जैसे कि
LayoutNodeऔरView, को टॉप-डाउन की तुलना में बॉटम-अप तरीके से बनाना ज़्यादा आसान होता है. इस बदलाव से पहले, बॉटम-अप को लागू करने के लिए इंसर्ट के स्टैक की ज़रूरत होती थी. इसे हर उस ऐप्लिकेशन पर कॉपी करना पड़ता था जिसके लिए परफ़ॉर्मेंस के लिए बॉटम-अप कंस्ट्रक्शन की ज़रूरत होती थी. इस बदलाव के साथ, ट्री को बॉटम-अप बनाने के लिएApplierओवरराइडinsertBottomUp()और टॉप-डाउन बनाने के लिएinsertTopDown()का इस्तेमाल किया जाता है. (Icbdc2)Painter ऑब्जेक्ट को ओपेक तरीके से लोड करने के लिए, painterResource API जोड़ा गया है. ये ऑब्जेक्ट, रास्टर इमेज फ़ॉर्मैट (जैसे कि PNG) या VectorDrawable से लोड किए जा सकते हैं. उपयोगकर्ताओं को अब पहले से यह तय करने की ज़रूरत नहीं है कि किस तरह की ऐसेट का इस्तेमाल करना है. वे इस तरीके को कॉल करके, Painter ऑब्जेक्ट पा सकते हैं. इसका इस्तेमाल Image कंपोज़ेबल या पेंटर मॉडिफ़ायर में किया जा सकता है. (I2c703, b/173818471)
AnnotatedString बनाने के लिए, buildAnnotatedString फ़ैक्ट्री फ़ंक्शन जोड़ा गया. annotatedString बनाने वाले फ़ंक्शन को अब इस्तेमाल नहीं किया जा सकता. (Idfe0b)
वर्शन 1.0.0-alpha08
2 दिसंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha08 और androidx.compose.foundation:foundation-layout:1.0.0-alpha08 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
CoreTextFieldसेmaxLinesपैरामीटर को हटा दिया गया है. अगर आपको लाइनों की संख्या के हिसाब से टेक्स्ट फ़ील्ड की ऊंचाई को सीमित करना है, तो इसके बजायBasicTextFieldका इस्तेमाल करें. (Iec002)await*TouchSlop()तरीकों को बदलकर, पॉइंटर डाउन का पता न लगाने वाले तरीके में बदल दिया गया है. साथ ही, इनका नाम बदलकर*OrCancellationकर दिया गया है. साथ ही,orientationLockपैरामीटर की ज़रूरत भी नहीं है. (Ie96e1)- कंपोज़ेबल लैम्डा पैरामीटर के नाम और पोज़िशन के लिए, लिंट चेक जोड़ा गया है. इससे Compose के दिशा-निर्देशों के मुताबिक जांच की जा सकेगी.
इसके अलावा, कुछ एपीआई को माइग्रेट किया गया है. इनमें से कुछ में, ट्रेलिंग लैम्डा के लिए
childrenके बजायcontentका इस्तेमाल किया गया है. ऐसा, लिंट चेक और दिशा-निर्देशों के मुताबिक किया गया है. (Iec48e) foundation:foundation-textएपीआई कोfoundation:foundationमें ले जाया गया. पैकेज का स्ट्रक्चर पहले जैसा ही रहा (Id3eb2)- मल्टीटच जेस्चर का पता लगाने वाला नया टूल. इसमें रोटेशन, ज़ूम, और पैनिंग का पता लगाने वाले हेल्पर शामिल हैं. (Ic459d)
- ड्रैग जेस्चर का पता लगाने वाला नया डिटेक्टर, जो पॉइंटर इनपुट एपीआई को निलंबित करता है. इसमें ओरिएंटेशन लॉक करना भी शामिल है. (Icef25)
- VectorAsset का नाम बदलकर ImageVector कर दिया गया है VectorAsset को Builder में ले जाया गया है और इसका नाम बदलकर ImageVector की इनर क्लास कर दिया गया है. ऐसा API काउंसिल के दिशा-निर्देशों के मुताबिक किया गया है. VectorAssetBuilder का टाइपएलियास जोड़ा गया, ताकि इसे ImageVector.Builder से लिंक किया जा सके. (Icfdc8)
- ImageAsset और इससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया है. (Ia2d99)
- फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (I6f05c) में ले जाया गया
को-रूटीन पर आधारित स्क्रोलिंग एपीआई जोड़े गए:
इसमें LazyListState.snapToItem और LazyListState.smoothScrollBy को जोड़ा गया है. साथ ही, स्क्रोल कंट्रोल के लिए लोअर-लेवल एपीआई भी जोड़े गए हैं. ये एपीआई, स्क्रोलिंग को कंट्रोल करने के लिए निलंबित इंटरफ़ेस उपलब्ध कराते हैं. यह इंटरफ़ेस, स्क्रोलिंग पूरी होने तक इंतज़ार करता है और फिर वापस आता है. (Ie5642)
BasicTextField, TextField, और OutlinedTextField में एक singeLine पैरामीटर जोड़ा गया. टेक्स्ट फ़ील्ड को एक ही लाइन में दिखाने के लिए, इस पैरामीटर को सही पर सेट करें. इस लाइन को हॉरिज़ॉन्टली स्क्रोल किया जा सकता है. (I57004, b/168187755)
टैप, डबल-टैप, देर तक दबाकर रखने, और दबाने के इंडिकेशन के लिए जेस्चर डिटेक्टर जोड़े गए. इसके लिए, सस्पेंडिंग पॉइंटर इनपुट का इस्तेमाल किया गया. कुछ यूटिलिटी भी जोड़ी गई हैं, ताकि डेवलपर आसानी से अपने जेस्चर डिटेक्टर लिख सकें. (I00807)
Modifier.focusable में, फ़ाउंडेशन में जोड़े जाने की ज़रूरत है. इसका इस्तेमाल, किसी कॉम्पोनेंट में फ़ोकस करने की सुविधा जोड़ने के लिए किया जाता है. साथ ही, इससे सही सिमैंटिक और ऐक्सेसिबिलिटी मिलती है. (I41eb9, b/152525426, b/162865824)
पहले से बंद किए गए एपीआई हटा दिए गए हैं: बॉर्डर हटा दिया गया है. इसके बजाय, BorderStroke का इस्तेमाल करें. Modifier.drawBorder को हटा दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Modifier.gravity को हटा दिया गया है. इसके बजाय, Modifier.align का इस्तेमाल करें. स्टैक हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (I32c2b, b/172470874)
AbsoluteArrangement का नाम बदलकर Arrangement.Absolute कर दिया गया है. (If26f2)
गड़बड़ियां ठीक की गईं
- DrawModifier API को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया है. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि इसमें टाइपएलियास/सहायता करने वाले तरीके शामिल किए जा सकें. इससे, पुराने एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद मिलेगी. (Id6044, b/173834241)
- Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है साथ ही, एपीआई काउंसिल के सुझाव के मुताबिक, इससे जुड़ी क्लास को भी GraphicsLayer में अपडेट कर दिया गया है. (I0bd29, b/173834241)
<T>को SubcomposeLayout के एलान से हटा दिया गया है. अब इसका इस्तेमाल, टाइप तय किए बिना किया जा सकता है. (Ib60c8)- PointerInputData के अपटाइम और पोजीशन फ़ील्ड को नॉन-नलेबल बनाया गया. (Id468a)
- MaterialTheme अब चुनने के हैंडल और चुनने के बैकग्राउंड के लिए सही रंग सेट करता है. नॉन-मटीरियल ऐप्लिकेशन, AmbientTextSelectionColors का इस्तेमाल करके, चुने गए टेक्स्ट के रंगों को अपनी पसंद के मुताबिक बना सकते हैं. (I1e6f4, b/139320372, b/139320907)
- Box के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
- offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया है. अब ये State के बजाय लैम्डा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
- WindowManager.isWindowFocused को जोड़ा गया है. इससे यह पता चलता है कि होस्ट विंडो फ़ोकस में है या नहीं. साथ ही, WindowFocusObserver को जोड़ा गया है. यह onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
- TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
- TextFieldValue API अपडेट किया गया
- TextFieldValue.composition को रीड ओनली बनाया गया
- अमान्य सिलेक्शन रेंज (I4a675, b/172239032) के लिए, हटाया गया अपवाद
Ambientसफ़िक्स वाले, बंद किए गए ऐंबिएंट के नाम बदले गए हैं. साथ ही, उन्हें ऐंबिएंट से शुरू होने वाली नई प्रॉपर्टी से बदल दिया गया है. इसके लिए, अन्य ऐंबिएंट और Compose API के दिशा-निर्देशों का पालन किया गया है. (I33440)- Android Typeface रैपर जोड़ा गया.
typefaceफ़ंक्शन के ज़रिए, Android टाइपफ़ेस लोड किया जा सकता है. जैसे,typeface(Typeface.DEFAULT).typefaceFromFontFamily()का नाम बदलकरtypeface()(I52ab7) भी कर दिया गया है - लिंट चेक जोड़ा गया है. इससे यह पता चलेगा कि मॉडिफ़ायर फ़ैक्ट्रियां,
androidx.compose.ui.composed {}के तौर पर मार्क होने के बजाय, अंदरूनी तौर परandroidx.compose.ui.composed {}का इस्तेमाल करती हैं.@Composable(I3c4bc) - लिंट चेक जोड़ा गया है. इससे यह पता चलता है कि मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर पर एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें आसानी से एक साथ जोड़ा जा सके. (I07981)
- सेमैंटिक्स आर्ग्युमेंट mergeAllDescendants का नाम बदलकर mergeDescendants कर दिया गया है. (Ib6250)
- जांच में समय को कंट्रोल करने की सुविधा (TestAnimationClock और इसके इस्तेमाल) अब एक्सपेरिमेंट के तौर पर उपलब्ध है (I6ef86, b/171378521)
- ui-test मॉड्यूल और उसके स्टब (I3a7cb) हटाएं
- TextUnit.Inherit का नाम बदलकर TextUnit.Unspecified कर दिया गया है, ताकि यह अन्य यूनिट के साथ काम कर सके. (Ifce19)
- अलाइनमेंट इंटरफ़ेस को अपडेट किया गया है और अब यह काम कर रहा है. (I46a07, b/172311734)
foundation:foundation-textमॉड्यूल कोfoundation:foundation(Idac0f) में मर्ज कर दिया गया है- place(Offset) और placeRelative(Offset) को बंद कर दिया गया है. इसके बजाय, int ऑफ़सेट के साथ ओवरलोड का इस्तेमाल करें (I4c5e7)
LayoutIdParentDataके लिए,idका नाम बदलकरlayoutIdकर दिया गया है.Measurable.idका नाम बदलकरMeasurable.layoutIdकर दिया गया है. (Iadbcb, b/172449643)
वर्शन 1.0.0-alpha07
11 नवंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07, और androidx.compose.foundation:foundation-text:1.0.0-alpha07 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Modifier.fillMaxSize[Width|Height]की तरह, अब हमLazyColumn/Row(I797e2, b/166586426) के स्कोप मेंModifier.fillParentMaxSize[Width|Height]में फ़्रैक्शन का इस्तेमाल करने की सुविधा देते हैंKeyboardOptions.toImeOptionsको सार्वजनिक एपीआई से हटाया गया. (Ic2e45)- AmbientTextStyle, ProvideTextStyle, और AmbientContentColor अब काम नहीं करते हैं. इसके बजाय, Material लाइब्रेरी में उपलब्ध नए वर्शन का इस्तेमाल करें. नॉन-मटेरियल ऐप्लिकेशन के लिए, आपको थीमिंग के लिए अपने हिसाब से डिज़ाइन सिस्टम बनाना चाहिए. इसका इस्तेमाल आपके कॉम्पोनेंट में किया जा सकता है. (I74acc, b/172067770)
- foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू इस्तेमाल न करने वाले, सामान्य टेक्स्ट एपीआई के लिए androidx.compose.foundation.BasicText देखें. (If64cb)
- TextFields में maxLines जोड़ा गया (Ib2a5b)
- KeyboardOptions को स्वीकार करने के लिए, TextFields को अपडेट करें (Ida7f3)
- TextField में इस्तेमाल करने के लिए KeyboardOptions जोड़े गए (I9ca32)
- यह टेक्स्ट के लिए, BasicTextField के साथ-साथ BasicText को भी डिज़ाइन-अनओपिनिएटेड एपीआई के तौर पर जोड़ता है. (I28268)
- ExperimentalLazyDsl एनोटेशन हटा दिया गया है. अब LazyColumn/LazyRow का इस्तेमाल @OptIn को जोड़े बिना किया जा सकता है (Idab7a, b/166584730)
- BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
- CoreTextField और BaseTextField, दोनों की जगह BasicTextField को जोड़ा गया है (Id4cea)
- लेज़ी कॉलम आइटम/लेज़ी रो आइटम (I1d8a8) को हटाने का सुझाव दिया गया है
- साइज़िंग के लिए, इंट्रिंसिक मेज़रमेंट के लिए इस्तेमाल किए जाने वाले बंद किए गए कंपोज़ेबल हटा दिए गए हैं. (I18537, b/171811496)
- relativePaddingFrom का नाम बदलकर paddingFrom कर दिया गया है. पैडिंगफ़्रॉमबेसलाइन मॉडिफ़ायर जोड़ा गया है, ताकि लेआउट बाउंड से टेक्स्ट बेसलाइन तक की दूरी तय करने में आसानी हो. (I0440a, b/170633813)
- aspectRatio मॉडिफ़ायर में matchHeightConstraintsFirst पैरामीटर जोड़ा गया है. इसका इस्तेमाल, चौड़ाई के हिसाब से साइज़ तय करने से पहले, ऊंचाई के हिसाब से साइज़ तय करने वाले मॉडिफ़ायर को तय करने के लिए किया जा सकता है. (Ie7c43, b/155290593)
- DpConstraints को हटा दिया गया है. (I87884, b/171702471)
गड़बड़ियां ठीक की गईं
- ScaleFactor
inline क्लास को पेश किया गया है. इसका इस्तेमाल, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के लिए स्केल फ़ैक्टर को अलग-अलग दिखाने के लिए किया जाता है. इससे, नॉन-यूनिफ़ॉर्म स्केलिंग के इस्तेमाल के उदाहरणों को सपोर्ट किया जा सकेगा.
- ContentScale में computeScaleFactor तरीका जोड़ा गया
- ContentScale.FillBounds जोड़ा गया है, ताकि src के डाइमेंशन को डेस्टिनेशन के डाइमेंशन के हिसाब से स्ट्रेच किया जा सके.
- Size पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर मेथड जोड़े गए.
- (Ic96a6, b/172291582)
- captureToBitmap को captureToImage में ले जाया गया. (I86385)
- यह CoreText को @InternalTextApi के तौर पर मार्क करता है. इसके बजाय, BasicText का इस्तेमाल करें. (I6aaeb)
- KeyboardOptions का नाम बदलकर ImeOptions करें (I82f36)
- KeyboardType और ImeAction को KeyboardOptions में ले जाया गया (I910ce)
- CoreTextField को @InternalTextApi के तौर पर मार्क किया गया है. इसके बजाय BasicTextField का इस्तेमाल करें (Ie2469)
- ExperimentalSubcomposeLayoutApi एनोटेशन हटा दिया गया है. अब SubcomposeLayout का इस्तेमाल @OptIn (I708ad) को जोड़े बिना किया जा सकता है
- ui-test-junit4 मॉड्यूल जोड़ा गया (Ib91f8)
- Icon API को अपडेट किया गया है, ताकि Color.Unspecified को संभावित टिंट कलर के तौर पर इस्तेमाल किया जा सके. इससे, ColorFilter के बिना दी गई ऐसेट या पेंटर को ड्रा किया जा सकेगा. इससे पहले, Color.Unspecified का इस्तेमाल करके टिंटिंग को अनदेखा करने की कोशिश करने पर, पारदर्शी रंग से टिंट किया जाता था. इससे कुछ भी रेंडर नहीं होता था. (I049e2, b/171624632)
- MeasureResult को MeasureScope से बाहर ले जाया गया. (Ibf96d, b/171184002)
- लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.layout.ui में ले जाया गया है. (I0fa98, b/170475424)
- androidx.ui.test को androidx.compose.ui.test में ले जाया गया (I9ffdb)
- FirstBaseline और LastBaseline को androidx.compose.ui.layout पैकेज में ले जाया गया (Ied2e7)
- कॉलबैक के बिना SelectionContainer जोड़ा गया (Ibfadb)
- SelectionContainer में SelectionHandles की पोज़िशन के लिए टेस्ट जोड़े गए. (Ie93db)
- कीबोर्ड में ऑटो करेक्ट IME का विकल्प जोड़ा गया (I57b8d)
वर्शन 1.0.0-alpha06
28 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06, और androidx.compose.foundation:foundation-text:1.0.0-alpha06 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- androidx.compose.foundation.Icon को androidx.compose.material.Icon में ले जाया गया है. अगर आपको Material लाइब्रेरी का इस्तेमाल नहीं करना है, तो Painter के साथ Image कॉम्पोनेंट / Modifier.paint() का इस्तेमाल भी किया जा सकता है. (I9f622)
- Modifier.scrollable, ScrollableColumn, और LazyColumnFor में interactionState जोड़ा गया (I81566, b/169509805)
- RowScope में alignByBaseline जोड़ा गया है और alignWithSiblings का नाम बदलकर alignBy कर दिया गया है (I06503, b/170628732)
- बॉक्स को इनलाइन फ़ंक्शन बनाया गया था. (Ibce0c, b/155056091)
- CoreTextField में maxLines जोड़ा गया (Ibee58, b/143687793)
- CoreTextField में सॉफ़्ट रैप जोड़ा गया. (I21a4b)
गड़बड़ियां ठीक की गईं
- VectorPainter को बंद कर दिया गया है. अब इसकी जगह rememberVectorPainter का इस्तेमाल किया जा सकता है. इससे यह बेहतर तरीके से पता चलता है कि कंपोज़ेबल एपीआई, कंपोज़िशन के बीच डेटा को बनाए रखने के लिए, 'remember' का इस्तेमाल करता है. (Ifda43)
- ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
- CoreTextField में एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया (I72e6d)
- Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि इसका इस्तेमाल पूरे Compose में कैसे किया जाता है. दस्तावेज़ों को अपडेट किया गया है, ताकि यह बताया जा सके कि नेगेटिव कॉर्नर रेडियस को शून्य पर सेट किया जाता है. (I130c7, b/168762961)
- कंपोज़्ड मॉडिफ़ायर में, इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
- KeyboardCapitalization IME विकल्प जोड़ा गया (I8ac38)
- Rtl हैंडल की पोज़िशन ठीक करें. (I6e1e0)
- बदलाव: PointerInputFilter.onPointerEvent(...) से रिटर्न वैल्यू हटा दी गई है. इसकी वजह यह है कि पॉइंटर इवेंट में सिर्फ़ इस्तेमाल किए गए डेटा में बदलाव किया जा सकता है. PointerInputFilter.onPointerEvent(...) से डेटा वापस भेजने के बजाय, अब पास किए गए PointerEvents के इस्तेमाल किए गए डेटा में बदलाव किया जा सकता है. (I6acd0)
- चुने गए मेन्यू (Ief02b) में, 'सभी चुनें' विकल्प जोड़ा गया
वर्शन 1.0.0-alpha05
14 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05, और androidx.compose.foundation:foundation-text:1.0.0-alpha05 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- CoreTextField में अब कर्सर की सुविधा (Id23aa) काम करती है
contentColor() और currentTextStyle() एपीआई को बंद कर देता है. साथ ही, इनकी जगह AmbientContentColor और AmbientTextStyle ऐंबिएंट का इस्तेमाल करता है. किसी भी अन्य परिवेश की तरह, परिवेश की प्रॉपर्टी पर
.currentका इस्तेमाल करके, मौजूदा वैल्यू को ऐक्सेस किया जा सकता है. यह बदलाव इसलिए किया गया है, ताकि सभी प्लैटफ़ॉर्म पर एक जैसा अनुभव मिले. साथ ही, एक ही काम को पूरा करने के लिए कई तरीके न हों. इसके अलावा, कुछ ऐंबियंट प्रॉपर्टी के नाम बदले गए हैं, ताकि उनके मकसद के बारे में बेहतर तरीके से बताया जा सके. जैसे:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
गड़बड़ियां ठीक की गईं
- इनलाइन क्लास के लिए, सेंटिनल वैल्यू को स्टैंडर्ड बनाने के लिए, Color.Unset का नाम बदलकर Color.Unspecified कर दिया गया है. ऐसा इसलिए किया गया है, ताकि यह अन्य इनलाइन क्लास (I97611, b/169797763) के साथ काम कर सके
- कॉपी/चिपकाने/कट करने की सुलभता से जुड़ी कार्रवाइयां जोड़ी गईं (I6db4f)
- TextOverflow.None को जोड़ा गया है. जब ओवरफ़्लो की वैल्यू None होती है, तब टेक्स्ट अब ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने असल साइज़ की जानकारी देगा. (I175c9, b/158830170)
- Float.POSITIVE_INFINITY के बजाय, अपडेट किए गए Size.Unspecified पैरामीटर को Float.NaN पर सेट किया गया है. Painter के लागू किए गए अपडेट. इनसे यह जांच की जा सकेगी कि साइज़ की वैल्यू Size.Unspecified है या नहीं. साथ ही, यह भी जांच की जा सकेगी कि साइज़ की वैल्यू फ़ाइनल नहीं है. (I95a7e)
- पेजिंग कंपोज़ मॉड्यूल और पेजिंग इंटिग्रेशन जोड़ा गया (Ib85da)
- शून्य वैल्यू पाने के लिए, LazyListScope में बदलाव किया गया (I1765b)
- OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है. साथ ही, onPositioned() का नाम बदलकर onGloballyPositioned() कर दिया गया है. (I587e8, b/169083903)
- LazyColumn/Row के लिए सैंपल जोड़े गए (Idc16d)
- items और itemsIndexed तरीकों के लिए, emptyList (I06647) की अनुमति देने से जुड़ी समस्या को ठीक किया गया
- इंस्पेक्टर की जानकारी देने के लिए डीएसएल जोड़ें (Ic9a22)
- LongPress को Text में ले जाएं. (Iff2bc)
- टेक्स्ट में चुनने की सुविधा और डेमो बंद करें. (Ie7e97)
- ऐक्सेसिबिलिटी के लिए, AnnotatedString को SpannableString में बदलने की सुविधा जोड़ी गई है. (Ief907)
PointerInputFilter.onPointerInput(...)को हटा दिया गया है. इसकी जगहPointerInputFilter.onPointerEvent(...)का इस्तेमाल किया जाना चाहिए. (I6f04a)
वर्शन 1.0.0-alpha04
1 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04, और androidx.compose.foundation:foundation-text:1.0.0-alpha04 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- स्टैक का नाम बदलकर Box कर दिया गया है. compose.foundation.layout में मौजूद नए Box के लिए, पहले से मौजूद foundation.Box को बंद कर दिया जाएगा. नए Box का व्यवहार यह है कि जब इसमें एक से ज़्यादा चाइल्ड होते हैं, तो उन्हें एक के ऊपर एक रखा जाता है. यह पिछले Box से अलग है, जो Column की तरह काम करता था. (I94893, b/167680279)
- बॉक्स डेकोरेशन पैरामीटर का इस्तेमाल बंद कर दिया गया है. अगर आपको अपने बॉक्स में डेकोरेशन/पैडिंग चाहिए, तो इसके बजाय मॉडिफ़ायर का इस्तेमाल करें (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- नई LazyListState क्लास जोड़ें. इससे LazyRow और LazyColumn कॉम्पोनेंट की स्क्रोल पोज़िशन को देखा और कंट्रोल किया जा सकता है. rememberLazyListState() का इस्तेमाल करके इंस्टेंस बनाए जा सकते हैं. साथ ही, इन्हें कॉम्पोनेंट के state पैरामीटर में पास किया जा सकता है. फ़िलहाल, इस शुरुआती वर्शन में दिखने वाले पहले आइटम और ऑफ़सेट को देखा जा सकता है. (Ic7cb7, b/159307669)
- लेज़ी लिस्ट की पोज़िशन और स्क्रोल ऑफ़सेट अब सेव हो जाते हैं. साथ ही, गतिविधि को फिर से बनाने पर उन्हें वापस लाया जा सकता है (Ie045f, b/166589058)
- लंबे समय तक दबाकर रखने की सुविधा के लिए, सिमैंटिक्स ऐक्शन जोड़ा गया (I6281b, b/156468846)
- MutatorMutex यूटिलिटी जोड़ी गई है. इससे समय के साथ शेयर की गई स्थिति के एक ही म्यूटेटर को बनाए रखा जा सकता है. साथ ही, प्राथमिकता के हिसाब से टकराव वाले म्यूटेटर रद्द किए जा सकते हैं (I3f975)
- @VisibleForTesting के साथ एनोटेट किए गए rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को इंटरनल एपीआई बनाएं और उनके kdoc को छिपाएं (I554eb, b/168308412)
- स्ट्रिंग इनपुट के साथ टेक्स्ट से inlineContent पैरामीटर हटाया गया. इसका इस्तेमाल नहीं किया जाएगा, क्योंकि inlineContent को AnnotatedString के साथ काम करना चाहिए. (Ief403)
- कस्टम अरेंजमेंट के बंद किए गए एपीआई हटा दिए गए हैं. (Ic576d, b/168297922, b/168297923)
- wrapContentSize मॉडिफ़ायर में
unboundedपैरामीटर जोड़ा गया है. इससे लेआउट एलिमेंट को मेज़र किया जा सकता है. इसके लिए, ज़्यादा से ज़्यादा सीमा तय नहीं की जाती. (I77951, b/158559319) - हमने लेआउट स्कोप के कॉन्टेंट के स्टैटिक इंपोर्ट को रोका है. उदाहरण के लिए, RowScope में alignWithSiblings. इसके बजाय, साफ़ तौर पर स्कोप तय करने वाले विकल्प का इस्तेमाल किया जाना चाहिए:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)
गड़बड़ियां ठीक की गईं
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- स्केल और रोटेशन के लिए अपडेट किए गए ट्रांसफ़ॉर्मेशन एपीआई, अब एक ही ऑफ़सेट पैरामीटर का इस्तेमाल करते हैं. इससे DrawScope और DrawTransform में x/y कोऑर्डिनेट के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट कोऑर्डिनेट को दिखाया जा सकता है
- Rect.expandToInclude और Rect.join तरीके हटाए गए
- रेडियस के दस्तावेज़ को अपडेट किया गया है. इसमें एलिप्टिकल के साथ-साथ ओवल भी शामिल किया गया है
- दस्तावेज़ जोड़ा गया है. इसमें बताया गया है कि इनलाइन रेडियस क्लास के लिए, पब्लिक कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसके बजाय, रेडियस ऑब्जेक्ट को उनके फ़ंक्शन कंस्ट्रक्टर के ज़रिए इंस्टैंटिएट किया जाना चाहिए
- RoundRect API हटा दिए गए हैं, ताकि topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी की जा सके
- Rect.shift को Rect.translate के पक्ष में बंद कर दिया गया है
- RoundRect.grow और Rect.shrink API हटा दिए गए हैं
- RoundRect.outerRect का नाम बदलकर Rect.boundingRect किया गया
- RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीके हटा दिए गए हैं
- RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया है
- RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया है
- RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी के तौर पर बदला गया
- RoundRect कंस्ट्रक्टर को अपडेट किया गया है, ताकि वह x/y रेडियस वैल्यू के लिए अलग-अलग पैरामीटर के बजाय, रेडियस प्रॉपर्टी का इस्तेमाल कर सके
- ऐसे साइज़ एपीआई हटा दिए गए हैं जो यह मानते थे कि यह एक ऐसा आयत है जिसका मूल 0,0 पर है
- Radius में डिस्ट्रक्टिंग एपीआई जोड़ा गया
- RoundRect एक्सटेंशन फ़ंक्शन को प्रॉपर्टी में माइग्रेट किया गया
- (I8f5c7, b/168762961)
- LazyColumnFor/LazyRowFor में स्क्रोलिंग के दौरान, हर बार स्क्रोल करने पर गैर-ज़रूरी रीकंपोज़िशन नहीं किए जाते हैं. इससे परफ़ॉर्मेंस को बेहतर बनाने में मदद मिलती है (I64f65, b/168293643, b/167972292, b/165028371)
- स्क्रोल करने के बाद, आइटम बदलने पर LazyColumnFor/LazyRowFor में क्रैश होने की समस्या ठीक की गई. साथ ही, पहले से दिख रहे आइटम को हटाने पर, अपने-आप ऊपर की ओर स्क्रोल होने की सुविधा लागू की गई, ताकि आखिर में खाली जगहें न दिखें (I220ab, b/161480164, b/167855468)
- अब एक ही दिशा में स्क्रोल किए जा सकने वाले कंटेनर, जैसे कि ScrollableContainer और LazyColumnFor को नेस्ट करने की अनुमति नहीं है. यह सुविधा कभी काम नहीं करती थी. साथ ही, यह फ़्लिंग करने और LazyColumnFor (I6e101) के आइटम कंपोज़ करने की सभी सुविधाओं को बंद कर देती थी
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- DrawScope API को अपडेट किया गया है. इसमें स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीके शामिल हैं. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद इसे हटा दिया जाता है
- clipPath के दस्तावेज़ को अपडेट किया गया है, ताकि गोल आयत के बजाय Path का रेफ़रंस दिया जा सके
- clipPath में मौजूद right पैरामीटर के दस्तावेज़ में स्पेसिंग से जुड़ी समस्या ठीक की गई
- DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
- इनसेट तरीके में dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
- चारों सीमाओं के लिए एक जैसी इनसेट वैल्यू देने वाला इनसेट ओवरलोड जोड़ा गया
- इंसर्ट करने के तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इंसर्ट करने का तरीका, चारों साइड पर लागू होगा
- Rect क्लास के लिए अपडेट किया गया दस्तावेज़
- kdoc स्टाइल से मेल खाने के लिए, आयत के पैरामीटर पर टिप्पणियां अपडेट की गईं
- Rect.join और Rect.expandToInclude को हटाया गया
- Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को बंद कर दिया गया
- (If086a, b/167737376)
- सेमैंटिक्स प्रॉपर्टी में AccessibilityScrollState जोड़ें. (Ifeda9)
- ऑब्जेक्ट बनाने से बचने के लिए, TextRange को इनलाइन बनाएं. (Id034b)
- ParagraphConstraints को हटा दिया गया है. चौड़ाई की वैल्यू अब सीधे तौर पर पैराग्राफ़ को पास की जाती है. (Ica712)
वर्शन 1.0.0-alpha03
16 सितंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03, और androidx.compose.foundation:foundation-text:1.0.0-alpha03 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- InnerPadding का नाम बदलकर PaddingValues कर दिया गया है. (I195f1, b/167389171)
- लेआउट एपीआई में, ग्रेविटी के इस्तेमाल को अलाइन या अलाइनमेंट के तौर पर लगातार रीनेम किया गया. (I2421a, b/164077038)
- Stack में अलाइनमेंट पैरामीटर जोड़ा गया है. इससे Stack के सभी चाइल्ड के लिए, डिफ़ॉल्ट अलाइनमेंट तय किया जा सकता है. (Ie80ca, b/164085265)
गड़बड़ियां ठीक की गईं
- DpConstraints और इसका इस्तेमाल करने वाले एपीआई अब काम नहीं करते. (I90cdb, b/167389835)
widthInके पैरामीटरminWidthऔरmaxWidthका नाम बदलकरminऔरmaxकर दिया गया है. इसी तरह,preferredWidthIn,heightIn,preferredHeightInके लिए भी ऐसा ही किया जाता है. (I0e5e1, b/167389544)- ComposeTestRule पर Added onNode और अन्य ग्लोबल तरीके जोड़े गए हैं, क्योंकि मौजूदा ग्लोबल तरीके बंद होने वाले हैं. (Ieae36)
- GestureScope में साइज़ और पोज़िशन के हिसाब से कैलकुलेशन करने की सुविधा को ठीक किया गया है. इससे अन्य समस्याओं के साथ-साथ, स्वाइप करने के अमान्य जेस्चर (Iaf358, b/166589947) जनरेट होने की समस्या ठीक हो गई है
createAndroidComposeRuleऔरAndroidInputDispatcherकोandroidx.ui.test.androidसेandroidx.ui.testमें ले जाया गया (Idef08, b/164060572)
वर्शन 1.0.0-alpha02
2 सितंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02, और androidx.compose.foundation:foundation-text:1.0.0-alpha02 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- TestUiDispatcher को एक्सपेरिमेंटल के तौर पर मार्क किया गया है (Iae99d, b/161247083)
ManualFrameClock.hasAwaitersको यह देखने के लिए जोड़ा गया है कि क्या उस घड़ी से किसी फ़्रेम का इंतज़ार किया जा रहा है;runWithManualClockकोrunBlockingके बदले में जोड़ा गया है, ताकि ManualFrameClock की ज़रूरत वाले टेस्ट चलाए जा सकें;TestUiDispatcher.Mainको जोड़ा गया है, ताकि आपके टेस्ट में मुख्य यूज़र इंटरफ़ेस (यूआई) डिस्पैचर को आसानी से ऐक्सेस किया जा सके.उदाहरण के लिए:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
वर्शन 1.0.0-alpha01
26 अगस्त, 2020
androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01, और androidx.compose.foundation:foundation-text:1.0.0-alpha01 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 0.1.0-dev
वर्शन 0.1.0-dev17
19 अगस्त, 2020
androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17, और androidx.compose.foundation:foundation-text:0.1.0-dev17 रिलीज़ किए जाते हैं. वर्शन 0.1.0-dev17 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Row और Column के लिए, spacedBy Arrangement को जोड़ा गया है. इससे लेआउट के बच्चों को तय की गई दूरी पर रखा जा सकेगा. अलाइन किए गए अरेंजमेंट को भी जोड़ा गया है, ताकि लेआउट के चाइल्ड कॉम्पोनेंट को एक-दूसरे के बगल में रखा जा सके. साथ ही, उन्हें अलाइनमेंट के हिसाब से लाइन/कॉलम में अलाइन किया जा सके. Arrangement.Vertical#arrange और Arrangement.Horizontal#arrange के पिछले तरीकों को बंद कर दिया गया है. साथ ही, आने वाले समय में कस्टम अरेंजमेंट लिखने की सुविधा काम नहीं करेगी. (I6733d, b/161985975)
- ऑफ़सेट को इनलाइन क्लास (Iaec70) बना दिया गया है
- TextField से onFocusChanged कॉलबैक हटा दिए गए हैं. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
- Modifier.drawBorder का इस्तेमाल बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border डेटा क्लास को BorderStroke (I4257d, b/158160576) से बदल दिया गया है
- VerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करें (I73b0d, b/163019183)
- LazyItemScope से, fillMax* मॉडिफ़ायर हटाएं. इन्हें डेप्रिकेट के तौर पर मार्क किया गया है. इनकी वजह से, LazyColumnFor के सीधे तौर पर चाइल्ड न होने वाले आइटम के लिए, ऐसे मॉडिफ़ायर को सही तरीके से जोड़ना मुश्किल हो रहा है (Ifa78d)
- DSL के तौर पर LazyColumn/LazyRow लागू करने की सुविधा जोड़ी गई (I93cc6)
- Constraints अब एक इनलाइन क्लास (I88736) है
- fillMaxWidth, fillMaxHeight, और fillMaxSize मॉडिफ़ायर का इस्तेमाल करके, लेआउट को उपलब्ध जगह के कुछ हिस्से के हिसाब से साइज़ करने की सुविधा जोड़ी गई है. (I945bb, b/161562591)
गड़बड़ियां ठीक की गईं
- SelectionContainer में मॉडिफ़ायर पैरामीटर जोड़ा गया (I4aada, b/161487952)
- SemanticsPropertyKey में mergePolicy lambda जोड़ा गया. इसका इस्तेमाल, mergeAllDescendants सिमैंटिक के लिए कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के तहत, अगर पैरंट वैल्यू मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()का नाम बदलकरPlacementScope.place()कर दिया गया है. साथ ही, पिछलेPlacementScope.place()का नाम बदलकरPlacementScope.placeRelative()कर दिया गया है. इस वजह से,PlacementScope.place()तरीके से अब दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में, अपने-आप पोज़िशन नहीं दिखेगी. अगर आपको ऐसा करना है, तो इसके बजायPlacementScope.placeRelative()का इस्तेमाल करें. (I873ac, b/162916675)- अब इस्तेमाल में नहीं रहे FilledTextField कॉम्पोनेंट को हटाया गया. कृपया फ़िल्ड टेक्स्ट फ़ील्ड के लिए, Material Design को लागू करने के लिए TextField का इस्तेमाल करें. (I5e889)
- LinearProgressIndicator में backgroundColor पैरामीटर जोड़ा गया है. साथ ही, CircularProgressIndicator से इंटरनल पैडिंग हटा दी गई है. नया ProgressIndicatorConstants.DefaultProgressAnimationSpec जोड़ा गया है. इसका इस्तेमाल, वैल्यू के बीच प्रोग्रेस को ऐनिमेट करते समय डिफ़ॉल्ट AnimationSpec के तौर पर किया जा सकता है (If38b5, b/161809914, b/161804677)
- अब
state { ... }कंपोज़ेबल का इस्तेमाल नहीं किया जा सकता. इसके बजाय,remember { mutableStateOf(...) }को साफ़ तौर पर कॉल किया जा सकता है. इससे स्टेट मैनेजमेंट के लिए, एपीआई के कुल सर्फ़ेस और कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी डेलिगेशन के लिएby mutableStateOf()पैटर्न से मेल खाता है. (Ia5727) - Compose के नाम रखने के पैटर्न के हिसाब से, RRect का नाम बदलकर RoundRect कर दिया गया है RRect के लिए, मिलते-जुलते फ़ंक्शन कंस्ट्रक्टर बनाए गए हैं RRect फ़ंक्शन कंस्ट्रक्टर (I5d325) को बंद कर दिया गया है
- Removed onChildPositioned and OnChildPositionedModifier. इसके बजाय, डेवलपर को चाइल्ड लेआउट पर onPositioned और OnPositionedModifier का इस्तेमाल करना चाहिए. (I4522e, b/162109766)
- IntSize अब एक इनलाइन क्लास (I2bf42) है
- बदलाव करने के लिए, खाली जगह पर दबाकर रखें. (Ib1e5b)
- टेक्स्ट पर टैप करने के बाद, फ़्लोटिंगटूलबार को छिपाएं. (If4525)
- चुने गए टेक्स्ट को अपडेट करते समय, फ़्लोटिंगटूलबार को छिपाएं. (I8444c)
- 'धुंधला करें' से चुने हुए का निशान हटाएं. (I781a2)
वर्शन 0.1.0-dev16
5 अगस्त, 2020
androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16, और androidx.compose.foundation:foundation-text:0.1.0-dev16 रिलीज़ किए जाते हैं. वर्शन 0.1.0-dev16 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyItemScope को Lazy लिस्ट के itemContent पैरामीटर के लिए जोड़ा गया था. यह पैरंट के ज़्यादा से ज़्यादा साइज़ को भरने के लिए मॉडिफ़ायर उपलब्ध कराता है. इससे उस स्थिति में मदद मिलती है, जब आइटम को व्यूपोर्ट और रेगुलर Modifier.fillMaxSize() को भरना होता है. हालांकि, आइटम को इनफ़िनिटी कंस्ट्रेंट के साथ मेज़र किया जाता है, इसलिए यह काम नहीं करता. (Ibd3b2, b/162248854)
- डायलॉग को यूज़र इंटरफ़ेस (यूआई) पर ले जाएं (I47fa6)
- LazyColumnForIndexed/LazyRowForIndexed जोड़ा गया - ये LazyColumnFor/LazyRowFor के ऐसे वर्शन हैं जो itemCallback में इंडेक्स और आइटम, दोनों उपलब्ध कराते हैं. यह तब काम आता है, जब आपको मौजूदा आइटम के साथ-साथ मौजूदा इंडेक्स के बारे में भी जानना हो. (I65ff3)
- Modifier.deternimateProgress का नाम बदलकर Modifier.progressSemantics कर दिया गया है (I9c0b4)
- LazyColumnItems का नाम बदलकर LazyColumnFor कर दिया गया है. LazyRowItems का नाम बदलकर LazyRowFor कर दिया गया है (I84f84)
- सबसे सही तरीके से काम करने के लिए, कुछ मार्क/एनोटेशन जोड़ें. (I66b20)
- foundation.shape.corner पैकेज को foundation.share में फ़्लैट कर दिया गया है (I46491, b/161887429)
- LazyRowItems/LazyColumnItems के लिए, क्रॉसऐक्सिस ग्रेविटी पैरामीटर जोड़ा गया. LazyRowItems/LazyColumnItems अब रैप कॉन्टेंट के साथ काम करते हैं. (Ib39fc)
- ZoomableState का नाम बदलकर ZoomableController कर दिया गया है. smoothScale के लिए, कस्टम कर्व की सुविधा जोड़ी गई है.
enabledऔरonZoomStartedफ़ंक्शन जोड़े गए (If8b8f) - Material FilledTextField का नाम बदलकर TextField कर दिया गया है. साथ ही, फ़ाउंडेशनल TextField का नाम बदलकर BaseTextField कर दिया गया है, ताकि सबसे आसान एपीआई को आसानी से खोजा और इस्तेमाल किया जा सके (Ia6242, b/155482676)
- AdapterList को पहले ही बंद कर दिया गया था. अब इसे हटा दिया गया है. इसके बजाय, LazyColumnItems का इस्तेमाल करें (I12b9b)
- Modifier.drawBackground का नाम बदलकर Modifier.background कर दिया गया है (I13677)
- ConstraintLayout के पुराने डीएसएल को हटा दिया गया है. ConstraintSet2 का नाम बदलकर ConstraintSet कर दिया गया है. (If58d1, b/162450908)
- Modifier.absoluteOffset() और Modifier.absoluteOffsetPx() जोड़े गए. ऑफ़सेट मॉडिफ़ायर के उलट, ऐब्सलूट ऑफ़सेट मॉडिफ़ायर, दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में अपने-आप मिरर नहीं होंगे (I3aa21)
RowऔरColumnअब इनलाइन फ़ंक्शन हैं. इससे इन्हें इस्तेमाल करने का ओवरहेड काफ़ी कम हो जाता है. (I75c10)
गड़बड़ियां ठीक की गईं
- एपीआई से जुड़ी कई समस्याओं को ठीक किया गया (I077bc)
- इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाएं
- एपीआई के एक जैसे इंटरफ़ेस के लिए, Offset और IntOffset क्लास को अलाइन किया गया है
- Offset API के साथ काम करने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero करें
- उपयोगकर्ताओं को अपने Canvas इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है
- DrawScope को lateinit के बजाय, गैर-शून्य पैरामीटर के तौर पर फिर से फ़ैक्टर करने के लिए, EmptyCanvas क्लास का स्टब बनाया गया. साथ ही, यह पक्का किया गया कि फ़ील्ड में शून्य वैल्यू न हो
- ClipOp एनम के नाम बदलकर, उन्हें पास्कल केस में बदला गया
- FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeJoin enum के नाम बदलकर, उन्हें पास्कल केस में बदला गया
- PointMode enum का नाम बदलकर, पास्कल केस में रखा गया
- PaintingStyle enum का नाम बदलकर, Pascal Case कर दिया गया है
- PathFillType enum का नाम बदलकर, पास्कल केस में रखा गया
- StrokeCap enum का नाम बदलकर पास्कल केस किया गया
- DrawCache को लागू करने के तरीके को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है, ताकि fillPaint और strokePaint इंटरनल पैरामीटर के लिए लेज़ी डेलिगेशन का इस्तेमाल न किया जा सके
- इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न करना पड़े
- @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
- हर पाथ के निर्देश के लिए, @Immutable एनोटेशन वाले PathNode को अपडेट किया गया है
- वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए ज़रूरत से ज़्यादा शर्तों की जांच को हटाया जा सके. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही उन्हें हैंडल करता है
- फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद कर दिया गया है
- @Immutable और @Stable एपीआई के साथ अपडेट की गई ब्रशिंग क्लास और फ़ंक्शन कंस्ट्रक्टर
- VertexMode enum को PascalCase में अपडेट किया गया
- DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि अगर स्ट्रोक पैरामीटर बदल गए हैं, तो पेंट पर उन्हें शर्तों के साथ बदला जा सके
- डिस्ट्रक्चरिंग एपीआई जोड़ने के लिए, अपडेट किया गया साइज़. UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया है. साथ ही, इस्तेमाल न होने वाले तरीकों को हटा दिया गया है
MonotonicFrameAnimationClock जोड़ा गया है. इससे MonotonicFrameClock को AnimationClockObservable के तौर पर इस्तेमाल किया जा सकता है. इससे नई को-रूटीन पर आधारित क्लॉक और अब भी पुराने कॉलबैक पर आधारित क्लॉक का इस्तेमाल करने वाले एपीआई के बीच के अंतर को कम किया जा सकता है.
ManualAnimationClock के MonotonicFrameClock के बराबर अब ManualFrameClock है. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGestureको हटा दिया गया है. इसके बजाय,SemanticsNodeInteraction.performGestureका इस्तेमाल करें. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()का नाम बदलकरSemanticsNodeInteraction.getUnclippedBoundsInRoot()(Icafdf, b/161336532) किया गयादाएं से बाएं लिखने की सुविधा के लिए, एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient को जोड़ा गया है. इसका इस्तेमाल लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)
Modifier.plus का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से क्रम का ज़्यादा मज़बूत सिग्नल मिलता है. साथ ही, इससे
Modifier.padding().background() + anotherModifierटाइप करने पर पाबंदी लग जाती है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)isFocused()औरisNotFocused()SemanticsMatcher को जोड़ा गया. (I0b760)RemeasurementModifier जोड़ा गया. इससे उपयोगकर्ताओं को लेआउट को एक साथ फिर से मेज़र करने की अनुमति मिलती है. आम तौर पर, इसकी ज़रूरत नहीं होती, क्योंकि रीमेज़र/रीलेआउट अपने-आप होता है. हालांकि, हम इसका इस्तेमाल स्क्रोल के दौरान LazyColumnItems में करते हैं. (I5f331, b/160791058)
isSystemInDarkTheme अब हमेशा सिस्टम-वाइड डार्क थीम सेटिंग को ध्यान में रखता है. साथ ही, Q से पहले की पावर सेविंग की स्थिति को अनदेखा करता है. ऐसा नए दिशा-निर्देशों के मुताबिक किया जाता है. (I0c10c)
OnChildPositioned अब काम नहीं करता. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)
AndroidComposeTestRule का नाम बदलकर createAndroidComposeRule कर दिया गया है. (I70aaf)
TextLayoutResult (I9d6e6) पाने के लिए, सुलभता से जुड़ी कार्रवाई जोड़ें
वर्शन 0.1.0-dev15
22 जुलाई, 2020
androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15, और androidx.compose.foundation:foundation-text:0.1.0-dev15 रिलीज़ किए जाते हैं. वर्शन 0.1.0-dev15 में ये बदलाव शामिल हैं.
Compose के 0.1.0-dev15 वर्शन का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:
डिपेंडेंसी अपडेट
- Compose के
0.1.0-dev15वर्शन का इस्तेमाल करने के लिए, आपको अपनी डिपेंडेंसी अपडेट करनी होंगी. इसके लिए, डिपेंडेंसी तय करना सेक्शन में ऊपर दिखाए गए नए कोड स्निपेट का इस्तेमाल करें.
एपीआई में हुए बदलाव
- इसी तरह, ScrollableColumn/ScrollableRow में नए पैरामीटर की तरह, LazyColumnItems/LazyRowItems में अब contentPadding पैरामीटर भी है. इससे, क्लिप किए गए कॉन्टेंट में पैडिंग जोड़ी जा सकती है. सिर्फ़ मॉडिफ़ायर पैरामीटर की मदद से ऐसा नहीं किया जा सकता. इससे सिर्फ़ पहले आइटम से पहले या आखिरी आइटम के बाद स्पेस जोड़ने की अनुमति मिलती है. (Ibc24e)
- टेक्स्ट फ़ील्ड में onFocusChange कॉलबैक का नाम बदलकर onFocusChanged कर दिया गया है (Ida4a1)
- VerticalScroller और HoriziontalScroller अब काम नहीं करते. Column/Row के व्यवहार और पैरामीटर के साथ-साथ Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करके, ScrollableColumn और ScrollableRow को अपने एलिमेंट पर लागू करें. इसी तरह, ScrollerPosition को ScrollState' (I400ce, b/157225838, b/149460415, b/154105299) के पक्ष में बंद कर दिया गया है
- Modifier.draggable और Modifier.scrollable एपीआई को फिर से बनाया गया है. DragDirection को हटा दिया गया है. अब इसकी जगह Orientation का इस्तेमाल किया जाता है. स्क्रोल करने की सुविधा के लिए, राज्य की जानकारी देने की प्रोसेस को आसान बनाया गया है. ScrollableState का नाम बदलकर ScrollableController कर दिया गया है (Iab63c, b/149460415)
- सिंगल-वैल्यू सिमैंटिक्स प्रॉपर्टी अब कॉलिंग स्टाइल का इस्तेमाल करती हैं.
उदाहरण के लिए, 'semantics { hidden = true }' को अब इस तरह लिखा जाता है:
semantics { hidden() }. (Ic1afd, b/145951226, b/145955412) - RoundedCornerShape और CutCornerShape में इस्तेमाल किए गए कॉर्नर के साइज़ अब 50% से ज़्यादा हो सकते हैं (Id2340, b/160400213)
- Image कंपोज़ेबल के लिए, डिफ़ॉल्ट ContentScale पैरामीटर को Inside से बदलकर Fit कर दिया गया है. ऐसा इसलिए किया गया है, ताकि लेआउट का साइज़, पेंटर के ओरिजनल साइज़ से बड़ा होने पर, पेंटर को स्केल अप किया जा सके. साथ ही, आसपेक्ट रेशियो को भी बनाए रखा जा सके. इस बदलाव से, इमेज के लिए तय किए गए साइज़ को सेट करने की उम्मीदें पूरी होती हैं. साथ ही, अगर कंपोज़ेबल के साइज़ का हिसाब लगाने के लिए सिर्फ़ इंट्रिंसिक साइज़ का इस्तेमाल किया जाता है, तो डिफ़ॉल्ट व्यवहार पर कोई असर नहीं पड़ता. (I40ae3, b/159838006)
- स्टैटिक ऐनिमेशन स्पेसिफ़िकेशन के कॉन्सेप्ट को बेहतर तरीके से समझाने के लिए, टॉप लेवल के एपीआई में AnimationBuilder के बजाय AnimationSpec का इस्तेमाल करें -ट्रांज़िशन डीएसएल को बेहतर बनाएं. इसके लिए, ट्विन और स्प्रिंग जैसे AnimationSpec बनाने के लिए लैम्ब्डा की ज़रूरत को हटाएं. इसके बजाय, वे सीधे तौर पर कंस्ट्रक्टर पैरामीटर लेते हैं. -AnimationSpec को इस्तेमाल करने में आसानी होगी, क्योंकि अब बिल्डर पर भरोसा करने के बजाय कंस्ट्रक्टर का इस्तेमाल किया जा सकेगा -KeyFrames और Tween के लिए अवधि और देरी को Int में बदलें. इससे, टाइप कास्ट और तरीके के ओवरलोडिंग की ज़रूरत नहीं होगी (Long और Int, दोनों के लिए). (Ica0b4)
- क्लिक करने की सुविधा हटा दी गई है. Modifier.clickable (I84bdf) का इस्तेमाल करें
- LazyRowItems जोड़े गए - ये LazyColumnItems के हॉरिज़ॉन्टल स्क्रोलिंग वाले ऐनलॉग हैं (Ibbcf7)
- स्टेटलेस ऐनिमेशन के लिए, लो लेवल के एपीआई जोड़े गए. ये एपीआई (I63bf7)
- androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करते. TextField, FilledTextField, और CoreTextField कंपोज़ेबल, इस टाइप का इस्तेमाल करते हैं. इन्हें भी अब इस्तेमाल नहीं किया जा सकता. कृपया androidx.ui.input.TextFieldValue का इस्तेमाल करें (I4066d, b/155211005)
- IntPx की जगह Int का इस्तेमाल किया गया. IntPxPosition की जगह IntOffset का इस्तेमाल किया गया. IntPxSize को IntSize से बदल दिया गया है. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape हटा दिया गया है; androidx.ui.graphics.RectangleShape का इस्तेमाल करें (I94939, b/154507984)
- साइज़ की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxSize के बजाय Size क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. जैसे, दो फ़्लोट वैल्यू को एक साथ पैक करने के लिए, long का इस्तेमाल किया जा सकता है. इससे फ़्लोट के तौर पर दिखाई गई चौड़ाई और ऊंचाई को दिखाया जा सकता है. (Ic0191)
- पोजीशनिंग की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. जैसे, x और y ऑफ़सेट को फ़्लोट के तौर पर दिखाने के लिए, दो फ़्लोट वैल्यू को पैक करने के लिए long का इस्तेमाल करना. (I3ad98)
- पिंच करके ज़ूम करने की सुविधा के लिए, Modifier.zoomable जोड़ा गया (Id5d63)
- टॉगल किए जा सकने वाले कॉम्पोनेंट का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, Modifier.toggleable का इस्तेमाल करें (I35220, b/157642842)
- MutuallyExclusiveSetItem अब काम नहीं करता. इसके बजाय, Modifier.selectable का इस्तेमाल करें. (I02b47, b/157642842)
- TestTag अब सेवा में नहीं है. इसके बजाय, Modifier.testTag का इस्तेमाल करें. (If5110, b/157173105)
- टेक्स्ट में fontWeight पैरामीटर जोड़ा गया है. इसे गलती से पहले नहीं जोड़ा गया था (I56937)
- पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I19d02)
- VerticalScroller अब पहले से मौजूद कॉलम उपलब्ध कराता है. HorizontalScroller अब पहले से मौजूद Row उपलब्ध कराता है. (Ieca5d, b/157020670)
- पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (Iede0b)
- Modifier.indication को फ़ाउंडेशन पैकेज में जोड़ दिया गया है. इसका इस्तेमाल, कस्टम इंटरैक्टिव एलिमेंट (I8425f, b/155287131) पर प्रेस/ड्रैग/अन्य इंडिकेशन दिखाने के लिए करें
- VerticalScroller और HorizontalScroller में अब स्क्रोल करने की दिशा बदलने की सुविधा काम करती है. इसके लिए, ScrollerPosition पर isReversed सेट करना होगा (I953bd)
- टेक्स्ट लेआउट में कंपोज़ेबल जोड़ने की सुविधा जोड़ी गई. (I1373c)
- CanvasScope को लागू करने के तरीके को बेहतर बनाया गया है. अब सिर्फ़ DrawScope और ContentDrawScope उपलब्ध हैं. CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस लागू करने और LayoutDirection उपलब्ध कराने के लिए, DrawScope को अपडेट किया गया ContentDrawScope में DrawScope सबक्लास को मिटाया गया Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब खुद RTL प्रॉपर्टी को बनाए न रखें, क्योंकि DrawScope इसे मैन्युअल तरीके से उपलब्ध कराए बिना ही उपलब्ध कराता है (I1798e)
- Modifier पर drawBackground एक्सटेंशन एपीआई के पक्ष में, DrawBackground एपीआई को हटाया गया. कोड पाथ को कम करने के साथ-साथ, कंपोज़िशन के हिस्से के तौर पर बनाए जाने वाले मॉडिफ़ायर की ज़रूरत को खत्म करने के लिए, कलर, ब्रश, और पेंट drawBackground के कोड में बदलाव किया गया है. (I0343a)
- ज़्यादा लेवल वाले Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय दिखाते हैं. इससे उपभोक्ताओं को अपने पेंट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी Canvas का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन का इस्तेमाल कर सकते हैं. यह तरीका, Canvas के साथ ड्राइंग कमांड जारी करने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
- HorizontalScroller और VerticalScroller, सेव किए गए इंस्टेंस की स्थिति का इस्तेमाल करके, स्क्रोल करने की जगह को वापस नहीं लाते हैं. (Ia0fae, b/155075048)
- FocusManagerAmbient को हटा दिया गया है. फ़ोकस पाने के लिए, FocusModifier.requestFocus का इस्तेमाल करें. (Ic4826)
- टेबल लेआउट को कुछ समय के लिए हटा दिया गया है. हम इसे नए एपीआई के साथ फिर से उपलब्ध कराएंगे. (Id88a7)
CanvasScope API बनाया गया है. यह Canvas ऑब्जेक्ट को रैप करता है, ताकि बिना किसी स्थिति के, एलान करने वाले ड्राइंग एपीआई को दिखाया जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर स्कोप में शामिल होते हैं. साथ ही, साइज़िंग की जानकारी भी, उससे जुड़े इंसर्ट बाउंड के हिसाब से तय होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, Paint का अपना स्टेट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं होती.
CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि उसमें डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके
ColoredRect को हटा दिया गया है. इसके बजाय, drawBackground मॉडिफ़ायर के साथ User Box का इस्तेमाल करें (I983c7, b/152753731)
TextField में कर्सर के रंग को पसंद के मुताबिक बनाने की सुविधा जोड़ें (I6e33f)
अब SoftwareKeyboardController का इस्तेमाल करके, सॉफ़्टवेयर कीबोर्ड को छिपाया/दिखाया जा सकता है. यह onTextInputStarted कॉलबैक (I8dc44, b/151860051) से डिलीवर किया जाता है
TextField के साथ इस्तेमाल की गई TextFieldValue, अब गतिविधि को फिर से बनाने के दौरान भी बनी रहेगी. इसके लिए, इसे इस तरह इस्तेमाल करें:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724)यह फ़ंक्शन, Text() में आम तौर पर इस्तेमाल किए जाने वाले पैरामीटर जोड़ता है. अगर आपको इन पैरामीटर में से कुछ पैरामीटर पास करने के लिए, फ़िलहाल लोकल टेक्स्ट स्टाइल बनानी है, जैसे कि
Text(style = TextStyle(textAlign = TextAlign.Center)), तो अब सीधे तौर पर पैरामीटर दिए जा सकते हैं:Text(textAlign = TextAlign.Center)(I82768)फ़ोकस सबसिस्टम के साथ इंटिग्रेट करने के लिए, CoreTextField/TextField के focusIdentifier पैरामीटर को FocusNode से बदल दिया गया है. (I7ea48)
TextField अपडेट - हॉरिज़ॉन्टल डाइमेंशन में, इसे दिया गया पूरा स्पेस इस्तेमाल किया जाएगा (Ib08df, b/154638552)
InteractionState और Interaction को जोड़ा गया है. इससे ऐसे कॉम्पोनेंट बनाना आसान हो गया है जो यूज़र इंटरफ़ेस (यूआई) की स्थिति में होने वाले बदलावों पर प्रतिक्रिया देते हैं. जैसे, दबाना और खींचना (Icfe25, b/152525426)
RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)
एपीआई में, Color के सभी ऐसे इस्तेमाल को बदला गया है जिनमें null वैल्यू इस्तेमाल की जा सकती थी. अब null वैल्यू इस्तेमाल नहीं की जा सकती. साथ ही, null की जगह Color.Unset का इस्तेमाल किया गया है (Iabaa7)
TextField API अपडेट - onFocus और onBlur कॉलबैक को एक ही onFocusChange(Boolean) कॉलबैक में मर्ज कर दिया गया है. इसमें पैरामीटर (I66cd3) शामिल है
ScaleFit का नाम बदलकर ContentScale कर दिया गया है ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में रहे. FillMaxDimension का नाम बदलकर Crop कर दिया गया है FillMinDimension का नाम बदलकर Fit कर दिया गया है Fit का नाम बदलकर Inside कर दिया गया है, ताकि यह ImageView.ScaleType से बेहतर तरीके से मैच हो सके ImageView.ScaleType के बराबर ऐसा दस्तावेज़ जोड़ा गया है जिसमें बताया गया है कि Crop और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_CROP के बराबर नतीजे देता है. साथ ही, Fit और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.FIT_CENTER के बराबर नतीजे देता है Inside और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_INSIDE के बराबर नतीजे देता है (I45f09, b/152842521)
ProvideContentColor को हटाता है. इसके बजाय, ContentColorAmbient को सीधे तौर पर
Providers(Iee942) के साथ इस्तेमाल करेंयह टेक्स्ट में रंग पैरामीटर जोड़ता है. इससे, टेक्स्ट स्टाइल के रंग को बदला जा सकता है. इसके लिए, थीम में दिए गए स्टाइल के साथ मैन्युअल तरीके से मर्ज करने की ज़रूरत नहीं होती. (I41a66)
DrawModifier API को बेहतर बनाया गया है:
- ContentDrawScope के लिए, रिसीवर स्कोप बनाया गया
- draw() पर मौजूद सभी पैरामीटर हटा दिए गए हैं
- DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
- ContentDrawScope में drawContent() मेथड होता है (Ibaced, b/152919067)
ColoredRect को बंद कर दिया गया है. इसके बजाय,
Box(Modifier.preferredSize(width, height).drawBackground(color))का इस्तेमाल करें. (I499fa, b/152753731)शेप थीमिंग सिस्टम को, मटीरियल डिज़ाइन की खास बातों के मुताबिक अपडेट किया गया है. अब ज़्यादातर कॉम्पोनेंट (Ifb4d1) के लिए, छोटे, सामान्य, और बड़े साइज़ के शेप दिए जा सकते हैं
मॉडिफ़ायर प्लस ऑपरेटर को फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) से बदला गया
ड्रैग करने की सुविधा को मॉडिफ़ायर में ले जाया गया है (Id9b16, b/151959544)
Textको androidx.ui.core से androidx.ui.foundation पैकेज में ले जाया गया. (I87ce5)Checkbox, Switch, और Toggleable में
enabledपैरामीटर जोड़ा गया (I41c16)Ripple अब एक मॉडिफ़ायर है. Clickable को अभी तक नहीं बदला गया है. इसलिए, हमारा सुझाव है कि आप
Clickable(onClick = { ... }, modifier = ripple())(Ie5200, b/151331852, b/150060763) का इस्तेमाल करेंवेक्टर ग्राफ़िक के लिए, मौजूदा सबकंपोज़िशन एपीआई को बदलने के लिए VectorPainter API जोड़ा गया. सबकंपोज़िशन का नतीजा, DrawModifier के बजाय VectorPainter ऑब्जेक्ट होता है. VectorPainter के पक्ष में, DrawVector के पिछले कंपोज़ेबल को बंद कर दिया गया है.
Image(Painter)API का नाम बदलकरPaintBox(Painter)कर दिया गया वेक्टर कंपोज़ेबल बनाया गया है, जो Image कंपोज़ेबल की तरह काम करता है. हालांकि, इसमें ImageAsset के बजाय VectorAsset का इस्तेमाल किया जाता है (I9af9a, b/149030271)स्क्रीन पर दिए गए ImageAsset को दिखाने के साथ-साथ, साइज़/लेआउट को मैनेज करने के लिए, Image कंपोज़ेबल बनाया गया. यह कंपोज़ेबल, किसी भी आर्बिट्ररी पेंटर इंस्टेंस को भी ड्रॉ कर सकता है. इसके लिए, यह इंस्टेंस के इंट्रिंसिक साइज़ का ध्यान रखता है. साथ ही, यह दिए गए फ़िक्स्ड साइज़ या कम से कम साइज़ (Ibcc8f) को भी सपोर्ट करता है
Button, FloatingActionButton, और Clickable में अब अलग
enabledपैरामीटर है. बटन पर मौजूद कुछ पैरामीटर के नाम बदल दिए गए हैं या उनका क्रम बदल दिया गया है. (I54b5a)Image का नाम बदलकर ImageAsset कर दिया गया है, ताकि इमेज डेटा और लेआउट और कॉन्टेंट बनाने के लिए इस्तेमाल किए जाने वाले आने वाले Image कंपोज़ेबल के बीच के अंतर को बेहतर तरीके से समझा जा सके.
android.graphics.Bitmap पर एक्सटेंशन का तरीका बनाया गया है, ताकि ImageAsset का एक इंस्टेंस बनाया जा सके. यह इंस्टेंस, Compose फ़्रेमवर्क के साथ Android ऐप्लिकेशन डेवलपमेंट को कंबाइन करने के लिए काम आता है.
Bitmap.asImageAsset()(Id5bbd)DrawImage कंपोज़ेबल को हटा दिया गया है. मौजूदा लेआउट पर इमेज बनाने के लिए, ImagePainter का इस्तेमाल करें. इसके अलावा, इमेज को दिखाने के लिए SimpleImage का इस्तेमाल करें. इससे इमेज को जगह मिलती है (I595e1, b/149827027)
स्टैक कॉम्पोनेंट, दाएं से बाएं लिखने की सुविधा के साथ काम करता है (Ic9e00)
AppBarIcon को हटाकर, Icon, IconButton, और IconToggleButton जोड़े गए. AppBarIcon के मौजूदा इस्तेमाल को सीधे तौर पर IconButton से बदला जा सकता है. इसके बाद, उनके पास सही टच टारगेट होगा. इस्तेमाल से जुड़ी जानकारी के लिए सैंपल देखें. साथ ही, दिए गए Material Icons के आइकॉन देखें. इनका इस्तेमाल इन कॉम्पोनेंट के साथ सीधे तौर पर किया जा सकता है. (I96849)
DrawShape कंपोज़ेबल को हटा दिया गया है. इसके बजाय, DrawBackground मॉडिफ़ायर का इस्तेमाल करें. (I7ceb2)
AdapterList जोड़ा गया है. यह स्क्रोल करने लायक सूची वाला कॉम्पोनेंट है. यह सिर्फ़ दिखने वाले आइटम को कंपोज़ और लेआउट करता है. फ़िलहाल, इसकी कुछ समस्याएं सामने आई हैं. जैसे, यह सिर्फ़ वर्टिकल है और इसके चाइल्ड नोड में होने वाले सभी बदलावों को पूरी तरह से हैंडल नहीं करता है. (Ib351b)
स्क्रोल किए जा सकने वाले कॉम्पोनेंट को जोड़ा गया है. इससे कस्टम स्क्रोलर/सूची बनाई जा सकती है (I5fd37)
बैकग्राउंड का नाम बदलकर DrawBackground कर दिया गया है. साथ ही, इसे डिफ़ॉल्ट रूप से याद रखने की सुविधा चालू कर दी गई है (Ia0bd3)
Box में पैडिंग, बॉर्डर, शेप, और बैकग्राउंड पैरामीटर जोड़ें (I05027, b/148147281)
कैनवस कॉम्पोनेंट जोड़ा गया. यह कंपोज़ेबल, उपयोगकर्ता के दिए गए साइज़ के हिसाब से जगह लेता है. साथ ही, आपको CanvasScope (I0d622) का इस्तेमाल करके ड्रॉ करने की अनुमति देता है
Borderमॉडिफ़ायर का नाम बदलकरDrawBorder(I8ffcc) किया गयालेआउट और ड्रॉइंग की सामान्य सुविधाओं को एक साथ इस्तेमाल करने के लिए, Box कॉम्पोनेंट जोड़ा गया. (I6e2a7)
स्क्रोलर अब Android के फ़्लिंग मोशन के नेटिव व्यवहार को दिखाते हैं. (I922af, b/147493715)
DrawBorder को Border Modifier (Id335a) के पक्ष में बदला गया
Modifier.tag का नाम बदलकर Modifier.layoutId कर दिया गया है, ताकि Modifier.testTag के साथ कोई भ्रम न हो. (I995f0)
ConstraintLayout के दिशा-निर्देश बनाते समय, प्रतिशत पैरामीटर का नाम बदलकर फ़्रैक्शन कर दिया गया है. (Ida2db)
ConstraintLayout बैरियर के मार्जिन के लिए सहायता जोड़ी गई. (I47ffe)
ConstraintLayout में आरटीएल की सुविधा से जुड़ी समस्या ठीक की गई. आरटीएल के बारे में जानकारी न रखने वाले एपीआई जोड़े गए. (I3b1c7)
ConstraintLayout के लिए एक नया डीएसएल जोड़ा गया है. ज़्यादा जानकारी के लिए, कृपया सैंपल देखें. (Icaa9a)
@ExperimentalLayout एनोटेशन जोड़ा गया. ConstraintLayout, FlowRow, और FlowColumn को अब इससे टैग किया गया है, ताकि यह पता चल सके कि उनके एपीआई में बदलाव होने वाला है. (I412a8)
Modifier.padding(InnerPadding)को जोड़ा गया (I94985, b/157133803)Row और Column में, RowAlign और ColumnAlign को हटा दिया गया है. (If60d4, b/155858731)
LayoutTag() को हटा दिया गया है. इसके बजाय, कृपया Modifier.tag() का इस्तेमाल करें. अब काम न करने वाले Modifier.matchParent() को हटा दिया गया है. इसके बजाय, कृपया Modifier.matchParentSize() का इस्तेमाल करें. (If8044)
offsetPx लेआउट मॉडिफ़ायर जोड़ा गया है. इसका इस्तेमाल, पिक्सल में (डाइनैमिक) ऑफ़सेट तय करने के लिए किया जा सकता है. (I5af57)
AlignmentLineOffset कंपोज़ेबल के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, कृपया relativePaddingFrom() मॉडिफ़ायर का इस्तेमाल करें. CenterAlignmentLine कंपोज़ेबल को हटा दिया गया है. (I60107)
layout modifier में defaultMinSizeConstraints जोड़ा गया है. यह रैप्ड लेआउट पर साइज़ की पाबंदियां सिर्फ़ तब सेट करता है, जब आने वाली पाबंदियां तय न की गई हों. जैसे, कम से कम पाबंदियों के लिए 0 और ज़्यादा से ज़्यादा पाबंदियों के लिए इनफ़िनिटी. (I311ea, b/150460257)
कंटेनर हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (Ibbc2b, b/151407926)
LayoutWidth/Height/Size में बदलाव करने वाले ऐसे मॉडिफ़ायर हटा दिए गए हैं जिनका इस्तेमाल अब नहीं किया जा सकता. (Ib0bc1)
ऑफ़सेट मॉडिफ़ायर के लिए डिफ़ॉल्ट पैरामीटर वैल्यू जोड़ी गईं. (I37f06)
सिमेट्रिक पैडिंग मॉडिफ़ायर जोड़ा गया. (I39840)
LayoutAspectRatio मॉडिफ़ायर को हटा दिया गया है. (I65a74)
LayoutAlign मॉडिफ़ायर हटा दिए गए हैं. (I10877)
चौड़ाई और ऊंचाई में बदलाव करने वाले मॉडिफ़ायर में मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, रैप किए गए लेआउट को ऑपज़िट ऐक्सिस की कोई सीमा तय किए बिना मेज़र किया जा रहा था. (I210b8, b/154797971)
Row और Column में, verticalGravity और horizontalGravity पैरामीटर जोड़े गए. (I7dc5a)
wrapContentWidth और wrapContentHeight को अपडेट किया गया है, ताकि किसी भी अलाइनमेंट के बजाय वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट का इस्तेमाल किया जा सके. ग्रैविटी मॉडिफ़ायर को वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट को स्वीकार करने के लिए अपडेट किया गया था. कस्टम अलाइनमेंट को लगातार इस्तेमाल करने की सुविधा के लिए, लाइन, कॉलम, और स्टैक को अपडेट किया गया. (Ib0728)
Made Alignment को किसी भी वैल्यू के साथ इंस्टैंटिएट किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)
EdgeInsets का नाम बदलकर InnerPadding कर दिया गया है. Material Buttons के innerPadding पैरामीटर का नाम बदलकर padding कर दिया गया है. (I66165)
alignToSiblings अब Placeable के बजाय Measured को स्वीकार करता है. (I5788d)
साइजिंग के लिए मॉडिफ़ायर को इंट्रिंसिक मेज़रमेंट में जोड़ा गया है. साथ ही, इस मकसद को पूरा करने वाले कॉम्पोनेंट को बंद कर दिया गया है. (I8295d)
ConstraintLayout के बच्चों के डाइमेंशन को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई (Idb1a5)
Wrap और Center कंपोज़ेबल को हटा दिया गया है. (I29e23)
लेआउट मॉडिफ़ायर तय करने के लिए, नया एपीआई LayoutModifier2 जोड़ा गया; LayoutModifier (If32ac) को बंद कर दिया गया है
RowScope और ColumnScope के सदस्यों को अब Row और Column के बाहर से ऐक्सेस किया जा सकता है. (I3a641)
कंटेनर अब काम नहीं करता है. इसके बजाय, Box का इस्तेमाल करें. (I675ce, b/151407926)
लेआउट की पोज़िशन को ऑफ़सेट करने के लिए, LayoutOffset मॉडिफ़ायर जोड़ा गया (I0b8a3)
Compose लेआउट में RTL के लिए शुरुआती सहायता (Ia5519)
LayoutAlign को अपडेट किया गया है, ताकि अब यह उपलब्ध जगह को न भरे (I2b14f)
मॉडिफ़ायर के पक्ष में, AspectRatio कॉम्पोज़ेबल को हटा दिया गया है. हटाए गए FlexColumn, FlexRow कंपोज़ेबल और Spacing मॉडिफ़ायर (Iec8a7)
Row और Column के लिए LayoutInflexible मॉडिफ़ायर हटाया गया (I0d820)
TextField के लिए, चुने गए हिस्से में बदलाव करने के लिए, खींचकर चुनने वाले हैंडल लागू करें. (I27032)
यह TextField में टेक्स्ट चुनने के लिए, LongPressAndDrag को लागू करता है. (I17919)
गड़बड़ियां ठीक की गईं
- FocusModifier को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus, Modifier.focusRequester, और Modifier.focusObserver का इस्तेमाल करें. FocusState और FocusDetailedState को अब इस्तेमाल नहीं किया जा सकता. इनके बजाय, FocusState2 का इस्तेमाल करें (I46919, b/160822875, b/160922136)
runOnIdleComposeका नाम बदलकरrunOnIdleकर दिया गया (I83607)- टेस्टिंग के कई एपीआई के नाम बदलकर, उन्हें ज़्यादा आसान बना दिया गया है. findXYZ नाम वाले सभी एपीआई का नाम बदलकर onNodeXYZ कर दिया गया है. doXYZ नाम वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
- इससे पहले से बंद किए गए Modifier.ripple को हटाया जाता है. Clickable अब डिफ़ॉल्ट इंडिकेशन के तौर पर रिपल का इस्तेमाल करता है. ऐसा तब होता है, जब आपके ऐप्लिकेशन में MaterialTheme {} सेट हो. इसलिए, ज़्यादातर मामलों में सिर्फ़ clickable का इस्तेमाल करके, रिपल इंडिकेशन को बिना किसी शुल्क के पाया जा सकता है. अगर आपको रिपल के लिए रंग / साइज़ / बाउंडेड पैरामीटर को पसंद के मुताबिक बनाना है, तो RippleIndication को मैन्युअल तरीके से बनाएं. इसके बाद, इसे इंडिकेशन पैरामीटर के तौर पर clickable को पास करें. (I663b2, b/155375067)
- साइज़ की जांच करने वाले पुराने एपीआई हटा दिए गए हैं. (Iba0a0)
- LayoutNode के एक्सपेरिमेंटल एपीआई को बनाया गया (I4f2e9)
- स्क्रोल करने की दिशा लॉक करने की सुविधा का पहला वर्शन, Compose में लागू कर दिया गया है. (I1ce7a, b/150289741)
- पॉप-अप, डायलॉग, और मेन्यू अब कॉन्टेक्स्ट के हिसाब से MaterialTheme (Ia3665, b/156527485) को इनहेरिट कर रहे हैं
- Layout() फ़ंक्शन के मेज़र ब्लॉक से लेआउट की दिशा वाला पैरामीटर हटाया गया. हालांकि, लेआउट की दिशा को मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए, कॉलबैक के अंदर उपलब्ध कराया जाता है
- AbsoluteArrangement जोड़ें - इससे Row में मौजूद बच्चों को व्यवस्थित किया जा सकता है. साथ ही, आरटीएल में अपने-आप मिररिंग नहीं होती (I3a1df)
- @Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. इसे @ComposableContract(tracked=false) से बदलें (Id211e)
- इस बदलाव से पहले, कंपोज़ कंपाइलर प्लगिन, @Composable फ़ंक्शन के अंदर कंस्ट्रक्टर को कॉल करने के अनुरोधों को इंटरसेप्ट कर लेता था. ऐसा तब होता था, जब (I5205a, b/158123804) मौजूद होता था
viewModel()कंपोज़ेबल जोड़ें. इसकी मदद से, पहले से बनाए गए ViewModel को बनाया या पाया जा सकता है. यह ठीक उसी तरह काम करता है जिस तरह ऐक्टिविटी या फ़्रैगमेंट में काम करता है (I5fdd1)Radius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, कंपैनियन ऑब्जेक्ट बनाने के तरीके हटा दिए गए हैं. साथ ही, डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल किया गया है, ताकि y-ऐक्सिस के साथ रेडियस, x-ऐक्सिस के रेडियस पैरामीटर से मेल खाए.
DrawScope.drawRoundRect को अपडेट किया गया है. अब यह x और y ऐक्सिस के साथ रेडियस के लिए, दो अलग-अलग फ़्लोट वैल्यू के बजाय एक ही रेडियस पैरामीटर का इस्तेमाल करेगा (I46d1b)
पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है. Px क्लास को पूरी तरह से मिटा दिया गया है (I3ff33)
पिक्सल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I086f4)
पिक्सल पैरामीटर (Id3434) के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है
पिक्सेल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग की गई. इसके तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया (I97a5a)
TextField के कर्सर में ब्लिंक करने वाला ऐनिमेशन है (Id10a7)
आंशिक जेस्चर के लिए, अब GestureToken (Id7ae5) को पास करने की ज़रूरत नहीं है
पिक्सल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I57bff)
Modifier.semantics को फिर से इस्तेमाल किया जा सकता है, ताकि इसका इस्तेमाल हाई लेवल कॉम्पोनेंट के लिए किया जा सके. (I4cfdc)
AnnotatedString.Builder.addAnnotationString का नाम बदलकर addStringAnnotation कर दिया गया है. (I5059e)
Alignment API को अपडेट किया गया है. साथ ही, इसमें ऐब्सलूट अलाइनमेंट के लिए सहायता जोड़ी गई है. यह आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता (I38cd3)
Layout और LayoutModifier के चाइल्ड को, लेआउट की अलग दिशा के हिसाब से मेज़र किया जा सकता है. (Ibd731)
ImagePainter में एक और वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि इमेज ऐसेट के किसी सबसेट को ड्रा किया जा सके (I0ea9e)
आइटम हटाते समय AdapterList में क्रैश होने की समस्या ठीक की गई (Ic64b0, b/153195921)
हमने गतिविधि में मौजूद setContent { } ब्लॉक में रखे गए पहले लेआउट को मेज़र करने के तरीके में बदलाव किया है. पहले, इसे पूरी गतिविधि वाली स्क्रीन पर दिखाना ज़रूरी था. अब यह ऐसे काम करता है जैसे आपने अपने लेआउट को स्टैक में रखा हो: यह स्क्रीन से छोटा हो सकता है और इसे स्क्रीन के सबसे ऊपर बाईं ओर रखा जाएगा. अगर आपको लेआउट के लिए पुराना तरीका इस्तेमाल करना है, तो Modifier.fillMaxSize() लागू करें. (Ie88a7, b/153453714)
ui-text-compose मॉड्यूल का नाम बदलकर ui-text कर दिया गया है. ui-text में अब CoreText और CoreTextField कंपोज़ेबल शामिल हैं (Ib7d47)
ui-text मॉड्यूल का नाम बदलकर ui-text-core (I57dec) कर दिया गया है
ui-framework/CoreText और CoreTextField कंपोज़ेबल को ui-text-compose में ले जाया गया. आपको अपने प्रोजेक्ट में ui-text-compose शामिल करना पड़ सकता है. (I32042)
runOnIdleComposeऔरrunOnUiThreadअब ComposeTestRule पर उपलब्ध तरीकों के बजाय, ग्लोबल फ़ंक्शन हैं. (Icbe8f)[Mutable]State प्रॉपर्टी डेलिगेट ऑपरेटर को एक्सटेंशन में ले जाया गया है, ताकि Kotlin 1.4 प्रॉपर्टी डेलिगेट ऑप्टिमाइज़ेशन का इस्तेमाल किया जा सके.
by state { ... }याby mutableStateOf(...)का इस्तेमाल जारी रखने के लिए, कॉल करने वालों को इंपोर्ट जोड़ने होंगे. (I5312c)DrawLayerModifier और drawLayer() अब clipToBounds और clipToOutline को डिफ़ॉल्ट रूप से फ़ॉल्स पर सेट करते हैं. (I0eb8b, b/152810850)
LayoutResult का नाम बदलकर MeasureResult कर दिया गया है. (Id8c68)
अब काम नहीं करने वाला Center कंपोज़ेबल. इसे LayoutSize.Fill + LayoutAlign.Center मॉडिफ़ायर से बदला जाना चाहिए. इसके अलावा, इसे Box या Stack कंपोज़ेबल में से किसी एक से भी बदला जा सकता है. हालांकि, इसके लिए ज़रूरी है कि इन पर सही मॉडिफ़ायर लागू किए गए हों (Idf5e0)
LayoutFlexible का नाम बदलकर LayoutWeight कर दिया गया है. टाइट पैरामीटर का नाम बदलकर फ़िल कर दिया गया है. (If4738)
DrawVector को सामान्य कंपोज़ेबल फ़ंक्शन से बदलकर, Modifier drawVector() पर सेट कर दिया गया है. यह लेआउट के बैकग्राउंड के तौर पर वेक्टर को ड्रॉ करेगा. (I7b8e0)
कंपोज़ किए जा सकने वाले फ़ंक्शन Clip को modifier drawClip() से बदलें. DrawClipToBounds एक ऐसा मॉडिफ़ायर है जिसका इस्तेमाल तब किया जाता है, जब आपको सिर्फ़ रेक्टैंगल शेप के साथ लेयर की सीमाओं को काटना होता है. (If28eb)
DrawShadow कंपोज़ेबल फ़ंक्शन को drawShadow() मॉडिफ़ायर से बदल दिया गया है. अब LayerModifier के हिस्से के तौर पर शैडो बनाई जाती हैं. (I0317a)
androidx.compose.ViewComposer को androidx.ui.node.UiComposer में ले जाया गया है androidx.compose.Emittable को हटा दिया गया है. यह ComponentNode के साथ काम नहीं करता था. androidx.compose.ViewAdapters को हटा दिया गया है. अब इन्हें इस्तेमाल के उदाहरण के तौर पर स्वीकार नहीं किया जाता. Compose.composeInto का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,
setContentयाsetViewContentका इस्तेमाल करें. Compose.disposeComposition को बंद कर दिया गया है. इसके बजाय,setContentसे मिलेCompositionपरdisposeतरीके का इस्तेमाल करें. androidx.compose.Compose.subcomposeInto को androidx.ui.core.subcomposeInto पर ले जाया गया है ComponentNode#emitInsertAt का नाम बदलकर ComponentNode#insertAt कर दिया गया है ComponentNode#emitRemoveAt का नाम बदलकर ComponentNode#removeAt कर दिया गया है ComponentNode#emitMode का नाम बदलकर ComponentNode#move कर दिया गया है (Idef00)इस्तेमाल से बाहर किया गया रैप कंपोज़ेबल. इसे LayoutAlign मॉडिफ़ायर या Stack कंपोज़ेबल (Ib237f) से बदला जा सकता है
लेआउट की दिशा को पैरंट लेआउट नोड से चाइल्ड नोड तक ले जाने की सुविधा जोड़ी गई. लेआउट की दिशा बदलने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)
Painter.toModifier का नाम बदलकर Painter.asModifier कर दिया गया है, क्योंकि नए बनाए गए Modifier में ओरिजनल Painter का रेफ़रंस है. इसे Modifier के कई इंस्टेंस के साथ शेयर किया जा सकता है (I7195b)
LayoutPadding मॉडिफ़ायर में, दाएं से बाएं की दिशा में लिखने की सुविधा जोड़ी गई (I9e8da)
Density और DensityScope को एक ही इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय सिर्फ़ with(density) (I11cb1)
ValueHolder क्लास हटा दी गई है. AnimatedValue और AnimatedFloat क्लास को फिर से स्ट्रक्चर किया गया है, ताकि ऐनिमेशन वैल्यू फ़ील्ड को ऐब्स्ट्रैक्ट बनाया जा सके. इससे सबक्लास, वैल्यू अपडेट को देख सकते हैं.
- AnimatedValue, AnimatedFloat वगैरह के लिए मॉडल क्लास जोड़ी गईं.
- वैल्यू के बीच ऐनिमेशन के लिए, @Composable एपीआई का नया सेट जोड़ा गया.
- (I79530)
ambients API में बड़े बदलाव. ज़्यादा जानकारी के लिए, लॉग और
Ambient<T>दस्तावेज़ देखें (I4c7ee, b/143769776)Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की इंट पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)
ConstraintLayout में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फिर से कंपोज़ करने पर ऐप्लिकेशन क्रैश हो जाता था. (Ibee5a, b/158164341)
WithConstraints ट्रेलिंग लैम्डा एपीआई में बदलाव किया गया है. अब इसमें दो पैरामीटर के बजाय रिसीवर स्कोप है. यह कंस्ट्रेंट और layoutDirection के साथ-साथ, Dp में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी भी उपलब्ध कराता है (I91b9a, b/149979702)
LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया है. (Id29f3)
Layout और LayoutModifier2 में मौजूद इंट्रिंसिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिंसिक क्वेरी एपीआई को लेआउट की दिशा के बारे में जानकारी देता है. (Id9945)
LayoutDirectionAmbient अब काम नहीं करता. भाषा के हिसाब से तय किए गए लेआउट के बारे में जानने के लिए, ConfigurationAmbient (I851b1) पर localeLayoutDirection का इस्तेमाल करें
LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)
ParentData कंपोज़ेबल अब काम नहीं करता है. आपको ParentDataModifier इंटरफ़ेस लागू करने वाला कोई मॉडिफ़ायर बनाना चाहिए. इसके अलावा, अगर आपको सिर्फ़ लेआउट के बच्चों को टैग करना है, ताकि उन्हें मेज़र ब्लॉक में पहचाना जा सके, तो LayoutTag मॉडिफ़ायर का इस्तेमाल करें. (I51368, b/150953183)
OnPositioned और OnChildPositioned कंपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)
LayoutPadding में नेगेटिव पैडिंग की अनुमति न दें. नेगेटिव पोज़िशन ऑफ़सेट के लिए, LayoutOffset का इस्तेमाल किया जाना चाहिए. (Ifb5b1)
WithConstraints को LayoutDirection पैरामीटर मिला (I6d6f7)
ComposeFlags.COMPOSER_PARAMफ़्लैग कोtrueके तौर पर अपडेट किया गया है. इससे कंपोज़ प्लगिन के लिए कोड जनरेट करने की रणनीति बदल जाएगी. ऊपरी तौर पर, इसकी वजह से @Composable फ़ंक्शन, एक अतिरिक्त सिंथेटिक पैरामीटर के साथ जनरेट होते हैं. इस पैरामीटर को बाद के @Composable कॉल में पास किया जाता है, ताकि रनटाइम, एक्ज़ीक्यूशन को सही तरीके से मैनेज कर सके. यह बाइनरी में किया गया एक अहम बदलाव है. हालांकि, Compose के सभी मान्य इस्तेमाल में, सोर्स-लेवल की कंपैटिबिलिटी बनी रहनी चाहिए. (I7971c)LayoutCoordinates में बदलाव किया गया है, ताकि providedAlignmentLines को Map के बजाय Set बनाया जा सके. साथ ही, वैल्यू वापस पाने के लिए LayoutCoordinates में get() ऑपरेटर को लागू किया जा सके. इससे मॉडिफ़ायर के लिए, सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. इसके लिए, उन्हें हर मॉडिफ़ायर के लिए नया कलेक्शन बनाने की ज़रूरत नहीं होती. (I0245a)
LayoutCoordinates में अब position प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के लिए, position प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. इसके बजाय, डेवलपर को एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.
LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, लेआउट के सभी साइज़ में पूर्णांक का इस्तेमाल किया जाना चाहिए, न कि फ़्लोटिंग पॉइंट वैल्यू का. (I9367b)
Constraints (I0fd15) के एपीआई में सुधार
TextDirection.Content जोड़ा गया (I48f36)
टूलबार मेन्यू को इस तरह से अडजस्ट करें कि कॉपी, कट, और पेस्ट करने के विकल्प ठीक से दिखें. (Id3955)
TextField में टेक्स्ट चुनने के लिए, FloatingToolbar जोड़ें. (Ie8b07)
TextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)
TextDirection का नाम बदलकर ResolvedTextDirection कर दिया गया है (I3ff38)
TextField में चुने गए टेक्स्ट के लिए, HapticFeedback जोड़ा गया. (I58050)
TextField Selection में कॉपी करने, काटने, और चिपकाने के तरीके जोड़ें. (Idb70b)
TestTag और Semantics को मिटा दिया गया है. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)
Locale और LocaleList के लिए पैकेज का नाम androidx.ui.text से बदलकर androidx.ui.intl कर दिया गया है (I8132c)
एपीआई में बदलाव:
AnnotatedString(builder: Builder)का नाम बदलकरannotatedString(builder: Builder)कर दिया गया है. (Ia6377)एपीआई में बदलाव:
AnnotatedString.Itemका नाम बदलकरAnnotatedString.Rangeकर दिया गया है. (I2d44d)टेक्स्ट से जुड़ी कार्रवाइयों के लिए टूलबार जोड़ा गया. (I49d53)
नया LifecycleOwnerAmbient अब उपलब्ध है. अब Compose यूज़र इंटरफ़ेस (यूआई) के साथ इस्तेमाल की जा रही किसी गतिविधि को androidx.activity.ComponentActivity (या AppCompatActivity) को बढ़ाना चाहिए. android.app.Activity पर setContent अब बंद कर दिया गया है (Idb25a, b/153141084)
androidx की नीति के मुताबिक, ui-android-text पैकेज के नाम (androidx.text) को androidx.ui.text.platform से बदल दिया गया है. (I42711)