Compose Foundation

इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपना डिज़ाइन सिस्टम बनाने के लिए फ़ाउंडेशन को बढ़ाएं.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
11 दिसंबर, 2024 1.7.6 - - 1.8.0-alpha07

संरचना

Compose, androidx में सात Maven ग्रुप आईडी का कॉम्बिनेशन है. हर ग्रुप में, सुविधाओं का एक टारगेट किया गया सबसेट होता है. साथ ही, हर ग्रुप के लिए रिलीज़ नोट का अपना सेट होता है.

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

ग्रुपब्यौरा
compose.animationउपयोगकर्ता अनुभव को बेहतर बनाने के लिए, अपने Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं.
compose.compiler@Composable फ़ंक्शन को बदलें और Kotlin कंपाइलर प्लग इन की मदद से ऑप्टिमाइज़ेशन चालू करें.
compose.foundationइस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपना डिज़ाइन सिस्टम बनाने के लिए फ़ाउंडेशन को बढ़ाएं.
compose.materialइस्तेमाल के लिए तैयार Material Design कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का सबसे ऊपरी लेवल का एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं.
compose.material3मटीरियल डिज़ाइन के अगले वर्शन, Material Design 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. Material 3 में, अपडेट की गई थीम और कॉम्पोनेंट के साथ-साथ, Material You की डाइनैमिक कलर जैसी सुविधाएं शामिल हैं. इसे Android 12 के नए विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है.
compose.runtimeCompose के प्रोग्रामिंग मॉडल और स्टेटस मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, Compose कंपाइलर प्लग इन को टारगेट करने के लिए कोर रनटाइम.
compose.uiडिवाइस के साथ इंटरैक्ट करने के लिए, कॉम्पोज़ यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट ज़रूरी हैं. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं.

डिपेंडेंसी का एलान करना

Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

Groovy

dependencies {
    implementation "androidx.compose.foundation:foundation:1.7.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.7.5")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव

आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.

नई समस्या बनाना

ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.

वर्शन 1.8

वर्शन 1.8.0-alpha07

11 दिसंबर, 2024

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.8.0-alpha06

13 नवंबर, 2024

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

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

  • stylusHoverIcon मॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)
  • AnchoredDraggableState का confirmValueChange अब काम नहीं करता. स्टेटस में बदलावों पर रोक लगाने के बजाय, जिन ऐंकर को अनुमति नहीं दी गई है उन्हें चालू ऐंकर सेट में नहीं रखा जाना चाहिए. साथ ही, अनुरोध की गई कार्रवाई उपलब्ध न होने के बारे में बताने के लिए, OverscrollEffect का इस्तेमाल किया जाना चाहिए. (Ia717f)
  • ऑटोमैटिक भरने की सुविधा के मैनेजर को इंटरफ़ेस में बदलता है. (I84914, b/376080755)
  • OverscrollEffect#withoutDrawing और OverscrollEffect#withoutEventHandling एपीआई जोड़ता है - ये एपीआई, दिए गए ओवरस्क्रोल इफ़ेक्ट का एक रैप किया गया इंस्टेंस बनाते हैं, जो इवेंट को ड्रॉ / हैंडल नहीं करता. इससे, इवेंट डिस्पैच करने वाले कॉम्पोनेंट से अलग कॉम्पोनेंट में ओवरस्क्रोल को रेंडर करने की सुविधा मिलती है. उदाहरण के लिए, किसी लेज़ी सूची में ओवरस्क्रोल की सुविधा बंद करके, ओवरस्क्रोल को सबसे ऊपर / दूसरी जगह पर अलग से ड्रॉ करना. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)
  • टेक्स्ट टूलबार में, ऑटोमैटिक भरने की सुविधा जोड़ी गई है. (Ie6a4c)
  • OverscrollConfiguration और LocalOverscrollConfiguration को बंद कर दिया गया है. साथ ही, डिफ़ॉल्ट ओवरस्क्रोल लागू करने के पैरामीटर का कोई इंस्टेंस बनाने या उन्हें पसंद के मुताबिक बनाने के लिए, rememberPlatformOverscrollFactory जोड़ा गया है. ओवरस्क्रोल की सुविधा बंद करने के लिए, LocalOverscrollConfiguration provides null के बजाय LocalOverscrollFactory provides null का इस्तेमाल करें. चमक का रंग / पैडिंग बदलने के लिए, LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) के बजाय LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516)
  • अन्य एपीआई के मुताबिक, effectModifier प्रॉपर्टी को OverscrollEffect से node: DelegatableNode में बदला गया. (Ic0b46, b/255554340)
  • एक्सपेरिमेंट के तौर पर उपलब्ध GlobalAssertions API को हटा दिया गया है. इसका मकसद, सुलभता की जांच करना था. इसके बजाय, इस काम के लिए enableAccessibilityChecks() देखें. (I59322)

वर्शन 1.8.0-alpha05

30 अक्टूबर, 2024

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

नई सुविधाएं

  • टेक्स्ट का साइज़ अपने-आप बदलने की सुविधा. अपने पसंदीदा टेक्स्ट कॉम्पोज़ेबल (जैसे, BasicText) में AutoSize इंस्टेंस (जैसे, AutoSize.StepBased) पास करें और देखें कि आपके टेक्स्ट का साइज़, उपलब्ध जगह के हिसाब से अडजस्ट हो जाता है! (Ice7e0, b/139320827)
  • हैरारकी में ओवरस्क्रोल को कॉन्फ़िगर करने की सुविधा देने के लिए, OverscrollFactory और LocalOverscrollFactory एपीआई जोड़ता है. LocalOverscrollFactory की मदद से दी गई वैल्यू का इस्तेमाल, डिफ़ॉल्ट रूप से OverscrollEffect बनाने के लिए किया जाएगा. फ़ैक्ट्री सेट में मौजूद किसी इफ़ेक्ट को बनाने और उसे याद रखने के लिए, rememberOverscrollEffect() का इस्तेमाल करें. (I51ca4, b/255554340)

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

  • CompositionLocal को शामिल किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा से अपने-आप भरी गई जानकारी को हाइलाइट करने वाले रंग में बदलाव करने के लिए किया जा सकता है. (I32092)
  • ScrollableDefaults.overscrollEffect को हटाया गया - इसके बजाय, आपको rememberOverscrollEffect का इस्तेमाल करना चाहिए. इससे, LocalOverscrollFactory के साथ दिए गए मौजूदा ओवरस्क्रोल लागू करने का एक इंस्टेंस बन जाएगा. (I1651a, b/255554340),(b/234451516)
  • इसमें नया AutofillManager इंटरफ़ेस जोड़ा गया है. इसका इस्तेमाल, उपयोगकर्ताओं के लिए ऑटोमैटिक भरने की सुविधा को बेहतर बनाने के लिए किया जा सकता है. साथ ही, ऑटोमैटिक भरने की सुविधा के इस नए वर्शन को चालू करने के लिए, एक isSemanticAutofillEnabled फ़्लैग भी जोड़ा गया है. (I9d484)
  • CombinedClickableNode को हटाता है. परफ़ॉर्मेंस से जुड़े काम को अनब्लॉक करने के लिए, इस एक्सपेरिमेंटल एपीआई को कुछ समय के लिए उपलब्ध कराया गया था. हालांकि, अब इसकी ज़रूरत नहीं है. इसके बजाय, आपको अन्य मॉडिफ़ायर एपीआई की तरह ही सीधे Modifier.combinedClickable का इस्तेमाल करना चाहिए. (I4b658)
  • यह horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager, और VerticalPager में ओवरलोड जोड़ता है. साथ ही, इसमें कस्टम OverscrollEffect तय करने की सुविधा भी होती है. दिए गए OverscrollEffect को इवेंट मिलेंगे और इन्हें इन कॉम्पोनेंट की सीमाओं के अंदर रेंडर किया जाएगा. ध्यान दें कि एक ही OverscrollEffect को दो बार नहीं खींचा जा सकता. इसलिए, इनमें से किसी एक कॉम्पोनेंट के लिए दिए गए OverscrollEffect को Modifier.overscroll के साथ अलग से नहीं खींचा जा सकता. इन कॉम्पोनेंट की सीमाओं के बाहर ओवरस्क्रोल करने के इस्तेमाल के उदाहरण को आने वाले समय में अलग से हल किया जाएगा. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)

वर्शन 1.8.0-alpha04

16 अक्टूबर, 2024

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

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

  • DelegatableNode#onDensityChange और DelegatableNode#onLayoutDirectionChange कॉलबैक जोड़ता है, ताकि इनमें बदलाव होने पर नोड की स्थिति को अपडेट किया जा सके. (I04f3e, b/340662451)
  • पैराग्राफ़ और ParagraphIntrinsics, अब AnnotatedString पर लागू किए गए सभी एनोटेशन की सूची लेता है. पहले इसमें सिर्फ़ SpanStyles की सूची होती थी. (I12f80)
  • PointerInputModifierNode#touchBoundsExpansion को जोड़ा गया है. इसका इस्तेमाल, एक पॉइंटर इनपुट मॉडिफ़ायर के टच बाउंड को बड़ा करने के लिए किया जा सकता है. (Iccf02, b/335339283)

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

  • एक गड़बड़ी को ठीक किया गया है. इसमें, AnchoredDraggableDefaults.flingBehavior को पास की गई पोज़िशन थ्रेशोल्ड को कुछ मामलों में सही तरीके से नहीं माना गया था. (Ifdf0d, b/367660226)
  • नेस्ट किए गए स्क्रोल किए जा सकने वाले एलिमेंट के लिए एक सुधार लाया गया है. ये एलिमेंट, फ़्लिंग के दौरान नोड ट्री से हटा दिए जाते हैं. अब ये नोड फ़्लिंग को रद्द कर देंगे और बचे हुए वेग के साथ onPostFling इवेंट को सही तरीके से भेज देंगे. हम फ़्लैग NewNestedScrollFlingDispatchingEnabled भी पेश कर रहे हैं, ताकि परफ़ॉर्मेंस में गिरावट आने पर, इसकी सेटिंग को कंट्रोल किया जा सके. बीटा वर्शन से पहले, फ़्लैग हटा दिया जाएगा. (I05c37, b/371168883)
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Modifier.anchoredDraggable फ़ंक्शन में इस्तेमाल किए गए OverscrollEffects फ़ंक्शन को 1D के बजाय 2D डेल्टा मिलते थे. (Ie52c0)

वर्शन 1.8.0-alpha03

2 अक्टूबर, 2024

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

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

  • Kotlin वर्शन को 1.9 (I1a14c) पर अपडेट किया गया
  • फ़्लैग DraggableAddDownEventFixEnabled (I848d5) को पेश किया गया
  • a11y सेवाओं के लिए पेजर में सूची के व्यवहार को एमुलेट करने के लिए, कैरसेल नाम की एक नई सेमेटिक्स भूमिका शुरू की गई है. (Id354b, b/354109776, b/239672673)
  • BasicText कॉम्पोज़ेबल से, graphicsLayer मॉडिफ़ायर को हटाया गया. पुराने व्यवहार पर वापस जाने के लिए, एक्सपेरिमेंट वाला ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled फ़्लैग जोड़ा गया. (Ie478d)
  • Modifier.recalculateWindowInsets() जोड़ा गया, ताकि हैरारकी में शामिल बच्चे insetsPadding का इस्तेमाल कर सकें. भले ही, माता-पिता ने उन्हें consumeWindowInsets() के बिना अलाइन किया हो. (I7f9e4)

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

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

वर्शन 1.8.0-alpha02

18 सितंबर, 2024

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

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

  • TextOverflow.StartEllipsis और TextOverflow.MiddleEllipsis अब उपलब्ध हैं. इनकी मदद से, एक लाइन वाले टेक्स्ट (I38913, b/185418980) की लाइन की शुरुआत या बीच में इलिप्सिस लगाया जा सकता है

वर्शन 1.8.0-alpha01

4 सितंबर, 2024

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

वर्शन 1.7

वर्शन 1.7.6

11 दिसंबर, 2024

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

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

  • सुलभता सेवाओं को फ़िक्स्ड टेक्स्ट इनलाइन कॉन्टेंट नहीं दिख रहा था.
  • AndroidEmbeddedExternalSurface को सही तरीके से रीसेट न होने और लेज़ी सूची में फिर से इस्तेमाल करने पर, फ़ंक्शन के काम न करने की समस्या को ठीक किया गया है.

वर्शन 1.7.5

30 अक्टूबर, 2024

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

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

  • पक्का करें कि पिन किए गए आइटम, कॉन्टेंट पैडिंग वाले हिस्से में दो बार सब-कंपोज़ न किए गए हों. (Ic6224)

वर्शन 1.7.4

16 अक्टूबर, 2024

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

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

  • टेक्स्ट फ़ील्ड में कभी-कभी क्रैश होने की समस्या को ठीक किया गया है. (I475c6, b/313010266)
  • लेज़ी लेआउट आइटम के रूट से ReusableContentHost हटाया गया. “बंद किए गए नोड पर मेज़र का इस्तेमाल करने” की वजह से क्रैश होने की मुख्य वजह यह थी. (Id6e60)

वर्शन 1.7.3

2 अक्टूबर, 2024

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

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

  • जब minLines को डिफ़ॉल्ट वैल्यू के बजाय किसी दूसरी वैल्यू पर सेट किया जाता है, तो BasicText की वजह से होने वाली मेमोरी लीक की समस्या को ठीक किया गया.

वर्शन 1.7.2

18 सितंबर, 2024

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

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

  • 'खींचें और छोड़ें' सुविधा से जुड़ी समस्या को ठीक किया गया. इसमें 'डाउन' इवेंट मौजूद नहीं थे. इस वजह से, फ़्लिंग सामान्य से धीमी दिखती थी.

वर्शन 1.7.1

10 सितंबर, 2024

  • Android आर्टफ़ैक्ट में कोई बदलाव नहीं किया गया है. -desktop आर्टफ़ैक्ट हटा दिए गए और -jvmStubs और -linuxx64Stubs आर्टफ़ैक्ट जोड़ दिए गए. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये प्लेसहोल्डर हैं, ताकि Jetbrains Compose को काम करने में मदद मिल सके.

वर्शन 1.7.0

4 सितंबर, 2024

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

1.6.0 के बाद किए गए अहम बदलाव

  • Modifier.clickable, Modifier.focusable, Modifier.indication, Modifier.scrollable, और Modifier.draggable की परफ़ॉर्मेंस में काफ़ी सुधार हुआ है. इस प्रोसेस के तहत, संगठन में किए गए बदलावों के अलावा एपीआई में ये बदलाव किए गए हैं
    • नया Indication API, IndicationNodeFactory जोड़ा गया. इससे, पिछले (अब बंद किए गए) rememberUpdatedInstance एपीआई की तुलना में, बेहतर परफ़ॉर्मेंस वाले इंडिकेशन लागू किए जा सकते हैं. माइग्रेशन की जानकारी के लिए, developer.android.com पर जाएं.
    • clickable / combinedClickable / selectable / toggleable अब वैल्यू न होने पर भी काम करने वाला MutableInteractionSource पैरामीटर स्वीकार करता है. अगर यह शून्य है और दिया गया इंडिकेशन IndicationNodeFactory है, तो इंडिकेशन सिर्फ़ तब बनाया जा सकता है, जब ज़रूरत हो. इससे परफ़ॉर्मेंस बेहतर होती है. अगर MutableInteractionSource को होस्ट नहीं किया जा रहा है और उसका इस्तेमाल नहीं किया जा रहा है, तो हमारा सुझाव है कि remember { MutableInteractionSource() } के बजाय null पास करें.
    • Indication#rememberUpdatedInstance का अब इस्तेमाल नहीं किया जा सकता. इसकी वजह से, परफ़ॉर्मेंस पर ज़्यादा असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नए IndicationNodeFactory एपीआई का इस्तेमाल करना चाहिए.
  • TextFieldState का इस्तेमाल करके BasicTextField अब स्थिर है. हमारा सुझाव है कि सभी कॉल-साइटें BasicTextField(value, onValueChange) से BasicTextField(TextFieldState) पर माइग्रेट करना शुरू करें.
  • ClickableText का अब इस्तेमाल नहीं किया जा सकता. अपने टेक्स्ट में क्लिक किए जा सकने वाले लिंक जोड़ने के लिए, AnnotatedString में नए LinkAnnotation एनोटेशन के साथ BasicText का इस्तेमाल करें. LinkAnnotation, लिंक की स्थिति (जैसे, फ़ोकस किया गया, कर्सर घुमाया गया) के आधार पर कस्टम स्टाइल की अनुमति देता है.
  • MaxLines और Overflow के साथ ContextualFlowRow और Enhanced FlowRow/Column का इस्तेमाल करने का तरीका. हमें यह बताते हुए खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्ध FlowRow और FlowColumn में कई सुधार किए गए हैं. अब इनमें maxLines और ओवरफ़्लो की सुविधा के साथ-साथ ContextualFlowRow और ContextualFlowColumn की सुविधा भी उपलब्ध है. इस अपडेट को परफ़ॉर्मेंस के लिए सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमें ContextualFlow*, ज़्यादा आइटम के लिए सही है. इसमें कम लाइन कॉन्फ़िगरेशन और डाइनैमिक +N ज़्यादा देखें बटन का इस्तेमाल किया जाता है. वहीं, FlowRow और FlowColumn, 100 से कम आइटम के लिए सही है. अहम जानकारी: FlowRow या FlowColumn में मौजूदा व्यवहार को बनाए रखने के लिए, सभी आइटम को कॉम्पोज़ किया जाता है. भले ही, वे क्रॉस ऐक्सिस मैक्स में फ़िट हों या नहीं. इसके लिए, शुरू करने के दौरान ओवरफ़्लो को FlowRowOverflow.Visible या FlowColumnOverflow.Visible पर सेट करें. इन नई सुविधाओं के काम करने के उदाहरणों के लिए, ContextualFlowRowSample और FlowRowSample पर जाएं. (Ib9135, b/293577082)
  • LazyColumn और LazyRow में, आइटम के दिखने और न दिखने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाने) ऐनिमेशन के साथ काम करने के लिए, Modifier.animateItemPlacement() मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और Modifier.animateItem() नाम का एक नया मॉडिफ़ायर लॉन्च किया है. यह एक्सपेरिमेंटल नहीं है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), न दिखना (फ़ेड आउट), और क्रम में बदलना. (I2d7f7, b/150812265)
  • Android के आधिकारिक एपीआई (ScrollCaptureCallback) का इस्तेमाल करके, Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है.
  • NestedScroll सोर्स के लिए, 'खींचें और छोड़ें' और 'फ़्लिंग' को UserInput और SideEffect से बदला जा रहा है. ऐसा इन सोर्स की नई परिभाषा के हिसाब से किया जा रहा है. इनमें अब ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं.
  • LazyLayout प्रीफ़ेच अनुरोधों को अब 'ज़रूरी' के तौर पर मार्क किया जा सकता है. इसका मतलब है कि हमें लगता है कि इस आइटम की ज़रूरत अगले फ़्रेम में पड़ सकती है. साथ ही, हम फ़्रेम बजट को अनदेखा करना चाहते हैं, ताकि पहले से ज़्यादा काम किया जा सके (Id513f)
  • Android U के बाद के वर्शन वाले डिवाइसों पर, स्टाइलस की मदद से लिखने की सुविधा काम करती है. (I002e4)
  • कई एपीआई को स्टेबल के तौर पर प्रमोट किया गया है
    • पेजर, स्नैपिंग, विंडो इनसेट

वर्शन 1.7.0-rc01

21 अगस्त, 2024

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

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

  • एक ऐसी समस्या को ठीक किया गया है जिसमें पैरंट एलिमेंट में किसी ऐसे एलिमेंट पर फ़ोकस करने पर क्रैश होता था जिस पर फ़ोकस किया जा सकता है (या जिस पर क्लिक किया जा सकता है) और जो बंद है. (b/317561689)

वर्शन 1.7.0-beta07

7 अगस्त, 2024

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

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

  • टेक्स्ट इनपुट से जुड़े SemanticsNodeInteraction फ़ंक्शन performTextReplacement, performTextInput, और performTextClearance अब सिर्फ़ पढ़ने के लिए उपलब्ध TextFields पर कॉल किए जाने पर, एश्योरेशन की गड़बड़ियां दिखाएंगे. (I4ae8f)
  • हाइपरलिंक में विज़ुअल से जुड़ी गड़बड़ी को ठीक किया गया. (I23311)
  • contentReceiver मॉडिफ़ायर को कुछ आईएमई के साथ काम न करने की समस्या को ठीक किया गया.
  • वेग जनरेशन: Compose UI और फ़ाउंडेशन में NaN वैल्यू के प्रसार को रोकें.

वर्शन 1.7.0-beta06

24 जुलाई, 2024

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

वर्शन 1.7.0-beta05

10 जुलाई, 2024

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

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

  • SnapFlingBehavior और पेजर में, 'नॉन' वैल्यू को ठीक करने के लिए.

वर्शन 1.7.0-beta04

26 जून, 2024

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

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

  • बहुत बड़ी टेक्स्ट लाइन (जैसे, 10 हज़ार वर्ण) को मेज़र करते समय क्रैश से बचना (8157ab)
  • बहुत बड़े टेक्स्ट को मेज़र करने की समस्या को ठीक किया गया. इसकी वजह से, BasicTextField (6b7575) के नए वर्शन में क्रैश हो रहा था
  • पंक्ति/कॉलम मेज़रमेंट में व्यवहार में हुए उस बदलाव को पहले जैसा करता है जिसकी वजह से कुछ स्थितियों में टेक्स्ट के इस्तेमाल में रुकावट आती है (69e8ba)

वर्शन 1.7.0-beta03

12 जून, 2024

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

वर्शन 1.7.0-beta02

29 मई, 2024

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

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

  • LazyLists के लिए मौजूदा एक्सपेरिमेंटल एपीआई की तरह ही, LazyGrids के कॉन्फ़िगरेशन के लिए एक्सपेरिमेंटल एपीआई जोड़ता है. इसमें नेस्ट किए गए LazyGrids में आइटम को पहले से लोड करने की सुविधा भी शामिल है. LazyListPrefetchStrategy की तरह ही, लागू करने के लिए डिफ़ॉल्ट रूप से, हर ग्रिड के पहले दो नेस्ट किए गए आइटम को पहले से लोड किया जाता है. हालांकि, इसे नए LazyGridPrefetchStrategy(nestedPrefetchItemCount) और LazyListPrefetchStrategy#onNestedPrefetch एपीआई से कॉन्फ़िगर किया जा सकता है. (I591c4)
  • SemanticsProperties.Editable का नाम बदलकर IsEditable किया गया और SemanticsPropertyReceiver.editable को वैल्यू isEditable में बदला गया. यह प्रॉपर्टी अब बूलियन है और हमेशा टेक्स्ट फ़ील्ड के ज़रिए तय की जाती है. (I8acd8)
  • basicMarquee की डिफ़ॉल्ट वैल्यू को MarqueeDefaults ऑब्जेक्ट में ले जाया गया. (I12ff6)
  • basicMarquee delayMillis पैरामीटर का नाम बदलकर repeatDelayMillis किया गया. (I12ff6)
  • लिंक को स्टाइल करने के लिए एपीआई को अपडेट किया गया: TextLinkStyles को TextStyle पर ले जाया गया और मटीरियल से TextDefaults को हटाया गया (I5477b)

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

  • इसके मकसद को बेहतर तरीके से दिखाने के लिए, LayoutCoordinates.introducesFrameOfReference का नाम बदलकर LayoutCoordinates.introducesMotionFrameOfReference कर दिया गया है. उस फ़्लैग के आधार पर निर्देशांक का हिसाब लगाने के लिए, मिलते-जुलते फ़ंक्शन का नाम बदला गया. (I3a330)
  • MarqueeDefaults प्रॉपर्टी से 'डिफ़ॉल्ट' हटाया गया. (I1d8a0)
  • MarqueeDefaults प्रॉपर्टी से 'Marquee' हटाया गया. (Iad4f4)
  • TextStyle क्लास से TextLinkStyles को हटाया गया. इसके बजाय, TextLinkStyles LinkAnntation कन्स्ट्रक्टर और AnnotatedString.fromHtml तरीके (I90b2b) का हिस्सा है
  • एक गड़बड़ी को ठीक किया गया है. इसमें, पेजर को पहले से ही बाउंड पर होने के बावजूद, बाउंड की ओर फ़्लिंग करने पर स्नैप हो जाता था. (I9f373, b/339171222)
  • BTF2 में अब माउस से आइटम चुनने के लिए सही जेस्चर जोड़े गए हैं. (Ibe8c6)

बाहरी योगदान

  • 'सटीक जानकारी देने के लिए, कॉन्टेंट टाइप के हिसाब से, कॉन्टेंट लिखने/उसके लिए लगने वाले समय का हिसाब लगाने की सुविधा को प्रीफ़ेच के आधार पर बनाएं' (Iea622) को फिर से सबमिट करें
  • सटीक जानकारी देने के लिए, कॉन्टेंट टाइप के आधार पर, कॉन्टेंट लिखने/उस पर बिताए गए समय का हिसाब लगाने की सुविधा को प्रीफ़ेच के आधार पर उपलब्ध कराएं (Ibccb1)
  • सामान्य सोर्स सेट (I070b2) से WindowInsetsPadding मॉडिफ़ायर उपलब्ध कराना

वर्शन 1.7.0-beta01

14 मई, 2024

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

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

  • KeyboardOptions.shouldShowKeyboardOnFocus प्रॉपर्टी को फिर से जोड़ा गया है. हालांकि, इसे अब काम नहीं करने वाली प्रॉपर्टी के तौर पर जोड़ा गया है, ताकि बाइनरी के साथ काम करने की सुविधा को बनाए रखा जा सके. (I15cfe)
  • Modifier.anchoredDraggable अब आरटीएल लेआउट में इस्तेमाल किए जाने पर, हॉरिज़ॉन्टल ओरिएंटेशन वाले कॉम्पोनेंट के लिए, ड्रैग डेल्टा को डिफ़ॉल्ट रूप से उलट देता है. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations अब hasEqualAnnotations हो गया है. (I685c0)
  • टेक्स्ट में Material थीम वाले लिंक पाने के लिए, एपीआई को अपडेट किया गया. खास तौर पर, थीम वाले LinkAnnotations बनाने और थीम वाले लिंक के साथ एचटीएमएल को पार्स करने के लिए, TextDefaults से तरीके हटा दिए गए हैं. इसके बजाय, एक TextLinkStyles क्लास जोड़ी गई है. इसकी मदद से, लिंक को टेक्स्ट कॉम्पोज़ेबल के पैरामीटर के तौर पर स्टाइल किया जा सकता है. (I31b93)
  • onDragStarted और onDragStopped को ऐसे कॉलबैक से बदला गया जो सस्पेंड नहीं होते. (I59de8)

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

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

वर्शन 1.7.0-alpha08

1 मई, 2024

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.7.0-alpha07

17 अप्रैल, 2024

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

नई सुविधाएं

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

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

  • ContextMenuColors और उससे जुड़ी LocalContextMenuTheme ProvidableCompositionLocal को जोड़ता है. कॉम्पोज़िशन लोकल की मदद से, टेक्स्ट फ़ील्ड और चुने जा सकने वाले टेक्स्ट पर मौजूद कॉन्टेक्स्ट मेन्यू के रंगों में बदलाव किया जा सकता है. (Ifa154)
  • टेक्स्ट लिंक के लिए, सामान्य स्टाइल, कर्सर घुमाने पर दिखने वाली स्टाइल, और फ़ोकस होने पर दिखने वाली स्टाइल के अलावा, दबाए जाने की स्थिति वाली स्टाइल का विकल्प भी जोड़ा गया है. (I5f864, b/139312671)
  • हैंडराइटिंग जेस्चर के लिए ViewConfiguration.HandwritingGestureLineMargin को शामिल करें. BasicTextField के लिए, हैंडराइटिंग जेस्चर की सुविधा जोड़ी गई है. (Ie6e13, b/325660505)
  • हमने 1.7 रिलीज़ के लिए DelegatableNode.scrollIntoView को हटा दिया है, क्योंकि हमारे पास उससे जुड़े बाकी एपीआई प्लैटफ़ॉर्म को पूरी तरह से ठीक करने का समय नहीं था. यह फ़ंक्शन 1.8 (I6cf61, b/333421581, b/332900232) में फिर से उपलब्ध कराया जाएगा
  • लेआउट के निर्देशांकों के बारे में क्वेरी करते समय, अब excludeDirectManipulationOffset आर्ग्युमेंट का इस्तेमाल किया जा सकता है. इससे, उन पैरंट लेआउट के सेट किए गए ऑफ़सेट को बाहर रखा जा सकता है जिन्होंने Placeable.PlacementScope.withDirectManipulationPlacement का इस्तेमाल करके अपने चाइल्ड लेआउट को प्लेस किया है. इसी तरह, जो लेआउट अपने चाइल्ड एलिमेंट की पोज़िशन बार-बार बदलता है वह अब withDirectManipulationPlacement का इस्तेमाल करके उन्हें जगह दे सकता है. जैसे, स्क्रोल, जो डिफ़ॉल्ट रूप से लागू होता है. इससे approachLayout पर आधारित ऐनिमेशन को ज़्यादा आसान बनाने में मदद मिलती है. अब यह फ़ैसला लिया जा सकता है कि किस ऑफ़सेट को ऐनिमेट करना है और ऐनिमेशन के तरीके को तय करते समय, सीधे तौर पर क्या लागू करना है. (I60ec7)
  • LazyStaggeredGrid के लिए requestScrollToItem को शामिल करें. हर मेज़र-पास के लिए, क्लाइंट अब requestScrollToItem को कॉल करके, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. जब तक requestScrollToItem को कॉल नहीं किया जाता, तब तक इस सेटिंग से मौजूदा व्यवहार में कोई बदलाव नहीं होता. (I63983)
  • पेजर में requestScrollToPage को शामिल करें. हर मेज़र-पास के लिए, क्लाइंट अब requestScrollToPage को कॉल करके, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. जब तक requestScrollToPage को कॉल नहीं किया जाता, तब तक इस सेटिंग से मौजूदा व्यवहार में कोई बदलाव नहीं होता. (Ic4213)
  • LazyGrids के लिए requestScrollToItem को पेश किया गया. हर मेज़र-पास के लिए, क्लाइंट अब requestScrollToItem को कॉल करके, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकता है. जब तक requestScrollToItem को कॉल नहीं किया जाता, तब तक इस सेटिंग से मौजूदा व्यवहार में कोई बदलाव नहीं होता. (I0a7a0)
  • ClickableText को 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से जुड़ा LinkAnnotation वाला AnnotatedString बनाएं और इस AnnotatedString को Text कॉम्पोज़ेबल (I34d4b, b/323346994) में पास करें
  • UrlAnnotation का इस्तेमाल बंद कर दिया गया है. इसके बजाय, LinkAnnotation.Url का इस्तेमाल करें. अगर आपने Material थीम का इस्तेमाल किया है, तो TextDefaults ऑब्जेक्ट का इस्तेमाल करके, एनोटेशन बनाएं. इसमें Material थीम लागू होगी (I8d180, b/323346545)
  • String.parseAsHtml का नाम बदलकर AnnotatedString.Companion.fromHtml (I43dcd) कर दिया गया
  • parseAsHtml तरीके में स्टाइलिंग आर्ग्युमेंट (linkStyle, focusedLinkStyle, hoveredLinkStyle) और लिंक इंटरैक्शन के लिए एक लिंक इंटरैक्शन लिसनर जोड़ा गया. <a> टैग के साथ एचटीएमएल टैग की गई स्ट्रिंग को पार्स करते समय, यह तरीका हर टैग के लिए एक LinkAnnotation.Url बनाएगा. साथ ही, हर एनोटेशन में स्टाइल ऑब्जेक्ट और लिंक इंटरैक्शन लिसनर को पास करेगा. (I7c977)
  • LinkAnnotation अब स्टेटस के आधार पर स्टाइल करने के आर्ग्युमेंट और LinkInteractionListener लेता है. हाइपरलिंक पाने के लिए, इस एनोटेशन को AnnotatedString में जोड़ें. focusedState और/या hoveredState को पास करके, लिंक के फ़ोकस होने और/या उन पर कर्सर घुमाने पर दिखने वाले विज़ुअल कॉन्फ़िगरेशन को तय किया जा सकता है. (I81ce4, b/139312671)
  • लंबे स्क्रीनशॉट की सुविधा का फ़्लैग हटा दिया गया है. (I28648, b/329128246)
  • LazyColumn अब लंबे स्क्रीनशॉट में स्टिकी हेडर को सही तरीके से रेंडर करेगा. (I8d239, b/329296635)
  • नए BasicTextField के साथ लॉन्च किए गए, बाकी बचे एक्सपेरिमेंटल एपीआई को स्थिर किया गया है. (I714e2)
  • BasicSecureTextField में textObfuscationCharacter पैरामीटर जोड़ा गया है. यह पैरामीटर यह कंट्रोल करता है कि कॉन्टेंट को छिपाने के दौरान किस कैरेक्टर का इस्तेमाल करना है. (I0588b)
  • NestedScroll सोर्स के लिए, खींचें और छोड़ें और फ़्लिंग को UserInput और SideEffect से बदला जा रहा है. ऐसा इन सोर्स की बढ़ी हुई परिभाषा के हिसाब से किया जा रहा है. इनमें अब ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं. (I40579)
  • LocalBringIntoViewSpec को पेश किया गया है. यह प्लैटफ़ॉर्म के हिसाब से फ़ोकस स्क्रोलिंग की गतिविधि है, जो स्क्रोल करने लायक मॉडिफ़ायर लेयर पर लागू होती है. (I27aa5, b/317453911)
  • TextFieldCharSequence को हटा दिया गया है. TextFieldBuffer.originalValues को TextFieldBuffer.originalText और TextFieldBuffer.originalSelection से बदल दिया जाता है. (I2c7d6)
  • ImeOptions.hintLocales के लिए अब वैल्यू न डालने की अनुमति नहीं है. अगर आपको कोई खाली स्थानीय भाषा की सूची पास करनी है, तो कृपया LocaleList.Empty का इस्तेमाल करें. (Ic5bc4)
  • getOffsetFractionForPage का नाम बदलकर getOffsetDistanceInPages किया गया. (Ia05e2)

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

  • जब InputTransformations को next के साथ जोड़ा जाता है, तो उनके KeyboardOptions को अब KeyboardOptions.merge के नए तरीके का इस्तेमाल करके, अलग-अलग विकल्पों के हिसाब से सही तरीके से मर्ज किया जाता है. (Ie5304, b/295951492)
  • AnchoredDraggableState का targetValue अब पोज़िशन थ्रेशोल्ड को नहीं ध्यान में रखता. अब इसका थ्रेशोल्ड 50% है. इसका मतलब है कि targetValue दो ऐंकर के बीच के मिडपॉइंट पर बदलता है. (I82c2c)

