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
(सभी कंपोज़ पैकेज के लिए, एपीआई का संदर्भ देने वाले दस्तावेज़ देखें)
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 07 अक्टूबर, 2026 | 1.12.1 | - | 1.13.0-beta01 | - |
संरचना
Compose, androidx में मौजूद सात Maven ग्रुप आईडी का कॉम्बिनेशन है. हर ग्रुप में, फ़ंक्शन का एक सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक दिए गए हैं.
| समूह | ब्यौरा |
|---|---|
| compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
| compose.compiler | Kotlin कंपाइलर प्लगिन की मदद से, @Composable फ़ंक्शन को बदलें और ऑप्टिमाइज़ेशन चालू करें. |
| 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.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.13
वर्शन 1.13.0-beta01
07 अक्टूबर, 2026
androidx.compose.foundation:foundation-*:1.13.0-beta01 रिलीज़ हो गया है. वर्शन 1.13.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PolygonShapeऔरPolygonShapeScopeफ़ैक्ट्री पैरामीटर में@FloatRangeऔर@IntRangeएनोटेशन जोड़े गए. साथ ही,PolygonShape.starऔरPolygonShape.pillStarमेंinnerRadiusRatioको(0f, 1f)तक सीमित कर दिया गया. (I47ea3)PolygonShapeएपीआई अपडेट किए गए:CornerRoundingकोdp()औरfraction()फ़ैक्ट्रियों के साथ टॉप-लेवल पर ले जाया गया. साथ ही,transformed()औरscaledToFit()एक्सटेंशन को, एक ही जगह पर मौजूद बदलाव किए जा सकने वालेPolygonShape.transform(PolygonShapeTransformScope.() -> Unit)औरPolygonShape.copy()से बदल दिया गया. (If5970)- हमने उस गड़बड़ी को ठीक कर दिया है जिसमें विंडो पर फ़ोकस करने से पहले
BasicTextFieldपर फ़ोकस करने का अनुरोध करने पर, सॉफ़्टवेयर कीबोर्ड नहीं दिखता था. उदाहरण के लिए,onCreateमें ऐसा होता था.BasicTextFieldअब टेक्स्ट इनपुट सेशन शुरू करने से पहले, विंडो के फ़ोकस में आने का इंतज़ार करता है. अगर इससे डेवलपर को समस्याएं आ रही हैं, तोComposeFoundationFlags.isTextFieldWaitWindowFocusForInputSessionEnabledको false पर सेट करके, पहले जैसा व्यवहार वापस लाया जा सकता है. (I4206b) - लाइब्रेरी अब Kotlin 2.2 को टारगेट करती हैं और इसके लिए kotlinc 2.2 की ज़रूरत होती है (I82396, b/498369605)
CommonStyleमेंstyleLayer()तरीका जोड़ा गया है. इससे यह तय किया जा सकता है कि किसी लेयर में मौजूद सभी प्रॉपर्टी, निचली लेयर में सेट की गई प्रॉपर्टी के मुकाबले ज़्यादा प्राथमिकता लेंगी.state()तरीके (औरpressed()जैसे स्टेट हेल्पर) से अब लेयर अपने-आप बन जाती है. (I24473)
गड़बड़ियां ठीक की गईं
FlexBoxमें मौजूद उस समस्या को ठीक कर दिया गया है जिसमेंalignContent(FlexAlignContent.Stretch) को गलत तरीके से सेट करने पर, लाइन के साथ चाइल्ड आइटम को स्ट्रेच करने के लिए मजबूर किया जाता था. (Ida156)FlexBoxमें एक समस्या ठीक की गई है. इसमें रैप की गई एक लाइन (FlexWrap.WrapयाFlexWrap.WrapReverse) को कंटेनर की कम से कम क्रॉस-ऐक्सिस की सीमा तक ज़बरदस्ती बढ़ाया जाता था. इससेalignContentऔरalignItemsमें आइटम गलत तरीके से अलाइन हो जाते थे. (I038b1)- डिटैच किए गए मॉडिफ़ायर नोड पर
consumeWindowInsets,windowInsetsPaddingयाonConsumedWindowInsetsChangedको अपडेट करते समय होने वालेIllegalStateExceptionक्रैश की समस्या को ठीक किया गया है. जैसे,movableContentको मूव करते समय. (I80ae5) androidx.lifecycle:lifecycle-runtimeडिपेंडेंसी को 2.10.0 पर अपडेट किया गया. AGP 9.5.0-alpha04 या इसके बाद के वर्शन के साथ बंडल किए गए लाइफ़साइकल रनटाइम लिंट चेक चलाने के लिए, यह वर्शन ज़रूरी है. (I99bfd, b/556807521)
वर्शन 1.13.0-alpha03
09 सितंबर, 2026
androidx.compose.foundation:foundation-*:1.13.0-alpha03 रिलीज़ हो गया है. वर्शन 1.13.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इस सुविधा की मदद से, किसी कंपोज़ेबल के स्टाइल पैरामीटर में सीधे तौर पर, कंपाउंड कंपोज़ेबल (जैसे कि
TextFieldयाDatePicker) के अलग-अलग हिस्सों की स्टाइल तय की जा सकती है. इससे, उदाहरण के लिए,TextField-जैसा कंपोज़ेबल बनाया जा सकता है. इसकी मदद से, स्टाइल का इस्तेमाल करके हर डेकोरेटर बॉक्स को पसंद के मुताबिक बनाया जा सकता है. इससे, थीम लेवल या कॉल साइट पर उन्हें बदला जा सकता है. (I43c0f) - Material 2 के टेक्स्ट फ़ील्ड के ऐसे ओवरलोड अब काम नहीं करते जो
value, onValueChangeपैरामीटर स्वीकार करते हैं. कृपया उस ओवरलोड पर माइग्रेट करें जो अपनी स्थिति को ऊपर ले जाने के लिएTextFieldStateका इस्तेमाल करता है. (I6b841, b/556234973) TextFieldStateमें,undoStateसे@ExperimentalFoundationApiएनोटेशन हटा दिया गया है. (I93a44)- हर लेज़ी लेआउट के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन ऑब्जेक्ट जोड़ें. इनमें वे डिफ़ॉल्ट वैल्यू शामिल होती हैं जिनका इस्तेमाल, उनसे जुड़े
@Composeableफ़ंक्शन में किया जाता है. फ़िलहाल, इसमें हर लेआउट के लिए डिफ़ॉल्ट कैश विंडो होती है. (I58633) - चालू होने पर, फ़्लैग
isUsingDynamicDefaultCacheWindowIn[List|Grid|StaggeredGrid]sकी वजह से लेज़ी लेआउट, ऐसी कैश मेमोरी विंडो का इस्तेमाल करेंगे जो दिखने वाले आइटम के औसत साइज़ का इस्तेमाल करती है. इससे व्यूपोर्ट से पहले प्रीफ़ेच किया जा सकेगा. इसमें व्यूपोर्ट से पहले कम से कम 10% और ज़्यादा से ज़्यादा 50% विंडो होगी. (I59212) LazyListPrefetchStrategy,LazyListPrefetchScope, औरLazyListPrefetchResultScopeअब सेवा में नहीं हैं. प्रीफ़ेचिंग के व्यवहार कोLazyColumnयाLazyRowपरLazyLayoutCacheWindowका इस्तेमाल करके कॉन्फ़िगर किया जाना चाहिए.LazyLayoutCacheWindowएक डिक्लेरेटिव, व्यूपोर्ट-आधारित कैश मेमोरी में सेव करने का तरीका उपलब्ध कराता है. यह दिखने वाली विंडो के आगे और पीछे के आइटम को अपने-आप तैयार करता है. इसके लिए, जटिल इंपेरेटिव शेड्यूलिंग कॉलबैक की ज़रूरत नहीं होती. नया एपीआई,LazyListPrefetchStrategyकी तुलना में इस्तेमाल करने में आसान है. साथ ही, इसे कॉन्फ़िगर करने के लिए कम चरणों की ज़रूरत होती है. (I1fa2d)- यह Compose Foundation में
PolygonShape.transformedऔरPolygonShape.scaledToFitएक्सटेंशन फ़ंक्शन जोड़ता है. इनकी मदद से, पॉलीगॉन के आकार में बदलाव किया जा सकता है और उन्हें फ़िट किया जा सकता है. (I3f327) - इस बदलाव में, Styles API को दो अलग-अलग हिस्सों में बांटा गया है: Styles DSL और DSL से कॉन्फ़िगर किए गए मॉडिफ़ायर.
Styleपर आधारित पिछला वर्शन अब भी मौजूद है. हालांकि, इसे बंद कर दिया जाएगा और हटा दिया जाएगा. इसका इस्तेमाल करने के बजाय,CommonStyleपर आधारित नए एपीआई का इस्तेमाल करना चाहिए. - मुख्य कॉम्पोनेंट जोड़े गए:
CustomStyleऔरCommonStyle: कंपोज़ेबल स्टाइल तय करने के लिए, बुनियादी इंटरफ़ेस और मर्ज करने में मदद करने वाले फ़ंक्शन.StyleResolver: यह कंपोज़िशन में स्टाइल प्रॉपर्टी को हल करता है औरModifier.styleResolverके ज़रिए लेआउट नोड से जुड़ता है.Modifier scopes:Modifier.appearance,Modifier.placement, और डाइनैमिक कॉल बैक पर आधारितModifier.paddingऔरModifier.graphicsLayer.- प्रॉपर्टी प्रिमिटिव:
stylePropertyOf,styleLocalOf. - स्टाइल प्रॉपर्टी के लिए काम के टाइप:
Breadth,Fill, औरShadows.
- नए मॉडिफ़ायर, Styles API का इस्तेमाल करके डिज़ाइन सिस्टम लागू करने के लिए फ़ायदेमंद हैं. हालांकि, इनका इस्तेमाल करना ज़रूरी नहीं है. कोई डिज़ाइन सिस्टम इन मॉडिफ़ायर का इस्तेमाल कर सकता है या अपने मॉडिफ़ायर उपलब्ध करा सकता है. (Ieb8cc, b/549921960)
- बदलावों को ट्रैक करने वाले
TextFieldBufferएपीआई सेExperimentalFoundationApiएनोटेशन हटाया गया (I546a7) - पॉलीगॉन शेप के बीच मॉर्फ़िंग ऐनिमेशन के लिए, Compose Foundation में
MorphPolygonShapeको पेश किया गया है. साथ ही,RoundedCornerShapeऔरCutCornerShapeके लिएtoPolygonShape()कन्वर्टर भी पेश किए गए हैं. (Ic5a89) - Compose Foundation में
PolygonShapeको शामिल किया गया है. इसकी मदद से, कॉर्नर को स्मूद करके रेगुलर, स्टार, और कस्टम राउंड पॉलीगॉन रेंडर किए जा सकते हैं. (I0b99d) BasicTextFieldओवरलोड,value, onValueChangeपैरामीटर स्वीकार नहीं करते. इसलिए, इनका इस्तेमाल बंद कर दिया गया है. कृपयाBasicTextFieldओवरलोड पर माइग्रेट करें. यहTextFieldStateका इस्तेमाल करके अपनी स्थिति को ऊपर उठाता है. (I636bf, b/552879150)BasicTextField(value, onValueChange)के साथ-साथ,VisualTransformationके इस्तेमाल पर भी रोक लगा दी गई है. ऐसा इसलिए, क्योंकि यह सिर्फ़TextFieldके इस फ़्लेवर के ज़रिए दिखता है. मौजूदा ट्रांसफ़ॉर्मेशन कोOutputTransformationपर माइग्रेट किया जाना चाहिए. (I636bf, b/552879150)LazyListStateके ज़रिएLazyLayoutCacheWindowऔरLazyListPrefetchStrategyउपलब्ध कराने की सुविधा बंद कर दी गई है. इसके बजाय, कंपोज़ेबल फ़ंक्शन कोLazyLayoutCacheWindowउपलब्ध कराने की सुविधा दी गई है. (I71f19)- कुछ समय के लिए उपलब्ध फ़ीचर फ़्लैग
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledहटाया गया. (Ifff7f) - टेक्स्ट की लंबाई को सीमित करने के लिए,
InputTransformation.maxLengthTrimफ़ंक्शन जोड़ा गया है. यह फ़ंक्शन, तय सीमा से ज़्यादा वर्णों को काट देता है. साथ ही,maxLengthसे ज़्यादा वर्णों वाले इनपुट को अस्वीकार करने के लिए,InputTransformation.maxLengthRejectफ़ंक्शन जोड़ा गया है. इसके अलावा,InputTransformation.maxLengthफ़ंक्शन को बंद कर दिया गया है. अब इसके बजाय,maxLengthTrimऔरmaxLengthRejectफ़ंक्शन का इस्तेमाल किया जा सकता है. (I8d4cd)
गड़बड़ियां ठीक की गईं
compileSdkके लिए, Compose लाइब्रेरी को 37.1 पर अपडेट किया गया. इसके लिए, Compose का इस्तेमाल करने वाले सभी ऐप्लिकेशन और लाइब्रेरी के लिए,compileSdkको अपडेट करना होगा. (I05b0f)WindowInsetsRulersआईएमई इंसर्ट को, अनुमानित बैक जेस्चर के दौरान ऐनिमेशन के तौर पर मार्क न किए जाने की समस्या को ठीक किया गया है. साथ ही, टेक्स्ट फ़ील्ड के बीच फ़ोकस स्विच करने परimePaddingके अपडेट न होने की समस्या को ठीक किया गया है. (Id4562, b/537386261, b/539686000)SecureTextFieldऔरOutlinedSecureTextFieldकॉम्पोनेंट के साथ-साथ, बंद किए गएBasicSecureTextFieldओवरलोड को अपडेट किया गया है. अबTextObfuscationMode.RevealLastTypedके बजाय,TextObfuscationMode.Systemको डिफ़ॉल्ट अस्पष्टता मोड के तौर पर इस्तेमाल किया जाएगा. (I76c7e)
वर्शन 1.13.0-alpha02
26 अगस्त, 2026
androidx.compose.foundation:foundation-*:1.13.0-alpha02 रिलीज़ हो गया है. वर्शन 1.13.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- प्रमोट किए गए ग्रिड लेआउट वाले एपीआई (
Grid,GridScope,GridConfigurationScope,GridFlow,Fr,GridTrackSize,GridTrackSpec,Modifier.gridItem) को स्टेबल वर्शन में अपडेट किया गया है. (I43ac4, b/462550392) - Modifier.background के लिए नई सिमैंटिक्स प्रॉपर्टी
BackgroundColorजोड़ी गई (I7eec3, b/518049030) ExperimentalFlexBoxApiएनोटेशन हटा दिया गया है. साथ ही,FlexConfigScopeमें पिक्सल पर आधारित प्रॉपर्टी के नाम बदलकर, उनके आखिर मेंPxसफ़िक्स जोड़ दिया गया है, ताकि उन्हें आसानी से समझा जा सके. (I5b24e, b/543092286)- जब लुकअहेड पास में न हों, तब सिर्फ़ कैश मेमोरी में सेव किए गए आइटम रखें.
isKeepAroundDuringLookaheadDisabledफ़्लैग जोड़ा गया. पहले जैसा व्यवहार वापस लाने के लिए, फ़्लैग कोfalseपर सेट करें. (I110e9) isLazyLayoutItemAnimatorVisibleBoundsFixEnabledकंपोज़ फ़्लैग जोड़ा गया. इस सुविधा के चालू होने पर, दिखने वाले आइटम इंडेक्स की सीमाओं का हिसाब लगाया जाता है. इसके बाद,LazyListऔरLazyGridमेज़रमेंट में प्लेसमेंट के एनिमेशन चलते हैं. (I56150)- Draggable में शुरुआती पास के दौरान इस्तेमाल की गई मेमोरी को ठीक करें. इससे यह पक्का होता है कि अगर शुरुआती पास पर डाउन इवेंट का इस्तेमाल किया जाता है, तो मुख्य पास में तुरंत ड्रैग करना शुरू हो जाता है. इस बदलाव को फ़ीचर फ़्लैग
ComposeFoundationFlags.isDraggableInitialPassConsumptionFixEnabledके पीछे रखा गया है. (I6a77f, b/532946466)
वर्शन 1.13.0-alpha01
12 अगस्त, 2026
androidx.compose.foundation:foundation-*:1.13.0-alpha01 रिलीज़ हो गया है. वर्शन 1.13.0-alpha01 में ये बदलाव शामिल हैं.
नुकसान पहुंचा सकने वाले बदलाव
- पिछली रिलीज़ में किए गए एलान के मुताबिक,
Modifier.onFocusedBoundsChangedको पूरी तरह से हटा दिया गया है. इस मॉडिफ़ायर का इस्तेमाल करने पर, अब कोई कार्रवाई नहीं होती. जब ज़रूरत हो, तब इस जानकारी को क्वेरी करने के लिए,FocusTargetModifierNode.getFocusedRect()का इस्तेमाल करें. (Ia39db, b/220030968)
एपीआई में हुए बदलाव
LazyGridStateके ज़रिएLazyLayoutCacheWindowऔरLazyGridPrefetchStrategyउपलब्ध कराने की सुविधा बंद कर दी गई है. इसके बजाय, कंपोज़ेबल फ़ंक्शन कोLazyLayoutCacheWindowउपलब्ध कराने की सुविधा दी गई है. (I3f31e)isSkipItemPlacementAnimationFixEnabledफ़्लैग हटाएं (I890f3, b/493183465)isClearNestedScrollCoroutineScopeFixEnabledफ़्लैग हटाएं (Iedfd7, b/506963276)- फ़्लैग
isCacheWindowVisibleItemCountCheckEnabledकोisCacheWindowLookaheadCheckEnabledमें बदला गया (I2ea06) TextFieldStateअब टेक्स्ट स्टाइल की जानकारी को सेव और वापस लाता है.AnnotatedString.Annotation.Saverअब सार्वजनिक तौर पर उपलब्ध है, ताकिAnnotatedString.Annotationऑब्जेक्ट को सेव और वापस लाया जा सके. (I8b533, b/135556699)- लेज़ी स्टैगर्ड ग्रिड लेआउट में कैश विंडो जोड़ता है. प्रीफ़ेच करने के पुराने तरीके पर वापस जाने के लिए,
isUsingCacheWindowInStaggeredGridsको false पर सेट करें. (I1c70d) FlexBoxऔर इससे जुड़े कॉन्फ़िगरेशन एपीआई को स्टेबल वर्शन में अपग्रेड कर दिया गया है. अब ये एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I209ed, b/475491619)FlexBoxमेंmaxItemsInEachLineकॉन्फ़िगरेशन जोड़ा गया है. इससे, रैपिंग की सुविधा चालू होने पर, हर लाइन में आइटम की संख्या को सीमित किया जा सकता है. (I2744b, b/475491619)- Compose में, ओवरराइड किए जा सकने वाले खाली बेस मेथड को
@EmptySuperके साथ एनोटेट किया गया है. इससे यह पता चलता है कि ओवरराइड करने वाले इंप्लिमेंटेशन को सुपर को लागू नहीं करना चाहिए. (Id407b) WindowInsetsविज़िबिलिटी और ऐनिमेशन एपीआई को स्टेबल वर्शन में प्रमोट किया गया. (I37441, b/537329254)- अब क्लिक किए जा सकने वाले एलिमेंट पर क्लिक करने से, Android पर इंटरैक्शन के साउंड इफ़ेक्ट अपने-आप चलने लगते हैं. (Ia72f8)
- अगर स्क्रोल किए बिना दिखने वाले आइटम की संख्या बदलती है, तो कैश मेमोरी की विंडो अब आगे की विंडो को फिर से भर देती है. इस जांच को बंद करने और पुरानी सेटिंग पर वापस जाने के लिए,
isCacheWindowVisibleItemCountCheckEnabledफ़्लैग कोfalseपर सेट करें. (I67b5a) - जब
CoroutineScopeअटैच या डिटैच न हो, तो रद्द किए गए को सुरक्षित तरीके से वापस करने के लिए,NestedScrollDispatcher.coroutineScopeप्रॉपर्टी को अपडेट किया गया. (I9b112, b/535290281) enableNonScrollCachingका नाम बदलकरisNonScrollCachingEnabledकिया गया (I7a54b, b/535290282)SemanticsNodeInteraction.isDisplayed() औरisNotDisplayed() में @CheckResultजोड़ा गया है, ताकि यह पक्का किया जा सके कि उनकी रिटर्न वैल्यू की पुष्टि हो गई है. इससे डेवलपर के पुष्टि करने वाले एपीआई के बजाय इनका इस्तेमाल करने पर, टेस्ट फ़ेल होने की सूचना नहीं मिलती है. (I1b447, b/508178494)LazyLayoutCacheWindowको स्थिर बनाएं (I2cda3)- हॉरिज़ॉन्टल और वर्टिकल पेजर के लिए
bringIntoViewSpecपैरामीटर जोड़ा गया है, ताकि पेजर के डिफ़ॉल्ट तरीके को बदला जा सके. (Icdcbf, b/505052292) - यह कुकी, लेज़ी लेआउट प्रीफ़ेच शेड्यूलर में डिवाइस के इस्तेमाल न होने की स्थिति का पता लगाने से जुड़ी गड़बड़ी को ठीक करती है. इससे पहले, फ़्रेम के बहुत ज़्यादा देर से रेंडर होने पर, शेड्यूलर खुद को गलत तरीके से आइडल मान सकता था. इससे स्क्रोल करते समय जंक हो सकता था.
isLazyPrefetchSchedulerIdleTimeFixEnabledकंपोज़ फ़्लैग को गलत पर सेट करके, पुराने वर्शन पर वापस जाएं. (If0594, b/458024295) - हमने
NestedScrollDispatcherमेंcoroutineScopeOrNull()को शामिल किया है. यह डिस्पैचर के पैरंट को-रूटीन स्कोप को ऐक्सेस करने के लिए, एक वैकल्पिक एपीआई है. (I18c0f) - Compose में ओवरस्क्रोल करने के दौरान, हॉरिज़ॉन्टल टेक्स्ट के शिफ़्ट होने की समस्या ठीक की गई. इसे
AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabledकी मदद से बंद किया जा सकता है. (Ica169, b/532079110, b/532081619) - Draggable में इस सुधार को रोल आउट करने के लिए, फ़्लैग
isDraggableZeroDeltaConsumptionEnabledको लागू किया गया है. अब डेल्टा इवेंट को सही तरीके से प्रोसेस किया जाता है. (I50eb1, b/524163413) - क्रैश को रोकने के लिए, टेक्स्ट को एक साथ अपडेट करने के दौरान, टेक्स्ट चुनने की सुविधा को अब टेक्स्ट की लंबाई के हिसाब से सुरक्षित तरीके से सीमित कर दिया गया है. (I64fd7)
androidx.benchmarkके पास अब 24 काminSdkहै. (Ic2a85)- अब लिंक, एक से ज़्यादा लाइनों में फैले होने पर क्लिक को बेहतर तरीके से हैंडल करते हैं. इस सुविधा के लिए, टच टारगेट को 0 पर सेट कर दिया गया है. अगर आपको यह सुविधा पसंद नहीं है, तो इसे बंद करने के लिए
ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabledफ़्लैग का इस्तेमाल करें. (Ide41b, b/361106057) - बदले जा सकने वाले स्टेट ऑब्जेक्ट में लिखते समय, कम वॉल्यूम वाले अपवाद को ठीक किया गया है. (I48194, b/503110696)
- नेविगेशन/बैक स्टैक की स्थिति को मैनेज करने की प्रोसेस को आसान बनाने के लिए,
SaveableStateHolderपरkeysदिखाएं. साथ ही, बाहरीkeyट्रैकिंग की ज़रूरत को खत्म करें.holder.keysसे ऐक्सेस करें;removeStateसे हटाएं. (I9bbbb, b/398887924) - एक्सपेरिमेंट के तौर पर उपलब्ध, पुराना
IndirectPointerEventहेल्पर फ़ंक्शन हटा दिया गया है. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - Android पर
LocalBringIntoViewSpecको ज़्यादा भरोसेमंद बनाएं. (Ibcb97) isMultiLaneCacheWindowEnabledफ़्लैग जोड़ें (I3d997)- हमने एक नया
SelectionStateएपीआई बनाया है. इसेSelectionContainerको पास किया जाएगा, ताकि चुने गए टेक्स्ट को देखा जा सके और प्रोग्राम के हिसाब से चुने गए टेक्स्ट को अपडेट किया जा सके." को androidx-main am: 929401883c am: c02871cac4 (I15bd4) में जोड़ा गया LocalTextFieldContentObserverRegistrationExecutorजोड़ा गया है. इससे,TextFieldमें होने वाले इंप्लिसिटContentObserverरजिस्ट्रेशन को बैकग्राउंड थ्रेड में डेलिगेट किया जा सकता है. (Ib4fa6, b/505287297, b/509842675)TextObfuscationMode.Defaultका नाम बदलकरSystemकर दिया गया है.TextObfuscationMode.RevealLastTypedअब पूरी तरह से ओवरराइड करने वाले फ़ंक्शन के तौर पर काम करता है. साथ ही, यह हमेशा टाइप किए गए आखिरी वर्ण को दिखाता है.BasicSecureTextFieldके डिफ़ॉल्ट तर्क को System पर अपडेट किया गया है. (If26d3, b/425658491, b/453647378)
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें Android स्क्रोल कंटेनर (जैसे,
ScrollViewयाCoordinatorLayout) में नेस्ट किए गए Compose में तेज़ी से स्क्रोल करने पर, कभी-कभी वेलोसिटी का हिसाब गलत तरीके से लगाया जाता था. (I0f017) FlexBoxमें एक समस्या ठीक की गई है. इसमें रिवर्स डायरेक्शन, रिवर्स रैप या आइटम के कस्टम ऑर्डर का इस्तेमाल करने पर, फ़ोकस ट्रैवर्सल, आइटम के विज़ुअल ऑर्डर से मेल नहीं खाता था. (I4cc61, b/521609263)- उस समस्या को ठीक कर दिया गया है जिसमें
Modifier.fillMaxWidth()औरModifier.fillMaxHeight()जैसे स्टैंडर्ड लेआउट मॉडिफ़ायर का,FlexBoxके अंदर मौजूद आइटम पर कोई असर नहीं पड़ता था. ऐसा तब तक होता था, जब तक कि फ़्लेक्स ग्रो फ़ैक्टर साफ़ तौर पर तय न किया गया हो. (Ib0ac3, b/515657458) - डाइनैमिक गेटर का इस्तेमाल करके,
foundationटॉप-लेवल वैल्यू क्लास की प्रॉपर्टी के फ़ाइल-लेवल के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया है. (I570d7) - डाइनैमिक गेटर का इस्तेमाल करके,
foundation-layoutवैल्यू क्लास (WindowInsetsSidesवगैरह) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा. (I01c2b) - हमने उस समस्या को ठीक किया है जिसमें ऐप्लिकेशन में भाषा बदलने के बाद, कंपोज़ टेक्स्ट चुनने के संदर्भ मेन्यू आइटम में पुरानी स्ट्रिंग दिखती थीं. ऐसा तब होता था, जब
android:configChangesके ज़रिए गतिविधि को फिर से शुरू करने की सुविधा बंद कर दी गई हो. (Ic910b, b/515156417) - डाइनैमिक गेटर का इस्तेमाल करके,
compose:foundationवैल्यू क्लास (KeyModifiers,MarqueeAnimationMode,Sourceवगैरह) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा. (I78455) - स्टाइल ऐनिमेशन से जुड़ी समस्याओं को ठीक करता है. इससे यह पक्का किया जाता है कि किसी ऐसी वैल्यू पर ट्रांज़िशन करते समय और उससे ट्रांज़िशन करते समय जिसे सिर्फ़ किसी शर्त के आधार पर ऐनिमेशन में सेट किया गया है, उसे प्रॉपर्टी की डिफ़ॉल्ट वैल्यू पर ट्रांज़िशन करते समय और उससे ट्रांज़िशन करते समय माना जाएगा. (I8e41d, b/527140078)
- ग्रिड में मौजूद उस समस्या को ठीक किया गया है जिसमें स्पैन की चौड़ाई, सीमित दिशा में उपलब्ध ट्रैक से ज़्यादा होने पर, अपने-आप प्लेस किए गए आइटम, ग्रिड के दायरे से बाहर चले जाते थे. ऐसा तब होता था, जब गैप लागू किए जाते थे. (I00ce0, b/506570362)
- यह कुकी, एपीआई की जानकारी को मिटाती है (Ia8066)
BasicTextFieldमें मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, अनुरोध करने पर IME को निकाले गए टेक्स्ट के अपडेट सही तरीके से नहीं मिलते थे. (I746fa, b/203549026, b/492363474)
वर्शन 1.12
वर्शन 1.12.1
09 सितंबर, 2026
androidx.compose.foundation:foundation-*:1.12.1 रिलीज़ हो गया है. वर्शन 1.12.1 में ये बदलाव शामिल हैं.
वर्शन 1.12.0
12 अगस्त, 2026
androidx.compose.foundation:foundation-*:1.12.0 रिलीज़ हो गया है. वर्शन 1.12.0 में ये बदलाव शामिल हैं.
1.11.0 के बाद हुए अहम बदलाव:
वर्शन 1.12.0-rc01
29 जुलाई, 2026
androidx.compose.foundation:foundation-*:1.12.0-rc01 रिलीज़ हो गया है. वर्शन 1.12.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.12.0-beta02
01 जुलाई, 2026
androidx.compose.foundation:foundation-*:1.12.0-beta02 रिलीज़ हो गया है. वर्शन 1.12.0-beta02 में ये बदलाव शामिल हैं.
वर्शन 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के लिए, ऑपरेटर और कॉम्बिनेशन फ़ैक्ट्री फ़ंक्शन जोड़े गए, ताकि लेआउट कॉन्फ़िगरेशन को मर्ज और ओवरराइड किया जा सके. (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)VelocityTrackerको Android फ़्रेमवर्क की ओर से उपलब्ध कराए गए तरीके का इस्तेमाल करने के लिए बदला गया है. इसे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.4
01 जुलाई, 2026
androidx.compose.foundation:foundation-*:1.11.4 रिलीज़ हो गया है. वर्शन 1.11.4 में ये बदलाव शामिल हैं.
वर्शन 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)का इस्तेमाल करने से, इंट्रिंसिक मेज़रमेंट क्वेरी को आसानी से बायपास किया जा सकता है. इसलिए,SubcomposeLayoutकॉम्पोनेंट, जैसे किLazyColumnऔरLazyRowको फ़्लेक्सिबल ग्रिड ट्रैक में बिना किसी समस्या के रखा जा सकता है. (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) - उपलब्ध साइज़ के आधार पर ग्रिड ट्रैक तय करने की अनुमति देने के लिए,
constraintsकोGridConfigurationScopeमें जोड़ा गया. (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काtargetValueगलत होता था. जब किसी ऐसे ऐंकर पर सेटल किया जाता है जिसका ऑफ़सेट किसी दूसरे ऐंकर के ऑफ़सेट के बराबर होता है, तोtargetValueइस ऑफ़सेट पर मौजूद ऐंकर में से आखिरी ऐंकर को गलत तरीके से दिखाता है. अब यहcurrentValueके ऑफ़सेट पर सेटल होने पर,currentValueदिखाता है. (I66a7a, b/476365336) FlexBoxको लॉन्च किया गया है. यह कॉन्फ़िगर किया जा सकने वाला लेआउट सिस्टम है. यहRow,Column,FlowRow, औरFlowColumnका सुपरसेट है. इसमें फ़्लेक्स-ग्रो, फ़्लेक्स-श्रिंक, कस्टम रैपिंग, दिशा बदलने, औरFlexBoxConfigऔरModifier.flexकी मदद से अलाइनमेंट को बेहतर तरीके से कंट्रोल करने जैसी सुविधाएं मिलती हैं. (I44780)Gridको लॉन्च किया गया है. यह सीएसएस ग्रिड से मिलता-जुलता, नॉन-लेज़ी 2D लेआउट कंपोज़ेबल है. इस शुरुआती वर्शन में,configब्लॉक की मदद से, अलग-अलग ट्रैक साइज़ वाले ग्रिड स्ट्रक्चर तय किए जा सकते हैं. इनमेंFixed,Percentage,Flex, और कॉन्टेंट पर आधारित विकल्प शामिल हैं. कोर लेआउट लॉजिक,Modifier.gridItem()का इस्तेमाल करके, ग्रिड में आइटम को साफ़ तौर पर प्लेस करने की सुविधा देता है. फ़िलहाल, Grid से जुड़े सभी एपीआई एक्सपेरिमेंट के तौर पर उपलब्ध हैं. इनका इस्तेमाल करने के लिए,@OptIn(ExperimentalGridApi::class)के साथ ऑप्ट-इन करना ज़रूरी है. हमें इस नए लेआउट के बारे में आपके सुझाव, राय या शिकायत का इंतज़ार रहेगा! (I04907, b/462550392)
वर्शन 1.11.0-alpha03
14 जनवरी, 2026
androidx.compose.foundation:foundation-*:1.11.0-alpha03 रिलीज़ हो गया है. वर्शन 1.11.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LookaheadScopeI286ad में इस्तेमाल किए जाने पर,LazyStaggeredGridमें मेमोरी लीक की समस्या को ठीक किया गया
वर्शन 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ScrollIndicatorStateकोPagerStateके लिए लागू किया गया. (I113b7)ScrollIndicatorStateकोLazyStaggeredGridStateके लिए लागू किया गया. (I1028e)ScrollIndicatorStateकोLazyGridStateके लिए लागू किया गया. (I9e50c)ScrollIndicatorStateकोLazyListStateके लिए लागू किया गया. (I5ee29)ScrollIndicatorStateकोScrollStateके लिए लागू किया गया. (I27f66)ScrollableStateइंटरफ़ेस मेंscrollIndicatorStateप्रॉपर्टी जोड़ें (Idca93)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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Removes
ComposeFoundationFlags.isNonComposedClickableEnabled(I0dfc0, b/406228525) FillableDataइंस्टेंस बनाने के लिए, फ़ैक्ट्री फ़ंक्शन को कंपैनियन ऑब्जेक्ट में ले जाएं.FillableData(value)को कॉल करने के बजाय, फ़ैक्ट्री के नए तरीकों का इस्तेमाल करें:FillableData.createFrom(value). (I2e200, b/441719650)- फ़ोकस सर्च के लिए, सीमा से बाहर लेआउट बनाने के लिए
BeyondBoundsLayoutModifierNodeएक नया मॉडिफ़ायर नोड जोड़ा गया है. (I39be1, b/416133658) ScrollState.valueको@FrequentlyChangingValueप्रॉपर्टी के तौर पर मार्क किया गया है. (I4723d)- डिफ़ॉल्ट तौर पर लागू करने के लिए,
LazyLayoutKeyIndexMapऔर फ़ैक्ट्री की सुविधा जोड़ी गई. (I4fd0c, b/415038029)
गड़बड़ियां ठीक की गईं
- कॉलम और लाइन अब आइटम के असल साइज़ को
Modifier.alignमें सही तरीके से पास करते हैं. इससे उस समस्या को हल किया गया है जिसमें कस्टमModifier.alignलागू करने पर, गलत वैल्यू 0 मिलती थी. (I8194f, b/439716351)
वर्शन 1.10.0-alpha02
27 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha02 रिलीज़ हो गया है. वर्शन 1.10.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
isFlingContinuationAtBoundsEnabledफ़्लैग हटाया गया. (I6b84f)isAdjustPointerInputChangeOffsetForVelocityTrackerEnabledफ़्लैग हटाया गया. (I62380)isOnScrollChangedCallbackEnabledफ़्लैग हटाया गया. (I667dc)isAutomaticNestedPrefetchEnabledफ़्लैग हटाया गया. (I4f416)DragGesturePickUpEnabledफ़्लैग हटाया गया. (Ib8500)- स्क्रोलबार की स्थिति दिखाने के लिए
ScrollIndicatorStateAPI पेश किया गया (I5e229)
गड़बड़ियां ठीक की गईं
Modifier.anchoredDraggableका इस्तेमाल करने पर,confirmValueChangeके चालू न होने की गड़बड़ी को ठीक किया गया है. (Iff7cc)
वर्शन 1.10.0-alpha01
13 अगस्त, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01 रिलीज़ हो गया है. वर्शन 1.10.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पेजर की प्रीफ़ेच रणनीति को अपडेट करें, ताकि स्क्रोल की दिशा में डिफ़ॉल्ट रूप से एक आइटम के बजाय, कैश मेमोरी में सेव की गई विंडो का इस्तेमाल किया जा सके. अब Pager में, शुरुआती प्रीफ़ेचिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. साथ ही, प्रीफ़ेचिंग, एक व्यूपोर्ट के बराबर विंडो के साइज़ पर आधारित होगी. इसका मतलब है कि हम प्रीफ़ेच किए गए आइटम से पूरे व्यूपोर्ट को भरने की कोशिश करेंगे. साथ ही, आइटम को ज़्यादा समय तक सेव करके रखा जाएगा. (I4d45e, b/292136289)
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabledफ़्लैग जोड़ा गया है. इससे,WindowInsetsपरफ़ॉर्मेंस ऑप्टिमाइज़ेशन को बंद किया जा सकता है. ऐसा तब किया जा सकता है, जब नए तरीके को लागू करने से व्यवहार में बदलाव हो. (I8e912)SnapFlingBehaviorअब स्नैपिंग के दौरान, स्नैप ऐनिमेशन की खास बातों को ओवरशूट करने की अनुमति देता है. इससे, उदाहरण के लिए,snapAnimationSpecके तौर पर बाउंस होने वाले स्प्रिंग स्पेसिफ़िकेशन को चालू किया जा सकता है, ताकि बाउंस होने वाला स्नैप ऐनिमेशन बनाया जा सके. स्नैप स्पेसिफ़िकेशन का इस्तेमाल करके, वैल्यू को ज़रूरत से ज़्यादा बढ़ाने पर उन्हें अनदेखा किया जाता है. (I373c2)ComposeViewमें माउस या टचपैड से पॉइंटर डाउन करने पर, अब फ़ोकस अपने-आप हट जाएगा. ऐसा तब होगा, जब पॉइंटर डाउन, फ़ोकस किए गए नोड की सीमाओं के अंदर नहीं होगा. इससे "टैप करके फ़ोकस हटाएं" वाला यूज़र एक्सपीरियंस मिलता है. पॉइंटर इनपुट डिवाइसों का इस्तेमाल करते समय, यह यूज़र एक्सपीरियंस मौजूदा यूज़र एक्सपीरियंस से ज़्यादा बेहतर होता है. इस सुविधा से ऑप्ट-आउट करने के लिए, नएAbstractComposeView.isClearFocusOnPointerDownEnabledएपीआई का इस्तेमाल किया जा सकता है. (I6322b, b/282963174)- अब स्क्रोल करने की सुविधा, माउस के पहिए को दो डाइमेंशन में स्क्रोल करने वाले इवेंट को बेहतर तरीके से सपोर्ट करती है.
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)- नया इंटरपोलेटबल इंटरफ़ेस जोड़ा गया है. इससे अलग-अलग टाइप के बीच अपने-आप इंटरपोलेशन हो जाता है. हालांकि, इसके लिए यह ज़रूरी है कि एक टाइप को दूसरे टाइप में बदलने का तरीका पता हो. इस इंटरफ़ेस का इस्तेमाल, Brush और Shape जैसे कई कंपोज़ टाइप में किया जाता है. हालांकि, इसका इस्तेमाल बाहर भी किया जा सकता है. (I58eab)
- यह इनडायरेक्ट इनपुट इवेंट और स्क्रोलिंग के लिए इस्तेमाल किए जाने वाले कोऑर्डिनेट ऐक्सिस को तय करने का तरीका जोड़ता है. (I58e7c)
- डिस्प्ले कटआउट (Ib90b1, b/279636456) का पाथ पाने के लिए, नया
WindowInsets.cutoutPathएपीआई जोड़ता है 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 lint की जांच करने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है. - बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableओवरलोड, अब सिर्फ़LocalIndicationका इस्तेमाल करके दिए गएIndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. इनमें इंडिकेशन पैरामीटर नहीं होता. यह बदलाव तब लागू होगा, जब 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) के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गयाBasicTextFieldकेstateओवरलोड होने पर, कर्सर का साइज़ बदलने पर भी वह स्क्रोल होकर व्यू में बना रहेगा. (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 को फिर से लिखा गया है, ताकि ऑप्टिमाइज़ेशन के तौर पर, पॉइंटर इनपुट को निलंबित करने की सुविधा का इस्तेमाल न किया जा सके. यह सुविधा, फ़्लैग की मदद से चालू की जाती है. अगर आपको नए वर्शन में कोई गड़बड़ी मिलती है, तो इसे बंद किया जा सकता है -
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)- Android पर
ProcessTextKeyकी सुविधा शुरू की गई है. इसका इस्तेमाल, कॉन्टेक्स्ट मेन्यू के उन आइटम के लिए किया जाता है जिन्हें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में मौजूद एक से ज़्यादा Text कंपोज़ेबल से कॉपी किए गए टेक्स्ट के बीच, लाइन सेपरेटर\nजोड़ा जाएगा. (I25332, b/285036739)
वर्शन 1.9.0-alpha02
7 मई, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha02 रिलीज़ हो गया है. वर्शन 1.9.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragGestureNodeमेंVelocityTrackerमें पॉइंटर इनपुट में हुए बदलावों को जोड़ने के तरीके को ठीक किया गया है. इसे नए फ़्लैगisOffsetPositionBeforeAddingToVelocityTrackerEnabledसे कंट्रोल किया जा सकता है. (Ic7992, b/292556787, b/236451818)await[Vertical/Horizontal]PointerSlopOrCancellationको सार्वजनिक करें (I6968b, b/298903681)AbstractComposeView.consumeWindowInsetsअब डिफ़ॉल्ट रूप से 'गलत' पर सेट है. इसे 'गलत है' पर सेट करने पर,WindowInsetsको बच्चे के साइज़ और पोज़िशन के हिसाब से अपने-आप अडजस्ट कर दिया जाएगा. इसलिए, अब इसे डिफ़ॉल्ट रूप से 'सही है' पर सेट करने की ज़रूरत नहीं है. इससे उस समस्या को ठीक किया गया है जिसमें चाइल्ड व्यू को डिफ़ॉल्ट रूप सेWindowInsetsअपडेट नहीं मिल रहे थे. डेवलपर, एक्सपेरिमेंटलComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledको true पर सेट करके या बेहतर होगा कि वे सभी Compose व्यू इंस्टेंस परAbstractComposeView.consumeWindowInsetsको true पर सेट करके, अपडेट से ऑप्ट आउट कर सकते हैं. (I6fa0a, b/411868840)
बाहरी योगदान
- beyondViewportPageCount की बहुत बड़ी वैल्यू के साथ Pager क्रैश होने की समस्या ठीक की गई (Idb2db)
वर्शन 1.9.0-alpha01
23 अप्रैल, 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha01 रिलीज़ हो गया है. वर्शन 1.9.0-alpha01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.propertiesमेंandroid.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose lint की जांच करने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए इंस्टेंस, अब सिर्फ़LocalIndicationका इस्तेमाल करके दिए गएIndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. यह बदलाव तब लागू होगा, जब Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल किया जाएगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर कोई असर नहीं पड़ता. अगर आपनेLocalIndicationको, हटाए जा चुके इंडिकेशन को लागू करने की सुविधा दी है और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान क्रैश की समस्या आएगी. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन, रीकंपोज़िशन के दौरान स्किप कर सकेंगे. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे, माइग्रेशन के दौरान ब्लॉक किए बिना Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन लागू करने के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. आपके पास इंडिकेशन पैरामीटर के साथ ओवरलोड का इस्तेमाल करने का विकल्प भी है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333)
एपीआई में हुए बदलाव
AnnotatedString(I1d066, b/383269496, b/139326648) के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गया- कंपोज़ की सुविधा को
ViewTreeObserver.OnScrollChangedको ट्रिगर करने की अनुमति दें. इस सुविधा कोisOnScrollChangedCallbackEnabledफ़्लैग के तहत लॉन्च किया गया है. हमनेDelegatableNode dispatchOnScrollChangedका एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286) - Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद के वर्शन का इस्तेमाल करना ज़रूरी है (Idb6b5)
- यह पक्का करने के लिए कि कंपोज़िशन के अंदर
TextFieldStateको याद रखा जाए, इसके लिए लिंट चेक की सुविधा जोड़ी गई. इसके बजाय,rememberTextFieldStateका इस्तेमाल करें. (I53d74) FocusRequesterके लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन (I6bf91) में याद रखा गया है- यह पक्का करने के लिए कि कंपोज़िशन के अंदर
BringIntoViewRequesterको याद रखा जाए, इसके लिए लिंट चेक की सुविधा जोड़ी गई. (Ibfba6) - ग्रिड और सूचियों की रणनीतियों में
schedulePrefetchकॉल के लिए स्कोप जोड़े गए हैं, ताकि साइज़ और इंडेक्स की जानकारी देने कीLazyListPrefetchStateक्षमताओं के साथ अलाइन किया जा सके. (Iad80c) - बदलाव:
clickable,combinedClickable,selectable,toggleable, औरtriStateToggleableके इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए इंस्टेंस, अब सिर्फ़IndicationNodeFactoryइंस्टेंस के साथ काम करते हैं. ये इंस्टेंस,LocalIndicationका इस्तेमाल करके उपलब्ध कराए जाते हैं. यह बदलाव तब लागू होगा, जब Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल किया जाएगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर कोई असर नहीं पड़ता. अगर आपनेLocalIndicationको, हटाए जा चुके इंडिकेशन को लागू करने की सुविधा दी है और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान क्रैश की समस्या आएगी. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन, रीकंपोज़िशन के दौरान स्किप कर सकेंगे. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए,ComposeFoundationFlags.isNonComposedClickableEnabled=falseका इस्तेमाल किया जा सकता है. इससे, माइग्रेशन के दौरान ब्लॉक किए बिना Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन लागू करने के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,IndicationNodeFactoryका इस्तेमाल करें. आपके पास इंडिकेशन पैरामीटर के साथ ओवरलोड का इस्तेमाल करने का विकल्प भी है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactoryइंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333) - अपने-आप नेस्टेड प्रीफ़ेच होने की सुविधा को कंट्रोल करने के लिए फ़्लैग जोड़ें:
isAutomaticNestedPrefetchEnabled(I8d448) LazyGridStateऔरrememberLazyGridStateके लिए,LazyLayoutCacheWindowका इस्तेमाल करके ओवरलोडिंग की सुविधा शुरू करें. (I51151)- यह विंडो इंसर्ट के लिए रूलर जोड़ता है.
DerivedRulerको जोड़ता है, ताकि किसी दूसरे रूलर से रूलर की गिनती की जा सके. डेंसिटी लागू करने के लिए,PlacmentScopeमें बदलाव करता है. (I658bc, b/359260964) - आसानी से खाली
WindowInsetsबनाने के लिए, शून्य आर्ग्युमेंट वालाWindowInsets()फ़ैक्ट्री फ़ंक्शन जोड़ा गया. (I65f62, b/395311689) - खाली
PaddingValuesके लिएPaddingValues.Zeroजोड़ा गया. (If193e, b/386255688)
गड़बड़ियां ठीक की गईं
BasicTextFieldकेstateओवरलोड होने पर, कर्सर का साइज़ बदलने पर भी वह स्क्रोल होकर व्यू में बना रहेगा. (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में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,innerTextFieldको कॉल करने सेTextFieldDecoratorके स्किप करने पर, अलग-अलग तरह से क्रैश होने की समस्याएं आती थीं. (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जोड़ें. इससे Bring Into View सुविधा को लागू करने का नया तरीका मिलता है. साथ ही, इसे प्लैटफ़ॉर्म लेवल पर लागू किया जा सकता है (Ia6dd8) - हम कर्सर को ड्रॉ करने के तरीके में लगातार थोड़ा-बहुत बदलाव कर रहे हैं. जांचों में कर्सर ड्राइंग की सुविधा बंद करने के लिए,
LocalCursorBlinkEnabledका इस्तेमाल किया जा सकता है. (I4c697)
वर्शन 1.8.0-alpha06
13 नवंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06 रिलीज़ हो गया है. वर्शन 1.8.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
stylusHoverIconमॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)AnchoredDraggableStateकेconfirmValueChangeअब काम नहीं करते. स्टेट में होने वाले बदलावों को रोकने के बजाय, अनुमति न पाए ऐंकर को चालू ऐंकर सेट में नहीं होना चाहिए. साथ ही, अनुरोध की गई कार्रवाई के उपलब्ध न होने की जानकारी देने के लिए,OverscrollEffectका इस्तेमाल किया जाना चाहिए. (Ia717f)- ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले क्लास को इंटरफ़ेस में बदलता है. (I84914, b/376080755)
OverscrollEffect#withoutDrawingऔरOverscrollEffect#withoutEventHandlingएपीआई जोड़े गए हैं. ये एपीआई, दिए गए ओवरस्क्रोल इफ़ेक्ट का रैप्ड इंस्टेंस बनाते हैं. यह इंस्टेंस, इवेंट को न तो ड्रॉ करता है और न ही हैंडल करता है. इससे, इवेंट भेजने वाले कॉम्पोनेंट से अलग कॉम्पोनेंट में ओवरस्क्रोल को रेंडर किया जा सकता है. उदाहरण के लिए, लेज़ी लिस्ट में ओवरस्क्रोल को बंद करना और फिर ओवरस्क्रोल को अलग से सबसे ऊपर / कहीं और दिखाना. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)- टेक्स्ट टूलबार में ऑटोफ़िल की सुविधा जोड़ी गई है. (Ie6a4c)
- यह
OverscrollConfigurationऔरLocalOverscrollConfigurationको बंद कर देता है. साथ ही, डिफ़ॉल्ट ओवरस्क्रॉल लागू करने के इंस्टेंस को बनाने या उसके पैरामीटर को पसंद के मुताबिक बनाने के लिए,rememberPlatformOverscrollFactoryको जोड़ता है. ओवरस्क्रोल की सुविधा बंद करने के लिए,LocalOverscrollConfiguration provides nullके बजायLocalOverscrollFactory provides nullका इस्तेमाल करें. ग्लो का रंग / पैडिंग बदलने के लिए,LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)के बजायLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516) - अन्य एपीआई के मुताबिक,
OverscrollEffectपरeffectModifierप्रॉपर्टी को बदलकरnode: DelegatableNodeकर दिया गया है. (Ic0b46, b/255554340) - एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertionsएपीआई को हटा दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय,enableAccessibilityChecks()का इस्तेमाल करें. (I59322)
वर्शन 1.8.0-alpha05
30 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05 रिलीज़ हो गया है. वर्शन 1.8.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टेक्स्ट के साइज़ को अपने-आप अडजस्ट होने की सुविधा. अपने पसंदीदा टेक्स्ट कंपोज़ेबल (जैसे कि
BasicText) कोAutoSizeइंस्टेंस (जैसे किAutoSize.StepBased) पास करें. इसके बाद, देखें कि टेक्स्ट का साइज़ उपलब्ध जगह के हिसाब से अपने-आप अडजस्ट हो जाता है! (Ice7e0, b/139320827) - इस अपडेट में,
OverscrollFactoryऔरLocalOverscrollFactoryएपीआई जोड़े गए हैं. इनकी मदद से, हैरारकी में ओवरस्क्रोल को कॉन्फ़िगर किया जा सकता है.LocalOverscrollFactoryएट्रिब्यूट के ज़रिए दी गई वैल्यू का इस्तेमाल, डिफ़ॉल्ट रूप सेOverscrollEffectएट्रिब्यूट की वैल्यू बनाने के लिए किया जाएगा. मौजूदा फ़ैक्ट्री से कोई इफ़ेक्ट बनाने और उसे याद रखने के लिए,rememberOverscrollEffect()का इस्तेमाल करें. (I51ca4, b/255554340)
एपीआई में हुए बदलाव
CompositionLocalको पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट किए गए रंग में बदलाव करने के लिए किया जा सकता है. (I32092)ScrollableDefaults.overscrollEffectको हटाया गया. इसके बजाय, आपकोrememberOverscrollEffectका इस्तेमाल करना चाहिए. इससेLocalOverscrollFactoryके साथ उपलब्ध कराए गए, मौजूदा ओवरस्क्रोल को लागू करने का एक इंस्टेंस बन जाएगा. (I1651a, b/255554340),(b/234451516)- इसमें नया
AutofillManagerइंटरफ़ेस शामिल किया गया है. इसका इस्तेमाल करके, उपयोगकर्ताओं के लिए ऑटोमैटिक तरीके से भरने की सुविधा को बेहतर बनाया जा सकता है. साथ ही, इसमेंisSemanticAutofillEnabledफ़्लैग भी शामिल किया गया है. इसका इस्तेमाल करके, ऑटोमैटिक तरीके से भरने की सुविधा के इस नए वर्शन को चालू किया जा सकता है. (I9d484) CombinedClickableNodeको हटाता है. एक्सपेरिमेंट के तौर पर उपलब्ध इस एपीआई को कुछ समय के लिए इसलिए उपलब्ध कराया गया था, ताकि परफ़ॉर्मेंस से जुड़े काम को पूरा किया जा सके. हालांकि, अब इसकी ज़रूरत नहीं है. इसके बजाय, आपको सीधे तौर परModifier.combinedClickableका इस्तेमाल करना चाहिए. जैसे, अन्य मॉडिफ़ायर एपीआई के साथ किया जाता है. (I4b658)horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPager, औरVerticalPagerमें ओवरलोड जोड़ता है. साथ ही, कस्टमOverscrollEffectतय करने की सुविधा देता है. उपलब्ध कराए गएOverscrollEffectको इवेंट मिलेंगे और उन्हें इन कॉम्पोनेंट की सीमाओं के अंदर रेंडर किया जाएगा. ध्यान दें कि एक हीOverscrollEffectको दो बार नहीं बनाया जा सकता. इसलिए,Modifier.overscrollके साथ अलग से दिए गए एक हीOverscrollEffectको नहीं बनाया जा सकता. इन कॉम्पोनेंट की सीमाओं के बाहर ओवरस्क्रोल करने के इस्तेमाल के उदाहरण के बारे में, आने वाले समय में अलग से बताया जाएगा. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
वर्शन 1.8.0-alpha04
16 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04 रिलीज़ हो गया है. वर्शन 1.8.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- जब नोड की स्थिति बदलती है, तब नोड की स्थिति को अपडेट करने की अनुमति देने के लिए,
DelegatableNode#onDensityChangeऔरDelegatableNode#onLayoutDirectionChangeकॉलबैक जोड़ता है. (I04f3e, b/340662451) - पैराग्राफ़ और
ParagraphIntrinsicsअबAnnotatedStringपर लागू किए गए सभी एनोटेशन की सूची लेता है. इससे पहले, इसमें सिर्फ़SpanStylesकी सूची होती थी. (I12f80) PointerInputModifierNode#touchBoundsExpansionको जोड़ा गया है. इसका इस्तेमाल, किसी सिंगल पॉइंटर इनपुट मॉडिफ़ायर के टच बाउंड को बड़ा करने के लिए किया जा सकता है. (Iccf02, b/335339283)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें कुछ मामलों में,
AnchoredDraggableDefaults.flingBehaviorको पास किए गए पोज़िशनल थ्रेशोल्ड पर सही तरीके से विचार नहीं किया गया था. (Ifdf0d, b/367660226) - नेस्ट किए गए स्क्रोल करने लायक आइटम के लिए एक फ़िक्स जोड़ा गया है. इन आइटम को फ़्लिंग के दौरान नोड ट्री से हटा दिया जाता है. अब ये नोड, फ़्लिंग को रद्द कर देंगे और बची हुई वेलोसिटी के साथ
onPostFlingइवेंट को सही तरीके से भेजेंगे. हम रिग्रेशन के मामलों में व्यवहार को कंट्रोल करने के लिए,NewNestedScrollFlingDispatchingEnabledफ़्लैग भी लॉन्च कर रहे हैं. इस फ़्लैग को बीटा वर्शन से पहले हटा दिया जाएगा. (I05c37, b/371168883) Modifier.anchoredDraggableको पास किए गएOverscrollEffectsमें, 1D के बजाय 2D डेल्टा मिलने वाली गड़बड़ी को ठीक किया गया है. (Ie52c0)
वर्शन 1.8.0-alpha03
2 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03 रिलीज़ हो गया है. वर्शन 1.8.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin का वर्शन 1.9 पर अपडेट किया गया (I1a14c)
- फ़्लैग
DraggableAddDownEventFixEnabled(I848d5) जोड़ा गया - सुलभता सेवाओं के लिए, पेजर्स में सूची के व्यवहार को दोहराने के लिए, नई सिमैंटिक्स भूमिका, कैरसेल पेश की गई है. (Id354b, b/354109776, b/239672673)
BasicTextकंपोज़ेबल से, इंप्लिसिटgraphicsLayerमॉडिफ़ायर को हटाया गया. एक्सपेरिमेंट के तौर परComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledफ़्लैग जोड़ा गया है, ताकि पुराने वर्शन पर वापस जाया जा सके. (Ie478d)Modifier.recalculateWindowInsets()जोड़ा गया है, ताकि बच्चेinsetsPaddingका इस्तेमाल कर सकें. भले ही, माता-पिता ने उन्हेंconsumeWindowInsets()के बिना अलाइन किया हो. (I7f9e4)
गड़बड़ियां ठीक की गईं
detectDragGestures, ड्रैग किए जा सकने वाले आइटम, और स्क्रोल किए जा सकने वाले आइटम में, जेस्चर पिक-अप की सुविधा लागू करें. अब अगर कोई बच्चा ड्रैग करने की सुविधा का इस्तेमाल नहीं करता है, तो माता-पिता के पास उसे चुनने का विकल्प होता है. इससे, जेस्चर को लगातार और इंटिग्रेट करके हैंडल किया जा सकता है. (Ic88fe)- स्क्रोल किए जा सकने वाले कॉम्पोनेंट में, फ़्लिंग को रद्द करने के तरीके को अपडेट करें. अब अगर स्क्रोल किए जा सकने वाले किसी आइटम को तेज़ी से ऊपर या नीचे की ओर स्वाइप किया जाता है और वह अपनी सीमा तक पहुंच जाता है, तो वह तेज़ी से स्वाइप करने की स्पीड को चेन में मौजूद अगले स्क्रोल किए जा सकने वाले आइटम को सही तरीके से पास कर देगा. ऐसा नहीं होगा कि वह तेज़ी से स्वाइप करने की प्रोसेस को जारी रखे. (I9326a)
वर्शन 1.8.0-alpha02
18 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02 रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TextOverflow.StartEllipsisऔरTextOverflow.MiddleEllipsisअब उपलब्ध हैं. इनकी मदद से, एक लाइन वाले टेक्स्ट (I38913, b/185418980) की लाइन की शुरुआत या बीच में इलिप्सिस रखा जा सकता है
वर्शन 1.8.0-alpha01
4 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01 रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 1.7
वर्शन 1.7.8
12 फ़रवरी, 2025
androidx.compose.foundation:foundation-*:1.7.8 रिलीज़ हो गया है. वर्शन 1.7.8 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- चिपकाए गए टेक्स्ट के किसी हिस्से को बदलते समय, इनपुट ट्रांसफ़ॉर्मेशन की वजह से
BasicTextFieldमें क्रैश होने की समस्या ठीक की गई. (I73702)
वर्शन 1.7.7
29 जनवरी, 2025
androidx.compose.foundation:foundation-*:1.7.7 रिलीज़ हो गया है. वर्शन 1.7.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लिंक एनोटेशन के साथ
IndexOutOfBoundके क्रैश होने की समस्या ठीक की गई. (Ic96d2) - लिंक के साथ कुछ खास मामलों में, बार-बार रेंडर होने की समस्या ठीक की गई. (I04a03)
पहले से मालूम गड़बड़ियां
- एक बग का पता चला है. इससे Android API लेवल 35 पर, कुछ मामलों में टेक्स्ट अपने-आप रैप हो सकता है. इसे 1.7 में ठीक नहीं किया जा सकता. इसलिए, इसे 1.8 में ठीक किया जाएगा. (b/391378120)
वर्शन 1.7.6
11 दिसंबर, 2024
androidx.compose.foundation:foundation-*:1.7.6 रिलीज़ हो गया है. वर्शन 1.7.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़िक्स्ड टेक्स्ट इनलाइन कॉन्टेंट, सुलभता सेवाओं को नहीं दिख रहा है.
- उस समस्या को ठीक किया गया है जिसकी वजह से लेज़ी लिस्ट में फिर से इस्तेमाल करने पर,
AndroidEmbeddedExternalSurfaceठीक से रीसेट नहीं होता था और अटक जाता था.
वर्शन 1.7.5
30 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.5 रिलीज़ हो गया है. वर्शन 1.7.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पक्का करें कि पिन किए गए आइटम, कॉन्टेंट पैडिंग एरिया में दो बार शामिल न किए गए हों. (Ic6224)
वर्शन 1.7.4
16 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.4 रिलीज़ हो गया है. वर्शन 1.7.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट फ़ील्ड में कभी-कभी क्रैश होने की समस्या को ठीक किया गया है. (I475c6, b/313010266)
- लेज़ी लेआउट आइटम के रूट से
ReusableContentHostको हटाया गया. “मेज़रमेंट को बंद किए गए नोड पर कॉल किया गया” क्रैश की संभावित मुख्य वजह यही थी. (Id6e60)
वर्शन 1.7.3
2 अक्टूबर, 2024
androidx.compose.foundation:foundation-*:1.7.3 रिलीज़ हो गया है. वर्शन 1.7.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब minLines को नॉन-डिफ़ॉल्ट वैल्यू पर सेट किया जाता है, तब
BasicTextमें मेमोरी लीक होने की समस्या ठीक कर दी गई है.
वर्शन 1.7.2
18 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.7.2 रिलीज़ हो गया है. वर्शन 1.7.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ड्रैग किए जा सकने वाले एलिमेंट से जुड़ी समस्या को ठीक किया गया है. इसमें डाउन इवेंट मौजूद नहीं थे. इस वजह से, फ़्लिंग सामान्य से ज़्यादा धीमी दिखती थी.
वर्शन 1.7.1
10 सितंबर, 2024
- Android आर्टफ़ैक्ट में कोई बदलाव नहीं किया गया है.
-desktopआर्टफ़ैक्ट हटा दिए गए हैं. साथ ही,-jvmStubsऔर-linuxx64Stubsआर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को मदद मिल सके.
वर्शन 1.7.0
4 सितंबर, 2024
androidx.compose.foundation:foundation-*:1.7.0 रिलीज़ हो गया है. वर्शन 1.7.0 में ये बदलाव शामिल हैं.
1.6.0 के बाद हुए ज़रूरी बदलाव
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollable, औरModifier.draggableकी परफ़ॉर्मेंस को बेहतर बनाया गया है. इस कोशिश के तहत, इंटरनल बदलावों के साथ-साथ एपीआई में ये बदलाव किए गए हैं- नया Indication API,
IndicationNodeFactoryजोड़ा गया. इससे,rememberUpdatedInstanceएपीआई (अब बंद हो चुका है) की तुलना में, इंडिकेशन को बेहतर तरीके से लागू किया जा सकता है. डेटा को दूसरी जगह भेजने से जुड़ी जानकारी के लिए, developer.android.com पर जाएं. clickable/combinedClickable/selectable/toggleableअबMutableInteractionSourceपैरामीटर को स्वीकार करता है. अगर यह वैल्यू शून्य है और दी गई इंडिकेशन वैल्यूIndicationNodeFactoryहै, तो इंडिकेशन को सिर्फ़ ज़रूरत पड़ने पर बनाया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर आपनेMutableInteractionSourceको होस्ट नहीं किया है और उसका इस्तेमाल नहीं किया जा रहा है, तो हमारा सुझाव है किremember { MutableInteractionSource() }पास करने के बजाय, शून्य पास करें.Indication#rememberUpdatedInstanceका अब इस्तेमाल नहीं किया जा सकता. इससे परफ़ॉर्मेंस पर काफ़ी असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नएIndicationNodeFactoryएपीआई का इस्तेमाल करना चाहिए.
- नया Indication API,
TextFieldStateका इस्तेमाल करकेBasicTextFieldअब स्थिर हो गया है. हमारा सुझाव है कि सभी कॉल-साइट,BasicTextField(value, onValueChange)सेBasicTextField(TextFieldState)पर माइग्रेट करना शुरू करें.ClickableTextका अब इस्तेमाल नहीं किया जा सकता. अपने टेक्स्ट में क्लिक करने लायक लिंक जोड़ने के लिए,AnnotatedStringमें नएLinkAnnotationएनोटेशन के साथBasicTextका इस्तेमाल करें.LinkAnnotationकी मदद से, लिंक की स्थिति (जैसे, फ़ोकस किया गया, कर्सर घुमाया गया) के आधार पर कस्टम स्टाइलिंग की जा सकती है.- पेश है
MaxLinesऔरOverflowके साथContextualFlowRowऔरEnhanced FlowRow/Column. हमें यह बताते हुए बेहद खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्धFlowRowऔरFlowColumnको बेहतर बनाया गया है. अब इनमेंmaxLinesऔर ओवरफ़्लो सपोर्ट की सुविधा उपलब्ध है. साथ ही,ContextualFlowRowऔरContextualFlowColumnको पहली बार लॉन्च किया गया है. इस अपडेट को परफ़ॉर्मेंस के हिसाब से सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*उन आइटम के लिए सबसे सही है जिनमें maxLines कॉन्फ़िगरेशन का इस्तेमाल किया जाता है. साथ ही, इसमें डाइनैमिक +N 'ज़्यादा देखें' बटन भी शामिल होते हैं. वहीं,FlowRowऔरFlowColumnउन आइटम के लिए सबसे सही है जिनकी संख्या 100 से कम होती है. अहम जानकारी:FlowRowयाFlowColumnमें मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, भले ही वे फ़िट न हों, इनिशियलाइज़ेशन के दौरान ओवरफ़्लो कोFlowRowOverflow.VisibleयाFlowColumnOverflow.Visibleपर सेट करें. इन नई सुविधाओं के उदाहरण देखने के लिए,ContextualFlowRowSampleऔरFlowRowSampleपर जाएं. (Ib9135, b/293577082) LazyColumnऔरLazyRowमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (फ़ेड इन), गायब हो जाना (फ़ेड आउट), और क्रम बदलना. (I2d7f7, b/150812265)- Compose के स्क्रोल कंटेनर में लंबी स्क्रीनशॉट लेने की सुविधा के लिए, एक्सपेरिमेंटल सपोर्ट लागू की गई है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback) का इस्तेमाल किया गया है. NestedScrollसोर्स को खींचकर छोड़ना और फ़्लिंग करना, अबUserInputऔरSideEffectसे बदल दिया गया है. ऐसा इसलिए किया गया है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं.LazyLayoutप्रीफ़ेच अनुरोधों को अब 'ज़रूरी' के तौर पर मार्क किया जा सकता है. इसका मतलब है कि हमें उम्मीद है कि अगले फ़्रेम में इस आइटम की ज़रूरत होगी. साथ ही, हम फ़्रेम बजट को अनदेखा करना चाहते हैं, ताकि पहले से ज़्यादा काम किया जा सके (Id513f)- Android U के बाद वाले वर्शन पर काम करने वाले डिवाइसों पर, स्टाइलस से लिखने की सुविधा काम करती है. (I002e4)
- कई एपीआई को स्टेबल वर्शन में प्रमोट किया गया है
- पेजर, स्नैपिंग, विंडो इनसेट
वर्शन 1.7.0-rc01
21 अगस्त, 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या में, फ़ोकस किए जा सकने वाले (या क्लिक किए जा सकने वाले) और बंद किए गए पैरंट के अंदर किसी एलिमेंट पर फ़ोकस करने पर क्रैश हो जाता था. (b/317561689)
वर्शन 1.7.0-beta07
7 अगस्त, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07 रिलीज़ हो गया है. वर्शन 1.7.0-beta07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट इनपुट से जुड़े
SemanticsNodeInteractionफ़ंक्शनperformTextReplacement,performTextInput, औरperformTextClearanceको अब सिर्फ़ पढ़ने के लिए उपलब्धTextFieldsपर कॉल करने पर, पुष्टि से जुड़ी गड़बड़ियां दिखेंगी. (I4ae8f) - हाइपरलिंक में दिखने वाली गड़बड़ी को ठीक किया गया है. (I23311)
- हमने इस समस्या को ठीक किया है कि कुछ आईएमई के साथ
contentReceiverमॉडिफ़ायर काम नहीं करता था. - वेलोसिटी जनरेशन: Compose UI और Foundation में NaN वैल्यू के प्रसार को रोकना.
वर्शन 1.7.0-beta06
24 जुलाई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06 रिलीज़ हो गया है. वर्शन 1.7.0-beta06 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta05
10 जुलाई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05 रिलीज़ हो गया है. वर्शन 1.7.0-beta05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SnapFlingBehaviorऔर Pager में, NaN वैल्यू को ठीक करने की सुविधा.
वर्शन 1.7.0-beta04
26 जून, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04 रिलीज़ हो गया है. वर्शन 1.7.0-beta04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बहुत बड़ी टेक्स्ट लाइनों (जैसे, 10 हज़ार वर्ण) को मेज़र करते समय क्रैश होने की समस्या ठीक की गई (8157ab)
- बहुत बड़े टेक्स्ट को मेज़र करने की समस्या ठीक की गई है. इसकी वजह से, नए
BasicTextFieldमें क्रैश हो रहा था (6b7575) - यह पंक्ति/कॉलम के मेज़रमेंट में हुए ऐसे बदलाव को पहले जैसा करता है जिससे कुछ मामलों में टेक्स्ट का इस्तेमाल नहीं किया जा सकता (69e8ba)
वर्शन 1.7.0-beta03
12 जून, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03 रिलीज़ हो गया है. वर्शन 1.7.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.7.0-beta02
29 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02 रिलीज़ हो गया है. वर्शन 1.7.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह
LazyGridsके प्रीफ़ेच करने के तरीके को कॉन्फ़िगर करने के लिए, एक्सपेरिमेंटल एपीआई जोड़ता है. यहLazyListsके लिए मौजूदा एक्सपेरिमेंटल एपीआई जैसा ही है. इसमें नेस्ट किए गएLazyGridsमें आइटम को पहले से फ़ेच करने की सुविधा शामिल है.LazyListPrefetchStrategyकी तरह ही, लागू करने के डिफ़ॉल्ट तरीके में हर ग्रिड के पहले दो नेस्ट किए गए आइटम को प्रीफ़ेच किया जाता है. हालांकि, इसे नएLazyGridPrefetchStrategy(nestedPrefetchItemCount)औरLazyListPrefetchStrategy#onNestedPrefetchएपीआई से कॉन्फ़िगर किया जा सकता है. (I591c4) SemanticsProperties.Editableका नाम बदलकरIsEditableकर दिया गया है औरSemanticsPropertyReceiver.editableकोisEditableमें बदल दिया गया है. अब यह प्रॉपर्टी बूलियन है और इसे हमेशा टेक्स्ट फ़ील्ड से तय किया जाता है. (I8acd8)basicMarqueeकी डिफ़ॉल्ट वैल्यू कोMarqueeDefaultsऑब्जेक्ट में ले जाया गया. (I12ff6)basicMarqueedelayMillisपैरामीटर का नाम बदलकरrepeatDelayMillisकर दिया गया है. (I12ff6)- लिंक को स्टाइल करने के लिए एपीआई अपडेट किया गया:
TextLinkStylesकोTextStyleपर ले जाया गया औरTextDefaultsको मटीरियल से हटा दिया गया (I5477b)
गड़बड़ियां ठीक की गईं
- इसके मकसद को बेहतर तरीके से दिखाने के लिए,
LayoutCoordinates.introducesFrameOfReferenceका नाम बदलकरLayoutCoordinates.introducesMotionFrameOfReferenceकर दिया गया है. उस फ़्लैग के आधार पर निर्देशांकों का हिसाब लगाने के लिए, संबंधित फ़ंक्शन का नाम बदला गया. (I3a330) MarqueeDefaultsप्रॉपर्टी से 'डिफ़ॉल्ट' को हटा दिया गया है. (I1d8a0)MarqueeDefaultsप्रॉपर्टी से 'Marquee' को हटा दिया गया है. (Iad4f4)TextStyleक्लास सेTextLinkStylesको हटा दिया गया है. इसके बजाय,TextLinkStyles,LinkAnntationकंस्ट्रक्टर औरAnnotatedString.fromHtmlतरीके (I90b2b) का हिस्सा है- उस गड़बड़ी को ठीक किया गया है जिसमें Pager, बाउंड्री की ओर फ़्लिंग करने पर स्नैप हो जाता था. ऐसा तब होता था, जब वह पहले से ही बाउंड्री पर सेटल हो जाता था. (I9f373, b/339171222)
- BTF2 में अब माउस से चुनने के लिए सही जेस्चर उपलब्ध हैं. (Ibe8c6)
बाहरी योगदान
- 'सटीकता को बेहतर बनाने के लिए, प्रीफ़ेच में कॉन्टेंट-टाइप के आधार पर कंपोज़/मेज़र टाइम कैलकुलेशन करें' (Iea622) को फिर से सबमिट करें
- सटीकता को बेहतर बनाने के लिए, प्रीफ़ेच में कॉन्टेंट-टाइप के आधार पर कंपोज़/मेज़रमेंट के समय की गणना करें (Ibccb1)
WindowInsetsPaddingमॉडिफ़ायर को सामान्य सोर्स सेट (I070b2) से उपलब्ध कराएं
वर्शन 1.7.0-beta01
14 मई, 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01 रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- बाइनरी फ़ाइल के साथ काम करने की सुविधा के लिए,
KeyboardOptions.shouldShowKeyboardOnFocusप्रॉपर्टी को फिर से जोड़ा गया है. हालांकि, यह अब काम नहीं करती है और इसे छिपा दिया गया है. (I15cfe) Modifier.anchoredDraggableअब आरटीएल लेआउट में इस्तेमाल किए जाने पर, हॉरिज़ॉन्टल ओरिएंटेशन वाले कॉम्पोनेंट के लिए, ड्रैग डेल्टा को डिफ़ॉल्ट रूप से उलट देता है. (I3c6d9)AnnotatedString.hasEqualsAnnotationsकी कीमत अबhasEqualAnnotationsहै. (I685c0)- टेक्स्ट में, Material थीम वाले लिंक पाने के लिए एपीआई को अपडेट किया गया है. खास तौर पर, थीम वाले
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)LinkInteractionListener(Iaa35c) में मौजूदonClickedका नाम बदलकरonClickकिया गया- एपीआई काउंसिल के सुझाव के मुताबिक,
getScrollViewportLengthके लिए ऐक्शन लैंबडा बदलें. (Ibc74a) - स्टाइलस हैंडराइटिंग की सुविधा के लिए, ऐक्सेस देने वाले एपीआई के नाम बदले गए. (Ica45f, b/327271923)
TextInclusionStrategy.isInsideका नाम बदलकरisIncludedकर दें.Paragraph/MultiParagraph#getRangeForRect()के रिटर्न टाइप को बिना किसी वैल्यू वाला टाइप न बनाएं. (I51f26)
गड़बड़ियां ठीक की गईं
SelectionContainerमें, टेक्स्ट के सभी कॉन्टेक्स्ट मेन्यू में "सभी चुनें" विकल्प जोड़ा गया. (Ib750e, b/240143283)reverseScrolling=trueकी मदद से स्क्रोल किए जा सकने वाले कंटेनर के लिए, लंबा स्क्रीनशॉट कैप्चर करने की सुविधा से जुड़ी समस्या ठीक की गई. (I7c59c)- उस समस्या को ठीक किया गया है जिसमें राज्य की सीमा के पास पहुंचने पर,
AnchoredDraggableStateकाcurrentValueबदल जाता था. (Iea30b, b/333846848)
बाहरी योगदान
PrefetchExecutor->PrefetchSchedulerका नाम बदलकर, इसकी ज़िम्मेदारियों को बेहतर तरीके से दिखाया गया है. (Ib9154)- नेस्ट किए गए
LazyListsमें आइटम को पहले से फ़ेच करने की सुविधा जोड़ी गई है. उदाहरण के लिए, एक ऐसाLazyColumnजो नेस्ट किए गएLazyRowsको रेंडर करता है. इस बदलाव से, इनLazyListsके लिए स्क्रोलिंग के दौरान फ़्रेम ड्रॉप कम होने की उम्मीद है. लागू करने के लिए डिफ़ॉल्ट तौर पर, पहले दो नेस्ट किए गए आइटम को प्रीफ़ेच किया जाता है. हालांकि, इस व्यवहार को नएLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)औरLazyListPrefetchStrategy#onNestedPrefetchएपीआई से कंट्रोल किया जा सकता है. (I51952)
वर्शन 1.7.0-alpha07
17 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक
TextDefaultsऑब्जेक्ट जोड़ा गया है. इसमेंLinkAnnotationबनाने और एचटीएमएल टैग वाली स्ट्रिंग को पार्स करने के तरीके शामिल हैं. ये तरीके, लिंक परMaterialThemeलागू करते हैं. (I98532, b/139312671) - आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा,
LazyVerticalGridऔरLazyHorizontalGridमें जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (फ़ेड इन), गायब हो जाना (फ़ेड आउट), और क्रम बदलना. (Ib7d12, b/330510929) LazyVerticalStaggeredGridऔरLazyHorizontalStaggeredGridमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (फ़ेड इन), गायब हो जाना (फ़ेड आउट), और क्रम बदलना. (I69bc9, b/330511290)
एपीआई में हुए बदलाव
ContextMenuColorsऔर उससे जुड़े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को 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से मेल खाने वालाAnnotatedStringLinkAnnotationबनाएं. इसके बाद, इस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) BasicSecureTextFieldमेंtextObfuscationCharacterपैरामीटर जोड़ा गया है. यह पैरामीटर कंट्रोल करता है कि कॉन्टेंट को धुंधला करते समय किस वर्ण का इस्तेमाल किया जाए. (I0588b)NestedScrollसोर्स को खींचकर छोड़ना और फ़्लिंग करना, अबUserInputऔरSideEffectसे बदल दिया गया है. ऐसा इसलिए किया गया है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं. (I40579)LocalBringIntoViewSpecको पेश किया गया है. यह प्लैटफ़ॉर्म पर निर्भर फ़ोकस स्क्रोलिंग की सुविधा है, जिसे Scrollable मॉडिफ़ायर लेयर पर लागू किया जाता है. (I27aa5, b/317453911)TextFieldCharSequenceको हटाया गया.TextFieldBuffer.originalValuesकोTextFieldBuffer.originalTextऔरTextFieldBuffer.originalSelectionसे बदल दिया गया है. (I2c7d6)ImeOptions.hintLocalesअब नल नहीं हो सकता. अगर आपको खाली स्थानीय भाषा की सूची पास करनी है, तो कृपयाLocaleList.Emptyका इस्तेमाल करें. (Ic5bc4)getOffsetFractionForPageका नाम बदलकरgetOffsetDistanceInPagesकर दिया गया है. (Ia05e2)
गड़बड़ियां ठीक की गईं
InputTransformationsकोnextसे जोड़ने पर, अब उनकेKeyboardOptionsको अलग-अलग विकल्पों के हिसाब से सही तरीके से मर्ज किया जाता है. इसके लिए,KeyboardOptions.mergeके नए तरीके का इस्तेमाल किया जाता है. (Ie5304, b/295951492)AnchoredDraggableStateकाtargetValueअब पोज़िशनल थ्रेशोल्ड को ध्यान में नहीं रखता. अब इसमें 50% का थ्रेशोल्ड है. इसका मतलब है किtargetValueदो ऐंकर के बीच के मिडपॉइंट पर बदलता है. (I82c2c)
बाहरी योगदान
- स्क्रोल करने की सुविधा देने वाले दो एपीआई (I56a75) के नाम बदले गए
वर्शन 1.7.0-alpha06
3 अप्रैल, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
LazyColumnऔरLazyRowमें, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए,Modifier.animateItemPlacement()मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायरModifier.animateItem()को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (फ़ेड इन), गायब हो जाना (फ़ेड आउट), और क्रम बदलना. (I2d7f7, b/150812265)LazyColumn/LazyRowके क्लाइंट अब आने वाले मेज़रमेंट पास के लिए, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकते हैं. इसके लिए, उन्हें बिना निलंबित किए गएLazyListState.requestToScrollको कॉल करना होगा. (I98036, b/209652366)- स्टाइल की गई स्ट्रिंग के लिए
parseAsHtmlतरीका जोड़ा गया: इससे एचटीएमएल टैग से मार्क की गई स्ट्रिंग कोAnnotatedStringमें बदला जा सकता है. ध्यान दें कि सभी टैग इस्तेमाल नहीं किए जा सकते. उदाहरण के लिए, फ़िलहाल बुलेट लिस्ट नहीं दिखाई जा सकती. (I84d3d) - Compose के स्क्रोल कंटेनर में लंबी स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback) का इस्तेमाल किया गया है. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हो सकता है कि यह फ़िलहाल सभी मामलों में ठीक से काम न करे. इस वजह से, फ़िलहाल यह सुविधा डिफ़ॉल्ट रूप से बंद है. ऑप्ट-इन करने के लिए,ComposeFeatureFlag_LongScreenshotsEnabledफ़्लैग को सही पर सेट करें. इस फ़्लैग को 1.7 बीटा से पहले हटा दिया जाएगा. (I2b055, b/329296471) - नया
GraphicsLayerएपीआई लॉन्च किया गया है. इससेGraphicsLayerइंस्टेंस को प्लेस करने और रेंडर करने में ज़्यादा आसानी होगी. साथ ही,GraphicsLayerमॉडिफ़ायर इंस्टेंस तय करने के लिए, कंपोज़ेबल लागू करने के साथ समन्वय किए बिना, इंट्रिंसिक रेंडरिंग सुविधाओं का इस्तेमाल किया जा सकेगा.
एपीआई में हुए बदलाव
- सभी
KeyboardOptionsपैरामीटर की वैल्यू अब डिफ़ॉल्ट रूप से 'तय नहीं की गई' होती है.KeyboardOptions.mergeतरीका जोड़ा गया. KeyboardOptions.autoCorrectका नाम बदलकरautoCorrectEnabledकर दिया गया है. साथ ही, इसे शून्य पर सेट किया जा सकता है. शून्य का मतलब है कि कोई वैल्यू नहीं दी गई है. (Ia8ba0, b/295951492)outOfBoundsPageCountका नाम बदलकरbeyondViewportPageCountकर दिया गया है. (I129c6)fun ClipEntry.getMetadata()को बदलकरval ClipEntry.clipMetadataकर दिया गया है. (I50155)TextFieldState.valueAsFlow()को हटाया गया.snapshotFlow { state.text }याsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }का इस्तेमाल करना बेहतर रहेगा (I7d629)InputTransformation.transformInputपैरामीटर को फिर से व्यवस्थित किया गया.originalValue: TextFieldCharSequenceको हटाया गया. इसके बजाय,TextFieldBufferअब इसी नाम के साथ यह वैल्यू दिखाता है.valueWithChanges: TextFieldBufferपैरामीटर को भी हटा दिया गया है.TextFieldBufferअब फ़ंक्शन के लिए रिसीवर स्कोप है. (I919cc)BasicTextField(state)वैरिएंट औरBasicSecureTextFieldअब सॉफ़्टवेयर कीबोर्ड से की गई कार्रवाइयों को प्रोसेस करने के लिए,KeyboardActionsके बजायKeyboardActionHandlerका इस्तेमाल करते हैं. (I58dda)- स्टाइलस हैंडराइटिंग डेलिगेशन एपीआई, "फ़र्ज़ी" टेक्स्ट इनपुट फ़ील्ड पर स्टाइलस हैंडराइटिंग की सुविधा देने के लिए. (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocusका नाम बदलकरshowKeyboardOnFocusकर दिया गया है. (Ib4b7a, b/295951492)Modifier.contentReceiverसेhintMediaTypesपैरामीटर को हटाया गया. डेवलपर को पहले ही यह सुझाव दिया गया था कि वे मिले हुएTransferableContentके मीडिया टाइप की जांच करें. ऐसा इसलिए, क्योंकि यह कॉन्फ़िगर किए गएhintMediaTypesके साथ काम नहीं कर सकता. (I82f99)BasicSecureTextFieldके पैरामीटर का क्रम बदला गया.BasicSecureTextFieldके लिए सही डिफ़ॉल्ट वैल्यू को बनाए रखते हुए,keyboardTypeऔरimeActionपैरामीटर हटा दिए गए हैं. इनकी जगह पूरीKeyboardOptionsक्लास का इस्तेमाल किया गया है.scrollStateपैरामीटर को भी हटा दिया गया है. (Ibbfa9)TextFieldState.textके टाइप कोTextFieldCharSequenceसे बदलकर सिर्फ़CharSequenceकर दिया गया है. इसलिए, हमनेTextFieldState.selection: TextRangeऔरTextFieldState.composition: TextRange?को जोड़ा है, ताकि सीधे तौर पर स्टेट ऑब्जेक्ट से मौजूदा सिलेक्शन और कंपोज़िशन वैल्यू पढ़ी जा सकें.TextFieldState.forEachTextValueको हटाया गया. (Idb2a2)ClipboardManager.getClipMetadataऔरClipboardManager.hasClipफ़ंक्शन हटा दिए गए हैं. मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए, कृपयाclipEntry.getMetadata()का इस्तेमाल करें. यह भी देखें किClipboardManager.getClipका नतीजा शून्य है या नहीं, ताकि यह पता चल सके कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं. (I50498)ClipboardManager.setClipअब क्लिपबोर्ड को मिटाने के लिए, null वैल्यू स्वीकार करता है. (I7d2e9)ReceiveContentListenerको फ़ंक्शन इंटरफ़ेस में बदल दिया जाता है. साथ ही,Modifier.receiveContentके उस ओवरलोड को हटा दिया गया है जो लैम्डा लेता है, क्योंकि अबReceiveContentListenerएक फ़ंक्शन इंटरफ़ेस है.Modifier.receiveContentका नाम बदलकरModifier.contentReceiverकर दिया गया है. (I1e6af)TransferableContent.consumeEachका नाम बदलकरTransferableContent.consumeकर दिया गया है. (I1e462)rememberTextFieldStateको स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I37999)
गड़बड़ियां ठीक की गईं
- हमने उस गड़बड़ी को ठीक कर दिया है जिसमें
BasicTextField(state)वैरिएंट, CJK(कंपोज़िशन पर आधारित) कीबोर्ड के साथ काम नहीं करता था. (I54425) Modifier.Nodeके फिर से इस्तेमाल होने पर, कुछ मामलों मेंModifier.dragAndDropTarget()में पुराना डेटा दिखने की गड़बड़ी को ठीक किया गया है. (I05bb1)- अनुबंध में हाल ही में किए गए बदलाव को पहले जैसा कर दिया गया है. इस बदलाव के तहत,
anchoredDragकार्रवाई के खत्म होने परAnchoredDraggableState#anchoredDragकॉल अपने-आप बंद हो जाते थे. (I95715)
वर्शन 1.7.0-alpha05
20 मार्च, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- हाइपरलिंक को स्टाइल करने के लिए, एक्सपेरिमेंटल
LocalTextLinkStyleकंपोज़िशन लोकल को हटाया गया. (Iebfa7) onLinkClickedआर्ग्युमेंट के साथBasicTextके एक्सपेरिमेंटल ओवरराइड को हटाया गया. आने वाले समय में, हाइपरलिंक की सुविधा के लिए एपीआई उपलब्ध कराया जाएगा. (I107d5)TextFieldStateऔरTextFieldBufferमें, कोडपॉइंट से जुड़े तरीकों और प्रॉपर्टी को हटा दिया गया है. इसके अलावा, हमने कंपोज़िशन और चुने गए आइटम से जुड़े बाकी एपीआई सेinCharsसफ़िक्स भी हटा दिए हैं. (Ief7ce)- अब ऐंकर पॉइंट से गुज़रने पर,
AnchoredDraggableकाcurrentValueअपडेट हो जाएगा.settledValueका इस्तेमाल करके, पिछलीcurrentValueसिमैंटिक पाएं. यह सिर्फ़ तब अपडेट होता है, जब ऐंकर पर सेटल हो जाता है. अब प्रोग्रेस को प्रॉपर्टी के बजाय फ़ंक्शन के तौर पर दिखाया जाता है. इसके लिए, शुरुआती और आखिरी पॉइंट की ज़रूरत होती है. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimits,TextFieldDecoratorको स्टेबल वर्शन में अपग्रेड किया गया है. (I9582b)InterceptPlatformTextInputको इसलिए लॉन्च किया गया है, ताकि लो-लेवल IME से जुड़े टेस्ट और IME के अन्य लो-लेवल इस्तेमाल के उदाहरणों को लिखने में मदद मिल सके.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को यह सुविधा मिल सके कि वह IME को खास स्थानीय भाषाओं के बारे में जानकारी दे सके, ताकि पसंदीदा भाषा को पहले से सेट किया जा सके. (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कंपोज़िशन लोकल जोड़ी गई है. इससे ऐप्लिकेशन में मौजूद टेक्स्ट के लिंक की स्टाइल बदली जा सकती है. अगर ऐप्लिकेशन में अपनी थीम का इस्तेमाल किया जा रहा है, तो आपको इस कंपोज़िशन लोकल को अपनी थीम के हिसाब से सेट करना चाहिए. Material थीम का इस्तेमाल करने पर, लिंक का रंग डिफ़ॉल्ट रूप से Material के मुख्य रंग पर सेट हो जाएगा. (I7eb10)receiveContentमॉडिफ़ायर जोड़ा गया है. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.receiveContent,BasicTextField2के साथ इंटिग्रेट होता है. इससे सॉफ़्टवेयर कीबोर्ड या क्लिपबोर्ड पर चिपकाने की सुविधा के ज़रिए, रिच कॉन्टेंट स्वीकार किया जा सकता है. (I81b72)- इस बदलाव में, हम पेजर में
SnapFlingBehaviorकोTargetedFlingBehaviorसे बदल रहे हैं, ताकि अन्य इस्तेमाल के उदाहरणों को अनलॉक किया जा सके और ज़्यादा विकल्प उपलब्ध कराए जा सकें. (I762ea) - इस बदलाव में, हम Snapping API को स्टेबल बना रहे हैं. हम टेस्टिंग कोड में भी कुछ बदलाव कर रहे हैं. साथ ही, स्नैपिंग में ज़्यादा सैंपल जोड़ रहे हैं. (Id8da9)
TargetedFlingBehaviorको पेश किया गया है. यह एकFlingBehaviorहै, जो चालू एनिमेशन की स्थिति और उसके टारगेट स्क्रोल ऑफ़सेट के बारे में जानकारी देता है. (I6a207)
गड़बड़ियां ठीक की गईं
BasicTextField2अब टाइप करते समय कर्सर को व्यू में रखता है. ऐसा तब होता है, जब कर्सर को स्क्रोल करके व्यू से बाहर कर दिया गया हो या इनपुट की वजह से वह व्यू से बाहर चला जाता हो. (Ieb856, b/237190748)
बाहरी योगदान
- यह LazyLists के प्रीफ़ेच करने के तरीके को कॉन्फ़िगर करने के लिए, एक्सपेरिमेंट के तौर पर इस्तेमाल किया जाने वाला एपीआई जोड़ता है. (I022a4)
वर्शन 1.7.0-alpha01
24 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01 रिलीज़ हो गया है. वर्शन 1.7.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नई
Indication API,IndicationNodeFactoryजोड़ी गई. इससे,rememberUpdatedInstanceएपीआई की तुलना मेंIndicationको बेहतर तरीके से लागू किया जा सकता है. एपीआई अब काम नहीं करता. डेटा को दूसरी जगह भेजने से जुड़ी जानकारी के लिए, developer.android.com पर जाएं. clickable / combinedClickable / selectable / toggleableअबMutableInteractionSourceपैरामीटर के लिए, शून्य वैल्यू स्वीकार करता है. अगर यह वैल्यू शून्य है और दी गईIndicationएकIndicationNodeFactoryहै, तोIndicationको सिर्फ़ ज़रूरत पड़ने पर बनाया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर आपनेMutableInteractionSourceको होस्ट और इस्तेमाल नहीं किया है, तो हमारा सुझाव है कि आप null पास करें.
एपीआई में हुए बदलाव
AnchoredDraggableमेंDecayAnimationको जोड़ा गया है. इस बदलाव सेAnchoredDraggableमेंdecayAnimationSpecपैरामीटर जुड़ जाता है. इससे किसी एक ऐंकर पर सेटल होने के दौरान, डीके ऐनिमेशन का इस्तेमाल किया जा सकता है. इस बदलाव में, मौजूदाanimationSpecका नाम बदलकरsnapAnimationSpecकरना भी शामिल है, ताकि हर स्पेसिफ़िकेशन के इस्तेमाल के उदाहरण को समझा जा सके.BasicTextField2को एक्सपेरिमेंट के तौर पर इस्तेमाल किया जा सकता है. यहBasicTextFieldके साथ काम करने वाली सुविधाओं के हिसाब से लगभग एक जैसा होना चाहिए. साथ ही, इसका व्यवहार प्रोडक्शन के लिए तैयार होना चाहिए. हालांकि, फ़िलहाल यह एपीआई एक्सपेरिमेंट के तौर पर उपलब्ध है. स्थिर होने से पहले, इसका नाम बदलकरBasicTextFieldकर दिया जाएगा और इसे उसी पैकेज में ले जाया जाएगा.BasicTextField2के लिए,OutputTransformationएपीआई का पहला ड्राफ़्ट लॉन्च किया गया. यह एपीआई,BasicTextFieldके पुराने वर्शन मेंVisualTransformationके ज़्यादातर इस्तेमाल के उदाहरणों की जगह लेता है. हालांकि, यह सुविधा अभी पूरी तरह से उपलब्ध नहीं है और कुछ चीज़ें ठीक से काम नहीं करेंगी. इसलिए, हम चाहते हैं कि आप हमें बताएं कि आपके इस्तेमाल के मामलों के लिए, एपीआई का इस्तेमाल करना कितना आसान है. (aosp/2708848)LinkAnnotationफ़ंक्शन जोड़ा गया है. इससे टेक्स्ट में लिंक और क्लिक किए जा सकने वाले एलिमेंट जोड़े जा सकते हैं. लिंक करने की सुविधा अभी पूरी नहीं हुई है. साथ ही, एपीआई में और भी बदलाव होने वाले हैं.receiveContentमॉडिफ़ायर जोड़ा गया है. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.receiveContent,BasicTextField2के साथ इंटिग्रेट होता है, ताकि सॉफ़्टवेयर कीबोर्ड से मिले रिच कॉन्टेंट को स्वीकार किया जा सके. इसके अलावा, क्लिपबोर्ड से चिपकाए गए कॉन्टेंट को भी स्वीकार किया जा सके.KeyboardOptions.shouldShowKeyboardOnFocusकी मदद से, फ़ोकस करने पर सॉफ़्टवेयर कीबोर्ड का अनुरोध करने वालेBasicTextFieldके डिफ़ॉल्ट व्यवहार को बंद किया जा सकता है.TextInputServiceऔरLocalTextInputServiceका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, सीधे तौर पर प्लैटफ़ॉर्म के IME एपीआई के साथ इंटिग्रेट करने के लिए,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)
- onForgotten के क्रम में ही onRelease कॉलबैक को कॉल करें. (31ce3b)
वर्शन 1.6.0
24 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये बदलाव शामिल हैं.
1.5.0 के बाद हुए अहम बदलाव
- नया मॉडिफ़ायर
Modifier.anchoredDraggable, जो पहले से तय किए गए ऐंकर के सेट के बीच ड्रैग करने और ऐनिमेशन करने की सुविधा को अनलॉक करता है. इस मॉडिफ़ायर कोModifier.swipeableके विकल्प के तौर पर इस्तेमाल किया जाता है. इसे इस्तेमाल करने और माइग्रेशन गाइड में दिए गए निर्देशों का पालन करके,Modifier.swipeableसे माइग्रेट करने का तरीका जानें. - ऐप्लिकेशन और कॉम्पोनेंट के बीच, खींचकर छोड़ने की सुविधा जोड़ी गई है. शुरू करने के लिए,
DragAndDropTarget,Modifier.dragAndDropSource, और अन्य एपीआई देखें Modifier.draggable2Dनया मॉडिफ़ायर है. इसकी मदद से, 2D ऑब्जेक्ट को आसानी से ड्रैग किया जा सकता है. उदाहरण देखें.AndroidExternalSurfaceऔरAndroidEmbeddedExternalSurfaceको जोड़ा गया है, ताकि कंपोज़ में सर्फ़ेस-ड्रिवन कॉम्पोनेंट को आसानी से जोड़ा जा सकेPagerऔरsnapFlingBehaviourमें एपीआई से जुड़े कई बदलाव और सुधार- फ़ोकस, टेक्स्ट, और इनसेट से जुड़े कई एपीआई को स्टेबल एपीआई के तौर पर प्रमोट किया गया है
वर्शन 1.6.0-rc01
10 जनवरी, 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragAndDropTarget()एक्सटेंशन कंस्ट्रक्टर को हटा दिया गया है.object: DragAndDropTarget {}का इस्तेमाल करके नया इंस्टेंस बनाएं. (I32318)
वर्शन 1.6.0-beta03
13 दिसंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03 रिलीज़ हो गया है. वर्शन 1.6.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस क्रैश को ठीक किया गया है जिससे बहुत बड़े टेक्स्ट पर असर पड़ा था. इस टेक्स्ट को इनफ़िनिट कंस्ट्रेंट के साथ मेज़र किया गया था. (I1a7df, b/312294386)
PlatformImeOptionsअब इंटरफ़ेस के बजाय एक कॉन्क्रीट क्लास है. (If40a4)
वर्शन 1.6.0-beta02
29 नवंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02 रिलीज़ हो गया है. वर्शन 1.6.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सिर्फ़ रीलआउट वाले स्क्रोल के बाद,
canScrollके अपडेट न होने की समस्या को ठीक किया गया. (I60a86) - थोड़ा स्क्रोल करने के बाद,
Modifier.animateItemPlacement()औरLookaheadScopeके लिए ठीक किया गया. (I3a2b7)
वर्शन 1.6.0-beta01
15 नवंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DragAndDropTargetमॉडिफ़ायर अबDragAndDropTargetको साफ़ तौर पर लेता है. साथ ही, इसमें ड्रैग और ड्रॉप सेशन में ऑप्ट इन करने के लिए लैम्डा होता है. अबDragAndDropModifierNodeके लिए दो फ़ैक्ट्री फ़ंक्शन उपलब्ध हैं. एक ट्रांसफ़र पाने के लिए और दूसरा डेटा ट्रांसफ़र करने के लिए (I69481)maximumFlingVelocityको फ़्लोट के तौर पर दिखाने के लिए अपडेट किया गया.maximumFlingVelocityकी एकता के बारे में ज़्यादा जानकारी देने के लिए, अपडेट किया गया दस्तावेज़. (I8adc7)DragAndDropModifierNodeफ़ैक्ट्री में मौजूदonDragAndDropStartका नाम बदलकरacceptDragAndDropTransferकर दिया गया है.acceptsDragAndDropTransferकोdragAndDropTargetModifierमें जोड़ा गया है, ताकि इसे खींचकर छोड़ने वाले सेशन से स्वीकार किया जा सके. अगर आपको ड्रैग और ड्रॉप सेशन में दिलचस्पी है, तो यह लैंबडा एक मान्यDragAndDropTargetदिखाता है. ड्रैग इवेंट को प्रोसेस करने के लिए, अन्य लैम्डा को इससे बदल दिया गया है.ड्रैग और ड्रॉप सेशन (Iebf3a) से डेटा पाने के लिए,
DragAndDropTargetफ़ैक्ट्री फ़ंक्शन जोड़ा गया हैAnchoredDraggableमेंstartDragImmediatelyको दिखाने से, इसे इस्तेमाल करते समय ड्रैग करने वाले जेस्चर का पता लगाने की सुविधा मिलती है. जब विजेट किसी टारगेट ऐंकर पर ऐनिमेट हो रहा हो, तब इसे सेट करना फ़ायदेमंद होता है. उदाहरण देखें. (Ie6d13, b/285139987)Foundation टूलटिप एपीआई अब
@ExperimentalFoundationApi(I30b0b) हैंDragAndDropInfoको हटा दिया गया है.DragAndDropModifierNode.dragअबtransferData, डेकोरेशन के साइज़, और ड्रैग डेकोरेशनDrawScopeलैम्डा के लिए पैरामीटर लेता हैDragAndDropTargetमें, एक ऐब्स्ट्रैक्ट तरीके के बजाय, ड्रैग और ड्रॉप करने के खास इवेंट के तरीके होते हैंDragAndDropModifierNodeके फ़ैक्ट्री फ़ंक्शन में मौजूदonDragAndDropEventका नाम बदलकरonDragAndDropStartकर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि दिया गयाDragAndDropTarget, सिर्फ़ ड्रैग और ड्रॉप वाले सेशन के लिए मान्य हैDragAndDropEventTypeको हटा दिया गया है (I645b1)PlatformTextInputModifierNode.runTextInputSessionका नाम बदलकरestablishTextInputSessionकर दिया गया है. (I03cd0)OriginalTextकोTextSubstitutionसे बदलें. (Ifa5a8)PlatformTextInputModifierNode.textInputSessionका नाम बदलकरrunTextInputSessionकर दिया गया है. (Ie9c6b)SubcomposeLayoutके उन बच्चों (औरLazyColumnजैसे लेआउट, जो इस पर आधारित हैं) को बंद माना जाता है जिन्हें आने वाले समय में फिर से इस्तेमाल करने के लिए सेव किया जाता है. ऐसे नोड की जांच करने के लिए, नयाassertIsDeactivated()test API लॉन्च किया गया है. अन्य टेस्ट एपीआई, डिफ़ॉल्ट रूप से बंद किए गए नोड को फ़िल्टर कर देंगे. (I2ef84, b/187188981)Modifier.magnifierकेclippingEnabledपैरामीटर का नाम बदलकरclipकर दिया गया है.Modifier.magnifierकेmagnifierCenterपैरामीटर को नल वैल्यू स्वीकार करने वाला बनाया गया है. हालांकि, इसके डिफ़ॉल्ट व्यवहार में कोई बदलाव नहीं किया गया है. (I6aa66)कार्ड और चिप के लिए, Material
SwipeToRevealएपीआई अब उन स्लॉट को बनाने के लिए, डेटा क्लास पर आधारित इंस्टेंस के बजाय, स्लॉट पर आधारित एपीआई (जैसा कि Compose ने सुझाव दिया है) का इस्तेमाल करते हैं. यह एक बड़ा बदलाव है. नए एपीआई को इस्तेमाल करने के तरीके के बारे में जानने के लिए, कृपया डेमो और सैंपल कोड देखें. (Ia8943)
गड़बड़ियां ठीक की गईं
PageSize.Fixedके लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से
minWidthके बदलने औरminWidthके शुरुआती मेज़रमेंट की सीमाओंmaxWidth(Idb19c) से कम होने पर,BasicTextलेआउट छोटा नहीं होता था ArcLineमें स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ी गई. (I4d5bb)- Window Inset में बदलाव करने पर, बाइनरी कंपैटिबिलिटी से जुड़ी समस्या ठीक की गई (Iee695)
- Material3 चिप/बटन के लिए, मटीरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)
वर्शन 1.6.0-alpha08
18 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
Modifier.draggable2Dनया मॉडिफ़ायर है. इसकी मदद से, 2D ऑब्जेक्ट को आसानी से ड्रैग किया जा सकता है. उदाहरण (Id95f5, b/214412658) देखें
एपीआई में हुए बदलाव
Modifier.dragAndDrawSourceमें,onDrawDragShadowलैम्डा का नाम बदलकरdrawDragDecorationकर दिया गया है. साथ ही,DragAndDropInfoमें, साइज़ पैरामीटर का नाम बदलकरdragDecorationSizeकर दिया गया है. (Id0e30, b/303904810)BasicTextField2केdecorationBoxपैरामीटर का नाम बदलकरdecoratorकर दिया गया है. इसका टाइप भी बदलकर, मज़ेदार इंटरफ़ेसTextFieldDecoratorकर दिया जाता है. (I23c1c)
गड़बड़ियां ठीक की गईं
BasicTextFieldसे जुड़े दस्तावेज़ में,onValueChangeकी ज़रूरी शर्तों के बारे में बेहतर जानकारी दी गई है. (I90fc9, b/160257648)
वर्शन 1.6.0-alpha07
4 अक्टूबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट एडिटर के लिए, टेस्ट लिखने की सुविधा
PlatformTextInputMethodTestOverrideलॉन्च की गई. (Id159b) GraphicsSurfaceका नाम बदलकरAndroidExternalSurfaceकिया गया (I11680)- नॉन-लीनियर फ़ॉन्ट स्केलिंग को बंद करने के लिए,
DisableNonLinearFontScalingInComposeअस्थायी फ़्लैग जोड़ा गया. अगर आपको टेस्ट को ठीक करने के लिए समय चाहिए, तो उन्हेंDisableNonLinearFontScalingInCompose = trueके तौर पर सेट करें. इस फ़्लैग को Compose 1.6.0-beta01 में हटा दिया जाएगा. (Ic9486) ColorListऔरColorSetकलेक्शन जोड़े गए हैं, जिनमें एट्रिब्यूशन नहीं किया जाता. (I744bd)- इस बदलाव से
shortSnapVelocityThresholdहट जाता है. इसेSnapLayoutInfoProviderको लागू करने के तरीके की जानकारी में शामिल कर दिया गया है. (I65f6d) - खींचें और छोड़ें सेशन शुरू करने के लिए
dragAndDropSourceमॉडिफ़ायर और खींचें और छोड़ें सेशन से डेटा पाने के लिएdragAndDropTargetमॉडिफ़ायर जोड़ा गया (Ib7828, b/286038936) SnapPositionInLayoutके दस्तावेज़ और पोज़िशन के तरीके को अपडेट करें.SnapPositionInLayoutमें, पोज़िशन के तरीके में कॉन्टेंट पैडिंग जोड़ें. (Id7938, b/300116110)TextFieldStateमेंUndoStateजोड़ा गया है. इससे उपयोगकर्ता, किए गए बदलावों को पहले जैसा कर सकता है या उन्हें फिर से कर सकता है. (Icc024)
गड़बड़ियां ठीक की गईं
- वेलोसिटी में बदलाव होने के बाद, तय की गई
basicMarqueeके ऐनिमेट न होने की समस्या ठीक की गई. (Id2e77, b/297974036)
वर्शन 1.6.0-alpha06
20 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
SurfaceView,TextureView: GraphicsSurface(), औरEmbeddedGraphicsSurface()के लिए नए कंपोज़ेबल रैपर. यह एक एक्सपेरिमेंटल एपीआई है. इसमें बदलाव किए जा सकते हैं. (I9ddb2)Modifier.magnifier()अब एक स्टेबल एपीआई है. इसमें मॉडिफ़ायर में इनलाइन पैरामीटर के पक्ष मेंMagnifierStyleको हटाना शामिल है. (I83bec, b/298381260, b/262367109, b/261438887)
एपीआई में हुए बदलाव
ScrollScopeमेंupdateCurrentPageऔरupdateTargetPageको जोड़ा गया है. ये आखिरी ज़रूरी चीज़ें हैं, जिनकी मदद सेPagerState.scrollमें ऐनिमेशन वाले स्क्रोल को पसंद के मुताबिक बनाया जा सकता है. (I9cad5, b/267744105, b/243786897)SnapFlingBehaviorसे डेंसिटी हटाएं.SnapLayoutInfoProviderके सभी वर्शन में, घनत्व को ऐक्सेस करने का तरीका पहले से मौजूद है. इसलिए, रिसीवर स्कोप को हटाया जा सकता है. इससेSnapFlingBehaviorऔरSnapLayoutInfoProviders, दोनों को लागू करना आसान हो जाएगा. (I153c3)- ज़्यादा मॉडिफ़ायर को स्टेबल के तौर पर मार्क किया गया है. (I56af1, b/298046462)
SnapStepSizeकोSnapLayoutInfoProviderसे हटाया गया. कैलकुलेशन, लेआउट की जानकारी का इस्तेमाल करके की जानी चाहिए. साथ ही, इसे अप्रोच या स्नैपिंग ऑफ़सेट के ज़रिए उपलब्ध कराया जाना चाहिए. (If320c)
व्यवहार में बदलाव
- अब कंपोज़ फ़ीचर, पढ़ने और ऐक्सेस करने में आसानी के लिए नॉन-लीनियर फ़ॉन्ट स्केलिंग का इस्तेमाल करती है. सिस्टम सेटिंग में फ़ॉन्ट स्केल > 100% होने पर, छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ सिर्फ़ थोड़ा बढ़ेगा. साथ ही, एसपी में तय की गई लाइन की ऊंचाई, 100% स्केल के हिसाब से तय की गई ऊंचाई के अनुपात में अपने-आप अडजस्ट हो जाएगी. ज़्यादा जानकारी के लिए, फ़ॉन्ट को बड़ा करने के सबसे सही तरीके देखें. (I11518)
गड़बड़ियां ठीक की गईं
- टूलटिप के लिए,
rememberSaveableका इस्तेमाल बंद करें. (Icc131, b/299500338)
वर्शन 1.6.0-alpha05
6 सितंबर, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BasicSecureTextFieldके लिए ओवरलोड जोड़ें, जो ऐसी वैल्यू और कॉलबैक स्वीकार करते हैं जिन्हें बदला नहीं जा सकता. कॉलबैक का इस्तेमाल उस वैल्यू को बदलने के लिए किया जाता है. यह मौजूदाBasicTextFieldएपीआई की तरह ही काम करता है. (Ia4882)- एपीआई लेवल 33 और इसके बाद के वर्शन पर फ़्लोटिंग विंडो से बचने के लिए,
Modifier.preferKeepClear()जोड़ें, ताकि इसे कंपोज़ेबल के तौर पर मार्क किया जा सके. (Ib51d5, b/297260115) ScrollViewऔरRecyclerViewजैसे व्यू कॉम्पोनेंट में फ़्लिंग की स्पीड,ViewConfiguration.ScaledMaximumFlingVelocityपर सेट होती है. Compose में अबmaximumFlingVelocityका अपना वर्शन शामिल है. यह अबDraggableपर लागू होता है. (Ibf974)- इस्तेमाल बंद किए जा चुके
PagerऔरPagerStateओवरलोड हटा दिए गए हैं. (Iea07e) compose.foundationमेंBasicTooltipBoxको जोड़ा गया है. साथ ही,PlainTooltipBoxऔरRichTooltipBoxको अपडेट किया गया है, ताकि नएPlainTooltipऔरRichTooltipकंपोज़ेबल के साथTooltipBoxका इस्तेमाल किया जा सके. (I79e1d)
वर्शन 1.6.0-alpha04
23 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- सबकंपोज़िशन के लाइफ़साइकल को मैनेज करने और उन्हें फिर से इस्तेमाल करने के लिए,
ReusableCompositionइंटरफ़ेस जोड़ा गया. (I812d1, b/252846775) Modifier.focusGroupको स्टेबल एपीआई के तौर पर प्रमोट किया गया है. (I7ffa3)BasicTextField2के लिए ओवरलोड जोड़ें, जो ऐसी वैल्यू और कॉलबैक स्वीकार करते हैं जिन्हें बदला नहीं जा सकता. कॉलबैक का इस्तेमाल उस वैल्यू को बदलने के लिए किया जाता है. यह मौजूदाBasicTextFieldएपीआई की तरह ही काम करता है. (I3f2b8)GridItemSpan::currentLineSpanअब एक स्टेबल एपीआई है. (Icc29c)contentDescriptionको स्वीकार करने वाला कैनवस अब एक स्टेबल एपीआई है. (Ib3d29)viewportSizeमेंScrollStateको पेश किया गया है. इससे मेज़रमेंट के बाद,ScrollStateका इस्तेमाल करने वाले कॉम्पोनेंट केviewPortसाइज़ के बारे में पता चलता है. (I8b85a, b/283102682)- उस समस्या को ठीक किया गया है जिसमें Pager में प्रीफ़ेचिंग, Views में प्रीफ़ेचिंग से मेल नहीं खाती थी. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)अब स्टेबल हो गया है.Deprecated Modifier.consumedWindowInsetsएपीआई को अब हटा दिया गया है. इसके बजाय,Modifier.consumeWindowInsetsका इस्तेमाल करें. (Id72bb)
वर्शन 1.6.0-alpha03
9 अगस्त, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03 रिलीज़ हो गया है. वर्शन 1.6.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyLayoutका ओवरलोड जोड़ा गया है. यहLazyLayoutItemProviderका लैम्डा स्वीकार करता है, न कि पहले की तरह कोई सामान्य ऑब्जेक्ट. पिछले ओवरलोड को बंद कर दिया गया है. (I42a5a)privateImeOptions(Idb772) को कॉन्फ़िगर करने की सुविधा जोड़ी गई
गड़बड़ियां ठीक की गईं
readOnlyके सही होने पर, टेक्स्ट फ़ील्ड में कीबोर्ड दिखने और उनमें बदलाव किए जा सकने की समस्या को ठीक किया गया है. इसके अलावा, फ़ोकस किए जाने के दौरानreadOnlyको सही से गलत पर बदलने पर कीबोर्ड नहीं दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)
वर्शन 1.6.0-alpha02
26 जुलाई, 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02 रिलीज़ हो गया है. वर्शन 1.6.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Pagerमें मेज़रमेंट पास होने के बाद इकट्ठा की गई जानकारी के साथPagerLayoutInfoको लॉन्च किया गया. साथ ही,PageInfoको भी लॉन्च किया गया है. यहPagerमें मेज़र किए गए किसी एक पेज के बारे में जानकारी देता है. (Iad003, b/283098900)- कंपोज़ेबल में इस्तेमाल किए जा सकने वाले इनपुट तय करने के लिए अतिरिक्त एनोटेशन (I51109)
- टेस्ट में फ़ोकस करने का अनुरोध करने के लिए,
SemanticsNodeInteraction.requestFocusको ज़्यादा सुविधाजनक और आसानी से ढूंढने वाले तरीके के तौर पर जोड़ा गया है. (Ie8722) PlatformTextInput*API को पूरी तरह से फिर से डिज़ाइन किया गया है. (I6c93a, b/274661182, b/267235947, b/277380808)SoftwareKeyboardControllerऔरLocalSoftwareKeyboardControllerअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.LocalSoftwareKeyboardControllerअब एक सहीCompositionLocalभी है. (I4c364)Modifier.transformableअबcanPanपैरामीटर में पैन डेल्टा उपलब्ध कराता है. इससे पैन की दिशा का पता लगाने में मदद मिलती है, ताकि पैन करने की अनुमति दी जा सके या उसे रोका जा सके. (I692aa, b/266829800)- सुपरक्लास
AbstractComposeView(Iacd74, b/269479941) को बढ़ाने के लिए, मॉडिफ़ायरconsumeWindowInsetsको अपडेट करता है
वर्शन 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.NodeAPI पर माइग्रेट कर दिया गया है. इससे शुरुआती कंपोज़िशन पर ओवरहेड कम हो गया है. - पेजर के क्रैश या हैंग होने से बचाने के लिए सुधार किए गए हैं. कई बग ठीक किए गए हैं.
pageCountपैरामीटर अब Pager में मौजूद नहीं हैं, बल्कि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)- Pager के
SnapFlingBehaviorमेंshortSnapVelocityThresholdके बारे में जानकारी दो. (I7379e, b/275579012) - इसमें
FlowRowScopeऔरFlowColumnScopeको जोड़ा जाता है. (I54fe2)
गड़बड़ियां ठीक की गईं
- जब टेक्स्ट पर सिमैंटिक्स पाने के लिए कॉल किए जाते हैं, तब
minWidthऔरminHeightकी वजह से अब क्रैश नहीं होता. (Ibd072) - उस रिग्रेशन को ठीक किया गया है जिसमें
Dialogकंपोज़ेबल से नहीं बनाए गए डायलॉग में मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था. (I82551, b/262140644)
वर्शन 1.5.0-alpha03
19 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha03 और androidx.compose.foundation:foundation-layout:1.5.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha03 में ये बदलाव शामिल हैं.
इस रिलीज़ से, Compose के लिए नया टेक्स्ट रेंडरिंग स्टैक चालू हो जाता है. नया स्टैक, परफ़ॉर्मेंस के लिए ऑप्टिमाइज़ किया गया है. इसलिए, आपको कोई बदलाव नहीं दिखेगा.
अगर आपको रेंडर किए गए टेक्स्ट में बदलाव दिखते हैं, तो NewTextRendering1_5 = false सेट करके डीबग किया जा सकता है. इससे यह पुष्टि की जा सकती है कि दोनों वर्शन में क्या अंतर है. इसे सेट करने पर, कंपोज़िशन को फिर से लागू किया जाएगा. अगर आपको दोनों वर्शन के व्यवहार में कोई अंतर दिखता है, तो कृपया उसे गड़बड़ी के तौर पर सबमिट करें.
1.5 beta01 रिलीज़ होने से पहले, डीबग फ़्लैग हटा दिया जाएगा.(Iada23, b/246960758)
एपीआई में हुए बदलाव
FlowColumn/FlowRowको इनलाइन के तौर पर शामिल करें. (Idab37)
वर्शन 1.5.0-alpha02
5 अप्रैल, 2023
androidx.compose.foundation:foundation:1.5.0-alpha02 और androidx.compose.foundation:foundation-layout:1.5.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyGridमें तय साइज़ वाली सेल के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित करने की सुविधा भी जोड़ी गई है. (I83ed9, b/235121277, b/267942510)LazyStaggeredGridमें तय साइज़ वाली लेन के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित करने की सुविधा भी जोड़ी गई है. (I7d519)AnnotatedStringमें मौजूदUrlAnnotations को अब सुलभता सेवाओं के ज़रिए खोला जा सकता है. जैसे,TalkBack. (If4d82, b/253292081)- टेक्स्ट फ़ील्ड के लिए,
InsertTextAtCursorसिमैंटिक्स ऐक्शन जोड़ा गया. (I11ed5) - टेक्स्ट से जुड़ी टेस्ट कार्रवाइयों (जैसे,
performTextInput) के लिए, अब सीधे तौर पर फ़ोकस करने का अनुरोध किया जाएगा. इसके लिए, फ़ील्ड पर क्लिक करने के बजाय, सिमैंटिक्स ऐक्शन का इस्तेमाल किया जाएगा. (I6ed05) FlowColumnमेंFlowRowऔरhorizontalArrangementमेंverticalArrangementका इस्तेमाल करके, क्रॉस ऐक्सिस स्पेसिंग/अरेंजमेंट की सुविधा जोड़ी गई है. हम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 कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.PlatformParagraphStyleका इस्तेमाल करके, किसी टेक्स्ट परEmojiCompatको कॉन्फ़िगर किया जा सकता है.LazyStaggeredGrid(I28252) में पूरी लाइन के स्पैन के लिए सहायता जोड़ी गईonHoverकोClickableText(I6938f) में जोड़ा जा रहा है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 कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है. PlatformParagraphStyleका इस्तेमाल करके, किसी टेक्स्ट परEmojiCompatको कॉन्फ़िगर किया जा सकता है.
एपीआई में हुए बदलाव
PinnableContainerएपीआई को लागू करने का सामान्य तरीका जोड़ा गया है. इसका इस्तेमाल सभीLazyLayoutsमें किया जाता है. इससे उन आइटम को बनाए रखने में मदद मिलती है जो कंपोज़िशन से बाहर निकल जाते हैं, लेकिन उन्हें अब भी चालू रखना होता है. (If45a4)PinnableContainer.PinnedHandle.unpin()का नाम बदलकरrelease()कर दिया गया (I4667a)
बाहरी योगदान
mainAxisItemSpacingप्रॉपर्टी कोLazyListLayoutInfo,LazyGridLayoutInfo, औरLazyStaggeredGridItemInfo(I52fad) में जोड़ा गया
वर्शन 1.4.0-alpha05
25 जनवरी, 2023
androidx.compose.foundation:foundation:1.4.0-alpha05 और androidx.compose.foundation:foundation-layout:1.4.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
LazyStaggeredGridमें पूरी लाइन के स्पैन के लिए सहायता जोड़ी गई (I28252)ClickableTextमें एक्सपेरिमेंट के तौर पर उपलब्धonHoverको जोड़ा जा रहा है (I6938f)runComposeUiTestफ़ंक्शन औरcreate*ComposeRuleफ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर शुरू किए गए नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContextपैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भीLaunchedEffectऔरrememberCoroutineScope()कॉल के लिए किया जाएगा. (I10614, b/265177763)
एपीआई में हुए बदलाव
OverscrollEffectके प्री/पोस्ट एपीआई को, 'डेकोरेटर'applyToScrollऔरapplyToFlingफ़ंक्शन में मर्ज करता है. नए एपीआई शेप के साथ ओवरस्क्रोल इफ़ेक्ट लागू करने के उदाहरणों के लिए, दस्तावेज़ में अपडेट किए गए सैंपल देखें. (I8a9c4, b/255554340)- इनलाइन/इस्तेमाल बंद किए गए-छिपाए गए फ़ंक्शन के टाइप/शून्य होने की स्थिति के बारे में ज़्यादा जानकारी (I24f91)
TextStyleमें मौजूदLineBreakऔरHyphensएपीआई को स्टेबल वर्शन में अपग्रेड कर दिया गया है. (Ic1e1d)
गड़बड़ियां ठीक की गईं
- अब टेक्स्ट फ़ील्ड में कर्सर, ऐनिमेशन बंद होने पर भी ब्लिंक करता रहेगा. (I95e70, b/265177763)
Modifier.basicMarqueeअब ऐनिमेट होता है. भले ही, सिस्टम सेटिंग में ऐनिमेशन बंद हों. (I23389, b/262298306, b/265177763)
बाहरी योगदान
TextInputSessionऔरTextInputServiceमें मौजूदnotifyFocusedRectतरीकों को फिर से बंद नहीं किया गया है. (I23a04, b/262648050)
वर्शन 1.4.0-alpha04
11 जनवरी, 2023
androidx.compose.foundation:foundation:1.4.0-alpha04 और androidx.compose.foundation:foundation-layout:1.4.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
FlowRowऔरFlowColumnअब@ExperimentalFoundationApiके तौर पर उपलब्ध हैं. इनकी मदद से, कॉम्पोनेंट के लिए ज़्यादा फ़्लेक्सिबल लेआउट बनाया जा सकता है. अगर मुख्य ऐक्सिस पर जगह नहीं होती है, तो कॉम्पोनेंट नई लाइन में चले जाएंगे. (I3a7b2)Modifier.basicMarquee(), एक्सपेरिमेंट के तौर पर उपलब्ध है. इसका इस्तेमाल, स्क्रोलिंग मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाने के लिए किया जाता है. (I2df44, b/139321650)
एपीआई में हुए बदलाव
FocusRequesterModifierकोFocusRequesterNodeके पक्ष में बंद कर दिया गया है (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)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) - अब काम न करने वाले और छिपे हुए फ़ंक्शन के रिटर्न टाइप में, नल वैल्यू की अनुमति देने से जुड़ी ज़्यादा जानकारी (Ibf7b0)
TextStyleमें एक्सपेरिमेंटलTextMotionजोड़ा गया है, ताकि यह तय किया जा सके कि टेक्स्ट कोStatic(default)के तौर पर दिखाना है या ऐनिमेशन के तौर पर. अगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जा रहा है, उसका अनुवाद किया जा रहा है या उसे घुमाया जा रहा है, तोTextMotion.Animatedका इस्तेमाल करें. (I24dd7)- Android प्लैटफ़ॉर्म के लिए फ़ोकस नेविगेशन के व्यवहार को ठीक करने के लिए,
TextFieldFocusModifierजोड़ा गया (I00303) drawTextफ़ंक्शन मेंmaxSize: IntSizeआर्ग्युमेंट कोsize: Sizeसे बदल दिया गया है, ताकि यह अन्यDrawScopeफ़ंक्शन के साथ काम कर सके. डिफ़ॉल्ट रूप सेsizeकोSize.Unspecifiedपर सेट किया जाता है. इससे, डिफ़ॉल्ट ऐक्शन और सेटिंग में कोई बदलाव नहीं होना चाहिए. (Icd27d)
गड़बड़ियां ठीक की गईं
- ज़्यादा नैचुरल फ़ील के लिए,
SnapFlingBehaviourमें स्नैपिंग फ़िज़िक्स में बदलाव किए गए हैं.
आम समस्या
androidx.compose.foundation:1.4.0-alpha03सेandroidx.compose.foundation:1.4.0-alpha04पर अपडेट करने के दौरान, आपकोjava.lang.NoSuchFieldErrorगड़बड़ी दिख सकती है. समस्या की शिकायत यहां की गई थी. इस समस्या को ठीक करने के लिए, एक समाधान सबमिट किया गया है. यह Compose के अगले अपडेट में उपलब्ध होगा. इस समस्या को हल करने के लिए,androidx.compose.materialऔरandroidx.compose.material3लाइब्रेरी को नए वर्शन(1.1.0-alpha04) पर अपडेट करें याandroidx.compose.foundationको 1.4.0-alpha03 पर डाउनग्रेड करें.
वर्शन 1.4.0-alpha03
7 दिसंबर, 2022
androidx.compose.foundation:foundation:1.4.0-alpha03 और androidx.compose.foundation:foundation-layout:1.4.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose नियम का इस्तेमाल करके की जाने वाली यूज़र इंटरफ़ेस (यूआई) जांचों में,
withFrameNanosकॉलबैक के दौरान फिर से शुरू किए गए कंटीन्यूएशन तब तक डिस्पैच नहीं किए जाएंगे, जब तक सभी फ़्रेम कॉलबैक पूरे नहीं हो जाते. यह सुविधा, सामान्य तौर पर काम करते समय कंपोज़ करने की सुविधा के जैसा ही काम करती है. हालांकि, पुरानी सेटिंग पर आधारित टेस्ट फ़ेल हो सकते हैं. इसका असर सिर्फ़ उस कोड पर पड़ना चाहिए जो सीधे तौर परwithFrameNanosयाwithFrameMillisको कॉल करता है. साथ ही, जिसमें उन फ़ंक्शन को पास किए गए कॉलबैक के बाहर लॉजिक होता है. इस लॉजिक को कॉलबैक के अंदर ले जाने की ज़रूरत पड़ सकती है. उदाहरणों के लिए, इस सीएल में ऐनिमेशन टेस्ट में किए गए बदलाव देखें. TestMonotonicFrameClockकंस्ट्रक्टर और फ़ैक्ट्री फ़ंक्शन में,onPerformTraversals: (Long) -> Unitपैरामीटर जोड़ा गया है. यह पैरामीटर ज़रूरी नहीं है. इसका इस्तेमाल,withFrameNanosकॉलबैक के बाद और कॉलर की को-रूटीन फिर से शुरू होने से पहले कोड चलाने के लिए किया जाता है. (Idb413, b/254115946, b/222093277, b/255802670)- 'परिचय दें' पेज पर सुलभता से जुड़ी कार्रवाइयां:
PageUp,PageDown,PageLeft,PageRight. ध्यान दें कि ये सिर्फ़ एपीआई 29 से उपलब्ध हैं. (Ida4ab) HorizontalPagerऔरVerticalPagerपेश किया गया है. यह कंपोज़ेबल को पेज के हिसाब से दिखाने का एक तरीका है. पेजर को कंट्रोल करने के लिएPagerStateको लॉन्च किया गया है. साथ ही, पेजर की मौजूदा स्थिति के बारे में क्वेरी की जा सकती है.PageSizeको पेश किया गया है. इससे Pager के पेज के साइज़ को कंट्रोल किया जा सकता है. इसका इस्तेमाल, Pager जैसे कैरसेल बनाने के लिए किया जा सकता है.PagerSnapDistanceको पेश किया गया है. इससे यह कंट्रोल किया जा सकता है कि Pager के फ़्लिंग बिहेवियर में स्नैपिंग कैसे काम करेगी. (I01120)SnapFlingBehavior.performFlingमें ओवरलोड की सुविधा जोड़ी गई है, ताकि यह पता चल सके कि फ़्लिंग कहां रुकेगी. (I569f6)OverscrollEffect#isEnabledको हटाया गया. इस फ़्लैग को याद रखने और सेट करने के बजाय, उन मामलों में ओवरस्क्रोल इफ़ेक्ट को इवेंट डिसपैच न करें जहां आपको ओवरस्क्रोल नहीं दिखाना है. उदाहरण के लिए, अगरScrollableState#canScrollForward/backwardदोनों 'गलत है' वैल्यू दिखाते हैं. (I1a4b0, b/255554340, b/255557085)ScrollableState#canScrollForwardऔरScrollableState#canScrollBackwardको क्वेरी में जोड़ा गया है. इससे यह पता चलता है कि क्याScrollableStateको किसी भी दिशा में स्क्रोल किया जा सकता है. इससे यह भी पता चलता है कि क्या यह अपनी रेंज की कम से कम / ज़्यादा से ज़्यादा वैल्यू पर है. यह डिफ़ॉल्ट रूप से, 'सही है' के तौर पर सेट होती है, ताकिScrollableStateके मौजूदा वर्शन के साथ काम कर सके. उपयोगकर्ता इस वैल्यू का इस्तेमाल करके, उपयोगकर्ता को यह दिखा सकता है कि अब भी स्क्रोल करने की जगह है. इसका इस्तेमाल, उनScrollableStatesको डेल्टा भेजने से बचने के लिए भी किया जा सकता है जिनमें किसी दिशा में स्क्रोल करने की जगह नहीं है. इससे गैर-ज़रूरी काम कम हो जाता है. (Idf1a0, b/255557085)- स्क्रोल करने की जानकारी के लिए, Modifier API जोड़ा गया. (I2ba9d, b/203141462)
- इस कुकी का इस्तेमाल
Clickableमें किया जाता है. इससे प्रेस इंटरैक्शन को सही तरीके से डिले किया जा सकता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं. Clickablesको ठीक किया गया है.Scrollable ViewGroupके अंदर इस्तेमाल किए जाने पर, यह रिपल्स को सही तरीके से डिले नहीं करता था.- ड्रॉअर और शीट को अपडेट किया गया है, ताकि अगर जेस्चर स्क्रोल इवेंट बन सकते हैं, तो प्रेस में सही तरीके से देरी हो.
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 (I12197) से
beyondBoundCountएपीआई को पहले जैसा करना - लेज़ी एपीआई में पैरामीटर जोड़ा गया है, ताकि व्यूपोर्ट से बाहर मौजूद आइटम को कंपोज़ और प्लेस किया जा सके (I69e89, b/172029355)
BasicTextऔरBasicTextFieldमेंminLinesपैरामीटर जोड़ा गया. इससे लाइनों की संख्या (I24294, b/122476634) के हिसाब से, इन कंपोज़ेबल की कम से कम ऊंचाई सेट की जा सकती है
वर्शन 1.4.0-alpha01
24 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.4.0-alpha01 और androidx.compose.foundation:foundation-layout:1.4.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- हावभाव पहचानने वाले डिटेक्टर के लिए,
awaitEachGesture()नाम का एक नया तरीका जोड़ा गया. यहforEachGesture()की तरह काम करता है. हालांकि, जेस्चर पर लूप पूरी तरह सेAwaitPointerEventScopeके अंदर काम करता है, ताकि इवेंट को दोहराने के दौरान कोई इवेंट न छूटे. forEachGesture()के इस्तेमाल पर रोक लगा दी गई है. अबawaitEachGesture()का इस्तेमाल किया जाता है. ऐसा इसलिए किया गया है, क्योंकि में जेस्चर के बीच इवेंट खो जाते हैं. (Iffc3f, b/251260206)- ऐनिमेशन की प्रोग्रेस का पता लगाने और ऐनिमेशन पूरा होने के बाद IME कहां होगा, यह जानने के लिए
WindowInsets.imeAnimationSource औरWindowInsets.imeAnimationTargetको जोड़ा गया है. (I356f1, b/217770337)
वर्शन 1.3
वर्शन 1.3.1
9 नवंबर, 2022
androidx.compose.foundation:foundation:1.3.1 और androidx.compose.foundation:foundation-layout:1.3.1 रिलीज़ हो गए हैं. वर्शन 1.3.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BeyondBoundsLayoutमें परफ़ॉर्मेंस से जुड़ी समस्या ठीक की गई (aosp/2255266)ContentInViewModifierलेआउट के कोऑर्डिनेट तब तक नहीं पढ़ेगा, जब तक इसे अटैच नहीं किया जाता (aosp/2241316)
वर्शन 1.3.0
24 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.3.0 और androidx.compose.foundation:foundation-layout:1.3.0 रिलीज़ हो गए हैं. वर्शन 1.3.0 में ये बदलाव शामिल हैं.
1.2.0 के बाद हुए अहम बदलाव
LazyVerticalStaggeredGridऔरLazyHorizontalStaggeredGridके एक्सपेरिमेंटल वर्शन लॉन्च किए गए.SnapFlingBehavior,rememberSnapFlingBehavior, और इनसे जुड़े अन्य एपीआई को एक्सपेरिमेंट के तौर पर जोड़ा गया था.Modifier.clickable,Modifier.toggleable, औरModifier.selectableपर अब रिपल इफ़ेक्ट दिखता है. ऐसा तब होता है, जब रिमोट कंट्रोल पर मौजूद कीबोर्ड या डी-पैड से इन पर क्लिक किया जाता है.
वर्शन 1.3.0-rc01
5 अक्टूबर, 2022
androidx.compose.foundation:foundation:1.3.0-rc01 और androidx.compose.foundation:foundation-layout:1.3.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
lowVelocityAnimationSpecको जोड़ा गया है. इसका इस्तेमाल, अप्रोच स्टेप तब करता है, जब फ़्लिंग की वेलोसिटी कम होने के लिए काफ़ी नहीं होती. (Iaeb27)- टेक्स्ट में अपने-आप हाइफ़न लगाने की सुविधा के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध नया API Hyphens जोड़ा गया है (Iaa869)
वर्शन 1.3.0-beta03
21 सितंबर, 2022
androidx.compose.foundation:foundation:1.3.0-beta03 और androidx.compose.foundation:foundation-layout:1.3.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट में लाइन तोड़ने की सुविधा को पसंद के मुताबिक बनाने के विकल्प जोड़े गए. (I86907)
BringIntoViewResponderअब किसी अनुरोध को प्रोसेस करते समय, उसकी सबसे नई सीमाएं पा सकते हैं. (If86a5, b/241591211)- एक्सपेरिमेंट के तौर पर उपलब्ध
Staggered Grid(I10b82) में, आइटम के बीच की दूरी तय करने की सुविधा जोड़ी गई - एक्सपेरिमेंट के तौर पर उपलब्ध
Staggered Grid(I342ea) में कॉन्टेंट पैडिंग की सुविधा जोड़ी गई - कम से कम चौड़ाई की पाबंदियों को लागू करने के लिए,
TextMeasurer.measureतरीके मेंsize:IntSizeआर्ग्युमेंट कोconstraints: Constraintsसे बदल दिया गया है. (I37530, b/242707525) windowInsetsPaddingके बाहर इस्तेमाल करने के लिए,Modifier.withConsumedWindowInsets()कोWindowInsetsके तौर पर जोड़ा गया है.MutableWindowInsetsको जोड़ा गया है, ताकि बिना दोबारा कंपोज़ किएWindowInsetsको आसानी से बदला जा सके. (I7fd28, b/237019262, b/243119659)
वर्शन 1.3.0-beta02
7 सितंबर, 2022
androidx.compose.foundation:foundation:1.3.0-beta02 और androidx.compose.foundation:foundation-layout:1.3.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
StaggeredGridके एक्सपेरिमेंटल वर्शन का शुरुआती वर्शन (Ia48be)FocusDirection.InऔरFocusDirection.Outका नाम बदलकरFocusDirection.EnterऔरFocusDirection.Exitकिया गया (Ia4262, b/183746982)rememberSnapFlingBehaviorओवरलोड की सुविधा जोड़ी गई है. इससेLazyListsमें स्नैपिंग की सुविधा को तुरंत चालू किया जा सकता है. (Ifb48a)snapFlingBehaviorफ़ैक्ट्री को कंक्रीटSnapFlingBehaviorक्लास से बदल दिया गया है. एपीआई का इस्तेमाल करने वाले लोगों के लिए, Dp<->Px कन्वर्ज़न को आसान बनाने के लिए, Density में स्कोप किए गएSnapLayoutInfoProviderतरीके. (I54a11)LazyLayoutMeasureScope.measureको अपडेट किया गया है, ताकि प्लेस किए जा सकने वाले आइटम की सूची दिखाई जा सके. साथ ही, दिखाई गई वैल्यू में बदलाव नहीं किया जा सकता. (I48b7c)SnapLayoutInfoProviderको पेश किया गया है. यहLazyListStateलेता है, ताकिSnapLayoutInfoProviderका एक इंस्टेंस बनाया जा सके. इसका इस्तेमाल,LazyListsके लिए स्नैपFlingBehaviorको चालू करने के लिए किया जा सकता है. (I2dd10)
गड़बड़ियां ठीक की गईं
AwaitPointerEventScope#awaitLongPressOrCancellationको फिर से फ़ैक्टर करता है, ताकि यह अन्य await फ़ंक्शन (I646e6) से मेल खा सके
वर्शन 1.3.0-beta01
24 अगस्त, 2022
androidx.compose.foundation:foundation:1.3.0-beta01 और androidx.compose.foundation:foundation-layout:1.3.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.3.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
OverscrollEffectसेpointerPositionको हटाया गया - ऐसे इफ़ेक्ट जो पॉइंटर की पोज़िशन के हिसाब से काम करते हैं वे अबeffectModifierमेंModifier.pointerInput { }का इस्तेमाल करके, पॉइंटर की मौजूदा पोज़िशन की जानकारी पा सकते हैं. (I9f606, b/241239306)- जटिल जेस्चर का पता लगाने के लिए,
AwaitPointerEventScope#awaitLongPressOrCancellationको अतिरिक्त बिल्डिंग ब्लॉक के तौर पर दिखाया गया है (I04374, b/181577176) - लेज़ी लिस्ट में स्नैपिंग की सुविधा चालू करने के लिए,
lazyListSnapLayoutInfoProviderको पेश किया गया. (I3ecdf) SnapFlingBehaviorको पेश किया गया है. यह फ़्लिंग करने का एक ऐसा तरीका है जिससे सूची को स्नैप किया जा सकता है. स्नैपिंग लेआउट के बारे में जानकारी के साथSnapLayoutInfoProviderका एक उदाहरण दें. (Ie754c)
वर्शन 1.3.0-alpha03
10 अगस्त, 2022
androidx.compose.foundation:foundation:1.3.0-alpha03 और androidx.compose.foundation:foundation-layout:1.3.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब रिसॉर्स फ़ॉन्ट, फ़ॉन्ट वेरिएशन सेटिंग (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)
- Velocity Tracker में
InputEventChangeइवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि सभी मामलों में वेलोसिटी का हिसाब सही तरीके से लगाया गया है. भले ही, टारगेट एलिमेंट मूव करता हो (Icea9d, b/216582726, b/223440806, b/227709803) - जब स्क्रोल किए जा सकने वाले किसी आइटम में फ़ोकस किया गया चाइल्ड आइटम होता है, तो अब यह सही तरीके से स्क्रोल होगा. इससे फ़ोकस किए गए चाइल्ड आइटम का साइज़ कम होने पर भी, वह दिखता रहेगा. ऐसा तब भी होगा, जब साइज़ में बदलाव को ऐनिमेशन के तौर पर दिखाया गया हो. (I80867, b/230756508, b/220119990)
- उस क्रैश की समस्या को ठीक किया गया है जिसमें सिलेक्शन चालू होने पर,
TextFieldको मिटा दिया जाता था और फिर से भर दिया जाता था. (I1235b, b/208655565, b/214253689)
वर्शन 1.3.0-alpha01
29 जून, 2022
androidx.compose.foundation:foundation:1.3.0-alpha01 और androidx.compose.foundation:foundation-layout:1.3.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
UrlAnnotationएनोटेशन टाइप और उससे जुड़े तरीकों को पेश किया गया है, ताकिAnnotatedStringमेंTalkBackलिंक को इस्तेमाल किया जा सके. (I1c754, b/231495122)
गड़बड़ियां ठीक की गईं
BasicTextFieldcursorBrushको अब कर्सर टाइमर को रीस्टार्ट किए बिना ऐनिमेट किया जा सकता है. (I812e6, b/236383522)
वर्शन 1.2
वर्शन 1.2.1
10 अगस्त, 2022
androidx.compose.foundation:foundation:1.2.1 और androidx.compose.foundation:foundation-layout:1.2.1 रिलीज़ हो गए हैं. वर्शन 1.2.1 में ये बदलाव शामिल हैं.
वर्शन 1.2.0
27 जुलाई, 2022
androidx.compose.foundation:foundation:1.2.0 और androidx.compose.foundation:foundation-layout:1.2.0 रिलीज़ हो गए हैं. वर्शन 1.2.0 में ये बदलाव शामिल हैं.
1.1.0 के बाद हुए अहम बदलाव
LazyVerticalGridऔरLazyHorizontalGridअब स्थिर हो गए हैं.- अब लेज़ी लिस्ट और ग्रिड में मौजूद आइटम के लिए, कॉन्टेंट टाइप तय किया जा सकता है. इससे कॉम्पोनेंट, एलिमेंट का ज़्यादा असरदार तरीके से फिर से इस्तेमाल कर पाएंगे.
- लेज़ी लिस्ट और ग्रिड में अब
userScrollEnabledपैरामीटर है. इसकी मदद से, उपयोगकर्ता के जेस्चर के ज़रिए स्क्रोल करने की सुविधा बंद की जा सकती है. LazyLayoutनाम का एक नया एक्सपेरिमेंटल एपीआई जोड़ा गया. It It is the API we use internally to power Lazy lists and grids.OverscrollEffectइस एपीआई को एक्सपेरिमेंट के तौर पर लॉन्च किया गया है. कस्टम स्क्रोल किए जा सकने वाले कंटेनर में, कस्टम ओवरस्क्रोल इफ़ेक्ट तय किए जा सकते हैं. साथ ही, स्टैंडर्ड प्लैटफ़ॉर्म इफ़ेक्ट भी जोड़ा जा सकता है.- नेस्टेड स्क्रोलिंग इंटरऑपरेबिलिटी एपीआई पेश किए गए हैं. इनकी मदद से, व्यू और कंपोज़ स्क्रोलिंग ऐक्टर के बीच इंटरऑपरेबिलिटी की अनुमति दी जा सकती है.
- स्क्रोल करने वाले सभी कंटेनर में, माउस और ट्रैकपैड से स्क्रोल करने की सुविधा जोड़ी गई है.
वर्शन 1.2.0-rc03
29 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc03 और androidx.compose.foundation:foundation-layout:1.2.0-rc03 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc03 में ये बदलाव शामिल हैं.
- 1.2.0-rc02 के बाद से कोई बदलाव नहीं किया गया है.
वर्शन 1.2.0-rc02
22 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc02 और androidx.compose.foundation:foundation-layout:1.2.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.2.0-rc01
15 जून, 2022
androidx.compose.foundation:foundation:1.2.0-rc01 और androidx.compose.foundation:foundation-layout:1.2.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम ओवरस्क्रोल इफ़ेक्ट की अनुमति देने के लिए, एक एक्सपेरिमेंटल
OverscrollEffectपेश किया गया है. साथ ही,Modifier.scrollableओवरलोड भी पेश किए गए हैं जो इसे स्वीकार करते हैं. - एक्सपेरिमेंट के तौर पर उपलब्ध
LocalOverScrollConfigurationकोfoundation.gestureसे फ़ाउंडेशन पैकेज में ले जाया गया है. साथ ही, इसका नाम बदलकरLocalOverscrollConfigurationकर दिया गया है (If19fb, b/204650733) - Compose लाइब्रेरी में इंटरफ़ेस अब jdk8 के डिफ़ॉल्ट इंटरफ़ेस के तरीकों का इस्तेमाल करके बनाए जाते हैं (I5bcf1)
- एक एक्सपेरिमेंटल एपीआई
checkScrollableContainerConstraints()लॉन्च किया गया है. इससे यह जांच की जा सकती है कि हमने स्क्रोल किए जा सकने वाले कंटेनर को नेस्ट नहीं किया है.LazyLayoutके ज़रिए स्क्रोल किए जा सकने वाले लेज़ी लेआउट बनाते समय, इसका इस्तेमाल किया जा सकता है. (Id6fab, b/233352497) androidx.compose.foundation.lazyपैकेज से, बंद हो चुकेLazyVerticalGridको हटा दिया गया है. नया स्टेबल एपीआई,androidx.compose.foundation.lazy.grid(I73c76, b/225192009) में मौजूद है
वर्शन 1.2.0-beta03
1 जून, 2022
androidx.compose.foundation:foundation:1.2.0-beta03 और androidx.compose.foundation:foundation-layout:1.2.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.2.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर नई
IntervalListऔरMutableIntervalListजोड़ी गई हैं. इसकी मदद से, वैल्यू की किसी सूची को कई इंटरवल के ज़रिए दिखाया जा सकता है. यह तब काम आएगा, जब आपकोLazyColumnमें इस्तेमाल किए गए डीएसएल की तरह अपना डीएसएल तय करना हो. इसमें, सूची के आइटम को कई आइटम/आइटम कॉल के ज़रिए तय किया जा सकता है. (I2d05e, b/228580728)
गड़बड़ियां ठीक की गईं
WindowInsets.imeके दस्तावेज़ में यह जानकारी जोड़ी गई है कि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एपीआई में, अब इंडेक्स के हिसाब से कंपोज़ेबल लैम्डा फ़ंक्शन देने वाली फ़ैक्ट्री के बजाय, इंडेक्स स्वीकार करने वाला एक आसान कंपोज़ेबल फ़ंक्शन Item उपलब्ध है. (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()मॉडिफ़ायर जोड़ा गया है, ताकि डेवलपर स्क्रोल करके आईएमई को कंट्रोल कर सकें. (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)- आईएमई में दशमलव सेपरेटर को शामिल करने के लिए,
Keyboard.Numberके विकल्प के तौर परKeyboardType.Decimalको जोड़ा गया है. (Iec4c8, b/209835363) - फ़ॉन्ट फ़ॉलबैक चेन के दौरान, सिस्टम में इंस्टॉल किए गए फ़ॉन्ट को खोजने के लिए, नया फ़ॉन्ट डिस्क्रिप्टर Font(DeviceFontFamilyName) जोड़ें. (I30468, b/219754572)
PointerEventType.ScrollऔरPointerEvent.scrollDeltaअब स्टेबल एपीआई हैं (I574c5, b/225669674)TextStyle/ParagraphStyle. includeFontPaddingमेंincludeFontPaddingके लिए, कुछ समय के लिए काम करने की सुविधा वाला कॉन्फ़िगरेशन जोड़ा गया है. इसेTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))के ज़रिए बदला जा सकता है. यह माइग्रेशन को चालू करने के लिए, कॉन्फ़िगरेशन का एक अस्थायी विकल्प है. इसे हटा दिया जाएगा. (If47be, b/171394808)FontFamily.Resolverको अपडेट किया गया है, ताकि सिस्टम-वाइड टेक्स्ट को बोल्ड करने की सुविधा की सुलभता सेटिंग (I6c1e7) को इंटिग्रेट किया जा सकेComposeViewकीconsumeWindowInsetsएक्सटेंशन प्रॉपर्टी की मदद से डेवलपर, Android WindowInsets के इस्तेमाल को बंद कर सकते हैं. इससे, क्रम में मौजूद हरComposeViewsअलग-अलगWindowInsetsलागू कर सकता है. इससे एक-दूसरे के काम में कोई रुकावट नहीं आती. (I0ef08, b/220943142)
वर्शन 1.2.0-alpha06
23 मार्च, 2022
androidx.compose.foundation:foundation:1.2.0-alpha06 और androidx.compose.foundation:foundation-layout:1.2.0-alpha06 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने का अनुरोध करने के लिए,
RequestFocusसिमैंटिक्स ऐक्शन जोड़ा गया. (I17b71) FocusOrderको अबFocusPropertiesमें मर्ज कर दिया गया है. साथ ही,focusProperties()में अबfocusOrder()की सभी सुविधाएं उपलब्ध हैं.FocusOrderऔरfocusOrder()के इस्तेमाल पर रोक लगा दी गई है.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अब इस तरह के पैरामीटर स्वीकार करता है. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लॉजिक को फिर से इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ फिर से इस्तेमाल किया जा सकता है. (I7b355, b/215372836) LazyListLayoutInfoऔरLazyGridLayoutInfoमें अब नई प्रॉपर्टी हैं:viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410)- अब LazyColumn/LazyRow के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है. LazyListScope पर मौजूद item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लॉजिक को फिर से इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ फिर से इस्तेमाल किया जा सकता है. (I26506)
SubcomposeLayoutStateकंस्ट्रक्टर मेंmaxSlotsToRetainForReuseस्वीकार करने की सुविधा अब काम नहीं करती. इसके बजाय, एक नया कंस्ट्रक्टर है जोSubcomposeSlotReusePolicyस्वीकार करता है. यह एक नया इंटरफ़ेस है, जो यह तय करने के लिए ज़्यादा कंट्रोल देता है कि किन स्लॉट को आने वाले समय में फिर से इस्तेमाल किया जाना चाहिए. (I52c4d)- यह WindowInsets के लिए मॉडिफ़ायर जोड़ता है. ये मॉडिफ़ायर, पैडिंग और साइज़िंग, दोनों के लिए होते हैं. इससे कुछ कॉन्टेंट को इंसर्ट एरिया में बढ़ाया जा सकता है. साथ ही, मुख्य कॉन्टेंट को इंसर्ट एरिया से बाहर रखा जा सकता है. उदाहरण के लिए, windowInsetsPadding का इस्तेमाल करके, कॉन्टेंट वाले हिस्से में पैडिंग जोड़ी जा सकती है. इससे उन हिस्सों से बचा जा सकता है जो पूरी तरह या कुछ हद तक ढके हो सकते हैं. (Id0395, b/213942085)
गड़बड़ियां ठीक की गईं
- जब टेक्स्ट फ़ील्ड पर फ़ोकस किया जाता है और कीबोर्ड दिखता है, तब उन्हें कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब सॉफ़्ट इनपुट मोड
ADJUST_PANपर सेट हो. (I8eaeb, b/190539358, b/192043120) - डेस्कटॉप,
FontFamily.Resolverके लिए कंपोज़िशन लोकल का इस्तेमाल करता है- डेस्कटॉप पर
FontLoaderका इस्तेमाल अब नहीं किया जा सकता - डेस्कटॉप पर नई
createFontFamilyResolverफ़ैक्ट्री (I6bbbb, b/174162090)
- डेस्कटॉप पर
- टेक्स्ट फ़ील्ड के बीच फ़ोकस बदलने पर, अब सॉफ़्ट कीबोर्ड इनपुट टाइप फ़्लिकर नहीं होता. (I1bf50, b/187746439)
- कर्सर हैंडल दिखने पर, टेक्स्ट फ़ील्ड में अब बैक बटन को दोबारा दबाने की ज़रूरत नहीं होती. (Ideb4b, b/205726883)
- टेक्स्ट चुनने की सुविधा के लिए, Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)
वर्शन 1.2.0-alpha02
26 जनवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha02 और androidx.compose.foundation:foundation-layout:1.2.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- ऐसे तरीकों में
NonRestartableComposableजोड़ा गया है जो जटिल लॉजिक के बिना, मौजूदा तरीकों के ओवरलोड हैं. इससे, कॉल किए गए इनर फ़ंक्शन में दोहराए गए सभी पैरामीटर के लिए, कंपाइलर के जनरेट किए गए मेमोइज़ेशन चेक (बराबर) कम हो जाते हैं. (I90490) - Android के
setSystemGestureExclusionRectsको आसानी से ऐक्सेस करने के लिए,excludeFromSystemGestureमॉडिफ़ायर जोड़े गए (I46f07)
गड़बड़ियां ठीक की गईं
- टेक्स्ट चुनने की सुविधा के लिए, Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScroll, औरModifier.scrollableका इस्तेमाल करने वाले अन्य कंटेनर में अब माउस के पहिए को घुमाकर स्क्रोल करने की सुविधा काम करती है. (I2b5e1, b/198214718)
वर्शन 1.2.0-alpha01
12 जनवरी, 2022
androidx.compose.foundation:foundation:1.2.0-alpha01 और androidx.compose.foundation:foundation-layout:1.2.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- उपयोगकर्ताओं को टच जेस्चर या सुलभता कार्रवाइयों के ज़रिए, उपयोगकर्ता की ओर से शुरू किए गए स्क्रोल को कुछ समय के लिए या हमेशा के लिए बंद करने की अनुमति देने के लिए,
LazyColumn,LazyRow, औरLazyVerticalGridमें नया पैरामीटरuserScrollEnabledजोड़ा गया. हालांकि, प्रोग्राम के हिसाब से स्क्रोल करने की सुविधा अब भी उपलब्ध रहेगी. इसके लिए, आपको स्टेट पर मौजूद तरीकों का इस्तेमाल करना होगा. (I7eae9, b/201150093) - स्क्रीन पर मौजूद कॉन्टेंट को बड़ा करके दिखाने की सुविधा के मॉडिफ़ायर में
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)SemanticsNodeमेंtouchBoundsInRootजोड़ा गया है. इसमें टच टारगेट का कम से कम साइज़ शामिल है, ताकि डेवलपर यह पक्का कर सकें कि टच टारगेट, सुलभता से जुड़े कम से कम मानकों को पूरा करते हों. (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 Release का आधिकारिक ब्लॉग देखें!
आम समस्याएं
अगर Android Studio Bumblebee Canary 4 या AGP
7.1.0-alpha04/7.1.0-alpha05का इस्तेमाल किया जा रहा है, तो आपको यह क्रैश दिख सकता है:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"इस समस्या को ठीक करने के लिए, अपनी
build.gradleफ़ाइल में minSdkVersion को कुछ समय के लिए 24 या उससे ज़्यादा पर सेट करें. इस समस्या को Android Studio Bumblebee और AGP7.1के अगले वर्शन में ठीक कर दिया जाएगा. (b/194289155)
वर्शन 1.0.0-rc02
14 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0-rc02 और androidx.compose.foundation:foundation-layout:1.0.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.
- जेनरिक शेप के लिए, बॉर्डर रेंडरिंग को अपडेट किया गया है. इससे तय डाइमेंशन के साथ तय किए गए पाथ से जुड़ी समस्याओं को हल किया जा सकेगा. (aosp/1748871, b/191817116)
वर्शन 1.0.0-rc01
1 जुलाई, 2021
androidx.compose.foundation:foundation:1.0.0-rc01 और androidx.compose.foundation:foundation-layout:1.0.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Canvas में अब accessibility के लिए, contentDescription पैरामीटर का इस्तेमाल किया जा सकता है. (Ib547c)
गड़बड़ियां ठीक की गईं
- 'बंद है' बटन, कार्ड, चेकबॉक्स, और
Modifier.clickable(enabled=false)पर क्लिक करने से, माता-पिता को क्लिक नहीं दिखेंगे. (Ic2c3b, b/183908811)
वर्शन 1.0.0-beta09
16 जून, 2021
androidx.compose.foundation:foundation:1.0.0-beta09 और androidx.compose.foundation:foundation-layout:1.0.0-beta09 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ManualFrameClockको हटाया गया. अगर आपको ऐनिमेशन कंट्रोल करने हैं, तोcomposeTestRule.mainClockका इस्तेमाल करें. (I3c3e8, b/189951065)- enum Role और LiveRegionMode को प्राइवेट कंस्ट्रक्टर (Id1890) के साथ इनलाइन क्लास में बदलें
- KeyboardCapitalization को इनलाइन क्लास में बदल दिया जाता है. (Id5a1c)
- TextOverflow को इनलाइन क्लास में बदल दिया गया है. (I433af)
गड़बड़ियां ठीक की गईं
- अब LazyColumn/Row आइटम के लिए यूनीक कुंजियां तय करने पर, स्क्रोल की पोज़िशन को कुंजी के आधार पर बनाए रखा जाएगा. इसका मतलब है कि अगर मौजूदा दिखने वाले आइटम से पहले आइटम जोड़े/हटाए जाते हैं, तो दी गई कुंजी वाला आइटम, दिखने वाला पहला आइटम बना रहेगा. (Id263f, b/184257857)
- फ़िलहाल, मुख्य कॉन्स्टेंट @ExperimentalComposeUiApi हैं. कोड का इस्तेमाल करने वाला व्यक्ति, स्टेबलाइज़ेशन से पहले प्राइवेट कॉन्स्टेंट का एलान कर सकता है. (Ia5d48)
- AndroidComposeTestRule में IdlingStrategy जोड़ा गया है. इसका इस्तेमाल टेस्टिंग फ़्रेमवर्क कर सकते हैं, ताकि इंतज़ार करने या शांत होने के लिए कोई दूसरा तरीका इंस्टॉल किया जा सके. अपनी रणनीति को इंस्टॉल करने के लिए, टेस्ट शुरू होने से पहले
AndroidComposeTestRule.setIdlingStrategyFactory()का इस्तेमाल करें. (I608fa)
जोड़े गए प्रोफ़ाइल के नियम
इस रिलीज़ में, कंपोज़ मॉड्यूल में प्रोफ़ाइल के नियम जोड़े गए हैं. ये नियम इन मॉड्यूल पर लागू होंगे (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
प्रोफ़ाइल के नियम क्या हैं?
किसी लाइब्रेरी के लिए प्रोफ़ाइल के नियम,
src/mainया उससे मिलती-जुलती डायरेक्ट्री में मौजूद टेक्स्ट फ़ाइलbaseline-prof.txtमें तय किए जाते हैं. इस फ़ाइल में हर लाइन में एक नियम दिया जाता है. इस मामले में, नियम एक ऐसा पैटर्न होता है जो लाइब्रेरी में मौजूद तरीकों या क्लास से मेल खाता है. इन नियमों का सिंटैक्स, एआरटी प्रोफ़ाइल फ़ॉर्मैट का सुपरसेट है. इसे आसानी से पढ़ा जा सकता है. इसका इस्तेमालadb shell profman --dump-classes-and-methods ...का इस्तेमाल करते समय किया जाता है. ये नियम, तरीकों या क्लास को टारगेट करने के लिए दो में से किसी एक फ़ॉर्म में होते हैं.किसी तरीके के लिए बनाए गए नियम का पैटर्न इस तरह होगा:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>क्लास के लिए बनाए गए नियम का पैटर्न इस तरह होगा:
<CLASS_DESCRIPTOR>यहां
<FLAGS>,H,S, औरPमें से एक या उससे ज़्यादा वर्ण हैं. इनसे यह पता चलता है कि इस तरीके को "हॉट", "स्टार्टअप" या "पोस्ट स्टार्टअप" के तौर पर फ़्लैग किया जाना चाहिए या नहीं.<CLASS_DESCRIPTOR>उस क्लास का डिस्क्रिप्टर है जिससे टारगेट किया गया तरीका जुड़ा है. उदाहरण के लिए, क्लासandroidx.compose.runtime.SlotTableका डिस्क्रिप्टरLandroidx/compose/runtime/SlotTable;होगा.<METHOD_SIGNATURE>, मेथड का सिग्नेचर होता है. इसमें मेथड का नाम, पैरामीटर टाइप, और रिटर्न टाइप शामिल होते हैं. उदाहरण के लिए,LayoutNodeपर मौजूदfun isPlaced(): Booleanतरीके का सिग्नेचरisPlaced()Zहै.इन पैटर्न में वाइल्डकार्ड (
**,*, और?) हो सकते हैं, ताकि एक नियम में कई तरीके या क्लास शामिल हों.
नियमों से क्या होता है?
जिस तरीके में
Hफ़्लैग होता है उससे पता चलता है कि यह "हॉट" तरीका है. इसे समय से पहले कंपाइल किया जाना चाहिए.Sफ़्लैग वाली किसी भी तरीके से यह पता चलता है कि इसे स्टार्टअप के समय कॉल किया जाता है. इसलिए, इसे पहले से ही कंपाइल कर लेना चाहिए, ताकि स्टार्टअप के समय कंपाइल करने और समझने में लगने वाले समय को बचाया जा सके.जिस तरीके में
Pफ़्लैग होता है उससे पता चलता है कि यह एक ऐसा तरीका है जिसे स्टार्टअप के बाद कॉल किया जाता है.इस फ़ाइल में मौजूद क्लास से पता चलता है कि इसका इस्तेमाल स्टार्टअप के दौरान किया जाता है. इसलिए, क्लास लोडिंग की लागत से बचने के लिए, इसे हीप में पहले से ही असाइन कर दिया जाना चाहिए.
यह कैसे काम करता है?
- लाइब्रेरी इन नियमों को तय कर सकती हैं. ये नियम, एएआर आर्टफ़ैक्ट में पैकेज किए जाएंगे. जब इन आर्टफ़ैक्ट को शामिल करके कोई ऐप्लिकेशन बनाया जाता है, तो इन नियमों को एक साथ मर्ज कर दिया जाता है. इसके बाद, मर्ज किए गए नियमों का इस्तेमाल करके, ऐप्लिकेशन के लिए एक कॉम्पैक्ट बाइनरी एआरटी प्रोफ़ाइल बनाई जाती है. जब ऐप्लिकेशन को डिवाइसों पर इंस्टॉल किया जाता है, तब एआरटी इस प्रोफ़ाइल का इस्तेमाल कर सकता है. इससे ऐप्लिकेशन के किसी खास सबसेट को पहले से कंपाइल किया जा सकता है, ताकि ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सके. खास तौर पर, पहली बार ऐप्लिकेशन चलाने पर. ध्यान दें कि इससे डीबग किए जा सकने वाले ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.
वर्शन 1.0.0-beta08
2 जून, 2021
androidx.compose.foundation:foundation:1.0.0-beta08 और androidx.compose.foundation:foundation-layout:1.0.0-beta08 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- NestedScrollSource enum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)
- नई enum वैल्यू जोड़े जाने पर, when स्टेटमेंट के साथ पूरी तरह से काम करने से जुड़ी समस्याओं से बचने के लिए, enum के इस्तेमाल को इनलाइन क्लास में बदला गया है. (I2b5eb)
- क्लिक किए जा सकने वाले / टॉगल किए जा सकने वाले एलिमेंट में टैप टाइम आउट जोड़ता है. इससे स्क्रोल / खींचने के दौरान रिपल इफ़ेक्ट नहीं दिखता (Ia2704, b/168524931)
- ContentDescription और Text सिमैंटिक्स प्रॉपर्टी अब सिंगल वैल्यू नहीं, बल्कि सूचियां हैं. इससे उन्हें जोड़ने के बजाय, मर्ज किया जा सकता है. इन बदलावों का इस्तेमाल करने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
Modifier.focusModifier()का अब इस्तेमाल नहीं किया जा सकता. इसेModifier.focusTarget()से बदल दिया गया है (I6c860)- KeyboardType enum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)
FocusStateenum कोFocusStateइंटरफ़ेस से बदला गया (Iccc1a, b/187055290)- ImeAction enum को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
AnnotatedString.withAnnotationफ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)- TextUnitType के साथ TextUnit कंस्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.
- PaddingValues अब
@Immutableके बजाय@Stableहै (I88c50)
गड़बड़ियां ठीक की गईं
- टेक्स्ट वाली जगह पर दबाकर रखने पर ऐप्लिकेशन क्रैश होने की समस्या ठीक की गई. (I33ab5, b/187437299)
- SelectAll के बाद टूलबार दिखाएं (I495d9, b/185919613)
- स्क्रोल किए जा सकने वाले कंटेनर में, क्रॉस ऐक्सिस पर मौजूद आइटम के कटने की समस्या को ठीक किया गया है. अगर आपके पास 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 में स्पेस वाले आइटम को व्यवस्थित करने की सुविधा का इस्तेमाल करने पर, बच्चों को लेआउट करने की सुविधा पर असर डालने वाली रिग्रेशन की समस्या को ठीक कर दिया गया है. (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)
- dp दावे हटाए गए (I798d2)
- सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक को हटा दिया गया है. इसकी जगह जल्द ही एक नया एपीआई ले लेगा. (Iae869, b/168778053)
- MeasureBlocks का नाम बदलकर MeasurePolicy कर दिया गया. यह एक मज़ेदार इंटरफ़ेस बन गया. MeasurePolicy का इस्तेमाल करने के लिए, लेआउट एपीआई को अपडेट किया गया है / आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
InteractionStateको[Mutable]InteractionSourceसे बदल दिया गया है- इंटरफ़ेस, इंटरैक्शन इवेंट को भेजने / इकट्ठा करने के लिए ज़िम्मेदार होते हैं.
ButtonऔरModifier.clickable()जैसे कॉम्पोनेंट कोinteractionState = remember { InteractionState() }पास करने के बजाय,interactionSource = remember { MutableInteractionSource() }का इस्तेमाल करें.Interaction.Pressed in interactionStateके बजाय, आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए. जैसे, InteractionSource.collectIsPressedAsState().- जटिल इस्तेमाल के उदाहरणों के लिए, InteractionSource.interactions का इस्तेमाल करके इंटरैक्शन की स्ट्रीम को देखा जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource का दस्तावेज़ और सैंपल देखें.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- LayoutCoordinates के पुराने हो चुके तरीकों को हटाया गया. positionInParent और boundsInParent के लिए प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
- CoreTextField जैसे लो लेवल के टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
- 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() में स्क्रोल की पोज़िशन को अब पूर्णांकों से दिखाया जाता है (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 को अब याद रखने वाली कुंजियों की ज़रूरत होती है. इससे यह पता चलता है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोराटीन को कब रीस्टार्ट करना चाहिए. (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)Ambient -> CompositionLocal का नाम बदलने के हिसाब से, Ambients का नाम बदला गया. पहले, ऐम्बिएंट को AmbientFoo कहा जाता था. अब CompositionLocals को LocalFoo कहा जाता है. (I2d55d)
चुने गए हिस्से को फ़ाउंडेशन में ले जाया गया. (I7892b)
जिस तरह हमने पहले
state { 0 }कंपोज़ेबल को हटाया था और अबremember { mutableStateOf(0) }के इस्तेमाल को बढ़ावा दे रहे हैं, उसी तरह हमsavedInstanceState { 0 }कंपोज़ेबल को हटाने जा रहे हैं. आपको इसके बजायrememberSaveable { mutableStateOf(0) }का इस्तेमाल करना चाहिए. अगर MutableState में इस्तेमाल किया गया टाइप, बंडल में सेव किया जा सकता है, तो यह अपने-आप सेव और रीस्टोर हो जाएगा. अगर आपने पहले कस्टम सेवर ऑब्जेक्ट पास किया था, तो अब आपको rememberSaveable का नया ओवरलोड इस्तेमाल करना होगा. इसमेंstateSaverपैरामीटर होता है. इसका इस्तेमाल कुछ इस तरह किया जाएगा:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004)ऐक्सेसिबिलिटी के लिए पासवर्ड के सिमैंटिक जोड़े गए (I231ce)
सुलभता के लिए, लोड हो रहे प्रोग्रेस बार को मार्क करने के लिए ProgressBarRangeInfo.Indeterminate जोड़ा गया (I6fe05)
ऐनिमेशन में चलने का समय अब नैनोसेकंड में बदल दिया गया है (If776a)
@ComposableContract को बंद कर दिया गया है. इसके बजाय, तीन अन्य एनोटेशन का इस्तेमाल किया जा सकता है.
@ComposableContract(restartable = false)को@NonRestartableComposableबनाया गया है@ComposableContract(readonly = true)को@ReadOnlyComposableबनाया गया है@ComposableContract(preventCapture = true)को@DisallowComposableCallsबनाया गया है@ComposableContract(tracked = true)को हटा दिया गया है. (I60a9d)emptyContent()और(@Composable () -> Unit).orEmpty()यूटिलिटी का इस्तेमाल अब नहीं किया जा सकता, क्योंकि अब इनसे परफ़ॉर्मेंस पर कोई फ़र्क़ नहीं पड़ता या इनकी कोई वैल्यू नहीं है (I0484d)अब रीकंपोज़र बंद किए जा सकते हैं. बंद किए गए कंपोज़र, कंपोज़िशन चाइल्ड को-रूटीन के पूरा होने तक फिर से कंपोज़ करना जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)
LazyVerticalGrid से जुड़े एपीआई को एक्सपेरिमेंटल के तौर पर मार्क किया गया है (Ia53e3, b/178519862)
rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)
RestorableStateHolder का नाम बदलकर SaveableStateHolder कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. इनर मेथड RestorableStateProvider का नाम बदलकर SaveableStateProvider कर दिया गया है. सामान्य टाइप को हटा दिया गया है, ताकि आप सिर्फ़ 'कोई भी' को कुंजी के तौर पर पास कर सकें. अब एक्सपेरिमेंट के तौर पर एनोटेशन की सुविधा उपलब्ध नहीं है. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), और autoSaver को androidx.compose.runtime.savedinstancestate से androidx.compose.runtime.saveable में ले जाया गया है (I77fe6)
आर्टफ़ैक्ट androidx:compose:runtime:runtime-saved-instance-state का नाम बदलकर androidx:compose:runtime:runtime-saveable कर दिया गया है (I6dcac)
ui पैकेज में मौजूद, लंबे समय से काम न करने वाले कई एपीआई मिटा दिए गए हैं. (I2f2dc)
compose:runtime-dispatch आर्टफ़ैक्ट अब काम नहीं करता. MonotonicFrameClock को अब compose:runtime में देखा जा सकता है. साथ ही, AndroidUiDispatcher को compose:ui में देखा जा सकता है. (Ib5c36)
RounderCornerShape, CutCornerShape, और CornerBasedShape पर मौजूद पैरामीटर के नाम बदलकर, बाएं/दाएं से शुरू/खत्म कर दिए गए हैं. ऐसा इसलिए किया गया है, ताकि आरटीएल दिशा में शेप की ऑटो मिररिंग की सुविधा काम कर सके. 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 अब डिफ़ॉल्ट रूप से, विंडो के स्कोप वाले Recomposer को लेज़ी तरीके से बनाता है. ये Recomposer, विंडो के लिए ViewTreeLifecycleOwner से मैनेज होते हैं. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और 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)
smoothScrollBy को निलंबित करने की सुविधा बंद कर दी गई है हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने के लिए, निलंबित करने की सुविधा वाले फ़ंक्शन का इस्तेमाल करें. साथ ही, स्क्रोलिंग खत्म होने का इंतज़ार करें. इस ट्रांज़िशन के तहत, हम इन फ़ंक्शन के ऐसे वर्शन को बंद कर रहे हैं जिन्हें निलंबित नहीं किया जा सकता. (I12880)
इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा देने वाला पैरामीटर जोड़ा गया है. इस कुकी का इस्तेमाल, सुलभता सेवाओं (I2ac4c) के बारे में जानकारी देने के लिए किया जाता है
BasicTextField को 'decorationBox' नाम का एक नया पैरामीटर मिला है. इसकी मदद से, टेक्स्ट फ़ील्ड में आइकॉन, प्लेसहोल्डर, लेबल वगैरह जोड़े जा सकते हैं. साथ ही, इसके हिट टारगेट एरिया को बढ़ाया जा सकता है. (I16996)
canDrag पैरामीटर को Modifier.draggable (Ic4bec, b/175294473) से हटा दिया गया है
FlingConfig को स्वीकार करने वाले AnimatedFloat.fling को हटा दिया गया है. इसके बजाय, कृपया suspend Animatable.animateDecay का इस्तेमाल करें. (I4659b, b/177457083)
इन क्लास से
data classको हटा दिया गया है:- InlineTextContent
- LocaleList
- (I605c7)
अब क्लिक किए जा सकने वाले, टॉगल किए जा सकने वाले, और चुने जा सकने वाले कॉम्पोनेंट को कंपोज़िशन के बाहर बनाया जा सकता है (I0a130, b/172938345, b/175294473)
ScrollableColumn/Row को अब इस्तेमाल नहीं किया जा सकता. अगर आपको स्क्रोल करने के लिए ज़्यादा कॉन्टेंट दिखाना है, तो LazyColumn के मुकाबले ScrollableColumn का इस्तेमाल करना कम असरदार होता है. ऐसा इसलिए, क्योंकि LazyColumn में सिर्फ़ दिखने वाले एलिमेंट को कंपोज़/मेज़र/ड्रॉ किया जा सकता है. उपयोगकर्ताओं को कम असरदार तरीके से स्क्रोल करने से रोकने के लिए, हमने ScrollableColumn और ScrollableRow को बंद करने का फ़ैसला किया है. इसके बजाय, हम LazyColumn और LazyRow के इस्तेमाल को बढ़ावा देंगे. उपयोगकर्ता अब भी यह तय कर सकते हैं कि उन्हें लेज़ी बिहेवियर की ज़रूरत नहीं है. वे सीधे तौर पर इस तरह से मॉडिफ़ायर का इस्तेमाल कर सकते हैं: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
LazyColumn/LazyRow/LazyVerticalGrid के स्कोप के लिए, नई
items(count: Int)फ़ैक्ट्री मेथड.items(items: List)औरitemsIndexed(items: List)अब एक्सटेंशन फ़ंक्शन हैं. इसलिए, इनका इस्तेमाल करते समय आपको इन्हें मैन्युअल तरीके से इंपोर्ट करना होगा. कलेक्शन के लिए नए एक्सटेंशन ओवरलोड: items(items: Array) और itemsIndexed(Array) (I803fc, b/175562574)बंद की जा चुकी AbsoluteArrangement सुविधा को हटा दिया गया है. (Iffa96, b/177641870)
Box में propagateMinConstraints पैरामीटर जोड़ा गया है. इससे यह तय किया जा सकता है कि आने वाली कम से कम शर्तों को Box के कॉन्टेंट में पास किया जाना चाहिए या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. (I0125b, b/152613457)
गड़बड़ियां ठीक की गईं
- SideEffect और DisposableEffect API के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है (If760e)
- WithConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया है और इसे foundation.layout में ले जाया गया है. (I9420b, b/173387208)
Font/FontFamily/Typeface के लिए फ़ैक्ट्री फ़ंक्शन में बदलाव
- कैपिटल लेटर से शुरू होने वाले फ़ैक्ट्री फ़ंक्शन जोड़े गए
- पहले के फ़ैक्ट्री फ़ंक्शन को बंद कर दिया गया है. इनके पहले अक्षर छोटे होते थे
- नए फ़ैक्ट्री फ़ंक्शन, सबक्लास के बजाय FontFamily दिखाते हैं
- सबक्लास के कंस्ट्रक्टर छिपाए गए हैं, ताकि उन्हें सिर्फ़ फ़ैक्ट्री फ़ंक्शन के ज़रिए बनाया जा सके.
- Font.asFontFamily का नाम बदलकर Font.toFontFamily कर दिया गया है
- (I42aa7)
ComposeContentTestRuleको पेश किया गया है, जोComposeTestRuleको बढ़ाता है औरsetContentको तय करता है.setContentकोComposeTestRuleसे हटा दिया गया है.createEmptyComposeRule()फ़ैक्ट्री मेथड जोड़ा गया है. यहComposeTestRuleदिखाता है और आपके लिए कोई गतिविधि लॉन्च नहीं करता. इस विकल्प का इस्तेमाल तब करें, जब आपको टेस्ट के दौरान अपनी ऐक्टिविटी लॉन्च करनी हो. उदाहरण के लिए,ActivityScenario.launch(I9d782, b/174472899) का इस्तेमाल करनाanimateAsState को अब animateFooAsState कर दिया गया है. यहां Foo, ऐनिमेट किए जा रहे वैरिएबल का टाइप है. जैसे, फ़्लोट, डीपी, ऑफ़सेट वगैरह (Ie7e25)
अरेंजमेंट इंटरफ़ेस के लिए, डेंसिटी अब रिसीवर स्कोप है. (I18aad)
TextFieldValue, AnnotatedString को स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. टेक्स्ट में एक से ज़्यादा स्टाइल में बदलाव करने की सुविधा अभी लागू नहीं की गई है.
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
initialको हटाया गया. (I326d5)
- EditingBuffer कंस्ट्रक्टर पैरामीटर से
invalidate और compositionReference() को अब बंद कर दिया गया है. इनके बजाय, currentRecomposeScope और rememberCompositionReference का इस्तेमाल करें. (I583a8)
AnnotatedString को kotlin.CharSequence से एक्सटेंड करने के लिए बदला गया है. इसलिए, length और subSequence अब इंस्टेंस फ़ंक्शन हैं. साथ ही, एक्सटेंशन फ़ंक्शन हटा दिए गए हैं. (Iaf429)
Duration और Uptime को Long milliseconds से बदल दिया जाएगा. साथ ही, इस चरण में उन क्लास पर पॉइंटर इनपुट की निर्भरता को हटा दिया जाएगा. (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, जिसे तब कॉल किया जाता है, जबrememberको पास किए गए कॉलबैक सेRememberObserverइंस्टेंस वापस आ जाता है, लेकिन कंपोज़िशन की स्थिति में उसे याद नहीं रखा जाता. इसलिए,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)
monotonicallyFrameAnimationClockOf के एक्सपेरिमेंटल तरीके हटा दिए गए (Ib753f, b/170708374)
ग्लोबल कोऑर्डिनेट के तरीकों का इस्तेमाल बंद कर दिया गया है. साथ ही, विंडो पर आधारित कोऑर्डिनेट के नए तरीके बनाए गए हैं. (Iee284)
कृपया ImeAction.NoAction के बजाय ImeAction.None का इस्तेमाल करें
- कृपया ImeAction.Unspecified (Ie1bcc) के बजाय ImeAction.Default का इस्तेमाल करें
FocusRequester.createRefs को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है, क्योंकि इसमें बदलाव हो सकता है. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden का नाम बदलकर invisibleToUser कर दिया गया है. साथ ही, इसे @ExperimentalComposeUiApi के तौर पर मार्क किया गया है. AccessibilityRangeInfo का नाम बदलकर ProgressBarRangeInfo कर दिया गया है. stateDescriptionRange का नाम बदलकर progressBarRangeInfo कर दिया गया है. AccessibilityScrollState का नाम बदलकर ScrollAxisRange कर दिया गया है. horizontalAccessibilityScrollState का नाम बदलकर horizontalScrollAxisRange कर दिया गया है. verticalAccessibilityScrollState का नाम बदलकर verticalScrollAxisRange कर दिया गया है. (Id3148)
VisualTransformation को फ़ंक्शनल इंटरफ़ेस के तौर पर बदला गया (I3bba4)
टेस्टिंग में TestCoroutineDispatcher का इस्तेमाल करें (I532b6)
PointerInputData को हटा दिया गया है और PointerInputChange में बदलाव किया गया है, ताकि इसमें PointerInputData के सभी फ़ील्ड शामिल किए जा सकें. PointerInputEvent और PointerInputEventData को इंटरनल बना दिया गया है, क्योंकि इनका इस्तेमाल किसी भी सार्वजनिक एपीआई में नहीं किया जाता है. (Ifff97, b/175142755)
TextInputService.onStateUpdated का नाम बदलकर updateState कर दिया गया है (Id4853)
डिसप्ले साइज़ को हटाएं, क्योंकि इसका इस्तेमाल नहीं करना चाहिए. आम तौर पर, onRoot() या कम से कम विंडो के साइज़ का इस्तेमाल करना बेहतर होता है. (I62db4)
वर्शन 1.0.0-alpha10
13 जनवरी, 2021
androidx.compose.foundation:foundation:1.0.0-alpha10 और androidx.compose.foundation:foundation-layout:1.0.0-alpha10 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- ImeOptions और KeyboardOptions अब डेटा क्लास नहीं हैं (I3c898, b/168684531)
- VisualTransformation API में हुए बदलाव
- OffsetMap का नाम बदलकर OffsetMapping किया गया
- OffsetMapping.identityOffsetMap का नाम बदलकर OffsetMapping.Identity कर दिया गया है
- PasswordTransformation अब डेटा-क्लास नहीं है
- OffsetMapping को उसकी अपनी फ़ाइल में ले जाया गया
- (I0bdf3)
- EditOperations API में हुए बदलाव
- EditOperation का नाम बदलकर EditCommand कर दिया गया है
- EditOperation के कॉन्क्रीट इंप्लीमेंटेशन के लिए, कमांड सफ़िक्स जोड़ा गया
- EditCommand अब डेटा क्लास नहीं हैं
- EditOperation.process फ़ंक्शन का नाम बदलकर applyTo कर दिया गया है
- InputEventListener का नाम बदलकर InputEventCallback कर दिया गया है
- (I0a366)
- वेलोसिटी में बदलाव करके, कॉम्पोनेंट के हिस्सों और गणितीय ऑपरेशनों को शामिल किया गया है. (Ib0447)
- @ExperimentalTesting का नाम बदलकर @ExperimentalTestApi कर दिया गया है, ताकि यह एक्सपेरिमेंटल एपीआई के मिलते-जुलते एनोटेशन (Ia4502, b/171464963) के साथ काम कर सके
- LazyColumn/LazyRow के लिए, एक्सपेरिमेंट के तौर पर स्टिकीहेडर जोड़ने का तरीका जोड़ा गया (I0a81d)
- Color.useOrElse() का नाम बदलकर Color.takeOrElse() कर दिया गया (Ifdcf5)
- TestUiDispatcher को बंद कर दिया गया है. इसके बजाय, Dispatchers.Main का इस्तेमाल करें (Ic171f, b/175385255)
- Add Toggle to foundation Strings.kt (I4a5b7, b/172366489)
- nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बना दिया गया. equals लागू करने के लिए, nativeClass के इस्तेमाल को अपडेट किया गया है. अब इसके बजाय, 'is MyClass' का इस्तेमाल किया जाएगा. (I4f734)
- FlowRow और FlowColumn को बंद कर दिया गया है. इसके बजाय, कृपया कस्टम लेआउट का इस्तेमाल करें. (I09027)
- Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
- SelectionRegistrar में SelectionManager को Selectable अपडेट की सूचना देने के लिए, SelectionRegistrar.notifySelectableChange को जोड़ा गया. (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>दिखाता है. इससे बेहतर परफ़ॉर्मेंस मिलती है, क्योंकि अमान्य होने की वजह से हटाए जाने के दायरे को उस जगह तक सीमित किया जा सकता है जहां State वैल्यू पढ़ी जाती है. (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)
ContentDrawScope को ui-graphics मॉड्यूल में ले जाया गया है, ताकि वह DrawScope के साथ रहे. (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 (I668e5) बनाने के लिए, नया infiniteRepeatable फ़ंक्शन
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 में एक सिंगललाइन पैरामीटर जोड़ा गया. टेक्स्ट फ़ील्ड को हॉरिज़ॉन्टल तौर पर स्क्रोल की जा सकने वाली एक लाइन बनाने के लिए, इस पैरामीटर को सही पर सेट करें. (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फ़ंक्शन के ज़रिए, Android Typeface लोड किया जा सकता है. जैसे,typeface(Typeface.DEFAULT).typefaceFromFontFamily()का नाम बदलकरtypeface()भी कर दिया गया है (I52ab7) - लिंट चेक जोड़ा गया है. इससे यह पता चलेगा कि मॉडिफ़ायर फ़ैक्ट्रियां,
@Composableके तौर पर मार्क होने के बजाय, अंदरूनी तौर परandroidx.compose.ui.composed {}का इस्तेमाल करती हैं. (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) को बंद कर दिया गया है. इसके बजाय, इंट ऑफ़सेट के साथ ओवरलोड का इस्तेमाल करें (I4c5e7)
LayoutIdParentDataके लिए,idका नाम बदलकरlayoutIdकर दिया गया है.Measurable.idका नाम बदलकरMeasurable.layoutIdकर दिया गया है. (Iadbcb, b/172449643)
वर्शन 1.0.0-alpha07
11 नवंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07, और androidx.compose.foundation:foundation-text:1.0.0-alpha07 रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Modifier.fillMaxSize[Width|Height]की तरह ही, अब हमLazyColumn/Row(I797e2, b/166586426) के स्कोप मेंModifier.fillParentMaxSize[Width|Height]में फ़्रैक्शन का इस्तेमाल कर सकते हैंKeyboardOptions.toImeOptionsको सार्वजनिक एपीआई से हटा दिया गया है. (Ic2e45)- AmbientTextStyle, ProvideTextStyle, और AmbientContentColor अब काम नहीं करते हैं. इसके बजाय, Material लाइब्रेरी में उपलब्ध नए वर्शन का इस्तेमाल करें. नॉन-मटेरियल ऐप्लिकेशन के लिए, आपको अपना खुद का डिज़ाइन सिस्टम बनाना चाहिए. इसमें थीम के हिसाब से एंबिएंट स्टाइल होनी चाहिए, ताकि उन्हें आपके कॉम्पोनेंट में इस्तेमाल किया जा सके. (I74acc, b/172067770)
- foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू इस्तेमाल न करने वाले सामान्य टेक्स्ट एपीआई के लिए, androidx.compose.foundation.BasicText देखें. (If64cb)
- TextFields में maxLines जोड़ा गया (Ib2a5b)
- KeyboardOptions को स्वीकार करने के लिए, TextFields को अपडेट करें (Ida7f3)
- TextField में इस्तेमाल करने के लिए KeyboardOptions जोड़े गए (I9ca32)
- यह टेक्स्ट के लिए, BasicText को डिज़ाइन से जुड़ा एपीआई जोड़ता है. यह BasicTextField के समानांतर होता है. (I28268)
- ExperimentalLazyDsl एनोटेशन हटा दिया गया है. अब LazyColumn/LazyRow का इस्तेमाल @OptIn को जोड़े बिना किया जा सकता है (Idab7a, b/166584730)
- BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
- CoreTextField और BaseTextField, दोनों को बदलकर BasicTextField जोड़ दिया गया है (Id4cea)
- लेज़ी कॉलम आइटम/लेज़ी रो आइटम (I1d8a8) को हटाने का सुझाव दिया गया है
- साइज़िंग के लिए, इंट्रिंसिक मेज़रमेंट के लिए इस्तेमाल किए जाने वाले, बंद किए गए कंपोज़ेबल हटा दिए गए हैं. (I18537, b/171811496)
- relativePaddingFrom का नाम बदलकर paddingFrom कर दिया गया है. पैडिंग फ़्रॉम बेसलाइन मॉडिफ़ायर जोड़ा गया है, ताकि लेआउट बाउंड से टेक्स्ट बेसलाइन तक की दूरी तय करने में आसानी हो. (I0440a, b/170633813)
- aspectRatio मॉडिफ़ायर में matchHeightConstraintsFirst पैरामीटर जोड़ा गया है. इसका इस्तेमाल, चौड़ाई के हिसाब से साइज़ तय करने वाले मॉडिफ़ायर को आज़माने से पहले, ऊंचाई के हिसाब से साइज़ तय करने वाले मॉडिफ़ायर को तय करने के लिए किया जा सकता है. (Ie7c43, b/155290593)
- DpConstraints को बंद कर दिया गया था. इसे हटा दिया गया है. (I87884, b/171702471)
गड़बड़ियां ठीक की गईं
- ScaleFactor
इनलाइन क्लास को पेश किया गया है. इसका इस्तेमाल, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के स्केल फ़ैक्टर को एक-दूसरे से अलग दिखाने के लिए किया जाता है. इससे, नॉन-यूनिफ़ॉर्म स्केलिंग के इस्तेमाल के उदाहरणों को सपोर्ट किया जा सकेगा.
- ContentScale में computeScaleFactor तरीका जोड़ा गया
- ContentScale.FillBounds को जोड़ा गया है, ताकि src की सीमाओं को खींचकर डेस्टिनेशन को पूरी तरह से भरा जा सके. इसके लिए, नॉन-यूनिफ़ॉर्म स्केलिंग की जाती है.
- साइज़ पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर के तरीके जोड़े गए.
- (Ic96a6, b/172291582)
- captureToBitmap को captureToImage में ले जाया गया है. (I86385)
- यह CoreText को @InternalTextApi के तौर पर मार्क करता है. इसके बजाय, BasicText का इस्तेमाल करें. (I6aaeb)
- KeyboardOptions का नाम बदलकर ImeOptions करें (I82f36)
- KeyboardType और ImeAction को KeyboardOptions में ले जाया गया (I910ce)
- CoreTextField को @InternalTextApi के तौर पर मार्क किया गया है. इसके बजाय, BasicTextField का इस्तेमाल करें (Ie2469)
- ExperimentalSubcomposeLayoutApi एनोटेशन हटा दिया गया है. अब SubcomposeLayout का इस्तेमाल, @OptIn (I708ad) को जोड़े बिना किया जा सकता है
- ui-test-junit4 मॉड्यूल जोड़ें (Ib91f8)
- Icon API को अपडेट किया गया है, ताकि Color.Unspecified को संभावित टिंट कलर के तौर पर इस्तेमाल किया जा सके. इससे, ColorFilter के बिना ही दी गई ऐसेट या पेंटर को ड्रा किया जा सकेगा. इससे पहले, Color.Unspecified का इस्तेमाल करके रंगत को अनदेखा करने की कोशिश करने पर, रंगत को पारदर्शी रंग में बदल दिया जाता था. इससे कुछ भी रेंडर नहीं होता था. (I049e2, b/171624632)
- MeasureResult को MeasureScope से बाहर ले जाया गया. (Ibf96d, b/171184002)
- लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.layout.ui में ले जाया गया है. (I0fa98, b/170475424)
- androidx.ui.test को androidx.compose.ui.test में ले जाया गया (I9ffdb)
- FirstBaseline और LastBaseline को androidx.compose.ui.layout पैकेज में ले जाया गया (Ied2e7)
- कॉलबैक के बिना SelectionContainer जोड़ा गया (Ibfadb)
- SelectionContainer में SelectionHandles की पोज़िशन के लिए टेस्ट जोड़े गए. (Ie93db)
- कीबोर्ड में ऑटो करेक्ट IME का विकल्प जोड़ा गया (I57b8d)
वर्शन 1.0.0-alpha06
28 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06, और androidx.compose.foundation:foundation-text:1.0.0-alpha06 रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- androidx.compose.foundation.Icon को androidx.compose.material.Icon में ले जाया गया है. अगर आपको Material लाइब्रेरी का इस्तेमाल नहीं करना है, तो Painter के साथ Image कॉम्पोनेंट / Modifier.paint() का भी इस्तेमाल किया जा सकता है. (I9f622)
- Modifier.scrollable, ScrollableColumn, और LazyColumnFor में interactionState जोड़ा गया (I81566, b/169509805)
- RowScope में alignByBaseline को जोड़ा गया है. साथ ही, alignWithSiblings का नाम बदलकर alignBy कर दिया गया है (I06503, b/170628732)
- Box को इनलाइन फ़ंक्शन बनाया गया. (Ibce0c, b/155056091)
- CoreTextField में maxLines जोड़ा गया (Ibee58, b/143687793)
- CoreTextField में सॉफ़्ट रैप की सुविधा जोड़ी गई. (I21a4b)
गड़बड़ियां ठीक की गईं
- VectorPainter को बंद कर दिया गया है. अब इसकी जगह rememberVectorPainter का इस्तेमाल किया जा सकता है. इससे यह बेहतर तरीके से पता चलता है कि कंपोज़ेबल एपीआई, कंपोज़िशन के बीच डेटा को बनाए रखने के लिए, 'remember' का इस्तेमाल करता है. (Ifda43)
- ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
- CoreTextField में एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया (I72e6d)
- Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि इसका इस्तेमाल पूरे Compose में कैसे किया जाता है. दस्तावेज़ को अपडेट किया गया है. इसमें बताया गया है कि नेगेटिव कॉर्नर रेडियस को शून्य पर सेट किया जाता है. (I130c7, b/168762961)
- कंपोज़ किए गए मॉडिफ़ायर में इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
- KeyboardCapitalization IME विकल्प जोड़ा गया (I8ac38)
- Rtl हैंडल की जगह ठीक की गई. (I6e1e0)
- बदलाव: PointerInputFilter.onPointerEvent(...) से रिटर्न वैल्यू हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि पॉइंटर इवेंट में सिर्फ़ इस्तेमाल किया गया डेटा बदला जा सकता है. PointerInputFilter.onPointerEvent(...) से डेटा वापस भेजने के बजाय, अब सिर्फ़ पास किए गए PointerEvents के इस्तेमाल किए गए डेटा में बदलाव किया जा सकता है. (I6acd0)
- चुने गए आइटम के मेन्यू (Ief02b) में, 'सभी चुनें' विकल्प जोड़ा गया
वर्शन 1.0.0-alpha05
14 अक्टूबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05, और androidx.compose.foundation:foundation-text:1.0.0-alpha05 रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- CoreTextField में अब कर्सर की सुविधा काम करती है (Id23aa)
contentColor() और currentTextStyle() एपीआई को बंद कर देता है. साथ ही, इनकी जगह AmbientContentColor और AmbientTextStyle ambients का इस्तेमाल करता है. किसी भी अन्य परिवेश की तरह, परिवेश की प्रॉपर्टी पर
.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 तरीके हटाए गए
- दायरे के दस्तावेज़ को अपडेट किया गया है. इसमें अंडाकार के साथ-साथ दीर्घवृत्ताकार भी बताया गया है
- दस्तावेज़ में यह जानकारी जोड़ी गई है कि इनलाइन रेडियस क्लास के लिए, पब्लिक कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसके बजाय, रेडियस ऑब्जेक्ट को उनके फ़ंक्शन कंस्ट्रक्टर के ज़रिए इंस्टैंटिएट किया जाना चाहिए
- topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी करने के लिए, RoundRect API हटा दिए गए हैं
- Rect.shift को Rect.translate के पक्ष में बंद कर दिया गया है
- RoundRect.grow और Rect.shrink एपीआई हटा दिए गए हैं
- RoundRect.outerRect का नाम बदलकर Rect.boundingRect कर दिया गया है
- RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीके हटाए गए
- RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया है
- RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया है
- RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी के तौर पर बदला गया
- RoundRect कंस्ट्रक्टर को अपडेट किया गया है, ताकि वह x/y रेडियस वैल्यू के लिए अलग-अलग पैरामीटर के बजाय, रेडियस प्रॉपर्टी का इस्तेमाल कर सके
- ऐसे साइज़ एपीआई हटा दिए गए हैं जो यह मानते थे कि यह 0,0 पर मौजूद ऑरिजिन वाला रेक्टैंगल है
- Radius में डिस्ट्रक्टिंग एपीआई जोड़ा गया
- RoundRect एक्सटेंशन के कई फ़ंक्शन को प्रॉपर्टी के तौर पर माइग्रेट किया गया
- (I8f5c7, b/168762961)
- LazyColumnFor/LazyRowFor में स्क्रोलिंग के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ेशन. इससे हर स्क्रोल के दौरान, गैर-ज़रूरी रीकंपोज़िशन नहीं होता (I64f65, b/168293643, b/167972292, b/165028371)
- स्क्रोल करने के बाद, आइटम बदलने पर LazyColumnFor/LazyRowFor में क्रैश होने की समस्या ठीक की गई. साथ ही, पहले दिखने वाले आइटम को हटाने पर, अपने-आप ऊपर की ओर स्क्रोल होने की सुविधा लागू की गई, ताकि आखिर में खाली जगह न दिखे (I220ab, b/161480164, b/167855468)
- अब एक ही दिशा में स्क्रोल किए जा सकने वाले कंटेनर, जैसे कि ScrollableContainer और LazyColumnFor को नेस्ट करने की अनुमति नहीं है. यह सुविधा कभी काम नहीं करती थी. साथ ही, यह फ़्लिंग और LazyColumnFor (I6e101) के आइटम कंपोज़ करने की सभी सुविधाओं को बंद कर देती थी
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- DrawScope API को स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीकों के साथ अपडेट किया गया है. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद इसे हटा दिया जाता है
- clipPath से जुड़े दस्तावेज़ को अपडेट किया गया है, ताकि इसमें गोल किनारों वाले आयत के बजाय Path का रेफ़रंस दिया जा सके
- clipPath में मौजूद right पैरामीटर के दस्तावेज़ में स्पेसिंग की समस्या ठीक की गई
- DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
- इनसेट तरीके में dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
- चारों सीमाओं के लिए एक जैसी इनसेट वैल्यू देने वाला इनसेट ओवरलोड जोड़ा गया
- इंसर्ट करने के तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इंसर्ट करने का तरीका चारों साइड पर लागू होगा
- Rect क्लास के लिए दस्तावेज़ अपडेट किया गया
- kdoc स्टाइल से मेल खाने के लिए, Rect पैरामीटर पर टिप्पणियां अपडेट की गईं
- Rect.join और Rect.expandToInclude को हटाया गया
- Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को बंद कर दिया गया
- (If086a, b/167737376)
- सेमैंटिक्स प्रॉपर्टी में AccessibilityScrollState जोड़ें. (Ifeda9)
- ऑब्जेक्ट बनाने से बचने के लिए, TextRange को इनलाइन करें. (Id034b)
- ParagraphConstraints को हटा दिया गया है. अब चौड़ाई को सीधे तौर पर पैराग्राफ़ में पास किया जाता है. (Ica712)
वर्शन 1.0.0-alpha03
16 सितंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03, और androidx.compose.foundation:foundation-text:1.0.0-alpha03 रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- InnerPadding का नाम बदलकर PaddingValues कर दिया गया है. (I195f1, b/167389171)
- लेआउट एपीआई में, ग्रेविटी के इस्तेमाल के नाम को लगातार बदलकर अलाइन या अलाइनमेंट किया गया. (I2421a, b/164077038)
- Stack में अलाइनमेंट पैरामीटर जोड़ा गया है. इससे Stack के सभी चाइल्ड के लिए, डिफ़ॉल्ट अलाइनमेंट तय किया जा सकता है. (Ie80ca, b/164085265)
गड़बड़ियां ठीक की गईं
- DpConstraints और इसका इस्तेमाल करने वाले एपीआई अब काम नहीं करते. (I90cdb, b/167389835)
widthInके पैरामीटरminWidthऔरmaxWidthका नाम बदलकरminऔरmaxकर दिया गया है. इसी तरह,preferredWidthIn,heightIn,preferredHeightInके लिए भी ऐसा ही किया जाता है. (I0e5e1, b/167389544)- ComposeTestRule पर addedOnNode और अन्य ग्लोबल तरीके जोड़े गए हैं, क्योंकि मौजूदा ग्लोबल तरीके बंद होने वाले हैं. (Ieae36)
- GestureScope में निश्चित साइज़ और पोज़िशन के हिसाब से कैलकुलेशन करने की सुविधा को ठीक किया गया है. इससे अन्य समस्याओं के साथ-साथ, अमान्य स्वाइप जेस्चर जनरेट होने की समस्या भी ठीक हो गई है (Iaf358, b/166589947)
createAndroidComposeRuleऔरAndroidInputDispatcherकोandroidx.ui.test.androidसेandroidx.ui.testमें ले जाया गया (Idef08, b/164060572)
वर्शन 1.0.0-alpha02
2 सितंबर, 2020
androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02, और androidx.compose.foundation:foundation-text:1.0.0-alpha02 रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- TestUiDispatcher को एक्सपेरिमेंटल के तौर पर मार्क किया गया है (Iae99d, b/161247083)
ManualFrameClock.hasAwaitersको इसलिए जोड़ा गया है, ताकि यह देखा जा सके कि उस घड़ी से किसी फ़्रेम का इंतज़ार तो नहीं किया जा रहा है;runWithManualClockकोrunBlockingके बदले इसलिए जोड़ा गया है, ताकि ManualFrameClock की ज़रूरत वाले टेस्ट चलाए जा सकें;TestUiDispatcher.Mainको इसलिए जोड़ा गया है, ताकि आपके टेस्ट में मुख्य यूज़र इंटरफ़ेस (यूआई) डिस्पैचर को आसानी से ऐक्सेस किया जा सके.उदाहरण के लिए:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
वर्शन 1.0.0-alpha01
26 अगस्त, 2020
androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01, और androidx.compose.foundation:foundation-text:1.0.0-alpha01 रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 0.1.0-dev
वर्शन 0.1.0-dev17
19 अगस्त, 2020
androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17, और androidx.compose.foundation:foundation-text:0.1.0-dev17 रिलीज़ किए गए हैं. वर्शन 0.1.0-dev17 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Row और Column के लिए, spacedBy Arrangement को जोड़ा गया है. इससे, लेआउट के बच्चों को तय की गई दूरी पर रखा जा सकेगा. इसके अलावा, अलाइनमेंट की सुविधा भी जोड़ी गई है. इससे लेआउट में मौजूद बच्चों को एक-दूसरे के बगल में रखा जा सकता है. साथ ही, उन्हें अलाइनमेंट के हिसाब से लाइन/कॉलम में अलाइन किया जा सकता है. Arrangement.Vertical#arrange और Arrangement.Horizontal#arrange के पिछले तरीकों को बंद कर दिया गया है. साथ ही, आने वाले समय में कस्टम अरेंजमेंट लिखने की सुविधा उपलब्ध नहीं होगी. (I6733d, b/161985975)
- ऑफ़सेट को अब इनलाइन क्लास (Iaec70) के तौर पर इस्तेमाल किया जाता है
- TextField से onFocusChanged कॉलबैक हटा दिए गए हैं. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
- Modifier.drawBorder का इस्तेमाल बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border डेटा क्लास को BorderStroke (I4257d, b/158160576) से बदल दिया गया है
- VerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करें (I73b0d, b/163019183)
- LazyItemScope से, deprecated के तौर पर मार्क किए गए fillMax* मॉडिफ़ायर हटाएं. ऐसा इसलिए, क्योंकि इनकी वजह से उन आइटम के लिए ऐसे मॉडिफ़ायर को सही तरीके से जोड़ना मुश्किल हो रहा है जो LazyColumnFor (Ifa78d) के डायरेक्ट चाइल्ड नहीं हैं
- DSL के तौर पर LazyColumn/LazyRow लागू करने की सुविधा जोड़ी गई (I93cc6)
- Constraints अब एक इनलाइन क्लास है (I88736)
- fillMaxWidth, fillMaxHeight, और fillMaxSize मॉडिफ़ायर का इस्तेमाल करके, उपलब्ध जगह के कुछ हिस्से में लेआउट का साइज़ बदलने की सुविधा जोड़ी गई है. (I945bb, b/161562591)
गड़बड़ियां ठीक की गईं
- SelectionContainer में मॉडिफ़ायर पैरामीटर जोड़ा गया (I4aada, b/161487952)
- SemanticsPropertyKey में mergePolicy लैम्डा जोड़ा गया. इसका इस्तेमाल, mergeAllDescendants सिमैंटिक मर्जिंग के लिए कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के तहत, अगर पैरंट वैल्यू पहले से मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()का नाम बदलकरPlacementScope.place()कर दिया गया है. साथ ही,PlacementScope.place()का नाम बदलकरPlacementScope.placeRelative()कर दिया गया है. इस वजह से,PlacementScope.place()तरीका अब दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में, अपने-आप स्थिति को मिरर नहीं करेगा. अगर आपको ऐसा करना है, तो इसके बजायPlacementScope.placeRelative()का इस्तेमाल करें. (I873ac, b/162916675)- FilledTextField कॉम्पोनेंट को हटाया गया. यह कॉम्पोनेंट अब इस्तेमाल में नहीं है. फ़िल किए गए टेक्स्ट फ़ील्ड के Material Design को लागू करने के लिए, कृपया TextField का इस्तेमाल करें. (I5e889)
- LinearProgressIndicator में backgroundColor पैरामीटर जोड़ा गया है. साथ ही, CircularProgressIndicator से इंटरनल पैडिंग हटा दी गई है. ProgressIndicatorConstants.DefaultProgressAnimationSpec नाम का नया कॉन्स्टेंट जोड़ा गया है. इसका इस्तेमाल, वैल्यू के बीच प्रोग्रेस को ऐनिमेट करते समय डिफ़ॉल्ट AnimationSpec के तौर पर किया जा सकता है (If38b5, b/161809914, b/161804677)
state { ... }कंपोज़ेबल को अब बंद कर दिया गया है. इसके बजाय,remember { mutableStateOf(...) }को साफ़ तौर पर कॉल करने की सुविधा उपलब्ध है. इससे स्टेट मैनेजमेंट के लिए, एपीआई की कुल सतह और कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी डेलिगेशन के लिएby mutableStateOf()पैटर्न से मेल खाता है. (Ia5727)- Compose के नाम रखने के पैटर्न के हिसाब से, RRect का नाम बदलकर RoundRect कर दिया गया है RRect के लिए, मिलते-जुलते फ़ंक्शन कंस्ट्रक्टर बनाए गए हैं RRect फ़ंक्शन कंस्ट्रक्टर (I5d325) को बंद कर दिया गया है
- Removed onChildPositioned और OnChildPositionedModifier को हटा दिया गया है. डेवलपर को चाइल्ड लेआउट पर, onPositioned और OnPositionedModifier का इस्तेमाल करना चाहिए. (I4522e, b/162109766)
- IntSize अब एक इनलाइन क्लास (I2bf42) है
- बदलाव करने के लिए, खाली जगह को दबाकर रखें. (Ib1e5b)
- टेक्स्ट पर टैप करने के बाद, फ़्लोटिंगटूलबार को छिपाएं. (If4525)
- Hide FloatingToolbar When Updating the Selection. (I8444c)
- 'धुंधला करें' से चुने हुए का निशान हटाएं. (I781a2)
वर्शन 0.1.0-dev16
5 अगस्त, 2020
androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16, और androidx.compose.foundation:foundation-text:0.1.0-dev16 रिलीज़ किए गए हैं. वर्शन 0.1.0-dev16 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- LazyItemScope को Lazy लिस्ट के itemContent पैरामीटर के लिए जोड़ा गया. यह पैरंट के ज़्यादा से ज़्यादा साइज़ को भरने के लिए मॉडिफ़ायर उपलब्ध कराता है. इससे उस समस्या को हल किया जा सकता है जब आइटम को व्यूपोर्ट को भरना चाहिए और रेगुलर Modifier.fillMaxSize() काम नहीं करता है, क्योंकि आइटम को इनफ़िनिटी कंस्ट्रेंट के साथ मेज़र किया जाता है. (Ibd3b2, b/162248854)
- डायलॉग को यूज़र इंटरफ़ेस (यूआई) (I47fa6) पर ले जाएं
- LazyColumnForIndexed/LazyRowForIndexed जोड़ा गया - ये LazyColumnFor/LazyRowFor के ऐसे वर्शन हैं जो itemCallback में इंडेक्स और आइटम, दोनों उपलब्ध कराते हैं. यह तब काम आता है, जब आपको मौजूदा आइटम के साथ-साथ मौजूदा इंडेक्स के बारे में भी जानना हो. (I65ff3)
- Modifier.deternimateProgress का नाम बदलकर Modifier.progressSemantics कर दिया गया है (I9c0b4)
- LazyColumnItems का नाम बदलकर LazyColumnFor कर दिया गया है. LazyRowItems का नाम बदलकर LazyRowFor (I84f84) कर दिया गया है
- सबसे सही तरीके से काम करने के लिए, कुछ मार्क/एनोटेशन जोड़ें. (I66b20)
- foundation.shape.corner पैकेज को foundation.share में फ़्लैट कर दिया गया है (I46491, b/161887429)
- LazyRowItems/LazyColumnItems के लिए, क्रॉसऐक्सिस ग्रेविटी पैरामीटर जोड़ा गया. LazyRowItems/LazyColumnItems अब रैप कॉन्टेंट के साथ काम करते हैं. (Ib39fc)
- ZoomableState का नाम बदलकर ZoomableController कर दिया गया है. smoothScale के लिए, कस्टम कर्व की सुविधा जोड़ी गई है.
enabledऔरonZoomStartedफ़ंक्शन जोड़ा गया (If8b8f) - Material FilledTextField का नाम बदलकर TextField कर दिया गया है. साथ ही, फ़ाउंडेशनल TextField का नाम बदलकर BaseTextField कर दिया गया है, ताकि सबसे आसान एपीआई को आसानी से खोजा जा सके और उसका इस्तेमाल किया जा सके (Ia6242, b/155482676)
- पहले से बंद की जा चुकी AdapterList को हटा दिया गया है. इसके बजाय, LazyColumnItems का इस्तेमाल करें (I12b9b)
- Modifier.drawBackground का नाम बदलकर Modifier.background कर दिया गया है (I13677)
- पुराने ConstraintLayout DSL को हटा दिया गया है. ConstraintSet2 का नाम बदलकर ConstraintSet कर दिया गया है. (If58d1, b/162450908)
- Modifier.absoluteOffset() और Modifier.absoluteOffsetPx() जोड़े गए. ऑफ़सेट मॉडिफ़ायर के उलट, ऐब्सलूट ऑफ़सेट मॉडिफ़ायर, दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में अपने-आप मिरर नहीं होंगे (I3aa21)
RowऔरColumnअब इनलाइन फ़ंक्शन हैं. इससे, इनका इस्तेमाल करने में होने वाला ओवरहेड काफ़ी कम हो गया है. (I75c10)
गड़बड़ियां ठीक की गईं
- एपीआई से जुड़ी कई समस्याओं को ठीक किया गया (I077bc)
- इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाएं
- Offset और IntOffset क्लास को अलाइन किया गया है, ताकि एपीआई का एक जैसा इंटरफ़ेस हो
- Offset API के साथ एक जैसा रखने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero कर दिया गया है
- nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है, ताकि उपभोक्ता अपने Canvas इंस्टेंस बना सकें
- DrawScope को रिफ़ैक्टर करने के लिए, EmptyCanvas क्लास बनाई गई है, ताकि इसे lateinit के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
- ClipOp enum के नाम बदलकर, उन्हें पास्कल केस में बदला गया
- FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeJoin enum का नाम बदलकर, पास्कल केस में रखा गया
- PointMode enum के नाम बदलकर, पास्कल केस कर दिए गए हैं
- PaintingStyle एनम का नाम बदलकर, पास्कल केस कर दिया गया है
- PathFillType enum का नाम बदलकर Pascal Case कर दिया गया है
- StrokeCap enums का नाम बदलकर पास्कल केस कर दिया गया है
- DrawCache को लागू करने के तरीके को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है. अब यह fillPaint और strokePaint इंटरनल पैरामीटर के लिए, लेज़ी डेलिगेशन का इस्तेमाल नहीं करेगा
- इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न किया जा सके
- आउटलाइन क्लास को अपडेट किया गया है, ताकि उसमें @Immutable एनोटेशन शामिल किए जा सकें
- हर पाथ के निर्देश के लिए @Immutable एनोटेशन पाने के लिए, PathNode को अपडेट किया गया
- वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए गैर-ज़रूरी शर्तों की जांच को हटाया जा सके. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही इन्हें हैंडल करता है
- फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद किया गया
- @Immutable और @Stable एपीआई के साथ अपडेट की गई ब्रशिंग क्लास और फ़ंक्शन कंस्ट्रक्टर
- VertexMode enum को PascalCase में अपडेट किया गया
- DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि पेंट पर स्ट्रोक पैरामीटर को शर्तों के आधार पर बदला जा सके. ऐसा तब किया जाएगा, जब वे बदल गए हों
- साइज़ को अपडेट किया गया है, ताकि इसमें डिस्ट्रक्चरिंग एपीआई जोड़ा जा सके. साथ ही, UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया है और इस्तेमाल न किए गए तरीकों को हटा दिया गया है
MonotonicFrameAnimationClock जोड़ा गया है. इससे MonotonicFrameClock को AnimationClockObservable के तौर पर इस्तेमाल किया जा सकता है. इससे नई को-रूटीन पर आधारित क्लॉक और अब भी पुराने कॉलबैक पर आधारित क्लॉक का इस्तेमाल करने वाले एपीआई के बीच के अंतर को कम किया जा सकता है.
ManualAnimationClock के MonotonicFrameClock के बराबर अब ManualFrameClock है. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGestureको हटाया गया. इसके बजाय,SemanticsNodeInteraction.performGestureका इस्तेमाल करें. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()का नाम बदलकरSemanticsNodeInteraction.getUnclippedBoundsInRoot()किया गया (Icafdf, b/161336532)दाएं से बाएं लिखने की सुविधा के लिए, एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient को जोड़ा गया है. इसका इस्तेमाल लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)
Modifier.plus अब काम नहीं करता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से क्रम का पता चलता है. साथ ही, इसमें
Modifier.padding().background() + anotherModifierटाइप करने की अनुमति नहीं है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)isFocused()औरisNotFocused()SemanticsMatcher को जोड़ा गया. (I0b760)RemeasurementModifier जोड़ा गया. इस कुकी की मदद से, उपयोगकर्ता लेआउट को एक साथ फिर से मेज़र कर सकते हैं. आम तौर पर, इसकी ज़रूरत नहीं होती, क्योंकि रीमेज़र/रीलेआउट अपने-आप होता है. हालांकि, हम इसका इस्तेमाल स्क्रोल के दौरान LazyColumnItems में करते हैं. (I5f331, b/160791058)
isSystemInDarkTheme अब हमेशा सिस्टम-वाइड डार्क थीम सेटिंग को ध्यान में रखता है. साथ ही, Q से पहले के वर्शन में बैटरी बचाने की सुविधा की स्थिति को अनदेखा करता है. ऐसा नए दिशा-निर्देशों के मुताबिक किया जाता है. (I0c10c)
OnChildPositioned को बंद कर दिया गया है. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)
AndroidComposeTestRule का नाम बदलकर createAndroidComposeRule कर दिया गया है. (I70aaf)
TextLayoutResult (I9d6e6) पाने के लिए, सुलभता से जुड़ी कार्रवाई जोड़ें
वर्शन 0.1.0-dev15
22 जुलाई, 2020
androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15, और androidx.compose.foundation:foundation-text:0.1.0-dev15 रिलीज़ किए गए हैं. वर्शन 0.1.0-dev15 में ये बदलाव शामिल हैं.
Compose के 0.1.0-dev15 वर्शन का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:
डिपेंडेंसी अपडेट
- Compose के
0.1.0-dev15वर्शन का इस्तेमाल करने के लिए, आपको अपनी डिपेंडेंसी अपडेट करनी होंगी. इसके लिए, डिपेंडेंसी तय करना सेक्शन में ऊपर दिखाए गए नए कोड स्निपेट का इस्तेमाल करें.
एपीआई में हुए बदलाव
- इसी तरह, ScrollableColumn/ScrollableRow में नए पैरामीटर की तरह, LazyColumnItems/LazyRowItems में अब contentPadding पैरामीटर भी है. इससे, क्लिप किए गए कॉन्टेंट में पैडिंग जोड़ी जा सकती है. सिर्फ़ 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 क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. साथ ही, 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 अब पहले से मौजूद Column उपलब्ध कराता है. HorizontalScroller अब पहले से मौजूद Row उपलब्ध कराता है. (Ieca5d, b/157020670)
- पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर निर्भर रहने के लिए, Compose की अलग-अलग क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है. यह बड़े पैमाने पर रिफ़ैक्टरिंग के तहत किया गया है (Iede0b)
- Modifier.indication को फ़ाउंडेशन पैकेज में जोड़ दिया गया है. इसका इस्तेमाल, इंटरैक्ट किए जा सकने वाले कस्टम एलिमेंट (I8425f, b/155287131) पर दबाने/खींचने/अन्य इंडिकेशन दिखाने के लिए करें
- VerticalScroller और HorizontalScroller अब स्क्रोल करने की उल्टी दिशा में काम करते हैं. ऐसा तब होता है, जब ScrollerPosition पर isReversed सेट किया जाता है (I953bd)
- टेक्स्ट लेआउट में कंपोज़ेबल जोड़ने की सुविधा. (I1373c)
- CanvasScope को लागू करने के तरीके को बेहतर बनाया गया है. अब सिर्फ़ DrawScope और ContentDrawScope उपलब्ध हैं. CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस को लागू करने के लिए, DrawScope को अपडेट किया गया है. साथ ही, LayoutDirection उपलब्ध कराया गया है ContentDrawScope में DrawScope की सबक्लास को मिटाया गया है Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब RTL प्रॉपर्टी को खुद से बनाए न रखें, क्योंकि DrawScope इसे मैन्युअल तरीके से उपलब्ध कराए बिना ही उपलब्ध कराता है (I1798e)
- Modifier पर drawBackground एक्सटेंशन एपीआई के पक्ष में, DrawBackground एपीआई को हटा दिया गया है. कलर, ब्रश, और पेंट के drawBackground को फिर से फ़ैक्टर किया गया है, ताकि कोड पाथ को कम किया जा सके. साथ ही, कंपोज़िशन के हिस्से के तौर पर बनाए जाने वाले मॉडिफ़ायर की ज़रूरत को हटाया जा सके. (I0343a)
- ज़्यादा लेवल के Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय दिखाते हैं. इससे उपभोक्ताओं को अपने Paint ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी Canvas का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, Canvas के साथ ड्राइंग के निर्देश जारी करने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
- HorizontalScroller और VerticalScroller, सेव किए गए इंस्टेंस की स्थिति का इस्तेमाल करके, स्क्रोल करने की पोज़िशन को वापस नहीं लाते हैं. (Ia0fae, b/155075048)
- FocusManagerAmbient को हटा दिया गया है. फ़ोकस पाने के लिए, FocusModifier.requestFocus का इस्तेमाल करें. (Ic4826)
- टेबल लेआउट को कुछ समय के लिए हटा दिया गया है. हम इसे नए एपीआई के साथ फिर से उपलब्ध कराएंगे. (Id88a7)
CanvasScope API बनाया गया है. यह Canvas ऑब्जेक्ट को रैप करता है, ताकि बिना किसी स्टेटस के, डिक्लेरेटिव ड्राइंग एपीआई की सुविधा उपलब्ध कराई जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर स्कोप में शामिल होते हैं. साथ ही, साइज़िंग की जानकारी भी, उससे जुड़े इंसर्ट बाउंड्री के हिसाब से तय होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, Paint के अपने स्टेट ऑब्जेक्ट को बनाए रखने की ज़रूरत नहीं होती.
CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि उसमें डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके
ColoredRect को हटा दिया गया है. इसके बजाय, drawBackground मॉडिफ़ायर के साथ User Box का इस्तेमाल करें (I983c7, b/152753731)
TextField में कर्सर के रंग को पसंद के मुताबिक बनाने की सुविधा जोड़ें (I6e33f)
अब SoftwareKeyboardController का इस्तेमाल करके, सॉफ़्टवेयर कीबोर्ड को छिपाया/दिखाया जा सकता है. यह onTextInputStarted कॉलबैक (I8dc44, b/151860051) से डिलीवर किया जाता है
TextField के साथ इस्तेमाल की गई TextFieldValue, अब इस तरह इस्तेमाल किए जाने पर गतिविधि को फिर से शुरू कर सकती है:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724)यह फ़ंक्शन, Text() में आम तौर पर इस्तेमाल किए जाने वाले पैरामीटर जोड़ता है. अगर फ़िलहाल, इन पैरामीटर में से कुछ को पास करने के लिए लोकल टेक्स्ट स्टाइल बनाई जा रही है, जैसे कि
Text(style = TextStyle(textAlign = TextAlign.Center)), तो अब सीधे तौर पर पैरामीटर दिए जा सकते हैं:Text(textAlign = TextAlign.Center)(I82768)फ़ोकस सबसिस्टम के साथ इंटिग्रेट करने के लिए, CoreTextField/TextField में focusIdentifier पैरामीटर को FocusNode से बदल दिया गया है. (I7ea48)
TextField अपडेट - हॉरिज़ॉन्टल डाइमेंशन में, इसे दिया गया पूरा स्पेस इस्तेमाल किया जाएगा (Ib08df, b/154638552)
InteractionState और Interaction को जोड़ा गया है. इससे ऐसे कॉम्पोनेंट बनाना आसान हो गया है जो यूज़र इंटरफ़ेस (यूआई) की स्थिति में होने वाले बदलावों पर प्रतिक्रिया देते हैं. जैसे, दबाना और खींचना (Icfe25, b/152525426)
RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)
एपीआई में, नल हो सकने वाले Color के सभी इस्तेमाल को, नल नहीं हो सकने वाले Color से बदल दिया गया है. साथ ही, null की जगह Color.Unset का इस्तेमाल किया गया है (Iabaa7)
TextField API अपडेट - onFocus और onBlur कॉलबैक को एक ही onFocusChange(Boolean) कॉलबैक में मर्ज कर दिया गया है. इसमें पैरामीटर (I66cd3) शामिल है
ScaleFit का नाम बदलकर ContentScale कर दिया गया है ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में रहे. FillMaxDimension का नाम बदलकर Crop कर दिया गया है FillMinDimension का नाम बदलकर Fit कर दिया गया है Fit का नाम बदलकर Inside कर दिया गया है, ताकि यह ImageView.ScaleType के ज़्यादा करीब हो दस्तावेज़ जोड़ा गया है. इसमें बताया गया है कि Crop और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_CROP के जैसा ही नतीजा देता है. साथ ही, Fit और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.FIT_CENTER के जैसा ही नतीजा देता है Inside और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_INSIDE के जैसा ही नतीजा देता है (I45f09, b/152842521)
ProvideContentColor को हटाता है. इसके बजाय, ContentColorAmbient को सीधे
Providers(Iee942) के साथ इस्तेमाल करेंयह टेक्स्ट में कलर पैरामीटर जोड़ता है. इससे, टेक्स्ट स्टाइल के कलर को बदला जा सकता है. इसके लिए, थीम में दी गई स्टाइल के साथ मैन्युअल तरीके से मर्ज करने की ज़रूरत नहीं होती. (I41a66)
DrawModifier API को बेहतर बनाया गया है:
- draw() के लिए रिसीवर स्कोप को ContentDrawScope बनाया गया
- draw() पर मौजूद सभी पैरामीटर हटा दिए गए हैं
- DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
- ContentDrawScope में drawContent() तरीका होता है (Ibaced, b/152919067)
ColoredRect अब उपलब्ध नहीं है. इसके बजाय,
Box(Modifier.preferredSize(width, height).drawBackground(color))का इस्तेमाल करें. (I499fa, b/152753731)शेप थीमिंग सिस्टम को, मटीरियल डिज़ाइन स्पेसिफ़िकेशन के मुताबिक अपडेट किया गया है. अब ज़्यादातर कॉम्पोनेंट (Ifb4d1) के लिए, छोटे, सामान्य, और बड़े साइज़ के शेप दिए जा सकते हैं
मॉडिफ़ायर प्लस ऑपरेटर को फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) से बदल दिया गया है
ड्रैग करने की सुविधा को मॉडिफ़ायर (Id9b16, b/151959544) में ले जाया गया है
Textको androidx.ui.core से androidx.ui.foundation पैकेज में ले जाया गया. (I87ce5)Checkbox, Switch, और Toggleable में
enabledपैरामीटर जोड़ा गया (I41c16)Ripple अब एक मॉडिफ़ायर है. Clickable को अब तक बदला नहीं गया है. इसलिए, इसका इस्तेमाल करने का सुझाव
Clickable(onClick = { ... }, modifier = ripple())(Ie5200, b/151331852, b/150060763) हैवेक्टर ग्राफ़िक के लिए, मौजूदा सबकंपोज़िशन एपीआई को बदलने के लिए VectorPainter API जोड़ा गया. सबकंपोज़िशन का नतीजा, DrawModifier के बजाय VectorPainter ऑब्जेक्ट होता है. VectorPainter के पक्ष में, DrawVector कंपोज़ेबल के पिछले वर्शन को बंद कर दिया गया है.
Image(Painter)एपीआई का नाम बदलकरPaintBox(Painter)कर दिया गया है वेक्टर कंपोज़ेबल बनाया गया है, जो Image कंपोज़ेबल की तरह काम करता है. हालांकि, इसमें ImageAsset के बजाय VectorAsset का इस्तेमाल किया जाता है (I9af9a, b/149030271)CreatedImage कंपोज़ेबल को बनाया गया है. यह स्क्रीन पर दिए गए ImageAsset को दिखाने के साथ-साथ, साइज़/लेआउट को भी मैनेज करता है. इस कंपोज़ेबल में, किसी भी आर्बिट्ररी पेंटर इंस्टेंस को भी ड्रा किया जा सकता है. इसके लिए, इसके इंट्रिंसिक साइज़ का ध्यान रखा जाता है. साथ ही, इसमें दिए गए निश्चित साइज़ या कम से कम साइज़ (Ibcc8f) का भी ध्यान रखा जाता है
Button, FloatingActionButton, और Clickable में अब अलग
enabledपैरामीटर है. बटन पर मौजूद कुछ पैरामीटर के नाम बदल दिए गए हैं या उनका क्रम बदल दिया गया है. (I54b5a)Image का नाम बदलकर ImageAsset कर दिया गया है, ताकि इमेज डेटा और लेआउट में इस्तेमाल होने वाले इमेज कंपोज़ेबल के बीच अंतर किया जा सके.
android.graphics.Bitmap पर एक्सटेंशन मेथड बनाया गया है,
Bitmap.asImageAsset(), ताकि ImageAsset का एक इंस्टेंस बनाया जा सके. यह इंस्टेंस, परंपरागत Android ऐप्लिकेशन डेवलपमेंट को Compose फ़्रेमवर्क के साथ जोड़ने के लिए काम आता है. (Id5bbd)DrawImage कंपोज़ेबल को हटा दिया गया है. मौजूदा लेआउट पर इमेज बनाने के लिए, ImagePainter का इस्तेमाल करें. इसके अलावा, इमेज को दिखाने के लिए SimpleImage का इस्तेमाल करें. इससे इमेज को जगह मिलती है (I595e1, b/149827027)
स्टैक कॉम्पोनेंट, दाएं से बाएं की ओर लिखने की सुविधा के साथ काम करता है (Ic9e00)
AppBarIcon को हटाकर, Icon, IconButton, और IconToggleButton जोड़े गए. AppBarIcon के मौजूदा इस्तेमाल को सीधे तौर पर IconButton से बदला जा सकता है. इसके बाद, उनके पास सही टच टारगेट होगा. इस्तेमाल की जानकारी के लिए सैंपल देखें. साथ ही, दिए गए Material Icons के लिए आइकॉन देखें. इनका इस्तेमाल इन कॉम्पोनेंट के साथ सीधे तौर पर किया जा सकता है. (I96849)
DrawShape कंपोज़ेबल को हटा दिया गया है. इसके बजाय, DrawBackground मॉडिफ़ायर का इस्तेमाल करें. (I7ceb2)
AdapterList जोड़ा गया है. यह स्क्रोल करने लायक सूची वाला कॉम्पोनेंट है. यह सिर्फ़ दिखने वाले आइटम को कंपोज़ और लेआउट करता है. फ़िलहाल, इसकी कुछ समस्याएं सामने आई हैं. जैसे, यह सिर्फ़ वर्टिकल है और अपने चाइल्ड नोड में होने वाले सभी बदलावों को पूरी तरह से हैंडल नहीं करता है. (Ib351b)
स्क्रोल किए जा सकने वाले कॉम्पोनेंट को जोड़ा गया है. इससे कस्टम स्क्रोलर/सूचियां बनाई जा सकती हैं (I5fd37)
बैकग्राउंड का नाम बदलकर DrawBackground किया गया है. साथ ही, इसे डिफ़ॉल्ट रूप से याद रखने की सुविधा चालू की गई है (Ia0bd3)
Box में पैडिंग, बॉर्डर, शेप, और बैकग्राउंड पैरामीटर जोड़ें (I05027, b/148147281)
कैनवस कॉम्पोनेंट जोड़ा गया. यह कंपोज़ेबल, उपयोगकर्ता के दिए गए साइज़ के हिसाब से जगह लेता है. साथ ही, आपको CanvasScope (I0d622) का इस्तेमाल करके ड्रॉ करने की अनुमति देता है
Borderमॉडिफ़ायर का नाम बदलकरDrawBorder(I8ffcc) करोलेआउट और ड्रॉइंग की सामान्य सुविधाओं को एक साथ इस्तेमाल करने के लिए, Box कॉम्पोनेंट जोड़ा गया. (I6e2a7)
स्क्रोलर अब Android के फ़्लिंग मोशन के हिसाब से काम करते हैं. (I922af, b/147493715)
DrawBorder को Border Modifier (Id335a) के साथ बदल दिया गया है
Modifier.tag का नाम बदलकर Modifier.layoutId कर दिया गया है, ताकि Modifier.testTag के साथ भ्रम न हो. (I995f0)
ConstraintLayout के दिशा-निर्देश बनाते समय, प्रतिशत पैरामीटर का नाम बदलकर फ़्रैक्शन कर दिया गया है. (Ida2db)
ConstraintLayout बैरियर के मार्जिन के लिए सहायता जोड़ी गई. (I47ffe)
ConstraintLayout में आरटीएल की सुविधा से जुड़ी समस्या ठीक की गई. आरटीएल के बारे में जानकारी न रखने वाले एपीआई जोड़े गए. (I3b1c7)
ConstraintLayout के लिए नया डीएसएल जोड़ा गया है. ज़्यादा जानकारी के लिए, कृपया सैंपल देखें. (Icaa9a)
@ExperimentalLayout एनोटेशन जोड़ा गया. ConstraintLayout, FlowRow, और FlowColumn को अब इससे टैग किया गया है, ताकि यह पता चल सके कि इनके एपीआई में बदलाव होने वाला है. (I412a8)
Modifier.padding(InnerPadding)को जोड़ा गया (I94985, b/157133803)Row और Column में, RowAlign और ColumnAlign को हटा दिया गया है. (If60d4, b/155858731)
LayoutTag() को हटा दिया गया है. इसके बजाय, कृपया Modifier.tag() का इस्तेमाल करें. Modifier.matchParent() को हटा दिया गया है. कृपया इसके बजाय Modifier.matchParentSize() का इस्तेमाल करें. (If8044)
offsetPx लेआउट मॉडिफ़ायर जोड़ा गया है. इसका इस्तेमाल, पिक्सल में (डाइनैमिक) ऑफ़सेट तय करने के लिए किया जा सकता है. (I5af57)
AlignmentLineOffset कंपोज़ेबल के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, कृपया relativePaddingFrom() मॉडिफ़ायर का इस्तेमाल करें. CenterAlignmentLine कंपोज़ेबल को हटा दिया गया है. (I60107)
डिफ़ॉल्ट रूप से सबसे छोटे साइज़ की सीमा तय करने वाले लेआउट मॉडिफ़ायर को जोड़ा गया है. यह रैप किए गए लेआउट के लिए साइज़ की सीमाएं सिर्फ़ तब सेट करता है, जब आने वाली संबंधित सीमाएं तय न की गई हों. जैसे, कम से कम सीमा के लिए 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)
यह LongPressAndDrag को TextField Selection के लिए लागू करता है. (I17919)
गड़बड़ियां ठीक की गईं
- FocusModifier को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus, Modifier.focusRequester, और Modifier.focusObserver का इस्तेमाल करें. FocusState और FocusDetailedState को अब इस्तेमाल नहीं किया जा सकता. इनके बजाय, FocusState2 का इस्तेमाल करें (I46919, b/160822875, b/160922136)
runOnIdleComposeका नाम बदलकरrunOnIdleकर दिया गया (I83607)- टेस्टिंग के कई एपीआई के नाम बदलकर ज़्यादा आसान कर दिए गए हैं. findXYZ एपीआई के नाम बदलकर onNodeXYZ कर दिए गए हैं. doXYZ नाम वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
- पहले से बंद किए जा चुके Modifier.ripple को हटाता है. 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()कंपोज़ेबल जोड़ें. इससे, Activity या Fragment (I5fdd1) की तरह ही ViewModel बनाया जा सकता है या पहले से बनाए गए ViewModel को ऐक्सेस किया जा सकता है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)
अब इस्तेमाल नहीं किया जा सकने वाला सेंटर कंपोज़ेबल. इसे 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 प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. इसके बजाय, डेवलपर को parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए, ताकि एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म की गणना की जा सके.
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)