Compose Foundation

इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा वर्शन
16 जुलाई, 2025 1.8.3 - 1.9.0-beta03 -

संरचना

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

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

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

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

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

सुझाव/राय दें या शिकायत करें

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

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

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

वर्शन 1.9

वर्शन 1.9.0-beta03

16 जुलाई, 2025

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

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

  • रिग्रेशन से जुड़ी गड़बड़ी को ठीक किया गया है. इससे लेज़ी ग्रिड में स्टिकी हेडर के काम करने के तरीके में रुकावट आ रही थी. ऐसा तब होता था, जब हेडर का कॉन्टेंट खाली होता था. (e3e3400)

वर्शन 1.9.0-beta02

2 जुलाई, 2025

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

नई सुविधाएं

  • संदर्भ मेन्यू और चुनने के टूलबार में स्मार्ट आइटम की सुविधा उपलब्ध कराई गई है.

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

  • एक गड़बड़ी को ठीक किया गया है. इसमें कुछ हार्डवेयर कीबोर्ड या टीवी रिमोट, डायरेक्शनल बटन का इस्तेमाल करके कर्सर को नए TextFields में ले जाने में फ़ेल हो जाते थे. इसके बजाय, वे फ़ोकस को किसी अन्य कंपोज़ेबल पर स्विच कर देते थे. ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled जोड़ा गया है, ताकि अगर इस सुधार की वजह से कोई ऐसी समस्या होती है जिसे ठीक नहीं किया जा सकता, तो इसे कुछ समय के लिए बंद किया जा सके. (Ie1922)

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

  • उस समस्या को ठीक किया गया है जिसकी वजह से पिन किए गए आइटम के मौजूद होने पर, स्टिकी हेडर अपनी जगह पर नहीं टिकते थे. (I9198d, b/385006133)
  • TextObfuscationMode.RevealLastTyped अब सिस्टम सेटिंग “TEXT_SHOW_PASSWORD” के मुताबिक काम करता है. (I41c0c)
  • उस बग को ठीक किया गया है जिसमें पहली बार टेक्स्ट टूलबार खोलने पर, BasicTextField गलत तरीके से “क्लिपबोर्ड से चिपकाया गया” चेतावनी दिखाता है. (I5fda2)

वर्शन 1.9.0-beta01

18 जून, 2025

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

नुकसान पहुंचा सकने वाले बदलाव

  • background और border मॉडिफ़ायर नोड अब SemanticsModifierNode लागू करते हैं. इसकी वजह से, सिमैंटिक्स ट्री में नए SemanticsNodes जुड़ सकते हैं. इसलिए, सिमैंटिक्स ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट फ़ेल हो सकते हैं. उदाहरण के लिए, onChild, onParent, onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट तब फ़ेल हो सकते हैं, जब मौजूदा और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर पर testTag जोड़ें. एक और तरीका है कि आप onNode(hasAnyAncestor(hasText(“ancestor”)) and hasText(“target”)) जैसे लूज़र मैचिंग वाले टूल का इस्तेमाल करें. (I638b5)

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

  • Modifier.addTextContextMenuComponents का नाम बदलकर appendTextContextMenuComponents करें. (I4c43f)
  • AnnotatedOutputTransformation को हटा दिया गया है और addStyle फ़ंक्शन को TextFieldBuffer में ले जाया गया है. addStyle को अब भी सिर्फ़ OutputTransformation से कॉल किया जा सकता है. (I9930a, b/417991824)
  • Clickable को फिर से लिखा गया है, ताकि पॉइंटर इनपुट को निलंबित करने की सुविधा का इस्तेमाल ऑप्टिमाइज़ेशन के तौर पर न किया जा सके. यह सुविधा एक फ़्लैग की मदद से चालू की जाती है. अगर आपको नई सुविधा में कोई गड़बड़ी मिलती है, तो इसे बंद किया जा सकता है - ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65)
  • नेस्टेड स्क्रोलिंग में फ़्लिंग के फैलने से जुड़ी समस्या को ठीक करने के लिए, isFlingCancellationWithNestedScrollFixEnabled को पेश किया गया. इस सीएल में, हम फ़्लिंग जारी रखने की सुविधा को वापस ला रहे हैं. इसे aosp/3260391 में हटा दिया गया था. अगर बच्चे को कंपोज़िशन से हटा दिया जाता है, तो हम फ़्लिंग ऐनिमेशन को अब भी रद्द कर देंगे. (I467f4, b/405910180, b/419049142, b/416784125)
  • WindowInsetsRulers: rulersIgnoringVisibility को ज़्यादा से ज़्यादा पर सेट किया गया. getDisplayCutoutBounds() को PlacementScope के एक्सटेंशन फ़ंक्शन के तौर पर बदला गया. WindowInsetsAnimationProperties को बदलकर WindowInsetsAnimation कर दिया गया है और getAnimationProperties() को बदलकर getAnimation() कर दिया गया है. (I3816f)
  • InsetsRulers को बदलकर, WindowInsetsRulers नाम के सामान्य कोड में शामिल किया गया. एपीआई को आसान बनाया गया है, ताकि सभी इनसेट WindowInsetsRulers हों. रूलर से जुड़ी नहीं, बल्कि ऐनिमेशन से जुड़ी प्रॉपर्टी को AnimationProperties क्लास में एक्सट्रैक्ट किया गया. WindowInsetsRulers को एक साथ मर्ज करने के लिए, WindowInsetsRulers.innermostOf() का इस्तेमाल किया जा सकता है. (I2f0c6, b/415012444)

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

  • ContentInViewNode में scrollAnimationSpec का इस्तेमाल फिर से जोड़ें. scrollAnimationSpec बंद करने की प्रोसेस के दौरान, इस सुविधा को हटा दिया गया था. इस वजह से, इस्तेमाल के उदाहरण काम नहीं कर रहे हैं. (I1436a, b/403301605)

वर्शन 1.9.0-alpha04

4 जून, 2025

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

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

  • PrefetchScheduler और पसंद के मुताबिक बनाने की सुविधा को बंद कर दिया गया है. इसके बजाय, अब इंटरनल तौर पर लागू की गई सुविधा का इस्तेमाल किया जाता है. यह सुविधा, सभी काम अपने-आप करती है. (I3a9a6, b/420551535)
  • Scrollable2DState को अपडेट किया गया है, ताकि कोण के बजाय canScroll तरीके में ऑफ़सेट का इस्तेमाल किया जा सके. (I28694, b/417268474)
  • AnnotatedOutputTransformation में मौजूद addAnnotation को addStyle से बदला गया. (I91c6f, b/417991824)
  • LazyLayout को स्थिर किया गया. (If5db4)
  • LazyLayoutPrefetchState के लिए, खाली कंस्ट्रक्टर को स्थिर किया गया है. साथ ही, इसके शेड्यूल करने के तरीके schedulePrecomposition और schedulePrecompositionAndPremeasure को भी स्थिर किया गया है. (I4362f, b/252853717)
  • Android पर ProcessTextKey पेश किया गया है. इसका इस्तेमाल, कॉन्टेक्स्ट मेन्यू आइटम के लिए किया जाता है. इसे PROCESS_TEXT इंटेंट ऐक्शन के लिए जोड़ा गया है. (If0ac4)
  • कॉन्टेक्स्ट मेन्यू वाले एपीआई को सार्वजनिक करें. कॉन्टेक्स्ट मेन्यू में आइटम जोड़ने और हटाने के लिए, Modifier.addTextContextMenuComponents और Modifier.filterTextContextMenuComponents को दिखाया गया है. हमने इन बुनियादी एपीआई को भी सार्वजनिक कर दिया है, ताकि कोई भी व्यक्ति अपनी पसंद के मुताबिक संदर्भ मेन्यू बना सके:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • LazyLayoutItemProvider को स्थिर बनाएं (Icce09, b/261565751)
  • Android में स्मार्ट तरीके से चुनने की सुविधा जोड़ी गई है. इसे ComposeFoundationFlags.isSmartSelectionEnabled के ज़रिए चालू/बंद किया जा सकता है. यह एक स्टैटिक compositionLocal LocalTextClassifierCoroutineContext भी दिखाता है. इसका इस्तेमाल, उस CoroutineContext को तय करने के लिए किया जा सकता है जिसमें TextClassification जॉब लॉन्च की जाती है. (I1dbaa, b/139321320)

वर्शन 1.9.0-alpha03

20 मई, 2025

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

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

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

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

  • अब SelectionContainer में मौजूद एक से ज़्यादा Text कंपोज़ेबल से कॉपी किए गए टेक्स्ट के बीच, लाइन सेपरेटर \n जोड़ा जाएगा. (I25332, b/285036739)

वर्शन 1.9.0-alpha02

7 मई, 2025

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

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

  • DragGestureNode में, पॉइंटर इनपुट में हुए बदलावों को VelocityTracker में जोड़ने के तरीके को ठीक किया गया है. इसे नए फ़्लैग isOffsetPositionBeforeAddingToVelocityTrackerEnabled से कंट्रोल किया जा सकता है. (Ic7992, b/292556787, b/236451818)
  • await[Vertical/Horizontal]PointerSlopOrCancellation को सार्वजनिक करें (I6968b, b/298903681)
  • AbstractComposeView.consumeWindowInsets अब डिफ़ॉल्ट रूप से गलत पर सेट है. 'गलत है' पर सेट होने पर, WindowInsets को बच्चे के साइज़ और पोज़िशन के हिसाब से अपने-आप अडजस्ट कर दिया जाएगा. इसलिए, अब इसे डिफ़ॉल्ट रूप से 'सही है' पर सेट करने की ज़रूरत नहीं है. इस अपडेट से, उस समस्या को ठीक किया गया है जिसमें चाइल्ड व्यू को डिफ़ॉल्ट रूप से WindowInsets अपडेट नहीं मिल रहे थे. डेवलपर, एक्सपेरिमेंटल ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled को true पर सेट करके या बेहतर होगा कि वे Compose व्यू के सभी इंस्टेंस पर AbstractComposeView.consumeWindowInsets को true पर सेट करके, अपडेट से ऑप्ट आउट कर सकते हैं. (I6fa0a, b/411868840)

बाहरी योगदान

  • beyondViewportPageCount की बहुत बड़ी वैल्यू के साथ Pager क्रैश होने की समस्या ठीक की गई (Idb2db)

वर्शन 1.9.0-alpha01