बाहरी योगदान

  • दो स्क्रोल एपीआई (I56a75) के नाम बदले गए

वर्शन 1.7.0-alpha06

3 अप्रैल, 2024

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

नई सुविधाएं

  • LazyColumn और LazyRow में, आइटम के दिखने और न दिखने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाने) ऐनिमेशन के साथ काम करने के लिए, Modifier.animateItemPlacement() मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और Modifier.animateItem() नाम का एक नया मॉडिफ़ायर लॉन्च किया है. यह एक्सपेरिमेंटल नहीं है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), न दिखना (फ़ेड आउट), और क्रम में बदलना. (I2d7f7, b/150812265)
  • LazyColumn/LazyRow के क्लाइंट, अब आने वाले समय में होने वाले मेज़र-पास के लिए, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकते हैं. इसके लिए, उन्हें बिना निलंबन वाले LazyListState.requestToScroll को कॉल करना होगा. (I98036, b/209652366)
  • स्टाइल वाली स्ट्रिंग के लिए parseAsHtml तरीका जोड़ा गया: इससे एचटीएमएल टैग के साथ मार्क की गई स्ट्रिंग को AnnotatedString में बदला जा सकता है. ध्यान दें कि सभी टैग काम नहीं करते. उदाहरण के लिए, फ़िलहाल बुलेट की सूचियां नहीं दिखाई जा सकतीं. (I84d3d)
  • Android के आधिकारिक एपीआई (ScrollCaptureCallback) का इस्तेमाल करके, Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को प्रयोग के तौर पर लागू किया गया है. यह सुविधा प्रयोग के तौर पर उपलब्ध है और हो सकता है कि फ़िलहाल यह सभी मामलों में सही तरीके से काम न करे. इसलिए, यह सुविधा फ़िलहाल डिफ़ॉल्ट रूप से बंद रहती है. ऑप्ट-इन करने के लिए, ComposeFeatureFlag_LongScreenshotsEnabled फ़्लैग को 'सही है' पर सेट करें. यह फ़्लैग, 1.7 बीटा वर्शन से पहले हटा दिया जाएगा. (I2b055, b/329296471)
  • GraphicsLayer इंस्टेंस के प्लेसमेंट और रेंडरिंग में ज़्यादा सुविधाएं देने के लिए, नया GraphicsLayer एपीआई पेश किया गया है. साथ ही, GraphicsLayer मॉडिफ़ायर इंस्टेंस की जानकारी देने के लिए, Composable लागू करने के साथ समन्वय करने की ज़रूरत के बिना, इंट्रिन्सिक रेंडरिंग सुविधाओं के साथ काम करने की सुविधा भी दी गई है.

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

  • सभी KeyboardOptions पैरामीटर की डिफ़ॉल्ट वैल्यू अब तय नहीं होती. KeyboardOptions.merge तरीका जोड़ा गया.
  • KeyboardOptions.autoCorrect का नाम बदलकर autoCorrectEnabled कर दिया गया है और इसे शून्य वैल्यू वाला एट्रिब्यूट बना दिया गया है. शून्य वैल्यू का मतलब है कि कोई वैल्यू नहीं दी गई है. (Ia8ba0, b/295951492)
  • outOfBoundsPageCount का नाम बदलकर beyondViewportPageCount किया गया. (I129c6)
  • fun ClipEntry.getMetadata() को val ClipEntry.clipMetadata में बदल दिया गया है. (I50155)
  • TextFieldState.valueAsFlow() को हटा दिया गया है. snapshotFlow { state.text } या snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629) का इस्तेमाल करना बेहतर है
  • InputTransformation.transformInput पैरामीटर को फिर से व्यवस्थित किया गया. originalValue: TextFieldCharSequence को हटाया गया. इसके बजाय, TextFieldBuffer में अब इसी नाम की वैल्यू मौजूद है. valueWithChanges: TextFieldBuffer पैरामीटर को भी हटा दिया गया है. TextFieldBuffer अब फ़ंक्शन पर रिसीवर स्कोप है. (I919cc)
  • सॉफ़्टवेयर कीबोर्ड से की गई कार्रवाइयों को प्रोसेस करने के लिए, BasicTextField(state) वैरिएंट और BasicSecureTextField अब KeyboardActions के बजाय KeyboardActionHandler का इस्तेमाल करते हैं. (I58dda)
  • स्टाइलस हैंडराइटिंग डेलिगेशन एपीआई, जो "नकली" टेक्स्ट इनपुट फ़ील्ड पर स्टाइलस हैंडराइटिंग की सुविधा देते हैं. (I9c09c, b/327271923)
  • KeyboardOptions.shouldShowKeyboardOnFocus का नाम बदलकर showKeyboardOnFocus किया गया. (Ib4b7a, b/295951492)
  • Modifier.contentReceiver से hintMediaTypes पैरामीटर हटाया गया. डेवलपर को पहले से ही, मिले TransferableContent के मीडिया टाइप की जांच करने के लिए कहा गया था, क्योंकि यह कॉन्फ़िगर किए गए hintMediaTypes के साथ काम नहीं कर सकता. (I82f99)
  • BasicSecureTextField के पैरामीटर का क्रम बदला गया. KeyboardOptions क्लास के लिए, keyboardType और imeAction पैरामीटर हटा दिए गए हैं. हालांकि, BasicSecureTextField के लिए डिफ़ॉल्ट वैल्यू पहले जैसी ही रखी गई हैं. scrollState पैरामीटर को भी हटा दिया गया है. (Ibbfa9)
  • TextFieldState.text के टाइप को TextFieldCharSequence से बदलकर सिर्फ़ CharSequence कर दिया गया है. इसलिए, सीधे स्टेटस ऑब्जेक्ट से मौजूदा सिलेक्शन और कॉम्पोज़िशन वैल्यू पढ़ने के लिए, TextFieldState.selection: TextRange और TextFieldState.composition: TextRange? जोड़े गए हैं.
  • TextFieldState.forEachTextValue को हटा दिया गया है. (Idb2a2)
  • ClipboardManager.getClipMetadata और ClipboardManager.hasClip फ़ंक्शन हटाए गए. मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए, कृपया clipEntry.getMetadata() का इस्तेमाल करें. यह जानने के लिए कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं, ClipboardManager.getClip का नतीजा भी देखें. अगर नतीजा शून्य है, तो इसका मतलब है कि क्लिपबोर्ड में कोई मौजूदा क्लिप नहीं है. (I50498)
  • ClipboardManager.setClip अब क्लिपबोर्ड को खाली करने के लिए, शून्य को स्वीकार करता है. (I7d2e9)
  • ReceiveContentListener को फ़ंक्शन इंटरफ़ेस में बदल दिया जाता है. साथ ही, Modifier.receiveContent का वह ओवरलोड हटा दिया गया है जिसमें lambda फ़ंक्शन का इस्तेमाल होता है. ऐसा इसलिए किया गया है, क्योंकि ReceiveContentListener अब एक फ़ंक्शन इंटरफ़ेस है.
  • Modifier.receiveContent का नाम बदलकर Modifier.contentReceiver कर दिया गया. (I1e6af)
  • TransferableContent.consumeEach का नाम बदलकर TransferableContent.consume किया गया. (I1e462)
  • rememberTextFieldState को स्टेबल एपीआई के तौर पर लॉन्च किया गया है. (I37999)

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

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

वर्शन 1.7.0-alpha05

20 मार्च, 2024

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

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

  • हाइपरलिंक को स्टाइल करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध LocalTextLinkStyle कॉम्पोज़िशन लोकल को हटा दिया गया है. (Iebfa7)
  • onLinkClicked आर्ग्युमेंट की मदद से, BasicText के एक्सपेरिमेंटल ओवरराइड को हटा दिया गया. आने वाले समय में, हाइपरलिंक की सहायता के लिए एक नया एपीआई उपलब्ध कराया जाएगा. (I107d5)
  • TextFieldState और TextFieldBuffer में, कोडपॉइंट से जुड़े तरीकों और प्रॉपर्टी को हटा दिया गया है. चुने गए और कॉम्पोज़िशन से जुड़े बाकी एपीआई से भी inChars सफ़िक्स हटा दिए गए हैं. (Ief7ce)
  • AnchoredDraggable का currentValue अब ऐंकर पॉइंट से गुज़रने पर अपडेट हो जाएगा. settledValue का इस्तेमाल करके, पिछले currentValue सेमेटिक्स पाएं. यह सिर्फ़ किसी ऐंकर पर सेटल होने पर अपडेट होता है. प्रोग्रेस अब प्रॉपर्टी के बजाय फ़ंक्शन के तौर पर दिखती है. इसके लिए, शुरुआत और आखिर के पॉइंट की ज़रूरत होती है. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator को स्टेबल वर्शन के तौर पर रिलीज़ कर दिया गया है. (I9582b)
  • IME से जुड़े लो-लेवल टेस्ट और IME के अन्य लो-लेवल इस्तेमाल के उदाहरण लिखने में मदद करने के लिए, InterceptPlatformTextInput को जोड़ा गया है. PlatformTextInputTestOverride का अब इस्तेमाल नहीं किया जा सकता. (I862ed, b/322680547)
  • restrictedConstraints() को दो तरीकों में बांटें: fitPrioritizingWidth() और fitPrioritizingHeight() (I6d7fd)

बाहरी योगदान

  • हाल ही में की गई स्क्रोल कार्रवाई के लिए स्क्रोल की दिशा की जांच करने के लिए, दो नए एपीआई isLastScrollForward/isLastScrollBackward जोड़े गए हैं. अगर अब तक कोई स्क्रोल कार्रवाई नहीं की गई है, तो गलत दिखाएं. (I63a0e)

वर्शन 1.7.0-alpha04

6 मार्च, 2024

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

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

  • Android U के बाद के वर्शन वाले डिवाइसों पर, स्टाइलस की मदद से लिखने की सुविधा काम करती है. (I002e4)
  • KeyboardOptions में hintLocales जोड़ा गया, ताकि TextFields को पसंदीदा भाषा को पहले से सेट करने के लिए, खास स्थानीय भाषाओं के साथ आईएमई को हिंट देने की सुविधा मिल सके. (Id18c2)
  • एक्सपेरिमेंट के तौर पर उपलब्ध BasicTextField2 और BasicSecureTextField ओवरलोड हटा दिए गए हैं. ये ओवरलोड, value: String और onValueChange: () -> String पैरामीटर लेते थे. (I568b4)
  • InputTransformation में applySemantics फ़ंक्शन जोड़ें. इससे, BasicTextField2 के सेमेटिक्स पर असर पड़ेगा. (I74a2f, b/170648072)
  • इस सीएल में, हम GetScrollViewportLength सेमैटिक ऐक्शन जोड़ रहे हैं, ताकि हम compose में स्क्रोल किए जा रहे कॉम्पोनेंट की जानकारी को a11y सिस्टम में भेज सकें. यह सीएल, फ़ाउंडेशन स्क्रोल की जा सकने वाली सूचियों में भी उस प्रॉपर्टी का इस्तेमाल लागू करता है. (Ic5fa2)
  • BasicTextField2 का नाम बदलकर BasicTextField कर दिया गया है. (Ie5713)
  • FocusRequester.createRefs अब ठीक है (I4d92c, b/261436820)
  • DelegatableNode.scrollIntoView() को जोड़ा गया, ताकि मॉडिफ़ायर नोड सीधे scrollIntoView अनुरोध कर सकें. (I2b3b7, b/299939840)
  • DelegatableNode.requireView() को पेश किया गया, ताकि मॉडिफ़ायर नोड, कॉम्पोज़िशन को लोकल तौर पर पढ़े बिना, मौजूदा 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)
  • DraggableAnchors में परफ़ॉर्मेंस ऑप्टिमाइज़ेशन, जिनका इस्तेमाल AnchoredDraggable करता है. (I89cff)
  • androidx.compose.foundation.text2 पैकेज में मौजूद BasicTextField2 और उससे जुड़े एपीआई को androidx.compose.foundation.text में ले जाया गया है. (I9f635)
  • BasicTextField2 अब CodepointTransformation पैरामीटर स्वीकार नहीं करता. इसके लिए BasicSecureTextField या OutputTransformation का इस्तेमाल करें. (Id34ff)
  • सिर्फ़ दो AnnotatedStrings के एनोटेशन की तुलना करने का तरीका जोड़ा गया. (I32659)
  • MaxLines और Overflow के साथ ContextualFlowRow और बेहतर FlowRow/Column की सुविधा पेश की जा रही है. हमें यह बताते हुए खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्ध FlowRow और FlowColumn में कई सुधार किए गए हैं. अब इनमें maxLines और ओवरफ़्लो की सुविधा के साथ-साथ ContextualFlowRow और ContextualFlowColumn की सुविधा भी उपलब्ध है. इस अपडेट को परफ़ॉर्मेंस के लिए सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमें ContextualFlow*, ज़्यादा आइटम के लिए सही है. इसमें छोटे maxLines कॉन्फ़िगरेशन और डाइनैमिक +N ज़्यादा देखें बटन का इस्तेमाल किया जाता है. वहीं, FlowRow और FlowColumn, 100 से कम आइटम के लिए सही है. अहम जानकारी: FlowRow या FlowColumn में मौजूदा व्यवहार को बनाए रखने के लिए, overflow को FlowRowOverflow.Visible या FlowColumnOverflow.Visible पर सेट करें. ऐसा तब करें, जब सभी आइटम को कॉम्पोज़ किया जा रहा हो, भले ही वे क्रॉस ऐक्सिस मैक्स में फ़िट हों या नहीं. इन नई सुविधाओं के काम करने के उदाहरणों के लिए, ContextualFlowRowSample और FlowRowSample पर जाएं. (Ib9135, b/293577082)

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

  • कर्सर ऐनिमेशन अब चालू और बंद होने के बीच फ़्रेम का अनुरोध नहीं करता. (Ia2253)
  • KeyboardOptions' अब सभी प्रॉपर्टी को सही तरीके से कॉपी करेगा. (If12de)

वर्शन 1.7.0-alpha02

7 फ़रवरी, 2024

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

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

  • HorizontalPager, VerticalPager, और PagerState को स्टेबल वर्शन के तौर पर रिलीज़ किया गया. (I67660, b/316966909)
  • LocalTextLinkStyle कॉम्पोज़िशन लोकल जोड़ा गया है. इससे, ऐप्लिकेशन में टेक्स्ट में लिंक का स्टाइल बदला जा सकता है. अगर ऐप्लिकेशन में अपनी थीम का इस्तेमाल किया जा रहा है, तो आपको अपनी थीम के हिसाब से इस कॉम्पोज़िशन लोकल को सेट करना चाहिए. Material थीम का इस्तेमाल करने पर, लिंक का रंग डिफ़ॉल्ट रूप से Material के प्राइमरी कलर पर सेट हो जाएगा. (I7eb10)
  • receiveContent मॉडिफ़ायर को लॉन्च किया गया. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.
  • receiveContent, सॉफ़्टवेयर कीबोर्ड से मिलने वाले रिच कॉन्टेंट को स्वीकार करने के लिए, BasicTextField2 के साथ इंटिग्रेट होता है. इसके अलावा, क्लिपबोर्ड पर कॉपी करके चिपकाने की कार्रवाई से भी रिच कॉन्टेंट स्वीकार किया जा सकता है. (I81b72)
  • इस बदलाव में, हम पेजर में SnapFlingBehavior को TargetedFlingBehavior से बदल रहे हैं, ताकि इस्तेमाल के अन्य उदाहरणों को अनलॉक किया जा सके और ज़्यादा सुविधाएं दी जा सकें. (I762ea)
  • इस बदलाव में, हम स्नैपिंग एपीआई को स्टेबल बना रहे हैं. हम टेस्टिंग कोड को भी बेहतर बना रहे हैं. साथ ही, स्नैपिंग में ज़्यादा सैंपल जोड़ रहे हैं. (Id8da9)
  • TargetedFlingBehavior को पेश किया गया है. यह एक FlingBehavior है, जो चल रहे ऐनिमेशन की स्थिति और उसके टारगेट स्क्रोल ऑफ़सेट के बारे में जानकारी को प्रसारित करने की अनुमति देता है. (I6a207)

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

  • BasicTextField2 अब टाइप करते समय, कर्सर को स्क्रीन पर दिखता रखता है. ऐसा तब होता है, जब कर्सर को स्क्रोल करके बाहर ले जाया गया हो या इनपुट की वजह से कर्सर बाहर निकलने वाला हो. (Ieb856, b/237190748)

बाहरी योगदान

  • LazyLists के प्रीफ़ेच व्यवहार को कॉन्फ़िगर करने के लिए, एक्सपेरिमेंट के तौर पर एक एपीआई जोड़ा गया है. (I022a4)

वर्शन 1.7.0-alpha01

24 जनवरी, 2024

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

नई सुविधाएं

  • नया Indication API, IndicationNodeFactory जोड़ा गया. इससे, पिछले (अब बंद किए गए) rememberUpdatedInstance एपीआई की तुलना में, Indication को बेहतर तरीके से लागू किया जा सकता है. माइग्रेशन की जानकारी के लिए, developer.android.com पर जाएं.
  • clickable / combinedClickable / selectable / toggleable अब वैल्यू न डालने पर भी काम करने वाला MutableInteractionSource पैरामीटर स्वीकार करता है. अगर यह शून्य है और दिया गया Indication एक IndicationNodeFactory है, तो Indication को सिर्फ़ ज़रूरत पड़ने पर ही बनाया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर MutableInteractionSource को होस्ट नहीं किया जा रहा है और उसका इस्तेमाल नहीं किया जा रहा है, तो हमारा सुझाव है कि आप null पास करें.

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

  • AnchoredDraggable में DecayAnimation जोड़ें. इस बदलाव से, AnchoredDraggable में decayAnimationSpec पैरामीटर जुड़ जाता है. इससे किसी ऐंकर पर सेटल होने के दौरान, डेकेयर ऐनिमेशन का इस्तेमाल किया जा सकता है. इस बदलाव में, मौजूदा animationSpec को snapAnimationSpec में बदलना भी शामिल है. इससे हर स्पेसिफ़िकेशन के इस्तेमाल के उदाहरण को समझने में मदद मिलेगी.
  • BasicTextField2 को एक्सपेरिमेंट के तौर पर इस्तेमाल किया जा सकता है. यह BasicTextField के साथ सुविधाओं के हिसाब से काफ़ी हद तक एक जैसा होना चाहिए. साथ ही, इसका व्यवहार, प्रोडक्शन के लिए तैयार होना चाहिए. हालांकि, फ़िलहाल यह एपीआई प्रयोग के तौर पर उपलब्ध है. स्टेबल होने से पहले, इसका नाम बदलकर BasicTextField कर दिया जाएगा और इसे उसी पैकेज में ले जाया जाएगा.
  • BasicTextField2 के लिए, OutputTransformation एपीआई का पहला ड्राफ़्ट लॉन्च किया गया. यह एपीआई, पुराने BasicTextField में VisualTransformation के ज़्यादातर इस्तेमाल के उदाहरणों की जगह ले लेता है. हालांकि, यह सुविधा अभी पूरी तरह से तैयार नहीं है और कुछ चीज़ें सही से काम नहीं करेंगी. हालांकि, हम आपके इस्तेमाल के उदाहरणों के लिए, एपीआई के इस्तेमाल से जुड़े किसी भी सुझाव, राय या शिकायत का स्वागत करेंगे. (aosp/2708848)
  • LinkAnnotation टैग जोड़ा गया है. इसकी मदद से, टेक्स्ट में लिंक और क्लिक किए जा सकने वाले आइटम जोड़े जा सकते हैं. लिंक करने की सुविधा अभी पूरी नहीं हुई है. साथ ही, एपीआई में और भी बदलाव होने वाले हैं.
  • receiveContent मॉडिफ़ायर को लॉन्च किया गया. इससे डेवलपर को Jetpack Compose में रिच कॉन्टेंट पाने का तरीका मिलता है.
  • receiveContent, सॉफ़्टवेयर कीबोर्ड से मिलने वाले रिच कॉन्टेंट को स्वीकार करने के लिए, BasicTextField2 के साथ इंटिग्रेट होता है. इसके अलावा, क्लिपबोर्ड से चिपकाकर भी रिच कॉन्टेंट स्वीकार किया जा सकता है.
  • KeyboardOptions.shouldShowKeyboardOnFocus की मदद से, BasicTextField के डिफ़ॉल्ट व्यवहार को बंद किया जा सकता है. यह व्यवहार, फ़ोकस होने पर सॉफ़्टवेयर कीबोर्ड का अनुरोध करने का होता है.
  • TextInputService और LocalTextInputService का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, सीधे प्लैटफ़ॉर्म के IME API के साथ इंटिग्रेट करने के लिए, PlatformTextInputModifierNode का इस्तेमाल करें. (aosp/2862698)
  • Indication#rememberUpdatedInstance का अब इस्तेमाल नहीं किया जा सकता. इसकी वजह से, परफ़ॉर्मेंस पर ज़्यादा असर पड़ता है और अन्य ऑप्टिमाइज़ेशन नहीं किए जा सकते. इसके बजाय, आपको नए IndicationNodeFactory एपीआई का इस्तेमाल करना चाहिए.

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

  • VisualTransformation पास होने पर, BasicTextField अब ऑफ़सेट मैपिंग के कुछ चुने गए सैंपल की पहले से पुष्टि करेगा. इससे, कोडिंग से जुड़ी सामान्य गड़बड़ियों का पता चलता है. इन गड़बड़ियों की वजह से, बाद में मेज़र या ड्रॉ पास में गड़बड़ियां हो सकती हैं. कंपोज़िशन के दौरान गड़बड़ी का पता चलने से, डेवलपर को डेवलपमेंट के दौरान ये गड़बड़ियां दिख सकती हैं. इससे, प्रोडक्शन क्रैश से बचा जा सकता है. (I0fd42)
  • अमान्य इंडेक्स के लिए अमान्य इंडेक्स दिखाने पर, VisualTransformation गड़बड़ी नहीं दिखाएगा (b/316401857 )

वर्शन 1.6

वर्शन 1.6.8

12 जून, 2024

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

वर्शन 1.6.7

1 मई, 2024

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

वर्शन 1.6.6

17 अप्रैल, 2024

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

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

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, कुछ स्थितियों में TextField के enabled या readOnly एट्रिब्यूट को टॉगल करने पर, ऐप्लिकेशन क्रैश हो जाता था. (Iae17b)

वर्शन 1.6.5

3 अप्रैल, 2024

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

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

  • लाइन/कॉलम में, ऐसी गड़बड़ियों के लिए डीबगिंग लॉग जोड़ता है जिन्हें दोहराना मुश्किल होता है: (b/300280216 और b/297974033)

वर्शन 1.6.4

20 मार्च, 2024

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

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

  • अब टेक्स्ट के लेआउट के बॉर्डर से बाहर खींचने पर, 'ज़्यादा देर दबाकर रखें और फिर खींचें' सुविधा काम करती है. (Icdf90, b/325307463)

वर्शन 1.6.3

6 मार्च, 2024

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

वर्शन 1.6.2

21 फ़रवरी, 2024

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

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

  • AnimateContentSize को सही तरीके से रीसेट न होने की समस्या को ठीक करना. (I07051)
  • कुछ मामलों में, टेक्स्ट का intrinsicHeight हिस्सा ज़्यादा कैश मेमोरी में सेव होने की समस्या को ठीक किया गया. (3cd398, b/217910352)

वर्शन 1.6.1

7 फ़रवरी, 2024

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

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

  • तय सीमा से ज़्यादा स्क्रोल करने पर, ग्रिड के मेज़र में होने वाली गड़बड़ी को ठीक करना. (bffc39)
  • बड़े डाइमेंशन वाले लेआउट के लिए जांच जोड़ें. (e74af5)
  • अलग-अलग साइज़ वाले आइटम के ग्रिड में, 0 साइज़ वाले आइटम की जगह ठीक करना. (785f94)
  • onRelease कॉलबैक को उसी क्रम में कॉल करें जिस क्रम में onForgotten को कॉल किया गया है. (31ce3b)

वर्शन 1.6.0

24 जनवरी, 2024

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

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

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

वर्शन 1.6.0-rc01

10 जनवरी, 2024

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

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

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

वर्शन 1.6.0-beta03

13 दिसंबर, 2023

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

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

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

वर्शन 1.6.0-beta02

29 नवंबर, 2023

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

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

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

वर्शन 1.6.0-beta01

15 नवंबर, 2023

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

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

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

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

    खींचकर छोड़ने की सुविधा वाले सेशन से डेटा पाने के लिए, DragAndDropTarget फ़ैक्ट्री फ़ंक्शन जोड़ा गया है (Iebf3a)

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

  • फ़ाउंडेशन टूलटिप एपीआई अब @ExperimentalFoundationApi (I30b0b) हैं

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

    DragAndDropTarget में, एक ही एब्स्ट्रैक्ट तरीके के बजाय, खास ड्रैग और ड्रॉप इवेंट के लिए तरीके हैं

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.6.0-alpha08

18 अक्टूबर, 2023

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

नई सुविधाएं

  • Modifier.draggable2D एक नया मॉडिफ़ायर है, जिसकी मदद से 2D में आइटम को आसानी से खींचा और छोड़ा जा सकता है. सैंपल (Id95f5, b/214412658) देखें

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

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

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

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

वर्शन 1.6.0-alpha07

4 अक्टूबर, 2023

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

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

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

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

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

वर्शन 1.6.0-alpha06

20 सितंबर, 2023

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 1.6.0-alpha05

6 सितंबर, 2023

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

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

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

वर्शन 1.6.0-alpha04

23 अगस्त, 2023

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

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

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

वर्शन 1.6.0-alpha03

9 अगस्त, 2023

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

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

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

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

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

वर्शन 1.6.0-alpha02

26 जुलाई, 2023

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

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

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

वर्शन 1.6.0-alpha01

21 जून, 2023

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

नई सुविधाएं

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

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

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

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

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

संस्‍करण 1.5

वर्शन 1.5.4

18 अक्टूबर, 2023

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

वर्शन 1.5.3

4 अक्टूबर, 2023

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

संस्‍करण 1.5.2

27 सितंबर, 2023

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

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

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

संस्‍करण 1.5.1

6 सितंबर, 2023

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

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

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

वर्शन 1.5.0

9 अगस्त, 2023

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

1.4.0 के बाद किए गए ज़रूरी बदलाव

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

वर्शन 1.5.0-rc01

26 जुलाई, 2023

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

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

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

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

वर्शन 1.5.0-beta03

28 जून, 2023

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

वर्शन 1.5.0-beta02

7 जून, 2023

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

वर्शन 1.5.0-beta01

24 मई, 2023

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

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

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

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

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

वर्शन 1.5.0-alpha04

10 मई, 2023

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

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

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

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

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

वर्शन 1.5.0-alpha03

19 अप्रैल, 2023

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

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

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

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

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

  • FlowColumn/FlowRow को इनलाइन करें. (Idab37)

वर्शन 1.5.0-alpha02

