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
(सभी compose पैकेज के लिए एपीआई रेफ़रंस दस्तावेज़ देखें)
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
11 दिसंबर, 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
संरचना
Compose, androidx
में सात Maven ग्रुप आईडी का कॉम्बिनेशन है. हर ग्रुप में, सुविधाओं का एक टारगेट किया गया सबसेट होता है. साथ ही, हर ग्रुप के लिए रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, रिलीज़ नोट के हर सेट के ग्रुप और लिंक के बारे में बताया गया है.
ग्रुप | ब्यौरा |
---|---|
compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, अपने Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
compose.compiler | @Composable फ़ंक्शन को बदलें और Kotlin कंपाइलर प्लग इन की मदद से ऑप्टिमाइज़ेशन चालू करें. |
compose.foundation | इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपना डिज़ाइन सिस्टम बनाने के लिए फ़ाउंडेशन को बढ़ाएं. |
compose.material | इस्तेमाल के लिए तैयार Material Design कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का सबसे ऊपरी लेवल का एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं. |
compose.material3 | मटीरियल डिज़ाइन के अगले वर्शन, Material Design 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. Material 3 में, अपडेट की गई थीम और कॉम्पोनेंट के साथ-साथ, Material You की डाइनैमिक कलर जैसी सुविधाएं शामिल हैं. इसे Android 12 के नए विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है. |
compose.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेटस मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, Compose कंपाइलर प्लग इन को टारगेट करने के लिए कोर रनटाइम. |
compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, कॉम्पोज़ यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट ज़रूरी हैं. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 1.8
वर्शन 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
DSL के लिए, डिफ़ॉल्ट तौर पर लागू करने की सुविधा जोड़ी गई है. (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)- अन्य एपीआई के मुताबिक,
effectModifier
प्रॉपर्टी कोOverscrollEffect
सेnode: DelegatableNode
में बदला गया. (Ic0b46, b/255554340) - एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertions
API को हटा दिया गया है. इसका मकसद, सुलभता की जांच करना था. इसके बजाय, इस काम के लिए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
को दो बार नहीं खींचा जा सकता. इसलिए, इनमें से किसी एक कॉम्पोनेंट के लिए दिए गएOverscrollEffect
कोModifier.overscroll
के साथ अलग से नहीं खींचा जा सकता. इन कॉम्पोनेंट की सीमाओं के बाहर ओवरस्क्रोल करने के इस्तेमाल के उदाहरण को आने वाले समय में अलग से हल किया जाएगा. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
वर्शन 1.8.0-alpha04
16 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04
रिलीज़ हो गया है. वर्शन 1.8.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
DelegatableNode#onDensityChange
औरDelegatableNode#onLayoutDirectionChange
कॉलबैक जोड़ता है, ताकि इनमें बदलाव होने पर नोड की स्थिति को अपडेट किया जा सके. (I04f3e, b/340662451)- पैराग्राफ़ और
ParagraphIntrinsics
, अबAnnotatedString
पर लागू किए गए सभी एनोटेशन की सूची लेता है. पहले इसमें सिर्फ़SpanStyles
की सूची होती थी. (I12f80) PointerInputModifierNode#touchBoundsExpansion
को जोड़ा गया है. इसका इस्तेमाल, एक पॉइंटर इनपुट मॉडिफ़ायर के टच बाउंड को बड़ा करने के लिए किया जा सकता है. (Iccf02, b/335339283)
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इसमें,
AnchoredDraggableDefaults.flingBehavior
को पास की गई पोज़िशन थ्रेशोल्ड को कुछ मामलों में सही तरीके से नहीं माना गया था. (Ifdf0d, b/367660226) - नेस्ट किए गए स्क्रोल किए जा सकने वाले एलिमेंट के लिए एक सुधार लाया गया है. ये एलिमेंट, फ़्लिंग के दौरान नोड ट्री से हटा दिए जाते हैं. अब ये नोड फ़्लिंग को रद्द कर देंगे और बचे हुए वेग के साथ
onPostFling
इवेंट को सही तरीके से भेज देंगे. हम फ़्लैगNewNestedScrollFlingDispatchingEnabled
भी पेश कर रहे हैं, ताकि परफ़ॉर्मेंस में गिरावट आने पर, इसकी सेटिंग को कंट्रोल किया जा सके. बीटा वर्शन से पहले, फ़्लैग हटा दिया जाएगा. (I05c37, b/371168883) - एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,
Modifier.anchoredDraggable
फ़ंक्शन में इस्तेमाल किए गएOverscrollEffects
फ़ंक्शन को 1D के बजाय 2D डेल्टा मिलते थे. (Ie52c0)
वर्शन 1.8.0-alpha03
2 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03
रिलीज़ हो गया है. वर्शन 1.8.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin वर्शन को 1.9 (I1a14c) पर अपडेट किया गया
- फ़्लैग
DraggableAddDownEventFixEnabled
(I848d5) को पेश किया गया - a11y सेवाओं के लिए पेजर में सूची के व्यवहार को एमुलेट करने के लिए, कैरसेल नाम की एक नई सेमेटिक्स भूमिका शुरू की गई है. (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.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() }
के बजाय null पास करें.Indication#rememberUpdatedInstance
का अब इस्तेमाल नहीं किया जा सकता. इसकी वजह से, परफ़ॉर्मेंस पर ज़्यादा असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नएIndicationNodeFactory
एपीआई का इस्तेमाल करना चाहिए.
- नया Indication API,
TextFieldState
का इस्तेमाल करकेBasicTextField
अब स्थिर है. हमारा सुझाव है कि सभी कॉल-साइटेंBasicTextField(value, onValueChange)
सेBasicTextField(TextFieldState)
पर माइग्रेट करना शुरू करें.ClickableText
का अब इस्तेमाल नहीं किया जा सकता. अपने टेक्स्ट में क्लिक किए जा सकने वाले लिंक जोड़ने के लिए,AnnotatedString
में नएLinkAnnotation
एनोटेशन के साथBasicText
का इस्तेमाल करें.LinkAnnotation
, लिंक की स्थिति (जैसे, फ़ोकस किया गया, कर्सर घुमाया गया) के आधार पर कस्टम स्टाइल की अनुमति देता है.MaxLines
औरOverflow
के साथContextualFlowRow
औरEnhanced FlowRow/Column
का इस्तेमाल करने का तरीका. हमें यह बताते हुए खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्धFlowRow
औरFlowColumn
में कई सुधार किए गए हैं. अब इनमेंmaxLines
और ओवरफ़्लो की सुविधा के साथ-साथContextualFlowRow
औरContextualFlowColumn
की सुविधा भी उपलब्ध है. इस अपडेट को परफ़ॉर्मेंस के लिए सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*
, ज़्यादा आइटम के लिए सही है. इसमें कम लाइन कॉन्फ़िगरेशन और डाइनैमिक +N ज़्यादा देखें बटन का इस्तेमाल किया जाता है. वहीं,FlowRow
औरFlowColumn
, 100 से कम आइटम के लिए सही है. अहम जानकारी:FlowRow
याFlowColumn
में मौजूदा व्यवहार को बनाए रखने के लिए, सभी आइटम को कॉम्पोज़ किया जाता है. भले ही, वे क्रॉस ऐक्सिस मैक्स में फ़िट हों या नहीं. इसके लिए, शुरू करने के दौरान ओवरफ़्लो कोFlowRowOverflow.Visible
याFlowColumnOverflow.Visible
पर सेट करें. इन नई सुविधाओं के काम करने के उदाहरणों के लिए,ContextualFlowRowSample
औरFlowRowSample
पर जाएं. (Ib9135, b/293577082)LazyColumn
औरLazyRow
में, आइटम के दिखने और न दिखने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाने) ऐनिमेशन के साथ काम करने के लिए,Modifier.animateItemPlacement()
मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है औरModifier.animateItem()
नाम का एक नया मॉडिफ़ायर लॉन्च किया है. यह एक्सपेरिमेंटल नहीं है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), न दिखना (फ़ेड आउट), और क्रम में बदलना. (I2d7f7, b/150812265)- Android के आधिकारिक एपीआई (
ScrollCaptureCallback
) का इस्तेमाल करके, Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. 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 और फ़ाउंडेशन में 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
और पेजर में, 'नॉन' वैल्यू को ठीक करने के लिए.
वर्शन 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 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
LazyLists
के लिए मौजूदा एक्सपेरिमेंटल एपीआई की तरह ही,LazyGrids
के कॉन्फ़िगरेशन के लिए एक्सपेरिमेंटल एपीआई जोड़ता है. इसमें नेस्ट किए गए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)TextStyle
क्लास सेTextLinkStyles
को हटाया गया. इसके बजाय,TextLinkStyles
LinkAnntation
कन्स्ट्रक्टर औरAnnotatedString.fromHtml
तरीके (I90b2b) का हिस्सा है- एक गड़बड़ी को ठीक किया गया है. इसमें, पेजर को पहले से ही बाउंड पर होने के बावजूद, बाउंड की ओर फ़्लिंग करने पर स्नैप हो जाता था. (I9f373, b/339171222)
- BTF2 में अब माउस से आइटम चुनने के लिए सही जेस्चर जोड़े गए हैं. (Ibe8c6)
बाहरी योगदान
- 'सटीक जानकारी देने के लिए, कॉन्टेंट टाइप के हिसाब से, कॉन्टेंट लिखने/उसके लिए लगने वाले समय का हिसाब लगाने की सुविधा को प्रीफ़ेच के आधार पर बनाएं' (Iea622) को फिर से सबमिट करें
- सटीक जानकारी देने के लिए, कॉन्टेंट टाइप के आधार पर, कॉन्टेंट लिखने/उस पर बिताए गए समय का हिसाब लगाने की सुविधा को प्रीफ़ेच के आधार पर उपलब्ध कराएं (Ibccb1)
- सामान्य सोर्स सेट (I070b2) से
WindowInsetsPadding
मॉडिफ़ायर उपलब्ध कराना
वर्शन 1.7.0-beta01
14 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
KeyboardOptions.shouldShowKeyboardOnFocus
प्रॉपर्टी को फिर से जोड़ा गया है. हालांकि, इसे अब काम नहीं करने वाली प्रॉपर्टी के तौर पर जोड़ा गया है, ताकि बाइनरी के साथ काम करने की सुविधा को बनाए रखा जा सके. (I15cfe)Modifier.anchoredDraggable
अब आरटीएल लेआउट में इस्तेमाल किए जाने पर, हॉरिज़ॉन्टल ओरिएंटेशन वाले कॉम्पोनेंट के लिए, ड्रैग डेल्टा को डिफ़ॉल्ट रूप से उलट देता है. (I3c6d9)AnnotatedString.hasEqualsAnnotations
अबhasEqualAnnotations
हो गया है. (I685c0)- टेक्स्ट में Material थीम वाले लिंक पाने के लिए, एपीआई को अपडेट किया गया. खास तौर पर, थीम वाले
LinkAnnotations
बनाने और थीम वाले लिंक के साथ एचटीएमएल को पार्स करने के लिए,TextDefaults
से तरीके हटा दिए गए हैं. इसके बजाय, एकTextLinkStyles
क्लास जोड़ी गई है. इसकी मदद से, लिंक को टेक्स्ट कॉम्पोज़ेबल के पैरामीटर के तौर पर स्टाइल किया जा सकता है. (I31b93) onDragStarted
औरonDragStopped
को ऐसे कॉलबैक से बदला गया जो सस्पेंड नहीं होते. (I59de8)
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,
contentPadding
के इनकमिंग कंस्ट्रेंट से ज़्यादा होने पर, पेजर क्रैश हो जाता था. पेजर अब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)LinkInteractionListener
(Iaa35c) मेंonClicked
का नाम बदलकरonClick
किया गया- एपीआई काउंसिल के सुझाव के मुताबिक,
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
बनाएं और इसAnnotatedString
कोText
कॉम्पोज़ेबल (I34d4b, b/323346994) में पास करेंUrlAnnotation
का इस्तेमाल बंद कर दिया गया है. इसके बजाय,LinkAnnotation.Url
का इस्तेमाल करें. अगर आपने Material थीम का इस्तेमाल किया है, तोTextDefaults
ऑब्जेक्ट का इस्तेमाल करके, एनोटेशन बनाएं. इसमें Material थीम लागू होगी (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
को पेश किया गया है. यह प्लैटफ़ॉर्म के हिसाब से फ़ोकस स्क्रोलिंग की गतिविधि है, जो स्क्रोल करने लायक मॉडिफ़ायर लेयर पर लागू होती है. (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) - Android के आधिकारिक एपीआई (
ScrollCaptureCallback
) का इस्तेमाल करके, Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को प्रयोग के तौर पर लागू किया गया है. यह सुविधा प्रयोग के तौर पर उपलब्ध है और हो सकता है कि फ़िलहाल यह सभी मामलों में सही तरीके से काम न करे. इसलिए, यह सुविधा फ़िलहाल डिफ़ॉल्ट रूप से बंद रहती है. ऑप्ट-इन करने के लिए,ComposeFeatureFlag_LongScreenshotsEnabled
फ़्लैग को 'सही है' पर सेट करें. यह फ़्लैग, 1.7 बीटा वर्शन से पहले हटा दिया जाएगा. (I2b055, b/329296471) GraphicsLayer
इंस्टेंस के प्लेसमेंट और रेंडरिंग में ज़्यादा सुविधाएं देने के लिए, नयाGraphicsLayer
एपीआई पेश किया गया है. साथ ही,GraphicsLayer
मॉडिफ़ायर इंस्टेंस की जानकारी देने के लिए, Composable लागू करने के साथ समन्वय करने की ज़रूरत के बिना, इंट्रिन्सिक रेंडरिंग सुविधाओं के साथ काम करने की सुविधा भी दी गई है.
एपीआई में हुए बदलाव
- सभी
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
के पैरामीटर का क्रम बदला गया.KeyboardOptions
क्लास के लिए,keyboardType
औरimeAction
पैरामीटर हटा दिए गए हैं. हालांकि,BasicSecureTextField
के लिए डिफ़ॉल्ट वैल्यू पहले जैसी ही रखी गई हैं.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
अब क्लिपबोर्ड को खाली करने के लिए, शून्य को स्वीकार करता है. (I7d2e9)ReceiveContentListener
को फ़ंक्शन इंटरफ़ेस में बदल दिया जाता है. साथ ही,Modifier.receiveContent
का वह ओवरलोड हटा दिया गया है जिसमें lambda फ़ंक्शन का इस्तेमाल होता है. ऐसा इसलिए किया गया है, क्योंकिReceiveContentListener
अब एक फ़ंक्शन इंटरफ़ेस है.Modifier.receiveContent
का नाम बदलकरModifier.contentReceiver
कर दिया गया. (I1e6af)TransferableContent.consumeEach
का नाम बदलकरTransferableContent.consume
किया गया. (I1e462)rememberTextFieldState
को स्टेबल एपीआई के तौर पर लॉन्च किया गया है. (I37999)
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है, जिसमें
BasicTextField(state)
वैरिएंट, CJK(कॉम्पोज़िशन पर आधारित) कीबोर्ड के साथ काम नहीं करता था. (I54425) - एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,
Modifier.Node
का फिर से इस्तेमाल करने पर,Modifier.dragAndDropTarget()
कुछ मामलों में पुराने डेटा का रेफ़रंस दे सकता था. (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)
KeyboardOptions
मेंhintLocales
जोड़ा गया, ताकिTextFields
को पसंदीदा भाषा को पहले से सेट करने के लिए, खास स्थानीय भाषाओं के साथ आईएमई को हिंट देने की सुविधा मिल सके. (Id18c2)- एक्सपेरिमेंट के तौर पर उपलब्ध
BasicTextField2
औरBasicSecureTextField
ओवरलोड हटा दिए गए हैं. ये ओवरलोड,value: String
औरonValueChange: () -> String
पैरामीटर लेते थे. (I568b4) InputTransformation
मेंapplySemantics
फ़ंक्शन जोड़ें. इससे,BasicTextField2
के सेमेटिक्स पर असर पड़ेगा. (I74a2f, b/170648072)- इस सीएल में, हम
GetScrollViewportLength
सेमैटिक ऐक्शन जोड़ रहे हैं, ताकि हम compose में स्क्रोल किए जा रहे कॉम्पोनेंट की जानकारी को 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)DraggableAnchors
में परफ़ॉर्मेंस ऑप्टिमाइज़ेशन, जिनका इस्तेमालAnchoredDraggable
करता है. (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
कॉम्पोज़िशन लोकल जोड़ा गया है. इससे, ऐप्लिकेशन में टेक्स्ट में लिंक का स्टाइल बदला जा सकता है. अगर ऐप्लिकेशन में अपनी थीम का इस्तेमाल किया जा रहा है, तो आपको अपनी थीम के हिसाब से इस कॉम्पोज़िशन लोकल को सेट करना चाहिए. Material थीम का इस्तेमाल करने पर, लिंक का रंग डिफ़ॉल्ट रूप से Material के प्राइमरी कलर पर सेट हो जाएगा. (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
को बेहतर तरीके से लागू किया जा सकता है. माइग्रेशन की जानकारी के लिए, 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 API के साथ इंटिग्रेट करने के लिए,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)
- अलग-अलग साइज़ वाले आइटम के ग्रिड में, 0 साइज़ वाले आइटम की जगह ठीक करना. (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 में आइटम को आसानी से खींचा और छोड़ा जा सकता है. सैंपल देखें.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
दिखाता है. खींचने और छोड़ने से जुड़े इवेंट को प्रोसेस करने के लिए, अन्य लैम्ब्डा फ़ंक्शन को इस फ़ंक्शन से बदल दिया गया है.खींचकर छोड़ने की सुविधा वाले सेशन से डेटा पाने के लिए,
DragAndDropTarget
फ़ैक्ट्री फ़ंक्शन जोड़ा गया है (Iebf3a)AnchoredDraggable
मेंstartDragImmediately
को एक्सपोज़ करने से, इसका इस्तेमाल करते समय खींचने और छोड़ने के जेस्चर का पता लगाने के लिए कंट्रोल मिलता है. यह तब सेट करना ज़रूरी होता है, जब विजेट किसी टारगेट ऐंकर पर ऐनिमेशन कर रहा हो. सैंपल देखें. (Ie6d13, b/285139987)फ़ाउंडेशन टूलटिप एपीआई अब
@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)- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,
minWidth
में बदलाव होने परBasicText
लेआउट छोटा नहीं होता था. साथ ही,minWidth
शुरुआती मेज़र की सीमाओंmaxWidth
से कम था (Idb19c) ArcLine
में स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ें. (I4d5bb)- विंडो इनसेट में बदलाव करने से बाइनरी के साथ काम करने से जुड़ी समस्या को ठीक करना (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)
गड़बड़ियां ठीक की गईं
onValueChange
की ज़रूरी शर्तों के बारे मेंBasicTextField
पर बेहतर दस्तावेज़. (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% से ज़्यादा है, तो छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ थोड़ा ही बढ़ेगा. साथ ही, SP में तय की गई लाइन की ऊंचाई, 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
जोड़ा गया. साथ ही,TooltipBox
को नएPlainTooltip
औरRichTooltip
कॉम्पोज़ेबल के साथ इस्तेमाल करने के लिए,PlainTooltipBox
औरRichTooltipBox
को अपडेट किया गया. (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)- उस समस्या को ठीक किया गया है जिसमें पेजर में प्रीफ़ेच करने की सुविधा, व्यू में प्रीफ़ेच करने की सुविधा से मेल नहीं खाती थी. (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
एपीआई को लॉन्च किया गया है. इसका इस्तेमाल करके,Scrollable
जैसे कॉम्पोनेंट केbringIntoView
अनुरोधों के जवाब देने के तरीके को पसंद के मुताबिक बनाया जा सकता है. स्क्रोल किए जा सकने वाले एलिमेंट के ओवरलोड को बदला गया, ताकिBringIntoViewCalculator
का इंस्टेंस स्वीकार किया जा सके. (Iaf5af)
गड़बड़ियां ठीक की गईं
- अगर कॉम्पोज़िशन में
MutableInteractionSource
को याद किए बिना बनाया जा रहा है, तो चेतावनी देने के लिए एक लिंट जांच जोड़ी गई है. यह जांच, बदलाव की जा सकने वाली स्थिति /Animatable
बनाने के लिए की जाने वाली लिंट जांच जैसी ही है. (I5daae) - माउस से चुनने की सुविधा जोड़ी गई. टच के आधार पर चुने गए टेक्स्ट को शब्द के हिसाब से बड़ा किया जा सकता है और वर्ण के हिसाब से छोटा किया जा सकता है. (Ic0c6c, b/180639271)
FocusTargetModifierNode
इंटरफ़ेस जोड़ा गया, जिसका इस्तेमाल कस्टमFocusTarget
बनाने के लिए किया जा सकता है. (I9790e)
संस्करण 1.5
वर्शन 1.5.4
18 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.5.4
रिलीज़ हो गया है. 1.5.4 वर्शन में ये बदलाव शामिल हैं.
वर्शन 1.5.3
4 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.5.3
रिलीज़ हो गया है. इस वर्शन में कोई बदलाव नहीं हुआ है.
संस्करण 1.5.2
27 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.5.2
रिलीज़ हो गया है. 1.5.2 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट में एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, कुछ मामलों में सेमेटिक्स अमान्य होने पर क्रैश होता था.
संस्करण 1.5.1
6 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.5.1
रिलीज़ हो गया है. 1.5.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
readOnly
के 'सही' होने पर, टेक्स्ट फ़ील्ड में कीबोर्ड दिखने और उसमें बदलाव किए जा सकने की समस्या को ठीक किया गया. फ़ोकस होने पर,readOnly
को 'सही' से 'गलत' में बदलने पर, कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)
वर्शन 1.5.0
9 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.5.0
रिलीज़ हो गया है. 1.5.0 वर्शन में ये बदलाव शामिल हैं.
1.4.0 के बाद किए गए ज़रूरी बदलाव
Modifier.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
का इस्तेमाल करें. इस पैरामीटर का इस्तेमाल करके, पेजर में शॉर्ट स्नैपिंग के लिए पोज़िशनल थ्रेशोल्ड तय करें. (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)- Pager के
SnapFlingBehavior
मेंshortSnapVelocityThreshold
को शामिल करें. (I7379e, b/275579012) FlowRowScope
औरFlowColumnScope
जोड़ता है. (I54fe2)
गड़बड़ियां ठीक की गईं
- टेक्स्ट पर सेमेंटेटिक्स पाने के लिए कॉल, जब पाबंदियों में
minWidth
औरminHeight
मौजूद हों, तो अब क्रैश नहीं होते. (Ibd072) Dialog
कॉम्पोज़ेबल से न बनाए गए डायलॉग बॉक्स में टेक्स्ट फ़ील्ड के लिए कीबोर्ड न दिखने की समस्या को ठीक किया गया. (I82551, b/262140644)
वर्शन 1.5.0-alpha03
19 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha03
और androidx.compose.foundation:foundation-layout:1.5.0-alpha03
रिलीज़ हो गए हैं. 1.5.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
इस रिलीज़ में, Compose के लिए टेक्स्ट रेंडरिंग स्टैक की नई सुविधा चालू की गई है. नया स्टैक, परफ़ॉर्मेंस के हिसाब से ऑप्टिमाइज़ किया गया है. आपको कोई बदलाव नहीं दिखेगा.
अगर आपको रेंडर किए गए टेक्स्ट में बदलाव दिखते हैं, तो NewTextRendering1_5 = false
सेट करके, व्यवहार में अंतर की पुष्टि की जा सकती है. इसे सेट करने पर, कॉम्पोज़िशन फिर से बन जाएगा. कृपया व्यवहार में होने वाले किसी भी अंतर की शिकायत, गड़बड़ी के तौर पर करें.
1.5 beta01 रिलीज़ होने से पहले, डीबग फ़्लैग हटा दिया जाएगा.(Iada23, b/246960758)
एपीआई में हुए बदलाव
FlowColumn/FlowRow
को इनलाइन करें. (Idab37)
वर्शन 1.5.0-alpha02
5 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha02
और androidx.compose.foundation:foundation-layout:1.5.0-alpha02
रिलीज़ हो गए हैं. 1.5.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyGrid
में, तय साइज़ वाली सेल के साथ-साथ, क्रॉस ऐक्सिस के हिसाब से सेल व्यवस्थित करने की सुविधा जोड़ी गई है. (I83ed9, b/235121277, b/267942510)LazyStaggeredGrid
में, तय साइज़ वाली लेन के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस के हिसाब से व्यवस्थित करने की सुविधा भी जोड़ी गई है. (I7d519)AnnotatedString
में मौजूदUrlAnnotation
को अबTalkBack
जैसी सुलभता सेवाओं की मदद से खोला जा सकता है. (If4d82, b/253292081)- टेक्स्ट फ़ील्ड के लिए,
InsertTextAtCursor
सेमेटिक्स ऐक्शन जोड़ा गया. (I11ed5) - टेक्स्ट से जुड़ी टेस्ट ऐक्शन (जैसे,
performTextInput
) अब फ़ील्ड पर क्लिक करने के बजाय, सीधे फ़ोकस का अनुरोध करेगी. इसके लिए, सेमेंटेक्स ऐक्शन का इस्तेमाल किया जाएगा. (I6ed05) FlowRow
मेंverticalArrangement
औरFlowColumn
मेंhorizontalArrangement
का इस्तेमाल करके, क्रॉस ऐक्सिस स्पेसिंग/व्यवस्था के लिए सहायता जोड़ी गई है. हमFlowRow/FlowColumn
में टॉप-लेवलverticalAlignment
औरhorizontalAlignment
को भी हटा देते हैं. डेवलपर इसके बजाय,Modifier.align
का इस्तेमाल कर सकते हैं. इससेverticalAlignment
औरverticalArrangement
के नाम रखने के तरीकों के बीच भ्रम कम होता है. (I87b60, b/268365538)
वर्शन 1.5.0-alpha01
22 मार्च, 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
और androidx.compose.foundation:foundation-layout:1.5.0-alpha01
रिलीज़ हो गए हैं. 1.5.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नए मॉडिफ़ायर सिस्टम का इस्तेमाल करने के लिए, टेक्स्ट और
BasicText
को फिर से तैयार किया गया है. इससे कई मामलों में परफ़ॉर्मेंस में काफ़ी सुधार होता है. आपको कोई बदलाव नहीं दिखना चाहिए. (If1d17, b/246961435) - टेक्स्ट एडिटर नोड पर IME ऐक्शन को ट्रिगर करने के लिए,
PerformImeAction
सेमेटिक्स ऐक्शन जोड़ा गया. (Ic606f, b/269633506)
गड़बड़ियां ठीक की गईं
Modifier.hoverable
के इंटरनल को अपडेट किया गया.hoverable
मॉडिफ़ायर, इंस्पेक्टर में सिर्फ़ तब दिखेगा, जब वह चालू हो. (I82103)
वर्शन 1.4
वर्शन 1.4.3
3 मई, 2023
androidx.compose.foundation:foundation:1.4.3
और androidx.compose.foundation:foundation-layout:1.4.3
को बिना किसी बदलाव के रिलीज़ किया गया है (सिर्फ़ वर्शन में बदलाव किया गया है).
वर्शन 1.4.2
19 अप्रैल, 2023
androidx.compose.foundation:foundation:1.4.2
और androidx.compose.foundation:foundation-layout:1.4.2
रिलीज़ हो गए हैं. 1.4.2 वर्शन में ये बदलाव शामिल हैं.
वर्शन 1.4.1
5 अप्रैल, 2023
androidx.compose.foundation:foundation:1.4.1
और androidx.compose.foundation:foundation-layout:1.4.1
रिलीज़ हो गए हैं. 1.4.1 वर्शन में ये बदलाव शामिल हैं.
वर्शन 1.4.0
22 मार्च, 2023
androidx.compose.foundation:foundation:1.4.0
और androidx.compose.foundation:foundation-layout:1.4.0
रिलीज़ हो गए हैं. 1.4.0 वर्शन में ये बदलाव शामिल हैं.
1.3.0 के बाद किए गए अहम बदलाव
Text
औरTextField
के साथ-साथ, निचले लेवल के पैराग्राफ़ में भी इमोजी के साथ काम करने वाला इंटिग्रेशन जोड़ा गया. emojicompat कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.EmojiCompat
कोPlatformParagraphStyle
का इस्तेमाल करके, किसी खास टेक्स्ट पर कॉन्फ़िगर किया जा सकता है.LazyStaggeredGrid
(I28252) में पूरी लाइन के लिए स्पैन की सुविधा जोड़ी गईClickableText
(I6938f) में एक्सपेरिमेंट के तौर परonHover
जोड़ा जा रहा हैrunComposeUiTest
फ़ंक्शन औरcreate*ComposeRule
फ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContext
पैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कॉम्पोज़िशन और कॉम्पोज़िशन में मौजूद किसी भीLaunchedEffect
औरrememberCoroutineScope()
कॉल के लिए किया जाएगा. (I10614, b/265177763)FlowRow
औरFlowColumn
अब@ExperimentalFoundationApi
के तौर पर उपलब्ध हैं. इससे, कॉम्पोनेंट के लिए लाइन और कॉलम के आधार पर, ज़्यादा सुविधाजनक लेआउट बनाने में मदद मिलती है. अगर मुख्य ऐक्सिस पर ज़रूरत के मुताबिक जगह नहीं है, तो कॉम्पोनेंट नई लाइन में दिखेंगे. (I3a7b2)Modifier.basicMarquee()
, एक्सपेरिमेंट के तौर पर उपलब्ध है. इसका इस्तेमाल करके, स्क्रॉल करने वाले मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाया जा सकता है. (I2df44, b/139321650)
वर्शन 1.4.0-rc01
8 मार्च, 2023
androidx.compose.foundation:foundation:1.4.0-rc01
और androidx.compose.foundation:foundation-layout:1.4.0-rc01
रिलीज़ हो गए हैं. 1.4.0-rc01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट इनपुट लागू करने के लिए, लो-लेवल
PlatformTextInputAdapter
एपीआई को लॉन्च किया गया है. यह सीधे प्लैटफ़ॉर्म एपीआई से जुड़ा है. (I58df4) LazyStaggeredGrid
में, रिवर्स लेआउट के लिए सहायता जोड़ें. (I3ef4a)
गड़बड़ियां ठीक की गईं
BasicTextField
कीSetText
सेमेटिक्स ऐक्शन, अब उसी कोड पाथ का इस्तेमाल करके टेक्स्ट बफ़र को अपडेट करेगी जिसका इस्तेमाल IME अपडेट और टेस्टिंग फ़ंक्शन (उदाहरण के लिए,performTextReplacement
) करते हैं.- टेक्स्ट टेस्टिंग फ़ंक्शन
performTextClearance
,performTextReplacement
, औरperformTextSelection
अबSemanticsActions
का इस्तेमाल करते हैं. (I0807d, b/269633168, b/269624358)
वर्शन 1.4.0-beta02
22 फ़रवरी, 2023
androidx.compose.foundation:foundation:1.4.0-beta02
और androidx.compose.foundation:foundation-layout:1.4.0-beta02
रिलीज़ हो गए हैं. 1.4.0-beta02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक नया
Modifier.Node.onReset()
कॉलबैक जोड़ा गया है. इसकी मदद से, कुछ लोकल स्टेटस को रीसेट किया जा सकता है. इससे,Layout
का फिर से इस्तेमाल करने पर, उस स्थिति को सही तरीके से मैनेज किया जा सकता है. उदाहरण के लिए,LazyColumn
के आइटम के तौर पर. फ़ोकस की गई स्थिति को सही तरीके से रीसेट करने के लिए,FocusTargetModifierNode
को ठीक किया गया है. (I65495, b/265201972) - कैनवस पर टेक्स्ट ड्रॉ करते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम के साथ काम करने के लिए,
DrawScope.drawText
,Paragraph.paint
, औरMultiParagraph.paint
तरीकों मेंBlendMode
पैरामीटर जोड़ा गया. (I57508) modifierElementOf()
एपीआई को हटा दिया गया. इसके बजाय, कृपया सीधे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
का इस्तेमाल करके, किसी खास टेक्स्ट पर कॉन्फ़िगर किया जा सकता है.
एपीआई में हुए बदलाव
- सभी
LazyLayouts
में इस्तेमाल किए जाने वालेPinnableContainer
एपीआई को सामान्य तौर पर लागू किया गया है. इससे, कॉम्पोज़िशन से बाहर निकलने वाले आइटम को बनाए रखने में मदद मिलती है. हालांकि, इन आइटम को चालू रखना ज़रूरी है. (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)- इनलाइन/अब काम न करने वाले फ़ंक्शन (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)variationSettings
के साथAndroidFont
कन्स्ट्रक्टर अब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)PinnableContainer
एपीआई को लॉन्च किया गया, जो कॉम्पोज़िशन लोकल के ज़रिए, लेज़ी लिस्ट से प्रॉगेट किया जाता है. इससे मौजूदा आइटम को पिन किया जा सकता है. इसका मतलब है कि स्क्रोल करके व्यू से हटाए जाने पर, ऐसे आइटम को हटाया नहीं जाएगा. उदाहरण के लिए,Modifier.focusable()
इस तरीके से फ़ोकस किए गए मौजूदा आइटम को पिन करेगा. (Ib8881, b/259274257, b/195049010)- स्क्रोल किए जा सकने वाले एलिमेंट,
bringIntoViewRequesters
और फ़ोकस किए जा सकने वाले एलिमेंट के जवाब देने के तरीके को फिर से लिखा गया है. इससे, इन कार्रवाइयों की जटिलता को बेहतर तरीके से मॉडल किया जा सकता है और ज़्यादा एज केस को हैंडल किया जा सकता है. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - अब काम न करने वाले और छिपाए गए फ़ंक्शन के लिए, रिटर्न टाइप के तौर पर वैल्यू न होने की संभावना ज़्यादा है (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
को लॉन्च किया गया. यह पेजर के पेज के साइज़ को कंट्रोल करने का एक तरीका है. इसका इस्तेमाल, पेजर जैसे कैरसेल बनाने के लिए किया जा सकता है.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)- पैरंट पेज के स्क्रोल की जानकारी क्वेरी करने के लिए, मॉडिफ़ायर एपीआई जोड़ा गया. (I2ba9d, b/203141462)
Clickable
में इसका इस्तेमाल, प्रेस इंटरैक्शन में देरी करने के लिए किया जाता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं.Scrollable ViewGroup
के अंदर इस्तेमाल करने पर,Clickables
के रिपल सही तरीके से देर से नहीं दिखने की समस्या को ठीक किया गया.- ड्रॉअर और शीट को अपडेट किया गया है, ताकि जेस्चर के स्क्रोल इवेंट बनने की स्थिति में, प्रेस करने में सही समय लग सके.
snapStepSize
के नाम को अपडेट करें, ताकि वहSnapLayoutInfoProvider
में मौजूद अन्य तरीकों से मेल खाए. (Ife67c)Compose
(Ibf6f9, b/139326806) मेंEmojiCompat
जोड़ा गया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)beyondBoundCount
एपीआई को Lazy* एपीआई से वापस लाएं (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()
का इस्तेमाल किया जा सकता है, क्योंकि इससे इवेंट के बीच के जेस्चर मिट जाते हैं. (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)- टेक्स्ट में हाइफ़न अपने-आप जोड़ने की सुविधा के लिए, प्रयोग के तौर पर नया एपीआई हाइफ़न जोड़ा गया (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()
जोड़ा गया.MutableWindowInsets
जोड़ा गया, ताकि फिर से कॉम्पोज़ किए बिनाWindowInsets
को आसानी से बदला जा सके. (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 फ़ंक्शन से मैच करने के लिए,
AwaitPointerEventScope#awaitLongPressOrCancellation
को फिर से फ़ॉर्मैट करता है (I646e6)
वर्शन 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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- रिसॉर्स फ़ॉन्ट में अब फ़ॉन्ट वैरिएशन की सेटिंग सेट करने की सुविधा है (एपीआई 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
एक्सटेंशन फ़ंक्शन जोड़ा गया है. इससे,Canvas
औरdrawBehind
जैसेDrawScope
पर काम करने वाले कॉम्पोज़ेबल और मॉडिफ़ायर पर, अलग-अलग स्टाइल में टेक्स्ट ड्रॉ करने का तरीका मिलता है. (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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AnnotatedString
मेंTalkBack
लिंक के साथ काम करने के लिए,UrlAnnotation
एनोटेशन टाइप और उससे जुड़े तरीकों को जोड़ा गया है. (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
नाम का एक नया एक्सपेरिमेंटल एपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसका इस्तेमाल हम इंटरनल तौर पर, लेज़ी सूचियों और ग्रिड को बेहतर बनाने के लिए करते हैं.OverscrollEffect
API को एक्सपेरिमेंट के तौर पर लॉन्च किया गया है. कस्टम ओवरस्क्रोल इफ़ेक्ट तय किए जा सकते हैं. साथ ही, कस्टम स्क्रोल किए जा सकने वाले कंटेनर में, प्लैटफ़ॉर्म का स्टैंडर्ड इफ़ेक्ट जोड़ा जा सकता है.- नेस्ट किए गए स्क्रोलिंग इंटरऑपरेबिलिटी एपीआई को लॉन्च किया गया है. इससे, व्यू के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करने की सुविधा) और स्क्रोलिंग ऐक्टर को कंपोज़ करने की सुविधा मिलती है.
- सभी स्क्रोलिंग कंटेनर में, माउस और ट्रैकपैड से स्क्रोल करने की सुविधा जोड़ी गई है.
वर्शन 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
को हटा दिया गया. स्टैबल वर्शन वाला नया API,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
के दस्तावेज़ में यह बताया गया है किime
इनसेट की शिकायत, एपीआई लेवल 23 से की जा रही है. हालांकि, एपीआई लेवल 30 और उसके बाद के वर्शन में ही ऐनिमेशन वाले इनसेट की शिकायत की जा सकती है. (Ia7fc0, b/230756508)- जब कर्सर किसी टेक्स्ट फ़ील्ड के आखिर में हो, तब आगे की ओर मिटाने की कुंजी दबाने पर, ऐप्लिकेशन क्रैश नहीं होगा.
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
API में, इंडेक्स के हिसाब से कॉम्पोज़ेबल लैम्ब्डा दिखाने वाली फ़ैक्ट्री के बजाय, अब हमारे पास इंडेक्स स्वीकार करने वाला एक आसान कॉम्पोज़ेबल फ़ंक्शन आइटम है. (Id2196)- LazyLayoutItemsProvider का नाम बदलकर LazyLayoutItemProvider कर दिया गया है (I0638c)
LazyLayoutItemsProvider.itemsCount
का नाम बदलकरitemCount
(Id409c) कर दिया गया है- ग्रेडिएंट कलरिंग के साथ टेक्स्ट बनाने के लिए,
TextStyle
औरSpanStyle
में ब्रश टूल जोड़ा गया. (I53869, b/187839528) trimFirstLineTop
,trimLastLineBottom
एट्रिब्यूट के लिए,LineHeightBehavior
को एक ही एनम में बदल दिया गया है:LineHeightTrim
.LineHeightTrim
में चार स्थितियों की वैल्यू होती हैं, जिन्हें दो बूलियन से तय किया जाता है:FirstLineTop
,LastLineBottom
, दोनों, और कोई नहीं (Ifc6a5, b/181155707)TextStyle
मेंLineHeightBehavior
जोड़ा गया है. यहParagraphStyle. LineHeightBehavior
कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के ऊपर और आखिरी लाइन के नीचे लागू की जाए या नहीं. यहTextStyle
(lineHeight
) से दिए गए स्पेस में लाइन के अलाइनमेंट को भी तय करता है.उदाहरण के लिए,
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
के ज़रिए सीएसएस के तय किए गए व्यवहार जैसा व्यवहार मिल सकता है.trimFirstLineTop
,trimLastLineBottom
कॉन्फ़िगरेशन सिर्फ़ तब सही तरीके से काम करते हैं, जबincludeFontPadding
गलत हो. (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)
बाहरी योगदान
- अगर वर्टिकल स्क्रोल किया जाता है, तो Android पर
MouseInjectionScope.scroll(delta = someDelta)
अब उलटा हो जाता है (अगर someDelta का मान धनात्मक है, तो यह नीचे की ओर स्क्रोल करेगा) (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)- Paragraph और MultiParagraph अब 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)- IME में दशमलव सेपरेटर को शामिल करने के लिए,
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) - मेज़र किए गए इंटरफ़ेस में अब 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.only()
तरीका जोड़ें, ताकि डेवलपर सिर्फ़ WindowInsets से डाइमेंशन शामिल कर सकें. (I14c94, b/217768486)ComposableTarget
,ComposableTargetMarker
, औरComposableOpenTarget
जोड़े गए हैं. इनकी मदद से, संकलन के समय यह रिपोर्ट किया जा सकता है कि किसी ऐसे ऐप्लिकेटर को टारगेट करने के लिए, कब किसी कंपोजेबल फ़ंक्शन को कॉल किया गया है जिसका इस्तेमाल करने के लिए उसे डिज़ाइन नहीं किया गया था.ज़्यादातर मामलों में, एनोटेशन का अनुमान, Compose के कंपाइलर प्लग इन से लगाया जा सकता है. इसलिए, इन एनोटेशन का सीधे तौर पर इस्तेमाल कम ही किया जाना चाहिए . जिन मामलों में अनुमान नहीं लगाया जा सकता उनमें कस्टम ऐप्लिकेटर बनाना और उसका इस्तेमाल करना, एब्स्ट्रैक्ट कंपोजेबल फ़ंक्शन (जैसे कि इंटरफ़ेस के तरीके), फ़ील्ड या ग्लोबल वैरिएबल शामिल हैं. ये वैरिएबल, कंपोजेबल लैम्ब्डा (लोकल वैरिएबल और पैरामीटर का अनुमान लगाया जाता है) होते हैं. इसके अलावा,
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
के ज़रिए उपलब्ध हैcreateFontFamilyResolver(context)
औरcreateFontFamilyResolver(context, coroutineScope)
जोड़े गए, ताकि लिखने के अलावा, अन्य कामों के लिए भी फ़ॉन्ट फ़ैमिली रिज़ॉल्वर बनाए जा सकें.- Paragraph और MultiParagraph अब
FontFamily.Resolver
लेते हैं TextLayoutResult.layoutInput.fontFamilyResolver
में अब इस लेआउट के लिए इस्तेमाल किया जाने वाला रिज़ॉल्वर शामिल है.TextLayoutResult.layoutInput.resourceLoader
को अब इस्तेमाल नहीं किया जाता है, इसलिए इसे बंद कर दिया गया है. (Id5a45, b/174162090)
- Android पर फ़ॉन्ट रिसॉर्स डिस्क्रिप्टर के नए टाइप उपलब्ध कराने के लिए,
AndroidFont
नाम का एक नया लो-लेवल एपीआई जोड़ा गया है. उदाहरण के लिए, किसी ऐप्लिकेशन के हिसाब से बनाए गए बैकएंड से फ़ॉन्ट लोड करना, डिवाइस पर पहले से इंस्टॉल किए गए फ़ॉन्ट ढूंढना या किसी ऐसे संसाधन से फ़ॉन्ट लोड करना जो फ़िलहाल मौजूद फ़ॉन्ट फ़ैक्ट्री से उपलब्ध नहीं है.- वैकल्पिक और असाइन किए गए फ़ॉन्ट लोड करने के लिए,
Font.ResourceLoaded
एपीआई को बड़ा किया गया. हमारा सुझाव है कि ऐप्लिकेशन डेवलपर सीधे तौर पर इस एपीआई का इस्तेमाल न करें. नए तरह के फ़ॉन्ट जोड़ने के लिए, AndroidFont देखें. Font.AndroidResourceLoader
एक्सटेंशन फ़ंक्शन की मदद से, कंपोज़िशन के बाहर भीFont.ResourceLoader
बनाया जा सकता है.- रिसॉर्स-आधारित फ़ॉन्ट में
loadingStrategy
पैरामीटर जोड़ा गया, ताकि रिसॉर्स फ़ॉन्ट के डाउनलोड किए जा सकने वाले फ़ॉन्ट एक्सएमएल का रेफ़रंस देने पर, ऐसाइन किए गए फ़ॉन्ट को एक साथ लोड किया जा सके. (Ie5aea, b/174162090)
- वैकल्पिक और असाइन किए गए फ़ॉन्ट लोड करने के लिए,
Typeface(FontFamily)
कंस्ट्रक्टर का इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले, फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट को लोड होने में 10 सेकंड तक लग सकते हैं. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, यह कॉल 10 सेकंड के लिए ब्लॉक हो सकता है. इसके बजाय,FontFamilyResolver.preload
का इस्तेमाल करेंfontResource(FontFamily): Typeface
का अब इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले, फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट को लोड होने में 10 सेकंड तक लग सकते हैं. इसके बजाय,FontFamilyResolver.preload
(If8e7c, b/174162090) का इस्तेमाल करें
- अब
LazyVerticalGrid
के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है -LazyGridScope
पर item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कॉम्पोज़िशन को ज़्यादा असरदार बनाने के लिए, लॉजिक का फिर से इस्तेमाल करने में मदद मिलती है. साथ ही, सिर्फ़ मिलते-जुलते आइटम के बीच कॉन्टेंट का फिर से इस्तेमाल किया जाता है. (I7b355, b/215372836) LazyListLayoutInfo
औरLazyGridLayoutInfo
में अब नई प्रॉपर्टी हैं:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- अब LazyColumn/LazyRow के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है - LazyListScope पर item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कॉम्पोज़िशन को ज़्यादा असरदार बनाने के लिए, लॉजिक का फिर से इस्तेमाल करने में मदद मिलती है. साथ ही, सिर्फ़ मिलते-जुलते आइटम के बीच कॉन्टेंट का फिर से इस्तेमाल किया जाता है. (I26506)
SubcomposeLayoutState
कंस्ट्रक्टर,maxSlotsToRetainForReuse
को स्वीकार नहीं करता. इसके बजाय,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
जोड़ा गया है जो मौजूदा तरीकों के लिए, जटिल लॉजिक के बिना ओवरलोड होते हैं. इससे, उन सभी पैरामीटर के लिए, कंपाइलर से जनरेट की गई मेमोइज़ेशन जांच (बराबर) कम हो जाती है जिन्हें कॉल किए गए इनर फ़ंक्शन में दोहराया जाता है. (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)- magnifier मॉडिफ़ायर में
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 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
परNullPointerException
को ठीक करें (aosp/1947059, b/206677462)- Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड के कॉन्टेंट की वजह से क्रैश होने की समस्या को ठीक किया गया. (I06020, b/197769306)
LazyVerticalGrid
(aosp/1931080, b/207510535) में आरटीएल को ठीक किया गया
वर्शन 1.1.0
9 फ़रवरी, 2022
androidx.compose.foundation:foundation:1.1.0
और androidx.compose.foundation:foundation-layout:1.1.0
रिलीज़ हो गए हैं. 1.1.0 वर्शन में ये बदलाव शामिल हैं.
1.0.0 के बाद किए गए अहम बदलाव
- Android 12 के ओवरस्क्रोल इफ़ेक्ट के लिए, बेहतर परफ़ॉर्मेंस
- टच टारगेट के साइज़ में सुधार
- ध्यान दें कि Compose 1.0 के साथ, Material कॉम्पोनेंट अपने लेआउट स्पेस को बड़ा कर देंगे, ताकि टच टारगेट साइज़ के लिए Material के सुलभता दिशा-निर्देशों को पूरा किया जा सके. उदाहरण के लिए, बटन के टच टारगेट का साइज़ कम से कम 48x48dp होगा. भले ही, आपने बटन का साइज़ छोटा सेट किया हो. इससे, Compose Material को Material Design कॉम्पोनेंट के काम करने के तरीके के हिसाब से अलाइन किया जाता है. इससे, व्यू और 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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- बेहतर परफ़ॉर्मेंस के साथ, Layout के लिए बिना चाइल्ड वाले ओवरलोड को जोड़ा गया (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 जोड़ा गया है. ओवरस्क्रोल इफ़ेक्ट बंद करने के लिए, कोई वैल्यू न दें. (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
तरीका, जो वैकल्पिक FilterQuality पैरामीटर का इस्तेमाल करने के लिए, सोर्स और डेस्टिनेशन rects का इस्तेमाल करता है. यह पिक्सल आर्ट के लिए फ़ायदेमंद है, जिसे पिक्सल आर्ट के लिए स्केल अप करने पर पिक्सल में बदलना है. BitmapPainter + Image composable को अपडेट किया गया है, ताकि ज़रूरी नहीं होने वाले FilterQuality पैरामीटर (Ie4fb0, b/180311607) का भी इस्तेमाल किया जा सके - अब बैक बटन दबाने पर, टेक्स्ट फ़ील्ड में चुना गया टेक्स्ट हट जाता है. यह 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 रिलीज़ का आधिकारिक ब्लॉग देखें!
ऐसी समस्याएं जिनकी जानकारी पहले से है
अगर 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 में अब सुलभता के लिए, 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
में बताए जाते हैं. फ़ाइल में हर लाइन के लिए एक नियम तय किया जाता है. इस मामले में, नियम लाइब्रेरी में मौजूद तरीकों या क्लास से मैच करने के लिए एक पैटर्न होता है. इन नियमों का सिंटैक्स, ART प्रोफ़ाइल के ऐसे फ़ॉर्मैट का सुपरसेट है जिसे कोई भी व्यक्ति पढ़ सकता है. इसका इस्तेमाल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
फ़्लैग होता है उससे पता चलता है कि यह स्टार्टअप के बाद कॉल किया जाने वाला तरीका है.इस फ़ाइल में मौजूद किसी क्लास का मतलब है कि उसका इस्तेमाल स्टार्टअप के दौरान किया जाता है. साथ ही, क्लास लोड होने में लगने वाले समय को बचाने के लिए, उसे पहले से ही हेप में असाइन किया जाना चाहिए.
यह कैसे काम करता है?
- लाइब्रेरी ये नियम तय कर सकती हैं, जिन्हें AAR आर्टफ़ैक्ट में पैकेज किया जाएगा. जब इन आर्टफ़ैक्ट वाले ऐप्लिकेशन को बनाया जाता है, तो इन नियमों को आपस में मर्ज कर दिया जाता है. इसके बाद, मर्ज किए गए नियमों का इस्तेमाल, ऐप्लिकेशन के हिसाब से एक छोटी बाइनरी ART प्रोफ़ाइल बनाने के लिए किया जाता है. इसके बाद, जब ऐप्लिकेशन को डिवाइसों पर इंस्टॉल किया जाता है, तो ART इस प्रोफ़ाइल का फ़ायदा ले सकता है. इससे, ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए, ऐप्लिकेशन के किसी खास सबसेट को पहले से कंपाइल किया जा सकता है. खास तौर पर, ऐप्लिकेशन को पहली बार चलाने पर. ध्यान दें कि इससे, डीबग किए जा सकने वाले ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.
वर्शन 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 एनम को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)
- जब नई वैल्यू जोड़ी जाती हैं, तब 'जब' स्टेटमेंट में समस्याओं से बचने के लिए, इनलाइन क्लास में वैल्यू का इस्तेमाल करने का तरीका बदला गया है. (I2b5eb)
- क्लिक किए जा सकने वाले / टॉगल किए जा सकने वाले आइटम पर टैप करने के लिए टाइम आउट जोड़ा गया है, ताकि स्क्रोल / खींचने और छोड़ने के दौरान रिपल न दिखे (Ia2704, b/168524931)
- ContentDescription और टेक्स्ट सेमेंटेक्स प्रॉपर्टी अब एक वैल्यू के बजाय सूचियां हैं. इससे, उन्हें एक साथ जोड़ने के बजाय, वैसे ही मर्ज किया जा सकता है जैसे वे हैं. इन बदलावों का फ़ायदा पाने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
Modifier.focusModifier()
का अब इस्तेमाल नहीं किया जा सकता. इसेModifier.focusTarget()
(I6c860) से बदल दिया गया है- KeyboardType एनम को इन-लाइन क्लास से बदल दिया गया है. (I73045, b/187055290)
FocusState
इंटरफ़ेस के साथFocusState
एनम को बदला गया (Iccc1a, b/187055290)- ImeAction एनम को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
AnnotatedString.withAnnotation
फ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)- TextUnitType के साथ TextUnit कन्स्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.
- PaddingValues अब
@Immutable
के बजाय@Stable
है (I88c50)
गड़बड़ियां ठीक की गईं
- खाली नहीं होने वाले टेक्स्ट में, खाली जगह को दबाकर रखने पर क्रैश होने की समस्या को ठीक किया गया. (I33ab5, b/187437299)
- 'सभी चुनें' के बाद टूलबार दिखाएं (I495d9, b/185919613)
- स्क्रोल किए जा सकने वाले कंटेनर के लिए, क्रॉस ऐक्सिस पर अपने बच्चों को क्लिप करने की समस्या को ठीक किया गया. अगर आपके पास कार्ड आइटम के साथ LazyRow है, तो यह गड़बड़ी आसानी से दोहराई जा सकती थी. अब छाया को क्लिप नहीं किया जाएगा. (Icb635, b/186318448)
- Modifier.combinedClickable का इस्तेमाल करने पर, रिपल / अन्य संकेत कभी-कभी लंबे समय तक क्लिक करने पर अटकने की समस्या को ठीक किया गया (I2298c, b/186223077)
- अब
detectDragGesures
,detectVerticalGestures
, औरdetectHorizontalGestures
, पोज़िशन में हुए बदलाव को अपने-आप लागू कर देंगे. इसके लिए, onDrag कॉलबैक में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है (I42fc4, b/185096350, b/187320697) 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)
- beta06 रिग्रेशन को ठीक किया गया है. इसकी वजह से, 'वज़न वाले बच्चों के लेआउट' के लिए, 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)
0.dp
पैरामीटर की डिफ़ॉल्ट वैल्यू,PaddingValues(horizontal, vertical)
में जोड़ी गईं (I05571, b/181336792)
गड़बड़ियां ठीक की गईं
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 बीटा वर्शन की पहली रिलीज़ है.
एपीआई में हुए बदलाव
detectDragGestures
में onStart कॉलबैक जोड़ा गया है (I67269, b/179995594)- अब इनट्रिन्सिक के साइज़ में बदलाव करने वाले मॉडिफ़ायर, एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I15744)
- dp एश्योरेशन हटाए गए (I798d2)
- सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक हटा दिया गया है. इसे जल्द ही एक नए एपीआई से बदल दिया जाएगा. (Iae869, b/168778053)
- MeasureBlocks का नाम बदलकर MeasurePolicy कर दिया गया. यह एक मज़ेदार इंटरफ़ेस है. MeasurePolicy का इस्तेमाल करने के लिए, लेआउट एपीआई को अपडेट किया गया है या उन्हें आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
InteractionState
को[Mutable]InteractionSource
से बदल दिया गया है- इंटरफ़ेस, इंटरैक्शन इवेंट को उत्सर्जित / इकट्ठा करने के लिए ज़िम्मेदार होते हैं.
Button
औरModifier.clickable()
जैसे कॉम्पोनेंट मेंinteractionState = remember { InteractionState() }
पास करने के बजाय,interactionSource = remember { MutableInteractionSource() }
का इस्तेमाल करें.- इसके बजाय:
Interaction.Pressed in interactionState
आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए, जैसे कि InteractionSource.collectIsPressedAsState(). - जटिल इस्तेमाल के उदाहरणों के लिए, इंटरैक्शन की स्ट्रीम को देखने के लिए InteractionSource.interactions का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource दस्तावेज़ और सैंपल देखें.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- LayoutCoordinates के काम न करने वाले तरीकों को हटा दिया गया है. positionInParent और boundsInParent के लिए, प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
- CoreTextField जैसे लो लेवल टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
- प्लेसएबल में अब 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
lambda फ़ंक्शन को एक अपवाद फेंकना चाहिए. हालांकि, अपवाद मिलने का मतलब है कि लोकल के उपभोक्ताओं को, इसके उपलब्ध होने पर निर्भर रहना होगा. हालांकि, टाइप सिस्टम इस पर लागू नहीं होता. (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 कर दिया गया है. अब इसमें, पहले से तय किए गए डेके के बजाय, निलंबित किए गए ऐनिमेशन को पसंद के मुताबिक बनाया जा सकता है. (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)
ओरिएंटेशन को फ़ाउंडेशन पैकेज में ले जाया गया है. VelocityTracker को ui.gesture से ui.input.pointer में ले जाया गया. (Iff4a8, b/175294473)
AnimationClockObservable और सबक्लास हटा दिए गए हैं. AnimatedFloat को हटा दिया गया है. (Icde52, b/177457083)
drawerState.open() और drawerState.close() अब सस्पेंड फ़ंक्शन हैं. rememberCoroutineScope() का इस्तेमाल करके, कॉम्पोज़िशन का स्कोप पाएं, ताकि उन्हें कॉल किया जा सके (I16f60, b/175294473)
Providers का नाम बदलकर CompositionLocalProvider कर दिया गया है
- कॉम्पोज़िशन कंस्ट्रक्टर अब कोई कुंजी पैरामीटर स्वीकार नहीं करता और इसे बंद कर दिया गया है.
- 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)
- Destructuring और 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)ऐंबियंट -> कॉम्पोज़िशनलोकल के नाम से मेल खाने के लिए, ऐंबियंट का नाम बदला गया. ऐंबियंट को पहले AmbientFoo कहा जाता था. अब CompositionLocals को 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 कर दिया गया. सामान्य टाइप को हटा दिया गया है, ताकि आप किसी भी कीवर्ड के तौर पर पास कर सकें. एक्सपेरिमेंट के तौर पर एनोटेशन की ज़रूरत अब नहीं है. (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)
Modifier.scrollable से canDrag को हटा दिया गया है. (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 अब काम नहीं करते. इसके बजाय, detectTapGestures फ़ंक्शन के साथ Modifier.clickable या Modifier.pointerInput का इस्तेमाल करें. (I6baf9, b/175294473)
Recomposer.current()
को हटा दिया गया है. [खास जानकारी]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner के ज़रिए, विंडो के स्कोप वाले रीकंपोज़र को धीरे-धीरे बनाता है. होस्ट के लाइफ़साइकल के रुकने पर, फिर से कॉम्पोज़ करने की प्रोसेस और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)Recomposer.runningRecomposers अब रीड-ओनली RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. इससे, कॉम्पोज़िशन की प्रोसेस के दौरान, कॉम्पोज़िशन की मौजूदा स्थिति को देखा जा सकता है. Recomposer.current() के बजाय, इस एपीआई का इस्तेमाल करें. 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)
smoothScrollBy फ़ंक्शन के बिना इस्तेमाल करने पर रोक लगाना हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने के लिए, सस्पेंड फ़ंक्शन का इस्तेमाल करें और स्क्रोल पूरा होने का इंतज़ार करें. इस बदलाव के तहत, हम इन फ़ंक्शन के ऐसे वर्शन बंद कर रहे हैं जिन्हें निलंबित नहीं किया गया है. (I12880)
इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा पैरामीटर जोड़ा गया है. इसका इस्तेमाल, सुलभता सेवाओं के बारे में जानकारी देने के लिए किया जाता है (I2ac4c)
BasicTextField को 'decorationBox' नाम का एक नया पैरामीटर मिला है. इसकी मदद से, टेक्स्ट फ़ील्ड में आइकॉन, प्लेसहोल्डर, लेबल वगैरह जोड़े जा सकते हैं. साथ ही, इसके हिट टारगेट एरिया को बढ़ाया जा सकता है. (I16996)
Modifier.draggable से canDrag पैरामीटर हटा दिया गया है (Ic4bec, b/175294473)
FlingConfig को स्वीकार करने वाले AnimatedFloat.fling को हटा दिया गया है. इसके बजाय, कृपया suspend Animatable.animateDecay का इस्तेमाल करें. (I4659b, b/177457083)
data class
को इन क्लास से हटा दिया गया है:- InlineTextContent
- LocaleList
- (I605c7)
क्लिक किए जा सकने वाले, टॉगल किए जा सकने वाले, और चुने जा सकने वाले आइटम अब कॉम्पोज़िशन के बाहर बनाए जा सकते हैं (I0a130, b/172938345, b/175294473)
ScrollableColumn/Row एलिमेंट का इस्तेमाल बंद कर दिया गया है. अगर आपके पास ज़्यादा स्क्रोल करने वाला कॉन्टेंट है, तो ScrollableColumn का इस्तेमाल करने से कम फ़ायदा मिलता है. इसकी तुलना में, LazyColumn का इस्तेमाल करने से ज़्यादा फ़ायदा मिलता है. ऐसा इसलिए, क्योंकि LazyColumn की मदद से सिर्फ़ दिखने वाले एलिमेंट को कंपोज/मेज़र/ड्रॉ किया जा सकता है. हमने ScrollableColumn और ScrollableRow एलिमेंट का इस्तेमाल बंद करने का फ़ैसला लिया है. ऐसा इसलिए किया गया है, ताकि उपयोगकर्ता इन एलिमेंट का इस्तेमाल न करें. इसके बजाय, हम LazyColumn और LazyRow एलिमेंट का इस्तेमाल बढ़ावा देना चाहते हैं. उपयोगकर्ता अब भी यह तय कर सकते हैं कि उन्हें लेज़ी लोडिंग की ज़रूरत नहीं है और सीधे तौर पर मॉडिफ़ायर का इस्तेमाल करना है. इसके लिए, इस तरह का इस्तेमाल करें: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
LazyColumn/LazyRow/LazyVerticalGrid के दायरे के लिए, नई
items(count: Int)
फ़ैक्ट्री मेथड.items(items: List)
औरitemsIndexed(items: List)
अब एक्सटेंशन फ़ंक्शन हैं. इसलिए, इनका इस्तेमाल करने पर, आपको इन्हें मैन्युअल तरीके से इंपोर्ट करना होगा. ऐरे के लिए नए एक्सटेंशन ओवरलोड: items(items: Array) और itemsIndexed(Array) (I803fc, b/175562574)अब काम न करने वाले AbsoluteArrangement को हटा दिया गया है. (Iffa96, b/177641870)
Box में propagateMinConstraints पैरामीटर जोड़ा गया था. इससे यह तय किया जा सकता है कि इनकमिंग कम से कम सीमाओं को Box के कॉन्टेंट में पास किया जाना चाहिए या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. (I0125b, b/152613457)
गड़बड़ियां ठीक की गईं
- SideEffect और DisposableEffect API के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है (If760e)
- WithConstraints को BoxWithConstraints के तौर पर फिर से तैयार किया गया और foundation.layout में ले जाया गया. (I9420b, b/173387208)
फ़ॉन्ट/फ़ॉन्ट फ़ैमिली/टाइपफ़ेस के फ़ैक्ट्री फ़ंक्शन में बदलाव
- कैपिटल लेटर से शुरू होने वाले फ़ैक्ट्री फ़ंक्शन जोड़े गए
- पहले अक्षर छोटे होने पर, फ़ैक्ट्री फ़ंक्शन के पुराने वर्शन काम नहीं करते
- नए फ़ैक्ट्री फ़ंक्शन, सबक्लास के बजाय 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
को कई बार कॉल किया गया था. जैसे,WithConstraints
औरScaffold
. इससे,onEnter
कॉल की गारंटी अविश्वसनीय हो गई और इसेRememberObserver
के लिए हटा दिया गया.RememberObserver
,onAbandoned
जोड़ता है. इसे तब कॉल किया जाता है, जबRememberObserver
इंस्टेंस,remember
को पास किए गए कॉलबैक से वापस लाया जाता है, लेकिन कंपोज़िशन स्टेटस में उसे याद नहीं रखा जाता. इसलिए,onRemembered
को कभी कॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कॉम्पोज़िशन को पूरा होने से पहले ही खत्म कर दे या कॉम्पोज़िशन को इसलिए खारिज कर दिया जाए, क्योंकि वह स्थिति अब मौजूद नहीं है या अब उसकी ज़रूरत नहीं है. अगर ऊपर दिए गए एक रेफ़रंस के सुझाव के बाद,RememberObserver
का इंस्टेंस किसी बाहरी संसाधन को ट्रैक कर रहा है, तोonForgotten
औरonAbandoned
, दोनों से पता चलता है कि अब संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट,onRemembered
में शुरू किए गए काम या आवंटित किए गए संसाधनों को ट्रैक कर रहा है, तोonAbandoned
को अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकिonRemembered
को कॉल करने पर इसे कॉल नहीं किया जाएगा. (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)
- फ़ाउंडेशन Strings.kt में टॉगल जोड़ें (I4a5b7, b/172366489)
- nativeClass को ui मॉड्यूल में ले जाया गया और उसे इंटरनल बनाया गया. equals लागू करने के लिए, नेटिव क्लास के इस्तेमाल को अपडेट किया गया है, ताकि इसके बजाय 'is MyClass' का इस्तेमाल किया जा सके. (I4f734)
- FlowRow और FlowColumn का इस्तेमाल बंद कर दिया गया है. इसके बजाय, कृपया कस्टम लेआउट का इस्तेमाल करें. (I09027)
- Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
- SelectionManager को चुने जा सकने वाले अपडेट की सूचना देने के लिए, SelectionRegistrar.notifySelectableChange को जोड़ा गया. (I6ff30, b/173215242)
fun Dp.isFinite()
कोval Dp.isFinite
(I50e00) में बदला गया- Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
- बिना तय किए गए कॉन्स्टेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse जोड़े गए हैं. (I93f7b, b/174310811)
गड़बड़ियां ठीक की गईं
- कोरुटाइन पर आधारित नया एपीआई
Animatable
, जो ऐनिमेशन के बीच एक-दूसरे को एक्सक्लूज़िव बनाने की सुविधा देता है. कई डाइमेंशन वाले डेकेयर ऐनिमेशन के साथ काम करने के लिए, नया DecayAnimationSpec (I820f2, b/168014930) - बंद और रीड-ओनली टेक्स्ट फ़ील्ड के लिए सहायता जोड़ी गई (I35279, b/171040474, b/166478534)
animate()
को अबanimateAsState()
से बदल दिया गया है, जोT
के बजायState<T>
दिखाता है. इससे परफ़ॉर्मेंस बेहतर होती है, क्योंकि अमान्य करने के दायरे को उस जगह तक सीमित किया जा सकता है जहां स्टेट वैल्यू को पढ़ा जाता है. (Ib179e)- Semantics role API जोड़ें और SemanticsModifier में क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले पैरामीटर के तौर पर भूमिका जोड़ें. Modifier.progressSemantics को बदला गया, ताकि स्लाइडर भी इसका इस्तेमाल कर सके. (I216cd)
- नेटिव keyEvent को अब keyEvent.nativeKeyEvent (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)
ContentDrawScope को DrawScope के साथ रखने के लिए, ui-graphics module में ले जाया गया. (Iee043, b/173832789)
गड़बड़ियां ठीक की गईं
- ऑफ़सेट मॉडिफ़ायर में मौजूद Lambdas, अब Float के बजाय IntOffset दिखाते हैं. (Ic9ee5, b/174137212, b/174146755)
पब्लिक एपीआई से SlotTable, SlotReader, और SlotWriter को हटाया गया. इन्हें पहले, InternalComposeAPI के तौर पर मार्क किया गया था. अब ये कॉम्पोनेंट, कॉम्पोज़ मॉड्यूल के लिए इंटरनल हैं.
CompositionData और CompositionGroup को ui-tooling API के बदले जोड़ा गया था, ताकि कॉम्पोज़िशन की जानकारी निकाली जा सके. ये सार्वजनिक हैं, लेकिन इन्हें 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()
, ट्री व्यू को ऊपर से नीचे की ओर बनाने के लिएinsertBottomUp()
को बदल देता है. (Icbdc2)रेस्टर किए गए एसेट फ़ॉर्मैट (जैसे, PNG) या वेक्टर ड्रॉवल से, Painter ऑब्जेक्ट को धुंधला करके लोड करने के लिए, painterResource API जोड़ा गया है. अब उपभोक्ताओं को पहले से एसेट का टाइप तय करने की ज़रूरत नहीं है. साथ ही, इमेज कंपोज करने वाले टूल या पेंटर मॉडिफ़ायर में इस्तेमाल करने के लिए, पेंटर ऑब्जेक्ट पाने के लिए इस तरीके का इस्तेमाल किया जा सकता है. (I2c703, b/173818471)
AnnotatedString बनाने के लिए, buildAnnotatedString फ़ैक्ट्री फ़ंक्शन जोड़ा गया. इस्तेमाल नहीं किया जा सकने वाला annotatedString builder फ़ंक्शन. (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 को ImageVector की इनर क्लास बनाने के लिए, इसे Builder में ले जाया गया है और इसका नाम बदल दिया गया है. काम करने के लिए, ImageVector.Builder से लिंक करने के लिए, VectorAssetBuilder का टाइपअलाइस जोड़ा गया. (Icfdc8)
- ImageAsset और उससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया. (Ia2d99)
- फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (I6f05c) में ले जाया गया
कोरोटिन पर आधारित स्क्रोलिंग एपीआई जोड़ें:
इसमें LazyListState.snapToItem और LazyListState.smoothScrollBy के साथ-साथ, स्क्रोल कंट्रोल के लिए कम लेवल के एपीआई भी जोड़े गए हैं. ये एपीआई, स्क्रोलिंग को कंट्रोल करने के लिए एक निलंबित इंटरफ़ेस उपलब्ध कराते हैं. यह इंटरफ़ेस, स्क्रोल पूरा होने तक इंतज़ार करता है. (Ie5642)
BasicTextField, TextField, और OutlinedTextField में एक लाइन वाला पैरामीटर जोड़ा गया. टेक्स्ट फ़ील्ड को हॉरिज़ॉन्टल तौर पर स्क्रोल की जा सकने वाली एक लाइन बनाने के लिए, इस पैरामीटर को 'सही' पर सेट करें. (I57004, b/168187755)
टैप, दो बार टैप, देर तक दबाकर रखने, और दबाने के संकेत के लिए जेस्चर डिटेक्टर जोड़ा गया. इसके लिए, निलंबित किए गए पॉइंटर इनपुट का इस्तेमाल किया गया. कुछ उपयोगी सुविधाएं भी जोड़ी गई हैं. इनकी मदद से, डेवलपर अपने हिसाब से जेस्चर डिटेक्टर लिख सकते हैं. (I00807)
Modifier.focusable को फ़ाउंडेशन में जोड़ना ज़रूरी है. इसका इस्तेमाल करके, किसी कॉम्पोनेंट में फ़ोकस करने की सुविधा जोड़ें. साथ ही, सही सेमेटिक्स और ऐक्सेस करने की सुविधा भी जोड़ें. (I41eb9, b/152525426, b/162865824)
पहले से काम न करने वाले एपीआई हटा दिए गए हैं: Border को हटा दिया गया है. इसके बजाय, BorderStroke का इस्तेमाल करें. Modifier.drawBorder को हटा दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Modifier.gravity को हटा दिया गया है. इसके बजाय, Modifier.align का इस्तेमाल करें. स्टैक हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (I32c2b, b/172470874)
AbsoluteArrangement का नाम बदलकर Arrangement.Absolute कर दिया गया है. (If26f2)
गड़बड़ियां ठीक की गईं
- DrawModifier एपीआई को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि इस्तेमाल में न होने वाले एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद करने के लिए, टाइप के दूसरे नाम/सहायक तरीके शामिल किए जा सकें. (Id6044, b/173834241)
- Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है. साथ ही, एपीआई काउंसिल के सुझाव के मुताबिक, इससे जुड़ी क्लास को GraphicsLayer में अपडेट कर दिया गया है. (I0bd29, b/173834241)
<T>
को SubcomposeLayout के एलान से हटा दिया गया था. अब किसी टाइप के बारे में बताए बिना भी इसका इस्तेमाल किया जा सकता है. (Ib60c8)- PointerInputData के uptime और position फ़ील्ड के लिए, वैल्यू सबमिट करना ज़रूरी है. (Id468a)
- MaterialTheme अब चुनने के लिए दिए गए हैंडल और चुनी गई चीज़ के बैकग्राउंड के लिए सही रंग सेट करता है. मटीरियल डिज़ाइन का इस्तेमाल न करने वाले ऐप्लिकेशन, चुने गए टेक्स्ट के लिए इस्तेमाल किए जाने वाले रंगों को पसंद के मुताबिक बनाने के लिए, AmbientTextSelectionColors का मैन्युअल तरीके से इस्तेमाल कर सकते हैं. (I1e6f4, b/139320372, b/139320907)
- बॉक्स के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
- offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया. अब ये स्टेट के बजाय, लैंब्डा पैरामीटर ले रहे हैं. (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(Typeface.DEFAULT)
की मदद से, Android टाइपफ़ेस लोड किया जा सकता है.typefaceFromFontFamily()
का नाम बदलकरtypeface()
(I52ab7) भी किया गया - मॉडिफ़ायर फ़ैक्ट्री को
@Composable
के तौर पर मार्क करने के बजाय, अंदरूनी तौर परandroidx.compose.ui.composed {}
का इस्तेमाल करने की जांच करने के लिए, लिंट की जांच जोड़ी गई है. (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
के दायरे मेंModifier.fillParentMaxSize[Width|Height]
में फ़्रैक्शन का इस्तेमाल कर सकते हैं (I797e2, b/166586426)KeyboardOptions.toImeOptions
को सार्वजनिक API से हटाया गया. (Ic2e45)- फ़ाउंडेशन AmbientTextStyle, ProvideTextStyle, और AmbientContentColor अब काम नहीं करते. इसके बजाय, Material लाइब्रेरी में मौजूद नए वर्शन का इस्तेमाल करें. जो ऐप्लिकेशन Material नहीं हैं उनके लिए, आपको अपने डिज़ाइन सिस्टम के हिसाब से थीम वाले ऐसे ऐंबियंट बनाने चाहिए जिन्हें आपके कॉम्पोनेंट में इस्तेमाल किया जा सके. (I74acc, b/172067770)
- foundation.Text का इस्तेमाल बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. अगर आपको कोई ऐसा बुनियादी टेक्स्ट एपीआई चाहिए जो किसी थीम की वैल्यू का इस्तेमाल न करता हो, तो androidx.compose.foundation.BasicText देखें. (If64cb)
- TextFields में maxLines जोड़ा गया (Ib2a5b)
- KeyboardOptions को स्वीकार करने के लिए TextFields को अपडेट करना (Ida7f3)
- TextFields में इस्तेमाल करने के लिए, KeyboardOptions जोड़ा गया (I9ca32)
- BasicText को टेक्स्ट के लिए, BasicTextField के साथ-साथ डिज़ाइन के हिसाब से एपीआई के तौर पर जोड़ा गया है. (I28268)
- ExperimentalLazyDsl एनोटेशन हटा दिया गया. LazyColumn/LazyRow का इस्तेमाल, @OptIn जोड़े बिना किया जा सकता है (Idab7a, b/166584730)
- BaseTextField अब काम नहीं करता. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
- CoreTextField और BaseTextField (Id4cea) दोनों के लिए, BasicTextField को बदलाव के तौर पर जोड़ा गया है
- LazyColumnItems/LazyRowItems (I1d8a8) को हटाना
- इनट्रिन्सिक मेज़रमेंट के हिसाब से साइज़ तय करने के लिए, काम न करने वाले कॉम्पोज़ेबल हटा दिए गए हैं. (I18537, b/171811496)
- relativePaddingFrom का नाम बदलकर paddingFrom कर दिया गया. लेआउट के बाउंड से टेक्स्ट बेसलाइन तक की दूरी तय करने के लिए, paddingFromBaseline मॉडिफ़ायर जोड़ा गया था. (I0440a, b/170633813)
- matchHeightConstraintsFirst पैरामीटर को आसपेक्ट रेशियो मॉडिफ़ायर में जोड़ा गया था. इसका इस्तेमाल, चौड़ाई के लिए मैच करने वाले एलिमेंट को आज़माने से पहले, मॉडिफ़ायर के साइज़ को ऊंचाई की सीमाओं के हिसाब से तय करने के लिए किया जा सकता है. (Ie7c43, b/155290593)
- DpConstraints को हटा दिया गया है. (I87884, b/171702471)
गड़बड़ियां ठीक की गईं
- ScaleFactor के लिए इनलाइन क्लास जोड़ी गई है. इससे, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के लिए, स्केल फ़ैक्टर को एक-दूसरे से अलग-अलग दिखाया जा सकता है. इससे, अलग-अलग स्केल वाले यूज़ केस के लिए मदद मिलती है.
- ContentScale में computeScaleFactor का तरीका जोड़ा गया
- ContentScale.FillBounds जोड़ा गया है, ताकि डेस्टिनेशन को पूरी तरह से भरने के लिए, src के bounds को स्ट्रेच करने के लिए अलग-अलग स्केलिंग की जा सके.
- साइज़ पैरामीटर के साथ 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) में ले जाया गया
- कॉलबैक (Ibfadb) के बिना SelectionContainer जोड़ा गया
- 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 component / Modifier.paint() का भी इस्तेमाल किया जा सकता है. (I9f622)
- Modifier.scrollable, ScrollableColumn, और LazyColumnFor में interactionState जोड़ा गया (I81566, b/169509805)
- alignByBaseline को RowScope में जोड़ा गया और alignWithSiblings का नाम बदलकर alignBy कर दिया गया (I06503, b/170628732)
- बॉक्स को इनलाइन फ़ंक्शन बनाया गया. (Ibce0c, b/155056091)
- CoreTextField में maxLines जोड़ा गया (Ibee58, b/143687793)
- CoreTextField में सॉफ़्टवॉप जोड़ा गया. (I21a4b)
गड़बड़ियां ठीक की गईं
- VectorPainter को बंद करके, rememberVectorPainter का इस्तेमाल करें. इससे यह बेहतर तरीके से पता चलता है कि कॉम्पोज़ेबल एपीआई, सभी कॉम्पोज़िशन में डेटा को सेव करने के लिए, 'याद रखें' फ़ंक्शन का इस्तेमाल करता है. (Ifda43)
- ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से, ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
- CoreTextField (I72e6d) में एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया
- Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि Compose में इसका इस्तेमाल कैसे किया जाता है. दस्तावेज़ों को अपडेट किया गया, ताकि यह बताया जा सके कि नेगेटिव कोने रेडी को शून्य पर क्लैंप किया जाता है. (I130c7, b/168762961)
- कंपोज किए गए मॉडिफ़ायर में, इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
- KeyboardCapitalization IME का विकल्प जोड़ा गया (I8ac38)
- आरटीएल हैंडल की पोज़िशन ठीक करें. (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)
गड़बड़ियां ठीक की गईं
- इनलाइन क्लास के लिए सेंटिनल वैल्यू को स्टैंडर्ड बनाने के तहत, अन्य इनलाइन क्लास (I97611, b/169797763) के साथ एक जैसा रखने के लिए, Color.Unset को Color.Unspecified में बदलें
- सुलभता से जुड़ी कार्रवाइयों में, कॉपी/चिपकाना/काटना जोड़ा गया (I6db4f)
- TextOverflow.None को शामिल किया गया है. जब overflow का कोई वैल्यू नहीं है, तो Text अब ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने असल साइज़ की जानकारी देगा. (I175c9, b/158830170)
- Size.Unspecified के पैरामीटर को अपडेट किया गया है, ताकि वे Float.POSITIVE_INFINITY के बजाय, Float.NaN हों. Painter को अपडेट किया गया है, ताकि Size.Unspecified के साथ-साथ अनलिमिटेड साइज़ की जांच की जा सके. (I95a7e)
- पेजिंग कंपोज मॉड्यूल और पेजिंग इंटिग्रेशन जोड़ा गया (Ib85da)
- वैल्यू न होने पर भी काम करने वाले फ़ंक्शन की वैल्यू पाने के लिए, LazyListScope में बदलाव करना (I1765b)
- OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है और onPositioned() का नाम बदलकर onGloballyPositioned कर दिया गया है. (I587e8, b/169083903)
- LazyColumn/Row (Idc16d) के लिए सैंपल जोड़े गए
- items और itemsIndexed तरीकों को ठीक करना, ताकि emptyList को अनुमति दी जा सके (I06647)
- जांच करने वाले व्यक्ति की जानकारी देने के लिए डीएसएल जोड़ना (Ic9a22)
- 'देर तक दबाकर रखें' सुविधा को टेक्स्ट में ले जाएं. (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 कर दिया गया. पहले से मौजूद foundation.Box को compose.foundation.layout में नए Box से बदल दिया जाएगा. नए बॉक्स में, एक से ज़्यादा चाइल्ड एलिमेंट होने पर, वे एक-दूसरे के ऊपर स्टैक हो जाते हैं. यह पिछले बॉक्स से अलग है, जो कॉलम की तरह काम करता था. (I94893, b/167680279)
- बॉक्स को सजाने के पैरामीटर अब काम नहीं करते. अगर आपको अपने बॉक्स में सजावट/पैडिंग करनी है, तो इसके बजाय मॉडिफ़ायर (Modifier.background, Modifier.border, Modifier.padding) का इस्तेमाल करें (Ibae92, b/167680279)
- नई LazyListState क्लास जोड़ें. इससे, LazyRow और LazyColumn कॉम्पोनेंट की स्क्रोल पोज़िशन को देखा और कंट्रोल किया जा सकता है. rememberLazyListState() का इस्तेमाल करके इंस्टेंस बनाए जा सकते हैं और कॉम्पोनेंट के स्टेटस पैरामीटर में पास किए जा सकते हैं. फ़िलहाल, इस शुरुआती वर्शन में दिखने वाले पहले आइटम और ऑफ़सेट को देखा जा सकता है. (Ic7cb7, b/159307669)
- गतिविधि को फिर से शुरू करने पर, अब लिस्ट की स्थिति और स्क्रोल ऑफ़सेट सेव हो जाता है और उसे वापस लाया जाता है (Ie045f, b/166589058)
- लंबे समय तक क्लिक करने से जुड़ी सेमेटिक्स ऐक्शन जोड़ना (I6281b, b/156468846)
- MutatorMutex की सुविधा जोड़ी गई है, ताकि समय के साथ शेयर की गई स्थिति का एक ही म्यूटेटर रखा जा सके और प्राथमिकता के हिसाब से, एक-दूसरे से मेल न खाने वाले म्यूटेटर रद्द किए जा सकें (I3f975)
- @VisibleForTesting के साथ एनोटेट किए गए rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को इंटरनल एपीआई बनाएं और उनके kdoc को छिपाएं (I554eb, b/168308412)
- स्ट्रिंग इनपुट वाले टेक्स्ट से inlineContent पैरामीटर हटाया गया. इसका इस्तेमाल नहीं किया जाएगा, क्योंकि inlineContent को AnnotatedString के साथ काम करना चाहिए. (Ief403)
- इस्तेमाल नहीं किए जा रहे कस्टम Arrangement API हटा दिए गए हैं. (Ic576d, b/168297922, b/168297923)
unbounded
पैरामीटर को wrapContentSize मॉडिफ़ायर में जोड़ा गया था. इससे, लेआउट एलिमेंट को अनलिमिटेड मैक्स कंस्ट्रेंट के साथ मेज़र किया जा सकता है. (I77951, b/158559319)- हमने लेआउट स्कोप के कॉन्टेंट के स्टैटिक इंपोर्ट को रोक दिया है. जैसे, RowScope में alignWithSiblings. इसके बजाय, स्कोप के लिए साफ़ तौर पर बताए गए विकल्प का इस्तेमाल किया जाना चाहिए:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
गड़बड़ियां ठीक की गईं
- कई Graphics API अपडेट किए गए
- स्केल और रोटेशन ट्रांसफ़ॉर्मेशन एपीआई को अपडेट किया गया है, ताकि DrawScope और DrawTransform में x/y निर्देशांक के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट निर्देशांक दिखाने के लिए एक ऑफ़सेट पैरामीटर का इस्तेमाल किया जा सके
- Rect.expandToInclude और Rect.join के तरीकों को हटाया गया
- दायरे के दस्तावेज़ को अपडेट किया गया, ताकि अंडाकार के साथ-साथ, दीर्घवृत्ताकार के बारे में भी बताया जा सके
- दस्तावेज़ जोड़ा गया है, ताकि यह पता चल सके कि इनलाइन Radius क्लास के लिए, पब्लिक कन्स्ट्रक्टर को सीधे तौर पर नहीं बुलाया जाना चाहिए. इसके बजाय, Radius ऑब्जेक्ट को उनके फ़ंक्शन कन्स्ट्रक्टर के ज़रिए इंस्टैंशिएट किया जाना चाहिए
- topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी करने के लिए, RoundRect API हटाए गए
- Rect.translate के पक्ष में Rect.shift को बंद कर दिया गया है
- RoundRect.grow और Rect.shrink एपीआई हटाए गए
- RoundRect.outerRect का नाम बदलकर Rect.boundingRect किया गया
- RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीकों को हटाया गया
- RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया
- RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया
- RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी में बदला गया
- x/y त्रिज्या की वैल्यू के लिए, अलग-अलग पैरामीटर के बजाय त्रिज्या प्रॉपर्टी का इस्तेमाल करने के लिए, RoundRect कन्स्ट्रक्टर को अपडेट किया गया
- साइज़ एपीआई हटा दिए गए हैं, जो यह मानते थे कि यह 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) के आइटम को कॉम्पोज़ करने की सुविधा को खराब कर रहा था
- कई Graphics API अपडेट किए गए
- स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीकों के साथ DrawScope API को अपडेट किया गया है. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक में लागू होता है और कॉलबैक के ट्रिगर होने के बाद हट जाता है
- राउंडेड रेक्टैंगल के बजाय पाथ का रेफ़रंस देने के लिए, clipPath दस्तावेज़ को अपडेट किया गया
- clipPath में दाएं पैरामीटर के लिए, दस्तावेज़ में स्पेसिंग ठीक की गई
- DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas किया गया और साइज़ पैरामीटर हटा दिया गया
- इनसेट तरीके में dx/dy पैरामीटर के नाम बदलकर, horisontal और vertical कर दिया गया
- इनसेट ओवरलोड जोड़ा गया है, जो सभी चार सीमाओं के लिए एक ही इनसेट वैल्यू देता है
- इनसेट करने के तरीके से जुड़े दस्तावेज़ हटा दिए गए हैं. इनसे यह पता चलता था कि इनसेट, चारों तरफ़ लागू होगा
- Rect क्लास के लिए दस्तावेज़ अपडेट किए गए
- kdoc के स्टाइल से मैच करने के लिए, Rect पैरामीटर पर अपडेट की गई टिप्पणियां
- 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)
- स्टैक में अलाइनमेंट पैरामीटर जोड़ा गया है. इससे, स्टैक के सभी चाइल्ड के लिए डिफ़ॉल्ट अलाइनमेंट तय किया जा सकता है. (Ie80ca, b/164085265)
गड़बड़ियां ठीक की गईं
- DpConstraints और इसका इस्तेमाल करने वाले एपीआई को बंद कर दिया गया है. (I90cdb, b/167389835)
widthIn
के पैरामीटरminWidth
औरmaxWidth
का नाम बदलकरmin
औरmax
कर दिया गया.preferredWidthIn
,heightIn
,preferredHeightIn
के लिए भी ऐसा ही किया जाता है. (I0e5e1, b/167389544)- ComposeTestRule पर 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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लेआउट के चाइल्ड एलिमेंट को तय स्पेसिंग के साथ पोज़िशन करने के लिए, पंक्ति और कॉलम के लिए spacedBy Arrangement जोड़ा गया था. अलाइन किए गए क्रम की सुविधा भी जोड़ी गई है, ताकि लेआउट के चाइल्ड एक-दूसरे के बगल में पोज़िशन किए जा सकें और अलाइनमेंट के हिसाब से, रो/कॉलम में अलाइन किए जा सकें. Arrangement.Vertical#arrange और Arrangement.Horizontal#arrange के पिछले तरीके बंद कर दिए गए हैं. साथ ही, आने वाले समय में कस्टम क्रम तय करने की सुविधा काम नहीं करेगी. (I6733d, b/161985975)
- ऑफ़सेट, इनलाइन क्लास (Iaec70) बन गया है
- TextField से onFocusChanged कॉलबैक हटाए गए. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
- Modifier.drawBorder को बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border data class को BorderStroke (I4257d, b/158160576) से बदल दिया गया है
- VerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करना (I73b0d, b/163019183)
- LazyItemScope से, 'इस्तेमाल नहीं किए जाने वाले' के तौर पर मार्क किए गए fillMax* मॉडिफ़ायर हटाएं. ऐसा इसलिए, क्योंकि इनकी वजह से उन आइटम के लिए सही तरीके से मॉडिफ़ायर जोड़ना मुश्किल हो रहा है जो LazyColumnFor के डायरेक्ट चाइल्ड नहीं हैं (Ifa78d)
- डीएसएल (I93cc6) के तौर पर LazyColumn/LazyRow लागू करने की सुविधा जोड़ी गई
- कंस्ट्रेंट अब एक इनलाइन क्लास है (I88736)
- fillMaxWidth, fillMaxHeight, और fillMaxSize मॉडिफ़ायर का इस्तेमाल करके, उपलब्ध जगह के हिसाब से लेआउट का साइज़ तय करने की सुविधा जोड़ी गई. (I945bb, b/161562591)
गड़बड़ियां ठीक की गईं
- SelectionContainer (I4aada, b/161487952) में मॉडिफ़ायर पैरामीटर जोड़ा गया
- SemanticsPropertyKey में mergePolicy lambda जोड़ा गया. इसका इस्तेमाल, सभी वंश को मर्ज करने के लिए, सेमेटिक्स को मर्ज करने की कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के मुताबिक, अगर पैरंट वैल्यू पहले से मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()
का नाम बदलकरPlacementScope.place()
कर दिया गया है. साथ ही, पिछलेPlacementScope.place()
का नाम बदलकरPlacementScope.placeRelative()
कर दिया गया है. इस वजह से,PlacementScope.place()
तरीका अब दाईं से बाईं ओर के कॉन्टेक्स्ट में, पोज़िशन को अपने-आप मिरर नहीं करेगा. अगर आपको ऐसा करना है, तो इसके बजायPlacementScope.placeRelative()
का इस्तेमाल करें. (I873ac, b/162916675)- अब इस्तेमाल में न होने वाले FilledTextField कॉम्पोनेंट को हटा दिया गया है. फ़िल्ड टेक्स्ट फ़ील्ड को Material Design के मुताबिक बनाने के लिए, कृपया TextField का इस्तेमाल करें. (I5e889)
- LinearProgressIndicator में backgroundColor पैरामीटर जोड़ा गया और CircularProgressIndicator से इंटरनल पैडिंग हटाई गई. नई ProgressIndicatorConstants.DefaultProgressAnimationSpec जोड़ी गई है. इसका इस्तेमाल, वैल्यू के बीच प्रोग्रेस को ऐनिमेट करते समय, डिफ़ॉल्ट AnimationSpec के तौर पर किया जा सकता है (If38b5, b/161809914, b/161804677)
state { ... }
कॉम्पोज़ेबल का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय,remember { mutableStateOf(...) }
को साफ़ तौर पर कॉल करें. इससे, एपीआई के पूरे प्लैटफ़ॉर्म और स्टेटस मैनेजमेंट के लिए कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी के डेलिगेशन के लिएby mutableStateOf()
पैटर्न से मेल खाता है. (Ia5727)- RRect का नाम बदलकर RoundRect किया गया, ताकि नाम तय करने के पैटर्न के हिसाब से बेहतर तरीके से काम किया जा सके. RRect और अब काम न करने वाले RRect फ़ंक्शन कंस्ट्रक्टर के जैसे फ़ंक्शन कंस्ट्रक्टर बनाए गए (I5d325)
- onChildPositioned और 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 lists के 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 के लिए, сrossaxis gravity पैरामीटर जोड़ा गया. LazyRowItems/LazyColumnItems अब कॉन्टेंट को रैप करने की सुविधा के साथ काम करते हैं. (Ib39fc)
- ZoomableState का नाम बदलकर ZoomableController कर दिया गया है. smoothScale के लिए, कस्टम कर्व की सुविधा जोड़ी गई है.
enabled
औरonZoomStarted
फ़ंक्शन जोड़े गए हैं (If8b8f) - Material FilledTextField का नाम बदलकर TextField कर दिया गया है. साथ ही, फ़ाउंडेशनल TextField का नाम बदलकर BaseTextField कर दिया गया है. इससे, सबसे आसान एपीआई को ढूंढना और इस्तेमाल करना आसान हो जाएगा (Ia6242, b/155482676)
- पहले इस्तेमाल की जा रही AdapterList को हटा दिया गया है. इसके बजाय, LazyColumnItems का इस्तेमाल करें (I12b9b)
- Modifier.drawBackground का नाम बदलकर Modifier.background कर दिया गया है (I13677)
- ConstraintLayout का पुराना डीएसएल हटा दिया गया है. ConstraintSet2 का नाम बदलकर ConstraintSet कर दिया गया है. (If58d1, b/162450908)
- Modifier.absoluteOffset() और Modifier.absoluteOffsetPx() जोड़े गए. ऑफ़सेट मॉडिफ़ायर के उलट, एब्सोल्यूट ऑफ़सेट मॉडिफ़ायर, दाईं से बाईं ओर के संदर्भ में अपने-आप मिरर नहीं होंगे (I3aa21)
Row
औरColumn
अब इनलाइन फ़ंक्शन हैं. इनका इस्तेमाल करने में होने वाले खर्च को काफ़ी कम किया जा सकता है. (I75c10)
गड़बड़ियां ठीक की गईं
- एपीआई से जुड़ी समस्याओं को ठीक करना (I077bc)
- इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाना
- एपीआई के एक जैसे प्लैटफ़ॉर्म के लिए, Offset और IntOffset क्लास को अलाइन करें
- Offset API के साथ काम करने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero करें
- उपयोगकर्ताओं को अपने कैनवस इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas को कैनवस इंटरफ़ेस से हटा दिया गया है
- DrawScope को रीफ़ैक्टर करने के लिए, स्टब EmptyCanvas क्लास बनाई गई, ताकि इसे लेटिनिट के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
- ClipOp के एन्यूम को Pascal Case में बदला गया
- FilterQuality के एन्म को Pascal Case में बदला गया
- StrokeJoin एनम को पास्कल केस में बदला गया
- PointMode के एन्म को पास्कल केस में बदला गया
- PaintingStyle के एन्म को Pascal Case में बदला गया
- PathFillType के एन्म को पास्कल केस में बदला गया
- StrokeCap के एनम को पास्कल केस में बदला गया
- DrawCache को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है, ताकि अब fillPaint और strokePaint के इंटरनल पैरामीटर के लिए, लैज़ी डिलीगेशन का इस्तेमाल न किया जा सके
- कम ओवरहेड के लिए, बॉक्स के इस्तेमाल से बचने के लिए इमेज कॉम्पोज़ेबल को अपडेट किया गया
- @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)SemanticsMatcher के तौर पर
isFocused()
औरisNotFocused()
जोड़े गए. (I0b760)RemeasurementModifier जोड़ा गया. इसकी मदद से, उपयोगकर्ता लेआउट को सिंक करके फिर से मेज़र कर सकते हैं. आम तौर पर, आपको इसकी ज़रूरत कभी नहीं पड़ती, क्योंकि फिर से मेज़र करने/फिर से लेआउट करने की प्रोसेस अपने-आप होती है. हालांकि, हम स्क्रोल करने के दौरान LazyColumnItems में इसका इस्तेमाल करते हैं. (I5f331, b/160791058)
isSystemInDarkTheme फ़ंक्शन अब सिस्टम-वाइड गहरे रंग वाली थीम की सेटिंग को हमेशा ध्यान में रखता है. साथ ही, Q से पहले के वर्शन में, पावर सेविंग मोड की स्थिति को अनदेखा करता है. ऐसा, नए दिशा-निर्देशों के मुताबिक किया जाता है. (I0c10c)
OnChildPositioned को बंद कर दिया गया है. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)
createAndroidComposeRule के लिए, 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 अब काम नहीं करते. कॉलम/लाइन के व्यवहार और पैरामीटर के साथ पहले से मौजूद सुविधा के लिए, ScrollableColumn और ScrollableRow का इस्तेमाल करें. इसके अलावा, अपने एलिमेंट पर Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करें. इसी तरह, ScrollerPosition को ScrollState के लिए बंद कर दिया गया है' (I400ce, b/157225838, b/149460415, b/154105299)
- Modifier.draggable और Modifier.scrollable एपीआई में बदलाव किए गए हैं. ओरिएंटेशन के पक्ष में, DragDirection को हटा दिया गया था. स्क्रोल किए जा सकने वाले आइटम के लिए, 'स्थिति' की ज़रूरी शर्त को आसान बनाया गया है. ScrollableState का नाम बदलकर ScrollableController कर दिया गया है (Iab63c, b/149460415)
- एक वैल्यू वाली सेमेटिक प्रॉपर्टी अब कॉलिंग स्टाइल का इस्तेमाल करती हैं.
उदाहरण के लिए, 'semantics { hidden = true }' को अब इस तरह लिखा जाता है:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - RoundedCornerShape और CutCornerShape का इस्तेमाल करके, किनारों का साइज़ अब 50% से ज़्यादा हो सकता है (Id2340, b/160400213)
- इमेज कॉम्पोज़ेबल के लिए, डिफ़ॉल्ट ContentScale पैरामीटर को Inside से Fit में बदल दिया गया है. ऐसा इसलिए किया गया था, ताकि अगर लेआउट का साइज़, पैंचर के मूल साइज़ से बड़ा हो, तो आसपेक्ट रेशियो को बनाए रखते हुए, पैंचर को स्केल अप करने के लिए, पैंचर के व्यवहार को बेहतर बनाया जा सके. अगर कॉम्पोज़ेबल के साइज़ का हिसाब लगाने के लिए सिर्फ़ इंट्रिन्सिक साइज़ का इस्तेमाल किया जाता है, तो यह व्यवहार इमेज के लिए तय साइज़ देने की उम्मीदों के मुताबिक बेहतर तरीके से काम करता है. साथ ही, डिफ़ॉल्ट व्यवहार पर भी इसका कोई असर नहीं पड़ता. (I40ae3, b/159838006)
- स्टैटिक ऐनिमेशन स्पेसिफ़िकेशन के कॉन्सेप्ट को साफ़ तौर पर बताने के लिए, टॉप लेवल एपीआई में AnimationBuilder के बजाय AnimationSpec का इस्तेमाल करें -Tween, स्प्रिंग जैसे AnimationSpecs बनाने के लिए, लैम्ब्डा की ज़रूरत को हटाकर ट्रांज़िशन डीएसएल को बेहतर बनाएं. इसके बजाय, वे सीधे तौर पर कंस्ट्रक्टर पैरामीटर लेते हैं. -बिल्डर पर भरोसा करने के बजाय, कंस्ट्रक्टर खोलकर, ऐनिमेशन स्पेसिफ़िकेशन के इस्तेमाल को आसान बनाएं -कीफ़्रेम और ट्वीन के लिए, अवधि और देरी को 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 के बजाय साइज़ क्लास के इस्तेमाल को स्टैंडर्ड बनाएं. इससे, इनलाइन क्लास के फ़ायदे मिलते हैं. इनसे, दो फ़्लोट वैल्यू को पैक करने के लिए लंबी वैल्यू का फ़ायदा मिलता है. इन वैल्यू से, चौड़ाई और ऊंचाई को फ़्लोट के तौर पर दिखाया जाता है. (Ic0191)
- पोज़िशन की जानकारी दिखाने के लिए इस्तेमाल की जाने वाली क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे, इनलाइन क्लास के फ़ायदे मिलते हैं. इनमें, दो फ़्लोट वैल्यू को पैक करने के लिए लॉन्ग का फ़ायदा लेना शामिल है. इन वैल्यू का इस्तेमाल, x और y ऑफ़सेट को फ़्लोट के तौर पर दिखाने के लिए किया जाता है. (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 अब पहले से ही लाइन की सुविधा देता है. (Ieca5d, b/157020670)
- पिक्सल पैरामीटर (Iede0b) के लिए, सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी कोशिश के तहत, अलग-अलग compose क्लास में Px क्लास के इस्तेमाल को बदल दिया गया
- फ़ाउंडेशन पैकेज में Modifier.indication जोड़ा गया है. इसका इस्तेमाल करके, इंटरैक्ट किए जा सकने वाले कस्टम एलिमेंट (I8425f, b/155287131) पर, दबाने/खींचने/अन्य संकेत दिखाएं
- VerticalScroller और HorizontalScroller अब उल्टी दिशा में स्क्रोल करने की सुविधा देते हैं. इसके लिए, isReversed को ScrollerPosition पर सेट करना होगा (I953bd)
- टेक्स्ट लेआउट में कॉम्पोज़ेबल जोड़ने की सुविधा. (I1373c)
- CanvasScope को एक साथ लागू किया गया है, इसलिए अब सिर्फ़ DrawScope और ContentDrawScope है. साथ ही, CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस को लागू करने और LayoutDirection देने के लिए, DrawScope को अपडेट किया गया है ContentDrawScope में DrawScope सबक्लास को मिटा दिया गया है Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब RTL प्रॉपर्टी को खुद मैनेज न करें, क्योंकि DrawScope पहले से ही इसे मैन्युअल तौर पर उपलब्ध कराता है (I1798e)
- मॉडिफ़ायर पर drawBackground एक्सटेंशन एपीआई के पक्ष में, अब इस्तेमाल नहीं किए जा रहे DrawBackground एपीआई को हटा दिया गया है. कोड पाथ को कम करने के लिए, रंग, ब्रश, और पेंट drawBackground के लागू होने के तरीके को फिर से तैयार किया गया. साथ ही, कंपोजिशन के हिस्से के तौर पर मॉडिफ़ायर बनाने की ज़रूरत को भी हटा दिया गया. (I0343a)
- अपडेट किए गए बेहतर लेवल के Compose API, जो CanvasScope को एक्सपोज़ करने के लिए Canvas को एक्सपोज़ करते हैं. इससे उपभोक्ताओं को अपने Paint ऑब्जेक्ट मैनेज करने की ज़रूरत नहीं पड़ती. जिन उपयोगकर्ताओं को अब भी कैनवस का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, कैनवस पर ड्रॉ करने के निर्देश देने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
- HorizontalScroller और VerticalScroller, सेव किए गए इंस्टेंस स्टेटस का इस्तेमाल करके, स्क्रोल की स्थिति को वापस नहीं लाते. (Ia0fae, b/155075048)
- FocusManagerAmbient को हटा दिया गया है. फ़ोकस पाने के लिए, FocusModifier.requestFocus का इस्तेमाल करें. (Ic4826)
- टेबल लेआउट को कुछ समय के लिए हटा दिया गया है. हम इसे नए एपीआई के साथ फिर से उपलब्ध कराएंगे. (Id88a7)
CanvasScope API बनाया, जो Canvas ऑब्जेक्ट को रैप करता है, ताकि स्टेटलेस, डिक्लेरेटिव ड्रॉइंग एपीआई के प्लैटफ़ॉर्म को दिखाया जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर के दायरे में होते हैं. साथ ही, साइज़ की जानकारी भी इनसेट के बाउंड के दायरे में होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, अपने Paint स्टेटस ऑब्जेक्ट को मैनेज करने की ज़रूरत नहीं होती.
CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके
ColoredRect को हटा दिया गया है. इसके बजाय, drawBackground मॉडिफ़ायर वाला यूज़र बॉक्स (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)
टेक्स्टफ़ील्ड अपडेट - हॉरिज़ॉन्टल डाइमेंशन में, यह अपने लिए उपलब्ध सभी जगह ले लेगा (Ib08df, b/154638552)
InteractionState और Interaction जोड़े गए हैं. इससे, ऐसे कॉम्पोनेंट बनाना आसान हो गया है जो यूज़र इंटरफ़ेस (यूआई) के स्टेटस में होने वाले बदलावों पर प्रतिक्रिया देते हैं. जैसे, दबाना और खींचना (Icfe25, b/152525426)
RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)
एपीआई में, शून्य वैल्यू के तौर पर इस्तेमाल किए जा सकने वाले Color के सभी इस्तेमाल को, शून्य वैल्यू के तौर पर इस्तेमाल न किए जा सकने वाले Color से बदला गया. साथ ही, null के बजाय Color.Unset का इस्तेमाल किया गया (Iabaa7)
TextField API अपडेट - onFocus और onBlur कॉलबैक को पैरामीटर के साथ एक ही onFocusChange(Boolean) कॉलबैक में मर्ज किया गया (I66cd3)
ScaleFit का नाम बदलकर ContentScale कर दिया गया है ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में मौजूद रहे. FillMaxDimension का नाम बदलकर Crop किया गया FillMinDimension का नाम बदलकर Fit किया गया ImageView.ScaleType के बराबर के विकल्पों से बेहतर मैच करने के लिए, Fit का नाम बदलकर Inside किया गया दस्तावेज़ जोड़ा गया है, जिसमें बताया गया है कि Crop और Alignment.Center के कॉम्बिनेशन से वही नतीजा मिलता है जो ImageView.ScaleType.CENTER_CROP से मिलता है. साथ ही, Alignment.Center के साथ इस्तेमाल किए गए Fit से वही नतीजा मिलता है जो ImageView.ScaleType.FIT_CENTER से मिलता है. इसके अलावा, Alignment.Center के साथ इस्तेमाल किए गए Inside से वही नतीजा मिलता है जो ImageView.ScaleType.CENTER_INSIDE से मिलता है (I45f09, b/152842521)
ProvideContentColor को हटाता है. इसके बजाय, सीधे
Providers
के साथ ContentColorAmbient का इस्तेमाल करें (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) के साथ मॉडिफ़ायर प्लस ऑपरेटर को बदला गया
Draggable को मॉडिफ़ायर (Id9b16, b/151959544) में ले जाया गया है
Text
को androidx.ui.core से androidx.ui.foundation पैकेज में ले जाया गया. (I87ce5)चेकबॉक्स, स्विच, और टॉगल करने की सुविधा के लिए
enabled
पैरामीटर जोड़ें (I41c16)रिपल अब एक मॉडिफ़ायर है. Clickable को अभी तक बदला नहीं गया है. इसलिए, इसका इस्तेमाल करने का सुझाव दिया गया है
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)वेक्टर ग्राफ़िक्स के लिए, मौजूदा सब-कंपोज़िशन एपीआई को बदलने के लिए, VectorPainter API जोड़ा गया है. सब-कंपोज़िशन का नतीजा, DrawModifier के बजाय VectorPainter ऑब्जेक्ट होता है. VectorPainter के पक्ष में, पिछले DrawVector composables को हटा दिया गया है.
Image(Painter)
एपीआई का नाम बदलकरPaintBox(Painter)
किया गया वेक्टर कॉम्पोज़ेबल बनाया गया, जो इमेज कॉम्पोज़ेबल की तरह काम करता है. हालांकि, इसमें ImageAsset के बजाय VectorAsset का इस्तेमाल किया जाता है (I9af9a, b/149030271)स्क्रीन पर दी गई इमेज एसेट को ड्रॉ करने के साथ-साथ, साइज़/लेआउट को मैनेज करने के लिए, इमेज कॉम्पोज़ेबल बनाया गया. यह कॉम्पोज़ेबल, अपने मूल साइज़ के हिसाब से किसी भी Painter इंस्टेंस को ड्रॉ करने के साथ-साथ, तय किए गए साइज़ या कम से कम साइज़ (Ibcc8f) में भी ड्रॉ कर सकता है
Button, FloatingActionButton, और Clickable के लिए अब एक अलग
enabled
पैरामीटर है. बटन पर मौजूद कुछ पैरामीटर के नाम बदले गए हैं या उनका क्रम बदला गया है. (I54b5a)इमेज का नाम बदलकर ImageAsset कर दिया गया है, ताकि इमेज डेटा और आने वाले समय में मिलने वाली इमेज कंपोजिट के बीच का अंतर बेहतर तरीके से बताया जा सके. इमेज कंपोजिट का इस्तेमाल, लेआउट में शामिल करने और कॉन्टेंट बनाने के लिए किया जाता है.
ImageAsset का एक इंस्टेंस बनाने के लिए,
Bitmap.asImageAsset()
में android.graphics.Bitmap पर एक्सटेंशन का तरीका बनाया गया है. यह तरीका, Android ऐप्लिकेशन के पारंपरिक डेवलपमेंट को Compose फ़्रेमवर्क के साथ जोड़ने के लिए मददगार है. (Id5bbd)DrawImage composable को हटा दिया गया है. मौजूदा लेआउट पर इमेज बनाने के लिए, ImagePainter का इस्तेमाल करें या स्पेस लेने वाली इमेज जोड़ने के लिए, SimpleImage का इस्तेमाल करें (I595e1, b/149827027)
स्टैक कॉम्पोनेंट, दाएं से बाएं दिशा में काम करता है (Ic9e00)
आइकॉन, आइकॉन बटन, और आइकॉन टॉगल बटन जोड़े गए. साथ ही, AppBarIcon को हटा दिया गया. AppBarIcon के मौजूदा इस्तेमाल को सीधे IconButton से बदला जा सकता है. इसके बाद, उनमें सही टच टारगेट होगा. इस्तेमाल से जुड़ी जानकारी के लिए सैंपल देखें. साथ ही, दिए गए Material आइकॉन के लिए आइकॉन देखें. इनका इस्तेमाल सीधे इन कॉम्पोनेंट के साथ किया जा सकता है. (I96849)
DrawShape कॉम्पोज़ेबल को हटा दिया गया है. इसके बजाय, DrawBackground मॉडिफ़ायर का इस्तेमाल करें. (I7ceb2)
AdapterList जोड़ा गया, जो एक स्क्रोलिंग सूची कॉम्पोनेंट है. यह सिर्फ़ दिखने वाले आइटम को कॉम्पोज़ और लेआउट करता है. फ़िलहाल, इसकी कुछ समस्याएं हैं. जैसे, यह सिर्फ़ वर्टिकल के लिए है और चाइल्ड एलिमेंट में होने वाले सभी बदलावों को पूरी तरह से मैनेज नहीं करता. (Ib351b)
स्क्रोल किया जा सकने वाला कॉम्पोनेंट जोड़ा गया है. इसकी मदद से, पसंद के मुताबिक स्क्रोलर/सूची बनाई जा सकती है (I5fd37)
बैकग्राउंड का नाम बदलकर DrawBackground किया गया और इसे डिफ़ॉल्ट रूप से याद रखने की सुविधा दी गई (Ia0bd3)
बॉक्स में पैडिंग, बॉर्डर, आकार, और बैकग्राउंड पैरामीटर जोड़ें (I05027, b/148147281)
कैनवस कॉम्पोनेंट जोड़ा गया. यह कॉम्पोज़ेबल कुछ जगह लेता है (उपयोगकर्ता से मिली जगह). साथ ही, आपको CanvasScope (I0d622) का इस्तेमाल करके ड्रॉ करने की सुविधा देता है
Border
मॉडिफ़ायर का नाम बदलकरDrawBorder
(I8ffcc) करेंलेआउट और ड्रॉइंग की सामान्य सुविधाओं को जोड़ने के लिए, Box कॉम्पोनेंट जोड़ा गया. (I6e2a7)
स्क्रोलर अब Android के नेटिव फ़्लिंग मोशन व्यवहार को दिखाते हैं. (I922af, b/147493715)
DrawBorder को बॉर्डर मॉडिफ़ायर (Id335a) से बदल दिया गया
Modifier.tag का नाम बदलकर Modifier.layoutId कर दिया गया है, ताकि Modifier.testTag से कोई भ्रम न हो. (I995f0)
ConstraintLayout के दिशा-निर्देश बनाते समय, प्रतिशत पैरामीटर का नाम बदलकर फ़्रैक्शन कर दिया गया है. (Ida2db)
ConstraintLayout के बैरियर के मार्जिन के लिए सहायता जोड़ी गई. (I47ffe)
ConstraintLayout में दाईं से बाईं ओर लिखने की सुविधा को ठीक किया गया. आरटीएल के बारे में जानकारी नहीं देने वाले एपीआई जोड़े गए. (I3b1c7)
ConstraintLayout के लिए एक नया डीएसएल जोड़ा गया है. ज़्यादा जानकारी के लिए, कृपया सैंपल देखें. (Icaa9a)
@ExperimentalLayout एनोटेशन जोड़ा गया. ConstraintLayout, FlowRow, और FlowColumn को अब इस टैग के साथ मार्क किया गया है, ताकि यह पता चल सके कि उनके एपीआई बदलने वाले हैं. (I412a8)
Modifier.padding(InnerPadding)
जोड़ा गया है (I94985, b/157133803)पंक्ति और कॉलम में, RowAlign और ColumnAlign को हटा दिया गया है. (If60d4, b/155858731)
LayoutTag() को हटा दिया गया है. इसके बजाय, कृपया Modifier.tag() का इस्तेमाल करें. Modifier.matchParent() को हटा दिया गया है. इसके बजाय, कृपया Modifier.matchParentSize() का इस्तेमाल करें. (If8044)
offsetPx लेआउट मॉडिफ़ायर जोड़ा गया है. इसका इस्तेमाल, पिक्सल में (डाइनैमिक) ऑफ़सेट तय करने के लिए किया जा सकता है. (I5af57)
AlignmentLineOffset composable अब काम नहीं करता. इसके बजाय, कृपया relativePaddingFrom() मॉडिफ़ायर का इस्तेमाल करें. CenterAlignmentLine कॉम्पोज़ेबल हटा दिया गया है. (I60107)
defaultMinSizeConstraints लेआउट मॉडिफ़ायर जोड़ा गया है. यह लेआउट के साइज़ की सीमाएं तभी सेट करता है, जब इन सीमाओं के लिए कोई वैल्यू न दी गई हो. जैसे, कम से कम साइज़ के लिए 0 और ज़्यादा से ज़्यादा साइज़ के लिए अनंत. (I311ea, b/150460257)
कंटेनर हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (Ibbc2b, b/151407926)
काम न करने वाले LayoutWidth/Height/Size मॉडिफ़ायर हटा दिए गए हैं. (Ib0bc1)
ऑफ़सेट मॉडिफ़ायर के लिए डिफ़ॉल्ट पैरामीटर वैल्यू जोड़ी गई हैं. (I37f06)
सिमेट्रिक पैडिंग मॉडिफ़ायर जोड़ा गया. (I39840)
LayoutAspectRatio मॉडिफ़ायर को हटा दिया गया है. (I65a74)
इस्तेमाल नहीं किए जा रहे LayoutAlign मॉडिफ़ायर हटाए गए. (I10877)
चौड़ाई और ऊंचाई के मॉडिफ़ायर में एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, रैप किए गए लेआउट को बिना किसी अक्ष की पाबंदियों के मेज़र किया जा रहा था. (I210b8, b/154797971)
लाइन और कॉलम में, verticalGravity और horizontalGravity पैरामीटर जोड़े गए हैं. (I7dc5a)
wrapContentWidth और wrapContentHeight को अपडेट किया गया है, ताकि किसी भी अलाइनमेंट के बजाय वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट की उम्मीद की जा सके. वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट को स्वीकार करने के लिए, गुरुत्वाकर्षण मॉडिफ़ायर को अपडेट किया गया था. कस्टम ऐलाइनमेंट के साथ काम करने के लिए, लाइन, कॉलम, और स्टैक को अपडेट किया गया. (Ib0728)
अरेंजमेंट को मनमुताबिक वैल्यू के साथ तुरंत लागू किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)
EdgeInsets का नाम बदलकर InnerPadding कर दिया गया. Material बटन के innerPadding पैरामीटर का नाम बदलकर padding कर दिया गया है. (I66165)
alignToSiblings फ़ंक्शन अब Placeable के बजाय Measured को स्वीकार करता है. (I5788d)
इंट्रिन्सिक मेज़रमेंट में साइज़ करने के लिए मॉडिफ़ायर जोड़े गए. साथ ही, इस काम के लिए इस्तेमाल किए जा रहे कॉम्पोनेंट को बंद कर दिया गया. (I8295d)
ConstraintLayout (Idb1a5) के चाइल्ड के डाइमेंशन को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई
इस्तेमाल नहीं किए जा रहे Wrap और Center कॉम्पोज़ेबल हटाए गए. (I29e23)
लेआउट में बदलाव करने वाले एलिमेंट तय करने के लिए, LayoutModifier2 नाम का नया एपीआई जोड़ा गया है. साथ ही, LayoutModifier (If32ac) को बंद कर दिया गया है
RowScope और ColumnScope के सदस्यों को अब लाइन और कॉलम के बाहर ऐक्सेस किया जा सकता है. (I3a641)
कंटेनर की सुविधा अब काम नहीं करती. इसके बजाय, Box का इस्तेमाल करें. (I675ce, b/151407926)
लेआउट की पोज़िशन को ऑफ़सेट करने के लिए, LayoutOffset मॉडिफ़ायर जोड़ा गया (I0b8a3)
Compose लेआउट में आरटीएल के लिए शुरुआती सहायता (Ia5519)
LayoutAlign को अपडेट किया गया, ताकि वह अब उपलब्ध जगह को न भर सके (I2b14f)
मॉडिफ़ायर के पक्ष में, AspectRatio composable को हटा दिया गया है. अब काम न करने वाले FlexColumn, FlexRow कॉम्पोज़ेबल, और स्पेसिंग मॉडिफ़ायर (Iec8a7) को मिटा दिया गया है
पंक्ति और कॉलम के लिए LayoutInflexible मॉडिफ़ायर हटाया गया (I0d820)
TextField के लिए चुने गए टेक्स्ट में बदलाव करने के लिए, टेक्स्ट चुनने के लिए खींचें और छोड़ें सुविधा लागू करें. (I27032)
TextField में टेक्स्ट चुनने के लिए, LongPressAndDrag को लागू करता है. (I17919)
गड़बड़ियां ठीक की गईं
- Modifier.focus, Modifier.focusRequester, Modifier.focusObserver के इस्तेमाल की वजह से, FocusModifier का इस्तेमाल बंद कर दिया गया है. FocusState और FocusDetailedState को बंद कर दिया गया है. अब इनकी जगह FocusState2 का इस्तेमाल किया जाना चाहिए (I46919, b/160822875, b/160922136)
runOnIdleCompose
का नाम बदलकरrunOnIdle
कर दिया गया (I83607)- जांच करने वाले कई एपीआई के नाम बदल दिए गए हैं, ताकि उन्हें इस्तेमाल करना आसान हो. सभी findXYZ एपीआई का नाम बदलकर onNodeXYZ कर दिया गया है. doXYZ वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
- पहले से बंद किए गए Modifier.ripple को हटाता है. Clickable अब डिफ़ॉल्ट इंंडिकेशन के तौर पर रिपल का इस्तेमाल करता है. ऐसा तब होता है, जब आपके ऐप्लिकेशन में MaterialTheme {} सेट हो. इसलिए, ज़्यादातर मामलों में, सिर्फ़ Clickable का इस्तेमाल करके, रिपल इंंडिकेशन को बिना किसी शुल्क के पाया जा सकता है. अगर आपको रिपल के लिए रंग / साइज़ / बाउंड पैरामीटर को पसंद के मुताबिक बनाना है, तो मैन्युअल रूप से RippleIndication बनाएं और उसे इंडिकेशन पैरामीटर के तौर पर क्लिक किए जा सकने वाले आइटम में पास करें. (I663b2, b/155375067)
- साइज़ की जांच करने वाले पुराने एपीआई हटा दिए गए. (Iba0a0)
- LayoutNode को एक्सपेरिमेंटल एपीआई बनाया (I4f2e9)
- Compose में, स्क्रोल ओरिएंटेशन लॉक करने की सुविधा का पहला वर्शन लागू किया गया है. (I1ce7a, b/150289741)
- पॉप-अप, डायलॉग, और मेन्यू में अब कॉन्टेक्स्ट के हिसाब से MaterialTheme (Ia3665, b/156527485) का इस्तेमाल किया जा रहा है
- Layout() फ़ंक्शन के मेज़र ब्लॉक से लेआउट डायरेक्शन पैरामीटर हटाया गया. हालांकि, लेआउट डायरेक्शन, मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए कॉलबैक में उपलब्ध है
- AbsoluteArrangement जोड़ें - इसकी मदद से, आरटीएल (I3a1df) में अपने-आप मिरर किए बिना, पंक्ति में बच्चों को व्यवस्थित किया जा सकता है
- @Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. @ComposableContract(tracked=false) (Id211e) से बदलें
- इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कोई (I5205a, b/158123804) था, तो Compose कंपाइलर प्लग इन, कॉन्स्ट्रक्टर के कॉल को आसानी से इंटरसेप्ट कर लेता था
viewModel()
कॉम्पोज़ेबल जोड़ें, जिससे पहले से बनाए गए ViewModel को बनाने या पाने की सुविधा मिलती है. यह सुविधा, ऐक्टिविटी या फ़्रैगमेंट में काम करने की तरह ही काम करती है (I5fdd1)Radius क्लास को इनलाइन क्लास में बदला गया. डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल करके, साथी बनाने के तरीकों को हटा दिया गया है. इससे y-ऐक्सिस के साथ त्रिज्या, ज़रूरी x-ऐक्सिस त्रिज्या पैरामीटर से मैच कर पाएगी.
DrawScope.drawRoundRect को अपडेट किया गया है, ताकि x और y ऐक्सिस के साथ दायरे के लिए, दो अलग-अलग फ़्लोट वैल्यू के बजाय, एक ही Radius पैरामीटर का इस्तेमाल किया जा सके (I46d1b)
पिक्सल पैरामीटर के लिए सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने के बड़े प्रयास के तहत, अलग-अलग compose क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है. पूरी Px क्लास मिटाई गई (I3ff33)
पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी प्रोसेस के तहत, अलग-अलग compose क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I086f4)
पिक्सल पैरामीटर (Id3434) के लिए, सिर्फ़ Dp और प्राइमिटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी कोशिश के तहत, अलग-अलग कंपोज क्लास में Px क्लास के इस्तेमाल को बदल दिया गया
पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी कोशिश के तहत, अलग-अलग compose क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I97a5a)
TextField के कर्सर में ब्लिंक करने वाला ऐनिमेशन है (Id10a7)
कुछ हिस्से के जेस्चर के लिए, अब GestureToken (Id7ae5) पास करने की ज़रूरत नहीं है
पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी कोशिश के तहत, अलग-अलग कॉम्पोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I57bff)
Modifier.semantics को हटाने की प्रक्रिया रोक दी गई है, ताकि इसे हाई लेवल कॉम्पोनेंट के लिए इस्तेमाल किया जा सके. (I4cfdc)
AnnotatedString.Builder.addAnnotationString का नाम बदलकर addStringAnnotation करें. (I5059e)
अलाइनमेंट एपीआई को अपडेट किया गया और एब्सोलूट अलाइनमेंट (जो आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता) के लिए सहायता जोड़ी गई (I38cd3)
लेआउट और LayoutModifier के बच्चों को, लेआउट के अलग-अलग डायरेक्शन के हिसाब से मेज़र किया जा सकता है. (Ibd731)
ImagePainter में वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि मौजूदा ImageAsset (I0ea9e) के सबसेट को ड्रॉ किया जा सके
आइटम हटाते समय, AdapterList में क्रैश होने की समस्या को ठीक किया गया (Ic64b0, b/153195921)
हमने activity.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 composables को ui-text-compose में ले जाया गया. हो सकता है कि आप अपने प्रोजेक्ट में ui-text-compose को शामिल करना चाहें. (I32042)
runOnIdleCompose
औरrunOnUiThread
अब ComposeTestRule पर मौजूद तरीकों के बजाय, ग्लोबल फ़ंक्शन हैं. (Icbe8f)[बदली जा सकने वाली]Kotlin 1.4 प्रॉपर्टी के प्रतिनिधि के ऑप्टिमाइज़ेशन के साथ काम करने के लिए, स्टेट प्रॉपर्टी के प्रतिनिधि ऑपरेटर को एक्सटेंशन में ले जाया गया.
by state { ... }
याby mutableStateOf(...)
का इस्तेमाल जारी रखने के लिए, कॉल करने वाले लोगों को इंपोर्ट जोड़ने होंगे. (I5312c)DrawLayerModifier और drawLayer() में अब clipToBounds और clipToOutline की वैल्यू डिफ़ॉल्ट रूप से 'गलत' है. (I0eb8b, b/152810850)
LayoutResult का नाम बदलकर MeasureResult कर दिया गया. (Id8c68)
अब काम न करने वाला सेंटर कॉम्पोज़ेबल. इसे LayoutSize.Fill + LayoutAlign.Center मॉडिफ़ायर से बदला जाना चाहिए. इसके अलावा, इसे Box या Stack कंपोज़ेबल में से किसी एक के साथ भी बदला जा सकता है. इसके लिए, उस पर सही मॉडिफ़ायर लागू करें (Idf5e0)
LayoutFlexible का नाम बदलकर LayoutWeight कर दिया गया. भरने के लिए, टाइट पैरामीटर का नाम बदला गया. (If4738)
DrawVector को सामान्य कॉम्पोज़ेबल फ़ंक्शन से बदलकर, मॉडिफ़ायर drawVector() में बदल दिया गया है. यह लेआउट के बैकग्राउंड के तौर पर वेक्टर को ड्रॉ करेगा. (I7b8e0)
composable फ़ंक्शन Clip को मॉडिफ़ायर drawClip() से बदलें. DrawClipToBounds एक ऐसा मॉडिफ़ायर है जिसका इस्तेमाल तब करना आसान होता है, जब आपको सिर्फ़ रेक्टैंगल आकार में लेयर के बाउंड्स तक क्लिप करना हो. (If28eb)
DrawShadow कॉम्पोज़ेबल फ़ंक्शन को drawShadow() में बदल दिया गया है. अब लेयर में बदलाव करने वाले टूल के हिस्से के तौर पर, परछाईयां बनाई जाती हैं. (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 मॉडिफ़ायर या स्टैक कॉम्पोज़ेबल (Ib237f) से बदला जा सकता है
लेआउट डायरेक्शन को पैरंट लेआउट नोड से बच्चों तक पहुंचाया गया. लेआउट की दिशा में बदलाव करने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)
Painter.toModifier का नाम बदलकर Painter.asModifier करें, क्योंकि नए बनाए गए मॉडिफ़ायर में ओरिजनल Painter का रेफ़रंस होता है. इसे कई मॉडिफ़ायर इंस्टेंस के साथ शेयर किया जा सकता है (I7195b)
LayoutPadding मॉडिफ़ायर (I9e8da) में, दाईं से बाईं ओर की दिशा का इस्तेमाल करने की सुविधा जोड़ी गई
Density और DensityScope को एक इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय, सिर्फ़ with(density) (I11cb1)
ValueHolder क्लास हटाई गई. ऐनिमेशन वैल्यू फ़ील्ड को ऐब्स्ट्रैक्ट बनाने के लिए, AnimatedValue और AnimatedFloat क्लास को फिर से व्यवस्थित किया गया, ताकि सबक्लास वैल्यू अपडेट देख सकें.
- AnimatedValue, AnimatedFloat वगैरह के लिए मॉडल क्लास जोड़ी गई हैं.
- वैल्यू के बीच ऐनिमेशन करने के लिए, लाइट-वेट @Composable API का नया सेट जोड़ा गया है.
- (I79530)
ambients API में होने वाले बदलावों के बारे में जानकारी. ज़्यादा जानकारी के लिए लॉग और
Ambient<T>
दस्तावेज़ देखें (I4c7ee, b/143769776)Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की Int पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)
ConstraintLayout से जुड़ी एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फिर से कॉम्पोज़ करने पर ऐप्लिकेशन क्रैश हो जाता था. (Ibee5a, b/158164341)
WithConstraints ट्रेलिंग लेम्ब्डा एपीआई को बदल दिया गया है. अब दो पैरामीटर के बजाय, इसमें एक रिसीवर स्कोप है. यह स्कोप, constraints और layoutDirection के अलावा, Dp (I91b9a, b/149979702) में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी देता है
LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया. (Id29f3)
Layout और LayoutModifier2 में मौजूद इंट्रिन्सिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिन्सिक क्वेरी एपीआई को, लेआउट डायरेक्शन के साथ-साथ जानकारी देता है. (Id9945)
LayoutDirectionAmbient अब काम नहीं करता. स्थानीय भाषा के हिसाब से तय किए गए लेआउट के डायरेक्शन को पढ़ने के लिए, ConfigurationAmbient (I851b1) पर localeLayoutDirection का इस्तेमाल करें
LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)
ParentData composable अब काम नहीं करता. आपको ऐसा मॉडिफ़ायर बनाना चाहिए जो ParentDataModifier इंटरफ़ेस को लागू करता हो. इसके अलावा, अगर आपको मेज़र ब्लॉक में लेआउट के चाइल्ड को पहचानने के लिए उन्हें टैग करना है, तो LayoutTag मॉडिफ़ायर का इस्तेमाल करें. (I51368, b/150953183)
OnPositioned और OnChildPositioned कमपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)
LayoutPadding में नेगेटिव पैडिंग की अनुमति न दें. नेगेटिव पोज़िशन ऑफ़सेट के लिए, LayoutOffset का इस्तेमाल किया जाना चाहिए. (Ifb5b1)
WithConstraints को LayoutDirection पैरामीटर (I6d6f7) मिला
ComposeFlags.COMPOSER_PARAM
फ़्लैग कोtrue
पर अपडेट किया गया है. इससे, कॉम्पोज़ प्लग इन के लिए कोड जनरेशन की रणनीति बदल जाएगी. हाई लेवल पर, इससे @Composable फ़ंक्शन एक अतिरिक्त सिंथेटिक पैरामीटर के साथ जनरेट होते हैं. इसे बाद में @Composable कॉल में पास किया जाता है, ताकि रनटाइम, फ़ंक्शन के लागू होने को सही तरीके से मैनेज कर सके. यह बाइनरी में एक अहम बदलाव है. हालांकि, यह बदलाव, कंपोज़ के सभी मंज़ूर किए गए इस्तेमाल में सोर्स-लेवल के साथ काम करना जारी रखेगा. (I7971c)LayoutCoordinates को बदलकर, दी गई AlignmentLines को मैप के बजाय सेट बनाया गया है. साथ ही, LayoutCoordinates को वैल्यू वापस पाने के लिए, get() ऑपरेटर लागू किया गया है. इससे, हर मॉडिफ़ायर के लिए नया कलेक्शन बनाए बिना, मॉडिफ़ायर के लिए सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. (I0245a)
LayoutCoordinates में अब पोज़िशन प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के मामले में, पोज़िशन प्रॉपर्टी का कोई मतलब नहीं है. इसके बजाय, डेवलपर को एक लेआउट कोऑर्डिनेट से दूसरे लेआउट कोऑर्डिनेट में बदलने का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.
LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए, पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, सभी लेआउट साइज़ के लिए, फ़्लोटिंग पॉइंट वैल्यू के बजाय पूर्णांक का इस्तेमाल किया जाना चाहिए. (I9367b)
पाबंदियों के एपीआई प्लैटफ़ॉर्म में सुधार (I0fd15)
TextDirection.Content (I48f36) जोड़ा गया
कॉपी, काटें, चिपकाएं विकल्पों को सही तरीके से दिखाने के लिए, टूलबार मेन्यू में बदलाव करें. (Id3955)
टेक्स्ट फ़ील्ड चुनने के लिए, फ़्लोटिंग टूलबार जोड़ें. (Ie8b07)
TextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)
TextDirection का नाम बदलकर ResolvedTextDirection (I3ff38) कर दिया गया है
TextField Selection में HapticFeedback जोड़ें. (I58050)
टेक्स्टफ़ील्ड के चुने गए हिस्से को कॉपी, काटें, और चिपकाएं. (Idb70b)
TestTag और सेमेटिक्स मिटा दिए गए हैं. इसके बजाय, 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 UI के साथ इस्तेमाल की जा रही गतिविधि को androidx.activity.ComponentActivity (या AppCompatActivity) से एक्सटेंड करना चाहिए. android.app.Activity पर setContent अब काम नहीं करता (Idb25a, b/153141084)
androidx की नीति के मुताबिक काम करने के लिए, ui-android-text पैकेज के नाम (androidx.text) को androidx.ui.text.platform से बदल दिया गया है. (I42711)