Compose Foundation

इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
09 सितंबर, 2026 1.12.1 - - 1.13.0-alpha03

संरचना

Compose, androidx में मौजूद सात Maven ग्रुप आईडी का कॉम्बिनेशन है. हर ग्रुप में, फ़ंक्शन का एक सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.

इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक दिए गए हैं.

समूहब्यौरा
compose.animationउपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं.
compose.compilerKotlin कंपाइलर प्लगिन की मदद से, @Composable फ़ंक्शन को बदलें और ऑप्टिमाइज़ेशन चालू करें.
compose.foundationइस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं.
compose.materialमटीरियल डिज़ाइन कॉम्पोनेंट का इस्तेमाल करके, Jetpack Compose यूज़र इंटरफ़ेस बनाएं. यह Compose का हायर लेवल एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं.
compose.material3Material Design 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. ये कॉम्पोनेंट, Material Design का अगला वर्शन हैं. Material 3 में अपडेट की गई थीमिंग और कॉम्पोनेंट शामिल हैं. साथ ही, इसमें Material You की उपयोगकर्ता की गतिविधि और दिलचस्पी के हिसाब से उपलब्ध सुविधाएं भी हैं. जैसे, डाइनैमिक कलर. इसे Android 12 की नई विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है.
compose.runtimeCompose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, 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-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 को जोड़ा गया है. इससे, तय सीमा से ज़्यादा वर्णों को काट दिया जाएगा. InputTransformation.maxLengthReject को जोड़ा गया है, ताकि maxLength से ज़्यादा वर्णों वाले इनपुट को अस्वीकार किया जा सके. साथ ही, 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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Promoted Grid लेआउट एपीआई (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 का स्कोरminSdk अब 24 है. (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 के डिफ़ॉल्ट तर्क को सिस्टम पर अपडेट किया गया है. (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 के लिए, then ऑपरेटर और कॉम्बिनेशन फ़ैक्ट्री फ़ंक्शन जोड़े गए, ताकि लेआउट कॉन्फ़िगरेशन को मर्ज और ओवरराइड किया जा सके. (Icfdd8, b/475491619)
  • SwipeToReveal में RevealState.drag(), SwipeToRevealDragScope को जोड़ा गया है. साथ ही, कस्टम flingBehavior को दिखाया गया है, ताकि स्वाइप जेस्चर, ऑफ़सेट, और सेटल होने वाले ऐनिमेशन पर प्रोग्राम के हिसाब से कंट्रोल किया जा सके. (Ibfe56, b/484185090)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें टेक्स्ट चुनने वाले टूलबार की जगह या आइटम अपडेट नहीं हो पाते थे. (Ib2566)

बाहरी योगदान

  • SelectionContainer में, माउस की मदद से चुनने की सुविधा चालू करें, ताकि Text चुनने लायक़ आइटम के बीच की खाली जगहों से शुरू किया जा सके. (I93f69, b/502151445)
  • टेस्टिंग के लिए AndroidClipboard इंटरफ़ेस उपलब्ध कराएं, ताकि क्लिपबोर्ड को लागू करने की प्रोसेस को मॉक किया जा सके (Ie4d72, b/512924975)
  • commitText() और setComposingText() के TextAttribute वैरिएंट के लिए, पुराने सिस्टम के साथ काम करने की सुविधा जोड़ी गई. SDK>=37 के लिए, सुलभता सेवाएं यह सूचना दे पाएंगी कि सुझाव के तौर पर दिए गए टेक्स्ट को चुना गया है या नहीं. SDK<37 के लिए, इससे बोले गए जवाब पर कोई असर नहीं पड़ेगा. इसका मतलब है कि यह सुविधा पहले की तरह काम करेगी. (I90e3d, b/439879822)

वर्शन 1.12.0-alpha03

19 मई, 2026

androidx.compose.foundation:foundation-*:1.12.0-alpha03 रिलीज़ हो गया है. वर्शन 1.12.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • एक्सपेरिमेंट के तौर पर उपलब्ध Style API में, पसंद के मुताबिक स्टाइल टाइप बनाने की सुविधा जोड़ी गई है. इनमें पसंद के मुताबिक स्टाइल स्कोप हो सकते हैं. इससे स्टाइल के हिसाब से सेट की जा सकने वाली प्रॉपर्टी को सबसेट किया जा सकता है. जैसे, ग्राफ़िक्स लेयर या टेक्स्ट प्रॉपर्टी को पूरी तरह से हटाया जा सकता है. साथ ही, स्कोप को अन्य स्टाइल से अलग करके बढ़ाया जा सकता है. जैसे, MediaPlayer कंपोज़ेबल में सिर्फ़ playing { } सिंटैक्स का इस्तेमाल किया जा सकता है. इस बदलाव से, बाइनरी और सोर्स कंपैटिबिलिटी पर असर पड़ता है. सोर्स के साथ काम न करने वाला मुख्य बदलाव यह है कि StyleScope में मौजूद हेल्पर फ़ंक्शन, अब एक्सटेंशन फ़ंक्शन बन गए हैं. उदाहरण के लिए, fun contentProperty(all: Dp) अब एक एक्सटेंशन फ़ंक्शन है. इन तरीकों को कॉल करने वाले कोड को सही तरीके से कंपाइल करने के लिए, ज़रूरी एक्सटेंशन फ़ंक्शन इंपोर्ट करने या androidx.compose.foundation.styles से सभी सिंबल इंपोर्ट करने की ज़रूरत होती है. (I1ef27, b/493676648).
  • ScrollIndicatorState अब उल्टे किए गए लेआउट के लिए, विज़ुअल की शुरुआत से स्क्रोल ऑफ़सेट को सही तरीके से दिखाता है. इससे यह पक्का होता है कि इंडिकेटर का विज़ुअल प्रज़ेंटेशन सही हो. (Ia3fae, b/503604996)
  • समस्या को ठीक करने की सुविधा को कंट्रोल करने के लिए, फ़्लैग isClearNestedScrollCoroutineScopeFixEnabled जोड़ा गया. (Ibd394, b/505343254)

बाहरी योगदान

  • SelectionContainer में व्यूपोर्ट से बाहर टेक्स्ट को खींचकर ले जाते समय, ऑटो-स्क्रोलिंग की सुविधा चालू की गई. (Ibcb08, b/424433794)

वर्शन 1.12.0-alpha02

6 मई, 2026

androidx.compose.foundation:foundation-*:1.12.0-alpha02 रिलीज़ हो गया है. वर्शन 1.12.0-alpha02 में ये बदलाव शामिल हैं.

वर्शन 1.12.0-alpha01

22 अप्रैल, 2026

androidx.compose.foundation:foundation-*:1.12.0-alpha01 रिलीज़ हो गया है. वर्शन 1.12.0-alpha01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • टेक्स्ट फ़ील्ड की ऊंचाई को कम से कम/ज़्यादा से ज़्यादा लाइनों की संख्या में कैलकुलेट करने के लिए, एक नया फ़्लैग isBasicTextFieldHeighInLinesOptimizationEnabled जोड़ा गया. यह डिफ़ॉल्ट रूप से चालू होना चाहिए. अगर आपको टेक्स्ट फ़ील्ड के लेआउट में कोई गड़बड़ी दिखती है और इस फ़्लैग को बंद करने से वह ठीक हो जाती है, तो कृपया Compose टीम को गड़बड़ी की जानकारी दें, ताकि वह इसकी जांच कर सके. (Idffae, b/486871837, b/487546327)
  • हावभाव के दौरान टेक्स्ट में बदलाव करते समय, textfield चुनने की समस्या ठीक की गई. (I6fd98, b/490509264)
  • Compose Foundation में, StyleScope में colorFilter के लिए सहायता जोड़ी गई. (I553a0)
  • textMotion को StyleScope में जोड़ा गया. (Id8523, b/482301609)
  • यह Android पर कीबोर्ड के साथ काम करने वाले विकल्पों का सेट पूरा करने के लिए, अतिरिक्त KeyboardType विकल्प जोड़ता है. इनमें तारीख, समय, तारीख और समय, दशमलव वाली संख्या वगैरह शामिल हैं. (I3713e, b/202353328)
  • isNestedDraggablesTouchConflictFixEnabled फ़्लैग हटाएं (I79e52, b/485966180)
  • फ़्लैग isDelayPressesUsingGestureConsumptionEnabled (I533dd, b/485966702) हटाएं
  • isBringIntoViewRltBouncyBehaviorInPagerFixEnabled फ़्लैग को हटा दिया गया है, क्योंकि इसे स्टेबल वर्शन में रिलीज़ कर दिया गया है. (I73fb2, b/485967682)
  • isCacheWindowRefillFixEnabled फ़्लैग को हटा दिया गया है, क्योंकि इसे स्टेबल वर्शन में रिलीज़ कर दिया गया है. (Ic7505, b/485967875)
  • ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabled को हटाता है (I1f76c, b/485966320, b/477836055)
  • StyleScope में contentPadding और externalPadding के लिए ओवरलोड जोड़े गए हैं, जो PaddingValues स्वीकार करते हैं. (I3a6ce, b/493154098)
  • 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)
  • FlexBox डीएसएल अब 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 के बच्चों पर लागू किया जा सकता है. इसके लिए, 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 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • LookaheadScope I286ad में इस्तेमाल किए जाने पर, 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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • PagerState के लिए ScrollIndicatorState लागू करने की सुविधा जोड़ी गई. (I113b7)
  • LazyStaggeredGridState के लिए ScrollIndicatorState लागू करने की सुविधा जोड़ी गई. (I1028e)
  • LazyGridState के लिए ScrollIndicatorState लागू किया गया. (I9e50c)
  • LazyListState के लिए ScrollIndicatorState लागू किया गया. (I5ee29)
  • ScrollState के लिए ScrollIndicatorState लागू करने की सुविधा जोड़ी गई. (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)
  • स्क्रोलबार की स्थिति दिखाने के लिए ScrollIndicatorState API पेश किया गया (I5e229)

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से Modifier.anchoredDraggable का इस्तेमाल करने पर, confirmValueChange चालू नहीं हो रहा था. (Iff7cc)

वर्शन 1.10.0-alpha01

13 अगस्त, 2025

androidx.compose.foundation:foundation-*:1.10.0-alpha01 रिलीज़ हो गया है. वर्शन 1.10.0-alpha01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • पेजर की प्रीफ़ेच रणनीति को अपडेट करें, ताकि स्क्रोल की दिशा में डिफ़ॉल्ट रूप से एक आइटम के बजाय, कैश मेमोरी में सेव की गई विंडो का इस्तेमाल किया जा सके. अब Pager में, शुरुआती प्रीफ़ेचिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. साथ ही, प्रीफ़ेचिंग, एक व्यूपोर्ट के बराबर विंडो के साइज़ पर आधारित होगी. इसका मतलब है कि हम प्रीफ़ेच किए गए आइटम से पूरे व्यूपोर्ट को भरने की कोशिश करेंगे. साथ ही, आइटम को ज़्यादा समय तक दिखाया जाएगा. (I4d45e, b/292136289)
  • ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled फ़्लैग जोड़ा गया है. इससे, WindowInsets परफ़ॉर्मेंस ऑप्टिमाइज़ेशन को बंद किया जा सकता है. ऐसा तब किया जाता है, जब नए तरीके से लागू करने पर व्यवहार में बदलाव होता है. (I8e912)
  • SnapFlingBehavior अब स्नैपिंग के दौरान, स्नैप ऐनिमेशन की खास बातों को ओवरशूट करने की अनुमति देता है. इससे, snapAnimationSpec के तौर पर बाउंस होने वाले स्प्रिंग स्पेसिफ़िकेशन को चालू किया जा सकता है, ताकि बाउंस होने वाला स्नैप ऐनिमेशन बनाया जा सके. स्नैप स्पेसिफ़िकेशन का इस्तेमाल करके अप्रोच लागू करते समय, तय सीमा से ज़्यादा वैल्यू को अनदेखा किया जाता है. (I373c2)
  • ComposeView में माउस या टचपैड से पॉइंटर डाउन करने पर, अब फ़ोकस अपने-आप हट जाएगा. ऐसा तब होगा, जब पॉइंटर डाउन, फ़ोकस किए गए नोड की सीमाओं के अंदर नहीं होगा. इससे "टैप करके फ़ोकस हटाएं" वाला यूज़र एक्सपीरियंस मिलता है. पॉइंटर इनपुट डिवाइसों का इस्तेमाल करते समय, यह यूज़र एक्सपीरियंस मौजूदा यूज़र एक्सपीरियंस से ज़्यादा बेहतर होता है. इस सुविधा से ऑप्ट-आउट करने के लिए, नए AbstractComposeView.isClearFocusOnPointerDownEnabled एपीआई का इस्तेमाल किया जा सकता है. (I6322b, b/282963174)
  • अब Scrollable, माउस के पहिए को दो डाइमेंशन में घुमाने के इवेंट को बेहतर तरीके से सपोर्ट करता है. MouseInjectionScope में इस्तेमाल के उदाहरणों की जांच करने के लिए, एक नया टेस्ट एपीआई उपलब्ध कराया गया है. हमने MouseInjectionScope में स्क्रोल करने के तरीकों के लिए एक नया ओवरलोड भी पेश किया है. साथ ही, नई सुविधा को कंट्रोल करने के लिए एक फ़्लैग भी पेश किया है, जिसे isMouseWheel1DAxisLockingEnabled (I136df) कहा जाता है
  • ऑप्टिमाइज़ेशन के लिए पॉइंटर इनपुट को निलंबित करने के बजाय, रॉ पॉइंटर इनपुट का इस्तेमाल करने के लिए DragGestureNode को अपडेट किया गया. बदलावों को फ़्लैग isNonSuspendingPointerInputInDraggableEnabled (I0fa4b) के पीछे जोड़ा गया है
  • AnchoredDraggable एपीआई में से कुछ को @FrequentlyChangingValue के साथ एनोटेट किया गया है. offset, requireOffset, और progress की वैल्यू अक्सर बदलती रहती हैं. इसलिए, इन्हें कंपोज़िशन में नहीं पढ़ा जाना चाहिए. कृपया इन वैल्यू को लेआउट और ड्रॉ फ़ेज़, इफ़ेक्ट या कंपोज़िशन के बाहर से ऐक्सेस करें. (I05539)
  • फ़्लैग हटाए गए isOnScrollChangedCallbackEnabled, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, isFlingContinuationAtBoundsEnabled, isAutomaticNestedPrefetchEnabled, DragGesturePickUpEnabled, isPointerInteropFilterDispatchingFixEnabled, isNestedScrollInteropPostFlingFixEnabled, isNestedScrollDispatcherNodeFixEnabled (I36c18)
  • CompositionLocal पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट किए गए हिस्से के ब्रश में बदलाव करने के लिए किया जा सकता है. (I52329)
  • FocusProperties में, पसंद के मुताबिक फ़ोकस रेक्ट जोड़ने की सुविधा जोड़ी गई. अब फ़ोकस किए जा सकने वाले एलिमेंट के बाउंडिंग बॉक्स को डिफ़ॉल्ट करने के बजाय, फ़ोकस करने के लिए अपनी पसंद के मुताबिक जगह तय की जा सकती है. इस जानकारी का इस्तेमाल, फ़ोकस ट्रैवर्सल सिस्टम और स्क्रोल किए जा सकने वाले कंटेनर के 'व्यू में रखें' लॉजिक के लिए किया जाता है. (Id6555, b/368378073)
  • Tight नाम का नया LineHeightStyle.Mode जोड़ा गया. इस मोड की मदद से, लाइन की ऊंचाई को कम किया जा सकता है. भले ही, इससे बड़े ग्लिफ़ कट जाएं. (Id3849)
  • नया इंटरपोलेटबल इंटरफ़ेस जोड़ा गया है. इससे अलग-अलग टाइप के बीच अपने-आप इंटरपोलेशन हो जाता है. हालांकि, इसके लिए यह ज़रूरी है कि एक टाइप को दूसरे टाइप में बदलने का तरीका पता हो. इस इंटरफ़ेस का इस्तेमाल, कंपोज़ के कई टाइप में किया जाता है. जैसे, ब्रश और शेप. हालांकि, इसका इस्तेमाल बाहरी तौर पर भी किया जा सकता है. (I58eab)
  • यह इनडायरेक्ट इनपुट इवेंट और स्क्रोल करने के लिए इस्तेमाल किए जाने वाले कोऑर्डिनेट ऐक्सिस को तय करने का तरीका जोड़ता है. (I58e7c)
  • डिस्प्ले कटआउट (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 के लिंट चेक चलाने के लिए, 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 को दिखाया गया है. इसके अलावा, हमने इन बुनियादी एपीआई को भी सार्वजनिक कर दिया है, ताकि कोई भी व्यक्ति अपनी पसंद के मुताबिक कॉन्टेक्स्ट मेन्यू बना सके:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • LazyLayoutItemProvider को स्टेबल बनाएं (Icce09, b/261565751)
  • Android में स्मार्ट तरीके से चुनने की सुविधा जोड़ी गई है. इसे ComposeFoundationFlags.isSmartSelectionEnabled के ज़रिए चालू/बंद किया जा सकता है. यह एक स्टैटिक compositionLocal LocalTextClassifierCoroutineContext को भी दिखाता है. इसका इस्तेमाल उस CoroutineContext को तय करने के लिए किया जा सकता है जिसमें TextClassification जॉब लॉन्च की जाती है. (I1dbaa, b/139321320)

वर्शन 1.9.0-alpha03

20 मई, 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha03 रिलीज़ हो गया है. वर्शन 1.9.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • AnnotatedOutputTransformation जोड़ा गया है. इससे रेंडर करने से पहले, TextField में एनोटेशन जोड़े जा सकते हैं. (Ibc6f0, b/389978748)
  • LazyLayoutMeasurePolicy को लॉन्च किया गया और LazyLayoutMeasureScope को स्टेबल बनाया गया. (I8c5df, b/252853717)
  • BasicSecureTextField अब अपने इंटरनल BasicTextField के ScrollState को ऊपर ले जाता है. (I6e576)
  • Modifier.onFirstVisible और Modifier.onVisibilityChanged मॉडिफ़ायर लॉन्च किए गए. ये Modifier.onLayoutRectChanged के ऊपर बनाए गए हाई लेवल मॉडिफ़ायर हैं. इन मॉडिफ़ायर को खास तौर पर, ऐप्लिकेशन की कई सामान्य ज़रूरतों को पूरा करने के लिए बनाया गया है. जैसे, इंप्रेशन लॉग करना, वीडियो अपने-आप चलना वगैरह. इन्हें परफ़ॉर्मेंस को ध्यान में रखकर बनाया गया है, ताकि इनका इस्तेमाल लिस्ट पर आधारित ज़रूरी स्थितियों में किया जा सके. साथ ही, स्क्रोल करने की परफ़ॉर्मेंस पर कोई असर न पड़े. इन मॉडिफ़ायर एपीआई के अलावा, इस्तेमाल के इन उदाहरणों के लिए RelativeLayoutBounds अन्य एपीआई जोड़े गए हैं. साथ ही, डेवलपर के लिए ऐसे कस्टम मॉडिफ़ायर बनाना आसान हो गया है जो इस्तेमाल के उदाहरणों के हिसाब से सही हों. (I759b8)
  • detectDragGestures ओवरलोड की सुविधा जोड़ी गई है. इसमें टच स्लोप और स्क्रीन की दिशा लॉक कंट्रोल की सुविधा है. (Iadb0d)
  • स्टेट बनाने के लिए, Modifier.scrollable2D, Scrollable2DState, और कंपैनियन एपीआई पेश किए गए हैं. इसके अलावा, स्क्रोल एक्सटेंशन के सामान्य फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040)
  • Compose में इस्तेमाल की गई 64-बिट कलर वैल्यू की तुलना सीधे तौर पर Android ColorLongs से नहीं की जा सकती. इसकी वजह यह है कि कुछ कलर स्पेस के लिए, कलर स्पेस आईडी क्रम में नहीं हैं. Android कलर स्पेस में बदलने और उससे वापस लाने के लिए, दो नए एपीआई जोड़े गए हैं: toColorLong() और fromColorLong(). (I36899)

गड़बड़ियां ठीक की गईं

  • SelectionContainer में मौजूद एक से ज़्यादा 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 के लिंट चेक चलाने के लिए, 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 के इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए इंस्टेंस, अब सिर्फ़ LocalIndication का इस्तेमाल करके दिए गए IndicationNodeFactory इंस्टेंस के साथ काम करते हैं. यह बदलाव तब लागू होगा, जब 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/308398612
  • TextField में मौजूद उस बग को ठीक किया गया है जिसकी वजह से, TextFieldState इंस्टेंस बदलने पर टेक्स्ट टूलबार और सिलेक्शन हैंडल पूरी तरह से गायब हो जाते थे. (I8068a), b/390477786
  • BasicText में मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, textAlign को डिफ़ॉल्ट वैल्यू के अलावा किसी अन्य वैल्यू पर सेट करने पर, चौड़ाई की कम से कम सीमा बदलने से टेक्स्ट की जगह अपडेट नहीं होती थी. (I77a96), b/406305552

वर्शन 1.8.0

23 अप्रैल, 2025

androidx.compose.foundation:foundation-*:1.8.0 रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.

वर्शन 1.8.0-rc03

9 अप्रैल, 2025

androidx.compose.foundation:foundation-*:1.8.0-rc03 रिलीज़ हो गया है. वर्शन 1.8.0-rc03 में ये बदलाव शामिल हैं.

वर्शन 1.8.0-rc02

26 मार्च, 2025

androidx.compose.foundation:foundation-*:1.8.0-rc02 रिलीज़ हो गया है. वर्शन 1.8.0-rc02 में ये बदलाव शामिल हैं.

वर्शन 1.8.0-rc01

12 मार्च, 2025

androidx.compose.foundation:foundation-*:1.8.0-rc01 रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बदलाव शामिल हैं.

वर्शन 1.8.0-beta03

26 फ़रवरी, 2025

androidx.compose.foundation:foundation-*:1.8.0-beta03 रिलीज़ हो गया है. वर्शन 1.8.0-beta03 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नई सिमैंटिक्स प्रॉपर्टी InputText जोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले, टेक्स्ट फ़ील्ड की वैल्यू कैप्चर करती है. (Iae46a, b/395911609, b/176949051)
  • अब काम न करने वाले AutoSize ओवरलोड हटा दिए गए हैं. कृपया एक ही फ़ंक्शन के लिए काम करने वाले TextAutoSize एपीआई का इस्तेमाल करें. (I2c90f)
  • TextAutoSize में कैश मेमोरी से जुड़ी समस्या को ठीक किया गया है. इसमें एक ही तरह की पाबंदियों के साथ लेआउट पास करने पर, सबसे बड़े फ़ॉन्ट साइज़ के बजाय दूसरे सबसे बड़े फ़ॉन्ट साइज़ का इस्तेमाल किया जा सकता था. (Id367f)

वर्शन 1.8.0-beta02

12 फ़रवरी, 2025

androidx.compose.foundation:foundation-*:1.8.0-beta02 रिलीज़ हो गया है. वर्शन 1.8.0-beta02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने उस समस्या को ठीक कर दिया है जिसमें LayoutModifierNode का इस्तेमाल करके ओवरस्क्रॉल लागू करने पर, स्क्रोल करने वाले कंटेनर में सही तरीके से काम नहीं करता था.

वर्शन 1.8.0-beta01

29 जनवरी, 2025

androidx.compose.foundation:foundation-*:1.8.0-beta01 रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SemanticsNodeInteraction.semanticsId() को हटा दिया गया है. इसके बजाय, SemanticsNodeInteraction.fetchSemanticsNode().id का इस्तेमाल करें. (Ie397a)
  • ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल के बाहर, requestAutofill एपीआई को फिर से लिखें. (Id1929)
  • ContextualFlowRow और ContextualFlowColumn के इस्तेमाल पर रोक लगा दी गई है. इस एक्सपेरिमेंटल कॉम्पोनेंट को 1.7 में पेश किया गया था. यह अब तक स्थिर नहीं हुआ है. साथ ही, इसे लागू करना सही नहीं माना गया है. आने वाले समय में, इस कॉम्पोनेंट के इस्तेमाल के उदाहरणों को हल करने वाला कॉम्पोनेंट उपलब्ध कराया जा सकता है.
    • FlowRow और FlowColumn में एक्सपेरिमेंटल ओवरलोड होते हैं. इन्हें 1.7 में पेश किया गया था. इनमें overflow पैरामीटर शामिल होता है. इस पैरामीटर का इस्तेमाल बंद कर दिया गया है. इसके बजाय, इस पैरामीटर के बिना ओवरलोड का इस्तेमाल किया जा सकता है. इन ओवरलोड के लिए, "overflow" का डिफ़ॉल्ट तरीका "Clip" होगा. यह तरीका, इसे लॉन्च किए जाने के बाद से ही इस्तेमाल किया जा रहा है.
    • ContextualFlowRow के कई इस्तेमाल के मामलों को FlowRow का इस्तेमाल करके पूरा किया जा सकता है. हालांकि, हम मानते हैं कि यह पूरी तरह से सही नहीं है. ContextualFlowRow को पूरी तरह से उपयोगकर्ता-स्पेस में लागू किया जा सकता है. साथ ही, कोई भी व्यक्ति इसे लागू करने की प्रोसेस को कॉपी कर सकता है और अपनी ज़रूरत के हिसाब से इसमें बदलाव कर सकता है. हम चाहते हैं कि आने वाले समय में, हम इन इस्तेमाल के उदाहरणों को अलग तरीके से हल कर पाएं. (Ibafec)

गड़बड़ियां ठीक की गईं

  • टेक्स्ट लेआउट से जुड़ी समस्या ठीक की गई. इस समस्या में, ऐनिमेशन के दौरान एलिप्सिस का इस्तेमाल करने पर, टेक्स्ट का अनुवाद कभी-कभी गलत हो जाता था. ज़्यादा जानकारी के लिए, b/389707025 देखें (Ie55b1, b/389707025)
  • BasicText में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी में, TextAutoSize और maxLines को 1 पर सेट किया गया था. (Ic0450, b/376834366)
  • टेक्स्ट की कम से कम इंट्रिंसिक ऊंचाई के लिए, अब minLines पैरामीटर को ध्यान में रखा जाता है. इसका मतलब है कि रिपोर्ट की गई कम से कम इंट्रिंसिक ऊंचाई, minLines पैरामीटर (I225f9, b/388299762) की ज़रूरी ऊंचाई से कम नहीं होगी

वर्शन 1.8.0-alpha08

15 जनवरी, 2025

androidx.compose.foundation:foundation-*:1.8.0-alpha08 रिलीज़ हो गया है. वर्शन 1.8.0-alpha08 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • AutoSize: AutoSize का नाम बदलकर TextAutoSize कर दिया गया है. साथ ही, ऐसे एपीआई पब्लिश किए गए हैं जिनकी मदद से, कस्टम TextAutoSize लागू किए जा सकते हैं. कस्टम टेक्स्ट के अपने-आप अडजस्ट होने वाले साइज़ को लागू करने के उदाहरण के लिए, TextAutoSizeSample देखें. (I85756)
  • DetectTapGesturesEnableNewDispatchingBehavior फ़ीचर फ़्लैग को ComposeFoundationFlags में ले जाया गया है और इसका नाम बदलकर isDetectTapGesturesImmediateCoroutineDispatchEnabled कर दिया गया है. पुराने फ़्लैग के इस्तेमाल पर रोक लगा दी गई है. अब यह फ़्लैग, ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled को असाइन कर दिया जाएगा. (I62932)

गड़बड़ियां ठीक की गईं

  • यह सुविधा DetectTapGesturesEnableNewDispatchingBehavior डिफ़ॉल्ट रूप से चालू होती है. TapGestureDetector एपीआई अब डिफ़ॉल्ट रूप से, इवेंट की जानकारी भेजने के नए तरीके (तुरंत भेजना) का इस्तेमाल करते हैं. (I9f2bc, b/369648479)
  • इंट्रिंसिक साइज़ को सही तरीके से मैनेज करने के लिए, requiredWidth/Height/Size मॉडिफ़ायर को ठीक किया गया है. (Ie3d7d, b/368113212)

बाहरी योगदान

  • इसे फ़ाउंडेशन में BasicTooltip और Material 3 में BasicTooltip/Tooltip के तौर पर इस्तेमाल किया जाता है. (Ifc2e6)
  • नया क्लिपबोर्ड इंटरफ़ेस और उसके लिए कंपोज़िशन लोकल जोड़ा गया. (I80809)

वर्शन 1.8.0-alpha07

11 दिसंबर, 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha07 रिलीज़ हो गया है. वर्शन 1.8.0-alpha07 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • मिटाया गया ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled फ़्लैग, जिसकी मदद से BasicText से इंटरनल graphicsLayer को हटाने की कार्रवाई को पहले जैसा किया जा सकता था. अगर आपने इस फ़्लैग का इस्तेमाल किया था, तो कृपया हमें इसकी वजहें बताएं. इसके लिए, गड़बड़ी की शिकायत करें. इसके अलावा, पहले की तरह ही काम करने के लिए, BasicText कॉल में Modifier.graphicsLayer() को पास किया जा सकता है. (Id9f90)
  • नए stickyHeader डीएसएल के लिए, डिफ़ॉल्ट तौर पर लागू करने की सुविधा जोड़ी गई. (I68986)
  • LocalAutofillHighlightColor कंपोज़िशन लोकल में, कलर टाइप का इस्तेमाल किया जाता है. (I0e05b)
  • OverscrollEffect#withoutDrawing का नाम बदलकर OverscrollEffect#withoutVisualEffect कर दिया गया. (I1a154)

गड़बड़ियां ठीक की गईं

  • AnchoredDraggable के टारगेट कैलकुलेशन में हुई समस्या को ठीक किया गया है. इस समस्या की वजह से, कुछ स्वाइप के लिए गलत ऐंकर सेट हो जाता था. (I23b87, b/367660226)

बाहरी योगदान

  • यूआई में BringIntoViewResponderModifierNode जोड़ें. इससे 'व्यू में लाएं' सुविधा को लागू करने का नया तरीका मिलता है. साथ ही, इसे प्लैटफ़ॉर्म लेवल पर लागू करने की अनुमति मिलती है (Ia6dd8)
  • हम कर्सर को ड्रॉ करने के तरीके में लगातार थोड़ा-बहुत बदलाव कर रहे हैं. जांचों में कर्सर ड्राइंग की सुविधा बंद करने के लिए, LocalCursorBlinkEnabled का इस्तेमाल किया जा सकता है. (I4c697)

वर्शन 1.8.0-alpha06

13 नवंबर, 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha06 रिलीज़ हो गया है. वर्शन 1.8.0-alpha06 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • stylusHoverIcon मॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)
  • AnchoredDraggableState के confirmValueChange अब काम नहीं करते. स्टेट में होने वाले बदलावों को रोकने के बजाय, अनुमति न पाए ऐंकर को चालू ऐंकर सेट में नहीं होना चाहिए. साथ ही, अनुरोध की गई कार्रवाई के उपलब्ध न होने की जानकारी देने के लिए, OverscrollEffect का इस्तेमाल किया जाना चाहिए. (Ia717f)
  • ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल को इंटरफ़ेस में बदलता है. (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 एपीआई का इस्तेमाल करना चाहिए.
  • BasicTextField का इस्तेमाल करके TextFieldState अब स्थिर हो गया है. हमारा सुझाव है कि सभी कॉल-साइट, 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)
  • basicMarquee delayMillis पैरामीटर का नाम बदलकर repeatDelayMillis कर दिया गया है. (I12ff6)
  • लिंक को स्टाइल करने के लिए एपीआई अपडेट किया गया: TextLinkStyles को TextStyle पर ले जाया गया और TextDefaults को मटीरियल से हटा दिया गया (I5477b)

गड़बड़ियां ठीक की गईं

  • इसके मकसद को बेहतर तरीके से दिखाने के लिए, LayoutCoordinates.introducesFrameOfReference का नाम बदलकर LayoutCoordinates.introducesMotionFrameOfReference कर दिया गया है. उस फ़्लैग के आधार पर निर्देशांकों का हिसाब लगाने के लिए, संबंधित फ़ंक्शन का नाम बदला गया. (I3a330)
  • MarqueeDefaults प्रॉपर्टी से 'डिफ़ॉल्ट' को हटा दिया गया है. (I1d8a0)
  • MarqueeDefaults प्रॉपर्टी से 'Marquee' को हटा दिया गया है. (Iad4f4)
  • TextStyle क्लास से TextLinkStyles को हटा दिया गया है. इसके बजाय, TextLinkStyles, LinkAnntation कंस्ट्रक्टर और AnnotatedString.fromHtml तरीके (I90b2b) का हिस्सा है
  • उस गड़बड़ी को ठीक किया गया है जिसमें 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 क्लास जोड़ी गई है. इससे टेक्स्ट कंपोज़ेबल के पैरामीटर के तौर पर लिंक को स्टाइल किया जा सकता है. (I31b93)
  • onDragStarted और onDragStopped को, निलंबित न किए गए कॉलबैक से बदल दिया गया है. (I59de8)

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें contentPadding के इनकमिंग कंस्ट्रेंट से बड़ा होने पर, Pager क्रैश हो जाता था. पेजर अब PageSize से मिली नेगेटिव वैल्यू को 0 पर सेट कर देता है. (Iba5d8, b/314008560)

वर्शन 1.7.0-alpha08

1 मई, 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha08 रिलीज़ हो गया है. वर्शन 1.7.0-alpha08 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • BasicTextField और SelectionContainer में राइट क्लिक करने पर दिखने वाला कॉन्टेक्स्ट मेन्यू जोड़ा गया है. इसमें कट, कॉपी, चिपकाएं, और सभी को चुनें जैसे आइटम शामिल हैं. (If8c93, Ia2b49, I6f268)

एपीआई में हुए बदलाव

  • LazyLayout प्रीफ़ेच अनुरोधों को अब 'ज़रूरी' के तौर पर मार्क किया जा सकता है. इसका मतलब है कि हमें उम्मीद है कि अगले फ़्रेम में इस आइटम की ज़रूरत होगी. साथ ही, हम फ़्रेम बजट को अनदेखा करना चाहते हैं, ताकि पहले से ज़्यादा काम किया जा सके (Id513f)
  • isPositionedByParentWithDirectManipulation का नाम बदलकर introducesFrameOfReference कर दिया गया. ध्यान दें कि अब इसका असर उल्टा होता है. इसका मतलब है कि डिफ़ॉल्ट रूप से, ज़्यादातर LayoutCoordinates रेफ़रंस फ़्रेम पेश करते हैं. साथ ही, जब प्रॉपर्टी को सीधे तौर पर कंट्रोल किया जाता है, तब ही यह गलत होगी. सिर्फ़ उन ऑब्जेक्ट की पोज़िशन के बारे में क्वेरी करने के लिए positionInLocalFrameOfReference(...) का इस्तेमाल करें जो फ़्रेम ऑफ़ रेफ़रंस देते हैं. या LookaheadScope से positionInLocalLookaheadFrameOfReference. (Ifc5f7)
  • onClicked का नाम बदलकर onClick किया गया. यह LinkInteractionListener (Iaa35c) में मौजूद है
  • एपीआई काउंसिल के सुझाव के मुताबिक, getScrollViewportLength के लिए ऐक्शन लैंबडा बदलें. (Ibc74a)
  • स्टाइलस हैंडराइटिंग डेलिगेशन एपीआई के नाम बदले गए हैं. (Ica45f, b/327271923)
  • TextInclusionStrategy.isInside का नाम बदलकर isIncluded कर दें. Paragraph/MultiParagraph#getRangeForRect() के रिटर्न टाइप को नॉन-नलेबल बनाएं. (I51f26)

गड़बड़ियां ठीक की गईं

  • SelectionContainer में, टेक्स्ट के सभी कॉन्टेक्स्ट मेन्यू में "सभी चुनें" विकल्प जोड़ा गया. (Ib750e, b/240143283)
  • reverseScrolling=true की सुविधा वाले स्क्रोल किए जा सकने वाले कंटेनर के लिए, लंबा स्क्रीनशॉट कैप्चर करने की सुविधा से जुड़ी समस्या ठीक की गई. (I7c59c)
  • उस समस्या को ठीक किया गया है जिसमें राज्य की सीमा के पास पहुंचने पर, AnchoredDraggableState का currentValue बदल जाता था. (Iea30b, b/333846848)

बाहरी योगदान

  • PrefetchExecutor -> PrefetchScheduler का नाम बदलकर, इसकी ज़िम्मेदारियों को बेहतर तरीके से दिखाया गया है. (Ib9154)
  • नेस्ट किए गए LazyLists में आइटम को पहले से फ़ेच करने की सुविधा जोड़ी गई है. उदाहरण के लिए, एक LazyColumn जो नेस्ट किए गए LazyRows को रेंडर करता है. इस बदलाव से, इन LazyLists के लिए स्क्रोलिंग के दौरान फ़्रेम ड्रॉप कम होने की उम्मीद है. लागू करने के लिए डिफ़ॉल्ट तौर पर, पहले दो नेस्ट किए गए आइटम को प्रीफ़ेच किया जाता है. हालांकि, इस व्यवहार को नए LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) और LazyListPrefetchStrategy#onNestedPrefetch एपीआई से कंट्रोल किया जा सकता है. (I51952)