5 अप्रैल, 2023

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

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

  • LazyGrid में, तय साइज़ वाली सेल के साथ-साथ, क्रॉस ऐक्सिस के हिसाब से सेल व्यवस्थित करने की सुविधा जोड़ी गई है. (I83ed9, b/235121277, b/267942510)
  • LazyStaggeredGrid में, तय साइज़ वाली लेन के लिए सहायता जोड़ी गई है. साथ ही, उन्हें क्रॉस ऐक्सिस के हिसाब से व्यवस्थित करने की सुविधा भी जोड़ी गई है. (I7d519)
  • AnnotatedString में मौजूद UrlAnnotation को अब TalkBack जैसी सुलभता सेवाओं की मदद से खोला जा सकता है. (If4d82, b/253292081)
  • टेक्स्ट फ़ील्ड के लिए, InsertTextAtCursor सेमेटिक्स ऐक्शन जोड़ा गया. (I11ed5)
  • टेक्स्ट से जुड़ी टेस्ट ऐक्शन (जैसे, performTextInput) अब फ़ील्ड पर क्लिक करने के बजाय, सीधे फ़ोकस का अनुरोध करेगी. इसके लिए, सेमेंटेक्स ऐक्शन का इस्तेमाल किया जाएगा. (I6ed05)
  • FlowRow में verticalArrangement और FlowColumn में horizontalArrangement का इस्तेमाल करके, क्रॉस ऐक्सिस स्पेसिंग/व्यवस्था के लिए सहायता जोड़ी गई है. हम FlowRow/FlowColumn में टॉप-लेवल verticalAlignment और horizontalAlignment को भी हटा देते हैं. डेवलपर इसके बजाय, Modifier.align का इस्तेमाल कर सकते हैं. इससे verticalAlignment और verticalArrangement के नाम रखने के तरीकों के बीच भ्रम कम होता है. (I87b60, b/268365538)

वर्शन 1.5.0-alpha01

22 मार्च, 2023

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

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

  • नए मॉडिफ़ायर सिस्टम का इस्तेमाल करने के लिए, टेक्स्ट और BasicText को फिर से तैयार किया गया है. इससे कई मामलों में परफ़ॉर्मेंस में काफ़ी सुधार होता है. आपको कोई बदलाव नहीं दिखना चाहिए. (If1d17, b/246961435)
  • टेक्स्ट एडिटर नोड पर IME ऐक्शन को ट्रिगर करने के लिए, PerformImeAction सेमेटिक्स ऐक्शन जोड़ा गया. (Ic606f, b/269633506)

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

  • Modifier.hoverable के इंटरनल को अपडेट किया गया. hoverable मॉडिफ़ायर, इंस्पेक्टर में सिर्फ़ तब दिखेगा, जब वह चालू हो. (I82103)

वर्शन 1.4

वर्शन 1.4.3

3 मई, 2023

androidx.compose.foundation:foundation:1.4.3 और androidx.compose.foundation:foundation-layout:1.4.3 को बिना किसी बदलाव के रिलीज़ किया गया है (सिर्फ़ वर्शन में बदलाव किया गया है).

वर्शन 1.4.2

19 अप्रैल, 2023

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

वर्शन 1.4.1

5 अप्रैल, 2023

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

वर्शन 1.4.0

22 मार्च, 2023

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

1.3.0 के बाद किए गए अहम बदलाव

  • Text और TextField के साथ-साथ, निचले लेवल के पैराग्राफ़ में भी इमोजी के साथ काम करने वाला इंटिग्रेशन जोड़ा गया. emojicompat कॉन्फ़िगर होने पर, यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.
  • EmojiCompat को PlatformParagraphStyle का इस्तेमाल करके, किसी खास टेक्स्ट पर कॉन्फ़िगर किया जा सकता है.
  • LazyStaggeredGrid(I28252) में पूरी लाइन के लिए स्पैन की सुविधा जोड़ी गई
  • ClickableText (I6938f) में एक्सपेरिमेंट के तौर पर onHover जोड़ा जा रहा है
  • runComposeUiTest फ़ंक्शन और create*ComposeRule फ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन, CoroutineContext पैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कॉम्पोज़िशन और कॉम्पोज़िशन में मौजूद किसी भी LaunchedEffect और rememberCoroutineScope() कॉल के लिए किया जाएगा. (I10614, b/265177763)
  • FlowRow और FlowColumn अब @ExperimentalFoundationApi के तौर पर उपलब्ध हैं. इससे, कॉम्पोनेंट के लिए लाइन और कॉलम के आधार पर, ज़्यादा सुविधाजनक लेआउट बनाने में मदद मिलती है. अगर मुख्य ऐक्सिस पर ज़रूरत के मुताबिक जगह नहीं है, तो कॉम्पोनेंट नई लाइन में दिखेंगे. (I3a7b2)
  • Modifier.basicMarquee(), एक्सपेरिमेंट के तौर पर उपलब्ध है. इसका इस्तेमाल करके, स्क्रॉल करने वाले मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाया जा सकता है. (I2df44, b/139321650)

वर्शन 1.4.0-rc01

8 मार्च, 2023

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

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

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

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

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

वर्शन 1.4.0-beta02

22 फ़रवरी, 2023

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

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

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

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

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

वर्शन 1.4.0-beta01

8 फ़रवरी, 2023

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

नई सुविधाएं

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

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

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

बाहरी योगदान

  • LazyListLayoutInfo, LazyGridLayoutInfo, और LazyStaggeredGridItemInfo में mainAxisItemSpacing प्रॉपर्टी जोड़ी गई (I52fad)

वर्शन 1.4.0-alpha05

25 जनवरी, 2023

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

नई सुविधाएं

  • LazyStaggeredGrid में पूरी लाइन के लिए स्पैन की सुविधा जोड़ी गई (I28252)
  • ClickableText में प्रयोग के तौर पर onHover जोड़ना (I6938f)
  • runComposeUiTest फ़ंक्शन और create*ComposeRule फ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन, CoroutineContext पैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कॉम्पोज़िशन और कॉम्पोज़िशन में मौजूद किसी भी LaunchedEffect और rememberCoroutineScope() कॉल के लिए किया जाएगा. (I10614, b/265177763)

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

  • OverscrollEffect के प्री/पोस्ट एपीआई को 'डेकोरेटर' applyToScroll और applyToFling फ़ंक्शन में मर्ज करता है. नए एपीआई शेप के साथ, ओवरस्क्रोल इफ़ेक्ट लागू करने के उदाहरणों के लिए, दस्तावेज़ में अपडेट किए गए सैंपल देखें. (I8a9c4, b/255554340)
  • इनलाइन/अब काम न करने वाले फ़ंक्शन (I24f91) के टाइप/शून्य होने की संभावना के बारे में ज़्यादा जानकारी
  • TextStyle में LineBreak और Hyphens एपीआई, स्टेबल वर्शन में अपग्रेड हो गए हैं. (Ic1e1d)

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

  • ऐनिमेशन बंद होने पर भी, टेक्स्ट फ़ील्ड में कर्सर अब ब्लिंक करता रहेगा. (I95e70, b/265177763)
  • Modifier.basicMarquee अब सिस्टम सेटिंग में ऐनिमेशन बंद होने पर भी ऐनिमेशन दिखाता है. (I23389, b/262298306, b/265177763)

बाहरी योगदान

  • TextInputSession और TextInputService में notifyFocusedRect के तरीके फिर से बंद नहीं किए गए हैं. (I23a04, b/262648050)

वर्शन 1.4.0-alpha04

11 जनवरी, 2023

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

नई सुविधाएं

  • FlowRow और FlowColumn अब @ExperimentalFoundationApi के तौर पर उपलब्ध हैं. इससे, कॉम्पोनेंट के लिए लाइन और कॉलम के आधार पर, ज़्यादा सुविधाजनक लेआउट बनाने में मदद मिलती है. अगर मुख्य ऐक्सिस पर ज़रूरत के मुताबिक जगह नहीं है, तो कॉम्पोनेंट नई लाइन में दिखेंगे. (I3a7b2)
  • Modifier.basicMarquee(), स्क्रॉल करने वाले मार्की इफ़ेक्ट के साथ कॉन्टेंट दिखाने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध है. (I2df44, b/139321650)

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

  • FocusRequesterModifier को FocusRequesterNode से बदल दिया गया है (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • variationSettings के साथ AndroidFont कन्स्ट्रक्टर अब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)
  • PinnableContainer एपीआई को लॉन्च किया गया, जो कॉम्पोज़िशन लोकल के ज़रिए, लेज़ी लिस्ट से प्रॉगेट किया जाता है. इससे मौजूदा आइटम को पिन किया जा सकता है. इसका मतलब है कि स्क्रोल करके व्यू से हटाए जाने पर, ऐसे आइटम को हटाया नहीं जाएगा. उदाहरण के लिए, Modifier.focusable() इस तरीके से फ़ोकस किए गए मौजूदा आइटम को पिन करेगा. (Ib8881, b/259274257, b/195049010)
  • स्क्रोल किए जा सकने वाले एलिमेंट, bringIntoViewRequesters और फ़ोकस किए जा सकने वाले एलिमेंट के जवाब देने के तरीके को फिर से लिखा गया है. इससे, इन कार्रवाइयों की जटिलता को बेहतर तरीके से मॉडल किया जा सकता है और ज़्यादा एज केस को हैंडल किया जा सकता है. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • अब काम न करने वाले और छिपाए गए फ़ंक्शन के लिए, रिटर्न टाइप के तौर पर वैल्यू न होने की संभावना ज़्यादा है (Ibf7b0)
  • TextStyle में एक्सपेरिमेंट के तौर पर TextMotion जोड़ा गया है. इससे यह तय किया जा सकता है कि टेक्स्ट Static(default) है या ऐनिमेशन वाला. अगर टेक्स्ट को ऐनिमेशन की मदद से स्केल, ट्रांसलेट या घुमाया जाना है, तो TextMotion.Animated का इस्तेमाल करें. (I24dd7)
  • Android प्लैटफ़ॉर्म के लिए फ़ोकस नेविगेशन के व्यवहार को ठीक करने के लिए, TextFieldFocusModifier जोड़ें (I00303)
  • drawText में maxSize: IntSize आर्ग्युमेंट को size: Size से बदल दिया गया है, ताकि यह अन्य DrawScope फ़ंक्शन के साथ इनलाइन हो सके. size डिफ़ॉल्ट रूप से Size.Unspecified पर सेट होता है. इससे, डिफ़ॉल्ट तौर पर पहले से लागू सेटिंग में कोई बदलाव नहीं होना चाहिए. (Icd27d)

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

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

आम समस्या

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

वर्शन 1.4.0-alpha03

7 दिसंबर, 2022

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

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

  • Compose नियम का इस्तेमाल करने वाले यूआई टेस्ट में, withFrameNanos कॉलबैक के दौरान फिर से शुरू किए गए कंटिन्यूएशन तब तक डिस्पैच नहीं किए जाएंगे, जब तक सभी फ़्रेम कॉलबैक चलना बंद नहीं हो जाते. यह सामान्य तरीके से चलने पर, लिखने के तरीके से मेल खाता है. हालांकि, पुराने व्यवहार पर आधारित टेस्ट काम नहीं कर सकते. इसका असर सिर्फ़ उस कोड पर पड़ेगा जो सीधे withFrameNanos या withFrameMillis को कॉल करता है. साथ ही, इसमें कॉलबैक के बाहर का लॉजिक होता है, जो उन फ़ंक्शन को पास किया जाता है जिन्हें कॉलबैक में ले जाने की ज़रूरत पड़ सकती है. उदाहरण के लिए इस सीएल में, ऐनिमेशन टेस्ट में हुए बदलाव देखें.
  • TestMonotonicFrameClock कंस्ट्रक्टर और फ़ैक्ट्री फ़ंक्शन में onPerformTraversals: (Long) -> Unit पैरामीटर जोड़ा गया है. यह पैरामीटर ज़रूरी नहीं है. इसका इस्तेमाल, withFrameNanos कॉलबैक के बाद, लेकिन कॉलर के कोरयूटीन को फिर से शुरू करने से पहले कोड चलाने के लिए किया जाता है. (Idb413, b/254115946, b/222093277, b/255802670)
  • पेज की सुलभता से जुड़ी कार्रवाइयां जोड़ें: PageUp, PageDown, PageLeft, PageRight. ध्यान दें कि ये सिर्फ़ API 29 से उपलब्ध हैं. (Ida4ab)
  • HorizontalPager और VerticalPager को जोड़ा गया है. इनकी मदद से, पेजर के तौर पर कॉम्पोनेंसे दिखाए जा सकते हैं. पेजर को कंट्रोल करने के साथ-साथ, पेजर की मौजूदा स्थिति के बारे में क्वेरी करने के लिए, PagerState को जोड़ा गया. PageSize को लॉन्च किया गया. यह पेजर के पेज के साइज़ को कंट्रोल करने का एक तरीका है. इसका इस्तेमाल, पेजर जैसे कैरसेल बनाने के लिए किया जा सकता है. PagerSnapDistance को जोड़ा गया. इससे यह कंट्रोल किया जा सकता है कि Pager के फ़्लिंग व्यवहार में स्नैपिंग कैसे काम करेगी. (I01120)
  • SnapFlingBehavior.performFling में एक ओवरलोड जोड़ा गया है, ताकि यह समझने में मदद मिल सके कि फ़्लिंग कहां सेटले हो जाएगी. (I569f6)
  • OverscrollEffect#isEnabled को हटा दिया गया है. इस फ़्लैग को याद रखने और सेट करने के बजाय, उन मामलों में ओवरस्क्रोल इफ़ेक्ट के लिए इवेंट डिस्पैच न करें जहां आपको ओवरस्क्रोल नहीं दिखाना है. उदाहरण के लिए, अगर ScrollableState#canScrollForward/backward दोनों 'गलत है' दिखाते हैं. (I1a4b0, b/255554340, b/255557085)
  • ScrollableState#canScrollForward और ScrollableState#canScrollBackward जोड़े गए हैं, ताकि यह पता लगाया जा सके कि ScrollableState को किसी भी दिशा में स्क्रोल किया जा सकता है या नहीं (चाहे वह अपनी रेंज में कम से कम / ज़्यादा से ज़्यादा पर हो). ScrollableState के मौजूदा वर्शन के साथ काम करने के लिए, यह डिफ़ॉल्ट रूप से 'सही है' पर सेट होता है. उपभोक्ता इसका इस्तेमाल करके, उपयोगकर्ता को यह बता सकते हैं कि स्क्रीन पर स्क्रोल करने के लिए जगह है. साथ ही, इसका इस्तेमाल उन ScrollableStates पर डेल्टा भेजने से बचने के लिए भी किया जा सकता है जिनमें किसी दिशा में स्क्रोल करने के लिए जगह नहीं है. इससे, ग़ैर-ज़रूरी काम कम हो जाता है. (Idf1a0, b/255557085)
  • पैरंट पेज के स्क्रोल की जानकारी क्वेरी करने के लिए, मॉडिफ़ायर एपीआई जोड़ा गया. (I2ba9d, b/203141462)
  • Clickable में इसका इस्तेमाल, प्रेस इंटरैक्शन में देरी करने के लिए किया जाता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं.
  • Scrollable ViewGroup के अंदर इस्तेमाल करने पर, Clickables के रिपल सही तरीके से देर से नहीं दिखने की समस्या को ठीक किया गया.
  • ड्रॉअर और शीट को अपडेट किया गया है, ताकि जेस्चर के स्क्रोल इवेंट बनने की स्थिति में, प्रेस करने में सही समय लग सके.
  • snapStepSize के नाम को अपडेट करें, ताकि वह SnapLayoutInfoProvider में मौजूद अन्य तरीकों से मेल खाए. (Ife67c)
  • Compose (Ibf6f9, b/139326806) में EmojiCompat जोड़ा गया
  • consumedWindowInsets() का नाम बदलकर consumeWindowInsets() और withConsumedWindowInsets() का नाम बदलकर onConsumedWindowInsetsChanged() किया गया. साथ ही, मॉडिफ़ायर को सार्वजनिक किया गया. (Ie44e1)

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

  • Modifier.animateItemPlacement() और लेज़ी ग्रिड की वजह से क्रैश होने की समस्या को ठीक कर दिया गया है. ऐसा कुछ स्थितियों में तब होता था, जब नए आइटम की संख्या, पिछले आइटम की संख्या से कम होती थी. (I0bcac, b/253195989)

वर्शन 1.4.0-alpha02

9 नवंबर, 2022

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

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

  • awaitFirstDown और waitForUpOrCancellation में अब ज़्यादा सुविधाओं के लिए PointerEventPass का इस्तेमाल किया जा सकता है. (I7579a, b/212091796)
  • beyondBoundCount एपीआई को Lazy* एपीआई से वापस लाएं (I12197)
  • लेज़ी एपीआई में पैरामीटर जोड़ा गया है, ताकि वे आइटम कंपोज कर सकें और उन्हें व्यूपोर्ट से बाहर रख सकें (I69e89, b/172029355)
  • BasicText और BasicTextField में minLines पैरामीटर जोड़ा गया. इसकी मदद से, लाइनों की संख्या के हिसाब से इन कॉम्पोज़ेबल की कम से कम ऊंचाई सेट की जा सकती है (I24294, b/122476634)

वर्शन 1.4.0-alpha01

24 अक्टूबर, 2022

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

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

  • जेस्चर डिटेक्टर के लिए, awaitEachGesture() नाम का एक नया तरीका जोड़ा गया. यह forEachGesture() की तरह ही काम करता है. हालांकि, जेस्चर के ऊपर लूप पूरी तरह से AwaitPointerEventScope में काम करता है, ताकि दोहराव के बीच इवेंट न छूटें.
  • forEachGesture() के बजाय awaitEachGesture() का इस्तेमाल किया जा सकता है, क्योंकि इससे इवेंट के बीच के जेस्चर मिट जाते हैं. (Iffc3f, b/251260206)
  • एनिमेशन की प्रोग्रेस का पता लगाने और एनिमेशन पूरा होने के बाद IME की जगह जानने के लिए, WindowInsets.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)
  • टेक्स्ट में हाइफ़न अपने-आप जोड़ने की सुविधा के लिए, प्रयोग के तौर पर नया एपीआई हाइफ़न जोड़ा गया (Iaa869)

वर्शन 1.3.0-beta03

21 सितंबर, 2022

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

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

  • टेक्स्ट में लाइन ब्रेक करने के तरीके को पसंद के मुताबिक बनाने के लिए विकल्प जोड़ें. (I86907)
  • BringIntoViewResponder, अब किसी अनुरोध को प्रोसेस करते समय उसके सबसे अप-टू-डेट बाउंड पा सकते हैं. (If86a5, b/241591211)
  • एक्सपेरिमेंट के तौर पर उपलब्ध Staggered Grid (I10b82) में, आइटम के बीच स्पेस देने की सुविधा जोड़ी गई
  • एक्सपेरिमेंट के तौर पर उपलब्ध Staggered Grid में कॉन्टेंट पैडिंग की सुविधा जोड़ना (I342ea)
  • कम से कम चौड़ाई की पाबंदियों के साथ काम करने के लिए, TextMeasurer.measure तरीके में size:IntSize आर्ग्युमेंट को constraints: Constraints में बदला गया. (I37530, b/242707525)
  • windowInsetsPadding के बाहर इस्तेमाल करने के लिए, WindowInsets का इस्तेमाल करने के लिए Modifier.withConsumedWindowInsets() जोड़ा गया.
  • MutableWindowInsets जोड़ा गया, ताकि फिर से कॉम्पोज़ किए बिना WindowInsets को आसानी से बदला जा सके. (I7fd28, b/237019262, b/243119659)

वर्शन 1.3.0-beta02

7 सितंबर, 2022

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

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

  • एक्सपेरिमेंट के तौर पर उपलब्ध StaggeredGrid (Ia48be) का शुरुआती वर्शन
  • FocusDirection.In और FocusDirection.Out का नाम बदलकर FocusDirection.Enter और FocusDirection.Exit किया गया (Ia4262, b/183746982)
  • rememberSnapFlingBehavior ओवरलोड की सुविधा जोड़ी गई है. इससे LazyLists में स्नैपिंग की सुविधा को तुरंत चालू किया जा सकता है. (Ifb48a)
  • snapFlingBehavior फ़ैक्ट्री को SnapFlingBehavior क्लास से बदला गया. एपीआई के उपयोगकर्ताओं के लिए, Dp<->Px कन्वर्ज़न को आसान बनाने के लिए, Density के लिए SnapLayoutInfoProvider के स्कोप वाले तरीके. (I54a11)
  • प्लेसएबल की सूची दिखाने के लिए LazyLayoutMeasureScope.measure को अपडेट करें. साथ ही, दिखाए गए आइटम की वैल्यू में बदलाव न करने की सुविधा को हाइलाइट करें. (I48b7c)
  • SnapLayoutInfoProvider को पेश किया गया है. यह LazyListState का इंस्टेंस बनाने के लिए, SnapLayoutInfoProvider का इस्तेमाल करता है. इसका इस्तेमाल LazyLists के लिए स्नैप FlingBehavior को चालू करने के लिए किया जा सकता है. (I2dd10)

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

  • अन्य await फ़ंक्शन से मैच करने के लिए, AwaitPointerEventScope#awaitLongPressOrCancellation को फिर से फ़ॉर्मैट करता है (I646e6)

वर्शन 1.3.0-beta01

24 अगस्त, 2022

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

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

  • OverscrollEffect से pointerPosition हटाया गया - ऐसे इफ़ेक्ट जो पॉइंटर की पोज़िशन पर ध्यान देते हैं वे effectModifier में Modifier.pointerInput { } का इस्तेमाल करके, पॉइंटर की मौजूदा पोज़िशन का पता लगा सकते हैं. (I9f606, b/241239306)
  • ज़्यादा जटिल जेस्चर का पता लगाने के लिए, AwaitPointerEventScope#awaitLongPressOrCancellation को अतिरिक्त बिल्डिंग ब्लॉक के तौर पर जोड़ा गया है (I04374, b/181577176)
  • लेज़ी लिस्ट में स्नैप करने की सुविधा चालू करने के लिए, lazyListSnapLayoutInfoProvider को जोड़ा गया है. (I3ecdf)
  • SnapFlingBehavior को लॉन्च किया गया, जो सूची को स्नैप करने की सुविधा चालू करने वाला फ़्लिंग व्यवहार है. अपने स्नैपिंग लेआउट के बारे में जानकारी के साथ SnapLayoutInfoProvider का एक इंस्टेंस दें. (Ie754c)

वर्शन 1.3.0-alpha03

10 अगस्त, 2022

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

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

  • रिसॉर्स फ़ॉन्ट में अब फ़ॉन्ट वैरिएशन की सेटिंग सेट करने की सुविधा है (एपीआई 26 और उसके बाद के वर्शन). (I900dd, b/143703328)
  • DeviceFontFamilyNameFont में वैरिएबल फ़ॉन्ट की सुविधा (Ic1279, b/143703328)
  • PlatformTextStyle और LineHeightStyle से एक्सपेरिमेंटल एनोटेशन हटा दिया गया. (I64bef)
  • जब VisualTransformation से मिला OffsetMapping अमान्य इंडेक्स दिखाएगा, तब टेक्स्ट फ़ील्ड में ज़्यादा जानकारी वाले अपवाद दिखेंगे. (Ie73f9, b/229378536)
  • आइटम उपलब्ध कराने वाले लॉजिक को लेज़ी लेआउट के बीच शेयर करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई. (Ic891c)
  • ScrollableDefaults.reverseDirection() अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Iba646)
  • SemanticsModifier.id को हटा दिया गया है और सेमेनटिक्स आईडी को LayoutInfo.semanticsId पर ले जाया गया है. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I2c290)
  • Modifier.clipScrollableContainer() अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Ia2b44)
  • TextInputService.show|hideSoftwareKeyboard का इस्तेमाल बंद करें. कृपया ऐप्लिकेशन कोड में SoftwareKeyboardController और IME-मैनेजमेंट कोड में TextInputSession का इस्तेमाल करें. (I14e4c, b/183448615)

वर्शन 1.3.0-alpha02

27 जुलाई, 2022

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

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

  • DrawScope पर drawText एक्सटेंशन फ़ंक्शन जोड़ा गया है. इससे, Canvas और drawBehind जैसे DrawScope पर काम करने वाले कॉम्पोज़ेबल और मॉडिफ़ायर पर, अलग-अलग स्टाइल में टेक्स्ट ड्रॉ करने का तरीका मिलता है. (I16a62, b/190787898)

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

  • फ़ोकस किए गए टेक्स्ट फ़ील्ड के बंद होने पर, अब सॉफ्ट कीबोर्ड छिप जाएगा. (I6e3e4, b/237308379)
  • वेग ट्रैकर में InputEventChange इवेंट जोड़ते समय, हम अब पोज़िशन के बजाय डेल्टा को ध्यान में रखेंगे. इससे यह पक्का होगा कि टारगेट एलिमेंट के हिलने पर भी, सभी मामलों में वेग का सही तरीके से हिसाब लगाया जाए (Icea9d, b/216582726, b/223440806, b/227709803)
  • जब स्क्रोल किए जा सकने वाले एलिमेंट में कोई फ़ोकस किया गया चाइल्ड एलिमेंट होता है, तो अब उसका साइज़ कम होने पर भी, फ़ोकस किया गया चाइल्ड एलिमेंट सही तरीके से स्क्रोल किया जाएगा. भले ही, साइज़ में बदलाव करने के लिए ऐनिमेशन का इस्तेमाल किया जा रहा हो. (I80867, b/230756508, b/220119990)
  • एक क्रैश को ठीक किया गया है. इसमें, चुने हुए विकल्प के चालू रहने के दौरान, TextField को हटाकर फिर से भर दिया जाता है. (I1235b, b/208655565, b/214253689)

वर्शन 1.3.0-alpha01

29 जून, 2022

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

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

  • AnnotatedString में TalkBack लिंक के साथ काम करने के लिए, UrlAnnotation एनोटेशन टाइप और उससे जुड़े तरीकों को जोड़ा गया है. (I1c754, b/231495122)

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

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

वर्शन 1.2

वर्शन 1.2.1

10 अगस्त, 2022

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

वर्शन 1.2.0

27 जुलाई, 2022

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

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

  • LazyVerticalGrid और LazyHorizontalGrid अब स्थिर हैं.
  • अब लेज़ी लिस्ट और ग्रिड में आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है. इससे कॉम्पोनेंट, एलिमेंट का ज़्यादा बेहतर तरीके से दोबारा इस्तेमाल कर पाएंगे.
  • अब लेज़ी लिस्ट और ग्रिड में userScrollEnabled पैरामीटर है. इसकी मदद से, उपयोगकर्ता के जेस्चर से स्क्रोल करने की सुविधा बंद की जा सकती है.
  • LazyLayout नाम का एक नया एक्सपेरिमेंटल एपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसका इस्तेमाल हम इंटरनल तौर पर, लेज़ी सूचियों और ग्रिड को बेहतर बनाने के लिए करते हैं.
  • OverscrollEffect API को एक्सपेरिमेंट के तौर पर लॉन्च किया गया है. कस्टम ओवरस्क्रोल इफ़ेक्ट तय किए जा सकते हैं. साथ ही, कस्टम स्क्रोल किए जा सकने वाले कंटेनर में, प्लैटफ़ॉर्म का स्टैंडर्ड इफ़ेक्ट जोड़ा जा सकता है.
  • नेस्ट किए गए स्क्रोलिंग इंटरऑपरेबिलिटी एपीआई को लॉन्च किया गया है. इससे, व्यू के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करने की सुविधा) और स्क्रोलिंग ऐक्टर को कंपोज़ करने की सुविधा मिलती है.
  • सभी स्क्रोलिंग कंटेनर में, माउस और ट्रैकपैड से स्क्रोल करने की सुविधा जोड़ी गई है.

वर्शन 1.2.0-rc03

29 जून, 2022

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

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

वर्शन 1.2.0-rc02

22 जून, 2022

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

वर्शन 1.2.0-rc01

15 जून, 2022

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

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

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

वर्शन 1.2.0-beta03

1 जून, 2022

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

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

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

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

  • WindowInsets.ime के दस्तावेज़ में यह बताया गया है कि ime इनसेट की शिकायत, एपीआई लेवल 23 से की जा रही है. हालांकि, एपीआई लेवल 30 और उसके बाद के वर्शन में ही ऐनिमेशन वाले इनसेट की शिकायत की जा सकती है. (Ia7fc0, b/230756508)
  • जब कर्सर किसी टेक्स्ट फ़ील्ड के आखिर में हो, तब आगे की ओर मिटाने की कुंजी दबाने पर, ऐप्लिकेशन क्रैश नहीं होगा.
  • DeleteSurroundingTextCommand और DeleteSurroundingTextInCodePointsCommand के कंस्ट्रक्टर के आर्ग्युमेंट अब नॉन-नेगेटिव होने चाहिए. (Ica8e6, b/199919707)

वर्शन 1.2.0-beta02

18 मई, 2022

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

  • डाउनलोड किया जा सकने वाला फ़ॉन्ट रिज़ॉल्यूशन, जो टेक्स्ट या TextField के लेआउट साइज़ में बदलाव नहीं करता है, वह पहले फिर से नहीं बनाया जाएगा. इस वजह से, फ़ॉन्ट पुराना दिखेगा. इस गड़बड़ी को ठीक करने से यह पक्का होता है कि टेक्स्ट लेआउट हमेशा फिर से ड्रॉ होने की सुविधा को ट्रिगर करता है (b/229727404). (I1d49e, b/229727404)

वर्शन 1.2.0-beta01

11 मई, 2022

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

नई सुविधाएं

  • यह 1.2 का पहला बीटा वर्शन है!

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

  • एक्सपेरिमेंट के तौर पर BeyondBoundsInterval जोड़ा गया है. इसका इस्तेमाल, LazyList के कस्टम लागू करने के लिए तब किया जा सकता है, जब वे आइटम को दिखने वाले बॉर्डर से बाहर लेआउट करते हैं (Ifabfb, b/184670295)
  • LineHeightBehavior का नाम बदलकर LineHeightStyle कर दिया गया है
  • LineVerticalAlignment का नाम बदलकर LineHeightStyle.Alignment कर दिया गया है
  • LineHeightTrim का नाम बदलकर LineHeightStyle.Trim कर दिया गया है
  • LineHeightStyle से कंस्ट्रक्टर की डिफ़ॉल्ट वैल्यू हटा दी गई हैं (I582bf, b/181155707)
  • LazyLayoutItemProvider इंटरफ़ेस के वैकल्पिक सदस्यों के लिए डिफ़ॉल्ट वैल्यू जोड़ी गई हैं. (Iba8a0)
  • LazyLayoutItemProvider API में, इंडेक्स के हिसाब से कॉम्पोज़ेबल लैम्ब्डा दिखाने वाली फ़ैक्ट्री के बजाय, अब हमारे पास इंडेक्स स्वीकार करने वाला एक आसान कॉम्पोज़ेबल फ़ंक्शन आइटम है. (Id2196)
  • LazyLayoutItemsProvider का नाम बदलकर LazyLayoutItemProvider कर दिया गया है (I0638c)
  • LazyLayoutItemsProvider.itemsCount का नाम बदलकर itemCount (Id409c) कर दिया गया है
  • ग्रेडिएंट कलरिंग के साथ टेक्स्ट बनाने के लिए, TextStyle और SpanStyle में ब्रश टूल जोड़ा गया. (I53869, b/187839528)
  • trimFirstLineTop, trimLastLineBottom एट्रिब्यूट के लिए, LineHeightBehavior को एक ही एनम में बदल दिया गया है: LineHeightTrim. LineHeightTrim में चार स्थितियों की वैल्यू होती हैं, जिन्हें दो बूलियन से तय किया जाता है: FirstLineTop, LastLineBottom, दोनों, और कोई नहीं (Ifc6a5, b/181155707)
  • TextStyle में LineHeightBehavior जोड़ा गया है. यह ParagraphStyle. LineHeightBehavior कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के ऊपर और आखिरी लाइन के नीचे लागू की जाए या नहीं. यह TextStyle(lineHeight) से दिए गए स्पेस में लाइन के अलाइनमेंट को भी तय करता है.

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.2.0-alpha08