23 अप्रैल, 2025

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

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

  • Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो gradle.properties में android.experimental.lint.version=8.8.2 (या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में कंपोज़ के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.

  • बदलाव: clickable, combinedClickable, selectable, toggleable, और triStateToggleable के इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए फ़ंक्शन, अब सिर्फ़ IndicationNodeFactory इंस्टेंस के साथ काम करते हैं. ये इंस्टेंस, LocalIndication का इस्तेमाल करके उपलब्ध कराए जाते हैं. Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल करने पर, यह बदलाव लागू होगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर इसका कोई असर नहीं पड़ता. अगर LocalIndication को इंडिकेशन लागू करने का ऐसा तरीका दिया जा रहा है जिसे अब इस्तेमाल नहीं किया जा सकता और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान ऐप्लिकेशन क्रैश हो जाएगा. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन, रीकंपोज़िशन के दौरान स्किप कर पाएंगे. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए, ComposeFoundationFlags.isNonComposedClickableEnabled=false का इस्तेमाल किया जा सकता है. इससे, माइग्रेशन के दौरान ब्लॉक किए बिना Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, IndicationNodeFactory का इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactory इंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333)

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

  • AnnotatedString के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गया (I1d066, b/383269496, b/139326648)
  • कंपोज़ की सुविधा को ViewTreeObserver.OnScrollChanged को ट्रिगर करने की अनुमति दें. इस सुविधा को isOnScrollChangedCallbackEnabled फ़्लैग के तहत लॉन्च किया गया है. हमने DelegatableNode dispatchOnScrollChanged का एक एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286)
  • Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद का वर्शन इस्तेमाल करना ज़रूरी है (Idb6b5)
  • TextFieldState के लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन में याद रखा गया है. इसके बजाय, rememberTextFieldState का इस्तेमाल करें. (I53d74)
  • FocusRequester के लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन (I6bf91) में याद रखा गया है
  • BringIntoViewRequester के लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन में याद रखा गया है. (Ibfba6)
  • ग्रिड और सूचियों में schedulePrefetch कॉल के लिए स्कोप जोड़े गए हैं, ताकि साइज़ और इंडेक्स की जानकारी देने की LazyListPrefetchState सुविधाओं के साथ अलाइन किया जा सके. (Iad80c)
  • बदलाव: clickable, combinedClickable, selectable, toggleable, और triStateToggleable के इंडिकेशन पैरामीटर के बिना ओवरलोड किए गए फ़ंक्शन, अब सिर्फ़ IndicationNodeFactory इंस्टेंस के साथ काम करते हैं. ये इंस्टेंस, LocalIndication का इस्तेमाल करके उपलब्ध कराए जाते हैं. Compose के इस वर्शन का इस्तेमाल करके, इन मॉडिफ़ायर के इस्तेमाल को फिर से कंपाइल करने पर, यह बदलाव लागू होगा. बाइनरी / ट्रांज़िटिव डिपेंडेंसी पर इसका कोई असर नहीं पड़ता. अगर LocalIndication को इंडिकेशन लागू करने का ऐसा तरीका दिया जा रहा है जिसे अब इस्तेमाल नहीं किया जा सकता और इन एपीआई का इस्तेमाल किया जा रहा है, तो रनटाइम के दौरान ऐप्लिकेशन क्रैश हो जाएगा. परफ़ॉर्मेंस को बेहतर बनाने के लिए, इस व्यवहार में बदलाव करना ज़रूरी है. इससे इन मॉडिफ़ायर का इस्तेमाल करने वाले कंपोज़ेबल फ़ंक्शन, रीकंपोज़िशन के दौरान स्किप कर पाएंगे. इस बदलाव से कुछ समय के लिए ऑप्ट-आउट करने के लिए, ComposeFoundationFlags.isNonComposedClickableEnabled=false का इस्तेमाल किया जा सकता है. इससे, माइग्रेशन के दौरान ब्लॉक किए बिना Compose को अपग्रेड किया जा सकेगा. इस फ़्लैग को एक स्टेबल रिलीज़ के बाद हटा दिया जाएगा. इस समस्या को हल करने के लिए, इंडिकेशन के ऐसे सभी तरीकों को माइग्रेट करें जिनके इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, IndicationNodeFactory का इस्तेमाल करें. एक्सप्लिसिट इंडिकेशन पैरामीटर के साथ ओवरलोड का भी इस्तेमाल किया जा सकता है. ये ओवरलोड, इंडिकेशन के नॉन-IndicationNodeFactory इंस्टेंस के साथ काम करते रहेंगे. हालांकि, परफ़ॉर्मेंस की वजहों से ऐसा करने का सुझाव नहीं दिया जाता. (I6bcdc, b/316914333)
  • नेस्ट किए गए प्रीफ़ेच के अपने-आप होने वाले व्यवहार को कंट्रोल करने के लिए फ़्लैग जोड़ा गया: isAutomaticNestedPrefetchEnabled (I8d448)
  • LazyGridState और rememberLazyGridState के लिए एक ओवरलोड फ़ंक्शन बनाएं, जो LazyLayoutCacheWindow लेता है. (I51151)
  • इससे विंडो इंसर्ट के लिए रूलर जोड़े जाते हैं. DerivedRuler को जोड़ता है, ताकि किसी दूसरे रूलर से रूलर की गिनती की जा सके. डेंसिटी लागू करने के लिए, PlacmentScope में बदलाव करता है. (I658bc, b/359260964)
  • आसानी से खाली WindowInsets बनाने के लिए, शून्य आर्ग्युमेंट वाला WindowInsets() फ़ैक्ट्री फ़ंक्शन जोड़ा गया. (I65f62, b/395311689)
  • खाली PaddingValues के लिए PaddingValues.Zero जोड़ा गया. (If193e, b/386255688)

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

  • state ओवरलोड ऑफ़ BasicTextField की वजह से, कर्सर का साइज़ बदलने पर भी वह दिखता रहेगा. (I0eb41, b/406187741)
  • शुरुआती स्थिति के बारे में बताने के लिए, LazyListPrefetchStrategy और LazyGridPrefetchStrategy में onVisibleItemsUpdated एपीआई अपडेट किए गए. (If2cfa)

वर्शन 1.8

वर्शन 1.8.3

18 जून, 2025

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

वर्शन 1.8.2

20 मई, 2025

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

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

  • हमने एक ऐसा फ़िक्स लागू किया है जिससे फ़ोकस सर्च के लिए लोड किए जाने वाले आइटम की संख्या की गिनती नहीं की जाएगी. इससे शून्य से भाग देने की समस्या नहीं होगी. LazyLayoutBeyondBoundsState का इस्तेमाल करने वाले सभी लेआउट पर जांच लागू की गई है. (8e6dc8)

वर्शन 1.8.1

7 मई, 2025

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

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

  • BasicText और TextAutoSize में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, TextOverflow.Ellipsize का इस्तेमाल करने पर टेक्स्ट, ज़रूरत से ज़्यादा छोटा हो जाता था. (I1e1d8, b/396582066)
  • BasicTextField में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, TextFieldDecorator के innerTextField को कॉल न करने पर, ऐप्लिकेशन क्रैश हो जाता था. (I2638c), b/308398612
  • TextField में मौजूद उस बग को ठीक किया गया है जिसकी वजह से, TextFieldState इंस्टेंस बदलने पर टेक्स्ट टूलबार और सिलेक्शन हैंडल पूरी तरह से गायब हो जाते थे. (I8068a), b/390477786
  • BasicText में मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, कम से कम चौड़ाई की सीमा बदलने पर, टेक्स्ट की जगह अपडेट नहीं होती थी. ऐसा तब होता था, जब textAlign को डिफ़ॉल्ट वैल्यू के अलावा किसी दूसरी वैल्यू पर सेट किया जाता था. (I77a96), b/406305552

वर्शन 1.8.0

23 अप्रैल, 2025

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

वर्शन 1.8.0-rc03

9 अप्रैल, 2025

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

वर्शन 1.8.0-rc02

26 मार्च, 2025

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

वर्शन 1.8.0-rc01

12 मार्च, 2025

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

वर्शन 1.8.0-beta03

26 फ़रवरी, 2025

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

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

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

वर्शन 1.8.0-beta02

12 फ़रवरी, 2025

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

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

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

वर्शन 1.8.0-beta01

29 जनवरी, 2025

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

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

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

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

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

वर्शन 1.8.0-alpha08

15 जनवरी, 2025

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.8.0-alpha07

11 दिसंबर, 2024

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.8.0-alpha06

13 नवंबर, 2024

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

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

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

वर्शन 1.8.0-alpha05

30 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

वर्शन 1.8.0-alpha04

16 अक्टूबर, 2024

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

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

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

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

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

वर्शन 1.8.0-alpha03

2 अक्टूबर, 2024

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

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

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

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

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

वर्शन 1.8.0-alpha02

18 सितंबर, 2024

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

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

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

वर्शन 1.8.0-alpha01

4 सितंबर, 2024

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

वर्शन 1.7

वर्शन 1.7.8

12 फ़रवरी, 2025

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

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

  • चिपकाए गए टेक्स्ट के किसी हिस्से को बदलते समय, इनपुट ट्रांसफ़ॉर्मेशन के साथ BasicTextField में क्रैश होने की समस्या ठीक की गई. (I73702)

वर्शन 1.7.7

29 जनवरी, 2025

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

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

  • लिंक एनोटेशन के साथ IndexOutOfBound के क्रैश होने की समस्या ठीक की गई. (Ic96d2)
  • लिंक के साथ कुछ खास मामलों में, बार-बार रेंडर होने की समस्या को ठीक किया गया है. (I04a03)

ऐसी गड़बड़ियां जिनके बारे में पहले से पता है

  • एक बग का पता चला है. इससे Android API लेवल 35 पर, कुछ मामलों में टेक्स्ट अपने-आप रैप हो सकता है. इसे 1.7 में ठीक नहीं किया जा सकता. इसलिए, इसे 1.8 में ठीक किया जाएगा. (b/391378120)

वर्शन 1.7.6

11 दिसंबर, 2024

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

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

  • सुलभता सेवाओं को, टेक्स्ट के साथ इनलाइन किए गए कॉन्टेंट के न दिखने की समस्या ठीक की गई.
  • उस समस्या को ठीक किया गया है जिसकी वजह से लेज़ी लिस्ट में दोबारा इस्तेमाल करने पर, AndroidEmbeddedExternalSurface ठीक से रीसेट नहीं होता था और अटक जाता था.

वर्शन 1.7.5

30 अक्टूबर, 2024

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

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

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

वर्शन 1.7.4

16 अक्टूबर, 2024

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

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

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

वर्शन 1.7.3

2 अक्टूबर, 2024

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

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

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

वर्शन 1.7.2

18 सितंबर, 2024

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

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

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

वर्शन 1.7.1

10 सितंबर, 2024

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

वर्शन 1.7.0

4 सितंबर, 2024

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

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

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

वर्शन 1.7.0-rc01

21 अगस्त, 2024

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

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

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

वर्शन 1.7.0-beta07

7 अगस्त, 2024

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

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

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

वर्शन 1.7.0-beta06

24 जुलाई, 2024

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

वर्शन 1.7.0-beta05

10 जुलाई, 2024

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

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

  • SnapFlingBehavior और Pager में Nan वैल्यू को ठीक किया गया.

वर्शन 1.7.0-beta04

26 जून, 2024

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

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

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

वर्शन 1.7.0-beta03

12 जून, 2024

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

वर्शन 1.7.0-beta02

29 मई, 2024

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.7.0-beta01

14 मई, 2024

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

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

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

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

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

वर्शन 1.7.0-alpha08

1 मई, 2024

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.7.0-alpha07

17 अप्रैल, 2024

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.7.0-alpha06

3 अप्रैल, 2024

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