वर्शन 1.7.0-alpha07

17 अप्रैल, 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • एक TextDefaults ऑब्जेक्ट जोड़ा गया है. इसमें LinkAnnotation बनाने और एचटीएमएल टैग वाली स्ट्रिंग को पार्स करने के तरीके शामिल हैं. ये तरीके, लिंक पर MaterialTheme लागू करते हैं. (I98532, b/139312671)
  • आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा, LazyVerticalGrid और LazyHorizontalGrid में जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए, Modifier.animateItemPlacement() मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायर Modifier.animateItem() को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (फ़ेड इन), गायब हो जाना (फ़ेड आउट), और क्रम बदलना. (Ib7d12, b/330510929)
  • LazyVerticalStaggeredGrid और LazyHorizontalStaggeredGrid में, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए, Modifier.animateItemPlacement() मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक्सपेरिमेंट के तौर पर इस्तेमाल न किए जाने वाले एक नए मॉडिफ़ायर Modifier.animateItem() को लॉन्च किया है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखने लगना (फ़ेड इन), गायब हो जाना (फ़ेड आउट), और क्रम बदलना. (I69bc9, b/330511290)

एपीआई में हुए बदलाव

  • ContextMenuColors और उससे जुड़े LocalContextMenuTheme ProvidableCompositionLocal को जोड़ता है. टेक्स्ट फ़ील्ड और चुने जा सकने वाले टेक्स्ट पर मौजूद कॉन्टेक्स्ट मेन्यू के रंगों में बदलाव किया जा सकता है. इसके लिए, कंपोज़िशन लोकल उपलब्ध कराएं. (Ifa154)
  • टेक्स्ट लिंक के लिए, सामान्य स्टाइलिंग, होवर किए जाने पर स्टाइलिंग, और फ़ोकस किए जाने पर स्टाइलिंग के साथ-साथ, प्रेस किए जाने पर स्टाइलिंग का विकल्प भी जोड़ा गया है. (I5f864, b/139312671)
  • हैंडराइटिंग के जेस्चर के लिए ViewConfiguration.HandwritingGestureLineMargin की सुविधा लॉन्च की गई. BasicTextField के लिए, हाथ से लिखने वाले जेस्चर की सुविधा उपलब्ध है. (Ie6e13, b/325660505)
  • हमने 1.7 रिलीज़ के लिए DelegatableNode.scrollIntoView को हटा दिया है, क्योंकि हमारे पास इससे जुड़े बाकी एपीआई को स्थिर करने के लिए समय नहीं था. इस फ़ंक्शन को 1.8 (I6cf61, b/333421581, b/332900232) में फिर से शामिल किया जाएगा
  • लेआउट के कोऑर्डिनेट के बारे में क्वेरी करते समय, अब excludeDirectManipulationOffset आर्ग्युमेंट का इस्तेमाल किया जा सकता है. इससे, पैरंट लेआउट के सेट किए गए ऑफ़सेट को बाहर रखा जा सकता है. पैरंट लेआउट ने अपने बच्चों को Placeable.PlacementScope.withDirectManipulationPlacement का इस्तेमाल करके रखा था. इसी तरह, अगर कोई लेआउट अपने चाइल्ड व्यू की पोज़िशन को बार-बार बदलता है, तो अब वह उन्हें withDirectManipulationPlacement का इस्तेमाल करके रख सकता है. जैसे, स्क्रोल करने की सुविधा, जो डिफ़ॉल्ट रूप से लागू होती है. इससे approachLayout पर आधारित ऐनिमेशन को ज़्यादा सहज बनाने में मदद मिलती है. अब इसमें यह तय करने का विकल्प होता है कि किस ऑफ़सेट को ऐनिमेट करना है और ऐनिमेशन का तरीका तय करते समय, किस ऑफ़सेट को सीधे तौर पर लागू करना है. (I60ec7)
  • LazyStaggeredGrid के लिए requestScrollToItem के बारे में जानकारी दो. हर मेज़र-पास के लिए, क्लाइंट अब requestScrollToItem को कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. इससे मौजूदा व्यवहार में किसी भी तरह का बदलाव नहीं होता है, जब तक कि requestScrollToItem को कॉल न किया जाए. (I63983)
  • पेजर में requestScrollToPage को शामिल किया गया है. हर मेज़र-पास के लिए, क्लाइंट अब requestScrollToPage को कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. इससे मौजूदा व्यवहार में किसी भी तरह का बदलाव नहीं होता है, जब तक कि requestScrollToPage को कॉल न किया जाए. (Ic4213)
  • LazyGrids के लिए requestScrollToItem लॉन्च किया गया. हर मेज़र-पास के लिए, क्लाइंट अब requestScrollToItem को कॉल करके, मुख्य वैल्यू के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. इससे मौजूदा व्यवहार में किसी भी तरह का बदलाव नहीं होता है, जब तक कि requestScrollToItem को कॉल न किया जाए. (I0a7a0)
  • ClickableText को अब इस्तेमाल नहीं किया जा सकता. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से मेल खाने वाला LinkAnnotation AnnotatedString बनाएं. इसके बाद, इस 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 को फ़ंक्शन इंटरफ़ेस में बदल दिया जाता है. साथ ही, Lambda को इनपुट के तौर पर लेने वाले Modifier.receiveContent ओवरलोड को हटा दिया गया है, क्योंकि अब ReceiveContentListener एक फ़ंक्शन इंटरफ़ेस है.
  • Modifier.receiveContent का नाम बदलकर Modifier.contentReceiver कर दिया गया है. (I1e6af)
  • TransferableContent.consumeEach का नाम बदलकर TransferableContent.consume कर दिया गया. (I1e462)
  • rememberTextFieldState को स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I37999)