20 अप्रैल, 2022

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

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

  • FontFamily.SansSerif का इस्तेमाल करते समय, Android पर सिस्टम फ़ॉन्ट के लिए सभी उपलब्ध वेट दिखाएं. यह एपीआई 21 से 28 के अंदर, sans-serif-medium जैसे फ़ॉलबैक फ़ॉन्ट के नामों का इस्तेमाल करेगा. यह बदलाव, एपीआई 21 से 28 के लिए, वज़न के लिए इस्तेमाल किए जाने वाले पैरामीटर के काम करने के तरीके में हुआ है. पहले, इन एपीआई में सिर्फ़ 400 और 700 वज़न का इस्तेमाल किया जा सकता था. (I380fe, b/156048036, b/226441992)
  • Paragraph और MultiParagraph अब Constraints पैरामीटर स्वीकार कर रहे हैं. फ़िलहाल, Constraints.maxHeight को पास करने का कोई फ़ायदा नहीं है. हालांकि, आने वाले समय में इसकी मदद से कुछ कैलकुलेशन किए जा सकेंगे. जैसे, ऊंचाई के आधार पर एलिप्स बनाना. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() अब कस्टम MutableSet जैसी क्लास को स्वीकार करता है. इसमें नए आइटम नहीं जोड़े जा सकते. (Icd314)
  • PointerInputChange में, आंशिक खपत (डाउन या पोज़िशन) की सुविधा बंद कर दी गई है. बदलाव को पूरी तरह से लागू करने के लिए, consume() का इस्तेमाल किया जा सकता है. isConsumed का इस्तेमाल करके यह पता लगाया जा सकता है कि किसी और ने पहले से ही बदलाव का इस्तेमाल किया है या नहीं.
  • PointerInputChange::copy() अब हमेशा शैलो कॉपी बनाता है. इसका मतलब है कि PointerInputChange की एक कॉपी इस्तेमाल होने के बाद, उसकी बाकी कॉपी भी इस्तेमाल हो जाएंगी. अगर आपको अनबाउंड PointerInputChange बनाना है, तो इसके बजाय कन्स्ट्रक्टर का इस्तेमाल करें. (Ie6be4, b/225669674)
  • एक्सपेरिमेंट के तौर पर नया LazyLayout एपीआई लॉन्च किया गया है. इससे, LazyVerticalGrid के LazyColumn जैसे अपने कॉम्पोनेंट बनाए जा सकते हैं. ध्यान दें कि एपीआई अभी शुरुआती दौर में है और आने वाले समय में रिलीज़ होने वाले वर्शन में इसमें बदलाव किया जा सकता है. (Iba2bc, b/166591700)
  • AndroidFont अब typefaceLoader को कन्स्ट्रक्टर पैरामीटर के तौर पर लेता है. (I2c971)
  • WindowInsets साथी ऐप्लिकेशन अब यह दिखाता है कि वह स्क्रीन पर दिख रहा है या नहीं. भले ही, वह विंडो के साथ इंटरसेक्शन में हो या नहीं. साथ ही, यह भी दिखाता है कि अगर वह डिवाइस पर उपलब्ध है, लेकिन फ़िलहाल चालू नहीं है, तो उसका साइज़ क्या हो सकता है. (I65182, b/217770337)

वर्शन 1.2.0-alpha07

6 अप्रैल, 2022

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

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

  • PinnableParent एपीआई जोड़ा गया है. इसकी मदद से, लेज़ी लेआउट के चाइल्ड, फ़िलहाल कॉम्पोज़ किए गए आइटम को डिस्पोज होने से रोक सकते हैं (Ibbdd0, b/184670295)
  • LazyListLayoutInfo और LazyGridLayoutInfo में अब beforeContentPadding और afterContentPadding फ़ील्ड हैं (I3b628, b/200920410)
  • IME में दशमलव सेपरेटर को शामिल करने के लिए, Keyboard.Number के विकल्प के तौर पर KeyboardType.Decimal जोड़ा गया है. (Iec4c8, b/209835363)
  • फ़ॉन्ट फ़ॉलबैक चेन के दौरान, सिस्टम में इंस्टॉल किए गए फ़ॉन्ट को देखने के लिए, नया फ़ॉन्ट डिस्क्रिप्टर Font(DeviceFontFamilyName) जोड़ें. (I30468, b/219754572)
  • PointerEventType.Scroll और PointerEvent.scrollDelta अब स्टेबल एपीआई हैं (I574c5, b/225669674)
  • TextStyle/ParagraphStyle. includeFontPadding में includeFontPadding के लिए जोड़ा गया, कुछ समय के लिए काम करने वाला कॉन्फ़िगरेशन, TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) की मदद से बदला जा सकता है. माइग्रेशन की सुविधा चालू करने के लिए, यह कॉन्फ़िगरेशन का एक अस्थायी विकल्प है. इसे हटा दिया जाएगा. (If47be, b/171394808)
  • सिस्टम-वाइड टेक्स्ट को बोल्ड करने की सुविधा को ऐक्सेस करने की सेटिंग को इंटिग्रेट करने के लिए, FontFamily.Resolver को अपडेट किया गया (I6c1e7)
  • ComposeView की consumeWindowInsets एक्सटेंशन प्रॉपर्टी की मदद से, डेवलपर Android WindowInsets का इस्तेमाल बंद कर सकते हैं. इससे हैरारकी में अलग-अलग ComposeViews, एक-दूसरे के साथ इंटरफ़ेयर किए बिना, WindowInsets लागू कर सकते हैं. (I0ef08, b/220943142)

वर्शन 1.2.0-alpha06

23 मार्च, 2022

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

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

  • फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने का अनुरोध करने के लिए, RequestFocus सेमेटिक्स ऐक्शन जोड़ा गया. (I17b71)
  • FocusOrder को अब FocusProperties में मर्ज कर दिया गया है. साथ ही, focusProperties() में अब focusOrder() की सभी सुविधाएं उपलब्ध हैं. FocusOrder और focusOrder() का अब इस्तेमाल नहीं किया जा सकता. focusRequester को स्वीकार करने वाले focusOrder() को focusProperties() के साथ focusRequester() मॉडिफ़ायर से बदला जाना चाहिए. इससे, मॉडिफ़ायर को अलग-अलग कामों के लिए अलग-अलग इकाइयां बनाने में मदद मिलती है. (I601b7)
  • WindowInsets.asPaddingValues(Density) को इसलिए जोड़ा गया था, ताकि डेवलपर कंपोजिशन में होने के बिना ही कन्वर्ज़न कर सकें. (I94c35)
  • वेक्टर ड्रॉबल की पार्सिंग को अपडेट किया गया है, ताकि मौजूदा लेआउट की दिशा आरटीएल होने पर, VectorPainter के कॉन्टेंट को अपने-आप मिरर किया जा सके. (I79cd9, b/185760237)

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

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

वर्शन 1.2.0-alpha05

9 मार्च, 2022

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

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

  • LazyVerticalGrid और LazyHorizontalGrid अब स्थिर हैं. (I307c0)
  • LazyGridItemInfo.Unknown को अलग-अलग LazyGridItemInfo.UnknownRow और LazyGridItemInfo.UnknownColumn से बदला गया (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid और उससे जुड़े सभी एपीआई को .grid सब-पैकेज में ले जाया गया. कृपया अपने इंपोर्ट को androidx.compose.foundation.lazy से androidx.compose.foundation.lazy.grid पर अपडेट करें. (I2d446, b/219942574)
  • टेक्स्ट: includeFontPadding अब डिफ़ॉल्ट रूप से बंद है. includeFontPadding=false की वजह से, स्क्रीन पर दिखने वाले कॉन्टेंट के काटे जाने की समस्याएं हल हो गई हैं. साथ ही, लंबी स्क्रिप्ट के लिए काट-छांट नहीं की जानी चाहिए. (I31c84, b/171394808)
  • मेज़र किए गए इंटरफ़ेस में अब parentData प्रॉपर्टी (I3313f) दिखती है
  • एक्सपेरिमेंट के तौर पर Modifier.onFocusedBoundsChanged को उपलब्ध कराया गया है. इससे, 'फ़ोकस करने लायक एलिमेंट' के बाउंड को देखा जा सकता है. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • LazyHorizontalGrid जोड़ा गया. (I61ae7, b/191238807)
  • क्रॉस ऐक्सिस के साइज़ तय करने के लिए, नया LazyVerticalGrid एपीआई जोड़ा गया (I17723)
  • FocusGroup मॉडिफ़ायर जोड़ा गया (I64bc0, b/213508274, b/184670295)

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

  • WindowInsets.toString() अब सही वैल्यू दिखाएगा. (I1585d)

बाहरी योगदान

  • Kotlinx coroutines 1.6.0 का इस्तेमाल करने के लिए अपडेट किया गया (I3366d)

वर्शन 1.2.0-alpha04

23 फ़रवरी, 2022

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

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

  • BringIntoViewResponders को अब मैन्युअल तरीके से, रिस्पॉन्स देने वाले पैरंट को अनुरोध भेजने की ज़रूरत नहीं है. इसके बजाय, उन्हें तुरंत वह रेक्टैंगल दिखाना होगा जिसे पैरंट को दिखाना है. (I8e66a)
  • टेक्स्ट में फ़ॉन्ट को एसिंक्रोनस तरीके से लोड करने की सुविधा जोड़ी गई (I77057, b/214587005)
  • LazyVerticalGrid अब उन आइटम के पहले line breaking का इस्तेमाल कर सकता है जिनका स्पैन मौजूदा लाइन में नहीं फ़िट हो रहा है. (I05c40, b/207462103)
  • excludeFromSystemGestures का नाम बदलकर systemGesturesExclusion किया गया (I19526)
  • LazyVerticalGrid अब reverseLayout के साथ काम करता है. (I6d7d7, b/215572963, b/211753558)
  • WindowInsets.only() तरीका जोड़ें, ताकि डेवलपर सिर्फ़ WindowInsets से डाइमेंशन शामिल कर सकें. (I14c94, b/217768486)
  • ComposableTarget, ComposableTargetMarker, और ComposableOpenTarget जोड़े गए हैं. इनकी मदद से, संकलन के समय यह रिपोर्ट किया जा सकता है कि किसी ऐसे ऐप्लिकेटर को टारगेट करने के लिए, कब किसी कंपोजेबल फ़ंक्शन को कॉल किया गया है जिसका इस्तेमाल करने के लिए उसे डिज़ाइन नहीं किया गया था.

    ज़्यादातर मामलों में, एनोटेशन का अनुमान, Compose के कंपाइलर प्लग इन से लगाया जा सकता है. इसलिए, इन एनोटेशन का सीधे तौर पर इस्तेमाल कम ही किया जाना चाहिए . जिन मामलों में अनुमान नहीं लगाया जा सकता उनमें कस्टम ऐप्लिकेटर बनाना और उसका इस्तेमाल करना, एब्स्ट्रैक्ट कंपोजेबल फ़ंक्शन (जैसे कि इंटरफ़ेस के तरीके), फ़ील्ड या ग्लोबल वैरिएबल शामिल हैं. ये वैरिएबल, कंपोजेबल लैम्ब्डा (लोकल वैरिएबल और पैरामीटर का अनुमान लगाया जाता है) होते हैं. इसके अलावा, ComposeNode या उससे जुड़े कंपोजेबल फ़ंक्शन का इस्तेमाल करने पर भी अनुमान नहीं लगाया जा सकता.

    कस्टम लागू करने वाले फ़ंक्शन के लिए, ComposeNode या ReusableComposeNode को कॉल करने वाले कंपोज किए जा सकने वाले फ़ंक्शन के लिए, फ़ंक्शन और कंपोज किए जा सकने वाले किसी भी लैम्ब्डा पैरामीटर टाइप के लिए CompoableTarget एनोटेशन जोड़ना ज़रूरी है. हालांकि, हमारा सुझाव है कि आप ऐसा एनोटेशन बनाएं जिसे ComposableTargetMarker के साथ एनोटेट किया गया हो. इसके बाद, सीधे ComposableTarget के बजाय, मार्क किए गए एनोटेशन का इस्तेमाल करें. ComposableTargetMarker के साथ मार्क किया गया कॉम्पोज़ेबल एनोटेशन, ComposbleTarget के बराबर होता है. इसमें एट्रिब्यूट क्लास का पूरी तरह क्वालिफ़ाइड नाम, लागू करने वाले पैरामीटर के तौर पर होता है. ComposableTargetMarker का इस्तेमाल करने का उदाहरण देखने के लिए, anroidx.compose.ui.UiComposable देखें. (I38f11)

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

  • अब LazyGridState.scrollToItem() और LazyGridState.animateScrollToItem() में नेगेटिव स्क्रोल ऑफ़सेट पास करने की अनुमति है. (I025c6, b/211753558)
  • TextField के लिए, फ़ॉन्ट को अलग से लोड करने की सुविधा. (Icc4bf, b/214587005)

वर्शन 1.2.0-alpha03

9 फ़रवरी, 2022

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

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

  • TextInputSession और TextInputService में मौजूद notifyFocusedRect तरीके अब काम नहीं करते और इन्हें कॉल नहीं किया जाएगा. इसके बजाय, BringIntoViewRequester का इस्तेमाल करें. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Modifier.animateItemPlacement() की मदद से, लेज़ी ग्रिड के आइटम के लिए ऐनिमेशन चालू किए गए थे. (Ib6621, b/211753218)
  • BringIntoViewRequester अब होस्टिंग के लिए इस्तेमाल किए जा रहे Android व्यू पर अनुरोध भेजता है. (Ia7a51)
  • FontFamilyResolver अब LocalFontFamilyResolver.current के ज़रिए उपलब्ध है
    • createFontFamilyResolver(context) और createFontFamilyResolver(context, coroutineScope) जोड़े गए, ताकि लिखने के अलावा, अन्य कामों के लिए भी फ़ॉन्ट फ़ैमिली रिज़ॉल्वर बनाए जा सकें.
    • Paragraph और MultiParagraph अब FontFamily.Resolver लेते हैं
    • TextLayoutResult.layoutInput.fontFamilyResolver में अब इस लेआउट के लिए इस्तेमाल किया जाने वाला रिज़ॉल्वर शामिल है. TextLayoutResult.layoutInput.resourceLoader को अब इस्तेमाल नहीं किया जाता है, इसलिए इसे बंद कर दिया गया है. (Id5a45, b/174162090)
  • Android पर फ़ॉन्ट रिसॉर्स डिस्क्रिप्टर के नए टाइप उपलब्ध कराने के लिए, AndroidFont नाम का एक नया लो-लेवल एपीआई जोड़ा गया है. उदाहरण के लिए, किसी ऐप्लिकेशन के हिसाब से बनाए गए बैकएंड से फ़ॉन्ट लोड करना, डिवाइस पर पहले से इंस्टॉल किए गए फ़ॉन्ट ढूंढना या किसी ऐसे संसाधन से फ़ॉन्ट लोड करना जो फ़िलहाल मौजूद फ़ॉन्ट फ़ैक्ट्री से उपलब्ध नहीं है.
    • वैकल्पिक और असाइन किए गए फ़ॉन्ट लोड करने के लिए, Font.ResourceLoaded एपीआई को बड़ा किया गया. हमारा सुझाव है कि ऐप्लिकेशन डेवलपर सीधे तौर पर इस एपीआई का इस्तेमाल न करें. नए तरह के फ़ॉन्ट जोड़ने के लिए, AndroidFont देखें.
    • Font.AndroidResourceLoader एक्सटेंशन फ़ंक्शन की मदद से, कंपोज़िशन के बाहर भी Font.ResourceLoader बनाया जा सकता है.
    • रिसॉर्स-आधारित फ़ॉन्ट में loadingStrategy पैरामीटर जोड़ा गया, ताकि रिसॉर्स फ़ॉन्ट के डाउनलोड किए जा सकने वाले फ़ॉन्ट एक्सएमएल का रेफ़रंस देने पर, ऐसाइन किए गए फ़ॉन्ट को एक साथ लोड किया जा सके. (Ie5aea, b/174162090)
  • Typeface(FontFamily) कंस्ट्रक्टर का इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले, फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट को लोड होने में 10 सेकंड तक लग सकते हैं. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, यह कॉल 10 सेकंड के लिए ब्लॉक हो सकता है. इसके बजाय, FontFamilyResolver.preload का इस्तेमाल करें
    • fontResource(FontFamily): Typeface का अब इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले, फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट को लोड होने में 10 सेकंड तक लग सकते हैं. इसके बजाय, FontFamilyResolver.preload (If8e7c, b/174162090) का इस्तेमाल करें
  • अब LazyVerticalGrid के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है - LazyGridScope पर item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कॉम्पोज़िशन को ज़्यादा असरदार बनाने के लिए, लॉजिक का फिर से इस्तेमाल करने में मदद मिलती है. साथ ही, सिर्फ़ मिलते-जुलते आइटम के बीच कॉन्टेंट का फिर से इस्तेमाल किया जाता है. (I7b355, b/215372836)
  • LazyListLayoutInfo और LazyGridLayoutInfo में अब नई प्रॉपर्टी हैं: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • अब LazyColumn/LazyRow के आइटम के लिए कॉन्टेंट टाइप तय किया जा सकता है - LazyListScope पर item/items फ़ंक्शन अब इस तरह के पैरामीटर स्वीकार करते हैं. इस तरह की जानकारी देने से, आइटम कॉम्पोज़िशन को ज़्यादा असरदार बनाने के लिए, लॉजिक का फिर से इस्तेमाल करने में मदद मिलती है. साथ ही, सिर्फ़ मिलते-जुलते आइटम के बीच कॉन्टेंट का फिर से इस्तेमाल किया जाता है. (I26506)
  • SubcomposeLayoutState कंस्ट्रक्टर, maxSlotsToRetainForReuse को स्वीकार नहीं करता. इसके बजाय, SubcomposeSlotReusePolicy को स्वीकार करने वाला एक नया कन्स्ट्रक्टर है - यह एक नया इंटरफ़ेस है, जो आने वाले समय में फिर से इस्तेमाल करने के लिए, किन स्लॉट को बनाए रखना चाहिए, इस पर ज़्यादा बेहतर तरीके से कंट्रोल करने की सुविधा देता है. (I52c4d)
  • पैडिंग और साइज़, दोनों के लिए WindowInsets में बदलाव करने वाले टूल जोड़ता है. इससे कुछ कॉन्टेंट को इनसेट एरिया में दिखाया जा सकता है, जबकि मुख्य कॉन्टेंट इनसेट एरिया से बाहर रहता है. उदाहरण के लिए, windowInsetsPadding का इस्तेमाल कॉन्टेंट के हिस्से को पैड करने के लिए किया जा सकता है, ताकि पूरी तरह या कुछ हद तक ढके गए हिस्सों से बचा जा सके. (Id0395, b/213942085)

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

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

वर्शन 1.2.0-alpha02

26 जनवरी, 2022

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

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

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

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

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

वर्शन 1.2.0-alpha01

12 जनवरी, 2022

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

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

  • LazyColumn, LazyRow, और LazyVerticalGrid में नया पैरामीटर userScrollEnabled जोड़ा गया है. इससे उपयोगकर्ता, टच जेस्चर या सुलभता से जुड़ी कार्रवाइयों की मदद से, उपयोगकर्ता के शुरू किए गए स्क्रोल को कुछ समय के लिए या हमेशा के लिए बंद कर सकते हैं. हालांकि, स्टेटस पर मौजूद तरीकों की मदद से प्रोग्राम के हिसाब से स्क्रोल करने की अनुमति अब भी होगी. (I7eae9, b/201150093)
  • magnifier मॉडिफ़ायर में onSizeChanged कॉलबैक जोड़ें. (I6879f)
  • SelectionContainer में चुने गए आइटम के हैंडल को खींचते समय, अब ज़ूम करने वाला विजेट दिखता है. (I30b38, b/139320979)

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

  • TextField स्क्रोल करके व्यू से बाहर जाने पर, कर्सर हैंडल न छिपने की समस्या को ठीक किया गया है. (I14552, b/208883748)

डिपेंडेंसी से जुड़े अपडेट

  • अब यह Kotlin 1.6.10 पर निर्भर करता है.

वर्शन 1.1

वर्शन 1.1.1

23 फ़रवरी, 2022

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

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

  • androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList पर NullPointerException को ठीक करें (aosp/1947059, b/206677462)
  • Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड के कॉन्टेंट की वजह से क्रैश होने की समस्या को ठीक किया गया. (I06020, b/197769306)
  • LazyVerticalGrid (aosp/1931080, b/207510535) में आरटीएल को ठीक किया गया

वर्शन 1.1.0

9 फ़रवरी, 2022

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

1.0.0 के बाद किए गए अहम बदलाव

  • Android 12 के ओवरस्क्रोल इफ़ेक्ट के लिए, बेहतर परफ़ॉर्मेंस
  • टच टारगेट के साइज़ में सुधार
  • ध्यान दें कि Compose 1.0 के साथ, Material कॉम्पोनेंट अपने लेआउट स्पेस को बड़ा कर देंगे, ताकि टच टारगेट साइज़ के लिए Material के सुलभता दिशा-निर्देशों को पूरा किया जा सके. उदाहरण के लिए, बटन के टच टारगेट का साइज़ कम से कम 48x48dp होगा. भले ही, आपने बटन का साइज़ छोटा सेट किया हो. इससे, Compose Material को Material Design कॉम्पोनेंट के काम करने के तरीके के हिसाब से अलाइन किया जाता है. इससे, व्यू और Compose को एक साथ इस्तेमाल करने पर, दोनों का काम करने का तरीका एक जैसा रहता है. इस बदलाव से यह भी पक्का होता है कि Compose के Material कॉम्पोनेंट का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) बनाते समय, टच टारगेट की सुलभता से जुड़ी ज़रूरी शर्तें पूरी होंगी.
  • नेविगेशन रेल के लिए बेहतर सहायता
  • पहले एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल एपीआई के तौर पर उपलब्ध कराया गया
  • Kotlin के नए वर्शन के लिए सहायता

वर्शन 1.1.0-rc03

26 जनवरी, 2022

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

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

  • Compose Material 1.1.0-rc03 के साथ काम करने के लिए अपडेट किया गया

वर्शन 1.1.0-rc01

15 दिसंबर, 2021

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

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

  • अब LazyListState.scrollToItem() और LazyListState.animateScrollToItem() में नेगेटिव स्क्रोल ऑफ़सेट पास करने की अनुमति है. (Iceb90, b/184252837)
  • एक गड़बड़ी को ठीक किया गया है, जिसकी वजह से सुलभता से जुड़ी स्क्रोल ऐक्शन मौजूद नहीं थे (I7cbfb)

वर्शन 1.1.0-beta04

1 दिसंबर, 2021

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

नई सुविधाएं

  • Kotlin 1.6.0 के साथ काम करने के लिए अपडेट किया गया

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

  • androidx.core.view(I7078a, b/204917439) में, वैल्यू न होने की स्थिति को ठीक किया गया
  • एक्सपेरिमेंट के तौर पर एपीआई जोड़े गए हैं. इनकी मदद से, PointerInputchange को पूरा इस्तेमाल किया जा सकता है या यह देखा जा सकता है कि उसे इस्तेमाल किया गया है या नहीं. (I2e59d)
  • टेक्स्ट फ़ील्ड में कर्सर या चुनने के लिए इस्तेमाल होने वाले हैंडल को खींचते समय, ज़ूम करने वाला विजेट दिखाएं. (I5391e, b/203781358)

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

  • IME की सेटिंग में बदलाव होने पर, टेक्स्ट हैंडल न चलने की समस्या को ठीक किया गया. (I25f2e)

वर्शन 1.1.0-beta03

17 नवंबर, 2021

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

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

  • LazyVerticalGrid में हॉरिज़ॉन्टल स्पैन की सुविधा जोड़ी गई. (I7e2fa, b/176758183)
  • लेज़ी लिस्ट के आइटम की पोज़िशन को ऐनिमेट करने की सुविधा को प्रयोग के तौर पर जोड़ा गया. LazyItemScope में Modifier.animateItemPlacement() नाम का एक नया मॉडिफ़ायर उपलब्ध है. इस्तेमाल का उदाहरण:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • LazyListScope.item या LazyListScope.items के ज़रिए कोई बटन देने पर, यह मॉडिफ़ायर आइटम के क्रम में बदलाव करने के ऐनिमेशन चालू कर देगा. आइटम के क्रम में बदलाव करने के अलावा, क्रम में बदलाव करने वाले अन्य सभी इवेंट, जैसे कि क्रम या अलाइनमेंट में बदलाव भी ऐनिमेशन के साथ दिखेंगे. (I59e7b, b/150812265)

वर्शन 1.1.0-beta02

3 नवंबर, 2021

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

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

  • अब रिपल और अन्य संकेत सिर्फ़ तब देर से दिखेंगे, जब वे Modifier.scrollable() कंटेनर में होंगे. पहले, इनका दिखना हमेशा देर से होता था. (Ibefe0, b/203141462)
  • प्रयोग के तौर पर उपलब्ध BringIntoView API जोड़ा गया है. इसकी मदद से, माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे किसी आइटम को स्क्रीन पर देखने के लिए स्क्रोल कर सकें (Ib918d, b/195353459)

बाहरी योगदान

  • Modifier.pointerHoverIcon (I95f01) जोड़ा गया

वर्शन 1.1.0-beta01

27 अक्टूबर, 2021

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

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

  • प्रयोग के तौर पर उपलब्ध BringIntoView API जोड़ा गया है. इसकी मदद से, माता-पिता को अनुरोध भेजा जा सकता है, ताकि वे किसी आइटम को स्क्रीन पर देखने के लिए स्क्रोल कर सकें (Ib918d, b/195353459)

वर्शन 1.1.0-alpha06