नई सुविधाएं

  • LazyColumn और LazyRow में, आइटम के दिखने और गायब होने के ऐनिमेशन की सुविधा जोड़ी गई. पहले, प्लेसमेंट (फिर से क्रम में लगाना) ऐनिमेशन के लिए सहायता पाने के लिए, Modifier.animateItemPlacement() मॉडिफ़ायर जोड़ा जा सकता था. हमने इस मॉडिफ़ायर को बंद कर दिया है और एक नया मॉडिफ़ायर लॉन्च किया है. यह मॉडिफ़ायर एक्सपेरिमेंट के लिए नहीं है. इसका नाम Modifier.animateItem() है. इसकी मदद से, ऐनिमेशन के तीनों टाइप इस्तेमाल किए जा सकते हैं: दिखना (फ़ेड इन), गायब होना (फ़ेड आउट), और क्रम बदलना. (I2d7f7, b/150812265)
  • LazyColumn/LazyRow के क्लाइंट अब आने वाले मेज़र-पास के लिए, कुंजी के आधार पर इंडेक्स बनाए रखने से ऑप्ट-आउट कर सकते हैं. इसके लिए, उन्हें बिना निलंबित किए गए LazyListState.requestToScroll को कॉल करना होगा. (I98036, b/209652366)
  • स्टाइल की गई स्ट्रिंग के लिए parseAsHtml तरीका जोड़ा गया: इससे एचटीएमएल टैग से मार्क की गई स्ट्रिंग को AnnotatedString में बदला जा सकता है. ध्यान दें कि सभी टैग इस्तेमाल नहीं किए जा सकते. उदाहरण के लिए, फ़िलहाल बुलेट लिस्ट नहीं दिखाई जा सकतीं. (I84d3d)
  • Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (ScrollCaptureCallback) का इस्तेमाल किया गया है. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हो सकता है कि फ़िलहाल यह सभी मामलों में सही तरीके से काम न करे. इस वजह से, फ़िलहाल यह सुविधा डिफ़ॉल्ट रूप से बंद है. ऑप्ट-इन करने के लिए, ComposeFeatureFlag_LongScreenshotsEnabled फ़्लैग को सही पर सेट करें. इस फ़्लैग को 1.7 बीटा से पहले हटा दिया जाएगा. (I2b055, b/329296471)
  • नया GraphicsLayer API लॉन्च किया गया है. इससे 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 के पैरामीटर का क्रम बदला गया. BasicSecureTextField के लिए सही डिफ़ॉल्ट सेटिंग को बनाए रखते हुए, keyboardType और imeAction पैरामीटर हटा दिए गए हैं. इसके बजाय, KeyboardOptions क्लास का इस्तेमाल किया गया है. scrollState पैरामीटर को भी हटा दिया गया है. (Ibbfa9)
  • TextFieldState.text के टाइप को TextFieldCharSequence से बदलकर सिर्फ़ CharSequence कर दिया गया है. इसलिए, हमने TextFieldState.selection: TextRange और TextFieldState.composition: TextRange? को जोड़ा है, ताकि सीधे तौर पर स्टेट ऑब्जेक्ट से मौजूदा सिलेक्शन और कंपोज़िशन वैल्यू पढ़ी जा सकें.
  • TextFieldState.forEachTextValue को हटा दिया गया है. (Idb2a2)
  • ClipboardManager.getClipMetadata और ClipboardManager.hasClip फ़ंक्शन हटा दिए गए हैं. मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए, कृपया clipEntry.getMetadata() का इस्तेमाल करें. यह समझने के लिए कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं, ClipboardManager.getClip का नतीजा भी देखें. अगर यह शून्य है, तो इसका मतलब है कि क्लिपबोर्ड में कोई मौजूदा क्लिप नहीं है. (I50498)
  • ClipboardManager.setClip अब क्लिपबोर्ड को मिटाने के लिए, शून्य वैल्यू स्वीकार करता है. (I7d2e9)
  • ReceiveContentListener को फ़ंक्शन इंटरफ़ेस में बदल दिया जाता है. इसके अलावा, lambda को इनपुट के तौर पर लेने वाले Modifier.receiveContent ओवरलोड को हटा दिया गया है, क्योंकि ReceiveContentListener अब एक फ़ंक्शन इंटरफ़ेस है.
  • Modifier.receiveContent का नाम बदलकर Modifier.contentReceiver कर दिया गया है. (I1e6af)
  • TransferableContent.consumeEach का नाम बदलकर TransferableContent.consume कर दिया गया. (I1e462)
  • rememberTextFieldState को स्टेबल एपीआई में अपग्रेड कर दिया गया है. (I37999)

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

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

वर्शन 1.7.0-alpha05

20 मार्च, 2024

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

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

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

बाहरी योगदान

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

वर्शन 1.7.0-alpha04

6 मार्च, 2024

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

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

  • Android U के बाद वाले वर्शन पर चलने वाले डिवाइसों पर, स्टाइलस से लिखने की सुविधा काम करती है. (I002e4)
  • hintLocales को KeyboardOptions में जोड़ा गया है, ताकि TextFields को खास स्थानीय भाषाओं के साथ IME के बारे में जानकारी दी जा सके. इससे, पसंदीदा भाषा को पहले से सेट किया जा सकेगा. (Id18c2)
  • एक्सपेरिमेंट के तौर पर उपलब्ध BasicTextField2 और BasicSecureTextField के उन ओवरलोड को हटा दिया गया है जो value: String और onValueChange: () -> String पैरामीटर लेते थे. (I568b4)
  • InputTransformation में applySemantics फ़ंक्शन (ज़रूरी नहीं) जोड़ें, ताकि BasicTextField2 के सिमैंटिक पर असर डाला जा सके. (I74a2f, b/170648072)
  • इस सीएल में, हम GetScrollViewportLength सिमैंटिक ऐक्शन जोड़ रहे हैं, ताकि हम कंपोज़ में स्क्रोल किए जा रहे कॉम्पोनेंट के बारे में जानकारी को a11y सिस्टम तक पहुंचा सकें. यह सीएल, स्क्रोल की जा सकने वाली फ़ाउंडेशन लिस्ट में बताई गई प्रॉपर्टी के इस्तेमाल पर भी लागू होता है. (Ic5fa2)
  • BasicTextField2 का नाम बदलकर BasicTextField कर दिया गया है. (Ie5713)
  • FocusRequester.createRefs अब स्थिर हो गया है (I4d92c, b/261436820)
  • DelegatableNode.scrollIntoView() को इसलिए लॉन्च किया गया है, ताकि मॉडिफ़ायर नोड सीधे scrollIntoView अनुरोध कर सकें. (I2b3b7, b/299939840)
  • DelegatableNode.requireView() को इसलिए पेश किया गया है, ताकि मॉडिफ़ायर नोड, कंपोज़िशन लोकल को पढ़े बिना मौजूदा Android View को पा सकें. (I40768)
  • कॉन्टेक्स्ट के हिसाब से लेआउट की जानकारी देने वाली सुविधा को कॉन्टेक्स्ट के हिसाब से फ़्लो रो स्कोप और कॉन्टेक्स्ट के हिसाब से फ़्लो कॉलम स्कोप में शामिल किया गया है. इसमें लाइन इंडेक्स, पोज़िशन, और ज़्यादा से ज़्यादा चौड़ाई और ऊंचाई पर पाबंदियां शामिल हैं, ताकि तय की गई पोज़िशन में बने रहें. ज़्यादा से ज़्यादा चौड़ाई/ऊंचाई से ज़्यादा वाले आइटम, ओवरफ़्लो सेटिंग के आधार पर अगली लाइन में जा सकते हैं या उन्हें हटाया जा सकता है. (Id13f8, b/292114798)

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

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

वर्शन 1.7.0-alpha03

21 फ़रवरी, 2024

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

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

  • DelegatableNode.requireLayoutCoordinates() को Modifier.Node के मौजूदा LayoutCoordinates को पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपको onPlaced को बदलने और निर्देशांकों को खुद किसी प्रॉपर्टी में सेव करने की ज़रूरत नहीं है. (Ia8657)
  • DelegatableNode.currentLayoutCoordinates को Modifier.Node के मौजूदा LayoutCoordinates को पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपको onPlaced को बदलने और निर्देशांकों को खुद किसी प्रॉपर्टी में सेव करने की ज़रूरत नहीं है. (Iaebaa)
  • DraggableAnchors में परफ़ॉर्मेंस ऑप्टिमाइज़ेशन की सुविधा का इस्तेमाल AnchoredDraggable करता है. (I89cff)
  • BasicTextField2 और इससे जुड़े एपीआई को androidx.compose.foundation.text2 पैकेज से androidx.compose.foundation.text में ले जाया गया है. (I9f635)
  • BasicTextField2 अब CodepointTransformation पैरामीटर स्वीकार नहीं करता. इसके लिए, BasicSecureTextField या OutputTransformation का इस्तेमाल करें. (Id34ff)
  • सिर्फ़ दो AnnotatedStrings के एनोटेशन की तुलना करने का तरीका जोड़ा गया. (I32659)
  • पेश है ContextualFlowRow और MaxLines और Overflow के साथ बेहतर FlowRow/Column. हमें यह बताते हुए बेहद खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्ध FlowRow और FlowColumn को बेहतर बनाया गया है. अब इनमें maxLines और ओवरफ़्लो सपोर्ट की सुविधा उपलब्ध है. साथ ही, ContextualFlowRow और ContextualFlowColumn को पहली बार लॉन्च किया गया है. इस अपडेट को परफ़ॉर्मेंस को बेहतर बनाने वाले कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है. इसमें ContextualFlow*, ज़्यादा आइटम के लिए सबसे सही है. यह maxLines कॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल करता है. वहीं, FlowRow और FlowColumn, कम आइटम के लिए सबसे सही है. इनकी संख्या 100 से कम होनी चाहिए. अहम जानकारी: FlowRow या FlowColumn में मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, वहां शुरू करने के दौरान overflow को FlowRowOverflow.Visible या FlowColumnOverflow.Visible पर सेट करें. इन नई सुविधाओं के काम करने के उदाहरण देखने के लिए, ContextualFlowRowSample और FlowRowSample पर जाएं. (Ib9135, b/293577082)

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

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

वर्शन 1.7.0-alpha02

7 फ़रवरी, 2024

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.7.0-alpha01

24 जनवरी, 2024

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

नई सुविधाएं

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

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

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

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

  • BasicTextField अब VisualTransformation पास होने पर, ऑफ़सेट मैपिंग के छोटे से हिस्से की पहले से पुष्टि करेगा. इससे कोडिंग से जुड़ी सामान्य गड़बड़ियों का पता लगाने में मदद मिलती है. इन गड़बड़ियों की वजह से, बाद में मेज़रमेंट या ड्रॉ पास में ठीक न की जा सकने वाली समस्याएं आती हैं. कंपोज़िशन के दौरान गड़बड़ी होने पर, डेवलपर को डेवलपमेंट के दौरान ये गड़बड़ियां दिखने की संभावना ज़्यादा होती है. इससे प्रोडक्शन क्रैश होने से बचने में मदद मिलती है. (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)
  • स्टैगर्ड ग्रिड की शुरुआत में, शून्य साइज़ वाले आइटम की जगह तय की गई है. (785f94)
  • onRelease कॉलबैक को उसी क्रम में कॉल करें जिस क्रम में onForgotten को कॉल किया गया था. (31ce3b)

वर्शन 1.6.0

24 जनवरी, 2024

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

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

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

वर्शन 1.6.0-rc01

10 जनवरी, 2024

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

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

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

वर्शन 1.6.0-beta03

13 दिसंबर, 2023

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

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

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

वर्शन 1.6.0-beta02

29 नवंबर, 2023

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

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

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

वर्शन 1.6.0-beta01

15 नवंबर, 2023

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

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

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

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

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

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

  • Foundation टूलटिप एपीआई अब @ExperimentalFoundationApi (I30b0b) हैं

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.6.0-alpha08

18 अक्टूबर, 2023

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

नई सुविधाएं

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

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

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

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

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

वर्शन 1.6.0-alpha07

4 अक्टूबर, 2023

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

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

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

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

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

वर्शन 1.6.0-alpha06