गड़बड़ियां ठीक की गईं

  • हमने उस गड़बड़ी को ठीक कर दिया है जिसमें BasicTextField(state) वैरिएंट, CJK(कंपोज़िशन पर आधारित) कीबोर्ड के साथ काम नहीं करता था. (I54425)
  • Modifier.dragAndDropTarget() के फिर से इस्तेमाल किए जाने पर, कुछ मामलों में Modifier.Node में पुराना डेटा दिखने वाली गड़बड़ी को ठीक किया गया है. (I05bb1)
  • हाल ही में अनुबंध में किए गए बदलाव को पहले जैसा कर दिया गया है. इस बदलाव के तहत, anchoredDrag कार्रवाई के खत्म होने पर AnchoredDraggableState#anchoredDrag कॉल स्नैप हो जाते थे. (I95715)

वर्शन 1.7.0-alpha05

20 मार्च, 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • हाइपरलिंक को स्टाइल करने के लिए, एक्सपेरिमेंटल LocalTextLinkStyle कंपोज़िशन लोकल को हटाया गया. (Iebfa7)
  • onLinkClicked आर्ग्युमेंट के साथ BasicText के एक्सपेरिमेंटल ओवरराइड को हटाया गया. आने वाले समय में, हाइपरलिंक की सुविधा के लिए एपीआई उपलब्ध कराया जाएगा. (I107d5)
  • TextFieldState और TextFieldBuffer में, कोडपॉइंट से जुड़े तरीकों और प्रॉपर्टी को हटा दिया गया है. इसके अलावा, हमने बचे हुए सिलेक्शन और कंपोज़िशन से जुड़े एपीआई से inChars सफ़िक्स भी हटा दिए हैं. (Ief7ce)
  • अब ऐंकर पॉइंट से गुज़रने पर, AnchoredDraggable का currentValue अपडेट हो जाएगा. settledValue का इस्तेमाल करके, पिछली currentValue सिमैंटिक्स पाएं. यह सिर्फ़ तब अपडेट होता है, जब ऐंकर पर सेटल हो जाता है. प्रोग्रेस को अब प्रॉपर्टी के बजाय फ़ंक्शन के तौर पर दिखाया जाता है. इसके लिए, शुरुआती और आखिरी पॉइंट की ज़रूरत होती है. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator को स्टेबल वर्शन में अपग्रेड किया गया है. (I9582b)
  • 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() को इसलिए पेश किया गया है, ताकि मॉडिफ़ायर नोड, कंपोज़िशन लोकल को पढ़े बिना मौजूदा Android View को पा सकें. (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)
  • onRelease कॉलबैक को उसी क्रम में कॉल करें जिस क्रम में onForgotten को कॉल किया गया था. (31ce3b)

वर्शन 1.6.0

24 जनवरी, 2024

androidx.compose.foundation:foundation-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये बदलाव शामिल हैं.

1.5.0 के बाद हुए अहम बदलाव

  • नया मॉडिफ़ायर Modifier.anchoredDraggable, जो पहले से तय किए गए ऐंकर के सेट के बीच ड्रैग करने और ऐनिमेशन करने की सुविधा को अनलॉक करता है. इस मॉडिफ़ायर को Modifier.swipeable के बदले इस्तेमाल किया जा सकता है. इसे इस्तेमाल करने का तरीका और माइग्रेशन गाइड में Modifier.swipeable से माइग्रेट करने का तरीका जानें.
  • ऐप्लिकेशन और कॉम्पोनेंट के बीच, खींचकर छोड़ने की सुविधा जोड़ी गई है. शुरू करने के लिए, DragAndDropTarget, Modifier.dragAndDropSource और अन्य एपीआई देखें
  • Modifier.draggable2D नया मॉडिफ़ायर है. इसकी मदद से, 2D ऑब्जेक्ट को आसानी से ड्रैग किया जा सकता है. उदाहरण देखें.
  • AndroidExternalSurface और AndroidEmbeddedExternalSurface को जोड़ा गया है, ताकि कंपोज़ में सर्फ़ेस-ड्रिवन कॉम्पोनेंट को आसानी से जोड़ा जा सके
  • Pager और snapFlingBehaviour में एपीआई से जुड़े कई बदलाव और सुधार
  • फ़ोकस, टेक्स्ट, और इनसेट से जुड़े कई एपीआई को स्टेबल एपीआई के तौर पर प्रमोट किया गया है

वर्शन 1.6.0-rc01

10 जनवरी, 2024

androidx.compose.foundation:foundation-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • DragAndDropTarget() एक्सटेंशन कंस्ट्रक्टर को हटा दिया गया है. object: DragAndDropTarget {} का इस्तेमाल करके नया इंस्टेंस बनाएं. (I32318)

वर्शन 1.6.0-beta03

13 दिसंबर, 2023

androidx.compose.foundation:foundation-*:1.6.0-beta03 रिलीज़ हो गया है. वर्शन 1.6.0-beta03 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस क्रैश को ठीक किया गया है जिससे बहुत बड़े टेक्स्ट पर असर पड़ा था. इस टेक्स्ट को इनफ़िनिट कंस्ट्रेंट के साथ मेज़र किया गया था. (I1a7df, b/312294386)
  • PlatformImeOptions अब इंटरफ़ेस के बजाय एक कॉन्क्रीट क्लास है. (If40a4)

वर्शन 1.6.0-beta02

29 नवंबर, 2023

androidx.compose.foundation:foundation-*:1.6.0-beta02 रिलीज़ हो गया है. वर्शन 1.6.0-beta02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • सिर्फ़ रीलआउट वाले स्क्रोल के बाद, canScroll के अपडेट न होने की समस्या को ठीक किया गया. (I60a86)
  • थोड़ा स्क्रोल करने के बाद, Modifier.animateItemPlacement() और LookaheadScope के लिए ठीक किया गया. (I3a2b7)

वर्शन 1.6.0-beta01

15 नवंबर, 2023

androidx.compose.foundation:foundation-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • DragAndDropTarget मॉडिफ़ायर अब DragAndDropTarget को साफ़ तौर पर लेता है. साथ ही, इसमें ड्रैग और ड्रॉप सेशन में ऑप्ट इन करने के लिए लैम्डा होता है. अब DragAndDropModifierNode के लिए दो फ़ैक्ट्री फ़ंक्शन उपलब्ध हैं. एक ट्रांसफ़र पाने के लिए और दूसरा डेटा ट्रांसफ़र करने के लिए (I69481)
  • maximumFlingVelocity को फ़्लोट के तौर पर दिखाने के लिए अपडेट किया गया. maximumFlingVelocity यूनिटी के बारे में ज़्यादा जानकारी देने के लिए, दस्तावेज़ अपडेट किए गए हैं. (I8adc7)
  • DragAndDropModifierNode फ़ैक्ट्री में मौजूद onDragAndDropStart का नाम बदलकर acceptDragAndDropTransfer कर दिया गया है.

    acceptsDragAndDropTransfer को dragAndDropTarget Modifier में जोड़ा गया है, ताकि खींचें और छोड़ें वाले सेशन से इसे स्वीकार किया जा सके. अगर आपको ड्रैग और ड्रॉप सेशन में दिलचस्पी है, तो यह लैंबडा एक मान्य DragAndDropTarget दिखाता है. ड्रैग इवेंट को प्रोसेस करने के लिए, अन्य लैम्ब्डा को इससे बदल दिया गया है.

    ड्रैग और ड्रॉप सेशन (Iebf3a) से डेटा पाने के लिए, DragAndDropTarget फ़ैक्ट्री फ़ंक्शन जोड़ा गया है

  • AnchoredDraggable में startDragImmediately को दिखाने से, इसका इस्तेमाल करते समय ड्रैग करने के जेस्चर का पता लगाने की सुविधा मिलती है. जब विजेट किसी टारगेट ऐंकर पर ऐनिमेट हो रहा हो, तब इसे सेट करना फ़ायदेमंद होता है. उदाहरण देखें. (Ie6d13, b/285139987)

  • Foundation Tooltip API अब @ExperimentalFoundationApi (I30b0b) हैं

  • DragAndDropInfo को हटा दिया गया है. DragAndDropModifierNode.drag अब transferData, डेकोरेशन के साइज़, और ड्रैग डेकोरेशन DrawScope लैम्डा के लिए पैरामीटर लेता है

    DragAndDropTarget में, एक ही ऐब्स्ट्रैक्ट तरीके के बजाय, खींचकर छोड़ने के खास इवेंट के तरीके होते हैं

    DragAndDropModifierNode के फ़ैक्ट्री फ़ंक्शन में मौजूद onDragAndDropEvent का नाम बदलकर onDragAndDropStart कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि दिया गया DragAndDropTarget, सिर्फ़ ड्रैग और ड्रॉप वाले सेशन के लिए मान्य है

    DragAndDropEventType को हटा दिया गया है (I645b1)

  • PlatformTextInputModifierNode.runTextInputSession का नाम बदलकर establishTextInputSession कर दिया गया. (I03cd0)

  • OriginalText को TextSubstitution से बदलें. (Ifa5a8)

  • PlatformTextInputModifierNode.textInputSession का नाम बदलकर runTextInputSession कर दिया गया. (Ie9c6b)

  • SubcomposeLayout के बच्चों (और इस पर आधारित LazyColumn जैसे लेआउट) को निष्क्रिय माना जाता है. इन्हें आने वाले समय में फिर से इस्तेमाल करने के लिए सेव किया जाता है. ऐसे नोड की जांच करने के लिए, नया assertIsDeactivated() टेस्ट एपीआई लॉन्च किया गया है. अन्य टेस्ट एपीआई, डिफ़ॉल्ट रूप से बंद किए गए नोड को फ़िल्टर कर देंगे. (I2ef84, b/187188981)

  • Modifier.magnifier के clippingEnabled पैरामीटर का नाम बदलकर clip कर दिया गया है.

  • Modifier.magnifier के magnifierCenter पैरामीटर को नल वैल्यू स्वीकार करने वाला बनाया गया है. हालांकि, डिफ़ॉल्ट व्यवहार में कोई बदलाव नहीं किया गया है. (I6aa66)

  • कार्ड और चिप के लिए, Material SwipeToReveal API अब उन स्लॉट को बनाने के लिए, डेटा क्लास पर आधारित इंस्टेंस के बजाय, स्लॉट पर आधारित API का इस्तेमाल करते हैं. Compose ने भी इसी API का इस्तेमाल करने का सुझाव दिया है. यह एक बड़ा बदलाव है. नए एपीआई को इस्तेमाल करने के तरीके के बारे में जानने के लिए, कृपया डेमो और सैंपल कोड देखें. (Ia8943)

गड़बड़ियां ठीक की गईं

  • PageSize.Fixed के लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से minWidth के बदलने और minWidth के शुरुआती मेज़रमेंट की सीमाओं maxWidth (Idb19c) से कम होने पर, BasicText लेआउट छोटा नहीं होता था
  • ArcLine में स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ी गई. (I4d5bb)
  • विंडो इंसर्ट में बदलाव करने से जुड़ी बाइनरी कंपैटिबिलिटी की समस्या ठीक की गई (Iee695)
  • Material3 चिप/बटन के लिए, मटेरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)

वर्शन 1.6.0-alpha08

18 अक्टूबर, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Modifier.draggable2D नया मॉडिफ़ायर है. इसकी मदद से, 2D ऑब्जेक्ट को आसानी से ड्रैग किया जा सकता है. उदाहरण (Id95f5, b/214412658) देखें

एपीआई में हुए बदलाव

  • Modifier.dragAndDrawSource फ़ंक्शन में, onDrawDragShadow लैम्डा का नाम बदलकर drawDragDecoration कर दिया गया है. साथ ही, DragAndDropInfo फ़ंक्शन में, साइज़ पैरामीटर का नाम बदलकर dragDecorationSize कर दिया गया है. (Id0e30, b/303904810)
  • BasicTextField2 के decorationBox पैरामीटर का नाम बदलकर decorator कर दिया गया है. इसका टाइप भी बदलकर, मज़ेदार इंटरफ़ेस TextFieldDecorator कर दिया जाता है. (I23c1c)

गड़बड़ियां ठीक की गईं

  • BasicTextField से जुड़े दस्तावेज़ में, onValueChange की ज़रूरी शर्तों के बारे में बेहतर जानकारी दी गई है. (I90fc9, b/160257648)

वर्शन 1.6.0-alpha07

4 अक्टूबर, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • कस्टम टेक्स्ट एडिटर के लिए, टेस्ट लिखने की सुविधा PlatformTextInputMethodTestOverride लॉन्च की गई. (Id159b)
  • GraphicsSurface का नाम बदलकर AndroidExternalSurface किया गया (I11680)
  • नॉन-लीनियर फ़ॉन्ट स्केलिंग को बंद करने के लिए, DisableNonLinearFontScalingInCompose अस्थायी फ़्लैग जोड़ा गया. अगर आपको टेस्ट को ठीक करने के लिए समय चाहिए, तो उन्हें DisableNonLinearFontScalingInCompose = true के तौर पर सेट करें. इस फ़्लैग को Compose 1.6.0-beta01 में हटा दिया जाएगा. (Ic9486)
  • ऐसे ColorList और ColorSet कलेक्शन जोड़े गए हैं जिनमें एट्रिब्यूशन नहीं होता. (I744bd)
  • इस बदलाव से shortSnapVelocityThreshold हट जाता है. इसे SnapLayoutInfoProvider को लागू करने के तरीके की जानकारी में शामिल कर दिया गया है. (I65f6d)
  • खींचें और छोड़ें सेशन शुरू करने के लिए dragAndDropSource मॉडिफ़ायर और खींचें और छोड़ें सेशन से डेटा पाने के लिए dragAndDropTarget मॉडिफ़ायर जोड़ा गया (Ib7828, b/286038936)
  • SnapPositionInLayout के दस्तावेज़ और पोज़िशन के तरीके को अपडेट करें. SnapPositionInLayout में, पोज़िशन के तरीके में कॉन्टेंट पैडिंग जोड़ें. (Id7938, b/300116110)
  • TextFieldState में UndoState जोड़ा गया है. इससे उपयोगकर्ता, अपने किए गए बदलावों को पहले जैसा कर सकता है या उन्हें फिर से कर सकता है. (Icc024)

गड़बड़ियां ठीक की गईं

  • वेलोसिटी में बदलाव होने के बाद, basicMarquee के ऐनिमेट न होने की समस्या ठीक की गई. (Id2e77, b/297974036)

वर्शन 1.6.0-alpha06

20 सितंबर, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • SurfaceView, TextureView: GraphicsSurface(), और EmbeddedGraphicsSurface() के लिए नए कंपोज़ेबल रैपर. यह एक एक्सपेरिमेंटल एपीआई है. इसमें बदलाव और संशोधन किए जा सकते हैं. (I9ddb2)
  • Modifier.magnifier() अब एक स्टेबल एपीआई है. इसमें मॉडिफ़ायर में इनलाइन पैरामीटर के पक्ष में MagnifierStyle को हटाना शामिल है. (I83bec, b/298381260, b/262367109, b/261438887)

एपीआई में हुए बदलाव

  • ScrollScope में updateCurrentPage और updateTargetPage को लॉन्च किया गया था. ये PagerState.scroll में ऐनिमेशन वाले स्क्रोल को पसंद के मुताबिक बनाने के लिए ज़रूरी हैं. (I9cad5, b/267744105, b/243786897)
  • SnapFlingBehavior से डेंसिटी हटाएं. SnapLayoutInfoProvider के सभी वर्शन में, डेंसिटी को ऐक्सेस करने का तरीका पहले से मौजूद है. इसलिए, रिसीवर स्कोप को हटाया जा सकता है. इससे SnapFlingBehavior और SnapLayoutInfoProviders, दोनों को लागू करना आसान हो जाएगा. (I153c3)
  • ज़्यादा मॉडिफ़ायर को स्टेबल के तौर पर मार्क किया गया है. (I56af1, b/298046462)
  • SnapStepSize को SnapLayoutInfoProvider से हटाया गया. कैलकुलेशन, लेआउट की जानकारी का इस्तेमाल करके की जानी चाहिए. साथ ही, इसे अप्रोच या स्नैपिंग ऑफ़सेट के ज़रिए उपलब्ध कराया जाना चाहिए. (If320c)

व्यवहार में बदलाव

  • अब कंपोज़ फ़ीचर, पढ़ने और ऐक्सेस करने में आसानी के लिए नॉन-लीनियर फ़ॉन्ट स्केलिंग का इस्तेमाल करती है. सिस्टम सेटिंग में फ़ॉन्ट स्केल > 100% होने पर, छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ सिर्फ़ थोड़ा बढ़ेगा. साथ ही, एसपी में तय की गई लाइन की ऊंचाई, 100% स्केल के हिसाब से तय की गई ऊंचाई के अनुपात में अपने-आप अडजस्ट हो जाएगी. ज़्यादा जानकारी के लिए, फ़ॉन्ट स्केलिंग के सबसे सही तरीके देखें. (I11518)

