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
(सभी कंपोज़ पैकेज के लिए, एपीआई के बारे में जानकारी देने वाले दस्तावेज़ देखें)
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
10 सितंबर, 2025 | 1.9.1 | - | - | 1.10.0-alpha03 |
संरचना
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 Compiler Plugin के लिए कोर रनटाइम, ताकि उसे टारगेट किया जा सके. |
compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, Compose यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.9.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.9.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.10
वर्शन 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)- स्क्रोलबार की स्थिति दिखाने के लिए
ScrollIndicatorState
API पेश किया गया (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.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 को अपग्रेड किया जा सकता है. आईडीई में कंपोज़ लिंट चेक चलाने के लिए, 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)- Android पर
ProcessTextKey
पेश किया गया है. इसका इस्तेमाल, कॉन्टेक्स्ट मेन्यू आइटम के लिए किया जाता है. इसेPROCESS_TEXT
इंटेंट ऐक्शन के लिए जोड़ा गया है. (If0ac4) - कॉन्टेक्स्ट मेन्यू वाले एपीआई को सार्वजनिक करें. कॉन्टेक्स्ट मेन्यू में आइटम जोड़ने और हटाने के लिए,
Modifier.addTextContextMenuComponents
औरModifier.filterTextContextMenuComponents
को दिखाया गया है. हमने इन बुनियादी एपीआई को भी सार्वजनिक कर दिया है, ताकि कोई भी व्यक्ति अपनी पसंद के मुताबिक कॉन्टेक्स्ट मेन्यू बना सके:TextContextMenuProvider
TextContextMenuDataProvider
TextContextMenuData
TextContextMenuComponent
LocalTextContextMenuDropdownProvider
LocalTextContextMenuToolbarProvider
(I1b7b0)
LazyLayoutItemProvider
को स्टेबल बनाएं (Icce09, b/261565751)- Android में स्मार्ट तरीके से चुनने की सुविधा जोड़ी गई है. इसे
ComposeFoundationFlags.isSmartSelectionEnabled
के ज़रिए चालू/बंद किया जा सकता है. यह एक स्टैटिकcompositionLocal
LocalTextClassifierCoroutineContext
भी दिखाता है. इसका इस्तेमाल, उस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 को अपग्रेड किया जा सकता है. आईडीई में कंपोज़ लिंट चेक चलाने के लिए, 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) - उस गड़बड़ी को ठीक किया गया है जिसमें
OverscrollEffects
कोModifier.anchoredDraggable
में पास करने पर, 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)
पर माइग्रेट करना शुरू करें.TextFieldState
ClickableText
का अब इस्तेमाल नहीं किया जा सकता. अपने टेक्स्ट में क्लिक करने लायक लिंक जोड़ने के लिए,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)basicMarquee
delayMillis
पैरामीटर का नाम बदलकर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)
WindowInsetsPadding
मॉडिफ़ायर को सामान्य सोर्स सेट (I070b2) से उपलब्ध कराएं
वर्शन 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
क्लास जोड़ी गई है. इससे टेक्स्ट कंपोज़ेबल के पैरामीटर के तौर पर लिंक को स्टाइल किया जा सकता है. (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
और उससे जुड़ेLocalContextMenuTheme
ProvidableCompositionLocal
को जोड़ता है. टेक्स्ट फ़ील्ड और चुने जा सकने वाले टेक्स्ट पर मौजूद कॉन्टेक्स्ट मेन्यू के रंगों में बदलाव किया जा सकता है. इसके लिए, कंपोज़िशन लोकल उपलब्ध कराएं. (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) को पास करेंAnnotatedString
UrlAnnotation
के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,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
के सिमैंटिक पर असर डालने के लिए,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
कोdragAndDropTarget
Modifier
में जोड़ दिया गया है, ताकि खींचें और छोड़ें की सुविधा का इस्तेमाल करके इसे स्वीकार किया जा सके. अगर आपको ड्रैग और ड्रॉप सेशन में दिलचस्पी है, तो यह लैंबडा एक काम का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)
BringIntoViewCalculator
API लॉन्च किया गया है. इसका इस्तेमाल करके, यह तय किया जा सकता है किScrollable
जैसे कॉम्पोनेंट,bringIntoView
के अनुरोधों का जवाब कैसे दें. स्क्रोल किए जा सकने वाले कॉन्टेंट के ओवरलोड को बदलकर,BringIntoViewCalculator
के इंस्टेंस को स्वीकार करने का विकल्प जोड़ा गया. (Iaf5af)
गड़बड़ियां ठीक की गईं
- अगर आपने कंपोज़िशन में
MutableInteractionSource
बनाया है, तो आपको चेतावनी देने के लिए लिंट चेक जोड़ा गया है. यह लिंट चेक, म्यूटेबल स्टेट /Animatable
बनाने के लिए किए जाने वाले लिंट चेक की तरह ही काम करता है. (I5daae) - माउस से चुनने की सुविधा जोड़ी गई. टच करके चुने गए टेक्स्ट को शब्द के हिसाब से बढ़ाया जा सकता है और वर्ण के हिसाब से कम किया जा सकता है. (Ic0c6c, b/180639271)
- कस्टम
FocusTarget
बनाने के लिए,FocusTargetModifierNode
इंटरफ़ेस जोड़ा गया. (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.clickable
,Modifier.draggable
,Modifier.scrollable
, लेआउट मॉडिफ़ायर वगैरह कोModifier.Node
एपीआई पर माइग्रेट कर दिया गया है. इससे शुरुआती कंपोज़िशन पर पड़ने वाला असर कम हो गया है. - पेजर की स्थिरता में सुधार किए गए हैं. कई बग ठीक किए गए हैं.
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
s को अब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) - कैनवस पर टेक्स्ट बनाते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम को सपोर्ट करने के लिए,
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 से
beyondBoundCount
API को पहले जैसा करें (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.imeAnimationSourc
e और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)
गड़बड़ियां ठीक की गईं
- अब कर्सर टाइमर को रीस्टार्ट किए बिना,
BasicTextField
cursorBrush
को ऐनिमेट किया जा सकता है. (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)- आईएमई में दशमलव सेपरेटर को शामिल करने के लिए,
Keyboard.Number
के विकल्प के तौर परKeyboardType.Decimal
को जोड़ा गया है. (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
के कॉन्टेंट को अपने-आप फ़्लिप करने की सुविधा काम कर सके. ऐसा तब होगा, जब मौजूदा लेआउट की दिशा आरटीएल हो. (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) - Measured इंटरफ़ेस अब 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
फ़ंक्शन के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है.LazyVerticalGrid
पर मौजूद आइटम/आइटम फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं.LazyGridScope
इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लिए लॉजिक का दोबारा इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ दोबारा इस्तेमाल किया जा सकता है. (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)
FocusState
enum को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 पर असर डालने वाली समस्या को ठीक किया गया है. इस समस्या में, बच्चों को लेआउट करने के लिए spacedBy अरेंजमेंट का इस्तेमाल किया जाता था. (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 का इस्तेमाल करने के लिए, Layout API को अपडेट किया गया है / आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
InteractionState
को[Mutable]InteractionSource
से बदल दिया गया है- इंटरफ़ेस, इंटरैक्शन इवेंट को इकट्ठा करने या उन्हें ट्रिगर करने के लिए ज़िम्मेदार होते हैं.
Button
औरModifier.clickable()
जैसे कॉम्पोनेंट कोinteractionState = remember { InteractionState() }
पास करने के बजाय,interactionSource = remember { MutableInteractionSource() }
का इस्तेमाल करें.- इसके बजाय:
Interaction.Pressed in interactionState
आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए. जैसे, InteractionSource.collectIsPressedAsState(). - इस्तेमाल के जटिल उदाहरणों के लिए, InteractionSource.interactions का इस्तेमाल करके इंटरैक्शन की स्ट्रीम को देखा जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource का दस्तावेज़ और सैंपल देखें.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- 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 क्लास के बजाय, Scrollable इंटरफ़ेस का इस्तेमाल करता है (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 को अब याद रखने वाली कुंजियों की ज़रूरत होती है. इससे यह पता चलता है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोराटीन को कब रीस्टार्ट करना चाहिए. (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: ऐरे) और itemsIndexed(ऐरे) (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
को सिर्फ़ एक बार कॉल किया जाता है.onEnter
was called multiple time if the object was used in subcompositions, such asWithConstraints
andScaffold
making the singleonEnter
call guarantee unreliable and it was removed forRememberObserver
.RememberObserver
,onAbandoned
को जोड़ता है. इसे तब कॉल किया जाता है, जबremember
को पास किए गए कॉलबैक सेRememberObserver
इंस्टेंस वापस आ जाता है, लेकिन कंपोज़िशन की स्थिति में इसे याद नहीं रखा जाता. इसलिए, इसे कभी भी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)
displaySize को हटाएं, क्योंकि इसका इस्तेमाल नहीं किया जाना चाहिए. आम तौर पर, 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)
- 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)
ऑटोमैटिक भरने वाला एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध है. इसके लिए, ऑप्ट-इन (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 में ले जाया गया है और इसका नाम बदलकर API काउंसिल के दिशा-निर्देशों के मुताबिक, इसे ImageVector की इनर क्लास बना दिया गया है. 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)
- Box को इनलाइन फ़ंक्शन बनाया गया. (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 कॉम्पोनेंट को हटाया गया. फ़िल्ड टेक्स्ट फ़ील्ड के लिए, कृपया TextField का इस्तेमाल करें, ताकि Material Design को लागू किया जा सके. (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 DSL को हटा दिया गया है. 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 का इस्तेमाल करें -ट्रांज़िशन डीएसएल को बेहतर बनाएं. इसके लिए, tween और spring जैसे 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 को बेहतर बनाया गया है:
- draw() के लिए रिसीवर स्कोप को 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)
एपीआई का नाम बदलकरPaintBox(Painter)
कर दिया गया है Created Vector composable that behaves like the Image composable except with a VectorAsset instead of an ImageAsset (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 में, दाएं से बाएं लिखे जाने वाले टेक्स्ट के लिए सहायता से जुड़ी समस्या ठीक की गई. ऐसे एपीआई जोड़े गए हैं जो RTL के बारे में नहीं जानते हैं. (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)
यह LongPressAndDrag को TextField Selection के लिए लागू करता है. (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 को हटाया जाता है. अगर आपके ऐप्लिकेशन में MaterialTheme {} सेट है, तो अब क्लिक किए जा सकने वाले कॉम्पोनेंट के लिए, डिफ़ॉल्ट इंडिकेशन के तौर पर रिपल का इस्तेमाल किया जाता है. इसलिए, ज़्यादातर मामलों में, सिर्फ़ क्लिक किए जा सकने वाले कॉम्पोनेंट का इस्तेमाल करके, रिपल इंडिकेशन को मुफ़्त में पाया जा सकता है. अगर आपको रिपल के लिए रंग / साइज़ / बाउंडेड पैरामीटर को पसंद के मुताबिक बनाना है, तो 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)
पाबंदियों (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)