20 सितंबर, 2023

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 1.6.0-alpha05

6 सितंबर, 2023

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

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

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

वर्शन 1.6.0-alpha04

23 अगस्त, 2023

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

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

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

वर्शन 1.6.0-alpha03

9 अगस्त, 2023

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

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

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

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

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

वर्शन 1.6.0-alpha02

26 जुलाई, 2023

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

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

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

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

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

संस्‍करण 1.5

वर्शन 1.5.4

18 अक्टूबर, 2023

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

वर्शन 1.5.3

4 अक्टूबर, 2023

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

संस्‍करण 1.5.2

27 सितंबर, 2023

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

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

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

संस्‍करण 1.5.1

6 सितंबर, 2023

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

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

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

वर्शन 1.5.0

9 अगस्त, 2023

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

1.4.0 के बाद हुए ज़रूरी बदलाव

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

वर्शन 1.5.0-rc01

26 जुलाई, 2023

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

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

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

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

वर्शन 1.5.0-beta03

28 जून, 2023

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

वर्शन 1.5.0-beta02

7 जून, 2023

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

वर्शन 1.5.0-beta01

24 मई, 2023

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

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

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

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

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

वर्शन 1.5.0-alpha04

10 मई, 2023

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

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

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

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

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

वर्शन 1.5.0-alpha03

19 अप्रैल, 2023

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

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

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

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

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

  • FlowColumn/FlowRow को टेक्स्ट के हिसाब से इनलाइन करें. (Idab37)

वर्शन 1.5.0-alpha02

5 अप्रैल, 2023

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

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

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

वर्शन 1.5.0-alpha01

22 मार्च, 2023

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

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

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

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

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

वर्शन 1.4

वर्शन 1.4.3

3 मई, 2023

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

वर्शन 1.4.2

19 अप्रैल, 2023

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

वर्शन 1.4.1

5 अप्रैल, 2023

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

वर्शन 1.4.0

22 मार्च, 2023

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

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

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

वर्शन 1.4.0-rc01

8 मार्च, 2023

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

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

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

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

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

वर्शन 1.4.0-beta02

22 फ़रवरी, 2023

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

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

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

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

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

वर्शन 1.4.0-beta01

8 फ़रवरी, 2023

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

नई सुविधाएं

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

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

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

बाहरी योगदान

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

वर्शन 1.4.0-alpha05

25 जनवरी, 2023

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.4.0-alpha04

11 जनवरी, 2023

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