गड़बड़ियां ठीक की गईं

  • टूलटिप के लिए, rememberSaveable का इस्तेमाल बंद करें. (Icc131, b/299500338)

वर्शन 1.6.0-alpha05

6 सितंबर, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • BasicSecureTextField के लिए ओवरलोड जोड़ें, जो ऐसी वैल्यू और कॉलबैक स्वीकार करते हैं जिन्हें बदला नहीं जा सकता. कॉलबैक का इस्तेमाल उस वैल्यू को बदलने के लिए किया जाता है. यह मौजूदा BasicTextField एपीआई की तरह ही काम करता है. (Ia4882)
  • एपीआई लेवल 33 और इसके बाद के वर्शन पर फ़्लोटिंग विंडो से बचने के लिए, Modifier.preferKeepClear() जोड़ें, ताकि इसे कंपोज़ेबल के तौर पर मार्क किया जा सके. (Ib51d5, b/297260115)
  • ScrollView और RecyclerView जैसे व्यू कॉम्पोनेंट में फ़्लिंग की स्पीड, ViewConfiguration.ScaledMaximumFlingVelocity पर सेट होती है. Compose में अब maximumFlingVelocity का अपना वर्शन शामिल है. यह अब Draggable पर लागू होता है. (Ibf974)
  • इस्तेमाल बंद किए जा चुके Pager और PagerState ओवरलोड हटा दिए गए हैं. (Iea07e)
  • compose.foundation में BasicTooltipBox को जोड़ा गया है. साथ ही, PlainTooltipBox और RichTooltipBox को अपडेट किया गया है, ताकि नए PlainTooltip और RichTooltip कंपोज़ेबल के साथ TooltipBox का इस्तेमाल किया जा सके. (I79e1d)

वर्शन 1.6.0-alpha04

23 अगस्त, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • सबकंपोज़िशन के लाइफ़साइकल को मैनेज करने और उनका दोबारा इस्तेमाल करने के लिए, ReusableComposition इंटरफ़ेस जोड़ा गया. (I812d1, b/252846775)
  • Modifier.focusGroup को स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I7ffa3)
  • BasicTextField2 के लिए ओवरलोड जोड़ें, जो ऐसी वैल्यू और कॉलबैक स्वीकार करते हैं जिन्हें बदला नहीं जा सकता. कॉलबैक का इस्तेमाल उस वैल्यू को बदलने के लिए किया जाता है. यह मौजूदा BasicTextField एपीआई की तरह ही काम करता है. (I3f2b8)
  • GridItemSpan::currentLineSpan अब एक स्टेबल एपीआई है. (Icc29c)
  • contentDescription को स्वीकार करने वाला कैनवस अब एक स्टेबल एपीआई है. (Ib3d29)
  • ScrollState में viewportSize को पेश किया गया है. इससे मेज़रमेंट के बाद, ScrollState का इस्तेमाल करने वाले कॉम्पोनेंट के viewPort साइज़ के बारे में पता चलता है. (I8b85a, b/283102682)
  • उस समस्या को ठीक किया गया है जिसमें Pager में प्रीफ़ेचिंग, Views में प्रीफ़ेचिंग के व्यवहार से मेल नहीं खाती थी. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) अब स्टेबल हो गया है.
    • Deprecated Modifier.consumedWindowInsets एपीआई को अब हटा दिया गया है. इसके बजाय, Modifier.consumeWindowInsets का इस्तेमाल करें. (Id72bb)

वर्शन 1.6.0-alpha03

9 अगस्त, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha03 रिलीज़ हो गया है. वर्शन 1.6.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • LazyLayout का ओवरलोड जोड़ा गया है. यह LazyLayoutItemProvider का लैम्डा स्वीकार करता है, न कि पहले की तरह कोई सामान्य ऑब्जेक्ट. पिछले ओवरलोड को बंद कर दिया गया है. (I42a5a)
  • privateImeOptions को कॉन्फ़िगर करने की सुविधा जोड़ी गई (Idb772)

गड़बड़ियां ठीक की गईं

  • readOnly के सही होने पर, टेक्स्ट फ़ील्ड में कीबोर्ड दिखने और उनमें बदलाव किए जा सकने की समस्या को ठीक किया गया है. इसके अलावा, फ़ोकस किए जाने के दौरान readOnly को सही से गलत पर बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)

वर्शन 1.6.0-alpha02

26 जुलाई, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha02 रिलीज़ हो गया है. वर्शन 1.6.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • PagerLayoutInfo को लॉन्च किया गया. इसमें Pager में मेज़रमेंट पास होने के बाद इकट्ठा की गई जानकारी शामिल है. साथ ही, PageInfo को भी लॉन्च किया गया है. यह Pager में मेज़र किए गए किसी एक पेज के बारे में जानकारी देता है. (Iad003, b/283098900)
  • कंपोज़ेबल में इस्तेमाल किए जा सकने वाले इनपुट तय करने के लिए अतिरिक्त एनोटेशन (I51109)
  • टेस्ट में फ़ोकस करने का अनुरोध करने के लिए, SemanticsNodeInteraction.requestFocus को ज़्यादा सुविधाजनक और आसानी से ढूंढने वाले तरीके के तौर पर जोड़ा गया है. (Ie8722)
  • PlatformTextInput* API को पूरी तरह से फिर से डिज़ाइन किया गया है. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController और LocalSoftwareKeyboardController अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. LocalSoftwareKeyboardController अब एक सही CompositionLocal भी है. (I4c364)
  • Modifier.transformable अब canPan पैरामीटर में पैन डेल्टा उपलब्ध कराता है. इससे पैन की दिशा का पता लगाने में मदद मिलती है, ताकि इसे अनुमति दी जा सके या अनुमति न दी जा सके. (I692aa, b/266829800)
  • सुपरक्लास AbstractComposeView (Iacd74, b/269479941) को बढ़ाने के लिए, मॉडिफ़ायर consumeWindowInsets को अपडेट करता है

वर्शन 1.6.0-alpha01

21 जून, 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha01 रिलीज़ हो गया है. वर्शन 1.6.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Foundation में नया AnchoredDraggable API जोड़ा गया है. इसका इस्तेमाल ऐसे कॉम्पोनेंट बनाने के लिए किया जा सकता है जिन्हें अलग-अलग स्थितियों के बीच ड्रैग किया जा सकता है. जैसे, बॉटम शीट वाले मोडल. यह एपीआई, Material के Swipeable एपीआई की जगह लेगा. (I4a2ed)

एपीआई में हुए बदलाव

  • InputConnection#requestCursorUpdates (I0c69b)
  • कस्टम ऐनिमेशन स्पेसिफ़िकेशन की अनुमति देने के लिए, scrollAnimationSpec को जोड़ा गया. BringIntoViewCalculator को BringIntoViewScroller में अपडेट किया गया. (Idb741)
  • ResourceResolutionException टाइप जोड़ें, ताकि लोड न हो पाने वाली बिटमैप ऐसेट को लोड करने की कोशिश करते समय थ्रो किए गए थ्रोएबल को रैप किया जा सके. साथ ही, लोड न हो पाने वाली ऐसेट के पाथ की जानकारी दी जा सके. (I19f44, b/230166331, b/278424788)
  • टेक्स्ट का अनुवाद करने के लिए, सिमैंटिक्स प्रॉपर्टी और कार्रवाइयां जोड़ी गई हैं. (I4a6bc)
  • BringIntoViewCalculator एपीआई लॉन्च किया गया है. इसका इस्तेमाल करके, यह तय किया जा सकता है कि Scrollable जैसे कॉम्पोनेंट, bringIntoView अनुरोधों का जवाब कैसे दें. स्क्रोल किए जा सकने वाले कॉन्टेंट के ओवरलोड को बदलकर, BringIntoViewCalculator के इंस्टेंस को स्वीकार करने का विकल्प जोड़ा गया. (Iaf5af)

गड़बड़ियां ठीक की गईं

  • अगर आपने कंपोज़िशन में MutableInteractionSource बनाया है, तो आपको चेतावनी देने के लिए लिंट चेक जोड़ा गया है. यह लिंट चेक, म्यूटबल स्टेट / Animatable बनाने के लिए किए जाने वाले लिंट चेक की तरह ही काम करता है. (I5daae)
  • माउस से चुनने की सुविधा जोड़ी गई. टच करके चुने गए हिस्से को शब्द के हिसाब से बढ़ाया जाएगा और वर्ण के हिसाब से कम किया जाएगा. (Ic0c6c, b/180639271)
  • कस्टम FocusTarget बनाने के लिए, FocusTargetModifierNode इंटरफ़ेस जोड़ा गया. (I9790e)

संस्‍करण 1.5

वर्शन 1.5.4

18 अक्टूबर, 2023

androidx.compose.foundation:foundation-*:1.5.4 रिलीज़ हो गया है. वर्शन 1.5.4 में ये बदलाव शामिल हैं.

वर्शन 1.5.3

4 अक्टूबर, 2023

androidx.compose.foundation:foundation-*:1.5.3 रिलीज़ हो गया है. इस वर्शन में कोई बदलाव नहीं किया गया है.

संस्‍करण 1.5.2

27 सितंबर, 2023

androidx.compose.foundation:foundation-*:1.5.2 रिलीज़ हो गया है. वर्शन 1.5.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • टेक्स्ट में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, सिमैंटिक अमान्य होने पर कुछ मामलों में ऐप्लिकेशन क्रैश हो जाता था.

संस्‍करण 1.5.1

6 सितंबर, 2023

androidx.compose.foundation:foundation-*:1.5.1 रिलीज़ हो गया है. वर्शन 1.5.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • readOnly के सही होने पर, टेक्स्ट फ़ील्ड में कीबोर्ड दिखने और उनमें बदलाव किए जा सकने की समस्या को ठीक किया गया है. इसके अलावा, फ़ोकस किए जाने के दौरान readOnly को सही से गलत पर बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)

वर्शन 1.5.0

9 अगस्त, 2023

androidx.compose.foundation:foundation-*:1.5.0 रिलीज़ हो गया है. वर्शन 1.5.0 में ये बदलाव शामिल हैं.

1.4.0 के बाद हुए अहम बदलाव

  • कई बुनियादी मॉडिफ़ायर, जैसे कि Modifier.clickable,Modifier.draggable, Modifier.scrollable, लेआउट मॉडिफ़ायर वगैरह को Modifier.Node एपीआई पर माइग्रेट कर दिया गया है. इससे शुरुआती कंपोज़िशन पर ओवरहेड कम हो गया है.
  • पेजर की परफ़ॉर्मेंस में सुधार किया गया है. कई बग ठीक किए गए हैं.
  • pageCount पैरामीटर अब पेजर में मौजूद नहीं हैं, बल्कि PagerState में मौजूद हैं

वर्शन 1.5.0-rc01

26 जुलाई, 2023

androidx.compose.foundation:foundation-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • प्रिमिटिव के लिए, mutableStateOf() कॉल को उनके खास टाइप में माइग्रेट करने का सुझाव देने के लिए, जांच का विकल्प उपलब्ध है. इसका लिंट आईडी AutoboxingStateCreation है. पहले, यह जांच सभी प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती थी. Android Studio के एडिटर और आपके प्रोजेक्ट के लिंट आउटपुट में इस चेतावनी को देखने के लिए, इसकी गंभीरता को सूचना से बदलकर चेतावनी (या इससे ज़्यादा) पर सेट करें. इसके लिए, अपने मॉड्यूल के build.gradle या build.gradle.kts कॉन्फ़िगरेशन में warning "AutoboxingStateCreation" को इस तरह से एलान करें (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

वर्शन 1.5.0-beta03

28 जून, 2023

androidx.compose.foundation:foundation-*:1.5.0-beta03 रिलीज़ हो गया है. वर्शन 1.5.0-beta03 में ये बदलाव शामिल हैं.

वर्शन 1.5.0-beta02

7 जून, 2023

androidx.compose.foundation:foundation-*:1.5.0-beta02 रिलीज़ हो गया है. वर्शन 1.5.0-beta02 में ये बदलाव शामिल हैं.

वर्शन 1.5.0-beta01

24 मई, 2023

androidx.compose.foundation:foundation-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • धड़कन की दर और रोज़ाना चले गए कदमों की जानकारी देने के लिए, PlatformDataProvider लागू करें. SensorGateway इंटरफ़ेस को सार्वजनिक एपीआई से हटा दिया गया है. (I55b84)

गड़बड़ियां ठीक की गईं

  • लेज़ी लिस्ट/ग्रिड वगैरह के मेज़रमेंट के दौरान, मेमोरी के इस्तेमाल को कम करना (Iaf9e2)
  • स्नैपशॉट लागू करने पर कम किए गए असाइनमेंट (I65c09)
  • स्प्रिंग ऐनिमेशन से असाइन किए गए संसाधन हटाए गए (Ie9431)
  • TextLayout (I0fd11) से बजट का बंटवारा हटाया गया
  • पॉइंटर की वेलोसिटी ट्रैकिंग में कई ऐसेट के लिए किए गए असाइनमेंट हटाए गए (I26bae)

वर्शन 1.5.0-alpha04

10 मई, 2023

androidx.compose.foundation:foundation:1.5.0-alpha04 और androidx.compose.foundation:foundation-layout:1.5.0-alpha04 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया TextStyle.merge(...) जोड़ा गया. (Iad234, b/246961787)
  • SnapLayoutInfoProvider को लॉन्च करें, जिसका इस्तेमाल LazyGridState के साथ किया जा सकता है. (I92134, b/269237141, b/260914964)
  • लेज़ी स्टैगर्ड ग्रिड के आइटम स्कोप के लिए, एक्सपेरिमेंटल Modifier.animateItemPlacement() जोड़ा गया. इसका इस्तेमाल, सामान की लिस्टिंग में अपने-आप होने वाले बदलाव या क्रम बदलने वाले ऐनिमेशन के लिए किया जा सकता है. (I4b62d, b/257034719)
  • GridCells.FixedSize को स्टेबल वर्शन पर प्रमोट करें. FixedSize एक LazyGrid को तय करता है. इसमें हर सेल, क्रॉस ऐक्सिस पर सटीक साइज़ लेता है. साथ ही, बाकी स्पेस को क्रॉस ऐक्सिस के हिसाब से डिस्ट्रिब्यूट किया जाता है. (I8542f)
  • पेजर के लिए, रिसीवर स्कोप PagerScope जोड़ा गया है. साथ ही, दिए गए पेज ऑफ़सेट की गिनती करने के लिए, एक यूटिलिटी फ़ंक्शन जोड़ा गया है. (If2577)
  • स्नैप फ़्लिंग का व्यवहार बनाते समय, snapPositionalThreshold को शामिल करें. इस पैरामीटर का इस्तेमाल करके, Pager में शॉर्ट स्नैपिंग के लिए पोज़िशनल थ्रेशोल्ड तय करें. (If8f7f)
  • SnapLayoutInfoProvider.calculateSnappingOffsetBounds को calculateSnappingOffset से बदला गया. इस नए तरीके में, हम स्नैप करने के लिए सिर्फ़ अगले ऑफ़सेट का अनुरोध करते हैं. बाउंड्री की गिनती, लागू करने के लेवल पर की जानी चाहिए. ऐसा इसलिए, क्योंकि यह इस बात पर निर्भर करता है कि स्नैपिंग कैसे होनी चाहिए. (I923a4)
  • LazyStaggeredGrid एपीआई को स्टेबल वर्शन में अपग्रेड कर दिया गया है. (I633a5)
  • Horizontal/VerticalPager से pageCount को हटाएं. यह जानकारी, राज्य बनाते समय दी जानी चाहिए. pageCount को स्वीकार करने के लिए, PagerState और rememberPagerState को अपडेट किया गया. (Ieb52d, b/266965072)
  • Horizontal/VerticalPager से pageCount को हटाएं. यह जानकारी, राज्य बनाते समय दी जानी चाहिए. pageCount को स्वीकार करने के लिए, PagerState और rememberPagerState को अपडेट किया गया. (Ifa3cb, b/266965072)
  • पेजर के SnapFlingBehavior में shortSnapVelocityThreshold को शामिल करें. (I7379e, b/275579012)
  • FlowRowScope और FlowColumnScope जोड़ता है. (I54fe2)

गड़बड़ियां ठीक की गईं

  • जब टेक्स्ट पर सिमैंटिक्स पाने के लिए कॉल किए जाते हैं, तब minWidth और minHeight की वजह से अब क्रैश नहीं होता. (Ibd072)
  • उस रिग्रेशन को ठीक किया गया है जिसमें Dialog कंपोज़ेबल से नहीं बनाए गए डायलॉग में मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था. (I82551, b/262140644)

वर्शन 1.5.0-alpha03

19 अप्रैल, 2023

androidx.compose.foundation:foundation:1.5.0-alpha03 और androidx.compose.foundation:foundation-layout:1.5.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha03 में ये बदलाव शामिल हैं.

इस रिलीज़ से, Compose के लिए नया टेक्स्ट रेंडरिंग स्टैक चालू हो जाता है. नया स्टैक, परफ़ॉर्मेंस के लिए ऑप्टिमाइज़ किया गया है. इसलिए, आपको कोई बदलाव नहीं दिखेगा.

अगर आपको रेंडर किए गए टेक्स्ट में बदलाव दिखते हैं, तो NewTextRendering1_5 = false सेट करके डीबग किया जा सकता है. इससे यह पुष्टि की जा सकेगी कि दोनों वर्शन में क्या अंतर है. इसे सेट करने से, फिर से कंपोज़ करने की प्रोसेस शुरू हो जाएगी. कृपया व्यवहार में अंतर से जुड़ी किसी भी समस्या की शिकायत करें.

1.5 beta01 रिलीज़ होने से पहले, डीबग फ़्लैग हटा दिया जाएगा.(Iada23, b/246960758)

एपीआई में हुए बदलाव

  • FlowColumn/FlowRow को इनलाइन के तौर पर शामिल करें. (Idab37)

वर्शन 1.5.0-alpha02

5 अप्रैल, 2023

androidx.compose.foundation:foundation:1.5.0-alpha02 और androidx.compose.foundation:foundation-layout:1.5.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • LazyGrid में तय साइज़ वाली सेल के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित करने की सुविधा भी जोड़ी गई है. (I83ed9, b/235121277, b/267942510)
  • LazyStaggeredGrid में तय साइज़ वाली लेन के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस अरेंजमेंट के साथ व्यवस्थित किया गया है. (I7d519)
  • AnnotatedString में मौजूद 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) में पूरी लाइन के स्पैन के लिए सहायता जोड़ी गई
  • ClickableText (I6938f) में एक्सपेरिमेंट के तौर पर उपलब्ध onHover को जोड़ा जा रहा है
  • runComposeUiTest फ़ंक्शन और create*ComposeRule फ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन, CoroutineContext पैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भी LaunchedEffect और rememberCoroutineScope() कॉल के लिए किया जाएगा. (I10614, b/265177763)
  • FlowRow और FlowColumn अब @ExperimentalFoundationApi के तौर पर उपलब्ध हैं. इनकी मदद से, कॉम्पोनेंट को ज़्यादा फ़्लेक्सिबल तरीके से लाइन और कॉलम के हिसाब से लेआउट किया जा सकता है. अगर मुख्य ऐक्सिस पर ज़रूरत के मुताबिक जगह नहीं है, तो कॉम्पोनेंट नई लाइन में आ जाएंगे. (I3a7b2)
  • Modifier.basicMarquee(), एक्सपेरिमेंट के तौर पर उपलब्ध है. इसका इस्तेमाल, स्क्रोलिंग मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाने के लिए किया जाता है. (I2df44, b/139321650)