13 अक्टूबर, 2021

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

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

  • बेहतर परफ़ॉर्मेंस के साथ, Layout के लिए बिना चाइल्ड वाले ओवरलोड को जोड़ा गया (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction अब वह SemanticsNodeInteraction दिखाता है जिस पर फ़ंक्शन को कॉल किया गया था. (I9e5db)
  • performScrollToNode(matcher: SemanticsMatcher) जोड़ा गया है, जो स्क्रोल किए जा सकने वाले कंटेनर को, दिए गए मैचर से मैच होने वाले कॉन्टेंट पर स्क्रोल करता है. (Ic1cb8)

वर्शन 1.1.0-alpha05

29 सितंबर, 2021

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

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

  • PointerEventChange में, प्रयोग के तौर पर पुराने पॉइंटर जोड़े गए. (Ic1fd8, b/197553056, b/199921305)

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

  • स्क्रोल करने की सुविधा के लिए, स्क्रोल किए जा सकने वाले एलिमेंट (लेज़ी और नॉन-लेज़ी, दोनों) के लिए सुलभता से जुड़ी सहायता को ठीक किया गया (I6cdb0)

वर्शन 1.1.0-alpha04

15 सितंबर, 2021

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

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

  • performGesture और GestureScope, जिन्हें अब इस्तेमाल नहीं किया जाता. इन्हें performTouchInput और TouchInjectionScope से बदल दिया गया है. (Ia5f3f, b/190493367)
  • touchBoundsInRoot में SemanticsNode जोड़ा गया है, जिसमें टच टारगेट का कम से कम साइज़ शामिल है. इससे डेवलपर यह पक्का कर सकते हैं कि टच टारगेट, सुलभता से जुड़ी ज़रूरी शर्तों को पूरा करते हैं. (I2e14b, b/197751214)

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

  • Android 12 डिवाइसों पर, स्ट्रेच ओवरस्क्रोल की सुविधा जोड़ी गई है. (Iccf3c, b/171682480)

वर्शन 1.1.0-alpha03

1 सितंबर, 2021

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

नई सुविधाएं

  • Compose 1.1.0-alpha03 को 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 तरीका, जो वैकल्पिक FilterQuality पैरामीटर का इस्तेमाल करने के लिए, सोर्स और डेस्टिनेशन rects का इस्तेमाल करता है. यह पिक्सल आर्ट के लिए फ़ायदेमंद है, जिसे पिक्सल आर्ट के लिए स्केल अप करने पर पिक्सल में बदलना है. BitmapPainter + Image composable को अपडेट किया गया है, ताकि ज़रूरी नहीं होने वाले FilterQuality पैरामीटर (Ie4fb0, b/180311607) का भी इस्तेमाल किया जा सके
  • अब बैक बटन दबाने पर, टेक्स्ट फ़ील्ड में चुना गया टेक्स्ट हट जाता है. यह Android के EditText फ़ील्ड की तरह ही काम करता है. (I3ca16, b/174173645)
  • कर्सर हैंडल जोड़ें. (I07a82, b/173016579)

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

  • लेज़ी लिस्ट और सामान्य स्क्रोलिंग कॉम्पोनेंट के लिए, सेमेंटेक्स ऐक्शन की मदद से स्क्रोल करने की सुविधा अब ऐनिमेशन के साथ काम करती है (Id9066, b/190742024)

बाहरी योगदान

  • LazyVerticalGrid अब हॉरिज़ॉन्टल और वर्टिकल, दोनों तरह के क्रम के पैरामीटर स्वीकार करता है. (If9c92)

संस्करण 1.0

वर्शन 1.0.5

3 नवंबर, 2021

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

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

  • derivedStateOf इंस्टेंस को क्रैश ट्रैकिंग से जुड़ी समस्या ठीक की गई. (aosp/1792247)

वर्शन 1.0.4

13 अक्टूबर, 2021

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

डिपेंडेंसी से जुड़े अपडेट

  • Kotlin 1.5.31 पर निर्भर करने के लिए अपडेट किया गया

वर्शन 1.0.3

29 सितंबर, 2021

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

डिपेंडेंसी से जुड़े अपडेट

  • Kotlin 1.5.30 पर निर्भर करने के लिए अपडेट किया गया

वर्शन 1.0.2

1 सितंबर, 2021

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

Compose 1.0.2 रिलीज़ के साथ काम करने के लिए अपडेट किया गया. Compose 1.0.2, अब भी Kotlin 1.5.21 के साथ काम करता है.

वर्शन 1.0.1

4 अगस्त, 2021

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

डिपेंडेंसी से जुड़े अपडेट

  • Kotlin 1.5.21 पर निर्भर करने के लिए अपडेट किया गया.

वर्शन 1.0.0

28 जुलाई, 2021

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

1.0.0 के वर्शन की मुख्य सुविधाएं

यह Compose का पहला स्टेबल वर्शन है. ज़्यादा जानकारी के लिए, कृपया Compose रिलीज़ का आधिकारिक ब्लॉग देखें!

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • अगर Android Studio Bumblebee Canary 4 या AGP 7.1.0-alpha04/7.1.0-alpha05 का इस्तेमाल किया जा रहा है, तो आपको क्रैश होने की यह समस्या आ सकती है:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    इसे ठीक करने के लिए, अपनी build.gradle फ़ाइल में minSdkVersion को कुछ समय के लिए 24 या उसके बाद के वर्शन पर सेट करें. यह समस्या, Android Studio Bumblebee और 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 में अब सुलभता के लिए, contentDescription पैरामीटर काम करता है. (Ib547c)

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

  • बंद किए गए बटन, कार्ड, चेकबॉक्स, और पूरे Modifier.clickable(enabled=false) से क्लिक, पैरंट पर जाने से ब्लॉक हो जाएंगे. (Ic2c3b, b/183908811)

वर्शन 1.0.0-beta09

16 जून, 2021

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.0.0-beta08

2 जून, 2021

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

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

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

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

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

वर्शन 1.0.0-beta07

18 मई, 2021

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

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

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

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

  • LazyColumn/Row अब पहले दिखने वाले दो आइटम को चालू रखेगा (डिस्पोज नहीं किया जाएगा), भले ही वे पहले से स्क्रोल आउट हों. इससे कॉम्पोनेंट, स्क्रोल करने की परफ़ॉर्मेंस को बेहतर बनाने वाला नया आइटम कंपोज करते समय, चालू सब-कंपोज़िशन का फिर से इस्तेमाल कर सकता है. (Ie5555)
  • paintBackground को हटाएं. (I38660)
  • DrawScope का इस्तेमाल करके, चुने गए हिस्से का बैकग्राउंड बनाना. (I73c61, b/186674472)
  • beta06 रिग्रेशन को ठीक किया गया है. इसकी वजह से, 'वज़न वाले बच्चों के लेआउट' के लिए, spacedBy के क्रम का इस्तेमाल करने पर, पंक्ति/कॉलम पर असर पड़ता था. (Ifaf8c, b/187326588)

वर्शन 1.0.0-beta06

5 मई, 2021

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

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

  • नेविगेशन जेस्चर से जुड़ी समस्या हल करना (I1145e)
  • CollectionInfo और CollectionItemInfo सुलभता एपीआई जोड़े गए हैं. इनकी मदद से, कलेक्शन और उसके आइटम को सुलभता सेवाओं के लिए मार्क किया जा सकता है (Id54ef, b/180479017)
  • इंडेक्स किए गए आइटम की सूची को किसी खास इंडेक्स वाले आइटम पर स्क्रोल करने के लिए, SemanticsActions.ScrollToIndex जोड़ा गया. साथ ही, SemanticsProperties.IndexForKey जोड़ा गया, ताकि सूची में मौजूद किसी आइटम का इंडेक्स पता किया जा सके. दोनों कार्रवाइयां, LazyList की मदद से लागू की जाती हैं.
    • SemanticsNodeInteraction.performScrollToIndex जोड़ा गया, जो किसी सूची को दिए गए इंडेक्स पर स्क्रोल करता है. साथ ही, SemanticsNodeInteraction.performScrollToKey जो किसी सूची को दिए गए कीवर्ड वाले आइटम पर स्क्रोल करता है. (I4fe63, b/178483889, b/161584524)
  • AnnotatedString, TextFieldValue.Saver में सेव करने की सुविधा देता है. AnnotatedString.Builder में, addTtsAnnotation और withAnnotation के यूटिलिटी फ़ंक्शन जोड़े गए (I8cbdc, b/178446304)
  • 0.dp पैरामीटर की डिफ़ॉल्ट वैल्यू, PaddingValues(horizontal, vertical) में जोड़ी गईं (I05571, b/181336792)

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

  • weight(fill = false) वाले पंक्ति और कॉलम के बच्चे, अब पैरंट को मुख्य अक्ष के पूरे उपलब्ध स्पेस को भरने नहीं दे रहे हैं. (Ied94d, b/186012444, b/184355105)

वर्शन 1.0.0-beta05

21 अप्रैल, 2021

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

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

  • FlingBehavior इंटरफ़ेस को अब @Stable के तौर पर मार्क किया गया है. सभी लागू करने की प्रक्रियाओं को @Stable कॉन्ट्रैक्ट का पालन करना चाहिए. (I93354, b/184830577)

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

  • ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight, और accessibilityActionScrollDown के लिए, सुलभता से जुड़े स्क्रोल ऐक्शन ठीक किए गए. स्क्रोल किए जा सकने वाले आइटम के आखिर तक स्क्रोल करने के बजाय, अब यह तय की गई दिशा में एक स्क्रीन तक स्क्रोल करेगा. (Ieccb0)
  • ui-test-manifest और ui-tooling-data की AndroidManifest फ़ाइलें अब Android 12 (I6f9de, b/184718994) के साथ काम करती हैं

वर्शन 1.0.0-beta04

7 अप्रैल, 2021

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

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

  • SoftwareKeyboardController पर, hideSoftwareKeyboard और showSoftwareKeyboard के नाम को क्रमशः hide() और show() पर सेट करें.
    • LocalSoftwareKeyboardController के लिए, पूरा CompositionLocal इंटरफ़ेस उपलब्ध कराएं, ताकि इसे सेट किया जा सके. यह इंटरफ़ेस खास तौर पर टेस्ट में काम आता है (I579a6)
  • TextOverflow.Visible को पेश किया गया है. (Ic8f89)
  • RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope के सार्वजनिक इंस्टेंस हटा दिए गए. (I4e83e, b/181869067)

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

  • फ़ास्ट फ़्लिंग के बाद, किनारों पर मौजूद LazyColumn/LazyRow आइटम की गलत पोज़िशन से जुड़ी समस्या को ठीक किया गया (Ie4d13, b/183877420)
  • इस बदलाव से पहले, लोकल कॉम्पोज़ेबल फ़ंक्शन को उनके पैरामीटर के आधार पर स्किप किया जा सकता था. इस बदलाव के बाद, कोई भी लोकल कंपोजेबल फ़ंक्शन स्किप नहीं होगा. यह बदलाव इसलिए किया गया है, क्योंकि पैरंट से पैरामीटर कैप्चर करना, लोकल फ़ंक्शन के लिए आम और ज़रूरी है. पैरामीटर को स्किप करने से गड़बड़ियां होती हैं.

    खास जानकारी के लिए, यह उदाहरण देखें:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    इस बदलाव से पहले, count पैरामीटर अपडेट होने के बाद भी, ShowCount कॉम्पोज़ेबल फ़ंक्शन हमेशा स्किप हो जाता था. अब ऐसा नहीं है. (I5648a)

वर्शन 1.0.0-beta03

24 मार्च, 2021

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

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

  • DefaultMonotonicFrameClock का अब इस्तेमाल नहीं किया जा सकता. MonotonicFrameClock के बिना withFrameNanos या Recomposer.runRecomposeAndApplyChanges को कॉल करने पर, अब IllegalStateException दिखेगा. (I4eb0d)

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

  • FlingBehavior.performFling() को अब वेग 0 होने पर भी कॉल किया जाता है (I0b6e5, b/181237123)

वर्शन 1.0.0-beta02

10 मार्च, 2021

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

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

  • LazyColumn के मेज़रमेंट लॉजिक में कई छोटे ऑप्टिमाइज़ेशन जोड़े गए (Ic6889)
  • TextField पर मौजूद, पिछले SoftwareKeyboardController इंटरफ़ेस की जगह लेने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I5951e, b/168778053)
  • TextField पर मौजूद, पिछले SoftwareKeyboardController इंटरफ़ेस की जगह लेने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I84472, b/168778053)

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

  • एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लगाना (I6aa29, b/174531520)

वर्शन 1.0.0-beta01

24 फ़रवरी, 2021

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

यह Compose 1.0.0 बीटा वर्शन की पहली रिलीज़ है.

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

  • detectDragGestures में onStart कॉलबैक जोड़ा गया है (I67269, b/179995594)
  • अब इनट्रिन्सिक के साइज़ में बदलाव करने वाले मॉडिफ़ायर, एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I15744)
  • dp एश्योरेशन हटाए गए (I798d2)
  • सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक हटा दिया गया है. इसे जल्द ही एक नए एपीआई से बदल दिया जाएगा. (Iae869, b/168778053)
  • MeasureBlocks का नाम बदलकर MeasurePolicy कर दिया गया. यह एक मज़ेदार इंटरफ़ेस है. MeasurePolicy का इस्तेमाल करने के लिए, लेआउट एपीआई को अपडेट किया गया है या उन्हें आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
  • InteractionState को [Mutable]InteractionSource से बदल दिया गया है
    • इंटरफ़ेस, इंटरैक्शन इवेंट को उत्सर्जित / इकट्ठा करने के लिए ज़िम्मेदार होते हैं.
    • Button और Modifier.clickable() जैसे कॉम्पोनेंट में interactionState = remember { InteractionState() } पास करने के बजाय, interactionSource = remember { MutableInteractionSource() } का इस्तेमाल करें.
    • इसके बजाय: Interaction.Pressed in interactionState आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए, जैसे कि InteractionSource.collectIsPressedAsState().
    • जटिल इस्तेमाल के उदाहरणों के लिए, इंटरैक्शन की स्ट्रीम को देखने के लिए InteractionSource.interactions का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource दस्तावेज़ और सैंपल देखें.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • LayoutCoordinates के काम न करने वाले तरीकों को हटा दिया गया है. positionInParent और boundsInParent के लिए, प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
  • CoreTextField जैसे लो लेवल टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
  • प्लेसएबल में अब measuredSize दिखता है. इससे पता चलता है कि चाइल्ड लेआउट का साइज़ असल में कितना है. ऐसा हो सकता है कि यह साइज़, मेज़रमेंट की सीमाओं के मुताबिक न हो. (Ib2729, b/172560206, b/172338608)
  • सुलभता के मकसद से, टैब या रेडियो बटन के कलेक्शन को मार्क करने की सुविधा देने वाला selectionGroup मॉडिफ़ायर जोड़ा गया (Ie5c29)
  • LazyListState.animateScrollToItem जोड़ें

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

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

  • Modifier.zoomable को Modifier.transformable से बदल दिया गया है. smoothPanBy, smoothRotationBy को फ़ंक्शन के तौर पर जोड़ा गया है. (Ifc32b, b/175294473)

  • compositionLocalOf और staticCompositionLocalOf के लिए defaultFactory अब ज़रूरी है, न कि वैकल्पिक.

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

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

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

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

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

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

  • Modifier.verticalScroll()/horizontalScroll() में स्क्रोल की स्थिति को अब Ints के साथ दिखाया जाता है (I81298)

  • smoothScrollBy और scrollBy तरीकों के पैकेज को androidx.compose.foundation.gestures.* (I3f7c1, b/175294473) में बदल दिया गया

  • FlingConfig का नाम बदलकर FlingBehavior कर दिया गया है. अब इसमें, पहले से तय किए गए डेके के बजाय, निलंबित किए गए ऐनिमेशन को पसंद के मुताबिक बनाया जा सकता है. (I02b86, b/175294473)

  • साइज़ मॉडिफ़ायर के नाम बदले गए. Modifier.width/height/size का नाम बदलकर, requiredWidth/requiredHeight/requiredSize कर दिया गया. Modifier.preferredWidth/preferredHeight/preferredSize का नाम बदलकर width/height/size कर दिया गया है. (I5b414)

  • defaultMinSizeConstraints का नाम बदलकर defaultMinSize कर दिया गया है. (I4eaae)

  • Modifier.tapGestureFilter को हटा दिया गया है. इसके बजाय, Modifier.pointerInput { detectTapGestures(...) } का इस्तेमाल करें. (I266ed, b/175294473)

  • पॉइंटर इनपुट सिस्टम से, आंशिक खपत की सुविधा हटा दी गई है. आंशिक डेटा का इस्तेमाल करने के लिए, Modifier.nestedScroll का इस्तेमाल करने का सुझाव दिया जाता है. (Ie9c9b)

  • ओरिएंटेशन को फ़ाउंडेशन पैकेज में ले जाया गया है. VelocityTracker को ui.gesture से ui.input.pointer में ले जाया गया. (Iff4a8, b/175294473)

  • AnimationClockObservable और सबक्लास हटा दिए गए हैं. AnimatedFloat को हटा दिया गया है. (Icde52, b/177457083)

  • drawerState.open() और drawerState.close() अब सस्पेंड फ़ंक्शन हैं. rememberCoroutineScope() का इस्तेमाल करके, कॉम्पोज़िशन का स्कोप पाएं, ताकि उन्हें कॉल किया जा सके (I16f60, b/175294473)

  • Providers का नाम बदलकर CompositionLocalProvider कर दिया गया है

    • कॉम्पोज़िशन कंस्ट्रक्टर अब कोई कुंजी पैरामीटर स्वीकार नहीं करता और इसे बंद कर दिया गया है.
    • currentCompositeKeyHash को, टॉप लेवल फ़ंक्शन के बजाय, टॉप लेवल की कंपोज की जा सकने वाली प्रॉपर्टी में बदल दिया गया है.
    • CompositionData और CompositionGroup को androidx.compose.runtime.tooling नेमस्पेस में ले जाया गया है
    • ComposableLambda को किसी खास क्लास के बजाय इंटरफ़ेस बनाया गया है. साथ ही, इसमें अब टाइप पैरामीटर नहीं हैं.
    • ComposableLambdaN को कंक्रीट क्लास के बजाय इंटरफ़ेस बनाया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
    • snapshotFlow फ़ंक्शन को androidx.compose.runtime नेमस्पेस में ले जाया गया है
    • SnapshotMutationPolicy का मर्ज करने का तरीका अब एक्सपेरिमेंटल नहीं है
    • @TestOnly टॉप लेवल का clearRoots फ़ंक्शन हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
    • keySourceInfoOf और resetSourceInfo फ़ंक्शन हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
    • Composer.collectKeySourceInformation को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
    • isJoinedKey, joinedKeyLeft, और joinedKeyRight तरीके हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
    • कई टॉप लेवल एपीआई को अलग-अलग फ़ाइलों में ले जाया गया है और उन्हें फिर से व्यवस्थित किया गया है. Kotlin की फ़ाइल क्लास के सेमेंटेक्स की वजह से, इससे बाइनरी के साथ काम करने की सुविधा बंद हो जाएगी, लेकिन सोर्स के साथ काम करने की सुविधा नहीं. इसलिए, ज़्यादातर उपयोगकर्ताओं को कोई समस्या नहीं होगी.
    • (I99b7d, b/177245490)
  • Modifier.scrollable को फिर से काम करने लायक बनाया गया है. अब यह ScrollableController क्लास के बजाय, Scrollable इंटरफ़ेस का इस्तेमाल करता है (I4f5a5, b/174485541, b/175294473)

  • Modifier.draggable अब सामान्य लैम्ब्डा के बजाय DraggableState स्वीकार करता है. पहले जैसा व्यवहार पाने के लिए, rememberDraggableState { delta -> } की मदद से स्टेटस बनाया जा सकता है (Ica70f, b/175294473)

  • इन्सट्रिंसिक साइज़ के लिए ज़रूरी साइज़ तय करने के लिए, requiredWidth(IntrinsicSize) और requiredHeight(IntrinsicSize) मॉडिफ़ायर जोड़े गए हैं. (I0a6b4)

  • इस्तेमाल पर रोक लगाए गए emptyContent() को हटा दिया गया है. इसके बजाय, {} का इस्तेमाल करें. (Idb33f, b/179432510)

  • पहले से बंद किए गए कुछ एपीआई मिटाए गए (Ice5da, b/178633932)

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

  • TextField पर मौजूद, पिछले SoftwareKeyboardController इंटरफ़ेस की जगह लेने के लिए, नया LocalSoftwareKeyboardController कॉम्पोज़िशन लोकल एपीआई जोड़ा गया है. (I658b6, b/168778053)

वर्शन 1.0.0-alpha12

10 फ़रवरी, 2021

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

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

  • Modifier.pointerInput के लिए, अब याद रखने की सुविधा की ज़रूरत है, ताकि यह पता चल सके कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट की पहचान करने वाले कोरुटाइन को कब रीस्टार्ट करना चाहिए. (I849cd)
  • टेस्टिंग से जुड़ा अपडेट: hasText() फ़ंक्शन, टेक्स्ट फ़ील्ड में इनपुट और लेबल/सलाह/प्लेसहोल्डर, दोनों तरह के टेक्स्ट की जांच करेगा (Iab803)
  • PaddingValues.Absolute जोड़ा गया है. इसका इस्तेमाल, PaddingValues स्वीकार करने वाले एपीआई में किया जा सकता है. (Ia5f30)
  • onImeActionPerformed का इस्तेमाल नहीं किया जाना चाहिए. इसके बजाय, KeyboardActions का इस्तेमाल करें (If0bbd, b/179071523)
  • ImageBitmap और ImageVector के नाम रखने के तरीकों से बेहतर तरीके से मैच करने के लिए, ImagePainter का नाम बदलकर BitmapPainter कर दिया गया है, ताकि यह VectorPainter के साथ मिलता-जुलता हो. (Iba381, b/174565889)
  • सबस्ट्रिंग को अब आर्ग्युमेंट के तौर पर इस्तेमाल करके, सबस्ट्रिंग टेस्ट एपीआई को बेहतर बनाया गया है (Icbe78)
  • InfiniteAnimationPolicy कोरुटिन कॉन्टेक्स्ट एलिमेंट को जोड़ा गया है. इसे अनलिमिटेड ऐनिमेशन में लागू किया जाएगा. डिफ़ॉल्ट रूप से कोई नीति इंस्टॉल नहीं होती. हालांकि, ComposeTestRule के साथ टेस्ट चलाने पर नीति इंस्टॉल हो जाती है. (I50ec4, b/151940543)
  • Animatable.snapTo और Animatable.stop अब सस्पेंड फ़ंक्शन हैं (If4288)
  • ComponentActivity.setContent को androidx.activity:activity-compose मॉड्यूल में, androidx.activity.compose.setContent में ले जाया गया है. (Icf416)
  • Destructuring और copy() तरीकों को कई क्लास से हटा दिया गया है, जहां इनका इस्तेमाल बहुत कम किया जाता था. (I26702, b/178659281)
  • LazyColumn/LazyRow के लिए कस्टम बटन जोड़े गए. इससे, हमें आइटम का क्रम बदलने की सुविधा को बेहतर तरीके से मैनेज करने में मदद मिलती है. इसलिए, जब एलिमेंट का क्रम बदला जाता है या आइटम को बीच से हटाया जाता है, तो remember {} ब्लॉक में सेव की गई स्थिति, आइटम के साथ ही चली जाएगी.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Indication#createInstance को @Composable में बदला गया. साथ ही, LocalIndication को Indication में बदला गया, न कि () -> Indication. (I5eeea, b/157150564)

  • Constraints.enforce को Constraints.constrain से बदल दिया गया. (I8b8ea)

  • loadFontResource का इस्तेमाल नहीं किया जा सकता. इसके बजाय, fontResource का इस्तेमाल करें. imageResource, loadImageResource, vectorResource, और loadVectorResource अब काम नहीं करते. इसके बजाय, painterResource का इस्तेमाल करें. (I6b809)

  • परफ़ॉर्मेंस की वजहों से, ScrollAxisRange सेमेंटेक्स अब सीधे फ़्लोट वैल्यू के बजाय, फ़्लोट दिखाने वाले लैम्ब्डा फ़ंक्शन लेता है. (If4a35, b/178657186)

  • सुलभता के लिए, टेक्स्ट फ़ील्ड में बदलाव किए जा सकने वाले इनपुट टेक्स्ट को मार्क करने के लिए, EditableText सेमेनटिक्स जोड़ा गया. साथ ही, सेमेनटिक्स की जांच करने के लिए, उससे जुड़े टेस्ट के तरीके भी जोड़े गए (I8e07a)

  • Modifier.clickable में अब डबल और ज़्यादा देर तक क्लिक करने की सुविधा काम नहीं करती. इस सुविधा का इस्तेमाल करने के लिए, Modifier.combinedClickable का इस्तेमाल करें. (Iafad1)

  • toIntPx() फ़ंक्शन का नाम बदलकर roundToPx() कर दिया गया. (I9b7e4, b/173502290)

  • IntBounds का नाम बदलकर IntRect कर दिया गया और एपीआई को बेहतर बनाया गया. (I1f6ff)

  • Modifier.dragGestureFilter को बंद कर दिया गया है. इसके बजाय, Modifier.pointerInput { detectDragGestures (...)} का इस्तेमाल करें. इसके अलावा, एक अक्ष पर खींचने और छोड़ने के लिए Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473)

  • ऐंबियंट -> कॉम्पोज़िशनलोकल के नाम से मेल खाने के लिए, ऐंबियंट का नाम बदला गया. ऐंबियंट को पहले AmbientFoo कहा जाता था. अब CompositionLocals को LocalFoo कहा जाता है. (I2d55d)

  • चुने गए हिस्से को फ़ाउंडेशन पर ले जाया गया. (I7892b)

  • हमने पहले state { 0 } कॉम्पोज़ेबल को हटा दिया था और अब remember { mutableStateOf(0) } जैसे कॉम्पोज़ेबल के इस्तेमाल का प्रमोशन कर रहे हैं. इसी तरह, हम savedInstanceState { 0 } कॉम्पोज़ेबल को हटाने जा रहे हैं. इसके बजाय, आपको rememberSaveable { mutableStateOf(0) } का इस्तेमाल करना चाहिए. अगर MutableState में इस्तेमाल किए गए टाइप को बंडल में सेव किया जा सकता है, तो यह अपने-आप सेव और वापस आ जाएगा. अगर पहले कस्टम सेवर ऑब्जेक्ट पास किया जा रहा था, तो अब आपको rememberSaveable के नए ओवरलोड का इस्तेमाल करना होगा. इसमें stateSaver पैरामीटर है. इस्तेमाल इस तरह दिखेगा: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • सुलभता के लिए पासवर्ड सेमेंटेक्स जोड़ा गया (I231ce)

  • सुलभता के लिए, प्रोग्रेस बार के उन हिस्सों को मार्क करने के लिए ProgressBarRangeInfo.Indeterminate जोड़ा गया है जो पूरे नहीं हुए हैं (I6fe05)

  • ऐनिमेशन में चलने का समय अब नैनोसेकंड में तय नहीं किया जा सकता (If776a)

  • @ComposableContract को बंद कर दिया गया है. इसके बजाय, तीन और खास एनोटेशन इस्तेमाल किए जा सकते हैं.

    @ComposableContract(restartable = false) को @NonRestartableComposable पर सेट कर दिया गया है @ComposableContract(readonly = true) को @ReadOnlyComposable पर सेट कर दिया गया है @ComposableContract(preventCapture = true) को @DisallowComposableCalls पर सेट कर दिया गया है @ComposableContract(tracked = true) को हटा दिया गया है. (I60a9d)

  • emptyContent() और (@Composable () -> Unit).orEmpty() की सुविधाओं को बंद कर दिया गया है, क्योंकि अब इनका परफ़ॉर्मेंस पर कोई अच्छा असर नहीं पड़ता या इनसे कोई फ़ायदा नहीं मिलता (I0484d)

  • रीकंपोज़र को अब बंद किया जा सकता है. बंद किए गए रीकंपोज़र, कॉम्पोज़िशन के चाइल्ड कोरुटाइन के पूरा होने तक रीकंपोज़िशन जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)

  • LazyVerticalGrid से जुड़े एपीआई को प्रयोग के तौर पर मार्क किया गया है (Ia53e3, b/178519862)

  • rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)

  • RestorableStateHolder का नाम बदलकर SaveableStateHolder कर दिया गया है और इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. अंदरूनी तरीके RestorableStateProvider का नाम बदलकर SaveableStateProvider कर दिया गया. सामान्य टाइप को हटा दिया गया है, ताकि आप किसी भी कीवर्ड के तौर पर पास कर सकें. एक्सपेरिमेंट के तौर पर एनोटेशन की ज़रूरत अब नहीं है. (I0902e, b/174598702)

  • Saver, listSaver(), mapSaver(), autoSaver को androidx.compose.runtime.savedinstancestate से androidx.compose.runtime.saveable में ले जाया गया (I77fe6)

  • आर्टफ़ैक्ट androidx:compose:runtime:runtime-saved-instance-state का नाम बदलकर androidx:compose:runtime:runtime-saveable (I6dcac) कर दिया गया

  • ui पैकेज में, लंबे समय से इस्तेमाल नहीं किए जा रहे कई एपीआई मिटा दिए गए हैं. (I2f2dc)

  • compose:runtime-dispatch आर्टफ़ैक्ट अब काम नहीं करता. MonotonicFrameClock को अब compose:runtime में और AndroidUiDispatcher को compose:ui में देखा जा सकता है. (Ib5c36)

  • आरटीएल (राइट टू लेफ़्ट) दिशा में आकार को अपने-आप मिरर करने की सुविधा देने के लिए, RounderCornerShape, CutCornerShape, और CornerBasedShape के पैरामीटर के नाम बदले गए हैं. अब इन पैरामीटर के नाम, left/right से start/end हो गए हैं. AbsoluteRounderCornerShape और AbsoluteCutCornerShape को उन मामलों के लिए लॉन्च किया गया था जिनमें अपने-आप मिरर होने की सुविधा नहीं चाहिए. (I61040, b/152756983)

  • Modifier.scrollable से canDrag को हटा दिया गया है. (Id66e7, b/175294473)

  • Compose कंपाइलर प्लग इन जिस एपीआई को टारगेट करता है उसे फिर से तैयार किया गया है, ताकि किसी खास क्लास के बजाय इंटरफ़ेस का इस्तेमाल किया जा सके. इंटरफ़ेस अब टाइप पैरामीटर का भी इस्तेमाल नहीं करता.

    यह एक इंटरनल बदलाव है. इससे सोर्स कोड के साथ काम करने की सुविधा पर असर नहीं पड़ना चाहिए. हालांकि, यह बदलाव बाइनरी के साथ काम करने की सुविधा को बंद कर देता है. (I3b922, b/169406779)

  • Modifier.scaleGestureFilter को हटा दिया गया है. इसके बजाय, Modifier.zoomable का इस्तेमाल करें. इसके अलावा, Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473) का इस्तेमाल करें

  • AnimatedValue/Float का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, कृपया Animatable का इस्तेमाल करें. (I71345, b/177457083)

    • सार्वजनिक एपीआई से CoreText और CoreTextField को हटा दिया गया
    • SelectionContainer के इस्तेमाल को बंद कर दिया गया है (I99c19)
  • इस्तेमाल नहीं किए जा रहे, बिना रोक-टोक वाले स्क्रोलिंग फ़ंक्शन हटाना पिछली रिलीज़ में किए गए बदलावों के साथ, अब बिना रोक-टोक वाले स्क्रोलिंग फ़ंक्शन को पूरी तरह से हटा दिया गया है. कृपया एक ही नाम वाले फ़ंक्शन को निलंबित करने वाले फ़ंक्शन में बदलें. कोरूटीन स्कोप को rememberCoroutineScope() के ज़रिए पाया जा सकता है. (I3d39c, b/178169563)

  • androidx.compose.foundation.layout.ConstraintLayout को बंद कर दिया गया है. इसके बजाय, androidx.constraintlayout.compose.ConstraintLayout का इस्तेमाल करें. आपको androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 पर डिपेंडेंसी जोड़नी होगी. (I87adc)

  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, और pressIndicaitonGestureFilter अब काम नहीं करते. इसके बजाय, detectTapGestures फ़ंक्शन के साथ Modifier.clickable या Modifier.pointerInput का इस्तेमाल करें. (I6baf9, b/175294473)

  • Recomposer.current() को हटा दिया गया है. [खास जानकारी]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner के ज़रिए, विंडो के स्कोप वाले रीकंपोज़र को धीरे-धीरे बनाता है. होस्ट के लाइफ़साइकल के रुकने पर, फिर से कॉम्पोज़ करने की प्रोसेस और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)

  • Recomposer.runningRecomposers अब रीड-ओनली RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. इससे, कॉम्पोज़िशन की प्रोसेस के दौरान, कॉम्पोज़िशन की मौजूदा स्थिति को देखा जा सकता है. Recomposer.current() के बजाय, इस एपीआई का इस्तेमाल करें. Recomposer.current() अब काम नहीं करता. (If8ebe)

वर्शन 1.0.0-alpha11