नई सुविधाएं

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

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

  • FocusRequesterModifier को FocusRequesterNode के पक्ष में बंद कर दिया गया है (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • AndroidFont कंस्ट्रक्टर के साथ variationSettings अब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)
  • PinnableContainer एपीआई को पेश किया गया है. इसे कंपोज़िशन लोकल के ज़रिए लेज़ी लिस्ट से फैलाया जाता है. इससे मौजूदा आइटम को पिन किया जा सकता है. इसका मतलब है कि स्क्रोल करके व्यू से हटाए जाने पर, ऐसे आइटम को हटाया नहीं जाएगा. उदाहरण के लिए, Modifier.focusable() इस तरीके से, फ़ोकस किए गए मौजूदा आइटम को पिन करेगा. (Ib8881, b/259274257, b/195049010)
  • स्क्रोल किए जा सकने वाले आइटम के bringIntoViewRequesters और फ़ोकस किए जा सकने वाले आइटम के रिस्पॉन्स को फिर से लिखा गया है, ताकि इन कार्रवाइयों की जटिलता को बेहतर तरीके से मॉडल किया जा सके और ज़्यादा से ज़्यादा मुश्किल मामलों को हैंडल किया जा सके. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • बंद किए गए-छिपाए गए फ़ंक्शन के ज़्यादातर रिटर्न टाइप में null वैल्यू हो सकती है (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 को पेश किया गया है. इनकी मदद से, कंपोज़ेबल को Pager के तौर पर दिखाया जा सकता है. पेजर को कंट्रोल करने के लिए PagerState को पेश किया गया है. साथ ही, पेजर की मौजूदा स्थिति के बारे में क्वेरी की जा सकती है. PageSize को पेश किया गया है. इससे Pager के पेज के साइज़ को कंट्रोल किया जा सकता है. इसका इस्तेमाल, Pager जैसे कैरसेल बनाने के लिए किया जा सकता है. हमने PagerSnapDistance को पेश किया है. इससे यह कंट्रोल किया जा सकेगा कि Pager के फ़्लिंग बिहेवियर में स्नैपिंग कैसे काम करेगी. (I01120)
  • SnapFlingBehavior.performFling में ओवरलोड की सुविधा जोड़ी गई है, ताकि यह समझने में मदद मिल सके कि फ़्लिंग कहां रुकेगी. (I569f6)
  • OverscrollEffect#isEnabled को हटा दिया गया है. इस फ़्लैग को याद रखने और सेट करने के बजाय, उन मामलों में ओवरस्क्रोल इफ़ेक्ट को इवेंट न भेजें जहां आपको ओवरस्क्रोल नहीं दिखाना है. उदाहरण के लिए, अगर ScrollableState#canScrollForward/backward दोनों 'गलत है' वैल्यू दिखाते हैं. (I1a4b0, b/255554340, b/255557085)
  • यह क्वेरी करने के लिए ScrollableState#canScrollForward और ScrollableState#canScrollBackward जोड़े गए हैं कि क्या ScrollableState में किसी भी दिशा में स्क्रोल करने की सुविधा है. यह इस बात पर निर्भर करता है कि वह अपनी रेंज के कम से कम / ज़्यादा से ज़्यादा पर है या नहीं. यह डिफ़ॉल्ट रूप से, 'सही है' के तौर पर सेट होती है, ताकि ScrollableState के मौजूदा वर्शन के साथ काम कर सके. उपयोगकर्ता इसका इस्तेमाल करके, यह दिखा सकते हैं कि अब भी स्क्रोल करने की जगह है. इसका इस्तेमाल, उन ScrollableStates को डेल्टा भेजने से बचने के लिए भी किया जा सकता है जिनमें किसी खास दिशा में स्क्रोल करने की जगह नहीं है. इससे गैर-ज़रूरी काम को कम किया जा सकता है. (Idf1a0, b/255557085)
  • स्क्रोल करने की जानकारी के लिए, Modifier API जोड़ा गया. (I2ba9d, b/203141462)
  • इस कुकी का इस्तेमाल Clickable में किया जाता है. इससे प्रेस इंटरैक्शन को सही तरीके से डिले किया जा सकता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं.
  • Clickables के अंदर इस्तेमाल किए जाने पर, Clickables के रिपल इफ़ेक्ट को सही तरीके से डिले न करने की समस्या ठीक की गई.Scrollable ViewGroup
  • ड्रॉवर और शीट को अपडेट किया गया है, ताकि अगर जेस्चर स्क्रोल इवेंट बन सकते हैं, तो प्रेस में सही तरीके से देरी हो.
  • snapStepSize में मौजूद अन्य तरीकों के हिसाब से, snapStepSize के नाम को अपडेट किया गया है.SnapLayoutInfoProvider (Ife67c)
  • EmojiCompat को Compose (Ibf6f9, b/139326806) में जोड़ा गया
  • consumedWindowInsets() का नाम बदलकर consumeWindowInsets() और withConsumedWindowInsets() का नाम बदलकर onConsumedWindowInsetsChanged() कर दिया गया है. साथ ही, मॉडिफ़ायर को सार्वजनिक कर दिया गया है. (Ie44e1)

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

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

वर्शन 1.4.0-alpha02

9 नवंबर, 2022

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

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

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

वर्शन 1.4.0-alpha01

24 अक्टूबर, 2022

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

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

  • जेस्चर डिटेक्टर के लिए, एक नया तरीका awaitEachGesture() जोड़ा गया. यह forEachGesture() की तरह काम करता है. हालांकि, जेस्चर पर लूप पूरी तरह से AwaitPointerEventScope के अंदर काम करता है, ताकि इवेंट को दोहराने के दौरान कोई इवेंट न छूटे.
  • forEachGesture() के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, awaitEachGesture() का इस्तेमाल किया जा सकता है. ऐसा इसलिए किया गया है, क्योंकि इससे इवेंट के बीच में होने वाले जेस्चर का पता नहीं चलता. (Iffc3f, b/251260206)
  • ऐनिमेशन की प्रोग्रेस का पता लगाने और ऐनिमेशन पूरा होने के बाद IME कहां होगा, यह जानने के लिए WindowInsets.imeAnimationSource और WindowInsets.imeAnimationTarget जोड़ा गया. (I356f1, b/217770337)

वर्शन 1.3

वर्शन 1.3.1

9 नवंबर, 2022

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

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

  • BeyondBoundsLayout में परफ़ॉर्मेंस से जुड़ी समस्या को ठीक किया गया (aosp/2255266)
  • ContentInViewModifier लेआउट के कोऑर्डिनेट तब तक नहीं पढ़ेगा, जब तक इसे अटैच नहीं किया जाता (aosp/2241316)

वर्शन 1.3.0

24 अक्टूबर, 2022

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

1.2.0 के बाद हुए ज़रूरी बदलाव

  • LazyVerticalStaggeredGrid और LazyHorizontalStaggeredGrid के एक्सपेरिमेंटल वर्शन लॉन्च किए गए.
  • SnapFlingBehavior, rememberSnapFlingBehavior, और इनसे जुड़े अन्य एपीआई को एक्सपेरिमेंट के तौर पर जोड़ा गया था.
  • Modifier.clickable, Modifier.toggleable, और Modifier.selectable पर अब कीबोर्ड या रिमोट कंट्रोल के डी-पैड से क्लिक करने पर, रिपल इफ़ेक्ट दिखता है.

वर्शन 1.3.0-rc01

5 अक्टूबर, 2022

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

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

  • lowVelocityAnimationSpec को जोड़ा गया है. इसका इस्तेमाल अप्रोच स्टेप में तब किया जाता है, जब फ़्लिंग की वेलोसिटी कम होने के लिए काफ़ी नहीं होती. (Iaeb27)
  • टेक्स्ट में अपने-आप हाइफ़न लगने की सुविधा के लिए, एक्सपेरिमेंट के तौर पर नया API Hyphens जोड़ा गया (Iaa869)

वर्शन 1.3.0-beta03

21 सितंबर, 2022

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

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

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

वर्शन 1.3.0-beta02

7 सितंबर, 2022

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

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

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

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

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

वर्शन 1.3.0-beta01

24 अगस्त, 2022

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

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

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

वर्शन 1.3.0-alpha03

10 अगस्त, 2022

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

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

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

वर्शन 1.3.0-alpha02

27 जुलाई, 2022

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

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

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

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

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

वर्शन 1.3.0-alpha01

29 जून, 2022

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

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

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

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

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

वर्शन 1.2

वर्शन 1.2.1

10 अगस्त, 2022

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

वर्शन 1.2.0

27 जुलाई, 2022

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

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

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

वर्शन 1.2.0-rc03

29 जून, 2022

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

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

वर्शन 1.2.0-rc02

22 जून, 2022

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

वर्शन 1.2.0-rc01

15 जून, 2022

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

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

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

वर्शन 1.2.0-beta03

1 जून, 2022

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

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

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

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

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

वर्शन 1.2.0-beta02

18 मई, 2022

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

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

वर्शन 1.2.0-beta01

11 मई, 2022

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

नई सुविधाएं

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

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

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

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.2.0-alpha08

20 अप्रैल, 2022

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

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

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

वर्शन 1.2.0-alpha07

6 अप्रैल, 2022

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

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

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

वर्शन 1.2.0-alpha06

23 मार्च, 2022

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

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

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

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

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

वर्शन 1.2.0-alpha05

9 मार्च, 2022

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

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

  • LazyVerticalGrid और LazyHorizontalGrid अब स्थिर हो गए हैं. (I307c0)
  • LazyGridItemInfo.Unknown को अलग-अलग LazyGridItemInfo.UnknownRow और LazyGridItemInfo.UnknownColumn (I56d51) से बदल दिया गया है
  • LazyVerticalGrid/LazyHorizontalGrid और इससे जुड़ी सभी एपीआई को .grid सब-पैकेज में ले जाया गया है. कृपया androidx.compose.foundation.lazy से इंपोर्ट किए गए डेटा को androidx.compose.foundation.lazy.grid पर अपडेट करें. (I2d446, b/219942574)
  • टेक्स्ट: includeFontPadding अब डिफ़ॉल्ट रूप से बंद है. includeFontPadding=false की वजह से होने वाली क्लिपिंग की समस्याओं को ठीक किया जाता है. साथ ही, लंबी स्क्रिप्ट के लिए क्लिपिंग नहीं होनी चाहिए. (I31c84, b/171394808)
  • Measured इंटरफ़ेस अब 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 से डाइमेंशन शामिल करने की अनुमति देने के लिए, WindowInsets.only() तरीका जोड़ें. (I14c94, b/217768486)
  • ComposableTarget, ComposableTargetMarker, और ComposableOpenTarget जोड़े गए हैं. इनकी मदद से, कंपाइल टाइम रिपोर्टिंग की जा सकती है. इससे यह पता चलता है कि किसी ऐप्लिकेशन को टारगेट करने वाले कंपोज़ेबल फ़ंक्शन को कब कॉल किया गया था.

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

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

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

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

वर्शन 1.2.0-alpha03

9 फ़रवरी, 2022

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

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

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

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

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

वर्शन 1.2.0-alpha02

26 जनवरी, 2022

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

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

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

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

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

वर्शन 1.2.0-alpha01

12 जनवरी, 2022

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

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

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

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

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

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

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

वर्शन 1.1

वर्शन 1.1.1

23 फ़रवरी, 2022

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

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

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

वर्शन 1.1.0

9 फ़रवरी, 2022

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

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

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

वर्शन 1.1.0-rc03

26 जनवरी, 2022

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

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

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

वर्शन 1.1.0-rc01

15 दिसंबर, 2021

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

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

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

वर्शन 1.1.0-beta04

1 दिसंबर, 2021

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

नई सुविधाएं

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

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

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

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

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

वर्शन 1.1.0-beta03

17 नवंबर, 2021

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

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

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

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

वर्शन 1.1.0-beta02

3 नवंबर, 2021

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

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

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

बाहरी योगदान

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

वर्शन 1.1.0-beta01

27 अक्टूबर, 2021

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

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

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

वर्शन 1.1.0-alpha06

13 अक्टूबर, 2021

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

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

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

वर्शन 1.1.0-alpha05

29 सितंबर, 2021

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

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

  • PointerEventChange में, एक्सपेरिमेंट के तौर पर उपलब्ध हिस्टोरिकल पॉइंटर जोड़े गए. (Ic1fd8, b/197553056, b/199921305)

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

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

वर्शन 1.1.0-alpha04

15 सितंबर, 2021

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

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

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

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

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

वर्शन 1.1.0-alpha03

1 सितंबर, 2021

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

नई सुविधाएं

  • Compose 1.1.0-alpha03 को Kotlin 1.5.30 पर निर्भर रहने के लिए अपडेट किया गया. (I74545)

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

  • स्क्रोल करने पर दिखने वाले ग्लो इफ़ेक्ट को जोड़ा गया है. नया एक्सपेरिमेंटल OverScrollConfiguration API जोड़ा गया है. इससे ओवरस्क्रॉल के विज़ुअल इफ़ेक्ट को कॉन्फ़िगर किया जा सकता है. ओवरस्क्रोल इफ़ेक्ट को बंद करने के लिए, शून्य वैल्यू दें. (I0c304, b/171682480)
  • AwaitPointerEventScope में अब withTimeout() और withTimeoutOrNull() फ़ंक्शन उपलब्ध हैं (I507f0, b/179239764, b/182397793)
  • क्लिप किए गए बाउंड्री पाने के लिए, टेस्ट मेथड जोड़ा गया. (I6b28e)
  • ViewConfiguration में, कम से कम टच टारगेट का साइज़ जोड़ा गया है. इसका इस्तेमाल सिमैंटिक्स और पॉइंटर इनपुट में किया जाता है, ताकि ऐक्सेसिबिलिटी को बेहतर बनाया जा सके. (Ie861c)

वर्शन 1.1.0-alpha02

18 अगस्त, 2021

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

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

  • Modifier.size और requiredSize के लिए DpSize वर्शन जोड़े गए (I3fc7e, b/194219828)

वर्शन 1.1.0-alpha01

4 अगस्त, 2021

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

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

  • DrawScope#drawImage तरीके को अपडेट किया गया है. यह सोर्स और डेस्टिनेशन रेक्ट का इस्तेमाल करता है, ताकि फ़िल्टर क्वालिटी के वैकल्पिक पैरामीटर का इस्तेमाल किया जा सके. यह पिक्सल आर्ट के लिए फ़ायदेमंद है. पिक्सल आर्ट को पिक्सल के आधार पर बड़ा करने पर, उसे पिक्सलेट किया जाता है. BitmapPainter और Image कंपोज़ेबल को अपडेट किया गया है, ताकि वे FilterQuality पैरामीटर का इस्तेमाल कर सकें. हालांकि, यह पैरामीटर इस्तेमाल करना ज़रूरी नहीं है (Ie4fb0, b/180311607)
  • अब बैक बटन दबाने पर, TextField में चुना गया टेक्स्ट हट जाता है. यह Android EditText के जैसा ही है. (I3ca16, b/174173645)
  • कर्सर हैंडल जोड़ें. (I07a82, b/173016579)

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

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

बाहरी योगदान

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

वर्शन 1.0

वर्शन 1.0.5

3 नवंबर, 2021

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

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

  • derivedStateOf इंस्टेंस को ट्रैक करने के दौरान क्रैश होने की समस्या ठीक की गई. (aosp/1792247)

वर्शन 1.0.4

13 अक्टूबर, 2021

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

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

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

वर्शन 1.0.3

29 सितंबर, 2021

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

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

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

वर्शन 1.0.2

1 सितंबर, 2021

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

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

वर्शन 1.0.1

4 अगस्त, 2021

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

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

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

वर्शन 1.0.0

28 जुलाई, 2021

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

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

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

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

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

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

    इस समस्या को ठीक करने के लिए, अपनी build.gradle फ़ाइल में minSdkVersion को कुछ समय के लिए 24 या उससे ज़्यादा पर सेट करें. इस समस्या को Android Studio Bumblebee और AGP 7.1 के अगले वर्शन में ठीक कर दिया जाएगा. (b/194289155)

वर्शन 1.0.0-rc02

14 जुलाई, 2021

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

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

वर्शन 1.0.0-rc01

1 जुलाई, 2021

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

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

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

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

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

वर्शन 1.0.0-beta09

16 जून, 2021

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.0.0-beta08

2 जून, 2021

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

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

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

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

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

वर्शन 1.0.0-beta07

18 मई, 2021

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

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

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

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

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

वर्शन 1.0.0-beta06

5 मई, 2021

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

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

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

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

  • weight(fill = false) वाले कॉलम और लाइन के चाइल्ड एलिमेंट, अब मुख्य ऐक्सिस की पूरी जगह नहीं भर रहे हैं. (Ied94d, b/186012444, b/184355105)

वर्शन 1.0.0-beta05

21 अप्रैल, 2021

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

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

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

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

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

वर्शन 1.0.0-beta04

7 अप्रैल, 2021

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

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

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

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

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

    संक्षेप में, इस उदाहरण पर ध्यान दें:

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

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

वर्शन 1.0.0-beta03

24 मार्च, 2021

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

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

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

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

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

वर्शन 1.0.0-beta02

10 मार्च, 2021

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

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

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

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

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

वर्शन 1.0.0-beta01

24 फ़रवरी, 2021

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

यह Compose 1.0.0 Beta का पहला वर्शन है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Composition कंस्ट्रक्टर अब key पैरामीटर स्वीकार नहीं करता है. साथ ही, इसे बंद कर दिया गया है.
    • currentCompositeKeyHash को कंपोज़ेबल टॉप लेवल फ़ंक्शन के बजाय, कंपोज़ेबल टॉप लेवल प्रॉपर्टी में बदल दिया गया है.
    • CompositionData और CompositionGroup को androidx.compose.runtime.tooling नेमस्पेस में ले जाया गया है
    • ComposableLambda को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
    • ComposableLambdaN को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
    • snapshotFlow फ़ंक्शन को androidx.compose.runtime नेमस्पेस में ले जाया गया है
    • SnapshotMutationPolicy के मर्ज करने के तरीके को अब एक्सपेरिमेंट के तौर पर इस्तेमाल नहीं किया जा सकता
    • @TestOnly टॉप लेवल के clearRoots फ़ंक्शन को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
    • keySourceInfoOf और resetSourceInfo फ़ंक्शन हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
    • Composer.collectKeySourceInformation को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
    • isJoinedKey, joinedKeyLeft, और joinedKeyRight तरीके हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
    • कई टॉप लेवल एपीआई को अलग-अलग फ़ाइलों में ले जाया गया है और उन्हें फिर से व्यवस्थित किया गया है. Kotlin के फ़ाइल क्लास सिमैंटिक की वजह से, इससे बाइनरी कंपैटिबिलिटी पर असर पड़ेगा, लेकिन सोर्स कंपैटिबिलिटी पर नहीं. इसलिए, ज़्यादातर उपयोगकर्ताओं को इससे कोई समस्या नहीं होनी चाहिए.
    • (I99b7d, b/177245490)
  • Modifier.scrollable में बदलाव किया गया है. अब यह ScrollableController क्लास के बजाय, 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)
  • डिस्ट्रक्चरिंग और copy() तरीकों को उन क्लास से हटा दिया गया है जहां इनका इस्तेमाल कभी-कभार ही किया जाता था. (I26702, b/178659281)
  • LazyColumn/LazyRow के लिए कस्टम कुंजियों का इस्तेमाल करने की सुविधा जोड़ी गई. इससे हमें आइटम के क्रम को बेहतर तरीके से फिर से व्यवस्थित करने में मदद मिलती है. इसलिए, remember {} ब्लॉक में सेव की गई स्थिति, आइटम के साथ तब भी बनी रहेगी, जब आइटम को फिर से क्रम में लगाया जाएगा या उसे बीच से हटा दिया जाएगा.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Indication#createInstance को @Composable के तौर पर बदला गया है. साथ ही, LocalIndication को () -> Indication के बजाय, Indication के तौर पर बदला गया है. (I5eeea, b/157150564)

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

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

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

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

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

  • toIntPx() का नाम बदलकर roundToPx() कर दिया गया है. (I9b7e4, b/173502290)

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

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

  • Ambients का नाम बदलकर, Ambient -> CompositionLocal के नाम के मुताबिक कर दिया गया है. पहले, ऐंबिएंट का नाम AmbientFoo होता था. अब कंपोज़िशन लोकल का नाम LocalFoo है. (I2d55d)

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

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

  • ऐक्सेसिबिलिटी के लिए पासवर्ड के सिमैंटिक जोड़े गए (I231ce)

  • ऐक्सेसिबिलिटी के लिए, ProgressBarRangeInfo.Indeterminate जोड़ा गया है, ताकि अनिश्चित प्रोग्रेस बार को मार्क किया जा सके (I6fe05)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.0.0-alpha11