वर्शन 1.4.0-rc01

8 मार्च, 2023

androidx.compose.foundation:foundation:1.4.0-rc01 और androidx.compose.foundation:foundation-layout:1.4.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.4.0-rc01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल PlatformTextInputAdapter एपीआई लॉन्च किया गया है. यह सीधे तौर पर प्लैटफ़ॉर्म एपीआई से कम्यूनिकेट करता है. (I58df4)
  • LazyStaggeredGrid में रिवर्स लेआउट के लिए सहायता जोड़ी गई. (I3ef4a)

गड़बड़ियां ठीक की गईं

  • BasicTextField की SetText सिमैंटिक्स कार्रवाई, अब टेक्स्ट बफ़र को अपडेट करेगी. इसके लिए, वही कोड पाथ इस्तेमाल किया जाएगा जो IME अपडेट और टेस्टिंग फ़ंक्शन (जैसे कि performTextReplacement) के लिए इस्तेमाल किया जाता है.
  • टेक्स्ट टेस्टिंग के फ़ंक्शन performTextClearance, performTextReplacement, और performTextSelection अब SemanticsActions का इस्तेमाल करते हैं. (I0807d, b/269633168, b/269624358)

वर्शन 1.4.0-beta02

22 फ़रवरी, 2023

androidx.compose.foundation:foundation:1.4.0-beta02 और androidx.compose.foundation:foundation-layout:1.4.0-beta02 रिलीज़ हो गए हैं. वर्शन 1.4.0-beta02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • एक नया Modifier.Node.onReset() कॉलबैक जोड़ा गया है. इससे, कुछ लोकल स्टेट को रीसेट किया जा सकता है. ऐसा तब किया जाता है, जब Layout का फिर से इस्तेमाल किया जाता है. उदाहरण के लिए, LazyColumn के आइटम के तौर पर. फ़ोकस की गई स्थिति को ठीक से रीसेट करने के लिए, FocusTargetModifierNode को ठीक किया गया है. (I65495, b/265201972)
  • Canvas पर टेक्स्ट बनाते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम इस्तेमाल करने के लिए, DrawScope.drawText, Paragraph.paint, और MultiParagraph.paint तरीकों में BlendMode पैरामीटर जोड़ा गया. (I57508)
  • modifierElementOf() API को हटा दिया गया है. इसके बजाय, कृपया सीधे ModifierNodeElement से एक्सटेंशन लागू करें. (Ie6d21)

गड़बड़ियां ठीक की गईं

  • चुने गए हिस्से को अडजस्ट करने वाले हैंडल का इस्तेमाल करके, अब किसी वर्ण के कुछ हिस्से को नहीं चुना जा सकता. (Idedd1)
  • खाली TextField पर ctrl+backspace दबाने पर क्रैश होने की समस्या ठीक की गई (I0427f, b/244185537)

वर्शन 1.4.0-beta01

8 फ़रवरी, 2023

androidx.compose.foundation:foundation:1.4.0-beta01 और androidx.compose.foundation:foundation-layout:1.4.0-beta01 रिलीज़ हो गए हैं. वर्शन 1.4.0-beta01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • 1.3 वर्शन के बाद, Text और TextField के साथ-साथ पैराग्राफ़ के निचले लेवल में इमोजी इंटिग्रेशन की सुविधा जोड़ी गई है. emojicompat कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.
  • EmojiCompat का इस्तेमाल करके, किसी टेक्स्ट पर PlatformParagraphStyle को कॉन्फ़िगर किया जा सकता है.

एपीआई में हुए बदलाव

  • PinnableContainer एपीआई के सामान्य तरीके को जोड़ा गया है. इसका इस्तेमाल सभी LazyLayouts में किया जाता है. इससे उन आइटम को बनाए रखने में मदद मिलती है जो कंपोज़िशन से बाहर निकल जाते हैं, लेकिन उन्हें अब भी चालू रखने की ज़रूरत होती है. (If45a4)
  • PinnableContainer.PinnedHandle.unpin() का नाम बदलकर release() कर दिया गया है (I4667a)

बाहरी योगदान

  • 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 (I6938f) में एक्सपेरिमेंटल onHover जोड़ा जा रहा है
  • 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)
  • DrawScope फ़ंक्शन के साथ काम करने के लिए, drawText फ़ंक्शन में maxSize: IntSize आर्ग्युमेंट को size: Size से बदल दिया गया है. डिफ़ॉल्ट रूप से size को Size.Unspecified पर सेट किया जाता है. इससे, डिफ़ॉल्ट ऐक्शन और सेटिंग में कोई बदलाव नहीं होना चाहिए. (Icd27d)

गड़बड़ियां ठीक की गईं

  • ज़्यादा नैचुरल फ़ील पाने के लिए, SnapFlingBehaviour में स्नैपिंग फ़िज़िक्स में बदलाव किए गए हैं.

आम समस्या

  • androidx.compose.foundation:1.4.0-alpha03 से androidx.compose.foundation:1.4.0-alpha04 पर अपडेट करने के दौरान, आपको java.lang.NoSuchFieldError गड़बड़ी दिख सकती है. समस्या की शिकायत यहां की गई थी. इस समस्या को ठीक करने के लिए, एक समाधान सबमिट किया गया है. यह Compose के अगले अपडेट में उपलब्ध होगा. इस समस्या को हल करने के लिए, androidx.compose.material और androidx.compose.material3 लाइब्रेरी को नए वर्शन(1.1.0-alpha04) पर अपडेट करें या androidx.compose.foundation को 1.4.0-alpha03 पर डाउनग्रेड करें.

वर्शन 1.4.0-alpha03

7 दिसंबर, 2022

androidx.compose.foundation:foundation:1.4.0-alpha03 और androidx.compose.foundation:foundation-layout:1.4.0-alpha03 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Compose नियम का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) टेस्ट में, withFrameNanos कॉलबैक के दौरान रोके गए कंटीन्यूएशन तब तक डिस्पैच नहीं किए जाएंगे, जब तक सभी फ़्रेम कॉलबैक पूरे नहीं हो जाते. यह सामान्य तौर पर कंपोज़ करने के तरीके से मेल खाता है. हालांकि, पुरानी सेटिंग पर आधारित टेस्ट फ़ेल हो सकते हैं. इससे सिर्फ़ उस कोड पर असर पड़ना चाहिए जो सीधे तौर पर withFrameNanos या withFrameMillis को कॉल करता है. साथ ही, जिसमें उन फ़ंक्शन को पास किए गए कॉलबैक के बाहर लॉजिक होता है. इस लॉजिक को कॉलबैक के अंदर ले जाने की ज़रूरत पड़ सकती है. उदाहरणों के लिए, इस सीएल में ऐनिमेशन टेस्ट में किए गए बदलाव देखें.
  • TestMonotonicFrameClock कंस्ट्रक्टर और फ़ैक्ट्री फ़ंक्शन में, onPerformTraversals: (Long) -> Unit पैरामीटर जोड़ा गया है. यह पैरामीटर ज़रूरी नहीं है. इसका इस्तेमाल, withFrameNanos कॉलबैक के बाद और कॉलर की को-रूटीन फिर से शुरू होने से पहले कोड चलाने के लिए किया जाता है. (Idb413, b/254115946, b/222093277, b/255802670)
  • पेज पर सुलभता से जुड़ी कार्रवाइयों के बारे में जानकारी देने वाले एट्रिब्यूट: PageUp, PageDown, PageLeft, PageRight. ध्यान दें कि ये सिर्फ़ एपीआई 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 से beyondBoundCount API को पहले जैसा करना (I12197)
  • लेज़ी एपीआई में पैरामीटर जोड़ा गया है, ताकि व्यूपोर्ट से बाहर मौजूद आइटम को कंपोज़ और प्लेस किया जा सके (I69e89, b/172029355)
  • BasicText और BasicTextField में minLines पैरामीटर जोड़ा गया. इससे, लाइनों की संख्या (I24294, b/122476634) के हिसाब से, इन कंपोज़ेबल की कम से कम ऊंचाई सेट की जा सकती है

वर्शन 1.4.0-alpha01

24 अक्टूबर, 2022

androidx.compose.foundation:foundation:1.4.0-alpha01 और androidx.compose.foundation:foundation-layout:1.4.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • हाथ के जेस्चर पहचानने वाले डिटेक्टर के लिए, awaitEachGesture() नाम का एक नया तरीका जोड़ा गया. यह forEachGesture() की तरह ही काम करता है. हालांकि, इसमें जेस्चर का लूप पूरी तरह से AwaitPointerEventScope के अंदर काम करता है. इसलिए, इवेंट को दोहराने के दौरान इवेंट नहीं मिटते.
  • forEachGesture() के इस्तेमाल पर रोक लगा दी गई है. अब awaitEachGesture() का इस्तेमाल किया जा सकता है. ऐसा इसलिए किया गया है, क्योंकि में जेस्चर के बीच इवेंट खो जाते हैं. (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)

गड़बड़ियां ठीक की गईं

  • BasicTextField cursorBrush को अब कर्सर टाइमर को रीस्टार्ट किए बिना ऐनिमेट किया जा सकता है. (I812e6, b/236383522)

वर्शन 1.2

वर्शन 1.2.1

10 अगस्त, 2022

androidx.compose.foundation:foundation:1.2.1 और androidx.compose.foundation:foundation-layout:1.2.1 रिलीज़ हो गए हैं. वर्शन 1.2.1 में ये बदलाव शामिल हैं.

वर्शन 1.2.0

27 जुलाई, 2022

androidx.compose.foundation:foundation:1.2.0 और androidx.compose.foundation:foundation-layout:1.2.0 रिलीज़ हो गए हैं. वर्शन 1.2.0 में ये बदलाव शामिल हैं.

1.1.0 के बाद हुए अहम बदलाव

  • LazyVerticalGrid और LazyHorizontalGrid अब स्थिर हो गए हैं.
  • अब लेज़ी लिस्ट और ग्रिड में मौजूद आइटम के लिए, कॉन्टेंट टाइप तय किया जा सकता है. इससे कॉम्पोनेंट, एलिमेंट का ज़्यादा असरदार तरीके से फिर से इस्तेमाल कर पाएंगे.
  • लेज़ी लिस्ट और ग्रिड में अब userScrollEnabled पैरामीटर है. इससे उपयोगकर्ता के जेस्चर के ज़रिए स्क्रोल करने की सुविधा बंद की जा सकती है.
  • LazyLayout नाम का एक नया एक्सपेरिमेंटल एपीआई जोड़ा गया. It It is the API we use internally to power Lazy lists and grids.
  • OverscrollEffect इस एपीआई को एक्सपेरिमेंट के तौर पर लॉन्च किया गया है. कस्टम स्क्रोल किए जा सकने वाले कंटेनर में, कस्टम ओवरस्क्रोल इफ़ेक्ट तय किए जा सकते हैं. साथ ही, स्टैंडर्ड प्लैटफ़ॉर्म इफ़ेक्ट भी जोड़ा जा सकता है.
  • नेस्टेड स्क्रोलिंग इंटरऑपरेबिलिटी एपीआई को इसलिए लॉन्च किया गया है, ताकि व्यू और कंपोज़ स्क्रोलिंग ऐक्टर के बीच इंटरऑपरेबिलिटी की अनुमति दी जा सके.
  • सभी स्क्रोलिंग कंटेनर में, माउस और ट्रैकपैड से स्क्रोल करने की सुविधा जोड़ी गई है.

वर्शन 1.2.0-rc03

29 जून, 2022

androidx.compose.foundation:foundation:1.2.0-rc03 और androidx.compose.foundation:foundation-layout:1.2.0-rc03 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc03 में ये बदलाव शामिल हैं.

  • 1.2.0-rc02 के बाद से कोई बदलाव नहीं किया गया है.

वर्शन 1.2.0-rc02

22 जून, 2022

androidx.compose.foundation:foundation:1.2.0-rc02 और androidx.compose.foundation:foundation-layout:1.2.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc02 में ये बदलाव शामिल हैं.

वर्शन 1.2.0-rc01

15 जून, 2022

androidx.compose.foundation:foundation:1.2.0-rc01 और androidx.compose.foundation:foundation-layout:1.2.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • कस्टम ओवरस्क्रॉल इफ़ेक्ट की अनुमति देने के लिए, एक एक्सपेरिमेंटल OverscrollEffect पेश किया गया है. साथ ही, Modifier.scrollable ओवरलोड भी पेश किए गए हैं जो इसे स्वीकार करते हैं.
  • एक्सपेरिमेंट के तौर पर उपलब्ध LocalOverScrollConfiguration को foundation.gesture से फ़ाउंडेशन पैकेज में ले जाया गया है. साथ ही, इसका नाम बदलकर LocalOverscrollConfiguration कर दिया गया है (If19fb, b/204650733)
  • Compose लाइब्रेरी में इंटरफ़ेस अब jdk8 के डिफ़ॉल्ट इंटरफ़ेस के तरीकों का इस्तेमाल करके बनाए जाते हैं (I5bcf1)
  • एक एक्सपेरिमेंटल एपीआई checkScrollableContainerConstraints() लॉन्च किया गया है. इससे यह जांच की जा सकती है कि हमने स्क्रोल किए जा सकने वाले कंटेनर को नेस्ट नहीं किया है. LazyLayout के ज़रिए स्क्रोल किए जा सकने वाले लेज़ी लेआउट बनाते समय, इसका इस्तेमाल किया जा सकता है. (Id6fab, b/233352497)
  • androidx.compose.foundation.lazy पैकेज से, बंद हो चुके LazyVerticalGrid को हटा दिया गया है. नया स्टेबल एपीआई, androidx.compose.foundation.lazy.grid (I73c76, b/225192009) में मौजूद है

वर्शन 1.2.0-beta03

1 जून, 2022

androidx.compose.foundation:foundation:1.2.0-beta03 और androidx.compose.foundation:foundation-layout:1.2.0-beta03 रिलीज़ हो गए हैं. वर्शन 1.2.0-beta03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • एक्सपेरिमेंट के तौर पर नई IntervalList और MutableIntervalList जोड़ी गई हैं. इसकी मदद से, वैल्यू की किसी सूची को कई इंटरवल के ज़रिए दिखाया जा सकता है. यह तब काम आएगा, जब आपको LazyColumn में इस्तेमाल किए गए डीएसएल की तरह अपना डीएसएल तय करना हो. इसमें, कई आइटम/आइटम कॉल के ज़रिए सूची के आइटम तय किए जा सकते हैं. (I2d05e, b/228580728)

गड़बड़ियां ठीक की गईं

  • WindowInsets.ime के दस्तावेज़ में यह जानकारी जोड़ी गई है कि 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 को बदलकर एक ही इनम कर दिया गया है: LineHeightTrim. LineHeightTrim में चार स्थितियां होती हैं, जिन्हें दो बूलियन से तय किया जाता है: FirstLineTop, LastLineBottom, दोनों, और कोई नहीं (Ifc6a5, b/181155707)
  • TextStyle में LineHeightBehavior जोड़ा गया है. ParagraphStyle. LineHeightBehavior यह कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के सबसे ऊपर और आखिरी लाइन के सबसे नीचे लागू होती है या नहीं. इससे TextStyle(lineHeight) से मिले स्पेस में लाइन के अलाइनमेंट के बारे में भी पता चलता है.

    उदाहरण के लिए, LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) के ज़रिए सीएसएस के जैसा व्यवहार पाया जा सकता है.

  • trimFirstLineTop और trimLastLineBottom कॉन्फ़िगरेशन, सिर्फ़ तब सही तरीके से काम करते हैं, जब includeFontPadding की वैल्यू false हो. (I97332, b/181155707)

  • एक्सपेरिमेंट के तौर पर imeNestedScroll() मॉडिफ़ायर जोड़ा गया है, ताकि डेवलपर स्क्रोल करके IME को कंट्रोल कर सकें. (I60759)

गड़बड़ियां ठीक की गईं

  • रिग्रेशन की समस्या को ठीक किया गया है. इसमें फ़ोकस किए गए टेक्स्ट फ़ील्ड को कंपोज़िशन से हटाने पर, कीबोर्ड नहीं छिपता था. (I7a410, b/230536793, b/225541817)
  • जब ऊंचाई सीमित हो और सभी टेक्स्ट लाइनें फ़िट न हो रही हों, तो एलिप्सिस का इस्तेमाल किया जा सकता है (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView अब हमेशा तब तक निलंबित रहेगा, जब तक अनुरोध पूरा नहीं हो जाता या किसी नए अनुरोध की वजह से इसमें रुकावट नहीं आती. एक ही समय पर किए गए अनुरोधों को क्रम से लगाया जाएगा. (I43e7f, b/216790855)
  • पूरी तरह से ओवरलैप होने वाले रेक्टैंगल के लिए, एक साथ किए गए BringIntoViewRequester.bringIntoView कॉल में अब सिर्फ़ बड़े रेक्टैंगल के अनुरोध को पूरा किया जाएगा. (I34be7, b/216790855, b/184760918)
  • डिफ़ॉल्ट includeFontPadding चालू किया गया. TextStyle.platformTextStyle एट्रिब्यूट का इस्तेमाल करके, includeFontPadding को बंद किया जा सकता है. हम आने वाले समय में, डिफ़ॉल्ट व्यवहार में बदलाव करेंगे. हालांकि, तब तक इससे हमें लाइन की ऊंचाई को बेहतर बनाने (aosp/2058653) और TextField क्लिप करने की समस्याओं को हल करने में मदद मिलेगी. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester अब onGloballyPositioned का इस्तेमाल नहीं करता. (I630f5)

बाहरी योगदान

  • MouseInjectionScope.scroll(delta = someDelta) को अब Android पर उलटा कर दिया गया है. ऐसा तब होता है, जब हम ऊपर से नीचे या नीचे से ऊपर की ओर स्क्रोल करते हैं. अगर कुछ डेल्टा पॉज़िटिव है, तो यह नीचे की ओर स्क्रोल करेगा (Ifb697, b/224992993)

वर्शन 1.2.0-alpha08

20 अप्रैल, 2022

androidx.compose.foundation:foundation:1.2.0-alpha08 और androidx.compose.foundation:foundation-layout:1.2.0-alpha08 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha08 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • FontFamily.SansSerif का इस्तेमाल करते समय, Android पर सिस्टम फ़ॉन्ट के लिए उपलब्ध सभी वेट दिखाएं. यह API 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)
  • वेक्टर ड्रॉएबल को पार्स करने की सुविधा को अपडेट किया गया है. इससे, मौजूदा लेआउट की दिशा RTL होने पर, VectorPainter के कॉन्टेंट को अपने-आप फ़्लिप करने में मदद मिलती है. (I79cd9, b/185760237)

गड़बड़ियां ठीक की गईं

  • स्क्रोल मॉडिफ़ायर (Modifier.verticalScroll(),Modifier.horizontalScroll(), और Modifier.scrollable()) अब स्क्रोल करके, फ़ोकस किए गए कंपोज़ेबल को तब भी दिखाएंगे, जब स्क्रोल एरिया का साइज़ बदला गया हो और फ़ोकस किया गया कंपोज़ेबल पहले से दिख रहा हो.
  • अब टेक्स्ट फ़ील्ड को कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब टेक्स्ट फ़ील्ड पर फ़ोकस किया गया हो और कीबोर्ड दिख रहा हो. साथ ही, जब टेक्स्ट फ़ील्ड को स्क्रोल किया जा सकता हो और सॉफ़्ट इनपुट मोड ADJUST_RESIZE पर सेट हो. (I4a485, b/190539358, b/192043120, b/216842427)

वर्शन 1.2.0-alpha05

9 मार्च, 2022

