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
(सभी कंपोज़ पैकेज के लिए, एपीआई का संदर्भ देने वाले दस्तावेज़ देखें)
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 17 जून, 2026 | 1.11.3 | - | 1.12.0-beta01 | - |
संरचना
Compose में androidx के अंदर सात Maven ग्रुप आईडी का कॉम्बिनेशन होता है. हर ग्रुप में, फ़ंक्शन का एक टारगेट किया गया सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक के बारे में बताया गया है.
| समूह | ब्यौरा |
|---|---|
| compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
| compose.compiler | @Composable फ़ंक्शन को बदलें और Kotlin कंपाइलर प्लगिन की मदद से ऑप्टिमाइज़ेशन चालू करें. |
| compose.foundation | इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं. |
| compose.material | मटीरियल डिज़ाइन कॉम्पोनेंट का इस्तेमाल करके, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का टॉप लेवल एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं. |
| compose.material3 | Material Design 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. ये कॉम्पोनेंट, Material Design का अगला वर्शन हैं. Material 3 में, थीमिंग और कॉम्पोनेंट को अपडेट किया गया है. साथ ही, इसमें Material You की उपयोगकर्ता की गतिविधि और दिलचस्पी के हिसाब से उपलब्ध सुविधाएं भी शामिल हैं. जैसे, डाइनैमिक कलर. इसे Android 12 की नई विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है. |
| compose.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, Compose Compiler Plugin के लिए मुख्य रनटाइम, ताकि उसे टारगेट किया जा सके. |
| compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, Compose यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.11.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.11.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.12
वर्शन 1.12.0-beta01
17 जून, 2026
androidx.compose.foundation:foundation-*:1.12.0-beta01 रिलीज़ हो गया है. वर्शन 1.12.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह टेस्ट फ़ंक्शन का नाम बदलता है, ताकि अप्रत्यक्ष पॉइंटर इवेंट ट्रिगर किए जा सकें (I3ee35, b/509618414)
TextObfuscationMode.Defaultका नाम बदलकरSystemकर दिया गया.TextObfuscationMode.RevealLastTypedअब पूरी तरह से ओवरराइड करने वाले फ़ंक्शन के तौर पर काम करता है. साथ ही, यह हमेशा टाइप किए गए आखिरी वर्ण को दिखाता है.BasicSecureTextFieldके डिफ़ॉल्ट आर्ग्युमेंट को अपडेट करकेSystemकर दिया गया है. (If26d3, b/425658491, b/453647378)getSpanStylesऔरgetParagraphStylesको अपडेट किया गया है, ताकि अलग-अलग स्टार्ट/एंड इंडेक्स के बजायTextRangeलिया जा सके. स्टाइल क्वेरी पर बाउंड की जांच को आसान बनाया गया है, ताकि अब अपवाद न दिखें. साथ ही, अमान्य किए गएTrackedRangesकी प्रॉपर्टी के लिए क्वेरी करते समय क्रैश होने की समस्या को ठीक किया गया है. (I62a9a, b/514404697)- ग्रिड लेआउट में, नाम वाले एरिया की सुविधा जोड़ी गई. डेवलपर अब
GridConfigurationScope.area()का इस्तेमाल करके सिमैंटिक एरिया तय कर सकते हैं. साथ ही,Modifier.gridItem(area)के नए ओवरलोड का इस्तेमाल करके, आइटम को उनमें रख सकते हैं. इससे, सिमैंटिक इंटेंट को फ़िज़िकल कोऑर्डिनेट से अलग किया जा सकता है. (Id9303, b/487503921) - इसके बाद,
FlexBoxConfigऔरFlexConfigके लिए, then ऑपरेटर और कॉम्बिनेशन फ़ैक्ट्री फ़ंक्शन जोड़े गए. इससे लेआउट कॉन्फ़िगरेशन को मर्ज और ओवरराइड किया जा सकेगा. (Icfdd8, b/475491619) SwipeToRevealमेंRevealState.drag(),SwipeToRevealDragScopeजोड़ा गया. साथ ही, कस्टमflingBehaviorको दिखाया गया, ताकि स्वाइप जेस्चर, ऑफ़सेट, और सेटल होने वाले ऐनिमेशन को प्रोग्राम के हिसाब से कंट्रोल किया जा सके. (Ibfe56, b/484185090)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें टेक्स्ट चुनने वाले टूलबार की जगह या आइटम अपडेट नहीं हो पाते थे. (Ib2566)
बाहरी योगदान
SelectionContainerमें,Textचुनने लायक आइटम के बीच की खाली जगहों से चुनने की सुविधा (माउस की मदद से) चालू करें. (I93f69, b/502151445)- टेस्टिंग के लिए
AndroidClipboardइंटरफ़ेस को उपलब्ध कराएं, ताकि क्लिपबोर्ड के लागू होने का मज़ाक उड़ाया जा सके (Ie4d72, b/512924975) commitText()औरsetComposingText()केTextAttributeवैरिएंट के लिए, पुराने सिस्टम के साथ काम करने की सुविधा जोड़ी गई. SDK>=37 के लिए, सुलभता सेवाएं यह सूचना दे पाएंगी कि सुझाव के तौर पर दिए गए टेक्स्ट को चुना गया है या नहीं. SDK<37 के लिए, इससे बोले गए जवाब पर कोई असर नहीं पड़ेगा. इसका मतलब है कि यह सुविधा पहले की तरह काम करेगी. (I90e3d, b/439879822)
वर्शन 1.12.0-alpha03
19 मई, 2026
androidx.compose.foundation:foundation-*:1.12.0-alpha03 रिलीज़ हो गया है. वर्शन 1.12.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध Style API में, कस्टम स्टाइल टाइप बनाने की सुविधा जोड़ी गई है. इनमें कस्टम स्टाइल स्कोप हो सकते हैं. इससे, स्टाइल के हिसाब से सेट की जा सकने वाली प्रॉपर्टी को सबसेट किया जा सकता है. जैसे, ग्राफ़िक्स लेयर या टेक्स्ट प्रॉपर्टी को पूरी तरह से हटाया जा सकता है. साथ ही, इससे स्कोप को अन्य स्टाइल से अलग करके बढ़ाया जा सकता है. जैसे,
MediaPlayerकंपोज़ेबल में सिर्फ़playing { }सिंटैक्स का इस्तेमाल किया जा सकता है. इस बदलाव से, बाइनरी और सोर्स कंपैटिबिलिटी पर असर पड़ता है. सोर्स के साथ काम न करने वाला मुख्य बदलाव यह है किStyleScopeमें मौजूद हेल्पर फ़ंक्शन, अब एक्सटेंशन फ़ंक्शन बन गए हैं. उदाहरण के लिए,fun contentProperty(all: Dp)अब एक एक्सटेंशन फ़ंक्शन है. ज़रूरी एक्सटेंशन फ़ंक्शन इंपोर्ट करने या androidx.compose.foundation.styles से सभी सिंबल इंपोर्ट करने से, इन तरीकों को कॉल करने वाले कोड को सही तरीके से कंपाइल किया जा सकेगा. (I1ef27, b/493676648). ScrollIndicatorStateअब उल्टे किए गए लेआउट के लिए, विज़ुअल की शुरुआत से स्क्रोल ऑफ़सेट को सही तरीके से दिखाता है. इससे यह पक्का होता है कि इंडिकेटर को विज़ुअल तौर पर सही तरीके से दिखाया जाए. (Ia3fae, b/503604996)- समस्या को ठीक करने के लिए, फ़्लैग
isClearNestedScrollCoroutineScopeFixEnabledजोड़ा गया. (Ibd394, b/505343254)
बाहरी योगदान
SelectionContainerमें, टेक्स्ट को व्यूपोर्ट से बाहर ले जाकर चुनने पर, अपने-आप स्क्रोल होने की सुविधा चालू की गई. (Ibcb08, b/424433794)
वर्शन 1.12.0-alpha02
6 मई, 2026
androidx.compose.foundation:foundation-*:1.12.0-alpha02 रिलीज़ हो गया है. वर्शन 1.12.0-alpha02 में ये बदलाव शामिल हैं.
वर्शन 1.12.0-alpha01
22 अप्रैल, 2026
androidx.compose.foundation:foundation-*:1.12.0-alpha01 रिलीज़ हो गया है. वर्शन 1.12.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट फ़ील्ड की ऊंचाई का हिसाब लगाने के लिए, एक नया फ़्लैग
isBasicTextFieldHeighInLinesOptimizationEnabledजोड़ा गया है. इससे यह पता चलता है कि कम से कम/ज़्यादा से ज़्यादा कितनी लाइनें दिखेंगी. यह डिफ़ॉल्ट रूप से चालू होना चाहिए. अगर आपको टेक्स्ट फ़ील्ड के लेआउट में कोई गड़बड़ी दिखती है और इस फ़्लैग को बंद करने से वह ठीक हो जाती है, तो कृपया Compose टीम को गड़बड़ी की जानकारी दें, ताकि वह इसकी जांच कर सके. (Idffae, b/486871837, b/487546327) - हावभाव के दौरान टेक्स्ट में बदलाव करते समय,
textfieldचुनने की समस्या ठीक की गई. (I6fd98, b/490509264) - Compose Foundation में,
StyleScopeमेंcolorFilterके लिए सहायता जोड़ी गई. (I553a0) textMotionकोStyleScopeमें जोड़ा गया. (Id8523, b/482301609)- यह Android पर, कीबोर्ड के साथ काम करने वाले विकल्पों के सेट को पूरा करने के लिए, अतिरिक्त
KeyboardTypeविकल्प जोड़ता है. इनमें तारीख, समय, तारीख और समय, साइंड डेसिमल वगैरह शामिल हैं. (I3713e, b/202353328) - फ़्लैग हटाएं
isNestedDraggablesTouchConflictFixEnabled(I79e52, b/485966180) - फ़्लैग
isDelayPressesUsingGestureConsumptionEnabledहटाएं (I533dd, b/485966702) isBringIntoViewRltBouncyBehaviorInPagerFixEnabledफ़्लैग हटाएं, क्योंकि इसे स्टेबल वर्शन में रिलीज़ कर दिया गया है. (I73fb2, b/485967682)isCacheWindowRefillFixEnabledफ़्लैग हटाएं, क्योंकि इसे स्टेबल वर्शन में रिलीज़ कर दिया गया है. (Ic7505, b/485967875)ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabledको हटाता है (I1f76c, b/485966320, b/477836055)StyleScopeमेंcontentPaddingऔरexternalPaddingके लिए ओवरलोड जोड़े गए हैं, जोPaddingValuesस्वीकार करते हैं. (I3a6ce, b/493154098)- Android फ़्रेमवर्क की ओर से उपलब्ध कराए गए
VelocityTrackerको इस्तेमाल करने के लिए,VelocityTrackerमें बदलाव किया गया. इसेAndroidComposeUiFlags.isFrameworkVelocityTrackerEnabledकी मदद से कॉन्फ़िगर किया जा सकता है. (Ibc7e2, b/359962905)
गड़बड़ियां ठीक की गईं
- एक ही प्रॉपर्टी के लिए ओवरलैप होने वाले ऐनिमेशन से बचने के लिए, ऐनिमेशन और प्रॉपर्टी को ट्रैक करने के तरीके में बदलाव किया गया है. (I4921f)
- उस बग को ठीक किया गया है जिसकी वजह से, डायलॉग में
TextField(या चुना जा सकने वाला टेक्स्ट) मौजूद होने पर कॉन्टेक्स्ट मेन्यू क्रैश हो जाता था. (I21461, b/441759435) - Compose
compileSdkको एपीआई 37 पर अपडेट किया गया. इसका मतलब है कि Compose का इस्तेमाल करते समय, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743) - ग्रिड में, कीबोर्ड फ़ोकस और सुलभता ट्रैवर्सल से जुड़ी समस्या को ठीक किया गया है. इसमें आइटम कंपोज़िशन के क्रम के बजाय, विज़ुअल Z-शेप प्लेसमेंट के क्रम का पालन किया जाता था. (I122a8, b/494096503)
- हमने एक गड़बड़ी को ठीक किया है. इस गड़बड़ी की वजह से, टेक्स्ट चुनने वाला टूलबार गलत तरीके से छिप जाता था. ऐसा तब होता था, जब शुरू और खत्म होने वाले हैंडल हॉरिज़ॉन्टल तौर पर अलाइन होते थे. उदाहरण के लिए, कई लाइनों में मौजूद टेक्स्ट को चुनते समय, जब टेक्स्ट किसी खाली लाइन पर खत्म होता था. (I391d2, b/497724722)
FlexBoxमें मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से, कंटेनर की सीमाओं से ज़्यादा होने पर आइटम सही तरीके से छोटे नहीं होते थे. (Ia741d, b/480797591)foregroundColorके सही तरीके से अमान्य न होने की समस्या को ठीक किया गया. (I74abe, b/493245886)- इस अपडेट में, Compose के लिए इनसेट लिसनर के अलग होने और फिर से जुड़ने पर, पुराने इनसेट ठीक किए गए हैं. (I1e905, b/491346046, b/486084139)
- जब कोई उपयोगकर्ता कर्सर को स्क्रोल किए जा सकने वाले हिस्से से बाहर ले जाता है, तो कर्सर अब दिखने वाले हिस्से में स्क्रोल हो जाता है. (If694c, b/266094055)
वर्शन 1.11
वर्शन 1.11.3
17 जून, 2026
androidx.compose.foundation:foundation-*:1.11.3 रिलीज़ हो गया है. वर्शन 1.11.3 में ये बदलाव शामिल हैं.
वर्शन 1.11.2
19 मई, 2026
androidx.compose.foundation:foundation-*:1.11.2 रिलीज़ हो गया है. वर्शन 1.11.2 में ये बदलाव शामिल हैं.
वर्शन 1.11.1
6 मई, 2026
androidx.compose.foundation:foundation-*:1.11.1 रिलीज़ हो गया है. वर्शन 1.11.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
FlexBoxमें मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से, कंटेनर की सीमाओं से ज़्यादा होने पर आइटम सही तरीके से छोटे नहीं होते थे. (Ia741d, b/480797591)
वर्शन 1.11.0
22 अप्रैल, 2026
androidx.compose.foundation:foundation-*:1.11.0 रिलीज़ हो गया है. वर्शन 1.11.0 में ये बदलाव शामिल हैं.
वर्शन 1.11.0-rc01
08 अप्रैल, 2026
androidx.compose.foundation:foundation-*:1.11.0-rc01 रिलीज़ हो गया है. वर्शन 1.11.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- हावभाव के दौरान टेक्स्ट में बदलाव करते समय,
textfieldचुनने की समस्या ठीक की गई. (I2ba33, b/490509264)
वर्शन 1.11.0-beta02
25 मार्च, 2026
androidx.compose.foundation:foundation-*:1.11.0-beta02 रिलीज़ हो गया है. वर्शन 1.11.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इस समस्या को ठीक करने के लिए,
isReverseLayoutNestedScrollConnectionInPagerFixEnabledफ़्लैग जोड़ा गया है. (I07404, b/399800244) - इस सुविधा को रोल आउट करने की प्रोसेस को कंट्रोल करने के लिए,
isSkipItemPlacementAnimationFixEnabledको लॉन्च किया गया है. (Id665d, b/455884472, b/352584409, b/410487464, b/372509998) MinMax(min: Dp, max: Fr)कोGridTrackSizeमें जोड़ा गया. इससे डेवलपर, फ़्लेक्सिबल ट्रैक की कम से कम सीमा तय कर सकते हैं.MinMax(0.dp, 1.fr)का इस्तेमाल करने से, इंट्रिंसिक मेज़रमेंट क्वेरी को आसानी से बायपास किया जा सकता है. इसलिए,MinMax(0.dp, 1.fr)कॉम्पोनेंट, जैसे किLazyColumnऔरLazyRowको क्रैश होने से बचाने के लिए, फ़्लेक्सिबल ग्रिड ट्रैक में सुरक्षित तरीके से रखा जा सकता है.SubcomposeLayout(Ieb8c2, b/483822148)
गड़बड़ियां ठीक की गईं
FlexBoxमें मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, आइटम के छोटे होने की कम से कम सीमा पर पहुंचने के बाद, वे गलत तरीके से छोटे हो जाते थे. अब आइटम, इस्तेमाल न की गई जगह को अपने साथ वाले आइटम के साथ सही तरीके से शेयर करते हैं. इसके अलावा,FlexBoxअब मुख्य ऐक्सिस पर आइटम को आर्टिफ़िशियली क्लैंप नहीं करेगा. अगर आइटम कंटेनर में फ़िट होने के लिए काफ़ी छोटे नहीं हो सकते, तो वे अब मुख्य ऐक्सिस से विज़ुअल तौर पर ओवरफ़्लो हो जाएंगे. अगर क्लिपिंग करनी है, तोModifier.clipToBounds()का इस्तेमाल करें. (Ief751, b/480797591)- Keep Around को गैर-कानूनी इंडेक्स ऐक्सेस करने से रोकें. (I19121, b/485626636)
- ग्रिड में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, अपने-आप बनने वाली लाइनों या कॉलम के बीच के अंतर को कंटेनर के कुल साइज़ के हिसाब में शामिल नहीं किया जाता था. इस वजह से, कॉन्टेंट कट जाता था. (Ib9df8, b/480372415)
ClipboardऔरClipboardManagerअब सिस्टम सेवा के लिए, पहले तरीके से कॉल करने का अनुरोध करते हैं (If0016, b/487947860)RowमेंArrangement.spacedByके साथ, दाईं से बाईं ओर पढ़ी जाने वाली भाषाओं में एक समस्या को ठीक किया गया है. इस समस्या में, आइटम के तय जगह से बाहर जाने पर लेआउट और स्पेसिंग गलत हो जाती थी. (I44e53, b/476006478)
वर्शन 1.11.0-beta01
11 मार्च, 2026
androidx.compose.foundation:foundation-*:1.11.0-beta01 रिलीज़ हो गया है. वर्शन 1.11.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BasicTextFieldके इंटरनल मिन साइज़ कैलकुलेशन को ऑप्टिमाइज़ किया गया. इन्हेंComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabledकंट्रोल करता है. अगर आपको इन्हें बंद करना है, तो ऐसा करें. (I70ade)rememberUpdatedStyleStateजोड़ा गया है, जो एक्सपेरिमेंटल स्टाइल एपीआई का हिस्सा है.rememberUpdatedका इस्तेमाल तब किया जाना चाहिए, जब कंपोज़ेबल कॉम्पोनेंट (जैसे किenabled) के पैरामीटर को स्टाइल स्टेट (Idf7ff, b/485510967) में कॉपी किया जाता है, तबStyleStateके इंस्टेंस बनाए जाते हैं- यह कुकी, स्केल और पैन की वैल्यू वापस पाने के लिए
PointerInputChangeऔरHistoricalChangeप्रॉपर्टी के नाम बदलती है. (I989a8, b/481333653) - ट्रैकपैड टेस्टिंग एपीआई के लिए ज़्यादा सुविधाएं जोड़ी गई हैं, ताकि ट्रैकपैड के जेस्चर के लिए अलग-अलग कर्व और इनपुट को सिम्युलेट किया जा सके. (I290fb, b/473603145, b/479213358)
- यह फ़ंक्शन, नए
PointerEventType.PanकोPointerEventType.PanStart,PointerEventType.PanMove, औरPointerEventType.PanEndमें बांटता है. इसी तरह,PointerEventType.ScaleकोPointerEventType.ScaleStart,PointerEventType.ScaleChange, औरPointerEventType.ScaleEndमें बांट दिया गया है. इस स्प्लिट से, प्लैटफ़ॉर्म पर इंटरप्रेट किए गए पैन और स्केल के जेस्चर की शुरुआत और खत्म होने के बारे में अतिरिक्त जानकारी मिलती है. इससे Compose में पॉइंटर इनपुट हैंडलर, इवेंट का सही तरीके से पता लगाने के लिए इस जानकारी का इस्तेमाल कर पाते हैं. साथ ही, उन्हें यह भी पता चलता है कि पैन या स्केल कब किया गया. (I4daf6, b/479285849, b/481333653) - उपलब्ध साइज़ के आधार पर ग्रिड ट्रैक तय करने की अनुमति देने के लिए,
GridConfigurationScopeमेंconstraintsजोड़ा गया. (I80a41, b/481205205, b/481205205) FlexBoxDSL अबFlexBoxConfigऔर Modifier.flex में कॉन्फ़िगरेशन के लिए, प्रॉपर्टी (जैसे, grow = 1f) के बजाय फ़ंक्शन(जैसे, grow (1f)) का इस्तेमाल करता है. (I8dbae, b/475491619)
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इसमें कुछ आईएमई पर
OutputTransformationकी वजह से, वर्ण दो बार डाला जाता था. (I9fdc0) - ट्रैकपैड पर स्क्रोल करने के जेस्चर के लिए फ़्लिंग की सुविधा जोड़ी गई है (I55f8a, b/479285849)
- एक्सपेरिमेंट वाले Style API (I67437) के लिए बेंचमार्क जोड़े गए
बाहरी योगदान
InputTextSuggestionStateप्रॉपर्टी जोड़ें, ताकि यह पता चल सके कि टेक्स्ट बदलने के सुझाव उपलब्ध होने पर, लिप्यंतरण इनपुट की अलग-अलग स्थितियां क्या हो सकती हैं. इसमेंTextCompositionRangeभी शामिल किया गया है, ताकि मौजूदा लिप्यंतरण टेक्स्ट कंपोज़िशन रेंज को ट्रैक किया जा सके. शून्य वैल्यू से पता चलता है कि कोई कंपोज़िशन मौजूद नहीं है. (I7a67f, b/476472318)BasicTooltipBoxमें एक नया ओवरलोड जोड़ा गया है. इससेpropagateMinConstraintsको कॉन्फ़िगर किया जा सकता है. यह Box के इसी नाम वाले पैरामीटर की तरह काम करता है. इससे,BasicTooltipBoxके चाइल्ड एलिमेंट को सीधे तौर पर कम से कम पाबंदियां लागू करने की अनुमति मिलती है. ऐसा इसलिए, क्योंकिBasicTooltipBoxइन पाबंदियों को कम नहीं करता है. धन्यवाद स्टीवन शोएन! (Ib145f, b/467532639, b/301605744)
वर्शन 1.11.0-alpha06
25 फ़रवरी, 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha06 रिलीज़ हो गया है. वर्शन 1.11.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इसमें एक्सपेरिमेंट के तौर पर उपलब्ध स्टाइल एपीआई पेश किया गया है. इससे कंपोज़ेबल फ़ंक्शन को पसंद के मुताबिक बनाने की सुविधा को एक जैसा तरीके से चालू किया जा सकता है. इस एपीआई पर अभी काम चल रहा है. इसलिए, यह स्टेबल होने से पहले इसमें अहम बदलाव हो सकते हैं. इस एपीआई को इस्तेमाल करने के तरीके के बारे में जानने के लिए, शामिल किया गया दस्तावेज़ देखें. (I7fed2, b/455788242)
गड़बड़ियां ठीक की गईं
Modifier.combinedClickableको फिर से लिखा गया है, ताकि ऑप्टिमाइज़ेशन के तौर पर निलंबित किए गए पॉइंटर इनपुट का इस्तेमाल न किया जा सके. यह सुविधा उस फ़्लैग से चालू होती है जिसे नई सुविधा में कोई गड़बड़ी होने पर बंद किया जा सकता है -ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled.(Iea684)
मौजूदा समस्याएं
Modifier.combinedClickableको फिर से लिखने की वजह से, लंबे समय तक क्लिक करके रखने की सुविधा में रिग्रेशन की समस्या आ गई है. इसकी वजह से, कुछ डिवाइसों पर लंबे समय तक क्लिक करके रखने की सुविधा बार-बार ट्रिगर हो सकती है. इस समस्या को अगली रिलीज़ में ठीक कर दिया जाएगा. तब तक, इस समस्या से बचने के लिएComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled=falseसेट करें.
वर्शन 1.11.0-alpha05
11 फ़रवरी, 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha05 रिलीज़ हो गया है. वर्शन 1.11.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
isNestedDraggablesTouchConflictFixEnabledको इसलिए जोड़ा गया है, ताकि नेस्ट किए गए खींचने और छोड़ने लायक एलिमेंट के बीच होने वाले विवादों को हल किया जा सके. हम हॉरिज़ॉन्टल ड्रैग के मुकाबले वर्टिकल ड्रैग को ज़्यादा प्राथमिकता देंगे. ऐसा इसलिए, क्योंकि उपयोगकर्ता अनुभव के हिसाब से, वर्टिकल हाथ के जेस्चर के मुकाबले हॉरिज़ॉन्टल हाथ के जेस्चर में ज़्यादा स्वतंत्रता और अनिश्चितता होती है. (I273c7, b/252334353, b/269627294, b/363198504, b/442390269, b/419580124)- इस कुकी से, ट्रैकपैड के जेस्चर और ट्रैकपैड के इनपुट इवेंट को माउस में बदलने की सुविधा मिलती है. इस बदलाव के बाद, ट्रैकपैड पॉइंटर इवेंट को आम तौर पर माउस पॉइंटर के तौर पर रिपोर्ट किया जाएगा. ये इवेंट, टैबलेट या लैपटॉप जैसे डिवाइसों पर कर्सर को कंट्रोल करते हैं. पैन और स्केल के जेस्चर की रिपोर्ट भी, पॉइंटर इवेंट में हुए बदलावों के बारे में ज़्यादा जानकारी के साथ दी जाएगी. साथ ही, नए
PointerEventType.PanऔरPointerEventType.Scaleसे यह पता चलेगा कि ये वैल्यू सेट की जाएंगी (Id071a, b/315527861, b/459831570) isDelayPressesUsingGestureConsumptionEnabledके बारे में जानकारी दें. इस फ़्लैग के चालू होने पर, खींचने के जेस्चर वाले कंटेनर को दबाने में देरी होगी. इसमेंModifier.draggableपर आधारित कंटेनर के व्यवहार में बदलाव शामिल है. इससे पहले, प्रेस करने में देरी नहीं होती थी. (I53f24, b/203141462)- फ़्लैग
isDetectTapGesturesImmediateCoroutineDispatchEnabledऔर काम न करने वाले फ़्लैगDetectTapGesturesEnableNewDispatchingBehavior(I9bba3) को हटाया गया
गड़बड़ियां ठीक की गईं
- ``OutputTransformation का इस्तेमाल करते समय,
BasicTextFieldमें टेक्स्ट मिटाने पर होने वालीIndexOutOfBoundsExceptionको ठीक किया गया. (I20ee1) GridTrackSize.Autoके व्यवहार में बदलाव किया गया. अब यहmin-contentसे लेकरmax-contentतक के ट्रैक का साइज़ बदल सकता है. (Ifa22e, b/477748472)
बाहरी योगदान
NumPadको घुमाने वाली कुंजियों (I1ff12) के लिए सहायता जोड़ी गई
वर्शन 1.11.0-alpha04
28 जनवरी, 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha04 रिलीज़ हो गया है. वर्शन 1.11.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी में, एक ही ऑफ़सेट पर कई ऐंकर होने पर, कुछ मामलों में
AnchoredDraggableState'stargetValueगलत होता था. जब कोई ऐंकर, किसी ऐसे ऐंकर पर सेटल हो जाता है जिसका ऑफ़सेट किसी दूसरे ऐंकर के ऑफ़सेट के बराबर होता है, तोtargetValueइस ऑफ़सेट पर मौजूद ऐंकर में से आखिरी ऐंकर को गलत तरीके से दिखाता है. अब यहcurrentValueके ऑफ़सेट पर सेट होने पर,currentValueदिखाता है. (I66a7a, b/476365336) FlexBoxको लॉन्च किया गया है. यह कॉन्फ़िगर किया जा सकने वाला लेआउट सिस्टम है. यहRow,Column,FlowRow, औरFlowColumnका सुपरसेट है. इसमें फ़्लेक्स-ग्रो, फ़्लेक्स-श्रिंक, कस्टम रैपिंग, दिशा बदलने, औरFlexBoxConfigऔरModifier.flexकी मदद से अलाइनमेंट को बेहतर तरीके से कंट्रोल करने जैसी सुविधाएं काम करती हैं. (I44780)Gridको लॉन्च किया गया है. यह सीएसएस ग्रिड से मिलता-जुलता, कंपोज़ किया जा सकने वाला नया 2D लेआउट है. यह लेज़ी नहीं है. इस शुरुआती वर्शन में,configब्लॉक के ज़रिए, अलग-अलग ट्रैक साइज़ के साथ ग्रिड स्ट्रक्चर तय किए जा सकते हैं. इनमेंFixed,Percentage,Flex, और कॉन्टेंट पर आधारित विकल्प शामिल हैं. कोर लेआउट लॉजिक,Modifier.gridItem()का इस्तेमाल करके ग्रिड में आइटम को साफ़ तौर पर रखने की सुविधा देता है. फ़िलहाल, ग्रिड से जुड़े सभी एपीआई एक्सपेरिमेंट के तौर पर उपलब्ध हैं. इनका इस्तेमाल करने के लिए, आपको@OptIn(ExperimentalGridApi::class)के साथ ऑप्ट-इन करना होगा. हमें इस नए लेआउट के बारे में आपके सुझाव, राय या शिकायत का इंतज़ार है! (I04907, b/462550392)
वर्शन 1.11.0-alpha03
14 जनवरी, 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha03 रिलीज़ हो गया है. वर्शन 1.11.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LookaheadScopeके अंदरLazyStaggeredGridका इस्तेमाल करने पर, मेमोरी लीक की समस्या को ठीक किया गया है. I286ad
वर्शन 1.11.0-alpha02
17 दिसंबर, 2025
androidx.compose.foundation:foundation-*:1.11.0-alpha02 रिलीज़ हो गया है. वर्शन 1.11.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MultiModalInjectionScopeएपीआई अब स्टेबल हो गए हैं. इसमेंperformKeyInputऔरperformRotaryScrollInputके साथ-साथ, इनके मुख्य और रोटरी एपीआई भी शामिल हैं. एक्सपेरिमेंट के तौर पर जोड़े गए एनोटेशन को हटा दिया गया है. (Ie8bbc, b/261561237)isNonSuspendingPointerInputInClickableEnabledफ़्लैग हटाया गया. (I6a168, b/455591971)
वर्शन 1.11.0-alpha01
03 दिसंबर, 2025
androidx.compose.foundation:foundation-*:1.11.0-alpha01 रिलीज़ हो गया है. वर्शन 1.11.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Modifier.scrollIndicatorको इसलिए जोड़ा गया है, ताकि स्क्रोल किए जा सकने वाले कंटेनर में कस्टम स्क्रोल इंडिकेटर जोड़े जा सकें.ScrollIndicatorFactoryइंटरफ़ेस की मदद से, स्क्रोल इंडिकेटर बनाए जा सकते हैं. इसके लिए, आपको यह तय करना होगा कि वे कैसे दिखेंगे और उनका व्यवहार कैसा होगा. (I89322)ComposeFoundationFlags.isTextFieldDpadNavigationEnabledको हटाया गया. अब यह नया तरीका हमेशा चालू रहेगा. (I3f034)- कैश विंडो रीफ़िल से जुड़ी समस्या को ठीक करने के लिए,
isCacheWindowRefillFixEnabledकी सुविधा लॉन्च करें. (I4e52b, b/454439658) ComposeFoundationFlags.isKeepInViewFocusObservationChangeEnabledको हटाया गया. अब यह नया तरीका हमेशा चालू रहेगा. (I7cbd4)Modifier.onFirstVisible()को बंद कर दिया गया है, क्योंकि यह गुमराह करने वाला है और हमेशा नाम के हिसाब से काम नहीं करता. उदाहरण के लिए, जब इसेLazyColumnके किसी आइटम में जोड़ा जाता है, तो स्क्रोल करने के बाद यह आइटम दिखने पर, इस कॉलबैक को हर बार कॉल किया जाएगा. यह उस तरह का मॉडिफ़ायर नहीं है जैसा इस नाम के मॉडिफ़ायर का इस्तेमाल करने वाले लोग उम्मीद कर रहे थे. हमारा सुझाव है कि आपModifier.onVisibilityChanged()का इस्तेमाल करें. साथ ही, मैन्युअल तरीके से ट्रैक करें कि लेआउट पहले से दिख रहा था या नहीं. यह इस बात पर निर्भर करता है कि इस्तेमाल के खास उदाहरण की ज़रूरत क्या है. (Ia7095, b/447601783)MeasuredSizeAwareModifierNodeको लॉन्च किया गया है. इसकी ज़रूरत तब पड़ती है, जब आपकोonRemeasured()कॉलबैक की ज़रूरत होती है. अगर आपको अन्य कॉलबैक की ज़रूरत नहीं है, तो कृपया ज़्यादा सामान्यLayoutAwareModifierNodeका इस्तेमाल करने के बजाय, सीधे इस इंटरफ़ेस का इस्तेमाल करें. (If6fb0)- इसमें
visibleमॉडिफ़ायर जोड़ा गया है. इसका इस्तेमाल, कंपोज़ेबल के कॉन्टेंट को बिना किसी असर के स्किप करने के लिए किया जा सकता है. (Ia6871, b/158837937)
वर्शन 1.10
वर्शन 1.10.6
25 मार्च, 2026
androidx.compose.foundation:foundation-*:1.10.6 रिलीज़ हो गया है. वर्शन 1.10.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- स्थिरता से जुड़ी समस्याओं को हल करने के लिए,
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledको डिफ़ॉल्ट रूप से बंद कर दिया जाता है. (I73960, b/482223006, b/488433633)
वर्शन 1.10.5
11 मार्च, 2026
androidx.compose.foundation:foundation-*:1.10.5 रिलीज़ हो गया है. वर्शन 1.10.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
OutputTransformationका इस्तेमाल करते समय और टेक्स्ट मिटाते समय,BasicTextFieldमें मौजूदIndexOutOfBoundsExceptionको ठीक किया गया है. (I20ee1)
वर्शन 1.10.4
25 फ़रवरी, 2026
androidx.compose.foundation:foundation-*:1.10.4 रिलीज़ हो गया है. वर्शन 1.10.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रिग्रेशन बग को ठीक किया गया है. इस बग में, किसी दूसरे स्कोप से अलाइनमेंट मॉडिफ़ायर (जैसे,
Rowके अंदरColumnScope.align) का इस्तेमाल करने पर, गलत पोज़िशनिंग होती थी. (6888f2b, b/477639546)
वर्शन 1.10.3
11 फ़रवरी, 2026
androidx.compose.foundation:foundation-*:1.10.3 रिलीज़ हो गया है. वर्शन 1.10.3 में ये बदलाव शामिल हैं.
वर्शन 1.10.2
28 जनवरी, 2026
androidx.compose.foundation:foundation-*:1.10.2 रिलीज़ हो गया है. वर्शन 1.10.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट चुनने की सुविधा चालू होने पर, स्क्रीन से वापस नेविगेट करते समय ऐप्लिकेशन क्रैश होने की समस्या ठीक की गई है. (I9f540, b/444482508)
वर्शन 1.10.1
14 जनवरी, 2026
androidx.compose.foundation:foundation-*:1.10.1 रिलीज़ हो गया है. वर्शन 1.10.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट चुनने की सुविधा को ठीक किया गया है. इससे, हॉरिज़ॉन्टल अलाइनमेंट वाले एक टेक्स्ट इंस्टेंस से दूसरे टेक्स्ट इंस्टेंस तक टेक्स्ट चुनने पर ऐप्लिकेशन क्रैश नहीं होगा. I351311, b/439758956
वर्शन 1.10.0
03 दिसंबर, 2025
androidx.compose.foundation:foundation-*:1.10.0 रिलीज़ हो गया है. वर्शन 1.10.0 में ये बदलाव शामिल हैं.
वर्शन 1.10.0-rc01
19 नवंबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-rc01 रिलीज़ हो गया है. वर्शन 1.10.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
isCacheWindowForPagerEnabledफ़्लैग बंद कर दिया गया है. (Iffdec, b/458193632)
वर्शन 1.10.0-beta02
05 नवंबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-beta02 रिलीज़ हो गया है. वर्शन 1.10.0-beta02 में ये बदलाव शामिल हैं.
वर्शन 1.10.0-beta01
22 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-beta01 रिलीज़ हो गया है. वर्शन 1.10.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह सभी इनडायरेक्ट टच एपीआई को अपडेट करता है, ताकि वे पॉइंटर इनपुट एपीआई से मेल खाने के लिए, इनडायरेक्ट पॉइंटर एपीआई के नाम का इस्तेमाल कर सकें. (I238ce, b/451607214)
PagerState.currentPageOffsetFractionको@FrequentlyChangingValueके साथ एनोटेट किया गया. (Idfaab)
गड़बड़ियां ठीक की गईं
- इससे आरटीएल लेआउट की दिशाओं के लिए मार्की के व्यवहार से जुड़ी समस्या ठीक हो जाती है. (Ib8be3)
वर्शन 1.10.0-alpha05
08 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha05 रिलीज़ हो गया है. वर्शन 1.10.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PaddingValuesअब जोड़ और घटाव की सुविधा के साथ काम करते हैं, ताकि पैडिंग की सामान्य कैलकुलेशन को आसान बनाया जा सके. (I327e1, b/244468479)
गड़बड़ियां ठीक की गईं
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledडिफ़ॉल्ट रूप से चालू होती है. यह परफ़ॉर्मेंस ऑप्टिमाइज़ेशन है. इससे हमें प्रीफ़ेच के दौरान किए जाने वाले काम को बेहतर तरीके से डिस्ट्रिब्यूट करने में मदद मिलती है. उदाहरण के लिए, हम एक यूज़र इंटरफ़ेस (यूआई) फ़्रेम के दौरान,LazyColumnके अगले आइटम के कुछ हिस्सों के लिए ही कंपोज़िशन कर सकते हैं. इसके बाद, बाकी हिस्सों को अगले फ़्रेम में कंपोज़ करना जारी रख सकते हैं. (I4c7fe)
वर्शन 1.10.0-alpha04
24 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha04 रिलीज़ हो गया है. वर्शन 1.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PagerStateके लिए,ScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I113b7)LazyStaggeredGridStateके लिए,ScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I1028e)LazyGridStateके लिए,ScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I9e50c)LazyListStateके लिए,ScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I5ee29)ScrollStateके लिए,ScrollIndicatorStateलागू करने की सुविधा जोड़ी गई. (I27f66)ScrollableStateइंटरफ़ेस (Idca93) मेंscrollIndicatorStateप्रॉपर्टी लॉन्च करेंisWindowInsetsModifierLocalNodeImplementationEnabledफ़्लैग हटा दिया गया (I15e8f, b/440964232)scrollableArea()मॉडिफ़ायर को दिखाएं. इसका इस्तेमाल करके, कॉम्पोनेंट को स्क्रोल किया जा सकता है. साथ ही, कॉन्टेंट को उसकी सीमाओं के हिसाब से काटा जा सकता है. इसके अलावा, ओरिएंटेशन, आरटीएल, औरreverseScrollingफ़्लैग के आधार पर, कॉन्टेंट के स्क्रोल करने की दिशा को अपने-आप मैनेज किया जा सकता है. (I9471b, b/316559454)
वर्शन 1.10.0-alpha03
10 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha03 रिलीज़ हो गया है. वर्शन 1.10.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposeFoundationFlags.isNonComposedClickableEnabledको हटाता है (I0dfc0, b/406228525)FillableDataइंस्टेंस बनाने के लिए, फ़ैक्ट्री फ़ंक्शन को कंपैनियन ऑब्जेक्ट में ले जाएं.FillableData(value)को कॉल करने के बजाय, फ़ैक्ट्री के नए तरीकों का इस्तेमाल करें:FillableData.createFrom(value). (I2e200, b/441719650)- फ़ोकस सर्च के लिए, सीमा से बाहर का लेआउट बनाने के लिए
BeyondBoundsLayoutModifierNodeएक नया मॉडिफ़ायर नोड जोड़ा गया है. (I39be1, b/416133658) ScrollState.valueको@FrequentlyChangingValueप्रॉपर्टी के तौर पर मार्क किया गया है. (I4723d)- डिफ़ॉल्ट तौर पर लागू करने के लिए,
LazyLayoutKeyIndexMapऔर फ़ैक्ट्री लॉन्च की गई. (I4fd0c, b/415038029)
गड़बड़ियां ठीक की गईं
- कॉलम और लाइन अब आइटम के असल साइज़ को
Modifier.alignमें सही तरीके से पास करते हैं. इससे उस समस्या को हल किया जा सकता है जहां कस्टमModifier.alignलागू करने पर, गलत वैल्यू 0 मिलती थी. (I8194f, b/439716351)
वर्शन 1.10.0-alpha02
27 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha02 रिलीज़ हो गया है. वर्शन 1.10.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
isFlingContinuationAtBoundsEnabledफ़्लैग हटाया गया. (I6b84f)isAdjustPointerInputChangeOffsetForVelocityTrackerEnabledफ़्लैग हटाया गया. (I62380)isOnScrollChangedCallbackEnabledफ़्लैग हटाया गया. (I667dc)isAutomaticNestedPrefetchEnabledफ़्लैग हटाया गया. (I4f416)DragGesturePickUpEnabledफ़्लैग हटाया गया. (Ib8500)- स्क्रोलबार की स्थिति दिखाने के लिए
ScrollIndicatorStateAPI लॉन्च किया गया (I5e229)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से
Modifier.anchoredDraggableका इस्तेमाल करने पर,confirmValueChangeचालू नहीं हो रहा था. (Iff7cc)
वर्शन 1.10.0-alpha01
13 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01 रिलीज़ हो गया है. वर्शन 1.10.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- स्क्रोल की दिशा में डिफ़ॉल्ट रूप से एक आइटम के बजाय, कैश मेमोरी में सेव की गई विंडो का इस्तेमाल करने के लिए, Pager की प्रीफ़ेच रणनीति को अपडेट करें. अब Pager में, शुरुआती प्रीफ़ेचिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. साथ ही, प्रीफ़ेचिंग, व्यूपोर्ट के साइज़ के हिसाब से की जाएगी. इसका मतलब है कि हम प्रीफ़ेच किए गए आइटम से पूरे व्यूपोर्ट को भरने की कोशिश करेंगे. साथ ही, आइटम को ज़्यादा समय तक दिखाया जाएगा. (I4d45e, b/292136289)
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabledफ़्लैग जोड़ा गया है. इससे, अगर नए तरीके को लागू करने से व्यवहार में बदलाव होता है, तोWindowInsetsपरफ़ॉर्मेंस ऑप्टिमाइज़ेशन को बंद किया जा सकता है. (I8e912)SnapFlingBehaviorअब स्नैपिंग के दौरान, स्नैप ऐनिमेशन की खास बातों को ओवरशूट करने की अनुमति देता है. इससे, उदाहरण के लिए,snapAnimationSpecके तौर पर बाउंस होने वाले स्प्रिंग स्पेसिफ़िकेशन को चालू किया जा सकता है, ताकि बाउंस होने वाला स्नैप ऐनिमेशन बनाया जा सके. स्नैप स्पेसिफ़िकेशन का इस्तेमाल करके, ओवरशूटिंग वैल्यू को अनदेखा किया जाता है. (I373c2)ComposeViewमें माउस या टचपैड से पॉइंटर डाउन करने पर, अब फ़ोकस अपने-आप हट जाएगा. ऐसा तब होगा, जब पॉइंटर डाउन, फ़ोकस किए गए नोड की सीमाओं के अंदर नहीं होगा. इससे "टैप करके फ़ोकस हटाएं" वाला यूज़र एक्सपीरियंस मिलता है. पॉइंटर इनपुट डिवाइसों का इस्तेमाल करते समय, यह यूज़र एक्सपीरियंस मौजूदा यूज़र एक्सपीरियंस से ज़्यादा बेहतर होता है. इस सुविधा से ऑप्ट-आउट करने के लिए, नएAbstractComposeView.isClearFocusOnPointerDownEnabledएपीआई का इस्तेमाल किया जा सकता है. (I6322b, b/282963174)- अब Scrollable, माउस व्हील को स्क्रोल करने पर होने वाले दो डाइमेंशन वाले इवेंट को बेहतर तरीके से सपोर्ट करता है.
MouseInjectionScopeमें इस्तेमाल के उदाहरणों की जांच करने के लिए, एक नया टेस्ट एपीआई उपलब्ध कराया गया है. हमनेMouseInjectionScopeमें स्क्रोल करने के तरीकों के लिए एक नया ओवरलोड भी पेश किया है. साथ ही, नई सुविधा को कंट्रोल करने के लिए एक फ़्लैग भी पेश किया है, जिसेisMouseWheel1DAxisLockingEnabled(I136df) कहा जाता है - ऑप्टिमाइज़ेशन के लिए पॉइंटर इनपुट को निलंबित करने के बजाय, रॉ पॉइंटर इनपुट का इस्तेमाल करने के लिए
DragGestureNodeको अपडेट किया गया. बदलावों को फ़्लैगisNonSuspendingPointerInputInDraggableEnabled(I0fa4b) के पीछे जोड़ा गया है - कुछ
AnchoredDraggableएपीआई को@FrequentlyChangingValueके साथ एनोटेट किया गया है.offset,requireOffset, औरprogressमें अक्सर बदलाव होता रहता है. इसलिए, इन्हें कंपोज़िशन में नहीं पढ़ा जाना चाहिए. कृपया इन वैल्यू को लेआउट और ड्रॉ फ़ेज़, इफ़ेक्ट या कंपोज़िशन के बाहर से ऐक्सेस करें. (I05539) isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabledफ़्लैग हटाए गए (I36c18)CompositionLocalको पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट किए गए हिस्से के ब्रश में बदलाव करने के लिए किया जा सकता है. (I52329)FocusPropertiesमें पसंद के मुताबिक फ़ोकस रेक्ट जोड़ने की सुविधा जोड़ी गई. अब फ़ोकस किए जा सकने वाले एलिमेंट के बाउंडिंग बॉक्स को डिफ़ॉल्ट रूप से सेट करने के बजाय, फ़ोकस करने के लिए अपनी पसंद का एरिया तय किया जा सकता है. इस जानकारी का इस्तेमाल, फ़ोकस ट्रैवर्सल सिस्टम और स्क्रोल किए जा सकने वाले कंटेनर के 'व्यू में रखें' लॉजिक के लिए किया जाता है. (Id6555, b/368378073)Tightनाम का नयाLineHeightStyle.Modeजोड़ा गया. इस मोड की मदद से, लाइन की ऊंचाई को कम किया जा सकता है. भले ही, इससे बड़े ग्लिफ़ कट जाएं. (Id3849)- नया इंटरपोलेटबल इंटरफ़ेस जोड़ा गया है. इससे अलग-अलग टाइप के बीच अपने-आप इंटरपोलेशन हो जाता है. हालांकि, इसके लिए यह ज़रूरी है कि एक टाइप को दूसरे टाइप में बदलने का तरीका पता हो. इस इंटरफ़ेस का इस्तेमाल, कंपोज़ करने के कई तरीकों में किया जाता है. जैसे, ब्रश और शेप. हालांकि, इसका इस्तेमाल बाहरी तौर पर भी किया जा सकता है. (I58eab)
- यह इनडायरेक्ट इनपुट इवेंट और स्क्रोल करने के लिए इस्तेमाल किए जाने वाले कोऑर्डिनेट ऐक्सिस को तय करने का तरीका जोड़ता है. (I58e7c)
- डिसप्ले कटआउट का पाथ पाने के लिए, नया
WindowInsets.cutoutPathएपीआई जोड़ा गया है (Ib90b1, b/279636456) isWindowInsetsDefaultPassThroughEnabledफ़्लैग हटा दिया गया है. इससे WindowInsets डिफ़ॉल्ट रूप से इस्तेमाल नहीं होंगे, ताकि चाइल्ड व्यू को डिफ़ॉल्ट रूप सेWindowInsetsमिल सके. (I888e0, b/412469666)
गड़बड़ियां ठीक की गईं
- फ़िलहाल,
isNonSuspendingPointerInputInDraggableEnabledको बंद कर दिया गया है. (Ia41c4) - डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)
DraggableAnchors'minPosition/maxPositionके दस्तावेज़ को अपडेट किया गया है. इसमें बताया गया है कि इन एपीआई को अन्यDraggableAnchorsएपीआई के मुताबिक, Float.NaN वैल्यू दिखानी चाहिए. (I0460a)- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से ऐंकर खाली होने पर
DraggableAnchors#closestAnchorक्रैश हो जाता था (I4e646) DraggableAnchorsकी परफ़ॉर्मेंस में सुधार (If4065, I0460a)TextFieldState.edit { }अब बदलावों को पहले जैसा करने के इतिहास को नहीं मिटाता. इसके बजाय, यह बदलाव को पहले जैसा करने के लिए एक अलग एंट्री बनाता है. अगर आपकोeditकॉल के बाद, अनडू स्टैक को मिटाना है, तो कृपयाTextFieldState.undoState.clearHistory()का इस्तेमाल करें. (I12c14)SelectionContainerऔरBasicTextField(value, onValueChange)ओवरलोड में, शब्द चुनने के लिए दो बार टैप करने की सुविधा जोड़ी गई. (Ibb06a)AutoboxingStateValuePropertyDetectorको K1 और K2, दोनों के साथ काम करने के लिए, छोटी-मोटी गड़बड़ियां ठीक की गई हैं (Ie81c1)- AndroidViews से किए गए
requestRectangleOnScreenअनुरोध अब Compose में ठीक से भेजे जाते हैं. इससेEditTextजैसे व्यू, स्क्रीन पर बने रहते हैं. (Ibbf4c) - कॉलम और लाइन अब आइटम के असल साइज़ को
Alignment.Vertical.alignऔरAlignment.Horizontal.alignको सही तरीके से पास करते हैं. इससे उस समस्या को हल किया गया है जिसमें कस्टम अलाइनमेंट लागू करने पर, गलत वैल्यू 0 मिलती थी. (I3e460, b/349722072)
वर्शन 1.9
वर्शन 1.9.5
19 नवंबर, 2025
androidx.compose.foundation:foundation-*:1.9.5 रिलीज़ हो गया है. वर्शन 1.9.5 में ये बदलाव शामिल हैं.
वर्शन 1.9.4
22 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.9.4 रिलीज़ हो गया है. वर्शन 1.9.4 में ये बदलाव शामिल हैं.
वर्शन 1.9.3
08 अक्टूबर, 2025
androidx.compose.foundation:foundation-*:1.9.3 रिलीज़ हो गया है. वर्शन 1.9.3 में ये बदलाव शामिल हैं.
वर्शन 1.9.2
24 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.9.2 रिलीज़ हो गया है. वर्शन 1.9.2 में ये बदलाव शामिल हैं.
वर्शन 1.9.1
10 सितंबर, 2025
androidx.compose.foundation:foundation-*:1.9.1 रिलीज़ हो गया है. वर्शन 1.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LazyListsमेंLazyLayoutCacheWindowका इस्तेमाल करते समय क्रैश होने की समस्या ठीक की गई (c39f5f3)
वर्शन 1.9.0
13 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.9.0 रिलीज़ हो गया है. वर्शन 1.9.0 में ये बदलाव शामिल हैं
1.8.0 के बाद हुए ज़रूरी बदलाव
- Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन होना ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.propertiesमेंandroid.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है. - बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए फ़ंक्शन, अब सिर्फ़IndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. ये इंस्टेंस,LocalIndicationका इस्तेमाल करके उपलब्ध कराए जाते हैं. यह बदलाव तब लागू होगा, जब Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल किया जाएगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर कोई असर नहीं पड़ता. अगरLocalIndicationको, हटाए गए इंडिकेशन को लागू करने की सुविधा दी जा रही है और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान क्रैश की समस्या आएगी. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन, रीकंपोज़िशन के दौरान स्किप कर सकेंगे. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे माइग्रेशन के दौरान ब्लॉक किए बिना, Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन लागू करने के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333) - नेस्टेड स्क्रोलिंग में फ़्लिंग के फैलने से जुड़ी समस्या को ठीक करने के लिए,
isFlingCancellationWithNestedScrollFixEnabledको जोड़ा गया है. इस सीएल में, हम फ़्लिंग जारी रखने की सुविधा को वापस ला रहे हैं. इसे I9326a में हटा दिया गया था. अगर बच्चे को कंपोज़िशन से हटा दिया जाता है, तो हम फ़्लिंग ऐनिमेशन को अब भी रद्द कर देंगे. (I467f4, b/405910180, b/419049142, b/416784125) ContentInViewNodeमेंscrollAnimationSpecका इस्तेमाल फिर से जोड़ें.scrollAnimationSpecबंद करने की प्रोसेस के दौरान, इस सुविधा को हटा दिया गया था. इस वजह से, इस्तेमाल के उदाहरण काम नहीं कर रहे हैं. (I1436a, b/403301605)LazyLayoutको स्थिर किया गया. (If5db4),LazyLayoutPrefetchStateऔर इसकी शेड्यूलिंग का तरीकाschedulePrecompositionऔरschedulePrecompositionAndPremeasure. (I4362f, b/252853717) औरLazyLayoutItemProvider(Icce09,b/261565751)- कंपोज़ की सुविधा को
ViewTreeObserver.OnScrollChangedट्रिगर करने की अनुमति दें. इस सुविधा कोisOnScrollChangedCallbackEnabledफ़्लैग के तहत लॉन्च किया गया है. हमनेDelegatableNode dispatchOnScrollChangedका एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286) - स्टेट बनाने के लिए,
Modifier.scrollable2D,Scrollable2DState, और कंपैनियन एपीआई पेश किए गए. स्क्रोल करने के लिए, एक्सटेंशन के सामान्य फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040) PrefetchSchedulerऔर पसंद के मुताबिक बनाने की सुविधा को बंद कर दिया गया है. इसके बजाय, इंटरनल तौर पर लागू की गई सुविधा का इस्तेमाल करें. यह सुविधा, सभी काम अपने-आप करती है. (I3a9a6, b/420551535)TextFieldState.edit { }अब बदलावों को पहले जैसा करने के इतिहास को नहीं मिटाता. इसके बजाय, यह बदलाव को पहले जैसा करने के लिए एक अलग एंट्री बनाता है. अगर आपको बदलाव करने के बाद, पहले जैसा करने की सुविधा को बंद करना है, तो कृपयाTextFieldState.undoState.clearHistory()का इस्तेमाल करें. (I12c14)- कॉन्टेक्स्ट मेन्यू और सिलेक्शन टूलबार, दोनों में अब स्मार्ट आइटम (स्मार्ट सिलेक्शन) की सुविधा काम करती है
- स्टाइल किया गया टेक्स्ट
OutputTransformationजोड़ा गया, ताकिstateओवरलोड का इस्तेमाल करकेTextFieldके आउटपुट को स्टाइल किया जा सके. TextField: कॉन्टेक्स्ट मेन्यू (राइट क्लिक मेन्यू) के साथ काम करता है.- अब
SelectionContainerमें मौजूद एक से ज़्यादा टेक्स्ट कंपोज़ेबल से कॉपी किए गए टेक्स्ट के बीच, लाइन सेपरेटर \n जोड़ा जाएगा. (I25332, b/285036739) AnnotatedString(I1d066, b/383269496, b/139326648) के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गयाstateकेBasicTextFieldपर ज़्यादा लोड होने की वजह से, कर्सर का साइज़ बदलने पर भी वह दिखता रहेगा. (I0eb41, b/406187741)- बदलाव:
backgroundऔरborderमॉडिफ़ायर नोड अबSemanticsModifierNodeलागू करते हैं. इससे सिमैंटिक्स ट्री में नएSemanticsNodesजुड़ सकते हैं. इसलिए, सिमैंटिक्स ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट में, टेस्ट फ़ेल हो सकते हैं. उदाहरण के लिए, अगर मौजूदा और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है, तोonChild,onParent,onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट फ़ेल हो सकते हैं. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर परtestTagजोड़ें. एक और तरीका है कि आपonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))जैसे लूज़र मैचिंग वाले टूल का इस्तेमाल करें. (I638b5)
वर्शन 1.9.0-rc01
30 जुलाई, 2025
androidx.compose.foundation:foundation-*:1.9.0-rc01 रिलीज़ हो गया है. वर्शन 1.9.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
TextFieldState.edit { }अब बदलावों को पहले जैसा करने के इतिहास को नहीं मिटाता. इसके बजाय, यह बदलाव को पहले जैसा करने के लिए एक अलग एंट्री बनाता है. अगर आपकोeditकॉल के बाद, अनडू स्टैक को मिटाना है, तो कृपयाTextFieldState.undoState.clearHistory()का इस्तेमाल करें. (I12c14)
वर्शन 1.9.0-beta03
16 जुलाई, 2025
androidx.compose.foundation:foundation-*:1.9.0-beta03 रिलीज़ हो गया है. वर्शन 1.9.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रिग्रेशन बग को ठीक किया गया है. इस बग की वजह से, हेडर का कॉन्टेंट खाली होने पर लेज़ी ग्रिड में स्टिकी हेडर ठीक से काम नहीं कर रहे थे. (e3e3400)
वर्शन 1.9.0-beta02
2 जुलाई, 2025
androidx.compose.foundation:foundation-*:1.9.0-beta02 रिलीज़ हो गया है. वर्शन 1.9.0-beta02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- संदर्भ मेन्यू और चुनने के टूलबार में स्मार्ट आइटम की सुविधा उपलब्ध है.
एपीआई में हुए बदलाव
- हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें कुछ हार्डवेयर कीबोर्ड या टीवी रिमोट, डायरेक्शनल बटन का इस्तेमाल करके नए
TextFieldsमें कर्सर को ले जाने में नाकाम रहते थे. इसके बजाय, वे फ़ोकस को किसी दूसरे कंपोज़ेबल पर स्विच कर देते थे.ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabledजोड़ा गया है, ताकि अगर इस फ़िक्स की वजह से कोई ऐसी समस्या होती है जिसे ठीक नहीं किया जा सकता, तो इसे कुछ समय के लिए बंद किया जा सके. (Ie1922)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें पिन किए गए आइटम के मौजूद होने पर, स्टिकी हेडर अपनी जगह पर नहीं टिकते थे. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedअब सिस्टम सेटिंग “TEXT_SHOW_PASSWORD” के हिसाब से काम करता है. (I41c0c)- उस बग को ठीक किया गया है जिसकी वजह से, टेक्स्ट टूलबार पहली बार खुलने पर
BasicTextFieldगलत तरीके से “क्लिपबोर्ड से चिपकाया गया” चेतावनी दिखाता था. (I5fda2)
वर्शन 1.9.0-beta01
18 जून, 2025
androidx.compose.foundation:foundation-*:1.9.0-beta01 रिलीज़ हो गया है. वर्शन 1.9.0-beta01 में ये बदलाव शामिल हैं.
नुकसान पहुंचा सकने वाले बदलाव
backgroundऔरborderमॉडिफ़ायर नोड अबSemanticsModifierNodeलागू करते हैं. इससे सिमैंटिक्स ट्री में नएSemanticsNodesजुड़ सकते हैं. इसलिए, सिमैंटिक्स ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट में, टेस्ट फ़ेल हो सकते हैं. उदाहरण के लिए, अगर मौजूदा और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है, तोonChild,onParent,onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट फ़ेल हो सकते हैं. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर परtestTagजोड़ें. एक और तरीका है कि आपonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))जैसे लूज़र मैचिंग वाले टूल का इस्तेमाल करें. (I638b5)
एपीआई में हुए बदलाव
Modifier.addTextContextMenuComponentsका नाम बदलकरappendTextContextMenuComponentsकरें. (I4c43f)AnnotatedOutputTransformationको हटा दिया गया है औरaddStyleफ़ंक्शन कोTextFieldBufferमें शामिल कर दिया गया है.addStyleको अब भी सिर्फ़OutputTransformationसे कॉल किया जा सकता है. (I9930a, b/417991824)- Clickable को फिर से लिखा गया है, ताकि ऑप्टिमाइज़ेशन के तौर पर suspend pointer input का इस्तेमाल न किया जा सके. यह सुविधा एक फ़्लैग से चालू होती है. अगर आपको नई सुविधा में कोई गड़बड़ी मिलती है, तो इसे बंद किया जा सकता है -
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65) - नेस्टेड स्क्रोलिंग में फ़्लिंग के फैलने से जुड़ी समस्या को ठीक करने के लिए,
isFlingCancellationWithNestedScrollFixEnabledको जोड़ा गया है. इस सीएल में, हम फ़्लिंग जारी रखने की सुविधा को वापस ला रहे हैं. इसे aosp/3260391 में हटा दिया गया था. अगर बच्चे को कंपोज़िशन से हटा दिया जाता है, तो हम फ़्लिंग ऐनिमेशन को अब भी रद्द कर देंगे. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers:rulersIgnoringVisibilityको ज़्यादा से ज़्यादा पर सेट किया गया.getDisplayCutoutBounds()कोPlacementScopeके एक्सटेंशन फ़ंक्शन के तौर पर बदला गया.WindowInsetsAnimationPropertiesको बदलकरWindowInsetsAnimationकर दिया गया है औरgetAnimationProperties()को बदलकरgetAnimation()कर दिया गया है. (I3816f)InsetsRulersकोWindowInsetsRulersनाम वाले सामान्य कोड में बदल दिया गया है. एपीआई को आसान बनाया गया है, ताकि सभी इनसेटWindowInsetsRulersहों. नियमों के हिसाब से न चलने वाली ऐनिमेशन प्रॉपर्टी कोAnimationPropertiesक्लास में एक्सट्रैक्ट किया गया.WindowInsetsRulers.innermostOf()का इस्तेमाल करके, कईWindowInsetsRulersको मर्ज किया जा सकता है. (I2f0c6, b/415012444)
गड़बड़ियां ठीक की गईं
ContentInViewNodeमेंscrollAnimationSpecका इस्तेमाल फिर से जोड़ें.scrollAnimationSpecबंद करने की प्रोसेस के दौरान, इस सुविधा को हटा दिया गया था. इस वजह से, इस्तेमाल के उदाहरण काम नहीं कर रहे हैं. (I1436a, b/403301605)
वर्शन 1.9.0-alpha04
4 जून, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha04 रिलीज़ हो गया है. वर्शन 1.9.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PrefetchSchedulerऔर पसंद के मुताबिक बनाने की सुविधा को बंद कर दिया गया है. इसके बजाय, इंटरनल तौर पर लागू की गई सुविधा का इस्तेमाल करें. यह सुविधा, सभी काम अपने-आप करती है. (I3a9a6, b/420551535)Scrollable2DStateको अपडेट किया गया है, ताकि ऐंगल के बजायcanScrollतरीके में ऑफ़सेट का इस्तेमाल किया जा सके. (I28694, b/417268474)AnnotatedOutputTransformationमें मौजूदaddAnnotationकोaddStyleसे बदला गया. (I91c6f, b/417991824)LazyLayoutको स्थिर किया गया. (If5db4)LazyLayoutPrefetchStateके लिए खाली कंस्ट्रक्टर को स्थिर किया गया है. साथ ही, इसकी शेड्यूलिंग के तरीकेschedulePrecompositionऔरschedulePrecompositionAndPremeasureको भी स्थिर किया गया है. (I4362f, b/252853717)ProcessTextKeyको Android पर लॉन्च किया गया है. इसका इस्तेमाल कॉन्टेक्स्ट मेन्यू आइटम के लिए किया जाता है. इसेPROCESS_TEXTइंटेंट ऐक्शन के लिए जोड़ा गया है. (If0ac4)- कॉन्टेक्स्ट मेन्यू एपीआई को सार्वजनिक करें. कॉन्टेक्स्ट मेन्यू में आइटम जोड़ने और हटाने के लिए,
Modifier.addTextContextMenuComponentsऔरModifier.filterTextContextMenuComponentsको दिखाया गया है. हमने इन बुनियादी एपीआई को भी सार्वजनिक कर दिया है, ताकि कोई भी व्यक्ति अपनी पसंद के मुताबिक कॉन्टेक्स्ट मेन्यू बना सके:TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
LazyLayoutItemProviderको स्टेबल बनाएं (Icce09, b/261565751)- Android में स्मार्ट तरीके से चुनने की सुविधा जोड़ी गई है. इसे
ComposeFoundationFlags.isSmartSelectionEnabledके ज़रिए चालू/बंद किया जा सकता है. यह एक स्टैटिकcompositionLocalLocalTextClassifierCoroutineContextको भी दिखाता है. इसका इस्तेमाल, उसCoroutineContextको तय करने के लिए किया जा सकता है जिसमेंTextClassificationजॉब लॉन्च की जाती है. (I1dbaa, b/139321320)
वर्शन 1.9.0-alpha03
20 मई, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha03 रिलीज़ हो गया है. वर्शन 1.9.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AnnotatedOutputTransformationजोड़ा गया है. इससे रेंडर करने से पहले,TextFieldमें एनोटेशन जोड़े जा सकते हैं. (Ibc6f0, b/389978748)LazyLayoutMeasurePolicyको लॉन्च करें औरLazyLayoutMeasureScopeको स्टेबल बनाएं. (I8c5df, b/252853717)BasicSecureTextFieldअब अपने इंटरनलBasicTextFieldके ScrollState को ऊपर ले जाता है. (I6e576)Modifier.onFirstVisibleऔरModifier.onVisibilityChangedमॉडिफ़ायर पेश किए गए. येModifier.onLayoutRectChangedके ऊपर बनाए गए हाई लेवल मॉडिफ़ायर हैं. इन मॉडिफ़ायर को खास तौर पर, ऐप्लिकेशन की कई सामान्य ज़रूरतों को पूरा करने के लिए बनाया गया है. जैसे, इंप्रेशन लॉग करना, वीडियो अपने-आप चलना वगैरह. इन्हें परफ़ॉर्मेंस को ध्यान में रखकर बनाया गया है, ताकि इनका इस्तेमाल लिस्ट पर आधारित ज़रूरी स्थितियों में किया जा सके. साथ ही, स्क्रोल करने की परफ़ॉर्मेंस पर कोई असर न पड़े. इन मॉडिफ़ायर एपीआई के अलावा,RelativeLayoutBoundsके लिए अतिरिक्त एपीआई जोड़े गए हैं, ताकि इन इस्तेमाल के उदाहरणों को सपोर्ट किया जा सके. साथ ही, डेवलपर के लिए ऐसे कस्टम मॉडिफ़ायर बनाना आसान हो सके जो उनके इस्तेमाल के उदाहरण के हिसाब से सही हों. (I759b8)detectDragGesturesओवरलोड की सुविधा जोड़ी गई है. इसमें टच स्लोप और स्क्रीन की दिशा लॉक कंट्रोल की सुविधा है. (Iadb0d)- स्टेट बनाने के लिए,
Modifier.scrollable2D,Scrollable2DState, और कंपैनियन एपीआई पेश किए गए. स्क्रोल करने के लिए, एक्सटेंशन के सामान्य फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040) - Compose में इस्तेमाल की गई 64-बिट कलर वैल्यू की तुलना सीधे तौर पर Android
ColorLongsसे नहीं की जा सकती. इसकी वजह यह है कि कुछ कलर स्पेस के लिए, कलर स्पेस आईडी क्रम में नहीं हैं. Android कलर स्पेस में बदलने और उससे वापस आने के लिए, दो नए एपीआई जोड़े गए हैं:toColorLong()औरfromColorLong(). (I36899)
गड़बड़ियां ठीक की गईं
- अब
SelectionContainerमें मौजूद एक से ज़्यादा टेक्स्ट कंपोज़ेबल से कॉपी किए गए टेक्स्ट के बीच, लाइन सेपरेटर\nजोड़ा जाएगा. (I25332, b/285036739)
वर्शन 1.9.0-alpha02
7 मई, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha02 रिलीज़ हो गया है. वर्शन 1.9.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragGestureNodeमें, पॉइंटर इनपुट में हुए बदलावों कोVelocityTrackerमें जोड़ने के तरीके को ठीक किया गया है. इसे नए फ़्लैगisOffsetPositionBeforeAddingToVelocityTrackerEnabledसे कंट्रोल किया जा सकता है. (Ic7992, b/292556787, b/236451818)await[Vertical/Horizontal]PointerSlopOrCancellationको सार्वजनिक के तौर पर सेट करें (I6968b, b/298903681)AbstractComposeView.consumeWindowInsetsअब डिफ़ॉल्ट रूप से गलत पर सेट होता है. इसे 'गलत है' पर सेट करने पर,WindowInsetsको बच्चे के साइज़ और पोज़िशन के हिसाब से अपने-आप अडजस्ट कर दिया जाएगा. इसलिए, अब इसे डिफ़ॉल्ट रूप से 'सही है' पर सेट करने की ज़रूरत नहीं है. इस अपडेट से, उस समस्या को ठीक किया गया है जिसमें चाइल्ड व्यू को डिफ़ॉल्ट रूप सेWindowInsetsअपडेट नहीं मिल रहे थे. डेवलपर, एक्सपेरिमेंटलComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledको true पर सेट करके या बेहतर होगा कि वे Compose व्यू की सभी इंस्टेंस परAbstractComposeView.consumeWindowInsetsको true पर सेट करके, अपडेट से ऑप्ट आउट कर सकते हैं. (I6fa0a, b/411868840)
बाहरी योगदान
- beyondViewportPageCount की बहुत बड़ी वैल्यू के साथ Pager क्रैश होने की समस्या ठीक की गई (Idb2db)
वर्शन 1.9.0-alpha01
23 अप्रैल, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha01 रिलीज़ हो गया है. वर्शन 1.9.0-alpha01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन होना ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.propertiesमेंandroid.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए फ़ंक्शन, अब सिर्फ़IndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. ये इंस्टेंस,LocalIndicationका इस्तेमाल करके उपलब्ध कराए जाते हैं. यह बदलाव तब लागू होगा, जब Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल किया जाएगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर कोई असर नहीं पड़ता. अगरLocalIndicationको, हटाए गए इंडिकेशन को लागू करने की सुविधा दी जा रही है और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान क्रैश की समस्या आएगी. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन, रीकंपोज़िशन के दौरान स्किप कर सकेंगे. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे माइग्रेशन के दौरान ब्लॉक किए बिना, Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन लागू करने के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333)
एपीआई में हुए बदलाव
AnnotatedString(I1d066, b/383269496, b/139326648) के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गया- कंपोज़ की सुविधा को
ViewTreeObserver.OnScrollChangedट्रिगर करने की अनुमति दें. इस सुविधा कोisOnScrollChangedCallbackEnabledफ़्लैग के तहत लॉन्च किया गया है. हमनेDelegatableNode dispatchOnScrollChangedका एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286) - Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट का इस्तेमाल करने के लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है (Idb6b5)
- यह पक्का करने के लिए कि कंपोज़िशन के अंदर
TextFieldStateको याद रखा जाए, इसके लिए लिंट चेक की सुविधा जोड़ी गई. इसके बजाय,rememberTextFieldStateका इस्तेमाल करें. (I53d74) FocusRequesterके लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन (I6bf91) में याद रखा गया है- यह पक्का करने के लिए कि कंपोज़िशन के अंदर
BringIntoViewRequesterको याद रखा जाए, इसके लिए लिंट चेक की सुविधा जोड़ी गई. (Ibfba6) - ग्रिड और सूचियों की रणनीतियों में
schedulePrefetchकॉल के लिए स्कोप जोड़े गए हैं, ताकि साइज़ और इंडेक्स की जानकारी देने कीschedulePrefetchकी क्षमताओं के साथ अलाइन किया जा सके. (Iad80c)LazyListPrefetchState - बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए फ़ंक्शन, अब सिर्फ़IndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. ये इंस्टेंस,LocalIndicationका इस्तेमाल करके उपलब्ध कराए जाते हैं. यह बदलाव तब लागू होगा, जब Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल किया जाएगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर कोई असर नहीं पड़ता. अगरLocalIndicationको, हटाए गए इंडिकेशन को लागू करने की सुविधा दी जा रही है और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान क्रैश की समस्या आएगी. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन, रीकंपोज़िशन के दौरान स्किप कर सकेंगे. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे माइग्रेशन के दौरान ब्लॉक किए बिना, Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन लागू करने के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजह से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333) - नेस्ट किए गए प्रीफ़ेच के अपने-आप होने वाले व्यवहार को कंट्रोल करने के लिए, एक फ़्लैग जोड़ा गया है:
isAutomaticNestedPrefetchEnabled(I8d448) LazyGridStateऔरrememberLazyGridStateके लिए,LazyLayoutCacheWindowलेने वाला एक ओवरलोड फ़ंक्शन बनाएं. (I51151)- विंडो इंसर्ट के लिए रूलर जोड़ता है.
DerivedRulerको जोड़ता है, ताकि किसी दूसरे रूलर से रूलर की गिनती की जा सके. डेंसिटी लागू करने के लिए,PlacmentScopeमें बदलाव करता है. (I658bc, b/359260964) - आसानी से खाली
WindowInsets()बनाने के लिए, शून्य आर्ग्युमेंट वालाWindowInsets()फ़ैक्ट्री फ़ंक्शन जोड़ा गया.WindowInsets(I65f62, b/395311689) - खाली
PaddingValuesके लिएPaddingValues.Zeroजोड़ा गया. (If193e, b/386255688)
गड़बड़ियां ठीक की गईं
stateकेBasicTextFieldपर ज़्यादा लोड होने की वजह से, कर्सर का साइज़ बदलने पर भी वह दिखता रहेगा. (I0eb41, b/406187741)- शुरुआती स्थिति के बारे में बताने के लिए,
LazyListPrefetchStrategyऔरLazyGridPrefetchStrategyमेंonVisibleItemsUpdatedएपीआई अपडेट किए गए. (If2cfa)
वर्शन 1.8
वर्शन 1.8.3
18 जून, 2025
androidx.compose.foundation:foundation-*:1.8.3 रिलीज़ हो गया है. वर्शन 1.8.3 में ये बदलाव शामिल हैं.
वर्शन 1.8.2
20 मई, 2025
androidx.compose.foundation:foundation-*:1.8.2 रिलीज़ हो गया है. वर्शन 1.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसा फ़िक्स लागू किया है जिससे फ़ोकस सर्च के लिए लोड किए जाने वाले आइटम की संख्या का हिसाब लगाने पर, शून्य से भाग देने की समस्या नहीं होगी.
LazyLayoutBeyondBoundsStateका इस्तेमाल करने वाले सभी लेआउट पर जांच लागू की गई है. (8e6dc8)
वर्शन 1.8.1
7 मई, 2025
androidx.compose.foundation:foundation-*:1.8.1 रिलीज़ हो गया है. वर्शन 1.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BasicTextऔरTextAutoSizeमें मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से,TextOverflow.Ellipsizeका इस्तेमाल करने पर टेक्स्ट, ज़रूरत से ज़्यादा छोटा हो जाता था. (I1e1d8, b/396582066)BasicTextFieldमें मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,TextFieldDecoratorकेinnerTextFieldको कॉल न करने पर, ऐप्लिकेशन क्रैश हो जाता था. (I2638c), b/308398612TextFieldमें मौजूद एक बग को ठीक किया गया है. इस बग की वजह से,TextFieldStateइंस्टेंस बदलने पर टेक्स्ट टूलबार और सिलेक्शन हैंडल पूरी तरह से गायब हो जाते थे. (I8068a), b/390477786BasicTextमें मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, चौड़ाई की कम से कम सीमा बदलने पर, टेक्स्ट की जगह अपडेट नहीं होती थी. ऐसा तब होता था, जबtextAlignको डिफ़ॉल्ट वैल्यू के अलावा किसी दूसरी वैल्यू पर सेट किया जाता था. (I77a96), b/406305552
वर्शन 1.8.0
23 अप्रैल, 2025
androidx.compose.foundation:foundation-*:1.8.0 रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc03
9 अप्रैल, 2025
androidx.compose.foundation:foundation-*:1.8.0-rc03 रिलीज़ हो गया है. वर्शन 1.8.0-rc03 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc02
26 मार्च, 2025
androidx.compose.foundation:foundation-*:1.8.0-rc02 रिलीज़ हो गया है. वर्शन 1.8.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc01
12 मार्च, 2025
androidx.compose.foundation:foundation-*:1.8.0-rc01 रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-beta03
26 फ़रवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta03 रिलीज़ हो गया है. वर्शन 1.8.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नई सिमैंटिक्स प्रॉपर्टी
InputTextजोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले, टेक्स्ट फ़ील्ड की वैल्यू कैप्चर करती है. (Iae46a, b/395911609, b/176949051) - काम न करने वाले
AutoSizeओवरलोड हटा दिए गए हैं. कृपया एक ही फ़ंक्शन के लिए काम करने वालेTextAutoSizeएपीआई का इस्तेमाल करें. (I2c90f) TextAutoSizeमें कैश मेमोरी से जुड़ी समस्या को ठीक किया गया है. इसमें एक ही तरह की सीमाओं के साथ लेआउट पास करने पर, सबसे बड़े फ़ॉन्ट साइज़ के बजाय दूसरे सबसे बड़े फ़ॉन्ट साइज़ का इस्तेमाल किया जा सकता था. (Id367f)
वर्शन 1.8.0-beta02
12 फ़रवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta02 रिलीज़ हो गया है. वर्शन 1.8.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें
LayoutModifierNodeका इस्तेमाल करके ओवरस्क्रोल लागू करने पर, स्क्रोल करने वाले कंटेनर में ठीक से काम नहीं करता था.
वर्शन 1.8.0-beta01
29 जनवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-beta01 रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SemanticsNodeInteraction.semanticsId()को हटा दिया गया है. इसके बजाय,SemanticsNodeInteraction.fetchSemanticsNode().idका इस्तेमाल करें. (Ie397a)requestAutofillएपीआई को फिर से लिखें, ताकि वह ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल के बाहर काम कर सके. (Id1929)ContextualFlowRowऔरContextualFlowColumnको बंद किए गए वर्शन के तौर पर मार्क किया गया है. इस एक्सपेरिमेंट वाले कॉम्पोनेंट को 1.7 वर्शन में पेश किया गया था. यह अभी तक स्थिर नहीं हुआ है. साथ ही, इसे लागू करना सही नहीं माना गया है. आने वाले समय में, इस कॉम्पोनेंट के इस्तेमाल के उदाहरणों को हल करने वाला कॉम्पोनेंट उपलब्ध कराया जा सकता है.FlowRowऔरFlowColumnमें एक्सपेरिमेंटल ओवरलोड होते हैं. इन्हें 1.7 में पेश किया गया था. इनमेंoverflowपैरामीटर शामिल होता है. इस पैरामीटर के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, इस पैरामीटर के बिना ओवरलोड का इस्तेमाल किया जा सकता है. इन ओवरलोड के लिए, "overflow" का डिफ़ॉल्ट व्यवहार "Clip" होगा. यह सुविधा शुरू होने के बाद से ऐसा ही है.ContextualFlowRowके कई इस्तेमाल के मामलों कोFlowRowका इस्तेमाल करके पूरा किया जा सकता है. हालांकि, हम मानते हैं कि यह पूरी तरह से सही नहीं है.ContextualFlowRowको पूरी तरह से उपयोगकर्ता-स्पेस में लागू किया जा सकता है. साथ ही, कोई भी व्यक्ति इसके लागू करने के तरीके को कॉपी कर सकता है और अपनी ज़रूरत के हिसाब से इसे बदल सकता है. हमें उम्मीद है कि आने वाले समय में, हम इन इस्तेमाल के उदाहरणों को अलग तरीके से हल कर पाएंगे. (Ibafec)
गड़बड़ियां ठीक की गईं
- टेक्स्ट लेआउट से जुड़ी समस्या ठीक की गई. ऐनिमेशन के दौरान, एलिप्सिस का इस्तेमाल करके टेक्स्ट को छोटा करने पर, कभी-कभी उसका गलत अनुवाद हो जाता था. ज़्यादा जानकारी के लिए, b/389707025 देखें (Ie55b1, b/389707025)
BasicTextमें मौजूद एक गड़बड़ी को ठीक किया गया है. यह गड़बड़ी तब होती थी, जबTextAutoSizeऔरmaxLinesको 1 पर सेट किया जाता था. (Ic0450, b/376834366)- टेक्स्ट की कम से कम इंट्रिंसिक ऊंचाई के लिए, अब
minLinesपैरामीटर को ध्यान में रखा जाता है. इसका मतलब है कि रिपोर्ट की गई कम से कम इंट्रिंसिक ऊंचाई,minLinesपैरामीटर (I225f9, b/388299762) की ज़रूरी ऊंचाई से कम नहीं होगी
वर्शन 1.8.0-alpha08
15 जनवरी, 2025
androidx.compose.foundation:foundation-*:1.8.0-alpha08 रिलीज़ हो गया है. वर्शन 1.8.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- AutoSize:
AutoSizeका नाम बदलकरTextAutoSizeकर दिया गया है. साथ ही, कस्टमTextAutoSizeलागू करने की सुविधा देने वाले एपीआई पब्लिश किए गए हैं. कस्टम टेक्स्ट के अपने-आप अडजस्ट होने वाले साइज़ को लागू करने के उदाहरण के लिए,TextAutoSizeSampleदेखें. (I85756) DetectTapGesturesEnableNewDispatchingBehaviorफ़ीचर फ़्लैग कोComposeFoundationFlagsमें ले जाया गया है और इसका नाम बदलकरisDetectTapGesturesImmediateCoroutineDispatchEnabledकर दिया गया है. पुराने फ़्लैग के इस्तेमाल पर रोक लगा दी गई है. अब यहComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabledको डेलिगेट करेगा. (I62932)
गड़बड़ियां ठीक की गईं
- यह सुविधा
DetectTapGesturesEnableNewDispatchingBehaviorडिफ़ॉल्ट रूप से चालू होती है.TapGestureDetectorएपीआई अब डिफ़ॉल्ट रूप से, इवेंट की जानकारी भेजने के नए तरीके (तुरंत भेजना) का इस्तेमाल करते हैं. (I9f2bc, b/369648479) - इंट्रिंसिक साइज़ को सही तरीके से हैंडल करने के लिए,
requiredWidth/Height/Sizeमॉडिफ़ायर ठीक किए गए. (Ie3d7d, b/368113212)
बाहरी योगदान
- इसे फ़ाउंडेशन में
BasicTooltipऔर Material 3 मेंBasicTooltip/Tooltipके तौर पर इस्तेमाल किया जाता है. (Ifc2e6) - नया क्लिपबोर्ड इंटरफ़ेस और उसके लिए कंपोज़िशन लोकल जोड़ा गया. (I80809)
वर्शन 1.8.0-alpha07
11 दिसंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha07 रिलीज़ हो गया है. वर्शन 1.8.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- मिटाया गया
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledफ़्लैग, जिसकी मदद सेBasicTextसे इंटरनलgraphicsLayerको हटाने की कार्रवाई को पहले जैसा किया जा सकता था. अगर आपने इस फ़्लैग का इस्तेमाल किया था, तो कृपया हमें इसकी वजह बताएं. इसके लिए, गड़बड़ी की जानकारी दें. इसके अलावा, पहले की तरह ही काम करने के लिए,BasicTextकॉल में सिर्फ़Modifier.graphicsLayer()पास किया जा सकता है. (Id9f90) - नए
stickyHeaderडीएसएल के लिए, डिफ़ॉल्ट तौर पर लागू होने वाली सुविधा जोड़ी गई है. (I68986) LocalAutofillHighlightColorकंपोज़िशन में, स्थानीय तौर पर इस्तेमाल किए जाने वाले कलर टाइप का इस्तेमाल किया जाता है. (I0e05b)OverscrollEffect#withoutDrawingका नाम बदलकरOverscrollEffect#withoutVisualEffectकर दिया गया. (I1a154)
गड़बड़ियां ठीक की गईं
AnchoredDraggableके टारगेट कैलकुलेशन में हुई समस्या को ठीक किया गया है. इस समस्या की वजह से, कुछ स्वाइप के लिए गलत ऐंकर सेट हो सकता था. (I23b87, b/367660226)
बाहरी योगदान
- यूज़र इंटरफ़ेस (यूआई) में
BringIntoViewResponderModifierNodeजोड़ें. इससे, 'व्यू में लाएं' सुविधा को लागू करने का नया तरीका मिलता है. साथ ही, इसे प्लैटफ़ॉर्म लेवल (Ia6dd8) पर लागू किया जा सकता है - हम कर्सर को दिखाने के तरीके में लगातार थोड़ा-बहुत बदलाव करते रहते हैं. टेस्ट में कर्सर ड्राइंग की सुविधा बंद करने के लिए,
LocalCursorBlinkEnabledका इस्तेमाल किया जा सकता है. (I4c697)
वर्शन 1.8.0-alpha06
13 नवंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06 रिलीज़ हो गया है. वर्शन 1.8.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
stylusHoverIconमॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)- अब काम न करने वाले
AnchoredDraggableStateकेconfirmValueChange. स्टेट में होने वाले बदलावों को रोकने के बजाय, अनुमति न दी गई ऐंकर को चालू ऐंकर सेट में नहीं होना चाहिए. साथ ही, अनुरोध की गई कार्रवाई के उपलब्ध न होने की जानकारी देने के लिए,OverscrollEffectका इस्तेमाल किया जाना चाहिए. (Ia717f) - यह एनोटेशन, Autofill manager को इंटरफ़ेस में बदल देता है. (I84914, b/376080755)
OverscrollEffect#withoutDrawingऔरOverscrollEffect#withoutEventHandlingएपीआई जोड़े गए हैं. ये एपीआई, दिए गए ओवरस्क्रॉल इफ़ेक्ट का रैप्ड इंस्टेंस बनाते हैं. यह इंस्टेंस, इवेंट को न तो ड्रॉ करता है और न ही हैंडल करता है. इससे, इवेंट भेजने वाले कॉम्पोनेंट से अलग कॉम्पोनेंट में ओवरस्क्रॉल को रेंडर किया जा सकता है. उदाहरण के लिए, लेज़ी लिस्ट में ओवरस्क्रोल करने की सुविधा बंद करना. इसके बाद, ओवरस्क्रोल को अलग से सबसे ऊपर या कहीं और दिखाना. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)- टेक्स्ट टूलबार में अपने-आप भरने की सुविधा जोड़ी गई है. (Ie6a4c)
- यह
OverscrollConfigurationऔरLocalOverscrollConfigurationको बंद कर देता है. साथ ही, डिफ़ॉल्ट ओवरस्क्रोल लागू करने के पैरामीटर का इंस्टेंस बनाने या उन्हें पसंद के मुताबिक बनाने के लिए,rememberPlatformOverscrollFactoryको जोड़ता है. ओवरस्क्रोल की सुविधा बंद करने के लिए,LocalOverscrollConfiguration provides nullके बजायLocalOverscrollFactory provides nullका इस्तेमाल करें. ग्लो का रंग / पैडिंग बदलने के लिए,LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)के बजायLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516) OverscrollEffectपर मौजूदeffectModifierप्रॉपर्टी को बदलकरnode: DelegatableNodeकर दिया गया है, ताकि यह अन्य एपीआई के साथ काम कर सके. (Ic0b46, b/255554340)- एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertionsएपीआई को हटा दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय,enableAccessibilityChecks()का इस्तेमाल करें. (I59322)
वर्शन 1.8.0-alpha05
30 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05 रिलीज़ हो गया है. वर्शन 1.8.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टेक्स्ट के साइज़ को अपने-आप अडजस्ट होने की सुविधा. अपने पसंदीदा टेक्स्ट कंपोज़ेबल (जैसे कि
BasicText) कोAutoSizeइंस्टेंस (जैसे किAutoSize.StepBased) पास करें. इसके बाद, देखें कि टेक्स्ट का साइज़ उपलब्ध जगह के हिसाब से अपने-आप अडजस्ट हो जाता है! (Ice7e0, b/139320827) - यह
OverscrollFactoryऔरLocalOverscrollFactoryएपीआई जोड़ता है, ताकि किसी क्रम में ओवरस्क्रॉल को कॉन्फ़िगर किया जा सके.OverscrollEffectबनाने के लिए, डिफ़ॉल्ट रूप सेLocalOverscrollFactoryएट्रिब्यूट के ज़रिए दी गई वैल्यू का इस्तेमाल किया जाएगा. मौजूदा फ़ैक्ट्री से इफ़ेक्ट बनाने और उसे सेव करने के लिए,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) - उस बग को ठीक किया गया है जिसकी वजह से,
OverscrollEffectsसेModifier.anchoredDraggableको पास किए गए डेटा को 1D के बजाय 2D डेल्टा मिलते थे. (Ie52c0)
वर्शन 1.8.0-alpha03
2 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03 रिलीज़ हो गया है. वर्शन 1.8.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin का वर्शन 1.9 (I1a14c) पर अपडेट किया गया
- फ़्लैग
DraggableAddDownEventFixEnabled(I848d5) जोड़ा गया - सुलभता सेवाओं के लिए, पेजर्स में सूची के व्यवहार को दोहराने के लिए, नई सिमैंटिक्स भूमिका, कैरसेल पेश की गई है. (Id354b, b/354109776, b/239672673)
BasicTextकंपोज़ेबल से, इंप्लिसिटgraphicsLayerमॉडिफ़ायर को हटाया गया. एक्सपेरिमेंट के तौर परComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledफ़्लैग जोड़ा गया है, ताकि पुराने वर्शन पर वापस जाया जा सके. (Ie478d)- हमने
Modifier.recalculateWindowInsets()जोड़ा है, ताकि पैरंट ग्रुप में शामिल बच्चेinsetsPaddingका इस्तेमाल कर सकें. भले ही, माता-पिता ने उन्हेंconsumeWindowInsets()के बिना अलाइन किया हो. (I7f9e4)
गड़बड़ियां ठीक की गईं
detectDragGestures, ड्रैग किए जा सकने वाले आइटम, और स्क्रोल किए जा सकने वाले आइटम में, जेस्चर पिक-अप की सुविधा लागू करें. अब अगर कोई बच्चा ड्रैग करने की सुविधा का इस्तेमाल नहीं करता है, तो अभिभावक के पास उसे चुनने का विकल्प होता है. इससे, जेस्चर को लगातार और इंटिग्रेट करके हैंडल किया जा सकता है. (Ic88fe)- स्क्रोल किए जा सकने वाले कॉम्पोनेंट में, फ़्लिंग को रद्द करने के तरीके को अपडेट किया गया. अब अगर स्क्रोल किए जा सकने वाले किसी आइटम को तेज़ी से ऊपर या नीचे की ओर स्वाइप किया जाता है और वह अपनी सीमा तक पहुंच जाता है, तो वह फ़्लिंग की स्पीड को चेन में मौजूद अगले स्क्रोल किए जा सकने वाले आइटम को सही तरीके से पास कर देगा. ऐसा करने के बजाय, वह फ़्लिंग को जारी नहीं रखेगा. (I9326a)
वर्शन 1.8.0-alpha02
18 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02 रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TextOverflow.StartEllipsisऔरTextOverflow.MiddleEllipsisअब उपलब्ध हैं. इनकी मदद से, एक लाइन वाले टेक्स्ट (I38913, b/185418980) की लाइन की शुरुआत या बीच में एलिप्सिस रखा जा सकता है
वर्शन 1.8.0-alpha01
4 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01 रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 1.7
वर्शन 1.7.8
12 फ़रवरी, 2025
androidx.compose.foundation:foundation-*:1.7.8 रिलीज़ हो गया है. वर्शन 1.7.8 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- चिपकाए गए टेक्स्ट के किसी हिस्से को बदलते समय, इनपुट ट्रांसफ़ॉर्मेशन की वजह से
BasicTextFieldमें क्रैश होने की समस्या ठीक की गई. (I73702)
वर्शन 1.7.7
29 जनवरी, 2025
androidx.compose.foundation:foundation-*:1.7.7 रिलीज़ हो गया है. वर्शन 1.7.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लिंक एनोटेशन के साथ
IndexOutOfBoundक्रैश होने की समस्या ठीक की गई. (Ic96d2) - लिंक के साथ कुछ खास मामलों में, बार-बार रेंडर होने की समस्या को ठीक किया गया है. (I04a03)
पहले से मालूम गड़बड़ियां
- एक बग का पता चला है. इससे Android API लेवल 35 पर, कुछ मामलों में टेक्स्ट अपने-आप रैप हो सकता है. इसे 1.7 में ठीक नहीं किया जा सकता. इसलिए, इसे 1.8 में ठीक किया जाएगा. (b/391378120)
वर्शन 1.7.6
11 दिसंबर, 2024
androidx.compose.foundation:foundation-*:1.7.6 रिलीज़ हो गया है. वर्शन 1.7.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इनलाइन कॉन्टेंट के तौर पर जोड़े गए टेक्स्ट को सुलभता सेवाओं के लिए उपलब्ध न होने की समस्या ठीक की गई.
- उस समस्या को ठीक किया गया है जिसकी वजह से लेज़ी लिस्ट में फिर से इस्तेमाल करने पर,
AndroidEmbeddedExternalSurfaceठीक से रीसेट नहीं होता था और अटक जाता था.
वर्शन 1.7.5
30 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.5 रिलीज़ हो गया है. वर्शन 1.7.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पक्का करें कि पिन किए गए आइटम, कॉन्टेंट पैडिंग एरिया में दो बार शामिल न किए गए हों. (Ic6224)
वर्शन 1.7.4
16 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.4 रिलीज़ हो गया है. वर्शन 1.7.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट फ़ील्ड में कभी-कभी क्रैश होने की समस्या को ठीक किया गया है. (I475c6, b/313010266)
- लेज़ी लेआउट आइटम के रूट से
ReusableContentHostको हटाया गया. “मेज़रमेंट को बंद किए गए नोड पर कॉल किया गया” क्रैश की मुख्य वजह यही थी. (Id6e60)
वर्शन 1.7.3
2 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.3 रिलीज़ हो गया है. वर्शन 1.7.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब minLines को गैर-डिफ़ॉल्ट वैल्यू पर सेट किया जाता है, तब
BasicTextमें मेमोरी लीक होने की समस्या ठीक कर दी गई है.
वर्शन 1.7.2
18 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.7.2 रिलीज़ हो गया है. वर्शन 1.7.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- खींचने और छोड़ने लायक एलिमेंट से जुड़ी समस्या ठीक की गई है. इसमें डाउन इवेंट मौजूद नहीं थे. इस वजह से, फ़्लिंग सामान्य से धीमी दिखती थी.
वर्शन 1.7.1
10 सितंबर, 2024
- Android आर्टफ़ैक्ट में कोई बदलाव नहीं किया गया है.
-desktopआर्टफ़ैक्ट हटा दिए गए हैं. साथ ही,-jvmStubsऔर-linuxx64Stubsआर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना है. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके.
वर्शन 1.7.0
4 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.7.0 रिलीज़ हो गया है. वर्शन 1.7.0 में ये बदलाव शामिल हैं.
1.6.0 के बाद हुए ज़रूरी बदलाव
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollable, औरModifier.draggableकी परफ़ॉर्मेंस में काफ़ी सुधार किया गया है. इस कोशिश के तहत, इंटरनल बदलावों के साथ-साथ एपीआई में ये बदलाव किए गए हैं- नया Indication API,
IndicationNodeFactoryजोड़ा गया. इससे,rememberUpdatedInstanceएपीआई (अब बंद हो चुका है) की तुलना में, इंडिकेशन को बेहतर तरीके से लागू किया जा सकता है. डेटा को दूसरी जगह भेजने से जुड़ी जानकारी के लिए, developer.android.com पर जाएं. clickable/combinedClickable/selectable/toggleableअब शून्य हो सकने वालेMutableInteractionSourceपैरामीटर को स्वीकार करता है. अगर यह वैल्यू शून्य है और दी गई इंडिकेशन वैल्यूIndicationNodeFactoryहै, तो इंडिकेशन वैल्यू को सिर्फ़ ज़रूरत पड़ने पर बनाया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर आपनेMutableInteractionSourceको होस्ट नहीं किया है और इसका इस्तेमाल नहीं किया जा रहा है, तो हमारा सुझाव है किremember { MutableInteractionSource() }पास करने के बजाय, शून्य पास करें.Indication#rememberUpdatedInstanceका अब इस्तेमाल नहीं किया जा सकता. इससे परफ़ॉर्मेंस पर काफ़ी बुरा असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नएIndicationNodeFactoryएपीआई का इस्तेमाल करना चाहिए.
- नया Indication API,
BasicTextFieldका इस्तेमाल अब स्थिर हो गया है. हमारा सुझाव है कि सभी कॉल-साइट,BasicTextField(value, onValueChange)सेBasicTextField(TextFieldState)पर माइग्रेट करना शुरू करें.TextFieldStateClickableTextका अब इस्तेमाल नहीं किया जा सकता. अपने टेक्स्ट में क्लिक किए जा सकने वाले लिंक जोड़ने के लिए,AnnotatedStringमें नएLinkAnnotationएनोटेशन के साथBasicTextका इस्तेमाल करें.LinkAnnotationकी मदद से, लिंक की स्थिति (जैसे, फ़ोकस किया गया, कर्सर घुमाया गया) के आधार पर कस्टम स्टाइलिंग की जा सकती है.- पेश है
MaxLinesऔरOverflowके साथContextualFlowRowऔरEnhanced FlowRow/Column. हमें यह बताते हुए खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्धFlowRowऔरFlowColumnको बेहतर बनाया गया है. अब इनमेंmaxLinesऔर ओवरफ़्लो सपोर्ट की सुविधा भी उपलब्ध है. साथ ही,ContextualFlowRowऔरContextualFlowColumnको पहली बार लॉन्च किया गया है. इस अपडेट को परफ़ॉर्मेंस के हिसाब से सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*उन आइटम के लिए सबसे सही है जिनकी संख्या ज़्यादा है और जो maxLines कॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल करते हैं. वहीं,FlowRowऔरFlowColumnउन आइटम के लिए सबसे सही है जिनकी संख्या कम है. जैसे, 100 से कम आइटम. अहम जानकारी:FlowRowयाFlowColumnमें मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, वहां इनिशियलाइज़ेशन के दौरान ओवरफ़्लो कोFlowRowOverflow.VisibleयाFlowColumnOverflow.Visibleपर सेट करें. इन नई सुविधाओं के काम करने के उदाहरण देखने के लिए,ContextualFlowRowSampleऔरFlowRowSampleपर जाएं. (Ib9135, b/293577082) LazyColumnऔरLazyRowमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (रीऑर्डरिंग) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (धीरे-धीरे दिखना), गायब होना (धीरे-धीरे गायब होना), और क्रम बदलना. (I2d7f7, b/150812265)- Compose के स्क्रोल कंटेनर में लंबी स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback) का इस्तेमाल किया गया है. NestedScrollसोर्स को खींचकर छोड़ना और सोर्स को फ़्लिंग करना, अबUserInputऔरSideEffectसे बदल दिया गया है. ऐसा इसलिए किया गया है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं.LazyLayoutप्रीफ़ेच अनुरोधों को अब 'ज़रूरी' के तौर पर मार्क किया जा सकता है. इसका मतलब है कि हमें उम्मीद है कि अगले फ़्रेम में इस आइटम की ज़रूरत होगी. साथ ही, हम फ़्रेम बजट को अनदेखा करना चाहते हैं, ताकि यह पक्का किया जा सके कि ज़्यादा काम पहले से ही हो जाए (Id513f)- Android U के बाद वाले वर्शन पर काम करने वाले डिवाइसों पर, स्टाइलस से लिखने की सुविधा जोड़ी गई है. (I002e4)
- कई एपीआई को स्टेबल वर्शन में अपग्रेड किया गया है
- पेजर, स्नैपिंग, विंडो इंसर्ट
वर्शन 1.7.0-rc01
21 अगस्त, 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐसी रिग्रेशन समस्या को ठीक किया गया है जिसमें फ़ोकस किए जा सकने वाले (या क्लिक किए जा सकने वाले) और बंद किए गए पैरंट एलिमेंट के अंदर किसी एलिमेंट पर फ़ोकस करने पर क्रैश होता था. (b/317561689)
वर्शन 1.7.0-beta07
7 अगस्त, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07 रिलीज़ हो गया है. वर्शन 1.7.0-beta07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट इनपुट से जुड़े
SemanticsNodeInteractionफ़ंक्शनperformTextReplacement,performTextInput, औरperformTextClearanceअब सिर्फ़ पढ़ने के लिए उपलब्धTextFieldsपर कॉल किए जाने पर, पुष्टि से जुड़ी गड़बड़ियां दिखाएंगे. (I4ae8f) - हाइपरलिंक में दिखने वाली गड़बड़ी को ठीक किया गया है. (I23311)
- कुछ आईएमई के साथ
contentReceiverमॉडिफ़ायर के काम न करने की समस्या ठीक की गई. - वेलोसिटी जनरेशन: Compose UI और Foundation में NaN वैल्यू के प्रसार को रोकें.
वर्शन 1.7.0-beta06
24 जुलाई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06 रिलीज़ हो गया है. वर्शन 1.7.0-beta06 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta05
10 जुलाई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05 रिलीज़ हो गया है. वर्शन 1.7.0-beta05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SnapFlingBehaviorऔर Pager में Nan वैल्यू को ठीक किया गया.
वर्शन 1.7.0-beta04
26 जून, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04 रिलीज़ हो गया है. वर्शन 1.7.0-beta04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बहुत बड़ी टेक्स्ट लाइनों (जैसे, 10 हज़ार वर्ण) को मेज़र करते समय क्रैश होने की समस्या ठीक की गई (8157ab)
- बहुत बड़े टेक्स्ट को मेज़र करने की समस्या ठीक की गई है. इसकी वजह से, नए
BasicTextFieldमें क्रैश हो रहा था (6b7575) - यह अपडेट, लाइन/कॉलम मेज़रमेंट में हुए उस बदलाव को पहले जैसा कर देता है जिसकी वजह से कुछ मामलों में टेक्स्ट का इस्तेमाल नहीं किया जा सकता था (69e8ba)
वर्शन 1.7.0-beta03
12 जून, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03 रिलीज़ हो गया है. वर्शन 1.7.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta02
29 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02 रिलीज़ हो गया है. वर्शन 1.7.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह
LazyGridsके प्रीफ़ेच करने के तरीके को कॉन्फ़िगर करने के लिए, एक एक्सपेरिमेंटल एपीआई जोड़ता है. यहLazyListsके लिए मौजूदा एक्सपेरिमेंटल एपीआई की तरह ही काम करता है. इसमें नेस्ट किए गएLazyGridsमें आइटम को पहले से फ़ेच करने की सुविधा भी शामिल है.LazyListPrefetchStrategyकी तरह ही, लागू करने के लिए डिफ़ॉल्ट तौर पर हर ग्रिड के पहले दो नेस्ट किए गए आइटम को प्रीफ़ेच किया जाता है. हालांकि, इसे नएLazyGridPrefetchStrategy(nestedPrefetchItemCount)औरLazyListPrefetchStrategy#onNestedPrefetchएपीआई से कॉन्फ़िगर किया जा सकता है. (I591c4) SemanticsProperties.Editableका नाम बदलकरIsEditableकिया गया है औरSemanticsPropertyReceiver.editableकोisEditableवैल्यू में बदल दिया गया है. यह प्रॉपर्टी अब बूलियन है और इसे हमेशा टेक्स्ट फ़ील्ड के ज़रिए तय किया जाता है. (I8acd8)basicMarqueeकी डिफ़ॉल्ट वैल्यू कोMarqueeDefaultsऑब्जेक्ट में ले जाया गया. (I12ff6)basicMarqueedelayMillisपैरामीटर का नाम बदलकरrepeatDelayMillisकर दिया गया है. (I12ff6)- लिंक को स्टाइल करने के लिए एपीआई अपडेट किया गया:
TextLinkStylesकोTextStyleमें ले जाया गया औरTextDefaultsको मटीरियल से हटा दिया गया (I5477b)
गड़बड़ियां ठीक की गईं
- इसके मकसद को बेहतर तरीके से दिखाने के लिए,
LayoutCoordinates.introducesFrameOfReferenceका नाम बदलकरLayoutCoordinates.introducesMotionFrameOfReferenceकर दिया गया है. उस फ़्लैग के आधार पर कोऑर्डिनेट का हिसाब लगाने के लिए, मिलते-जुलते फ़ंक्शन का नाम बदला गया. (I3a330) MarqueeDefaultsप्रॉपर्टी से 'डिफ़ॉल्ट' हटाया गया. (I1d8a0)MarqueeDefaultsप्रॉपर्टी से 'Marquee' को हटाया गया. (Iad4f4)TextLinkStylesकोTextStyleक्लास से हटा दिया गया है. इसके बजाय,TextLinkStyles,LinkAnntationकंस्ट्रक्टर औरAnnotatedString.fromHtmlतरीके (I90b2b) का हिस्सा है- उस गड़बड़ी को ठीक किया गया है जिसमें किसी बाउंड्री पर पहले से सेट होने के बावजूद, Pager को बाउंड्री की ओर फ़्लिंग करने पर वह स्नैप हो जाता था. (I9f373, b/339171222)
- BTF2 में अब माउस से चुनने के लिए सही जेस्चर उपलब्ध हैं. (Ibe8c6)
बाहरी योगदान
- 'Make compose/measure time calculation content-type based in prefetch to improve accuracy' (Iea622) को फिर से सबमिट करें
- सटीकता को बेहतर बनाने के लिए, प्रीफ़ेच में कॉन्टेंट टाइप के आधार पर कंपोज़/मेज़र टाइम कैलकुलेशन करें (Ibccb1)
WindowInsetsPaddingमॉडिफ़ायर को सामान्य सोर्स सेट (I070b2) से उपलब्ध कराएं
वर्शन 1.7.0-beta01
14 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01 रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- बाइनरी फ़ाइल के साथ काम करने की सुविधा के लिए,
KeyboardOptions.shouldShowKeyboardOnFocusप्रॉपर्टी को फिर से जोड़ा गया है. हालांकि, यह अब काम नहीं करती है और इसे छिपा दिया गया है. (I15cfe) - आरटीएल लेआउट में इस्तेमाल किए जाने वाले हॉरिज़ॉन्टल ओरिएंटेशन वाले कॉम्पोनेंट के लिए,
Modifier.anchoredDraggableअब डिफ़ॉल्ट रूप से ड्रैग डेल्टा को उलट देता है. (I3c6d9) AnnotatedString.hasEqualsAnnotationsअबhasEqualAnnotationsहै. (I685c0)- टेक्स्ट में Material थीम वाले लिंक पाने के लिए, एपीआई को अपडेट किया गया. खास तौर पर, थीम वाले
LinkAnnotationsबनाने और थीम वाले लिंक के साथ एचटीएमएल पार्स करने के लिए,TextDefaultsसे तरीकों को हटा दिया गया है. इसके बजाय,TextLinkStylesक्लास जोड़ी गई है. इससे Text कंपोज़ेबल के पैरामीटर के तौर पर लिंक को स्टाइल किया जा सकता है. (I31b93) onDragStartedऔरonDragStoppedको, सस्पेंड न किए गए कॉलबैक से बदला गया. (I59de8)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें
contentPadding, आने वाली सीमाओं से बड़ा होने पर Pager क्रैश हो जाता था. पेजर अबPageSizeसे मिली नेगेटिव वैल्यू को 0 पर सेट कर देता है. (Iba5d8, b/314008560)
वर्शन 1.7.0-alpha08
1 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08 रिलीज़ हो गया है. वर्शन 1.7.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
BasicTextFieldऔरSelectionContainerमें राइट-क्लिक करने पर दिखने वाला संदर्भ मेन्यू जोड़ा गया है. इसमें कट, कॉपी, चिपकाएं, और सभी चुनें कार्रवाइयों के लिए आइटम मौजूद हैं. (If8c93, Ia2b49, I6f268)
एपीआई में हुए बदलाव
LazyLayoutप्रीफ़ेच अनुरोधों को अब 'ज़रूरी' के तौर पर मार्क किया जा सकता है. इसका मतलब है कि हमें उम्मीद है कि अगले फ़्रेम में इस आइटम की ज़रूरत होगी. साथ ही, हम फ़्रेम बजट को अनदेखा करना चाहते हैं, ताकि यह पक्का किया जा सके कि ज़्यादा काम पहले से ही हो जाए (Id513f)isPositionedByParentWithDirectManipulationका नाम बदलकरintroducesFrameOfReferenceकर दिया गया. ध्यान दें कि अब इसका असर उल्टा होता है. इसका मतलब है कि डिफ़ॉल्ट रूप से, ज़्यादातरLayoutCoordinatesरेफ़रंस फ़्रेम पेश करते हैं. साथ ही, सीधे तौर पर बदलाव करने पर ही प्रॉपर्टी की वैल्यू 'गलत है' होगी. सिर्फ़ उन शब्दों की पोज़िशन के बारे में क्वेरी करने के लिएpositionInLocalFrameOfReference(...)का इस्तेमाल करें जो रेफ़रंस फ़्रेम के बारे में बताते हैं. याLookaheadScopeसेpositionInLocalLookaheadFrameOfReference. (Ifc5f7)onClickedका नाम बदलकरLinkInteractionListenerमेंonClickकिया गया (Iaa35c)- एपीआई काउंसिल के सुझाव के मुताबिक,
getScrollViewportLengthके लिए ऐक्शन लैंबडा बदलें. (Ibc74a) - स्टाइलस हैंडराइटिंग डेलिगेशन एपीआई का नाम बदला गया है. (Ica45f, b/327271923)
TextInclusionStrategy.isInsideका नाम बदलकरisIncludedकरें.Paragraph/MultiParagraph#getRangeForRect()के रिटर्न टाइप को नॉन-नलेबल बनाएं. (I51f26)
गड़बड़ियां ठीक की गईं
SelectionContainerमें, टेक्स्ट के सभी कॉन्टेक्स्ट मेन्यू में "सभी चुनें" विकल्प जोड़ा गया. (Ib750e, b/240143283)reverseScrolling=trueवाले स्क्रोलिंग कंटेनर के लिए, लंबा स्क्रीनशॉट कैप्चर करने की सुविधा से जुड़ी समस्या ठीक की गई. (I7c59c)- उस समस्या को ठीक कर दिया गया है जिसकी वजह से, राज्य की सीमा के पास पहुंचने पर
AnchoredDraggableStateकाcurrentValueबदल जाता था. (Iea30b, b/333846848)
बाहरी योगदान
PrefetchExecutor->PrefetchSchedulerका नाम बदलकर, इसकी ज़िम्मेदारियों को बेहतर तरीके से दिखाया गया है. (Ib9154)- नेस्ट किए गए
LazyListsमें आइटम को पहले से फ़ेच करने की सुविधा जोड़ी गई है. उदाहरण के लिए, एक ऐसाLazyColumnजो नेस्ट किए गएLazyRowsको रेंडर करता है. इस बदलाव से, इनLazyListsके लिए स्क्रोलिंग के दौरान फ़्रेम ड्रॉप कम होने की उम्मीद है. लागू करने के डिफ़ॉल्ट तरीके के तहत, पहले दो नेस्ट किए गए आइटम को प्रीफ़ेच किया जाता है. हालांकि, इस तरीके को नएLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)औरLazyListPrefetchStrategy#onNestedPrefetchएपीआई से कंट्रोल किया जा सकता है. (I51952)
वर्शन 1.7.0-alpha07
17 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक
TextDefaultsऑब्जेक्ट जोड़ा गया है. इसमेंLinkAnnotationबनाने के तरीके शामिल हैं. साथ ही, इसमें एचटीएमएल टैग वाली स्ट्रिंग को पार्स करने का तरीका भी शामिल है. इससे लिंक परMaterialThemeलागू होता है. (I98532, b/139312671) LazyVerticalGridऔरLazyHorizontalGridमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (रीऑर्डरिंग) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (धीरे-धीरे दिखना), गायब होना (धीरे-धीरे गायब होना), और क्रम बदलना. (Ib7d12, b/330510929)LazyVerticalStaggeredGridऔरLazyHorizontalStaggeredGridमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (रीऑर्डरिंग) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (धीरे-धीरे दिखना), गायब होना (धीरे-धीरे गायब होना), और क्रम बदलना. (I69bc9, b/330511290)
एपीआई में हुए बदलाव
ContextMenuColorsऔर उससे जुड़ेLocalContextMenuThemeProvidableCompositionLocalको जोड़ता है. टेक्स्ट फ़ील्ड और चुने जा सकने वाले टेक्स्ट पर मौजूद कॉन्टेक्स्ट मेन्यू के रंगों में बदलाव किया जा सकता है. इसके लिए, कंपोज़िशन लोकल उपलब्ध कराएं. (Ifa154)- टेक्स्ट लिंक के लिए, सामान्य स्टाइलिंग, होवर किए जाने पर स्टाइलिंग, और फ़ोकस किए जाने पर स्टाइलिंग के साथ-साथ, प्रेस किए जाने पर स्टाइलिंग का विकल्प भी जोड़ा गया है. (I5f864, b/139312671)
- हाथ से लिखे गए टेक्स्ट के लिए,
ViewConfiguration.HandwritingGestureLineMarginकी सुविधा लॉन्च की गई.BasicTextFieldके लिए, हाथ से लिखने वाले जेस्चर की सुविधा जोड़ी गई है. (Ie6e13, b/325660505) - हमने 1.7 रिलीज़ के लिए
DelegatableNode.scrollIntoViewको हटा दिया है, क्योंकि हमारे पास इससे जुड़े बाकी एपीआई को स्थिर करने के लिए समय नहीं था. इस फ़ंक्शन को 1.8 (I6cf61, b/333421581, b/332900232) में फिर से शामिल किया जाएगा - लेआउट के कोऑर्डिनेट के बारे में क्वेरी करते समय, अब
excludeDirectManipulationOffsetआर्ग्युमेंट का इस्तेमाल किया जा सकता है. इससे, पैरंट लेआउट के सेट किए गए ऑफ़सेट को बाहर रखा जा सकता है. पैरंट लेआउट ने अपने बच्चों कोPlaceable.PlacementScope.withDirectManipulationPlacementका इस्तेमाल करके रखा था. इसी तरह, अगर कोई लेआउट अपने चाइल्ड एलिमेंट की पोज़िशन को बार-बार बदलता है, तो अब वह उन्हेंwithDirectManipulationPlacementका इस्तेमाल करके रख सकता है. जैसे, स्क्रोल करने की सुविधा, जो डिफ़ॉल्ट रूप से लागू होती है. इससेapproachLayoutपर आधारित ऐनिमेशन को ज़्यादा सहज बनाने में मदद मिलती है. अब ऐनिमेशन के लिए किस ऑफ़सेट का इस्तेमाल करना है और किस ऑफ़सेट को सीधे तौर पर लागू करना है, यह तय किया जा सकता है. (I60ec7) LazyStaggeredGridके लिएrequestScrollToItemकी सुविधा लॉन्च की गई है. हर मेज़र-पास के लिए, क्लाइंट अबrequestScrollToItemको कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. जब तकrequestScrollToItemको कॉल नहीं किया जाता, तब तक इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. (I63983)- पेजर में
requestScrollToPageकी सुविधा लॉन्च की गई है. हर मेज़र-पास के लिए, क्लाइंट अबrequestScrollToPageको कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. जब तकrequestScrollToPageको कॉल नहीं किया जाता, तब तक इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. (Ic4213) LazyGridsके लिएrequestScrollToItemलॉन्च किया गया. हर मेज़र-पास के लिए, क्लाइंट अबrequestScrollToItemको कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. जब तकrequestScrollToItemको कॉल नहीं किया जाता, तब तक इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. (I0a7a0)ClickableTextको 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से मेल खाने वालेLinkAnnotationके साथ एकAnnotatedStringबनाएं. इसके बाद, इसAnnotatedStringकोTextकंपोज़ेबल (I34d4b, b/323346994) को पास करेंUrlAnnotationके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,LinkAnnotation.Urlका इस्तेमाल करें. अगर Material theming का इस्तेमाल किया जा रहा है, तोTextDefaultsऑब्जेक्ट का इस्तेमाल करके, Material theming वाला एनोटेशन बनाएं (I8d180, b/323346545)String.parseAsHtmlका नाम बदलकरAnnotatedString.Companion.fromHtmlकर दिया गया (I43dcd)parseAsHtmlतरीके में स्टाइलिंग के तर्क (linkStyle,focusedLinkStyle,hoveredLinkStyle) और लिंक इंटरैक्शन लिसनर जोड़ा गया.<a>टैग की मदद से एचटीएमएल टैग की गई स्ट्रिंग को पार्स करते समय, यह तरीका ऐसे हर टैग के लिएLinkAnnotation.Urlबनाएगा. साथ ही, स्टाइलिंग ऑब्जेक्ट और लिंक इंटरैक्शन लिसनर को हर एनोटेशन में पास करेगा. (I7c977)LinkAnnotationअब राज्य के हिसाब से स्टाइलिंग के आर्ग्युमेंट औरLinkInteractionListenerलेता है. हाइपरलिंक पाने के लिए, इस एनोटेशन कोAnnotatedStringमें जोड़ें.focusedStateऔर/याhoveredStateपास करके, लिंक के लिए विज़ुअल कॉन्फ़िगरेशन तय किया जा सकता है. ऐसा तब किया जाता है, जब लिंक पर फ़ोकस किया जाता है और/या उस पर कर्सर घुमाया जाता है. (I81ce4, b/139312671)- लंबे स्क्रीनशॉट के लिए फ़ीचर फ़्लैग हटा दिया गया है. (I28648, b/329128246)
LazyColumnअब लंबे स्क्रीनशॉट में स्टिकी हेडर को सही तरीके से रेंडर करेगा. (I8d239, b/329296635)- नए
BasicTextFieldके साथ लॉन्च किए गए, एक्सपेरिमेंट के तौर पर उपलब्ध ज़्यादातर एपीआई को स्थिर किया गया. (I714e2) textObfuscationCharacterमेंtextObfuscationCharacterपैरामीटर जोड़ा गया है. इससे यह कंट्रोल किया जा सकता है कि कॉन्टेंट को धुंधला करते समय किस वर्ण का इस्तेमाल किया जाए.BasicSecureTextField(I0588b)NestedScrollसोर्स को खींचकर छोड़ना और फ़्लिंग करना, अबUserInputऔरSideEffectसे बदल दिया गया है. ऐसा इसलिए किया गया है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं. (I40579)LocalBringIntoViewSpecको पेश किया गया है. यह प्लैटफ़ॉर्म पर निर्भर करने वाला फ़ोकस स्क्रोलिंग बिहेवियर है. इसे Scrollable मॉडिफ़ायर लेयर पर लागू किया जाता है. (I27aa5, b/317453911)TextFieldCharSequenceको हटाया गया.TextFieldBuffer.originalValuesकोTextFieldBuffer.originalTextऔरTextFieldBuffer.originalSelectionसे बदल दिया गया है. (I2c7d6)ImeOptions.hintLocalesअब नल नहीं हो सकता. अगर आपको खाली स्थानीय भाषा की सूची पास करनी है, तो कृपयाLocaleList.Emptyका इस्तेमाल करें. (Ic5bc4)getOffsetFractionForPageका नाम बदलकरgetOffsetDistanceInPagesकर दिया गया. (Ia05e2)
गड़बड़ियां ठीक की गईं
InputTransformationsकोnextके साथ जोड़ने पर, उनकेKeyboardOptionsको अबKeyboardOptions.mergeके नए तरीके का इस्तेमाल करके, अलग-अलग विकल्पों के हिसाब से सही तरीके से मर्ज किया जाता है. (Ie5304, b/295951492)AnchoredDraggableStateकाtargetValueअब क्रम संख्या के थ्रेशोल्ड पर ध्यान नहीं देता. अब इसमें 50% का थ्रेशोल्ड होता है. इसका मतलब है किtargetValueदो ऐंकर के बीच के मिडपॉइंट पर बदलता है. (I82c2c)
बाहरी योगदान
- दो स्क्रोल एपीआई के नाम बदले गए (I56a75)
वर्शन 1.7.0-alpha06
3 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
LazyColumnऔरLazyRowमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (रीऑर्डरिंग) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (धीरे-धीरे दिखना), गायब होना (धीरे-धीरे गायब होना), और क्रम बदलना. (I2d7f7, b/150812265)LazyColumn/LazyRowके क्लाइंट अब आने वाले मेज़र-पास के लिए, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकते हैं. इसके लिए, उन्हें बिना निलंबित किए गएLazyListState.requestToScrollको कॉल करना होगा. (I98036, b/209652366)- स्टाइल की गई स्ट्रिंग के लिए
parseAsHtmlतरीका जोड़ा गया: इससे एचटीएमएल टैग से मार्क की गई स्ट्रिंग कोAnnotatedStringमें बदला जा सकता है. ध्यान दें कि सभी टैग इस्तेमाल नहीं किए जा सकते. उदाहरण के लिए, फ़िलहाल बुलेट लिस्ट नहीं दिखाई जा सकतीं. (I84d3d) - Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback) का इस्तेमाल किया गया है. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हो सकता है कि फ़िलहाल यह सभी मामलों को सही तरीके से हैंडल न करे. इसलिए, फ़िलहाल यह सुविधा डिफ़ॉल्ट रूप से बंद है. ऑप्ट-इन करने के लिए,ComposeFeatureFlag_LongScreenshotsEnabledफ़्लैग को सही पर सेट करें. इस फ़्लैग को 1.7 बीटा से पहले हटा दिया जाएगा. (I2b055, b/329296471) - नया
GraphicsLayerएपीआई लॉन्च किया गया है. इससेGraphicsLayerइंस्टेंस को प्लेस करने और रेंडर करने में ज़्यादा आसानी होगी. साथ ही,GraphicsLayerमॉडिफ़ायर इंस्टेंस तय करने के लिए, कंपोज़ेबल लागू करने के साथ समन्वय किए बिना, इंट्रिंसिक रेंडरिंग सुविधाओं का इस्तेमाल किया जा सकेगा.
एपीआई में हुए बदलाव
- सभी
KeyboardOptionsपैरामीटर की वैल्यू अब डिफ़ॉल्ट रूप से 'तय नहीं की गई' होती है.KeyboardOptions.mergeतरीका जोड़ा गया. KeyboardOptions.autoCorrectका नाम बदलकरautoCorrectEnabledकर दिया गया है. साथ ही, इसे शून्य किया जा सकने वाला बना दिया गया है. इसका मतलब है कि कोई वैल्यू नहीं दी गई है. (Ia8ba0, b/295951492)outOfBoundsPageCountका नाम बदलकरbeyondViewportPageCountकर दिया गया. (I129c6)fun ClipEntry.getMetadata()को बदलकरval ClipEntry.clipMetadataकर दिया गया है. (I50155)TextFieldState.valueAsFlow()को हटाया गया.snapshotFlow { state.text }याsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629) का इस्तेमाल करना ज़्यादा पसंद हैInputTransformation.transformInputपैरामीटर को फिर से व्यवस्थित किया गया.originalValue: TextFieldCharSequenceको हटाया गया. इसके बजाय,TextFieldBufferअब इसी नाम के साथ यह वैल्यू दिखाता है.valueWithChanges: TextFieldBufferपैरामीटर को भी हटा दिया गया है.TextFieldBufferअब फ़ंक्शन पर रिसीवर स्कोप है. (I919cc)BasicTextField(state)वैरिएंट औरBasicSecureTextFieldअब सॉफ़्टवेयर कीबोर्ड से किए गए ऐक्शन को प्रोसेस करने के लिए,KeyboardActionsके बजायKeyboardActionHandlerका इस्तेमाल करते हैं. (I58dda)- स्टाइलस हैंडराइटिंग डेलिगेशन एपीआई, "नकली" टेक्स्ट इनपुट फ़ील्ड पर स्टाइलस हैंडराइटिंग की सुविधा देने के लिए. (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocusका नाम बदलकरshowKeyboardOnFocusकर दिया गया. (Ib4b7a, b/295951492)Modifier.contentReceiverसेhintMediaTypesपैरामीटर हटाया गया. डेवलपर को पहले ही यह सुझाव दिया गया था कि वे मिले हुएTransferableContentके मीडिया टाइप की जांच करें. ऐसा इसलिए, क्योंकि यह कॉन्फ़िगर किए गएhintMediaTypesके साथ काम नहीं कर सकता. (I82f99)BasicSecureTextFieldके पैरामीटर का क्रम बदला गया.BasicSecureTextFieldके लिए सही डिफ़ॉल्ट वैल्यू को बनाए रखते हुए,keyboardTypeऔरimeActionपैरामीटर हटा दिए गए हैं. इसके बजाय,KeyboardOptionsक्लास का इस्तेमाल किया गया है.scrollStateपैरामीटर को भी हटा दिया गया है. (Ibbfa9)TextFieldState.textका टाइपTextFieldCharSequenceसे बदलकर सिर्फ़CharSequenceकर दिया गया है. इसलिए, हमनेTextFieldState.selection: TextRangeऔरTextFieldState.composition: TextRange?को जोड़ा है, ताकि चुने गए मौजूदा आइटम और कंपोज़िशन की वैल्यू को सीधे तौर पर स्टेट ऑब्जेक्ट से पढ़ा जा सके.TextFieldState.forEachTextValueको हटाया गया. (Idb2a2)ClipboardManager.getClipMetadataऔरClipboardManager.hasClipफ़ंक्शन हटा दिए गए हैं. मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए, कृपयाclipEntry.getMetadata()का इस्तेमाल करें. यह समझने के लिए कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं,ClipboardManager.getClipके नतीजे की भी जांच करें. देखें कि यह शून्य है या नहीं. (I50498)ClipboardManager.setClipअब क्लिपबोर्ड को मिटाने के लिए, null वैल्यू स्वीकार करता है. (I7d2e9)ReceiveContentListenerको फ़ंक्शन इंटरफ़ेस में बदल दिया जाता है. इसके अलावा, lambda को इनपुट के तौर पर लेने वालेModifier.receiveContentओवरलोड को हटा दिया गया है, क्योंकि अबReceiveContentListenerएक फ़ंक्शन इंटरफ़ेस है.Modifier.receiveContentका नाम बदलकरModifier.contentReceiverकर दिया गया है. (I1e6af)TransferableContent.consumeEachका नाम बदलकरTransferableContent.consumeकर दिया गया. (I1e462)rememberTextFieldStateको स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I37999)
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें
BasicTextField(state)वैरिएंट, CJK(कंपोज़िशन पर आधारित) कीबोर्ड के साथ काम नहीं करता था. (I54425) Modifier.dragAndDropTarget()के फिर से इस्तेमाल किए जाने पर, कुछ स्थितियों मेंModifier.dragAndDropTarget()के पुराने डेटा को रेफ़रंस करने वाली गड़बड़ी को ठीक किया गया है.Modifier.Node(I05bb1)- हाल ही में अनुबंध में हुए बदलाव को पहले जैसा कर दिया गया है. इस बदलाव के तहत,
anchoredDragऑपरेशन के आखिर मेंAnchoredDraggableState#anchoredDragकॉल स्नैप हो जाती थीं. (I95715)
वर्शन 1.7.0-alpha05
20 मार्च, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- हाइपरलिंक को स्टाइल करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध
LocalTextLinkStyleकंपोज़िशन लोकल को हटा दिया गया है. (Iebfa7) onLinkClickedआर्ग्युमेंट के साथBasicTextके एक्सपेरिमेंटल ओवरराइड को हटाया गया. आने वाले समय में, हाइपरलिंक की सुविधा के लिए एपीआई को बदला जाएगा. (I107d5)TextFieldStateऔरTextFieldBufferमें, कोडपॉइंट से जुड़े तरीकों और प्रॉपर्टी को हटाया गया. इसके अलावा, हमने चुने गए और कंपोज़िशन से जुड़े बाकी एपीआई सेinCharsसफ़िक्स भी हटा दिए हैं. (Ief7ce)- अब ऐंकर पॉइंट से गुज़रने पर,
AnchoredDraggableकाcurrentValueअपडेट हो जाएगा.settledValueका इस्तेमाल करके, पिछलीcurrentValueसिमैंटिक्स पाएं. यह सिर्फ़ तब अपडेट होता है, जब ऐंकर पर सेटल हो जाता है. प्रोग्रेस को अब प्रॉपर्टी के बजाय फ़ंक्शन के तौर पर दिखाया जाता है. इसके लिए, शुरुआती और आखिरी पॉइंट की ज़रूरत होती है. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimits,TextFieldDecoratorको स्टेबल वर्शन में अपग्रेड कर दिया गया है. (I9582b)- लो-लेवल IME से जुड़े टेस्ट और IME के अन्य लो-लेवल इस्तेमाल के मामलों को लिखने में मदद करने के लिए,
InterceptPlatformTextInputको लॉन्च किया गया.PlatformTextInputTestOverrideका अब इस्तेमाल नहीं किया जा सकता. (I862ed, b/322680547) restrictedConstraints()को दो तरीकों में बांटा गया है:fitPrioritizingWidth()औरfitPrioritizingHeight()(I6d7fd)
बाहरी योगदान
- स्क्रोल करने की नई कार्रवाई के लिए, स्क्रोल करने की दिशा की जांच करने के लिए दो नए एपीआई
isLastScrollForward/isLastScrollBackwardजोड़े गए हैं. अगर अब तक स्क्रोल करने की कोई कार्रवाई नहीं की गई है, तो यह फ़ंक्शन 'गलत है' वैल्यू दिखाता है. (I63a0e)
वर्शन 1.7.0-alpha04
6 मार्च, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04 रिलीज़ हो गया है. वर्शन 1.7.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Android U के बाद वाले वर्शन पर काम करने वाले डिवाइसों पर, स्टाइलस से लिखने की सुविधा जोड़ी गई है. (I002e4)
hintLocalesकोKeyboardOptionsमें जोड़ा गया है, ताकिTextFieldsको खास स्थानीय भाषाओं के साथ आईएमई के बारे में जानकारी दी जा सके. इससे, पसंदीदा भाषा को पहले से सेट किया जा सकेगा. (Id18c2)- एक्सपेरिमेंट के तौर पर उपलब्ध
BasicTextField2औरBasicSecureTextFieldके उन ओवरलोड को हटा दिया गया है जोvalue: StringऔरonValueChange: () -> Stringपैरामीटर लेते थे. (I568b4) InputTransformationमें एक वैकल्पिकapplySemanticsफ़ंक्शन जोड़ें, ताकिBasicTextField2के सिमैंटिक पर असर डाला जा सके. (I74a2f, b/170648072)- इस सीएल में, हम
GetScrollViewportLengthसिमैंटिक ऐक्शन जोड़ रहे हैं, ताकि हम कंपोज़ में स्क्रोल किए जा रहे कॉम्पोनेंट के बारे में जानकारी को a11y सिस्टम तक पहुंचा सकें. यह सीएल, स्क्रोल की जा सकने वाली फ़ाउंडेशन लिस्ट में बताई गई प्रॉपर्टी के इस्तेमाल पर भी लागू होता है. (Ic5fa2) BasicTextField2का नाम बदलकरBasicTextFieldकर दिया गया है. (Ie5713)FocusRequester.createRefsअब स्थिर हो गया है (I4d92c, b/261436820)DelegatableNode.scrollIntoView()को इसलिए लॉन्च किया गया है, ताकि मॉडिफ़ायर नोड सीधेscrollIntoViewअनुरोध कर सकें. (I2b3b7, b/299939840)DelegatableNode.requireView()को इसलिए जोड़ा गया है, ताकि मॉडिफ़ायर नोड, कंपोज़िशन लोकल को पढ़े बिना मौजूदा AndroidViewको पा सकें. (I40768)- कॉन्टेक्स्ट के हिसाब से लेआउट की जानकारी देने वाले नए पैरामीटर जोड़े गए हैं. ये पैरामीटर, कॉन्टेक्स्ट के हिसाब से फ़्लो की लाइन के स्कोप और कॉन्टेक्स्ट के हिसाब से फ़्लो के कॉलम के स्कोप में उपलब्ध हैं. इनमें लाइन इंडेक्स, पोज़िशन, और ज़्यादा से ज़्यादा चौड़ाई और ऊंचाई की सीमाएं शामिल हैं, ताकि तय की गई पोज़िशन में बने रहें. ज़्यादा से ज़्यादा चौड़ाई/ऊंचाई से ज़्यादा वाले आइटम, ओवरफ़्लो सेटिंग के आधार पर अगली लाइन में जा सकते हैं या उन्हें हटाया जा सकता है. (Id13f8, b/292114798)
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, कुछ मामलों में
TextFieldकेenabledयाreadOnlyएट्रिब्यूट को टॉगल करने पर, ऐप्लिकेशन क्रैश हो जाता था. (Iae17b)
वर्शन 1.7.0-alpha03
21 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DelegatableNode.requireLayoutCoordinates()कोModifier.Nodeके मौजूदाLayoutCoordinatesको पाने के तरीके के तौर पर पेश किया गया है. इसके लिए,onPlacedको बदलने और निर्देशांकों को खुद प्रॉपर्टी में सेव करने की ज़रूरत नहीं होती. (Ia8657)DelegatableNode.currentLayoutCoordinatesकोModifier.Nodeके मौजूदाLayoutCoordinatesको पाने के तरीके के तौर पर पेश किया गया है. इसके लिए,onPlacedको बदलने और निर्देशांकों को खुद प्रॉपर्टी में सेव करने की ज़रूरत नहीं होती. (Iaebaa)AnchoredDraggableकी ओर से इस्तेमाल किए गएDraggableAnchorsमें परफ़ॉर्मेंस ऑप्टिमाइज़ेशन. (I89cff)BasicTextField2और इससे जुड़े एपीआई कोandroidx.compose.foundation.text2पैकेज सेandroidx.compose.foundation.textमें ले जाया गया है. (I9f635)BasicTextField2अबCodepointTransformationपैरामीटर स्वीकार नहीं करता है. इसके लिए,BasicSecureTextFieldयाOutputTransformationका इस्तेमाल करें. (Id34ff)- सिर्फ़ दो
AnnotatedStringsके एनोटेशन की तुलना करने का तरीका जोड़ा गया. (I32659) - पेश है
ContextualFlowRowऔरMaxLinesऔरOverflowके साथ बेहतरFlowRow/Column. हमें यह बताते हुए खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्धFlowRowऔरFlowColumnको बेहतर बनाया गया है. अब इनमेंmaxLinesऔर ओवरफ़्लो सपोर्ट की सुविधा भी उपलब्ध है. साथ ही,ContextualFlowRowऔरContextualFlowColumnको पहली बार लॉन्च किया गया है. इस अपडेट को परफ़ॉर्मेंस के हिसाब से सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*उन आइटम के लिए सबसे सही है जिनकी संख्या ज़्यादा है और जोmaxLinesकॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल करते हैं. वहीं,FlowRowऔरFlowColumnउन आइटम के लिए सबसे सही है जिनकी संख्या कम है. जैसे, 100 से कम आइटम. अहम जानकारी:FlowRowयाFlowColumnमें मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, वहां शुरू करने के दौरानoverflowकोFlowRowOverflow.VisibleयाFlowColumnOverflow.Visibleपर सेट करें. इन नई सुविधाओं के काम करने के उदाहरण देखने के लिए,ContextualFlowRowSampleऔरFlowRowSampleपर जाएं. (Ib9135, b/293577082)
गड़बड़ियां ठीक की गईं
- कर्सर ऐनिमेशन, अब चालू और बंद होने की स्थितियों के बीच फ़्रेम का अनुरोध नहीं करता है. (Ia2253)
KeyboardOptions' अब कॉपी कंस्ट्रक्टर, सभी प्रॉपर्टी को सही तरीके से कॉपी करेंगे. (If12de)
वर्शन 1.7.0-alpha02
7 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02 रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
HorizontalPager,VerticalPager, औरPagerStateको स्टेबल वर्शन में प्रमोट किया जाता है. (I67660, b/316966909)LocalTextLinkStyleकंपोज़िशन लोकल को जोड़ा गया है. इससे पूरे ऐप्लिकेशन में टेक्स्ट के लिंक के स्टाइल को बदला जा सकता है. अगर ऐप्लिकेशन में अपनी थीम का इस्तेमाल किया जा रहा है, तो आपको इस कंपोज़िशन लोकल को अपनी थीम के हिसाब से सेट करना चाहिए. मटीरियल थीम का इस्तेमाल करने पर, लिंक का रंग डिफ़ॉल्ट रूप से मटीरियल के मुख्य रंग पर सेट होगा. (I7eb10)receiveContentमॉडिफ़ायर जोड़ा गया है. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.receiveContentके साथ इंटिग्रेट होता है, ताकि सॉफ़्टवेयर कीबोर्ड या क्लिपबोर्ड में चिपकाने की सुविधा के ज़रिए उपलब्ध कराए गए रिच कॉन्टेंट को स्वीकार किया जा सके.BasicTextField2(I81b72)- इस बदलाव में, हम पेजर में
SnapFlingBehaviorकोTargetedFlingBehaviorसे बदल रहे हैं, ताकि इस्तेमाल के अन्य उदाहरणों को अनलॉक किया जा सके और ज़्यादा विकल्प उपलब्ध कराए जा सकें. (I762ea) - इस बदलाव में, हम स्नैपिंग एपीआई को स्टेबल बना रहे हैं. हम टेस्टिंग कोड को भी बेहतर बना रहे हैं. साथ ही, स्नैपिंग में ज़्यादा सैंपल जोड़ रहे हैं. (Id8da9)
TargetedFlingBehaviorको पेश किया गया है. यह एकFlingBehaviorहै, जो चालू एनिमेशन की स्थिति और उसके टारगेट स्क्रोल ऑफ़सेट के बारे में जानकारी देता है. (I6a207)
गड़बड़ियां ठीक की गईं
BasicTextField2अब टाइप करते समय कर्सर को व्यू में रखता है. ऐसा तब होता है, जब कर्सर को स्क्रोल करके व्यू से बाहर कर दिया गया हो या इनपुट की वजह से वह व्यू से बाहर चला जाता हो. (Ieb856, b/237190748)
बाहरी योगदान
- LazyLists के प्रीफ़ेच करने के तरीके को कॉन्फ़िगर करने के लिए, एक एक्सपेरिमेंटल एपीआई जोड़ा गया है. (I022a4)
वर्शन 1.7.0-alpha01
24 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01 रिलीज़ हो गया है. वर्शन 1.7.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नया
Indication API,IndicationNodeFactoryजोड़ा गया. इससे,rememberUpdatedInstanceएपीआई की तुलना मेंIndicationको बेहतर तरीके से लागू किया जा सकता है.rememberUpdatedInstanceएपीआई अब काम नहीं करता. डेटा को दूसरी जगह भेजने से जुड़ी जानकारी के लिए, developer.android.com पर जाएं. clickable / combinedClickable / selectable / toggleableअबMutableInteractionSourceपैरामीटर के तौर पर नल वैल्यू स्वीकार करता है. अगर यह वैल्यू शून्य है और दी गईIndicationएकIndicationNodeFactoryहै, तोIndicationको सिर्फ़ ज़रूरत पड़ने पर लेज़ी तरीके से बनाया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर आपनेMutableInteractionSourceको होस्ट नहीं किया है और इसका इस्तेमाल नहीं किया जा रहा है, तो हमारा सुझाव है कि आप null पास करें.
एपीआई में हुए बदलाव
AnchoredDraggableमेंDecayAnimationको जोड़ा गया है. इस बदलाव सेAnchoredDraggableमेंdecayAnimationSpecपैरामीटर जुड़ जाता है. इससे किसी एक ऐंकर पर सेटल होने के दौरान, डीके ऐनिमेशन का इस्तेमाल किया जा सकता है. बदलाव में, मौजूदाanimationSpecका नाम बदलकरsnapAnimationSpecकरना भी शामिल है, ताकि हर स्पेसिफ़िकेशन के इस्तेमाल के उदाहरण को समझा जा सके.BasicTextField2को एक्सपेरिमेंट के तौर पर इस्तेमाल किया जा सकता है. यहBasicTextFieldके बराबर होना चाहिए और इसका व्यवहार प्रोडक्शन के लिए तैयार होना चाहिए. हालांकि, यह एपीआई फ़िलहाल एक्सपेरिमेंट के तौर पर उपलब्ध है. स्थिर होने से पहले, इसका नाम बदलकरBasicTextFieldकर दिया जाएगा और इसे उसी पैकेज में ले जाया जाएगा.BasicTextField2के लिए,OutputTransformationएपीआई का पहला ड्राफ़्ट लॉन्च किया गया. यह एपीआई,BasicTextFieldके पुराने वर्शन मेंVisualTransformationके इस्तेमाल के ज़्यादातर उदाहरणों की जगह लेता है. हालांकि, यह अभी पूरी तरह से तैयार नहीं है और कुछ चीज़ें ठीक से काम नहीं करेंगी. हालांकि, हम आपके इस्तेमाल के उदाहरणों के लिए, एपीआई के इस्तेमाल से जुड़े किसी भी सुझाव/राय या शिकायत का स्वागत करते हैं. (aosp/2708848)LinkAnnotationफ़ंक्शन जोड़ा गया है. इसकी मदद से, टेक्स्ट में लिंक और क्लिक किए जा सकने वाले आइटम जोड़े जा सकते हैं. लिंक करने की सुविधा अभी पूरी तरह से तैयार नहीं है. साथ ही, एपीआई में और भी बदलाव होने वाले हैं.receiveContentमॉडिफ़ायर जोड़ा गया है. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.receiveContent,BasicTextField2के साथ इंटिग्रेट होता है, ताकि सॉफ़्टवेयर कीबोर्ड से मिले रिच कॉन्टेंट को स्वीकार किया जा सके. इसके अलावा, क्लिपबोर्ड से चिपकाए गए कॉन्टेंट को भी स्वीकार किया जा सके.KeyboardOptions.shouldShowKeyboardOnFocusकी मदद से, फ़ोकस करने पर सॉफ़्टवेयर कीबोर्ड का अनुरोध करने वालेBasicTextFieldके डिफ़ॉल्ट व्यवहार को बंद किया जा सकता है.TextInputServiceऔरLocalTextInputServiceका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, सीधे तौर पर प्लैटफ़ॉर्म के IME एपीआई के साथ इंटिग्रेट करने के लिए,PlatformTextInputModifierNodeका इस्तेमाल करें. (aosp/2862698)Indication#rememberUpdatedInstanceका अब इस्तेमाल नहीं किया जा सकता. इससे परफ़ॉर्मेंस पर काफ़ी बुरा असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नएIndicationNodeFactoryएपीआई का इस्तेमाल करना चाहिए.
गड़बड़ियां ठीक की गईं
VisualTransformationपास होने पर,BasicTextFieldअब ऑफ़सेट मैपिंग के छोटे से हिस्से की पहले से पुष्टि करेगा. इससे कोडिंग की सामान्य गड़बड़ियों का पता लगाने में मदद मिलती है. इन गड़बड़ियों की वजह से, बाद में मेज़र या ड्रॉ पास में ठीक न की जा सकने वाली समस्याएं आती हैं. कंपोज़िशन के दौरान गड़बड़ी होने पर, डेवलपर को डेवलपमेंट के दौरान ये गड़बड़ियां दिखने की संभावना ज़्यादा होती है. इससे प्रोडक्शन क्रैश होने से बचने में मदद मिलती है. (I0fd42)- अगर अमान्य इंडेक्स के लिए अमान्य इंडेक्स दिखाया जाता है, तो
VisualTransformationकोई गड़बड़ी नहीं दिखाएगा (b/316401857 )
वर्शन 1.6
वर्शन 1.6.8
12 जून, 2024
androidx.compose.foundation:foundation-*:1.6.8 रिलीज़ हो गया है. वर्शन 1.6.8 में ये बदलाव शामिल हैं.
वर्शन 1.6.7
1 मई, 2024
androidx.compose.foundation:foundation-*:1.6.7 रिलीज़ हो गया है. वर्शन 1.6.7 में ये बदलाव शामिल हैं.
वर्शन 1.6.6
17 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.6.6 रिलीज़ हो गया है. वर्शन 1.6.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, कुछ मामलों में
TextFieldकेenabledयाreadOnlyएट्रिब्यूट को टॉगल करने पर, ऐप्लिकेशन क्रैश हो जाता था. (Iae17b)
वर्शन 1.6.5
3 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.6.5 रिलीज़ हो गया है. वर्शन 1.6.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Row/Column में, ऐसी गड़बड़ियों के लिए डीबग लॉग जोड़ता है जिन्हें ठीक करना मुश्किल है: (b/300280216 और b/297974033)
वर्शन 1.6.4
20 मार्च, 2024
androidx.compose.foundation:foundation-*:1.6.4 रिलीज़ हो गया है. वर्शन 1.6.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट को चुनने के लिए, दबाकर रखने के बाद खींचने वाले जेस्चर का इस्तेमाल करने पर, अब ऐप्लिकेशन क्रैश नहीं होता. ऐसा तब होता है, जब खींचने की प्रोसेस के पहले फ़्रेम में, टेक्स्ट का लेआउट बाउंड्री से बाहर चला जाता है. (Icdf90, b/325307463)
वर्शन 1.6.3
6 मार्च, 2024
androidx.compose.foundation:foundation-*:1.6.3 रिलीज़ हो गया है. वर्शन 1.6.3 में ये बदलाव शामिल हैं.
वर्शन 1.6.2
21 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.6.2 रिलीज़ हो गया है. वर्शन 1.6.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
AnimateContentSizeके ठीक से रीसेट न होने की समस्या हल करना. (I07051)- इस अपडेट से, कुछ मामलों में टेक्स्ट के
intrinsicHeightको ज़्यादा समय तक कैश मेमोरी में सेव रखने की समस्या ठीक हो जाएगी. (3cd398, b/217910352)
वर्शन 1.6.1
7 फ़रवरी, 2024
androidx.compose.foundation:foundation-*:1.6.1 रिलीज़ हो गया है. वर्शन 1.6.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- स्क्रोल करने की सीमा पार होने पर, स्टैगर्ड ग्रिड मेज़रमेंट की समस्या ठीक करें. (bffc39)
- बड़े डाइमेंशन वाले लेआउट के लिए जांच की सुविधा जोड़ी गई. (e74af5)
- स्टैगर्ड ग्रिड की शुरुआत में, शून्य साइज़ वाले आइटम की जगह तय की गई. (785f94)
- onRelease कॉलबैक को उसी क्रम में कॉल करें जिस क्रम में onForgotten को कॉल किया गया था. (31ce3b)
वर्शन 1.6.0
24 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये बदलाव शामिल हैं.
1.5.0 के बाद हुए अहम बदलाव
- नया मॉडिफ़ायर
Modifier.anchoredDraggable, जो पहले से तय किए गए ऐंकर के सेट के बीच ड्रैग करने और ऐनिमेशन बनाने की सुविधा देता है. इस मॉडिफ़ायर कोModifier.swipeableके बदले में इस्तेमाल किया जा सकता है. इसे इस्तेमाल करने का तरीका जानें. साथ ही, माइग्रेशन गाइड मेंModifier.swipeableसे माइग्रेट करने का तरीका जानें. - ऐप्लिकेशन और कॉम्पोनेंट के बीच, खींचकर छोड़ने की सुविधा जोड़ी गई है. शुरू करने के लिए,
DragAndDropTarget,Modifier.dragAndDropSourceऔर अन्य एपीआई देखें Modifier.draggable2Dनया मॉडिफ़ायर है. इसकी मदद से, 2D में आसानी से ड्रैग किया जा सकता है. उदाहरण देखें.- Compose में, सर्फ़ेस के हिसाब से कॉम्पोनेंट जोड़ने की प्रोसेस को आसान बनाने के लिए,
AndroidExternalSurfaceऔरAndroidEmbeddedExternalSurfaceको जोड़ा गया है PagerऔरsnapFlingBehaviourमें कई एपीआई बदलाव और सुधार- फ़ोकस, टेक्स्ट, और इनसेट से जुड़े कई एपीआई को स्टेबल एपीआई के तौर पर प्रमोट किया गया है
वर्शन 1.6.0-rc01
10 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragAndDropTarget()एक्सटेंशन कंस्ट्रक्टर को हटा दिया गया है.object: DragAndDropTarget {}का इस्तेमाल करके नया इंस्टेंस बनाएं. (I32318)
वर्शन 1.6.0-beta03
13 दिसंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03 रिलीज़ हो गया है. वर्शन 1.6.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस क्रैश को ठीक किया गया है जिससे बहुत बड़े टेक्स्ट पर असर पड़ा था. इस टेक्स्ट को इनफ़िनिट कंस्ट्रेंट के साथ मेज़र किया गया था. (I1a7df, b/312294386)
PlatformImeOptionsअब इंटरफ़ेस के बजाय एक कॉन्क्रीट क्लास है. (If40a4)
वर्शन 1.6.0-beta02
29 नवंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02 रिलीज़ हो गया है. वर्शन 1.6.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सिर्फ़ लेआउट बदलने के लिए स्क्रोल करने के बाद,
canScrollके अपडेट न होने की समस्या ठीक की गई. (I60a86) - छोटे स्क्रोल के बाद,
Modifier.animateItemPlacement()औरLookaheadScopeसे जुड़ी समस्या ठीक की गई. (I3a2b7)
वर्शन 1.6.0-beta01
15 नवंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragAndDropTargetमॉडिफ़ायर अबDragAndDropTargetको साफ़ तौर पर लेता है. साथ ही, इसमें ड्रैग और ड्रॉप सेशन में ऑप्ट-इन करने के लिए लैम्ब्डा होता है. अबDragAndDropModifierNodeके लिए दो फ़ैक्ट्री फ़ंक्शन उपलब्ध हैं. एक ट्रांसफ़र पाने के लिए और दूसरा डेटा ट्रांसफ़र करने के लिए (I69481)maximumFlingVelocityको फ़्लोट के तौर पर दिखाने के लिए अपडेट किया गया.maximumFlingVelocityयूनिटी के बारे में ज़्यादा जानकारी देने के लिए, दस्तावेज़ों को अपडेट किया गया. (I8adc7)DragAndDropModifierNodeफ़ैक्ट्री में मौजूदonDragAndDropStartका नाम बदलकरacceptDragAndDropTransferकर दिया गया है.acceptsDragAndDropTransferकोdragAndDropTargetModifierमें जोड़ दिया गया है, ताकि खींचें और छोड़ें सेशन से इसे स्वीकार किया जा सके. अगर आपको ड्रैग और ड्रॉप सेशन में दिलचस्पी है, तो यह लैंबडा एक मान्यDragAndDropTargetदिखाता है. ड्रैग इवेंट को प्रोसेस करने के लिए, अन्य लैंबडा को इससे बदल दिया गया है.ड्रैग और ड्रॉप सेशन (Iebf3a) से डेटा पाने के लिए,
DragAndDropTargetफ़ैक्ट्री फ़ंक्शन जोड़ा गया हैAnchoredDraggableमेंstartDragImmediatelyको दिखाने से, इसका इस्तेमाल करते समय ड्रैग करने के जेस्चर (हाव-भाव) का पता लगाने के लिए कंट्रोल मिलता है. जब विजेट किसी टारगेट ऐंकर पर ऐनिमेट हो रहा हो, तब इसे सेट करना फ़ायदेमंद होता है. उदाहरण देखें. (Ie6d13, b/285139987)Foundation Tooltip API अब
@ExperimentalFoundationApi(I30b0b) हैDragAndDropInfoको टाइप के तौर पर हटा दिया गया है. अबDragAndDropModifierNode.drag,transferData, डेकोरेशन के साइज़, और डेकोरेशन को खींचकर छोड़ने वालेDrawScopeलैम्डा के लिए पैरामीटर लेता हैDragAndDropTargetमें, एक ही ऐब्स्ट्रैक्ट तरीके के बजाय, ड्रैग और ड्रॉप करने के खास इवेंट के तरीके होते हैंDragAndDropModifierNodeके फ़ैक्ट्री फ़ंक्शन में मौजूदonDragAndDropEventका नाम बदलकरonDragAndDropStartकर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि दिया गयाDragAndDropTarget, सिर्फ़ ड्रैग और ड्रॉप वाले सेशन के लिए मान्य हैDragAndDropEventTypeको हटा दिया गया है (I645b1)PlatformTextInputModifierNode.runTextInputSessionका नाम बदलकरestablishTextInputSessionकर दिया गया. (I03cd0)OriginalTextकोTextSubstitutionसे बदलें. (Ifa5a8)PlatformTextInputModifierNode.textInputSessionका नाम बदलकरrunTextInputSessionकर दिया गया. (Ie9c6b)SubcomposeLayoutके उन बच्चों (औरLazyColumnजैसे लेआउट, जो इस पर आधारित हैं) को बंद माना जाता है जिन्हें आने वाले समय में फिर से इस्तेमाल करने के लिए सेव किया जाता है. ऐसे नोड की जांच करने के लिए, नयाassertIsDeactivated()टेस्ट एपीआई लॉन्च किया गया है. अन्य टेस्ट एपीआई, डिफ़ॉल्ट रूप से बंद किए गए नोड को फ़िल्टर कर देंगे. (I2ef84, b/187188981)Modifier.magnifierकेclippingEnabledपैरामीटर का नाम बदलकरclipकर दिया गया है.Modifier.magnifierकेmagnifierCenterपैरामीटर को नल वैल्यू स्वीकार करने वाला बनाया गया है. हालांकि, इसके डिफ़ॉल्ट व्यवहार में कोई बदलाव नहीं किया गया है. (I6aa66)कार्ड और चिप के लिए, Material
SwipeToRevealएपीआई अब उन स्लॉट को बनाने के लिए, डेटा क्लास पर आधारित इंस्टेंस के बजाय, स्लॉट पर आधारित एपीआई का इस्तेमाल करते हैं. यह एपीआई, Compose के सुझाव के मुताबिक है. यह एक बड़ा बदलाव है. नए एपीआई को इस्तेमाल करने के तरीके के बारे में जानने के लिए, कृपया डेमो और सैंपल कोड देखें. (Ia8943)
गड़बड़ियां ठीक की गईं
PageSize.Fixedके लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)- उस गड़बड़ी को ठीक किया गया जिसकी वजह से
BasicTextबदलने पर,BasicTextलेआउट छोटा नहीं होता था. साथ ही,minWidth, मेज़रमेंट की शुरुआती शर्तोंmaxWidth(Idb19c) से कम होता थाminWidth ArcLineमें स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ी गई. (I4d5bb)- Window Inset में बदलाव करने पर, बाइनरी के साथ काम करने से जुड़ी समस्या ठीक की गई (Iee695)
- Material3 चिप/बटन के लिए, मटीरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)
वर्शन 1.6.0-alpha08
18 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
Modifier.draggable2Dनया मॉडिफ़ायर है. इसकी मदद से, 2D में आसानी से ड्रैग किया जा सकता है. उदाहरण (Id95f5, b/214412658) देखें
एपीआई में हुए बदलाव
Modifier.dragAndDrawSourceमें,onDrawDragShadowलैम्डा का नाम बदलकरdrawDragDecorationकर दिया गया है. साथ ही,DragAndDropInfoमें, साइज़ पैरामीटर का नाम बदलकरdragDecorationSizeकर दिया गया है. (Id0e30, b/303904810)BasicTextField2केdecorationBoxपैरामीटर का नाम बदलकरdecoratorकर दिया गया है. इसका टाइप भी बदलकर, मिलते-जुलते मज़ेदार इंटरफ़ेसTextFieldDecoratorमें बदल दिया जाता है. (I23c1c)
गड़बड़ियां ठीक की गईं
BasicTextFieldकी ज़रूरी शर्तों के बारे में बेहतर दस्तावेज़.onValueChange(I90fc9, b/160257648)
वर्शन 1.6.0-alpha07
4 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट एडिटर के लिए, टेस्ट लिखने की सुविधा
PlatformTextInputMethodTestOverrideलॉन्च की गई. (Id159b) GraphicsSurfaceका नाम बदलकरAndroidExternalSurfaceकिया गया (I11680)- नॉन-लीनियर फ़ॉन्ट स्केलिंग को बंद करने के लिए,
DisableNonLinearFontScalingInComposeअस्थायी फ़्लैग जोड़ा गया. अगर आपको टेस्ट को ठीक करने के लिए समय चाहिए, तो उन्हेंDisableNonLinearFontScalingInCompose = trueके तौर पर सेट करें. इस फ़्लैग को Compose 1.6.0-beta01 में हटा दिया जाएगा. (Ic9486) ColorListऔरColorSetकलेक्शन जोड़े गए हैं, जिनसे एट्रिब्यूशन नहीं होता. (I744bd)- इस बदलाव से
shortSnapVelocityThresholdहट जाता है. इसेSnapLayoutInfoProviderको लागू करने के तरीके के बारे में जानकारी देने वाले सेक्शन में शामिल कर दिया गया है. (I65f6d) - ड्रैग और ड्रॉप सेशन शुरू करने के लिए
dragAndDropSourceमॉडिफ़ायर और ड्रैग और ड्रॉप सेशन से डेटा पाने के लिएdragAndDropTargetमॉडिफ़ायर जोड़ा गया (Ib7828, b/286038936) SnapPositionInLayoutके दस्तावेज़ और पोज़िशन के तरीके को अपडेट करें.SnapPositionInLayoutमें, पोज़िशन के तरीके में कॉन्टेंट पैडिंग जोड़ें. (Id7938, b/300116110)TextFieldStateमेंUndoStateजोड़ा गया है. इससे उपयोगकर्ता को, किए गए बदलावों को पहले जैसा करने या फिर से करने की सुविधा मिलती है. (Icc024)
गड़बड़ियां ठीक की गईं
- स्पीड में बदलाव होने के बाद,
basicMarqueeके ऐनिमेट न होने की समस्या ठीक की गई. (Id2e77, b/297974036)
वर्शन 1.6.0-alpha06
20 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
SurfaceView,TextureView: GraphicsSurface(), औरEmbeddedGraphicsSurface()के लिए नए कंपोज़ेबल रैपर. यह एक एक्सपेरिमेंटल एपीआई है. इसमें बदलाव और संशोधन किए जा सकते हैं. (I9ddb2)Modifier.magnifier()अब एक भरोसेमंद एपीआई है. इसमें मॉडिफ़ायर में मौजूद इनलाइन पैरामीटर के पक्ष में,MagnifierStyleको हटाना शामिल है. (I83bec, b/298381260, b/262367109, b/261438887)
एपीआई में हुए बदलाव
ScrollScopeमेंupdateCurrentPageऔरupdateTargetPageको लॉन्च किया गया. येPagerState.scrollको ऐनिमेटेड स्क्रोल करने की सुविधा को पसंद के मुताबिक बनाने के लिए ज़रूरी हैं. (I9cad5, b/267744105, b/243786897)SnapFlingBehaviorसे डेंसिटी हटाएं.SnapLayoutInfoProviderके सभी वर्शन में, डेंसिटी को ऐक्सेस करने का तरीका पहले से मौजूद है. इसलिए, रिसीवर स्कोप को हटाया जा सकता है. इससेSnapFlingBehaviorऔरSnapLayoutInfoProviders, दोनों को लागू करना आसान हो जाएगा. (I153c3)- ज़्यादा मॉडिफ़ायर को स्टेबल के तौर पर मार्क किया गया है. (I56af1, b/298046462)
SnapStepSizeकोSnapLayoutInfoProviderसे हटाया गया. कैलकुलेशन, लेआउट की जानकारी का इस्तेमाल करके की जानी चाहिए. साथ ही, इसे अप्रोच या स्नैपिंग ऑफ़सेट के ज़रिए उपलब्ध कराया जाना चाहिए. (If320c)
व्यवहार में बदलाव
- अब कंपोज़ फ़ीचर में, फ़ॉन्ट को बेहतर तरीके से पढ़ने और ऐक्सेस करने के लिए, नॉन-लीनियर फ़ॉन्ट स्केलिंग का इस्तेमाल किया जाता है. सिस्टम सेटिंग में फ़ॉन्ट स्केल > 100% होने पर, छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ सिर्फ़ थोड़ा बढ़ेगा. साथ ही, एसपी में तय की गई लाइन की ऊंचाई, 100% स्केल के हिसाब से तय की गई ऊंचाई के अनुपात में अपने-आप एडजस्ट हो जाएगी. ज़्यादा जानकारी के लिए, फ़ॉन्ट स्केलिंग के सबसे सही तरीके देखें. (I11518)
गड़बड़ियां ठीक की गईं
- टूलटिप के लिए,
rememberSaveableका इस्तेमाल बंद करें. (Icc131, b/299500338)
वर्शन 1.6.0-alpha05
6 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BasicSecureTextFieldके लिए ऐसे ओवरलोड जोड़ें जो न बदली जा सकने वाली वैल्यू और उस वैल्यू को बदलने के लिए कॉलबैक स्वीकार करते हैं. यह ठीक उसी तरह काम करता है जिस तरह मौजूदाBasicTextFieldएपीआई काम करता है. (Ia4882)- एपीआई लेवल 33 और इसके बाद के वर्शन पर फ़्लोटिंग विंडो से बचने के लिए,
Modifier.preferKeepClear()जोड़ें, ताकि इसे कंपोज़ेबल के तौर पर मार्क किया जा सके. (Ib51d5, b/297260115) ScrollViewऔरRecyclerViewजैसे व्यू कॉम्पोनेंट में फ़्लिंग वेलोसिटी कोViewConfiguration.ScaledMaximumFlingVelocityपर सेट किया गया है. Compose में अबmaximumFlingVelocityका अपना वर्शन शामिल है, जो अबDraggableपर लागू होता है. (Ibf974)- इस्तेमाल में नहीं रहे
PagerऔरPagerStateओवरलोड को हटा दिया गया है. (Iea07e) compose.foundationमेंBasicTooltipBoxजोड़ा गया है. साथ ही,PlainTooltipBoxऔरRichTooltipBoxको अपडेट किया गया है, ताकिTooltipBoxका इस्तेमाल नएPlainTooltipऔरRichTooltipकंपोज़ेबल के साथ किया जा सके. (I79e1d)
वर्शन 1.6.0-alpha04
23 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लाइफ़साइकल मैनेज करने और सबकंपोज़िशन का दोबारा इस्तेमाल करने के लिए,
ReusableCompositionइंटरफ़ेस जोड़ा गया. (I812d1, b/252846775) Modifier.focusGroupको स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I7ffa3)BasicTextField2के लिए ऐसे ओवरलोड जोड़ें जो न बदली जा सकने वाली वैल्यू और उस वैल्यू को बदलने के लिए कॉलबैक स्वीकार करते हैं. यह ठीक उसी तरह काम करता है जिस तरह मौजूदाBasicTextFieldएपीआई काम करता है. (I3f2b8)GridItemSpan::currentLineSpanअब एक भरोसेमंद एपीआई है. (Icc29c)contentDescriptionको स्वीकार करने वाला कैनवस अब एक स्टेबल एपीआई है. (Ib3d29)ScrollStateमेंviewportSizeको पेश किया गया है. यहScrollStateका इस्तेमाल करने वाले कॉम्पोनेंट केviewPortसाइज़ का पता लगाने का एक तरीका है. यह साइज़, मेज़रमेंट के बाद पता चलता है. (I8b85a, b/283102682)- उस समस्या को ठीक किया गया है जिसमें Pager में प्रीफ़ेचिंग, Views में प्रीफ़ेचिंग से मेल नहीं खाती थी. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)अब स्टेबल हो गया है.Deprecated Modifier.consumedWindowInsetsएपीआई को अब हटा दिया गया है. इसके बजाय,Modifier.consumeWindowInsetsका इस्तेमाल करें. (Id72bb)
वर्शन 1.6.0-alpha03
9 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03 रिलीज़ हो गया है. वर्शन 1.6.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyLayoutका ओवरलोड जोड़ा गया है. यहLazyLayoutItemProviderका लैम्ब्डा स्वीकार करता है, न कि पहले की तरह कोई सामान्य ऑब्जेक्ट. पिछले ओवरलोड को बंद कर दिया गया है. (I42a5a)privateImeOptionsको कॉन्फ़िगर करने की सुविधा जोड़ी गई (Idb772)
गड़बड़ियां ठीक की गईं
- टेक्स्ट फ़ील्ड में कीबोर्ड दिखने और
readOnlyके सही होने पर बदलाव किए जा सकने की समस्या को ठीक किया गया है. इसके अलावा, फ़ोकस में होने परreadOnlyको सही से गलत में बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)
वर्शन 1.6.0-alpha02
26 जुलाई, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02 रिलीज़ हो गया है. वर्शन 1.6.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PagerLayoutInfoको लॉन्च किया गया. इसमेंPagerमें मेज़रमेंट पास होने के बाद इकट्ठा की गई जानकारी शामिल है. साथ ही,PageInfoको भी पेश किया गया है. यहPagerमें मेज़र किए गए किसी पेज के बारे में जानकारी देता है. (Iad003, b/283098900)- कंपोज़ेबल में इस्तेमाल किए जा सकने वाले इनपुट तय करने के लिए अतिरिक्त एनोटेशन (I51109)
- टेस्ट में फ़ोकस करने का अनुरोध करने के लिए,
SemanticsNodeInteraction.requestFocusको ज़्यादा सुविधाजनक और आसानी से ढूंढने वाले तरीके के तौर पर जोड़ा गया है. (Ie8722) PlatformTextInput*API को पूरी तरह से फिर से डिज़ाइन किया गया है. (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardControllerऔरLocalSoftwareKeyboardControllerअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.LocalSoftwareKeyboardControllerअब एक मान्यCompositionLocalभी है. (I4c364)Modifier.transformableअबcanPanपैरामीटर में पैन डेल्टा उपलब्ध कराता है. इससे पैन की दिशा का पता लगाने में मदद मिलती है, ताकि इसे अनुमति दी जा सके या अनुमति न दी जा सके. (I692aa, b/266829800)- सुपरक्लास
AbstractComposeViewको बढ़ाने के लिए, मॉडिफ़ायरconsumeWindowInsetsको अपडेट करता है (Iacd74, b/269479941)
वर्शन 1.6.0-alpha01
21 जून, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01 रिलीज़ हो गया है. वर्शन 1.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Foundation में नया
AnchoredDraggableएपीआई लॉन्च किया गया. इसका इस्तेमाल ऐसे कॉम्पोनेंट बनाने के लिए किया जा सकता है जिन्हें अलग-अलग स्थितियों के बीच ड्रैग किया जा सकता है. जैसे, बॉटम शीट वाले मोडल. यह एपीआई, Material केSwipeableएपीआई की जगह लेगा. (I4a2ed)
एपीआई में हुए बदलाव
InputConnection#requestCursorUpdates(I0c69b) के साथ काम करता है- कस्टम ऐनिमेशन स्पेसिफ़िकेशन की अनुमति देने के लिए,
scrollAnimationSpecको जोड़ा गया.BringIntoViewCalculatorकोBringIntoViewScrollerमें अपडेट किया गया. (Idb741) ResourceResolutionExceptionटाइप जोड़ें, ताकि बिटमैप ऐसेट लोड करते समय थ्रो किए गए थ्रोएबल को रैप किया जा सके. इसमें ऐसेट पाथ की जानकारी होती है जिसे लोड नहीं किया जा सका. (I19f44, b/230166331, b/278424788)- टेक्स्ट का अनुवाद करने के लिए, सिमैंटिक्स प्रॉपर्टी और कार्रवाइयां जोड़ी गई हैं. (I4a6bc)
BringIntoViewCalculatorAPI लॉन्च किया गया है. इसका इस्तेमाल करके, यह तय किया जा सकता है किScrollableजैसे कॉम्पोनेंट,bringIntoViewअनुरोधों का जवाब कैसे दें. स्क्रोल किए जा सकने वाले कॉन्टेंट के ओवरलोड को बदलकर,BringIntoViewCalculatorके इंस्टेंस को स्वीकार करने का विकल्प जोड़ा गया. (Iaf5af)
गड़बड़ियां ठीक की गईं
- अगर आपने कंपोज़िशन में
MutableInteractionSourceबनाया है, तो आपको चेतावनी देने के लिए लिंट चेक जोड़ा गया है. यह लिंट चेक, म्यूटबल स्टेट /Animatableबनाने के लिए किए जाने वाले लिंट चेक की तरह ही काम करता है. (I5daae) - माउस से चुनने की सुविधा जोड़ी गई. टच करके चुनने की सुविधा में, शब्द के हिसाब से टेक्स्ट को चुना जाएगा और वर्ण के हिसाब से टेक्स्ट को हटाया जाएगा. (Ic0c6c, b/180639271)
- कस्टम
FocusTargetबनाने के लिए,FocusTargetModifierNodeइंटरफ़ेस जोड़ा गया. (I9790e)
संस्करण 1.5
वर्शन 1.5.4
18 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.5.4 रिलीज़ हो गया है. वर्शन 1.5.4 में ये बदलाव शामिल हैं.
वर्शन 1.5.3
4 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.5.3 रिलीज़ हो गया है. इस वर्शन में कोई बदलाव नहीं किया गया है.
संस्करण 1.5.2
27 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.5.2 रिलीज़ हो गया है. वर्शन 1.5.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, सिमैंटिक अमान्य होने पर कुछ मामलों में क्रैश हो जाता था.
संस्करण 1.5.1
6 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.5.1 रिलीज़ हो गया है. वर्शन 1.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट फ़ील्ड में कीबोर्ड दिखने और
readOnlyके सही होने पर बदलाव किए जा सकने की समस्या को ठीक किया गया है. इसके अलावा, फ़ोकस में होने परreadOnlyको सही से गलत में बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)
वर्शन 1.5.0
9 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.5.0 रिलीज़ हो गया है. वर्शन 1.5.0 में ये बदलाव शामिल हैं.
1.4.0 के बाद के मुख्य बदलाव
- कई बुनियादी मॉडिफ़ायर, जैसे कि
Modifier.clickable,Modifier.draggable,Modifier.scrollable, लेआउट मॉडिफ़ायर वगैरह कोModifier.Nodeएपीआई पर माइग्रेट कर दिया गया है. इससे शुरुआती कंपोज़िशन पर पड़ने वाला ओवरहेड कम हो गया है. - पेजर की स्थिरता में सुधार किए गए हैं. कई गड़बड़ियों को ठीक किया गया है.
pageCountपैरामीटर अब पेजर में नहीं, बल्किPagerStateमें मौजूद है
वर्शन 1.5.0-rc01
26 जुलाई, 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
प्रिमिटिव के लिए,
mutableStateOf()कॉल को उनके संबंधित खास टाइप पर माइग्रेट करने का सुझाव देने के लिए, जांच का विकल्प उपलब्ध है. इसका लिंट आईडीAutoboxingStateCreationहै. पहले, यह जांच सभी प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती थी. Android Studio के एडिटर और अपने प्रोजेक्ट के लिंट आउटपुट में इस चेतावनी को देखने के लिए, इसकी गंभीरता को सूचना से बदलकर चेतावनी (या इससे ज़्यादा) पर सेट करें. इसके लिए, अपने मॉड्यूल केbuild.gradleयाbuild.gradle.ktsकॉन्फ़िगरेशन मेंwarning "AutoboxingStateCreation"को इस तरह से एलान करें (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
वर्शन 1.5.0-beta03
28 जून, 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03 रिलीज़ हो गया है. वर्शन 1.5.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-beta02
7 जून, 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02 रिलीज़ हो गया है. वर्शन 1.5.0-beta02 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-beta01
24 मई, 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- धड़कन की दर और हर दिन चले गए कदमों की जानकारी देने के लिए,
PlatformDataProviderलागू करें.SensorGatewayइंटरफ़ेस को सार्वजनिक एपीआई से हटा दिया गया है. (I55b84)
गड़बड़ियां ठीक की गईं
- लेज़ी लिस्ट/ग्रिड वगैरह के मेज़रमेंट के दौरान, असाइनमेंट कम करें (Iaf9e2)
- स्नैपशॉट लागू करने पर कम किए गए असाइनमेंट (I65c09)
- स्प्रिंग ऐनिमेशन से हटाए गए असाइनमेंट (Ie9431)
TextLayout(I0fd11) से बजट का बंटवारा हटाया गया- पॉइंटर की वेलोसिटी ट्रैकिंग में कई ऐसेट के असाइनमेंट हटाए गए (I26bae)
वर्शन 1.5.0-alpha04
10 मई, 2023
androidx.compose.foundation:foundation:1.5.0-alpha04 और androidx.compose.foundation:foundation-layout:1.5.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया
TextStyle.merge(...)जोड़ा गया. (Iad234, b/246961787) SnapLayoutInfoProviderको लॉन्च किया गया है, जिसका इस्तेमालLazyGridStateके साथ किया जा सकता है. (I92134, b/269237141, b/260914964)- लेज़ी स्टैगर्ड ग्रिड के आइटम स्कोप के लिए, एक्सपेरिमेंटल
Modifier.animateItemPlacement()जोड़ा गया. ऑटोमेशन की मदद से, आइटम की पोज़िशन बदलने या उन्हें फिर से क्रम में लगाने वाले ऐनिमेशन बनाने के लिए, इस सुविधा का इस्तेमाल किया जा सकता है. (I4b62d, b/257034719) GridCells.FixedSizeको स्टेबल वर्शन पर प्रमोट करें.FixedSizeएकLazyGridको तय करता है. इसमें हर सेल, क्रॉस ऐक्सिस पर सटीक साइज़ लेता है. साथ ही, बाकी स्पेस को क्रॉस ऐक्सिस अरेंजमेंट के हिसाब से डिस्ट्रिब्यूट किया जाता है. (I8542f)- पेजर के लिए, रिसीवर स्कोप
PagerScopeजोड़ा गया है. साथ ही, दिए गए पेज ऑफ़सेट की गिनती करने के लिए, यूटिलिटी फ़ंक्शन जोड़ा गया है. (If2577) - स्नैप फ़्लिंग का व्यवहार बनाते समय,
snapPositionalThresholdको शामिल करें. इस पैरामीटर का इस्तेमाल करके, Pager में शॉर्ट स्नैपिंग के लिए पोज़िशनल थ्रेशोल्ड तय करें. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBoundsकोcalculateSnappingOffsetसे बदला गया. इस नए तरीके में, हम सिर्फ़ स्नैप करने के लिए अगले ऑफ़सेट का अनुरोध करते हैं. बाउंड्री की गिनती, लागू करने के लेवल पर की जानी चाहिए. ऐसा इसलिए, क्योंकि यह इस बात पर निर्भर करता है कि स्नैपिंग कैसे होनी चाहिए. (I923a4)LazyStaggeredGridएपीआई को स्टेबल वर्शन में अपग्रेड कर दिया गया है. (I633a5)Horizontal/VerticalPagerसेpageCountको हटाएं. यह राज्य बनाते समय दिया जाना चाहिए.pageCountको स्वीकार करने के लिए,PagerStateऔरrememberPagerStateको अपडेट किया गया. (Ieb52d, b/266965072)Horizontal/VerticalPagerसेpageCountको हटाएं. यह राज्य बनाते समय दिया जाना चाहिए.pageCountको स्वीकार करने के लिए,PagerStateऔरrememberPagerStateको अपडेट किया गया. (Ifa3cb, b/266965072)- पेजर के
SnapFlingBehaviorमेंshortSnapVelocityThresholdको शामिल करें. (I7379e, b/275579012) FlowRowScopeऔरFlowColumnScopeजोड़ता है. (I54fe2)
गड़बड़ियां ठीक की गईं
- टेक्स्ट के सिमैंटिक के बारे में जानकारी पाने के लिए किए गए कॉल, अब क्रैश नहीं होंगे. ऐसा तब होगा, जब कंस्ट्रेंट में
minWidthऔरminHeightमौजूद हों. (Ibd072) - उस रिग्रेशन को ठीक किया गया है जिसमें
Dialogकंपोज़ेबल से नहीं बनाए गए डायलॉग के अंदर मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था. (I82551, b/262140644)
वर्शन 1.5.0-alpha03
19 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha03 और androidx.compose.foundation:foundation-layout:1.5.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha03 में ये बदलाव शामिल हैं.
इस रिलीज़ से, Compose के लिए नया टेक्स्ट रेंडरिंग स्टैक चालू हो जाता है. नया स्टैक, परफ़ॉर्मेंस के लिए ऑप्टिमाइज़ किया गया है. इसलिए, आपको कोई बदलाव नहीं दिखेगा.
अगर आपको रेंडर किए गए टेक्स्ट में बदलाव दिखते हैं, तो NewTextRendering1_5 = false सेट करके डीबग किया जा सकता है. इससे यह पुष्टि की जा सकेगी कि दोनों वर्शन में क्या अंतर है. इसे सेट करने से, लेआउट को फिर से कंपोज़ करना होगा. अगर आपको कोई अंतर दिखता है, तो कृपया उसे गड़बड़ी के तौर पर सबमिट करें.
1.5 beta01 रिलीज़ होने से पहले, डीबग फ़्लैग हटा दिया जाएगा.(Iada23, b/246960758)
एपीआई में हुए बदलाव
FlowColumn/FlowRowको टेक्स्ट के हिसाब से इनलाइन करें. (Idab37)
वर्शन 1.5.0-alpha02
5 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha02 और androidx.compose.foundation:foundation-layout:1.5.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyGridमें तय साइज़ वाली सेल के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित करने की सुविधा भी जोड़ी गई है. (I83ed9, b/235121277, b/267942510)LazyStaggeredGridमें तय साइज़ वाली लेन के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित किया गया है. (I7d519)AnnotatedStringमें मौजूदUrlAnnotationको अबTalkBackजैसी सुलभता सेवाओं के ज़रिए खोला जा सकता है. (If4d82, b/253292081)- टेक्स्ट फ़ील्ड के लिए,
InsertTextAtCursorसिमैंटिक्स ऐक्शन जोड़ा गया. (I11ed5) - टेक्स्ट से जुड़ी टेस्ट कार्रवाइयों (जैसे,
performTextInput) के लिए, अब सीधे तौर पर फ़ोकस करने का अनुरोध किया जाएगा. इसके लिए, फ़ील्ड पर क्लिक करने के बजाय, सिमैंटिक्स ऐक्शन का इस्तेमाल किया जाएगा. (I6ed05) FlowRowमेंverticalArrangementऔरFlowColumnमेंhorizontalArrangementका इस्तेमाल करके, क्रॉस ऐक्सिस स्पेसिंग/अरेंजमेंट के लिए सहायता जोड़ी गई. हमFlowRow/FlowColumnमें टॉप-लेवलverticalAlignmentऔरhorizontalAlignmentको भी हटा देते हैं. डेवलपर, इसके बजायModifier.alignका इस्तेमाल कर सकते हैं. इससेverticalAlignmentऔरverticalArrangementके नेमिंग कन्वेंशन के बीच भ्रम कम होता है. (I87b60, b/268365538)
वर्शन 1.5.0-alpha01
22 मार्च, 2023
androidx.compose.foundation:foundation:1.5.0-alpha01 और androidx.compose.foundation:foundation-layout:1.5.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट और
BasicTextको नए मॉडिफ़ायर सिस्टम का इस्तेमाल करने के लिए रीफ़ैक्टर किया गया है. इससे कई मामलों में, परफ़ॉर्मेंस में काफ़ी सुधार होता है. कोई बदलाव नहीं दिखना चाहिए. (If1d17, b/246961435) - टेक्स्ट एडिटर नोड पर IME ऐक्शन शुरू करने के लिए,
PerformImeActionसिमैंटिक्स ऐक्शन जोड़ा गया. (Ic606f, b/269633506)
गड़बड़ियां ठीक की गईं
Modifier.hoverableके इंटरनल को अपडेट किया गया.hoverableमॉडिफ़ायर को सिर्फ़ तब इंस्पेक्टर में दिखाया जाएगा, जब इसे चालू किया गया हो. (I82103)
वर्शन 1.4
वर्शन 1.4.3
3 मई, 2023
androidx.compose.foundation:foundation:1.4.3 और androidx.compose.foundation:foundation-layout:1.4.3 को बिना किसी बदलाव के रिलीज़ किया गया है. हालांकि, इनके वर्शन में बदलाव किया गया है.
वर्शन 1.4.2
19 अप्रैल, 2023
androidx.compose.foundation:foundation:1.4.2 और androidx.compose.foundation:foundation-layout:1.4.2 रिलीज़ हो गए हैं. वर्शन 1.4.2 में ये बदलाव शामिल हैं.
वर्शन 1.4.1
5 अप्रैल, 2023
androidx.compose.foundation:foundation:1.4.1 और androidx.compose.foundation:foundation-layout:1.4.1 रिलीज़ हो गए हैं. वर्शन 1.4.1 में ये बदलाव शामिल हैं.
वर्शन 1.4.0
22 मार्च, 2023
androidx.compose.foundation:foundation:1.4.0 और androidx.compose.foundation:foundation-layout:1.4.0 रिलीज़ हो गए हैं. वर्शन 1.4.0 में ये बदलाव शामिल हैं.
1.3.0 के बाद हुए अहम बदलाव
TextऔरTextFieldके साथ-साथ निचले लेवल के पैराग्राफ़ में, इमोजी इंटिग्रेशन की सुविधा जोड़ी गई. emojicompat कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.EmojiCompatकोPlatformParagraphStyleका इस्तेमाल करके, किसी खास टेक्स्ट पर कॉन्फ़िगर किया जा सकता है.LazyStaggeredGrid(I28252) एट्रिब्यूट के लिए, पूरी लाइन के स्पैन की सुविधा जोड़ी गईClickableText(I6938f) में एक्सपेरिमेंटलonHoverजोड़ा जा रहा हैrunComposeUiTestफ़ंक्शन औरcreate*ComposeRuleफ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContextपैरामीटर स्वीकार करते हैं. इस कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भीLaunchedEffectऔरrememberCoroutineScope()कॉल के लिए किया जाएगा. (I10614, b/265177763)FlowRowऔरFlowColumnअब@ExperimentalFoundationApiके तौर पर उपलब्ध हैं. इनकी मदद से, कॉम्पोनेंट को ज़्यादा फ़्लेक्सिबल तरीके से लाइन और कॉलम के हिसाब से लेआउट किया जा सकता है. अगर मुख्य ऐक्सिस पर जगह नहीं होती है, तो कॉम्पोनेंट नई लाइन में चले जाएंगे. (I3a7b2)Modifier.basicMarquee(), एक्सपेरिमेंट के तौर पर उपलब्ध है. इसका इस्तेमाल, स्क्रोलिंग मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाने के लिए किया जाता है. (I2df44, b/139321650)
वर्शन 1.4.0-rc01
8 मार्च, 2023
androidx.compose.foundation:foundation:1.4.0-rc01 और androidx.compose.foundation:foundation-layout:1.4.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.4.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल
PlatformTextInputAdapterएपीआई लॉन्च किया गया है. यह सीधे तौर पर प्लैटफ़ॉर्म एपीआई से कम्यूनिकेट करता है. (I58df4) LazyStaggeredGridमें रिवर्स लेआउट की सुविधा जोड़ी गई. (I3ef4a)
गड़बड़ियां ठीक की गईं
BasicTextFieldकाSetTextसिमैंटिक्स ऐक्शन, अब टेक्स्ट बफ़र को अपडेट करेगा. इसके लिए, वह उसी कोड पाथ का इस्तेमाल करेगा जिसका इस्तेमाल IME अपडेट और टेस्टिंग फ़ंक्शन (जैसे किperformTextReplacement) करते हैं.- टेक्स्ट टेस्टिंग फ़ंक्शन
performTextClearance,performTextReplacement, औरperformTextSelectionअबSemanticsActionsका इस्तेमाल करते हैं. (I0807d, b/269633168, b/269624358)
वर्शन 1.4.0-beta02
22 फ़रवरी, 2023
androidx.compose.foundation:foundation:1.4.0-beta02 और androidx.compose.foundation:foundation-layout:1.4.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.4.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक नया
Modifier.Node.onReset()कॉलबैक जोड़ा गया है. इससे, कुछ लोकल स्टेट को रीसेट किया जा सकता है. इससे,Layoutको फिर से इस्तेमाल किए जाने पर, उसे सही तरीके से हैंडल किया जा सकेगा. उदाहरण के लिए,LazyColumnके आइटम के तौर पर. फ़ोकस की गई स्थिति को सही तरीके से रीसेट करने के लिए,FocusTargetModifierNodeको ठीक किया गया है. (I65495, b/265201972) - Canvas पर टेक्स्ट बनाते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम इस्तेमाल करने के लिए,
DrawScope.drawText,Paragraph.paint, औरMultiParagraph.paintतरीकों मेंBlendModeपैरामीटर जोड़ा गया. (I57508) modifierElementOf()API को हटा दिया गया है. कृपया सीधेModifierNodeElementसे एक्सटेंशन जोड़ें. (Ie6d21)
गड़बड़ियां ठीक की गईं
- चुने गए हिस्से के हैंडल को अडजस्ट करने पर, अब किसी वर्ण के कुछ हिस्से को नहीं चुना जा सकता. (Idedd1)
- खाली
TextFieldपर ctrl+backspace दबाने पर क्रैश होने की समस्या ठीक की गई (I0427f, b/244185537)
वर्शन 1.4.0-beta01
8 फ़रवरी, 2023
androidx.compose.foundation:foundation:1.4.0-beta01 और androidx.compose.foundation:foundation-layout:1.4.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.4.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- 1.3 वर्शन के बाद से,
TextऔरTextFieldके साथ-साथ पैराग्राफ़ के निचले लेवल में इमोजी इंटिग्रेशन की सुविधा जोड़ी गई है. emojicompat कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है. EmojiCompatकोPlatformParagraphStyleका इस्तेमाल करके, किसी खास टेक्स्ट पर कॉन्फ़िगर किया जा सकता है.
एपीआई में हुए बदलाव
PinnableContainerAPI के सामान्य तरीके को जोड़ा गया है. इसका इस्तेमाल सभीLazyLayoutsमें किया जाता है. इससे उन आइटम को बनाए रखने में मदद मिलती है जो कंपोज़िशन से बाहर निकल जाते हैं, लेकिन उन्हें अब भी चालू रखने की ज़रूरत होती है. (If45a4)PinnableContainer.PinnedHandle.unpin()का नाम बदलकरrelease()कर दिया गया (I4667a)
बाहरी योगदान
LazyListLayoutInfo,LazyGridLayoutInfo, औरLazyStaggeredGridItemInfoमेंmainAxisItemSpacingप्रॉपर्टी जोड़ी गई (I52fad)
वर्शन 1.4.0-alpha05
25 जनवरी, 2023
androidx.compose.foundation:foundation:1.4.0-alpha05 और androidx.compose.foundation:foundation-layout:1.4.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
LazyStaggeredGridमें पूरी लाइन के स्पैन के लिए सहायता जोड़ी गई (I28252)ClickableTextमें एक्सपेरिमेंट के तौर परonHoverजोड़ा गया (I6938f)runComposeUiTestफ़ंक्शन औरcreate*ComposeRuleफ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContextपैरामीटर स्वीकार करते हैं. इस कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भीLaunchedEffectऔरrememberCoroutineScope()कॉल के लिए किया जाएगा. (I10614, b/265177763)
एपीआई में हुए बदलाव
OverscrollEffectके प्री/पोस्ट एपीआई को, 'डेकोरेटर'applyToScrollऔरapplyToFlingफ़ंक्शन में मर्ज करता है. नए एपीआई शेप के साथ ओवरस्क्रोल इफ़ेक्ट लागू करने के उदाहरणों के लिए, दस्तावेज़ में अपडेट किए गए सैंपल देखें. (I8a9c4, b/255554340)- इनलाइन/deprecated-hidden फ़ंक्शन के टाइप/nullability के बारे में ज़्यादा जानकारी (I24f91)
TextStyleमें मौजूदLineBreakऔरHyphensएपीआई को स्टेबल वर्शन में अपग्रेड कर दिया गया है. (Ic1e1d)
गड़बड़ियां ठीक की गईं
- अब टेक्स्ट फ़ील्ड में कर्सर, ऐनिमेशन बंद होने पर भी ब्लिंक करता रहेगा. (I95e70, b/265177763)
Modifier.basicMarqueeअब ऐनिमेट होता है. भले ही, सिस्टम सेटिंग में ऐनिमेशन बंद हों. (I23389, b/262298306, b/265177763)
बाहरी योगदान
TextInputSessionऔरTextInputServiceमें मौजूदnotifyFocusedRectतरीकों को फिर से बंद नहीं किया गया है. (I23a04, b/262648050)
वर्शन 1.4.0-alpha04
11 जनवरी, 2023
androidx.compose.foundation:foundation:1.4.0-alpha04 और androidx.compose.foundation:foundation-layout:1.4.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
FlowRowऔरFlowColumnअब@ExperimentalFoundationApiके तौर पर उपलब्ध हैं. इनकी मदद से, कॉम्पोनेंट को ज़्यादा फ़्लेक्सिबल तरीके से लाइन और कॉलम के हिसाब से लेआउट किया जा सकता है. अगर मुख्य ऐक्सिस पर जगह नहीं होती है, तो कॉम्पोनेंट नई लाइन में चले जाएंगे. (I3a7b2)Modifier.basicMarquee(), एक्सपेरिमेंट के तौर पर उपलब्ध है. इसका इस्तेमाल, स्क्रोलिंग मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाने के लिए किया जाता है. (I2df44, b/139321650)
एपीआई में हुए बदलाव
FocusRequesterModifierकोFocusRequesterNodeके पक्ष में बंद कर दिया गया है (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)AndroidFontकंस्ट्रक्टर के साथvariationSettingsअब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)PinnableContainerएपीआई को पेश किया गया है. इसे कंपोज़िशन लोकल के ज़रिए लेज़ी लिस्ट से फैलाया जाता है. इससे मौजूदा आइटम को पिन किया जा सकता है. इसका मतलब है कि स्क्रोल करके व्यू से हटाए जाने पर, इस तरह के आइटम को हटाया नहीं जाएगा. उदाहरण के लिए,Modifier.focusable()इस तरीके से, फ़ोकस किए गए मौजूदा आइटम को पिन करेगा. (Ib8881, b/259274257, b/195049010)- स्क्रोल किए जा सकने वाले आइटम,
bringIntoViewRequestersऔर फ़ोकस किए जा सकने वाले आइटम के जवाब देने के तरीके को फिर से लिखा गया है. इससे इन कार्रवाइयों की जटिलता को बेहतर तरीके से मॉडल किया जा सकेगा और ज़्यादा मुश्किल मामलों को हैंडल किया जा सकेगा. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - बंद किए गए-छिपाए गए फ़ंक्शन के ज़्यादा रिटर्न टाइप में nullability (Ibf7b0)
TextMotionमें एक्सपेरिमेंटलTextMotionजोड़ा गया है. इससे यह तय किया जा सकेगा कि टेक्स्टStatic(default)होगा या ऐनिमेशन वाला.TextStyleअगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जाना है, उसका अनुवाद करना है या उसे घुमाना है, तोTextMotion.Animatedका इस्तेमाल करें. (I24dd7)- Android प्लैटफ़ॉर्म के लिए फ़ोकस नेविगेशन के व्यवहार को ठीक करने के लिए
TextFieldFocusModifierजोड़ें (I00303) DrawScopeफ़ंक्शन के साथ अलाइन करने के लिए,drawTextमेंmaxSize: IntSizeआर्ग्युमेंट कोsize: Sizeसे बदल दिया गया है.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को पेश किया गया. Pager के पेज के साइज़ को कंट्रोल करने के लिएPageSizeको जोड़ा गया है. इसका इस्तेमाल, Pager जैसे कैरसेल बनाने के लिए किया जा सकता है. हमनेPagerSnapDistanceको लॉन्च किया है. इससे यह कंट्रोल किया जा सकेगा कि Pager के फ़्लिंग बिहेवियर में स्नैपिंग कैसे काम करेगी. (I01120)SnapFlingBehavior.performFlingमें ओवरलोड की सुविधा जोड़ी गई है, ताकि यह समझने में मदद मिल सके कि फ़्लिंग कहां रुकेगी. (I569f6)OverscrollEffect#isEnabledको हटाया गया. इस फ़्लैग को याद रखने और सेट करने के बजाय, उन मामलों में ओवरस्क्रोल इफ़ेक्ट को इवेंट डिसपैच न करें जहां आपको ओवरस्क्रोल नहीं दिखाना है. उदाहरण के लिए, अगरScrollableState#canScrollForward/backwardदोनों 'गलत है' के तौर पर दिखते हैं. (I1a4b0, b/255554340, b/255557085)ScrollableState#canScrollForwardऔरScrollableState#canScrollBackwardको क्वेरी में जोड़ा गया है, ताकि यह पता लगाया जा सके किScrollableStateमें किसी भी दिशा में स्क्रोल करने की सुविधा है या नहीं. इससे यह भी पता चलता है किScrollableStateअपनी रेंज की कम से कम / ज़्यादा से ज़्यादा वैल्यू पर है या नहीं. यह डिफ़ॉल्ट रूप से सही पर सेट होता है, ताकिScrollableStateके मौजूदा वर्शन के साथ काम कर सके. उपयोगकर्ता इसका इस्तेमाल करके, यह दिखा सकते हैं कि अब भी स्क्रोल करने की जगह है. इसका इस्तेमाल, उनScrollableStatesको डेल्टा भेजने से बचने के लिए भी किया जा सकता है जिनमें किसी दिशा में स्क्रोल करने की जगह नहीं है. इससे गैर-ज़रूरी काम को कम किया जा सकता है. (Idf1a0, b/255557085)- स्क्रोल करने की जानकारी के लिए, Modifier API जोड़ा गया. (I2ba9d, b/203141462)
- इस कुकी का इस्तेमाल
Clickableमें किया जाता है. इससे प्रेस इंटरैक्शन को सही तरीके से डिले किया जा सकता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं. Clickablesके अंदर इस्तेमाल किए जाने पर,Clickablesके रिपल इफ़ेक्ट को सही तरीके से डिले न करने की समस्या ठीक की गई.Scrollable ViewGroup- ड्रॉवर और शीट को अपडेट किया गया है, ताकि अगर जेस्चर स्क्रोल इवेंट बन सकते हैं, तो प्रेस में सही तरीके से देरी हो.
snapStepSizeमें मौजूद अन्य तरीकों के हिसाब से,snapStepSizeके नाम को अपडेट किया गया है.SnapLayoutInfoProvider(Ife67c)ComposeमेंEmojiCompatजोड़ा गया (Ibf6f9, b/139326806)consumedWindowInsets()का नाम बदलकरconsumeWindowInsets()औरwithConsumedWindowInsets()का नाम बदलकरonConsumedWindowInsetsChanged()कर दिया गया है. साथ ही, मॉडिफ़ायर को सार्वजनिक कर दिया गया है. (Ie44e1)
गड़बड़ियां ठीक की गईं
Modifier.animateItemPlacement()और लेज़ी ग्रिड के क्रैश होने की समस्या ठीक कर दी गई है. ऐसा कुछ मामलों में तब हो रहा था, जब नए आइटम की संख्या पिछले आइटम की संख्या से कम होती थी. (I0bcac, b/253195989)
वर्शन 1.4.0-alpha02
9 नवंबर, 2022
androidx.compose.foundation:foundation:1.4.0-alpha02 और androidx.compose.foundation:foundation-layout:1.4.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
awaitFirstDownऔरwaitForUpOrCancellationअब ज़्यादा फ़ायदा पाने के लिए,PointerEventPassस्वीकार करते हैं. (I7579a, b/212091796)- Lazy* API से
beyondBoundCountAPI को पहले जैसा करना (I12197) - लेज़ी एपीआई में पैरामीटर जोड़ा गया है, ताकि व्यूपोर्ट से बाहर मौजूद आइटम को कंपोज़ और प्लेस किया जा सके (I69e89, b/172029355)
BasicTextऔरBasicTextFieldमेंminLinesपैरामीटर जोड़ा गया. इससे लाइनों की संख्या (I24294, b/122476634) के हिसाब से, इन कंपोज़ेबल की कम से कम ऊंचाई सेट की जा सकती है
वर्शन 1.4.0-alpha01
24 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.4.0-alpha01 और androidx.compose.foundation:foundation-layout:1.4.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- जेस्चर डिटेक्टर के लिए, एक नया तरीका
awaitEachGesture()जोड़ा गया. यहforEachGesture()की तरह काम करता है. हालांकि, जेस्चर पर लूप पूरी तरह सेAwaitPointerEventScopeके अंदर काम करता है, ताकि इवेंट को दोहराने के दौरान कोई इवेंट न छूटे. forEachGesture()के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,awaitEachGesture()का इस्तेमाल करें. ऐसा इसलिए, क्योंकिforEachGesture()से इवेंट के बीच में होने वाले जेस्चर का पता नहीं चलता. (Iffc3f, b/251260206)- ऐनिमेशन की प्रोग्रेस का पता लगाने और ऐनिमेशन पूरा होने के बाद IME कहां होगा, यह जानने के लिए
WindowInsets.imeAnimationSource औरWindowInsets.imeAnimationTargetजोड़ा गया. (I356f1, b/217770337)
वर्शन 1.3
वर्शन 1.3.1
9 नवंबर, 2022
androidx.compose.foundation:foundation:1.3.1 और androidx.compose.foundation:foundation-layout:1.3.1 रिलीज़ हो गए हैं. वर्शन 1.3.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BeyondBoundsLayoutमें परफ़ॉर्मेंस से जुड़ी समस्या को ठीक किया गया (aosp/2255266)ContentInViewModifierअटैच होने पर ही लेआउट के कोऑर्डिनेट पढ़ेगा (aosp/2241316)
वर्शन 1.3.0
24 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.3.0 और androidx.compose.foundation:foundation-layout:1.3.0 रिलीज़ हो गए हैं. वर्शन 1.3.0 में ये बदलाव शामिल हैं.
1.2.0 के बाद हुए ज़रूरी बदलाव
LazyVerticalStaggeredGridऔरLazyHorizontalStaggeredGridके एक्सपेरिमेंटल वर्शन लॉन्च किए गए.SnapFlingBehavior,rememberSnapFlingBehavior, और इनसे जुड़े अन्य एपीआई को एक्सपेरिमेंट के तौर पर जोड़ा गया था.Modifier.clickable,Modifier.toggleable, औरModifier.selectableपर अब कीबोर्ड या रिमोट कंट्रोल के डी-पैड से क्लिक करने पर, रिपल इफ़ेक्ट दिखता है.
वर्शन 1.3.0-rc01
5 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.3.0-rc01 और androidx.compose.foundation:foundation-layout:1.3.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
lowVelocityAnimationSpecको पेश किया गया. इसका इस्तेमाल तब किया जाता है, जब फ़्लिंग की वेलोसिटी कम होने पर अप्रोच स्टेप का इस्तेमाल किया जाता है. (Iaeb27)- टेक्स्ट में अपने-आप हाइफ़न लगने की सुविधा के लिए, एक्सपेरिमेंट के तौर पर नया API Hyphens जोड़ा गया (Iaa869)
वर्शन 1.3.0-beta03
21 सितंबर, 2022
androidx.compose.foundation:foundation:1.3.0-beta03 और androidx.compose.foundation:foundation-layout:1.3.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट में लाइन तोड़ने की सुविधा को पसंद के मुताबिक बनाने के विकल्प जोड़े गए. (I86907)
BringIntoViewResponders अब किसी अनुरोध को प्रोसेस करते समय, उसकी सबसे नई सीमाओं के बारे में जानकारी पा सकते हैं. (If86a5, b/241591211)- एक्सपेरिमेंट के तौर पर उपलब्ध
Staggered Grid(I10b82) में, आइटम के बीच की दूरी के लिए सहायता उपलब्ध कराई गई - एक्सपेरिमेंट के तौर पर उपलब्ध
Staggered Grid(I342ea) में कॉन्टेंट पैडिंग की सुविधा जोड़ी गई - चौड़ाई से जुड़ी कम से कम सीमा की शर्तों को पूरा करने के लिए,
TextMeasurer.measureतरीके मेंsize:IntSizeआर्ग्युमेंट कोconstraints: Constraintsसे बदल दिया गया है. (I37530, b/242707525) windowInsetsPaddingके बाहर इस्तेमाल करने के लिए,WindowInsetsका इस्तेमाल करकेModifier.withConsumedWindowInsets()को जोड़ा गया.- बिना दोबारा कंपोज़ किए
WindowInsetsको आसानी से बदलने की अनुमति देने के लिए,MutableWindowInsetsजोड़ा गया. (I7fd28, b/237019262, b/243119659)
वर्शन 1.3.0-beta02
7 सितंबर, 2022
androidx.compose.foundation:foundation:1.3.0-beta02 और androidx.compose.foundation:foundation-layout:1.3.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध
StaggeredGridका शुरुआती वर्शन (Ia48be) FocusDirection.InऔरFocusDirection.Outका नाम बदलकरFocusDirection.EnterऔरFocusDirection.Exitकिया गया (Ia4262, b/183746982)rememberSnapFlingBehaviorओवरलोड की सुविधा जोड़ी गई है. इससेLazyListsमें स्नैपिंग की सुविधा को तुरंत चालू किया जा सकता है. (Ifb48a)snapFlingBehaviorफ़ैक्ट्री कोSnapFlingBehaviorक्लास से बदल दिया गया है. एपीआई का इस्तेमाल करने वाले लोगों के लिए, Dp<->Px कन्वर्ज़न को आसान बनाने के लिए, Density में स्कोप किए गएSnapLayoutInfoProviderतरीके. (I54a11)LazyLayoutMeasureScope.measureको अपडेट करें, ताकि प्लेस किए जा सकने वाले आइटम की सूची दिखाई जा सके. साथ ही, दिखाई गई वैल्यू में बदलाव न किए जा सकने की सुविधा को हाइलाइट किया जा सके. (I48b7c)SnapLayoutInfoProviderको पेश किया गया है. यहLazyListStateलेता है, ताकिSnapLayoutInfoProviderका एक इंस्टेंस बनाया जा सके. इसका इस्तेमाल,LazyListsके लिए स्नैपFlingBehaviorको चालू करने के लिए किया जा सकता है. (I2dd10)
गड़बड़ियां ठीक की गईं
- अन्य await फ़ंक्शन (I646e6) से मेल खाने के लिए,
AwaitPointerEventScope#awaitLongPressOrCancellationको फिर से फ़ैक्टर करता है
वर्शन 1.3.0-beta01
24 अगस्त, 2022
androidx.compose.foundation:foundation:1.3.0-beta01 और androidx.compose.foundation:foundation-layout:1.3.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
OverscrollEffectसेpointerPositionको हटाया गया - ऐसे इफ़ेक्ट जो पॉइंटर की पोज़िशन के हिसाब से काम करते हैं वे अबeffectModifierमेंModifier.pointerInput { }का इस्तेमाल करके, पॉइंटर की मौजूदा पोज़िशन की जानकारी पा सकते हैं. (I9f606, b/241239306)- जटिल जेस्चर का पता लगाने के लिए,
AwaitPointerEventScope#awaitLongPressOrCancellationको अतिरिक्त बिल्डिंग ब्लॉक के तौर पर दिखाया गया (I04374, b/181577176) - लेज़ी लिस्ट में स्नैपिंग की सुविधा चालू करने के लिए,
lazyListSnapLayoutInfoProviderको पेश किया गया. (I3ecdf) SnapFlingBehaviorको पेश किया गया है. यह फ़्लिंग करने का एक ऐसा तरीका है जिससे सूची को स्नैप किया जा सकता है. स्नैपिंग लेआउट के बारे में जानकारी के साथSnapLayoutInfoProviderका एक इंस्टेंस दें. (Ie754c)
वर्शन 1.3.0-alpha03
10 अगस्त, 2022
androidx.compose.foundation:foundation:1.3.0-alpha03 और androidx.compose.foundation:foundation-layout:1.3.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Resource Fonts अब फ़ॉन्ट वेरिएशन सेटिंग (API 26+) सेट करने की सुविधा देते हैं. (I900dd, b/143703328)
DeviceFontFamilyNameFontमें वैरिएबल फ़ॉन्ट का इस्तेमाल किया जा सकता है (Ic1279, b/143703328)PlatformTextStyleऔरLineHeightStyleसे एक्सपेरिमेंटल एनोटेशन हटा दिया गया है. (I64bef)- अब टेक्स्ट फ़ील्ड में ज़्यादा जानकारी वाली गड़बड़ियां दिखेंगी. ऐसा तब होगा, जब
VisualTransformationसे मिलेOffsetMappingअमान्य इंडेक्स दिखाता है. (Ie73f9, b/229378536) - एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई पेश किए गए हैं, ताकि लेज़ी लेआउट के बीच आइटम उपलब्ध कराने वाले लॉजिक को शेयर किया जा सके. (Ic891c)
ScrollableDefaults.reverseDirection()अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Iba646)SemanticsModifier.idको बंद कर दिया गया है. इसके बजाय, सिमैंटिक्स आईडी कोLayoutInfo.semanticsIdमें ले जाया गया है. (Iac808, b/203559524)checkScrollableContainerConstraints()अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I2c290)Modifier.clipScrollableContainer()अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Ia2b44)TextInputService.show|hideSoftwareKeyboardका इस्तेमाल बंद करें. कृपया ऐप्लिकेशन कोड मेंSoftwareKeyboardControllerऔर IME-मैनेजमेंट कोड मेंTextInputSessionका इस्तेमाल करें. (I14e4c, b/183448615)
वर्शन 1.3.0-alpha02
27 जुलाई, 2022
androidx.compose.foundation:foundation:1.3.0-alpha02 और androidx.compose.foundation:foundation-layout:1.3.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DrawScopeपरdrawTextएक्सटेंशन फ़ंक्शन जोड़ा गया है. इससे,DrawScopeपर काम करने वाले कंपोज़ेबल और मॉडिफ़ायर, जैसे किCanvasऔरdrawBehindपर अलग-अलग स्टाइल वाला टेक्स्ट बनाया जा सकता है. (I16a62, b/190787898)
गड़बड़ियां ठीक की गईं
- अब फ़ोकस किए गए टेक्स्ट फ़ील्ड के बंद होने पर, सॉफ़्ट कीबोर्ड छिप जाएगा. (I6e3e4, b/237308379)
- वेलोसिटी ट्रैकर में
InputEventChangeइवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि सभी मामलों में वेलोसिटी का हिसाब सही तरीके से लगाया गया है. भले ही, टारगेट एलिमेंट मूव करता हो (Icea9d, b/216582726, b/223440806, b/227709803) - जब स्क्रोल किए जा सकने वाले किसी आइटम में फ़ोकस किया गया चाइल्ड आइटम होता है, तो अब वह सही तरीके से स्क्रोल करेगा. इससे फ़ोकस किए गए चाइल्ड आइटम को तब भी देखा जा सकेगा, जब उसका साइज़ कम हो जाता है. ऐसा तब भी होगा, जब साइज़ में बदलाव को ऐनिमेशन के तौर पर दिखाया गया हो. (I80867, b/230756508, b/220119990)
- उस क्रैश की समस्या को ठीक किया गया है जिसमें
TextFieldको साफ़ किया जाता है और फिर से भरा जाता है, जबकि चुनने की सुविधा चालू होती है. (I1235b, b/208655565, b/214253689)
वर्शन 1.3.0-alpha01
29 जून, 2022
androidx.compose.foundation:foundation:1.3.0-alpha01 और androidx.compose.foundation:foundation-layout:1.3.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
UrlAnnotationएनोटेशन टाइप और उससे जुड़े तरीके पेश किए गए हैं. इससेAnnotatedStringमेंTalkBackलिंक को इस्तेमाल किया जा सकेगा. (I1c754, b/231495122)
गड़बड़ियां ठीक की गईं
- अब कर्सर टाइमर को रीस्टार्ट किए बिना,
BasicTextFieldcursorBrushको ऐनिमेट किया जा सकता है. (I812e6, b/236383522)
वर्शन 1.2
वर्शन 1.2.1
10 अगस्त, 2022
androidx.compose.foundation:foundation:1.2.1 और androidx.compose.foundation:foundation-layout:1.2.1 रिलीज़ हो गए हैं. वर्शन 1.2.1 में ये बदलाव शामिल हैं.
वर्शन 1.2.0
27 जुलाई, 2022
androidx.compose.foundation:foundation:1.2.0 और androidx.compose.foundation:foundation-layout:1.2.0 रिलीज़ हो गए हैं. वर्शन 1.2.0 में ये बदलाव शामिल हैं.
1.1.0 के बाद हुए अहम बदलाव
LazyVerticalGridऔरLazyHorizontalGridअब स्थिर हो गए हैं.- अब लेज़ी लिस्ट और ग्रिड में मौजूद आइटम के लिए, कॉन्टेंट टाइप तय किया जा सकता है. इससे कॉम्पोनेंट, एलिमेंट का ज़्यादा बेहतर तरीके से फिर से इस्तेमाल कर पाएंगे.
- लेज़ी लिस्ट और ग्रिड में अब
userScrollEnabledपैरामीटर है. इससे उपयोगकर्ता के जेस्चर के ज़रिए स्क्रोल करने की सुविधा बंद की जा सकती है. LazyLayoutनाम का एक नया एक्सपेरिमेंटल एपीआई जोड़ा गया. इसका इस्तेमाल हम अंदरूनी तौर पर, लेज़ी लिस्ट और ग्रिड को बेहतर बनाने के लिए करते हैं.OverscrollEffectइस एपीआई को एक्सपेरिमेंट के तौर पर लॉन्च किया गया है. कस्टम स्क्रोल किए जा सकने वाले कंटेनर में, कस्टम ओवरस्क्रोल इफ़ेक्ट तय किए जा सकते हैं. साथ ही, स्टैंडर्ड प्लैटफ़ॉर्म इफ़ेक्ट भी जोड़ा जा सकता है.- नेस्टेड स्क्रोलिंग इंटरोऑपरेबिलिटी एपीआई पेश किए गए हैं. इनकी मदद से, व्यू और कंपोज़ स्क्रोलिंग ऐक्टर के बीच इंटरोऑपरेबिलिटी की अनुमति दी जा सकती है.
- स्क्रोल करने वाले सभी कंटेनर में, माउस और ट्रैकपैड से स्क्रोल करने की सुविधा जोड़ी गई है.
वर्शन 1.2.0-rc03
29 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc03 और androidx.compose.foundation:foundation-layout:1.2.0-rc03 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc03 में ये बदलाव शामिल हैं.
- 1.2.0-rc02 के बाद से कोई बदलाव नहीं किया गया है.
वर्शन 1.2.0-rc02
22 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc02 और androidx.compose.foundation:foundation-layout:1.2.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.2.0-rc01
15 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc01 और androidx.compose.foundation:foundation-layout:1.2.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम ओवरस्क्रॉल इफ़ेक्ट की अनुमति देने के लिए, एक्सपेरिमेंट के तौर पर
OverscrollEffectको पेश किया गया है. साथ ही,Modifier.scrollableओवरलोड भी इसे स्वीकार करते हैं. - एक्सपेरिमेंटल
LocalOverScrollConfigurationकोfoundation.gestureसे फ़ाउंडेशन पैकेज में ले जाया गया है. साथ ही, इसका नाम बदलकरLocalOverscrollConfigurationकर दिया गया है (If19fb, b/204650733) - Compose लाइब्रेरी में मौजूद इंटरफ़ेस अब jdk8 के डिफ़ॉल्ट इंटरफ़ेस के तरीकों (I5bcf1) का इस्तेमाल करके बनाए जाते हैं
- एक एक्सपेरिमेंटल एपीआई
checkScrollableContainerConstraints()लॉन्च किया गया है. इससे यह जांच की जा सकती है कि हमने स्क्रोल किए जा सकने वाले कंटेनर को नेस्ट नहीं किया है.LazyLayoutकी मदद से, स्क्रोल किए जा सकने वाले लेज़ी लेआउट बनाते समय इसका इस्तेमाल किया जा सकता है. (Id6fab, b/233352497) androidx.compose.foundation.lazyपैकेज से, बंद किए गएLazyVerticalGridको हटा दिया गया है. नया स्टेबल एपीआई,androidx.compose.foundation.lazy.grid(I73c76, b/225192009) में मौजूद है
वर्शन 1.2.0-beta03
1 जून, 2022
androidx.compose.foundation:foundation:1.2.0-beta03 और androidx.compose.foundation:foundation-layout:1.2.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.2.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर नए
IntervalListऔरMutableIntervalListजोड़े गए. इसकी मदद से, वैल्यू की किसी सूची को कई इंटरवल के ज़रिए दिखाया जा सकता है. यह तब काम आएगा, जब आपकोLazyColumnमें इस्तेमाल किए गए डीएसएल की तरह अपना डीएसएल तय करना हो. इसमें, सूची के आइटम को कई आइटम/आइटम कॉल के ज़रिए तय किया जा सकता है. (I2d05e, b/228580728)
गड़बड़ियां ठीक की गईं
WindowInsets.imeके दस्तावेज़ में यह जानकारी जोड़ी गई है कि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एपीआई में, अब इंडेक्स के हिसाब से कंपोज़ेबल लैम्डा दिखाने वाली फ़ैक्ट्री के बजाय, हमारे पास इंडेक्स स्वीकार करने वाला एक आसान कंपोज़ेबल फ़ंक्शन आइटम है. (Id2196)- LazyLayoutItemsProvider का नाम बदलकर LazyLayoutItemProvider कर दिया गया है (I0638c)
LazyLayoutItemsProvider.itemsCountका नाम बदलकरitemCount(Id409c) कर दिया गया है- ग्रेडिएंट कलरिंग की मदद से टेक्स्ट बनाने के लिए,
TextStyleऔरSpanStyleमें ब्रश जोड़ा गया. (I53869, b/187839528) trimFirstLineTopऔरtrimLastLineBottomएट्रिब्यूट केLineHeightBehaviorको बदलकर एक ही enum कर दिया गया है:LineHeightTrim.LineHeightTrimमें चार स्थितियां होती हैं, जिन्हें दो बूलियन से तय किया जाता है:FirstLineTop,LastLineBottom, दोनों, और कोई नहीं (Ifc6a5, b/181155707)TextStyleमेंLineHeightBehaviorजोड़ा गया है.ParagraphStyle. LineHeightBehaviorयह कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के सबसे ऊपर और आखिरी लाइन के सबसे नीचे लागू होती है या नहीं. यहTextStyle(lineHeight) से मिले स्पेस में लाइन के अलाइनमेंट के बारे में भी बताता है.उदाहरण के लिए,
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)के ज़रिए सीएसएस के जैसा व्यवहार किया जा सकता है.trimFirstLineTopऔरtrimLastLineBottomकॉन्फ़िगरेशन, सिर्फ़ तब सही तरीके से काम करते हैं, जबincludeFontPaddingकी वैल्यू false हो. (I97332, b/181155707)एक्सपेरिमेंट के तौर पर
imeNestedScroll()मॉडिफ़ायर जोड़ा गया है, ताकि डेवलपर स्क्रोल करके IME को कंट्रोल कर सकें. (I60759)
गड़बड़ियां ठीक की गईं
- उस रिग्रेशन को ठीक किया गया है जिसमें फ़ोकस किए गए टेक्स्ट फ़ील्ड को कंपोज़िशन से हटाने पर, कीबोर्ड नहीं छिपता था. (I7a410, b/230536793, b/225541817)
- जब ऊंचाई सीमित हो और सभी टेक्स्ट लाइनें फ़िट न हो रही हों, तो एलिप्सिस का इस्तेमाल किया जा सकता है (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoViewअब हमेशा तब तक निलंबित रहेगा, जब तक अनुरोध पूरा नहीं हो जाता या किसी नए अनुरोध की वजह से इसमें रुकावट नहीं आती. एक ही समय पर किए गए अनुरोधों को क्रम से प्रोसेस किया जाएगा. (I43e7f, b/216790855)- पूरी तरह से ओवरलैप होने वाले रेक्टैंगल के लिए, एक साथ किए गए
BringIntoViewRequester.bringIntoViewकॉल में अब सिर्फ़ बड़े रेक्टैंगल के अनुरोध को पूरा किया जाएगा. (I34be7, b/216790855, b/184760918) - डिफ़ॉल्ट रूप से
includeFontPaddingचालू किया गया.TextStyle.platformTextStyleएट्रिब्यूट का इस्तेमाल करके,includeFontPaddingको बंद किया जा सकता है. हम आने वाले समय में, डिफ़ॉल्ट सेटिंग में बदलाव करेंगे. हालांकि, तब तक हम लाइन की ऊंचाई को बेहतर बनाने से जुड़े बदलावों (aosp/2058653) को बेहतर तरीके से इंटिग्रेट कर सकते हैं. साथ ही,TextFieldक्लिप होने की समस्याओं को हल कर सकते हैं. (I01423, b/171394808) Modifier.bringIntoViewRequesterअबonGloballyPositionedका इस्तेमाल नहीं करता. (I630f5)
बाहरी योगदान
MouseInjectionScope.scroll(delta = someDelta)अब Android पर उल्टा हो गया है. ऐसा तब होता है, जब हम ऊपर से नीचे या नीचे से ऊपर की ओर स्क्रोल करते हैं. अगर कुछ डेल्टा पॉज़िटिव है, तो यह नीचे की ओर स्क्रोल करेगा (Ifb697, b/224992993)
वर्शन 1.2.0-alpha08
20 अप्रैल, 2022
androidx.compose.foundation:foundation:1.2.0-alpha08 और androidx.compose.foundation:foundation-layout:1.2.0-alpha08 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
FontFamily.SansSerifका इस्तेमाल करते समय, Android पर सिस्टम फ़ॉन्ट के लिए उपलब्ध सभी वेट दिखाएं. यह एपीआई 21 से 28 पर, फ़ॉलबैक फ़ॉन्ट के नामों का इस्तेमाल करेगा. जैसे, sans-serif-medium. यह एक व्यवहार में बदलाव है, क्योंकि इससे पहले एपीआई 21 से 28 पर सिर्फ़ 400 और 700 वज़न वाले फ़ॉन्ट इस्तेमाल किए जा सकते थे. (I380fe, b/156048036, b/226441992)- 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)- आईएमई में दशमलव सेपरेटर को शामिल करने के लिए,
KeyboardType.DecimalकोKeyboard.Numberके विकल्प के तौर पर जोड़ा गया. (Iec4c8, b/209835363) - फ़ॉन्ट फ़ॉलबैक चेन के दौरान, सिस्टम में इंस्टॉल किए गए फ़ॉन्ट को खोजने के लिए, नया फ़ॉन्ट डिस्क्रिप्टर Font(DeviceFontFamilyName) जोड़ें. (I30468, b/219754572)
PointerEventType.ScrollऔरPointerEvent.scrollDeltaअब स्टेबल एपीआई हैं (I574c5, b/225669674)TextStyle/ParagraphStyle. includeFontPaddingमेंincludeFontPaddingके लिए, कुछ समय के लिए काम करने की सुविधा वाला कॉन्फ़िगरेशन जोड़ा गया है. इसेTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))के ज़रिए बदला जा सकता है. यह माइग्रेशन को चालू करने के लिए, कॉन्फ़िगरेशन का एक अस्थायी विकल्प है. इसे हटा दिया जाएगा. (If47be, b/171394808)FontFamily.Resolverको अपडेट किया गया है, ताकि सिस्टम-वाइड टेक्स्ट को बोल्ड करने की सुविधा की सुलभता सेटिंग (I6c1e7) को इंटिग्रेट किया जा सकेComposeViewकीconsumeWindowInsetsएक्सटेंशन प्रॉपर्टी की मदद से डेवलपर, Android WindowInsets के इस्तेमाल को बंद कर सकते हैं. इससे हैरारकी में मौजूद हरComposeViews, एक-दूसरे में रुकावट डाले बिनाWindowInsetsलागू कर सकता है. (I0ef08, b/220943142)
वर्शन 1.2.0-alpha06
23 मार्च, 2022
androidx.compose.foundation:foundation:1.2.0-alpha06 और androidx.compose.foundation:foundation-layout:1.2.0-alpha06 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने का अनुरोध करने के लिए,
RequestFocusसिमैंटिक्स ऐक्शन जोड़ा गया. (I17b71) FocusOrderको अबFocusPropertiesमें मर्ज कर दिया गया है. साथ ही,focusProperties()में अबfocusOrder()की सभी सुविधाएं उपलब्ध हैं.FocusOrderऔरfocusOrder()का अब इस्तेमाल नहीं किया जा सकता.focusOrder()जोfocusRequesterस्वीकार करता है उसेfocusProperties()के साथfocusRequester()मॉडिफ़ायर से बदला जाना चाहिए. इससे मॉडिफ़ायर को अलग-अलग काम करने में मदद मिलती है. (I601b7)WindowInsets.asPaddingValues(Density)को इसलिए जोड़ा गया था, ताकि डेवलपर कंपोज़िशन में शामिल हुए बिना कन्वर्ज़न कर सकें. (I94c35)- वेक्टर ड्रॉएबल को पार्स करने की सुविधा को अपडेट किया गया है. इससे,
VectorPainterके कॉन्टेंट को अपने-आप मिरर करने की सुविधा मिलती है. ऐसा तब होता है, जब मौजूदा लेआउट की दिशा RTL होती है. (I79cd9, b/185760237)
गड़बड़ियां ठीक की गईं
- स्क्रोल मॉडिफ़ायर (
Modifier.verticalScroll(),Modifier.horizontalScroll(), औरModifier.scrollable()) अब स्क्रोल करके, फ़ोकस किए गए कंपोज़ेबल को तब भी दिखाएंगे, जब स्क्रोल एरिया का साइज़ बदला गया हो और फ़ोकस किया गया कंपोज़ेबल पहले दिख रहा हो. - अब टेक्स्ट फ़ील्ड को कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब टेक्स्ट फ़ील्ड पर फ़ोकस किया गया हो और कीबोर्ड दिख रहा हो. साथ ही, जब टेक्स्ट फ़ील्ड को स्क्रोल किया जा सकता हो और सॉफ़्ट इनपुट मोड
ADJUST_RESIZEपर सेट हो. (I4a485, b/190539358, b/192043120, b/216842427)
वर्शन 1.2.0-alpha05
9 मार्च, 2022
androidx.compose.foundation:foundation:1.2.0-alpha05 और androidx.compose.foundation:foundation-layout:1.2.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyVerticalGridऔरLazyHorizontalGridअब स्थिर हो गए हैं. (I307c0)LazyGridItemInfo.Unknownको अलग-अलगLazyGridItemInfo.UnknownRowऔरLazyGridItemInfo.UnknownColumnसे बदल दिया गया (I56d51)LazyVerticalGrid/LazyHorizontalGridऔर इससे जुड़ी सभी एपीआई को.gridसब-पैकेज में ले जाया गया है. कृपयाandroidx.compose.foundation.lazyसेandroidx.compose.foundation.lazy.gridमें इंपोर्ट किए गए डेटा को अपडेट करें. (I2d446, b/219942574)- टेक्स्ट:
includeFontPaddingअब डिफ़ॉल्ट रूप से बंद है.includeFontPadding=falseकी वजह से होने वाली क्लिपिंग की समस्याओं को ठीक किया जाता है. साथ ही, लंबी स्क्रिप्ट के लिए क्लिपिंग नहीं होनी चाहिए. (I31c84, b/171394808) - मेज़र किए गए इंटरफ़ेस में अब parentData प्रॉपर्टी (I3313f) दिखती है
Modifier.onFocusedBoundsChangedको एक्सपेरिमेंट के तौर पर लॉन्च किया गया है, ताकि बच्चों के लिए फ़ोकस किए जा सकने वाले एलिमेंट की सीमाओं को देखा जा सके. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)- LazyHorizontalGrid को जोड़ा गया. (I61ae7, b/191238807)
- क्रॉस ऐक्सिस के साइज़ तय करने के लिए, नया
LazyVerticalGridAPI जोड़ा गया (I17723) - FocusGroup मॉडिफ़ायर जोड़ा गया (I64bc0, b/213508274, b/184670295)
गड़बड़ियां ठीक की गईं
WindowInsets.toString()अब सही वैल्यू दिखाएगा. (I1585d)
बाहरी योगदान
- Kotlinx coroutines 1.6.0 का इस्तेमाल करने के लिए अपडेट किया गया (I3366d)
वर्शन 1.2.0-alpha04
23 फ़रवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha04 और androidx.compose.foundation:foundation-layout:1.2.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BringIntoViewRespondersको अब पैरंट रिस्पॉन्डर को मैन्युअल तरीके से अनुरोध भेजने की ज़रूरत नहीं है. इसके बजाय, उन्हें तुरंत वह रेक्टैंगल दिखाना होगा जिसे वे चाहते हैं कि उनका पैरंट व्यू में लाए. (I8e66a)- टेक्स्ट में एसिंक फ़ॉन्ट लोडिंग की सुविधा जोड़ी गई (I77057, b/214587005)
LazyVerticalGridअब उन आइटम से पहलेline breakingको सपोर्ट करता है जिनका स्पैन मौजूदा लाइन में फ़िट नहीं होता. (I05c40, b/207462103)excludeFromSystemGesturesका नाम बदलकरsystemGesturesExclusionकिया गया (I19526)LazyVerticalGridअब reverseLayout के साथ काम करता है. (I6d7d7, b/215572963, b/211753558)- डेवलपर को सिर्फ़ WindowInsets से डाइमेंशन शामिल करने की अनुमति देने के लिए,
WindowInsets.only()तरीका जोड़ें. (I14c94, b/217768486) ComposableTarget,ComposableTargetMarker, औरComposableOpenTargetजोड़ा गया है. इससे कंपाइल टाइम रिपोर्टिंग की जा सकती है. इससे यह पता चलता है कि किसी ऐप्लिकेशन को टारगेट करने वाले कंपोज़ेबल फ़ंक्शन को कब कॉल किया जाता है. हालांकि, इसे इस्तेमाल करने के लिए डिज़ाइन नहीं किया गया था.ज़्यादातर मामलों में, कंपोज़ कंपाइलर प्लगिन से एनोटेशन का अनुमान लगाया जा सकता है. इसलिए, इन एनोटेशन का सीधे तौर पर इस्तेमाल कम ही करना चाहिए. ऐसे मामले जिनमें अनुमान नहीं लगाया जा सकता उनमें कस्टम ऐप्लिकेशन बनाना और उसका इस्तेमाल करना, ऐब्स्ट्रैक्ट कंपोज़ेबल फ़ंक्शन (जैसे कि इंटरफ़ेस के तरीके), कंपोज़ेबल लैम्ब्डा (लोकल वैरिएबल और पैरामीटर का अनुमान लगाया जाता है) वाले फ़ील्ड या ग्लोबल वैरिएबल या
ComposeNodeया उससे जुड़े कंपोज़ेबल फ़ंक्शन का इस्तेमाल करना शामिल है.कस्टम ऐप्लिकेशन के लिए,
ComposeNodeयाReusableComposeNodeको कॉल करने वाले कंपोज़ेबल फ़ंक्शन को फ़ंक्शन और किसी भी कंपोज़ेबल लैम्ब्डा पैरामीटर टाइप के लिए,CompoableTargetएनोटेशन जोड़ना होगा. हालांकि, हमारा सुझाव है कि आप ऐसा एनोटेशन बनाएं जिसमेंComposableTargetMarkerके साथ एनोटेट किया गया हो. इसके बाद, सीधेComposableTargetका इस्तेमाल करने के बजाय, मार्क किए गए एनोटेशन का इस्तेमाल करें.ComposableTargetMarkerके तौर पर मार्क किया गया कंपोज़ेबल एनोटेशन,ComposbleTargetके बराबर होता है. इसमें एट्रिब्यूट क्लास का पूरी तरह क्वालिफ़ाइड नाम, ऐप्लिकेशन पैरामीटर के तौर पर होता है.ComposableTargetMarkerका इस्तेमाल करने का उदाहरण देखने के लिए,anroidx.compose.ui.UiComposableदेखें. (I38f11)
गड़बड़ियां ठीक की गईं
- अब
LazyGridState.scrollToItem()औरLazyGridState.animateScrollToItem()में नेगेटिव स्क्रोल ऑफ़सेट पास करने की अनुमति है. (I025c6, b/211753558) - TextField के लिए, फ़ॉन्ट को एसिंक तरीके से लोड करने की सुविधा जोड़ी गई. (Icc4bf, b/214587005)
वर्शन 1.2.0-alpha03
9 फ़रवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha03 और androidx.compose.foundation:foundation-layout:1.2.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TextInputSessionऔरTextInputServiceमें मौजूदnotifyFocusedRectतरीकों को अब बंद कर दिया गया है और इन्हें कॉल नहीं किया जाएगा. इसके बजाय,BringIntoViewRequesterका इस्तेमाल करें. (Ia4302, b/192043120, b/216842427, b/178211874)- Modifier.animateItemPlacement() का इस्तेमाल करके, लेज़ी ग्रिड के आइटम के लिए ऐनिमेशन चालू किए गए. (Ib6621, b/211753218)
BringIntoViewRequesterअब अनुरोधों को होस्टिंग वाले Android व्यू पर भेजता है. (Ia7a51)FontFamilyResolverअबLocalFontFamilyResolver.currentके ज़रिए उपलब्ध है- Compose के बाहर FontFamily रिज़ॉल्वर बनाने के लिए,
createFontFamilyResolver(context)औरcreateFontFamilyResolver(context, coroutineScope)जोड़े गए हैं. - पैराग्राफ़ और मल्टीपैराग्राफ़ अब
FontFamily.Resolverलेते हैं TextLayoutResult.layoutInput.fontFamilyResolverमें अब इस लेआउट के लिए इस्तेमाल किया गया रिज़ॉल्वर शामिल है.TextLayoutResult.layoutInput.resourceLoaderको अब इस्तेमाल नहीं किया जाता, इसलिए इसे बंद कर दिया गया है. (Id5a45, b/174162090)
- Compose के बाहर FontFamily रिज़ॉल्वर बनाने के लिए,
- Android पर नए टाइप के फ़ॉन्ट रिसॉर्स डिस्क्रिप्टर उपलब्ध कराने के लिए, नया लो-लेवल एपीआई
AndroidFontजोड़ा गया है. उदाहरण के लिए, किसी ऐप्लिकेशन के बैकएंड से फ़ॉन्ट लोड करना, उपयोगकर्ता के डिवाइस पर पहले से इंस्टॉल किए गए फ़ॉन्ट का पता लगाना या फ़ॉन्ट फ़ैक्ट्री की ओर से उपलब्ध नहीं कराए गए किसी संसाधन से फ़ॉन्ट लोड करना.Font.ResourceLoadedएपीआई को बेहतर बनाया गया है, ताकि फ़ॉन्ट को वैकल्पिक तौर पर और एसिंक तरीके से लोड किया जा सके. हमारा सुझाव है कि ऐप्लिकेशन डेवलपर इस एपीआई का सीधे तौर पर इस्तेमाल न करें. नए तरह के फ़ॉन्ट जोड़ने के लिए, AndroidFont देखें.Font.AndroidResourceLoaderएक्सटेंशन फ़ंक्शन, कंपोज़िशन से बाहर होने परFont.ResourceLoaderबनाने की अनुमति देता है.- संसाधन पर आधारित फ़ॉन्ट में
loadingStrategyपैरामीटर जोड़ा गया है, ताकि संसाधन फ़ॉन्ट, डाउनलोड किए जा सकने वाले फ़ॉन्ट के एक्सएमएल को रेफ़रंस करते समय एसिंक लोडिंग की अनुमति दी जा सके. (Ie5aea, b/174162090)
Typeface(FontFamily)कंस्ट्रक्टर का अब इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. डाउनलोड किए जा सकने वाले फ़ॉन्ट के साथ, यह कॉल 10 सेकंड के लिए ब्लॉक हो सकता है. इसके बजाय,FontFamilyResolver.preloadका इस्तेमाल करेंfontResource(FontFamily): Typefaceके इस्तेमाल पर रोक लगा दी गई है. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. इसके बजाय,FontFamilyResolver.preload(If8e7c, b/174162090) का इस्तेमाल करें
- अब
LazyVerticalGridफ़ंक्शन के आइटम के लिए, कॉन्टेंट टाइप तय किया जा सकता है.LazyGridScopeपर मौजूद item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लिए लॉजिक का दोबारा इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ दोबारा इस्तेमाल किया जा सकता है. (I7b355, b/215372836) LazyListLayoutInfoऔरLazyGridLayoutInfoमें अब नई प्रॉपर्टी हैं:viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410)- अब LazyColumn/LazyRow के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है. LazyListScope पर मौजूद item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लिए लॉजिक का दोबारा इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ दोबारा इस्तेमाल किया जा सकता है. (I26506)
maxSlotsToRetainForReuseको स्वीकार करने वालेSubcomposeLayoutStateकंस्ट्रक्टर का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, एक नया कंस्ट्रक्टर है जोSubcomposeSlotReusePolicyस्वीकार करता है. यह एक नया इंटरफ़ेस है, जो यह तय करने के लिए ज़्यादा विस्तृत कंट्रोल देता है कि किन स्लॉट को आने वाले समय में फिर से इस्तेमाल किया जाना चाहिए. (I52c4d)- यह WindowInsets के लिए मॉडिफ़ायर जोड़ता है. ये मॉडिफ़ायर, पैडिंग और साइज़िंग, दोनों के लिए होते हैं. इससे कुछ कॉन्टेंट को इंसर्ट एरिया में बढ़ाया जा सकता है. हालांकि, मुख्य कॉन्टेंट अब भी इंसर्ट एरिया से बाहर रहेगा. उदाहरण के लिए, windowInsetsPadding का इस्तेमाल करके, कॉन्टेंट वाले हिस्से में पैडिंग जोड़ी जा सकती है. इससे, उन हिस्सों से बचा जा सकता है जो पूरी तरह या कुछ हद तक ढके हुए हो सकते हैं. (Id0395, b/213942085)
गड़बड़ियां ठीक की गईं
- अब टेक्स्ट फ़ील्ड को कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब टेक्स्ट फ़ील्ड पर फ़ोकस किया गया हो और कीबोर्ड दिख रहा हो. साथ ही, सॉफ़्ट इनपुट मोड
ADJUST_PANपर सेट हो. (I8eaeb, b/190539358, b/192043120) - डेस्कटॉप,
FontFamily.Resolverके लिए कंपोज़िशन लोकल का इस्तेमाल करता है- डेस्कटॉप पर
FontLoaderकी सुविधा अब काम नहीं करती - डेस्कटॉप पर नई
createFontFamilyResolverफ़ैक्ट्री (I6bbbb, b/174162090)
- डेस्कटॉप पर
- टेक्स्ट फ़ील्ड के बीच फ़ोकस बदलने पर, अब सॉफ़्ट कीबोर्ड का इनपुट टाइप नहीं चमकता. (I1bf50, b/187746439)
- कर्सर हैंडल दिखने पर, अब टेक्स्ट फ़ील्ड में वापस जाने के लिए अतिरिक्त बैक बटन दबाने की ज़रूरत नहीं है. (Ideb4b, b/205726883)
- टेक्स्ट चुनने की सुविधा के लिए Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)
वर्शन 1.2.0-alpha02
26 जनवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha02 और androidx.compose.foundation:foundation-layout:1.2.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- उन तरीकों में
NonRestartableComposableजोड़ा गया है जो जटिल लॉजिक के बिना, मौजूदा तरीकों के ओवरलोड हैं. इससे, कॉल किए गए इनर फ़ंक्शन में दोहराए गए सभी पैरामीटर के लिए, कंपाइलर के जनरेट किए गए मेमोइज़ेशन चेक (बराबर) कम हो जाते हैं. (I90490) - Android के
setSystemGestureExclusionRectsको आसानी से ऐक्सेस करने के लिए,excludeFromSystemGestureमॉडिफ़ायर जोड़े गए (I46f07)
गड़बड़ियां ठीक की गईं
- टेक्स्ट चुनने की सुविधा के लिए Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScrollऔरModifier.scrollableका इस्तेमाल करने वाले अन्य कंटेनर में अब माउस व्हील से स्क्रोल करने की सुविधा काम करती है. (I2b5e1, b/198214718)
वर्शन 1.2.0-alpha01
12 जनवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha01 और androidx.compose.foundation:foundation-layout:1.2.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- उपयोगकर्ताओं को टच जेस्चर या सुलभता कार्रवाइयों के ज़रिए, उपयोगकर्ता की ओर से शुरू किए गए स्क्रोल को कुछ समय के लिए या हमेशा के लिए बंद करने की अनुमति देने के लिए,
LazyColumn,LazyRow, औरLazyVerticalGridमें नया पैरामीटरuserScrollEnabledजोड़ा गया. हालांकि, प्रोग्राम के हिसाब से स्क्रोल करने की सुविधा अब भी उपलब्ध रहेगी. इसके लिए, आपको स्टेट पर मौजूद तरीकों का इस्तेमाल करना होगा. (I7eae9, b/201150093) - स्क्रीन पर मौजूद कॉन्टेंट को बड़ा करके दिखाने की सुविधा के मॉडिफ़ायर में
onSizeChangedकॉलबैक जोड़ें. (I6879f) - अब
SelectionContainerमें सिलेक्शन हैंडल को खींचते समय, मैग्नीफ़ायर विजेट दिखता है. (I30b38, b/139320979)
गड़बड़ियां ठीक की गईं
- इस अपडेट में,
TextFieldकर्सर हैंडल के न दिखने की समस्या को ठीक किया गया है. यह समस्या तब होती थी, जब कर्सर को स्क्रोल करके व्यू से बाहर कर दिया जाता था. (I14552, b/208883748)
डिपेंडेंसी से जुड़े अपडेट
- अब Kotlin
1.6.10पर निर्भर करता है.
वर्शन 1.1
वर्शन 1.1.1
23 फ़रवरी, 2022
androidx.compose.foundation:foundation:1.1.1 और androidx.compose.foundation:foundation-layout:1.1.1 रिलीज़ हो गए हैं. वर्शन 1.1.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
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 के हिसाब से, मटीरियल कॉम्पोनेंट, लेआउट स्पेस को बड़ा करेंगे, ताकि टच टारगेट साइज़ के लिए, मटीरियल के सुलभता से जुड़े दिशा-निर्देशों का पालन किया जा सके. उदाहरण के लिए, अगर आपने बटन का साइज़ छोटा सेट किया है, तब भी बटन का टच टारगेट कम से कम 48x48dp तक बढ़ जाएगा. इससे Compose Material, मटीरियल डिज़ाइन कॉम्पोनेंट के जैसा ही काम करता है. साथ ही, Views और Compose को एक साथ इस्तेमाल करने पर, एक जैसा अनुभव मिलता है. इस बदलाव से यह भी पक्का होता है कि Compose Material कॉम्पोनेंट का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) बनाते समय, टच टारगेट की ऐक्सेसिबिलिटी से जुड़ी ज़रूरी शर्तें पूरी हों.
- नेविगेशन रेल के लिए स्टेबल सपोर्ट
- पहले एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल वर्शन में अपग्रेड करता है
- Kotlin के नए वर्शन के लिए सहायता
वर्शन 1.1.0-rc03
26 जनवरी, 2022
androidx.compose.foundation:foundation:1.1.0-rc03 और androidx.compose.foundation:foundation-layout:1.1.0-rc03 रिलीज़ हो गए हैं. वर्शन 1.1.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose Material 1.1.0-rc03 के साथ काम करने के लिए अपडेट किया गया
वर्शन 1.1.0-rc01
15 दिसंबर, 2021
androidx.compose.foundation:foundation:1.1.0-rc01 और androidx.compose.foundation:foundation-layout:1.1.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.1.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब
LazyListState.scrollToItem()औरLazyListState.animateScrollToItem()में नेगेटिव स्क्रोल ऑफ़सेट पास करने की अनुमति है. (Iceb90, b/184252837) - ऐक्सेसिबिलिटी से जुड़ी स्क्रोल करने की कार्रवाइयों (I7cbfb) के गायब होने की वजह बनने वाली गड़बड़ी को ठीक किया गया है
वर्शन 1.1.0-beta04
1 दिसंबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta04 और androidx.compose.foundation:foundation-layout:1.1.0-beta04 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Kotlin
1.6.0के साथ काम करने के लिए अपडेट किया गया
एपीआई में हुए बदलाव
androidx.core.viewमें नल वैल्यू की समस्या ठीक की गई(I7078a, b/204917439)- ऐसे एक्सपेरिमेंटल एपीआई जोड़े गए हैं जो PointerInputchange को पूरी तरह से इस्तेमाल करने या यह देखने की अनुमति देते हैं कि इसका इस्तेमाल किया गया है या नहीं. (I2e59d)
- टेक्स्ट फ़ील्ड में कर्सर या चुनने वाले हैंडल को खींचते समय, मैग्निफ़ायर विजेट दिखाएं. (I5391e, b/203781358)
गड़बड़ियां ठीक की गईं
- IME की दृश्यता बदलने पर, टेक्स्ट हैंडल के न हिलने की समस्या ठीक की गई. (I25f2e)
वर्शन 1.1.0-beta03
17 नवंबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta03 और androidx.compose.foundation:foundation-layout:1.1.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyVerticalGrid में हॉरिज़ॉन्टल स्पैन के लिए सहायता जोड़ी गई. (I7e2fa, b/176758183)
लेज़ी लिस्ट में आइटम की पोज़िशन को ऐनिमेट करने की एक्सपेरिमेंटल सुविधा जोड़ी गई. LazyItemScope में एक नया मॉडिफ़ायर उपलब्ध है, जिसे
Modifier.animateItemPlacement()कहा जाता है. इस्तेमाल का उदाहरण:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }LazyListScope.itemयाLazyListScope.itemsके ज़रिए कोई कुंजी देने पर, यह मॉडिफ़ायर आइटम को फिर से क्रम में लगाने वाले ऐनिमेशन चालू कर देगा. आइटम की क्रम बदलने के अलावा, इवेंट की वजह से होने वाले अन्य सभी बदलावों को भी ऐनिमेट किया जाएगा. जैसे, आइटम के क्रम या अलाइनमेंट में बदलाव. (I59e7b, b/150812265)
वर्शन 1.1.0-beta02
3 नवंबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta02 और androidx.compose.foundation:foundation-layout:1.1.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब रिपल और अन्य इंडिकेशन सिर्फ़ तब देर से दिखेंगे, जब वे
Modifier.scrollable()कंटेनर के अंदर हों. ऐसा हमेशा डाउन इवेंट के लिए नहीं होगा. (Ibefe0, b/203141462) - BringIntoView API का एक्सपेरिमेंटल वर्शन जोड़ा गया है. इसकी मदद से, माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे स्क्रोल करके किसी आइटम को देख सकें (Ib918d, b/195353459)
बाहरी योगदान
Modifier.pointerHoverIconको जोड़ा गया (I95f01)
वर्शन 1.1.0-beta01
27 अक्टूबर, 2021
androidx.compose.foundation:foundation:1.1.0-beta01 और androidx.compose.foundation:foundation-layout:1.1.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.1.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- BringIntoView API का एक्सपेरिमेंटल वर्शन जोड़ा गया है. इसकी मदद से, माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे स्क्रोल करके किसी आइटम को देख सकें (Ib918d, b/195353459)
वर्शन 1.1.0-alpha06
13 अक्टूबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha06 और androidx.compose.foundation:foundation-layout:1.1.0-alpha06 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लेआउट के लिए, बिना चाइल्ड नोड वाला ओवरलोड जोड़ा गया है. इससे परफ़ॉर्मेंस बेहतर हुई है (Ib0d9a)
- अब
SemanticsNodeInteraction.performSemanticsActionफ़ंक्शन, उसSemanticsNodeInteractionको दिखाता है जिस पर फ़ंक्शन को कॉल किया गया था. (I9e5db) performScrollToNode(matcher: SemanticsMatcher)जोड़ा गया है. यह स्क्रोल किए जा सकने वाले कंटेनर को उस कॉन्टेंट तक स्क्रोल करता है जो दिए गए मैच करने वाले फ़ंक्शन से मैच करता है. (Ic1cb8)
वर्शन 1.1.0-alpha05
29 सितंबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha05 और androidx.compose.foundation:foundation-layout:1.1.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- PointerEventChange में एक्सपेरिमेंट के तौर पर उपलब्ध हिस्टोरिकल पॉइंटर जोड़े गए. (Ic1fd8, b/197553056, b/199921305)
गड़बड़ियां ठीक की गईं
- स्क्रोल करने की सुविधा के साथ-साथ, स्क्रोल किए जा सकने वाले (लेज़ी और नॉन-लेज़ी, दोनों) आइटम के लिए ऐक्सेसिबिलिटी की सुविधा से जुड़ी समस्या ठीक की गई (I6cdb0)
वर्शन 1.1.0-alpha04
15 सितंबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha04 और androidx.compose.foundation:foundation-layout:1.1.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब काम न करने वाले
performGestureऔरGestureScopeकोperformTouchInputऔरTouchInjectionScopeसे बदल दिया गया है. (Ia5f3f, b/190493367) touchBoundsInRootकोSemanticsNodeमें जोड़ा गया है. इसमें टच टारगेट का कम से कम साइज़ शामिल है, ताकि डेवलपर यह पक्का कर सकें कि टच टारगेट, ऐक्सेसिबिलिटी से जुड़ी ज़रूरी शर्तों को पूरा करते हों. (I2e14b, b/197751214)
गड़बड़ियां ठीक की गईं
- Android 12 डिवाइसों पर, स्ट्रेच ओवरस्क्रोल की सुविधा जोड़ी गई है. (Iccf3c, b/171682480)
वर्शन 1.1.0-alpha03
1 सितंबर, 2021
androidx.compose.foundation:foundation:1.1.0-alpha03 और androidx.compose.foundation:foundation-layout:1.1.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Compose
1.1.0-alpha03को Kotlin1.5.30पर निर्भर रहने के लिए अपडेट किया गया. (I74545)
एपीआई में हुए बदलाव
- स्क्रोल करने पर दिखने वाले ग्लो इफ़ेक्ट को जोड़ा गया है. नया एक्सपेरिमेंटल OverScrollConfiguration API जोड़ा गया है. इससे ओवरस्क्रॉल के विज़ुअल इफ़ेक्ट को कॉन्फ़िगर किया जा सकता है. ओवरस्क्रोल इफ़ेक्ट को बंद करने के लिए, शून्य वैल्यू दें. (I0c304, b/171682480)
- AwaitPointerEventScope में अब withTimeout() और withTimeoutOrNull() फ़ंक्शन उपलब्ध हैं (I507f0, b/179239764, b/182397793)
- क्लिप किए गए बाउंड्री पाने के लिए, टेस्ट का तरीका जोड़ा गया. (I6b28e)
- ViewConfiguration में, कम से कम टच टारगेट का साइज़ जोड़ा गया है. इसका इस्तेमाल सिमैंटिक्स और पॉइंटर इनपुट में किया जाता है, ताकि ऐक्सेसिबिलिटी को बेहतर बनाया जा सके. (Ie861c)
वर्शन 1.1.0-alpha02
18 अगस्त, 2021
androidx.compose.foundation:foundation:1.1.0-alpha02 और androidx.compose.foundation:foundation-layout:1.1.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Modifier.sizeऔरrequiredSizeके लिए DpSize वर्शन जोड़े गए (I3fc7e, b/194219828)
वर्शन 1.1.0-alpha01
4 अगस्त, 2021
androidx.compose.foundation:foundation:1.1.0-alpha01 और androidx.compose.foundation:foundation-layout:1.1.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DrawScope#drawImageतरीके को अपडेट किया गया है. यह सोर्स और डेस्टिनेशन रेक्ट का इस्तेमाल करता है, ताकि फ़िल्टर क्वालिटी पैरामीटर का इस्तेमाल किया जा सके. यह पिक्सल आर्ट के लिए फ़ायदेमंद है. पिक्सल आर्ट को पिक्सल के आधार पर बनाया जाता है और इसे बड़ा करने पर पिक्सलेट किया जाता है. BitmapPainter और Image कंपोज़ेबल को अपडेट किया गया है, ताकि वे FilterQuality पैरामीटर का इस्तेमाल कर सकें. हालांकि, यह पैरामीटर इस्तेमाल करना ज़रूरी नहीं है (Ie4fb0, b/180311607)- अब 'वापस जाएं' बटन दबाने पर, TextField में चुना गया टेक्स्ट हट जाता है. यह Android के EditText के जैसा ही है. (I3ca16, b/174173645)
- कर्सर हैंडल जोड़ें. (I07a82, b/173016579)
गड़बड़ियां ठीक की गईं
- लेज़ी लिस्ट और रेगुलर स्क्रोलिंग कॉम्पोनेंट के लिए, सिमैंटिक्स ऐक्शन के ज़रिए स्क्रोल करने की सुविधा अब ऐनिमेटेड है (Id9066, b/190742024)
बाहरी योगदान
LazyVerticalGridअब हॉरिज़ॉन्टल और वर्टिकल, दोनों तरह के अरेंजमेंट पैरामीटर स्वीकार करता है. (If9c92)
संस्करण 1.0
वर्शन 1.0.5
3 नवंबर, 2021
androidx.compose.foundation:foundation:1.0.5 और androidx.compose.foundation:foundation-layout:1.0.5 रिलीज़ हो गए हैं. वर्शन 1.0.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- derivedStateOf इंस्टेंस को ट्रैक करने के दौरान क्रैश होने की समस्या ठीक की गई. (aosp/1792247)
वर्शन 1.0.4
13 अक्टूबर, 2021
androidx.compose.foundation:foundation:1.0.4 और androidx.compose.foundation:foundation-layout:1.0.4 रिलीज़ हो गए हैं. वर्शन 1.0.4 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.31पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.3
29 सितंबर, 2021
androidx.compose.foundation:foundation:1.0.3 और androidx.compose.foundation:foundation-layout:1.0.3 रिलीज़ हो गए हैं. वर्शन 1.0.3 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.30पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.2
1 सितंबर, 2021
androidx.compose.foundation:foundation:1.0.2 और androidx.compose.foundation:foundation-layout:1.0.2 रिलीज़ हो गए हैं. वर्शन 1.0.2 में ये बदलाव शामिल हैं.
Compose 1.0.2 की रिलीज़ के साथ काम करने के लिए अपडेट किया गया. Compose 1.0.2 अब भी Kotlin 1.5.21 के साथ काम करता है.
वर्शन 1.0.1
4 अगस्त, 2021
androidx.compose.foundation:foundation:1.0.1 और androidx.compose.foundation:foundation-layout:1.0.1 रिलीज़ हो गए हैं. वर्शन 1.0.1 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.21पर निर्भर रहने के लिए अपडेट किया गया.
वर्शन 1.0.0
28 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0 और androidx.compose.foundation:foundation-layout:1.0.0 रिलीज़ हो गए हैं. वर्शन 1.0.0 में ये बदलाव शामिल हैं.
1.0.0 वर्शन की मुख्य सुविधाएं
यह Compose का पहला स्टेबल वर्शन है. ज़्यादा जानकारी के लिए, कृपया Compose रिलीज़ का आधिकारिक ब्लॉग देखें!
मौजूदा समस्याएं
अगर Android Studio Bumblebee Canary 4 या AGP
7.1.0-alpha04/7.1.0-alpha05का इस्तेमाल किया जा रहा है, तो आपको यह क्रैश दिख सकता है:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"इस समस्या को ठीक करने के लिए, अपनी
build.gradleफ़ाइल में minSdkVersion को कुछ समय के लिए 24 या उससे ज़्यादा पर सेट करें. इस समस्या को Android Studio Bumblebee और AGP7.1के अगले वर्शन में ठीक कर दिया जाएगा. (b/194289155)
वर्शन 1.0.0-rc02
14 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0-rc02 और androidx.compose.foundation:foundation-layout:1.0.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.
- जेनरिक शेप के लिए, बॉर्डर रेंडरिंग को अपडेट किया गया है. इससे, तय डाइमेंशन के साथ तय किए गए पाथ से जुड़ी समस्याओं को हल किया जा सकेगा. (aosp/1748871, b/191817116)
वर्शन 1.0.0-rc01
1 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0-rc01 और androidx.compose.foundation:foundation-layout:1.0.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Canvas में अब accessibility के लिए, contentDescription पैरामीटर काम करता है. (Ib547c)
गड़बड़ियां ठीक की गईं
- डिसैबल किया गया बटन, कार्ड, चेकबॉक्स, और
Modifier.clickable(enabled=false), माता-पिता को क्लिक करने से रोकेंगे. (Ic2c3b, b/183908811)
वर्शन 1.0.0-beta09
16 जून, 2021
androidx.compose.foundation:foundation:1.0.0-beta09 और androidx.compose.foundation:foundation-layout:1.0.0-beta09 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ManualFrameClockको हटाया गया. अगर आपको ऐनिमेशन कंट्रोल करने हैं, तोcomposeTestRule.mainClockका इस्तेमाल करें. (I3c3e8, b/189951065)- enum Role और LiveRegionMode को प्राइवेट कंस्ट्रक्टर (Id1890) के साथ इनलाइन क्लास में बदलें
- KeyboardCapitalization को इनलाइन क्लास में बदल दिया गया है. (Id5a1c)
- TextOverflow को इनलाइन क्लास में बदल दिया गया है. (I433af)
गड़बड़ियां ठीक की गईं
- अब LazyColumn/Row आइटम के लिए यूनीक कुंजियां तय करने पर, स्क्रोल की पोज़िशन को कुंजी के आधार पर बनाए रखा जाएगा. इसका मतलब है कि अगर मौजूदा दिखने वाले आइटम से पहले आइटम जोड़े/हटाए जाते हैं, तो दी गई कुंजी वाला आइटम, पहले दिखने वाले आइटम के तौर पर बना रहेगा. (Id263f, b/184257857)
- फ़िलहाल, मुख्य कॉन्स्टेंट @ExperimentalComposeUiApi हैं. कोड का इस्तेमाल करने वाला व्यक्ति, कोड के स्थिर होने से पहले ही प्राइवेट कॉन्स्टेंट का एलान कर सकता है. (Ia5d48)
- AndroidComposeTestRule में IdlingStrategy जोड़ा गया है. इसका इस्तेमाल टेस्टिंग फ़्रेमवर्क कर सकते हैं, ताकि इंतज़ार करने या शांत स्थिति पाने के लिए कोई दूसरा तरीका इंस्टॉल किया जा सके. अपनी रणनीति को इंस्टॉल करने के लिए, टेस्ट शुरू होने से पहले
AndroidComposeTestRule.setIdlingStrategyFactory()का इस्तेमाल करें. (I608fa)
प्रोफ़ाइल के नियम जोड़े गए
इस रिलीज़ में, कंपोज़ मॉड्यूल (I14ed6) में प्रोफ़ाइल के नियम जोड़े गए हैं:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
प्रोफ़ाइल के नियम क्या होते हैं?
किसी लाइब्रेरी के लिए प्रोफ़ाइल के नियम,
src/mainया उससे मिलती-जुलती डायरेक्ट्री में मौजूद टेक्स्ट फ़ाइलbaseline-prof.txtमें तय किए जाते हैं. फ़ाइल में हर लाइन के लिए एक नियम तय किया जाता है. इस मामले में, नियम एक ऐसा पैटर्न होता है जिसका इस्तेमाल लाइब्रेरी में मौजूद तरीकों या क्लास से मिलान करने के लिए किया जाता है. इन नियमों का सिंटैक्स, एआरटी प्रोफ़ाइल फ़ॉर्मैट का सुपरसेट है. इसे आसानी से पढ़ा जा सकता है. इसका इस्तेमालadb shell profman --dump-classes-and-methods ...का इस्तेमाल करते समय किया जाता है. ये नियम, दो में से किसी एक फ़ॉर्म में होते हैं. इनका इस्तेमाल, तरीकों या क्लास को टारगेट करने के लिए किया जाता है.किसी तरीके के लिए बनाए गए नियम का पैटर्न इस तरह होगा:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>क्लास के लिए बनाए गए नियम का पैटर्न इस तरह होगा:
<CLASS_DESCRIPTOR>यहां
<FLAGS>,H,S, औरPमें से एक या उससे ज़्यादा वर्ण हैं. इनसे यह पता चलता है कि इस तरीके को "हॉट", "स्टार्टअप" या "पोस्ट स्टार्टअप" के तौर पर फ़्लैग किया जाना चाहिए या नहीं.<CLASS_DESCRIPTOR>उस क्लास का डिस्क्रिप्टर है जिससे टारगेट किया गया तरीका जुड़ा है. उदाहरण के लिए, क्लासandroidx.compose.runtime.SlotTableका डिस्क्रिप्टरLandroidx/compose/runtime/SlotTable;होगा.<METHOD_SIGNATURE>, मेथड का सिग्नेचर होता है. इसमें मेथड का नाम, पैरामीटर टाइप, और रिटर्न टाइप शामिल होते हैं. उदाहरण के लिए,LayoutNodeपर मौजूदfun isPlaced(): Booleanतरीके का सिग्नेचरisPlaced()Zहै.इन पैटर्न में वाइल्डकार्ड (
**,*, और?) हो सकते हैं, ताकि एक नियम में कई तरीके या क्लास शामिल हों.
नियमों से क्या होता है?
जिस तरीके में
Hफ़्लैग होता है उससे पता चलता है कि यह "हॉट" तरीका है. इसे पहले से ही कंपाइल किया जाना चाहिए.Sफ़्लैग वाली किसी भी विधि का मतलब है कि इसे स्टार्टअप के समय कॉल किया जाता है. इसलिए, इसे पहले से कंपाइल किया जाना चाहिए, ताकि स्टार्टअप के समय कंपाइल करने और समझने में लगने वाले समय को बचाया जा सके.जिस तरीके में
Pफ़्लैग होता है उससे पता चलता है कि यह एक ऐसा तरीका है जिसे स्टार्टअप के बाद कॉल किया जाता है.इस फ़ाइल में मौजूद क्लास से पता चलता है कि इसका इस्तेमाल स्टार्टअप के दौरान किया जाता है. इसलिए, इसे हीप में पहले से ही असाइन कर दिया जाना चाहिए, ताकि क्लास लोड करने की लागत से बचा जा सके.
यह कैसे काम करता है?
- लाइब्रेरी इन नियमों को तय कर सकती हैं. ये नियम, एएआर आर्टफ़ैक्ट में पैकेज किए जाएंगे. जब इन आर्टफ़ैक्ट को शामिल करके कोई ऐप्लिकेशन बनाया जाता है, तो इन नियमों को एक साथ मर्ज कर दिया जाता है. इसके बाद, मर्ज किए गए नियमों का इस्तेमाल करके, ऐप्लिकेशन के लिए एक कॉम्पैक्ट बाइनरी एआरटी प्रोफ़ाइल बनाई जाती है. जब ऐप्लिकेशन को डिवाइसों पर इंस्टॉल किया जाता है, तब एआरटी इस प्रोफ़ाइल का इस्तेमाल कर सकता है. इससे ऐप्लिकेशन के किसी खास सबसेट को पहले से कंपाइल किया जा सकता है, ताकि ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सके. खास तौर पर, पहली बार ऐप्लिकेशन चलाने पर. ध्यान दें कि इससे डीबग किए जा सकने वाले ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.
वर्शन 1.0.0-beta08
2 जून, 2021
androidx.compose.foundation:foundation:1.0.0-beta08 और androidx.compose.foundation:foundation-layout:1.0.0-beta08 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- NestedScrollSource enum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)
- नई enum वैल्यू जोड़े जाने पर, when स्टेटमेंट के साथ आने वाली समस्याओं से बचने के लिए, enum के इस्तेमाल को इनलाइन क्लास में बदला गया है. (I2b5eb)
- क्लिक किए जा सकने वाले / टॉगल किए जा सकने वाले एलिमेंट में टैप टाइम आउट जोड़ता है. इससे स्क्रोल / खींचने के दौरान रिपल इफ़ेक्ट नहीं दिखता (Ia2704, b/168524931)
- ContentDescription और Text सिमैंटिक्स प्रॉपर्टी अब सिंगल वैल्यू नहीं, बल्कि सूचियां हैं. इससे उन्हें जोड़ने के बजाय, मर्ज किया जा सकता है. इन बदलावों का इस्तेमाल करने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
Modifier.focusModifier()का अब इस्तेमाल नहीं किया जा सकता. इसेModifier.focusTarget()से बदल दिया गया है (I6c860)- KeyboardType enum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)
FocusStateenum कोFocusStateइंटरफ़ेस से बदला गया (Iccc1a, b/187055290)- ImeAction enum को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
AnnotatedString.withAnnotationफ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)- TextUnitType के साथ TextUnit कंस्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.
- PaddingValues अब
@Immutableके बजाय@Stableहै (I88c50)
गड़बड़ियां ठीक की गईं
- खाली नहीं है, ऐसे टेक्स्ट में खाली जगह को देर तक दबाने पर ऐप्लिकेशन क्रैश होने की समस्या ठीक की गई. (I33ab5, b/187437299)
- SelectAll के बाद टूलबार दिखाएं (I495d9, b/185919613)
- स्क्रोल किए जा सकने वाले कंटेनर में, क्रॉस ऐक्सिस पर मौजूद आइटम के कटने की समस्या को ठीक किया गया है. अगर आपके पास Card आइटम के साथ LazyRow है, तो इसे आसानी से फिर से बनाया जा सकता है. अब शैडो को क्लिप नहीं किया जाएगा. (Icb635, b/186318448)
- Modifier.combinedClickable (I2298c, b / 186223077) का इस्तेमाल करते समय, लंबी देर तक क्लिक करने पर कभी-कभी रिपल/अन्य इंडिकेशन अटक जाते थे. इस समस्या को ठीक कर दिया गया है
- अब
detectDragGesures,detectVerticalGestures, औरdetectHorizontalGestures, अपने-आप पोज़िशन में हुए बदलाव को इस्तेमाल करेंगे. इसलिए, onDrag कॉलबैक (I42fc4, b/185096350, b/187320697) में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है Modifier.onGloballyPositioned()को बदलकर, इस मॉडिफ़ायर के कोऑर्डिनेट को मॉडिफ़ायर चेन में रिपोर्ट किया गया. इसमें सभी मॉडिफ़ायर लागू करने के बाद लेआउट के कोऑर्डिनेट रिपोर्ट नहीं किए गए. इसका मतलब है कि अब मॉडिफ़ायर के क्रम से यह तय होगा कि कौनसे कोऑर्डिनेट रिपोर्ट किए जाएंगे. (Ieb67d, b/177926591)
वर्शन 1.0.0-beta07
18 मई, 2021
androidx.compose.foundation:foundation:1.0.0-beta07 और androidx.compose.foundation:foundation-layout:1.0.0-beta07 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyColumn/Row के लिए, दिखने वाले अगले आइटम को पहले से फ़ेच करने का लॉजिक पेश किया गया है (I8a4bc, b/184940225)
- क्लिप चुनने के लिए हैंडल जोड़ा गया (Iff80d, b/183408447)
गड़बड़ियां ठीक की गईं
- LazyColumn/Row अब पहले से दिखने वाले दो आइटम को चालू रखेगा (डिस्पोज़ नहीं करेगा). भले ही, उन्हें पहले ही स्क्रोल कर दिया गया हो. इससे कॉम्पोनेंट, चालू सबकंपोज़िशन को फिर से इस्तेमाल कर पाता है. ऐसा तब होता है, जब हमें कोई नया आइटम कंपोज़ करना होता है. इससे स्क्रोलिंग की परफ़ॉर्मेंस बेहतर होती है. (Ie5555)
- paintBackground को हटाएं. (I38660)
- DrawScope का इस्तेमाल करके, सिलेक्शन बैकग्राउंड बनाएं. (I73c61, b/186674472)
- बीटा06 रिग्रेशन में, Row/Column पर असर डालने वाली समस्या को ठीक किया गया है. इस समस्या में, स्पेसिंग के हिसाब से बच्चों को लेआउट करने के लिए spacedBy अरेंजमेंट का इस्तेमाल किया जाता था. (Ifaf8c, b/187326588)
वर्शन 1.0.0-beta06
5 मई, 2021
androidx.compose.foundation:foundation:1.0.0-beta06 और androidx.compose.foundation:foundation-layout:1.0.0-beta06 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नेविगेशन के लिए किए जाने वाले जेस्चर से जुड़ी समस्या हल करना (I1145e)
- CollectionInfo और CollectionItemInfo के सुलभता वाले एपीआई जोड़े गए हैं. इनकी मदद से, कलेक्शन और उसके आइटम को सुलभता सेवाओं के लिए मार्क किया जा सकता है (Id54ef, b/180479017)
- इंडेक्स किए गए आइटम की सूची को किसी खास इंडेक्स वाले आइटम पर स्क्रोल करने के लिए,
SemanticsActions.ScrollToIndexजोड़ा गया है. साथ ही, कुंजी वाले आइटम की सूची में किसी आइटम का इंडेक्स पाने के लिए,SemanticsProperties.IndexForKeyजोड़ा गया है. ये दोनों कार्रवाइयां, LazyList लागू करती है.SemanticsNodeInteraction.performScrollToIndexजोड़ा गया है. यह सूची को दिए गए इंडेक्स पर स्क्रोल करता है. साथ ही,SemanticsNodeInteraction.performScrollToKeyजोड़ा गया है. यह सूची को दी गई कुंजी वाले आइटम पर स्क्रोल करता है. (I4fe63, b/178483889, b/161584524)
- AnnotatedString को TextFieldValue.Saver में सेव करने की सुविधा. AnnotatedString.Builder में addTtsAnnotation और withAnnotation यूटिलिटी फ़ंक्शन जोड़े गए (I8cbdc, b/178446304)
PaddingValues(horizontal, vertical)में0.dpपैरामीटर की डिफ़ॉल्ट वैल्यू जोड़ी गईं (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 Beta का पहला वर्शन है.
एपीआई में हुए बदलाव
- onStart कॉलबैक को
detectDragGestures(I67269, b/179995594) में जोड़ दिया गया है - साइज़िंग से इंट्रिंसिक तक के लिए मॉडिफ़ायर, अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I15744)
- डीपी दावे हटाए गए (I798d2)
- सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक को हटा दिया गया है. इसकी जगह जल्द ही एक नया एपीआई ले लेगा. (Iae869, b/168778053)
- MeasureBlocks का नाम बदलकर MeasurePolicy कर दिया गया. साथ ही, इसे एक मज़ेदार इंटरफ़ेस बना दिया गया. MeasurePolicy का इस्तेमाल करने के लिए, Layout API को अपडेट किया गया है / आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
InteractionStateको[Mutable]InteractionSourceसे बदल दिया गया है- इंटरफ़ेस, इंटरैक्शन इवेंट को इकट्ठा करने या उन्हें ट्रिगर करने के लिए ज़िम्मेदार होते हैं.
ButtonऔरModifier.clickable()जैसे कॉम्पोनेंट कोinteractionState = remember { InteractionState() }पास करने के बजाय,interactionSource = remember { MutableInteractionSource() }का इस्तेमाल करें.- इसके बजाय:
Interaction.Pressed in interactionStateआपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए. जैसे, InteractionSource.collectIsPressedAsState(). - जटिल इस्तेमाल के उदाहरणों के लिए, InteractionSource.interactions का इस्तेमाल करके इंटरैक्शन की स्ट्रीम को देखा जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource का दस्तावेज़ और सैंपल देखें.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- LayoutCoordinates के बंद किए गए तरीकों को हटाया गया. positionInParent और boundsInParent के लिए प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
- CoreTextField जैसे लो लेवल के टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
- Placeable अब measuredSize दिखाता है. यह उस साइज़ को दिखाता है जिसे चाइल्ड लेआउट ने असल में मेज़र किया है. ऐसा हो सकता है कि इस साइज़ में मेज़रमेंट की शर्तों का पालन न किया गया हो. (Ib2729, b/172560206, b/172338608)
- selectionGroup मॉडिफ़ायर जोड़ें. इससे, सुलभता के लिए टैब या रेडियो बटन के कलेक्शन को मार्क किया जा सकता है (Ie5c29)
LazyListState.animateScrollToItem को जोड़ें
इस तरीके से, सूची में मौजूद किसी आइटम पर आसानी से स्क्रोल किया जा सकता है. (I4bfd7)
ScrollableState.smoothScrollBy() का नाम बदलकर animateScrollBy() कर दिया गया है LazyListState.snapToItemIndex() का नाम बदलकर scrollToItem() कर दिया गया है ScrollState.smoothScrollTo() का नाम बदलकर animateScrollTo() कर दिया गया है (I35ded)
Modifier.zoomable को Modifier.transformable से बदल दिया गया है. smoothPanBy और smoothRotationBy को एक सुविधा के तौर पर जोड़ा गया है. (Ifc32b, b/175294473)
compositionLocalOfऔरstaticCompositionLocalOfके लिएdefaultFactoryकी जानकारी देना अब ज़रूरी है. पहले यह जानकारी देना ज़रूरी नहीं था.इस बदलाव से, ऐसे नॉन-नलेबल टाइप के लिए संभावित टाइप गड़बड़ी हट जाती है जिनके लिए कोई डिफ़ॉल्ट फ़ैक्ट्री नहीं दी गई थी. इससे पहले, यह नॉन-नलेबल टाइप के लिए शून्य रेफ़रंस देता था.
शून्य वैल्यू वाले टाइप के लिए,
{ null }को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल करें.हमारा सुझाव है कि नॉन-नलेबल टाइप के साथ लोकल का इस्तेमाल न करें. हालांकि, ऐसा तब किया जा सकता है, जब कोई डिफ़ॉल्ट वैल्यू दी जा सकती हो. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो
defaultFactoryलैंबडा को एक अपवाद दिखाना चाहिए. हालांकि, अपवाद का मतलब है कि स्थानीय स्तर पर काम करने वाले लोगों को इस बात पर निर्भर रहना होगा कि यह सुविधा उपलब्ध कराई गई है या नहीं. टाइप सिस्टम इसे लागू नहीं करता है. (Ifbd2a)Indication#createIndication()कोIndication#rememberUpdatedIndication(InteractionState)में बदलता है और IndicationInstance#drawIndication()सेInteractionStateपैरामीटर हटाता है. IndicationInstance को सिर्फ़ विज़ुअल इफ़ेक्ट बनाने चाहिए. साथ ही, InteractionState में होने वाले बदलावों के जवाब में, इसे ऐनिमेशन लॉन्च नहीं करने चाहिए या स्थिति नहीं लिखनी चाहिए. ये ऐनिमेशन और स्टेट राइट,rememberUpdatedIndication()के अंदर होने चाहिए.Modifier.indicationमें मौजूदindicationपैरामीटर को भी ज़रूरी पैरामीटर के तौर पर सेट किया गया है. (Ic1764, b/152525426)टेक्स्ट से जुड़ी कार्रवाइयां अब फ़ोकस की जांच अपने-आप करती हैं (I13777, b/179648629)
हटाया गया
runBlockingWithManualClock(I15cdc, b/179664814)Modifier.verticalScroll()/horizontalScroll() में स्क्रोल की पोज़िशन को अब Ints के साथ दिखाया जाता है (I81298)
smoothScrollBy और scrollBy तरीकों के पैकेज को
androidx.compose.foundation.gestures.*(I3f7c1, b/175294473) में बदला गयाFlingConfig का नाम बदलकर FlingBehavior कर दिया गया है. अब यह पहले से तय किए गए Decays के बजाय, सस्पेंड ऐनिमेशन को पसंद के मुताबिक बनाने की अनुमति देता है. (I02b86, b/175294473)
साइज़ मॉडिफ़ायर के नाम बदल दिए गए हैं. Modifier.width/height/size का नाम बदलकर requiredWidth/requiredHeight/requiredSize कर दिया गया है. Modifier.preferredWidth/preferredHeight/preferredSize का नाम बदलकर width/height/size कर दिया गया है. (I5b414)
defaultMinSizeConstraints का नाम बदलकर defaultMinSize कर दिया गया है. (I4eaae)
Modifier.tapGestureFilter को हटा दिया गया है. इसके बजाय,
Modifier.pointerInput { detectTapGestures(...) }का इस्तेमाल करें. (I266ed, b/175294473)पॉइंटर इनपुट सिस्टम से, आंशिक तौर पर इस्तेमाल किए गए इवेंट को हटा दिया गया है. कुछ हिस्से के इस्तेमाल को कोऑर्डिनेट करने का सुझाया गया तरीका, Modifier.nestedScroll है. (Ie9c9b)
ओरिएंटेशन को फ़ाउंडेशन पैकेज में शामिल कर दिया गया है. VelocirtTracker को ui.gesture से ui.input.pointer में ले जाया गया है. (Iff4a8, b/175294473)
AnimationClockObservable और इसकी सबक्लास हटा दी गई हैं. AnimatedFloat को हटा दिया गया है. (Icde52, b/177457083)
drawerState.open() और drawerState.close() अब सस्पेंड करने वाले फ़ंक्शन हैं. कंपोज़िशन का स्कोप पाने के लिए, rememberCoroutineScope() का इस्तेमाल करें, ताकि उन्हें कॉल किया जा सके (I16f60, b/175294473)
Providers का नाम बदलकर CompositionLocalProvider कर दिया गया है
- Composition कंस्ट्रक्टर अब key पैरामीटर स्वीकार नहीं करता है. साथ ही, इसे बंद कर दिया गया है.
- currentCompositeKeyHash को, कंपोज़ेबल टॉप लेवल फ़ंक्शन के बजाय कंपोज़ेबल टॉप लेवल प्रॉपर्टी में बदल दिया गया है.
- CompositionData और CompositionGroup को androidx.compose.runtime.tooling नेमस्पेस में ले जाया गया है
- ComposableLambda को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- ComposableLambdaN को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- snapshotFlow फ़ंक्शन को androidx.compose.runtime नेमस्पेस में ले जाया गया है
- SnapshotMutationPolicy के मर्ज करने के तरीके को अब एक्सपेरिमेंट के तौर पर इस्तेमाल नहीं किया जा सकता
@TestOnlyटॉप लेवल के clearRoots फ़ंक्शन को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.- keySourceInfoOf और resetSourceInfo फ़ंक्शन हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
- Composer.collectKeySourceInformation को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
- isJoinedKey, joinedKeyLeft, और joinedKeyRight तरीकों को हटा दिया गया है. अब इनकी ज़रूरत नहीं है.
- कई टॉप लेवल एपीआई को अलग-अलग फ़ाइलों में ले जाया गया है और उन्हें फिर से व्यवस्थित किया गया है. Kotlin के फ़ाइल क्लास सिमैंटिक की वजह से, इससे बाइनरी कंपैटिबिलिटी पर असर पड़ेगा, लेकिन सोर्स कंपैटिबिलिटी पर नहीं. इसलिए, ज़्यादातर उपयोगकर्ताओं को इससे कोई समस्या नहीं होनी चाहिए.
- (I99b7d, b/177245490)
Modifier.scrollable में बदलाव किया गया है. अब यह ScrollableController क्लास के बजाय, स्क्रोल किए जा सकने वाले इंटरफ़ेस का इस्तेमाल करता है (I4f5a5, b/174485541, b/175294473)
Modifier.draggable अब एक सामान्य लैम्ब्डा के बजाय DraggableState स्वीकार करता है.
rememberDraggableState { delta -> }के ज़रिए स्थिति बनाई जा सकती है, ताकि आपको पहले जैसा व्यवहार मिल सके (Ica70f, b/175294473)इंट्रिंसिक साइज़ के लिए ज़रूरी साइज़िंग के लिए, requiredWidth(IntrinsicSize) और requiredHeight(IntrinsicSize) मॉडिफ़ायर जोड़े गए. (I0a6b4)
emptyContent()के इस्तेमाल पर रोक लगा दी गई है और इसे हटा दिया गया है. इसके बजाय,{}का इस्तेमाल करें. (Idb33f, b/179432510)पहले बंद किए गए कुछ एपीआई मिटा दिए गए हैं (Ice5da, b/178633932)
गड़बड़ियां ठीक की गईं
- TextField पर, SoftwareKeyboardController के पिछले इंटरफ़ेस को बदलने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I658b6, b/168778053)
वर्शन 1.0.0-alpha12
10 फ़रवरी, 2021
androidx.compose.foundation:foundation:1.0.0-alpha12 और androidx.compose.foundation:foundation-layout:1.0.0-alpha12 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha12 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Modifier.pointerInput को अब यह बताने के लिए remember कुंजियों की ज़रूरत होती है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोरूटीन को कब रीस्टार्ट करना चाहिए. (I849cd)
- टेस्टिंग से जुड़ा अपडेट: hasText() फ़ंक्शन, टेक्स्ट फ़ील्ड (Iab803) में इनपुट और लेबल/हिंट/प्लेसहोल्डर, दोनों तरह के टेक्स्ट की जांच करेगा
- PaddingValues.Absolute को जोड़ा गया है. इसका इस्तेमाल उन एपीआई में किया जा सकता है जो PaddingValues को स्वीकार करते हैं. (Ia5f30)
- onImeActionPerformed को बंद कर दिया गया है. इसके बजाय, KeyboardActions का इस्तेमाल करें (If0bbd, b/179071523)
- ImageBitmap और ImageVector के साथ नाम रखने के तरीकों को बेहतर तरीके से मैच करने के लिए, ImagePainter का नाम बदलकर BitmapPainter कर दिया गया है, ताकि यह VectorPainter के जैसा हो. (Iba381, b/174565889)
- सबस्ट्रिंग के लिए बेहतर टेस्ट एपीआई. अब सबस्ट्रिंग को आर्ग्युमेंट के तौर पर इस्तेमाल किया जा सकता है (Icbe78)
InfiniteAnimationPolicyको-रूटीन कॉन्टेक्स्ट एलिमेंट पेश किया गया है. इसका इस्तेमाल, लगातार चलने वाले ऐनिमेशन में किया जाएगा. डिफ़ॉल्ट रूप से कोई नीति इंस्टॉल नहीं की जाती. हालांकि,ComposeTestRuleके साथ टेस्ट चलाने पर ऐसा होता है. (I50ec4, b/151940543)- Animatable.snapTo और Animatable.stop अब सस्पेंड फ़ंक्शन हैं (If4288)
- ComponentActivity.setContent को androidx.activity:activity-compose मॉड्यूल में androidx.activity.compose.setContent पर ले जाया गया है. (Icf416)
- डिस्ट्रक्चरिंग और copy() तरीकों को उन क्लास से हटा दिया गया है जहां इनका इस्तेमाल बहुत कम किया जाता था. (I26702, b/178659281)
LazyColumn/LazyRow के लिए कस्टम कुंजियों का इस्तेमाल करने की सुविधा जोड़ी गई. इससे हमें आइटम के क्रम को फिर से लगाने की प्रोसेस को बेहतर तरीके से मैनेज करने में मदद मिलती है. इसलिए, remember {} ब्लॉक में सेव की गई स्थिति, आइटम के साथ तब भी बनी रहेगी, जब आइटम को फिर से क्रम में लगाया जाएगा या उसे बीच से हटा दिया जाएगा.
LazyColumn { items(users, key = { user -> user.id }) { ... } }Indication#createInstance को @Composable के तौर पर बदला गया है. साथ ही, LocalIndication को () -> Indication के बजाय Indication के तौर पर बदला गया है. (I5eeea, b/157150564)
Constraints.enforceकोConstraints.constrainसे बदल दिया गया है. (I8b8ea)loadFontResource का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, fontResource का इस्तेमाल करें. imageResource, loadImageResource, vectorResource, और loadVectorResource अब काम नहीं करते. इसके बजाय, painterResource का इस्तेमाल करें. (I6b809)
परफ़ॉर्मेंस को बेहतर बनाने के लिए, ScrollAxisRange सिमैंटिक अब सीधे तौर पर फ़्लोट वैल्यू के बजाय, फ़्लोट वैल्यू दिखाने वाले लैम्ब्डा लेता है. (If4a35, b/178657186)
सुलभता के लिए, टेक्स्ट फ़ील्ड के बदलाव किए जा सकने वाले इनपुट टेक्स्ट को मार्क करने के लिए, EditableText सिमैंटिक जोड़े गए. साथ ही, सिमैंटिक की जांच करने के लिए, उससे जुड़ी टेस्ट के तरीके जोड़े गए (I8e07a)
Modifier.clickable में अब डबल और ज़्यादा देर तक क्लिक करने की सुविधा काम नहीं करती. इस सुविधा को पाने के लिए, Modifier.combinedClickable का इस्तेमाल करें. (Iafad1)
toIntPx() का नाम बदलकर roundToPx() कर दिया गया है. (I9b7e4, b/173502290)
IntBounds का नाम बदलकर IntRect कर दिया गया है. साथ ही, एपीआई को बेहतर बनाया गया है. (I1f6ff)
Modifier.dragGestureFilter अब काम नहीं करता. इसके बजाय,
Modifier.pointerInput { detectDragGestures (...)}का इस्तेमाल करें. इसके अलावा, एक ऐक्सिस पर ड्रैग करने के लिए Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473)Ambients का नाम बदलकर, Ambient -> CompositionLocal के नाम से मैच किया गया. पहले, ऐंबिएंट का नाम AmbientFoo होता था. अब कंपोज़िशन लोकल का नाम LocalFoo है. (I2d55d)
चुने गए हिस्से को फ़ाउंडेशन में ले जाया गया. (I7892b)
जिस तरह हमने पहले
state { 0 }कंपोज़ेबल को हटाया था और अबremember { mutableStateOf(0) }के इस्तेमाल को बढ़ावा दे रहे हैं उसी तरह हमsavedInstanceState { 0 }कंपोज़ेबल को हटाने जा रहे हैं. आपकोrememberSaveable { mutableStateOf(0) }का इस्तेमाल करना चाहिए. अगर MutableState में इस्तेमाल किया गया टाइप, बंडल में सेव किया जा सकता है, तो यह अपने-आप सेव और रीस्टोर हो जाएगा. अगर आपने पहले कस्टम सेवर ऑब्जेक्ट पास किया था, तो अब आपको rememberSaveable के नए ओवरलोड का इस्तेमाल करना होगा. इसमेंstateSaverपैरामीटर होता है. इसका इस्तेमाल कुछ इस तरह किया जाएगा:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004)ऐक्सेसिबिलिटी के लिए पासवर्ड के सिमैंटिक जोड़े गए (I231ce)
सुलभता के लिए, अनिश्चित प्रोग्रेस बार को मार्क करने के लिए ProgressBarRangeInfo.Indeterminate जोड़ा गया (I6fe05)
ऐनिमेशन में चलने का समय अब नैनोसेकंड (If776a) में बदल गया है
@ComposableContract को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, तीन अन्य एनोटेशन का इस्तेमाल किया जा सकता है.
@ComposableContract(restartable = false)को@NonRestartableComposableबनाया गया है@ComposableContract(readonly = true)को@ReadOnlyComposableबनाया गया है@ComposableContract(preventCapture = true)को@DisallowComposableCallsबनाया गया है@ComposableContract(tracked = true)को हटा दिया गया है. (I60a9d)emptyContent()और(@Composable () -> Unit).orEmpty()यूटिलिटी का इस्तेमाल अब नहीं किया जा सकता, क्योंकि अब इनसे परफ़ॉर्मेंस पर कोई सकारात्मक असर नहीं पड़ता या इनकी कोई वैल्यू नहीं है (I0484d)अब रीकंपोज़र बंद किए जा सकते हैं. बंद किए गए कंपोज़र, कंपोज़िशन चाइल्ड कोरूटीन के पूरा होने तक फिर से कंपोज़ करना जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)
LazyVerticalGrid से जुड़े एपीआई को एक्सपेरिमेंटल के तौर पर मार्क किया गया है (Ia53e3, b/178519862)
rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)
RestorableStateHolder का नाम बदलकर SaveableStateHolder कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. इनर मेथड RestorableStateProvider का नाम बदलकर SaveableStateProvider कर दिया गया है. जेनेरिक टाइप को हटा दिया गया है, ताकि सिर्फ़ Any को कुंजी के तौर पर पास किया जा सके. अब एक्सपेरिमेंट के तौर पर एनोटेशन करने की ज़रूरत नहीं है. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), और autoSaver को androidx.compose.runtime.savedinstancestate से androidx.compose.runtime.saveable में ले जाया गया (I77fe6)
आर्टफ़ैक्ट androidx:compose:runtime:runtime-saved-instance-state का नाम बदलकर androidx:compose:runtime:runtime-saveable कर दिया गया है (I6dcac)
ui पैकेज में लंबे समय से काम न करने वाले कई एपीआई मिटा दिए गए हैं. (I2f2dc)
compose:runtime-dispatch आर्टफ़ैक्ट अब काम नहीं करता. MonotonicFrameClock को अब compose:runtime में देखा जा सकता है. साथ ही, AndroidUiDispatcher को compose:ui में देखा जा सकता है. (Ib5c36)
RounderCornerShape, CutCornerShape, और CornerBasedShape पर मौजूद पैरामीटर के नाम, बाएं/दाएं से बदलकर शुरू/खत्म कर दिए गए हैं. ऐसा इसलिए किया गया है, ताकि आरटीएल दिशा में शेप के अपने-आप मिरर होने की सुविधा काम कर सके. AbsoluteRounderCornerShape और AbsoluteCutCornerShape को उन मामलों के लिए पेश किया गया था जहां ऑटो-मिररिंग की ज़रूरत नहीं होती है. (I61040, b/152756983)
canDrag को Modifier.scrollable से हटा दिया गया है. (Id66e7, b/175294473)
Compose कंपाइलर प्लगिन जिस एपीआई को टारगेट करता है उसे रिफ़ैक्टर किया गया है. अब यह कॉंक्रीट क्लास के बजाय इंटरफ़ेस का इस्तेमाल करता है. इंटरफ़ेस अब टाइप पैरामीटर का इस्तेमाल नहीं करता.
यह एक इंटरनल बदलाव है. इससे सोर्स कोड के साथ काम करने की सुविधा पर कोई असर नहीं पड़ना चाहिए. हालांकि, यह बाइनरी ब्रेकिंग चेंज है. (I3b922, b/169406779)
Modifier.scaleGestureFilter को हटा दिया गया है. इसके बजाय, Modifier.zoomable का इस्तेमाल करें. इसके अलावा,
Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1, b/175294473) का इस्तेमाल करेंAnimatedValue/Float अब सेवा में नहीं है. इसके बजाय, कृपया Animatable का इस्तेमाल करें. (I71345, b/177457083)
- CoreText और CoreTextField को सार्वजनिक एपीआई से हटाया गया
- SelectionContainer के ऐसे ओवरलोड को हटाया गया जो अब काम नहीं करता (I99c19)
स्क्रोल करने की सुविधा से जुड़े ऐसे फ़ंक्शन हटा दिए गए हैं जो अब काम नहीं करते पिछली रिलीज़ में किए गए बदलावों को जारी रखते हुए, स्क्रोल करने की सुविधा से जुड़े ऐसे फ़ंक्शन हटा दिए गए हैं जो अब काम नहीं करते. कृपया एक ही नाम वाले फ़ंक्शन को निलंबित करने के लिए, फ़ंक्शन को निलंबित करने वाले फ़ंक्शन में बदलें. rememberCoroutineScope() के ज़रिए, कोरूटीन स्कोप पाया जा सकता है. (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout को androidx.constraintlayout.compose.ConstraintLayout के पक्ष में बंद कर दिया गया था. आपको
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01पर निर्भरता जोड़नी होगी. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, और pressIndicaitonGestureFilter अब काम नहीं करते. इसके बजाय, Modifier.clickable या Modifier.pointerInput के साथ detectTapGestures फ़ंक्शन का इस्तेमाल करें. (I6baf9, b/175294473)
Recomposer.current()को हटाया गया. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner की मदद से, विंडो के दायरे में आने वाले Recomposers को धीरे-धीरे बनाता है. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)Recomposer.runningRecomposers अब read-only RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. इससे प्रोसेस में चल रही कंपोज़िशन की स्थिति को देखा जा सकता है. Recomposer.current() के बजाय इस एपीआई का इस्तेमाल करें. यह अब काम नहीं करता. (If8ebe)
वर्शन 1.0.0-alpha11
28 जनवरी, 2021
androidx.compose.foundation:foundation:1.0.0-alpha11 और androidx.compose.foundation:foundation-layout:1.0.0-alpha11 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
scrollBy को निलंबित न करने की सुविधा बंद करें, scrollTo को निलंबित न करने की सुविधा हटाएं
हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने और स्क्रोलिंग के खत्म होने का इंतज़ार करने के लिए, निलंबित फ़ंक्शन का इस्तेमाल करें. इस बदलाव के तहत, हम इन फ़ंक्शन के ऐसे वर्शन को बंद कर रहे हैं जिन्हें निलंबित नहीं किया जा सकता. इसके अलावा, हम इन्हें हटा भी सकते हैं. (Ie9ced)
non-suspend smoothScrollBy को बंद कर दिया गया है हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने के लिए, suspend फ़ंक्शन का इस्तेमाल करें और स्क्रोल पूरा होने का इंतज़ार करें. इस बदलाव के तहत, हम इन फ़ंक्शन के ऐसे वर्शन को बंद कर रहे हैं जिन्हें निलंबित नहीं किया जा सकता. (I12880)
इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा देने वाला पैरामीटर जोड़ दिया गया है. इस कुकी का इस्तेमाल, सुलभता सेवाओं (I2ac4c) को जानकारी देने के लिए किया जाता है
BasicTextField को 'decorationBox' नाम का एक नया पैरामीटर मिला है. इसकी मदद से, टेक्स्ट फ़ील्ड में आइकॉन, प्लेसहोल्डर, लेबल वगैरह जोड़े जा सकते हैं. साथ ही, इसके हिट टारगेट एरिया को बढ़ाया जा सकता है. (I16996)
Modifier.draggable (Ic4bec, b/175294473) से canDrag पैरामीटर हटा दिया गया है
FlingConfig को स्वीकार करने वाले AnimatedFloat.fling को हटा दिया गया है. इसके बजाय, कृपया suspend Animatable.animateDecay का इस्तेमाल करें. (I4659b, b/177457083)
data classको इन क्लास से हटा दिया गया है:- InlineTextContent
- LocaleList
- (I605c7)
अब क्लिक किए जा सकने वाले, टॉगल किए जा सकने वाले, और चुने जा सकने वाले मॉडिफ़ायर को कंपोज़िशन के बाहर बनाया जा सकता है (I0a130, b/172938345, b/175294473)
ScrollableColumn/Row को बंद कर दिया गया है. अगर आपको स्क्रोल करने के लिए ज़्यादा कॉन्टेंट दिखाना है, तो LazyColumn के मुकाबले ScrollableColumn का इस्तेमाल करना कम असरदार होता है. ऐसा इसलिए, क्योंकि LazyColumn में सिर्फ़ दिखने वाले एलिमेंट को कंपोज़/मेज़र/ड्रॉ किया जा सकता है. उपयोगकर्ताओं को कम असरदार तरीके से स्क्रोल करने से रोकने के लिए, हमने ScrollableColumn और ScrollableRow को बंद करने का फ़ैसला किया है. इसके बजाय, हम LazyColumn और LazyRow के इस्तेमाल को बढ़ावा देंगे. उपयोगकर्ता अब भी यह तय कर सकते हैं कि उन्हें लेज़ी बिहेवियर की ज़रूरत नहीं है. वे इस तरह से सीधे तौर पर मॉडिफ़ायर का इस्तेमाल कर सकते हैं: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
LazyColumn/LazyRow/LazyVerticalGrid के स्कोप के लिए नई
items(count: Int)फ़ैक्ट्री मेथड.items(items: List)औरitemsIndexed(items: List)अब एक्सटेंशन फ़ंक्शन हैं. इसलिए, इनका इस्तेमाल करते समय आपको इन्हें मैन्युअल तरीके से इंपोर्ट करना होगा. ऐरे के लिए नए एक्सटेंशन ओवरलोड: items(items: Array) और itemsIndexed(Array) (I803fc, b/175562574)AbsoluteArrangement को हटा दिया गया है. (Iffa96, b/177641870)
Box में propagateMinConstraints पैरामीटर जोड़ा गया है. इससे यह तय किया जा सकता है कि आने वाली कम से कम सीमाएं, Box के कॉन्टेंट को पास की जानी चाहिए या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. (I0125b, b/152613457)
गड़बड़ियां ठीक की गईं
- onCommit, onDispose, और onActive को SideEffect और DisposableEffect API के पक्ष में बंद कर दिया गया है (If760e)
- WithConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया है और इसे foundation.layout में ले जाया गया है. (I9420b, b/173387208)
Font/FontFamily/Typeface के लिए फ़ैक्ट्री फ़ंक्शन में किए गए बदलाव
- कैपिटल लेटर से शुरू होने वाले फ़ैक्ट्री फ़ंक्शन जोड़े गए
- पहले के फ़ैक्ट्री फ़ंक्शन को बंद कर दिया गया है. इनके पहले अक्षर छोटे होते थे
- नए फ़ैक्ट्री फ़ंक्शन, सबक्लास के बजाय FontFamily दिखाते हैं
- सबक्लास के कंस्ट्रक्टर छिपाए गए हैं, ताकि उन्हें सिर्फ़ फ़ैक्ट्री फ़ंक्शन के ज़रिए बनाया जा सके.
- Font.asFontFamily का नाम बदलकर Font.toFontFamily कर दिया गया है
- (I42aa7)
ComposeContentTestRuleको पेश किया गया है. यहComposeTestRuleको बढ़ाता है औरsetContentको तय करता है.setContentकोComposeTestRuleसे हटा दिया गया है. फ़ैक्ट्री मेथडcreateEmptyComposeRule()जोड़ा गया है. यहComposeTestRuleदिखाता है और आपके लिए कोई गतिविधि लॉन्च नहीं करता. इस विकल्प का इस्तेमाल तब करें, जब आपको टेस्ट के दौरान अपनी ऐक्टिविटी लॉन्च करनी हो. उदाहरण के लिए,ActivityScenario.launch(I9d782, b/174472899) का इस्तेमाल करनाanimateAsState को अब animateFooAsState कहा जाता है. यहां Foo, ऐनिमेट किए जा रहे वैरिएबल का टाइप है. जैसे, फ़्लोट, डीपी, ऑफ़सेट वगैरह (Ie7e25)
डेंसिटी अब अरेंजमेंट इंटरफ़ेस के लिए रिसीवर स्कोप है. (I18aad)
TextFieldValue, AnnotatedString को स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. टेक्स्ट में कई स्टाइल में बदलाव करने की सुविधा अभी लागू नहीं की गई है.
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
initialको हटाया गया. (I326d5)
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
invalidate और compositionReference() को अब बंद कर दिया गया है. इनके बजाय, currentRecomposeScope और rememberCompositionReference का इस्तेमाल करें. (I583a8)
AnnotatedString को बदलकर kotlin.CharSequence से एक्सटेंड किया गया है. इसलिए, length और subSequence अब इंस्टेंस फ़ंक्शन हैं. साथ ही, एक्सटेंशन फ़ंक्शन हटा दिए गए हैं. (Iaf429)
अवधि और अपटाइम को लंबे मिलीसेकंड से बदल दिया जाएगा. साथ ही, यह चरण उन क्लास पर पॉइंटर इनपुट की निर्भरता को हटा देता है. (Ia33b2, b/175142755, b/177420019)
RememberObserver, CompositionLifecycleObserver की जगह लेता है. साथ ही, CompositionLifecycleObserver अब काम नहीं करता.
RememberObserver,CompositionLifecycleObserverकी जगह इस्तेमाल किया जाता है. इसमें सिमैंटिक में बदलाव किया गया है और तरीकों के नाम बदले गए हैं. जिन ऑब्जेक्ट को सिर्फ़ एक बार याद किया जाता है उनके लिए, नए एपीआई पर अपने-आप स्विच किया जा सकता है. यह तरीका सुझाया गया है और इसे जारी रखा जाना चाहिए. हालांकि, अगर किसी कंपोज़िशन में किसी रेफ़रंस को एक से ज़्यादा बार याद किया गया है, तो हर रेफ़रंस के लिएonRememberedको कॉल किया जाता है. वहीं,onEnterको सिर्फ़ एक बार कॉल किया जाता है.onEnterwas called multiple time if the object was used in subcompositions, such asWithConstraintsandScaffoldmaking the singleonEntercall guarantee unreliable and it was removed forRememberObserver.RememberObserver,onAbandonedको जोड़ता है. इसे तब कॉल किया जाता है, जबRememberObserverइंस्टेंस कोrememberको पास किए गए कॉलबैक से वापस कर दिया जाता है, लेकिन कंपोज़िशन की स्थिति में इसे याद नहीं रखा जाता. इसलिए,onRememberedको कभी कॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कंपोज़िशन को पूरा होने से पहले ही खत्म कर देता है या कंपोज़िशन को इसलिए खारिज कर दिया जाता है, क्योंकि जिस स्थिति के लिए कंपोज़िशन जनरेट की जा रही थी वह अब मौजूद नहीं है या अब उसकी ज़रूरत नहीं है. अगर ऊपर दिए गए एक रेफ़रंस वाले सुझाव के बादRememberObserverइंस्टेंस, किसी बाहरी संसाधन को ट्रैक कर रहा है, तोonForgottenऔरonAbandoned, दोनों से पता चलता है कि अब संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट,onRememberedमें शुरू किए गए काम या असाइन किए गए संसाधनों को ट्रैक कर रहा है, तोonAbandonedको अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकि अगरonRememberedको कॉल किया जाता है, तो इसे कॉल नहीं किया जाएगा. (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)
- Toggle को foundation Strings.kt में जोड़ें (I4a5b7, b/172366489)
- nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बनाया गया. equals लागू करने के लिए, nativeClass के अपडेट किए गए इस्तेमाल में, 'is MyClass' का इस्तेमाल किया गया है. (I4f734)
- FlowRow और FlowColumn अब काम नहीं करते हैं. इसके बजाय, कृपया कस्टम लेआउट का इस्तेमाल करें. (I09027)
- Modifier.focus() और Modifier.focusRequester() काम नहीं कर रहे. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
- SelectionRegistrar.notifySelectableChange को पेश किया गया है. इससे SelectionManager को Selectable अपडेट की सूचना दी जा सकेगी. (I6ff30, b/173215242)
fun Dp.isFinite()कोval Dp.isFinite(I50e00) में बदला गया- Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
- Unspecified कॉन्सटेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse को जोड़ा गया है. (I93f7b, b/174310811)
गड़बड़ियां ठीक की गईं
- कोरूटीन पर आधारित नया एपीआई
Animatable, जो यह पक्का करता है कि इसके ऐनिमेशन एक-दूसरे से अलग हों. मल्टी-डाइमेंशनल डेके ऐनिमेशन के लिए, नया DecayAnimationSpec (I820f2, b/168014930) - बंद किए गए और सिर्फ़ पढ़ने के लिए उपलब्ध टेक्स्ट फ़ील्ड के लिए सहायता जोड़ी गई (I35279, b/171040474, b/166478534)
animate()को अबanimateAsState()से बदल दिया गया है. यहTके बजायState<T>दिखाता है. इससे बेहतर परफ़ॉर्मेंस मिलती है, क्योंकि अमान्य होने के दायरे को उस जगह तक सीमित किया जा सकता है जहां राज्य की वैल्यू पढ़ी जाती है. (Ib179e)- सेमैंटिक्स रोल एपीआई जोड़ें. साथ ही, क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले SemanticsModifier में Role को पैरामीटर के तौर पर जोड़ें. Modifier.progressSemantics में बदलाव किया गया है, ताकि Slider भी इसका इस्तेमाल कर सके. (I216cd)
- अब keyEvent.nativeKeyEvent (I87c57, b/173086397) के ज़रिए, नेटिव keyEvent को ऐक्सेस किया जा सकता है
वर्शन 1.0.0-alpha09
16 दिसंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha09 और androidx.compose.foundation:foundation-layout:1.0.0-alpha09 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
स्क्रोल किए जा सकने वाले इंटरफ़ेस को जोड़ना
इससे ScrollState और LazyListState को एक सामान्य टाइप के तौर पर इस्तेमाल किया जा सकता है. इससे दोनों टाइप में कस्टम स्क्रोलिंग लागू की जा सकती है.
इससे smoothScrollBy को Scrollable पर एक्सटेंशन फ़ंक्शन में भी ले जाया जाता है. इससे इस सुविधा का फ़ायदा मिलता है. (I2153b)
LazyVerticalGrid जोड़ा गया है. (I17267, b/162213211)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed, और LazyRowForIndexed को बंद कर दिया गया है. इसके बजाय, LazyColumn और LazyRow का इस्तेमाल करें (I5b48c)
पॉइंटर इनपुट एपीआई को निलंबित करने के लिए, HandlePointerInputScope का नाम बदलकर AwaitPointerEventScope और handlePointerInput() का नाम बदलकर awaitPointerEventScope() कर दिया गया है. (Idf0a1, b/175142755)
LazyListState.layoutInfo को जोड़ा गया है. इससे, फ़िलहाल दिख रहे आइटम के साइज़ और ऑफ़सेट की सूची दिखती है (If8678, b/170472532)
ExperimentalPointerInput एनोटेशन हटाया गया (Ia7a24)
TextFields के लिए, InteractionState की सुविधा जोड़ी गई है. (I61d91)
LazyColumn/Row के लिए reverseLayout पैरामीटर जोड़ें. जब
trueहोगा, तब आइटम नीचे से ऊपर की ओर कंपोज़ किए जाएंगे. साथ ही,LazyListState.firstVisibleItemIndex == 0का मतलब होगा कि पहला आइटम सबसे नीचे है. (I552ae, b/166589935)LazyColumn के लिए, verticalArrangement पैरामीटर जोड़ा गया. LazyRow के लिए horizontalArrangement पैरामीटर जोड़ा गया. आइटम के बीच की दूरी तय करने के लिए, अरेंजमेंट का इस्तेमाल किया जाता है. साथ ही, जब हमारे पास कम से कम साइज़ को भरने के लिए ज़रूरी आइटम नहीं होते हैं, तब आइटम के अरेंजमेंट के बारे में बताने के लिए भी इसका इस्तेमाल किया जाता है. (Icf79a, b/170394300)
detectMultitouchGestures अब एक कॉलबैक का इस्तेमाल करता है. इसमें सेंट्रॉइड, पैन, ज़ूम, और रोटेट पैरामीटर शामिल होते हैं. (Ie6e1c)
DrawScope के साथ रखने के लिए, ContentDrawScope को ui-graphics मॉड्यूल में ले जाया गया. (Iee043, b/173832789)
गड़बड़ियां ठीक की गईं
- ऑफ़सेट मॉडिफ़ायर में लैम्ब्डा अब फ़्लोट के बजाय IntOffset दिखाता है. (Ic9ee5, b/174137212, b/174146755)
SlotTable, SlotReader, और SlotWriter को सार्वजनिक एपीआई से हटा दिया गया है. इन्हें पहले InternalComposeAPI के तौर पर मार्क किया गया था. अब ये कंपोज़ मॉड्यूल के इंटरनल हैं.
कंपोज़िशन की जानकारी निकालने के लिए, ui-tooling API की जगह CompositionData और CompositionGroup को जोड़ा गया है. ये सार्वजनिक हैं, लेकिन इनका इस्तेमाल ui-tooling API के बाहर नहीं किया जा सकता. ऐसा इसलिए, क्योंकि ये ui-tooling API को ऐसी जानकारी देते हैं जिसे वह समझता है (I31a9c)
ShaderBrush को फिर से फ़ैक्टर किया गया है, ताकि ड्रॉइंग एनवायरमेंट की साइज़िंग की जानकारी उपलब्ध होने पर, शेडर इंस्टेंस को लेज़ी तरीके से बनाया जा सके. यह कंपोज़िशन के समय, कंपोज़ेबल के पूरे ड्रॉइंग बाउंड को भरने वाले ग्रेडिएंट तय करने के लिए उपयोगी है. इसके लिए, आपको DrawModifier को कस्टम तौर पर लागू करने की ज़रूरत नहीं होती.
Gradient ऑब्जेक्ट पर फ़ैक्ट्री के तरीकों के पक्ष में, ग्रेडिएंट फ़ंक्शन कंस्ट्रक्टर एपीआई बंद कर दिए गए हैं. (I511fc, b/173066799)
Modifier.focusObserver अब काम नहीं करता है. इसके बजाय, Modifier.onFocusChanged या Modifier.onFocusEvent का इस्तेमाल करें (I30f17, b/168511863, b/168511484)
ऑटोमैटिक भरने वाला एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध है. इसके लिए, ऑप्ट-इन करना ज़रूरी है (I0a1ec)
FocusRequester इंस्टेंस बनाने के लिए, डिस्ट्रक्चरिंग डिक्लेरेशन जोड़े गए (I35d84, b/174817008)
accessibilityLabel का नाम बदलकर contentDescription कर दिया गया है. accessibilityValue का नाम बदलकर stateDescription कर दिया गया है. (I250f2)
SelectionRegistrar में कई नए फ़ंक्शन जोड़े गए हैं. साथ ही, onPositionChange का नाम बदलकर notifyPositionChange कर दिया गया है. (Ifbaf7)
AndroidOwner ने इंटरनल टेस्ट के लिए उपलब्ध कराया (Ibcad0, b/170296980)
InfiniteRepeatableSpec बनाने के लिए, नया infiniteRepeatable फ़ंक्शन (I668e5)
Applierइंटरफ़ेस को बदल दिया गया है, ताकि ट्री को टॉप-डाउन के बजाय बॉटम-अप तरीके से आसानी से बनाया जा सके.insert()तरीके का नाम बदलकरinsertTopDown()कर दिया गया है.insertBottomUp()नाम का एक नया तरीका जोड़ा गया है.लागू करने वाला व्यक्ति,
insertTopDown()याinsertBottomUp()का इस्तेमाल करके, उस ट्री में नोड डालता है जिसे वह बदल रहा है. यह इस बात पर निर्भर करता है कि कौनसी कार्रवाई बेहतर तरीके से काम करती है.कुछ ट्री, जैसे कि
LayoutNodeऔरView, को टॉप-डाउन की तुलना में बॉटम-अप तरीके से बनाना ज़्यादा आसान होता है. इस बदलाव से पहले, बॉटम-अप को लागू करने के लिए इंसर्ट के स्टैक की ज़रूरत होती थी. इसे हर ऐप्लिकेशन में कॉपी करना पड़ता था. साथ ही, परफ़ॉर्मेंस के लिए बॉटम-अप कंस्ट्रक्शन की ज़रूरत होती थी. इस बदलाव के साथ,ApplierओवरराइडinsertBottomUp()का इस्तेमाल करके ट्री को बॉटम-अप तरीके से बनाया जा सकता है. वहीं,insertTopDown()का इस्तेमाल करके ट्री को टॉप-डाउन तरीके से बनाया जा सकता है. (Icbdc2)Painter ऑब्जेक्ट को ओपेक तरीके से लोड करने के लिए, painterResource API जोड़ा गया है. ये ऑब्जेक्ट, रास्टर इमेज फ़ॉर्मैट (जैसे कि PNG) या VectorDrawables से लोड किए जा सकते हैं. उपभोक्ताओं को अब पहले से ही यह तय नहीं करना होगा कि किस तरह की ऐसेट का इस्तेमाल करना है. वे इस तरीके को कॉल करके, Painter ऑब्जेक्ट पा सकते हैं. इसका इस्तेमाल Image कंपोज़ेबल या पेंटर मॉडिफ़ायर में किया जा सकता है. (I2c703, b/173818471)
AnnotatedString बनाने के लिए, buildAnnotatedString फ़ैक्ट्री फ़ंक्शन जोड़ा गया. annotatedString बनाने वाले फ़ंक्शन को अब इस्तेमाल नहीं किया जा सकता. (Idfe0b)
वर्शन 1.0.0-alpha08
2 दिसंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha08 और androidx.compose.foundation:foundation-layout:1.0.0-alpha08 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
CoreTextFieldसेmaxLinesपैरामीटर को हटा दिया गया है. अगर आपको लाइनों की संख्या के हिसाब से टेक्स्ट फ़ील्ड की ऊंचाई को सीमित करना है, तो इसके बजायBasicTextFieldका इस्तेमाल करें. (Iec002)await*TouchSlop()तरीकों में बदलाव किया गया है, ताकि पॉइंटर डाउन का पता न चल सके. साथ ही, उनका नाम बदलकर*OrCancellationकर दिया गया है.orientationLockपैरामीटर की ज़रूरत भी नहीं होगी. (Ie96e1)- कंपोज़ेबल लैम्डा पैरामीटर के नाम और पोज़िशन के लिए, लिंट चेक जोड़ा गया है. इससे Compose के दिशा-निर्देशों के मुताबिक, एक जैसा कोड लिखने में मदद मिलेगी.
इसके अलावा, कुछ एपीआई को माइग्रेट किया गया है. इनमें से कुछ के ट्रेलिंग लैम्डा के लिए
childrenका इस्तेमाल किया गया था. इन्हें लिंट चेक और दिशा-निर्देशों के मुताबिकcontentपर माइग्रेट किया गया है. (Iec48e) foundation:foundation-textएपीआई कोfoundation:foundationमें ले जाया गया. पैकेज का स्ट्रक्चर पहले जैसा ही रहा (Id3eb2)- मल्टीटच जेस्चर का पता लगाने वाला नया डिटेक्टर. इसमें रोटेशन, ज़ूम, और पैनिंग का पता लगाने के लिए हेल्पर शामिल हैं. (Ic459d)
- ड्रैग जेस्चर का पता लगाने वाला नया डिटेक्टर, जो पॉइंटर इनपुट एपीआई को निलंबित करता है. इसमें ओरिएंटेशन लॉक करने की सुविधा भी शामिल है. (Icef25)
- VectorAsset का नाम बदलकर ImageVector कर दिया गया है VectorAsset को Builder में ले जाया गया है और इसका नाम बदल दिया गया है, ताकि यह API काउंसिल के दिशा-निर्देशों के मुताबिक ImageVector की इनर क्लास बन सके. VectorAssetBuilder का टाइपएलियास जोड़ा गया, ताकि इसे ImageVector.Builder से लिंक किया जा सके. (Icfdc8)
- ImageAsset और इससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया है. (Ia2d99)
- फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (I6f05c) में ले जाया गया
को-रूटीन पर आधारित स्क्रोलिंग एपीआई जोड़े गए:
इसमें LazyListState.snapToItem और LazyListState.smoothScrollBy को जोड़ा गया है. साथ ही, स्क्रोल को कंट्रोल करने के लिए लोअर-लेवल एपीआई भी जोड़े गए हैं. ये एपीआई, स्क्रोलिंग को कंट्रोल करने के लिए निलंबित इंटरफ़ेस उपलब्ध कराते हैं. यह इंटरफ़ेस, स्क्रोलिंग पूरी होने तक इंतज़ार करता है और उसके बाद ही वापस आता है. (Ie5642)
BasicTextField, TextField, और OutlinedTextField में singeLine पैरामीटर जोड़ा गया. टेक्स्ट फ़ील्ड को एक ही लाइन में दिखाने के लिए, इस पैरामीटर को सही पर सेट करें. इस लाइन को हॉरिज़ॉन्टल तरीके से स्क्रोल किया जा सकता है. (I57004, b/168187755)
टैप, दो बार टैप, दबाकर रखने, और दबाने के इंडिकेशन के लिए जेस्चर डिटेक्टर जोड़े गए. इसके लिए, नए सस्पेंडिंग पॉइंटर इनपुट का इस्तेमाल किया गया. कुछ यूटिलिटी भी जोड़ी गई हैं, ताकि डेवलपर आसानी से अपने जेस्चर डिटेक्टर लिख सकें. (I00807)
Modifier.focusable में, फ़ाउंडेशन में जोड़े गए की ज़रूरत है. इसका इस्तेमाल, किसी कॉम्पोनेंट में फ़ोकस करने की सुविधा जोड़ने के लिए किया जाता है. साथ ही, इससे सही सिमैंटिक और ऐक्सेसिबिलिटी मिलती है. (I41eb9, b/152525426, b/162865824)
पहले से बंद किए गए एपीआई हटा दिए गए हैं: बॉर्डर हटा दिया गया है. इसके बजाय, BorderStroke का इस्तेमाल करें. Modifier.drawBorder को हटा दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Modifier.gravity को हटा दिया गया है. इसके बजाय, Modifier.align का इस्तेमाल करें. स्टैक हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (I32c2b, b/172470874)
AbsoluteArrangement का नाम बदलकर Arrangement.Absolute कर दिया गया है. (If26f2)
गड़बड़ियां ठीक की गईं
- DrawModifier API को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि इसमें टाइपएलियास/सहायता करने वाले तरीके शामिल किए जा सकें. इससे, पुराने एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद मिलेगी. (Id6044, b/173834241)
- Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है साथ ही, एपीआई काउंसिल के सुझाव के मुताबिक, इससे जुड़ी क्लास को भी GraphicsLayer में अपडेट कर दिया गया है. (I0bd29, b/173834241)
<T>को SubcomposeLayout के एलान से हटा दिया गया है. अब इसका इस्तेमाल, टाइप तय किए बिना किया जा सकता है. (Ib60c8)- PointerInputData के अपटाइम और पोजीशन फ़ील्ड को नॉन-नलेबल बनाया गया. (Id468a)
- MaterialTheme अब चुनने के हैंडल और चुनने के बैकग्राउंड के लिए सही रंग सेट करता है. नॉन-मटीरियल ऐप्लिकेशन, AmbientTextSelectionColors का इस्तेमाल मैन्युअल तरीके से कर सकते हैं. इससे वे चुनने के लिए इस्तेमाल किए गए रंगों को पसंद के मुताबिक बना सकते हैं. (I1e6f4, b/139320372, b/139320907)
- Box के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
- offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया है. अब ये स्टेट के बजाय लैम्डा पैरामीटर ले रहे हैं. (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(Typeface.DEFAULT)के ज़रिए, Android टाइपफ़ेस लोड किया जा सकता है.typefaceFromFontFamily()का नाम बदलकरtypeface()(I52ab7) भी कर दिया गया है - लिंट चेक जोड़ा गया है. इससे यह पता चलेगा कि मॉडिफ़ायर फ़ैक्ट्रियां,
androidx.compose.ui.composed {}के तौर पर मार्क होने के बजाय, अंदरूनी तौर परandroidx.compose.ui.composed {}का इस्तेमाल करती हैं.@Composable(I3c4bc) - लिंट चेक जोड़ा गया है. इससे यह पता चलता है कि मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर पर एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें आसानी से एक साथ जोड़ा जा सके. (I07981)
- सिमैंटिक्स आर्ग्युमेंट mergeAllDescendants का नाम बदलकर mergeDescendants कर दिया गया है. (Ib6250)
- जांच में समय को कंट्रोल करने की सुविधा (TestAnimationClock और इसके इस्तेमाल) अब एक्सपेरिमेंटल (I6ef86, b/171378521) है
- Remove old ui-test module and its stubs (I3a7cb)
- TextUnit.Inherit का नाम बदलकर TextUnit.Unspecified कर दिया गया है, ताकि यह अन्य यूनिट के साथ काम कर सके. (Ifce19)
- अलाइनमेंट इंटरफ़ेस को अपडेट किया गया है और अब यह काम कर रहा है. (I46a07, b/172311734)
foundation:foundation-textमॉड्यूल कोfoundation:foundation(Idac0f) में मर्ज कर दिया गया है- place(Offset) और placeRelative(Offset) को बंद किया गया. इसके बजाय, int ऑफ़सेट के साथ ओवरलोड का इस्तेमाल करें (I4c5e7)
LayoutIdParentDataके लिए,idका नाम बदलकरlayoutIdकर दिया गया है.Measurable.idका नाम बदलकरMeasurable.layoutIdकर दिया गया है. (Iadbcb, b/172449643)
वर्शन 1.0.0-alpha07
11 नवंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07, और androidx.compose.foundation:foundation-text:1.0.0-alpha07 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Modifier.fillMaxSize[Width|Height]की तरह, अब हमLazyColumn/Row(I797e2, b/166586426) के स्कोप मेंModifier.fillParentMaxSize[Width|Height]में फ़्रैक्शन का इस्तेमाल करने की सुविधा देते हैंKeyboardOptions.toImeOptionsको सार्वजनिक एपीआई से हटाया गया. (Ic2e45)- AmbientTextStyle, ProvideTextStyle, और AmbientContentColor अब काम नहीं करते हैं. इसके बजाय, Material लाइब्रेरी में उपलब्ध नए वर्शन का इस्तेमाल करें. Material के अलावा अन्य ऐप्लिकेशन के लिए, आपको अपने हिसाब से डिज़ाइन सिस्टम बनाना चाहिए. इसमें थीम के हिसाब से एंबिएंट स्टाइल होनी चाहिए, ताकि उन्हें अपने कॉम्पोनेंट में इस्तेमाल किया जा सके. (I74acc, b/172067770)
- foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू का इस्तेमाल न करने वाले, सामान्य टेक्स्ट एपीआई के लिए androidx.compose.foundation.BasicText देखें. (If64cb)
- TextFields में maxLines जोड़ा गया (Ib2a5b)
- KeyboardOptions को स्वीकार करने के लिए, TextFields को अपडेट करें (Ida7f3)
- TextField में इस्तेमाल करने के लिए KeyboardOptions जोड़े गए (I9ca32)
- यह BasicText को टेक्स्ट के लिए डिज़ाइन-अनओपिनिएटेड एपीआई के तौर पर जोड़ता है. यह BasicTextField के समानांतर होता है. (I28268)
- ExperimentalLazyDsl एनोटेशन हटा दिया गया है. अब LazyColumn/LazyRow का इस्तेमाल @OptIn को जोड़े बिना किया जा सकता है (Idab7a, b/166584730)
- BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
- CoreTextField और BaseTextField, दोनों की जगह BasicTextField को जोड़ा गया है (Id4cea)
- LazyColumnItems/LazyRowItems के इस्तेमाल बंद किए गए वर्शन हटाएं (I1d8a8)
- साइज़िंग के लिए, इंट्रिंसिक मेज़रमेंट के लिए इस्तेमाल किए जाने वाले, बंद किए गए कंपोज़ेबल हटा दिए गए हैं. (I18537, b/171811496)
- relativePaddingFrom का नाम बदलकर paddingFrom कर दिया गया है. पैडिंग फ़्रॉम बेसलाइन मॉडिफ़ायर जोड़ा गया है, ताकि लेआउट बाउंड्री से टेक्स्ट बेसलाइन तक की दूरी तय करने में आसानी हो. (I0440a, b/170633813)
- aspectRatio मॉडिफ़ायर में matchHeightConstraintsFirst पैरामीटर जोड़ा गया है. इसका इस्तेमाल, चौड़ाई के हिसाब से साइज़ तय करने वाले मॉडिफ़ायर को आज़माने से पहले, ऊंचाई के हिसाब से साइज़ तय करने वाले मॉडिफ़ायर को तय करने के लिए किया जा सकता है. (Ie7c43, b/155290593)
- DpConstraints को बंद कर दिया गया था. इसे हटा दिया गया है. (I87884, b/171702471)
गड़बड़ियां ठीक की गईं
- ScaleFactor
इनलाइन क्लास को पेश किया गया है. इसका इस्तेमाल, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के स्केल फ़ैक्टर को एक-दूसरे से अलग दिखाने के लिए किया जाता है. इससे, नॉन-यूनिफ़ॉर्म स्केलिंग के इस्तेमाल के उदाहरणों को सपोर्ट किया जा सकेगा.
- ContentScale में computeScaleFactor तरीका जोड़ा गया
- ContentScale.FillBounds जोड़ा गया है, ताकि src के डाइमेंशन को खींचकर डेस्टिनेशन के डाइमेंशन के बराबर किया जा सके.
- Size पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर मेथड जोड़े गए.
- (Ic96a6, b/172291582)
- captureToBitmap को captureToImage में ले जाया गया. (I86385)
- यह CoreText को @InternalTextApi के तौर पर मार्क करता है. इसके बजाय, BasicText का इस्तेमाल करें. (I6aaeb)
- KeyboardOptions का नाम बदलकर ImeOptions करें (I82f36)
- KeyboardType और ImeAction को KeyboardOptions में ले जाया गया (I910ce)
- CoreTextField को @InternalTextApi के तौर पर मार्क किया गया है. इसके बजाय, BasicTextField का इस्तेमाल करें (Ie2469)
- ExperimentalSubcomposeLayoutApi एनोटेशन हटा दिया गया है. अब @OptIn (I708ad) को जोड़े बिना, SubcomposeLayout का इस्तेमाल किया जा सकता है
- ui-test-junit4 मॉड्यूल जोड़ा गया (Ib91f8)
- Icon API को अपडेट किया गया है, ताकि Color.Unspecified को संभावित टिंट कलर के तौर पर इस्तेमाल किया जा सके. इससे, ColorFilter के बिना दी गई ऐसेट या पेंटर को ड्रॉ किया जा सकेगा. इससे पहले, Color.Unspecified का इस्तेमाल करके रंगत को अनदेखा करने की कोशिश करने पर, रंगत को पारदर्शी रंग में बदल दिया जाता था. इस वजह से, कुछ भी रेंडर नहीं होता था. (I049e2, b/171624632)
- MeasureResult को MeasureScope से बाहर ले जाया गया. (Ibf96d, b/171184002)
- लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.layout.ui में ले जाया गया है. (I0fa98, b/170475424)
- androidx.ui.test को androidx.compose.ui.test में ले जाया गया (I9ffdb)
- FirstBaseline और LastBaseline को androidx.compose.ui.layout पैकेज में ले जाया गया (Ied2e7)
- कॉल बैक के बिना SelectionContainer जोड़ा गया (Ibfadb)
- SelectionContainer में SelectionHandles की पोज़िशन के लिए टेस्ट जोड़े गए. (Ie93db)
- कीबोर्ड में ऑटो करेक्ट IME का विकल्प जोड़ा गया (I57b8d)
वर्शन 1.0.0-alpha06
28 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06, और androidx.compose.foundation:foundation-text:1.0.0-alpha06 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- androidx.compose.foundation.Icon को androidx.compose.material.Icon में ले जाया गया है. अगर आपको Material लाइब्रेरी का इस्तेमाल नहीं करना है, तो Painter के साथ Image कॉम्पोनेंट / Modifier.paint() का इस्तेमाल भी किया जा सकता है. (I9f622)
- Modifier.scrollable, ScrollableColumn, और LazyColumnFor में interactionState जोड़ा गया (I81566, b/169509805)
- RowScope में alignByBaseline को जोड़ा गया है. साथ ही, alignWithSiblings का नाम बदलकर alignBy कर दिया गया है (I06503, b/170628732)
- Box को इनलाइन फ़ंक्शन बनाया गया. (Ibce0c, b/155056091)
- CoreTextField में maxLines जोड़ा गया (Ibee58, b/143687793)
- CoreTextField में सॉफ़्ट रैप जोड़ा गया. (I21a4b)
गड़बड़ियां ठीक की गईं
- VectorPainter को बंद कर दिया गया है. अब rememberVectorPainter का इस्तेमाल किया जा सकता है. इससे यह बेहतर तरीके से पता चलता है कि कंपोज़ेबल एपीआई, कंपोज़िशन के बीच डेटा को बनाए रखने के लिए, 'remember' का इस्तेमाल करता है. (Ifda43)
- ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
- CoreTextField में एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया (I72e6d)
- Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि इसका इस्तेमाल पूरे Compose में कैसे किया जाता है. दस्तावेज़ों को अपडेट किया गया, ताकि यह बताया जा सके कि नेगेटिव कॉर्नर रेडियस को शून्य पर सेट किया जाता है. (I130c7, b/168762961)
- कंपोज़्ड मॉडिफ़ायर में, इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
- KeyboardCapitalization IME विकल्प जोड़ा गया (I8ac38)
- Rtl हैंडल की पोज़िशन ठीक करें. (I6e1e0)
- बदलाव: PointerInputFilter.onPointerEvent(...) से रिटर्न वैल्यू हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि पॉइंटर इवेंट में सिर्फ़ इस्तेमाल किया गया डेटा बदला जा सकता है. PointerInputFilter.onPointerEvent(...) से डेटा वापस भेजने के बजाय, अब आपके पास सिर्फ़ पास किए गए PointerEvents के इस्तेमाल किए गए डेटा में बदलाव करने का विकल्प है. (I6acd0)
- चुने गए मेन्यू (Ief02b) में, 'सभी चुनें' विकल्प जोड़ा गया
वर्शन 1.0.0-alpha05
14 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05, और androidx.compose.foundation:foundation-text:1.0.0-alpha05 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- CoreTextField में अब कर्सर की सुविधा (Id23aa) काम करती है
contentColor() और currentTextStyle() एपीआई को बंद कर देता है. साथ ही, इनकी जगह AmbientContentColor और AmbientTextStyle ऐंबिएंट का इस्तेमाल करता है. किसी भी अन्य परिवेश की तरह, परिवेश की प्रॉपर्टी पर
.currentका इस्तेमाल करके, मौजूदा वैल्यू को ऐक्सेस किया जा सकता है. यह बदलाव इसलिए किया गया है, ताकि सभी प्लैटफ़ॉर्म पर एक जैसा अनुभव मिले. साथ ही, एक ही काम को पूरा करने के लिए कई तरीके न हों. इसके अलावा, कुछ ऐम्बिएंट प्रॉपर्टी के नाम बदले गए हैं, ताकि उनके मकसद के बारे में बेहतर तरीके से बताया जा सके. जैसे:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
गड़बड़ियां ठीक की गईं
- इनलाइन क्लास के लिए, सेंटिनल वैल्यू को स्टैंडर्ड बनाने के लिए, Color.Unset का नाम बदलकर Color.Unspecified कर दिया गया है. ऐसा इसलिए किया गया है, ताकि यह अन्य इनलाइन क्लास (I97611, b/169797763) के साथ काम कर सके
- कॉपी/चिपकाने/कट करने की सुलभता से जुड़ी कार्रवाइयां जोड़ी गईं (I6db4f)
- TextOverflow.None को जोड़ा गया है. जब ओवरफ़्लो की वैल्यू None होती है, तब Text, ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने साइज़ की जानकारी देगा. (I175c9, b/158830170)
- Float.POSITIVE_INFINITY के बजाय, अपडेट किए गए Size.Unspecified पैरामीटर को Float.NaN पर सेट किया गया है. Painter के लागू किए गए अपडेट. इनसे यह जांच की जा सकेगी कि साइज़ की वैल्यू Size.Unspecified है या नहीं. साथ ही, यह भी जांच की जा सकेगी कि साइज़ की वैल्यू फ़ाइनल है या नहीं. (I95a7e)
- पेजिंग कंपोज़ मॉड्यूल और पेजिंग इंटिग्रेशन जोड़ा गया (Ib85da)
- शून्य हो सकने वाली वैल्यू पाने के लिए, LazyListScope में बदलाव किया गया (I1765b)
- OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है. साथ ही, onPositioned() का नाम बदलकर onGloballyPositioned() कर दिया गया है. (I587e8, b/169083903)
- LazyColumn/Row के लिए सैंपल जोड़े गए (Idc16d)
- items और itemsIndexed तरीकों के लिए, emptyList (I06647) की अनुमति देने से जुड़ी समस्या को ठीक किया गया
- डेटा इंस्पेक्टर की जानकारी देने के लिए डीएसएल जोड़ें (Ic9a22)
- LongPress को Text में ले जाएं. (Iff2bc)
- टेक्स्ट में चुनने की सुविधा और डेमो बंद करें. (Ie7e97)
- सुलभता के लिए, AnnotatedString को SpannableString में बदलने की सुविधा जोड़ी गई. (Ief907)
PointerInputFilter.onPointerInput(...)को हटाया गया. इसकी जगहPointerInputFilter.onPointerEvent(...)का इस्तेमाल किया जाना चाहिए. (I6f04a)
वर्शन 1.0.0-alpha04
1 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04, और androidx.compose.foundation:foundation-text:1.0.0-alpha04 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- स्टैक का नाम बदलकर Box कर दिया गया है. compose.foundation.layout में मौजूद नए Box के पक्ष में, पहले से मौजूद foundation.Box को बंद कर दिया जाएगा. नए बॉक्स में, एक से ज़्यादा चाइल्ड होने पर उन्हें एक के ऊपर एक रखा जाता है. यह पिछले बॉक्स से अलग है, जो कॉलम की तरह काम करता था. (I94893, b/167680279)
- बॉक्स डेकोरेशन पैरामीटर का इस्तेमाल बंद कर दिया गया है. अगर आपको अपने बॉक्स में डेकोरेशन/पैडिंग चाहिए, तो इसके बजाय मॉडिफ़ायर का इस्तेमाल करें (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- नई LazyListState क्लास जोड़ें. इससे LazyRow और LazyColumn कॉम्पोनेंट की स्क्रोल पोज़िशन को देखा और कंट्रोल किया जा सकता है. rememberLazyListState() का इस्तेमाल करके इंस्टेंस बनाए जा सकते हैं. साथ ही, इन्हें कॉम्पोनेंट के state पैरामीटर में पास किया जा सकता है. फ़िलहाल, इस शुरुआती वर्शन में दिखने वाले पहले आइटम और ऑफ़सेट को देखा जा सकता है. (Ic7cb7, b/159307669)
- अब लेज़ी लिस्ट की पोज़िशन और स्क्रोल ऑफ़सेट सेव किया जाता है. साथ ही, गतिविधि को फिर से बनाने पर उसे वापस लाया जाता है (Ie045f, b/166589058)
- लंबे समय तक दबाकर रखने की सुविधा के लिए, सिमैंटिक ऐक्शन जोड़ा गया (I6281b, b/156468846)
- समय के साथ शेयर की गई स्थिति के एक ही म्यूटेटर को बनाए रखने और प्राथमिकता के हिसाब से टकराव वाले म्यूटेटर को रद्द करने के लिए, MutatorMutex यूटिलिटी जोड़ी गई (I3f975)
- @VisibleForTesting के साथ एनोटेट किए गए rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को इंटरनल एपीआई बनाएं और उनके kdoc को छिपाएं (I554eb, b/168308412)
- स्ट्रिंग इनपुट के साथ टेक्स्ट से inlineContent पैरामीटर हटाया गया. इसका इस्तेमाल नहीं किया जाएगा, क्योंकि inlineContent को AnnotatedString के साथ काम करना चाहिए. (Ief403)
- कस्टम अरेंजमेंट एपीआई को हटा दिया गया है. (Ic576d, b/168297922, b/168297923)
- wrapContentSize मॉडिफ़ायर में
unboundedपैरामीटर जोड़ा गया है. इससे लेआउट एलिमेंट को मेज़र किया जा सकता है. इसके लिए, ज़्यादा से ज़्यादा कंस्ट्रेंट की कोई सीमा नहीं होती. (I77951, b/158559319) - हमने लेआउट स्कोप के कॉन्टेंट के स्टैटिक इंपोर्ट को रोका है. उदाहरण के लिए, RowScope में alignWithSiblings. इसके बजाय, साफ़ तौर पर स्कोप तय करने वाले विकल्प का इस्तेमाल किया जाना चाहिए:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)
गड़बड़ियां ठीक की गईं
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- स्केल और रोटेशन ट्रांसफ़ॉर्मेशन एपीआई को अपडेट किया गया है. अब ये DrawScope और DrawTransform में x/y कोऑर्डिनेट के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट कोऑर्डिनेट को दिखाने के लिए एक ही ऑफ़सेट पैरामीटर का इस्तेमाल करेंगे
- Rect.expandToInclude और Rect.join तरीके हटाए गए
- रेडियस के दस्तावेज़ को अपडेट किया गया है. इसमें अंडाकार के साथ-साथ, दीर्घवृत्ताकार भी बताया गया है
- दस्तावेज़ जोड़ा गया है. इसमें बताया गया है कि इनलाइन रेडियस क्लास के लिए, सार्वजनिक कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसके बजाय, रेडियस ऑब्जेक्ट को उनके फ़ंक्शन कंस्ट्रक्टर के ज़रिए इंस्टैंटिएट किया जाना चाहिए
- RoundRect API हटा दिए गए हैं, ताकि topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी की जा सके
- Rect.shift को Rect.translate के पक्ष में बंद कर दिया गया है
- RoundRect.grow और Rect.shrink API हटा दिए गए हैं
- RoundRect.outerRect का नाम बदलकर Rect.boundingRect कर दिया गया है
- RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीके हटा दिए गए हैं
- RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया है
- RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया है
- RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी के तौर पर बदला गया
- RoundRect कंस्ट्रक्टर को अपडेट किया गया है, ताकि वह x/y रेडियस वैल्यू के लिए अलग-अलग पैरामीटर के बजाय, रेडियस प्रॉपर्टी का इस्तेमाल कर सके
- ऐसे साइज़ एपीआई हटा दिए गए हैं जो यह मानते थे कि यह एक आयत है और इसका मूल बिंदु 0,0 पर है
- Radius में डिस्ट्रक्टिंग एपीआई जोड़ा गया
- RoundRect एक्सटेंशन फ़ंक्शन को प्रॉपर्टी में माइग्रेट किया गया
- (I8f5c7, b/168762961)
- LazyColumnFor/LazyRowFor में स्क्रोलिंग के दौरान, हर बार स्क्रोल करने पर गैर-ज़रूरी रीकंपोज़िशन नहीं किए जाते. इससे परफ़ॉर्मेंस को बेहतर बनाने में मदद मिलती है (I64f65, b/168293643, b/167972292, b/165028371)
- स्क्रोल करने के बाद आइटम बदलने पर, LazyColumnFor/LazyRowFor में क्रैश होने की समस्या ठीक की गई. साथ ही, पहले दिखने वाले आइटम को हटाने पर, अपने-आप ऊपर की ओर स्क्रोल होने की सुविधा लागू की गई, ताकि आखिर में खाली जगहें न दिखें (I220ab, b/161480164, b/167855468)
- अब एक ही दिशा में स्क्रोल किए जा सकने वाले कंटेनर, जैसे कि ScrollableContainer और LazyColumnFor को नेस्ट करने की अनुमति नहीं है. यह सुविधा कभी काम नहीं करती थी. साथ ही, यह फ़्लिंग करने और LazyColumnFor (I6e101) के आइटम कंपोज़ करने की सभी सुविधाओं को बंद कर देती थी
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- DrawScope एपीआई को अपडेट किया गया है. इसमें स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीके शामिल किए गए हैं. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद इसे हटा दिया जाता है
- clipPath के दस्तावेज़ को अपडेट किया गया है, ताकि गोल आयत के बजाय Path का रेफ़रंस दिया जा सके
- clipPath में मौजूद right पैरामीटर के दस्तावेज़ में स्पेसिंग से जुड़ी समस्या ठीक की गई
- DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
- dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
- चारों सीमाओं के लिए एक जैसी इनसेट वैल्यू देने वाला इनसेट ओवरलोड जोड़ा गया
- इन्सर्ट करने के तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इंसर्ट करने का तरीका, चारों साइड पर लागू होगा
- 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Row और Column के लिए, spacedBy Arrangement को जोड़ा गया है. इससे लेआउट के बच्चों को तय की गई दूरी पर रखा जा सकता है. अलाइन किए गए अरेंजमेंट को भी जोड़ा गया है, ताकि लेआउट के चाइल्ड कॉम्पोनेंट को एक-दूसरे के बगल में रखा जा सके. साथ ही, उन्हें अलाइनमेंट के हिसाब से लाइन/कॉलम में अलाइन किया जा सके. Arrangement.Vertical#arrange और Arrangement.Horizontal#arrange के पिछले तरीकों को बंद कर दिया गया है. साथ ही, आने वाले समय में कस्टम अरेंजमेंट लिखने की सुविधा उपलब्ध नहीं होगी. (I6733d, b/161985975)
- ऑफ़सेट को इनलाइन क्लास (Iaec70) बना दिया गया है
- TextField से onFocusChanged कॉलबैक हटा दिए गए हैं. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
- Modifier.drawBorder का इस्तेमाल बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. बॉर्डर डेटा क्लास को BorderStroke से बदल दिया गया है (I4257d, b/158160576)
- VerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करें (I73b0d, b/163019183)
- LazyItemScope से, fillMax* मॉडिफ़ायर के तौर पर मार्क किए गए मॉडिफ़ायर हटाएं. ऐसा इसलिए, क्योंकि ये मॉडिफ़ायर उन आइटम के लिए सही तरीके से जोड़े जा रहे हैं जो LazyColumnFor के सीधे तौर पर चाइल्ड नहीं हैं (Ifa78d)
- DSL के तौर पर LazyColumn/LazyRow लागू करने की सुविधा जोड़ी गई (I93cc6)
- Constraints अब एक इनलाइन क्लास है (I88736)
- fillMaxWidth, fillMaxHeight, और fillMaxSize मॉडिफ़ायर का इस्तेमाल करके, लेआउट को उपलब्ध जगह के कुछ हिस्से के हिसाब से साइज़ करने की सुविधा जोड़ी गई है. (I945bb, b/161562591)
गड़बड़ियां ठीक की गईं
- SelectionContainer में मॉडिफ़ायर पैरामीटर जोड़ा गया (I4aada, b/161487952)
- SemanticsPropertyKey में mergePolicy lambda जोड़ा गया. इसका इस्तेमाल, mergeAllDescendants सिमैंटिक के लिए कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के तहत, अगर पैरंट वैल्यू पहले से मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()का नाम बदलकरPlacementScope.place()कर दिया गया है. साथ ही,PlacementScope.place()का नाम बदलकरPlacementScope.placeRelative()कर दिया गया है. इस वजह से,PlacementScope.place()तरीके से अब दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में, पोज़िशन अपने-आप मिरर नहीं होगी. अगर आपको ऐसा करना है, तो इसके बजायPlacementScope.placeRelative()का इस्तेमाल करें. (I873ac, b/162916675)- अब इस्तेमाल में नहीं रहे FilledTextField कॉम्पोनेंट को हटाया गया. फ़िल्ड टेक्स्ट फ़ील्ड के लिए, कृपया TextField का इस्तेमाल करें, ताकि आपको Material Design का बेहतर अनुभव मिल सके. (I5e889)
- LinearProgressIndicator में backgroundColor पैरामीटर जोड़ा गया है. साथ ही, CircularProgressIndicator से इंटरनल पैडिंग हटा दी गई है. नया ProgressIndicatorConstants.DefaultProgressAnimationSpec जोड़ा गया है. इसका इस्तेमाल, वैल्यू के बीच प्रोग्रेस को ऐनिमेट करते समय डिफ़ॉल्ट AnimationSpec के तौर पर किया जा सकता है (If38b5, b/161809914, b/161804677)
- अब
state { ... }कंपोज़ेबल का इस्तेमाल नहीं किया जा सकेगा. इसके बजाय,remember { mutableStateOf(...) }को साफ़ तौर पर कॉल किया जा सकेगा. इससे स्टेट मैनेजमेंट के लिए, एपीआई की कुल सतह और कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी डेलिगेशन के लिएby mutableStateOf()पैटर्न से मेल खाता है. (Ia5727) - Compose के नाम रखने के पैटर्न के हिसाब से, RRect का नाम बदलकर RoundRect कर दिया गया है RRect के जैसे ही फ़ंक्शन कंस्ट्रक्टर बनाए गए हैं साथ ही, RRect फ़ंक्शन कंस्ट्रक्टर (I5d325) को बंद कर दिया गया है
- Removed onChildPositioned और OnChildPositionedModifier को हटा दिया गया है. डेवलपर को इसके बजाय, चाइल्ड लेआउट पर onPositioned और OnPositionedModifier का इस्तेमाल करना चाहिए. (I4522e, b/162109766)
- IntSize अब एक इनलाइन क्लास (I2bf42) है
- बदलाव करने के लिए, खाली जगह पर दबाकर रखें. (Ib1e5b)
- टेक्स्ट पर टैप करने के बाद, फ़्लोटिंगटूलबार को छिपाएं. (If4525)
- चुने गए टेक्स्ट को अपडेट करते समय, फ़्लोटिंगटूलबार को छिपाएं. (I8444c)
- 'धुंधला करें' से चुने हुए का निशान हटाएं. (I781a2)
वर्शन 0.1.0-dev16
5 अगस्त, 2020
androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16, और androidx.compose.foundation:foundation-text:0.1.0-dev16 रिलीज़ किए जाते हैं. वर्शन 0.1.0-dev16 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyItemScope को Lazy लिस्ट के itemContent पैरामीटर के लिए जोड़ा गया था. यह पैरंट के ज़्यादा से ज़्यादा साइज़ को भरने के लिए मॉडिफ़ायर उपलब्ध कराता है. इससे उस समस्या को हल किया जा सकता है जब आइटम को व्यूपोर्ट और रेगुलर Modifier.fillMaxSize() को भरना चाहिए. हालांकि, आइटम को इनफ़िनिटी कंस्ट्रेंट के साथ मेज़र किया जाता है, इसलिए यह काम नहीं करता. (Ibd3b2, b/162248854)
- डायलॉग को यूज़र इंटरफ़ेस (यूआई) पर ले जाएं (I47fa6)
- LazyColumnForIndexed/LazyRowForIndexed जोड़ा गया - ये LazyColumnFor/LazyRowFor के ऐसे वर्शन हैं जो itemCallback में इंडेक्स और आइटम, दोनों उपलब्ध कराते हैं. यह तब काम आता है, जब आपको मौजूदा आइटम के साथ-साथ मौजूदा इंडेक्स के बारे में भी जानना हो. (I65ff3)
- Modifier.deternimateProgress का नाम बदलकर Modifier.progressSemantics कर दिया गया है (I9c0b4)
- LazyColumnItems का नाम बदलकर LazyColumnFor कर दिया गया है. LazyRowItems का नाम बदलकर LazyRowFor (I84f84) कर दिया गया है
- सबसे सही तरीके से काम करने के लिए, कुछ मार्क/एनोटेशन जोड़ें. (I66b20)
- foundation.shape.corner पैकेज को foundation.share (I46491, b/161887429) में फ़्लैट कर दिया गया है
- LazyRowItems/LazyColumnItems के लिए, crossaxis 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 DSL को हटा दिया गया है. ConstraintSet2 का नाम बदलकर ConstraintSet कर दिया गया है. (If58d1, b/162450908)
- Modifier.absoluteOffset() और Modifier.absoluteOffsetPx() जोड़े गए. ऑफ़सेट मॉडिफ़ायर के उलट, ऐब्सलूट ऑफ़सेट मॉडिफ़ायर, दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में अपने-आप मिरर नहीं होंगे (I3aa21)
RowऔरColumnअब इनलाइन फ़ंक्शन हैं. इससे इन्हें इस्तेमाल करने का ओवरहेड काफ़ी कम हो गया है. (I75c10)
गड़बड़ियां ठीक की गईं
- एपीआई से जुड़ी कई समस्याओं को ठीक किया गया (I077bc)
- इस्तेमाल नहीं किए जा रहे OffsetBase इंटरफ़ेस को हटाएं
- Offset और IntOffset क्लास को अलाइन किया गया है, ताकि एपीआई का एक जैसा इंटरफ़ेस हो
- Offset API के साथ एक जैसा व्यवहार करने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero कर दिया गया है
- nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है, ताकि उपभोक्ता अपने Canvas इंस्टेंस बना सकें
- DrawScope को रिफ़ैक्टर करने के लिए, EmptyCanvas क्लास का स्टब बनाया गया है, ताकि इसे lateinit के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
- ClipOp enum के नाम बदलकर, उन्हें पास्कल केस में बदला गया
- FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeJoin enum का नाम बदलकर पास्कल केस कर दिया गया है
- PointMode enum के नाम बदलकर, पास्कल केस कर दिए गए हैं
- PaintingStyle enums का नाम बदलकर, पास्कल केस कर दिया गया है
- PathFillType enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeCap enum का नाम बदलकर पास्कल केस कर दिया गया है
- DrawCache को लागू करने के तरीके को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है. अब यह fillPaint और strokePaint इंटरनल पैरामीटर के लिए, लेज़ी डेलिगेशन का इस्तेमाल नहीं करेगा
- इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न करना पड़े
- @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
- हर पाथ के निर्देश के लिए, @Immutable एनोटेशन पाने के लिए PathNode अपडेट किया गया
- वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए फ़ालतू शर्तों की जांच को हटाया जा सके. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही इनकी जांच करता है
- फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद कर दिया गया है
- @Immutable और @Stable एपीआई के साथ अपडेट की गई ब्रशिंग क्लास और फ़ंक्शन कंस्ट्रक्टर
- VertexMode enum को PascalCase में अपडेट किया गया
- DrawScope के selectPaint तरीके को अपडेट किया गया है, ताकि अगर स्ट्रोक के पैरामीटर बदल गए हैं, तो पेंट पर उन्हें शर्तों के साथ बदला जा सके
- Size को अपडेट किया गया है, ताकि इसमें डिस्ट्रक्चरिंग एपीआई जोड़ा जा सके. साथ ही, UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया है. इसके अलावा, इस्तेमाल न होने वाले तरीकों को हटा दिया गया है
MonotonicFrameAnimationClock जोड़ा गया है. इससे MonotonicFrameClock को AnimationClockObservable के तौर पर इस्तेमाल किया जा सकता है. इससे नई को-रूटीन पर आधारित क्लॉक और अब भी कॉल बैक पर आधारित क्लॉक का इस्तेमाल करने वाले एपीआई के बीच के अंतर को कम किया जा सकता है.
ManualAnimationClock के MonotonicFrameClock के बराबर अब ManualFrameClock है. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGestureको हटाया गया. इसके बजाय,SemanticsNodeInteraction.performGestureका इस्तेमाल करें. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()का नाम बदलकरSemanticsNodeInteraction.getUnclippedBoundsInRoot()किया गया (Icafdf, b/161336532)दाएं से बाएं लिखने की सुविधा के लिए, एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient को जोड़ा गया है. इसका इस्तेमाल लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)
Modifier.plus का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से क्रम का ज़्यादा मज़बूत सिग्नल मिलता है. साथ ही, इससे
Modifier.padding().background() + anotherModifierटाइप करने पर पाबंदी लगती है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)isFocused()औरisNotFocused()SemanticsMatcher को जोड़ा गया. (I0b760)RemeasurementModifier जोड़ा गया. इससे उपयोगकर्ताओं को लेआउट को एक साथ फिर से मेज़र करने की अनुमति मिलती है. आम तौर पर, इसकी ज़रूरत नहीं होती, क्योंकि रीमेज़र/रीलेआउट अपने-आप होता है. हालांकि, हम इसका इस्तेमाल स्क्रोल के दौरान LazyColumnItems में करते हैं. (I5f331, b/160791058)
isSystemInDarkTheme अब हमेशा सिस्टम-वाइड डार्क थीम सेटिंग को ध्यान में रखता है. साथ ही, Q से पहले की पावर सेविंग की स्थिति को अनदेखा करता है. ऐसा नए दिशा-निर्देशों के मुताबिक किया जाता है. (I0c10c)
OnChildPositioned को बंद कर दिया गया है. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)
AndroidComposeTestRule का नाम बदलकर createAndroidComposeRule कर दिया गया है. (I70aaf)
TextLayoutResult (I9d6e6) पाने के लिए, सुलभता से जुड़ी कार्रवाई जोड़ें
वर्शन 0.1.0-dev15
22 जुलाई, 2020
androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15, और androidx.compose.foundation:foundation-text:0.1.0-dev15 रिलीज़ किए जाते हैं. वर्शन 0.1.0-dev15 में ये बदलाव शामिल हैं.
0.1.0-dev15 वर्शन का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:
डिपेंडेंसी से जुड़ा अपडेट
- Compose के
0.1.0-dev15वर्शन का इस्तेमाल करने के लिए, आपको अपनी डिपेंडेंसी अपडेट करनी होंगी. इसके लिए, डिपेंडेंसी तय करना सेक्शन में ऊपर दिखाए गए नए कोड स्निपेट का इस्तेमाल करें.
एपीआई में हुए बदलाव
- इसी तरह, ScrollableColumn/ScrollableRow में नए पैरामीटर की तरह, LazyColumnItems/LazyRowItems में अब contentPadding पैरामीटर भी है. इससे, क्लिप किए जाने के बाद कॉन्टेंट में पैडिंग जोड़ी जा सकती है. ऐसा सिर्फ़ modifier पैरामीटर के ज़रिए नहीं किया जा सकता. इससे सिर्फ़ पहले आइटम से पहले या आखिरी आइटम के बाद स्पेस जोड़ा जा सकता है. (Ibc24e)
- टेक्स्ट फ़ील्ड में onFocusChange कॉलबैक का नाम बदलकर onFocusChanged कर दिया गया है (Ida4a1)
- VerticalScroller और HoriziontalScroller को बंद कर दिया गया है. Column/Row के व्यवहार और पैरामीटर के साथ-साथ Modifier के साथ पहले से मौजूद अनुभव के लिए, ScrollableColumn और ScrollableRow का इस्तेमाल करें. इसके अलावा, अपने एलिमेंट पर Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करें. इसी तरह, ScrollerPosition को ScrollState' (I400ce, b/157225838, b/149460415, b/154105299) के पक्ष में बंद कर दिया गया है
- Modifier.draggable और Modifier.scrollable एपीआई को फिर से बनाया गया है. DragDirection को हटा दिया गया है और इसकी जगह Orientation का इस्तेमाल किया जा रहा है. स्क्रोल करने की सुविधा के लिए, राज्य की जानकारी देने की प्रोसेस को आसान बनाया गया है. ScrollableState का नाम बदलकर ScrollableController कर दिया गया है (Iab63c, b/149460415)
- सिंगल-वैल्यू सिमैंटिक्स प्रॉपर्टी अब कॉलिंग स्टाइल का इस्तेमाल करती हैं.
उदाहरण के लिए, 'semantics { hidden = true }' को अब इस तरह लिखा जाता है:
semantics { hidden() }. (Ic1afd, b/145951226, b/145955412) - RoundedCornerShape और CutCornerShape में इस्तेमाल किए गए कॉर्नर के साइज़ अब 50% से ज़्यादा हो सकते हैं (Id2340, b/160400213)
- Image कंपोज़ेबल के लिए, ContentScale पैरामीटर की डिफ़ॉल्ट वैल्यू को Inside से बदलकर Fit कर दिया गया है. ऐसा इसलिए किया गया था, ताकि लेआउट का साइज़ पेंटर के इंट्रिंसिक साइज़ से बड़ा होने पर, पेंटर को स्केल अप किया जा सके. साथ ही, आसपेक्ट रेशियो को भी बनाए रखा जा सके. इस बदलाव से, इमेज के लिए तय किए गए साइज़ देने की उम्मीदें बेहतर तरीके से पूरी होती हैं. साथ ही, अगर कंपोज़ेबल के साइज़ का हिसाब लगाने के लिए सिर्फ़ इंट्रिंसिक साइज़ का इस्तेमाल किया जाता है, तो डिफ़ॉल्ट व्यवहार पर कोई असर नहीं पड़ता. (I40ae3, b/159838006)
- स्टैटिक ऐनिमेशन स्पेसिफ़िकेशन के कॉन्सेप्ट को बेहतर तरीके से समझने के लिए, टॉप लेवल के एपीआई में AnimationBuilder के बजाय AnimationSpec का इस्तेमाल करें -ट्रांज़िशन डीएसएल को बेहतर बनाएं. इसके लिए, tween और spring जैसे AnimationSpec बनाने के लिए, लैंबडा की ज़रूरत को हटाएं. इसके बजाय, वे सीधे तौर पर कंस्ट्रक्टर पैरामीटर लेते हैं. -AnimationSpec को इस्तेमाल करने में आसानी होगी. इसके लिए, बिल्डर पर भरोसा करने के बजाय कंस्ट्रक्टर का इस्तेमाल किया जाएगा -KeyFrames और Tween के लिए अवधि और देरी को Int में बदलें. इससे, टाइप कास्ट और तरीके के ओवरलोडिंग की ज़रूरत नहीं होगी (Long और Int, दोनों के लिए). (Ica0b4)
- क्लिक करने की सुविधा हटा दी गई है. Modifier.clickable (I84bdf) का इस्तेमाल करें
- LazyRowItems जोड़े गए - ये LazyColumnItems के हॉरिज़ॉन्टल स्क्रोलिंग वाले ऐनलॉग हैं (Ibbcf7)
- बिना किसी स्टेटस वाले लो लेवल के ऐनिमेशन एपीआई लॉन्च किए गए. ये एपीआई (I63bf7)
- androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करते. इस तरह के कंपोज़ेबल का इस्तेमाल करने वाले TextField, FilledTextField, और CoreTextField कंपोज़ेबल को भी बंद कर दिया गया है. कृपया इसके बजाय androidx.ui.input.TextFieldValue का इस्तेमाल करें (I4066d, b/155211005)
- IntPx की जगह Int का इस्तेमाल किया गया. IntPxPosition की जगह IntOffset का इस्तेमाल किया गया. IntPxSize को IntSize से बदल दिया गया है. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape हटा दिया गया है; androidx.ui.graphics.RectangleShape का इस्तेमाल करें (I94939, b/154507984)
- साइज़ की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxSize के बजाय Size क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. साथ ही, फ़्लोट के तौर पर दिखाई गई चौड़ाई और ऊंचाई को दिखाने के लिए, दो फ़्लोट वैल्यू को पैक करने के लिए लंबे समय तक इसका इस्तेमाल किया जा सकता है. (Ic0191)
- पोजीशनिंग की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. इसकी मदद से, दो फ़्लोट वैल्यू को एक साथ पैक करने के लिए, long का इस्तेमाल किया जा सकता है. इससे 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 अब पहले से मौजूद Row उपलब्ध कराता है. (Ieca5d, b/157020670)
- पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रिफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (Iede0b)
- Modifier.indication को फ़ाउंडेशन पैकेज में जोड़ दिया गया है. इसका इस्तेमाल, कस्टम इंटरैक्टिव एलिमेंट (I8425f, b/155287131) पर दबाने/खींचने/अन्य इंडिकेशन दिखाने के लिए करें
- VerticalScroller और HorizontalScroller में अब स्क्रोल करने की दिशा बदलने की सुविधा काम करती है. इसके लिए, ScrollerPosition पर isReversed सेट करना होगा (I953bd)
- टेक्स्ट लेआउट में कंपोज़ेबल जोड़ने की सुविधा. (I1373c)
- CanvasScope को लागू करने के तरीके को बेहतर बनाया गया है. अब सिर्फ़ DrawScope और ContentDrawScope उपलब्ध हैं. CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस लागू करने और LayoutDirection उपलब्ध कराने के लिए, DrawScope को अपडेट किया गया ContentDrawScope में DrawScope सबक्लास को मिटाया गया Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब खुद RTL प्रॉपर्टी को बनाए न रखें, क्योंकि DrawScope इसे मैन्युअल तरीके से उपलब्ध कराए बिना ही उपलब्ध कराता है (I1798e)
- Modifier पर drawBackground एक्सटेंशन एपीआई के पक्ष में, DrawBackground एपीआई को हटाया गया. कलर, ब्रश, और पेंट के drawBackground को फिर से फ़ैक्टर किया गया है, ताकि कोड पाथ कम किए जा सकें. साथ ही, कंपोज़िशन के हिस्से के तौर पर बनाए जाने वाले मॉडिफ़ायर की ज़रूरत को हटाया जा सके. (I0343a)
- ज़्यादा लेवल वाले Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय Canvas को दिखाते हैं. इससे उपभोक्ताओं को अपने पेंट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी Canvas का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, Canvas के साथ ड्राइंग कमांड जारी करने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
- HorizontalScroller और VerticalScroller, सेव किए गए इंस्टेंस की स्थिति का इस्तेमाल करके अपनी स्क्रोल पोज़िशन को वापस नहीं लाते हैं. (Ia0fae, b/155075048)
- FocusManagerAmbient को हटा दिया गया है. फ़ोकस पाने के लिए, FocusModifier.requestFocus का इस्तेमाल करें. (Ic4826)
- टेबल लेआउट को कुछ समय के लिए हटा दिया गया है. हम इसे नए एपीआई के साथ फिर से उपलब्ध कराएंगे. (Id88a7)
CanvasScope API बनाया गया है. यह Canvas ऑब्जेक्ट को रैप करता है, ताकि बिना किसी स्टेटस के, डिक्लेरेटिव ड्राइंग एपीआई सरफेस को दिखाया जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर के स्कोप में शामिल होते हैं. साथ ही, साइज़िंग की जानकारी भी, संबंधित इंसर्ट बाउंड्री के हिसाब से तय की जाती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, अपने Paint state ऑब्जेक्ट को बनाए रखने की ज़रूरत नहीं होती.
CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि उसमें डेक्लेरेटिव ग्राफ़िक्स का डेमो शामिल किया जा सके (Ifd86d)
ColoredRect को हटा दिया गया है. इसके बजाय, drawBackground मॉडिफ़ायर के साथ User Box का इस्तेमाल करें (I983c7, b/152753731)
TextField (I6e33f) में कर्सर के रंग को पसंद के मुताबिक बनाने की सुविधा जोड़ें
अब SoftwareKeyboardController का इस्तेमाल करके, सॉफ़्टवेयर कीबोर्ड को छिपाया/दिखाया जा सकता है. यह onTextInputStarted कॉलबैक (I8dc44, b/151860051) से डिलीवर किया जाता है
TextField के साथ इस्तेमाल की गई TextFieldValue, अब गतिविधि को फिर से बनाने के दौरान भी बनी रहेगी. इसके लिए, इसे इस तरह इस्तेमाल करें:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724)यह फ़ंक्शन, Text() में आम तौर पर इस्तेमाल होने वाली विज्ञापन टेक्नोलॉजी से जुड़ी सेवा देने वाली कंपनियां पैरामीटर जोड़ता है. अगर आपको फ़िलहाल इन पैरामीटर में से कुछ को पास करने के लिए, लोकल टेक्स्ट स्टाइल बनानी है, जैसे कि
Text(style = TextStyle(textAlign = TextAlign.Center)), तो अब सीधे तौर पर पैरामीटर दिए जा सकते हैं:Text(textAlign = TextAlign.Center)(I82768)फ़ोकस सबसिस्टम के साथ इंटिग्रेट करने के लिए, CoreTextField/TextField के focusIdentifier पैरामीटर को FocusNode से बदल दिया गया है. (I7ea48)
TextField अपडेट - हॉरिज़ॉन्टल डाइमेंशन में, इसे दिया गया पूरा स्पेस इस्तेमाल किया जाएगा (Ib08df, b/154638552)
InteractionState और Interaction जोड़े गए हैं. इससे ऐसे कॉम्पोनेंट बनाना आसान हो गया है जो यूज़र इंटरफ़ेस (यूआई) की स्थिति में होने वाले बदलावों पर प्रतिक्रिया देते हैं. जैसे, दबाना और खींचना (Icfe25, b/152525426)
RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)
एपीआई में, Color के सभी ऐसे इस्तेमाल को बदला गया है जिनमें null वैल्यू इस्तेमाल की जा सकती थी. अब null वैल्यू इस्तेमाल नहीं की जा सकती. साथ ही, null की जगह Color.Unset का इस्तेमाल किया गया है (Iabaa7)
TextField API अपडेट - onFocus और onBlur कॉलबैक को एक ही onFocusChange(Boolean) कॉलबैक में मर्ज कर दिया गया है. इसमें पैरामीटर (I66cd3) शामिल है
ScaleFit का नाम बदलकर ContentScale कर दिया गया है ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में रहे. FillMaxDimension का नाम बदलकर Crop कर दिया गया है FillMinDimension का नाम बदलकर Fit कर दिया गया है Fit का नाम बदलकर Inside कर दिया गया है, ताकि यह ImageView.ScaleType से बेहतर तरीके से मैच हो सके ImageView.ScaleType के बराबर दस्तावेज़ जोड़ा गया है, जिसमें बताया गया है कि Crop और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_CROP के बराबर नतीजे देता है. साथ ही, Fit और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.FIT_CENTER के बराबर नतीजे देता है Inside और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_INSIDE के बराबर नतीजे देता है (I45f09, b/152842521)
ProvideContentColor को हटाता है. इसके बजाय, ContentColorAmbient को सीधे तौर पर
Providers(Iee942) के साथ इस्तेमाल करेंयह टेक्स्ट में रंग पैरामीटर जोड़ता है. इससे, टेक्स्ट स्टाइल के रंग को बदला जा सकता है. इसके लिए, थीम में दिए गए स्टाइल के साथ मैन्युअल तरीके से मर्ज करने की ज़रूरत नहीं होती. (I41a66)
DrawModifier API को बेहतर बनाया गया है:
- draw() ContentDrawScope के लिए रिसीवर स्कोप बनाया गया
- draw() पर मौजूद सभी पैरामीटर हटा दिए गए हैं
- DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
- ContentDrawScope में drawContent() मेथड होता है (Ibaced, b/152919067)
ColoredRect को बंद कर दिया गया है. इसके बजाय,
Box(Modifier.preferredSize(width, height).drawBackground(color))का इस्तेमाल करें. (I499fa, b/152753731)शेप थीमिंग सिस्टम को, मटीरियल डिज़ाइन की खास बातों के मुताबिक अपडेट किया गया है. अब ज़्यादातर कॉम्पोनेंट के लिए, छोटे, सामान्य, और बड़े साइज़ के शेप दिए जा सकते हैं (Ifb4d1)
मॉडिफ़ायर प्लस ऑपरेटर को फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) से बदल दिया गया है
ड्रैग करने की सुविधा को मॉडिफ़ायर में ले जाया गया है (Id9b16, b/151959544)
Textको androidx.ui.core से androidx.ui.foundation पैकेज में ले जाया गया. (I87ce5)Checkbox, Switch, और Toggleable में
enabledपैरामीटर जोड़ा गया (I41c16)Ripple अब एक मॉडिफ़ायर है. Clickable को अभी तक नहीं बदला गया है. इसलिए, इसका इस्तेमाल करने का सुझाव
Clickable(onClick = { ... }, modifier = ripple())(Ie5200, b/151331852, b/150060763) हैवेक्टर ग्राफ़िक्स के लिए, मौजूदा सबकंपोज़िशन एपीआई को बदलने के लिए VectorPainter API जोड़ा गया. सबकंपोज़िशन का नतीजा, DrawModifier के बजाय VectorPainter ऑब्जेक्ट होता है. VectorPainter के पक्ष में, DrawVector कंपोज़ेबल के पिछले वर्शन को बंद कर दिया गया है.
Image(Painter)API का नाम बदलकरPaintBox(Painter)कर दिया गया है Created Vector composable that behaves like the Image composable except with a VectorAsset instead of an ImageAsset (I9af9a, b/149030271)स्क्रीन पर दिए गए ImageAsset को दिखाने के साथ-साथ, साइज़/लेआउट को मैनेज करने के लिए, Created Image कंपोज़ेबल बनाया गया है. इस कंपोज़ेबल में, किसी भी आर्बिट्ररी पेंटर इंस्टेंस को उसकी इंट्रिंसिक साइज़ के हिसाब से ड्रॉ करने की सुविधा भी होती है. साथ ही, इसमें तय किए गए साइज़ या कम से कम साइज़ (Ibcc8f) को भी इस्तेमाल किया जा सकता है
Button, FloatingActionButton, और Clickable में अब अलग
enabledपैरामीटर है. बटन पर मौजूद कुछ पैरामीटर के नाम बदल दिए गए हैं या उनका क्रम बदल दिया गया है. (I54b5a)Image का नाम बदलकर ImageAsset कर दिया गया है, ताकि इमेज डेटा और लेआउट में हिस्सा लेने और कॉन्टेंट को ड्रॉ करने के लिए इस्तेमाल किए जाने वाले आने वाले Image कंपोज़ेबल के बीच के अंतर को बेहतर तरीके से समझा जा सके.
android.graphics.Bitmap पर एक्सटेंशन मेथड बनाया गया है,
Bitmap.asImageAsset(), ताकि ImageAsset का एक इंस्टेंस बनाया जा सके. यह इंस्टेंस, पारंपरिक Android ऐप्लिकेशन डेवलपमेंट को कंपोज़ फ़्रेमवर्क के साथ जोड़ने के लिए काम आता है. (Id5bbd)DrawImage कंपोज़ेबल को हटा दिया गया है. मौजूदा लेआउट पर इमेज बनाने के लिए, ImagePainter का इस्तेमाल करें. इसके अलावा, इमेज को दिखाने के लिए SimpleImage का इस्तेमाल करें. इससे इमेज को जगह मिलती है (I595e1, b/149827027)
स्टैक कॉम्पोनेंट, दाएं से बाएं की ओर लिखने की सुविधा के साथ काम करता है (Ic9e00)
AppBarIcon को हटाकर Icon, IconButton, और IconToggleButton जोड़े गए. AppBarIcon के मौजूदा इस्तेमाल को सीधे तौर पर IconButton से बदला जा सकता है. इसके बाद, उनके पास सही टच टारगेट होगा. इस्तेमाल की जानकारी के लिए सैंपल देखें. साथ ही, दिए गए Material Icons के लिए आइकॉन देखें. इन आइकॉन को सीधे तौर पर इन कॉम्पोनेंट के साथ इस्तेमाल किया जा सकता है. (I96849)
DrawShape कंपोज़ेबल को हटा दिया गया है. इसके बजाय, DrawBackground मॉडिफ़ायर का इस्तेमाल करें. (I7ceb2)
AdapterList जोड़ा गया है. यह स्क्रोल करने लायक सूची वाला कॉम्पोनेंट है. यह सिर्फ़ दिखने वाले आइटम को कंपोज़ और लेआउट करता है. फ़िलहाल, इसकी कुछ समस्याएं हैं. जैसे, यह सिर्फ़ वर्टिकल है और इसके चाइल्ड में होने वाले सभी बदलावों को पूरी तरह से हैंडल नहीं करता है. (Ib351b)
स्क्रोल किए जा सकने वाले कॉम्पोनेंट को जोड़ा गया है. इससे कस्टम स्क्रोलर/सूची बनाई जा सकती है (I5fd37)
बैकग्राउंड का नाम बदलकर DrawBackground कर दिया गया है. साथ ही, इसे डिफ़ॉल्ट रूप से याद रखने की सुविधा चालू कर दी गई है (Ia0bd3)
Box में पैडिंग, बॉर्डर, शेप, और बैकग्राउंड पैरामीटर जोड़ें (I05027, b/148147281)
कैनवस कॉम्पोनेंट जोड़ा गया. यह कंपोज़ेबल, उपयोगकर्ता के दिए गए साइज़ के हिसाब से जगह लेता है. साथ ही, आपको CanvasScope (I0d622) का इस्तेमाल करके ड्रॉ करने की अनुमति देता है
Borderमॉडिफ़ायर का नाम बदलकरDrawBorder(I8ffcc) कर दिया गया हैलेआउट और ड्रॉइंग की सामान्य सुविधाओं को एक साथ इस्तेमाल करने के लिए, Box कॉम्पोनेंट जोड़ा गया. (I6e2a7)
स्क्रोलर अब Android के फ़्लिंग मोशन के नेटिव व्यवहार को दिखाते हैं. (I922af, b/147493715)
DrawBorder को Border Modifier (Id335a) से बदल दिया गया है
Modifier.tag का नाम बदलकर Modifier.layoutId कर दिया गया है, ताकि Modifier.testTag के साथ कोई भ्रम न हो. (I995f0)
ConstraintLayout के दिशा-निर्देश बनाते समय, percent पैरामीटर का नाम बदलकर fraction कर दिया गया है. (Ida2db)
ConstraintLayout बैरियर के मार्जिन के लिए सहायता जोड़ी गई. (I47ffe)
ConstraintLayout में आरटीएल की सुविधा से जुड़ी समस्या ठीक की गई. आरटीएल के बारे में जानकारी न रखने वाले एपीआई जोड़े गए. (I3b1c7)
ConstraintLayout के लिए एक नया डीएसएल जोड़ा गया है. ज़्यादा जानकारी के लिए, कृपया सैंपल देखें. (Icaa9a)
@ExperimentalLayout एनोटेशन जोड़ा गया. ConstraintLayout, FlowRow, और FlowColumn को अब इससे टैग किया गया है, ताकि यह पता चल सके कि इनके एपीआई में बदलाव होने वाला है. (I412a8)
Modifier.padding(InnerPadding)को जोड़ा गया (I94985, b/157133803)Row और Column में, RowAlign और ColumnAlign को हटा दिया गया है. (If60d4, b/155858731)
LayoutTag() को हटा दिया गया है. इसके बजाय, कृपया Modifier.tag() का इस्तेमाल करें. अब काम न करने वाले Modifier.matchParent() को हटा दिया गया है. इसके बजाय, कृपया Modifier.matchParentSize() का इस्तेमाल करें. (If8044)
offsetPx लेआउट मॉडिफ़ायर जोड़ा गया है. इसका इस्तेमाल करके, पिक्सल में (डाइनैमिक) ऑफ़सेट तय किए जा सकते हैं. (I5af57)
AlignmentLineOffset कंपोज़ेबल के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, कृपया relativePaddingFrom() मॉडिफ़ायर का इस्तेमाल करें. CenterAlignmentLine कंपोज़ेबल को हटा दिया गया है. (I60107)
layout modifier में defaultMinSizeConstraints जोड़ा गया है. यह रैप्ड लेआउट पर साइज़ की पाबंदियां सिर्फ़ तब सेट करता है, जब आने वाली पाबंदियां तय न की गई हों. जैसे, कम से कम पाबंदियों के लिए 0 और ज़्यादा से ज़्यादा पाबंदियों के लिए इनफ़िनिटी. (I311ea, b/150460257)
कंटेनर हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (Ibbc2b, b/151407926)
LayoutWidth/Height/Size मॉडिफ़ायर के बंद किए गए वर्शन हटा दिए गए हैं. (Ib0bc1)
ऑफ़सेट मॉडिफ़ायर के लिए डिफ़ॉल्ट पैरामीटर वैल्यू जोड़ी गईं. (I37f06)
सिमेट्रिक पैडिंग मॉडिफ़ायर जोड़ा गया. (I39840)
LayoutAspectRatio मॉडिफ़ायर को हटा दिया गया है. (I65a74)
LayoutAlign मॉडिफ़ायर हटा दिए गए हैं. (I10877)
चौड़ाई और ऊंचाई में बदलाव करने वाले मॉडिफ़ायर में मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, रैप किए गए लेआउट को ऑपज़िट ऐक्सिस की कोई सीमा तय किए बिना मेज़र किया जा रहा था. (I210b8, b/154797971)
Row और Column में, verticalGravity और horizontalGravity पैरामीटर जोड़े गए. (I7dc5a)
wrapContentWidth और wrapContentHeight को अपडेट किया गया है, ताकि किसी भी अलाइनमेंट के बजाय वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट का इस्तेमाल किया जा सके. ग्रैविटी मॉडिफ़ायर को वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट को स्वीकार करने के लिए अपडेट किया गया था. कस्टम अलाइनमेंट को लगातार इस्तेमाल करने की सुविधा के लिए, पंक्ति, कॉलम, और स्टैक को अपडेट किया गया. (Ib0728)
एलाइनमेंट को किसी भी वैल्यू के साथ इंस्टैंटिएट किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)
EdgeInsets का नाम बदलकर InnerPadding कर दिया गया है. Material Buttons के 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 लेआउट में RTL के लिए शुरुआती सहायता (Ia5519)
LayoutAlign को अपडेट किया गया है, ताकि अब यह उपलब्ध जगह को न भरे (I2b14f)
मॉडिफ़ायर के पक्ष में, AspectRatio कॉम्पोज़ेबल को हटाया गया. हटाए गए FlexColumn, FlexRow कंपोज़ेबल और Spacing मॉडिफ़ायर (Iec8a7)
Row और Column के लिए LayoutInflexible मॉडिफ़ायर हटाया गया (I0d820)
TextField के लिए, चुने गए हिस्से में बदलाव करने के लिए, खींचकर चुनने वाले हैंडल लागू करें. (I27032)
यह TextField में टेक्स्ट चुनने के लिए, LongPressAndDrag को लागू करता है. (I17919)
गड़बड़ियां ठीक की गईं
- FocusModifier को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus, Modifier.focusRequester, और Modifier.focusObserver का इस्तेमाल करें. FocusState और FocusDetailedState को अब इस्तेमाल नहीं किया जा सकता. इनके बजाय, FocusState2 का इस्तेमाल करें (I46919, b/160822875, b/160922136)
runOnIdleComposeका नाम बदलकरrunOnIdleकर दिया गया (I83607)- टेस्टिंग के कई एपीआई के नाम बदलकर, उन्हें ज़्यादा आसान बना दिया गया है. findXYZ एपीआई के नाम बदलकर onNodeXYZ कर दिए गए हैं. doXYZ नाम वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
- पहले से बंद किए जा चुके Modifier.ripple को हटाता है. Clickable अब डिफ़ॉल्ट इंडिकेशन के तौर पर रिपल का इस्तेमाल करता है. ऐसा तब होता है, जब आपके ऐप्लिकेशन में MaterialTheme {} सेट हो. इसलिए, ज़्यादातर मामलों में सिर्फ़ clickable का इस्तेमाल करके, रिपल इंडिकेशन को बिना किसी शुल्क के पाया जा सकता है. अगर आपको रिपल के लिए रंग / साइज़ / बाउंडेड पैरामीटर को पसंद के मुताबिक बनाना है, तो RippleIndication को मैन्युअल तरीके से बनाएं और इसे clickable को indication पैरामीटर के तौर पर पास करें. (I663b2, b/155375067)
- साइज़ की जांच करने वाले पुराने एपीआई हटा दिए गए हैं. (Iba0a0)
- LayoutNode एक्सपेरिमेंटल एपीआई (I4f2e9) बनाया गया
- स्क्रोल ओरिएंटेशन लॉक करने की सुविधा का पहला वर्शन, Compose में लागू कर दिया गया है. (I1ce7a, b/150289741)
- पॉप-अप, डायलॉग, और मेन्यू अब कॉन्टेक्स्ट के हिसाब से MaterialTheme (Ia3665, b/156527485) को इनहेरिट कर रहे हैं
- Layout() फ़ंक्शन के मेज़र ब्लॉक से, लेआउट की दिशा तय करने वाला पैरामीटर हटाया गया. हालांकि, लेआउट की दिशा को मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए, कॉलबैक के अंदर उपलब्ध कराया जाता है
- AbsoluteArrangement जोड़ें - इससे Row में मौजूद बच्चों को व्यवस्थित किया जा सकता है. साथ ही, आरटीएल में अपने-आप मिररिंग नहीं होती (I3a1df)
- @Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. @ComposableContract(tracked=false) से बदलें (Id211e)
- इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कंस्ट्रक्टर को कॉल किया जाता था, तो कंपोज़ कंपाइलर प्लगिन उसे इंटरसेप्ट कर लेता था. ऐसा तब होता था, जब (I5205a, b/158123804) मौजूद होता था
viewModel()कंपोज़ेबल जोड़ें. इससे, पहले से बनाए गए ViewModel को उसी तरह से बनाया या पाया जा सकता है जिस तरह से यह ऐक्टिविटी या फ़्रैगमेंट (I5fdd1) में काम करता हैRadius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया. हमने कंपैनियन ऑब्जेक्ट बनाने के तरीकों को हटा दिया है. इसके बजाय, हमने फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल किया है. इसमें डिफ़ॉल्ट पैरामीटर होता है, ताकि y-ऐक्सिस के साथ रेडियस, x-ऐक्सिस के रेडियस पैरामीटर से मेल खा सके.
DrawScope.drawRoundRect को अपडेट किया गया है, ताकि यह x और y ऐक्सिस के साथ रेडियस के लिए दो अलग-अलग फ़्लोट वैल्यू के बजाय, एक ही रेडियस पैरामीटर का इस्तेमाल कर सके (I46d1b)
पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है. Px क्लास को पूरी तरह से मिटा दिया गया (I3ff33)
पिक्सल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया (I086f4)
पिक्सल पैरामीटर (Id3434) के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है
पिक्सेल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I97a5a)
TextField के कर्सर में ब्लिंक करने वाला ऐनिमेशन है (Id10a7)
आंशिक जेस्चर के लिए, अब GestureToken (Id7ae5) को पास करने की ज़रूरत नहीं है
पिक्सल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I57bff)
Modifier.semantics को फिर से इस्तेमाल किया जा सकता है, ताकि इसका इस्तेमाल हाई लेवल कॉम्पोनेंट के लिए किया जा सके. (I4cfdc)
AnnotatedString.Builder.addAnnotationString का नाम बदलकर addStringAnnotation कर दिया गया है. (I5059e)
Alignment API को अपडेट किया गया है. साथ ही, इसमें ऐब्सलूट अलाइनमेंट की सुविधा जोड़ी गई है. यह सुविधा, आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होती (I38cd3)
Layout और LayoutModifier के चाइल्ड को, लेआउट की अलग दिशा के हिसाब से मेज़र किया जा सकता है. (Ibd731)
ImagePainter में एक और वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि इमेज के किसी सबसेट को इमेज ऐसेट (I0ea9e) के तौर पर इस्तेमाल किया जा सके
आइटम हटाते समय AdapterList के क्रैश होने की समस्या ठीक की गई (Ic64b0, b/153195921)
हमने 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 कंपोज़ेबल को 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)
अब काम नहीं करने वाला Center कंपोज़ेबल. इसे LayoutSize.Fill + LayoutAlign.Center मॉडिफ़ायर से बदला जाना चाहिए. इसके अलावा, इसे Box या Stack कंपोज़ेबल में से किसी एक से भी बदला जा सकता है. हालांकि, इसके लिए ज़रूरी है कि इन पर सही मॉडिफ़ायर लागू किए गए हों (Idf5e0)
LayoutFlexible का नाम बदलकर LayoutWeight कर दिया गया है. टाइट पैरामीटर का नाम बदलकर फ़िल कर दिया गया है. (If4738)
DrawVector को सामान्य कंपोज़ेबल फ़ंक्शन से बदलकर, Modifier drawVector() पर सेट कर दिया गया है. यह लेआउट के बैकग्राउंड के तौर पर वेक्टर को ड्रॉ करेगा. (I7b8e0)
कंपोज़ेबल फ़ंक्शन Clip को modifier drawClip() से बदलें. DrawClipToBounds एक ऐसा मॉडिफ़ायर है जिसका इस्तेमाल करना आसान है. इसका इस्तेमाल तब किया जाता है, जब आपको सिर्फ़ रेक्टैंगल शेप के साथ लेयर की सीमाओं को काटना हो. (If28eb)
DrawShadow कंपोज़ेबल फ़ंक्शन को drawShadow() मॉडिफ़ायर से बदल दिया गया है. अब LayerModifier के हिस्से के तौर पर शैडो बनाई जाती हैं. (I0317a)
androidx.compose.ViewComposer को androidx.ui.node.UiComposer में ले जाया गया है androidx.compose.Emittable को हटा दिया गया है. यह ComponentNode के साथ काम नहीं करता था. androidx.compose.ViewAdapters को हटा दिया गया है. अब इन्हें इस्तेमाल के उदाहरण के तौर पर स्वीकार नहीं किया जाता. Compose.composeInto का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,
setContentयाsetViewContentका इस्तेमाल करें. Compose.disposeComposition को बंद कर दिया गया है. इसके बजाय,setContentसे मिलेCompositionपरdisposeतरीके का इस्तेमाल करें. androidx.compose.Compose.subcomposeInto को androidx.ui.core.subcomposeInto में ले जाया गया है ComponentNode#emitInsertAt का नाम बदलकर ComponentNode#insertAt कर दिया गया है ComponentNode#emitRemoveAt का नाम बदलकर ComponentNode#removeAt कर दिया गया है ComponentNode#emitMode का नाम बदलकर ComponentNode#move कर दिया गया है (Idef00)इस्तेमाल से बाहर किया गया रैप कंपोज़ेबल. इसे LayoutAlign मॉडिफ़ायर या Stack कंपोज़ेबल (Ib237f) से बदला जा सकता है
लेआउट की दिशा को पैरंट लेआउट नोड से चाइल्ड नोड तक फैलाने की सुविधा जोड़ी गई. लेआउट की दिशा बदलने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)
Painter.toModifier का नाम बदलकर Painter.asModifier कर दिया गया है, क्योंकि नए बनाए गए Modifier में ओरिजनल Painter का रेफ़रंस है, जिसे Modifier के कई इंस्टेंस के साथ शेयर किया जा सकता है (I7195b)
LayoutPadding मॉडिफ़ायर में, दाएं से बाएं की ओर लिखने की सुविधा के लिए सहायता जोड़ें (I9e8da)
Density और DensityScope को एक ही इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय सिर्फ़ with(density) (I11cb1)
ValueHolder क्लास हटा दी गई है. AnimatedValue और AnimatedFloat क्लास को फिर से स्ट्रक्चर किया गया है, ताकि ऐनिमेशन वैल्यू फ़ील्ड को ऐब्स्ट्रैक्ट बनाया जा सके. इससे सबक्लास, वैल्यू अपडेट को देख सकते हैं.
- AnimatedValue, AnimatedFloat वगैरह के लिए मॉडल क्लास जोड़ी गईं.
- वैल्यू के बीच ऐनिमेशन के लिए, हल्के-फुल्के @Composable API का नया सेट जोड़ा गया.
- (I79530)
ambients API में बड़े बदलाव. ज़्यादा जानकारी के लिए, लॉग और
Ambient<T>दस्तावेज़ देखें (I4c7ee, b/143769776)Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की इंट पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)
ConstraintLayout में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फिर से कंपोज़िशन होने पर ऐप्लिकेशन क्रैश हो जाता था. (Ibee5a, b/158164341)
WithConstraints ट्रेलिंग लैम्डा एपीआई में बदलाव किया गया है. अब इसमें दो पैरामीटर के बजाय, एक रिसीवर स्कोप है. यह स्कोप, कंस्ट्रेंट और layoutDirection के साथ-साथ Dp में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी भी उपलब्ध कराता है (I91b9a, b/149979702)
LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया है. (Id29f3)
Layout और LayoutModifier2 में मौजूद इंट्रिंसिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिंसिक क्वेरी एपीआई को लेआउट की दिशा के बारे में जानकारी देता है. (Id9945)
LayoutDirectionAmbient को बंद कर दिया गया है. भाषा के हिसाब से तय किए गए लेआउट के बारे में जानने के लिए, ConfigurationAmbient (I851b1) पर localeLayoutDirection का इस्तेमाल करें
LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)
ParentData कंपोज़ेबल अब काम नहीं करता. आपको या तो ऐसा मॉडिफ़ायर बनाना चाहिए जो ParentDataModifier इंटरफ़ेस लागू करता हो या LayoutTag मॉडिफ़ायर का इस्तेमाल करना चाहिए. ऐसा तब करें, जब आपको लेआउट के बच्चों को टैग करना हो, ताकि उन्हें मेज़र ब्लॉक में पहचाना जा सके. (I51368, b/150953183)
OnPositioned और OnChildPositioned कंपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)
LayoutPadding में नेगेटिव पैडिंग की अनुमति नहीं है. नेगेटिव पोज़िशन ऑफ़सेट के लिए, LayoutOffset का इस्तेमाल किया जाना चाहिए. (Ifb5b1)
WithConstraints को LayoutDirection पैरामीटर मिला (I6d6f7)
ComposeFlags.COMPOSER_PARAMफ़्लैग कोtrueके तौर पर अपडेट किया गया है. इससे कंपोज़ प्लगिन के लिए कोड जनरेट करने की रणनीति बदल जाएगी. ऊपरी तौर पर, इसकी वजह से @Composable फ़ंक्शन, एक अतिरिक्त सिंथेटिक पैरामीटर के साथ जनरेट होते हैं. इस पैरामीटर को बाद के @Composable कॉल में पास किया जाता है, ताकि रनटाइम, एक्ज़ीक्यूशन को सही तरीके से मैनेज कर सके. यह बाइनरी में किया गया एक अहम बदलाव है. हालांकि, Compose के सभी मान्य इस्तेमाल में, सोर्स-लेवल की कंपैटिबिलिटी बनी रहनी चाहिए. (I7971c)LayoutCoordinates में बदलाव किया गया है, ताकि providedAlignmentLines को Map के बजाय Set बनाया जा सके. साथ ही, LayoutCoordinates में get() ऑपरेटर को लागू किया गया है, ताकि वैल्यू वापस पाई जा सके. इससे मॉडिफ़ायर के लिए, हर मॉडिफ़ायर के लिए नया कलेक्शन बनाए बिना, सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. (I0245a)
LayoutCoordinates में अब position प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के लिए, position प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. इसके बजाय, डेवलपर को एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.
LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, लेआउट के सभी साइज़ में पूर्णांक का इस्तेमाल किया जाना चाहिए, न कि फ़्लोटिंग पॉइंट वैल्यू का. (I9367b)
पाबंदियों (I0fd15) के एपीआई सरफ़ेस में सुधार
TextDirection.Content जोड़ा गया (I48f36)
टूलबार मेन्यू को इस तरह से अडजस्ट करें कि कॉपी, कट, और पेस्ट करने के विकल्प ठीक से दिखें. (Id3955)
TextField में टेक्स्ट चुनने के लिए, FloatingToolbar जोड़ें. (Ie8b07)
TextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)
TextDirection का नाम बदलकर ResolvedTextDirection कर दिया गया है (I3ff38)
TextField में HapticFeedback जोड़ा गया. (I58050)
TextField Selection में कॉपी करने, काटने, और चिपकाने के तरीके जोड़े गए. (Idb70b)
TestTag और Semantics को मिटा दिया गया है. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)
Locale और LocaleList के लिए पैकेज का नाम, androidx.ui.text से बदलकर androidx.ui.intl कर दिया गया है (I8132c)
एपीआई में बदलाव:
AnnotatedString(builder: Builder)का नाम बदलकरannotatedString(builder: Builder)कर दिया गया है. (Ia6377)एपीआई में बदलाव:
AnnotatedString.Itemका नाम बदलकरAnnotatedString.Rangeकर दिया गया है. (I2d44d)टेक्स्ट से जुड़ी कार्रवाइयों के लिए टूलबार जोड़ा गया. (I49d53)
अब नया LifecycleOwnerAmbient उपलब्ध है. अब Compose यूज़र इंटरफ़ेस (यूआई) के साथ इस्तेमाल की जा रही किसी ऐक्टिविटी को androidx.activity.ComponentActivity (या AppCompatActivity) को बढ़ाना चाहिए. android.app.Activity पर setContent अब बंद कर दिया गया है (Idb25a, b/153141084)
androidx की नीति के मुताबिक, ui-android-text पैकेज का नाम (androidx.text) बदलकर androidx.ui.text.platform कर दिया गया है. (I42711)