28 जनवरी, 2021

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

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

  • स्क्रोलबाय को बंद करें, scrollTo को हटाएं

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

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

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

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

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

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

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

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

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

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

  • AbsoluteArrangement को हटा दिया गया है. (Iffa96, b/177641870)

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

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

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

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

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

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

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

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

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

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

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

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

    RememberObserver, onAbandoned को जोड़ता है. इसे तब कॉल किया जाता है, जब remember को पास किए गए कॉलबैक से RememberObserver इंस्टेंस वापस आ जाता है, लेकिन कंपोज़िशन की स्थिति में इसे याद नहीं रखा जाता. इसलिए, इसे कभी भी onRemembered कॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कंपोज़िशन को पूरा होने से पहले ही खत्म कर देता है या कंपोज़िशन को इसलिए खारिज कर दिया जाता है, क्योंकि जिस स्थिति के लिए कंपोज़िशन बनाई जा रही थी वह अब मौजूदा नहीं है या अब उसकी ज़रूरत नहीं है. अगर ऊपर दिए गए सिंगल रेफ़रंस वाले सुझाव के बाद RememberObserver का इंस्टेंस, किसी बाहरी संसाधन को ट्रैक कर रहा है, तो onForgotten और onAbandoned, दोनों से पता चलता है कि अब संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट, onRemembered में शुरू किए गए काम या असाइन किए गए संसाधनों को ट्रैक कर रहा है, तो onAbandoned को अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकि अगर onRemembered को कॉल किया जाता है, तो onAbandoned को कॉल नहीं किया जाएगा. (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)
  • foundation Strings.kt में टॉगल जोड़ें (I4a5b7, b/172366489)
  • nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बना दिया गया. equals फ़ंक्शन में nativeClass के अपडेट किए गए इस्तेमाल, ताकि इसके बजाय 'is MyClass' का इस्तेमाल किया जा सके. (I4f734)
  • FlowRow और FlowColumn को बंद कर दिया गया है. इसके बजाय, कृपया कस्टम लेआउट का इस्तेमाल करें. (I09027)
  • Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
  • SelectionRegistrar.notifySelectableChange को पेश किया गया है. इससे SelectionManager को Selectable अपडेट की सूचना दी जा सकेगी. (I6ff30, b/173215242)
  • fun Dp.isFinite() को val Dp.isFinite (I50e00) में बदला गया
  • Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
  • Unspecified कॉन्सटेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse जोड़े गए हैं. (I93f7b, b/174310811)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.0.0-alpha08

2 दिसंबर, 2020

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

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

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

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

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

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

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

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

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

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

  • DrawModifier API को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि इसमें टाइपएलियास/सहायता करने वाले तरीके शामिल किए जा सकें. इससे, पुराने एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद मिलेगी. (Id6044, b/173834241)
  • Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है साथ ही, एपीआई काउंसिल के सुझाव के मुताबिक, इससे जुड़ी क्लास को भी GraphicsLayer में अपडेट कर दिया गया है. (I0bd29, b/173834241)
  • <T> को SubcomposeLayout के एलान से हटा दिया गया है. अब इसका इस्तेमाल, टाइप तय किए बिना किया जा सकता है. (Ib60c8)
  • PointerInputData के अपटाइम और पोजीशन फ़ील्ड को नॉन-नलेबल बनाया गया. (Id468a)
  • MaterialTheme अब चुनने के हैंडल और चुनने के बैकग्राउंड के लिए सही रंग सेट करता है. नॉन-मटीरियल ऐप्लिकेशन, AmbientTextSelectionColors का इस्तेमाल करके, चुने गए टेक्स्ट के रंगों को अपनी पसंद के मुताबिक बना सकते हैं. (I1e6f4, b/139320372, b/139320907)
  • Box के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
  • offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया है. अब ये State के बजाय लैम्डा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
  • WindowManager.isWindowFocused को जोड़ा गया है. इससे यह पता चलता है कि होस्ट विंडो फ़ोकस में है या नहीं. साथ ही, WindowFocusObserver को जोड़ा गया है. यह onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
  • TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
  • TextFieldValue API अपडेट किया गया
    • TextFieldValue.composition को रीड ओनली बनाया गया
    • अमान्य सिलेक्शन रेंज (I4a675, b/172239032) के लिए, अपवाद हटाया गया
  • Ambient सफ़िक्स वाले, बंद किए गए ऐंबिएंट के नाम बदले गए हैं. साथ ही, उन्हें ऐंबिएंट से शुरू होने वाली नई प्रॉपर्टी से बदल दिया गया है. इसके लिए, अन्य ऐंबिएंट और Compose API के दिशा-निर्देशों का पालन किया गया है. (I33440)
  • Android Typeface रैपर जोड़ा गया. typeface फ़ंक्शन के ज़रिए, Android टाइपफ़ेस लोड किया जा सकता है. जैसे, typeface(Typeface.DEFAULT). 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 (I797e2, b/166586426) के स्कोप में Modifier.fillParentMaxSize[Width|Height] में फ़्रैक्शन का इस्तेमाल करने की सुविधा देते हैं
  • KeyboardOptions.toImeOptions को सार्वजनिक एपीआई से हटाया गया. (Ic2e45)
  • AmbientTextStyle, ProvideTextStyle, और AmbientContentColor अब काम नहीं करते हैं. इसके बजाय, Material लाइब्रेरी में उपलब्ध नए वर्शन का इस्तेमाल करें. नॉन-मटीरियल ऐप्लिकेशन के लिए, आपको अपने हिसाब से डिज़ाइन सिस्टम बनाना चाहिए. इसमें थीम के हिसाब से एंबिएंट स्टाइल होनी चाहिए, ताकि उन्हें अपने कॉम्पोनेंट में इस्तेमाल किया जा सके. (I74acc, b/172067770)
  • foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू का इस्तेमाल न करने वाले सामान्य टेक्स्ट एपीआई के लिए, androidx.compose.foundation.BasicText देखें. (If64cb)
  • TextFields में maxLines जोड़ा गया (Ib2a5b)
  • KeyboardOptions को स्वीकार करने के लिए, TextFields को अपडेट करें (Ida7f3)
  • TextField में इस्तेमाल करने के लिए, KeyboardOptions जोड़े गए (I9ca32)
  • यह टेक्स्ट के लिए, BasicTextField के साथ-साथ BasicText को भी डिज़ाइन-अनओपिनिएटेड एपीआई के तौर पर जोड़ता है. (I28268)
  • ExperimentalLazyDsl एनोटेशन हटा दिया गया है. अब LazyColumn/LazyRow का इस्तेमाल @OptIn को जोड़े बिना किया जा सकता है (Idab7a, b/166584730)
  • BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
  • CoreTextField और BaseTextField, दोनों की जगह BasicTextField को जोड़ा गया है (Id4cea)
  • लेज़ी कॉलम आइटम/लेज़ी रो आइटम (I1d8a8) को हटाने का सुझाव दिया गया है
  • साइज़िंग के लिए, इंट्रिंसिक मेज़रमेंट के लिए इस्तेमाल किए जाने वाले बंद किए गए कंपोज़ेबल हटा दिए गए हैं. (I18537, b/171811496)
  • relativePaddingFrom का नाम बदलकर paddingFrom कर दिया गया है. पैडिंगफ़्रॉमबेसलाइन मॉडिफ़ायर जोड़ा गया है, ताकि लेआउट की सीमाओं से टेक्स्ट बेसलाइन की दूरी तय करने में आसानी हो. (I0440a, b/170633813)
  • aspectRatio मॉडिफ़ायर में matchHeightConstraintsFirst पैरामीटर जोड़ा गया है. इसका इस्तेमाल, चौड़ाई के हिसाब से साइज़ तय करने से पहले, ऊंचाई के हिसाब से साइज़ तय करने के लिए मॉडिफ़ायर तय करने के लिए किया जा सकता है. (Ie7c43, b/155290593)
  • DpConstraints को हटा दिया गया है. (I87884, b/171702471)

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

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

वर्शन 1.0.0-alpha06

28 अक्टूबर, 2020

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

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

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

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

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

वर्शन 1.0.0-alpha05

14 अक्टूबर, 2020

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

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

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

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

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

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

वर्शन 1.0.0-alpha04

1 अक्टूबर, 2020

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

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

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

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

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

वर्शन 1.0.0-alpha03

16 सितंबर, 2020

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

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

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

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

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

वर्शन 1.0.0-alpha02

2 सितंबर, 2020

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

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

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

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

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

    (I0a85b, b/161247083)

वर्शन 1.0.0-alpha01

26 अगस्त, 2020

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

वर्शन 0.1.0-dev

वर्शन 0.1.0-dev17

19 अगस्त, 2020

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

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

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

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

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

वर्शन 0.1.0-dev16

5 अगस्त, 2020

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

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

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

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

  • एपीआई से जुड़ी कई समस्याओं को ठीक किया गया (I077bc)
    1. इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाएं
    2. एपीआई के एक जैसे इंटरफ़ेस के लिए, Offset और IntOffset क्लास को अलाइन किया गया है
    3. Offset API के साथ काम करने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero करें
    4. उपयोगकर्ताओं को अपने Canvas इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है
    5. DrawScope को रिफ़ैक्टर करने के लिए, EmptyCanvas क्लास का स्टब बनाया गया है, ताकि इसे lateinit के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
    6. ClipOp एनम के नाम बदलकर, उन्हें पास्कल केस में कर दिया गया है
    7. FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
    8. StrokeJoin enum के नाम बदलकर, उन्हें पास्कल केस में बदला गया
    9. PointMode enums का नाम बदलकर, पास्कल केस में रखा गया
    10. PaintingStyle enum का नाम बदलकर, Pascal Case कर दिया गया है
    11. PathFillType enum का नाम बदलकर, पास्कल केस में किया गया
    12. StrokeCap enum का नाम बदलकर पास्कल केस किया गया
    13. DrawCache को लागू करने की सुविधा को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
    14. DrawScope को अपडेट किया गया है, ताकि fillPaint और strokePaint इंटरनल पैरामीटर के लिए लेज़ी डेलिगेशन का इस्तेमाल न किया जा सके
    15. इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न करना पड़े
    16. @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
    17. हर पाथ के निर्देश के लिए, @Immutable एनोटेशन वाले PathNode को अपडेट किया गया है
    18. वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए ज़रूरत से ज़्यादा शर्तों की जांच को हटाया जा सके. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही उन्हें हैंडल करता है
    19. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद कर दिया गया है
    20. @Immutable और @Stable API के साथ, ब्रश क्लास और फ़ंक्शन कंस्ट्रक्टर अपडेट किए गए
    21. VertexMode enum को PascalCase में अपडेट किया गया
    22. DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि अगर स्ट्रोक के पैरामीटर बदल गए हैं, तो पेंट पर उन्हें शर्तों के साथ बदला जा सके
    23. डिस्ट्रक्चरिंग एपीआई जोड़ने के लिए, अपडेट किया गया साइज़. UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया है. साथ ही, इस्तेमाल न होने वाले तरीकों को हटा दिया गया है
  • MonotonicFrameAnimationClock जोड़ा गया है. इससे MonotonicFrameClock को AnimationClockObservable के तौर पर इस्तेमाल किया जा सकता है. इससे नई को-रूटीन पर आधारित क्लॉक और अब भी पुराने कॉलबैक पर आधारित क्लॉक का इस्तेमाल करने वाले एपीआई के बीच के अंतर को कम किया जा सकता है.

    ManualAnimationClock के MonotonicFrameClock के बराबर अब ManualFrameClock है. (I111c7, b/161247083)

  • SemanticsNodeInteraction.performPartialGesture को हटा दिया गया है. इसके बजाय, SemanticsNodeInteraction.performGesture का इस्तेमाल करें. (Id9b62)

  • SemanticsNodeInteraction.getBoundsInRoot() का नाम बदलकर SemanticsNodeInteraction.getUnclippedBoundsInRoot() किया गया (Icafdf, b/161336532)

  • दाएं से बाएं की ओर लिखे जाने वाले टेक्स्ट के लिए, एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient को जोड़ा गया है. इसका इस्तेमाल लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)

  • Modifier.plus का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से क्रम का ज़्यादा मज़बूत सिग्नल मिलता है. साथ ही, इसमें Modifier.padding().background() + anotherModifier टाइप करने की अनुमति नहीं है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)

  • isFocused() और isNotFocused() SemanticsMatcher को जोड़ा गया. (I0b760)

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

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

  • OnChildPositioned अब काम नहीं करता. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)

  • AndroidComposeTestRule का नाम बदलकर createAndroidComposeRule कर दिया गया है. (I70aaf)

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