androidx.compose.foundation:foundation:1.2.0-alpha05 और androidx.compose.foundation:foundation-layout:1.2.0-alpha05 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha05 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • LazyVerticalGrid और LazyHorizontalGrid अब स्थिर हो गए हैं. (I307c0)
  • LazyGridItemInfo.Unknown को अलग-अलग LazyGridItemInfo.UnknownRow और LazyGridItemInfo.UnknownColumn से बदल दिया गया (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid और इससे जुड़ी सभी एपीआई को .grid सबपैकेज में ले जाया गया है. कृपया androidx.compose.foundation.lazy से androidx.compose.foundation.lazy.grid में इंपोर्ट किए गए डेटा को अपडेट करें. (I2d446, b/219942574)
  • टेक्स्ट: includeFontPadding अब डिफ़ॉल्ट रूप से बंद है. includeFontPadding=false की वजह से होने वाली क्लिपिंग की समस्याओं को ठीक कर दिया गया है. साथ ही, लंबी स्क्रिप्ट के लिए क्लिपिंग नहीं होनी चाहिए. (I31c84, b/171394808)
  • मेज़र किए गए इंटरफ़ेस में अब parentData प्रॉपर्टी (I3313f) दिखती है
  • एक्सपेरिमेंट के तौर पर Modifier.onFocusedBoundsChanged को लॉन्च किया गया है. इससे, बच्चों के लिए फ़ोकस किए जा सकने वाले एलिमेंट की सीमाओं को देखा जा सकता है. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • LazyHorizontalGrid को जोड़ा गया. (I61ae7, b/191238807)
  • क्रॉस ऐक्सिस के साइज़ तय करने के लिए, नया LazyVerticalGrid API जोड़ा गया (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)
  • Android पर नए टाइप के फ़ॉन्ट रिसॉर्स डिस्क्रिप्टर उपलब्ध कराने के लिए, नया लो-लेवल एपीआई AndroidFont जोड़ा गया है. उदाहरण के लिए, किसी ऐप्लिकेशन के बैकएंड से फ़ॉन्ट लोड करना, उपयोगकर्ता के डिवाइस पर पहले से इंस्टॉल किए गए फ़ॉन्ट का पता लगाना या ऐसे संसाधन से फ़ॉन्ट लोड करना जो फ़ॉन्ट फ़ैक्ट्रियों के मौजूदा वर्शन में उपलब्ध नहीं है.
    • Font.ResourceLoaded एपीआई को बेहतर बनाया गया है, ताकि फ़ॉन्ट को ज़रूरत के हिसाब से और एसिंक्रोनस तरीके से लोड किया जा सके. हमारा सुझाव है कि ऐप्लिकेशन डेवलपर इस एपीआई का सीधे तौर पर इस्तेमाल न करें. नए तरह के फ़ॉन्ट जोड़ने के लिए, AndroidFont देखें.
    • Font.AndroidResourceLoader एक्सटेंशन फ़ंक्शन, कंपोज़िशन के बाहर होने पर Font.ResourceLoader बनाने की अनुमति देता है.
    • संसाधन पर आधारित फ़ॉन्ट में loadingStrategy पैरामीटर जोड़ा गया, ताकि संसाधन फ़ॉन्ट, डाउनलोड किए जा सकने वाले फ़ॉन्ट के एक्सएमएल को रेफ़रंस करते समय, एसिंक लोडिंग की अनुमति दी जा सके. (Ie5aea, b/174162090)
  • Typeface(FontFamily) कंस्ट्रक्टर का अब इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. डाउनलोड किए जा सकने वाले फ़ॉन्ट के साथ, यह कॉल 10 सेकंड के लिए ब्लॉक हो सकता है. इसके बजाय, FontFamilyResolver.preload का इस्तेमाल करें
    • fontResource(FontFamily): Typeface के इस्तेमाल पर रोक लगा दी गई है. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. इसके बजाय, FontFamilyResolver.preload (If8e7c, b/174162090) का इस्तेमाल करें
  • अब LazyVerticalGrid फ़ंक्शन के आइटम के लिए, कॉन्टेंट टाइप तय किया जा सकता है. LazyGridScope पर मौजूद item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लॉजिक को फिर से इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ फिर से इस्तेमाल किया जा सकता है. (I7b355, b/215372836)
  • LazyListLayoutInfo और LazyGridLayoutInfo में अब नई प्रॉपर्टी हैं: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • अब LazyColumn/LazyRow के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है. LazyListScope पर मौजूद item/items फ़ंक्शन, अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कंपोज़िशन के लॉजिक को फिर से इस्तेमाल करने में मदद मिलती है. इससे, एक जैसे आइटम के बीच कॉन्टेंट को ज़्यादा असरदार तरीके से और सिर्फ़ फिर से इस्तेमाल किया जा सकता है. (I26506)
  • SubcomposeLayoutState कंस्ट्रक्टर में maxSlotsToRetainForReuse स्वीकार करने की सुविधा अब काम नहीं करती. इसके बजाय, एक नया कंस्ट्रक्टर है जो SubcomposeSlotReusePolicy स्वीकार करता है. यह एक नया इंटरफ़ेस है, जो यह तय करने के लिए ज़्यादा कंट्रोल देता है कि आने वाले समय में फिर से इस्तेमाल करने के लिए, किन स्लॉट को बनाए रखना चाहिए. (I52c4d)
  • यह WindowInsets के लिए मॉडिफ़ायर जोड़ता है. ये मॉडिफ़ायर, पैडिंग और साइज़िंग, दोनों के लिए होते हैं. इससे कुछ कॉन्टेंट को इंसर्ट एरिया में बढ़ाया जा सकता है. साथ ही, मुख्य कॉन्टेंट को इंसर्ट एरिया से बाहर रखा जा सकता है. उदाहरण के लिए, windowInsetsPadding का इस्तेमाल कॉन्टेंट वाले हिस्से में पैडिंग जोड़ने के लिए किया जा सकता है. इससे उन हिस्सों से बचा जा सकता है जो पूरी तरह या कुछ हद तक ढके हो सकते हैं. (Id0395, b/213942085)

गड़बड़ियां ठीक की गईं

  • अब टेक्स्ट फ़ील्ड को कीबोर्ड के ऊपर रखा जाएगा. ऐसा तब होगा, जब उन्हें फ़ोकस किया जाएगा और कीबोर्ड दिखेगा. साथ ही, जब सॉफ़्ट इनपुट मोड ADJUST_PAN पर सेट होगा. (I8eaeb, b/190539358, b/192043120)
  • डेस्कटॉप, FontFamily.Resolver के लिए कंपोज़िशन लोकल का इस्तेमाल करता है
    • डेस्कटॉप पर FontLoader की सुविधा अब काम नहीं करती
    • डेस्कटॉप पर नई createFontFamilyResolver फ़ैक्ट्री (I6bbbb, b/174162090)
  • टेक्स्ट फ़ील्ड के बीच फ़ोकस बदलने पर, अब सॉफ़्ट कीबोर्ड इनपुट टाइप फ़्लिकर नहीं होता. (I1bf50, b/187746439)
  • कर्सर हैंडल दिखने पर, टेक्स्ट फ़ील्ड में अब बैक बटन को दोबारा दबाने की ज़रूरत नहीं होती. (Ideb4b, b/205726883)
  • टेक्स्ट चुनने की सुविधा के लिए Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)

वर्शन 1.2.0-alpha02

26 जनवरी, 2022

androidx.compose.foundation:foundation:1.2.0-alpha02 और androidx.compose.foundation:foundation-layout:1.2.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • NonRestartableComposable को उन तरीकों में जोड़ा गया है जो कॉम्प्लेक्स लॉजिक के बिना मौजूदा तरीकों के ओवरलोड हैं. इससे, कॉल किए गए इनर फ़ंक्शन में दोहराए गए सभी पैरामीटर के लिए, कंपाइलर के जनरेट किए गए मेमोइज़ेशन चेक (बराबर) कम हो जाते हैं. (I90490)
  • Android के setSystemGestureExclusionRects को आसानी से ऐक्सेस करने के लिए, excludeFromSystemGesture मॉडिफ़ायर जोड़े गए (I46f07)

गड़बड़ियां ठीक की गईं

  • टेक्स्ट चुनने की सुविधा के लिए, Magnifier के व्यवहार को बेहतर बनाया गया है, ताकि यह प्लैटफ़ॉर्म के Magnifier से मैच हो सके. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll और Modifier.scrollable का इस्तेमाल करने वाले अन्य कंटेनर में अब माउस के पहिए को घुमाकर स्क्रोल करने की सुविधा काम करती है. (I2b5e1, b/198214718)

वर्शन 1.2.0-alpha01

12 जनवरी, 2022

androidx.compose.foundation:foundation:1.2.0-alpha01 और androidx.compose.foundation:foundation-layout:1.2.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • उपयोगकर्ताओं को टच जेस्चर या सुलभता कार्रवाइयों के ज़रिए, उपयोगकर्ता की ओर से शुरू किए गए स्क्रोल को कुछ समय के लिए या हमेशा के लिए बंद करने की अनुमति देने के लिए, LazyColumn, LazyRow, और LazyVerticalGrid में नया पैरामीटर userScrollEnabled जोड़ा गया. हालांकि, प्रोग्राम के हिसाब से स्क्रोल करने की सुविधा अब भी उपलब्ध रहेगी. इसके लिए, आपको स्टेट पर मौजूद तरीकों का इस्तेमाल करना होगा. (I7eae9, b/201150093)
  • स्क्रीन पर मौजूद कॉन्टेंट को बड़ा करके दिखाने की सुविधा के मॉडिफ़ायर में 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 को Kotlin 1.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 और AGP 7.1 के अगले वर्शन में ठीक कर दी जाएगी. (b/194289155)

वर्शन 1.0.0-rc02

14 जुलाई, 2021

androidx.compose.foundation:foundation:1.0.0-rc02 और androidx.compose.foundation:foundation-layout:1.0.0-rc02 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.

  • जेनरिक शेप के लिए, बॉर्डर रेंडरिंग को अपडेट किया गया है. इससे तय डाइमेंशन के साथ तय किए गए पाथ से जुड़ी समस्याओं को हल किया जा सकेगा. (aosp/1748871, b/191817116)

वर्शन 1.0.0-rc01

1 जुलाई, 2021

androidx.compose.foundation:foundation:1.0.0-rc01 और androidx.compose.foundation:foundation-layout:1.0.0-rc01 रिलीज़ हो गए हैं. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Canvas में अब accessibility के लिए, contentDescription पैरामीटर का इस्तेमाल किया जा सकता है. (Ib547c)

गड़बड़ियां ठीक की गईं

  • डिसैबल किया गया बटन, कार्ड, चेकबॉक्स, और Modifier.clickable(enabled=false), माता-पिता को क्लिक करने से रोकेंगे. (Ic2c3b, b/183908811)

वर्शन 1.0.0-beta09

16 जून, 2021

androidx.compose.foundation:foundation:1.0.0-beta09 और androidx.compose.foundation:foundation-layout:1.0.0-beta09 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta09 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • ManualFrameClock को हटाया गया. अगर आपको ऐनिमेशन कंट्रोल करने हैं, तो composeTestRule.mainClock का इस्तेमाल करें. (I3c3e8, b/189951065)
  • enum Role और LiveRegionMode को प्राइवेट कंस्ट्रक्टर (Id1890) के साथ इनलाइन क्लास में बदलें
  • KeyboardCapitalization को इनलाइन क्लास में बदल दिया गया है. (Id5a1c)
  • TextOverflow को इनलाइन क्लास में बदल दिया गया है. (I433af)

गड़बड़ियां ठीक की गईं

  • अब LazyColumn/Row आइटम के लिए यूनीक कुंजियां तय करने पर, स्क्रोल की पोज़िशन को कुंजी के हिसाब से बनाए रखा जाएगा. इसका मतलब है कि अगर मौजूदा दिखने वाले आइटम से पहले आइटम जोड़े/हटाए जाते हैं, तो दी गई कुंजी वाला आइटम पहले दिखने वाले आइटम के तौर पर बना रहेगा. (Id263f, b/184257857)
  • फ़िलहाल, मुख्य कॉन्स्टेंट @ExperimentalComposeUiApi हैं. कोड का इस्तेमाल करने वाला व्यक्ति, स्टेबलाइज़ेशन से पहले प्राइवेट कॉन्स्टेंट का एलान कर सकता है. (Ia5d48)
  • AndroidComposeTestRule में IdlingStrategy जोड़ा गया है. इसका इस्तेमाल टेस्टिंग फ़्रेमवर्क, इंतज़ार करने या शांत स्थिति पाने के लिए किसी अन्य मेकेनिज़्म को इंस्टॉल करने के लिए कर सकते हैं. अपनी रणनीति को इंस्टॉल करने के लिए, टेस्ट शुरू होने से पहले AndroidComposeTestRule.setIdlingStrategyFactory() का इस्तेमाल करें. (I608fa)

जोड़े गए प्रोफ़ाइल के नियम

इस रिलीज़ में, कंपोज़ मॉड्यूल में प्रोफ़ाइल के नियम जोड़े गए हैं (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

प्रोफ़ाइल के नियम क्या हैं?

  • किसी लाइब्रेरी के लिए प्रोफ़ाइल के नियम, src/main या उससे मिलती-जुलती डायरेक्ट्री में मौजूद टेक्स्ट फ़ाइल baseline-prof.txt में तय किए जाते हैं. इस फ़ाइल में हर लाइन में एक नियम दिया जाता है. इस मामले में, नियम एक ऐसा पैटर्न होता है जो लाइब्रेरी में मौजूद तरीकों या क्लास से मेल खाता है. इन नियमों का सिंटैक्स, एआरटी प्रोफ़ाइल फ़ॉर्मैट का सुपरसेट है. इसे आसानी से पढ़ा जा सकता है. इसका इस्तेमाल adb shell profman --dump-classes-and-methods ... का इस्तेमाल करते समय किया जाता है. ये नियम, तरीकों या क्लास को टारगेट करने के लिए दो में से किसी एक फ़ॉर्म में होते हैं.

  • किसी तरीके के लिए बनाए गए नियम का पैटर्न इस तरह होगा:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • क्लास के लिए बनाए गए नियम का पैटर्न इस तरह होगा:

    <CLASS_DESCRIPTOR>
    
  • यहां <FLAGS>, H, S, और P में से एक या उससे ज़्यादा वर्ण हैं. इनसे यह पता चलता है कि इस तरीके को "हॉट", "स्टार्टअप" या "पोस्ट स्टार्टअप" के तौर पर फ़्लैग किया जाना चाहिए या नहीं.

  • <CLASS_DESCRIPTOR> उस क्लास का डिस्क्रिप्टर है जिससे टारगेट किया गया तरीका जुड़ा है. उदाहरण के लिए, क्लास androidx.compose.runtime.SlotTable का डिस्क्रिप्टर Landroidx/compose/runtime/SlotTable; होगा.

  • <METHOD_SIGNATURE>, मेथड का सिग्नेचर होता है. इसमें मेथड का नाम, पैरामीटर टाइप, और रिटर्न टाइप शामिल होते हैं. उदाहरण के लिए, LayoutNode पर मौजूद fun isPlaced(): Boolean तरीके का सिग्नेचर isPlaced()Z है.

  • इन पैटर्न में वाइल्डकार्ड (**, *, और ?) हो सकते हैं, ताकि एक नियम में कई तरीके या क्लास शामिल हों.

नियमों से क्या होता है?

  • जिस तरीके में H फ़्लैग होता है उससे पता चलता है कि यह "हॉट" तरीका है और इसे पहले से कंपाइल किया जाना चाहिए.

  • जिस तरीके में S फ़्लैग होता है उससे पता चलता है कि इसे स्टार्टअप के समय कॉल किया जाता है. इसलिए, इसे पहले से कंपाइल किया जाना चाहिए, ताकि स्टार्टअप के समय कंपाइल करने और समझने में लगने वाले समय को बचाया जा सके.

  • जिस तरीके में P फ़्लैग होता है उससे पता चलता है कि यह एक ऐसा तरीका है जिसे स्टार्टअप के बाद कॉल किया जाता है.

  • इस फ़ाइल में मौजूद क्लास से पता चलता है कि इसका इस्तेमाल स्टार्टअप के दौरान किया जाता है. इसलिए, क्लास लोडिंग की लागत से बचने के लिए, इसे हीप में पहले से ही असाइन किया जाना चाहिए.

यह कैसे काम करता है?

  • लाइब्रेरी इन नियमों को तय कर सकती हैं. ये नियम, एएआर आर्टफ़ैक्ट में शामिल किए जाएंगे. जब इन आर्टफ़ैक्ट को शामिल करके कोई ऐप्लिकेशन बनाया जाता है, तो इन नियमों को एक साथ मर्ज कर दिया जाता है. इसके बाद, मर्ज किए गए नियमों का इस्तेमाल करके, ऐप्लिकेशन के लिए एक कॉम्पैक्ट बाइनरी एआरटी प्रोफ़ाइल बनाई जाती है. जब ऐप्लिकेशन को डिवाइसों पर इंस्टॉल किया जाता है, तब एआरटी इस प्रोफ़ाइल का इस्तेमाल कर सकता है. इससे ऐप्लिकेशन के किसी खास सबसेट को पहले से कंपाइल किया जा सकता है, ताकि ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सके. खास तौर पर, पहली बार ऐप्लिकेशन चलाने पर. ध्यान दें कि इससे डीबग किए जा सकने वाले ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.

वर्शन 1.0.0-beta08

2 जून, 2021

androidx.compose.foundation:foundation:1.0.0-beta08 और androidx.compose.foundation:foundation-layout:1.0.0-beta08 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta08 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • NestedScrollSource enum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)
  • नई enum वैल्यू जोड़े जाने पर, when स्टेटमेंट के साथ पूरी तरह से काम करने से जुड़ी समस्याओं से बचने के लिए, enum के इस्तेमाल को इनलाइन क्लास में बदला गया है. (I2b5eb)
  • क्लिक किए जा सकने वाले / टॉगल किए जा सकने वाले आइटम में टैप टाइमआउट जोड़ा गया है, ताकि स्क्रोल / खींचने के दौरान रिपल इफ़ेक्ट न दिखे (Ia2704, b/168524931)
  • ContentDescription और Text सिमैंटिक्स प्रॉपर्टी अब सिंगल वैल्यू नहीं, बल्कि सूचियां हैं. इससे उन्हें जोड़ने के बजाय, मर्ज किया जा सकता है. इन बदलावों का इस्तेमाल करने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
  • Modifier.focusModifier() का अब इस्तेमाल नहीं किया जा सकता. इसे Modifier.focusTarget() (I6c860) से बदल दिया गया है
  • KeyboardType enum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)
  • FocusState enum को FocusState इंटरफ़ेस से बदला गया (Iccc1a, b/187055290)
  • ImeAction enum को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
  • AnnotatedString.withAnnotation फ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)
    • TextUnitType के साथ TextUnit कंस्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.
  • PaddingValues अब @Immutable के बजाय @Stable है (I88c50)

गड़बड़ियां ठीक की गईं

  • टेक्स्ट वाली जगह पर खाली जगह को दबाकर रखने पर ऐप्लिकेशन क्रैश होने की समस्या ठीक की गई. (I33ab5, b/187437299)
  • SelectAll के बाद टूलबार दिखाएं (I495d9, b/185919613)
  • स्क्रोल किए जा सकने वाले कंटेनर में, क्रॉस ऐक्सिस पर मौजूद आइटम के कटने की समस्या को ठीक किया गया है. अगर आपके पास कार्ड आइटम के साथ LazyRow है, तो इसे आसानी से दोहराया जा सकता है. अब शैडो को काटा नहीं जाएगा. (Icb635, b/186318448)
  • उस समस्या को ठीक कर दिया गया है जिसमें Modifier.combinedClickable (I2298c, b / 186223077) का इस्तेमाल करते समय, कभी-कभी लंबे समय तक क्लिक करने पर रिपल/अन्य इंडिकेशन अटक जाते थे
  • अब detectDragGesures, detectVerticalGestures, और detectHorizontalGestures, अपने-आप पोज़िशन बदलने की सुविधा का इस्तेमाल करेंगे. इसलिए, onDrag कॉलबैक (I42fc4, b/185096350, b/187320697) में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है
  • Modifier.onGloballyPositioned() को बदलकर, इस मॉडिफ़ायर के कोऑर्डिनेट को मॉडिफ़ायर चेन में रिपोर्ट करने के लिए इस्तेमाल किया गया. इसमें सभी मॉडिफ़ायर लागू करने के बाद, लेआउट के कोऑर्डिनेट रिपोर्ट नहीं किए जाते. इसका मतलब है कि अब मॉडिफ़ायर के क्रम से यह तय होगा कि कौनसे कोऑर्डिनेट रिपोर्ट किए जाएंगे. (Ieb67d, b/177926591)