28 जनवरी, 2021

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

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

  • scrollBy फ़ंक्शन के बिना काम करने वाले वर्शन को बंद करना और scrollTo फ़ंक्शन के बिना काम करने वाले वर्शन को हटाना

    हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने के लिए, 'रोकें' फ़ंक्शन का इस्तेमाल करें और स्क्रोल पूरा होने का इंतज़ार करें. इस बदलाव के तहत, हम इन फ़ंक्शन के ऐसे वर्शन को बंद कर रहे हैं जो निलंबित नहीं हैं और/या हटा रहे हैं. (Ie9ced)

  • smoothScrollBy फ़ंक्शन के बिना इस्तेमाल करने पर रोक लगाना हमारा सुझाव है कि अब स्क्रोलिंग को कंट्रोल करने के लिए, सस्पेंड फ़ंक्शन का इस्तेमाल करें और स्क्रोल पूरा होने का इंतज़ार करें. इस बदलाव के तहत, हम इन फ़ंक्शन के ऐसे वर्शन बंद कर रहे हैं जिन्हें निलंबित नहीं किया गया है. (I12880)

  • इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा पैरामीटर जोड़ा गया है. इसका इस्तेमाल, सुलभता सेवाओं के बारे में जानकारी देने के लिए किया जाता है (I2ac4c)

  • BasicTextField को 'decorationBox' नाम का एक नया पैरामीटर मिला है. इसकी मदद से, टेक्स्ट फ़ील्ड में आइकॉन, प्लेसहोल्डर, लेबल वगैरह जोड़े जा सकते हैं. साथ ही, इसके हिट टारगेट एरिया को बढ़ाया जा सकता है. (I16996)

  • Modifier.draggable से canDrag पैरामीटर हटा दिया गया है (Ic4bec, b/175294473)

  • FlingConfig को स्वीकार करने वाले AnimatedFloat.fling को हटा दिया गया है. इसके बजाय, कृपया suspend Animatable.animateDecay का इस्तेमाल करें. (I4659b, b/177457083)

  • data class को इन क्लास से हटा दिया गया है:

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • क्लिक किए जा सकने वाले, टॉगल किए जा सकने वाले, और चुने जा सकने वाले आइटम अब कॉम्पोज़िशन के बाहर बनाए जा सकते हैं (I0a130, b/172938345, b/175294473)

  • ScrollableColumn/Row एलिमेंट का इस्तेमाल बंद कर दिया गया है. अगर आपके पास ज़्यादा स्क्रोल करने वाला कॉन्टेंट है, तो ScrollableColumn का इस्तेमाल करने से कम फ़ायदा मिलता है. इसकी तुलना में, LazyColumn का इस्तेमाल करने से ज़्यादा फ़ायदा मिलता है. ऐसा इसलिए, क्योंकि LazyColumn की मदद से सिर्फ़ दिखने वाले एलिमेंट को कंपोज/मेज़र/ड्रॉ किया जा सकता है. हमने ScrollableColumn और ScrollableRow एलिमेंट का इस्तेमाल बंद करने का फ़ैसला लिया है. ऐसा इसलिए किया गया है, ताकि उपयोगकर्ता इन एलिमेंट का इस्तेमाल न करें. इसके बजाय, हम LazyColumn और LazyRow एलिमेंट का इस्तेमाल बढ़ावा देना चाहते हैं. उपयोगकर्ता अब भी यह तय कर सकते हैं कि उन्हें लेज़ी लोडिंग की ज़रूरत नहीं है और सीधे तौर पर मॉडिफ़ायर का इस्तेमाल करना है. इसके लिए, इस तरह का इस्तेमाल करें: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • LazyColumn/LazyRow/LazyVerticalGrid के दायरे के लिए, नई items(count: Int) फ़ैक्ट्री मेथड. items(items: List) और itemsIndexed(items: List) अब एक्सटेंशन फ़ंक्शन हैं. इसलिए, इनका इस्तेमाल करने पर, आपको इन्हें मैन्युअल तरीके से इंपोर्ट करना होगा. ऐरे के लिए नए एक्सटेंशन ओवरलोड: items(items: Array) और itemsIndexed(Array) (I803fc, b/175562574)

  • अब काम न करने वाले AbsoluteArrangement को हटा दिया गया है. (Iffa96, b/177641870)

  • Box में propagateMinConstraints पैरामीटर जोड़ा गया था. इससे यह तय किया जा सकता है कि इनकमिंग कम से कम सीमाओं को Box के कॉन्टेंट में पास किया जाना चाहिए या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. (I0125b, b/152613457)

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

  • SideEffect और DisposableEffect API के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है (If760e)
  • WithConstraints को BoxWithConstraints के तौर पर फिर से तैयार किया गया और foundation.layout में ले जाया गया. (I9420b, b/173387208)
  • फ़ॉन्ट/फ़ॉन्ट फ़ैमिली/टाइपफ़ेस के फ़ैक्ट्री फ़ंक्शन में बदलाव

    • कैपिटल लेटर से शुरू होने वाले फ़ैक्ट्री फ़ंक्शन जोड़े गए
    • पहले अक्षर छोटे होने पर, फ़ैक्ट्री फ़ंक्शन के पुराने वर्शन काम नहीं करते
    • नए फ़ैक्ट्री फ़ंक्शन, सबक्लास के बजाय FontFamily दिखाते हैं
    • सबक्लास के कन्स्ट्रक्टर छिपाए गए, ताकि उन्हें सिर्फ़ फ़ैक्ट्री फ़ंक्शन के ज़रिए बनाया जा सके.
    • Font.asFontFamily का नाम बदलकर Font.toFontFamily किया गया
    • (I42aa7)
  • ComposeContentTestRule को जोड़ा गया है. यह ComposeTestRule को बढ़ाता है और setContent को परिभाषित करता है. setContent को ComposeTestRule से हटा दिया गया है. फ़ैक्ट्री मेथड createEmptyComposeRule() जोड़ा गया है, जो ComposeTestRule दिखाता है और आपके लिए कोई गतिविधि शुरू नहीं करता. इसका इस्तेमाल तब करें, जब आपको टेस्ट के दौरान अपनी गतिविधि लॉन्च करनी हो. उदाहरण के लिए, ActivityScenario.launch (I9d782, b/174472899) का इस्तेमाल करके

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

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

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

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

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

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

  • RememberObserver, CompositionLifecycleObserver की जगह लेता है और CompositionLifecycleObserver अब काम नहीं करता.

    RememberObserver, CompositionLifecycleObserver की जगह इस्तेमाल किया जाता है. इसमें बदले गए सेमेटिक्स और नाम बदले गए तरीके शामिल हैं. नए एपीआई पर स्विच करने की प्रोसेस, उन ऑब्जेक्ट के लिए अपने-आप की जा सकती है जिन्हें सिर्फ़ एक बार याद रखा जाता है. यह सुझाया गया तरीका है और आगे भी रहेगा. हालांकि, अगर किसी कॉम्पोज़िशन में किसी रेफ़रंस को एक से ज़्यादा बार याद किया गया है, तो हर रेफ़रंस के लिए onRemembered को कॉल किया जाता है, जबकि onEnter को सिर्फ़ एक बार कॉल किया जाता है. अगर ऑब्जेक्ट का इस्तेमाल सब-कंपोज़िशन में किया गया था, तो onEnter को कई बार कॉल किया गया था. जैसे, WithConstraints और Scaffold. इससे, onEnter कॉल की गारंटी अविश्वसनीय हो गई और इसे RememberObserver के लिए हटा दिया गया.

    RememberObserver, onAbandoned जोड़ता है. इसे तब कॉल किया जाता है, जब RememberObserver इंस्टेंस, remember को पास किए गए कॉलबैक से वापस लाया जाता है, लेकिन कंपोज़िशन स्टेटस में उसे याद नहीं रखा जाता. इसलिए, onRemembered को कभी कॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कॉम्पोज़िशन को पूरा होने से पहले ही खत्म कर दे या कॉम्पोज़िशन को इसलिए खारिज कर दिया जाए, क्योंकि वह स्थिति अब मौजूद नहीं है या अब उसकी ज़रूरत नहीं है. अगर ऊपर दिए गए एक रेफ़रंस के सुझाव के बाद, RememberObserver का इंस्टेंस किसी बाहरी संसाधन को ट्रैक कर रहा है, तो onForgotten और onAbandoned, दोनों से पता चलता है कि अब संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट, onRemembered में शुरू किए गए काम या आवंटित किए गए संसाधनों को ट्रैक कर रहा है, तो onAbandoned को अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकि onRemembered को कॉल करने पर इसे कॉल नहीं किया जाएगा. (I02c36)

  • TransformedText.transformedText का नाम बदलकर TransformedText.text कर दिया गया

    • TransformedText अब डेटा क्लास नहीं है (Ie672a)
  • ये क्लास अब डेटा क्लास नहीं हैं:

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • एक्सपेरिमेंट के तौर पर उपलब्ध monotonicFrameAnimationClockOf तरीके हटाए गए (Ib753f, b/170708374)

  • ग्लोबल निर्देशांक के पुराने तरीकों को बंद कर दिया गया है और विंडो पर आधारित निर्देशांक के नए तरीके जोड़े गए हैं. (Iee284)

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

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

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

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

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

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

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

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

वर्शन 1.0.0-alpha10

13 जनवरी, 2021

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

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

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

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

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

वर्शन 1.0.0-alpha09

16 दिसंबर, 2020

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

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

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

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

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

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

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed, और LazyRowForIndexed फ़ंक्शन का इस्तेमाल बंद करें. इसके बजाय, LazyColumn और LazyRow का इस्तेमाल करें (I5b48c)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • AndroidOwner ने अंदरूनी तौर पर बनाया (Ibcad0, b/170296980)

  • InfiniteRepeatableSpec बनाने के लिए नया infiniteRepeatable फ़ंक्शन (I668e5)

  • Applier इंटरफ़ेस को बदला गया है, ताकि ट्री को ऊपर से नीचे के बजाय, नीचे से ऊपर की ओर आसानी से बनाया जा सके.

    insert() तरीके का नाम बदलकर insertTopDown() कर दिया गया है.

    insertBottomUp() नाम का एक नया तरीका जोड़ा गया.

    लागू करने वाला, insertTopDown() या insertBottomUp() का इस्तेमाल करके, उस ट्री में नोड डालता है जिसमें वह बदलाव कर रहा है. यह इस बात पर निर्भर करता है कि कौनसा बेहतर परफ़ॉर्म करता है.

    LayoutNode और View जैसे कुछ ट्री, टॉप-डाउन के मुकाबले, बॉटम-अप तरीके से बनाने के लिए ज़्यादा असरदार होते हैं. इस बदलाव से पहले, सबसे नीचे से ऊपर की ओर लागू करने के लिए, इंसर्ट का एक स्टैक ज़रूरी था. इसे हर उस ऐप्लिकेशन में कॉपी करना पड़ता था जिसे परफ़ॉर्मेंस के लिए सबसे नीचे से ऊपर की ओर लागू करने की ज़रूरत होती थी. इस बदलाव के बाद, Applier, ट्री व्यू को नीचे से ऊपर की ओर बनाने के लिए insertBottomUp() को बदल देता है. साथ ही, insertTopDown(), ट्री व्यू को ऊपर से नीचे की ओर बनाने के लिए insertBottomUp() को बदल देता है. (Icbdc2)

  • रेस्टर किए गए एसेट फ़ॉर्मैट (जैसे, PNG) या वेक्टर ड्रॉवल से, Painter ऑब्जेक्ट को धुंधला करके लोड करने के लिए, painterResource API जोड़ा गया है. अब उपभोक्ताओं को पहले से एसेट का टाइप तय करने की ज़रूरत नहीं है. साथ ही, इमेज कंपोज करने वाले टूल या पेंटर मॉडिफ़ायर में इस्तेमाल करने के लिए, पेंटर ऑब्जेक्ट पाने के लिए इस तरीके का इस्तेमाल किया जा सकता है. (I2c703, b/173818471)

  • AnnotatedString बनाने के लिए, buildAnnotatedString फ़ैक्ट्री फ़ंक्शन जोड़ा गया. इस्तेमाल नहीं किया जा सकने वाला annotatedString builder फ़ंक्शन. (Idfe0b)

वर्शन 1.0.0-alpha08

2 दिसंबर, 2020

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

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

  • CoreTextField से maxLines पैरामीटर हटाया गया. अगर आपको टेक्स्ट फ़ील्ड की ऊंचाई को लाइनों की संख्या के हिसाब से कंस्ट्रेन्ट करना है, तो इसके बजाय BasicTextField का इस्तेमाल करें. (Iec002)
  • await*TouchSlop() के तरीकों को बदला गया, ताकि वे पॉइंटर के नीचे आने का पता न लगा सकें. साथ ही, इन तरीकों का नाम बदलकर *OrCancellation कर दिया गया. साथ ही, orientationLock पैरामीटर की ज़रूरत भी हटा दी गई है. (Ie96e1)
  • Compose के दिशा-निर्देशों के मुताबिक, कॉम्पोज़ेबल लैंब्डा पैरामीटर के नाम और पोज़िशन की जांच करने के लिए, लिंट की जांच जोड़ी गई है. हमने कुछ एपीआई को भी माइग्रेट किया है. इनमें, लैम्ब्डा फ़ंक्शन के आखिर में children के तौर पर इस्तेमाल किए गए नाम को content में बदला गया है. यह बदलाव, लिंट की जांच और दिशा-निर्देशों के मुताबिक किया गया है. (Iec48e)
  • foundation:foundation-text एपीआई को foundation:foundation में ले जाया गया. पैकेज का स्ट्रक्चर पहले जैसा ही रहा (Id3eb2)
  • मल्टीटच जेस्चर डिटेक्टर की नई सुविधा, जिसमें घुमाने, ज़ूम करने, और पैन करने के लिए मदद करने वाली सुविधाएं शामिल हैं. (Ic459d)
  • नया ड्रैग जेस्चर डिटेक्टर, पॉइंटर इनपुट एपीआई को निलंबित करता है. इसमें ओरिएंटेशन लॉकिंग भी शामिल है. (Icef25)
  • VectorAsset का नाम बदलकर ImageVector किया गया है एपीआई काउंसिल के दिशा-निर्देशों के मुताबिक, VectorAsset को ImageVector की इनर क्लास बनाने के लिए, इसे Builder में ले जाया गया है और इसका नाम बदल दिया गया है. काम करने के लिए, ImageVector.Builder से लिंक करने के लिए, VectorAssetBuilder का टाइपअलाइस जोड़ा गया. (Icfdc8)
  • ImageAsset और उससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया. (Ia2d99)
  • फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (I6f05c) में ले जाया गया
  • कोरोटिन पर आधारित स्क्रोलिंग एपीआई जोड़ें:

    इसमें LazyListState.snapToItem और LazyListState.smoothScrollBy के साथ-साथ, स्क्रोल कंट्रोल के लिए कम लेवल के एपीआई भी जोड़े गए हैं. ये एपीआई, स्क्रोलिंग को कंट्रोल करने के लिए एक निलंबित इंटरफ़ेस उपलब्ध कराते हैं. यह इंटरफ़ेस, स्क्रोल पूरा होने तक इंतज़ार करता है. (Ie5642)

  • BasicTextField, TextField, और OutlinedTextField में एक लाइन वाला पैरामीटर जोड़ा गया. टेक्स्ट फ़ील्ड को हॉरिज़ॉन्टल तौर पर स्क्रोल की जा सकने वाली एक लाइन बनाने के लिए, इस पैरामीटर को 'सही' पर सेट करें. (I57004, b/168187755)

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

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

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

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

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

  • DrawModifier एपीआई को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि इस्तेमाल में न होने वाले एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद करने के लिए, टाइप के दूसरे नाम/सहायक तरीके शामिल किए जा सकें. (Id6044, b/173834241)
  • Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है. साथ ही, एपीआई काउंसिल के सुझाव के मुताबिक, इससे जुड़ी क्लास को GraphicsLayer में अपडेट कर दिया गया है. (I0bd29, b/173834241)
  • <T> को SubcomposeLayout के एलान से हटा दिया गया था. अब किसी टाइप के बारे में बताए बिना भी इसका इस्तेमाल किया जा सकता है. (Ib60c8)
  • PointerInputData के uptime और position फ़ील्ड के लिए, वैल्यू सबमिट करना ज़रूरी है. (Id468a)
  • MaterialTheme अब चुनने के लिए दिए गए हैंडल और चुनी गई चीज़ के बैकग्राउंड के लिए सही रंग सेट करता है. मटीरियल डिज़ाइन का इस्तेमाल न करने वाले ऐप्लिकेशन, चुने गए टेक्स्ट के लिए इस्तेमाल किए जाने वाले रंगों को पसंद के मुताबिक बनाने के लिए, AmbientTextSelectionColors का मैन्युअल तरीके से इस्तेमाल कर सकते हैं. (I1e6f4, b/139320372, b/139320907)
  • बॉक्स के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
  • offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया. अब ये स्टेट के बजाय, लैंब्डा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
  • होस्ट विंडो फ़ोकस में है या नहीं, यह देखने के लिए WindowManager.isWindowFocused जोड़ा गया है. साथ ही, WindowFocusObserver जोड़ा गया है, जो onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
  • TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
  • अपडेट किया गया TextFieldValue API
    • TextFieldValue.composition को रीड-ओनली किया गया
    • चुने गए डेटा की अमान्य रेंज की वजह से मिलने वाले अपवाद को हटाया गया (I4a675, b/172239032)
  • Ambient को सफ़िक्स के तौर पर इस्तेमाल करके बनाए गए ऐंबियंट को बंद कर दिया गया है. साथ ही, उन्हें ऐंबियंट के प्रीफ़िक्स वाली नई प्रॉपर्टी से बदल दिया गया है. ऐसा, ऐंबियंट और Compose API के अन्य दिशा-निर्देशों के मुताबिक किया गया है. (I33440)
  • Android टाइपफ़ेस रैपर जोड़ा गया. typeface फ़ंक्शन यानी typeface(Typeface.DEFAULT) की मदद से, Android टाइपफ़ेस लोड किया जा सकता है. typefaceFromFontFamily() का नाम बदलकर typeface() (I52ab7) भी किया गया
  • मॉडिफ़ायर फ़ैक्ट्री को @Composable के तौर पर मार्क करने के बजाय, अंदरूनी तौर पर androidx.compose.ui.composed {} का इस्तेमाल करने की जांच करने के लिए, लिंट की जांच जोड़ी गई है. (I3c4bc)
  • मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर के एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें एक साथ आसानी से जोड़ा जा सके. इसकी जांच करने के लिए, लिंट की जांच जोड़ी गई है. (I07981)
  • सेमेनटिक्स आर्ग्युमेंट mergeAllDescendants का नाम बदलकर, mergeDescendants कर दिया गया है. (Ib6250)
  • टेस्ट में समय कंट्रोल (TestAnimationClock और इसका इस्तेमाल) अब एक्सपेरिमेंट के तौर पर उपलब्ध है (I6ef86, b/171378521)
  • पुराने ui-test मॉड्यूल और उसके स्टब (I3a7cb) हटाएं
  • TextUnit.Inherit का नाम बदलकर, TextUnit.Unspecified कर दिया गया है, ताकि यह अन्य यूनिट के साथ मेल खा सके. (Ifce19)
  • अलाइनमेंट इंटरफ़ेस को अपडेट किया गया और उसे काम करने लायक बनाया गया. (I46a07, b/172311734)
  • foundation:foundation-text मॉड्यूल को foundation:foundation (Idac0f) में मर्ज कर दिया गया है
  • place(Offset) और placeRelative(Offset) फ़ंक्शन का इस्तेमाल बंद करें. इसके बजाय, int ऑफ़सेट वाले ओवरलोड का इस्तेमाल करें (I4c5e7)
  • LayoutIdParentData के लिए, id का नाम बदलकर layoutId कर दिया गया. Measurable.id का नाम बदलकर Measurable.layoutId कर दिया गया. (Iadbcb, b/172449643)

वर्शन 1.0.0-alpha07

11 नवंबर, 2020

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

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

  • Modifier.fillMaxSize[Width|Height] की तरह ही, अब हम LazyColumn/Row के दायरे में Modifier.fillParentMaxSize[Width|Height] में फ़्रैक्शन का इस्तेमाल कर सकते हैं (I797e2, b/166586426)
  • KeyboardOptions.toImeOptions को सार्वजनिक API से हटाया गया. (Ic2e45)
  • फ़ाउंडेशन AmbientTextStyle, ProvideTextStyle, और AmbientContentColor अब काम नहीं करते. इसके बजाय, Material लाइब्रेरी में मौजूद नए वर्शन का इस्तेमाल करें. जो ऐप्लिकेशन Material नहीं हैं उनके लिए, आपको अपने डिज़ाइन सिस्टम के हिसाब से थीम वाले ऐसे ऐंबियंट बनाने चाहिए जिन्हें आपके कॉम्पोनेंट में इस्तेमाल किया जा सके. (I74acc, b/172067770)
  • foundation.Text का इस्तेमाल बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. अगर आपको कोई ऐसा बुनियादी टेक्स्ट एपीआई चाहिए जो किसी थीम की वैल्यू का इस्तेमाल न करता हो, तो androidx.compose.foundation.BasicText देखें. (If64cb)
  • TextFields में maxLines जोड़ा गया (Ib2a5b)
  • KeyboardOptions को स्वीकार करने के लिए TextFields को अपडेट करना (Ida7f3)
  • TextFields में इस्तेमाल करने के लिए, KeyboardOptions जोड़ा गया (I9ca32)
  • BasicText को टेक्स्ट के लिए, BasicTextField के साथ-साथ डिज़ाइन के हिसाब से एपीआई के तौर पर जोड़ा गया है. (I28268)
  • ExperimentalLazyDsl एनोटेशन हटा दिया गया. LazyColumn/LazyRow का इस्तेमाल, @OptIn जोड़े बिना किया जा सकता है (Idab7a, b/166584730)
  • BaseTextField अब काम नहीं करता. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
  • CoreTextField और BaseTextField (Id4cea) दोनों के लिए, BasicTextField को बदलाव के तौर पर जोड़ा गया है
  • LazyColumnItems/LazyRowItems (I1d8a8) को हटाना
  • इनट्रिन्सिक मेज़रमेंट के हिसाब से साइज़ तय करने के लिए, काम न करने वाले कॉम्पोज़ेबल हटा दिए गए हैं. (I18537, b/171811496)
  • relativePaddingFrom का नाम बदलकर paddingFrom कर दिया गया. लेआउट के बाउंड से टेक्स्ट बेसलाइन तक की दूरी तय करने के लिए, paddingFromBaseline मॉडिफ़ायर जोड़ा गया था. (I0440a, b/170633813)
  • matchHeightConstraintsFirst पैरामीटर को आसपेक्ट रेशियो मॉडिफ़ायर में जोड़ा गया था. इसका इस्तेमाल, चौड़ाई के लिए मैच करने वाले एलिमेंट को आज़माने से पहले, मॉडिफ़ायर के साइज़ को ऊंचाई की सीमाओं के हिसाब से तय करने के लिए किया जा सकता है. (Ie7c43, b/155290593)
  • DpConstraints को हटा दिया गया है. (I87884, b/171702471)

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

  • ScaleFactor के लिए इनलाइन क्लास जोड़ी गई है. इससे, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के लिए, स्केल फ़ैक्टर को एक-दूसरे से अलग-अलग दिखाया जा सकता है. इससे, अलग-अलग स्केल वाले यूज़ केस के लिए मदद मिलती है.
    • ContentScale में computeScaleFactor का तरीका जोड़ा गया
    • ContentScale.FillBounds जोड़ा गया है, ताकि डेस्टिनेशन को पूरी तरह से भरने के लिए, src के bounds को स्ट्रेच करने के लिए अलग-अलग स्केलिंग की जा सके.
    • साइज़ पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर के तरीके जोड़े गए.
    • (Ic96a6, b/172291582)
  • captureToBitmap को captureToImage में बदल दिया गया है. (I86385)
  • CoreText को @InternalTextApi के तौर पर मार्क करता है. इसके बजाय, BasicText का इस्तेमाल करें. (I6aaeb)
  • KeyboardOptions का नाम बदलकर ImeOptions करें (I82f36)
  • KeyboardType और ImeAction को KeyboardOptions में ले जाया गया (I910ce)
  • CoreTextField को @InternalTextApi के तौर पर मार्क किया गया है. इसके बजाय, BasicTextField का इस्तेमाल करें (Ie2469)
  • ExperimentalSubcomposeLayoutApi एनोटेशन हटा दिया गया है. SubcomposeLayout का इस्तेमाल, अब @OptIn जोड़े बिना किया जा सकता है (I708ad)
  • ui-test-junit4 मॉड्यूल (Ib91f8) को शामिल करना
  • Icon API को अपडेट किया गया है, ताकि Color.Unspecified को टिन्ट कलर के तौर पर इस्तेमाल किया जा सके. इससे, दी गई एसेट या पेंटर को ColorFilter के बिना ड्रॉ किया जा सकेगा. पहले, Color.Unspecified का इस्तेमाल करके टिनटिंग को अनदेखा करने की कोशिश करने पर, ट्रांसफ़र किए गए डेटा को ट्रांसपैरंट कलर में टिन्ट किया जाता था. इस वजह से, डेटा को रेंडर नहीं किया जा सकता था. (I049e2, b/171624632)
  • MeasureResult को MeasureScope से हटा दिया गया है. (Ibf96d, b/171184002)
  • लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.layout.ui में ले जाया गया. (I0fa98, b/170475424)
  • androidx.ui.test को androidx.compose.ui.test में ले जाया गया (I9ffdb)
  • FirstBaseline और LastBaseline को androidx.compose.ui.layout पैकेज (Ied2e7) में ले जाया गया
  • कॉलबैक (Ibfadb) के बिना SelectionContainer जोड़ा गया
  • SelectionContainer में SelectionHandles की पोज़िशन के लिए टेस्ट जोड़ें. (Ie93db)
  • कीबोर्ड में ऑटोकरेक्शन (शब्दों में सुधार) की सुविधा देने वाले IME का विकल्प जोड़ा गया (I57b8d)

वर्शन 1.0.0-alpha06

28 अक्टूबर, 2020

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

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

  • androidx.compose.foundation.Icon को androidx.compose.material.Icon में ले जाया गया है. अगर आपको Material लाइब्रेरी का इस्तेमाल नहीं करना है, तो Painter के साथ Image component / Modifier.paint() का भी इस्तेमाल किया जा सकता है. (I9f622)
  • Modifier.scrollable, ScrollableColumn, और LazyColumnFor में interactionState जोड़ा गया (I81566, b/169509805)
  • alignByBaseline को RowScope में जोड़ा गया और alignWithSiblings का नाम बदलकर alignBy कर दिया गया (I06503, b/170628732)
  • बॉक्स को इनलाइन फ़ंक्शन बनाया गया. (Ibce0c, b/155056091)
  • CoreTextField में maxLines जोड़ा गया (Ibee58, b/143687793)
  • CoreTextField में सॉफ़्टवॉप जोड़ा गया. (I21a4b)

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

  • VectorPainter को बंद करके, rememberVectorPainter का इस्तेमाल करें. इससे यह बेहतर तरीके से पता चलता है कि कॉम्पोज़ेबल एपीआई, सभी कॉम्पोज़िशन में डेटा को सेव करने के लिए, 'याद रखें' फ़ंक्शन का इस्तेमाल करता है. (Ifda43)
  • ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से, ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
  • CoreTextField (I72e6d) में एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया
  • Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि Compose में इसका इस्तेमाल कैसे किया जाता है. दस्तावेज़ों को अपडेट किया गया, ताकि यह बताया जा सके कि नेगेटिव कोने रेडी को शून्य पर क्लैंप किया जाता है. (I130c7, b/168762961)
  • कंपोज किए गए मॉडिफ़ायर में, इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
  • KeyboardCapitalization IME का विकल्प जोड़ा गया (I8ac38)
  • आरटीएल हैंडल की पोज़िशन ठीक करें. (I6e1e0)
  • अहम बदलाव: PointerInputFilter.onPointerEvent(...) से रिटर्न वैल्यू हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि पॉइंटर इवेंट में सिर्फ़ खपत का डेटा बदला जा सकता है. PointerInputFilter.onPointerEvent(...) से डेटा दिखाने के बजाय, अब सिर्फ़ पास किए गए PointerEvents के खपत डेटा में बदलाव किया जा सकता है. (I6acd0)
  • चुनने के मेन्यू में, सभी को चुनने का विकल्प जोड़ा गया (Ief02b)

वर्शन 1.0.0-alpha05

14 अक्टूबर, 2020

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

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

  • CoreTextField में अब कर्सर की सुविधा काम करती है (Id23aa)
  • contentColor() और currentTextStyle() एपीआई को बंद कर दिया गया है. साथ ही, उन्हें AmbientContentColor और AmbientTextStyle ऐंबियंट की जगह पर इस्तेमाल किया जा सकता है. किसी भी अन्य ऐंबियंट की तरह, ऐंबियंट प्रॉपर्टी पर .current का इस्तेमाल करके, मौजूदा वैल्यू को ऐक्सेस किया जा सकता है. यह बदलाव, एक ही काम को करने के लिए कई तरीकों से बचने और एक जैसी सुविधा देने के लिए किया गया था. इसके अलावा, कुछ ऐंबियंट प्रॉपर्टी के नाम बदले गए हैं, ताकि उनके मकसद के बारे में बेहतर तरीके से बताया जा सके. इन प्रॉपर्टी के नाम इस तरह हैं:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

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

  • इनलाइन क्लास के लिए सेंटिनल वैल्यू को स्टैंडर्ड बनाने के तहत, अन्य इनलाइन क्लास (I97611, b/169797763) के साथ एक जैसा रखने के लिए, Color.Unset को Color.Unspecified में बदलें
  • सुलभता से जुड़ी कार्रवाइयों में, कॉपी/चिपकाना/काटना जोड़ा गया (I6db4f)
  • TextOverflow.None को शामिल किया गया है. जब overflow का कोई वैल्यू नहीं है, तो Text अब ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने असल साइज़ की जानकारी देगा. (I175c9, b/158830170)
  • Size.Unspecified के पैरामीटर को अपडेट किया गया है, ताकि वे Float.POSITIVE_INFINITY के बजाय, Float.NaN हों. Painter को अपडेट किया गया है, ताकि Size.Unspecified के साथ-साथ अनलिमिटेड साइज़ की जांच की जा सके. (I95a7e)
  • पेजिंग कंपोज मॉड्यूल और पेजिंग इंटिग्रेशन जोड़ा गया (Ib85da)
  • वैल्यू न होने पर भी काम करने वाले फ़ंक्शन की वैल्यू पाने के लिए, LazyListScope में बदलाव करना (I1765b)
  • OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है और onPositioned() का नाम बदलकर onGloballyPositioned कर दिया गया है. (I587e8, b/169083903)
  • LazyColumn/Row (Idc16d) के लिए सैंपल जोड़े गए
  • items और itemsIndexed तरीकों को ठीक करना, ताकि emptyList को अनुमति दी जा सके (I06647)
  • जांच करने वाले व्यक्ति की जानकारी देने के लिए डीएसएल जोड़ना (Ic9a22)
  • 'देर तक दबाकर रखें' सुविधा को टेक्स्ट में ले जाएं. (Iff2bc)
  • टेक्स्ट में टेक्स्ट चुनने की सुविधा बंद करना और उसका डेमो. (Ie7e97)
  • सुलभता के लिए, AnnotatedString को SpannableString में बदलने की सुविधा जोड़ी गई है. (Ief907)
  • PointerInputFilter.onPointerInput(...) को हटा दिया गया है. इसके बजाय, PointerInputFilter.onPointerEvent(...) का इस्तेमाल किया जाना चाहिए. (I6f04a)

वर्शन 1.0.0-alpha04