वर्शन 0.1.0-dev15

22 जुलाई, 2020

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

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

डिपेंडेंसी अपडेट

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

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

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

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

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

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

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

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

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

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

  • TextField अपडेट - हॉरिज़ॉन्टल डाइमेंशन में, इसे दिया गया पूरा स्पेस इस्तेमाल करेगा (Ib08df, b/154638552)

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

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

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

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

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

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

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

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

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

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

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

  • ड्रैग करने की सुविधा को मॉडिफ़ायर में ले जाया गया है (Id9b16, b/151959544)

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

  • Checkbox, Switch, और Toggleable में enabled पैरामीटर जोड़ें (I41c16)

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

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

    Image(Painter) एपीआई का नाम बदलकर PaintBox(Painter) कर दिया गया है Created Vector composable that behaves like the Image composable except with a VectorAsset instead of an ImageAsset (I9af9a, b/149030271)

  • स्क्रीन पर दिए गए ImageAsset को दिखाने के साथ-साथ, साइज़/लेआउट को मैनेज करने के लिए, Image कंपोज़ेबल बनाया गया. यह कंपोज़ेबल, किसी भी आर्बिट्ररी पेंटर इंस्टेंस को भी ड्रॉ करने की सुविधा देता है. इसके लिए, यह इंस्टेंस के इंट्रिंसिक साइज़ का ध्यान रखता है. साथ ही, यह दिए गए फ़िक्स्ड साइज़ या कम से कम साइज़ (Ibcc8f) का भी ध्यान रखता है

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

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

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

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

  • स्टैक कॉम्पोनेंट, दाएं से बाएं लिखने की सुविधा के साथ काम करता है (Ic9e00)

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

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

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

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

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

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

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

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

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

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

  • DrawBorder को Border Modifier (Id335a) के पक्ष में बदला गया

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

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

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

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

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

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

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

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

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

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

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

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

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

  • LayoutWidth/Height/Size मॉडिफ़ायर के इस्तेमाल पर रोक लगा दी गई है. इसलिए, उन्हें हटा दिया गया है. (Ib0bc1)

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

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

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

  • LayoutAlign मॉडिफ़ायर के काम न करने वाले वर्शन हटा दिए गए हैं. (I10877)

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

  • Row और Column में, verticalGravity और horizontalGravity पैरामीटर जोड़े गए. (I7dc5a)

  • wrapContentWidth और wrapContentHeight को अपडेट किया गया है, ताकि किसी भी अलाइनमेंट के बजाय वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट का इस्तेमाल किया जा सके. वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट को स्वीकार करने के लिए, ग्रेविटी मॉडिफ़ायर को अपडेट किया गया. कस्टम अलाइनमेंट को लगातार इस्तेमाल करने की सुविधा के लिए, लाइन, कॉलम, और स्टैक को अपडेट किया गया. (Ib0728)

  • Made Alignment को किसी भी वैल्यू के साथ इंस्टैंटिएट किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)

  • EdgeInsets का नाम बदलकर InnerPadding कर दिया गया है. Material Buttons के innerPadding पैरामीटर का नाम बदलकर padding कर दिया गया है. (I66165)

  • alignToSiblings अब Placeable के बजाय Measured को स्वीकार करता है. (I5788d)

  • साइजिंग के लिए मॉडिफ़ायर को इंट्रिंसिक मेज़रमेंट में जोड़ा गया है. साथ ही, इस मकसद को पूरा करने वाले कॉम्पोनेंट को बंद कर दिया गया है. (I8295d)

  • ConstraintLayout के बच्चों के डाइमेंशन को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई (Idb1a5)

  • Wrap और Center कंपोज़ेबल को हटा दिया गया है. (I29e23)

  • लेआउट मॉडिफ़ायर तय करने के लिए, नया एपीआई LayoutModifier2 जोड़ा गया; LayoutModifier (If32ac) को बंद किया गया

  • RowScope और ColumnScope के सदस्यों को अब Row और Column के बाहर से ऐक्सेस किया जा सकता है. (I3a641)

  • कंटेनर अब काम नहीं करता है. इसके बजाय, Box का इस्तेमाल करें. (I675ce, b/151407926)

  • लेआउट की पोज़िशन को ऑफ़सेट करने के लिए, LayoutOffset मॉडिफ़ायर जोड़ा गया (I0b8a3)

  • Compose लेआउट में RTL के लिए शुरुआती सहायता (Ia5519)

  • LayoutAlign को अपडेट किया गया है, ताकि अब यह उपलब्ध जगह को न भरे (I2b14f)

  • मॉडिफ़ायर के पक्ष में, AspectRatio कंपोज़ेबल को हटा दिया गया है. हटाए गए FlexColumn, FlexRow कंपोज़ेबल और Spacing मॉडिफ़ायर (Iec8a7)

  • Row और Column के लिए LayoutInflexible मॉडिफ़ायर हटाया गया (I0d820)

  • TextField के लिए, चुने गए हिस्से में बदलाव करने के लिए, खींचकर चुनने वाले हैंडल लागू करें. (I27032)

  • यह LongPressAndDrag को TextField Selection के लिए लागू करता है. (I17919)

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

  • FocusModifier को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus, Modifier.focusRequester, और Modifier.focusObserver का इस्तेमाल करें. FocusState और FocusDetailedState को अब इस्तेमाल नहीं किया जा सकता. इनके बजाय, FocusState2 का इस्तेमाल करें (I46919, b/160822875, b/160922136)
  • runOnIdleCompose का नाम बदलकर runOnIdle कर दिया गया (I83607)
  • टेस्टिंग के कई एपीआई के नाम बदलकर, उन्हें ज़्यादा आसान बना दिया गया है. findXYZ नाम वाले सभी एपीआई का नाम बदलकर onNodeXYZ कर दिया गया है. सभी doXYZ एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
  • इससे पहले से बंद किए गए Modifier.ripple को हटाया जाता है. अगर आपके ऐप्लिकेशन में MaterialTheme {} सेट है, तो अब क्लिक किए जा सकने वाले एलिमेंट के लिए, डिफ़ॉल्ट इंडिकेटर के तौर पर रिपल का इस्तेमाल किया जाता है. इसलिए, ज़्यादातर मामलों में, सिर्फ़ क्लिक किए जा सकने वाले एलिमेंट का इस्तेमाल करके, रिपल इंडिकेटर को बिना किसी शुल्क के इस्तेमाल किया जा सकता है. अगर आपको रिपल के लिए रंग / साइज़ / बाउंडेड पैरामीटर को पसंद के मुताबिक बनाना है, तो RippleIndication को मैन्युअल तरीके से बनाएं. इसके बाद, इसे इंडिकेशन पैरामीटर के तौर पर clickable को पास करें. (I663b2, b/155375067)
  • साइज़ की जांच करने वाले पुराने एपीआई हटा दिए गए हैं. (Iba0a0)
  • LayoutNode को एक्सपेरिमेंटल एपीआई बनाया गया (I4f2e9)
  • स्क्रोल करने की दिशा लॉक करने की सुविधा का पहला वर्शन, Compose में लागू कर दिया गया है. (I1ce7a, b/150289741)
  • पॉपअप, डायलॉग, और मेन्यू अब कॉन्टेक्स्ट के हिसाब से MaterialTheme (Ia3665, b/156527485) को इनहेरिट कर रहे हैं
  • Layout() फ़ंक्शन के मेज़र ब्लॉक से लेआउट की दिशा वाला पैरामीटर हटाया गया. हालांकि, लेआउट की दिशा को मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए, कॉलबैक के अंदर उपलब्ध कराया जाता है
  • AbsoluteArrangement जोड़ें - इससे Row में मौजूद बच्चों को व्यवस्थित किया जा सकता है. साथ ही, आरटीएल में अपने-आप मिररिंग नहीं होती (I3a1df)
  • @Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. इसे @ComposableContract(tracked=false) से बदलें (Id211e)
  • इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कंस्ट्रक्टर को कॉल किया जाता था, तो कंपोज़ कंपाइलर प्लगिन उसे इंटरसेप्ट कर लेता था. ऐसा (I5205a, b/158123804) की वजह से होता था
  • viewModel() कंपोज़ेबल जोड़ा गया है. इससे, पहले से बनाए गए ViewModel को बनाया या पाया जा सकता है. यह ठीक उसी तरह काम करता है जिस तरह ऐक्टिविटी या फ़्रैगमेंट में काम करता है (I5fdd1)
  • Radius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, कंपैनियन ऑब्जेक्ट बनाने के तरीके हटा दिए गए हैं. साथ ही, डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल किया गया है, ताकि y-ऐक्सिस के साथ रेडियस, x-ऐक्सिस के रेडियस पैरामीटर से मेल खाए.

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

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

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

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

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

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

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

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

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

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

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

  • Layout और LayoutModifier के चाइल्ड को, लेआउट की अलग दिशा के हिसाब से मेज़र किया जा सकता है. (Ibd731)

  • ImagePainter में एक और वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि इमेज ऐसेट (I0ea9e) के किसी सबसेट को ड्रा किया जा सके

  • आइटम हटाते समय AdapterList में क्रैश होने की समस्या ठीक की गई (Ic64b0, b/153195921)

  • हमने activity.setContent { } ब्लॉक में रखे गए पहले लेआउट को मेज़र करने के तरीके में बदलाव किया है. पहले, इसे पूरी गतिविधि वाली स्क्रीन पर दिखाना ज़रूरी था. अब यह ऐसे काम करता है जैसे आपने अपने लेआउट को स्टैक में रखा हो: यह स्क्रीन से छोटा हो सकता है और इसे स्क्रीन के सबसे ऊपर बाईं ओर रखा जाएगा. अगर आपको लेआउट के लिए पुराना तरीका इस्तेमाल करना है, तो Modifier.fillMaxSize() लागू करें. (Ie88a7, b/153453714)

  • ui-text-compose मॉड्यूल का नाम बदलकर ui-text कर दिया गया है. ui-text में अब CoreText और CoreTextField कंपोज़ेबल शामिल हैं (Ib7d47)

  • ui-text मॉड्यूल का नाम बदलकर ui-text-core (I57dec) कर दिया गया है

  • ui-framework/CoreText और CoreTextField कंपोज़ेबल को ui-text-compose के तहत ले जाया गया. आपको अपने प्रोजेक्ट में ui-text-compose शामिल करना पड़ सकता है. (I32042)

  • runOnIdleCompose और runOnUiThread अब ComposeTestRule पर उपलब्ध तरीकों के बजाय, ग्लोबल फ़ंक्शन हैं. (Icbe8f)

  • [बदला जा सकता है]स्टेट प्रॉपर्टी डेलिगेट ऑपरेटर को एक्सटेंशन में ले जाया गया है, ताकि Kotlin 1.4 प्रॉपर्टी डेलिगेट ऑप्टिमाइज़ेशन का इस्तेमाल किया जा सके. by state { ... } या by mutableStateOf(...) का इस्तेमाल जारी रखने के लिए, कॉल करने वालों को इंपोर्ट जोड़ने होंगे. (I5312c)

  • DrawLayerModifier और drawLayer() अब clipToBounds और clipToOutline को डिफ़ॉल्ट रूप से फ़ॉल्स पर सेट करते हैं. (I0eb8b, b/152810850)

  • LayoutResult का नाम बदलकर MeasureResult कर दिया गया है. (Id8c68)

  • अब काम नहीं करने वाला Center कंपोज़ेबल. इसे LayoutSize.Fill + LayoutAlign.Center मॉडिफ़ायर से बदला जाना चाहिए. इसके अलावा, इसे Box या Stack कंपोज़ेबल में से किसी एक से भी बदला जा सकता है. हालांकि, इसके लिए ज़रूरी है कि इन पर सही मॉडिफ़ायर लागू किए गए हों (Idf5e0)

  • LayoutFlexible का नाम बदलकर LayoutWeight कर दिया गया है. भरने के लिए टाइट पैरामीटर का नाम बदला गया. (If4738)

  • DrawVector को सामान्य कंपोज़ेबल फ़ंक्शन से बदलकर, Modifier drawVector() में बदल दिया गया है. यह लेआउट के बैकग्राउंड के तौर पर वेक्टर को ड्रॉ करेगा. (I7b8e0)

  • कंपोज़ किए जा सकने वाले फ़ंक्शन Clip को modifier drawClip() से बदलें. DrawClipToBounds एक ऐसा मॉडिफ़ायर है जिसका इस्तेमाल करना आसान है. इसका इस्तेमाल तब किया जाता है, जब आपको सिर्फ़ रेक्टैंगल शेप के साथ लेयर की सीमाओं को काटना हो. (If28eb)

  • DrawShadow कंपोज़ेबल फ़ंक्शन को drawShadow() मॉडिफ़ायर से बदल दिया गया है. अब LayerModifier के हिस्से के तौर पर शैडो बनाई जाती हैं. (I0317a)

  • androidx.compose.ViewComposer को androidx.ui.node.UiComposer में ले जाया गया है androidx.compose.Emittable को हटा दिया गया है. यह ComponentNode के साथ काम नहीं करता था. androidx.compose.ViewAdapters को हटा दिया गया है. अब इन्हें इस्तेमाल के उदाहरण के तौर पर स्वीकार नहीं किया जाता. Compose.composeInto का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, setContent या setViewContent का इस्तेमाल करें. Compose.disposeComposition को बंद कर दिया गया है. इसके बजाय, setContent से मिले Composition पर dispose तरीके का इस्तेमाल करें. androidx.compose.Compose.subcomposeInto को androidx.ui.core.subcomposeInto में ले जाया गया है ComponentNode#emitInsertAt का नाम बदलकर ComponentNode#insertAt कर दिया गया है ComponentNode#emitRemoveAt का नाम बदलकर ComponentNode#removeAt कर दिया गया है ComponentNode#emitMode का नाम बदलकर ComponentNode#move कर दिया गया है (Idef00)

  • इस्तेमाल से बाहर किया गया रैप कंपोज़ेबल. इसे LayoutAlign मॉडिफ़ायर या Stack कंपोज़ेबल (Ib237f) से बदला जा सकता है

  • लेआउट की दिशा को पैरंट लेआउट नोड से चाइल्ड नोड तक ले जाने की सुविधा जोड़ी गई. लेआउट की दिशा बदलने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)

  • Painter.toModifier का नाम बदलकर Painter.asModifier कर दिया गया है, क्योंकि नए बनाए गए Modifier में ओरिजनल Painter का रेफ़रंस है. इसे Modifier के कई इंस्टेंस के साथ शेयर किया जा सकता है (I7195b)

  • LayoutPadding मॉडिफ़ायर में, दाएं से बाएं की दिशा में लिखने की सुविधा जोड़ी गई (I9e8da)

  • Density और DensityScope को एक ही इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय सिर्फ़ with(density) (I11cb1)

  • ValueHolder क्लास हटा दी गई है. AnimatedValue और AnimatedFloat क्लास को फिर से स्ट्रक्चर किया गया है, ताकि ऐनिमेशन वैल्यू फ़ील्ड को ऐब्स्ट्रैक्ट बनाया जा सके. इससे सबक्लास, वैल्यू अपडेट को देख सकते हैं.

    • AnimatedValue, AnimatedFloat वगैरह के लिए मॉडल क्लास जोड़ी गईं.
    • वैल्यू के बीच ऐनिमेशन के लिए, @Composable एपीआई का नया सेट जोड़ा गया.
    • (I79530)
  • ambients API में बड़े बदलाव. ज़्यादा जानकारी के लिए, लॉग और Ambient<T> दस्तावेज़ देखें (I4c7ee, b/143769776)

  • Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की इंट पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)

  • ConstraintLayout में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फिर से कंपोज़िशन होने पर ऐप्लिकेशन क्रैश हो जाता था. (Ibee5a, b/158164341)

  • WithConstraints ट्रेलिंग लैम्डा एपीआई को बदल दिया गया है. अब इसमें दो पैरामीटर के बजाय, रिसीवर स्कोप है. यह कंस्ट्रेंट और layoutDirection के साथ-साथ, Dp में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी भी उपलब्ध कराता है (I91b9a, b/149979702)

  • LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया है. (Id29f3)

  • Layout और LayoutModifier2 में मौजूद इंट्रिंसिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिंसिक क्वेरी एपीआई को लेआउट की दिशा के बारे में जानकारी देता है. (Id9945)

  • LayoutDirectionAmbient अब काम नहीं करता. भाषा के हिसाब से तय किए गए लेआउट के बारे में जानने के लिए, ConfigurationAmbient (I851b1) पर localeLayoutDirection का इस्तेमाल करें

  • LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)

  • ParentData कंपोज़ेबल अब काम नहीं करता है. आपको या तो ऐसा मॉडिफ़ायर बनाना चाहिए जो ParentDataModifier इंटरफ़ेस लागू करता हो या LayoutTag मॉडिफ़ायर का इस्तेमाल करना चाहिए. ऐसा तब करें, जब आपको लेआउट के बच्चों को टैग करना हो, ताकि उन्हें मेज़र ब्लॉक में पहचाना जा सके. (I51368, b/150953183)

  • OnPositioned और OnChildPositioned कंपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)

  • LayoutPadding में नेगेटिव पैडिंग की अनुमति न दें. नेगेटिव पोज़िशन ऑफ़सेट के लिए, LayoutOffset का इस्तेमाल किया जाना चाहिए. (Ifb5b1)

  • WithConstraints को LayoutDirection पैरामीटर (I6d6f7) मिला

  • ComposeFlags.COMPOSER_PARAM फ़्लैग को true के तौर पर अपडेट किया गया है. इससे कंपोज़ प्लगिन के लिए कोड जनरेट करने की रणनीति बदल जाएगी. ऊपरी तौर पर, इसकी वजह से @Composable फ़ंक्शन, एक अतिरिक्त सिंथेटिक पैरामीटर के साथ जनरेट होते हैं. इस पैरामीटर को बाद के @Composable कॉल में पास किया जाता है, ताकि रनटाइम, एक्ज़ीक्यूशन को सही तरीके से मैनेज कर सके. यह बाइनरी ब्रेकिंग में एक अहम बदलाव है. हालांकि, कंपोज़ के सभी स्वीकृत इस्तेमाल में, सोर्स-लेवल की कंपैटिबिलिटी को बनाए रखना चाहिए. (I7971c)

  • LayoutCoordinates में बदलाव किया गया है, ताकि providedAlignmentLines को Map के बजाय Set बनाया जा सके. साथ ही, LayoutCoordinates में get() ऑपरेटर को लागू किया गया है, ताकि वैल्यू को वापस पाया जा सके. इससे मॉडिफ़ायर के लिए, सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. इसके लिए, उन्हें हर मॉडिफ़ायर के लिए नया कलेक्शन बनाने की ज़रूरत नहीं होती. (I0245a)

  • LayoutCoordinates में अब position प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के लिए, position प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. इसके बजाय, डेवलपर को एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.

    LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, लेआउट के सभी साइज़ में पूर्णांक का इस्तेमाल किया जाना चाहिए, न कि फ़्लोटिंग पॉइंट वैल्यू का. (I9367b)

  • Constraints (I0fd15) के एपीआई इंटरफ़ेस में सुधार

  • TextDirection.Content जोड़ा गया (I48f36)

  • टूलबार मेन्यू को इस तरह से अडजस्ट करें कि कॉपी, कट, और पेस्ट करने के विकल्प ठीक से दिखें. (Id3955)

  • TextField में टेक्स्ट चुनने के लिए, FloatingToolbar जोड़ें. (Ie8b07)

  • TextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)

  • TextDirection का नाम बदलकर ResolvedTextDirection कर दिया गया है (I3ff38)

  • TextField में चुने गए टेक्स्ट के लिए, HapticFeedback जोड़ा गया. (I58050)

  • TextField Selection में कॉपी करने, काटने, और चिपकाने के तरीके जोड़ें. (Idb70b)

  • TestTag और Semantics को मिटा दिया गया है. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)

  • Locale और LocaleList के लिए पैकेज का नाम androidx.ui.text से बदलकर androidx.ui.intl कर दिया गया है (I8132c)

  • एपीआई में बदलाव: AnnotatedString(builder: Builder) का नाम बदलकर annotatedString(builder: Builder) कर दिया गया है. (Ia6377)

  • एपीआई में बदलाव: AnnotatedString.Item का नाम बदलकर AnnotatedString.Range कर दिया गया है. (I2d44d)

  • टेक्स्ट से जुड़ी कार्रवाइयों के लिए टूलबार जोड़ा गया. (I49d53)

  • नया LifecycleOwnerAmbient अब उपलब्ध है. अब Compose यूज़र इंटरफ़ेस (यूआई) के साथ इस्तेमाल की जा रही किसी गतिविधि को androidx.activity.ComponentActivity (या AppCompatActivity) को बढ़ाना चाहिए. android.app.Activity पर setContent अब काम नहीं करता (Idb25a, b/153141084)

  • androidx की नीति के मुताबिक, ui-android-text पैकेज के नाम (androidx.text) को androidx.ui.text.platform से बदल दिया गया है. (I42711)