वर्शन 1.0.0-beta07

18 मई, 2021

androidx.compose.foundation:foundation:1.0.0-beta07 और androidx.compose.foundation:foundation-layout:1.0.0-beta07 रिलीज़ हो गए हैं. वर्शन 1.0.0-beta07 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • LazyColumn/Row के लिए, दिखने वाले अगले आइटम को पहले से फ़ेच करने का लॉजिक लागू किया गया है (I8a4bc, b/184940225)
  • क्लिप चुनने के लिए हैंडल जोड़ा गया (Iff80d, b/183408447)

गड़बड़ियां ठीक की गईं

  • LazyColumn/Row अब पहले से दिख रहे दो आइटम को ऐक्टिव रखेगा (डिस्पोज़ नहीं करेगा). भले ही, उन्हें स्क्रोल करके हटा दिया गया हो. इससे कॉम्पोनेंट, चालू सबकंपोज़िशन का फिर से इस्तेमाल कर पाता है. ऐसा तब होता है, जब हमें कोई नया आइटम कंपोज़ करना होता है. इससे स्क्रोलिंग की परफ़ॉर्मेंस बेहतर होती है. (Ie5555)
  • paintBackground को हटाएं. (I38660)
  • DrawScope का इस्तेमाल करके, सिलेक्शन का बैकग्राउंड बनाएं. (I73c61, b/186674472)
  • बीटा06 वर्शन में, Row/Column में स्पेस वाले आइटम को व्यवस्थित करने की सुविधा का इस्तेमाल करने पर, बच्चों को लेआउट करने की सुविधा पर असर डालने वाली रिग्रेशन की समस्या को ठीक कर दिया गया है. (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)
  • 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 का इस्तेमाल करने के लिए, Layout API को अपडेट किया गया है / आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
  • InteractionState को [Mutable]InteractionSource से बदल दिया गया है
    • इंटरफ़ेस, इंटरैक्शन इवेंट को ट्रिगर करने / इकट्ठा करने के लिए ज़िम्मेदार होते हैं.
    • Button और Modifier.clickable() जैसे कॉम्पोनेंट को interactionState = remember { InteractionState() } पास करने के बजाय, interactionSource = remember { MutableInteractionSource() } का इस्तेमाल करें.
    • Interaction.Pressed in interactionState के बजाय, आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए. जैसे, InteractionSource.collectIsPressedAsState().
    • जटिल इस्तेमाल के उदाहरणों के लिए, InteractionSource.interactions का इस्तेमाल करके इंटरैक्शन की स्ट्रीम को देखा जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource का दस्तावेज़ और सैंपल देखें.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • LayoutCoordinates के बंद किए गए तरीकों को हटाया गया. positionInParent और boundsInParent के लिए प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
  • CoreTextField जैसे लो लेवल टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
  • Placeable अब measuredSize दिखाता है. इससे पता चलता है कि चाइल्ड लेआउट का साइज़ कितना है. ऐसा हो सकता है कि इस साइज़ में मेज़रमेंट की शर्तों का पालन न किया गया हो. (Ib2729, b/172560206, b/172338608)
  • selectionGroup मॉडिफ़ायर जोड़ें. इससे, सुलभता के लिए टैब या रेडियो बटन के कलेक्शन को मार्क किया जा सकता है (Ie5c29)
  • LazyListState.animateScrollToItem को जोड़ें

    इस तरीके से, सूची में मौजूद किसी आइटम पर आसानी से स्क्रोल किया जा सकता है. (I4bfd7)

  • ScrollableState.smoothScrollBy() का नाम बदलकर animateScrollBy() कर दिया गया है LazyListState.snapToItemIndex() का नाम बदलकर scrollToItem() कर दिया गया है ScrollState.smoothScrollTo() का नाम बदलकर animateScrollTo() कर दिया गया है (I35ded)

  • Modifier.zoomable को Modifier.transformable से बदल दिया गया है. smoothPanBy और smoothRotationBy को एक सुविधा के तौर पर जोड़ा गया है. (Ifc32b, b/175294473)

  • compositionLocalOf और staticCompositionLocalOf के लिए defaultFactory की जानकारी देना अब ज़रूरी है. पहले यह जानकारी देना ज़रूरी नहीं था.

    इस बदलाव से, उन टाइप के लिए संभावित टाइप गड़बड़ी को हटाया जाता है जिनमें डिफ़ॉल्ट फ़ैक्ट्री नहीं दी गई थी. इससे पहले, यह नॉन-नलेबल टाइप के लिए शून्य रेफ़रंस देता था.

    शून्य वैल्यू वाले टाइप के लिए, { null } को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल करें.

    हमारा सुझाव है कि नॉन-नलेबल टाइप के साथ लोकल का इस्तेमाल न करें. हालांकि, ऐसा तब किया जा सकता है, जब कोई डिफ़ॉल्ट वैल्यू दी जा सकती हो. अगर कोई काम का डिफ़ॉल्ट मान मौजूद नहीं है, तो defaultFactory लैम्डा को एक अपवाद दिखाना चाहिए. हालांकि, अपवाद का मतलब है कि स्थानीय स्तर पर मौजूद उपभोक्ताओं को इस बात पर निर्भर रहना होगा कि यह सुविधा उपलब्ध कराई गई है या नहीं. हालांकि, टाइप सिस्टम इसे लागू नहीं करता है. (Ifbd2a)

  • Indication#createIndication() को Indication#rememberUpdatedIndication(InteractionState) में बदलता है और IndicationInstance#drawIndication() से InteractionState पैरामीटर हटाता है. IndicationInstance को सिर्फ़ विज़ुअल इफ़ेक्ट दिखाने चाहिए. साथ ही, InteractionState में होने वाले बदलावों के जवाब में, इसे ऐनिमेशन लॉन्च नहीं करने चाहिए या स्थिति नहीं लिखनी चाहिए. ये ऐनिमेशन और स्टेट राइट, rememberUpdatedIndication() के अंदर होने चाहिए. Modifier.indication में मौजूद indication पैरामीटर को भी बदलकर ज़रूरी पैरामीटर कर दिया गया है. (Ic1764, b/152525426)

  • टेक्स्ट से जुड़ी कार्रवाइयां अब फ़ोकस की जांच अपने-आप करती हैं (I13777, b/179648629)

  • हटाया गया runBlockingWithManualClock (I15cdc, b/179664814)

  • Modifier.verticalScroll()/horizontalScroll() में स्क्रोल की पोज़िशन को अब पूर्णांकों से दिखाया जाता है (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 को तय करता है. इसे ComposeTestRule से हटा दिया गया है. createEmptyComposeRule() फ़ैक्ट्री मेथड जोड़ा गया है. यह ComposeTestRule दिखाता है और आपके लिए कोई गतिविधि लॉन्च नहीं करता. इस विकल्प का इस्तेमाल तब करें, जब आपको टेस्ट के दौरान अपनी ऐक्टिविटी लॉन्च करनी हो. उदाहरण के लिए, ActivityScenario.launch (I9d782, b/174472899) का इस्तेमाल करना

  • animateAsState को अब animateFooAsState कर दिया गया है. यहां Foo, ऐनिमेट की जा रही वैरिएबल का टाइप है. जैसे, फ़्लोट, डीपी, ऑफ़सेट वगैरह (Ie7e25)

  • अरेंजमेंट इंटरफ़ेस के लिए, डेंसिटी अब रिसीवर स्कोप है. (I18aad)

  • TextFieldValue, AnnotatedString को स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. फ़िलहाल, एक से ज़्यादा स्टाइल में टेक्स्ट में बदलाव करने की सुविधा लागू नहीं की गई है.

    • EditingBuffer कंस्ट्रक्टर पैरामीटर से initial को हटाया गया. (I326d5)
  • invalidate और compositionReference() को अब बंद कर दिया गया है. इनके बजाय, currentRecomposeScope और rememberCompositionReference का इस्तेमाल करें. (I583a8)

  • AnnotatedString को kotlin.CharSequence से एक्सटेंड करने के लिए बदला गया है. इसलिए, length और subSequence अब इंस्टेंस फ़ंक्शन हैं. साथ ही, एक्सटेंशन फ़ंक्शन हटा दिए गए हैं. (Iaf429)

  • अवधि और अपटाइम को लंबे मिलीसेकंड से बदल दिया जाएगा. साथ ही, इस चरण में उन क्लास पर पॉइंटर इनपुट की डिपेंडेंसी को हटा दिया जाएगा. (Ia33b2, b/175142755, b/177420019)

  • RememberObserver, CompositionLifecycleObserver की जगह लेता है. साथ ही, अब CompositionLifecycleObserver का इस्तेमाल नहीं किया जा सकता.

    RememberObserver, CompositionLifecycleObserver की जगह इस्तेमाल किया जा सकता है. इसमें सिमैंटिक में बदलाव किया गया है और तरीकों के नाम बदले गए हैं. जिन ऑब्जेक्ट को सिर्फ़ एक बार याद किया जाता है उनके लिए, नए एपीआई पर अपने-आप स्विच किया जा सकता है. यह तरीका सुझाया जाता है और इसका इस्तेमाल जारी रखा जाना चाहिए. हालांकि, अगर किसी कंपोज़िशन में किसी रेफ़रंस को एक से ज़्यादा बार याद किया गया है, तो onRemembered को हर रेफ़रंस के लिए कॉल किया जाता है. वहीं, onEnter को सिर्फ़ एक बार कॉल किया जाता है. onEnter was called multiple time if the object was used in subcompositions, such as WithConstraints and Scaffold making the single onEnter call guarantee unreliable and it was removed for RememberObserver.

    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)
  • monotonicFrameAnimationClockOf के एक्सपेरिमेंटल तरीके हटा दिए गए हैं (Ib753f, b/170708374)

  • ग्लोबल कोऑर्डिनेट के तरीकों का इस्तेमाल बंद कर दिया गया है. साथ ही, विंडो पर आधारित कोऑर्डिनेट के नए तरीके बनाए गए हैं. (Iee284)

  • कृपया ImeAction.NoAction के बजाय ImeAction.None का इस्तेमाल करें

    • कृपया ImeAction.Unspecified (Ie1bcc) के बजाय ImeAction.Default का इस्तेमाल करें
  • FocusRequester.createRefs को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है, क्योंकि इसमें बदलाव हो सकता है. (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden का नाम बदलकर invisibleToUser कर दिया गया है. साथ ही, इसे @ExperimentalComposeUiApi के तौर पर मार्क किया गया है. AccessibilityRangeInfo का नाम बदलकर ProgressBarRangeInfo कर दिया गया है. stateDescriptionRange का नाम बदलकर progressBarRangeInfo कर दिया गया है. AccessibilityScrollState का नाम बदलकर ScrollAxisRange कर दिया गया है. horizontalAccessibilityScrollState का नाम बदलकर horizontalScrollAxisRange कर दिया गया है. verticalAccessibilityScrollState का नाम बदलकर verticalScrollAxisRange कर दिया गया है. (Id3148)

  • VisualTransformation को फ़ंक्शनल इंटरफ़ेस के तौर पर बदला गया (I3bba4)

  • टेस्टिंग में TestCoroutineDispatcher का इस्तेमाल करना (I532b6)

  • PointerInputData को हटाया गया और PointerInputChange में बदलाव किया गया, ताकि इसमें PointerInputData के सभी फ़ील्ड शामिल किए जा सकें. PointerInputEvent और PointerInputEventData को इंटरनल बना दिया गया है, क्योंकि इनका इस्तेमाल किसी भी सार्वजनिक एपीआई में नहीं किया जाता है. (Ifff97, b/175142755)

  • TextInputService.onStateUpdated का नाम बदलकर updateState कर दिया गया है (Id4853)

  • displaySize को हटाएं, क्योंकि इसका इस्तेमाल नहीं किया जाना चाहिए. आम तौर पर, onRoot() या कम से कम विंडो के साइज़ का इस्तेमाल करना बेहतर होता है. (I62db4)

वर्शन 1.0.0-alpha10

13 जनवरी, 2021

androidx.compose.foundation:foundation:1.0.0-alpha10 और androidx.compose.foundation:foundation-layout:1.0.0-alpha10 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha10 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • ImeOptions और KeyboardOptions अब डेटा क्लास नहीं हैं (I3c898, b/168684531)
  • VisualTransformation API में हुए बदलाव
    • OffsetMap का नाम बदलकर OffsetMapping किया गया
    • OffsetMapping.identityOffsetMap का नाम बदलकर OffsetMapping.Identity कर दिया गया है
    • PasswordTransformation अब डेटा-क्लास नहीं है
    • OffsetMapping को उसकी फ़ाइल में ले जाया गया
    • (I0bdf3)
  • EditOperations API में हुए बदलाव
    • EditOperation का नाम बदलकर EditCommand कर दिया गया है
    • EditOperation के कॉन्क्रीट इंप्लीमेंटेशन के लिए, कमांड सफ़िक्स जोड़ा गया
    • EditCommand अब डेटा क्लास नहीं हैं
    • EditOperation.process फ़ंक्शन का नाम बदलकर applyTo कर दिया गया है
    • InputEventListener का नाम बदलकर InputEventCallback कर दिया गया है
    • (I0a366)
  • वेलोसिटी में बदलाव किया गया है, ताकि इसमें कॉम्पोनेंट पार्ट और गणितीय ऑपरेशन शामिल किए जा सकें. (Ib0447)
  • @ExperimentalTesting का नाम बदलकर @ExperimentalTestApi कर दिया गया है, ताकि यह एक्सपेरिमेंटल एपीआई के मिलते-जुलते एनोटेशन (Ia4502, b/171464963) के साथ काम कर सके
  • LazyColumn/LazyRow के लिए, एक्सपेरिमेंट के तौर पर स्टिकीहेडर जोड़ने का तरीका जोड़ा गया (I0a81d)
  • Color.useOrElse() का नाम बदलकर Color.takeOrElse() कर दिया गया (Ifdcf5)
  • TestUiDispatcher को बंद कर दिया गया है. इसके बजाय, Dispatchers.Main का इस्तेमाल करें (Ic171f, b/175385255)
  • Add Toggle to foundation Strings.kt (I4a5b7, b/172366489)
  • nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बना दिया गया. equals लागू करने के लिए, nativeClass के अपडेट किए गए इस्तेमाल. इसके बजाय, 'is MyClass' का इस्तेमाल करें. (I4f734)
  • FlowRow और FlowColumn को बंद कर दिया गया है. इसके बजाय, कृपया कस्टम लेआउट का इस्तेमाल करें. (I09027)
  • Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
  • SelectionRegistrar.notifySelectableChange को पेश किया गया है. इससे SelectionManager को Selectable के अपडेट के बारे में सूचना दी जा सकेगी. (I6ff30, b/173215242)
  • fun Dp.isFinite() को बदलकर val Dp.isFinite (I50e00) किया गया
  • Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
  • Unspecified कॉन्सटेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse को जोड़ा गया है. (I93f7b, b/174310811)

गड़बड़ियां ठीक की गईं

  • कोरूटीन पर आधारित नया एपीआई Animatable, जो यह पक्का करता है कि इसके ऐनिमेशन एक-दूसरे से अलग हों. मल्टी-डाइमेंशनल डेके ऐनिमेशन के लिए, नया DecayAnimationSpec (I820f2, b/168014930)
  • बंद किए गए और रीड-ओनली टेक्स्ट फ़ील्ड के लिए सहायता जोड़ी गई (I35279, b/171040474, b/166478534)
  • animate() को अब animateAsState() से बदल दिया गया है. यह T के बजाय State<T> दिखाता है. इससे बेहतर परफ़ॉर्मेंस मिलती है, क्योंकि अमान्य होने के दायरे को उस जगह तक सीमित किया जा सकता है जहां State वैल्यू पढ़ी जाती है. (Ib179e)
  • Semantics role API जोड़ें. साथ ही, क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले SemanticsModifier में Role को पैरामीटर के तौर पर जोड़ें. Modifier.progressSemantics में बदलाव किया गया है, ताकि Slider भी इसका इस्तेमाल कर सके. (I216cd)
  • अब keyEvent.nativeKeyEvent (I87c57, b/173086397) के ज़रिए, नेटिव keyEvent को ऐक्सेस किया जा सकता है

वर्शन 1.0.0-alpha09

16 दिसंबर, 2020

androidx.compose.foundation:foundation:1.0.0-alpha09 और androidx.compose.foundation:foundation-layout:1.0.0-alpha09 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • स्क्रोल किया जा सकने वाला इंटरफ़ेस जोड़ना

    इससे ScrollState और LazyListState को एक सामान्य टाइप के तौर पर इस्तेमाल किया जा सकता है. इससे दोनों टाइप में कस्टम स्क्रोलिंग लागू की जा सकती है.

    इससे smoothScrollBy को Scrollable पर एक्सटेंशन फ़ंक्शन में भी ले जाया जाता है. इससे इस सुविधा का फ़ायदा मिलता है. (I2153b)

  • LazyVerticalGrid जोड़ा गया है. (I17267, b/162213211)

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed, और LazyRowForIndexed को बंद कर दिया गया है. इसके बजाय, LazyColumn और LazyRow का इस्तेमाल करें (I5b48c)

  • पॉइंटर इनपुट एपीआई को निलंबित करने के लिए, HandlePointerInputScope का नाम बदलकर AwaitPointerEventScope और handlePointerInput() का नाम बदलकर awaitPointerEventScope() कर दिया गया है. (Idf0a1, b/175142755)

  • LazyListState.layoutInfo को जोड़ा गया है. इससे, फ़िलहाल दिख रहे आइटम के साइज़ और ऑफ़सेट की सूची दिखती है (If8678, b/170472532)

  • ExperimentalPointerInput एनोटेशन हटाया गया (Ia7a24)

  • TextFields के लिए InteractionState की सुविधा जोड़ी गई है. (I61d91)

  • LazyColumn/Row के लिए reverseLayout पैरामीटर जोड़ें. जब true होगा, तब आइटम नीचे से ऊपर की ओर कंपोज़ किए जाएंगे. साथ ही, LazyListState.firstVisibleItemIndex == 0 का मतलब होगा कि पहला आइटम सबसे नीचे है. (I552ae, b/166589935)

  • LazyColumn के लिए, verticalArrangement पैरामीटर जोड़ा गया. LazyRow के लिए horizontalArrangement पैरामीटर जोड़ा गया. आइटम के बीच की दूरी तय करने के लिए, अरेंजमेंट का इस्तेमाल किया जाता है. साथ ही, जब हमारे पास कम से कम साइज़ को भरने के लिए ज़रूरी आइटम नहीं होते हैं, तब आइटम के अरेंजमेंट के बारे में बताने के लिए भी इसका इस्तेमाल किया जाता है. (Icf79a, b/170394300)

  • detectMultitouchGestures अब एक ही कॉलबैक का इस्तेमाल करता है. इसमें सेंट्रॉइड, पैन, ज़ूम, और रोटेट पैरामीटर शामिल होते हैं. (Ie6e1c)

  • DrawScope के साथ रखने के लिए, ContentDrawScope को ui-graphics मॉड्यूल में ले जाया गया. (Iee043, b/173832789)

गड़बड़ियां ठीक की गईं

  • ऑफ़सेट मॉडिफ़ायर में लैम्ब्डा अब फ़्लोट के बजाय IntOffset दिखाता है. (Ic9ee5, b/174137212, b/174146755)
  • पब्लिक एपीआई से SlotTable, SlotReader, और SlotWriter को हटा दिया गया है. इन्हें पहले InternalComposeAPI के तौर पर मार्क किया गया था. अब ये कंपोज़ मॉड्यूल के इंटरनल हैं.

    कंपोज़िशन की जानकारी निकालने के लिए, ui-tooling API की जगह CompositionData और CompositionGroup को जोड़ा गया है. ये सार्वजनिक हैं, लेकिन इनका इस्तेमाल ui-tooling API के बाहर नहीं किया जा सकता. ऐसा इसलिए, क्योंकि ये ui-tooling API को ऐसी जानकारी देते हैं जिसे वह समझता है (I31a9c)

  • ShaderBrush को फिर से फ़ैक्टर किया गया है, ताकि ड्रॉइंग एनवायरमेंट के साइज़ की जानकारी उपलब्ध होने पर, शेडर इंस्टेंस को लेज़ी तरीके से बनाया जा सके. यह कंपोज़िशन के समय, कंपोज़ेबल के पूरे ड्रॉइंग बाउंड को भरने वाले ग्रेडिएंट तय करने के लिए उपयोगी है. इसके लिए, आपको DrawModifier को लागू करने की ज़रूरत नहीं होती.

    Gradient ऑब्जेक्ट पर फ़ैक्ट्री के तरीकों के पक्ष में, ग्रेडिएंट फ़ंक्शन कंस्ट्रक्टर एपीआई को बंद कर दिया गया है. (I511fc, b/173066799)

  • Modifier.focusObserver अब काम नहीं करता है. इसके बजाय, Modifier.onFocusChanged या Modifier.onFocusEvent का इस्तेमाल करें (I30f17, b/168511863, b/168511484)

  • ऑटोमैटिक भरने वाला एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध है. इसके लिए, ऑप्ट-इन करना ज़रूरी है (I0a1ec)

  • FocusRequester इंस्टेंस बनाने के लिए, डिस्ट्रक्चरिंग डिक्लेरेशन जोड़े गए (I35d84, b/174817008)

  • accessibilityLabel का नाम बदलकर contentDescription कर दिया गया है. accessibilityValue का नाम बदलकर stateDescription कर दिया गया है. (I250f2)

  • SelectionRegistrar में कई नए फ़ंक्शन जोड़े गए हैं. साथ ही, onPositionChange का नाम बदलकर notifyPositionChange कर दिया गया है. (Ifbaf7)

  • AndroidOwner ने इंटरनल टेस्ट के लिए बनाया (Ibcad0, b/170296980)

  • InfiniteRepeatableSpec (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 में एक singeLine पैरामीटर जोड़ा गया. टेक्स्ट फ़ील्ड को हॉरिज़ॉन्टल तौर पर स्क्रोल की जा सकने वाली एक लाइन बनाने के लिए, इस पैरामीटर को सही पर सेट करें. (I57004, b/168187755)

  • टैप, डबल-टैप, दबाकर रखने, और दबाने के इंडिकेशन के लिए, जेस्चर डिटेक्टर जोड़े गए. इसके लिए, सस्पेंडिंग पॉइंटर इनपुट का इस्तेमाल किया गया. कुछ यूटिलिटी भी जोड़ी गई हैं, ताकि डेवलपर के लिए अपने जेस्चर डिटेक्टर लिखना आसान हो जाए. (I00807)

  • Modifier.focusable में, फ़ाउंडेशन में जोड़े गए फ़ंक्शन की ज़रूरत होती है. इसका इस्तेमाल, किसी कॉम्पोनेंट में फ़ोकस करने की सुविधा जोड़ने के लिए किया जाता है. इससे सही सिमैंटिक और ऐक्सेसिबिलिटी मिलती है. (I41eb9, b/152525426, b/162865824)

  • पहले से बंद किए गए एपीआई हटा दिए गए हैं: बॉर्डर हटा दिया गया है. इसके बजाय, BorderStroke का इस्तेमाल करें. Modifier.drawBorder को हटा दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Modifier.gravity को हटा दिया गया है. इसके बजाय, Modifier.align का इस्तेमाल करें. स्टैक हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (I32c2b, b/172470874)

  • AbsoluteArrangement का नाम बदलकर Arrangement.Absolute कर दिया गया है. (If26f2)

गड़बड़ियां ठीक की गईं

  • DrawModifier एपीआई को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया है. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि टाइपएलियास/सहायता करने वाले तरीकों को शामिल किया जा सके. इससे, पुराने एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद मिलेगी. (Id6044, b/173834241)
  • Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है साथ ही, एपीआई काउंसिल के सुझाव के मुताबिक, इससे जुड़ी क्लास को भी GraphicsLayer के तौर पर अपडेट कर दिया गया है. (I0bd29, b/173834241)
  • <T> को SubcomposeLayout के एलान से हटा दिया गया है. अब इसका इस्तेमाल, टाइप की जानकारी दिए बिना किया जा सकता है. (Ib60c8)
  • PointerInputData के अपटाइम और पोजीशन फ़ील्ड को नॉन-नलेबल बनाया गया है. (Id468a)
  • MaterialTheme अब चुनने के हैंडल और चुनने के बैकग्राउंड के लिए सही रंग सेट करता है. नॉन-मटेरियल ऐप्लिकेशन, AmbientTextSelectionColors का इस्तेमाल करके, चुनने के लिए इस्तेमाल किए गए रंगों को पसंद के मुताबिक बना सकते हैं. (I1e6f4, b/139320372, b/139320907)
  • Box के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
  • offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया है. अब ये State के बजाय लैम्डा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
  • WindowManager.isWindowFocused को जोड़ा गया है. इससे यह पता चलता है कि होस्ट विंडो फ़ोकस में है या नहीं. साथ ही, WindowFocusObserver को जोड़ा गया है. यह onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
  • TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
  • TextFieldValue API अपडेट किया गया
    • TextFieldValue.composition को रीड ओनली बनाया गया
    • चुनी गई अमान्य रेंज (I4a675, b/172239032) के लिए थ्रो किया गया अपवाद हटाया गया
  • Ambient सफ़िक्स वाली पुरानी एंबिएंट प्रॉपर्टी को बंद कर दिया गया है. साथ ही, उन्हें नई प्रॉपर्टी से बदल दिया गया है. नई प्रॉपर्टी के नाम से पहले, एंबिएंट जोड़ा गया है. ये प्रॉपर्टी, अन्य एंबिएंट प्रॉपर्टी और Compose API के दिशा-निर्देशों के मुताबिक हैं. (I33440)
  • Android Typeface रैपर जोड़ा गया. typeface फ़ंक्शन के ज़रिए, Android Typeface लोड किया जा सकता है. जैसे, typeface(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) को बंद कर दिया गया है. इसके बजाय, int ऑफ़सेट के साथ ओवरलोड का इस्तेमाल करें (I4c5e7)
  • LayoutIdParentData के लिए, id का नाम बदलकर layoutId कर दिया गया है. Measurable.id का नाम बदलकर Measurable.layoutId कर दिया गया है. (Iadbcb, b/172449643)

वर्शन 1.0.0-alpha07

11 नवंबर, 2020

androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07, और androidx.compose.foundation:foundation-text:1.0.0-alpha07 रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Modifier.fillMaxSize[Width|Height] की तरह ही, अब हम LazyColumn/Row (I797e2, b/166586426) के स्कोप में Modifier.fillParentMaxSize[Width|Height] में फ़्रैक्शन का इस्तेमाल करने की सुविधा देते हैं
  • KeyboardOptions.toImeOptions को सार्वजनिक एपीआई से हटा दिया गया है. (Ic2e45)
  • AmbientTextStyle, ProvideTextStyle, और AmbientContentColor अब काम नहीं करते हैं. इसके बजाय, Material लाइब्रेरी में उपलब्ध नए वर्शन का इस्तेमाल करें. नॉन-मटेरियल ऐप्लिकेशन के लिए, आपको इसके बजाय अपना खुद का डिज़ाइन सिस्टम बनाना चाहिए. इसमें थीमिंग एंबिएंट शामिल होने चाहिए, ताकि उन्हें अपने कॉम्पोनेंट में इस्तेमाल किया जा सके. (I74acc, b/172067770)
  • foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू इस्तेमाल न करने वाले सामान्य टेक्स्ट एपीआई के लिए, androidx.compose.foundation.BasicText देखें. (If64cb)
  • TextField में 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)
  • सुलभता के लिए, एनोटेटेडस्ट्रिंग को स्पैनबलस्ट्रिंग में बदलने की सुविधा जोड़ी गई है. (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)
  • rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को @VisibleForTesting के साथ एनोटेट किया गया है. इन्हें इंटरनल एपीआई बनाया गया है और इनके 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 API हटा दिए गए हैं
    • RoundRect.outerRect का नाम बदलकर Rect.boundingRect कर दिया गया है
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीके हटाए गए
    • RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया है
    • RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया है
    • RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी के तौर पर बदला गया
    • RoundRect कंस्ट्रक्टर को अपडेट किया गया है, ताकि वह x/y रेडियस वैल्यू के लिए अलग-अलग पैरामीटर के बजाय, रेडियस प्रॉपर्टी का इस्तेमाल कर सके
    • ऐसे साइज़ एपीआई हटा दिए गए हैं जो यह मानते थे कि यह एक आयत है और इसका मूल बिंदु 0,0 पर है
    • Radius में डिस्ट्रक्टिंग एपीआई जोड़ा गया
    • RoundRect एक्सटेंशन फ़ंक्शन को प्रॉपर्टी के तौर पर माइग्रेट किया गया
    • (I8f5c7, b/168762961)
  • LazyColumnFor/LazyRowFor में स्क्रोल करने की परफ़ॉर्मेंस को ऑप्टिमाइज़ किया गया है. ऐसा हर स्क्रोल के दौरान, गैर-ज़रूरी रीकंपोज़िशन को हटाकर किया गया है (I64f65, b/168293643, b/167972292, b/165028371)
  • स्क्रोल करने के बाद, आइटम बदलने पर LazyColumnFor/LazyRowFor में क्रैश होने की समस्या ठीक की गई. साथ ही, पहले दिखने वाले आइटम को हटाने पर, अपने-आप ऊपर की ओर स्क्रोल होने की सुविधा लागू की गई, ताकि आखिर में खाली जगह न दिखे (I220ab, b/161480164, b/167855468)
  • अब एक ही दिशा में स्क्रोल किए जा सकने वाले कंटेनर, जैसे कि ScrollableContainer और LazyColumnFor को नेस्ट करने की अनुमति नहीं है. यह सुविधा कभी काम नहीं करती थी. साथ ही, यह फ़्लिंग करने और LazyColumnFor (I6e101) के आइटम कंपोज़ करने की सभी सुविधाओं को बंद कर देती थी
  • कई ग्राफ़िक्स एपीआई अपडेट किए गए
    • DrawScope API को स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीकों के साथ अपडेट किया गया है. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद हटा दिया जाता है
    • clipPath के दस्तावेज़ को अपडेट किया गया है, ताकि गोल किनारों वाले आयत के बजाय Path का इस्तेमाल किया जा सके
    • clipPath में मौजूद right पैरामीटर के दस्तावेज़ में स्पेसिंग की समस्या ठीक की गई
    • DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
    • इनसेट तरीके में dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
    • इसमें इनसेट ओवरलोड जोड़ा गया है. इससे चारों सीमाओं के लिए एक जैसी इनसेट वैल्यू मिलती है
    • इंसर्ट करने के तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इंसर्ट करने का तरीका चारों साइड पर लागू होगा
    • Rect क्लास के लिए दस्तावेज़ अपडेट किया गया
    • kdoc स्टाइल से मेल खाने के लिए, Rect पैरामीटर पर टिप्पणियां अपडेट की गईं
    • 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")
        }
    }
    

    (I0a85b, b/161247083)