1 अक्टूबर, 2020

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

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

  • स्टैक का नाम बदलकर Box कर दिया गया. पहले से मौजूद foundation.Box को compose.foundation.layout में नए Box से बदल दिया जाएगा. नए बॉक्स में, एक से ज़्यादा चाइल्ड एलिमेंट होने पर, वे एक-दूसरे के ऊपर स्टैक हो जाते हैं. यह पिछले बॉक्स से अलग है, जो कॉलम की तरह काम करता था. (I94893, b/167680279)
  • बॉक्स को सजाने के पैरामीटर अब काम नहीं करते. अगर आपको अपने बॉक्स में सजावट/पैडिंग करनी है, तो इसके बजाय मॉडिफ़ायर (Modifier.background, Modifier.border, Modifier.padding) का इस्तेमाल करें (Ibae92, b/167680279)
  • नई LazyListState क्लास जोड़ें. इससे, LazyRow और LazyColumn कॉम्पोनेंट की स्क्रोल पोज़िशन को देखा और कंट्रोल किया जा सकता है. rememberLazyListState() का इस्तेमाल करके इंस्टेंस बनाए जा सकते हैं और कॉम्पोनेंट के स्टेटस पैरामीटर में पास किए जा सकते हैं. फ़िलहाल, इस शुरुआती वर्शन में दिखने वाले पहले आइटम और ऑफ़सेट को देखा जा सकता है. (Ic7cb7, b/159307669)
  • गतिविधि को फिर से शुरू करने पर, अब लिस्ट की स्थिति और स्क्रोल ऑफ़सेट सेव हो जाता है और उसे वापस लाया जाता है (Ie045f, b/166589058)
  • लंबे समय तक क्लिक करने से जुड़ी सेमेटिक्स ऐक्शन जोड़ना (I6281b, b/156468846)
  • MutatorMutex की सुविधा जोड़ी गई है, ताकि समय के साथ शेयर की गई स्थिति का एक ही म्यूटेटर रखा जा सके और प्राथमिकता के हिसाब से, एक-दूसरे से मेल न खाने वाले म्यूटेटर रद्द किए जा सकें (I3f975)
  • @VisibleForTesting के साथ एनोटेट किए गए rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को इंटरनल एपीआई बनाएं और उनके kdoc को छिपाएं (I554eb, b/168308412)
  • स्ट्रिंग इनपुट वाले टेक्स्ट से inlineContent पैरामीटर हटाया गया. इसका इस्तेमाल नहीं किया जाएगा, क्योंकि inlineContent को AnnotatedString के साथ काम करना चाहिए. (Ief403)
  • इस्तेमाल नहीं किए जा रहे कस्टम Arrangement API हटा दिए गए हैं. (Ic576d, b/168297922, b/168297923)
  • unbounded पैरामीटर को wrapContentSize मॉडिफ़ायर में जोड़ा गया था. इससे, लेआउट एलिमेंट को अनलिमिटेड मैक्स कंस्ट्रेंट के साथ मेज़र किया जा सकता है. (I77951, b/158559319)
  • हमने लेआउट स्कोप के कॉन्टेंट के स्टैटिक इंपोर्ट को रोक दिया है. जैसे, RowScope में alignWithSiblings. इसके बजाय, स्कोप के लिए साफ़ तौर पर बताए गए विकल्प का इस्तेमाल किया जाना चाहिए: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

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

  • कई Graphics API अपडेट किए गए
    • स्केल और रोटेशन ट्रांसफ़ॉर्मेशन एपीआई को अपडेट किया गया है, ताकि DrawScope और DrawTransform में x/y निर्देशांक के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट निर्देशांक दिखाने के लिए एक ऑफ़सेट पैरामीटर का इस्तेमाल किया जा सके
    • Rect.expandToInclude और Rect.join के तरीकों को हटाया गया
    • दायरे के दस्तावेज़ को अपडेट किया गया, ताकि अंडाकार के साथ-साथ, दीर्घवृत्ताकार के बारे में भी बताया जा सके
    • दस्तावेज़ जोड़ा गया है, ताकि यह पता चल सके कि इनलाइन Radius क्लास के लिए, पब्लिक कन्स्ट्रक्टर को सीधे तौर पर नहीं बुलाया जाना चाहिए. इसके बजाय, Radius ऑब्जेक्ट को उनके फ़ंक्शन कन्स्ट्रक्टर के ज़रिए इंस्टैंशिएट किया जाना चाहिए
    • topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी करने के लिए, RoundRect API हटाए गए
    • Rect.translate के पक्ष में Rect.shift को बंद कर दिया गया है
    • RoundRect.grow और Rect.shrink एपीआई हटाए गए
    • RoundRect.outerRect का नाम बदलकर Rect.boundingRect किया गया
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीकों को हटाया गया
    • RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया
    • RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया
    • RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी में बदला गया
    • x/y त्रिज्या की वैल्यू के लिए, अलग-अलग पैरामीटर के बजाय त्रिज्या प्रॉपर्टी का इस्तेमाल करने के लिए, RoundRect कन्स्ट्रक्टर को अपडेट किया गया
    • साइज़ एपीआई हटा दिए गए हैं, जो यह मानते थे कि यह 0,0 पर ऑरिजिन वाला रेक्टैंगल है
    • Radius में डेस्ट्रक्टिंग एपीआई जोड़ा गया
    • RoundRect एक्सटेंशन के अलग-अलग फ़ंक्शन को प्रॉपर्टी के तौर पर माइग्रेट किया गया
    • (I8f5c7, b/168762961)
  • हर स्क्रोल के दौरान, ज़रूरत के बिना फिर से कॉम्पोज़ न करके, LazyColumnFor/LazyRowFor स्क्रोलिंग के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ेशन (I64f65, b/168293643, b/167972292, b/165028371)
  • स्क्रोल करने और आइटम बदलने के बाद, LazyColumnFor/LazyRowFor में क्रैश होने की समस्या को ठीक किया गया. साथ ही, पहले दिखने वाले आइटम को हटाने पर, अपने-आप ऊपर की ओर स्क्रोल करने की सुविधा लागू की गई, ताकि आखिर में खाली गैप न दिखें (I220ab, b/161480164, b/167855468)
  • ScrollableContainer और LazyColumnFor जैसे एक ही दिशा वाले कंटेनर में, स्क्रोल किए जा सकने वाले कंटेनर को नेस्ट करने की अनुमति अब नहीं है. यह कभी काम नहीं करता था और LazyColumnFor (I6e101) के आइटम को कॉम्पोज़ करने की सुविधा को खराब कर रहा था
  • कई Graphics API अपडेट किए गए
    • स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीकों के साथ DrawScope API को अपडेट किया गया है. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक में लागू होता है और कॉलबैक के ट्रिगर होने के बाद हट जाता है
    • राउंडेड रेक्टैंगल के बजाय पाथ का रेफ़रंस देने के लिए, clipPath दस्तावेज़ को अपडेट किया गया
    • clipPath में दाएं पैरामीटर के लिए, दस्तावेज़ में स्पेसिंग ठीक की गई
    • DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas किया गया और साइज़ पैरामीटर हटा दिया गया
    • इनसेट तरीके में dx/dy पैरामीटर के नाम बदलकर, horisontal और vertical कर दिया गया
    • इनसेट ओवरलोड जोड़ा गया है, जो सभी चार सीमाओं के लिए एक ही इनसेट वैल्यू देता है
    • इनसेट करने के तरीके से जुड़े दस्तावेज़ हटा दिए गए हैं. इनसे यह पता चलता था कि इनसेट, चारों तरफ़ लागू होगा
    • Rect क्लास के लिए दस्तावेज़ अपडेट किए गए
    • kdoc के स्टाइल से मैच करने के लिए, Rect पैरामीटर पर अपडेट की गई टिप्पणियां
    • Rect.join और Rect.expandToInclude को हटाया गया
    • Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को बंद कर दिया गया
    • (If086a, b/167737376)
  • सेमेंटेक्स प्रॉपर्टी में AccessibilityScrollState जोड़ें. (Ifeda9)
  • ऑब्जेक्ट बनाने से बचने के लिए, TextRange को इनलाइन बनाएं. (Id034b)
  • ParagraphConstraints को हटा दिया गया है. अब चौड़ाई सीधे पैराग्राफ़ में पास की जाती है. (Ica712)

वर्शन 1.0.0-alpha03

16 सितंबर, 2020

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

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

  • InnerPadding का नाम बदलकर PaddingValues कर दिया गया है. (I195f1, b/167389171)
  • लेआउट एपीआई में अलाइन या अलाइनमेंट के लिए, ग्रेविटी के इस्तेमाल का नाम बदल दिया गया था. (I2421a, b/164077038)
  • स्टैक में अलाइनमेंट पैरामीटर जोड़ा गया है. इससे, स्टैक के सभी चाइल्ड के लिए डिफ़ॉल्ट अलाइनमेंट तय किया जा सकता है. (Ie80ca, b/164085265)

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

  • DpConstraints और इसका इस्तेमाल करने वाले एपीआई को बंद कर दिया गया है. (I90cdb, b/167389835)
  • widthIn के पैरामीटर minWidth और maxWidth का नाम बदलकर min और max कर दिया गया. preferredWidthIn, heightIn, preferredHeightIn के लिए भी ऐसा ही किया जाता है. (I0e5e1, b/167389544)
  • ComposeTestRule पर onNode और अन्य ग्लोबल तरीके जोड़े गए हैं, क्योंकि मौजूदा ग्लोबल तरीके बंद होने वाले हैं. (Ieae36)
  • GestureScope में साइज़ और पोज़िशन का हिसाब लगाने की प्रोसेस को ठीक किया गया. इसकी वजह से, स्वाइप जेस्चर अमान्य होने की समस्या (Iaf358, b/166589947) और दूसरी समस्याएं आ रही थीं
  • createAndroidComposeRule और AndroidInputDispatcher को androidx.ui.test.android से androidx.ui.test पर ले जाया गया (Idef08, b/164060572)

वर्शन 1.0.0-alpha02

2 सितंबर, 2020

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

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

  • TestUiDispatcher को एक्सपेरिमेंट के तौर पर मार्क किया गया है (Iae99d, b/161247083)
  • ManualFrameClock.hasAwaiters जोड़ा गया, ताकि यह देखा जा सके कि क्या कोई भी चीज़ उस घड़ी से फ़्रेम का इंतज़ार कर रही है; runWithManualClock को runBlocking के बदले तब इस्तेमाल किया जाता है, जब ऐसे टेस्ट चलाए जा रहे हों जिनमें ManualFrameClock की ज़रूरत होती है; TestUiDispatcher.Main, जो आपके टेस्ट में मुख्य यूज़र इंटरफ़ेस (यूआई) डिस्पैचर को आसानी से ऐक्सेस करने की सुविधा देता है.

    उदाहरण के लिए:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (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 वर्शन में ये बदलाव शामिल हैं.

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

  • लेआउट के चाइल्ड एलिमेंट को तय स्पेसिंग के साथ पोज़िशन करने के लिए, पंक्ति और कॉलम के लिए spacedBy Arrangement जोड़ा गया था. अलाइन किए गए क्रम की सुविधा भी जोड़ी गई है, ताकि लेआउट के चाइल्ड एक-दूसरे के बगल में पोज़िशन किए जा सकें और अलाइनमेंट के हिसाब से, रो/कॉलम में अलाइन किए जा सकें. Arrangement.Vertical#arrange और Arrangement.Horizontal#arrange के पिछले तरीके बंद कर दिए गए हैं. साथ ही, आने वाले समय में कस्टम क्रम तय करने की सुविधा काम नहीं करेगी. (I6733d, b/161985975)
  • ऑफ़सेट, इनलाइन क्लास (Iaec70) बन गया है
  • TextField से onFocusChanged कॉलबैक हटाए गए. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
  • Modifier.drawBorder को बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border data class को BorderStroke (I4257d, b/158160576) से बदल दिया गया है
  • VerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करना (I73b0d, b/163019183)
  • LazyItemScope से, 'इस्तेमाल नहीं किए जाने वाले' के तौर पर मार्क किए गए fillMax* मॉडिफ़ायर हटाएं. ऐसा इसलिए, क्योंकि इनकी वजह से उन आइटम के लिए सही तरीके से मॉडिफ़ायर जोड़ना मुश्किल हो रहा है जो LazyColumnFor के डायरेक्ट चाइल्ड नहीं हैं (Ifa78d)
  • डीएसएल (I93cc6) के तौर पर LazyColumn/LazyRow लागू करने की सुविधा जोड़ी गई
  • कंस्ट्रेंट अब एक इनलाइन क्लास है (I88736)
  • fillMaxWidth, fillMaxHeight, और fillMaxSize मॉडिफ़ायर का इस्तेमाल करके, उपलब्ध जगह के हिसाब से लेआउट का साइज़ तय करने की सुविधा जोड़ी गई. (I945bb, b/161562591)

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

  • SelectionContainer (I4aada, b/161487952) में मॉडिफ़ायर पैरामीटर जोड़ा गया
  • SemanticsPropertyKey में mergePolicy lambda जोड़ा गया. इसका इस्तेमाल, सभी वंश को मर्ज करने के लिए, सेमेटिक्स को मर्ज करने की कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के मुताबिक, अगर पैरंट वैल्यू पहले से मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() का नाम बदलकर PlacementScope.place() कर दिया गया है. साथ ही, पिछले PlacementScope.place() का नाम बदलकर PlacementScope.placeRelative() कर दिया गया है. इस वजह से, PlacementScope.place() तरीका अब दाईं से बाईं ओर के कॉन्टेक्स्ट में, पोज़िशन को अपने-आप मिरर नहीं करेगा. अगर आपको ऐसा करना है, तो इसके बजाय PlacementScope.placeRelative() का इस्तेमाल करें. (I873ac, b/162916675)
  • अब इस्तेमाल में न होने वाले FilledTextField कॉम्पोनेंट को हटा दिया गया है. फ़िल्ड टेक्स्ट फ़ील्ड को Material Design के मुताबिक बनाने के लिए, कृपया TextField का इस्तेमाल करें. (I5e889)
  • LinearProgressIndicator में backgroundColor पैरामीटर जोड़ा गया और CircularProgressIndicator से इंटरनल पैडिंग हटाई गई. नई ProgressIndicatorConstants.DefaultProgressAnimationSpec जोड़ी गई है. इसका इस्तेमाल, वैल्यू के बीच प्रोग्रेस को ऐनिमेट करते समय, डिफ़ॉल्ट AnimationSpec के तौर पर किया जा सकता है (If38b5, b/161809914, b/161804677)
  • state { ... } कॉम्पोज़ेबल का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, remember { mutableStateOf(...) } को साफ़ तौर पर कॉल करें. इससे, एपीआई के पूरे प्लैटफ़ॉर्म और स्टेटस मैनेजमेंट के लिए कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी के डेलिगेशन के लिए by mutableStateOf() पैटर्न से मेल खाता है. (Ia5727)
  • RRect का नाम बदलकर RoundRect किया गया, ताकि नाम तय करने के पैटर्न के हिसाब से बेहतर तरीके से काम किया जा सके. RRect और अब काम न करने वाले RRect फ़ंक्शन कंस्ट्रक्टर के जैसे फ़ंक्शन कंस्ट्रक्टर बनाए गए (I5d325)
  • onChildPositioned और OnChildPositionedModifier को हटा दिया गया है. इसके बजाय, डेवलपर को चाइल्ड लेआउट पर onPositioned और OnPositionedModifier का इस्तेमाल करना चाहिए. (I4522e, b/162109766)
  • IntSize अब एक इनलाइन क्लास (I2bf42) है
  • बदलाव करने के लिए, खाली जगह को दबाकर रखें. (Ib1e5b)
  • टेक्स्ट पर टैप करने के बाद, फ़्लोटिंग टूलबार छिपाएं. (If4525)
  • चुने गए आइटम अपडेट करते समय, फ़्लोटिंग टूलबार छिपाएं. (I8444c)
  • 'धुंधला करें' से चुने हुए का निशान हटाएं. (I781a2)

वर्शन 0.1.0-dev16

5 अगस्त, 2020

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

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

  • LazyItemScope को, Lazy lists के itemContent पैरामीटर के लिए जोड़ा गया था. यह पैरंट के ज़्यादा से ज़्यादा साइज़ को भरने के लिए मॉडिफ़ायर उपलब्ध कराता है. इससे, आइटम को व्यूपोर्ट में भरने के लिए इस्तेमाल किए जाने वाले उदाहरण का समाधान होता है. साथ ही, आइटम को अनलिमिटेड कंस्ट्रेंट के साथ मेज़र करने पर, सामान्य Modifier.fillMaxSize() काम नहीं करता. (Ibd3b2, b/162248854)
  • डायलॉग को यूज़र इंटरफ़ेस (यूआई) पर ले जाना (I47fa6)
  • LazyColumnForIndexed/LazyRowForIndexed जोड़ा गया - LazyColumnFor/LazyRowFor के ऐसे वर्शन जो itemCallback में इंडेक्स और आइटम, दोनों उपलब्ध कराते हैं. यह तब काम आता है, जब आपको मौजूदा आइटम के साथ-साथ मौजूदा इंडेक्स की जानकारी भी चाहिए. (I65ff3)
  • Modifier.deternimateProgress का नाम बदलकर Modifier.progressSemantics कर दिया गया है (I9c0b4)
  • LazyColumnItems का नाम बदलकर LazyColumnFor कर दिया गया. LazyRowItems का नाम बदलकर LazyRowFor (I84f84) कर दिया गया
  • सबसे सही तरीके की वजह बताने के लिए, कुछ मार्क/एनोटेशन जोड़ें. (I66b20)
  • foundation.shape.corner पैकेज को foundation.share में फ़्लैट कर दिया गया (I46491, b/161887429)
  • LazyRowItems/LazyColumnItems के लिए, сrossaxis gravity पैरामीटर जोड़ा गया. LazyRowItems/LazyColumnItems अब कॉन्टेंट को रैप करने की सुविधा के साथ काम करते हैं. (Ib39fc)
  • ZoomableState का नाम बदलकर ZoomableController कर दिया गया है. smoothScale के लिए, कस्टम कर्व की सुविधा जोड़ी गई है. enabled और onZoomStarted फ़ंक्शन जोड़े गए हैं (If8b8f)
  • Material FilledTextField का नाम बदलकर TextField कर दिया गया है. साथ ही, फ़ाउंडेशनल TextField का नाम बदलकर BaseTextField कर दिया गया है. इससे, सबसे आसान एपीआई को ढूंढना और इस्तेमाल करना आसान हो जाएगा (Ia6242, b/155482676)
  • पहले इस्तेमाल की जा रही AdapterList को हटा दिया गया है. इसके बजाय, LazyColumnItems का इस्तेमाल करें (I12b9b)
  • Modifier.drawBackground का नाम बदलकर Modifier.background कर दिया गया है (I13677)
  • ConstraintLayout का पुराना डीएसएल हटा दिया गया है. ConstraintSet2 का नाम बदलकर ConstraintSet कर दिया गया है. (If58d1, b/162450908)
  • Modifier.absoluteOffset() और Modifier.absoluteOffsetPx() जोड़े गए. ऑफ़सेट मॉडिफ़ायर के उलट, एब्सोल्यूट ऑफ़सेट मॉडिफ़ायर, दाईं से बाईं ओर के संदर्भ में अपने-आप मिरर नहीं होंगे (I3aa21)
  • Row और Column अब इनलाइन फ़ंक्शन हैं. इनका इस्तेमाल करने में होने वाले खर्च को काफ़ी कम किया जा सकता है. (I75c10)

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

  • एपीआई से जुड़ी समस्याओं को ठीक करना (I077bc)
    1. इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाना
    2. एपीआई के एक जैसे प्लैटफ़ॉर्म के लिए, Offset और IntOffset क्लास को अलाइन करें
    3. Offset API के साथ काम करने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero करें
    4. उपयोगकर्ताओं को अपने कैनवस इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas को कैनवस इंटरफ़ेस से हटा दिया गया है
    5. DrawScope को रीफ़ैक्टर करने के लिए, स्टब EmptyCanvas क्लास बनाई गई, ताकि इसे लेटिनिट के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
    6. ClipOp के एन्यूम को Pascal Case में बदला गया
    7. FilterQuality के एन्म को Pascal Case में बदला गया
    8. StrokeJoin एनम को पास्कल केस में बदला गया
    9. PointMode के एन्म को पास्कल केस में बदला गया
    10. PaintingStyle के एन्म को Pascal Case में बदला गया
    11. PathFillType के एन्म को पास्कल केस में बदला गया
    12. StrokeCap के एनम को पास्कल केस में बदला गया
    13. DrawCache को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
    14. DrawScope को अपडेट किया गया है, ताकि अब fillPaint और strokePaint के इंटरनल पैरामीटर के लिए, लैज़ी डिलीगेशन का इस्तेमाल न किया जा सके
    15. कम ओवरहेड के लिए, बॉक्स के इस्तेमाल से बचने के लिए इमेज कॉम्पोज़ेबल को अपडेट किया गया
    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)

  • SemanticsMatcher के तौर पर isFocused() और isNotFocused() जोड़े गए. (I0b760)

  • RemeasurementModifier जोड़ा गया. इसकी मदद से, उपयोगकर्ता लेआउट को सिंक करके फिर से मेज़र कर सकते हैं. आम तौर पर, आपको इसकी ज़रूरत कभी नहीं पड़ती, क्योंकि फिर से मेज़र करने/फिर से लेआउट करने की प्रोसेस अपने-आप होती है. हालांकि, हम स्क्रोल करने के दौरान LazyColumnItems में इसका इस्तेमाल करते हैं. (I5f331, b/160791058)

  • isSystemInDarkTheme फ़ंक्शन अब सिस्टम-वाइड गहरे रंग वाली थीम की सेटिंग को हमेशा ध्यान में रखता है. साथ ही, Q से पहले के वर्शन में, पावर सेविंग मोड की स्थिति को अनदेखा करता है. ऐसा, नए दिशा-निर्देशों के मुताबिक किया जाता है. (I0c10c)

  • OnChildPositioned को बंद कर दिया गया है. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)

  • createAndroidComposeRule के लिए, AndroidComposeTestRule का नाम बदलकर createAndroidComposeRule कर दिया गया. (I70aaf)

  • TextLayoutResult (I9d6e6) पाने के लिए, सुलभता से जुड़ी कार्रवाई जोड़ना

वर्शन 0.1.0-dev15

22 जुलाई, 2020

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

Compose के 0.1.0-dev15 वर्शन का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:

डिपेंडेंसी से जुड़ा अपडेट

  • Compose के 0.1.0-dev15 वर्शन का इस्तेमाल करने के लिए, आपको डिपेंडेंसी का एलान करना में ऊपर दिखाए गए नए कोड स्निपेट के हिसाब से, अपनी डिपेंडेंसी अपडेट करनी होंगी.

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

  • ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems में नए पैरामीटर की तरह ही, अब contentPadding पैरामीटर भी है. इसकी मदद से, क्लिप किए गए कॉन्टेंट के लिए पैडिंग जोड़ी जा सकती है. ऐसा सिर्फ़ मॉडिफ़ायर पैरामीटर की मदद से नहीं किया जा सकता. इसकी मदद से, सिर्फ़ पहले आइटम से पहले/आखिरी आइटम के बाद स्पेस जोड़ा जा सकता है. (Ibc24e)
  • टेक्स्ट फ़ील्ड में मौजूद onFocusChange कॉलबैक का नाम बदलकर onFocusChanged कर दिया गया है (Ida4a1)
  • VerticalScroller और HoriziontalScroller अब काम नहीं करते. कॉलम/लाइन के व्यवहार और पैरामीटर के साथ पहले से मौजूद सुविधा के लिए, ScrollableColumn और ScrollableRow का इस्तेमाल करें. इसके अलावा, अपने एलिमेंट पर Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करें. इसी तरह, ScrollerPosition को ScrollState के लिए बंद कर दिया गया है' (I400ce, b/157225838, b/149460415, b/154105299)
  • Modifier.draggable और Modifier.scrollable एपीआई में बदलाव किए गए हैं. ओरिएंटेशन के पक्ष में, DragDirection को हटा दिया गया था. स्क्रोल किए जा सकने वाले आइटम के लिए, 'स्थिति' की ज़रूरी शर्त को आसान बनाया गया है. ScrollableState का नाम बदलकर ScrollableController कर दिया गया है (Iab63c, b/149460415)
  • एक वैल्यू वाली सेमेटिक प्रॉपर्टी अब कॉलिंग स्टाइल का इस्तेमाल करती हैं. उदाहरण के लिए, 'semantics { hidden = true }' को अब इस तरह लिखा जाता है: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • RoundedCornerShape और CutCornerShape का इस्तेमाल करके, किनारों का साइज़ अब 50% से ज़्यादा हो सकता है (Id2340, b/160400213)
  • इमेज कॉम्पोज़ेबल के लिए, डिफ़ॉल्ट ContentScale पैरामीटर को Inside से Fit में बदल दिया गया है. ऐसा इसलिए किया गया था, ताकि अगर लेआउट का साइज़, पैंचर के मूल साइज़ से बड़ा हो, तो आसपेक्ट रेशियो को बनाए रखते हुए, पैंचर को स्केल अप करने के लिए, पैंचर के व्यवहार को बेहतर बनाया जा सके. अगर कॉम्पोज़ेबल के साइज़ का हिसाब लगाने के लिए सिर्फ़ इंट्रिन्सिक साइज़ का इस्तेमाल किया जाता है, तो यह व्यवहार इमेज के लिए तय साइज़ देने की उम्मीदों के मुताबिक बेहतर तरीके से काम करता है. साथ ही, डिफ़ॉल्ट व्यवहार पर भी इसका कोई असर नहीं पड़ता. (I40ae3, b/159838006)
  • स्टैटिक ऐनिमेशन स्पेसिफ़िकेशन के कॉन्सेप्ट को साफ़ तौर पर बताने के लिए, टॉप लेवल एपीआई में AnimationBuilder के बजाय AnimationSpec का इस्तेमाल करें -Tween, स्प्रिंग जैसे AnimationSpecs बनाने के लिए, लैम्ब्डा की ज़रूरत को हटाकर ट्रांज़िशन डीएसएल को बेहतर बनाएं. इसके बजाय, वे सीधे तौर पर कंस्ट्रक्टर पैरामीटर लेते हैं. -बिल्डर पर भरोसा करने के बजाय, कंस्ट्रक्टर खोलकर, ऐनिमेशन स्पेसिफ़िकेशन के इस्तेमाल को आसान बनाएं -कीफ़्रेम और ट्वीन के लिए, अवधि और देरी को Int में बदलें. इससे, ज़रूरत के बिना टाइप कास्ट और मेथड ओवरलोडिंग (Long और Int, दोनों के साथ काम करने के लिए) की सुविधा हट जाती है. (Ica0b4)
  • क्लिक किए जा सकने की सुविधा हटा दी गई. Modifier.clickable (I84bdf) का इस्तेमाल करना
  • LazyRowItems जोड़ा गया - LazyColumnItems (Ibbcf7) का हॉरिज़ॉन्टल स्क्रोलिंग एनालॉग
  • स्टेटलेस ऐनिमेशन के लिए, लो लेवल के एपीआई जोड़े गए. ये एपीआई (I63bf7)
  • androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करते. इस टाइप का इस्तेमाल करने वाले TextField, FilledTextField, और CoreTextField कॉम्पोनेंट का इस्तेमाल भी बंद कर दिया गया है. इसके बजाय, कृपया androidx.ui.input.TextFieldValue का इस्तेमाल करें (I4066d, b/155211005)
  • IntPx के इस्तेमाल को Int से बदला गया. IntPxPosition को IntOffset से बदला गया. IntPxSize को IntSize से बदला गया. (Ib7b44)
  • androidx.ui.foundation.shape.RectangleShape हटा दिया गया है; androidx.ui.graphics.RectangleShape का इस्तेमाल करें (I94939, b/154507984)
  • साइज़ की जानकारी दिखाने के लिए इस्तेमाल की जाने वाली क्लास की संख्या को कम करने के लिए, PxSize के बजाय साइज़ क्लास के इस्तेमाल को स्टैंडर्ड बनाएं. इससे, इनलाइन क्लास के फ़ायदे मिलते हैं. इनसे, दो फ़्लोट वैल्यू को पैक करने के लिए लंबी वैल्यू का फ़ायदा मिलता है. इन वैल्यू से, चौड़ाई और ऊंचाई को फ़्लोट के तौर पर दिखाया जाता है. (Ic0191)
  • पोज़िशन की जानकारी दिखाने के लिए इस्तेमाल की जाने वाली क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे, इनलाइन क्लास के फ़ायदे मिलते हैं. इनमें, दो फ़्लोट वैल्यू को पैक करने के लिए लॉन्ग का फ़ायदा लेना शामिल है. इन वैल्यू का इस्तेमाल, x और y ऑफ़सेट को फ़्लोट के तौर पर दिखाने के लिए किया जाता है. (I3ad98)
  • पिंच-टू-ज़ूम फ़ंक्शन के लिए Modifier.zoomable जोड़ा गया (Id5d63)
  • टॉगल किए जा सकने वाले कॉम्पोनेंट का इस्तेमाल बंद कर दिया गया है. इसके बजाय, Modifier.toggleable का इस्तेमाल करें (I35220, b/157642842)
  • MutuallyExclusiveSetItem अब काम नहीं करता. इसके बजाय, Modifier.selectable का इस्तेमाल करें. (I02b47, b/157642842)
  • TestTag अब काम नहीं करता. इसके बजाय, Modifier.testTag का इस्तेमाल करें. (If5110, b/157173105)
  • टेक्स्ट में fontWeight पैरामीटर जोड़ता है, जो गलती से पहले नहीं जोड़ा गया था (I56937)
  • पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी कोशिश के तहत, अलग-अलग कॉम्पोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I19d02)
  • VerticalScroller अब कॉलम की सुविधा पहले से उपलब्ध कराता है. HorizontalScroller अब पहले से ही लाइन की सुविधा देता है. (Ieca5d, b/157020670)
  • पिक्सल पैरामीटर (Iede0b) के लिए, सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी कोशिश के तहत, अलग-अलग compose क्लास में Px क्लास के इस्तेमाल को बदल दिया गया
  • फ़ाउंडेशन पैकेज में Modifier.indication जोड़ा गया है. इसका इस्तेमाल करके, इंटरैक्ट किए जा सकने वाले कस्टम एलिमेंट (I8425f, b/155287131) पर, दबाने/खींचने/अन्य संकेत दिखाएं
  • VerticalScroller और HorizontalScroller अब उल्टी दिशा में स्क्रोल करने की सुविधा देते हैं. इसके लिए, isReversed को ScrollerPosition पर सेट करना होगा (I953bd)
  • टेक्स्ट लेआउट में कॉम्पोज़ेबल जोड़ने की सुविधा. (I1373c)
  • CanvasScope को एक साथ लागू किया गया है, इसलिए अब सिर्फ़ DrawScope और ContentDrawScope है. साथ ही, CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस को लागू करने और LayoutDirection देने के लिए, DrawScope को अपडेट किया गया है ContentDrawScope में DrawScope सबक्लास को मिटा दिया गया है Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब RTL प्रॉपर्टी को खुद मैनेज न करें, क्योंकि DrawScope पहले से ही इसे मैन्युअल तौर पर उपलब्ध कराता है (I1798e)
  • मॉडिफ़ायर पर drawBackground एक्सटेंशन एपीआई के पक्ष में, अब इस्तेमाल नहीं किए जा रहे DrawBackground एपीआई को हटा दिया गया है. कोड पाथ को कम करने के लिए, रंग, ब्रश, और पेंट drawBackground के लागू होने के तरीके को फिर से तैयार किया गया. साथ ही, कंपोजिशन के हिस्से के तौर पर मॉडिफ़ायर बनाने की ज़रूरत को भी हटा दिया गया. (I0343a)
  • अपडेट किए गए बेहतर लेवल के Compose API, जो CanvasScope को एक्सपोज़ करने के लिए Canvas को एक्सपोज़ करते हैं. इससे उपभोक्ताओं को अपने Paint ऑब्जेक्ट मैनेज करने की ज़रूरत नहीं पड़ती. जिन उपयोगकर्ताओं को अब भी कैनवस का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, कैनवस पर ड्रॉ करने के निर्देश देने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
  • HorizontalScroller और VerticalScroller, सेव किए गए इंस्टेंस स्टेटस का इस्तेमाल करके, स्क्रोल की स्थिति को वापस नहीं लाते. (Ia0fae, b/155075048)
  • FocusManagerAmbient को हटा दिया गया है. फ़ोकस पाने के लिए, FocusModifier.requestFocus का इस्तेमाल करें. (Ic4826)
  • टेबल लेआउट को कुछ समय के लिए हटा दिया गया है. हम इसे नए एपीआई के साथ फिर से उपलब्ध कराएंगे. (Id88a7)
  • CanvasScope API बनाया, जो Canvas ऑब्जेक्ट को रैप करता है, ताकि स्टेटलेस, डिक्लेरेटिव ड्रॉइंग एपीआई के प्लैटफ़ॉर्म को दिखाया जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर के दायरे में होते हैं. साथ ही, साइज़ की जानकारी भी इनसेट के बाउंड के दायरे में होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, अपने Paint स्टेटस ऑब्जेक्ट को मैनेज करने की ज़रूरत नहीं होती.

    CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके

  • ColoredRect को हटा दिया गया है. इसके बजाय, drawBackground मॉडिफ़ायर वाला यूज़र बॉक्स (I983c7, b/152753731)

  • TextField में कर्सर के रंग को पसंद के मुताबिक बनाने की सुविधा जोड़ना (I6e33f)

  • अब सॉफ़्टवेयर कीबोर्ड को छिपाया या दिखाया जा सकता है. इसके लिए, SoftwareKeyboardController का इस्तेमाल करें. यह onTextInputStarted कॉलबैक से डिलीवर किया जाता है (I8dc44, b/151860051)

  • TextField के साथ इस्तेमाल किए गए TextFieldValue को अब इस तरह इस्तेमाल करने पर, गतिविधि को फिर से शुरू करने पर भी वह मौजूद रहेगा: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • Text() फ़ंक्शन में, आम तौर पर इस्तेमाल होने वाले पैरामीटर जोड़ता है. अगर फ़िलहाल, Text(style = TextStyle(textAlign = TextAlign.Center)) जैसे कुछ पैरामीटर को पास करने के लिए कोई लोकल टेक्स्ट स्टाइल बनाई जा रही है, तो अब सीधे पैरामीटर दिए जा सकते हैं: Text(textAlign = TextAlign.Center) (I82768)

  • फ़ोकस सबसिस्टम के साथ इंटिग्रेट करने के लिए, CoreTextField/TextField focusIdentifier पैरामीटर को FocusNode से बदला गया. (I7ea48)

  • टेक्स्टफ़ील्ड अपडेट - हॉरिज़ॉन्टल डाइमेंशन में, यह अपने लिए उपलब्ध सभी जगह ले लेगा (Ib08df, b/154638552)

  • InteractionState और Interaction जोड़े गए हैं. इससे, ऐसे कॉम्पोनेंट बनाना आसान हो गया है जो यूज़र इंटरफ़ेस (यूआई) के स्टेटस में होने वाले बदलावों पर प्रतिक्रिया देते हैं. जैसे, दबाना और खींचना (Icfe25, b/152525426)

  • RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)

  • एपीआई में, शून्य वैल्यू के तौर पर इस्तेमाल किए जा सकने वाले Color के सभी इस्तेमाल को, शून्य वैल्यू के तौर पर इस्तेमाल न किए जा सकने वाले Color से बदला गया. साथ ही, null के बजाय Color.Unset का इस्तेमाल किया गया (Iabaa7)

  • TextField API अपडेट - onFocus और onBlur कॉलबैक को पैरामीटर के साथ एक ही onFocusChange(Boolean) कॉलबैक में मर्ज किया गया (I66cd3)

  • ScaleFit का नाम बदलकर ContentScale कर दिया गया है ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में मौजूद रहे. FillMaxDimension का नाम बदलकर Crop किया गया FillMinDimension का नाम बदलकर Fit किया गया ImageView.ScaleType के बराबर के विकल्पों से बेहतर मैच करने के लिए, Fit का नाम बदलकर Inside किया गया दस्तावेज़ जोड़ा गया है, जिसमें बताया गया है कि Crop और Alignment.Center के कॉम्बिनेशन से वही नतीजा मिलता है जो ImageView.ScaleType.CENTER_CROP से मिलता है. साथ ही, Alignment.Center के साथ इस्तेमाल किए गए Fit से वही नतीजा मिलता है जो ImageView.ScaleType.FIT_CENTER से मिलता है. इसके अलावा, Alignment.Center के साथ इस्तेमाल किए गए Inside से वही नतीजा मिलता है जो ImageView.ScaleType.CENTER_INSIDE से मिलता है (I45f09, b/152842521)

  • ProvideContentColor को हटाता है. इसके बजाय, सीधे Providers के साथ ContentColorAmbient का इस्तेमाल करें (Iee942)

  • टेक्स्ट में रंग पैरामीटर जोड़ता है. इससे, थीम में दी गई स्टाइल के साथ मैन्युअल तरीके से मर्ज किए बिना, टेक्स्ट स्टाइल के रंग को बदला जा सकता है. (I41a66)

  • DrawModifier API को बेहतर बनाना:

    • draw() ContentDrawScope के लिए रिसीवर स्कोप बनाया गया
    • draw() से सभी पैरामीटर हटाए गए
    • DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
    • ContentDrawScope में drawContent() मेथड है (Ibaced, b/152919067)
  • ColoredRect फ़ंक्शन का इस्तेमाल बंद कर दिया गया है. इसके बजाय, Box(Modifier.preferredSize(width, height).drawBackground(color)) का इस्तेमाल करें. (I499fa, b/152753731)

  • शेप थीमिंग सिस्टम को, मटीरियल डिज़ाइन स्पेसिफ़िकेशन के हिसाब से अपडेट किया गया है. अब ज़्यादातर कॉम्पोनेंट (Ifb4d1) के लिए, छोटे, मध्यम, और बड़े आकार दिए जा सकते हैं

  • फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) के साथ मॉडिफ़ायर प्लस ऑपरेटर को बदला गया

  • Draggable को मॉडिफ़ायर (Id9b16, b/151959544) में ले जाया गया है

  • Text को androidx.ui.core से androidx.ui.foundation पैकेज में ले जाया गया. (I87ce5)

  • चेकबॉक्स, स्विच, और टॉगल करने की सुविधा के लिए enabled पैरामीटर जोड़ें (I41c16)

  • रिपल अब एक मॉडिफ़ायर है. Clickable को अभी तक बदला नहीं गया है. इसलिए, इसका इस्तेमाल करने का सुझाव दिया गया है Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • वेक्टर ग्राफ़िक्स के लिए, मौजूदा सब-कंपोज़िशन एपीआई को बदलने के लिए, VectorPainter API जोड़ा गया है. सब-कंपोज़िशन का नतीजा, DrawModifier के बजाय VectorPainter ऑब्जेक्ट होता है. VectorPainter के पक्ष में, पिछले DrawVector composables को हटा दिया गया है.

    Image(Painter) एपीआई का नाम बदलकर PaintBox(Painter) किया गया वेक्टर कॉम्पोज़ेबल बनाया गया, जो इमेज कॉम्पोज़ेबल की तरह काम करता है. हालांकि, इसमें ImageAsset के बजाय VectorAsset का इस्तेमाल किया जाता है (I9af9a, b/149030271)

  • स्क्रीन पर दी गई इमेज एसेट को ड्रॉ करने के साथ-साथ, साइज़/लेआउट को मैनेज करने के लिए, इमेज कॉम्पोज़ेबल बनाया गया. यह कॉम्पोज़ेबल, अपने मूल साइज़ के हिसाब से किसी भी Painter इंस्टेंस को ड्रॉ करने के साथ-साथ, तय किए गए साइज़ या कम से कम साइज़ (Ibcc8f) में भी ड्रॉ कर सकता है

  • Button, FloatingActionButton, और Clickable के लिए अब एक अलग enabled पैरामीटर है. बटन पर मौजूद कुछ पैरामीटर के नाम बदले गए हैं या उनका क्रम बदला गया है. (I54b5a)

  • इमेज का नाम बदलकर ImageAsset कर दिया गया है, ताकि इमेज डेटा और आने वाले समय में मिलने वाली इमेज कंपोजिट के बीच का अंतर बेहतर तरीके से बताया जा सके. इमेज कंपोजिट का इस्तेमाल, लेआउट में शामिल करने और कॉन्टेंट बनाने के लिए किया जाता है.

    ImageAsset का एक इंस्टेंस बनाने के लिए, Bitmap.asImageAsset() में android.graphics.Bitmap पर एक्सटेंशन का तरीका बनाया गया है. यह तरीका, Android ऐप्लिकेशन के पारंपरिक डेवलपमेंट को Compose फ़्रेमवर्क के साथ जोड़ने के लिए मददगार है. (Id5bbd)

  • DrawImage composable को हटा दिया गया है. मौजूदा लेआउट पर इमेज बनाने के लिए, ImagePainter का इस्तेमाल करें या स्पेस लेने वाली इमेज जोड़ने के लिए, SimpleImage का इस्तेमाल करें (I595e1, b/149827027)

  • स्टैक कॉम्पोनेंट, दाएं से बाएं दिशा में काम करता है (Ic9e00)

  • आइकॉन, आइकॉन बटन, और आइकॉन टॉगल बटन जोड़े गए. साथ ही, AppBarIcon को हटा दिया गया. AppBarIcon के मौजूदा इस्तेमाल को सीधे IconButton से बदला जा सकता है. इसके बाद, उनमें सही टच टारगेट होगा. इस्तेमाल से जुड़ी जानकारी के लिए सैंपल देखें. साथ ही, दिए गए Material आइकॉन के लिए आइकॉन देखें. इनका इस्तेमाल सीधे इन कॉम्पोनेंट के साथ किया जा सकता है. (I96849)

  • DrawShape कॉम्पोज़ेबल को हटा दिया गया है. इसके बजाय, DrawBackground मॉडिफ़ायर का इस्तेमाल करें. (I7ceb2)

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

  • स्क्रोल किया जा सकने वाला कॉम्पोनेंट जोड़ा गया है. इसकी मदद से, पसंद के मुताबिक स्क्रोलर/सूची बनाई जा सकती है (I5fd37)

  • बैकग्राउंड का नाम बदलकर DrawBackground किया गया और इसे डिफ़ॉल्ट रूप से याद रखने की सुविधा दी गई (Ia0bd3)

  • बॉक्स में पैडिंग, बॉर्डर, आकार, और बैकग्राउंड पैरामीटर जोड़ें (I05027, b/148147281)

  • कैनवस कॉम्पोनेंट जोड़ा गया. यह कॉम्पोज़ेबल कुछ जगह लेता है (उपयोगकर्ता से मिली जगह). साथ ही, आपको CanvasScope (I0d622) का इस्तेमाल करके ड्रॉ करने की सुविधा देता है

  • Border मॉडिफ़ायर का नाम बदलकर DrawBorder (I8ffcc) करें

  • लेआउट और ड्रॉइंग की सामान्य सुविधाओं को जोड़ने के लिए, Box कॉम्पोनेंट जोड़ा गया. (I6e2a7)

  • स्क्रोलर अब Android के नेटिव फ़्लिंग मोशन व्यवहार को दिखाते हैं. (I922af, b/147493715)

  • DrawBorder को बॉर्डर मॉडिफ़ायर (Id335a) से बदल दिया गया

  • Modifier.tag का नाम बदलकर Modifier.layoutId कर दिया गया है, ताकि Modifier.testTag से कोई भ्रम न हो. (I995f0)

  • ConstraintLayout के दिशा-निर्देश बनाते समय, प्रतिशत पैरामीटर का नाम बदलकर फ़्रैक्शन कर दिया गया है. (Ida2db)

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

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

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

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

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

  • पंक्ति और कॉलम में, RowAlign और ColumnAlign को हटा दिया गया है. (If60d4, b/155858731)

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

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

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

  • defaultMinSizeConstraints लेआउट मॉडिफ़ायर जोड़ा गया है. यह लेआउट के साइज़ की सीमाएं तभी सेट करता है, जब इन सीमाओं के लिए कोई वैल्यू न दी गई हो. जैसे, कम से कम साइज़ के लिए 0 और ज़्यादा से ज़्यादा साइज़ के लिए अनंत. (I311ea, b/150460257)

  • कंटेनर हटा दिया गया है. इसके बजाय, Box का इस्तेमाल करें (Ibbc2b, b/151407926)

  • काम न करने वाले LayoutWidth/Height/Size मॉडिफ़ायर हटा दिए गए हैं. (Ib0bc1)

  • ऑफ़सेट मॉडिफ़ायर के लिए डिफ़ॉल्ट पैरामीटर वैल्यू जोड़ी गई हैं. (I37f06)

  • सिमेट्रिक पैडिंग मॉडिफ़ायर जोड़ा गया. (I39840)

  • LayoutAspectRatio मॉडिफ़ायर को हटा दिया गया है. (I65a74)

  • इस्तेमाल नहीं किए जा रहे LayoutAlign मॉडिफ़ायर हटाए गए. (I10877)

  • चौड़ाई और ऊंचाई के मॉडिफ़ायर में एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, रैप किए गए लेआउट को बिना किसी अक्ष की पाबंदियों के मेज़र किया जा रहा था. (I210b8, b/154797971)

  • लाइन और कॉलम में, verticalGravity और horizontalGravity पैरामीटर जोड़े गए हैं. (I7dc5a)

  • wrapContentWidth और wrapContentHeight को अपडेट किया गया है, ताकि किसी भी अलाइनमेंट के बजाय वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट की उम्मीद की जा सके. वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट को स्वीकार करने के लिए, गुरुत्वाकर्षण मॉडिफ़ायर को अपडेट किया गया था. कस्टम ऐलाइनमेंट के साथ काम करने के लिए, लाइन, कॉलम, और स्टैक को अपडेट किया गया. (Ib0728)

  • अरेंजमेंट को मनमुताबिक वैल्यू के साथ तुरंत लागू किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)

  • EdgeInsets का नाम बदलकर InnerPadding कर दिया गया. Material बटन के innerPadding पैरामीटर का नाम बदलकर padding कर दिया गया है. (I66165)

  • alignToSiblings फ़ंक्शन अब Placeable के बजाय Measured को स्वीकार करता है. (I5788d)

  • इंट्रिन्सिक मेज़रमेंट में साइज़ करने के लिए मॉडिफ़ायर जोड़े गए. साथ ही, इस काम के लिए इस्तेमाल किए जा रहे कॉम्पोनेंट को बंद कर दिया गया. (I8295d)

  • ConstraintLayout (Idb1a5) के चाइल्ड के डाइमेंशन को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई

  • इस्तेमाल नहीं किए जा रहे Wrap और Center कॉम्पोज़ेबल हटाए गए. (I29e23)

  • लेआउट में बदलाव करने वाले एलिमेंट तय करने के लिए, LayoutModifier2 नाम का नया एपीआई जोड़ा गया है. साथ ही, LayoutModifier (If32ac) को बंद कर दिया गया है

  • RowScope और ColumnScope के सदस्यों को अब लाइन और कॉलम के बाहर ऐक्सेस किया जा सकता है. (I3a641)

  • कंटेनर की सुविधा अब काम नहीं करती. इसके बजाय, Box का इस्तेमाल करें. (I675ce, b/151407926)

  • लेआउट की पोज़िशन को ऑफ़सेट करने के लिए, LayoutOffset मॉडिफ़ायर जोड़ा गया (I0b8a3)

  • Compose लेआउट में आरटीएल के लिए शुरुआती सहायता (Ia5519)

  • LayoutAlign को अपडेट किया गया, ताकि वह अब उपलब्ध जगह को न भर सके (I2b14f)

  • मॉडिफ़ायर के पक्ष में, AspectRatio composable को हटा दिया गया है. अब काम न करने वाले FlexColumn, FlexRow कॉम्पोज़ेबल, और स्पेसिंग मॉडिफ़ायर (Iec8a7) को मिटा दिया गया है

  • पंक्ति और कॉलम के लिए LayoutInflexible मॉडिफ़ायर हटाया गया (I0d820)

  • TextField के लिए चुने गए टेक्स्ट में बदलाव करने के लिए, टेक्स्ट चुनने के लिए खींचें और छोड़ें सुविधा लागू करें. (I27032)

  • TextField में टेक्स्ट चुनने के लिए, LongPressAndDrag को लागू करता है. (I17919)

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

  • Modifier.focus, Modifier.focusRequester, Modifier.focusObserver के इस्तेमाल की वजह से, FocusModifier का इस्तेमाल बंद कर दिया गया है. FocusState और FocusDetailedState को बंद कर दिया गया है. अब इनकी जगह FocusState2 का इस्तेमाल किया जाना चाहिए (I46919, b/160822875, b/160922136)
  • runOnIdleCompose का नाम बदलकर runOnIdle कर दिया गया (I83607)
  • जांच करने वाले कई एपीआई के नाम बदल दिए गए हैं, ताकि उन्हें इस्तेमाल करना आसान हो. सभी findXYZ एपीआई का नाम बदलकर onNodeXYZ कर दिया गया है. doXYZ वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
  • पहले से बंद किए गए Modifier.ripple को हटाता है. Clickable अब डिफ़ॉल्ट इंंडिकेशन के तौर पर रिपल का इस्तेमाल करता है. ऐसा तब होता है, जब आपके ऐप्लिकेशन में MaterialTheme {} सेट हो. इसलिए, ज़्यादातर मामलों में, सिर्फ़ Clickable का इस्तेमाल करके, रिपल इंंडिकेशन को बिना किसी शुल्क के पाया जा सकता है. अगर आपको रिपल के लिए रंग / साइज़ / बाउंड पैरामीटर को पसंद के मुताबिक बनाना है, तो मैन्युअल रूप से RippleIndication बनाएं और उसे इंडिकेशन पैरामीटर के तौर पर क्लिक किए जा सकने वाले आइटम में पास करें. (I663b2, b/155375067)
  • साइज़ की जांच करने वाले पुराने एपीआई हटा दिए गए. (Iba0a0)
  • LayoutNode को एक्सपेरिमेंटल एपीआई बनाया (I4f2e9)
  • Compose में, स्क्रोल ओरिएंटेशन लॉक करने की सुविधा का पहला वर्शन लागू किया गया है. (I1ce7a, b/150289741)
  • पॉप-अप, डायलॉग, और मेन्यू में अब कॉन्टेक्स्ट के हिसाब से MaterialTheme (Ia3665, b/156527485) का इस्तेमाल किया जा रहा है
  • Layout() फ़ंक्शन के मेज़र ब्लॉक से लेआउट डायरेक्शन पैरामीटर हटाया गया. हालांकि, लेआउट डायरेक्शन, मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए कॉलबैक में उपलब्ध है
  • AbsoluteArrangement जोड़ें - इसकी मदद से, आरटीएल (I3a1df) में अपने-आप मिरर किए बिना, पंक्ति में बच्चों को व्यवस्थित किया जा सकता है
  • @Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. @ComposableContract(tracked=false) (Id211e) से बदलें
  • इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कोई (I5205a, b/158123804) था, तो Compose कंपाइलर प्लग इन, कॉन्स्ट्रक्टर के कॉल को आसानी से इंटरसेप्ट कर लेता था
  • viewModel() कॉम्पोज़ेबल जोड़ें, जिससे पहले से बनाए गए ViewModel को बनाने या पाने की सुविधा मिलती है. यह सुविधा, ऐक्टिविटी या फ़्रैगमेंट में काम करने की तरह ही काम करती है (I5fdd1)
  • Radius क्लास को इनलाइन क्लास में बदला गया. डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल करके, साथी बनाने के तरीकों को हटा दिया गया है. इससे y-ऐक्सिस के साथ त्रिज्या, ज़रूरी x-ऐक्सिस त्रिज्या पैरामीटर से मैच कर पाएगी.

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

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

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

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

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

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

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

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

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

  • AnnotatedString.Builder.addAnnotationString का नाम बदलकर addStringAnnotation करें. (I5059e)

  • अलाइनमेंट एपीआई को अपडेट किया गया और एब्सोलूट अलाइनमेंट (जो आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता) के लिए सहायता जोड़ी गई (I38cd3)

  • लेआउट और LayoutModifier के बच्चों को, लेआउट के अलग-अलग डायरेक्शन के हिसाब से मेज़र किया जा सकता है. (Ibd731)

  • ImagePainter में वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि मौजूदा ImageAsset (I0ea9e) के सबसेट को ड्रॉ किया जा सके

  • आइटम हटाते समय, AdapterList में क्रैश होने की समस्या को ठीक किया गया (Ic64b0, b/153195921)

  • हमने activity.setContent { } ब्लॉक में डाले गए पहले लेआउट को मेज़र करने का तरीका बदल दिया है. पहले, यह पूरी गतिविधि स्क्रीन को भरने के लिए मजबूर किया जाता था. अब यह ऐसे काम करता है जैसे आपने अपना लेआउट स्टैक में डाला हो: यह स्क्रीन से छोटा हो सकता है और इसे सबसे ऊपर बाईं ओर स्क्रीन में रखा जाएगा. अगर आपको पुराना व्यवहार चाहिए, तो अपने लेआउट के लिए Modifier.fillMaxSize() लागू करें. (Ie88a7, b/153453714)

  • ui-text-compose मॉड्यूल का नाम बदलकर ui-text कर दिया गया है. ui-text में अब CoreText और CoreTextField कॉम्पोज़ेबल शामिल हैं (Ib7d47)

  • ui-text मॉड्यूल का नाम बदलकर ui-text-core (I57dec) कर दिया गया है

  • ui-framework/CoreText, CoreTextField composables को ui-text-compose में ले जाया गया. हो सकता है कि आप अपने प्रोजेक्ट में ui-text-compose को शामिल करना चाहें. (I32042)

  • runOnIdleCompose और runOnUiThread अब ComposeTestRule पर मौजूद तरीकों के बजाय, ग्लोबल फ़ंक्शन हैं. (Icbe8f)

  • [बदली जा सकने वाली]Kotlin 1.4 प्रॉपर्टी के प्रतिनिधि के ऑप्टिमाइज़ेशन के साथ काम करने के लिए, स्टेट प्रॉपर्टी के प्रतिनिधि ऑपरेटर को एक्सटेंशन में ले जाया गया. by state { ... } या by mutableStateOf(...) का इस्तेमाल जारी रखने के लिए, कॉल करने वाले लोगों को इंपोर्ट जोड़ने होंगे. (I5312c)

  • DrawLayerModifier और drawLayer() में अब clipToBounds और clipToOutline की वैल्यू डिफ़ॉल्ट रूप से 'गलत' है. (I0eb8b, b/152810850)

  • LayoutResult का नाम बदलकर MeasureResult कर दिया गया. (Id8c68)

  • अब काम न करने वाला सेंटर कॉम्पोज़ेबल. इसे LayoutSize.Fill + LayoutAlign.Center मॉडिफ़ायर से बदला जाना चाहिए. इसके अलावा, इसे Box या Stack कंपोज़ेबल में से किसी एक के साथ भी बदला जा सकता है. इसके लिए, उस पर सही मॉडिफ़ायर लागू करें (Idf5e0)

  • LayoutFlexible का नाम बदलकर LayoutWeight कर दिया गया. भरने के लिए, टाइट पैरामीटर का नाम बदला गया. (If4738)

  • DrawVector को सामान्य कॉम्पोज़ेबल फ़ंक्शन से बदलकर, मॉडिफ़ायर drawVector() में बदल दिया गया है. यह लेआउट के बैकग्राउंड के तौर पर वेक्टर को ड्रॉ करेगा. (I7b8e0)

  • composable फ़ंक्शन Clip को मॉडिफ़ायर drawClip() से बदलें. DrawClipToBounds एक ऐसा मॉडिफ़ायर है जिसका इस्तेमाल तब करना आसान होता है, जब आपको सिर्फ़ रेक्टैंगल आकार में लेयर के बाउंड्स तक क्लिप करना हो. (If28eb)

  • DrawShadow कॉम्पोज़ेबल फ़ंक्शन को drawShadow() में बदल दिया गया है. अब लेयर में बदलाव करने वाले टूल के हिस्से के तौर पर, परछाईयां बनाई जाती हैं. (I0317a)

  • androidx.compose.ViewComposer को androidx.ui.node.UiComposer पर ले जाया गया है androidx.compose.Emittable को हटा दिया गया है. यह ComponentNode के साथ काम नहीं करता था. इसलिए, androidx.compose.ViewAdapters को हटा दिया गया है. अब इनका इस्तेमाल नहीं किया जा सकता. Compose.composeInto का इस्तेमाल नहीं किया जा सकता. इसके बजाय, setContent या setViewContent का इस्तेमाल करें. Compose.disposeComposition को बंद कर दिया गया है. इसके बजाय, setContent से लौटने वाले Composition पर dispose तरीके का इस्तेमाल करें. androidx.compose.Compose.subcomposeInto को androidx.ui.core.subcomposeInto में ले जाया गया है ComponentNode#emitInsertAt का नाम बदलकर ComponentNode#insertAt कर दिया गया है ComponentNode#emitRemoveAt का नाम बदलकर ComponentNode#removeAt कर दिया गया है ComponentNode#emitMode का नाम बदलकर ComponentNode#move कर दिया गया है (Idef00)

  • अब इस्तेमाल नहीं किया जा सकने वाला रैप कॉम्पोज़ेबल. इसे LayoutAlign मॉडिफ़ायर या स्टैक कॉम्पोज़ेबल (Ib237f) से बदला जा सकता है

  • लेआउट डायरेक्शन को पैरंट लेआउट नोड से बच्चों तक पहुंचाया गया. लेआउट की दिशा में बदलाव करने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)

  • Painter.toModifier का नाम बदलकर Painter.asModifier करें, क्योंकि नए बनाए गए मॉडिफ़ायर में ओरिजनल Painter का रेफ़रंस होता है. इसे कई मॉडिफ़ायर इंस्टेंस के साथ शेयर किया जा सकता है (I7195b)

  • LayoutPadding मॉडिफ़ायर (I9e8da) में, दाईं से बाईं ओर की दिशा का इस्तेमाल करने की सुविधा जोड़ी गई

  • Density और DensityScope को एक इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय, सिर्फ़ with(density) (I11cb1)

  • ValueHolder क्लास हटाई गई. ऐनिमेशन वैल्यू फ़ील्ड को ऐब्स्ट्रैक्ट बनाने के लिए, AnimatedValue और AnimatedFloat क्लास को फिर से व्यवस्थित किया गया, ताकि सबक्लास वैल्यू अपडेट देख सकें.

    • AnimatedValue, AnimatedFloat वगैरह के लिए मॉडल क्लास जोड़ी गई हैं.
    • वैल्यू के बीच ऐनिमेशन करने के लिए, लाइट-वेट @Composable API का नया सेट जोड़ा गया है.
    • (I79530)
  • ambients API में होने वाले बदलावों के बारे में जानकारी. ज़्यादा जानकारी के लिए लॉग और Ambient<T> दस्तावेज़ देखें (I4c7ee, b/143769776)

  • Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की Int पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)

  • ConstraintLayout से जुड़ी एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फिर से कॉम्पोज़ करने पर ऐप्लिकेशन क्रैश हो जाता था. (Ibee5a, b/158164341)

  • WithConstraints ट्रेलिंग लेम्ब्डा एपीआई को बदल दिया गया है. अब दो पैरामीटर के बजाय, इसमें एक रिसीवर स्कोप है. यह स्कोप, constraints और layoutDirection के अलावा, Dp (I91b9a, b/149979702) में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी देता है

  • LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया. (Id29f3)

  • Layout और LayoutModifier2 में मौजूद इंट्रिन्सिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिन्सिक क्वेरी एपीआई को, लेआउट डायरेक्शन के साथ-साथ जानकारी देता है. (Id9945)

  • LayoutDirectionAmbient अब काम नहीं करता. स्थानीय भाषा के हिसाब से तय किए गए लेआउट के डायरेक्शन को पढ़ने के लिए, ConfigurationAmbient (I851b1) पर localeLayoutDirection का इस्तेमाल करें

  • LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)

  • ParentData composable अब काम नहीं करता. आपको ऐसा मॉडिफ़ायर बनाना चाहिए जो ParentDataModifier इंटरफ़ेस को लागू करता हो. इसके अलावा, अगर आपको मेज़र ब्लॉक में लेआउट के चाइल्ड को पहचानने के लिए उन्हें टैग करना है, तो LayoutTag मॉडिफ़ायर का इस्तेमाल करें. (I51368, b/150953183)

  • OnPositioned और OnChildPositioned कमपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)

  • LayoutPadding में नेगेटिव पैडिंग की अनुमति न दें. नेगेटिव पोज़िशन ऑफ़सेट के लिए, LayoutOffset का इस्तेमाल किया जाना चाहिए. (Ifb5b1)

  • WithConstraints को LayoutDirection पैरामीटर (I6d6f7) मिला

  • ComposeFlags.COMPOSER_PARAM फ़्लैग को true पर अपडेट किया गया है. इससे, कॉम्पोज़ प्लग इन के लिए कोड जनरेशन की रणनीति बदल जाएगी. हाई लेवल पर, इससे @Composable फ़ंक्शन एक अतिरिक्त सिंथेटिक पैरामीटर के साथ जनरेट होते हैं. इसे बाद में @Composable कॉल में पास किया जाता है, ताकि रनटाइम, फ़ंक्शन के लागू होने को सही तरीके से मैनेज कर सके. यह बाइनरी में एक अहम बदलाव है. हालांकि, यह बदलाव, कंपोज़ के सभी मंज़ूर किए गए इस्तेमाल में सोर्स-लेवल के साथ काम करना जारी रखेगा. (I7971c)

  • LayoutCoordinates को बदलकर, दी गई AlignmentLines को मैप के बजाय सेट बनाया गया है. साथ ही, LayoutCoordinates को वैल्यू वापस पाने के लिए, get() ऑपरेटर लागू किया गया है. इससे, हर मॉडिफ़ायर के लिए नया कलेक्शन बनाए बिना, मॉडिफ़ायर के लिए सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. (I0245a)

  • LayoutCoordinates में अब पोज़िशन प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के मामले में, पोज़िशन प्रॉपर्टी का कोई मतलब नहीं है. इसके बजाय, डेवलपर को एक लेआउट कोऑर्डिनेट से दूसरे लेआउट कोऑर्डिनेट में बदलने का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.

    LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए, पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, सभी लेआउट साइज़ के लिए, फ़्लोटिंग पॉइंट वैल्यू के बजाय पूर्णांक का इस्तेमाल किया जाना चाहिए. (I9367b)

  • पाबंदियों के एपीआई प्लैटफ़ॉर्म में सुधार (I0fd15)

  • TextDirection.Content (I48f36) जोड़ा गया

  • कॉपी, काटें, चिपकाएं विकल्पों को सही तरीके से दिखाने के लिए, टूलबार मेन्यू में बदलाव करें. (Id3955)

  • टेक्स्ट फ़ील्ड चुनने के लिए, फ़्लोटिंग टूलबार जोड़ें. (Ie8b07)

  • TextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)

  • TextDirection का नाम बदलकर ResolvedTextDirection (I3ff38) कर दिया गया है

  • TextField Selection में HapticFeedback जोड़ें. (I58050)

  • टेक्स्टफ़ील्ड के चुने गए हिस्से को कॉपी, काटें, और चिपकाएं. (Idb70b)

  • TestTag और सेमेटिक्स मिटा दिए गए हैं. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)

  • Locale और LocaleList के पैकेज का नाम, androidx.ui.text से बदलकर androidx.ui.intl कर दिया गया (I8132c)

  • एपीआई में बदलाव: AnnotatedString(builder: Builder) का नाम बदलकर annotatedString(builder: Builder) कर दिया गया है. (Ia6377)

  • एपीआई में बदलाव: AnnotatedString.Item का नाम बदलकर AnnotatedString.Range कर दिया गया है. (I2d44d)

  • टेक्स्ट से जुड़ी कार्रवाइयों के लिए टूलबार जोड़ें. (I49d53)

  • LifecycleOwnerAmbient का नया वर्शन अब उपलब्ध है. अब Compose UI के साथ इस्तेमाल की जा रही गतिविधि को androidx.activity.ComponentActivity (या AppCompatActivity) से एक्सटेंड करना चाहिए. android.app.Activity पर setContent अब काम नहीं करता (Idb25a, b/153141084)

  • androidx की नीति के मुताबिक काम करने के लिए, ui-android-text पैकेज के नाम (androidx.text) को androidx.ui.text.platform से बदल दिया गया है. (I42711)