वर्शन 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)
    1. इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाएं
    2. Offset और IntOffset क्लास को अलाइन किया गया है, ताकि एपीआई का एक जैसा इंटरफ़ेस हो
    3. Offset API के साथ एक जैसा रखने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero कर दिया गया है
    4. उपयोगकर्ताओं को अपने Canvas इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है
    5. DrawScope को refactor करने के लिए, EmptyCanvas क्लास का स्टब बनाया गया है, ताकि इसे lateinit के बजाय non-null पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड में null वैल्यू न हो
    6. ClipOp एनम का नाम बदलकर, पास्कल केस में रखा गया
    7. FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
    8. StrokeJoin enum का नाम बदलकर, पास्कल केस में रखा गया
    9. PointMode enum के नाम बदलकर, उन्हें पास्कल केस में कर दिया गया है
    10. PaintingStyle enum के नाम बदलकर, उन्हें पास्कल केस में कर दिया गया है
    11. PathFillType enum का नाम बदलकर, पास्कल केस में कर दिया गया है
    12. StrokeCap enum का नाम बदलकर पास्कल केस कर दिया गया है
    13. DrawCache को लागू करने के तरीके को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
    14. DrawScope को अपडेट किया गया है. अब यह fillPaint और strokePaint इंटरनल पैरामीटर के लिए, लेज़ी डेलिगेशन का इस्तेमाल नहीं करेगा
    15. इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न करना पड़े
    16. @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
    17. हर पाथ के निर्देश के लिए @Immutable एनोटेशन पाने के लिए, PathNode को अपडेट किया गया
    18. वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए ज़रूरत से ज़्यादा शर्तों की जांच न हो. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही इनकी जांच करता है
    19. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद कर दिया गया है
    20. @Immutable और @Stable एपीआई के साथ अपडेट की गई ब्रशिंग क्लास और फ़ंक्शन कंस्ट्रक्टर
    21. VertexMode enum को PascalCase में अपडेट किया गया
    22. DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि पेंट पर स्ट्रोक पैरामीटर को शर्तों के आधार पर बदला जा सके. ऐसा तब किया जाएगा, जब वे बदल गए हों
    23. साइज़ को अपडेट किया गया है, ताकि इसमें डिस्ट्रक्चरिंग एपीआई जोड़ा जा सके. साथ ही, 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)
  • Text में fontWeight पैरामीटर जोड़ा गया है. इसे गलती से पहले नहीं जोड़ा गया था (I56937)
  • पिक्सेल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I19d02)
  • VerticalScroller अब पहले से मौजूद Column उपलब्ध कराता है. HorizontalScroller अब पहले से मौजूद Row उपलब्ध कराता है. (Ieca5d, b/157020670)
  • Px क्लास का इस्तेमाल, अलग-अलग कंपोज़ क्लास में किया गया था. इसे बड़े पैमाने पर रीफ़ैक्टर करने के दौरान, सिर्फ़ Dp और प्रिमिटिव टाइप पर निर्भर रहने के लिए बदल दिया गया है. ऐसा पिक्सल पैरामीटर के लिए किया गया है (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 को फिर से फ़ैक्टर किया गया है, ताकि कोड पाथ को कम किया जा सके. साथ ही, कंपोज़िशन के हिस्से के तौर पर Modifier बनाने की ज़रूरत को हटाया जा सके. (I0343a)
  • ज़्यादा लेवल वाले Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय Canvas को दिखाते हैं. इससे उपभोक्ताओं को अपने 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)

  • Created Image कंपोज़ेबल, स्क्रीन पर दिए गए 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 गाइडलाइन बनाते समय, percent पैरामीटर का नाम बदलकर fraction कर दिया गया है. (Ida2db)

  • ConstraintLayout बैरियर के मार्जिन के लिए सहायता जोड़ी गई. (I47ffe)

  • ConstraintLayout में आरटीएल की सुविधा से जुड़ी समस्या ठीक की गई. आरटीएल के बारे में जानकारी न रखने वाले एपीआई जोड़े गए. (I3b1c7)

  • ConstraintLayout के लिए नया डीएसएल जोड़ा गया है. ज़्यादा जानकारी के लिए, कृपया सैंपल देखें. (Icaa9a)

  • @ExperimentalLayout एनोटेशन जोड़ा गया. ConstraintLayout, FlowRow, और FlowColumn को अब इससे टैग किया गया है, ताकि यह पता चल सके कि उनके एपीआई में बदलाव होने वाला है. (I412a8)

  • Modifier.padding(InnerPadding) को जोड़ा गया (I94985, b/157133803)

  • Row और Column में, RowAlign और ColumnAlign को हटा दिया गया है. (If60d4, b/155858731)

  • LayoutTag() को हटा दिया गया है. इसके बजाय, कृपया Modifier.tag() का इस्तेमाल करें. अब Modifier.matchParent() का इस्तेमाल नहीं किया जा सकता. इसके बजाय, कृपया Modifier.matchParentSize() का इस्तेमाल करें. (If8044)

  • offsetPx लेआउट मॉडिफ़ायर जोड़ा गया है. इसका इस्तेमाल करके, पिक्सल में (डाइनैमिक) ऑफ़सेट तय किए जा सकते हैं. (I5af57)

  • AlignmentLineOffset कंपोज़ेबल के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, कृपया relativePaddingFrom() मॉडिफ़ायर का इस्तेमाल करें. CenterAlignmentLine कंपोज़ेबल को हटा दिया गया है. (I60107)

  • डिफ़ॉल्ट रूप से सबसे छोटे साइज़ की सीमा तय करने वाले लेआउट मॉडिफ़ायर को जोड़ा गया है. यह रैप किए गए लेआउट के लिए साइज़ की सीमाएं सिर्फ़ तब सेट करता है, जब आने वाली संबंधित सीमाएं तय न की गई हों. जैसे, कम से कम सीमा के लिए 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 कर दिया गया है. MaterialButton के 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)
  • इस बदलाव से पहले, अगर कोई (I5205a, b/158123804) मौजूद होता था, तो कंपोज़ कंपाइलर प्लगिन, @Composable फ़ंक्शन के अंदर कंस्ट्रक्टर को कॉल करने के अनुरोधों को इंटरसेप्ट कर लेता था.
  • viewModel() कंपोज़ेबल जोड़ें. इससे, पहले से बनाए गए ViewModel को बनाया या पाया जा सकता है. यह ठीक उसी तरह काम करता है जिस तरह ऐक्टिविटी या फ़्रैगमेंट में काम करता है (I5fdd1)
  • Radius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया है. कंपैनियन क्रिएशन के तरीकों को हटा दिया गया है. इसके बजाय, डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल किया गया है, ताकि y-ऐक्सिस के साथ रेडियस, अनिवार्य x-ऐक्सिस रेडियस पैरामीटर से मेल खाए.

    DrawScope.drawRoundRect को अपडेट किया गया है. अब यह x और y ऐक्सिस के साथ रेडियस के लिए दो अलग-अलग फ़्लोट वैल्यू के बजाय, एक ही रेडियस पैरामीटर का इस्तेमाल करेगा (I46d1b)

  • पिक्सेल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है. पूरी Px क्लास मिटा दी गई (I3ff33)

  • पिक्सेल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I086f4)

  • पिक्सल पैरामीटर (Id3434) के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है

  • पिक्सेल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I97a5a)

  • TextField के कर्सर में ब्लिंक करने वाला ऐनिमेशन है (Id10a7)

  • अब आंशिक जेस्चर के लिए, GestureToken (Id7ae5) को पास करने की ज़रूरत नहीं है

  • पिक्सेल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I57bff)

  • Modifier.semantics को फिर से इस्तेमाल किया जा सकता है, ताकि इसका इस्तेमाल हाई लेवल कॉम्पोनेंट के लिए किया जा सके. (I4cfdc)

  • AnnotatedString.Builder.addAnnotationString का नाम बदलकर addStringAnnotation कर दिया गया है. (I5059e)

  • अलाइनमेंट एपीआई को अपडेट किया गया है. साथ ही, ऐब्सलूट अलाइनमेंट के लिए सहायता जोड़ी गई है. यह आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता (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 में टेक्स्ट चुनने की सुविधा के लिए, कॉपी करने, काटने, और चिपकाने के तरीके जोड़े गए. (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)