लिखने की सुविधा वाला यूज़र इंटरफ़ेस (यूआई)

डिवाइस के साथ इंटरैक्ट करने के लिए, Compose यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
07 अक्टूबर, 2026 1.12.1 - 1.13.0-beta01 -

संरचना

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

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

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

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

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

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

Groovy

dependencies {
    implementation "androidx.compose.ui:ui:1.12.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.12.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

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

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

नई समस्या दर्ज करने का तरीका

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

वर्शन 1.13

वर्शन 1.13.0-beta01

07 अक्टूबर, 2026

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

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

  • 1.13 के लिए, सार्वजनिक एपीआई सरफ़ेस से Modifier.interactionBarrier() को पहले जैसा कर दिया गया है. (I47974, b/564575045, b/347038246)
  • PolygonShape एपीआई अपडेट किए गए: CornerRounding को dp() और fraction() फ़ैक्ट्रियों के साथ टॉप-लेवल पर ले जाया गया. साथ ही, transformed() और scaledToFit() एक्सटेंशन को, एक ही जगह पर मौजूद बदलाव किए जा सकने वाले PolygonShape.transform(PolygonShapeTransformScope.() -> Unit) और PolygonShape.copy() से बदल दिया गया. (If5970)
  • onValueChange अब Slider, VerticalSlider, और RangeSlider पर एक ज़रूरी पैरामीटर है. Slider और RangeSlider कॉम्पोनेंट में, पहले से छिपे हुए ऐसे एपीआई हटा दिए गए हैं जो अब काम नहीं करते. इनमें SliderState पर DraggableState का इस्तेमाल और लेगसी Saver ओवरलोड शामिल हैं. isVertical को SliderState से हटा दिया गया. डिप्रेकेट किए गए SliderDefaults.Thumb ओवरलोड को isVertical ओवरलोड के पक्ष में SliderState किया जा रहा है. (I3fdc1)
  • MediaQuery में मौजूद Posture क्लास को WindowPosture से बदल दिया गया है. इससे फ़िज़िकल WindowFold (FoldState और FoldOrientation) दिखते हैं. WindowPosture में isTabletop और isFlat कन्वीनियंस प्रॉपर्टी जोड़ी गई हैं. साथ ही, बुक करने की पोज़िशन को हटा दिया गया है. (Id9e8e)
  • लाइब्रेरी अब Kotlin 2.2 को टारगेट करती हैं और इसके लिए kotlinc 2.2 की ज़रूरत होती है (I82396, b/498369605)
  • BlurStop.fraction में @FloatRange जोड़ा गया, BlurRadiusSpec.radialGradient में डिफ़ॉल्ट fallOffRadius को बदलकर Dp.Unspecified किया गया, Modifier.blur के radius पैरामीटर का नाम बदलकर blurRadiusSpec किया गया, और BlurScope.radius का नाम बदलकर blurRadiusSpec किया गया. (I91dbc, b/556335791)

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

  • मेज़रमेंट के दौरान अलाइनमेंट लाइनें क्वेरी करने पर, IllegalArgumentException ('LayoutNode not found in RectList') को ठीक किया गया. (Icec9e, b/549552303)
  • VectorPainter अब एक से ज़्यादा कंपोज़ेबल में एक ही ImageVector को रेंडर करते समय, इंटरनल ग्राफ़िक रिसोर्स (ImageBitmap) शेयर करेगा. इससे एक जैसे कई टेक्सचर अपलोड करने की ज़रूरत नहीं पड़ती और मेमोरी का इस्तेमाल भी कम होता है. साथ ही, इससे परफ़ॉर्मेंस बेहतर होती है. जैसे, बार-बार इस्तेमाल किए गए आइकॉन का इस्तेमाल करने वाली सूचियों में. इस ऑप्टिमाइज़ेशन को ComposeUiFlags.isVectorDrawCacheSharingEnabled के ज़रिए बंद किया जा सकता है. (I91b41)
  • उस गड़बड़ी को ठीक किया गया है जिसमें AndroidTextPaint.setTextMotion, FontHinting या None linearity पर ट्रांज़िशन करते समय LINEAR_TEXT_FLAG को नहीं हटाता था. (I8c19c)
  • उस समस्या को ठीक किया गया है जिसमें TalkBack की टच एक्सप्लोरेशन सुविधा का फ़ोकस, Compose यूज़र इंटरफ़ेस (यूआई) कॉन्टेंट से कवर किए गए एम्बेड किए गए AndroidView (जैसे कि WebView) पर चला जाता था. (I11372, b/561099702)
  • उस समस्या को ठीक किया गया है जिसमें Paint पर Color.toColorLong() को कॉल करने या Color.Unspecified पर कंपोज़िट किए गए रंग को सेट करने पर, IllegalArgumentException के साथ क्रैश हो सकता था. (Ia365b, b/557521315)
  • androidx.lifecycle:lifecycle-runtime डिपेंडेंसी को 2.10.0 पर अपडेट किया गया. AGP 9.5.0-alpha04 या इसके बाद के वर्शन के साथ बंडल किए गए लाइफ़साइकल रनटाइम लिंट चेक चलाने के लिए, यह वर्शन ज़रूरी है. (I99bfd, b/556807521)
  • 10 से ज़्यादा पैरामीटर वाले कंपोज़ेबल के लिए, टूलिंग में पैरामीटर एक्सट्रैक्शन की समस्या ठीक की गई. (Ib167d)
  • उस समस्या को ठीक किया गया है जिसमें लेआउट के बंद किए गए नोड, लेआउट की कतार से नहीं हटाए जाते थे. इस वजह से, फिर से मेज़र करने के दौरान क्रैश हो जाता था. (Ie64a5)

वर्शन 1.13.0-alpha03

09 सितंबर, 2026

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

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

  • Material 2 के टेक्स्ट फ़ील्ड के ऐसे ओवरलोड अब काम नहीं करते जो value, onValueChange पैरामीटर स्वीकार करते हैं. कृपया उस ओवरलोड पर माइग्रेट करें जो अपनी स्थिति को ऊपर ले जाने के लिए TextFieldState का इस्तेमाल करता है. (I6b841, b/556234973)
  • पहला कंपोज़ रूट बनाने से पहले, WindowInsetsRulers को ग्लोबल लेवल पर बंद करने के लिए, एक सामान्य एपीआई जोड़ें. सिर्फ़ Android के लिए उपलब्ध ComposeView.disableWindowInsetsRulers() को हटाकर, सभी प्लैटफ़ॉर्म के लिए उपलब्ध WindowInsetsRulers.disable() (Iadc8f) को शामिल किया गया
  • यह Compose Foundation में PolygonShape.transformed और PolygonShape.scaledToFit एक्सटेंशन फ़ंक्शन जोड़ता है. इनका इस्तेमाल पॉलीगॉन शेप को बदलने और फ़िट करने के लिए किया जाता है. (I3f327)
  • बदलाव करने वाले व्यक्ति ने LineHeight.Trim.isTrimLastLineBottom() फ़ंक्शन का नाम बदलकर LineHeight.Trim.trimsLastLineBottom और LineHeight.Trim.isTrimFirstLineTop का नाम बदलकर LineHeight.Trim.trimsFirstLineTop कर दिया है (I02211)
  • ComposeUiTestConfig.platform में PlatformTestConfig के तहत boundsAssertionTolerance जोड़ा गया है. इससे टेस्ट, एनवायरमेंट/नियम के लेवल पर डिफ़ॉल्ट बाउंड अज़र्शन टॉलरेंस को कॉन्फ़िगर कर सकते हैं. (I7819d, b/545673912)
  • BasicTextField ओवरलोड, जो value, onValueChange पैरामीटर स्वीकार करते हैं उनका इस्तेमाल बंद कर दिया गया है. कृपया BasicTextField ओवरलोड पर माइग्रेट करें. यह ओवरलोड, अपनी स्थिति को ऊपर ले जाने के लिए TextFieldState का इस्तेमाल करता है. (I636bf, b/552879150)
  • BasicTextField(value, onValueChange) के साथ-साथ, VisualTransformation के इस्तेमाल पर भी रोक लगा दी गई है. ऐसा इसलिए, क्योंकि यह सिर्फ़ TextField के इस फ़्लेवर के ज़रिए दिखता है. मौजूदा ट्रांसफ़ॉर्मेशन को OutputTransformation पर माइग्रेट किया जाना चाहिए. (I636bf, b/552879150)
  • हर लाइन के लिए लाइन की ऊंचाई का हिसाब अलग-अलग लगाने के लिए, LineHeightStyle.Mode.PerLine जोड़ा गया है. इससे एक ही पैराग्राफ़ में अलग-अलग फ़ॉन्ट साइज़ इस्तेमाल किए जा सकते हैं. साथ ही, टेक्स्ट एक-दूसरे पर ओवरलैप नहीं होता. (I41738)
  • LazyListState के ज़रिए LazyLayoutCacheWindow और LazyListPrefetchStrategy उपलब्ध कराने की सुविधा बंद कर दी गई है. इसके बजाय, कंपोज़ेबल फ़ंक्शन को LazyLayoutCacheWindow उपलब्ध कराने की सुविधा दी गई है. (I71f19)
  • प्रोग्रेसिव ब्लर (जैसे, ग्रेडिएंट और कस्टम शेडर) के लिए, Modifier.blur { ... } API जोड़ा गया (Ie6595, b/481685669)
  • टच, फ़ोकस, और सुलभता से जुड़े इंटरैक्शन को ब्लॉक करने के लिए, Modifier.interactionBarrier() जोड़ा गया. (I7c1b7, b/347038246)
  • Android पर डेवलपर को सिस्टम-वाइड क्रॉस-विंडो ब्लर स्टेट के बारे में क्वेरी करने और उसे मॉनिटर करने की अनुमति देने के लिए, WindowInfo पर isCrossWindowBlurEnabled एक्सटेंशन प्रॉपर्टी जोड़ी गई. (If38e2, b/538405295)
  • LocalWindow CompositionLocal को जोड़ा गया है, ताकि मौजूदा android.view.Window ऑब्जेक्ट को वापस पाया जा सके. इससे कंपोज़ेबल के अंदर से विंडो-लेवल के एपीआई को कंट्रोल करना आसान हो जाता है. (I4d4ff, b/221889664)

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

  • यह सुविधा isMinimalistLocalsEnabled डिफ़ॉल्ट रूप से चालू होती है. (Ibb4eb, b/523295932)
  • लाइन की ऊंचाई को ऑप्टिमाइज़ करने की सुविधा डिफ़ॉल्ट रूप से चालू की गई है. इससे कुछ टेक्स्ट मेट्रिक में कुछ पिक्सल का अंतर आ सकता है. जैसे, ऊंचाई या चुनने का पाथ (I5575a)
  • compileSdk के लिए, Compose लाइब्रेरी को 37.1 पर अपडेट किया गया. इसके लिए, Compose का इस्तेमाल करने वाले सभी ऐप्लिकेशन और लाइब्रेरी के लिए, compileSdk को अपडेट करना होगा. (I05b0f)
  • WindowInsetsRulers आईएमई इंसर्ट को, अनुमानित बैक जेस्चर के दौरान ऐनिमेशन के तौर पर मार्क न किए जाने की समस्या को ठीक किया गया है. साथ ही, टेक्स्ट फ़ील्ड के बीच फ़ोकस स्विच करने पर imePadding के अपडेट न होने की समस्या को ठीक किया गया है. (Id4562, b/537386261, b/539686000)
  • उस समस्या को ठीक किया गया है जिसमें स्टैंडर्ड Android ViewGroup में ComposeView होस्ट किए जाने पर, ट्रैकपैड पर पिंच करने के जेस्चर को अनदेखा कर दिया जाता था. (I80f79)

बाहरी योगदान

  • एक ही फ़्रेम में ComposeView को अलग करने और फिर से जोड़ने पर, गतिविधि के लीक होने की समस्या को ठीक किया गया है. उदाहरण के लिए, removeView और addView का इस्तेमाल करके क्रम बदलने पर. (Ib5129, b/547675867)

वर्शन 1.13.0-alpha02

26 अगस्त, 2026

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

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

  • Modifier.background के लिए नई सिमैंटिक्स प्रॉपर्टी BackgroundColor जोड़ी गई (I7eec3, b/518049030)
  • अब मौजूदा प्रिमिटिव ऐरे से Vertices बनाए जा सकते हैं. (Ifaba8, b/496412761)
  • VectorPainter अब एक से ज़्यादा कंपोज़ेबल में एक ही ImageVector को रेंडर करते समय, इंटरनल ग्राफ़िक रिसोर्स (ImageBitmap) शेयर करेगा. इससे एक जैसे कई टेक्सचर अपलोड करने की ज़रूरत नहीं पड़ती और मेमोरी का इस्तेमाल भी कम होता है. साथ ही, इससे परफ़ॉर्मेंस बेहतर होती है. जैसे, बार-बार इस्तेमाल किए गए आइकॉन का इस्तेमाल करने वाली सूचियों में. इस ऑप्टिमाइज़ेशन को ComposeUiFlags.isVectorDrawCacheSharingEnabled के ज़रिए बंद किया जा सकता है. (I35639, b/331283180)
  • requestFocusForChildInLocalBounds हेल्पर जोड़ें (Ib1a48)

वर्शन 1.13.0-alpha01

12 अगस्त, 2026

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

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

  • isVelocityTrackerMinSampleSizeFixEnabled फ़ीचर फ़्लैग जोड़ा गया (Ic9b51, b/533444810, b/533775739, b/523705159)
  • पुरानी हो चुकी ExperimentalVelocityTrackerApi एनोटेशन क्लास को हटा दिया गया है. (I6f9c6, b/483449576)
  • Remove isClearNestedScrollCoroutineScopeFixEnabled flag (Iedfd7, b/506963276)
  • TextFieldState अब टेक्स्ट स्टाइल की जानकारी को सेव और वापस लाता है. AnnotatedString.Annotation.Saver अब सार्वजनिक तौर पर उपलब्ध है, ताकि AnnotatedString.Annotation ऑब्जेक्ट को सेव और वापस लाया जा सके. (I8b533, b/135556699)
  • ComposeTestConfig में TestFailurePolicy और TestFailureHandler को जोड़ा गया है. इससे Compose यूज़र इंटरफ़ेस (यूआई) टेस्ट में, कस्टम फ़ेलियर इवेंट हैंडलर और फ़ेलियर आर्टफ़ैक्ट कॉन्टेक्स्ट का इस्तेमाल किया जा सकेगा. (Ib1a85, b/414802953, b/291106656, b/430644575)
  • SemanticsProperties.alpha जोड़ा गया है. इससे लेआउट नोड की हल की गई कंपोज़िट पैरंट-चाइल्ड ऐल्फ़ा वैल्यू को टेस्टिंग के लिए दिखाया जा सकता है. (Ifddb6, b/524035059)
  • ui-test-junit4 v2 पैकेज में, createComposeRule, createAndroidComposeRule, और createEmptyComposeRule ओवरलोड को बंद कर दिया गया है. ये अलग-अलग पैरामीटर लेते हैं. ComposeUiTestConfig को स्वीकार करने वाले ओवरलोड या पैरामीटर रहित ओवरलोड का इस्तेमाल करें. ये डिफ़ॉल्ट ComposeUiTestConfig का इस्तेमाल करते हैं. ध्यान दें कि डिफ़ॉल्ट ComposeUiTestConfig, हर टेस्ट की शुरुआत में इनपुट मोड को InputMode.Touch पर सेट करता है. इस वजह से, कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट फ़ेल हो सकते हैं. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए, ComposeUiTestConfig(inputMode = InputMode.Keyboard) को साफ़ तौर पर पास करें और इनपुट मोड के लिए, मैन्युअल सेटअप के लॉजिक को हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए, AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false सेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि आप उनके कॉन्फ़िगरेशन में बदलाव करके, उन्हें सीधे तौर पर ठीक करें. (Idfb86, b/504195741)
  • createComposeRule और createAndroidComposeRule को बिना किसी तर्क के कॉल करने पर (जैसे, createComposeRule() या createAndroidComposeRule<MyActivity>()), अब डिफ़ॉल्ट ComposeUiTestConfig का इस्तेमाल किया जाता है.इससे हर टेस्ट की शुरुआत में, इनपुट मोड को InputMode.Touch पर सेट किया जाता है. इससे यह पक्का होता है कि डिवाइस की स्थिति सही है और इनपुट मोड में किए गए पिछले बदलाव, सभी टेस्ट में लागू नहीं होते. हालांकि, इस नए डिफ़ॉल्ट टच मोड की वजह से, कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट फ़ेल हो सकते हैं. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए, ComposeUiTestConfig(inputMode = InputMode.Keyboard) को साफ़ तौर पर पास करें और इनपुट मोड के लिए, मैन्युअल सेटअप के लॉजिक को हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए, AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false सेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि आप उनके कॉन्फ़िगरेशन में बदलाव करके, उन्हें सीधे तौर पर ठीक करें. (Idc4dd, b/267253920, b/504195741)
  • Compose में, ओवरराइड किए जा सकने वाले खाली बेस मेथड को @EmptySuper के साथ एनोटेट किया गया है. इससे यह पता चलता है कि ओवरराइड करने वाले इंप्लिमेंटेशन को सुपर को लागू नहीं करना चाहिए. (Id407b)
  • ExposedDropdownMenu अब ExposedDropdownMenuBoxScope पर एक एक्सटेंशन फ़ंक्शन है, न कि सदस्य. आपको नए इंपोर्ट के साथ अपना कोड अपडेट करना पड़ सकता है. (Ie8a65, b/356452026)
  • DialogProperties में blurBehindRadius, backgroundBlurRadius, scrimAlpha, और windowShape प्रॉपर्टी जोड़ी गई हैं. साथ ही, PopupProperties में blurBehindRadius और scrimAlpha प्रॉपर्टी जोड़ी गई हैं. डेवलपर अब सीधे तौर पर Dialogs और Popups पर, बैकग्राउंड ब्लर, विंडो ब्लर, और स्क्रिम ओपैसिटी को कॉन्फ़िगर कर सकते हैं. windowShape को सेट करने से, क्लिप की गई डायलॉग विंडो के बैकग्राउंड को गोल कोनों में धुंधला करने की अनुमति मिलती है. (I5d437)
  • हटाया गया सुविधा फ़्लैग - अब कंपोज़ बटन, ऐक्सेसिबिलिटी फ़ोकस को सही तरीके से बनाए रखते हैं. साथ ही, टच करके एक्सप्लोर करने की सुविधा चालू होने पर, ये बटन टिमटिमाते नहीं हैं. ऐसा इसलिए, क्योंकि होवर इवेंट को सही तरीके से हैंडल किया गया है. (Ib1c80)
  • अन्य सेटिंग कलेक्शन को मर्ज करने या सेटिंग को इनलाइन तौर पर बदलने के लिए, FontVariation.Settings में मर्ज ओवरलोड जोड़े गए. (I6340c)
  • इसे variationSettings फ़ॉन्ट इंटरफ़ेस पर दिखाया गया है. डिफ़ॉल्ट रूप से, यह नए FontVariation.Empty पर सेट होता है. ऐरे कॉपी के लिए मेमोरी एलोकेशन से बचने के लिए, FontVariation.Settings vararg कंस्ट्रक्टर को asList() का इस्तेमाल करने के लिए ऑप्टिमाइज़ किया गया है. (I9c22f)
  • जब CoroutineScope अटैच या डिटैच न हो, तो रद्द किए गए को सुरक्षित तरीके से वापस करने के लिए, NestedScrollDispatcher.coroutineScope प्रॉपर्टी को अपडेट किया गया. (I9b112, b/535290281)
  • runComposeUiTest, runAndroidComposeUiTest, और AndroidComposeUiTestEnvironment के उन ओवरलोड को बंद कर दिया गया है जो अलग-अलग effectContext, runTestContext, और testTimeout पैरामीटर लेते हैं. ComposeUiTestConfig को स्वीकार करने वाले ओवरलोड या पैरामीटर रहित ओवरलोड का इस्तेमाल करें. ये डिफ़ॉल्ट ComposeUiTestConfig का इस्तेमाल करते हैं. ध्यान दें कि डिफ़ॉल्ट ComposeUiTestConfig, हर टेस्ट की शुरुआत में इनपुट मोड को InputMode.Touch पर सेट करता है. इस वजह से, कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट फ़ेल हो सकते हैं. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए, ComposeUiTestConfig(inputMode = InputMode.Keyboard) को साफ़ तौर पर पास करें और इनपुट मोड के लिए, मैन्युअल सेटअप के लॉजिक को हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए, AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false सेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि आप उनके कॉन्फ़िगरेशन में बदलाव करके, उन्हें सीधे तौर पर ठीक करें. (Ia6d55, b/504195741)
  • सिर्फ़ ट्रेलिंग लैम्ब्डा के साथ runComposeUiTest, runAndroidComposeUiTest, और AndroidComposeUiTestEnvironment को कॉल करने पर, अब डिफ़ॉल्ट ComposeUiTestConfig का इस्तेमाल किया जाता है. इससे हर टेस्ट की शुरुआत में, इनपुट मोड को InputMode.Touch पर सेट किया जाता है. इससे यह पक्का होता है कि डिवाइस की स्थिति सही है और इनपुट मोड में किए गए पिछले बदलाव, टेस्ट के दौरान लीक नहीं होते. हालांकि, इस नए डिफ़ॉल्ट टच मोड की वजह से, कीबोर्ड मोड (InputMode.Keyboard) का इस्तेमाल करने वाले मौजूदा टेस्ट फ़ेल हो सकते हैं. जिन टेस्ट पर असर पड़ा है उन्हें ठीक करने के लिए, ComposeUiTestConfig(inputMode = InputMode.Keyboard) को साफ़ तौर पर पास करें और इनपुट मोड के लिए, मैन्युअल सेटअप के लॉजिक को हटाएं. इसके अलावा, हर टेस्ट की शुरुआत में डिफ़ॉल्ट इनपुट मोड सेट करने की सुविधा को कुछ समय के लिए बंद करने के लिए, AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false सेट किया जा सकता है. इससे, टेस्ट माइग्रेट करते समय लेगसी व्यवहार को बनाए रखा जा सकता है. यह फ़्लैग आने वाले समय में हटा दिया जाएगा. इसलिए, अगर कुछ ही टेस्ट पूरे नहीं होते हैं, तो हमारा सुझाव है कि आप उनके कॉन्फ़िगरेशन में बदलाव करके, उन्हें सीधे तौर पर ठीक करें. (I8c85d, b/504195741)
  • SemanticsNodeInteraction.isDisplayed() और isNotDisplayed() में @CheckResult जोड़ा गया है, ताकि यह पक्का किया जा सके कि उनकी रिटर्न वैल्यू की पुष्टि हो गई है. इससे डेवलपर के पुष्टि करने वाले एपीआई के बजाय इनका इस्तेमाल करने पर, टेस्ट फ़ेल होने की सूचना नहीं मिलती है. (I1b447, b/508178494)
  • AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabled में मौजूद AndroidViews को सिर्फ़ तब इंस्टैंशिएट किया जाएगा, जब ComposeView में AndroidView जोड़ा जाएगा. इससे उन ComposeView की परफ़ॉर्मेंस बेहतर होगी जिनमें AndroidViews नहीं हैं.ViewGroup फ़्लैग के बंद होने पर, ViewGroup को इंस्टैंटिएट किया जाता है और तब अटैच किया जाता है, जब ComposeView को विंडो से अटैच किया जाता है. (I306a3, b/524283041)
  • हमने NestedScrollDispatcher में coroutineScopeOrNull() को शामिल किया है. यह डिस्पैचर के पैरंट को-रूटीन स्कोप को ऐक्सेस करने के लिए, एक वैकल्पिक एपीआई है. (I18c0f)
  • clearCallbacks को runAndClearCallbacks में बदलें, ताकि यह पक्का किया जा सके कि डेटा को साफ़ करने वाले ऐक्शन हमेशा लागू हों. (If4720, b/526700075)
  • ComposeTestConfig का नाम बदलकर ComposeUiTestConfig कर दिया गया है. साथ ही, इसे v2 पैकेज से पैरंट androidx.compose.ui.test पैकेज में ट्रांसफ़र कर दिया गया है. (I1d2a1, b/504195741)
  • SemanticsNodeInteraction.captureToImage() में timeoutMillis पैरामीटर जोड़ा गया है. इसकी डिफ़ॉल्ट वैल्यू 2000 मि॰से॰ होती है. इससे, रीड्रॉ पास के लिए इंतज़ार करते समय, कस्टम टाइमआउट कॉन्फ़िगर किया जा सकता है. (Ib7d62, b/249501063)
  • यह कुकी, पॉइंटर के इनडायरेक्ट इनपुट में हुए बदलावों के बारे में पुरानी जानकारी जोड़ती है (Ie62d2, b/526961645)
  • टेक्स्ट फ़ील्ड में हिंट टेक्स्ट दिखाने के लिए, नई hintText सिमैंटिक प्रॉपर्टी जोड़ी गई है. इससे AccessibilityNodeInfo.hintText पर मैप करके, ऐक्सेसिबिलिटी सपोर्ट को बेहतर बनाया जा सकता है. (Ib65da, b/448376876)
  • CompositionLocal के रिज़ॉल्यूशन को ऑप्टिमाइज़ किया गया है. इसके लिए, LocalOwner और LocalAndroidComposeView से डाइनैमिक तरीके से रिज़ॉल्यूशन तय किया जाता है. इसे ComposeUiFlags.isMinimalistLocalsEnabled का इस्तेमाल करके टॉगल किया जा सकता है. (I2bf6d)
  • androidx.benchmark के पास अब 24 का minSdk है. (Ic2a85)
  • हमने AndroidComposeUiFlags में isPropagateHideFromAccessibilityToMergingChildrenEnabled एक्सपेरिमेंटल फ़्लैग जोड़ा है, ताकि hideFromAccessibility को बच्चों के खातों में मर्ज करने की प्रोसेस को कंट्रोल किया जा सके. (Ie41ff, b/483506400)
  • एक्सपेरिमेंटल से स्टेबल वर्शन में प्रमोट किए गए ComposeUiTest और इससे जुड़े टेस्टिंग एपीआई (इसमें ComposeTestRule और waitUntil वैरिएंट शामिल हैं). (Iaec77, b/471148519, b/485124363)
  • मर्ज किए गए ट्रैवर्सल ग्रुप में, TalkBack नेविगेशन के क्रम को ठीक किया गया. अगर ज़रूरी हो, तो AndroidComposeUiFlags.isTraversalGroupSortingEnabled को बंद करके इस बदलाव को पहले जैसा किया जा सकता है. (I5ae09, b/285043826)
  • एक्सपेरिमेंट के तौर पर उपलब्ध, पुराना IndirectPointerEvent हेल्पर फ़ंक्शन हटा दिया गया है. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467)
  • एक्सपेरिमेंट के तौर पर उपलब्ध @AnimationToolingApi की जगह @RestrictTo API का इस्तेमाल करें. यह एपीआई, ट्रैकिंग की ज़्यादा गारंटी देता है. (Ia4fd1, b/524317805)
  • किसी दिए गए नोड के सबट्री में मौजूद सभी सिमैंटिक्स नोड ढूंढने के लिए, onDescendants() सिलेक्टर जोड़ा गया. (Id6b9b, b/444588117)
  • waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists, और waitUntilDoesNotExist हेल्पर एपीआई अब काम नहीं करते. ये useUnmergedTree को स्वीकार नहीं करते. नए ओवरलोड जोड़े गए हैं, जो useUnmergedTree को स्वीकार करते हैं, ताकि अनमर्ज किए गए सिमैंटिक्स ट्री में नोड के इंतज़ार को सपोर्ट किया जा सके. (If675f, b/268432145)
  • हमने SemanticsNodeInteraction साइज़ और पोज़िशन के दावे (assertWidthIsEqualTo, assertHeightIsEqualTo, assertTouchWidthIsEqualTo, assertTouchHeightIsEqualTo, assertPositionInRootIsEqualTo, assertTopPositionInRootIsEqualTo, assertLeftPositionInRootIsEqualTo) में tolerance पैरामीटर जोड़ा है. इससे डेवलपर, तुलना करने के थ्रेशोल्ड को कॉन्फ़िगर कर पाएंगे. साथ ही, अलग-अलग स्क्रीन डेंसिटी पर टेस्ट की मज़बूती को बेहतर बना पाएंगे. (I3a477, b/202752461)
  • Compose टेस्टिंग अब मुख्य थ्रेड के साथ सिंक करने की सुविधा के साथ काम करती है. अब सिंक्रनाइज़ेशन एपीआई (जैसे कि waitForIdle() और runOnIdle()) को सुरक्षित तरीके से लागू किया जा सकता है. साथ ही, यूज़र इंटरफ़ेस (यूआई)/मुख्य थ्रेड के कॉलबैक में सीधे तौर पर कंपोज़ असर्शन या कार्रवाइयां की जा सकती हैं. (I0247a, b/498478569)
  • पैरामीटर मैनेजमेंट को आसान बनाने और स्केलेबिलिटी को बेहतर बनाने के लिए, Compose टेस्ट एपीआई के लिए नया कॉन्फ़िगरेशन मॉडल (ComposeTestConfig) पेश किया गया. ComposeTestConfig के ज़रिए सीधे तौर पर इनपुट मोड (टच/कीबोर्ड) को कॉन्फ़िगर करने की सुविधा जोड़ी गई है. इससे, स्टेट लीक होने की वजह से टेस्ट के फ़ेल होने की समस्या को रोकने के लिए, ऑटोमैटिक सेटअप और रीसेट की सुविधा मिलती है. run*ComposeUiTest और create*ComposeRule के लिए नए ओवरलोड जोड़े गए हैं. ये ComposeTestConfig ऑब्जेक्ट को स्वीकार करते हैं. (Ia3da9, b/267253920, b/504195741)
  • मीडिया क्वेरी प्रॉपर्टी (Posture, PointerPrecision वगैरह) के साथ PreviewParameterProvider का इस्तेमाल करने पर, Compose Preview में क्रैश होने की समस्या ठीक की गई है. इसके लिए, उनके बुनियादी प्रज़ेंटेशन को String से Int में बदल दिया गया है. (Ic8f92, b/489939558)
  • hasTextExactly और assertTextEquals में includeInputText पैरामीटर जोड़ा गया है, ताकि विज़ुअल टेक्स्ट के साथ-साथ रॉ इनपुट टेक्स्ट से भी सटीक मिलान किया जा सके. (Iee329, b/519026043)

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

  • SaveableStateRegistry.performSave() को ऑप्टिमाइज़ किया गया है, ताकि HashMap को रोका जा सके. यह कुकी, ScatterMap का इस्तेमाल करती है. (I7d510)
  • टेक्स्ट कंपोज़ेबल के लिए, AccessibilityNodeInfo.ExtraRenderingInfo में टेक्स्ट के रंग भरे गए हैं. (I11c94, b/518049030)
  • लेआउट नोड को अलग करते समय NestedScrollDispatcher.coroutineScopeOrNull को ऐक्सेस करने पर, null के बजाय IllegalStateException थ्रो करने की समस्या को ठीक किया गया है. (I55634, b/533444810)
  • डाइनैमिक गेटर का इस्तेमाल करके, compose:uiटॉप-लेवल वैल्यू क्लास की प्रॉपर्टी के फ़ाइल-लेवल के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया है. (I34184)
  • डाइनैमिक गेटर का इस्तेमाल करके, ui-unit वैल्यू क्लास (TextUnit) के कंपैनियन ऑब्जेक्ट के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया. (If4a99)
  • डाइनैमिक गेटर का इस्तेमाल करके, ui-graphics वैल्यू क्लास (BlendMode, Color वगैरह) के ऑप्टिमाइज़ किए गए कंपैनियन ऑब्जेक्ट को शुरू किया गया. (Iaa86a)
  • डाइनैमिक गेटर का इस्तेमाल करके, compose:ui:ui वैल्यू क्लास (Key, CompositingStrategy वगैरह) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा. (I1a340)
  • डाइनैमिक गेटर का इस्तेमाल करके, compose:ui टेक्स्ट वैल्यू क्लास (TextAlign, TextOverflow, ImeAction वगैरह) के ऑप्टिमाइज़ किए गए कंपैनियन ऑब्जेक्ट को शुरू किया गया. (I776e0)
  • डाइनैमिक गेटर का इस्तेमाल करके, compose:ui टूलिंग और टेस्ट वैल्यू क्लास (AnimatedVisibilityState, MouseButton, ScrollWheel) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा. (I23e1b)
  • डाइनैमिक गेटर का इस्तेमाल करके, compose:ui यूनिट वैल्यू क्लास (Dp, DpOffset, TextUnitType वगैरह) के कंपैनियन ऑब्जेक्ट को ऑप्टिमाइज़ किया गया है. (If5eb5)
  • डाइनैमिक गेटर का इस्तेमाल करके, compose:ui ज्यामिति की वैल्यू वाले क्लास (Offset, Size, CornerRadius) के कंपैनियन ऑब्जेक्ट के इनिशियलाइज़ेशन को ऑप्टिमाइज़ किया गया है. (I3b110)
  • डाइनैमिक गेटर का इस्तेमाल करके, compose:ui वैल्यू क्लास (Role, FocusDirection, PointerEventType वगैरह) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा. (Ie35dd)
  • BaselineShift.None, BaselineShift.Unspecified, और BaselineShift(0f) को सही तरीके से हैंडल करें, ताकि लेआउट को बार-बार रेंडर करने से बचा जा सके. (I4350c)
  • हमने उस समस्या को ठीक कर दिया है जिसमें तुलना या समानता की जांच के दौरान, नेगेटिव ज़ीरो (-0.0) वाली Dp वैल्यू, फ़्लोटिंग पॉइंट की तुलना या समानता की जांच से अलग तरीके से काम करती है. (I7dbcf, b/525506543)
  • यह कुकी, एपीआई की जानकारी को मिटाती है (Ia8066)

बाहरी योगदान

  • Alignment.topRatio, Trim.isTrimFirstLineTop(), और Trim.isTrimLastLineBottom() अब सार्वजनिक एपीआई हैं (I84f62)

वर्शन 1.12

वर्शन 1.12.1

09 सितंबर, 2026

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

वर्शन 1.12.0

12 अगस्त, 2026

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

### डाउनलोड किए जा सकने वाले वैरिएबल फ़ॉन्ट और बिना कॉन्फ़िगरेशन वाला सेटअप (ui-text-google-fonts)

• वैरिएबल फ़ॉन्ट और बिना कॉन्फ़िगरेशन वाले GMS सर्टिफ़िकेट!

    import androidx.compose.ui.text.font.FontFamily                                                                                                                                                                         
    import androidx.compose.ui.text.font.FontVariation                                                                                                                                                                      
    import androidx.compose.ui.text.googlefonts.Font                                                                                                                                                                        
    import androidx.compose.ui.text.googlefonts.GoogleFont                                                                                                                                                                  
                                                                                                                                                                                                                            
    val fontFamily = FontFamily(                                                                                                                                                                                            
        Font(                                                                                                                                                                                                               
            googleFont = GoogleFont("Google Sans Flex"),                                                                                                                                                                    
            // Automatically uses default GMS certificates!                                                                                                                                                                 
            variationSettings = FontVariation.Settings(                                                                                                                                                                     
                FontVariation.weight(900),                                                                                                                                                                                  
                FontVariation.slant(0f)                                                                                                                                                                                     
            )                                                                                                                                                                                                               
        )                                                                                                                                                                                                                   
    )
──────                                                                                                                                                                                                                  

### वाइड कलर गैमट (डब्ल्यूसीजी) की सुविधा (ui-graphics)

WCG Preservation: * Paint या Shader पर सेट किए गए नॉन-एसआरजीबी कलर स्पेस (जैसे, AdobeRgb, DisplayP3) को API 29 और इसके बाद के वर्शन पर बनाए रखा जाता है. * पुराने एपीआई लेवल पर, यह एसआरजीबी पर वापस आ जाता है.

    import androidx.compose.ui.graphics.Color                                                                                                                                                                               
    import androidx.compose.ui.graphics.Paint                                                                                                                                                                               
    import androidx.compose.ui.graphics.colorspace.ColorSpaces                                                                                                                                                              
                                                                                                                                                                                                                            
    val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)                                                                                                                                               
    val paint = Paint().apply {                                                                                                                                                                                             
        color = wcgColor // Preserved on API 29+                                                                                                                                                                            
    }
──────                                                                                                                                                                                                                  

### हार्डवेयर की मदद से तेज़ी से रेंडर होने वाले मेश ग्रेडिएंट (ui)

• Painter API: Modifier.meshGradient को MeshGradientPainter से बदल दिया गया है. यह हार्डवेयर की मदद से तेज़ी से काम करने वाले Canvas.drawMesh का इस्तेमाल करता है.
• इस्तेमाल: Modifier.paint के अंदर MeshGradientPainter का इस्तेमाल करें.

import androidx.compose.ui.draw.paint                                                                                                                                                                                   
import androidx.compose.ui.geometry.Offset                                                                                                                                                                              
import androidx.compose.ui.graphics.Color                                                                                                                                                                               
import androidx.compose.ui.graphics.MeshGradientPainter                                                                                                                                                                 

val meshPainter = remember {                                                                                                                                                                                            
    MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {                                                                                                                                                
        setVertex(0, 0, Offset(0f, 0f), Color.Red)                                                                                                                                                                      
        setVertex(0, 1, Offset(1f, 0f), Color.Blue)                                                                                                                                                                     
        setVertex(1, 0, Offset(0f, 1f), Color.Green)                                                                                                                                                                    
        setVertex(1, 1, Offset(1f, 1f), Color.Yellow)                                                                                                                                                                   
    }                                                                                                                                                                                                                   
}                                                                                                                                                                                                                       
Box(Modifier.fillMaxSize().paint(meshPainter))                                                                                                                                                                          
──────                                                                                                                                                                                                                  

### 4. Credential Manager इंटिग्रेशन (ui)

अपने-आप भरने की सुविधा: * एपीआई 34 और इसके बाद के वर्शन के टेक्स्ट फ़ील्ड के लिए, क्रेडेंशियल अनुरोध की सिमैंटिक्स प्रॉपर्टी का लो लेवल जोड़ा गया है.

    import androidx.compose.ui.semantics.credentialRequest                                                                                                                                                                  
    import androidx.compose.ui.semantics.CredentialRequestData                                                                                                                                                              
    import androidx.compose.ui.semantics.semantics                                                                                                                                                                          
                                                                                                                                                                                                                            
    BasicTextField(                                                                                                                                                                                                         
        value = value,                                                                                                                                                                                                      
        onValueChange = onValueChange,                                                                                                                                                                                      
        modifier = Modifier.semantics {                                                                                                                                                                                     
            if (Build.VERSION.SDK_INT >= 34) {                                                                                                                                                                              
                credentialRequest = CredentialRequestData(request, callback)                                                                                                                                                
            }                                                                                                                                                                                                               
        }                                                                                                                                                                                                                   
    ) 
──────                                                                                                                                                                                                                  

### 5. अपने-आप चलने वाले इंटरैक्शन साउंड (यूज़र इंटरफ़ेस)

क्लिक और नेविगेशन की आवाज़ें: * प्लैटफ़ॉर्म साउंड कॉन्फ़िगरेशन का इस्तेमाल करके, Android के साथ काम करने वाली क्लिक और नेविगेशन की आवाज़ों की सुविधा उपलब्ध है. * ऑप्ट-आउट करना: किसी सबट्री के लिए आवाज़ें बंद करने के लिए, SoundEffectOnInteraction रैपर का इस्तेमाल करें.

    import androidx.compose.ui.platform.SoundEffectOnInteraction                                                                                                                                                            
                                                                                                                                                                                                                            
    // Opt-out of sounds for everything inside                                                                                                                                                                              
    SoundEffectOnInteraction(enabled = false) {                                                                                                                                                                             
        Button(onClick = {}) {                                                                                                                                                                                              
            Text("Silent Button")                                                                                                                                                                                           
        }                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                       

### 6. हाइब्रिड यूज़र इंटरफ़ेस (यूआई) के लिए Espresso इंटिग्रेशन (ui-test)
Espresso ViewInteraction से मैच होने वाली व्यू हैरारकी के लिए, Compose इंटरैक्शन को स्कोप करें.

    import androidx.compose.ui.test.junit4.onRootWithViewInteraction                                                                                                                                                        
    import androidx.test.espresso.Espresso.onView                                                                                                                                                                           
                                                                                                                                                                                                                            
    // Match RecyclerView row using Espresso                                                                                                                                                                                
    val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))                                                                                                                                   
                                                                                                                                                                                                                            
    // Scope Compose interactions to that row                                                                                                                                                                               
    composeTestRule.onRootWithViewInteraction(specificRow)                                                                                                                                                                  
        .onNodeWithTag("fav_icon")                                                                                                                                                                                          
        .performClick()

वर्शन 1.12.0-rc01

29 जुलाई, 2026

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

वर्शन 1.12.0-beta02

01 जुलाई, 2026

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

वर्शन 1.12.0-beta01

17 जून, 2026

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

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

  • लागू नहीं है (इंटरनल डेवलपर फ़ीचर फ़्लैग को दूसरी जगह ले जाया जा रहा है) (Iaf2c4, b/368702588)
  • लागू नहीं - फ़ीचर फ़्लैग को दूसरी जगह ले जाया गया. (I24668, b/521811270)
  • एक्सपेरिमेंट के तौर पर उपलब्ध फ़ीचर फ़्लैग ComposeUiFlags जोड़ा गया.isTrackpadPinchReinterpretationEnabled का इस्तेमाल, ट्रैकपैड के पिंच जेस्चर को स्केल फ़ैक्टर के साथ माउस इवेंट के तौर पर फिर से समझने के लिए किया जाता है. (Id3477, b/478053727)
  • यह टेस्ट फ़ंक्शन का नाम बदलता है. इसका इस्तेमाल, इनडायरेक्ट पॉइंटर इवेंट (I3ee35, b/509618414) को ट्रिगर करने के लिए किया जाता है
  • BasicText और BasicTextField में ऑप्टिमाइज़ेशन जोड़ा गया है. अब softwrap=false वाले टेक्स्ट के लिए लाइन की ऊंचाई ज़्यादा बेहतर तरीके से कैलकुलेट की जा रही है (I2150a)

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

  • स्क्रोल कैप्चर की गई स्थिति को सभी सबकंपोज़िशन में ऑप्टिमाइज़ तरीके से लागू किया गया है, ताकि यूज़र इंटरफ़ेस (यूआई) को ग़ैर-ज़रूरी तौर पर फिर से कंपोज़ होने से रोका जा सके. (I05830)
  • एक्सपेरिमेंट के तौर पर उपलब्ध फ़ीचर फ़्लैग ComposeUiFlags चालू किया गया.isTrackpadPinchReinterpretationEnabled डिफ़ॉल्ट रूप से. (I35ab8, b/478053727)
  • वेक्टर ड्रॉएबल संसाधन पार्स करने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, नेस्ट किए गए <group> एलिमेंट शामिल होने पर पैरंट <clip-path> एलिमेंट को अनदेखा कर दिया जाता था. (Id4ea9, b/474530439)
  • AndroidComposeTestRule में, JUnit 4 के स्टैंडर्ड टेस्ट फिर से आज़माने के नियमों के लिए सहायता जोड़ी गई है. इसके लिए, एक्ज़ीक्यूशन की कोशिशों के बीच इंटरनल टेस्ट एनवायरमेंट और कोरूटीन स्कोप को फिर से जनरेट किया जाता है. (Iafaa7, b/235383900)

बाहरी योगदान

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

वर्शन 1.12.0-alpha03

19 मई, 2026

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

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

  • एपीआई 34 और इसके बाद के वर्शन पर, नई credentialRequest Semantics प्रॉपर्टी और CredentialRequestData हेल्पर जोड़ा गया है. इससे Jetpack Compose के टेक्स्ट फ़ील्ड, ऑटोमैटिक तरीके से जानकारी भरने वाले फ़्रेमवर्क के ज़रिए Android के Credential Manager के साथ इंटिग्रेट हो सकेंगे. (Ida2bf, b/488446455)
  • ParagraphIntrinsics फ़ैक्ट्री फ़ंक्शन जोड़ा गया है. यह फ़ंक्शन, अन्य आर्ग्युमेंट के साथ-साथ softWrap आर्ग्युमेंट भी लेता है. हम इसका इस्तेमाल, इस सिग्नल के तौर पर कर सकते हैं कि टेक्स्ट को एक लाइन के तौर पर रेंडर किया गया है. साथ ही, कुछ ऑप्टिमाइज़ेशन किए जा सकते हैं. (I66ca4, b/485495112)
  • Compose कॉम्पोनेंट में, अपने-आप इंटरैक्शन की आवाज़ें (क्लिक और फ़ोकस नेविगेशन) जोड़ने की सुविधा जोड़ी गई है. साथ ही, ऑप्ट-आउट करने के लिए नया SoundEffectOnInteraction कंपोज़ेबल जोड़ा गया है. ध्यान दें कि इस बदलाव के बाद, सिमैंटिक्स क्लिक लिसनर को मुख्य थ्रेड से कॉल करना होगा. इससे कुछ टेस्ट केस पर असर पड़ सकता है. (I78f65)
  • Font फ़ैक्ट्री फ़ंक्शन को स्थिर किया गया है. यह variationSettings लेता है. (I183f2)
  • ResourceFont loadingStrategy प्रॉपर्टी और copy तरीके को स्थिर किया गया. (I40d84)
  • InterceptPlatformTextInput और PlatformTextInputInterceptor एपीआई को स्टेबलाइज़ किया गया. (Id2784)
  • प्लेटफ़ॉर्म को अलग करने की सुविधा को बेहतर बनाने के लिए, registerIdlingResource और unregisterIdlingResource को एक्सटेंशन फ़ंक्शन में ले जाया गया है. आपको अपने इंपोर्ट अपडेट करने पड़ सकते हैं. (I21d3d, b/471148519)
  • ComposeTestRule में runWithoutImplicitWait और ComposeUiTest को जोड़ा गया है, ताकि राज्य की जांच के दौरान टेस्ट की परफ़ॉर्मेंस को बेहतर बनाया जा सके. इस एपीआई की मदद से, कोड के किसी ब्लॉक को चलाया जा सकता है. इसमें इंप्लिसिट सिंक्रनाइज़ेशन की सुविधा बंद होती है. इससे हर नोड क्वेरी के लिए, बार-बार सिंक्रनाइज़ेशन करने की ज़रूरत नहीं पड़ती. इससे टेस्ट को बहुत कम समय में पूरा किया जा सकता है. खास तौर पर, उन टेस्ट को जिनमें फ़्रेम को मैन्युअल तरीके से देखा जाता है और कई प्रॉपर्टी के सैंपल लिए जाते हैं. जैसे, ऐनिमेशन टेस्टिंग. (Ie00e9, b/490270394)
  • अब @PreviewWrapper एनोटेशन को MultiPreview एनोटेशन क्लास पर लागू किया जा सकता है. इससे डेवलपर, पहले से रैप किए गए ऐसे प्रीव्यू कॉन्फ़िगरेशन बना सकते हैं जिनका दोबारा इस्तेमाल किया जा सकता है. (I8ae66, b/511170361)
  • मेश ग्रेडिएंट रेंडर करने के लिए, MeshGradientPainter को जोड़ा गया है.Modifier.meshGradient को हटा दिया गया है. इसके बजाय, Modifier.paint के साथ MeshGradientPainter का इस्तेमाल करें. MeshGradientRenderer अब इंटरनल है. (I2d170, b/508110246)
  • अब रूलर को अलग-अलग तौर पर उपलब्ध कराया जा सकता है. इसके लिए, एक ऐसा लैंबडा उपलब्ध कराएं जो यह बताए कि रूलर उपलब्ध कराया जा सकता है या नहीं. साथ ही, एक अलग लैंबडा उपलब्ध कराएं जो रूलर की वैल्यू दे. isRulerProvided लैंबडा का इस्तेमाल नहीं किया गया है. इसलिए, यह अनुमान लगाया जाना चाहिए कि वैल्यू दी जा सकती है या नहीं. rulerProvider लैम्डा को ऑब्ज़र्व किया जाता है, ताकि वैल्यू में कोई भी बदलाव होने पर, यह रूलर की वैल्यू और रूलर के सभी रीडर को अपडेट कर सके. (Ie9089)
  • एक्सपेरिमेंट के तौर पर उपलब्ध Style API में, पसंद के मुताबिक स्टाइल टाइप बनाने की सुविधा जोड़ी गई है. इनमें पसंद के मुताबिक स्टाइल स्कोप हो सकते हैं. इससे स्टाइल के हिसाब से सेट की जा सकने वाली प्रॉपर्टी को सबसेट किया जा सकता है. जैसे, ग्राफ़िक्स लेयर या टेक्स्ट प्रॉपर्टी को पूरी तरह से हटाया जा सकता है. साथ ही, स्कोप को अन्य स्टाइल से अलग करके बढ़ाया जा सकता है. जैसे, MediaPlayer कंपोज़ेबल में सिर्फ़ playing { } सिंटैक्स का इस्तेमाल किया जा सकता है. इस बदलाव से, बाइनरी और सोर्स कंपैटिबिलिटी पर असर पड़ता है. सोर्स के साथ काम न करने वाला मुख्य बदलाव यह है कि StyleScope में मौजूद हेल्पर फ़ंक्शन, अब एक्सटेंशन फ़ंक्शन बन गए हैं. उदाहरण के लिए, fun contentProperty(all: Dp) अब एक एक्सटेंशन फ़ंक्शन है. इन तरीकों को कॉल करने वाले कोड को सही तरीके से कंपाइल करने के लिए, ज़रूरी एक्सटेंशन फ़ंक्शन इंपोर्ट करने या androidx.compose.foundation.styles से सभी सिंबल इंपोर्ट करने की ज़रूरत होती है. (I1ef27, b/493676648)
  • यह फ़ंक्शन, पॉइंटर आईडी के लिए डिफ़ॉल्ट आर्ग्युमेंट के साथ updatePointerBy() जोड़ता है. (I99f30, b/502001776)
  • DeferredTargetAnimation अब एक्सपेरिमेंटल नहीं है. कृपया ऑप्ट-इन की सुविधा हटा दें." को androidx-main में जोड़ें
  • समस्या को ठीक करने के लिए, isClearNestedScrollCoroutineScopeFixEnabled फ़्लैग जोड़ा गया. (Ibd394, b/505343254)
  • DeferredTargetAnimation अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. कृपया ऑप्ट-इन करने की सुविधा हटा दें. (I1e4ae, b/500030165)
  • ui-tooling में ट्रिगर के लिए नया enum (I6e198, b/478807872)
  • ComposeViewContext को रेफ़रंस व्यू अटैच किए बिना बनाया जा सकता है. हालांकि, setContent() को कॉल करने से पहले, रेफ़रंस व्यू को अटैच करना ज़रूरी है. (Id0952)

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

  • focusRestorer को ठीक किया गया है. इससे एक ही लेआउट के लिए सेव करने के कई कॉल होने पर, फ़ोकस को ठीक से रीस्टोर नहीं किया जा रहा था (I10277, b/505371994)
  • परफ़ॉर्मेंस में सुधार करने के लिए किए गए पिछले बदलाव की वजह से, अटैच नहीं किए गए ComposeViews को मेज़र नहीं किया जा सका. इस बदलाव के बाद, अब ऐसा किया जा सकता है. साथ ही, परफ़ॉर्मेंस से जुड़ी समस्या फिर से नहीं आएगी. (I9b2c5, b/508650647)
  • अब ComposeViewContext में बदलाव करने पर, कंपोज़िशन फिर से बनाई जाती है, ताकि ComposeViewContext को तेज़ी से ऐक्सेस किया जा सके. (I3b3a8, b/487364963)
  • Compose को Android पर पेंट और शेडर पर नॉन-एसआरजीबी रंग सेट करने की अनुमति दें. साथ ही, Compose के कलर स्पेस को प्लैटफ़ॉर्म के बराबर के कलर स्पेस पर सही तरीके से मैप करके, वाइड कलर गैमट को बनाए रखें. जिन कलर स्पेस को प्लैटफ़ॉर्म रेंडरिंग ऑपरेशन के लिए इस्तेमाल नहीं किया जा सकता (जैसे, CIE XYZ, CIE Lab, OkLab) या जो मौजूदा एपीआई लेवल पर उपलब्ध नहीं हैं वे सुरक्षित तरीके से sRGB कलर स्पेस पर फ़ॉलबैक हो जाएंगे. (I3efb5, b/388511109)

बाहरी योगदान

  • androidx.compose.ui.platform.NativeClipboard typealias के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, सीधे android.content.ClipboardManager का इस्तेमाल करें (Ibc611)
  • Clipboard.nativeClipboard प्रॉपर्टी को Clipboard.nativeClipboardManager एक्सटेंशन से बदलें, ताकि typealias के ज़रिए commonMain सोर्ससेट में प्लैटफ़ॉर्म टाइप का पता न चले (Ibc611)

वर्शन 1.12.0-alpha02

6 मई, 2026

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

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

  • MeshGradient मॉडिफ़ायर पेश किया गया. (Ia9a08, b/455752719)
  • यह बिल्ट-इन ऑटोमैटिक भरने की सुविधा के डीबग लॉगिंग कॉलबैक को हटाता है. AutofillManager.AutofillCallback से लॉग इन करके भी इसी तरह की सुविधा का इस्तेमाल किया जा सकता है. (I631c7, b/502279690)
  • डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, वैरिएशन सेटिंग की सुविधा (Ic25c7, b/496278020)
  • mediaQuery और derivedMediaQuery को अपडेट किया गया है, ताकि Boolean के बजाय सामान्य टाइप दिखाया जा सके. इससे अडैप्टिव यूज़र इंटरफ़ेस (यूआई) बनाते समय, इनका ज़्यादा आसानी से इस्तेमाल किया जा सकता है. (I93830, b/498698350)

वर्शन 1.12.0-alpha01

22 अप्रैल, 2026

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

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

  • इस कुकी से, ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled (I82be3, b/455601135) फ़ीचर फ़्लैग हट जाता है
  • mediaQuery को इनलाइन फ़ंक्शन बनाया गया (Ie9457, b/498698350)
  • ComposeViewContext एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. साथ ही, ExperimentalComposeViewContextApi एनोटेशन हटा दिया गया है (I32eca)
  • ComposeView.disableWindowInsetsRulers() अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है (Ia81a5)
  • hasPendingWork() एपीआई जोड़ा गया है. इससे यह पता लगाया जा सकता है कि कंपोज़ यूज़र इंटरफ़ेस (यूआई) में फ़िलहाल कोई काम बाकी है या नहीं. इसके लिए, इंतज़ार करने या समय को आगे बढ़ाने की ज़रूरत नहीं होती. यह मैन्युअल क्लॉक टेस्ट के लिए फ़ायदेमंद है. इससे यह पता चलता है कि ऐनिमेशन या बैकग्राउंड में चल रहे अन्य काम कब पूरे हुए. (Ic54e3)
  • फ़ीचर फ़्लैग AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled (I7fd25, b/491111451) को हटाया गया
  • फ़ीचर फ़्लैग AndroidComposeUiFlags.isSharedFontEnabled (I2cebe, b/479898293) हटाया गया
  • यह Android पर कीबोर्ड के साथ काम करने वाले विकल्पों का सेट पूरा करने के लिए, अतिरिक्त KeyboardType विकल्प जोड़ता है. इनमें तारीख, समय, तारीख और समय, दशमलव वाली संख्या वगैरह शामिल हैं. (I3713e, b/202353328)
  • AndroidComposeUiFlags.isSharedHapticsEnabled फ़्लैग हटाया गया (I6a1d4, b/479895628)
  • AndroidComposeUiFlags.isSharedClipboardManagerEnabled फ़्लैग हटाया गया (I41e3c, b/479895130)
  • AndroidComposeUiFlags.isSharedViewConfigurationEnabled फ़्लैग हटाया गया (I6d3aa, b/479890645)
  • सुविधा के फ़्लैग AndroidComposeUiFlags.isSharedDrawingEnabled को हटाया गया. (I27912, b/479849019)
  • AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled (I6b726, b/479845566) फ़ीचर फ़्लैग हटाया गया
  • AndroidComposeUiFlags.isSharedWindowInfoEnabled फ़्लैग हटाएं (Ife9a9, b/479837249)
  • AndroidComposeUiFlags.isSharedComposeViewContextEnabled फ़्लैग हटाएं. (Ic522a, b/479834257)
  • डाउनलोड किए जा सकने वाले वैरिएबल फ़ॉन्ट को पसंद के मुताबिक बनाने के लिए, वेरिएशन सेटिंग जोड़ी गईं (Ifdc93, b/223262013)
  • डाउनलोड किए जा सकने वाले वैरिएबल फ़ॉन्ट को पसंद के मुताबिक बनाने के लिए, वेरिएशन सेटिंग जोड़ी गईं (I390af, b/223262013)
  • फ़्लैग isTraversableDelegatesFixEnabled हटाएं (Ia7dfe, b/485962494)
  • टेस्ट की परफ़ॉर्मेंस और स्टेट की स्थिरता को बेहतर बनाने के लिए, ComposeTestRule और ComposeUiTest पर runWhenIdle और इसके निलंबित किए गए वैरिएंट awaitAndRunWhenIdle को लॉन्च किया गया है. ये एपीआई, यूज़र इंटरफ़ेस (यूआई) को एक बार सिंक करते हैं. इसके बाद, हर ऑपरेशन के लिए बार-बार सिंक करने के ओवरहेड के बिना, कोड के एक ब्लॉक को एक्ज़ीक्यूट करते हैं. इससे टेस्ट को बहुत तेज़ी से और कम गड़बड़ियों के साथ पूरा किया जा सकता है. खास तौर पर, उन टेस्ट के लिए जो कई प्रॉपर्टी के सैंपल लेते हैं. जैसे, ऐनिमेशन टेस्टिंग में. (Iabf66, b/490270394)
  • LayerOutsets को GraphicsLayer और Modifier.graphicsLayer में जोड़ता है. इसका इस्तेमाल, लेयर के मेज़र किए गए साइज़ से ज़्यादा विज़ुअल बाउंड्री बढ़ाने के लिए किया जा सकता है. इसका इस्तेमाल, लेयर को ऑफ़स्क्रीन बफ़र में प्रमोट किए जाने पर, clipToBounds के डिफ़ॉल्ट व्यवहार से बचने के लिए किया जा सकता है. (Ic1189)
  • ऑटोमैटिक भरे जाने वाले फ़ॉर्म के इनपुट इवेंट को लॉग करने की सुविधा डिफ़ॉल्ट रूप से बंद कर दी गई है. अब इन्हें ComposeView.setAutofillDebugEnabled पर कॉल करके चालू किया जा सकता है. (I5b430, b/487947860)
  • VelocityTracker को Android फ़्रेमवर्क (AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled के साथ कॉन्फ़िगर किया जा सकता है) से मिले इंप्लीमेंटेशन का इस्तेमाल करने के लिए बदल दिया गया है. (Ibc7e2, b/359962905)
  • AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled के सही होने पर, चाइल्ड व्यू में हमेशा ऐसा लेआउट होगा जिसे लेआउट पास के दौरान मेज़रमेंट के बाद कॉल किया गया हो. मेज़रमेंट के बाद, कंपोज़ हमेशा चाइल्ड को लेआउट नहीं करता है. हालांकि, व्यू को सही स्टेट मैनेजमेंट के लिए इसकी ज़रूरत होती है. (Ib4fe9, b/430974758)
  • LayoutInfo में isVirtual जोड़ा गया (I3e5cd, b/494243978)
  • isGraphicsLayerShapeSemanticsEnabled फ़्लैग को हटा दिया गया है. (I44be0, b/455600081)
  • एक नया फ़ॉन्ट एपीआई जोड़ा गया है. इससे फ़ॉन्ट को डाउनलोड किया जा सकता है. इसके लिए, कोडबेस में फ़ॉन्ट सर्टिफ़िकेट को मैन्युअल तरीके से जोड़ने की ज़रूरत नहीं होती. (I30b86, b/479454159)
  • Compose की सिमैंटिक खोजों को खास Android व्यू तक सीमित करने के लिए, onRootWithViewInteraction जोड़ा गया . इससे हाइब्रिड यूज़र इंटरफ़ेस (यूआई), जैसे कि RecyclerViews की टेस्टिंग आसान हो जाती है. इसके लिए, प्रोडक्शन कोड में यूनीक टेस्ट टैग की ज़रूरत नहीं होती . (Ic02c4, b/175226753)

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

  • captureToImage() एपीआई की मदद से, अब पॉप-अप या डायलॉग को उसके ऐंकर के साथ एक ही बिटमैप में कैप्चर किया जा सकता है. (I9b83a, b/443137545)
  • Compose compileSdk को एपीआई 37 पर अपडेट किया गया. इसका मतलब है कि Compose का इस्तेमाल करने के लिए, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743)
  • सिमैंटिक्स में ContentDataType.None सेट करने पर, अब Compose की सुविधा से अपने-आप भरने वाले इवेंट नहीं भेजे जा सकेंगे. इससे, अपने-आप भरने की सेवाओं का अनुरोध करने से जुड़ी शुरुआती लागत को रोका जा सकेगा. (I8fbda, b/487947860)

वर्शन 1.11

वर्शन 1.11.4

01 जुलाई, 2026

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

वर्शन 1.11.3

17 जून, 2026

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

वर्शन 1.11.2

19 मई, 2026

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

वर्शन 1.11.1

6 मई, 2026

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

वर्शन 1.11.0

22 अप्रैल, 2026

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

वर्शन 1.11.0-rc01

08 अप्रैल, 2026

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

वर्शन 1.11.0-beta02

25 मार्च, 2026

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

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

  • नाम बदलने वाले PreviewWrapper एपीआई का नाम बदलकर एक जैसा करें (I62659, b/490085948)
  • ComposeViewContext की मदद से, ComposeView को व्यू हैरारकी से अटैच किए बिना कंपोज़ किया जा सकता है. ComposeView को अटैच किए बिना, ईमेल लिखना शुरू करने के लिए AbstractComposeView.createComposition(composeViewContext) का इस्तेमाल करें. (I46e6f)
  • panEnd और scaleEnd के लिए, ट्रैकपैड टेस्ट एपीआई में delayMillis जोड़ा गया (If80fe)

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

  • Clipboard और ClipboardManager अब पहले तरीके से किए गए कॉल (If0016, b/487947860) पर सिस्टम सेवा का अनुरोध करते हैं
  • फ़ोकस नोड और ग्रुप का फिर से इस्तेमाल किए जा रहे लेज़ी कंटेनर में, फ़ोकस को सही तरीके से रीस्टोर किया जाएगा (I18d36, b/481564275)
  • clippingEnabled = false वाला पॉपअप अब पूरी विंडो का इस्तेमाल करता है, ताकि किनारे से किनारे तक कॉन्टेंट दिखाया जा सके (I206408, b/327017902)

वर्शन 1.11.0-beta01

11 मार्च, 2026

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

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

  • Jetpack Compose Dialog (Ic7728) में कस्टम windowToken के लिए सहायता जोड़ी गई है
  • Jetpack Compose Popups में, कस्टम windowToken और windowType के लिए सहायता जोड़ी गई है. (I0a04f)
  • PreviewWrapper इंटरफ़ेस और एनोटेशन की सुविधा देने वाली कंपनी के बारे में जानकारी दें. इससे डेवलपर, अपनी झलक को पसंद के मुताबिक व्यवहार के साथ आसानी से रैप कर पाएंगे. (I29f54, b/484306729)
  • AndroidComposeUiFlags.isSharedFontEnabled को सही पर सेट करने पर, फ़ॉन्ट से जुड़े ऑब्जेक्ट इंस्टेंस, जैसे कि FontLoader और FontFamilyResolver, को ComposeViewContext में मौजूद ComposeView इंस्टेंस के साथ शेयर किया जा सकता है. (I403e8)
  • Compose semantics processors, mainLooper के बजाय view.handler का इस्तेमाल करेंगे. इससे उन व्यू में क्रैश होने की समस्या नहीं आएगी जो मुख्य हैंडलर का इस्तेमाल नहीं करते हैं. (I671c3, b/486235925)
  • isSkipNonImportantSemanticsNodesHitTestEnabled फ़्लैग जोड़ा गया है. यह सिमैंटिक्स हिट टेस्टिंग के लिए बग फ़िक्स की सुरक्षा करता है. इससे TalkBack के टच-टू-एक्सप्लोर पर असर पड़ता है. (I2933f, b/481011169, b/454377558, b/461360154)
  • Android सेवाओं से Jetpack Compose Dialogs दिखाने की सुविधा जोड़ी गई है. डेवलपर अब ओवरले विंडो में डायलॉग दिखा सकते हैं. इसके लिए, उन्हें DialogProperties में नए windowType पैरामीटर के ज़रिए कस्टम विंडो टाइप देना होगा. (I7c504, b/478214962)
  • यह कुकी, स्केल और पैन की वैल्यू वापस पाने के लिए PointerInputChange और HistoricalChange प्रॉपर्टी का नाम बदलती है. (I989a8, b/481333653)
  • ट्रैकपैड टेस्टिंग एपीआई के लिए ज़्यादा सुविधाएं जोड़ी गई हैं, ताकि ट्रैकपैड के जेस्चर के लिए अलग-अलग कर्व और इनपुट को सिम्युलेट किया जा सके. (I290fb, b/473603145, b/479213358)
  • नए PointerEventType.Pan को PointerEventType.PanStart, PointerEventType.PanMove, और PointerEventType.PanEnd में बांटता है. इसी तरह, PointerEventType.Scale को PointerEventType.ScaleStart, PointerEventType.ScaleChange, और PointerEventType.ScaleEnd में बांट दिया गया है. इस स्प्लिट से, प्लैटफ़ॉर्म पर इंटरप्रेट किए गए पैन और स्केल के जेस्चर की शुरुआत और खत्म होने के बारे में अतिरिक्त जानकारी मिलती है. इससे Compose में पॉइंटर इनपुट हैंडलर, इवेंट का सही तरीके से पता लगाने के लिए इस जानकारी का इस्तेमाल कर पाते हैं. साथ ही, उन्हें यह भी पता चलता है कि पैन या स्केल कब किया गया. (I4daf6, b/479285849, b/481333653)
  • AndroidComposeUiFlags.isSharedHapticsEnabled के सही होने पर, ComposeViewContext में शेयर किया गया हैप्टिक्स कंट्रोलर इंस्टेंस होता है. (Icd79a)
  • हमने एक्सपेरिमेंट के तौर पर mediaQuery,derivedMediaQuery, और UiMediaScope एपीआई (@ExperimentalMediaQueryApi के तौर पर मार्क किए गए) लॉन्च किए हैं. इनकी मदद से, विंडो के डाइमेंशन, विंडो के पोस्चर, और डिवाइस और एनवायरमेंट की अन्य सुविधाओं के आधार पर, अडैप्टिव यूज़र इंटरफ़ेस (यूआई) को डिक्लेरेटिव तरीके से डेवलप किया जा सकता है. (I2d21e, b/479800750)

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

  • उस समस्या को ठीक किया गया है जिसकी वजह से, Shape पैरामीटर को डाइनैमिक तरीके से बदलने पर, ब्लॉक-स्कोप किए गए Modifier.dropShadow और Modifier.innerShadow फिर से नहीं दिखते थे. (Ida262, b/486202623)
  • उस बग को ठीक किया गया है जिसकी वजह से, एलटीआर टेक्स्ट वाले आरटीएल लेआउट या आरटीएल टेक्स्ट वाले एलटीआर लेआउट में इनलाइन कॉन्टेंट गलत जगह पर दिखता था. (I09789)
  • इस गड़बड़ी को ठीक किया गया है. इसमें फ़्रैगमेंट ट्रांज़िशन में ComposeView का इस्तेमाल करने पर, अपवाद थ्रो किया जा रहा था. (Ia425f, b/484100557)

बाहरी योगदान

  • InputTextSuggestionState प्रॉपर्टी जोड़ें. इससे यह पता लगाने में मदद मिलती है कि टेक्स्ट बदलने के सुझाव उपलब्ध होने पर, लिप्यंतरण इनपुट की अलग-अलग स्थितियां क्या हो सकती हैं. इसमें TextCompositionRange भी शामिल किया गया है, ताकि मौजूदा लिप्यंतरण टेक्स्ट कंपोज़िशन रेंज को ट्रैक किया जा सके. शून्य वैल्यू से पता चलता है कि कोई कंपोज़िशन मौजूद नहीं है. (I7a67f, b/476472318)

वर्शन 1.11.0-alpha06

25 फ़रवरी, 2026

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

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

  • ComposeUiFlags.areWindowInsetsRulersEnabled फ़्लैग को ComposeView.disableWindowInsetsRulers() API से बदल दिया गया है. (Idcdb4, b/455590696)
  • एक्सपेरिमेंट के तौर पर उपलब्ध, सिर्फ़ Android के लिए उपलब्ध फ़ीचर फ़्लैग isAccessibilityShowOnScreenNestedScrollingEnabled को (I1c13a) पर ले जाया गया
  • चलते समय स्क्रीन चालू होने की सुविधा जोड़ी गई (I1c13a)
  • स्क्रोल किए जा सकने वाले कंटेनर में, आंशिक रूप से दिखने वाले मर्जिंग नोड के चाइल्ड नोड के तौर पर मौजूद, स्क्रीन से बाहर के सिमैंटिक नोड की रिपोर्ट करें. इससे स्क्रीन रीडर और सुलभता से जुड़ी अन्य सेवाओं के साथ, उपयोगकर्ता अनुभव को बेहतर बनाया जा सकेगा (I71df9, b/434782764)
  • AndroidComposeUiFlags.isSharedClipboardManagerEnabled सही होने पर, क्लिपबोर्ड से जुड़े इंस्टेंस को ComposeViews पर ComposeViewContext (I65e2c) का इस्तेमाल करके शेयर किया जा सकता है
  • ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled को हटा दिया गया है (I6e14a, b/455601894)

वर्शन 1.11.0-alpha05

11 फ़रवरी, 2026

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

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

  • AndroidComposeUiFlags.isSharedWindowInfoEnabled, WindowInfo की जानकारी को ComposeViewContext में ट्रांसफ़र करता है. इस फ़्लैग को बंद करने पर, WindowInfo को AndroidComposeView (I3b364) कंट्रोल करता है
  • ComposeView में मौजूद सामान्य स्ट्रक्चर, शेयर की गई ComposeViewContext में ले जाए जाएंगे. यह पहला बदलाव है, जिसमें CoroutineContext को ComposeViewContext में बदला गया है. AndroidComposeUiFlags.isSharedComposeViewContextEnabled की वैल्यू सही होने पर, वैल्यू अपने-आप शेयर हो जाती हैं. 'गलत है' पर सेट होने पर, इन्हें शेयर नहीं किया जाता. (I9364d, b/461566955)
  • इस अपडेट में, ट्रैकपैड के जेस्चर और ट्रैकपैड के इनपुट इवेंट को माउस में बदलने की सुविधा जोड़ी गई है. इस बदलाव के बाद, ट्रैकपैड पॉइंटर इवेंट को आम तौर पर माउस पॉइंटर के तौर पर रिपोर्ट किया जाएगा. ये इवेंट, टैबलेट या लैपटॉप जैसे डिवाइसों पर कर्सर को कंट्रोल करते हैं. इससे पॉइंटर स्लोप, स्क्रोलिंग, और होवर करने से जुड़ी परफ़ॉर्मेंस बेहतर होती है. पैन और स्केल करने के जेस्चर की जानकारी भी दी जाएगी. साथ ही, पॉइंटर इवेंट में हुए बदलावों के बारे में ज़्यादा जानकारी दी जाएगी. इसमें PointerEventType.Pan और PointerEventType.Scale नाम के नए इवेंट टाइप शामिल होंगे. इनसे पता चलेगा कि ये वैल्यू सेट की जाएंगी (Id071a, b/315527861, b/459831570)

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

  • टॉगल की जा सकने वाली प्रॉपर्टी में बदलाव के लिए, CONTENT_CHANGE_TYPE_CHECKED भेजें. (I6ac64, b/476894689, b/474538004, b/475754416)

बाहरी योगदान

  • androidx.compose.ui.graphics.NativePaint typealias का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, सीधे android.graphics.Paint का इस्तेमाल करें (I6303c, b/477394763)
  • Paint.asFrameworkPaint() एक्सटेंशन को Paint.nativePaint एक्सटेंशन से बदलें, ताकि typealias (I6303c, b/477394763) के ज़रिए commonMain सोर्ससेट में प्लैटफ़ॉर्म टाइप का पता न चले
  • NumPad को मूव करने के लिए इस्तेमाल की जाने वाली कुंजियों (I1ff12) के लिए सहायता जोड़ी गई

वर्शन 1.11.0-alpha04

28 जनवरी, 2026

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

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

  • runCurrent() को चालू करने के लिए TestCoroutineScheduler को दिखाया गया है. इससे यह पक्का किया जा सकेगा कि शेयर किए गए शेड्यूलर इंस्टेंस को ऐक्सेस किया जा सके. (Iea662, b/254115946)
  • सुलभता से android.R.id.accessibilityActionShowOnScreen के जवाब में, नेस्टेड स्क्रोलिंग को ऊपर की ओर ले जाने की सुविधा जोड़ी गई. (Ib2723, b/431148846)

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

  • Android के कस्टम आरजीबी कलर स्पेस के कन्वर्ज़न की समस्या ठीक की गई. कस्टम ग्रेस्केल ट्रांसफ़ॉर्म को, कस्टम कंपोज़ और Android RGB कलर स्पेस के बीच गलत तरीके से बदला गया था.(ebd45,b/377021410)

वर्शन 1.11.0-alpha03

14 जनवरी, 2026

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

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

  • ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled फ़्लैग हटाया गया. v2 run*ComposeUiTest और create*ComposeRule एपीआई अब डिफ़ॉल्ट रूप से StandardTestDispatcher का इस्तेमाल करते हैं. UnconfinedTestDispatcher का इस्तेमाल जारी रखने के लिए, एपीआई के बंद किए गए वर्शन का इस्तेमाल किया जा सकता है. हालांकि, हमारा सुझाव है कि आप v2 एपीआई पर माइग्रेट करें, ताकि कोरूटीन के एक्ज़ीक्यूशन पर बेहतर कंट्रोल पाया जा सके. (Iecc9c, b/455601592)
  • androidx.compose.ui.test.junit4.v2.create*ComposeRule एपीआई लॉन्च किए गए. ये नए एपीआई, डिफ़ॉल्ट रूप से StandardTestDispatcher का इस्तेमाल करते हैं. इससे प्रोडक्शन के व्यवहार को बेहतर तरीके से सिम्युलेट किया जा सकता है. इसमें को-रूटीन को तुरंत लागू करने के बजाय, उन्हें लाइन में लगाया जाता है. ज़्यादा जानकारी के लिए, माइग्रेशन से जुड़ी गाइडलाइन देखें. (I1870e, b/254115946)
  • androidx.compose.ui.test.v2.run*ComposeUiTest एपीआई लॉन्च किए गए. ये नए एपीआई, डिफ़ॉल्ट रूप से StandardTestDispatcher का इस्तेमाल करते हैं. इससे प्रोडक्शन के व्यवहार को बेहतर तरीके से सिम्युलेट किया जा सकता है. इसमें को-रूटीन को तुरंत लागू करने के बजाय, उन्हें लाइन में लगाया जाता है. ज़्यादा जानकारी के लिए, माइग्रेशन से जुड़ी गाइडलाइन देखें. (I4f782, b/254115946)
  • ComposeView में मौजूद सामान्य स्ट्रक्चर अब शेयर किए जा सकते हैं. ComposeUiFlags.isSharedComposeViewContextEnabled की वैल्यू सही होने पर, वैल्यू अपने-आप शेयर हो जाती हैं. 'गलत है' पर सेट होने पर, इन्हें शेयर नहीं किया जाता. (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)

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

  • इस अपडेट में, उस बग को ठीक किया गया है जिसमें ComposeView से सारा कॉन्टेंट हटाने पर, ड्रॉ किया गया कॉन्टेंट नहीं हटता था. (I8b382, b/299503084)
  • LookaheadScope के साथ ऐनिमेशन किए जाने पर, रोके जा सकने वाले कंपोज़िशन के क्रैश होने की समस्या ठीक की गई. (I7e649, b/469669851)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से, पासवर्ड अपने-आप भरने की सेवा को बहुत लंबी स्ट्रिंग ट्रांसमिट करने पर, ऐप्लिकेशन क्रैश हो जाता था. ऐसा न हो, इसके लिए अब टेक्स्ट को भेजने से पहले, मान्य लंबाई के हिसाब से अपने-आप छोटा कर दिया जाता है.
  • ऐसी गड़बड़ी को ठीक किया गया है जिसमें कुछ खास स्थितियों में, कर्सर हटाने पर क्लिक हो जाता था (a3d5a0f)
  • यह कुंडलिका के होवर इवेंट को टेस्ट के लिए भेजने की समस्या को ठीक करता है. साथ ही, नई कुंडलिका के टेस्ट के लिए माउस टेस्ट तैयार करता है. (9ca9bc9)
  • यह पॉइंटर इनपुट की मदद से, यूज़र इंटरफ़ेस (यूआई) एलिमेंट को हटाने/जोड़ने की सुविधा जोड़ता है. (d0742b0, b/BUD_ID)
  • Jetpack Compose Popup में मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें ऐंकर बाउंड के ऐब्सलूट कोऑर्डिनेट, PopupPositionProvider को पास किए जा रहे थे. इस वजह से, पॉप-अप गलत जगह पर दिख रहे थे. पॉप-अप की पोज़िशन का हिसाब लगाने के लिए, अब सही रिलेटिव कोऑर्डिनेट का इस्तेमाल किया जाता है.(1f7edf,b/469940907)

वर्शन 1.11.0-alpha02

17 दिसंबर, 2025

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

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

  • MultiModalInjectionScope एपीआई अब स्थिर हो गए हैं. इसमें performKeyInput और performRotaryScrollInput के साथ-साथ, इनके मुख्य और रोटरी एपीआई भी शामिल हैं. एक्सपेरिमेंट के तौर पर जोड़े गए एनोटेशन को हटा दिया गया है. (Ie8bbc, b/261561237)
  • इस कुकी से, ट्रैकपैड टेस्टिंग एपीआई जोड़े जाते हैं. ये माउस टेस्टिंग एपीआई की तरह होते हैं. ये ऐसे इवेंट इंजेक्ट करते हैं जो टैबलेट या लैपटॉप के ट्रैकपैड के व्यवहार की नकल करते हैं. मुख्य एंट्री पॉइंट SemanticsNodeInteraction.performTrackpadInput और MultiModalInjectionScope.trackpad (I2ce67), b/432326139 हैं.

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

  • यह माउस के पहिए को स्क्रोल करने के इनपुट से जुड़ी इंटरऑपरेबिलिटी की समस्या को ठीक करता है. इससे यह सिर्फ़ तब इस्तेमाल होता है, जब इसे Compose में इस्तेमाल किया गया हो. ऐसा तब नहीं होता, जब इसे Compose में भेजा गया हो. (I5e0c4),

वर्शन 1.11.0-alpha01

03 दिसंबर, 2025

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

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

  • यह कुकी, isSemanticAutofillEnabled यूज़र इंटरफ़ेस (यूआई) फ़्लैग को हटाती है, क्योंकि सिमैंटिक ऑटोमैटिक जानकारी भरने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. (I849cf, b/455587954)
  • findNearestAncestor को खोजने के लिए, ट्रैवर्स किए जा सकने वाले तरीके में बदलाव किया गया है, ताकि काम के नोड खोजे जा सकें. अब ट्रैवर्सल के दौरान, एक ही तरह के डेलिगेट (NodeKind) दिखेंगे. इस बदलाव को isTraversableDelegatesFixEnabled फ़्लैग से सुरक्षित किया गया है. (Ia3165, b/280804097)
  • ANI#isTextEntryKey के लिए TextEntryKey मैपिंग जोड़ी गई (Ifde7b, b/399540654)
  • Modifier.onFirstVisible() को बंद कर दिया गया है, क्योंकि इसका व्यवहार गुमराह करने वाला है. साथ ही, यह हमेशा नाम के साथ किए गए दावे का पालन नहीं करता है. उदाहरण के लिए, जब इसे LazyColumn के किसी आइटम में जोड़ा जाता है, तो स्क्रोल करने के बाद यह आइटम दिखने पर, इस कॉलबैक को हर बार कॉल किया जाएगा. यह उस तरह का मॉडिफ़ायर नहीं है जैसा इस नाम के मॉडिफ़ायर का इस्तेमाल करने वाले लोग उम्मीद कर सकते हैं. हमारा सुझाव है कि इसके बजाय Modifier.onVisibilityChanged() का इस्तेमाल करें. साथ ही, मैन्युअल तरीके से ट्रैक करें कि लेआउट पहले से दिख रहा था या नहीं. ऐसा किसी खास इस्तेमाल के उदाहरण की ज़रूरत के आधार पर करें. (Ia7095, b/447601783)
  • MeasuredSizeAwareModifierNode को लॉन्च किया गया है. इसकी ज़रूरत तब पड़ती है, जब आपको onRemeasured() कॉलबैक की ज़रूरत होती है. अगर आपको अन्य कॉलबैक की ज़रूरत नहीं है, तो कृपया ज़्यादा सामान्य LayoutAwareModifierNode का इस्तेमाल करने के बजाय, सीधे इस इंटरफ़ेस का इस्तेमाल करें. (If6fb0)

वर्शन 1.10

वर्शन 1.10.6

25 मार्च, 2026

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

वर्शन 1.10.5

11 मार्च, 2026

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

वर्शन 1.10.4

25 फ़रवरी, 2026

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

वर्शन 1.10.3

11 फ़रवरी, 2026

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

वर्शन 1.10.2

28 जनवरी, 2026

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

वर्शन 1.10.1

14 जनवरी, 2026

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

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

  • LookaheadScope की मदद से ऐनिमेशन किए जाने पर, रोके जा सकने वाले कंपोज़िशन के क्रैश होने की समस्या को ठीक किया गया (I7e649, b/469669851)
  • Jetpack Compose Popup में मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें ऐंकर बाउंड के ऐब्सलूट कोऑर्डिनेट, PopupPositionProvider को पास किए जा रहे थे. इस वजह से, पॉप-अप गलत जगह पर दिख रहे थे. पॉप-अप की पोज़िशन का हिसाब लगाने के लिए, अब सही रिलेटिव कोऑर्डिनेट का इस्तेमाल किया जाता है.(1f7edf,b/469940907)

वर्शन 1.10.0

03 दिसंबर, 2025

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

वर्शन 1.10.0-rc01

19 नवंबर, 2025

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

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

  • जब minDurationMs की वैल्यू शून्य नहीं होती है, तब visibilityChanged कॉलबैक को 'गलत' वैल्यू के साथ सही तरीके से भेजें. (2ac08b8, b/456384555)
  • जब नोड शुरू में नहीं दिखता है, तब onVisibilityChanged कॉलबैक को कॉल न करें. (3969e8d, b/447364998)

वर्शन 1.10.0-beta02

05 नवंबर, 2025

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

वर्शन 1.10.0-beta01

22 अक्टूबर, 2025

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

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

  • यह फ़ोकस बदलने के लिए, डिसपैच करने की सुविधा को ऑप्टिमाइज़ करता है. isOptimizedFocusEventDispatchEnabled = false (I919fb, b/449228515) का इस्तेमाल करके, इसे बंद किया जा सकता है
  • यह सभी इनडायरेक्ट टच एपीआई को अपडेट करता है, ताकि वे पॉइंटर इनपुट एपीआई से मैच करने के लिए, इनडायरेक्ट पॉइंटर एपीआई के नाम का इस्तेमाल कर सकें. (I238ce, b/451607214)
  • TextDirection, TextAlign, Hyphens, FontSynthesis valueOf फ़ंक्शन को अब कोई ऐसी वैल्यू मिलने पर IllegalArgumentException दिखता है जिसके बारे में उसे जानकारी नहीं है. (I07c67)
  • रैपर फ़ंक्शन के बजाय डिफ़ॉल्ट वैल्यू पास करने के लिए, CompositionDataTree.makeTree को अपडेट करें. (Id64a6, b/445229688)
  • टेस्ट रूल वाले एपीआई createComposeRule, createAndroidComposeRule, और createEmptyComposeRule, effectContext पैरामीटर को स्वीकार करते हैं. ये एपीआई स्टेबल हैं और पैरामीटर डिफ़ॉल्ट रूप से EmptyCoroutineContext पर सेट होता है. (If400c, b/450540702)
  • UnplacedStateAwareModifierNode का नाम बदलकर UnplacedAwareModifierNode कर दिया गया (I6a551, b/449719932)
  • कॉन्टेंट कैप्चर ऑप्टिमाइज़ेशन (Ic000b, b/442364065) को पहले जैसा करें
  • ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled फ़ीचर फ़्लैग जोड़ा गया. इससे परफ़ॉर्मेंस को ऑप्टिमाइज़ करने में मदद मिली. इसमें LayoutCoordinates.positionInRoot() जैसे कोऑर्डिनेट के अनुरोध, हर कॉल पर पूरे ट्री को ट्रैवर्स करने के बजाय, RectManager में पहले से मौजूद कैश किए गए ऑफ़सेट का इस्तेमाल कर रहे हैं. (Ieaadc)

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

  • PlaceholderSpan अब साइज़ के लिए, नॉन-लीनियर फ़ॉन्ट स्केलिंग का सही तरीके से इस्तेमाल करता है (Id2ead, b/324462728)
  • ViewCompat का इस्तेमाल करके, प्लैटफ़ॉर्म लेवल पर काम करने वाले हैप्टिक फ़ीडबैक कॉन्स्टेंट लागू करें. साथ ही, नए कॉन्स्टेंट के लिए फ़ॉलबैक सपोर्ट का इस्तेमाल करें. (Ib5a00)

वर्शन 1.10.0-alpha05

08 अक्टूबर, 2025

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

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

  • नेस्ट किए गए पॉप-अप को स्क्रीन के सबसे ऊपर गलत तरीके से दिखाने वाली गड़बड़ी को ठीक किया गया है. अब ये अपने पैरंट पॉप-अप से सही तरीके से जुड़ जाते हैं. (Id4603, b/191279752)
  • फ़ोकस रैपिंग की समस्या को ठीक किया गया है. यह समस्या, क्रम में मौजूद अन्य व्यू के साथ होती थी. (I95223, b/446028624)
  • Kotlin 2.2.20 (I9855d, b/447110005) से जनरेट किए गए लैम्डा में, इंस्पेक्टर से गायब इनलाइन पैरामीटर वाले फ़ील्ड ठीक किए गए
  • यूआई और फ़ाउंडेशन मॉड्यूल के बीच, ऑटोफ़िल संसाधनों के नाम शैडोइंग की समस्या ठीक की गई (I5da5a)

बाहरी योगदान

  • UiModes ऑब्जेक्ट का नाम बदलकर AndroidUiModes कर दिया गया है, ताकि यह पता चल सके कि इसके कॉन्स्टेंट, Android API से लिए गए हैं. (Ia0a77)

वर्शन 1.10.0-alpha04

24 सितंबर, 2025

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

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

  • CoroutineContext पैरामीटर को स्वीकार करने वाले, Compose टेस्ट रूल वैरिएंट को स्टेबल वर्शन में प्रमोट कर दिया गया है. एक्सपेरिमेंट के तौर पर उपलब्ध एनोटेशन को हटा दिया गया है. साथ ही, डेवलपर को अब इस एपीआई का इस्तेमाल करने के लिए ऑप्ट-इन करने की ज़रूरत नहीं है. (I74e6e)
  • ComposeUiFlags.isRectTrackingEnabled हटाया गया. यह लॉजिक हमेशा चालू नहीं रहता. (Id78df)
  • Updater#set के इनलाइन ओवरलोड को बंद कर दिया गया है, क्योंकि वे दी गई वैल्यू को कई बार बॉक्स में डालते थे (Id679e)
  • onAutofillText सिमैंटिक प्रॉपर्टी को 'अब काम नहीं करती' के तौर पर मार्क करें. (I6f81c)
  • UnplacedStateAwareModifierNode को लॉन्च किया गया था. यह एक कॉलबैक उपलब्ध कराता है. इसे तब कॉल किया जाता है, जब पहले से सेट किया गया लेआउट अब सेट नहीं किया जाता. (I8fdd8, b/309776096)
  • RetainObserver.onRetained के दस्तावेज़ में सुधार किया गया है. साथ ही, RetainObserver.onUnused जोड़ा गया है, जो RememberObserver.onAbandoned की तरह काम करता है. (Ia6fc5)
  • onVisibilityChangedNode() जोड़ा गया है, जो Modifier.Node बना रहा है. इसका इस्तेमाल Modifier.onVisibilityChanged(), डेलिगेशन के ज़रिए कर रहा है. इससे आपको अपने कस्टम Modifier.Node में इस सुविधा को बढ़ाने में मदद मिलती है. (I70d84, b/443001320)

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

  • उस समस्या को ठीक किया गया है जिसकी वजह से, कई लाइनों वाले टेक्स्ट की आखिरी लाइन में मौजूद इनलाइन कॉन्टेंट रेंडर नहीं हो रहा था. ऐसा तब हो रहा था, जब प्लेसहोल्डर को टेक्स्ट के उस हिस्से से पहले रखा गया था जिसे छोटा किया गया था. (I76aaf, b/441829208)

वर्शन 1.10.0-alpha03

10 सितंबर, 2025

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

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

  • DelegatableNode.invalidateLayoutForSubtree का नाम बदलकर DelegatableNode.invalidateMeasurementForSubtree कर देता है. (I94257, b/430106107)
  • यह विकल्प, काम न करने वाले isInHiddenAccessibilitySubtree मैच करने वाले टूल को हटाता है. (I4476c, b/443792965)
  • इसमें ग्रुप की पर आधारित कंपोज़ स्टैक ट्रेस की सुविधा जोड़ी गई है. यह सुविधा, छोटे किए गए सभी ऐप्लिकेशन के लिए डिफ़ॉल्ट रूप से चालू होती है. इन ट्रेस के लिए ProGuard मैपिंग, Compose कंपाइलर Gradle प्लगिन जनरेट करेगा. यह सुविधा, Kotlin 2.3.0 से शुरू होगी. (Ifbcb5)
  • Modifier.skipToLookaheadSize अब डिफ़ॉल्ट रूप से चालू किए गए लैंबडा का इस्तेमाल करता है. यह सिर्फ़ तब साइज़ स्किप करने की सुविधा चालू करता है, जब शेयर किया गया ट्रांज़िशन चालू हो. यह सुविधा Modifier.skipToLookaheadPosition की तरह ही काम करती है. (Ibe0f5, b/432485585)
  • ComposeUiFlags.isOutOfFrameDeactivationEnabled को हटा दिया गया है. अब यह सुविधा हमेशा चालू रहती है. (I421ed)
  • FillableData इंस्टेंस बनाने के लिए, फ़ैक्ट्री फ़ंक्शन को कंपैनियन ऑब्जेक्ट में ले जाएं. FillableData(value) को कॉल करने के बजाय, फ़ैक्ट्री के नए तरीकों का इस्तेमाल करें: FillableData.createFrom(value). (I2e200, b/441719650)
  • फ़ोकस सर्च के लिए, सीमा से बाहर लेआउट बनाने के लिए BeyondBoundsLayoutModifierNode एक नया मॉडिफ़ायर नोड जोड़ा गया है. (I39be1, b/416133658)
  • FocusTargetModifierNode.requestFocus() खुद फ़ोकस नहीं किया जा सकता, इसलिए यह अपने किसी चाइल्ड एलिमेंट पर फ़ोकस भेजता है. अब यह FocusRequester.requestFocus() और FocusRequesterModifierNode.requestFocus() के साथ काम करता है. अगर आपको इस व्यवहार की ज़रूरत नहीं है, तो अपने ऐप्लिकेशन में ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled फ़्लैग को false पर सेट करें. (Icca5c, b/436863604)
  • WindowInfo में डीपी पर आधारित विंडो का साइज़ उपलब्ध कराएं (I9322b, b/424442112)
  • isNestedScrollDispatcherNodeFixEnabled फ़्लैग हटाया गया. (If451a)
  • FillableData एपीआई में, ऑटोमैटिक भरने की सुविधा में तारीख की वैल्यू के लिए सहायता जोड़ी गई. val dateMillisValue: Long को तारीख की जानकारी पाने के लिए जोड़ा गया है. साथ ही, तारीख के आधार पर FillableData इंस्टेंस बनाने के लिए, इससे जुड़ा FillableData(dateMillisValue: Long) कंस्ट्रक्टर जोड़ा गया है. (Id072a)

बाहरी योगदान

  • UiModes ऑब्जेक्ट को इसलिए पेश किया गया है, ताकि उन कॉन्स्टेंट का एलान किया जा सके जिनका इस्तेमाल UiMode एनोटेशन (I03cb8) के लिए किया जाता है

वर्शन 1.10.0-alpha02

27 अगस्त, 2025

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

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

  • FillableData को अपडेट करें, ताकि यह टेक्स्ट के अलावा अन्य कॉम्पोनेंट के साथ काम कर सके. जैसे, टॉगल और सूचियां. इसमें FillableData के अंदर बूलियन और पूर्णांक वैल्यू शामिल हैं. साथ ही, फ़ैक्ट्री कंस्ट्रक्टर, FillableData के बूलियन और सूची इंस्टेंस बनाने के लिए, जो प्लैटफ़ॉर्म के AutofillValue में बदल जाते हैं. इससे काम की सिमैंटिक प्रॉपर्टी और कार्रवाई भी जुड़ जाती है. (Ia8105, Icc5cf)
  • बिना टच वाले मोड में, व्यू सिस्टम स्क्रीन पर मौजूद फ़ोकस किए जा सकने वाले किसी आइटम को शुरुआती/डिफ़ॉल्ट फ़ोकस असाइन करता है. इस सुविधा को Compose में जोड़ा गया है. इसे ComposeUiFlags.isInitialFocusOnFocusableAvailable को चालू करके इस्तेमाल किया जा सकता है. (Ib9178)
  • isPointerInteropFilterDispatchingFixEnabled फ़्लैग हटाया गया. (Iaa589)
  • isNestedScrollInteropPostFlingFixEnabled फ़्लैग हटाया गया. (I2a756)
  • isHiddenFromAccessibility() और isInHiddenAccessibilitySubtree() सिमैंटिक मैचिंग की सुविधा जोड़ें. (I9f5a1)
  • शेड्यूलर पर सभी टास्क चलाने के लिए, MainTestClock में runCurrent() जोड़ा गया. ऐसा इसलिए किया जाता है, ताकि StandardTestDispatcher पर टेस्ट किए जा सकें. इसमें टास्क को शेड्यूलर में जोड़ा जाता है. अगर टास्क में 0 मि॰से॰ की देरी होती है, तो उन्हें तुरंत पूरा नहीं किया जाता. StandardTestDispatcher का इस्तेमाल करने के लिए, टेस्ट को सेट अप किया जा सकता है. इसके लिए, ComposeTestRule बनाएं और उसमें StandardTestDispatcher पास करें. डिफ़ॉल्ट रूप से, टेस्ट UnconfinedTestDispatcher पर चलाए जाते हैं. ऐसे में, runCurrent() को कभी भी कॉल नहीं करना पड़ेगा.
  • StandardTestDispatcher पर टेस्ट चलाने की सुविधा जोड़ी गई है. पहले, टेस्ट फ़्रेमवर्क को UnconfinedTestDispatcher का इस्तेमाल करके सेट अप किया जाता था. अब भी ऐसा ही किया जाता है. यह प्रोडक्शन एनवायरमेंट से कुछ मामलों में अलग होता है. अब इस सेटअप को बदला जा सकता है. इसके लिए, अपना StandardTestDispatcher बनाएं और ComposeTestRule बनाते समय (या runComposeUiTest को कॉल करते समय), इसे effectContext में जोड़ें. (I334d0, b/254115946)
  • SlotTree से नोड का ट्री बनाने के लिए कोड अपडेट करें. (I997d3)

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

  • Compose यूज़र इंटरफ़ेस (यूआई) अब Android पर, लाइफ़साइकल के बारे में जानकारी रखने वाला RetainScopes इंस्टॉल करता है. डिफ़ॉल्ट व्यवहार अब कॉन्फ़िगरेशन में हुए बदलावों के साथ-साथ, retain की वैल्यू को भी बनाए रखेगा. (Id4a09, b/177562901)

बाहरी योगदान

  • इस सुविधा की मदद से, VelocityTracker प्लैटफ़ॉर्म के हिसाब से ट्रैक किए गए पॉइंटर इवेंट के आधार पर, पॉइंटर की वेलोसिटी का हिसाब लगा सकता है. (I621e8)

वर्शन 1.10.0-alpha01

13 अगस्त, 2025

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

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

  • ComposeView में माउस या टचपैड से पॉइंटर डाउन करने पर, अब फ़ोकस अपने-आप हट जाएगा. ऐसा तब होगा, जब पॉइंटर डाउन, फ़ोकस किए गए नोड की सीमाओं के अंदर नहीं होगा. इससे "टैप करके फ़ोकस हटाएं" वाला यूज़र एक्सपीरियंस मिलता है. पॉइंटर इनपुट डिवाइसों का इस्तेमाल करते समय, यह यूज़र एक्सपीरियंस मौजूदा यूज़र एक्सपीरियंस से ज़्यादा बेहतर होता है. इस सुविधा से ऑप्ट-आउट करने के लिए, नए AbstractComposeView.isClearFocusOnPointerDownEnabled एपीआई का इस्तेमाल किया जा सकता है. (I6322b, b/282963174)
  • टेक्स्ट के अलावा, अलग-अलग तरह के ऑटोफ़िल कॉम्पोनेंट के लिए FillableData इंटरफ़ेस लॉन्च किया गया. (If9bd2)
  • नया एपीआई, शेयर किए गए एलिमेंट को डाइनैमिक तरीके से चालू और बंद करने की अनुमति देता है. इससे यह भी पता चलता है कि शेयर किए गए एलिमेंट का ट्रांज़िशन पहले से चल रहा है या नहीं. नया एपीआई, ट्रांज़िशन के दौरान टारगेट किए गए शेयर किए गए एलिमेंट को हटाने पर, टारगेट की गई वैकल्पिक सीमाएं सेट अप करने के लिए. LookaheadScope का LayoutCoordinates पाने के लिए नया एपीआई. (I18dd4, b/409819304, b/395670637)
  • नेस्ट किए गए स्क्रोल इंटरऑप को सही पूर्णांक भेजने के एक्सपेरिमेंट को कंट्रोल करने के लिए, फ़्लैग isNestedScrollInteropIntegerPropagationEnabled जोड़ा गया है. (If8316)
  • DelegatableNode में requestFocusForChildInRootBounds() जोड़ा गया, ताकि फ़ोकस को उस चाइल्ड पर ले जाया जा सके जो दिए गए रेक्ट के साथ ओवरलैप होता है. (I001ef)
  • isOnScrollChangedCallbackEnabled, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, isFlingContinuationAtBoundsEnabled, isAutomaticNestedPrefetchEnabled, DragGesturePickUpEnabled, isPointerInteropFilterDispatchingFixEnabled, isNestedScrollInteropPostFlingFixEnabled, isNestedScrollDispatcherNodeFixEnabled फ़्लैग हटाए गए (I36c18)
  • SemanticsNode फ़ाइंडर और सिलेक्टर फ़ंक्शन पर @CheckResult एनोटेशन जोड़ा गया है, ताकि रिटर्न की गई वैल्यू का इस्तेमाल किया जा सके. (I6f86e, b/201652748)
  • कॉन्टेंट कैप्चर करने की प्रोसेस की परफ़ॉर्मेंस को बेहतर बनाएं (I3c7c0)
  • CompositionLocal को पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में भरी गई जानकारी को हाइलाइट करने वाले ब्रश में बदलाव करने के लिए किया जा सकता है. (I52329)
  • नया इंटरपोलेटबल इंटरफ़ेस जोड़ा गया है. इससे अलग-अलग टाइप के बीच अपने-आप इंटरपोलेशन हो जाता है. हालांकि, इसके लिए यह ज़रूरी है कि एक टाइप को दूसरे टाइप में बदलने का तरीका पता हो. इस इंटरफ़ेस का इस्तेमाल, Brush और Shape जैसे कई कंपोज़ टाइप में किया जाता है. हालांकि, इसका इस्तेमाल बाहर भी किया जा सकता है. (I58eab)
  • अब स्क्रोल करने की सुविधा, माउस के पहिए को दो डाइमेंशन में स्क्रोल करने वाले इवेंट को बेहतर तरीके से सपोर्ट करती है. MouseInjectionScope में इस्तेमाल के उदाहरणों की जांच करने के लिए, एक नया टेस्ट एपीआई उपलब्ध कराया गया है. हमने MouseInjectionScope में स्क्रोल करने के तरीकों के लिए एक नया ओवरलोड भी पेश किया है. साथ ही, नई सुविधा को कंट्रोल करने के लिए एक फ़्लैग भी पेश किया है, जिसे isMouseWheel1DAxisLockingEnabled (I136df) कहा जाता है
  • कीबोर्ड टाइप और स्थिति, नेविगेशन टाइप और स्थिति, टचस्क्रीन की स्थिति, और यूज़र इंटरफ़ेस (यूआई) मोड टाइप (I282f0) के लिए DeviceConfigurationOverrides जोड़ें
  • Tight नाम का नया LineHeightStyle.Mode जोड़ा गया. इस मोड की मदद से, लाइन की ऊंचाई को कम किया जा सकता है. भले ही, इससे बड़े ग्लिफ़ कट जाएं. (Id3849)
  • BaselineShift में अब Unspecified वैल्यू है, ताकि बॉक्सिंग को रोका जा सके BaselineShift, Hyphens, LineBreak, TextAlign, और TextDirection में अब isSpecified हेल्पर फ़ंक्शन हैं Hyphens, TextAlign, TextDecoration, और TextDirection में अब valueOf() और वैल्यू के तरीके हैं, ताकि सीरियलाइज़ेशन/डीसीरियलाइज़ेशन को बेहतर तरीके से किया जा सके. (I8d44c)
  • getDisplayName का नया तरीका जोड़ा गया है. इससे झलक वाले पैरामीटर इंस्टेंस के लिए, डिसप्ले नेम को पसंद के मुताबिक सेट किया जा सकेगा. (I19bdf, b/241699422)
  • Dp वैल्यू की तुलना, 'तय नहीं किया गया' वैल्यू से करने पर, अब हमेशा 'गलत' वैल्यू मिलती है. ऐसा, 'इससे कम है' या 'इससे ज़्यादा है' ऑपरेटर का इस्तेमाल करके किया जाता है. Dp.compareTo(Unspecified) का इस्तेमाल करने पर, हमेशा 0 दिखता है. ComposeUiUnitFlags.isDpCompareToChanged फ़्लैग को 'गलत' पर सेट करने से, Dp.compareTo() पहले की तरह काम करेगा. इसमें Unspecified की तुलना less-than और greater-than से करने पर, हमेशा 'गलत' नहीं मिलता है. साथ ही, compareTo() के साथ Unspecified, Float.compareTo() के जैसा काम करता है. (Ifa88b, b/429221319)

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

  • डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)
  • उस समस्या को ठीक किया गया है जिसकी वजह से ट्रांज़िशन के दौरान, नए AndroidComposeViews नहीं बनाए जा सकते थे. (I2e23e, b/340894487, b/287484338)
  • इस अपडेट में, एक रंग का इस्तेमाल करने वाले वेक्टर ड्रॉएबल का इस्तेमाल करते समय, रंग से जुड़ी समस्या को ठीक किया गया है. साथ ही, fillColor न तो पूरी तरह से अपारदर्शी है और न ही पूरी तरह से पारदर्शी है. (I3b041, b/328677973)
  • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें थीम के हिसाब से रंग वाले आइकॉन, थीम में बदलाव होने पर अपडेट नहीं होते थे. इन आइकॉन को painterResource के ज़रिए लोड किया जाता था. (I85ea0, b/424416571)
  • onFillData और fillableData सिमैंटिक के बारे में जानकारी देना (I45d9e)
  • StateRestorationTester में, प्लैटफ़ॉर्म के हिसाब से स्टेट एन्कोडिंग की सुविधा अब हमेशा चालू रहती है. इससे टेस्ट का तरीका, ऐप्लिकेशन की असली स्थिति को वापस लाने के तरीके के साथ अलाइन हो जाता है. जैसे, Android पर पार्सल बनाना. (I38211, b/408154192, b/382294247)
  • फ़ोकस का अनुरोध करते समय कभी-कभी क्रैश होने की समस्या ठीक की गई. (57b31a11, b/431111149)

वर्शन 1.9

वर्शन 1.9.5

19 नवंबर, 2025

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

वर्शन 1.9.4

22 अक्टूबर, 2025

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

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

  • उस समस्या को ठीक किया गया है जिसमें कई लाइनों वाले टेक्स्ट की आखिरी लाइन पर मौजूद इनलाइन टेक्स्ट कॉन्टेंट गायब हो जाता था. ऐसा तब होता था, जब इनलाइन कॉन्टेंट, टेक्स्ट के उस हिस्से में मौजूद नहीं होता था जिसे छोटा किया गया हो. (I76aaf, b/441829208)
  • उस समस्या को ठीक किया गया है जिसमें debounceMillis के शून्य न होने पर, onLayoutRectChanged मॉडिफ़ायर के कॉलबैक हमेशा कॉल नहीं किए जाते थे. (72aba47, b/445324854)

वर्शन 1.9.3

08 अक्टूबर, 2025

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

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

  • उस गड़बड़ी को ठीक किया गया है जिसमें लेआउट को एक जगह से दूसरी जगह ले जाने पर, 170 से ज़्यादा डिसेंडेंट होने पर onVisibilityChanged/onFirstVisible/onLayoutRectChanged मॉडिफ़ायर को कॉलबैक नहीं मिल रहे थे. (4f2fdd, b/445356774)

वर्शन 1.9.2

24 सितंबर, 2025

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

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

  • Modifier.onVisibilityChanged() अब किसी नोड को अलग करने या फिर से इस्तेमाल करने पर सही तरीके से ट्रिगर होता है. (Ic5ce20)
  • Modifier.onVisibilityChanged() और onLayoutRectChanged() अब माता-पिता के लेआउट को सही तरीके से मैनेज करते हैं. इसके लिए, बच्चों को रखने के लिए placeWithLayer() का इस्तेमाल किया जाता है. (Ia05ac9)
  • Modifier.onVisibilityChanged() और onLayoutRectChanged() के लिए, खास मामलों में सही तरीके से सूचना दें. जैसे, लेयर/लेयर मॉडिफ़ायर हटाना या लेयर की प्रॉपर्टी अपडेट करना. (Ia05ac)

वर्शन 1.9.1

10 सितंबर, 2025

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

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

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

वर्शन 1.9.0

13 अगस्त, 2025

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

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

  • वर्शन 1.9.0 में हुए ज़रूरी बदलावों के बारे में इस ब्लॉग पोस्ट में बताया गया है
  • Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो gradle.properties में android.experimental.lint.version=8.8.2 (या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose lint की जांच करने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.
  • बदलाव: graphicsLayer मॉडिफ़ायर नोड अब SemanticsModifierNode लागू करता है. इससे सिमैंटिक ट्री में नए SemanticsNodes जुड़ सकते हैं. इसलिए, सिमैंटिक ट्री के स्ट्रक्चर के बारे में अनुमान लगाने वाले टेस्ट में गड़बड़ियां हो सकती हैं. उदाहरण के लिए, अगर मौजूदा नोड और टारगेट नोड के बीच कोई नया नोड जोड़ा जाता है, तो onChild, onParent, onSibling, और इसी तरह के अन्य तरीकों का इस्तेमाल करके दावे करने वाले टेस्ट फ़ेल हो सकते हैं. इन गड़बड़ियों को ठीक करने का सबसे अच्छा तरीका यह है कि टारगेट नोड में सीधे तौर पर testTag जोड़ें. एक और तरीका है कि आप onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) जैसे लूज़र मैचिंग वाले मैचिंग टाइप का इस्तेमाल करें. (I638b5)

वर्शन 1.9.0-rc01

30 जुलाई, 2025

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

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

  • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें थीम के हिसाब से रंग वाले आइकॉन, सिस्टम की थीम में बदलाव होने पर अपडेट नहीं होते थे. ये आइकॉन, painterResource के ज़रिए लोड किए जाते थे. (I85ea0, b/424416571)
  • एपीआई 21(लॉलीपॉप) और 28(पाई) पर होने वाली गड़बड़ियों को ठीक किया गया है. इन गड़बड़ियों में, ऑप्टिमाइज़ेशन के दौरान ग्राफ़िक्स के अहम तरीकों के नाम बदल दिए गए थे. (Iebf99, b/425120571, b/420462749)
  • पक्का करें कि नए जोड़े गए onLayoutRectChanged मॉडिफ़ायर को शुरुआत में वापस कॉल किया जाए. (l9aa91), (lb348a)
  • ऑफ़सेट कैश मेमोरी के गलत तरीके से अमान्य होने की समस्या को ठीक किया गया है. इसकी वजह से, onLayoutRectChanged मॉडिफ़ायर को गलत कोऑर्डिनेट (ibd4cd), (lddc57) के साथ कॉल किया जाता है
  • रोटेट किए गए/तिरछे लेआउट के लिए, onLayoutRectChanged मॉडिफ़ायर से गलत कोऑर्डिनेट मिलने की समस्या ठीक की गई (lddc57, b/426750475)

बाहरी योगदान

  • उस समस्या को ठीक किया गया है जिसकी वजह से स्क्रोल करने पर, LazyList में मौजूद dragAndDropSource आइटम गायब हो जाते थे. धन्यवाद, विक्टर रेंडिना! (dc3bcd3, b/425894792)

वर्शन 1.9.0-beta03

16 जुलाई, 2025

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

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

  • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें एक जैसी धुंधली इनर शैडो, ऑफ़सेट के साथ सही तरीके से नहीं घूम रही थीं.

वर्शन 1.9.0-beta02

2 जुलाई, 2025

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

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

  • यह क्लास से मैच करने के लिए, कंपैनियन ऑब्जेक्ट को एक्सपेरिमेंटल में बदलता है. (I8452a)
  • isTrackFocusEnabled एक्सपेरिमेंट फ़्लैग (I003fd) हटाया गया

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

  • जब WindowInsets, ComposeView के कॉन्टेंट पर कोई असर नहीं डालता है, तब WindowInsetsRulers वैल्यू नहीं दी जाती हैं. (I71221)

वर्शन 1.9.0-beta01

18 जून, 2025

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

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

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

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

  • ShadowContext को सील किए गए इंटरफ़ेस (I3ce40) के तौर पर बदला गया
  • यह कुकी, अलग-अलग मॉड्यूल में इनडायरेक्ट टच इवेंट बनाने का तरीका जोड़ती है. इसका इस्तेमाल टेस्टिंग के लिए किया जाता है (I22e4c)
  • IndirectTouchEvent.nativeEvent को एक्सपेरिमेंट के तौर पर उपलब्ध कराता है. (I6fda5)
  • एपीआई काउंसिल से मिले सुझाव/राय के आधार पर, एपीआई सरफ़ेस में बदलाव करता है. (Ibf378)
  • FrameRateCategory.NoPreference कॉन्स्टेंट हटाएं. Modifier.requestedFrameRate का नाम बदलकर Modifier.preferredFrameRate कर दें. (I2f976)
  • WindowInsetsRulers: rulersIgnoringVisibility को ज़्यादा से ज़्यादा पर सेट किया गया. getDisplayCutoutBounds() को PlacementScope के एक्सटेंशन फ़ंक्शन के तौर पर बदला गया. WindowInsetsAnimationProperties को बदलकर WindowInsetsAnimation कर दिया गया है और getAnimationProperties() को बदलकर getAnimation() कर दिया गया है. (I3816f)
  • क्लास ShadowParams को Shadow (I11cca) में बदला गया
  • फ़्रेम रेट एपीआई के पैकेज को androidx.compose.ui.ui से बदलकर androidx.compose.ui करें (I8994e)
  • InsetsRulers को WindowInsetsRulers नाम वाले सामान्य कोड में बदल दिया गया है. एपीआई को आसान बनाया गया है, ताकि सभी इनसेट WindowInsetsRulers हों. नियमों के हिसाब से काम न करने वाली ऐनिमेशन प्रॉपर्टी को AnimationProperties क्लास में एक्सट्रैक्ट किया गया. WindowInsetsRulers.innermostOf() का इस्तेमाल करके, कई WindowInsetsRulers को मर्ज किया जा सकता है. (I2f0c6, b/415012444)
  • Compose कंपाइलर से जोड़ी गई सोर्स जानकारी को पार्स करने के लिए, टूलिंग एपीआई जोड़ा गया. (Iceaf9, b/408492167)

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

  • isGetFocusedRectReturnEmptyEnabled के लिए फ़्लैग हटा दिया गया है, क्योंकि इस सुविधा की पूरी तरह से पुष्टि हो गई है. (Ife722)
  • performScrollToNode में मौजूद एक गड़बड़ी को ठीक किया गया है. कुछ मामलों में, यह गड़बड़ी टारगेट नोड तक नहीं पहुंच रही थी. इस सुधार के बाद, इन मामलों में यह हमेशा टारगेट नोड तक पहुंचना चाहिए. इस बदलाव का एक साइड इफ़ेक्ट यह है कि कार्रवाई के आखिर में स्क्रोल करने की सटीक जगह अब अलग हो सकती है. इससे स्क्रीनशॉट टेस्ट और ऐसे टेस्ट पर असर पड़ता है जो स्क्रोल करने की सटीक जगह के बारे में अनुमान लगाते हैं. (I2c8a1)

वर्शन 1.9.0-alpha04

4 जून, 2025

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

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

  • पसंद के मुताबिक शैडो बनाने के लिए, मॉडिफ़ायर एपीआई जोड़े गए. (I2058d, b/160665122)
  • ऐसी SemanticsModifierNode.isImportantForBounds प्रॉपर्टी जोड़ें जिससे यह तय किया जा सके कि बाउंड्री तय करते समय नोड को ध्यान में रखा जाना चाहिए या नहीं. यह प्रॉपर्टी डिफ़ॉल्ट रूप से सही होती है. इसे गलत पर सेट किया जा सकता है, ताकि यह पता चल सके कि नोड को सीमाओं के लिए ध्यान में नहीं रखा जाना चाहिए. (I7ebec)
  • Android के लिए खास तौर पर उपलब्ध सिमैंटिक्स प्रॉपर्टी के बारे में बताने के लिए, SemanticsPropertyKey फ़ैक्ट्री फ़ंक्शन जोड़ा गया है. ये प्रॉपर्टी, AccessibilityNodeInfo.getExtras के ज़रिए सुलभता की अतिरिक्त सुविधाओं के तौर पर उपलब्ध कराई जाती हैं. (I2ed51)
  • ComposeUiFlags.isRemoveFocusedViewFixEnabled के इस्तेमाल को हटा दिया गया है और फ़्लैग को बंद कर दिया गया है. (I50328)
  • कस्टमाइज़ किए जा सकने वाले नए शैडो फ़्रेमवर्क को लॉन्च किया गया. इसमें DropShadowPainter और InnerShadowPainter के साथ-साथ DropShadow/InnerShadow डिपेंडेंसी भी शामिल हैं. शैडो इन्फ़्रास्ट्रक्चर को इस तरह से शेयर किया जाता है कि जनरेट की गई एक ही शैडो को कई कॉलसाइट पर शेयर किया जा सके. इसके लिए, शैडो को n बार फिर से जनरेट करने की ज़रूरत नहीं होती. (I24f7a, b/160665122)
  • CompositeShader और CompositeShaderBrush को पेश किया गया है. ये दो शेडर के बीच कंपोज़िट किया गया नतीजा बनाते हैं. शेडर के लिए ट्रांसफ़ॉर्मेशन मैट्रिक्स सेट करने के लिए, ShaderBrush#transform भी जोड़ें. (I2621a, b/160665122)

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

  • NestedScrollInteropConnection में एक गड़बड़ी को ठीक किया गया है. इसमें फ़्लिंग के तरीके, व्यू के हिसाब से गलत क्रम में दिख रहे थे. (I56ad4)
  • इससे पहले, फ़ुल स्क्रीन पर दिखने वाले डायलॉग, डिसप्ले कटआउट वाले हिस्से में नहीं दिखते थे. इस बग को ठीक कर दिया गया है, ताकि decorFitsSystemWindows = false और usePlatformDefaultWidth = false वाले डायलॉग, डिसप्ले कटआउट वाले हिस्से का इस्तेमाल कर सकें. (I9e975)
  • उस गड़बड़ी को ठीक किया गया है जिसमें Compose ऐप्लिकेशन के बैकग्राउंड में होने पर, TalkBack के हरे रंग के फ़ोकस इंडिकेटर को चालू करने के बाद भी नहीं दिखाया जाता था. (Ifd12a)

वर्शन 1.9.0-alpha03

20 मई, 2025

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

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

  • ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled फ़्लैग की मदद से, ComposeView में किसी भी चीज़ पर फ़ोकस न किए जाने पर, रेक्ट को खाली वैल्यू पर सेट किया जाता है. इससे फ़ोकस सर्च को, फ़ोकस करने के लिए व्यू चुनने से रोका जाता है. यह तब खास तौर पर ज़रूरी होता है, जब IME में NEXT विकल्प होता है और वह ComposeView पर फ़ोकस करने की कोशिश करता है और requestFocus() फ़ेल हो जाता है. (Ibd0e2, b/369256395)
  • फ़्लैग isNestedScrollDispatcherNodeFixEnabled के बारे में बताएं. (I0d24a)
  • DialogProperties' dialogContentTitle का नाम बदलकर windowTitle (Ibd27b) किया गया
  • Modifier.onFirstVisible और Modifier.onVisibilityChanged मॉडिफ़ायर लॉन्च किए गए. ये Modifier.onLayoutRectChanged के ऊपर बनाए गए हाई लेवल मॉडिफ़ायर हैं. इन मॉडिफ़ायर को खास तौर पर, ऐप्लिकेशन की कई सामान्य ज़रूरतों को पूरा करने के लिए बनाया गया है. जैसे, इंप्रेशन लॉग करना, वीडियो अपने-आप चलना वगैरह. इन्हें परफ़ॉर्मेंस को ध्यान में रखकर बनाया गया है, ताकि इनका इस्तेमाल लिस्ट पर आधारित ज़रूरी स्थितियों में किया जा सके. साथ ही, स्क्रोल करने की परफ़ॉर्मेंस पर कोई असर न पड़े. इन मॉडिफ़ायर एपीआई के अलावा, इस्तेमाल के इन उदाहरणों को सपोर्ट करने के लिए, RelativeLayoutBounds के लिए अतिरिक्त एपीआई जोड़े गए हैं. साथ ही, इससे डेवलपर के लिए ऐसे कस्टम मॉडिफ़ायर बनाना आसान हो जाता है जो इस्तेमाल के उदाहरण के हिसाब से बिलकुल सही हों. (I759b8)
  • इस सुविधा को आने वाले समय में बेहतर बनाने के लिए, setDiagnosticStackTraceEnabled को एक्सपेरिमेंटल में बदलें. (I11db3)
  • स्टेट बनाने के लिए, Modifier.scrollable2D, Scrollable2DState, और कंपैनियन एपीआई पेश किए गए. इसके अलावा, स्क्रोल एक्सटेंशन के सामान्य फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040)
  • Compose 64-बिट कलर वैल्यू की तुलना सीधे तौर पर Android ColorLongs से नहीं की जा सकती. इसकी वजह यह है कि कुछ कलर स्पेस के लिए, कलर स्पेस आईडी क्रम से नहीं हैं. Android कलर स्पेस में बदलने और उससे वापस लाने के लिए, दो नए एपीआई जोड़े गए हैं: toColorLong() और fromColorLong(). (I36899)
  • फ़्लिंग की कम से कम स्पीड को कंट्रोल करने के लिए, ViewConfiguration.minimumFlingVelocity को जोड़ा गया. (I11aab)

वर्शन 1.9.0-alpha02

7 मई, 2025

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

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

  • dialogContentTitle से DialogProperties में जोड़ें. इससे कॉन्टेंट विंडो का टाइटल सेट होता है. bf9d670

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

  • इंटरनल टेस्ट की समस्याओं को ठीक करने के दौरान, विंडो इंसर्ट रूलर को कुछ समय के लिए बंद कर दिया गया है. 8d1402
  • DragGestureNode में VelocityTracker में पॉइंटर इनपुट में हुए बदलावों को जोड़ने के तरीके को ठीक किया गया है. इसे नए फ़्लैग isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled की मदद से कंट्रोल किया जा सकता है.254ddb

वर्शन 1.9.0-alpha01

23 अप्रैल, 2025

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

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

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

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

  • यह कुकी, हिट पाथ ट्रैकर (डीबग) के लिए ट्रेस स्टेटमेंट चालू करने के लिए फ़्लैग हटाती है. (I1b2a1)
  • InnerRectRulers और OuterRectRules को बदलकर, तरीके कर दिए गए हैं. RectRulers पब्लिक एपीआई से नाम पैरामीटर हटा दिया गया है. DerivedRulers अब वर्टिकल और हॉरिज़ॉन्टल रूलर के लिए कंस्ट्रक्टर विकल्प है. इंस्टेंस जनरेट करने के लिए, MergedHorizontalRulers और MergedVerticalRulers को minOf और maxOf तरीकों से बदल दिया गया है. (Iee89f, b/408192133)
  • androidx.compose.ui.LocalSavedStateRegistryOwner को बंद करके androidx.savedstate.compose.LocalSavedStateRegistryOwner को चालू करें. (I5439f, b/377946781)
  • Modifier.keepScreenOn जोड़कर, डिसप्ले को चालू रखने की सुविधा सेट करें (Ib5af4, b/408284174)
  • नई सिमैंटिक्स प्रॉपर्टी Shape जोड़ें.इसे तब सेट किया जा सकता है, जब यूज़र इंटरफ़ेस (यूआई) एलिमेंट का आकार, उसके बाउंडिंग रेक्टैंगल से अलग हो. उदाहरण के लिए, गोल कोने वाला रेक्टैंगल. (I1376f)
  • AndroidViews में पॉइंटर इवेंट डिसपैच करने से जुड़ी समस्या को ठीक किया गया है. साथ ही, बदलावों को सुरक्षित रखने के लिए isPointerInteropFilterDispatchingFixEnabled फ़्लैग जोड़ा गया है. (I0e272, b/372055500, b/408002332)
  • FocusRestorer अब पहले फ़ोकस किए गए आइटम को पिन नहीं करता है. उपयोगकर्ताओं को यह पक्का करने के लिए किसी कुंजी का इस्तेमाल करना चाहिए कि पहले फ़ोकस किए गए आइटम का कंपोज़िशन हैश एक जैसा हो, ताकि फ़ोकस को वापस लाया जा सके. (I4203b, b/330696779)
  • कंपोज़ की सुविधा को ViewTreeObserver.OnScrollChanged को ट्रिगर करने की अनुमति दें. इस सुविधा को isOnScrollChangedCallbackEnabled फ़्लैग के तहत लॉन्च किया गया है. हमने DelegatableNode dispatchOnScrollChanged का एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286)
  • currentCompositeKeyHash का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, currentCompositeKeyHashCode का इस्तेमाल करें. बदला गया एपीआई, उसी हैश को ज़्यादा बिट के साथ एन्कोड करता है. इससे कंपोज़िशन हैरारकी में मौजूद दो रैंडम ग्रुप के लिए, एक जैसी हैश कुंजी होने की संभावना बहुत कम हो जाती है. (I4cb6a, b/177562901)
  • Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद के वर्शन का इस्तेमाल करना ज़रूरी है (Idb6b5)
  • FocusRequester के लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन (I6bf91) में याद रखा गया है
  • Composables के लिए, पसंदीदा फ़्रेम रेट या फ़्रेम रेट कैटगरी सेट करने की सुविधा जोड़ी गई है. इन्हें इस फ़्रेम रेट पर रेंडर किया जाना चाहिए (Ie5201)
  • Android पर नेटिव MotionEvent को उपलब्ध कराएं. (I17286)
  • getChecked() + setChecked(int) जोड़ा गया, isChecked + setChecked(boolean) को बंद किया गया (Iaac9d)
  • graphicsLayer मॉडिफ़ायर अब blendMode और colorFilter (Iab0e6) स्वीकार करता है
  • क्वेरी रिसॉर्स के लिए, LocalResources कंपोज़िशन लोकल जोड़ी गई. कॉन्फ़िगरेशन में बदलाव होने पर, LocalResources.current फिर से कंपोज़ होगा. इसलिए, stringResource() जैसे एपीआई को किए गए कॉल, अपडेट की गई वैल्यू दिखाएंगे. (I50c13, b/274786917)
  • कॉम्पोज़ेबल के लिए एक्सपेरिमेंटल एपीआई उपलब्ध कराया गया है, ताकि अप्रत्यक्ष टच इवेंट मैनेज किए जा सकें (Icff57)
  • इस रिलीज़ से, कंपोज़ किए जा सकने वाले कॉन्टेंट के लेआउट और ड्रॉ फ़ेज़ के दौरान, हैंडल न किए गए अपवादों की रिपोर्टिंग को बेहतर बनाया गया है. इससे पहले, यहां बिना हैंडल की गई गड़बड़ी की वजह से, टेस्ट रनर क्रैश हो जाता था और टेस्ट सुइट समय से पहले खत्म हो जाता था. अब इन अपवादों की जानकारी, टेस्ट सुइट को बंद किए बिना ज़्यादा आसानी से दी जा सकती है. (I9928b, b/314128080)
  • एक्सपेरिमेंट के तौर पर उपलब्ध GlobalAssertions API को बंद कर दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय, enableAccessibilityChecks() का इस्तेमाल करें. (I50aa5)
  • SemanticsNodeInteraction.performTextInputSelection अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. साथ ही, अब यह relativeToOriginal पैरामीटर के साथ काम करता है. इससे, चुने गए टेक्स्ट को ओरिजनल टेक्स्ट या बदले गए टेक्स्ट पर लागू किया जा सकता है. (I3a905, b/261561038, b/277018945)
  • AnnotatedString (I1d066, b/383269496, b/139326648) के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गया
  • runWithTimingDisabled को runWithMeasurementDisabled के पक्ष में बंद करें. इससे यह साफ़ तौर पर पता चलता है कि सभी मेट्रिक को रोक दिया गया है. इसके अलावा, MicrobenchmarkScope सुपरक्लास को दिखाएं, क्योंकि ओपन ऐक्सेस के लिए runWithMeasurementDisabled फ़ंक्शन को फिर से एलान नहीं किया जा सकता. ऐसा इसलिए है, क्योंकि यह इनलाइन है. (I9e23b, b/389149423, b/149979716)
  • नए डिवाइसों को शामिल करने के लिए, ui-tooling Devices API को अपडेट किया गया है. (Ia2ac1)
  • डेवलपर को बड़ी विंडो (Ia1976) के बारे में बताने के लिए, झलक वाली स्क्रीन के साइज़ के कलेक्शन में टैबलेट पोर्ट्रेट जोड़ें
  • किसी समय पर वैल्यू के साथ ट्रेस को मार्क/लॉग करने के लिए, ट्रेस वैल्यू एपीआई लॉन्च किया गया. ट्रेस वैल्यू, Prefetto में नई लेन के तौर पर दिखती हैं. इन्हें ट्रेस की टाइमलाइन के ज़रिए देखा जा सकता है. Android पर, इन्हें Trace.setCounter का इस्तेमाल करके लागू किया जाता है. (Idcf48)

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

  • pausable कंपोज़िशन में remember observers को डिसपैच करने की समस्या ठीक की गई है, ताकि एक ही apply में याद रखे गए/भूल गए observers को डिसपैच करने से बचा जा सके (I570b2, b/404645679, b/407931790)
  • android:dialogTheme को अब decorFitsSystemWindows के फ़ॉल्स होने पर, डायलॉग प्रॉपर्टी को कंट्रोल करने के लिए सेट किया जा सकता है (I7922f, b/246909281)
  • डायलॉग बॉक्स के बाहर होने वाली किसी भी हलचल से जुड़े इवेंट की वजह से डायलॉग बॉक्स बंद होने की गड़बड़ी को ठीक किया गया है. (Ia78fd)
  • Compose के लिंट चेक के लिए, अब कमांड लाइन से कम से कम AGP 8.8.2 वर्शन की ज़रूरत होती है. साथ ही, IDE के साथ काम करने के लिए, कम से कम Android Studio Ladybug की ज़रूरत होती है. अगर AGP के पुराने वर्शन का इस्तेमाल किया जा रहा है, तो AGP पर असर डाले बिना, Lint के वर्शन को अपग्रेड करने के लिए, gradle.properties में android.experimental.lint.version=8.8.2 सेट किया जा सकता है. (I6f2a8)
  • नई सिमैंटिक्स प्रॉपर्टी InputText जोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले, textfield की वैल्यू कैप्चर करती है. (Iae46a, b/395911609, b/176949051)
  • Android के लिए सुलभता जांच की सुविधा चालू करने वाले enableAccessibilityChecks() एपीआई को अलग-अलग पैकेज में ले जाया गया है. अगर TestRule पर कॉल करते समय TestRule और compose:ui:ui-test-junit4-accessibility का इस्तेमाल नहीं किया जा रहा है, तो ये पैकेज compose:ui:ui-test-accessibility हैं (I3c318, b/391560768)
  • LaunchedEffect और rememberCoroutineScope में, कंपोज़ स्टैक ट्रेस के लिए सहायता जोड़ी गई (I705c0, b/354163858)

बाहरी योगदान

  • एक्सपेरिमेंट के तौर पर उपलब्ध runComposeUiTest फ़ंक्शन में बदलाव किया गया है, ताकि निलंबन ब्लॉक को स्वीकार किया जा सके. बाइनरी के साथ काम करने के लिए, काम न करने वाली एक फ़न runComposeUiTest भी जोड़ी गई (I3b88c, b/361577328)

वर्शन 1.8

वर्शन 1.8.3

18 जून, 2025

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

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

  • isGetFocusedRectReturnEmptyEnabled के लिए फ़्लैग हटा दिया गया है, क्योंकि इस सुविधा की पूरी तरह से पुष्टि हो गई है. (Ife722)
  • ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled फ़्लैग की वजह से, जब ComposeView में किसी भी चीज़ पर फ़ोकस नहीं किया जा सकता, तब यह रेक्ट को खाली वैल्यू पर सेट कर देता है. इससे फ़ोकस सर्च को, फ़ोकस करने के लिए व्यू चुनने से रोका जाता है. यह तब खास तौर पर ज़रूरी होता है, जब IME में NEXT का विकल्प होता है और वह ComposeViewपर फ़ोकस करने की कोशिश करता है, लेकिन requestFocus() काम नहीं करता. (Ibd0e2, b/369256395)

वर्शन 1.8.2

20 मई, 2025

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

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

  • डायलॉग पर इवेंट स्ट्रीम चालू होने के दौरान डायलॉग हटाए जाने पर, NPE को ठीक करता है (6a7e7f)
  • सिर्फ़ ड्रॉ करने के अपडेट होने पर, थ्रॉटल की गई टाइमलाइन के हिसाब से onLayoutRectChange अपडेट न होने की समस्या ठीक की गई. (03b82d)

वर्शन 1.8.1

7 मई, 2025

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

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

  • onLayoutRectChanged और LazyLayout d791b11 से जुड़ी कुछ समस्याएं ठीक की गईं
  • पहले से कंपोज़ किए गए आइटम के लिए, फिर से मेज़र करने के अनुरोधों को स्किप करें. इस गड़बड़ी की वजह से, लेज़ी लेआउट की स्क्रोलिंग परफ़ॉर्मेंस पर असर पड़ा. ऐसा इसलिए हुआ, क्योंकि कुछ मामलों में प्रीफ़ेचिंग की सुविधा ठीक से काम नहीं कर रही थी. साथ ही, मेज़रमेंट फ़्रेम के अंदर हो रहा था. 742087a

वर्शन 1.8.0

23 अप्रैल, 2025

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

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

  • Compose 1.8 में, सिमैंटिक ऑटोकंप्लीट की सुविधा जोड़ी गई है. पक्का करें कि आपके पास यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन का 1.8 या इसके बाद का वर्शन हो. ऐसा इसलिए, क्योंकि टेक्स्ट कॉम्पोनेंट के लिए ऑटोमैटिक तरीके से भरने की सुविधा के लिए, दोनों मॉड्यूल के नए वर्शन की ज़रूरत होती है. एपीआई के इस्तेमाल और उदाहरणों के बारे में ज़्यादा जानने के लिए, कृपया ऑटोमैटिक तरीके से भरने की सुविधा से जुड़ा दस्तावेज़ यहां देखें.
  • Compose 1.8 में हैप्टिक फ़ीडबैक के अन्य टाइप भी काम करते हैं: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. इसे LocalHapticFeedback के ज़रिए ऐक्सेस किया जा सकता है. Android पर, Vibrator API से यह पता चलता है कि हैप्टिक फ़ीडबैक की सुविधा काम करती है या नहीं. अगर यह सुविधा काम करती है, तो यह डिफ़ॉल्ट रूप से उपलब्ध होती है.
  • अब कई Focus API स्टेबल हो गए हैं. इनमें Modifier.focusRestorer(), onEnter, और onExit FocusProperties (I6e667) शामिल हैं. अब requestFocus को कॉल करते समय, FocusDirection के बारे में बताया जा सकता है. हमने focusRequester और FocusTargetModifierNode, दोनों में requestFocus(FocusDirection) एपीआई जोड़ा है, ताकि किसी खास दिशा पर फ़ोकस किया जा सके. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)

वर्शन 1.8.0-rc03

9 अप्रैल, 2025

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

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

वर्शन 1.8.0-rc02

26 मार्च, 2025

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

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

  • उस समस्या को ठीक किया गया है जिसमें Compose के क्रम में एम्बेड किए गए फ़ोकस किए गए व्यू, फ़ोकस किए गए व्यू को लेज़ीलिस्ट से हटाने पर, फिर से कंपोज़िशन शुरू कर देते थे. (765562)

वर्शन 1.8.0-rc01

12 मार्च, 2025

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

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

  • सॉफ़्ट कीबोर्ड चालू होने पर, फ़ोकस किए गए AndroidView को हटाने पर क्रैश होने की समस्या ठीक की गई. (Ic725a)
  • फ़ोकस की नई स्थिति को मैनेज करने की सुविधा लागू करने से जुड़ी कुछ समस्याओं को ठीक किया गया है. (b/395895685)
  • यह समस्या को ठीक करता है. इस समस्या की वजह से, टेक्स्ट फ़ील्ड पर फ़ोकस करने का अनुरोध करने के लिए LaunchedEffect का इस्तेमाल करते समय, जानकारी अपने-आप भरने की सुविधा काम नहीं करती थी. (b/392539099)

वर्शन 1.8.0-beta03

26 फ़रवरी, 2025

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

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

  • Android के लिए सुलभता जांच की सुविधा चालू करने वाले enableAccessibilityChecks() एपीआई को अलग-अलग पैकेज में ले जाया गया है. अगर TestRule का इस्तेमाल नहीं किया जा रहा है, तो ये पैकेज compose:ui:ui-test-accessibility हैं. वहीं, TestRule को कॉल करने पर ये पैकेज compose:ui:ui-test-junit4-accessibility हैं (I547ef, b/391560768)
  • नई सिमैंटिक्स प्रॉपर्टी InputText जोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले, टेक्स्ट फ़ील्ड की वैल्यू कैप्चर करती है. (Iae46a)

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

  • इस समस्या को ठीक किया गया है. इसमें, अपने-आप भरने की सेवाएं, इनपुट टेक्स्ट के बजाय बदले गए आउटपुट टेक्स्ट को सेव करती थीं. (Iae46a, b/395911609, b/176949051)

वर्शन 1.8.0-beta02

12 फ़रवरी, 2025

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

नई सुविधाएं

  • Configuration#screenWidth/heightDp को कॉल करने के ख़िलाफ़ चेतावनी देने के लिए, लिंट चेक जोड़ा गया है - LocalWindowInfo.current.containerSize का इस्तेमाल, मौजूदा विंडो का साइज़ वापस पाने के लिए किया जा सकता है.

वर्शन 1.8.0-beta01

29 जनवरी, 2025

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

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

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

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

  • फ़ोकस से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, previouslyFocusedRect पैरामीटर (फ़ोकस की दिशा से जुड़ा) के साथ requestFocus(), ComposeView को स्किप कर देता था. (Ifdc2f, b/388590015)
  • GraphicsLayer.record { this@ContentDrawScope.drawContent() } का इस्तेमाल करते समय, कभी-कभी होने वाली NPE की समस्या को ठीक किया गया. अगर आपको इस तरह से drawContent() रिकॉर्ड करना है, तो पक्का करें कि आपने DrawScope के अंदर GraphicsLayer#record एक्सटेंशन फ़ंक्शन का इस्तेमाल किया हो. साथ ही, GraphicsLayer पर मौजूद सदस्य फ़ंक्शन का इस्तेमाल न किया हो. (I75fc0, b/389046242)
  • टेक्स्ट लेआउट से जुड़ी समस्या ठीक की गई. इस समस्या में, ऐनिमेशन के दौरान एलिप्सिस का इस्तेमाल करने पर, टेक्स्ट का अनुवाद कभी-कभी गलत हो जाता था. ज़्यादा जानकारी के लिए, b/389707025 देखें (Ie55b1, b/389707025)

वर्शन 1.8.0-alpha08

15 जनवरी, 2025

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

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

  • AutofillManager को ऐब्स्ट्रैक्ट क्लास बनाना. (I0a3b0)
  • फ़ोकस से जुड़ी कई समस्याओं को ठीक किया गया है. इनमें ये समस्याएं शामिल हैं: फ़ोकस किए जा सकने वाले आइटम के बिना ComposeView पर फ़ोकस करने की कोशिश करते समय आईएमई क्रैश हो जाता है, चाइल्ड AndroidViews में फ़ोकस बदल जाता है, और फ़ोकस का अनुरोध करने पर AndroidView छूट जाता है. (Ia03c3, b/369256395, b/378570682, b/376142752)
  • FocusEnterExitScope.cancelFocus() को cancelFocusChange() में बदलें (I89959)
  • अब RectInfo.calculateOcclusions() की मदद से, कंपोज़ेबल ऑक्लूज़न का हिसाब लगाया जा सकता है.
  • ग्लोबल लेआउट में होने वाले बदलावों के लिए लिसनर रजिस्टर करने के लिए, DelegatableNode पर एक्सटेंशन फ़ंक्शन जोड़ा गया. (I68b59)

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

  • ComposeContentTestRule.setContent का इस्तेमाल करते समय, टेस्ट किए जा रहे कंपोज़ेबल के लिए होस्ट के तौर पर इस्तेमाल की जाने वाली गतिविधि अब Theme.Material.Light.NoActionBar थीम का इस्तेमाल करती है. इससे एसडीके 35 को टारगेट करते समय, ActionBar को टेस्ट कॉन्टेंट के साथ ओवरलैप होने से रोका जा सकेगा. इस सुविधा से ऑप्ट आउट करने के लिए, ui-test-manifest पर निर्भरता हटाई जा सकती है. साथ ही, अपने चुने गए थीम के साथ ComponentActivity के लिए, अपने टेस्ट ऐप्लिकेशन के AndroidManifest.xml में गतिविधि की एंट्री जोड़ी जा सकती है. (I7ae1b, b/383368165)
  • एक जैसी वैरिएशन सेटिंग वाले संसाधन फ़ॉन्ट अब ज़्यादा कैश मेमोरी में सेव नहीं किए जाएंगे. इससे गलत वैरिएशन सेटिंग लागू नहीं होंगी. (If3dff, b/372044241)
  • AnnotatedString.fromHtml अब <ul>/<li> टैग के साथ काम करता है. (I7c2fe, b/299662276, b/139326648)

बाहरी योगदान

  • नया क्लिपबोर्ड इंटरफ़ेस और उसके लिए कंपोज़िशन लोकल जोड़ा गया. (I80809)

वर्शन 1.8.0-alpha07

11 दिसंबर, 2024

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

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

  • टूल के लिए, LayoutNode से मालिक की जानकारी दिखाई गई. (I26f7f)
  • LocalAutofillHighlightColor कंपोज़िशन लोकल में, कलर टाइप का इस्तेमाल किया जाता है. (I0e05b)
  • डेप्रिकेट किए गए UrlAnnotation और उसके तरीकों को एक्सपेरिमेंट के तौर पर मार्क किया गया है. (Ic0021)

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

  • BasicText या Text कंपोज़ेबल में LinkAnnotation का इस्तेमाल करने पर, IndexOutOfBoundsException के क्रैश होने की समस्या ठीक की गई (be7605, b/374115892)
  • कस्टम शेप वाले भरे हुए टेक्स्ट फ़ील्ड में, इंडिकेटर लाइन के न दिखने की समस्या को ठीक किया गया है. (I4f87f, b/380704151)
  • लंबे स्क्रीनशॉट में बैकग्राउंड के गायब होने की समस्या ठीक की गई. (I4d57a)
  • यह लाइब्रेरी अब JSpecify के nullness एनोटेशन का इस्तेमाल करती है. ये एनोटेशन, टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल के लिए, कंपाइलर के इस आर्ग्युमेंट का इस्तेमाल करना चाहिए: -Xjspecify-annotations=strict (यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से उपलब्ध है). (Idfef8, b/326456246)
  • Android Q+ पर चलने वाले ऐप्लिकेशन के लिए, वाइड गैमट और एचडीआर कलर के लिए Compose की सुविधा को अपडेट किया गया. (Icd8be, b/379135036)
  • अब लोड न होने वाले संसाधन फ़ॉन्ट, मेज़र में अपवाद दिखाने के बजाय डिफ़ॉल्ट फ़ॉन्ट पर वापस आ जाएंगे. (Ib6a49)
  • AndroidView को अलग करने और फिर से जोड़ने पर, फ़ोकस हट जाने की समस्या ठीक की गई. (I53446)
  • बाउंड लेआउट ऐक्शन से बाहर requestFocus() को स्वीकार करें. (Ia8461)

बाहरी योगदान

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

वर्शन 1.8.0-alpha06

13 नवंबर, 2024

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

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

  • stylusHoverIcon मॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)
  • ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले क्लास को इंटरफ़ेस में बदलता है. (I84914, b/376080755)
  • इसमें focusRequester और FocusTargetModifierNode, दोनों में requestFocus(FocusDirection) जोड़ा जाता है, ताकि किसी खास दिशा पर फ़ोकस किया जा सके. (I5d9ec, b/245755256)
  • FocusProperties.enter और FocusProperties.exit को onEnter और onExit से बदल दिया गया है. साथ ही, FocusDirection पैरामीटर के बजाय रिसीवर स्कोप का इस्तेमाल किया गया है. (I6e667)
  • टेक्स्ट टूलबार में ऑटोफ़िल की सुविधा जोड़ी गई है. (Ie6a4c)
  • Modifier.focusRestorer() (I99c03) में एपीआई से जुड़े बदलाव:
    • पैरामीटर का नाम बदलकर 'fallback' कर दिया गया है
    • पैरामीटर अब FocusRequester है, न कि लैम्डा
    • पैरामीटर अब गैर-शून्य है. इसकी डिफ़ॉल्ट वैल्यू, डिफ़ॉल्ट के तौर पर सेट है
  • ऑटोमैटिक तरीके से जानकारी भरने की सुविधा के मैनेजर इंटरफ़ेस से @Experimental एनोटेशन हटाना. यह सुविधा अब भी WIP है और इसे इस रिलीज़ में टारगेट किया जा रहा है. हालांकि, हम @Expemiental API (Id8398) को लॉन्च नहीं करना चाहते
  • LocalHapticFeedback अब डिफ़ॉल्ट रूप से HapticFeedback लागू करता है. ऐसा तब होता है, जब Vibrator API से पता चलता है कि हैप्टिक फ़ीडबैक की सुविधा काम करती है. HapticFeedbackType में ये जोड़े गए हैं - Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. Wear Compose में, देर तक क्लिक करके रखे जा सकने वाले कॉम्पोनेंट, जैसे कि Button, IconButton, TextButton, और Card अब LONG_PRESS हैप्टिक फ़ीडबैक देते हैं. ऐसा तब होता है, जब देर तक क्लिक करके रखने वाले हैंडलर को उपलब्ध कराया गया हो. (I5083d)
  • यह कुकी, OverscrollConfiguration और LocalOverscrollConfiguration को हटाती है. साथ ही, rememberPlatformOverscrollFactory को जोड़ती है, ताकि डिफ़ॉल्ट ओवरस्क्रोल लागू करने का इंस्टेंस बनाया जा सके या उसके पैरामीटर को पसंद के मुताबिक बनाया जा सके. ओवरस्क्रोल की सुविधा बंद करने के लिए, LocalOverscrollConfiguration provides null के बजाय LocalOverscrollFactory provides null का इस्तेमाल करें. ग्लो का रंग / पैडिंग बदलने के लिए, LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) के बजाय LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516)
  • एक्सपेरिमेंट के तौर पर उपलब्ध GlobalAssertions एपीआई को हटा दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय, enableAccessibilityChecks() का इस्तेमाल करें. (I59322)

वर्शन 1.8.0-alpha05

30 अक्टूबर, 2024

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

नई सुविधाएं

इस रिलीज़ में, ऑटोमैटिक भरने की सुविधा को फ़ीचर फ़्लैग के पीछे रखा गया है. हम परफ़ॉर्मेंस को बेहतर बनाने के लिए काम कर रहे हैं. साथ ही, एपीआई के बारे में शुरुआती सुझाव/राय पाने या शिकायत करने के लिए इंतज़ार कर रहे हैं. सुझावों/राय के आधार पर, एपीआई में बदलाव किए जा सकते हैं.

  • अपने-आप भरने की सुविधा चालू करने के लिए, onCreate में ComposeUiFlags.isSemanticAutofillEnabled को true पर सेट करें. साथ ही, कंपोज़ स्नैपशॉट के सबसे नए वर्शन का इस्तेमाल करें.
  • ऑटोमैटिक तरीके से भरने की सुविधा के इस वर्शन में, क्रेडेंशियल को मैन्युअल तरीके से सेव किया जा सकता है. इसके अलावा, 'मज़बूत पासवर्ड का सुझाव दें' सुविधा और नेविगेशन की मदद से भी क्रेडेंशियल सेव किए जा सकते हैं. यह सुविधा, ऑटोमैटिक भरने की सुविधा वाले फ़ील्ड पर फ़ोकस करने या टेक्स्ट कॉम्पोनेंट पर टेक्स्ट टूलबार के ज़रिए ऑटोमैटिक भरने की सुविधा चालू होने पर भी काम करती है. ऑटोमैटिक भरने की सुविधा पूरी होने पर, कॉम्पोनेंट हाइलाइट हो जाएगा.

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

  • ऑटोमैटिक भरने की सुविधा के इंटरफ़ेस में बदलाव किया गया है, ताकि वह expect/actual स्ट्रक्चर के मुताबिक काम करे. (I22dce)
  • CompositionLocal को पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट किए गए रंग में बदलाव करने के लिए किया जा सकता है. (I32092)
  • Modifier.onRectChanged एपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसकी मदद से, LayoutNode की रूट/विंडो/स्क्रीन के हिसाब से पोज़िशन और साइज़ के लिए सदस्यता ली जा सकती है. यह एपीआई, इस्तेमाल के कई ऐसे उदाहरणों को हल करता है जो मौजूदा onGloballyPositioned मॉडिफ़ायर करता है. हालांकि, यह ऐसा बहुत कम ओवरहेड के साथ करता है. साथ ही, एपीआई में कॉल बैक को डीबाउंस और थ्रॉटल करने की सुविधाएं होती हैं, जो इस्तेमाल के उदाहरण की मांग के हिसाब से होती हैं. (Id28c7, b/372765423, b/372757007, b/372994338)
  • ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल को बेहतर बनाया गया है. इसमें commit() और cancel() एपीआई शामिल किए गए हैं. इनकी मदद से, उपयोगकर्ता नए क्रेडेंशियल सेव कर सकते हैं. (I2da00)
  • इसमें नया AutofillManager इंटरफ़ेस शामिल किया गया है. इसका इस्तेमाल करके, उपयोगकर्ताओं के लिए ऑटोमैटिक तरीके से भरने की सुविधा को बेहतर बनाया जा सकता है. साथ ही, इसमें isSemanticAutofillEnabled फ़्लैग भी शामिल किया गया है. इसका इस्तेमाल करके, ऑटोमैटिक तरीके से भरने की सुविधा के इस नए वर्शन को चालू किया जा सकता है. (I9d484)
  • Modifier.onRectChanged एपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसकी मदद से, LayoutNode की रूट/विंडो/स्क्रीन के हिसाब से पोज़िशन और साइज़ के लिए सदस्यता ली जा सकती है. यह एपीआई, इस्तेमाल के कई ऐसे उदाहरणों को हल करता है जो मौजूदा onGloballyPositioned मॉडिफ़ायर करता है. हालांकि, यह ऐसा बहुत कम ओवरहेड के साथ करता है. साथ ही, एपीआई में कॉल बैक को डीबाउंस और थ्रॉटल करने की सुविधाएं होती हैं, जो इस्तेमाल के उदाहरण की मांग के हिसाब से होती हैं. (I3c8fa)
  • ऑटोमैटिक तरीके से भरने की बेहतर सुविधा के लिए, सिमैंटिक प्रॉपर्टी और डेटा टाइप जोड़ें. (I52c7d)
  • AnnotatedString बिल्डर में मौजूद सभी तरीके अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं (Ia89c8, b/261561823)

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

  • अगर कंपोज़ में एम्बेड किए गए व्यू पर फ़ोकस किया जाता है, तो अब उन्हें रोटरी इवेंट मिल सकते हैं (I4d53a, b/320510084)
  • उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव करने पर, अलग-अलग तरह के संसाधन अपडेट नहीं होते थे (Ia9b99, b/352336694)
  • हमने उस समस्या को ठीक कर दिया है जिसकी वजह से, Sony के कुछ पुराने डिवाइसों पर POBox Japanese Keyboard का इस्तेमाल करते समय, TextField ठीक से काम नहीं कर रहा था. (Ia9b99, b/373743376)
  • डायलॉग को स्क्रीन के बीच में दिखाने के बजाय सबसे नीचे दिखाने की समस्या ठीक की गई (Ia2ec, b/373093006)
  • Targeting API 35+ अब डायलॉग को decorFitsSystemWindows को गलत पर सेट करने के लिए मजबूर नहीं करता है. (Ibc94, b/364492593)
  • विंडो (जैसे, डायलॉग और मुख्य कॉन्टेंट) के बीच लेयर ले जाते समय क्रैश होने की समस्या ठीक की गई (I675ba, b/330955281)

वर्शन 1.8.0-alpha04

16 अक्टूबर, 2024

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

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

  • DelegatableNode#onDensityChange और DelegatableNode#onLayoutDirectionChange कॉलबैक जोड़े गए हैं, ताकि नोड की स्थिति में बदलाव होने पर उसे अपडेट किया जा सके (I04f3e, b/340662451)
  • यह कुकी, WindowInfo#containerSize को जोड़ती है, ताकि मौजूदा विंडो के कॉन्टेंट कंटेनर का साइज़ पता चल सके. इसे LocalWindowInfo का इस्तेमाल करके वापस पाया जा सकता है. (Idc38c, b/369334429, b/360343819)
  • नेस्ट किए गए स्क्रोल करने लायक आइटम के लिए एक फ़िक्स जोड़ा गया है. इन आइटम को फ़्लिंग के दौरान नोड ट्री से हटा दिया जाता है. अब ये नोड, फ़्लिंग को रद्द कर देंगे और बची हुई वेलोसिटी के साथ onPostFling इवेंट को सही तरीके से भेजेंगे. हम रिग्रेशन के मामलों में व्यवहार को कंट्रोल करने के लिए, NewNestedScrollFlingDispatchingEnabled फ़्लैग भी लॉन्च कर रहे हैं. इस फ़्लैग को बीटा वर्शन से पहले हटा दिया जाएगा. (I05c37, b/371168883)
  • PointerInputModifierNode#touchBoundsExpansion को जोड़ा गया है. इसका इस्तेमाल, किसी सिंगल पॉइंटर इनपुट मॉडिफ़ायर के टच बाउंड को बड़ा करने के लिए किया जा सकता है. (Iccf02, b/335339283)
  • यह कुकी, WindowInfo#containerSize को जोड़ती है, ताकि मौजूदा विंडो के कॉन्टेंट कंटेनर का साइज़ पता चल सके. इसे LocalWindowInfo का इस्तेमाल करके वापस पाया जा सकता है. (I27767, b/369334429, b/360343819)
  • TextFields' से readOnly हटाएं, ताकि इसे स्टेबल फ़ाउंडेशन वर्शन पर पिन किया जा सके. (I3aaba)
  • Paragraph और ParagraphIntrinsics अब AnnotatedString पर लागू किए गए सभी एनोटेशन की सूची लेता है. इससे पहले, इसमें सिर्फ़ SpanStyles (I12f80) की सूची होती थी

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

  • AnnotatedString में पैराग्राफ़ को मैनेज करने के तरीके को अपडेट किया गया है. इससे पहले, सिर्फ़ ऐसे पैराग्राफ़ बनाए जा सकते थे जो एक-दूसरे से अलग हों. अब AnnotatedString की मदद से, पूरी तरह से ओवरलैप होने वाले पैराग्राफ़ बनाए जा सकते हैं. इन्हें एक साथ मर्ज कर दिया जाएगा. साथ ही, नेस्ट किए गए पैराग्राफ़ भी बनाए जा सकते हैं. ऐसे में, बाहरी पैराग्राफ़ को अंदरूनी पैराग्राफ़ की सीमाओं के हिसाब से बांटा जाएगा. साथ ही, अंदरूनी पैराग्राफ़ की स्टाइल को बाहरी पैराग्राफ़ की स्टाइल के साथ मर्ज कर दिया जाएगा (Ic9554)
  • शून्य लंबाई वाले LinkAnnotation की वजह से, AnnotatedString में क्रैश होने की समस्या ठीक की गई. (89aac6)

वर्शन 1.8.0-alpha03

2 अक्टूबर, 2024

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

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

  • Kotlin का वर्शन 1.9 पर अपडेट किया गया (I1a14c)
  • सुलभता सेवाओं के लिए, पेजर्स में सूची के व्यवहार को दोहराने के लिए, नई सिमैंटिक्स भूमिका, कैरसेल पेश की गई है. (Id354b, b/354109776, b/239672673)
  • invisibleToUser() का नाम बदलकर hideFromAccessibility कर दें. इसके काम करने के तरीके में कोई बदलाव नहीं हुआ है. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें. (Ib43a3)

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

  • SensitiveContent मॉडिफ़ायर (Ib0442) के लिए दस्तावेज़ अपडेट किए जा रहे हैं
  • उस समस्या को ठीक कर दिया गया है जिसमें Android के कुछ वर्शन पर, एलिवेशन शैडो के साथ सामान्य आउटलाइन क्लिप को अनदेखा कर दिया जाता था
  • उस समस्या को ठीक किया गया है जिसमें Android के कुछ वर्शन पर, सामान्य आउटलाइन वाली क्लिप के बारे में बताने पर खाली क्लिप लागू हो जाती थीं.
  • जब IME किसी बाहरी व्यू पर चालू होता है और ComposeView पर फ़ोकस करने के लिए 'अगला' कार्रवाई का इस्तेमाल किया जाता है, तब थ्रो की गई गड़बड़ी को ठीक किया गया. clearFocus() का व्यवहार, एपीआई < 28 पर View के व्यवहार के जैसा होता है. इसमें clearFocus() की वजह से, डिफ़ॉल्ट View पर फ़ोकस किया जा सकता है.
  • LazyList में अलग किए गए नोड पर प्लेसमेंट होने की समस्या को ठीक किया गया है. इसके लिए, अलग-अलग लेआउट पास के लिए सबकंपोज़िशन को मैनेज करने की सुविधा जोड़ी गई है.
  • उस समस्या को ठीक किया गया है जिसमें फ़ोकस को TextField से EditText या किसी अन्य व्यू पर आधारित एडिटर पर स्विच करने पर, सॉफ़्टवेयर कीबोर्ड फ़्लिकर करता था.
  • नेस्ट किए गए स्क्रोल नोड अब अलग होने के बाद, onPostFling इवेंट को सही तरीके से डिस्पैच करेंगे.
  • परफ़ॉर्मेंस में सामान्य सुधार

वर्शन 1.8.0-alpha02

18 सितंबर, 2024

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

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

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

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

  • डायलॉग ठीक करें dismissOnClickoutside (39a3d, b/364508685)
  • डायलॉग कॉन्टेंट की परछाइयों को न काटें (e8e2f, b/363027803)
  • फ़ोकस सर्च के कंपोज़ और व्यू के बीच स्विच करने पर होने वाली गड़बड़ी को ठीक किया गया है (58377, b/350534714)

बाहरी योगदान

  • AlignmentLines Map अब VerticalAlignmentLine या HorizontalAlignmentLine कॉन्क्रीट टाइप स्वीकार करता है. (I02912)
  • ByteArray.decodeToImageBitmap(): ImageBitmap का नया तरीका. (I83c21)

वर्शन 1.8.0-alpha01

4 सितंबर, 2024

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

वर्शन 1.7

वर्शन 1.7.8

12 फ़रवरी, 2025

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

वर्शन 1.7.7

29 जनवरी, 2025

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

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

  • Text कंपोज़ेबल को LinkAnnotation के साथ AnnotatedString पास करते समय, IndexOutOfBoundsException को ठीक किया गया. (Ic96d2)
  • कुछ मामलों में, AnnotatedString में LinkAnnotation का इस्तेमाल करने पर, टेस्ट में टाइमआउट की समस्या ठीक की गई है. (I04a03)

वर्शन 1.7.6

11 दिसंबर, 2024

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

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

  • पहले, जब फ़ोकस सिस्टम में अमान्य होने की प्रोसेस पूरी नहीं हुई होती थी, तब मुख्य इवेंट का पता चलने पर हम गड़बड़ी का मैसेज दिखाते थे. अब हम इसके बजाय गड़बड़ी को लॉग करते हैं (I7ea0, b/346370327).
  • SemanticsPropertyReceiver.invisibleToUser() से एक्सपेरिमेंटल एनोटेशन हटा दिया गया है. इसे 1.8 वर्शन में बंद कर दिया जाएगा. इसके बजाय, SemanticsPropertyReceiver.hideFromAccessibility() का इस्तेमाल किया जाएगा. (I448f0, b/376479686)
  • हमने उस समस्या को ठीक कर दिया है जिसकी वजह से, Sony के कुछ पुराने डिवाइसों पर POBox Japanese Keyboard का इस्तेमाल करते समय, TextField ठीक से काम नहीं कर रहा था. (I94e0e, b/373743376)
  • ऐक्सेसिबिलिटी से जुड़ी उस समस्या को ठीक किया गया है जिसमें TalkBack, BasicText के inlineContent के बारे में सूचना नहीं देता था. (I67bcb, b/376479686)

वर्शन 1.7.5

30 अक्टूबर, 2024

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

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

  • उन समस्याओं को ठीक किया गया है जिनकी वजह से, कस्टम आउटलाइन के साथ एलिवेशन और क्लिपिंग ठीक से रेंडर नहीं हो रही थी.
  • यह अपडेट, ज़ीरो-विड्थ LinkAnnotation की वजह से होने वाले टेक्स्ट क्रैश की समस्या को ठीक करता है. (Ic1e2e)
  • जब बटन को क्लिक किए जा सकने वाले Text कंपोज़ेबल के तौर पर बनाया जाता है, तब यह फ़ंक्शन Talkback में सूचना से जुड़ी समस्या को ठीक करता है. (I1f588)

वर्शन 1.7.4

16 अक्टूबर, 2024

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

वर्शन 1.7.3

2 अक्टूबर, 2024

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

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

  • उस समस्या को ठीक कर दिया गया है जिसमें किसी सामान्य आउटलाइन क्लिप को चुनने पर, Android के कुछ वर्शन में क्लिप की सीमा खाली दिखती थी.
  • जब IME किसी बाहरी व्यू पर चालू होता है और ComposeView पर फ़ोकस करने के लिए 'अगला' कार्रवाई का इस्तेमाल किया जाता है, तब थ्रो की गई गड़बड़ी को ठीक किया गया. clearFocus() का व्यवहार, एपीआई < 28 पर View के व्यवहार के जैसा होता है. इसमें clearFocus() की वजह से, डिफ़ॉल्ट View पर फ़ोकस किया जा सकता है.
  • उस समस्या को ठीक कर दिया गया है जिसमें लुकअहेड इनवैलिडेशन के लिए गलत placeOrder का इस्तेमाल किया गया था. इसलिए, उस समस्या को ठीक कर दिया गया है जिसमें लुकअहेड प्लेसमेंट को छोड़ दिया गया था.

वर्शन 1.7.2

18 सितंबर, 2024

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

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

  • ज़्यादा जानकारी वाली ट्रेसिंग को हटाने से, सुलभता नोड की जानकारी और सिमैंटिक्स इवेंट की परफ़ॉर्मेंस बेहतर हुई है. (I89156, b/362530618)
  • ComposeView को बहुत बड़ा मेज़रमेंट साइज़ (da5db, b/347036173) पास करने पर, अब यह क्रैश नहीं होगा
  • सुलभता सुविधाओं वाले स्क्रीनरीडर से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, बटन पर LiveRegion सूचनाएं नहीं दी जाती थीं. (f66fa7, b/348590026)

वर्शन 1.7.1

10 सितंबर, 2024

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

वर्शन 1.7.0

4 सितंबर, 2024

androidx.compose.ui:ui-*:1.7.0 रिलीज़ हो गया है.

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

वर्शन 1.7.0 में हुए अहम बदलावों के बारे में जानने के लिए, यह ब्लॉग पोस्ट पढ़ें.

वर्शन 1.7.0-rc01

21 अगस्त, 2024

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

ध्यान देने लायक बदलाव

  • ui:ui मॉड्यूल अब foundation:foundation के कम से कम 1.7.0-rc01 या इसके बाद के वर्शन की ज़रूरत को लागू करता है. इस नियम को इसलिए लागू किया गया है, ताकि NestedScrollSource से जुड़े उन बदलावों को ठीक किया जा सके जो 1.7.0-alpha01 के शुरुआती वर्शन में यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन के बीच काम नहीं कर रहे थे.

वर्शन 1.7.0-beta07

7 अगस्त, 2024

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

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

  • टेक्स्ट इनपुट से जुड़े SemanticsNodeInteraction फ़ंक्शन performTextReplacement, performTextInput, और performTextClearance को अब सिर्फ़ पढ़ने के लिए उपलब्ध TextFields पर कॉल करने पर, पुष्टि से जुड़ी गड़बड़ियां दिखेंगी. (I4ae8f)

वर्शन 1.7.0-beta06

24 जुलाई, 2024

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

वर्शन 1.7.0-beta05

10 जुलाई, 2024

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

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

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

वर्शन 1.7.0-beta04

26 जून, 2024

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

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

  • बहुत बड़ी टेक्स्ट लाइनों (जैसे, 10 हज़ार वर्ण) को मेज़र करते समय क्रैश होने की समस्या ठीक की गई (8157ab)
  • GraphicsLayer एपीआई के लिए, सॉफ़्टवेयर रेंडरिंग की सुविधा बंद करें. (35ddd8)
  • लेयर के डेटा को सेव रखने के लॉजिक में क्रैश की समस्या को ठीक किया गया है. (70b13e)
  • लेयर ऑब्जेक्ट को फिर से इस्तेमाल करने की सुविधा को पहले जैसा कर दिया गया है, क्योंकि इससे रेंडरिंग से जुड़ी समस्याएं आ रही थीं. (70b13e)

वर्शन 1.7.0-beta03

12 जून, 2024

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

वर्शन 1.7.0-beta02

29 मई, 2024

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

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

  • SemanticsProperties.Editable का नाम बदलकर IsEditable कर दिया गया है और SemanticsPropertyReceiver.editable को isEditable में बदल दिया गया है. अब यह प्रॉपर्टी बूलियन है और इसे हमेशा टेक्स्ट फ़ील्ड से तय किया जाता है. (I8acd8)
  • सुलभता बेंचमार्क पैरामीटर का नाम बदलें. (I3d440)
  • लिंक को स्टाइल करने के लिए एपीआई अपडेट किया गया है: TextLinkStyles अब LinkAnnotation कंस्ट्रक्टर और AnnotatedString.fromHtml तरीके (I90b2b) का हिस्सा है. मटीरियल (I5477b) से TextDefaults को भी हटाया गया

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

  • इसके मकसद को बेहतर तरीके से दिखाने के लिए, LayoutCoordinates.introducesFrameOfReference का नाम बदलकर LayoutCoordinates.introducesMotionFrameOfReference कर दिया गया है. उस फ़्लैग के आधार पर निर्देशांकों का हिसाब लगाने के लिए, संबंधित फ़ंक्शन का नाम बदला गया. (I3a330)

वर्शन 1.7.0-beta01

14 मई, 2024

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

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

  • performCustomAccessibilityActionLabelled का नाम बदलकर performCustomAccessibilityActionWithLabel और performCustomAccessibilityActionWhere का नाम बदलकर performCustomAccessibilityActionWithLabelMatching कर दिया गया है. (I5387f)
  • AnnotatedString.hasEqualsAnnotations अब hasEqualAnnotations (I685c0) हो गया है
  • टेक्स्ट में, Material थीम वाले लिंक पाने के लिए एपीआई को अपडेट किया गया है. खास तौर पर, थीम वाले LinkAnnotations बनाने और थीम वाले लिंक के साथ एचटीएमएल पार्स करने के लिए, TextDefaults से तरीकों को हटा दिया गया है. इसके बजाय, एक TextLinkStyles क्लास जोड़ी गई है. इससे लिंक को Text कंपोज़ेबल के पैरामीटर के तौर पर स्टाइल किया जा सकता है. (I31b93)

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

  • इवेंट के दौरान पॉइंटर इनपुट मॉडिफ़ायर को डाइनैमिक तरीके से जोड़ने से जुड़े इस्तेमाल के अन्य उदाहरणों को ठीक किया गया है 63e1504

वर्शन 1.7.0-alpha08

1 मई, 2024

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

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

  • बदले जा सकने वाले शेप को लागू करने की सुविधा जोड़ी गई. Shape#createOutline को अब ग्राफ़िक्स लेयर में देखा जाता है. इसलिए, इसके अंदर मौजूद स्टेट वैल्यू को पढ़ने पर, स्टेट में बदलाव होने पर अमान्य हो जाएंगी. इससे शेप के बेहतर ऐनिमेशन बनाए जा सकेंगे. (Id1629, b/326070216)
  • isPositionedByParentWithDirectManipulation का नाम बदलकर introducesFrameOfReference कर दिया गया है. ध्यान दें कि अब इसका असर उल्टा होता है. इसका मतलब है कि डिफ़ॉल्ट रूप से, ज़्यादातर LayoutCoordinates रेफ़रंस फ़्रेम पेश करते हैं. साथ ही, जब प्रॉपर्टी को सीधे तौर पर कंट्रोल किया जाता है, तब ही यह गलत होगी. सिर्फ़ उन स्थितियों के बारे में क्वेरी करने के लिए जिनमें रेफ़रंस फ़्रेम शामिल होता है, positionInLocalFrameOfReference(...) का इस्तेमाल करें. इसके अलावा, LookaheadScope से positionInLocalLookaheadFrameOfReference भी किया जा सकता है. (Ifc5f7)
  • LookaheadScope एपीआई को स्टेबल बना दिया गया है (I21507)
  • एपीआई काउंसिल के सुझाव के मुताबिक, getScrollViewportLength के लिए ऐक्शन लैंबडा बदलें. (Ibc74a)
  • GraphicsLayer आउटलाइन एपीआई को अपडेट किया गया है, ताकि वे int के बजाय फ़्लोट पैरामीटर का इस्तेमाल कर सकें. फ़्लोट पर आधारित ऑफ़सेट और साइज़ की इनलाइन क्लास (I2fb03, b/333863462) में, पहले से मौजूद Unspecified कॉन्स्टेंट के पक्ष में UnsetOffset/UnsetSize IntSize सेंटिनल वैल्यू हटा दी गई हैं
  • जांच के दौरान माउस इनपुट डालने पर, MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick(), MouseInjectionScope.longClick() अब button: MouseButton पैरामीटर स्वीकार करते हैं, ताकि इन्हें ज़्यादातर मामलों में इस्तेमाल किया जा सके. सभी तरीकों के लिए डिफ़ॉल्ट वैल्यू MouseButton.Primary होती है. (I31a23, b/190493367, b/261439695)
  • LinkInteractionListener में मौजूद onClicked का नाम बदलकर onClick कर दिया गया. (Iaa35c)
  • TextInclusionStrategy.isInside का नाम बदलकर isIncluded कर दें. Paragraph/MultiParagraph#getRangeForRect() के रिटर्न टाइप को बिना किसी वैल्यू वाला टाइप न बनाएं. (I51f26)

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

  • reverseScrolling=true की मदद से स्क्रोल किए जा सकने वाले कंटेनर के लिए, लंबा स्क्रीनशॉट कैप्चर करने की सुविधा से जुड़ी समस्या ठीक की गई. (I7c59c)

बाहरी योगदान

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

वर्शन 1.7.0-alpha07

17 अप्रैल, 2024

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

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

  • ClickableText को 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, लिंक से मेल खाने वाला AnnotatedString LinkAnnotation बनाएं और इस AnnotatedString को Text कंपोज़ेबल में पास करें. (I34d4b, b/323346994)
  • हैंडराइटिंग के जेस्चर के लिए ViewConfiguration.HandwritingGestureLineMargin की सुविधा लॉन्च की गई. BasicTextField के लिए JoinOrSplit जेस्चर की सुविधा जोड़ी गई (Ie6e13, b/325660505)
  • FocusProperties.enter और FocusProperties.exit अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. FocusDirection.Enter और FocusDirection.Exit अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. FocusRequester.Cancel अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है (I461a1, b/261564106)
  • लेआउट के कोऑर्डिनेट के लिए क्वेरी करते समय, अब excludeDirectManipulationOffset आर्ग्युमेंट का इस्तेमाल किया जा सकता है. इससे, पैरंट लेआउट के सेट किए गए ऑफ़सेट को बाहर रखा जा सकता है. पैरंट लेआउट ने अपने बच्चों को Placeable.PlacementScope.withDirectManipulationPlacement का इस्तेमाल करके रखा था. इसी तरह, अगर कोई लेआउट अपने चाइल्ड व्यू की पोज़िशन को बार-बार बदलता है, तो अब वह उन्हें withDirectManipulationPlacement का इस्तेमाल करके रख सकता है. जैसे, स्क्रोल करने की सुविधा, जो डिफ़ॉल्ट रूप से लागू होती है. इससे approachLayout पर आधारित ऐनिमेशन को ज़्यादा सहज बनाने में मदद मिलती है. अब इसमें यह तय करने का विकल्प होता है कि किस ऑफ़सेट को ऐनिमेट करना है और ऐनिमेशन का तरीका तय करते समय, किस ऑफ़सेट को सीधे तौर पर लागू करना है. (I60ec7)
  • लंबे स्क्रीनशॉट के लिए, फ़ीचर फ़्लैग हटा दिया गया है. (I28648, b/329128246)
  • LazyColumn अब लंबे स्क्रीनशॉट में स्टिकी हेडर को सही तरीके से रेंडर करेगा. (I8d239, b/329296635)
  • NestedScroll सोर्स को खींचकर छोड़ना और फ़्लिंग करना, अब UserInput और SideEffect से बदल दिया गया है. ऐसा इसलिए किया गया है, ताकि इन सोर्स की बढ़ी हुई परिभाषा को शामिल किया जा सके. अब इनमें ऐनिमेशन (साइड इफ़ेक्ट) और माउस व्हील और कीबोर्ड (UserInput) शामिल हैं. (I40579)
  • ApproachLayoutModifierNode और Modifier.approachLayout अब स्टेबल हो गए हैं. इनमें नए isMeasurementApproachInProgress() और isPlacementApproachInProgress() जोड़े गए हैं, जो पुराने isMeasurementApproachComplete() और isPlacementApproachComplete() की जगह लेंगे.
  • बहिष्कृत किए गए intermediateLayout मॉडिफ़ायर को हटाया गया. (I3e91c)
  • GraphicsLayer#buildLayer का नाम बदलकर record कर दिया गया है, ताकि यह Displaylist के साथ काम करने वाले एपीआई के begin/endRecording तरीकों को दिखा सके. जैसे, RenderNode और Picture.
  • rememberGraphicsLayer को rememberObserver का फ़ायदा पाने के लिए अपडेट किया गया. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, LinkAnnotation.Url का इस्तेमाल करें. अगर Material theming का इस्तेमाल किया जा रहा है, तो TextDefaults ऑब्जेक्ट का इस्तेमाल करके एनोटेशन बनाएं. इसमें Material theming लागू की गई हो (I8d180, b/323346545)
  • टेक्स्ट लिंक के लिए, सामान्य स्टाइलिंग के साथ-साथ दबाए जाने की स्थिति में स्टाइलिंग का विकल्प भी जोड़ा गया है. इसके अलावा, कर्सर घुमाने और फ़ोकस करने की सुविधा भी जोड़ी गई है (I5f864, b/139312671)
  • String.parseAsHtml का नाम बदलकर AnnotatedString.Companion.fromHtml कर दिया गया है. (I43dcd)
  • parseAsHtml तरीके में स्टाइलिंग के तर्क (linkStyle, focusedLinkStyle, hoveredLinkStyle) और लिंक इंटरैक्शन लिसनर जोड़ा गया. <a> टैग की मदद से एचटीएमएल टैग की गई स्ट्रिंग को पार्स करते समय, यह तरीका ऐसे हर टैग के लिए LinkAnnotation.Url बनाएगा. साथ ही, स्टाइलिंग ऑब्जेक्ट और लिंक इंटरैक्शन लिसनर को हर एनोटेशन में पास करेगा. (I7c977)
  • LinkAnnotation अब राज्य के हिसाब से स्टाइलिंग के आर्ग्युमेंट और LinkInteractionListener लेता है. हाइपरलिंक पाने के लिए, इस एनोटेशन को AnnotatedString में जोड़ें. focusedState और/या hoveredState पास करके, लिंक के लिए विज़ुअल configuration तय किया जा सकता है. ऐसा तब किया जाता है, जब लिंक पर फ़ोकस किया जाता है और/या उस पर कर्सर घुमाया जाता है. (I81ce4, b/139312671)
  • ImeOptions.hintLocales अब नल नहीं हो सकता. अगर आपको खाली स्थानीय भाषा की सूची पास करनी है, तो कृपया LocaleList.Empty का इस्तेमाल करें. (Ic5bc4)

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

  • यह खराब/करप्ट किए गए पुराने इनपुट इवेंट डेटा को आसानी से मैनेज करता है. साथ ही, खराब ऑफ़सेट डेटा को अनदेखा करता है.
  • इस अपडेट से, पॉइंटर इनपुट इवेंट की चालू स्ट्रीम के दौरान, किसी दूसरे पॉइंटर इनपुट मॉडिफ़ायर से पहले डाइनैमिक तरीके से पॉइंटर इनपुट मॉडिफ़ायर जोड़ने पर होने वाले अनचाहे पॉइंटर इवेंट ठीक किए जाते हैं. उदाहरण के लिए, होवर एंटर और होवर एक्ज़िट [माउस/स्टाइलस] के बीच.

वर्शन 1.7.0-alpha06

3 अप्रैल, 2024

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

नई सुविधाएं

  • स्टाइल की गई स्ट्रिंग के लिए parseAsHtml तरीका जोड़ा गया: इससे एचटीएमएल टैग से मार्क की गई स्ट्रिंग को AnnotatedString में बदला जा सकता है. ध्यान दें कि सभी टैग इस्तेमाल नहीं किए जा सकते. उदाहरण के लिए, फ़िलहाल बुलेट लिस्ट नहीं दिखाई जा सकती. (I84d3d, I30626, b/139326648)
  • Compose के स्क्रोल कंटेनर में लंबी स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (ScrollCaptureCallback) का इस्तेमाल किया गया है. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हो सकता है कि यह फ़िलहाल सभी मामलों में ठीक से काम न करे. इस वजह से, फ़िलहाल यह सुविधा डिफ़ॉल्ट रूप से बंद है. ऑप्ट-इन करने के लिए, ComposeFeatureFlag_LongScreenshotsEnabled फ़्लैग को सही पर सेट करें. (I2b055, b/329296471)

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

  • fun ClipEntry.getMetadata() को बदलकर val ClipEntry.clipMetadata कर दिया गया है. (I50155)
  • ClipboardManager.getClipMetadata और ClipboardManager.hasClip फ़ंक्शन हटा दिए गए हैं. मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए, कृपया clipEntry.getMetadata() का इस्तेमाल करें. यह भी देखें कि ClipboardManager.getClip का नतीजा शून्य है या नहीं, ताकि यह पता चल सके कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं. (I50498)
  • अब GraphicsLayer ऑब्जेक्ट को placeable.placeWithLayer() फ़ंक्शन (I1b22f) में पास किया जा सकता है
  • ClipboardManager.setClip अब क्लिपबोर्ड को मिटाने के लिए, null वैल्यू स्वीकार करता है. (I7d2e9)
  • बिल्ड टूलिंग (I99531) में लागू करने की जानकारी के तौर पर इस्तेमाल किए गए व्यू छिपाने में मदद करने के लिए, संसाधन आईडी जोड़े गए
  • GraphicsLayer#toImageBitmap में, GraphicsLayer को निलंबित करने का तरीका जोड़ा गया है, ताकि बिटमैप के कॉन्टेंट को रेंडर किया जा सके. यह एपीआई लेवल 22 और इसके बाद के वर्शन पर, हार्डवेयर की मदद से रेंडर करने की प्रोसेस है. यह 99% से ज़्यादा Android डिवाइसों पर काम करती है. Android के एपीआई लेवल 21 पर, यह सॉफ़्टवेयर रेंडरिंग पर वापस आ जाता है. (I9e114)
  • Android RectF को ComposeRect में बदलने का हेल्पर तरीका (I39925, b/325660505)
  • सभी KeyboardOptions पैरामीटर की वैल्यू अब डिफ़ॉल्ट रूप से 'तय नहीं की गई' होती है. KeyboardOptions.merge तरीका जोड़ा गया.
  • KeyboardOptions.autoCorrect का नाम बदलकर autoCorrectEnabled कर दिया गया है. साथ ही, इसे शून्य पर सेट किया जा सकता है. शून्य का मतलब है कि कोई वैल्यू नहीं दी गई है. (Ia8ba0, b/295951492)
  • BasicTextField(state) वैरिएंट और BasicSecureTextField अब सॉफ़्टवेयर कीबोर्ड से की गई कार्रवाइयों को प्रोसेस करने के लिए, KeyboardActions के बजाय KeyboardActionHandler का इस्तेमाल करते हैं. (I58dda)

वर्शन 1.7.0-alpha05

20 मार्च, 2024

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

नई सुविधाएं

  • डिसप्ले लिस्ट में ड्राइंग कमांड रिकॉर्ड करने के लिए, नया GraphicsLayer API लॉन्च किया गया है. साथ ही, ऐसी अतिरिक्त प्रॉपर्टी भी लॉन्च की गई हैं जो डिसप्ले लिस्ट की रेंडरिंग पर असर डालती हैं. इससे किसी मुश्किल सीन को छोटे-छोटे हिस्सों में बांटने के लिए, आइसोलेशन बाउंड्री मिलती है. इन हिस्सों को एक-दूसरे से अलग अपडेट किया जा सकता है. इसके लिए, पूरे सीन को फिर से बनाने की ज़रूरत नहीं होती. GraphicsLayer में किए गए बदलावों को, डिसप्ले लिस्ट को फिर से रिकॉर्ड किए बिना लागू किया जा सकता है. Modifier.graphicsLayer के उलट, GraphicsLayer की मदद से कंपोज़ेबल कॉन्टेंट को कहीं और रेंडर किया जा सकता है. यह ऐनिमेशन के ऐसे मामलों में काम आता है जहां कॉन्टेंट को अलग-अलग सीन में रेंडर किया जाना होता है.

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

  • GraphicsLayer.draw(Canvas) अब सार्वजनिक एपीआई नहीं है. लेयर बनाने के लिए, कृपया DrawScope.drawLayer(GraphicsLayer) एक्सटेंशन फ़ंक्शन का इस्तेमाल करें. (I7a7c0)
  • restrictedConstraints() को दो तरीकों में बांटा गया है: fitPrioritizingWidth() और fitPrioritizingHeight() (I6d7fd)
  • Android L के लिए HardwareCanvas स्टब पेश किया गया (I1c3b5, b/288494724)
  • Compose फ़्रेमवर्क को अपडेट किया गया है, ताकि GraphicsContext कंपोज़िशन लोकल को दिखाया जा सके. साथ ही, Owner, DelegateableNode, और drawWithCache Modifier के लागू करने के तरीके को अपडेट किया गया है, ताकि स्कोप किए गए ऐक्सेस के लिए GraphicsContext को दिखाया जा सके. इससे Modifiers को बंद करने पर, GraphicsLayer इंस्टेंस अपने-आप मिट जाएंगे. (I64a2f, b/288494724)
  • InterceptPlatformTextInput को इसलिए लॉन्च किया गया है, ताकि लो-लेवल IME से जुड़े टेस्ट और IME के अन्य लो-लेवल इस्तेमाल के उदाहरणों को लिखने में मदद मिल सके. PlatformTextInputTestOverride का अब इस्तेमाल नहीं किया जा सकता. (I862ed, b/322680547)
  • GraphicsLayer.setOutline(Outline) एक्सटेंशन फ़ंक्शन जोड़ा गया. (Ib81f4)
  • GraphicsLayer इंस्टेंस बनाने के लिए फ़ैक्ट्री बनाने के लिए, GraphicsContext फ़ंक्शन कंस्ट्रक्टर लॉन्च किया गया (Ib98d6, b/288494724)
  • GraphicsLayer एपीआई को इस तरह से बनाया गया है कि डेवलपर, ड्राइंग कमांड को अपनी ज़रूरत के हिसाब से कैप्चर कर सकें. इन कमांड का इस्तेमाल, किसी दूसरी जगह पर ड्राइंग बनाने के लिए किया जा सकता है. साथ ही, इनसे फ़ाइनल नतीजे पर अलग-अलग विज़ुअल इफ़ेक्ट भी लागू किए जा सकते हैं. (I80245, b/288494724)
  • Paragraph#getRangeForRect फ़ंक्शन के बारे में जानकारी दी गई है. यह फ़ंक्शन, दिए गए रेक्टैंगल के दायरे में आने वाले टेक्स्ट की रेंज दिखाता है. (Iee516, b/325660505)
  • onLinkClicked आर्ग्युमेंट के साथ BasicText के एक्सपेरिमेंटल ओवरराइड को हटाया गया. आने वाले समय में, हाइपरलिंक की सुविधा के लिए एपीआई उपलब्ध कराया जाएगा. (I107d5)

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

  • GraphicsLayer expect/actual एपीआई की परिभाषा जोड़ी गई है, ताकि ड्राइंग कमांड को कैप्चर और फिर से चलाया जा सके. साथ ही, कंपोज़िटिंग विज़ुअल इफ़ेक्ट और ट्रांसफ़ॉर्म को भी जोड़ा जा सके. GraphicsContext इंटरफ़ेस जोड़ा गया है, ताकि ग्राफ़िक से जुड़ी डिपेंडेंसी को मैनेज किया जा सके. इसमें GraphicsLayer इंस्टेंस बनाना और उन्हें मैनेज करना शामिल है. (I4a8d6, b/288494724)
  • फ़ोकस सर्च की सुविधा के साथ इंटरऑप से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, फ़ोकस अन्य व्यू में एम्बेड किए गए ComposeView के अंदर अटक जाता था. (I08fd4)

बाहरी योगदान

  • LocalLifecycleOwner को Compose यूज़र इंटरफ़ेस (यूआई) से lifecycle-runtime-compose में ले जाया गया है, ताकि इसके Compose पर आधारित हेल्पर एपीआई को Compose यूज़र इंटरफ़ेस (यूआई) के बाहर इस्तेमाल किया जा सके. योगदान देने के लिए, Jake Wharton का धन्यवाद. (I6c41b, b/328263448)
  • बायस के आधार पर अलाइनमेंट के सभी सबटाइप पर, बायस फ़्लोट प्रॉपर्टी को लगातार दिखाना. (I69f0f, b/328088992)

वर्शन 1.7.0-alpha04

6 मार्च, 2024

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

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

  • Android U के बाद के वर्शन वाले डिवाइसों पर, BasicTextField2 के लिए स्टाइलस से लिखने की सुविधा जोड़ी गई है. (I002e4)
  • इस सीएल में, हम GetScrollViewportLength सिमैंटिक ऐक्शन जोड़ रहे हैं, ताकि हम कंपोज़ में स्क्रोल किए जा रहे कॉम्पोनेंट के बारे में जानकारी को a11y सिस्टम तक पहुंचा सकें. यह सीएल, स्क्रोल की जा सकने वाली फ़ाउंडेशन लिस्ट में बताई गई प्रॉपर्टी के इस्तेमाल पर भी लागू होता है. (Ic5fa2)
  • FocusRequester.createRefs अब स्थिर हो गया है (I4d92c, b/261436820)
  • DelegatableNode.requireView() को इसलिए पेश किया गया है, ताकि मॉडिफ़ायर नोड, कंपोज़िशन लोकल को पढ़े बिना मौजूदा Android View को पा सकें. (I40768)
  • पाथ की दिशा उलटने के लिए नया एपीआई Path.reverse() (I36348)
  • hintLocales को KeyboardOptions में जोड़ा गया है, ताकि TextFields को यह सुविधा मिल सके कि वह IME को खास स्थानीय भाषाओं के बारे में जानकारी दे सके, ताकि पसंदीदा भाषा को पहले से सेट किया जा सके.
  • Locale से platformLocale प्रॉपर्टी को दिखाएं.यह प्रॉपर्टी, प्लैटफ़ॉर्म ऑब्जेक्ट दिखाती है. जैसे, java.util.Locale. (I921c6)

वर्शन 1.7.0-alpha03

21 फ़रवरी, 2024

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

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

  • पेश है ContextualFlowRow और MaxLines और Overflow के साथ बेहतर FlowRow/Column. हमें यह बताते हुए बेहद खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्ध FlowRow और FlowColumn को बेहतर बनाया गया है. अब इनमें maxLines और overflow की सुविधा उपलब्ध है. साथ ही, ContextualFlowRow और ContextualFlowColumn को पहली बार लॉन्च किया गया है. इस अपडेट को परफ़ॉर्मेंस के हिसाब से सबसे सही कॉम्पोनेंट देने के लिए डिज़ाइन किया गया है. इसमें ContextualFlow* उन आइटम के लिए सबसे सही है जिनकी संख्या ज़्यादा है और जो maxLines कॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल करते हैं. वहीं, FlowRow और FlowColumn उन आइटम के लिए सबसे सही है जिनकी संख्या कम है. जैसे, 100 से कम आइटम. अहम जानकारी: FlowRow या FlowColumn में मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, वहां शुरू करने के दौरान overflow को FlowRowOverflow.Visible या FlowColumnOverflow.Visible पर सेट करें. इन नई सुविधाओं के उदाहरण देखने के लिए, ContextualFlowRowSample और FlowRowSample पर जाएं. (Ib9135, b/293577082)
  • maxTextLength सिमैंटिक्स प्रॉपर्टी जोड़ें. इसे उन टेक्स्ट फ़ील्ड पर सेट किया जाना चाहिए जो वर्णों की ज़्यादा से ज़्यादा संख्या को फ़िल्टर करते हैं. (I24d9f, b/170648072)
  • Modifier.inspectable रैपर को बंद कर दिया गया है. यह एपीआई, कार्रवाई बदलने वाले आपके मॉडिफ़ायर को ज़रूरत से ज़्यादा अमान्य कर देगा. इसलिए, अब इसका इस्तेमाल न करने का सुझाव दिया जाता है. अगर डेवलपर को टूलिंग के लिए, मॉडिफ़ायर प्रॉपर्टी को दिखाना है, तो उन्हें ModifierNodeElement पर inspectableProperties() वाला तरीका लागू करने का सुझाव दिया जाता है. (Ib3236)
  • PopupProperties के लिए नया कंस्ट्रक्टर, जिससे WindowManager.LayoutParams फ़्लैग पर पूरा कंट्रोल मिलता है. (Ibb33e, b/312485503)
  • DelegatableNode.requireLayoutCoordinates() को Modifier.Node के मौजूदा LayoutCoordinates को पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपको onPlaced को बदलने और प्रॉपर्टी में खुद निर्देशांकों को सेव करने की ज़रूरत नहीं है. (Ia8657)
  • DelegatableNode.currentLayoutCoordinates को Modifier.Node के मौजूदा LayoutCoordinates को पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपको onPlaced को बदलने और प्रॉपर्टी में खुद निर्देशांकों को सेव करने की ज़रूरत नहीं है. (Iaebaa)
  • BasicTextField2 और androidx.compose.foundation.text2 पैकेज के तहत आने वाले इससे जुड़े एपीआई को androidx.compose.foundation.text में ले जाया गया है. (I9f635)
  • ApproachLayoutModifierNode नया एपीआई जोड़ा गया है. इससे, मॉडिफ़ायर नोड में कस्टम अप्रोच लॉजिक बनाया जा सकता है. साथ ही, ऐनिमेशन के लिए एक नया एक्सपेरिमेंटल DeferredTargetAnimation एपीआई जोड़ा गया है. इसका टारगेट इंस्टैंटिएशन के समय पता नहीं होता. (I60745)
  • पाथ की दिशा के बारे में क्वेरी करने और Path से कॉन्टूर निकालने के लिए, नए Path एपीआई. (I63d04)
  • PathHitTest और Path.contains(Offset) को जोड़ा गया है, ताकि यह पता लगाया जा सके कि Path में कोई खास पॉइंट शामिल है या नहीं. (I3b218)
  • TextLayoutResult अब getLineBaseline(lineIndex) तरीके को दिखाता है. इससे, मौजूदा सुविधा वाली प्रॉपर्टी firstBaseline और lastBaseline के अलावा, टेक्स्ट की किसी भी लाइन की बेसलाइन को पढ़ा जा सकता है. (Ide4e8, b/237428541)
  • सिर्फ़ दो AnnotatedStrings के एनोटेशन की तुलना करने का तरीका जोड़ा गया. (I32659)

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

  • SemanticsPropertyReceiver.performImeAction और SemanticsActions.PerformImeAction के साथ पुराने सिस्टम के साथ काम करने की सुविधा से जुड़ी समस्या को ठीक किया गया है. (Id0528, b/322269946)

वर्शन 1.7.0-alpha02

7 फ़रवरी, 2024

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

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

  • SemanticsPropertyReceiver.performImeAction के साथ बाइनरी कंपैटिबिलिटी से जुड़ी समस्या को ठीक किया गया है. (I65865, b/322269946)
  • PopupProperties कंस्ट्रक्टर, usePlatformDefaultWidth पैरामीटर लेता है. यह अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I8f8d2)
  • ComposeTestRule.waitUntil को ज़्यादा बार इस्तेमाल किया गया है. यह टाइम आउट मैसेज में शामिल करने के लिए, शर्त का स्ट्रिंग ब्यौरा लेता है. (I9413e)
  • सेमंटिक्स एपीआई unset() का नया वर्शन, एक ही मॉडिफ़ायर चेन में जोड़ी गई सेमंटिक्स प्रॉपर्टी हटाने के लिए. नई सिमैंटिक्स प्रॉपर्टी isOpaque. (I8c583, b/317966058, b/246056649)
  • PointerInputChange के सार्वजनिक एपीआई में, कॉपी करने के तरीके से originalEventPosition को हटाया गया. (I7bead)

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

  • एक्सेसिबिलिटी से जुड़ी एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, चुने जाने पर टैब और रेडियो बटन के अलावा अन्य आइटम पर क्लिक किया जा सकता था. (I2181c)
  • VelocityTracker में अब डिफ़ॉल्ट रूप से पॉइंट जोड़ने की सुविधा चालू होगी. अगर कोई समस्या आती है, तो VelocityTrackerAddPointsFix को फ़ॉल्स पर सेट करके, इस सुविधा को बंद किया जा सकता है. (Ib3877, b/269487059)
  • TextStyle और ParagraphStyle में, बाइनरी फ़ाइल के पुराने वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (I179f0, b/320819734)

बाहरी योगदान

  • प्लैटफ़ॉर्म के हिसाब से तय किए गए पैरामीटर के बिना, नया DialogProperties कंस्ट्रक्टर जोड़ा गया. (I45829)
  • प्लैटफ़ॉर्म के हिसाब से तय किए गए पैरामीटर के बिना, नया PopupProperties कंस्ट्रक्टर जोड़ा गया. (I9a038)

वर्शन 1.7.0-alpha01

24 जनवरी, 2024

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

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

  • ClipboardManager को बड़ा किया गया है. इसमें ClipEntry और ClipMetadata को जोड़ा गया है, ताकि इमेज जैसे किसी भी कॉन्टेंट को शामिल किया जा सके.
  • ui-test में DeviceConfigurationOverride API जोड़ता है, ताकि स्थानीय तौर पर टेस्ट किए जा रहे कॉन्टेंट के व्यवहार को बदला जा सके. जैसे, उपलब्ध साइज़, स्थान-भाषा, लेआउट की दिशा, फ़ॉन्ट स्केल या थीम तय करना.

वर्शन 1.6

वर्शन 1.6.8

12 जून, 2024

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

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

  • जब फ़ॉन्ट का स्केल, टेबल के लिए तय किए गए सबसे कम स्केल से कम होता है, तब फ़ॉन्ट के स्केल में होने वाली गड़बड़ियों को ठीक किया गया है. इस मामले में, हम अब लीनियर 1x स्केल और सबसे कम तय की गई टेबल के बीच इंटरपोलेट करते हैं, ताकि स्केल बढ़ने पर फ़ॉन्ट का साइज़ लगातार बढ़ता रहे. (Icbae3)

वर्शन 1.6.7

1 मई, 2024

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

वर्शन 1.6.6

17 अप्रैल, 2024

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

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

  • BasicTextField के क्रैश होने की समस्या को ठीक किया गया है.

वर्शन 1.6.5

3 अप्रैल, 2024

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

वर्शन 1.6.4

20 मार्च, 2024

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

वर्शन 1.6.3

6 मार्च, 2024

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

वर्शन 1.6.2

21 फ़रवरी, 2024

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

वर्शन 1.6.1

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

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

  • SemanticsPropertyReceiver.performImeAction और SemanticsActions.PerformImeAction के साथ काम करने से जुड़ी समस्या को ठीक किया गया है. (Ie0bb2, b/322269946)
  • लेआउट अब मेज़रमेंट के दौरान गड़बड़ी का मैसेज दिखाते हैं. ऐसा तब होता है, जब कोई लेआउट बहुत बड़ा साइज़ दिखाता है. आम तौर पर, इस तरह की गड़बड़ी तब होती है, जब मेज़रमेंट सीधे तौर पर ज़्यादा से ज़्यादा कंस्ट्रेंट का इस्तेमाल करता है और Constraints.Infinity की जांच नहीं करता. इस जांच से डेवलपर को, गलत साइज़ वाले लेआउट में मौजूद समस्याओं का पता लगाने में मदद मिलेगी. (I339a9)

वर्शन 1.6.0

24 जनवरी, 2024

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

वर्शन 1.6.0-rc01

10 जनवरी, 2024

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

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

  • वेक्टर ग्राफ़िक को ऑप्टिमाइज़ करके लागू किया गया है, ताकि अतिरिक्त रीकंपोज़िशन को कम करके परफ़ॉर्मेंस को बेहतर बनाया जा सके.

वर्शन 1.6.0-beta03

13 दिसंबर, 2023

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

नई सुविधाएं

  • अब नोड को अलग किए बिना, LayoutCoordinates को अलग किया जा सकता है. Compose Layout Inspector (If693) में इसकी जांच करें

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

  • PlatformImeOptions अब इंटरफ़ेस के बजाय एक कॉन्क्रीट क्लास है. (If40a4)
  • LocalSoftwareKeyboardController और LocalTextInputService को हर बार नई वैल्यू मिलने की वजह से, डाउनस्ट्रीम में होने वाले अतिरिक्त रीकंपोज़िशन की समस्या ठीक की गई. (I42190, b/310510985)

वर्शन 1.6.0-beta02

29 नवंबर, 2023

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

वर्शन 1.6.0-beta01

15 नवंबर, 2023

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

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

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

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

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

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

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

  • नोड एपीआई के नामों को बेहतर बनाता है, ताकि उन्हें आसानी से समझा जा सके. (Ia4474)

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

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

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

  • FocusDirection.In और FocusDirection.Out को हटा दिया गया है. इसके बजाय, FocusDirection.Enter और FocusDirection.Exit का इस्तेमाल करें (I2f660)

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

  • FontStyle(int) कंस्ट्रक्टर के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, FontStyle.Normal या FontStyle.Italic का इस्तेमाल करें. (I66610)

  • FontScalable इंटरफ़ेस का नाम बदलकर FontScaling कर दिया गया (Ie804a)

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

  • अगर किसी टेक्स्ट एडिटर पर फ़ोकस नहीं किया जाता है, तो SoftwareKeyboardController.show() अब सॉफ़्टवेयर कीबोर्ड नहीं दिखाएगा. (I2165a, b/301477279)
  • अब उन कुंजियों के लिए हार्डवेयर की-अप इवेंट को अनदेखा किया जाएगा जिन्हें उसी कंपोज़ व्यू में डाउन इवेंट नहीं मिला है. (Ib37b4, b/305518328)
  • ArcLine में स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ी गई. (I4d5bb)
  • PageSize.Fixed के लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)
  • Window Inset में बदलाव करने पर, बाइनरी कंपैटिबिलिटी से जुड़ी समस्या ठीक की गई (Iee695)
  • Material3 चिप/बटन के लिए, मटीरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)
  • TestDispatcher को effectContext के तौर पर पास किया जाता है. कंपोज़ टेस्ट के लिए अब इसका इस्तेमाल, टेस्ट और फ़्रेम क्लॉक बनाने के लिए किया जाएगा. (Ia7178)

वर्शन 1.6.0-alpha08

18 अक्टूबर, 2023

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

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

  • Modifier.dragAndDrawSource में, onDrawDragShadow लैम्डा का नाम बदलकर drawDragDecoration कर दिया गया है. साथ ही, DragAndDropInfo में, साइज़ पैरामीटर का नाम बदलकर dragDecorationSize कर दिया गया है. (Id0e30, b/303904810)
  • SemanticsNodeInteraction.isDisplayed() और SemanticsNodeInteraction.isNotDisplayed() को पेश किया गया है. इनकी मदद से, यह पता लगाया जा सकता है कि मैच किया गया नोड दिख रहा है या नहीं. इसके लिए, उस पर दावा करने की ज़रूरत नहीं है. (I2c196, b/302100809)
  • null को बदलने के लिए, ParagraphTextStyle के TextAlign, TextDirection, Hyphens, और LineBreak फ़ील्ड के लिए, Unspecified की खास वैल्यू जोड़ी गई है. ये इनलाइन क्लास हैं. इसलिए, Nullable को Unspecified से बदलने पर, हम प्रिमिटिव टाइप बॉक्सिंग से बचते हैं. TextStyle और पैराग्राफ़ स्टाइल में कंस्ट्रक्टर, गेटर, और अन्य तरीकों को अपडेट किया गया है, ताकि वे बताए गए पैरामीटर को नॉन-नल टाइप के तौर पर स्वीकार कर सकें. (I4197e, b/299490814)
  • एक्सएमएल से GoogleFont को पढ़ने के लिए, GoogleFont ओवरलोड जोड़ें. (If8f59)
  • LoremIpsum PreviewParameterProvider को ओपन क्लास के तौर पर सेट किया गया हो. (I41bf5, b/266918816, b/300116360)

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

  • FontFamilyResolver अब कैश मेमोरी को मैनेज करने वाली को-रूटीन के लिए Dispatchers.Main का इस्तेमाल करता है. (Ie8dd9)
  • AndroidViewBinding अब commitNow का इस्तेमाल करके, onRelease के हिस्से के तौर पर लेआउट में FragmentContainerView को शामिल करके बढ़ाए गए Fragment इंस्टेंस को तुरंत हटा देता है. इससे पहले, यह commit का इस्तेमाल करता था. इस तरह, यह लाइव बदलाव करने की सुविधा की उन समस्याओं को ठीक करता है जिनमें बदलाव होने पर कंपोज़िशन को बदलने के तरीके से जुड़ी समस्याएं होती हैं. (I58fbf)

वर्शन 1.6.0-alpha07

4 अक्टूबर, 2023

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

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

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

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

  • एक्सएमएल वेक्टर ड्रॉएबल पार्स करने की प्रोसेस को ऑप्टिमाइज़ किया गया है. (Ibb015)

वर्शन 1.6.0-alpha06

20 सितंबर, 2023

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

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

  • Material आइकॉन में अतिरिक्त ऑप्टिमाइज़ेशन किए गए हैं. (I3e08d)
  • इससे मिलते-जुलते नोड ढूंढने के लिए, मॉडिफ़ायर ट्री को ऊपर/नीचे ले जाने की सुविधा मिलती है. (I2d234)
  • focusRestorer() मॉडिफ़ायर (Ie1d43) में onRestoreFailed() कॉलबैक जोड़ा गया
  • अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं, ताकि ColorInt, FloatRange, IntRange, Size वगैरह के बारे में बताया जा सके. (Id65c8, b/290950582)
  • PreviewScreenSizes की परिभाषा में showSystemUi=true जोड़ा गया (Ib61d3)

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

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

वर्शन 1.6.0-alpha05

6 सितंबर, 2023

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

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

  • इस नीति से, AndroidComposeViewAccessibilityDelegateCompat में कॉन्टेंट कैप्चर करने की सुविधा चालू होती है. (Ib2969)
  • ScrollView और RecyclerView जैसे व्यू कॉम्पोनेंट में फ़्लिंग की स्पीड, ViewConfiguration.ScaledMaximumFlingVelocity पर सेट होती है. Compose में अब maximumFlingVelocity का अपना वर्शन शामिल है. यह अब Draggable पर लागू होता है. (Ibf974)
  • यह प्लैटफ़ॉर्म पर, ड्रैग और ड्रॉप करने वाले एपीआई के लिए शुरुआती स्केफ़ोल्डिंग जोड़ता है. (If84ce)
  • RotaryScrollEvent में deviceId जोड़ा गया (Iba3bf)
  • नए डिवाइसों (Ib25b4) को शामिल करने के लिए, ui-tooling Devices API को अपडेट किया गया है

वर्शन 1.6.0-alpha04

23 अगस्त, 2023

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

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

  • ReusableComposition को बंद करने का एक तरीका जोड़ा गया है. इससे निगरानी की सुविधा बंद हो जाएगी, लेकिन नोड बने रहेंगे. बंद की गई कंपोज़िशन को setContent को कॉल करके फिर से चालू किया जा सकता है. (Ib7f31)
  • सबकंपोज़िशन के लाइफ़साइकल को मैनेज करने और उन्हें फिर से इस्तेमाल करने के लिए, ReusableComposition इंटरफ़ेस जोड़ा गया. (I812d1, b/252846775)
  • Modifier.focusGroup को स्टेबल एपीआई के तौर पर प्रमोट किया गया है. (I7ffa3)
  • अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं, ताकि ColorInt, FloatRange, IntRange, Size वगैरह के बारे में बताया जा सके. (I70487, b/290950582)
  • ColorFilter एपीआई को अपडेट किया गया है, ताकि पैरामीटर की बेहतर जांच के लिए, सबक्लास के टाइप तय किए जा सकें. (I5fe29)
  • wear-tooling-preview लाइब्रेरी को पेश किया गया है. इससे, यूज़र इंटरफ़ेस (यूआई) की झलक देखने के लिए इस्तेमाल किए जा सकने वाले मान्य Wear डिवाइसों की सूची बनाई जा सकती है (Ib036e)
  • डेंसिटी इंटरफ़ेस के फ़ॉन्ट स्केलिंग वाले हिस्से को मैनेज करने के लिए, FontScalable इंटरफ़ेस बनाया गया है. (I2cf3f)

वर्शन 1.6.0-alpha03

9 अगस्त, 2023

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

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

  • ऑब्जेक्ट को सीन में शामिल करने और हटाने के लिए, ट्रांज़िशन का नया टाइप. इसमें ऑब्जेक्ट को सीन में शामिल करने और हटाने के दौरान, ऐनिमेशन वाले कंटेनर के साइज़ के हिसाब से कॉन्टेंट को स्केल किया जाता है. LookaheadScope कंपोज़ेबल फ़न और इंटरफ़ेस अब स्टेबल हो गए हैं. (Ifb2ce)
  • privateImeOptions (Idb772) को कॉन्फ़िगर करने की सुविधा जोड़ी गई

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

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

वर्शन 1.6.0-alpha02

26 जुलाई, 2023

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

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

  • एक सर्विस लोकेटर इंटरफ़ेस जोड़ा गया है. इसे कंपोज़िशन को लागू करने वाले लोग लागू कर सकते हैं. इससे कंपोज़िशन को लागू करने वाले लोग, कंपोज़िशन को लागू कर सकते हैं. यह कंपोज़िशन, कंपोज़िशन डेलिगेट सर्विस के लुकअप को ओरिजनल कंपोज़िशन को सौंपती है. इसे सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसका इस्तेमाल रनटाइम में एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई बनाने के लिए किया जाता है. इन्हें कंपोज़र के रैप किए गए वर्शन से ढूंढा जा सकता है. जैसे, यूज़र इंटरफ़ेस (यूआई) मॉड्यूल. (I296b9)
  • PlatformTextInput* API को पूरी तरह से फिर से डिज़ाइन किया गया है. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController और LocalSoftwareKeyboardController अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. LocalSoftwareKeyboardController अब एक सही CompositionLocal भी है. (I4c364)
  • LookaheadLayout और LookaheadLayoutScope को कुछ रिलीज़ के लिए बंद कर दिया गया था. अब इन्हें हटा दिया गया है. बदले गए एपीआई, LookaheadScope हैं. ये किसी भी लेआउट के साथ काम कर सकते हैं. (I12ac3)
  • टेस्ट में फ़ोकस करने का अनुरोध करने के लिए, SemanticsNodeInteraction.requestFocus को ज़्यादा सुविधाजनक और आसानी से ढूंढने वाले तरीके के तौर पर जोड़ा गया है. (Ie8722)
  • ग्लोबल असर्शन रजिस्टर करने के लिए, एक्सपेरिमेंटल एपीआई जोड़े गए हैं. इनका इस्तेमाल आने वाले समय में टेस्टिंग फ़्रेमवर्क कर पाएंगे. (I12d77)

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

  • AndroidView के update कॉलबैक का पहला इनवोकेशन अब व्यू अटैच होने तक के लिए टाल दिया जाएगा. ऐसा तब होगा, जब AndroidView को लागू करने वाली कंपोज़िशन लागू की जाएगी. इस अपडेट में, एक बग को ठीक किया गया है. इस बग की वजह से, अगर कोई इफ़ेक्ट किसी ऐसी स्थिति को तुरंत बदल देता है जिसे update पढ़ रहा है, तो अमान्य नहीं होता था. (Ie9438, b/291094055)

वर्शन 1.6.0-alpha01

21 जून, 2023

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

नई सुविधाएं

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

व्यवहार में बदलाव: Compose में includeFontPadding अब डिफ़ॉल्ट रूप से फ़ॉल्स पर सेट है

Compose में, includeFontPadding अब डिफ़ॉल्ट रूप से गलत (21d806) पर सेट है.

includeFontPadding एक लेगसी एट्रिब्यूट है. यह कंट्रोल करता है कि टेक्स्ट की पहली और आखिरी लाइन के ऊपर अतिरिक्त पैडिंग शामिल करनी है या नहीं. ऐसा इसलिए किया जाता है, ताकि टेक्स्ट बेसलाइन के ऊपर या नीचे बढ़ने वाले किसी भी वर्ण को शामिल किया जा सके.

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

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

हर टेक्स्ट के लिए PlatformTextStyle का इस्तेमाल करके, includeFontPadding में ऑप्ट-इन किया जा सकता है:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

Material स्टाइल कॉन्फ़िगर करके, अपने सभी टेक्स्ट के लिए includeFontPadding की सुविधा चालू की जा सकती है. ध्यान दें कि M2 और M3 के बीच पैरामीटर के नाम अलग-अलग होंगे.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /* … */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* … */
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

includeFontPadding Compose के बारे में ज़्यादा जानने के लिए, डेवलपर के लिए दस्तावेज़ और यह ब्लॉग पोस्ट पढ़ें.

अगर आपको इस बदलाव से जुड़ी कोई समस्या या गड़बड़ी मिलती है, तो समस्या ट्रैकर का इस्तेमाल करके, गड़बड़ी की रिपोर्ट करें.

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

  • InputConnection#requestCursorUpdates का इस्तेमाल किया जा सकता है (I0c69b)
  • FocusRequester.saveFocusedChild और FocusRequester.restoreFocusedChild को जोड़ा गया (Ic557e, b/272302679, b/275157318)
  • ResourceResolutionException टाइप जोड़ें, ताकि बिटमैप ऐसेट लोड करने की कोशिश करते समय थ्रो किए गए थ्रोएबल को रैप किया जा सके. इसमें ऐसेट पाथ का ब्यौरा होता है जिसे लोड नहीं किया जा सका. (I19f44, b/230166331, b/278424788)
  • परफ़ॉर्मेंस और मेमोरी के बंटवारे के लिए, सुलभता को ऑप्टिमाइज़ किया गया है. (Iede48)
  • टेक्स्ट का अनुवाद करने के लिए, सिमैंटिक्स प्रॉपर्टी और कार्रवाइयां जोड़ी गई हैं. (I4a6bc)
  • IntrinsincMeasureScope में नई प्रॉपर्टी और उसके इस्तेमाल (जैसे, MeasureScope) से यह पता चलता है कि मौजूदा मेज़र पास, लुकअहेड पास है या नहीं. (I7a812)
  • DrawScope एपीआई को अपडेट किया गया है, ताकि रेंडरिंग को किसी दूसरे कैनवस में फिर से टारगेट किया जा सके. इसके लिए, घनत्व/लेआउट की दिशा और साइज़ के विकल्प उपलब्ध हैं.
  • DrawContext को अपडेट किया गया है, ताकि डेंसिटी और लेआउट की दिशा को कॉन्फ़िगर किया जा सके. साथ ही, कैनवस को कॉन्फ़िगर किया जा सके. (Ie1f9b, b/225408150)
  • वर्णों के बाउंडिंग बॉक्स का हिसाब लगाने के लिए, Paragraph#fillBoundingBoxes को जोड़ा गया. (If30ee)
  • सामान्य MultiPreviews का सेट जोड़ा गया (Ia5a27)

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

  • कस्टम FocusTarget बनाने के लिए, FocusTargetModifierNode इंटरफ़ेस जोड़ा गया. (I9790e)
  • TextMeasurer कंस्ट्रक्टर पर मौजूद fallback* पैरामीटर का नाम बदलकर default* कर दिया गया है. (I940a5)
  • SemanticsPropertyReceiver.performImeAction का नाम बदलकर onImeAction और SemanticsActions.PerformImeAction का नाम बदलकर OnImeAction कर दिया गया है. (I8e841)
  • यह कुकी, नेस्ट की गई स्क्रोलिंग (खास तौर पर, NestedScrollConnection में) में माउस के स्क्रोल और ड्रैग के बीच अंतर करने के लिए, व्हील जोड़ती है. (Ie57e4)
  • asComposePaint एपीआई जोड़ा गया है, ताकि toComposePaint को बदला जा सके. ऐसा इसलिए, क्योंकि लौटाया गया ऑब्जेक्ट, ओरिजनल android.graphics.Paint (I22b4c) को रैप करता है
  • SemanticsProperties.imeAction को बंद कर दिया गया है. इसे SemanticsActions.performImeAction के नए पैरामीटर से बदलें. (I4a587)
  • माउस से चुनने की सुविधा जोड़ी गई. टच करके चुनने की सुविधा में, शब्द के हिसाब से टेक्स्ट को बड़ा किया जाएगा और वर्ण के हिसाब से छोटा किया जाएगा. (Ic0c6c, b/180639271)
  • Paragraph के जिन तरीकों से, सीमा से बाहर के ऑफ़सेट के लिए AssertionError मिलता था उनसे अब IllegalArgumentException मिलता है. ऐसा इसलिए, क्योंकि MultiParagraph से भी मिलता है. (I549d3, b/243338896)

संस्‍करण 1.5

वर्शन 1.5.4

18 अक्टूबर, 2023

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

वर्शन 1.5.3

4 अक्टूबर, 2023

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

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

  • (b/301209788) TextField कभी-कभी फ़ोकस करने और कोरियन इनपुट डालने के दौरान, पिछली कमांड को गलत तरीके से लागू कर देता था. इस वजह से, वर्ण गायब हो जाते थे.

संस्‍करण 1.5.2

27 सितंबर, 2023

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

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

  • बैकग्राउंड थ्रेड से ऐक्सेसिबिलिटी स्क्रोल एपीआई को ऐक्सेस करने पर होने वाली क्रैश की समस्या को ठीक करने का तरीका जोड़ा गया.
  • सिमैंटिक्स ट्री में जोड़े जा रहे बिना अटैच किए गए नोड की समस्या ठीक की गई.

संस्‍करण 1.5.1

6 सितंबर, 2023

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

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

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

वर्शन 1.5.0

9 अगस्त, 2023

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

वर्शन 1.5.0-rc01

26 जुलाई, 2023

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

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

  • SubcomposeLayout के अंदर movableContentOf() का इस्तेमाल करने पर, क्रैश होने की समस्या ठीक की गई.

वर्शन 1.5.0-beta03

28 जून, 2023

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

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

  • FocusTargetModifierNode इंटरफ़ेस जोड़ा गया है. इसका इस्तेमाल, कस्टम FocusTarget बनाने के लिए किया जा सकता है. (Ifb1d6)
  • डायलॉग और पॉप-अप कंपोज़ेबल से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, usePlatformDefaultWidth=true करने पर चाइल्ड विंडो का साइज़ उम्मीद के मुताबिक नहीं बदलता था. (I112ee)

वर्शन 1.5.0-beta02

7 जून, 2023

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

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

  • Compose में इस्तेमाल किए जाने वाले android.graphics.Paint इंस्टेंस के इस्तेमाल को चालू करने के लिए, asComposePaint API जोड़ा गया

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

  • asComposePaint एपीआई जोड़ा गया है, ताकि toComposePaint को बदला जा सके. ऐसा इसलिए, क्योंकि लौटाया गया ऑब्जेक्ट, ओरिजनल android.graphics.Paint (I22b4c) को रैप करता है

वर्शन 1.5.0-beta01

24 मई, 2023

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

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

  • रीकंपोज़िशन, कलर ऐनिमेशन, और AndroidComposeView (Ib2bfa) में किए गए बदलावों को हटाया गया
  • डेलिगेशन की अनुमति देने के लिए, हेल्पर फ़ंक्शन CacheDrawModifierNode() जोड़ा गया (Icf8f9)
  • isLookingAhead प्रॉपर्टी लॉन्च की गई है. इसे MeasureScope से ऐक्सेस किया जा सकता है. इसकी मदद से, लुकअहेड के नतीजों को देखा जा सकता है. साथ ही, अगर चाहें, तो मुख्य पास पर असर डाला जा सकता है. (Ibf4c3)
  • नई सिमैंटिक्स प्रॉपर्टी traversalIndex. यह एक फ़्लोट है, जिसका इस्तेमाल TalkBack ट्रैवर्सल में नोड का क्रम बदलने के लिए किया जाता है. इसमें कम वैल्यू वाले नोड पहले आते हैं. (I9a81b, b/186443263)
  • सेमैंटिक्स प्रॉपर्टी isContainer का नाम बदलकर isTraversalGroup (I121f6) किया जा रहा है
  • ColorProducer में अब produce के बजाय operator fun invoke है (I4a9a2)
  • पाथ ऑब्जेक्ट पर अनुवाद/स्केल/रोटेशन ट्रांसफ़ॉर्मेशन लागू करने के लिए, Path ट्रांसफ़ॉर्म एपीआई जोड़ें. (I23434, b/233772232)
  • ColorProducer के तरीके को produce कहा जाता है. (I78bde)
  • toFrameworkColorSpace का नाम बदलकर toAndroidColorSpace करें (I4f547)
  • ColorLambda का नाम बदलकर ColorProducer कर दें. (I73b1a)
  • Android और Compose के कलरस्पेस टाइप के बीच बदलने के लिए, एपीआई लॉन्च किए गए हैं. (Ie7db4, b/279979665)
  • BasicText में कलर पैरामीटर जोड़ा गया है, ताकि टेक्स्ट के रंग को आसानी से ऐनिमेट किया जा सके या सेट किया जा सके. (Iffd88, b/246961787)
  • TextRange.constrain का नाम बदलकर TextRange.coerceIn कर दिया गया है. (I31be2)
  • पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया TextStyle.merge(...) जोड़ा गया. (Iad234, b/246961787)
  • कई टेक्स्ट एपीआई को बेहतर बनाया गया है. इनमें Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) शामिल हैं. (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding का इस्तेमाल फिर से शुरू किया जा सकता है. हमारा मकसद इस फ़ील्ड को हटाना था. हालांकि, मिले सुझाव/राय के आधार पर हमें पता चला है कि डेवलपर को इस कॉन्फ़िगरेशन विकल्प की ज़रूरत है. इसलिए, फ़ील्ड से बंद होने की सूचना को हटाया जा रहा है (I98e96, b/277703184)
  • सार्वजनिक TextRange.constrain तरीका जोड़ा गया. (I97912)
  • AnnotatedString में मौजूद UrlAnnotations को अब सुलभता सेवाओं के ज़रिए खोला जा सकता है. जैसे, TalkBack. (If4d82, b/253292081)
  • टेक्स्ट फ़ील्ड के लिए, InsertTextAtCursor सिमैंटिक्स ऐक्शन जोड़ा गया. (I11ed5)
  • LineHeightStyle.Alignment(topRatio) कंस्ट्रक्टर को स्टेबल एपीआई के तौर पर प्रमोट किया गया है. (I79c32, b/261565383)
  • TextMeasurer और इससे जुड़े एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I74647, b/261581753)
  • टेक्स्ट एडिटर नोड पर IME ऐक्शन शुरू करने के लिए, PerformImeAction सिमैंटिक्स ऐक्शन जोड़ा गया. (Ic606f, b/269633506)
  • Android के लिए, PlatformTextInput एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I668eb)
  • Enum.valueOf के लिए वैल्यू पैरामीटर का नाम बदला गया (Ia9b89)
  • enum valueOf (I818fe) से ज़्यादा थ्रो किए गए अपवाद
  • कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल PlatformTextInputAdapter एपीआई लॉन्च किया गया है. यह सीधे तौर पर प्लैटफ़ॉर्म एपीआई से कम्यूनिकेट करता है. (I58df4)
  • Canvas पर टेक्स्ट बनाते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम के साथ काम करने के लिए, DrawScope.drawText, Paragraph.paint, और MultiParagraph.paint तरीकों में BlendMode पैरामीटर जोड़ा गया. (I57508)
  • Font.MaximumAsyncTimeout का नाम बदलकर Font.MaximumAsyncTimeoutMillis कर दें. सिर्फ़ नाम बदलें. (I07af5)
  • @Preview रेफ़रंस डिवाइसों (Id6151, b/254528382) की अपडेट की गई डीपीआई वैल्यू
  • BasicText में brush, alpha पैरामीटर जोड़ें, ताकि टेक्स्ट ब्रश को आसानी से ऐनिमेट किया जा सके या सेट किया जा सके.
  • :ui:ui-unit में Float, Double, Long, Int, Short के लिए बॉक्स-फ़्री लैम्ब्डा टाइप तय करें (I6f18d, b/246961787)

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

  • पॉइंटर की वेलोसिटी ट्रैकिंग में कई ऐसेट के लिए किए गए असाइनमेंट हटाए गए (I26bae)
  • लेआउट और पॉइंटर इनपुट मैनेजमेंट में कम किए गए असाइनमेंट (I5333a)
  • वेक्टर मेमोरी के इस्तेमाल और पहले फ़्रेम की रेंडरिंग को ऑप्टिमाइज़ करें (I2f3c6)
  • कैनवस का इस्तेमाल करके लाइनें और पॉइंट बनाते समय, मेमोरी के इस्तेमाल से जुड़ी समस्याएं ठीक की गईं (I9f535)
  • AndroidFont.fontVariationSettings के लिए दस्तावेज़ जोड़े गए (I7d9e2)

बाहरी योगदान

  • वेक्टर एपीआई (I906cb) में परफ़ॉर्मेंस को बेहतर बनाया गया है और ऐलोकेशन को कम किया गया है

वर्शन 1.5.0-alpha04

10 मई, 2023

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

नई सुविधाएं

  • Modifier.Node डेलिगेशन से जुड़ी सुविधाएं बेहतर बनाई गईं DelegatingNode से अन्य Modifier.Node इंस्टेंस को डेलिगेट करने की बेहतर सुविधा जोड़ी गई. ऐसा delegate और undelegate एपीआई की मदद से किया जा सकता है. इस बदलाव से पहले, डेलिगेट करने वाले नोड के हर एपीआई को, डेलिगेट किए गए नोड को साफ़ तौर पर डेलिगेट करना पड़ता था. इस बदलाव के बाद, नोड इंटरफ़ेस को डिफ़ॉल्ट रूप से डेलिगेट कर दिया जाएगा. हालांकि, DelegatingNode उन्हें साफ़ तौर पर बदल सकता है. (67352bc)

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

  • NestedScrollModifierNode को पेश किया गया है. यह एक NestedScroll Modifier.Node है जिसे डेलिगेट किया जा सकता है. (I69513)
  • AndroidViewBinding कंपोज़ेबल में onReset और onRelease पैरामीटर जोड़े गए हैं. ये AndroidView कंपोज़ेबल की तरह काम करते हैं. साथ ही, ViewBinding की मदद से व्यू को फिर से इस्तेमाल करने की सुविधा चालू करते हैं. (I00b1e, b/276802519)
  • Compose Path API को अपडेट किया गया है, ताकि रीवाइंड ऑपरेशन काम कर सकें. इससे, बार-बार पाथ में बदलाव करने के इस्तेमाल के उदाहरणों को तेज़ी से फिर से इस्तेमाल किया जा सकेगा. (I7b797)
  • पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया TextStyle.merge(...) जोड़ा गया. (Iad234, b/246961787)
  • कई टेक्स्ट एपीआई को बेहतर बनाया गया है. इनमें Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) शामिल हैं. (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding का इस्तेमाल फिर से शुरू किया जा सकता है. हमारा मकसद इस फ़ील्ड को हटाना था. हालांकि, मिले सुझाव/राय के आधार पर हमें पता चला है कि डेवलपर को इस कॉन्फ़िगरेशन विकल्प की ज़रूरत है. इसलिए, फ़ील्ड से बंद होने की सूचना हटा दी गई है (I98e96, b/277703184)

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

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

वर्शन 1.5.0-alpha03

19 अप्रैल, 2023

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

नई सुविधाएं

  • LookaheadScope में SubcomposeLayout के लिए डिफ़ॉल्ट व्यवहार में बदलाव: SubcomposeLayouts में अब लुकअहेड ऐनिमेशन ठीक से काम करते हैं.इनमें ऐसे SubcomposeLayouts शामिल हैं जिनमें शर्त के हिसाब से स्लॉट नहीं होते. जैसे, TabRow, Scaffold, BoxWithConstraints वगैरह.

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

  • नया डिफ़ॉल्ट intermediateMeasurePolicy, लुकअहेड पास से मेज़रमेंट की नीति का फिर से इस्तेमाल करता है. इससे SubcomposeLayout के ऐसे सबटाइप लुकअहेड के साथ डिफ़ॉल्ट रूप से काम कर सकते हैं जिनमें कंडिशनल स्लॉट नहीं होते. जैसे, Scaffold, TabRow, और BoxWithConstraints. (Id84c8)
  • Android विंडो के लिए बनाया गया रीकंपोज़र, अब ON_STOP सूचना मिलने पर, पूरी कंपोज़िशन के बजाय सिर्फ़ withFrameNanos पर आने वाले कॉल को ब्लॉक करेगा. इसका मतलब है कि बंद की गई गतिविधियों से जुड़ी विंडो, डेटा में हुए बदलावों के लिए फिर से कंपोज़ होती रहेंगी. हालांकि, ऐनिमेशन या withFrameNanos को कॉल करने वाले अन्य कॉम्पोनेंट ब्लॉक हो जाएंगे. (Id9e7f, b/240975572)
  • motionEventSpy को स्टेबल वर्शन में बदलता है. (Ic5ec4, b/261560988)
  • सार्वजनिक TextRange.constrain तरीका जोड़ा गया. (I97912)
  • PlatformTextStyle.includeFontPadding को अब सेवा में नहीं रखा गया है, ताकि डेवलपर इस कंपैटिबिलिटी एपीआई का इस्तेमाल करके, includeFontPadding को बंद कर सकें और उसकी जांच कर सकें. (I98e96, b/277703184)

वर्शन 1.5.0-alpha02

5 अप्रैल, 2023

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

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

  • नया SubcomposeLayout एपीआई, जो लुकअहेड पर आधारित ऐनिमेशन के दौरान मेज़र/लेआउट लॉजिक को मैनेज करने के लिए, एक अतिरिक्त इंटरमीडिएट मेज़रमेंट नीति का इस्तेमाल करता है. (I017d3)
  • PointerInput अब लेज़ी है और बेहतर परफ़ॉर्मेंस के लिए Modifier.Node का इस्तेमाल करता है (व्यवहार में हुए छोटे बदलाव के बारे में पढ़ें). (15dab9)
  • यह कुकी, मुख्य इवेंट के साथ एक्सपेरिमेंटल एपीआई को स्टेबल एपीआई में बदल देती है. (I9c7d8, b/261566839, b/261567368)
  • यह कुकी, PointerInputChange में एक्सपेरिमेंट के लिए उपलब्ध एपीआई को स्टेबल एपीआई में बदल देती है. (I1b543, b/261560988, b/261565762, b/261565749)
  • यह कुकी, ज़्यादा जटिल Modifier.Node लागू करने के लिए, SuspendingPointerInputModifierNode को इंस्टैंशिएट करने का तरीका जोड़ती है. (Ic4933)
  • AnnotatedString में मौजूद UrlAnnotations को अब सुलभता सेवाओं के ज़रिए खोला जा सकता है. जैसे, TalkBack. (If4d82, b/253292081)
  • हार्डवेयर की को सॉफ़्ट कीबोर्ड पर भेजे जाने से पहले ही इंटरसेप्ट करने के लिए, एक एपीआई जोड़ा गया है (I4f4c6, b/186800395)
  • टेक्स्ट फ़ील्ड के लिए, InsertTextAtCursor सिमैंटिक्स ऐक्शन जोड़ा गया. (I11ed5)
  • टेक्स्ट से जुड़ी टेस्ट कार्रवाइयों (जैसे, performTextInput) के लिए, अब सीधे तौर पर फ़ोकस करने का अनुरोध किया जाएगा. इसके लिए, फ़ील्ड पर क्लिक करने के बजाय, सिमैंटिक्स ऐक्शन का इस्तेमाल किया जाएगा. (I6ed05)

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

  • टेक्स्ट टेस्ट की कार्रवाइयों के लिए, अब टेक्स्ट फ़ील्ड चालू करना ज़रूरी है. (Iab328)

वर्शन 1.5.0-alpha01

22 मार्च, 2023

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

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

  • Modifier.intermediateLayout को अब LookaheadScope की ज़रूरत नहीं होती. intermediateLayout में मौजूद मेज़र ब्लॉक में IntermediateMeasureScope को रिसीवर के तौर पर इस्तेमाल किया जाता है. यह CoroutineScope, LookaheadScope, और MeasureScope उपलब्ध कराता है.(Ibe2e5)
  • LookaheadLayout को LookaheadScope से बदल दिया गया है. अब यह Layout नहीं है. इससे LookaheadScope में मौजूद चाइल्ड कॉन्टेंट को सीधे तौर पर पैरंट की MeasurePolicy से कंट्रोल किया जा सकता है. (Ibe2e5)
  • Modifier.Node#coroutineScope जोड़ता है, ताकि Modifier.Nodes को रूटीन लॉन्च करने की अनुमति मिल सके. (I76ef9)
  • CompositionLocalConsumerModifierNode इंटरफ़ेस लागू करके, Modifier.Nodes को CompositionLocals पढ़ने की अनुमति देता है. (Ib44df)
  • @Deprecated क्लास को प्रॉपर्टी में ट्रांसफ़र करना. (I882d1)

वर्शन 1.4

वर्शन 1.4.3

3 मई, 2023

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

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

  • ऐसी समस्या को ठीक किया गया है जिसमें कुछ मॉडिफ़ायर के साथ इस्तेमाल करने पर, AndroidView को सही तरीके से लेआउट नहीं किया जा सकता था. (I4dc77, b/274797771)
  • 2D फ़ोकस सर्च में मौजूद एक गड़बड़ी को ठीक किया गया है. इससे DropDown मेन्यू पर असर पड़ रहा था (b/276811828)
  • कस्टम फ़ोकस एंटर/एग्ज़िट प्रॉपर्टी में मौजूद एक बग को ठीक किया गया है. यह बग, लैम्डा को पहली बार शुरू किए जाने पर सिर्फ़ एंटर/एग्ज़िट ब्लॉक को चलाता था (b/277234245)
  • फ़ोकस सिस्टम में हुई रिग्रेशन की समस्या को ठीक किया गया है. इसकी वजह से, focusProperties को पढ़ते समय ऐप्लिकेशन क्रैश हो जाता था. (b/271324781, b/274897776)

वर्शन 1.4.2

19 अप्रैल, 2023

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

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

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

वर्शन 1.4.1

5 अप्रैल, 2023

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

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

  • ParentDataModifier से AndroidView पर असर न पड़ने की समस्या को ठीक किया गया (b/274797771)

वर्शन 1.4.0

22 मार्च, 2023

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

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

  • नया PinnableContainer एपीआई जोड़ा गया है. इससे लेज़ी लिस्ट आइटम को पिन किया जा सकता है, ताकि स्क्रोल करने पर वे तय सीमा से बाहर न जाएं. उदाहरण के लिए, Modifier.focusable() इस तरीके का इस्तेमाल करके, फ़िलहाल फ़ोकस किए गए आइटम को पिन करता है. (Ib8881, b/259274257, b/195049010)
  • फ़ोकस सिस्टम को नए एक्सपेरिमेंटल Modifier.Node API का इस्तेमाल करके फिर से लिखा गया है. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Surfaces पर IsContainer सिमैंटिक्स प्रॉपर्टी जोड़ी गई. इस प्रॉपर्टी का इस्तेमाल बाद में किए जाने वाले बदलाव में किया जाएगा. इससे, एलिमेंट के सिमैंटिक मतलब के आधार पर ट्रैवर्सल का क्रम तय किया जाएगा. जैसे, सर्फ़ेस. (I63379)
  • सुलभता से जुड़ी नई भूमिका DropdownList जोड़ी गई है. इसका इस्तेमाल, android.widget.Spinner पर फ़ोकस करते समय TalkBack के व्यवहार को दोहराने के लिए किया जा सकता है. (I177e5, b/236159001)
  • अब PlatformTextStyle(emojiSupportMatch) का इस्तेमाल करके, किसी पैराग्राफ़ के लिए इमोजी सपोर्ट प्रोसेसिंग को बंद किया जा सकता है. (Ia7100, b/139326806)
  • Android Compose यूज़र इंटरफ़ेस (यूआई) टेस्ट अब हर फ़्रेम के लिए लेआउट पास चलाएंगे.ऐसा तब होगा, जब फ़्रेम को कुछ समय से इस्तेमाल में नहीं है स्टेट में ले जाया जाएगा. उदाहरण के लिए, waitForIdle के ज़रिए. इससे उन टेस्ट पर असर पड़ सकता है जो लेआउट ऐनिमेशन के अलग-अलग फ़्रेम पर दावा करते हैं. (I8ea08, b/222093277)
  • TextStyle में एक्सपेरिमेंटल TextMotion जोड़ा गया है, ताकि यह तय किया जा सके कि टेक्स्ट को Static(default) के तौर पर दिखाना है या ऐनिमेशन के तौर पर. अगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जा रहा है, उसका अनुवाद किया जा रहा है या उसे घुमाया जा रहा है, तो TextMotion.Animated का इस्तेमाल करें. (I24dd7)

वर्शन 1.4.0-rc01

8 मार्च, 2023

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

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

  • AndroidView कंपोज़ेबल फ़ंक्शन का ओवरलोड जोड़ा गया है, जो onReset पैरामीटर स्वीकार करता है. इससे View इंस्टेंस को फिर से इस्तेमाल किया जा सकता है. ऐसा तब होता है, जब कंपोज़िशन में उनके नोड को हटा दिया जाता है और उन्हें कंपैटिबल तरीके से फिर से इस्तेमाल किया जाता है. यह खास तौर पर, व्यू के LazyRows और LazyColumns के लिए मददगार है. (I3f10d, b/230099236)
  • कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल PlatformTextInputAdapter एपीआई लॉन्च किया गया है. यह सीधे तौर पर प्लैटफ़ॉर्म एपीआई से कम्यूनिकेट करता है. (I58df4)

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

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

वर्शन 1.4.0-beta02

22 फ़रवरी, 2023

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

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

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

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

  • सुलभता के लिए फ़ोकस ऑर्डर एल्गोरिदम को बेहतर बनाया गया है. उदाहरण के लिए, टॉप/बॉटम बार को ज़्यादातर पहले/आखिरी में पढ़ा जाता है (74e9c5)

वर्शन 1.4.0-beta01

8 फ़रवरी, 2023

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

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

  • PinnableContainer.PinnedHandle.unpin() का नाम बदलकर release() कर दिया गया (I4667a)
  • ComposeTestRule में एक्सपेरिमेंटल एपीआई के तौर पर waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists, और waitUntilDoesNotExist को जोड़ा गया है. साथ ही, waitUntil एपीआई को किसी भी मैच करने वाले और नोड की किसी भी संख्या को स्वीकार करने के लिए बढ़ाया गया है. ज़्यादा जानकारी के लिए, ComposeTestRule पर जाएं. (Ifa1b9, b/226934294)
  • Font.MaximumAsyncTimeout का नाम बदलकर Font.MaximumAsyncTimeoutMillis कर दें. (I07af5)
  • GoogleFont.Provider.AllFontsListUri को हटा दिया गया है और इसके बजाय, ktdoc में इससे लिंक किया गया है. (I16f29)

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

  • AndroidFont.fontVariationSettings के लिए दस्तावेज़ जोड़े गए (I7d9e2)

वर्शन 1.4.0-alpha05

25 जनवरी, 2023

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

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

  • runComposeUiTest फ़ंक्शन और create*ComposeRule फ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर शुरू किए गए नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन, CoroutineContext पैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भी LaunchedEffect और rememberCoroutineScope() कॉल के लिए किया जाएगा. (I10614, b/265177763)
  • एक डाइमेंशन वाली वेलोसिटी (If5a82) को ट्रैक करने के लिए, नया एपीआई जोड़ा गया है
  • FocusRequester को अब @Stable के तौर पर मार्क कर दिया गया है. (I580ee)
  • DialogProperties कंस्ट्रक्टर से एक्सपेरिमेंटल एनोटेशन हटाएं. यह कंस्ट्रक्टर, usePlatformDefaultWidth पैरामीटर लेता है. (Ic4048)
  • पाथ पर किसी दूरी पर मौजूद जगह और स्पर्शरेखा का हिसाब लगाने के लिए फ़ंक्शन जोड़ा गया - PathMeasure.getPosition() और PathMeasure.getTangent() के साथ (I3b47c)
  • PlatformParagraphStyle पर गलती से सार्वजनिक सेटर को हटा दिया गया. (I07f47)
  • इनलाइन/इस्तेमाल बंद किए गए-छिपाए गए फ़ंक्शन के टाइप/शून्य होने की स्थिति के बारे में ज़्यादा जानकारी (I24f91)
  • शून्य-बंटन वाली व्याख्याओं के लिए क्वेरी करने के लिए, AnnotatedString.hasStringAnnotations जोड़ें. (I94dfe, b/246960758)
  • TextMeasurer.measure फ़ंक्शन के लिए एक नया ओवरलोड जोड़ा गया है, जो String को टेक्स्ट के तौर पर लेता है. (I47b2d, b/242705342)
  • TextStyle में मौजूद LineBreak और Hyphens एपीआई को स्टेबल वर्शन में अपग्रेड कर दिया गया है. (Ic1e1d)

बाहरी योगदान

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

वर्शन 1.4.0-alpha04

11 जनवरी, 2023

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

नई सुविधाएं

  • नया PinnableContainer एपीआई जोड़ा गया है. इससे लेज़ी लिस्ट आइटम को पिन किया जा सकता है, ताकि स्क्रोल करने पर वे तय सीमा से बाहर न जाएं. उदाहरण के लिए, Modifier.focusable() इस तरीके का इस्तेमाल करके, फ़िलहाल फ़ोकस किए गए आइटम को पिन करता है. (Ib8881, b/259274257, b/195049010)
  • फ़ोकस सिस्टम को नए एक्सपेरिमेंटल Modifier.Node API का इस्तेमाल करके फिर से लिखा गया है. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Surfaces पर IsContainer सिमैंटिक्स प्रॉपर्टी जोड़ी गई. इस प्रॉपर्टी का इस्तेमाल बाद में किए जाने वाले बदलाव में किया जाएगा. इससे, एलिमेंट के सिमैंटिक मतलब के आधार पर ट्रैवर्सल का क्रम तय किया जाएगा. जैसे, सर्फ़ेस. (I63379)
  • सुलभता से जुड़ी नई भूमिका DropdownList जोड़ी गई. इसका इस्तेमाल, TalkBack's पर फ़ोकस करते समय android.widget.Spinner के व्यवहार को दोहराने के लिए किया जा सकता है. (I177e5, b/236159001)
  • अब PlatformTextStyle(emojiSupportMatch) का इस्तेमाल करके, किसी पैराग्राफ़ के लिए इमोजी सपोर्ट प्रोसेसिंग को बंद किया जा सकता है. (Ia7100, b/139326806)
  • Android Compose यूज़र इंटरफ़ेस (यूआई) टेस्ट, अब हर फ़्रेम के लिए लेआउट पास चलाएंगे. ऐसा तब होगा, जब फ़्रेम को कुछ समय से इस्तेमाल में नहीं है (जैसे, waitForIdle के ज़रिए) पर ले जाया जाएगा. इससे उन टेस्ट पर असर पड़ सकता है जो लेआउट ऐनिमेशन के अलग-अलग फ़्रेम पर दावा करते हैं. (I8ea08, b/222093277)
  • TextStyle में एक्सपेरिमेंटल TextMotion जोड़ा गया है, ताकि यह तय किया जा सके कि टेक्स्ट को Static(default) के तौर पर दिखाना है या ऐनिमेशन के तौर पर. अगर टेक्स्ट को ऐनिमेशन के ज़रिए स्केल किया जा रहा है, उसका अनुवाद किया जा रहा है या उसे घुमाया जा रहा है, तो TextMotion.Animated का इस्तेमाल करें. (I24dd7)

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

  • drawText फ़ंक्शन में maxSize: IntSize आर्ग्युमेंट को size: Size से बदल दिया गया है, ताकि यह अन्य DrawScope फ़ंक्शन के साथ काम कर सके. डिफ़ॉल्ट रूप से size को Size.Unspecified पर सेट किया जाता है. इससे, डिफ़ॉल्ट ऐक्शन और सेटिंग में कोई बदलाव नहीं होना चाहिए. (Icd27d)
  • अब इस्तेमाल में नहीं आने वाले एक्सपेरिमेंटल फ़ॉन्ट कंस्ट्रक्टर को हटा दिया गया है. (I8a724, b/261435386)
  • यूज़र इंटरफ़ेस (यूआई) टूलिंग डेटा क्लास Group में अब एक फ़ील्ड, isInline है. इससे पता चलता है कि ग्रुप, इनलाइन कंपोज़ेबल फ़ंक्शन को कॉल करने के लिए है या नहीं. अगर isInline, true है, तो कॉल किसी इनलाइन कंपोज़ेबल फ़ंक्शन को किया जाता है. हालांकि, कंपोज़ कंपाइलर प्लगिन के ऐसे वर्शन के साथ कंपाइल किए गए मॉड्यूल से इनलाइन कंपोज़ेबल फ़ंक्शन को कॉल करने पर, वैल्यू गलत हो सकती है जो इनलाइन फ़ंक्शन की जानकारी जनरेट नहीं करता है. (Idb846)
  • पहले एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल वर्शन में अपग्रेड किया गया
  • Rotary Scroll Event API अब स्टेबल हो गया है (I42ad3, b/261561229)
  • FontVariation एपीआई अब स्टेबल हो गया है (I8779f, b/241016309)
  • सभी Font() कंस्ट्रक्टर अब स्टेबल एपीआई (I5948b, b/261435386) हैं
  • DeviceFontFamilyName अब स्टेबल हो गया है (I8b640, b/261435386)
  • AndroidFont कंस्ट्रक्टर, variationSettings अब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)
  • createFontFamilyResolver API अब स्थिर हो गया है. इसका इस्तेमाल, फ़ॉन्ट को एसिंक तरीके से लोड करने के दौरान, पहचानी और मैनेज नहीं की गई गड़बड़ियों को पकड़ने के लिए किया जा सकता है. (Ibb481, b/261435386)
  • Font.loadingStrategy API अब स्थिर हो गया है. (I5937c, b/261435386)
  • GoogleFont API अब स्थिर हो गया है. (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) अब स्टेबल एपीआई है. (I90c84, b/261561612)
  • pluralStringResource अब स्टेबल एपीआई है. (I09849, b/261439703)

वर्शन 1.4.0-alpha03

7 दिसंबर, 2022

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

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

  • PointerIcon (I23af8) से ExperimentalComposeUiApi हटाया जा रहा है
  • 'परिचय दें' पेज पर सुलभता से जुड़ी कार्रवाइयां: PageUp, PageDown, PageLeft, PageRight. ध्यान दें कि ये सिर्फ़ एपीआई 29 से उपलब्ध हैं. (Ida4ab)
  • rememberNestedScrollConnection पैरामीटर के व्यू को रूट व्यू से होस्ट व्यू में अपडेट किया गया. (Ia5200)
  • स्क्रोल करने की जानकारी के लिए, Modifier API जोड़ा गया. (I2ba9d, b/203141462)
  • इस कुकी का इस्तेमाल Clickable में किया जाता है. इससे प्रेस इंटरैक्शन को सही तरीके से डिले किया जा सकता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं.
  • Clickables को ठीक किया गया है. Scrollable ViewGroup के अंदर इस्तेमाल किए जाने पर, यह रिपल्स को सही तरीके से डिले नहीं करता था.
  • ड्रॉअर और शीट को अपडेट किया गया है, ताकि अगर जेस्चर स्क्रोल इवेंट बन सकते हैं, तो प्रेस में सही तरीके से देरी हो.
  • CompositingStrategy.Always का नाम बदलकर Offscreen कर दिया गया है. इससे पता चलता है कि graphicsLayer को हमेशा इंटरमीडिएट बफ़र (I47dc1) में रेंडर किया जाएगा
  • एक से ज़्यादा कॉन्टेंट स्लॉट वाले लेआउट ओवरलोड की सुविधा अब स्थिर हो गई है (I10566, b/248294649)
  • टेस्ट के दौरान Perfetto ट्रेस (इन्हें सिस्टम ट्रेस भी कहा जाता है) कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर नए एपीआई PerfettoTrace.record {} और PerfettoTraceRule जोड़े गए हैं. इससे टेस्ट के काम करने के तरीके और परफ़ॉर्मेंस की जांच की जा सकेगी. (I3ba16)
  • Compose नियम का इस्तेमाल करके की जाने वाली यूज़र इंटरफ़ेस (यूआई) जांचों में, withFrameNanos कॉलबैक के दौरान फिर से शुरू किए गए कंटीन्यूएशन तब तक डिस्पैच नहीं किए जाएंगे, जब तक सभी फ़्रेम कॉलबैक पूरे नहीं हो जाते. यह सुविधा, सामान्य तौर पर काम करते समय कंपोज़ करने की सुविधा के जैसा ही काम करती है. हालांकि, पुरानी सेटिंग पर आधारित टेस्ट फ़ेल हो सकते हैं. इसका असर सिर्फ़ उस कोड पर पड़ना चाहिए जो सीधे तौर पर withFrameNanos या withFrameMillis को कॉल करता है. साथ ही, जिसमें उन फ़ंक्शन को पास किए गए कॉलबैक के बाहर लॉजिक होता है. इस लॉजिक को कॉलबैक के अंदर ले जाने की ज़रूरत पड़ सकती है. उदाहरणों के लिए, इस सीएल में ऐनिमेशन टेस्ट में हुए बदलाव देखें.
  • TestMonotonicFrameClock कंस्ट्रक्टर और फ़ैक्ट्री फ़ंक्शन में, onPerformTraversals: (Long) -> Unit पैरामीटर जोड़ा गया है. यह पैरामीटर ज़रूरी नहीं है. इसका इस्तेमाल, withFrameNanos कॉलबैक के बाद और कॉलर की को-रूटीन फिर से शुरू होने से पहले कोड चलाने के लिए किया जाता है. (Idb413, b/254115946, b/222093277, b/255802670)
  • Compose में EmojiCompat जोड़ा गया (Ibf6f9, b/139326806)
  • डाइनैमिक कलर की सुविधा के लिए, @Preview में नया वॉलपेपर पैरामीटर जोड़ा गया (I9f512)

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

  • स्नैपशॉट लागू करने की सूचनाएं अब Recomposer के बदलाव लागू करने के बाद भेजी जाती हैं. (Iad6c0, b/222093277)
  • captureToImage में बदलाव किए गए हैं, ताकि मल्टी विंडो के स्क्रीनशॉट कैप्चर किए जा सकें. यह उन स्क्रीनशॉट टेस्ट के लिए काम का है जिनमें कंपोज़ पॉप-अप का इस्तेमाल किया जाता है. (I169c5)

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

  • Compose UI और Compose Material अब Lifecycle 2.5.1 पर निर्भर करते हैं. (I05ab0, b/258038814)

वर्शन 1.4.0-alpha02

9 नवंबर, 2022

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

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

  • GraphicsLayerScope को अपडेट किया गया है, ताकि graphicsLayer का मौजूदा साइज़ दिखाया जा सके. यह कंपोज़ेबल के साइज़ के फ़ंक्शन के तौर पर, graphicsLayer ट्रांसफ़ॉर्मेशन का हिसाब लगाने के लिए काम आता है. (If8c43,b/181387080)
  • graphicsLayer कॉन्टेंट को रेंडर करने के लिए, ऑफ़स्क्रीन कंपोज़िटिंग लेयर का इस्तेमाल कब करना है, यह तय करने के लिए CompositingStrategy को पेश किया गया. ऑटो मोड में डिफ़ॉल्ट सेटिंग का इस्तेमाल किया जाता है. अगर ऐल्फ़ा या RenderEffect/Overscroll लागू किया जाता है, तो यह अंदरूनी तौर पर एक लेयर का इस्तेमाल करता है. Always में हमेशा एक ऑफ़स्क्रीन बफ़र शामिल होता है. वहीं, ModulateAlpha में ऑफ़स्क्रीन बफ़र का इस्तेमाल नहीं किया जाता. इसके बजाय, graphicsLayer में रिकॉर्ड किए गए हर ड्रॉइंग निर्देश को मॉड्युलेट किया जाता है. ModulateAlpha का इस्तेमाल करने पर, RenderEffect/Overscroll के इस्तेमाल के लिए अब भी ऑफ़स्क्रीन बफ़र का इस्तेमाल किया जाएगा (I25e82, b/256382834)
  • invalidateSubtree() को Modifier.Node में जोड़ा गया है, ताकि लेआउट और ड्रॉइंग के लिए पूरी हैरारकी को अमान्य किया जा सके. (I4bd90)
  • rememberNestedScrollInteropConnection को स्टेबल वर्शन पर प्रमोट करें. rememberNestedScrollInteropConnection को रूट व्यू पास करने की सुविधा जोड़ी गई. इससे कस्टम व्यू को स्क्रोल करने से जुड़ी पाबंदियों के हिसाब से बेहतर तरीके से काम करने में मदद मिल सकती है. खास तौर पर, नॉन-स्टैंडर्ड व्यू (जैसे, ModalBottomSheetDialog) में. (I9e107)
  • ObserverNode इंटरफ़ेस जोड़ा गया है. इसका इस्तेमाल Modifier.Node लागू करने वाले उन लोगों के लिए किया जा सकता है जिन्हें यह सूचना देनी है कि पहले पढ़ी गई वैल्यू बदल गई है (I5728b, b/247716483)
  • Paint में एक नया कंस्ट्रक्टर जोड़ा गया है, जो नेटिव android.graphics.Paint को स्वीकार करता है. इसके अलावा, एक एक्सटेंशन फ़ंक्शन toComposePaint() भी जोड़ा गया है. यह फ़ंक्शन, मौजूदा नेटिव Paint ऑब्जेक्ट को Compose Paint में बदलता है. (Ica91b)
  • Android पर इस्तेमाल करने के लिए, नया FontFamily.Resolver.resolveAsTypeface जोड़ें. (I8950b)
  • ToolingState जोड़ा गया, ताकि टूलिंग, कंपोज़ेबल की इंटरनल स्थितियों को बदल सके (Ie6614)
  • नए जोड़े गए ऐनिमेशन (I8677b) के लिए बेहतर सहायता पाने के लिए, टूलिंग को फिर से फ़ैक्टर किया गया
  • मटीरियल और मटीरियल3 टेक्स्ट में minLines पैरामीटर जोड़ा गया. साथ ही, TextField और OutlinedTextField जोड़े गए. इससे लाइनों की संख्या (I4af1d) के हिसाब से, कॉम्पोनेंट की कम से कम ऊंचाई सेट की जा सकती है

वर्शन 1.4.0-alpha01

24 अक्टूबर, 2022

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

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

  • हावभाव पहचानने वाले डिटेक्टर के लिए, awaitEachGesture() नाम का एक नया तरीका जोड़ा गया. यह forEachGesture() की तरह काम करता है. हालांकि, जेस्चर पर लूप पूरी तरह से AwaitPointerEventScope के अंदर काम करता है, ताकि इवेंट को दोहराने के दौरान कोई इवेंट न छूटे.
  • forEachGesture() के इस्तेमाल पर रोक लगा दी गई है. अब awaitEachGesture() का इस्तेमाल किया जाता है. ऐसा इसलिए किया गया है, क्योंकि में जेस्चर के बीच इवेंट खो जाते हैं. (Iffc3f, b/251260206)
  • androidx में सुलभता ऑब्जेक्ट को रीसाइकल करने की सुविधा बंद की जा रही है. हमने पाया है कि परफ़ॉर्मेंस में बदलाव, सबसे पुराने वर्शन में भी न के बराबर है. (I0a961)
  • TextStyle और SpanStyle में DrawStyle को एक्सपेरिमेंट वाले एट्रिब्यूट के तौर पर जोड़ा गया है, ताकि आउटलाइन वाला टेक्स्ट बनाया जा सके. (If24b8, b/155421273)
  • AnnotatedString.Builder अब kotlin.text.Appendable लागू करता है. (I1a061, b/231030444)
  • AnnotatedString.Builder में अब append(AnnotatedString, start: Int, end: Int) तरीका उपलब्ध है. इसकी मदद से, AnnotatedString के सबस्ट्रिंग और इंटरसेक्टिंग स्टाइल को जोड़ा जा सकता है.
  • Paragraph और MultiParagraph पेंट फ़ंक्शन में DrawStyle पैरामीटर जोड़ा गया है. इससे आउटलाइन वाला टेक्स्ट बनाया जा सकता है. (Ic8102, b/155421273)

बाहरी योगदान

  • vighnesh के लिए धन्यवाद. आपने टीवी डिवाइसों को Previews (Ie15cd) में जोड़ा है

वर्शन 1.3

वर्शन 1.3.3

11 जनवरी, 2023

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

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

  • Android 9 पर कभी-कभी क्रैश होने की समस्या को ठीक किया गया है. यह समस्या तब होती है, जब ऐक्टिविटी Compose View की स्टेट को सेव कर रही होती है. (I0b755, b/260322832)

वर्शन 1.3.2

7 दिसंबर, 2022

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

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

  • इसे अपडेट करके, Profobuf 3.21.8 का इस्तेमाल किया गया है. इससे protobuf-javalite:3.19.4 (CVE-2022-3171) में सुरक्षा से जुड़ी चेतावनी नहीं मिलती (b/255545055)

वर्शन 1.3.1

9 नवंबर, 2022

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

वर्शन 1.3.0

24 अक्टूबर, 2022

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

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

वर्शन 1.3.0-rc01

5 अक्टूबर, 2022

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

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

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

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

  • DeviceFontFamilyName फ़ॉन्ट, डिफ़ॉल्ट रूप से wght और ital की वैरिएशन सेटिंग को कॉन्फ़िगर नहीं करेंगे. इसके बजाय, लोड किए गए Typeface के लिए प्लैटफ़ॉर्म सेटिंग का इस्तेमाल करेंगे. (Ia7a6d, b/246989332)
  • LazyColumn मेमोरी लीक की समस्या ठीक की गई - मॉडिफ़ायर का दोबारा इस्तेमाल किए जाने पर, onModifierLocalsUpdated को डिफ़ॉल्ट वैल्यू के साथ कॉल नहीं किया जा रहा था (b/230168389)

वर्शन 1.3.0-beta03

21 सितंबर, 2022

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

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

  • टेक्स्ट में लाइन तोड़ने की सुविधा को पसंद के मुताबिक बनाने के विकल्प जोड़े गए. (I86907)
  • कम से कम चौड़ाई की पाबंदियों को लागू करने के लिए, TextMeasurer.measure तरीके में size:IntSize आर्ग्युमेंट को constraints: Constraints से बदल दिया गया है. (I37530, b/242707525)

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

  • AndroidX Activity का BackHandler एपीआई अब Dialog कंपोज़ेबल में काम करता है. (I35342)

वर्शन 1.3.0-beta02

7 सितंबर, 2022

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

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

  • लेआउट के लिए एक्सपेरिमेंटल ओवरलोड जोड़ा गया है. यह कंपोज़ किए जा सकने वाले कॉन्टेंट के कई लैम्डा की सूची स्वीकार करता है. इससे अलग-अलग कॉन्टेंट लैम्डा में रखे गए मेज़र किए जा सकने वाले कॉन्टेंट को अलग-अलग तरीके से थ्रेट किया जा सकता है (Ic1b4e)

एक्सपेरिमेंट के तौर पर उपलब्ध Focus API में हुए बदलाव:

  • FocusDirection.In और FocusDirection.Out के इस्तेमाल पर रोक लगा दी गई है. इनकी जगह FocusDirection.Enter और FocusDirection.Exit का इस्तेमाल किया जाएगा. (Ia4262, b/183746982)
  • FocusManager.moveFocus(Enter) और FocusManager.moveFocus(Exit) के लिए कस्टम व्यवहार तय करने के लिए, फ़ोकस की दो नई प्रॉपर्टी enter और exit जोड़ी गई हैं. (I5f3f9, b/183746982)
  • अब फ़ोकस मूव को रद्द करने के लिए, FocusRequester.Cancel का इस्तेमाल किया जा सकता है. FocusRequester.Cancel का इस्तेमाल, फ़ोकस करने की इनमें से किसी भी प्रॉपर्टी में किया जा सकता है: up, down, left, right, next, previous, start, end, enter, और exit. (Ib300f)

वर्शन 1.3.0-beta01

24 अगस्त, 2022

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

मॉडिफ़ायर नोड रिफ़ैक्टर

Modifier/Modifier.Element इंस्टेंस को मैनेज करने वाली लेयर को फिर से बनाया गया है. साथ ही, LayoutNodes पर उनके व्यवहार को कोऑर्डिनेट किया गया है. यह एक रीफ़ैक्टर था, जिससे Compose में मौजूद कई मॉडिफ़ायर के सार्वजनिक एपीआई पर कोई असर नहीं पड़ा. इसे सिर्फ़ लागू करने से जुड़ा बदलाव माना जा सकता है. इसके बावजूद, यह बदलाव कई वजहों से अहम है. (Ie4313)

बदलाव की खास जानकारी

जोड़े गए एक्सपेरिमेंटल Modifier.Node एपीआई, एक ऐसा ऐब्स्ट्रैक्शन उपलब्ध कराते हैं जिससे लेआउट नोड के लाइफ़साइकल के साथ बनाए रखे जाने वाले इंस्टेंस पर स्थिति को बनाए रखा जा सकता है. साथ ही, इसे लेआउट नोड के हिसाब से और इसे बनाने वाले Modifier.Element के इस्तेमाल के हिसाब से असाइन किया जाएगा.

आसान शब्दों में कहें, तो यह ऐब्स्ट्रैक्शन, Modifier.composed एपीआई के मेकैनिज़्म पर भरोसा किए बिना, स्टेटफ़ुल मॉडिफ़ायर बनाने का एक वैकल्पिक तरीका उपलब्ध कराता है.

जोखिम

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

कृपया इस रिलीज़ को अपग्रेड करते समय सावधानी बरतें. अगर आपको लगता है कि इससे आपके लिए कोई समस्या हुई है, तो कृपया हमें बताएं.

एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई

कई एक्सपेरिमेंटल एपीआई जोड़े गए हैं. ये सभी "मॉडिफ़ायर नोड" के नए कॉन्सेप्ट से जुड़े हैं. Modifier.Node, इन वजहों से बनाए जाते हैं

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

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

डायलॉग और पॉपअप में, ज़्यादा से ज़्यादा 8dp एलिवेशन इस्तेमाल किया जा सकता है.

Compose डायलॉग और पॉप-अप के लिए, ज़्यादा से ज़्यादा एलिवेशन को 30dp से घटाकर 8dp कर दिया गया है. इस बदलाव का असर, कस्टम डायलॉग और पॉपअप के यूज़र इंटरफ़ेस (यूआई) और मटीरियल, दोनों पर पड़ता है. यह बदलाव, Android के S से पहले के वर्शन में सुलभता से जुड़ी गड़बड़ी को ठीक करने के लिए किया गया है. साथ ही, यह पक्का करने के लिए किया गया है कि उन विंडो में सुलभता सेवाएं, डायलॉग या पॉपअप में मौजूद कॉन्टेंट के साथ इंटरैक्ट कर सकें.

इस बदलाव का असर सिर्फ़ तब पड़ेगा, जब आपने 8dp से ज़्यादा एलिवेशन लेवल वाला कस्टम डायलॉग या पॉपअप लागू किया हो. डायलॉग या पॉप-अप की ऊंचाई कम करें. अगर आपको इस नए व्यवहार से ऑप्ट-आउट करना है, तो अपनी पसंद के मुताबिक एलिवेशन सेट करके, अपने डायलॉग या पॉप-अप को फ़ोर्क करें. हम इसका सुझाव नहीं देते, क्योंकि इससे सुलभता पर बुरा असर पड़ सकता है. डेवलपर को यह पक्का करना होगा कि डायलॉग या पॉप-अप का सबसे नीचे वाला हिस्सा, सुलभता सेवाओं के साथ इंटरैक्ट किया जा सके और उसे पढ़ा जा सके.

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

  • उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव करने पर, painterResource अपडेट नहीं होता था (I58e73, b/228862715)
  • rememberTextMeasurer अब FontFamily.Resolver, Density या LayoutDirection पैरामीटर नहीं लेता है. इन पैरामीटर के लिए कस्टम वैल्यू देने के लिए, कृपया TextMeasurer कंस्ट्रक्टर का इस्तेमाल करें. (Ia1da3)
  • DialogProperties.decorFitsSystemWindows प्रॉपर्टी जोड़ी गई है, ताकि डायलॉग WindowInsets के साथ काम कर सकें. (I57742, b/229378542)
  • बाइनरी कंपैटिबिलिटी बनाए रखने के लिए, फ़ॉन्ट कंस्ट्रक्टर को वापस ओरिजनल Kotlin फ़ाइल में ले जाया गया. पिछले स्टेबल वर्शन की रिलीज़ में कोई बदलाव नहीं किया गया है. (Ieb2f3)
  • कई 'बराबर है' की परिभाषाओं से गैर-ज़रूरी ऑपरेटर को हटाया गया है. इससे कोई असर नहीं पड़ता. (I6c309)
  • FontVariation.Setting एक सील किया गया इंटरफ़ेस है, ताकि आने वाले समय में क्लैंपिंग एपीआई का इस्तेमाल किया जा सके. (I11021, b/143703328)
  • CompositionGroup.findParameters को SlotTree.kt में जोड़ें. इससे टूल, पूरी स्लॉट टेबल को पार्स किए बिना CompositionGroup के पैरामीटर वापस पा सकते हैं. (I124fe)

वर्शन 1.3.0-alpha03

10 अगस्त, 2022

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

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

  • LayoutCoordinates.findRootCoordinates() अब सार्वजनिक तौर पर उपलब्ध है (I7fa37, b/204723384)
  • PlacementScope में LayoutCoordinates पाने के लिए, एक्सपेरिमेंट वाला एपीआई जोड़ा गया. इससे डेवलपर को यह पता चलता है कि मौजूदा लेआउट में, बच्चों को उनकी जगह के हिसाब से कहां रखना है. (I5482b, b/238632578)
  • एक LayoutCoordinates से दूसरे में मैट्रिक्स ट्रांसफ़ॉर्मेशन पाने के लिए, LayoutCoordinates.transformFrom जोड़ा गया. (Ic5ab1, b/238632578)
  • SemanticsModifier.id के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, सिमैंटिक्स आईडी को LayoutInfo.semanticsId पर ले जाया गया है. (Iac808, b/203559524)
  • अब रिसॉर्स फ़ॉन्ट, फ़ॉन्ट वेरिएशन सेटिंग (API 26+) सेट करने की सुविधा के साथ काम करते हैं. (I900dd, b/143703328)
  • DeviceFontFamilyNameFont में वैरिएबल फ़ॉन्ट इस्तेमाल करने की सुविधा (Ic1279, b/143703328)
  • फ़ॉन्ट कंस्ट्रक्टर अब O+ डिवाइसों पर वैरिएबल फ़ॉन्ट कॉन्फ़िगर करने के लिए, FontVariation.Setting की सूची स्वीकार करते हैं. (I11a9d, b/143703328)
  • वैरिएबल फ़ॉन्ट तय करने और उनका इस्तेमाल करने के लिए, FontVariation एपीआई जोड़ा गया है. (I3c40c, b/143703328)
  • LineHeightStyle.Alignment कंस्ट्रक्टर अब सार्वजनिक तौर पर उपलब्ध है (एक्सपेरिमेंट के तौर पर) (I4bbbe, b/235876330)
  • पैराग्राफ़ अब expect|actual है और इसे Android और डेस्कटॉप के लिए तय किया गया है. (Id387e, b/239962983)
  • Interface Paragraph को अब सील किए गए इंटरफ़ेस Paragarph के तौर पर इस्तेमाल किया जा सकता है. पैराग्राफ़ को सबक्लास करने का कोई तरीका नहीं है. अगर इस बदलाव से आप पर असर पड़ता है, तो हमारा सुझाव है कि आप हमसे संपर्क करें. (If5247, b/239962983)
  • PlatformTextStyle और LineHeightStyle से एक्सपेरिमेंटल एनोटेशन हटा दिया गया है. (I64bef)
  • TextInputService.show|hideSoftwareKeyboard का इस्तेमाल बंद कर दिया गया है. कृपया ऐप्लिकेशन कोड में SoftwareKeyboardController और IME-मैनेजमेंट कोड में TextInputSession का इस्तेमाल करें. (I14e4c, b/183448615)
  • मौजूदा ऐनिमेशन टाइप के लिए नया एपीआई जोड़ें (I26179)

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

  • उन एपीआई में @RequiresPermission जोड़ा गया है जिनके लिए, SDK 33 और उसके बाद के वर्शन पर POST_NOTIFICATIONS अनुमति देना ज़रूरी है. (Ie542e, b/238790278)

वर्शन 1.3.0-alpha02

27 जुलाई, 2022

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

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

  • दबाव की जानकारी पाने के लिए, नई प्रॉपर्टी PointerInputChange#pressure जोड़ी गई है. (I45a5e, b/205164819)
  • कंपोज़िशन में TextMeasurer इंस्टेंस को आसानी से बनाने और याद रखने के लिए, rememberTextMeasurer जोड़ा गया. (I8d66e)
  • Rect, RoundRect, और MutableRect अब contains फ़ंक्शन को कॉल करने के लिए, Kotlin in सिंटैक्स के साथ काम करते हैं. (Ie42b0, b/238642990)
  • KeyInjectionScope से गैर-ज़रूरी फ़ंक्शन हटाएं, क्योंकि इन्हें एपीआई के आसान हिस्सों के साथ आसानी से लागू किया जा सकता है. हटाए गए फ़ंक्शन में pressKeys, keysDown, और keysUp शामिल हैं. (I81d77)
  • KeyInjectionScope में कॉन्स्टेंट और पैरामीटर के नामों को फिर से व्यवस्थित किया गया है. इसमें 'Millis' सफ़िक्स को शामिल किया गया है. यह सफ़िक्स उन कॉन्स्टेंट और पैरामीटर के लिए इस्तेमाल किया गया है जिनकी यूनिट मिलीसेकंड में होती है. (Iabef5)
  • टेक्स्ट में बदलाव करने से जुड़ी समस्याओं को हल करने के लिए, EditCommand में toStringForLog() तरीका जोड़ा गया. (I53354, b/228862731)
  • DrawScope पर drawText एक्सटेंशन फ़ंक्शन जोड़ा गया है. इससे, कंपोज़ेबल और मॉडिफ़ायर पर अलग-अलग स्टाइल वाला टेक्स्ट बनाया जा सकता है. ये DrawScope पर काम करते हैं, जैसे कि Canvas और drawBehind. (I16a62, b/190787898)
  • TextMeasurer नाम की नई एक्सपेरिमेंटल एपीआई पेश की गई है. यह टेक्स्ट लेआउट कंप्यूटेशन को चालू करती है. इससे BasicText के जैसे ही नतीजे मिलते हैं. यह Compose रनटाइम से अलग होती है. (I17101)
  • mapTree को SlotTree.kt में जोड़ें. इससे टूल, SlotTree की जांच कर सकते हैं. इसके लिए, उन्हें पहले मेमोरी में कॉपी बनाने की ज़रूरत नहीं होती, जैसा कि asTree करता है. लेआउट इंस्पेक्टर के लिए, इससे परफ़ॉर्मेंस में करीब 10 गुना सुधार होता है. (I5e113)
  • Compose Preview को बाइनरी आउटपुट फ़ाइलों में सेव करने की सुविधा जोड़ी गई है, ताकि डेवलपर लाइब्रेरी से MultiPreview एनोटेशन लिख सकें और उनका फिर से इस्तेमाल कर सकें. (I85699, b/233511976)

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

  • Velocity ट्रैकर में InputEventChange इवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि सभी मामलों में वेलोसिटी का हिसाब सही तरीके से लगाया गया है. भले ही, टारगेट एलिमेंट मूव करता हो (Icea9d, b/216582726, b/223440806, b/227709803)
  • व्याख्याएं मौजूद होने पर, AnnotatedString.toUpperCase की वजह से होने वाली NPE की समस्या ठीक की गई. (I0aca2, b/210899140)

वर्शन 1.3.0-alpha01

29 जून, 2022

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

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

  • नया LookaheadLayout, जो मेज़र/लेआउट से पहले लुकअहेड पास की सुविधा देता है. इससे लेआउट में बदलाव होने पर, उसकी पहले से गणना की जा सकती है. साथ ही, पोस्ट-लुकअहेड मेज़रमेंट/लेआउट को पहले से कैलकुलेट किए गए साइज़/जगह का इस्तेमाल करके, साइज़ और जगहों को टारगेट की ओर ऐनिमेट करने की अनुमति मिलती है. SubcomposeLayouts फ़िलहाल काम नहीं करते, लेकिन आने वाले समय में इनकी सुविधा उपलब्ध होगी. (I477f5)
  • पूरी Text की ओपैसिटी में बदलाव करने के लिए, TextStyle और SpanStyle के ब्रश फ़्लेवर में वैकल्पिक ऐल्फ़ा पैरामीटर जोड़ें. (Ic2fac, b/234117635)
  • UrlAnnotation एनोटेशन टाइप और उससे जुड़े तरीकों को पेश किया गया है, ताकि AnnotatedString में TalkBack लिंक को इस्तेमाल किया जा सके. (I1c754, b/231495122)
  • यूटिलिटी फ़ंक्शन को रनटाइम में ले जाना (I4f729)

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

  • TextLayoutResult.getLineForOffset थ्रो नहीं करता है. (Idc5d6, b/235876324)

बाहरी योगदान

  • कंपोज़ेबल फ़ंक्शन या snapshotFlow (Icdb8a) में इसकी स्थिति देखने के लिए, नया एपीआई WindowInfo.keyboardModifiers जोड़ा गया

वर्शन 1.2

वर्शन 1.2.1

10 अगस्त, 2022

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

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

  • इंस्पेक्टर में nullpointer की समस्या ठीक की गई (b/237987764)
  • इंस्पेक्टर में याद रखने की सुविधा के दौरान, क्लास कास्ट के अपवाद को ठीक किया गया (b/235526153)

वर्शन 1.2.0

27 जुलाई, 2022

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

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

  • फ़ोकस ट्रैवर्सल में सुधार:

    • अब लेज़ी लिस्ट में फ़ोकस-ड्राइविंग-स्क्रॉलिंग की सुविधा काम करती है. इसके लिए, नए BeyondBoundsLayout Core API का इस्तेमाल किया जाता है
    • FocusOrder और FocusProperties में, व्यवहार को पसंद के मुताबिक बनाने वाले नए एपीआई
    • फ़िज़िकल कीबोर्ड या टीवी रिमोट के साथ बेहतर तरीके से काम करना
  • इनके लिए नए एपीआई:

    • विंडो इंसर्ट
    • जेस्चर, इनफ़िनिट, और लेआउट ऐनिमेशन के लिए बुनियादी प्रिमिटिव
    • GraphicsLayer की क्षमताएँ, जिनमें RenderEffect शामिल हैं
  • कई गड़बड़ियां ठीक की गईं और परफ़ॉर्मेंस को बेहतर बनाया गया

वर्शन 1.2.0-rc03

29 जून, 2022

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

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

वर्शन 1.2.0-rc02

22 जून, 2022

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

वर्शन 1.2.0-rc01

15 जून, 2022

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

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

  • Compose लाइब्रेरी में इंटरफ़ेस अब jdk8 के डिफ़ॉल्ट इंटरफ़ेस के तरीकों का इस्तेमाल करके बनाए जाते हैं (I5bcf1)
  • KeyInjectionScope में हायर-ऑर्डर फ़ंक्शन जोड़े गए हैं. इनकी मदद से, अन्य बटन को दबाकर रखने या टॉगल करने के दौरान, बटन दबाए जा सकते हैं. इन फ़ंक्शन में withKeysDown, withKeysToggled वगैरह शामिल हैं. साथ ही, यह देखने के लिए प्रॉपर्टी जोड़ी गई हैं कि कोई खास मेटा की डाउन है या नहीं. उदाहरण के लिए, isCtrlDown यह देखने के लिए कि कंट्रोल की दबी हुई है या नहीं. हर फ़ंक्शन के बारे में जानने के लिए, KeyInjectionScope पर जाएं. (I9f6cd, b/229831515)
  • कस्टम ओवरस्क्रोल इफ़ेक्ट की अनुमति देने के लिए, एक एक्सपेरिमेंटल OverscrollEffect पेश किया गया है. साथ ही, Modifier.scrollable ओवरलोड भी पेश किए गए हैं जो इसे स्वीकार करते हैं.
  • एक्सपेरिमेंट के तौर पर उपलब्ध LocalOverScrollConfiguration को foundation.gesture से फ़ाउंडेशन पैकेज में ले जाया गया है. साथ ही, इसका नाम बदलकर LocalOverscrollConfiguration कर दिया गया है (If19fb, b/204650733)
  • runComposeUiTestWithoutActivity {} का नाम बदलकर runEmptyComposeUiTest {} कर दिया गया है, ताकि यह createEmptyComposeRule() (I6fed7) के साथ अलाइन हो सके

वर्शन 1.2.0-beta03

1 जून, 2022

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

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

  • pressKeyTimes के साथ-साथ isCapsLockOn और दोस्तों को KeyInjectionScope में जोड़ा गया. इसके अलावा, एपीआई अब माउस और कीबोर्ड के कॉम्बिनेशन वाले इंजेक्शन पैटर्न के साथ काम करता है. जैसे, मेटा कुंजी को दबाकर माउस बटन पर क्लिक करना. (I4c8da, b/229831515)
  • मुख्य इवेंट इंजेक्ट करने की सुविधा के लिए, एक्सपेरिमेंटल सपोर्ट जोड़ी गई. performKeyInput का इस्तेमाल करके मुख्य इवेंट भेजें. इसके अलावा, performMultiModalInput के साथ मल्टी मॉडल इनपुट जेस्चर के दौरान, MultiModalInjectionScope की key प्रॉपर्टी के ज़रिए भी मुख्य इवेंट भेजे जा सकते हैं. एपीआई के दस्तावेज़ के लिए, KeyInjectionScope देखें. (Ic5000, b/229831515)
  • Android के साथ काम करने वाले Google Fonts के कैननिकल इंटरनेट सोर्स को वापस पाने के लिए, नया GoogleFont.Provider.AllFontsListUri जोड़ें.
  • Compose में GoogleFonts लोड न होने पर, फिर से थ्रो किए गए गड़बड़ी के मैसेज को बेहतर बनाएं. (I0416c)

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

  • Velocity Tracker में InputEventChange इवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि टारगेट एलिमेंट के हिलने पर भी, वेलोसिटी की सही तरीके से गणना की जाए (I51ec3, b/216582726, b/223440806, b/227709803)
  • Show Layout Bounds सेटिंग को अब कंपोज़ेबल पर तुरंत लागू किया जा सकेगा. इसके लिए, आपको क्विक सेटिंग टाइल से इसे टॉगल करना होगा. साथ ही, आपको गतिविधि से बाहर निकलने और फिर से उसमें शामिल होने की ज़रूरत नहीं होगी. (I843d5, b/225937688)
  • सुलभता स्ट्रिंग लुकअप से फ़ॉन्ट लोड नहीं होता है. इससे पहले, यह StyleSpans के लिए फ़ॉन्ट लोड करने की कोशिश करता था. अगर FontFamily.Resolver को बदल दिया गया था, तो इससे क्रैश हो जाता था. (I4609d)
  • कर्सर को टेक्स्ट फ़ील्ड के आखिर में रखकर, फ़ॉरवर्ड डिलीट बटन दबाने पर अब ऐप्लिकेशन क्रैश नहीं होगा.
  • DeleteSurroundingTextCommand और DeleteSurroundingTextInCodePointsCommand के कंस्ट्रक्टर आर्ग्युमेंट अब शून्य से कम नहीं होने चाहिए. (Ica8e6, b/199919707)

वर्शन 1.2.0-beta02

18 मई, 2022

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

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

  • झलक के अन्य टाइप में फ़ंक्शन का फिर से इस्तेमाल करना (I19f39)

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

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer का नाम बदलकर DisposeOnDetachedFromWindowOrReleasedFromPool कर दिया गया है, ताकि यह बेहतर तरीके से पता चल सके कि इन्वेंट्री का निपटान कब किया जाता है. (If15ca)

वर्शन 1.2.0-beta01

11 मई, 2022

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

नई सुविधाएं

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

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

  • एक्सपेरिमेंट के तौर पर BeyondBoundsInterval जोड़ा गया है. इसका इस्तेमाल, LazyList के कस्टम इंप्लीमेंटेशन के लिए किया जा सकता है. ऐसा तब किया जाता है, जब वे दिखने वाली सीमाओं से बाहर आइटम लेआउट करते हैं (Ifabfb, b/184670295)
  • Modifier.composed के मुख्य वर्शन अब स्टेबल एपीआई (Ie65e4, b/229988420) हैं
  • rememberNestedScrollConnection API को आसान बनाया गया है, ताकि कंपोज़िशन लोकल का इस्तेमाल करके मौजूदा व्यू की जानकारी (I67ca7) हासिल की जा सके
  • @file प्रीफ़िक्स का इस्तेमाल करके, अब फ़ाइल स्कोप में @ComposableTarget एनोटेशन और @ComposableTargetMarker के तौर पर मार्क किए गए एनोटेशन का इस्तेमाल किया जा सकता है. फ़ाइल स्कोप में टारगेट एनोटेशन का इस्तेमाल करने पर, कंपाइलर यह मान लेगा कि फ़ाइल में मौजूद सभी कंपोज़ेबल फ़ंक्शन, ऐप्लिकेशन से जुड़े ऐप्लिकेशन को टारगेट करने के लिए हैं. उदाहरण के लिए, @file:UiComposable का इस्तेमाल करने से यह पता चलता है कि सभी @Composable फ़ंक्शन, Compose UI applier को टारगेट करते हैं. जिस फ़ंक्शन को किसी दूसरे ऐप्लिकेशन पर टारगेट करना है उसे टारगेट मार्कर एनोटेशन को साफ़ तौर पर सप्लाई करना होगा. (I40804)
  • एक्सपेरिमेंट के तौर पर एक नया टेस्ट एपीआई लॉन्च किया गया है. यह किसी भी प्लैटफ़ॉर्म पर काम कर सकता है: एक interface ComposeUiTest और एक fun runComposeUiTest(block: ComposeUiTest.() -> Unit). इनका इस्तेमाल, TestRule की ज़रूरत के बिना Compose Ui टेस्ट चलाने के लिए किया जा सकता है. ComposeTestRule के बिना टेस्ट चलाने के लिए, टेस्ट को runComposeUiTest में लैम्डा के तौर पर पास करें. इसके बाद, रिसीवर स्कोप ComposeUiTest में मौजूद तरीकों और सदस्यों का इस्तेमाल करें. ये वही तरीके और सदस्य हैं जो ComposeContentTestRule में मौजूद हैं.

    Android के लिए खास तौर पर बनाए गए interface AndroidComposeUiTest और fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) को इसलिए जोड़ा जाता है, ताकि AndroidComposeTestRule की तरह ही, ऐक्टिविटी को ऐक्सेस किया जा सके. ज़्यादा कंट्रोल के लिए, class AndroidComposeUiTestEnvironment को खुद इंस्टैंशिएट किया जा सकता है.

    डेस्कटॉप पर लागू करने के लिए class DesktopComposeUiTest का इस्तेमाल किया जाता है. हालांकि, फ़िलहाल डेस्कटॉप के लिए खास तौर पर रन फ़ंक्शन उपलब्ध नहीं हैं.

    किसी टेस्ट को ComposeTestRule से ComposeUiTest पर माइग्रेट करने का तरीका यहां बताया गया है. यह Android का उदाहरण है. From:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    इन्हें भेजें:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • फ़िलहाल, ComposeContentTestRule और ComposeTestRule, ComposeUiTest से एक्सटेंड नहीं होते हैं. इसका मतलब है कि ComposeUiTest पर मौजूद एक्सटेंशन फ़ंक्शन को TestRule इंटरफ़ेस पर अभी कॉल नहीं किया जा सकता. जब ComposeUiTest स्टेबल एपीआई में अपग्रेड हो जाएगा, तब ComposeContentTestRule और ComposeTestRule को ComposeUiTest से एक्सटेंड करने के लिए बदल दिया जाएगा. (Ib4e90)

  • LineHeightBehavior का नाम बदलकर LineHeightStyle कर दिया गया है

  • LineVerticalAlignment का नाम बदलकर LineHeightStyle.Alignment कर दिया गया है

  • LineHeightTrim का नाम बदलकर LineHeightStyle.Trim कर दिया गया है

  • LineHeightStyle से डिफ़ॉल्ट कंस्ट्रक्टर वैल्यू हटा दी गई हैं (I582bf, b/181155707)

  • ग्रेडिएंट कलरिंग की मदद से टेक्स्ट बनाने के लिए, Brush को 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)

  • PlatformParagraphStyle.lerp और PlatformSpanStyle.lerp फ़ंक्शन को टॉप लेवल के फ़ंक्शन (I9a268) के तौर पर बदला गया है

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

  • PointerInputChange::copy के दस्तावेज़ में अब यह सही तरीके से बताया गया है कि यह एक शैलो कॉपी है. (I182f5)
  • जब ऊंचाई सीमित हो और सभी टेक्स्ट लाइनें फ़िट न हो रही हों, तो एलिप्सिस का इस्तेमाल किया जा सकता है (Ie528c, b/168720622)
  • डिफ़ॉल्ट includeFontPadding चालू किया गया. TextStyle.platformTextStyle एट्रिब्यूट का इस्तेमाल करके, includeFontPadding को बंद किया जा सकता है. हम आने वाले समय में, डिफ़ॉल्ट व्यवहार में बदलाव करेंगे. हालांकि, तब तक इससे हमें लाइन की ऊंचाई को बेहतर बनाने (aosp/2058653) और TextField क्लिप करने की समस्याओं को हल करने में मदद मिलेगी. (I01423, b/171394808)

बाहरी योगदान

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

वर्शन 1.2.0-alpha08

20 अप्रैल, 2022

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

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

  • pluralStringResource फ़ंक्शन को एक्सपेरिमेंट के तौर पर मार्क किया गया था, ताकि आने वाले समय में इन्हें बेहतर बनाया जा सके और ये अलग-अलग भाषाओं में काम कर सकें. (If24e4)
  • Paragraph और MultiParagraph अब Constraints पैरामीटर स्वीकार करते हैं. फ़िलहाल, Constraints.maxHeight को पास करने से कोई कार्रवाई नहीं होती. हालांकि, आने वाले समय में इससे कुछ कैलकुलेशन की जा सकेंगी. जैसे, ऊंचाई के आधार पर टेक्स्ट को छोटा करना. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() अब MutableSet जैसी कस्टम क्लास स्वीकार करता है. इसमें नए आइटम जोड़ने की अनुमति नहीं होती. (Icd314)
  • PointerIcon अब एक @Stable इंटरफ़ेस है (I9dafe)
  • PointerInputChange में, आंशिक खपत (नीचे या पोज़िशन) को बंद कर दिया गया है. बदलाव को पूरी तरह से लागू करने के लिए, consume() का इस्तेमाल किया जा सकता है. isConsumed का इस्तेमाल करके यह पता लगाया जा सकता है कि किसी और ने पहले बदलाव का इस्तेमाल किया है या नहीं.
  • PointerInputChange::copy() अब हमेशा शैलो कॉपी बनाता है. इसका मतलब है कि PointerInputChange की कॉपी का इस्तेमाल एक बार होने के बाद, उसकी अन्य कॉपी का इस्तेमाल किया जाएगा. अगर आपको अनबाउंड PointerInputChange बनाना है, तो कंस्ट्रक्टर का इस्तेमाल करें. (Ie6be4, b/225669674)
  • Compose और View के बीच नेस्टेड स्क्रोल इंटरऑप को चालू करता है. यह Compose > View की दिशा में काम करता है. इसका मतलब है कि कंपोज़ पैरंट, नेस्ट किए गए स्क्रोल व्यू से नेस्ट किए गए स्क्रोल डेल्टा पा सकेगा. (If7949, b/174348612)
  • नया SemanticsProperty testTagsAsResourceId, जिसका इस्तेमाल Compose को View सिस्टम के लिए डिज़ाइन किए गए UIAutomator टेस्ट के मुताबिक बनाने के लिए किया जा सकता है. (I39c20)
  • FontFamily.SansSerif का इस्तेमाल करते समय, Android पर सिस्टम फ़ॉन्ट के लिए उपलब्ध सभी वेट दिखाएं. यह एपीआई 21 से 28 पर, फ़ॉलबैक फ़ॉन्ट के नामों का इस्तेमाल करेगा. जैसे, sans-serif-medium. यह एक व्यवहार में बदलाव है, क्योंकि इससे पहले एपीआई 21 से 28 पर सिर्फ़ 400 और 700 वज़न वाले फ़ॉन्ट काम करते थे. (I380fe, b/156048036, b/226441992)
  • पैराग्राफ़ और मल्टीपैराग्राफ़ इंस्ट्रक्टर ने, पोज़ीशनल आर्ग्युमेंट को फिर से क्रम में लगाया है. अब ये आर्ग्युमेंट, ज़रूरी नहीं वाले आर्ग्युमेंट से पहले दिखते हैं. (Idafaa)
  • AndroidFont अब typefaceLoader को कंस्ट्रक्टर पैरामीटर के तौर पर लेता है. (I2c971)

वर्शन 1.2.0-alpha07

6 अप्रैल, 2022

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

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

  • नया फ़ंक्शन Snapshot.withoutReadObservation { ... } जोड़ा गया. इससे उपयोगकर्ता, इस ब्लॉक के दौरान पढ़ी गई स्थिति की वैल्यू में हुए बदलावों की सदस्यता लिए बिना, पास किए गए लैम्ब्डा को चला सकते हैं. यह सुविधा उन मामलों में आपके काम आ सकती है जब आपको स्नैपशॉट पर आधारित थ्रेड सेफ़ राइट/रीड से फ़ायदा पाना हो. हालांकि, आपको बिना किसी ज़रूरत के फिर से कंपोज़ किए या फिर से मेज़र किए बिना वैल्यू को पढ़ने की सुविधा चाहिए. (I9f365, b/214054486)
  • ComposeView की consumeWindowInsets एक्सटेंशन प्रॉपर्टी की मदद से डेवलपर, Android WindowInsets के इस्तेमाल को बंद कर सकते हैं. इससे, क्रम में मौजूद हर ComposeViews अलग-अलग WindowInsets लागू कर सकता है. इससे एक-दूसरे के काम में कोई रुकावट नहीं आती. (I0ef08, b/220943142)
  • आईएमई में दशमलव सेपरेटर को शामिल करने के लिए, Keyboard.Number के विकल्प के तौर पर KeyboardType.Decimal को जोड़ा गया है. (Iec4c8, b/209835363)
  • PointerEventType.Scroll और PointerEvent.scrollDelta अब स्टेबल एपीआई हैं (I574c5, b/225669674)
  • View और Compose के बीच नेस्टेड स्क्रोल इंटरऑप को चालू करें, ताकि View क्लास के साथ काम किया जा सके. इसका मतलब है कि अब कंपोज़, स्क्रोल डेल्टा को व्यू पैरंट (सहयोग करने वाला) को भेज सकता है. (I5d1ac, b/174348612)
  • FontFamily.Resolver को अपडेट किया गया है, ताकि सिस्टम-वाइड टेक्स्ट को बोल्ड करने की सुविधा की सुलभता सेटिंग (I6c1e7) को इंटिग्रेट किया जा सके
  • Font(AssetManager, String, ...) का अब इस्तेमाल नहीं किया जा सकता. इसकी जगह Font(String, AssetManager, ...) का इस्तेमाल किया जा सकता है. यह एपीआई, एक्सपेरिमेंट के तौर पर उपलब्ध है. (I1c7a4)
  • नया फ़ॉन्ट डिस्क्रिप्टर Font(DeviceFontFamilyName) जोड़ा गया है. इससे फ़ॉन्ट फ़ॉलबैक चेन के दौरान, सिस्टम में इंस्टॉल किए गए फ़ॉन्ट को विकल्प के तौर पर ढूंढा जा सकता है. (I30468, b/219754572)
  • TextStyle/ParagraphStyle में includeFontPadding के लिए, कुछ समय के लिए कंपैटिबिलिटी कॉन्फ़िगरेशन जोड़ा गया. includeFontPadding को TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) के ज़रिए बदला जा सकता है. यह माइग्रेशन को चालू करने के लिए, कॉन्फ़िगरेशन का एक अस्थायी विकल्प है. इसे हटा दिया जाएगा. (If47be, b/171394808)
  • डीबग करने में मदद पाने के लिए, GoogleFont.Provider.isAvailableOnDevice एक्सटेंशन जोड़ें. (I64e31)
  • @ArrayRes के साथ इस्तेमाल करने के लिए, GoogleFont.Provider कंस्ट्रक्टर जोड़ा गया (Ic5ee1, b/225984280)
  • Compose GoogleFont को अब Font(GoogleFont) कहा जाता है. एपीआई में कोई और बदलाव नहीं किया गया है. (I125f2)

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

  • यह पक्का करने के लिए कि इनर पैडिंग का इस्तेमाल किया जा रहा है, material/Scaffold में लिंट चेक जोड़ा गया (Ifb111)

वर्शन 1.2.0-alpha06

23 मार्च, 2022

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

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

  • फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने का अनुरोध करने के लिए, RequestFocus सिमैंटिक्स ऐक्शन जोड़ा गया. (I17b71)
  • वेक्टर ड्रॉएबल को पार्स करने की सुविधा अपडेट की गई है. इससे, VectorPainter के कॉन्टेंट को अपने-आप मिरर करने की सुविधा काम करती है. ऐसा तब होता है, जब मौजूदा लेआउट की दिशा RTL होती है. (I79cd9, b/185760237)
  • एपीआई के साथ काम करने के लिए, शैडो/ऐम्बिएंट कलर को Modifier.graphicsLayer के ट्रेलिंग पैरामीटर के तौर पर अपडेट किया गया (I3f864, b/160665122)

  • GraphicsLayerScope में शैडो/ऐम्बिएंट कलर के लिए डिफ़ॉल्ट सेटिंग जोड़ी गई हैं, ताकि एपीआई में हुए बदलावों से कोई समस्या न हो

  • RSB इवेंट में इवेंट का समय जोड़ा गया (Ief8ae)

  • FocusOrder को अब FocusProperties में मर्ज कर दिया गया है. साथ ही, focusProperties() में अब focusOrder() की सभी सुविधाएं उपलब्ध हैं. FocusOrder और focusOrder() के इस्तेमाल पर रोक लगा दी गई है. focusOrder() जो focusRequester स्वीकार करता है उसे focusProperties() के साथ focusRequester() मॉडिफ़ायर से बदल दिया जाना चाहिए. इससे मॉडिफ़ायर को अलग-अलग काम करने में मदद मिलती है. (I601b7)

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

  • डिफ़ॉल्ट रूप से उपलब्ध रणनीति को वापस पाने के तरीके के तौर पर ViewCompositionStrategy.Default को जोड़ें

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer जोड़ें. यह नई डिफ़ॉल्ट रणनीति है और RecyclerView जैसे पूलिंग कंटेनर को सही तरीके से मैनेज करती है. (If7282)

  • मल्टीप्रीव्यू सुविधा जोड़ने के पहले चरण के तौर पर, एनोटेशन क्लास को @Preview से एनोटेट करने की सुविधा जोड़ी गई. इस तरह के एनोटेशन का इस्तेमाल, कंपोज़ेबल तरीकों या अन्य एनोटेशन क्लास को एनोटेट करने के लिए किया जा सकता है. इसके बाद, इन्हें दिए गए @Preview के साथ परोक्ष रूप से एनोटेट किया जा सकता है. (I12eff)

  • @Preview (I071c9) के लिए, डिवाइसों की सूची में रेफ़रंस डिवाइस जोड़े गए

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

  • वेक्टर ग्राफ़िक एपीआई को अपडेट किया गया है, ताकि @UiComposable के बजाय सही कंपोज़ेबल एनोटेशन @VectorComposable का इस्तेमाल किया जा सके (I942bc)
  • AnnotatedString.Builder.withStyle (If84d5) से crossinline हटाया गया

बाहरी योगदान

  • compose-ui: GraphicsLayerScope में ambientShadowColor और spotShadowColor प्रॉपर्टी जोड़ी गईं (I1ba1a, b/160665122)
  • अब pluralStringResource फ़ंक्शन के ज़रिए, एक से ज़्यादा संसाधनों का इस्तेमाल किया जा सकता है. (Ib2f23, b/191375123)

वर्शन 1.2.0-alpha05

9 मार्च, 2022

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

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

  • TextToolbar अब ActionCallback के बजाय, लैम्डा आर्ग्युमेंट लेता है. (Ib2eb9, b/197950089)
  • Tiramisu DP2 (I0cbb7) से मेल खाने के लिए, कोर और appcompat में अपडेट की गई nullability
  • मेज़र किए गए इंटरफ़ेस में अब parentData प्रॉपर्टी दिखती है (I3313f)
  • Modifier.onPlaced और OnPlacedModifier इंटरफ़ेस अब बेहतर तरीके से काम कर रहे हैं. (Ib5482)
  • हुर्रे! Compose ऐनिमेशन में अब डेवलपर विकल्पों में मौजूद 'ऐनिमेटर की अवधि का स्केल' सेटिंग काम करती है. (I5a4fc, b/161675988)
  • BeyondBoundsLayout मॉडिफ़ायर लोकल जोड़ा गया (If8b51, b/184670295)
  • टेक्स्ट: includeFontPadding अब डिफ़ॉल्ट रूप से बंद है. includeFontPadding=false की वजह से होने वाली क्लिपिंग की समस्याओं को ठीक कर दिया गया है. साथ ही, लंबी स्क्रिप्ट के लिए क्लिपिंग नहीं होनी चाहिए. (I31c84, b/171394808)

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

  • अगर पहले से कोई कॉन्टेंट मौजूद है, तो कॉन्टेंट सेट करने की कोशिश करने पर ComposeContentTestRule.setContent अब IllegalStateException दिखाएगा. (I888a5, b/199631334)
  • Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड के कॉन्टेंट की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. (I06020, b/197769306)
  • RSB स्क्रोलिंग के सैंपल बेहतर बनाएं. (I6a596)

बाहरी योगदान

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

वर्शन 1.2.0-alpha04

23 फ़रवरी, 2022

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

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

  • ComposableTarget, ComposableTargetMarker, और ComposableOpenTarget को जोड़ा गया है. इनकी मदद से, कंपाइल टाइम रिपोर्टिंग की जा सकती है. इससे यह पता चलता है कि किसी कंपोज़ेबल फ़ंक्शन को ऐसे ऐप्लिकेशन पर कब कॉल किया गया जिसे इस्तेमाल करने के लिए उसे डिज़ाइन नहीं किया गया था.

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

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

  • Font(resId, ...) अब स्टेबल एपीआई पर loadingStrategy का इस्तेमाल करता है. (Ief3d2)

  • FontLoadingStrategy अब स्टेबल एपीआई है. (I1ee35, b/174162090)

  • टेक्स्ट में एसिंक फ़ॉन्ट लोडिंग की सुविधा जोड़ी गई (I77057, b/214587005)

  • कस्टम Font.ResourceLoader को FontFamily.Resolver में बदलने के लिए, ब्रिज एपीआई जोड़ें. (Ia0060)

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

  • FontFamily.Resolver से मिली जानकारी को Popup जैसे सबकंपोज़िशन को पास किया जाता है.
  • Font.ResourceLoader से मिली जानकारी को Popup जैसे सबकंपोज़िशन को पास किया जाता है. (I48fa5)

वर्शन 1.2.0-alpha03

9 फ़रवरी, 2022

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

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

  • TextInputSession और TextInputService में notifyFocusedRect के तरीके अब काम नहीं करेंगे और इन्हें कॉल नहीं किया जाएगा. इसके बजाय, BringIntoViewRequester का इस्तेमाल करें. (Ia4302, b/192043120, b/216842427, b/178211874)
  • RenderNode स्टब क्लास पर destroyDisplayListData मेथड जोड़ा गया (I1e659, b/216660268)
  • एक नया एपीआई जोड़ा गया है. इसकी मदद से, SubcomposeLayout में शामिल बच्चों की संख्या का पहले से अनुमान लगाया जा सकता है. (I857ea)
  • movableContentOf जोड़ा गया है. यह कंपोज़ेबल लैम्डा को ऐसे लैम्डा में बदलता है जो इसके स्टेटस और इससे जुड़े नोड को किसी भी नई जगह पर ले जाता है. जब पिछला कॉल कंपोज़िशन से हट जाता है, तो स्थिति को कुछ समय के लिए सेव कर लिया जाता है. अगर लैंबडा को किया गया कोई नया कॉल कंपोज़िशन में शामिल होता है, तो स्थिति और उससे जुड़े नोड को नए कॉल की जगह पर ले जाया जाता है. अगर कोई नया कॉल नहीं जोड़ा जाता है, तो स्थिति को हमेशा के लिए हटा दिया जाता है. साथ ही, मॉनिटर करने वालों को इसकी सूचना दी जाती है.

    अगर एक ही कंपोज़िशन में movableContentOf लैम्डा को कई बार कॉल किया जाता है, तो हर कॉल के लिए नई स्थिति और नोड बनाए जाते हैं. साथ ही, जैसे-जैसे कॉल कंपोज़िशन से बाहर निकलते हैं और नए कॉल शामिल होते हैं, स्थिति को पहले बाहर निकलने वाले कॉल से, शामिल होने वाले कॉल में ट्रांसफ़र किया जाता है. यह ट्रांसफ़र, कॉल किए जाने के क्रम में होता है. नए कॉल से नहीं जुड़े सभी राज्यों की जानकारी हमेशा के लिए हटा दी जाती है. (Ib4850)

  • FontFamilyResolver अब LocalFontFamilyResolver.current के ज़रिए उपलब्ध है

  • Compose के बाहर FontFamily रिज़ॉल्वर बनाने के लिए, createFontFamilyResolver(context) और createFontFamilyResolver(context, coroutineScope) जोड़े गए हैं.

  • पैराग्राफ़ और मल्टीपैराग्राफ़ अब FontFamily.Resolver लेते हैं

  • TextLayoutResult.layoutInput.fontFamilyResolver में अब इस लेआउट के लिए इस्तेमाल किया गया रिज़ॉल्वर शामिल है. TextLayoutResult.layoutInput.resourceLoader को अब इस्तेमाल नहीं किया जाता, इसलिए इसे बंद कर दिया गया है. (Id5a45, b/174162090)

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

  • FontFamilyResolver.preload के ज़रिए फ़ॉन्ट को पहले से लोड करने की सुविधा

  • FontFamilyResolver.setAsyncLoadContext की मदद से, एसिंक फ़ॉन्ट लोड करने के लिए इस्तेमाल किया जाने वाला ग्लोबल कोरूटीन कॉन्टेक्स्ट सेट किया जा सकता है. (I87fe8, 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) का इस्तेमाल करें

  • SubcomposeLayoutState कंस्ट्रक्टर में maxSlotsToRetainForReuse स्वीकार करने की सुविधा अब काम नहीं करती. इसके बजाय, एक नया कंस्ट्रक्टर है जो SubcomposeSlotReusePolicy स्वीकार करता है. यह एक नया इंटरफ़ेस है, जो यह तय करने के लिए ज़्यादा कंट्रोल देता है कि किन स्लॉट को आने वाले समय में फिर से इस्तेमाल किया जाना चाहिए. (I52c4d)

  • Color में HSV और HSL फ़ंक्शन को नॉन-एक्सपेरिमेंटल एपीआई के तौर पर दिखाता है. Oklab कलर स्पेस अब सार्वजनिक एपीआई है. (I08fb6, b/180731008)

  • अब इस्तेमाल नहीं किया जाता AndroidComposeTestRule.AndroidComposeStatement. इसे सार्वजनिक एपीआई में शामिल नहीं किया जाना था. साथ ही, इससे आपको कोई फ़ायदा नहीं मिलता था. (Ibc46b)

  • Internal generated kt class rename (Ia0b9e, b/174162090)

  • FontLoadingStrategy.values को हटा दिया गया (I42a9d, b/174162090)

  • ग्लोबल फ़ॉन्ट लोडर को अब FontFamilyResolver कहा जाता है. (I4f773, b/174162090)

  • डेस्कटॉप के लिए, फ़ॉन्ट लोड करने वाले नए सिस्टम का इस्तेमाल करें. (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve returns State<Any> (I4406c, b/174162090)

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

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

वर्शन 1.2.0-alpha02

26 जनवरी, 2022

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

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

  • रोटेटिंग साइड बटन वाले Wear डिवाइसों के लिए, Modifier.onRotaryScrollEvent() और Modifier.onPreRotaryScrollEvent() जोड़ा गया (I18bf5, b/210748686)
  • एक्सपेरिमेंट के तौर पर उपलब्ध View.createLifecycleAwareRecomposer एक्सटेंशन (I0cde6) जोड़ें

बाहरी योगदान

  • PointerEvent.scrollDelta.y अब Android पर उलट गया है. अब माउस के पहिए को दाईं ओर झुकाने पर, -1 के बजाय 1 दिखता है (Ia9811)

वर्शन 1.2.0-alpha01

12 जनवरी, 2022

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

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

  • FontFamily.canLoadSynchronously अब काम नहीं करता. इस प्रॉपर्टी का कोई सिमैंटिक मतलब नहीं है. (Ica5ef)
  • लेआउट इंस्पेक्टर में इनवेरिएंट आईडी जनरेट करने के लिए, CompositionData में आइडेंटिटी फ़ील्ड जोड़ा गया. (Ic116e)
  • Wear OS डिवाइसों के आईडी, 'डिवाइसों की झलक देखें' सूची में जोड़े गए (I93232)

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

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

वर्शन 1.1

वर्शन 1.1.1

23 फ़रवरी, 2022

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

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

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

वर्शन 1.1.0

9 फ़रवरी, 2022

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

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

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

वर्शन 1.1.0-rc03

26 जनवरी, 2022

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

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

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

वर्शन 1.1.0-rc01

15 दिसंबर, 2021

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

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

  • ऐसी गड़बड़ी को ठीक किया गया है जिसकी वजह से, सुलभता से जुड़ी स्क्रोल करने की कार्रवाइयां (I7cbfb) मौजूद नहीं थीं
  • SemanticsNodeInteraction.captureToImage() की सुविधा अब तब भी काम करेगी, जब HardwareRenderer.isDrawingEnabled() false पर सेट हो. इसके लिए, कॉल के दौरान इस सुविधा को चालू करना होगा (Idf3d0)

वर्शन 1.1.0-beta04

1 दिसंबर, 2021

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

नई सुविधाएं

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

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

  • androidx.core.view में नल वैल्यू की समस्या ठीक की गई (I7078a, b/204917439)
  • इसमें एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई जोड़े गए हैं. इनकी मदद से, उपयोगकर्ता PointerInputchange को पूरी तरह से इस्तेमाल कर सकते हैं. इसके अलावा, यह भी देख सकते हैं कि इसका इस्तेमाल किया गया है या नहीं. (I2e59d)
  • यह कुकी, यूज़र इंटरफ़ेस (यूआई) लेयर में माउस के स्क्रोल व्हील इवेंट के लिए सहायता जोड़ती है. (Ia14eb, b/198214718)
  • ऐसे एक्सपेरिमेंटल Modifier.composed ओवरलोड जोड़ें जो समानता की तुलना करने के लिए कुंजियां स्वीकार करते हैं और ऑप्टिमाइज़ेशन को स्किप करने की ज़रूरी शर्तें पूरी करते हैं. (Ice799, b/205851704)
  • ComposeNotIdleException अब सीधे Throwable से न होकर, Exception से शुरू होता है. ध्यान दें कि इसका मतलब यह है कि Exception को पकड़ने वाले कैच क्लॉज़ अब ComposeNotIdleException को पकड़ सकते हैं. हालांकि, पहले ऐसा नहीं होता था. (I9c217)

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

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

वर्शन 1.1.0-beta03

17 नवंबर, 2021

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

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

  • प्लेसमेंट में बदलाव को मॉनिटर करने के लिए, नया मॉडिफ़ायर Modifier.onPlaced जोड़ा गया. इसलिए, प्लेसमेंट में हुए बदलाव के आधार पर, चाइल्ड मॉडिफ़ायर के ऑफ़सेट में अन्य बदलाव किए जा सकते हैं. (I558fd)
  • InjectionScope.flush() और InjectionScope.dispose() को हटा दिया गया है. अब सभी इवेंट को फ़्लश करने और स्कोप को हटाने की प्रोसेस, perform*Input() तरीके को कॉल करने के बाद होती है. यह प्रोसेस पहले की तरह ही होती है. (I2bed8)
  • MultiModalInjectionScope.Touch और MultiModalInjectionScope.Mouse को हटा दिया गया है. मल्टी-मोडल जेस्चर के लिए टच और माउस इवेंट इंजेक्ट करने के लिए, अब MultiModalInjectionScope.touch() और MultiModalInjectionScope.mouse() का इस्तेमाल किया जा सकता है. ये दोनों, ऐसे लैम्डा को स्वीकार करते हैं जिनमें उस मोडेलिटी का रिसीवर स्कोप होता है. (Idde18)

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

  • TouchInjectionScope.swipeWithVelocity में मौजूद durationMillis की डिफ़ॉल्ट वैल्यू अब इस तरह से कैलकुलेट की जाती है कि स्वाइप करना मुमकिन हो. (I19deb)

वर्शन 1.1.0-beta02

3 नवंबर, 2021

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

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

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

बाहरी योगदान

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

वर्शन 1.1.0-beta01

27 अक्टूबर, 2021

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

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

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

वर्शन 1.1.0-alpha06

13 अक्टूबर, 2021

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

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

  • ViewRootForInspector और LayoutInfo.ownerViewId (I5c2e3) से ExperimentalComposeUiApi हटाएं
  • लेआउट के लिए, बिना चाइल्ड नोड वाला ओवरलोड जोड़ा गया है. इससे परफ़ॉर्मेंस बेहतर हुई है (Ib0d9a)
  • कंपोज़र के उन तरीकों से InternalCompilerApi हटाया गया है जिन्हें क्रॉस-मॉड्यूल (I1aa0b) कहा जाना ज़रूरी है
  • अब SemanticsNodeInteraction.performSemanticsAction, उस SemanticsNodeInteraction को दिखाता है जिस पर फ़ंक्शन को कॉल किया गया था. (I9e5db)
  • TouchMode/NonTouchMode का पता लगाने के लिए, LocalInputModeManager CompositionLocal जोड़ा गया. (I6a83c, b/175899786)
  • LayoutInfo में viewConfiguration: ViewConfiguration जोड़ा गया है, ताकि उपभोक्ताओं को लॉन्ग प्रेस टाइमआउट जैसी चीज़ों के लिए सही वैल्यू मिल सके. (I76ca6)
    • viewConfiguration: ViewConfiguration को InjectionScope में जोड़ा गया है, ताकि टेस्ट, इनपुट इंजेक्शन को अडजस्ट कर सकें. ऐसा, टच स्लोप या बटन को दबाकर रखने के टाइम आउट जैसी चीज़ों के आधार पर किया जा सकता है.
    • टच और माउस इनपुट, दोनों के लिए दबाकर रखने और दो बार टैप करने की डिफ़ॉल्ट अवधि को बदल दिया गया है. अब यह अवधि, InjectionScope.viewConfiguration में दी गई वैल्यू के हिसाब से तय होगी.
  • TextField और DropdownMenu के साथ ExposedDropdownMenuBox के आधार पर ExposedDropdownMenu को लागू करना (If60b2)
  • dismissOnOutsideClick को PopupProperties में जोड़ा गया है. यह dismissOnClickOutside की जगह लेता है, जिसे बंद कर दिया गया था. नई प्रॉपर्टी को क्लिक की पोज़िशन और ऐंकर बाउंड्री मिलती है. इससे यह बेहतर तरीके से कंट्रोल किया जा सकता है कि onDismissRequest को कॉल किया जाना चाहिए या नहीं. उदाहरण के लिए, यह ऐंकर पर किए गए टच के लिए ऐंकर को खारिज होने से रोकने में मददगार हो सकता है.
    • updateAndroidWindowManagerFlags को PopupProperties में जोड़ा गया है. इससे, Android WindowManager को पॉप-अप से पास किए गए फ़्लैग पर कंट्रोल मिलता है. लैम्डा का पैरामीटर, PopupProperties वैल्यू से कैलकुलेट किए गए फ़्लैग होंगे.इनसे WindowManager फ़्लैग मिलते हैं. उदाहरण के लिए, फ़ोकस किया जा सकने वाला. लैंबडा का नतीजा, फ़ाइनल फ़्लैग होंगे. इन्हें Android WindowManager को पास किया जाएगा. डिफ़ॉल्ट रूप से, updateAndroidWindowManagerFlags, पैरामीटर से कैलकुलेट किए गए फ़्लैग में कोई बदलाव नहीं करेगा. इस एपीआई का इस्तेमाल सावधानी से करना चाहिए. इसका इस्तेमाल सिर्फ़ उन मामलों में करना चाहिए जहां पॉप-अप के लिए, व्यवहार से जुड़ी कुछ खास ज़रूरी शर्तें हों. (I6e9f9)
  • Recomposer.state को बंद कर दिया गया है और इसकी जगह Recomposer.currentState का इस्तेमाल किया जा रहा है, ताकि इसके टाइप को StateFlow (Ic2ab3, b/197773820) में बदला जा सके
  • flush() और dispose() को InjectionScope में जोड़ा गया. इनका इस्तेमाल तब करें, जब आपको सभी इवेंट को तुरंत फ़्लश करना हो और जब आपको स्कोप को हटाना हो. (Ifb73a)
  • performScrollToNode(matcher: SemanticsMatcher) जोड़ा गया है. यह स्क्रोल किए जा सकने वाले कंटेनर को उस कॉन्टेंट पर स्क्रोल करता है जो दिए गए मैच करने वाले से मेल खाता है. (Ic1cb8)
  • InjectionScope अब Density लागू करता है. इससे आपको performTouchInput और इससे जुड़े टूल में, पिक्सल और डीपी के बीच आसानी से कन्वर्ज़न करने की सुविधा मिलती है. (I8fe1f)

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

  • AndroidView अब ViewTreeLifecycleOwner और ViewTreeSavedStateRegistryOwner के ज़रिए, LocalLifecycleOwner और LocalSavedStateRegistryOwner को अपने व्यू में भेजता है. (I38f96, b/179708470)
  • WearOS SwipeToDismissBox में स्वाइप करने की सुविधा कभी-कभी काम नहीं करती थी. इस समस्या को ठीक किया गया है. (I9387e)
  • इंजेक्ट किए गए इनपुट इवेंट के बीच का डिफ़ॉल्ट समय, 10 मि॰से॰ से बदलकर 16 मि॰से॰ कर दिया गया है. इससे, इनपुट जेस्चर करने वाले टेस्ट के नतीजे बदल सकते हैं. जैसे, किसी खास दिशा में स्वाइप करना. (I829fd)

वर्शन 1.1.0-alpha05

29 सितंबर, 2021

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

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

  • मॉडिफ़ायर के बीच कम्यूनिकेशन की सुविधा जोड़ी गई (Id5467, b/198826874)
  • PointerEventChange में एक्सपेरिमेंट के तौर पर उपलब्ध हिस्टोरिकल पॉइंटर जोड़े गए. (Ic1fd8, b/197553056, b/199921305)
  • density: Density और layoutDirection: LayoutDirection को LayoutInfo में जोड़ा गया. इससे LayoutInfo के उपभोक्ताओं को, LayoutInfo में दिखाए गए डाइमेंशन और पोज़िशन को सही तरीके से समझने में मदद मिलती है. (I002f1)
  • माउस इवेंट इंजेक्ट करने की सुविधा को एक्सपेरिमेंट के तौर पर जोड़ा गया है. माउस इवेंट भेजना शुरू करने के लिए, performMouseInput का इस्तेमाल करें. इसके अलावा, performMultiModalInput के साथ मल्टी मॉडल इनपुट जेस्चर के दौरान, MultiModalInjectionScope की Mouse प्रॉपर्टी के ज़रिए माउस इवेंट भेजें. उपलब्ध एपीआई के दस्तावेज़ के लिए, MouseInjectionScope पर जाएं. (Iaa4a8, b/190493367)

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

  • स्क्रोल किए जा सकने वाले आइटम (लेज़ी और नॉन-लेज़ी, दोनों) के लिए सुलभता से जुड़ी समस्या ठीक की गई है. यह समस्या स्क्रोल करने से जुड़ी थी (I6cdb0)
  • TouchInjectionScope.swipeWithVelocity को बेहतर बनाया गया. अब यह ज़्यादा इनपुट वैरिएबल स्वीकार करता है. साथ ही, अगर स्वाइप नहीं बनाया जा सकता, तो यह इनपुट में बदलावों का सुझाव देगा (I40fbe, b/182477143)

वर्शन 1.1.0-alpha04

15 सितंबर, 2021

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

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

  • PointerEvent में अब PointerEventType है, ताकि होवर इवेंट को सपोर्ट किया जा सके. (I091fa)
  • इससे बच्चों को, पैरंट के पॉइंटर इनपुट की सीमाओं से बाहर पॉइंटर इनपुट स्वीकार करने की अनुमति मिलती है. माता-पिता, प्रॉपर्टी PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655) का इस्तेमाल करके, उन कॉल को इंटरसेप्ट कर सकते हैं
  • performGesture और GestureScope के इस्तेमाल पर रोक लगा दी गई है. इनकी जगह performTouchInput और TouchInjectionScope का इस्तेमाल किया जाएगा. (Ia5f3f, b/190493367)
  • SemanticsNode में touchBoundsInRoot जोड़ा गया है. इसमें टच टारगेट का कम से कम साइज़ शामिल है, ताकि डेवलपर यह पक्का कर सकें कि टच टारगेट, सुलभता से जुड़े कम से कम मानकों को पूरा करते हों. (I2e14b, b/197751214)
  • इंस्पेक्ट किए जा सकने वाले कॉम्पोनेंट को फिर से लागू किया गया (I927bc, b/191017532)
  • इंसपेक्ट किए जा सकने वाले पैरामीटर का नाम बदलकर, कंपोज़ किए गए पैरामीटर के नाम से मैच किया गया (I3a482, b/191017532)
  • performTouchInput और TouchInjectionScope को performTouchInput और TouchInjectionScope के विकल्प के तौर पर लॉन्च किया गया. इससे माउस जैसे अन्य तरीकों से भी बातचीत करने का रास्ता खुल गया.

    TouchInjectionScope में GestureScope वाले तरीके ही इस्तेमाल किए जाते हैं. हालांकि, movePointerTo और movePointerBy को updatePointerTo और updatePointerBy के तौर पर रीनेम किया गया है. अन्य सभी तरीके एक जैसे हैं.

    TouchInjectionScope का व्यवहार, GestureScope के व्यवहार से काफ़ी हद तक मिलता-जुलता है. हालांकि, इनमें दो छोटे अंतर हैं:

    1. जब पॉइंटर को बिना किसी मूव इवेंट के भेजा जाता है, तब डाउन इवेंट भेजा जाता है. दूसरे शब्दों में, updatePointerTo() का इस्तेमाल किया जाता है, लेकिन move() का नहीं. इसके बाद, down() को कॉल किया जाता है. ऐसे में, पिछला वर्शन इवेंट के समय को आगे बढ़ा देता था और डाउन इवेंट भेजने से पहले, मूव इवेंट भेज देता था. नया तरीका लागू करने के बाद भी, move इवेंट भेजा जाता है. हालांकि, इस खास स्थिति में इवेंट का समय नहीं बढ़ता.
    2. जब पॉइंटर को बिना किसी मूव इवेंट को भेजे (ऊपर दिए गए उदाहरण की तरह) ले जाया जाता है, तब अप इवेंट भेजने पर, पिछला तरीका इवेंट के समय को आगे बढ़ा देता था. साथ ही, अप इवेंट भेजने से पहले मूव इवेंट भेज देता था. नए तरीके से लागू करने पर, न तो ऐसा होता है और न ही ऐसा: पॉइंटर की नई पोज़िशन सिर्फ़ अप इवेंट के ज़रिए दिखेगी.

    आखिर में, TouchInjectionScope, दिए गए पॉइंटर की मौजूदा पोज़िशन पाने के लिए currentPosition(pointerId: Int) नाम का नया तरीका पेश करता है. (If1191, b/190493367)

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

  • इससे क्लिप को टच टारगेट के साइज़ को बढ़ाने की अनुमति मिलती है, ताकि टच टारगेट के लिए तय किए गए कम से कम साइज़ को पूरा किया जा सके. (I43e10, b/171509422)
  • Android 12 डिवाइसों पर, स्ट्रेच ओवरस्क्रोल की सुविधा जोड़ी गई है. (Iccf3c, b/171682480)

वर्शन 1.1.0-alpha03

1 सितंबर, 2021

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

नई सुविधाएं

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

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

  • अन्य मॉडिफ़ायर को रैप करने के लिए, Modifier.inspectable जोड़ा गया. (I1909b, b/191017532)
  • BlurredEdgeTreatment एपीआई जोड़ा गया है, ताकि धुंधला करने की सुविधा को ज़्यादा आसानी से इस्तेमाल किया जा सके. इसके लिए, क्लिप फ़्लैग और TileModes के सबसे ज़्यादा इस्तेमाल किए जाने वाले कॉम्बिनेशन का इस्तेमाल किया जाता है. ज़्यादातर इस्तेमाल के उदाहरणों में, धुंधले किए गए कॉन्टेंट को ओरिजनल कॉन्टेंट की सीमाओं से बाहर रेंडर करने और इन सीमाओं से बाहर के हिस्सों को पारदर्शी काले रंग से धुंधला करने या कॉन्टेंट को कॉन्टेंट की सीमाओं में क्लिप करने के लिए, धुंधलेपन के कर्नल के लिए सबसे नज़दीकी किनारे का सैंपल लेने की सुविधा शामिल होती है. (I6b4b7, b/166927547)
  • Compose Desktop में RenderEffect के लिए सहायता जोड़ी गई. OffsetEffect के साथ-साथ, ब्लर मॉडिफ़ायर को भी पेश किया गया है. इससे कंपोज़िशन हैरारकी के किसी हिस्से में, ब्लर विज़ुअल इफ़ेक्ट आसानी से जोड़े जा सकते हैं. (I0f6aa, b/166927547)
  • RenderEffect API लॉन्च किया गया है. इसे Modifier.graphicsLayer पर कॉन्फ़िगर किया जा सकता है, ताकि लेयर के कॉन्टेंट में बदलाव किया जा सके. इसका इस्तेमाल, कंपोज़ेबल के कॉन्टेंट और कंपोज़िशन के क्रम में मौजूद चाइल्ड कंपोज़ेबल को धुंधला करने के लिए किया जा सकता है. (I47c4d, b/166927547)
  • AwaitPointerEventScope में अब withTimeout() और withTimeoutOrNull() फ़ंक्शन उपलब्ध हैं (I507f0, b/179239764, b/182397793)
  • ViewConfiguration में टच टारगेट का कम से कम साइज़ जोड़ा गया है. इसका इस्तेमाल सिमैंटिक्स और पॉइंटर इनपुट में किया जा सकता है, ताकि यह पक्का किया जा सके कि ऐप्लिकेशन को ऐक्सेस किया जा सकता है. (Ie861c)
  • TileMode.Decal के लिए सहायता जोड़ी गई है. यह धुंधलेपन पर आधारित RenderEffects के लिए, किनारे के व्यवहार को तय करने में मददगार है. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction, और hasScrollToKeyAction अब स्टेबल एपीआई हैं (I142ae, b/178483889)
  • क्लिप किए गए बाउंड्री बॉक्स पाने के लिए, टेस्ट का तरीका जोड़ा गया. (I6b28e)

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

  • BlurredEdgeTreatment से isBounded तरीके को हटा दिया गया है. इसके बजाय, यह साफ़ तौर पर जांच की जाती है कि शेप पैरामीटर शून्य है या नहीं. (I85d68)

वर्शन 1.1.0-alpha02

18 अगस्त, 2021

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

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

  • PointerEvent अब माउस बटन की स्थिति और कीबोर्ड मॉडिफ़ायर की स्थिति को पढ़ने की सुविधा के साथ काम करता है. (I6310c, b/180075467)
  • अब इंजेक्ट किए गए जेस्चर, समय के लिए MainTestClock के समय का इस्तेमाल करते हैं. performGesture में इंजेक्ट किए गए इवेंट के लिए मौजूदा समय, MainTestClock के मौजूदा समय पर सेट किया जाएगा. (Ifb364, b/192064452)
  • DpRect(DpOffset, DpSize) कंस्ट्रक्टर जोड़ा गया (I2cf16, b/194219828)
  • DpSize क्लास जोड़ी गई (I7abb1, b/194219828)

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

  • वेक्टर ग्राफ़िक्स के एक्सएमएल पार्सिंग को अपडेट किया गया है, ताकि VectorDrawables पर ColorStateLists को रूट कलर टिंट प्रॉपर्टी के तौर पर इस्तेमाल किया जा सके. (I86915, b/195668138)

वर्शन 1.1.0-alpha01

4 अगस्त, 2021

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

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

  • RelocationRequester.bringIntoView अब पैरामीटर के तौर पर रेक्टैंगल स्वीकार करता है. इससे हम कंपोज़ेबल के किसी हिस्से को व्यू में ला सकते हैं (Ice2c5, b/194330245)
  • AnimatedImageVector और इससे जुड़े एपीआई अब नए androidx.compose.animation:animation-graphics मॉड्यूल में हैं. (I60873)
  • जगह बदलने के अनुरोधों को मैनेज करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध मॉडिफ़ायर जोड़ा गया. (I65a97, b/178211874)
  • BrushPainter API लॉन्च किया गया है. इससे Painter में किसी भी Brush को ड्रॉ किया जा सकता है. यह ColorPainter की तरह ही काम करता है

    Brush API को अपडेट किया गया है, ताकि इसमें इंट्रिंसिक साइज़ पैरामीटर हो. इसे BrushPainter में क्वेरी किया जाता है (Ia2752, b/189466433)

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

  • GestureScope.advanceEventTime तरीका जोड़ा गया है, ताकि जेस्चर (Ibf3e2) में इवेंट के समय को ज़्यादा कंट्रोल किया जा सके

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

  • ड्रॉ मॉडिफ़ायर की चेनिंग को बेहतर तरीके से सपोर्ट करने के लिए, पक्का करें कि Modifier.paint लागू करने से drawsContent कॉल हो. पहले, Modifier.paint को मॉडिफ़ायर की चेन में लीफ़ नोड माना जाता था. हालांकि, ऐसा करने से इसे कंपोज़ेबल कंटेनर (जैसे कि बॉक्स) पर कॉन्फ़िगर नहीं किया जा सकता या इसके ऊपर अतिरिक्त डेकोरेशन नहीं जोड़े जा सकते. जैसे, Modifier.paint().border(). Modifier.paint कॉल में, दिए गए पेंटर के कॉन्टेंट को पेंट करने के बाद drawContent को कॉल किया जाता है. इससे मॉडिफ़ायर पैटर्न के साथ व्यवहार में बेहतर स्थिरता मिलती है. (Ibb2a7, b/178201337, b/186213275)
  • डायलॉग अब प्लैटफ़ॉर्म के साइज़िंग के व्यवहार के मुताबिक काम करते हैं. इस व्यवहार को बदलने के लिए, usePlatformDefaultWidth को false पर सेट करें. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy को :compose:ui पर ले जाया गया (I5eb09, b/160602714)
  • लेज़ी लिस्ट और रेगुलर स्क्रोलिंग कॉम्पोनेंट के लिए, सिमैंटिक्स ऐक्शन के ज़रिए स्क्रोल करने की सुविधा अब ऐनिमेटेड है (Id9066, b/190742024)

संस्करण 1.0

वर्शन 1.0.5

3 नवंबर, 2021

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

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

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

वर्शन 1.0.4

13 अक्टूबर, 2021

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

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

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

वर्शन 1.0.3

29 सितंबर, 2021

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

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

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

वर्शन 1.0.2

1 सितंबर, 2021

androidx.compose.ui:ui-*: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.ui:ui-*:1.0.1 रिलीज़ हो गया है. वर्शन 1.0.1 में ये बदलाव शामिल हैं.

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

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

वर्शन 1.0.0

28 जुलाई, 2021

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

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

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

आम समस्याएं

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

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

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

वर्शन 1.0.0-rc02

14 जुलाई, 2021

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

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

  • डायलॉग अब प्लैटफ़ॉर्म के साइज़िंग के व्यवहार के मुताबिक काम करते हैं. इस व्यवहार को बदलने के लिए, usePlatformDefaultWidth को false पर सेट करें. (Iffaed, b/192682388)

वर्शन 1.0.0-rc01

1 जुलाई, 2021

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

नई सुविधाएं

  • ui-tooling मॉड्यूल को ui-tooling और ui-tooling-preview में बांटें (Iefa28, b/190649014)

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

  • काम न करने वाले एक्सपेरिमेंटल FocusManager#moveFocusIn और FocusManager#moveFocusOut को हटाया गया (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas में अब accessibility के लिए, contentDescription पैरामीटर का इस्तेमाल किया जा सकता है. (Ib547c)
  • PopupProperties में मौजूद useDefaultMaxWidth का नाम बदलकर usePlatformDefaultWidth कर दिया गया है. (I05710)
  • डायलॉग अब स्क्रीन की पूरी चौड़ाई का इस्तेमाल कर सकते हैं. (I83929, b/190810877)
  • हमने एक्सपेरिमेंट के तौर पर, एचएसवी और एचएसएल कलर के लिए सहायता जोड़ी है. (Id7cf8, b/180731008)

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

  • Compose @Preview अब LocalActivityResultRegistryOwner उपलब्ध कराता है. इसकी मदद से, उन कंपोज़ेबल की झलक देखी जा सकती है जो rememberLauncherForActivityResult() जैसे एपीआई का इस्तेमाल करते हैं. ये एपीआई, मालिकाना हक रखने वाले व्यक्ति के मौजूद होने पर काम करते हैं. (Ib13d1, b/185693006)
  • Compose @Preview अब एक LocalOnBackPressedDispatcherOwner उपलब्ध कराता है. इसकी मदद से, BackHandler जैसे एपीआई का इस्तेमाल करने वाले कंपोज़ेबल का पूर्वावलोकन किया जा सकता है. की मदद से, यह देखा जा सकता है कि कंपोज़ेबल के मालिक का खाता मौजूद है या नहीं. (Ia1c05, b/185693006)

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

  • InfiniteAnimationPolicy को androidx.compose.ui:ui में ले जाया गया (I5eb09, b/160602714)
  • मॉड्यूल के स्ट्रक्चर में बदलाव करने के लिए, AnimatedImageVector को कुछ समय के लिए हटा दिया गया था. (I41906, b/160602714)

वर्शन 1.0.0-beta09

16 जून, 2021

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

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

  • enum Role और LiveRegionMode को प्राइवेट कंस्ट्रक्टर (Id1890) के साथ इनलाइन क्लास में बदलें
  • KeyboardCapitalization को इनलाइन क्लास में बदल दिया गया है. (Id5a1c)
  • HapticFeedbackType को इनलाइन क्लास में बदलें. (I255ec)
  • Modifier.pointerInteropFilter is @ExperimentalComposeUiApi. (Iede6c)
  • TextAlign, FontSynthesis, और TextDirection अब इनलाइन क्लास हैं. (I212fe)
  • TextOverflow को इनलाइन क्लास में बदल दिया गया है. (I433af)
  • FontStyle अब एक इनलाइन क्लास है. (I9e48b)

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

  • फ़िलहाल, मुख्य कॉन्स्टेंट @ExperimentalComposeUiApi हैं. कोड का इस्तेमाल करने वाला व्यक्ति, स्टेबलाइज़ेशन से पहले प्राइवेट कॉन्स्टेंट का एलान कर सकता है. (Ia5d48)
  • अब Robolectric पर कंपोज़ टेस्ट किए जा सकते हैं. अब तक इन सीमाओं का पता चला है:
    • कोई नेटिव बिटमैप नहीं है. इसलिए, ImageBitmap() से NullPointerException मिलता है.
    • कोई ड्रॉइंग नहीं है, इसलिए captureToImage() अगले ड्रॉ पास का इंतज़ार करता रहेगा. इसका मतलब है कि यह डेडलॉक हो जाता है.
    • कोई फ़ॉन्ट लोड नहीं किया गया है. इसलिए, किसी भी टेक्स्ट को गलत तरीके से मेज़र किया जाएगा. सभी वर्णों की ऊंचाई करीब 20 पिक्सल और चौड़ाई 1 पिक्सल होती है.
    • ComposeTestRule.waitUntil {} इंतज़ार करते समय मुख्य थ्रेड को नहीं चलाता है. इसलिए, यह ComposeTestRule.mainClock.advanceTimeUntil {} के जैसा ही है आने वाले समय में, इसकी और भी सीमाएं पता चल सकती हैं. (I284fa)

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

इस रिलीज़ में, कंपोज़ मॉड्यूल में प्रोफ़ाइल के नियम जोड़े गए हैं. ये नियम इन मॉड्यूल पर लागू होंगे (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.ui:ui-*:1.0.0-beta08 रिलीज़ हो गया है. वर्शन 1.0.0-beta08 में ये बदलाव शामिल हैं.

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

  • NestedScrollSource enum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) का नाम बदलकर FocusManager.clearFocus(force = true) (Ia0c41) कर दिया गया है
  • नई enum वैल्यू जोड़े जाने पर, when स्टेटमेंट के साथ पूरी तरह से काम करने से जुड़ी समस्याओं से बचने के लिए, enum के इस्तेमाल को इनलाइन क्लास में बदला गया है. (I2b5eb)
  • PopupProperties से @ExperimentalComposeUiApi को हटाएं. (I01fa6)
  • PointerType को enum से बदलकर इनलाइन क्लास (If5058) कर दिया गया है
  • ContentDescription और Text सिमैंटिक्स प्रॉपर्टी अब सिंगल वैल्यू नहीं, बल्कि सूचियां हैं. इससे उन्हें जोड़ने के बजाय, मर्ज किया जा सकता है. इन बदलावों का इस्तेमाल करने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
  • Modifier.focusModifier() का अब इस्तेमाल नहीं किया जा सकता. इसे Modifier.focusTarget() से बदल दिया गया है (I6c860)
  • Modifier.onSizeChanged() और Modifier.onGloballyPositioned() अब इनलाइन फ़ंक्शन नहीं हैं (I727f6, b/186109675)
  • KeyboardType enum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)
  • FocusState enum को FocusState इंटरफ़ेस से बदला गया (Iccc1a, b/187055290)
  • ImeAction enum को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
  • PlaceholderVerticalAlign को इनलाइन क्लास में बदल दिया जाता है. (If6290)
  • TextUnitType अब एक इनलाइन क्लास है. (I4cba9)
  • AnnotatedString.withAnnotation फ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)
    • TextUnitType के साथ TextUnit कंस्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.

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

  • beta07 में पेश की गई उस गड़बड़ी को ठीक किया गया है जिसमें स्क्रोल करने के बाद, LazyColumn/Row आइटम आंशिक रूप से दिखते थे (I8c9ac, b/188566058)
  • अब detectDragGesures, detectVerticalGestures, और detectHorizontalGestures, अपने-आप पोज़िशन बदल लेंगे. इसलिए, onDrag कॉलबैक (I42fc4, b/185096350, b/187320697) में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है
  • LayoutModifiers में अलाइनमेंट लाइनें दिखाने की सुविधा से जुड़ी समस्या ठीक कर दी गई है. इस बग को ठीक कर दिया गया है. इस बग की वजह से, बच्चों की अलाइनमेंट लाइन बदलने पर माता-पिता की ऊंचाई फिर से नहीं मापी जा रही थी. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() को बदलकर, इस मॉडिफ़ायर के कोऑर्डिनेट को मॉडिफ़ायर चेन में रिपोर्ट करने के लिए इस्तेमाल किया गया. इससे सभी मॉडिफ़ायर लागू करने के बाद, लेआउट के कोऑर्डिनेट रिपोर्ट नहीं किए जाते. इसका मतलब है कि अब मॉडिफ़ायर के क्रम से यह तय होगा कि कौनसे कोऑर्डिनेट रिपोर्ट किए जाएंगे. (Ieb67d, b/177926591)

वर्शन 1.0.0-beta07

18 मई, 2021

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

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

  • जांच करने वाले टूल में इस्तेमाल करने के लिए ViewRootForInspector इंटरफ़ेस जोड़ा गया (Ib70df)
  • SubcomposeLayoutState में अब दोबारा इस्तेमाल किए जा सकने वाले स्लॉट की संख्या सेट करने की सुविधा उपलब्ध है. लेआउट, इस संख्या तक के स्लॉट चालू रखेगा. ऐसा इसलिए, ताकि अगली बार जब हमें नए स्लॉट की ज़रूरत हो, तो हम उनका फिर से इस्तेमाल कर सकें. इसके लिए, वह उन्हें बंद नहीं करेगा (Ieb981)
  • KeyEventType enum को इनलाइन क्लास से बदल दिया गया है. (Id670a, b/187055290)
  • FocusDirection enum को इनलाइन क्लास से बदल दिया गया है. (Ib6d03, b/187055290, b/184086802)
  • इससे SubcomposeLayout की स्थिति को ऊपर ले जाने की सुविधा मिलती है. इससे कॉन्टेंट को ऐसे slotId में पहले से कंपोज़ किया जा सकता है जिसकी ज़रूरत होती है. इससे अगली बार मेज़रमेंट पास करने में कम समय लगेगा, क्योंकि अगली बार दिए गए slotId के साथ सबकंपोज़ करने की कोशिश करने पर, कंपोज़िशन की ज़रूरत नहीं होगी. (I42580, b/184940225)
  • क्लिप चुनने के लिए हैंडल जोड़ा गया (Iff80d, b/183408447)
  • LayoutInspector के साथ काम न करने वाले एपीआई हटा दिए गए हैं. (I2ac78)

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

  • LazyColumn/Row अब पहले से दिख रहे दो आइटम को ऐक्टिव रखेगा (डिस्पोज़ नहीं करेगा). भले ही, उन्हें स्क्रोल करके हटा दिया गया हो. इससे कॉम्पोनेंट, चालू सबकंपोज़िशन का फिर से इस्तेमाल कर पाता है. ऐसा तब होता है, जब हमें कोई नया आइटम कंपोज़ करना होता है. इससे स्क्रोलिंग की परफ़ॉर्मेंस बेहतर होती है. (Ie5555)
  • TextGeomerticTransform और TextDecoration को AnnotatedString पर उसी तरह लागू किया जाएगा जैसा बताया गया है. (I61900, b/184760917)

वर्शन 1.0.0-beta06

5 मई, 2021

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

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

  • नेविगेशन के जेस्चर (I1145e) से जुड़े विवाद को हल करना
  • @ComposeCompilerApi अब @RequiresOptIn (Iab690)
  • CollectionInfo और CollectionItemInfo के सुलभता एपीआई जोड़े गए हैं. इनकी मदद से, कलेक्शन और उसके आइटम को सुलभता सेवाओं के लिए मार्क किया जा सकता है (Id54ef, b/180479017)
  • इंडेक्स किए गए आइटम की सूची को किसी इंडेक्स वाले आइटम पर स्क्रोल करने के लिए SemanticsActions.ScrollToIndex और कुंजी वाले आइटम की सूची में किसी आइटम का इंडेक्स पाने के लिए SemanticsProperties.IndexForKey जोड़ा गया. ये दोनों कार्रवाइयां, LazyList लागू करती हैं.
    • SemanticsNodeInteraction.performScrollToIndex जोड़ा गया है. यह सूची को दिए गए इंडेक्स तक स्क्रोल करता है. साथ ही, SemanticsNodeInteraction.performScrollToKey जोड़ा गया है. यह सूची को दी गई कुंजी वाले आइटम तक स्क्रोल करता है. (I4fe63, b/178483889, b/161584524)
  • GraphicLayerInfo में ownerViewId जोड़ा गया (I19f62)
  • फ़ॉन्ट लोड करने के लिए, ऐसेट, फ़ाइल, और FileDescriptor से Font() ओवरलोड जोड़े गए (I5d382)
  • सुलभता एपीआई error जोड़ा गया है. इससे ऐसे नोड को मार्क किया जा सकता है जिनमें अमान्य इनपुट शामिल है (I12997, b/180584804, b/182142737)
  • फ़ॉन्ट लोड करने के लिए, ऐसेट, फ़ाइल, और FileDescriptor से Font() ओवरलोड जोड़े गए (I43007)
  • AnnotatedString को TextFieldValue.Saver में सेव करने की सुविधा जोड़ी गई. AnnotatedString.Builder में addTtsAnnotation और withAnnotation यूटिलिटी फ़ंक्शन जोड़े गए (I8cbdc, b/178446304)
  • TextUnit कंस्ट्रक्टर फ़ंक्शन जोड़ा गया TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

वर्शन 1.0.0-beta05

21 अप्रैल, 2021

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

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

  • एक्सपेरिमेंट के तौर पर FocusManager.moveFocus(In) और FocusManager.moveFocus(Out) को जोड़ा गया (Ic5534, b/183746743)
  • एक्सपेरिमेंट के तौर पर performTextInputSelection API जोड़ा गया (I2dcbb, b/178510628)
  • InputEventCallback इंटरफ़ेस का अब इस्तेमाल नहीं किया जा सकता. किसी भी सार्वजनिक एपीआई में इंटरफ़ेस का इस्तेमाल नहीं किया जा सका. साथ ही, कोड में भी इसका इस्तेमाल नहीं किया गया. (I34a02, b/184003208)
  • TextLayoutResult/createTextLayoutResult फ़ंक्शन अब काम नहीं करता. यह एक ऐसा सार्वजनिक फ़ंक्शन है जिसका इस्तेमाल नहीं किया गया है. इसे टेस्टिंग के लिए जोड़ा गया था. यह फ़ंक्शन, Compose text API के लिए किसी काम का नहीं है. यह फ़ंक्शन अब काम नहीं करता. इसे बाद में हटा दिया जाएगा. (I80413)

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

  • ऐक्सेसिबिलिटी के लिए स्क्रोल करने की कार्रवाइयां 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.ui:ui-*:1.0.0-beta04 रिलीज़ हो गया है. वर्शन 1.0.0-beta04 में ये बदलाव शामिल हैं.

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

  • SoftwareKeyboardController पर मौजूद hideSoftwareKeyboard और showSoftwareKeyboard का नाम बदलकर, क्रमशः hide() और show() करें.
    • LocalSoftwareKeyboardController के लिए पूरा CompositionLocal इंटरफ़ेस उपलब्ध कराएं, ताकि इसे सेट किया जा सके. यह खास तौर पर टेस्ट में काम आता है (I579a6)
  • LiveRegion accessibility API जोड़ा गया है. अगर नोड को लाइव रीजन के तौर पर मार्क किया गया है, तो सुलभता सेवाएं उपयोगकर्ता को इसके बदलावों के बारे में अपने-आप सूचना देंगी (Idcf6f, b/172590946)
  • TextOverflow.Visible को लॉन्च किया गया है. (Ic8f89)

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

  • किनारों पर मौजूद LazyColumn/LazyRow के आइटम, फ़ास्ट फ़्लिंग के बाद गलत तरीके से पोज़िशन किए जाते थे. इस समस्या को ठीक कर दिया गया है (Ie4d13, b/183877420)
  • AndroidViewBinding अब FragmentContainerView के ज़रिए बढ़ाए गए फ़्रैगमेंट को ठीक से हटा देता है. ऐसा तब होता है, जब AndroidViewBinding को कंपोज़ करने वाले हाइरार्की से हटा दिया जाता है. (Ib0248, b/179915946)
  • AndroidViewBinding अब FragmentContainerView के ज़रिए बढ़ाए गए फ़्रैगमेंट को सही तरीके से नेस्ट करता है. ऐसा तब होता है, जब आपका ComposeView किसी Fragment के अंदर होता है. इससे उन फ़्रैगमेंट की स्थिति को सेव करने और वापस लाने से जुड़ी समस्याएं ठीक हो जाती हैं. (I70eb0, b/179915946)
  • Compose ViewBinding अब Fragment 1.3.2 पर निर्भर करता है. साथ ही, कॉन्फ़िगरेशन में बदलाव होने के बाद, FragmentContainerView के ज़रिए बढ़ाए गए फ़्रैगमेंट को लगातार दिखाता है. (I0743d, b/179915946)

वर्शन 1.0.0-beta03

24 मार्च, 2021

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

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

  • ComposeView की ViewTree डिपेंडेंसी के लिए, बाद में जांच करने की सुविधा (I8dbbf, b/182466548)
  • GestureScope में, swipeUp/swipeDown/swipeLeft/swipeRight फ़ंक्शन में वैकल्पिक startX/endX और startY/endY पैरामीटर जोड़े गए. (I49e2d, b/182063305)

वर्शन 1.0.0-beta02

10 मार्च, 2021

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

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

  • TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I5951e, b/168778053)
  • TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I84472, b/168778053)
  • इन SemanticsMatcher को हटा दिया गया है:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • इन SemanticsMatchers को @ExperimentalTestApi के तौर पर मार्क किया गया है:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • ये SemanticsMatcher जोड़े गए:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

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

  • एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें (I6aa29, b/174531520)
  • androidx.compose.ui:ui अब AppCompat या Fragment पर निर्भर नहीं करता. अगर आपके ऐप्लिकेशन में ComposeView का इस्तेमाल किया जा रहा है और Fragment और/या AppCompat का इस्तेमाल किया जा रहा है, तो पक्का करें कि AppCompat 1.3+ / Fragment 1.3+ का इस्तेमाल किया जा रहा हो. ComposeView के लिए ज़रूरी लाइफ़साइकल और सेव किए गए स्टेट ओनर को सही तरीके से सेट करने के लिए, इन वर्शन की ज़रूरत होती है. (I1d6fa, b/161814404)
  • navigation-compose के डेस्टिनेशन में इस्तेमाल किए जाने पर, टूटे हुए rememberSaveable { mutableStateOf(0) } को ठीक किया गया. (I1312b, b/180042685, b/180701630)
  • TextField पर, SoftwareKeyboardController इंटरफ़ेस की जगह इस्तेमाल करने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I658b6, b/168778053)
  • ComposeRootRegistry के tearDownRegistry() (Iddce1) में NoSuchElementException की समस्या ठीक की गई

वर्शन 1.0.0-beta01

24 फ़रवरी, 2021

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

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

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

  • onStart कॉलबैक को detectDragGestures (I67269, b/179995594) में जोड़ दिया गया है
  • इंट्रिंसिक साइज़िंग के लिए मॉडिफ़ायर अब एक्सपेरिमेंटल नहीं हैं. (I15744)
  • MeasureBlocks का नाम बदलकर MeasurePolicy कर दिया गया. यह एक मज़ेदार इंटरफ़ेस बन गया. MeasurePolicy का इस्तेमाल करने के लिए, लेआउट एपीआई को अपडेट किया गया है / आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
  • InteractionState को [Mutable]InteractionSource से बदल दिया गया है
    • इंटरफ़ेस, इंटरैक्शन इवेंट को भेजने / इकट्ठा करने के लिए ज़िम्मेदार होते हैं.
    • Button और Modifier.clickable() जैसे कॉम्पोनेंट को interactionState = remember { InteractionState() } पास करने के बजाय, interactionSource = remember { MutableInteractionSource() } का इस्तेमाल करें.
    • Interaction.Pressed in interactionState के बजाय, आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए. जैसे, InteractionSource.collectIsPressedAsState().
    • जटिल इस्तेमाल के उदाहरणों के लिए, InteractionSource.interactions का इस्तेमाल करके इंटरैक्शन की स्ट्रीम को देखा जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource का दस्तावेज़ और सैंपल देखें.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • CompositionLocals में AccessibilityMananger इंटरफ़ेस और LocalAccessibilityMananger जोड़ें (I53520)
  • LayoutCoordinates के पुराने हो चुके तरीकों को हटाया गया. positionInParent और boundsInParent के लिए प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
  • टाइपएलियास को अंडरलाइंग टाइप से बदल दिया गया है:
    • ColorStop अब Pair<Float, Color> हो गया है
    • SpanStyleRange अब `AnnotatedString.Range है
    • ParagraphStyleRange अब AnnotatedString.Range<ParagraphStyle> हो गया है
    • StringAnnotation अब AnnotatedString.Range<String> हो गया है
    • (I8dd1a)
  • CoreTextField जैसे लो लेवल के टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
  • Placeable अब measuredSize दिखाता है. इससे पता चलता है कि चाइल्ड लेआउट का साइज़ कितना है. ऐसा हो सकता है कि यह साइज़, मेज़रमेंट की शर्तों के मुताबिक न हो. (Ib2729, b/172560206, b/172338608)
  • selectionGroup मॉडिफ़ायर जोड़ें. इससे, ऐक्सेसिबिलिटी के लिए टैब या रेडियो बटन के कलेक्शन को मार्क किया जा सकता है (Ie5c29)
  • compositionLocalOf और staticCompositionLocalOf के लिए defaultFactory की जानकारी देना अब ज़रूरी है. पहले यह जानकारी देना ज़रूरी नहीं था.

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

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

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

  • यूआई मॉड्यूल से बंद किए गए तरीकों को हटा दिया गया है (I646f6)

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

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

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

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

  • imageResource और vectorResource अब ImageBitmap और ImageVector कंपैनियन पर एक्सटेंशन फ़ंक्शन हैं. load{Image,Vector,Font}Resource फ़ंक्शन मिटा दिए गए हैं. (I89130)

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

  • 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)
  • ComponentActivity.setContent() को compose:ui से हटा दिया गया है. androidx.activity:activity-compose:1.3.0-alpha01 से मिले कोड का इस्तेमाल करें. viewModel() और LocalViewModelStoreOwner को compose:ui से हटा दिया गया है. androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b) से मिले जवाबों का इस्तेमाल करो

  • Modifier.scrollable में बदलाव किया गया है. अब यह ScrollableController क्लास के बजाय, स्क्रोल किए जा सकने वाले इंटरफ़ेस का इस्तेमाल करता है (I4f5a5, b/174485541, b/175294473)

  • PointerInputModifier से CustomEvens के लिए सहायता देने की सुविधा हटा दी गई है (I02707, b/175294473)

  • SnapshotStateObserver अब एक्सपेरिमेंटल नहीं है (Id2e6a)

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

  • longPressGestureFilter और doubleClickGestureFilter को हटा दिया गया है. Modifier.pointerInput का इस्तेमाल करें. इसके साथ, सहायक फ़ंक्शन का इस्तेमाल करें. जैसे, detectTapGestures (I2fedf, b/175294473)

  • String.format API हटाया गया toString के अलग-अलग तरीकों में इस्तेमाल किए गए कोड को फिर से लिखा गया, ताकि String.format का इस्तेमाल न किया जा सके. (Id1290)

  • dp दावे हटाए गए (I798d2)

  • androidx.compose.runtime:runtime-dispatch (I55feb) को हटाया गया

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

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

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

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

  • एक हेल्पर फ़ंक्शन जोड़ा गया है. यह सभी ImeAction कॉलबैक (I63447, b/179226323) के लिए एक ही कार्रवाई सेट करने में मदद करता है

  • सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक को हटा दिया गया है. इसकी जगह जल्द ही एक नया एपीआई ले लेगा. (Iae869, b/168778053)

  • FontSpan और FontWeigthStyleSpan का इस्तेमाल अब नहीं किया जाता है. इन्हें हटा दिया गया है. (Ie5b56, b/177423444)

  • Material API में ये बदलाव किए गए हैं:

    • TopAppBar/BottomAppBar में contentPadding पैरामीटर जोड़ा गया है, ताकि डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाया जा सके.
    • BackdropScaffold में पैरामीटर का क्रम बदला गया है, ताकि एपीआई के दिशा-निर्देशों का पालन किया जा सके. दिशा-निर्देशों के मुताबिक, ज़रूरी पैरामीटर, वैकल्पिक पैरामीटर से पहले होने चाहिए.
    • BottomNavigationItem में icon पैरामीटर को selected और onClick के बाद ले जाया गया.
    • BottomNavigationItem में alwaysShowLabels पैरामीटर का नाम बदलकर alwaysShowLabel कर दिया गया है.
    • कुछ कॉम्पोनेंट में bodyContent पैरामीटर का नाम बदलकर सिर्फ़ content कर दिया गया है.
    • ButtonDefaults.buttonColors() में पैरामीटर का क्रम बदला गया है. कृपया ध्यान दें कि पैरामीटर के टाइप में कोई बदलाव नहीं हुआ है. इसलिए, आपके कोड में कोई गड़बड़ी नहीं होगी. कृपया पक्का करें कि आपने नाम वाले पैरामीटर का इस्तेमाल किया हो या क्रम को मैन्युअल तरीके से अपडेट किया हो. ऐसा न करने पर, आपका कोड पहले की तरह काम नहीं करेगा.
    • secondaryVariant पैरामीटर को darkColors() में जोड़ा गया. आम तौर पर, यह रंग गहरे रंग वाली थीम में secondary के जैसा ही होता है. हालांकि, इसे एक जैसा रखने और अपनी पसंद के मुताबिक बनाने के लिए जोड़ा जाता है.
    • ElevationDefaults और animateElevation() को सार्वजनिक एपीआई से हटा दिया गया है, क्योंकि इनका इस्तेमाल आम तौर पर नहीं किया जाता था या ये काम के नहीं थे.
    • Slider में मौजूद onValueChangeEnd का नाम बदलकर onValueChangeFinished कर दिया गया है. साथ ही, इसे नल वैल्यू स्वीकार करने वाला बना दिया गया है.
    • एक जैसा नाम रखने के लिए, Snackbar में मौजूद text पैरामीटर का नाम बदलकर content कर दिया गया है.
    • DropdownMenuItem में contentPadding पैरामीटर जोड़ा गया, ताकि डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाया जा सके. साथ ही, content को RowScope का एक्सटेंशन बनाया गया.
    • ModalDrawerLayout का नाम बदलकर ModalDrawer कर दिया गया है.
    • BottomDrawerLayout का नाम बदलकर BottomDrawer कर दिया गया है.
    • (I1cc66)

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

  • Compose में AnimatedVectorDrawable संसाधनों का इस्तेमाल करने के लिए, एपीआई जोड़ा गया. ऐनिमेटेड इमेज वेक्टर के तौर पर <animated-vector> एक्सएमएल लोड करने के लिए, animatedVectorResource का इस्तेमाल करें. साथ ही, painterFor (I8ea91) का इस्तेमाल करके इसे ऐनिमेट करें
  • TextField पर, SoftwareKeyboardController के पिछले इंटरफ़ेस को बदलने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया. (I658b6, b/168778053)

वर्शन 1.0.0-alpha12

10 फ़रवरी, 2021

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

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

  • UiApplier से ViewGroups के लिए सहायता हटा दी गई है. emitView कंपोज़ेबल को हटा दिया गया है. (Ifb214)
  • Modifier.pointerInput को अब याद रखने वाली कुंजियों की ज़रूरत होती है. इससे यह पता चलता है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोराटीन को कब रीस्टार्ट करना चाहिए. (I849cd)
  • CompositionReference का नाम बदलकर CompositionContext कर दिया गया है (I53fcb)
  • Bounds का नाम बदलकर DpRect (I4b32a) कर दिया गया है
  • टेस्टिंग से जुड़ा अपडेट: hasText() फ़ंक्शन, टेक्स्ट फ़ील्ड (Iab803) में इनपुट और लेबल/हिंट/प्लेसहोल्डर, दोनों तरह के टेक्स्ट की जांच करेगा
  • viewModel() कंपोज़ेबल और LocalViewModelStoreOwner को androidx.lifecycle.viewmodel.compose में ले जाया गया है. अब आपको इसका इस्तेमाल करने के लिए, androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 नाम की एक अलग डिपेंडेंसी जोड़नी होगी. (I7a374)
  • AccessibilityAction में नल वैल्यू वाली कार्रवाई की अनुमति दें. साथ ही, AccessibilityAction और CustomAccessibilityAction में कार्रवाई के लेबल को CharSequence से String में बदलें (I0dc82)
  • ImageBitmap और ImageVector के साथ नाम रखने के तरीकों को बेहतर तरीके से मैच करने के लिए, ImagePainter का नाम बदलकर BitmapPainter कर दिया गया है, ताकि यह VectorPainter के जैसा हो. (Iba381, b/174565889)
  • अब सबस्ट्रिंग को आर्ग्युमेंट के तौर पर इस्तेमाल किया जा सकता है. इससे सबस्ट्रिंग टेस्ट एपीआई बेहतर तरीके से काम करेंगे (Icbe78)
  • एक Modifier.focusOrder() जोड़ा गया है, जो कस्टम फ़ोकस ऑर्डर लैम्डा तय किए बिना FocusRequester को स्वीकार करता है. यह तब काम आता है, जब हमें सिर्फ़ रेफ़रंस तय करना होता है, लेकिन कंपोज़ेबल के लिए फ़ोकस का कस्टम ऑर्डर तय नहीं करना होता (I4f52a, b/179180978)
  • ComponentActivity.setContent को androidx.activity:activity-compose मॉड्यूल में androidx.activity.compose.setContent पर ले जाया गया है. (Icf416)
  • डिस्ट्रक्चरिंग और copy() तरीकों को उन क्लास से हटा दिया गया है जहां इनका इस्तेमाल कभी-कभार ही किया जाता था. (I26702, b/178659281)
  • पॉप-अप को प्लैटफ़ॉर्म के हिसाब से बनाया गया. AndroidPopupProperties का नाम बदलकर PopupProperties कर दिया गया है. साथ ही, isFocusable को PopupProperties (Ieeea5) में focusable पैरामीटर में ले जाया गया है
  • डायलॉग को प्लैटफ़ॉर्म के हिसाब से बनाया गया. AndroidDialogProperties का नाम बदलकर DialogProperties कर दिया गया है. (I4ef69, b/179138130)
  • LayoutNode को इंटरनल बनाया गया (I8a7b1, b/175103944)
  • Constraints.enforce को Constraints.constrain से बदल दिया गया है. (I8b8ea)
  • loadFontResource का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, fontResource का इस्तेमाल करें. imageResource, loadImageResource, vectorResource, और loadVectorResource अब काम नहीं करते. इसके बजाय, painterResource का इस्तेमाल करें. (I6b809)
  • परफ़ॉर्मेंस को बेहतर बनाने के लिए, ScrollAxisRange सिमैंटिक अब सीधे तौर पर फ़्लोट वैल्यू के बजाय, फ़्लोट वैल्यू दिखाने वाले लैम्डा लेता है. (If4a35, b/178657186)
  • सुलभता के लिए, टेक्स्ट फ़ील्ड के बदलाव किए जा सकने वाले इनपुट टेक्स्ट को मार्क करने के लिए, EditableText सिमैंटिक जोड़े गए हैं. साथ ही, सिमैंटिक की जांच करने के लिए, इससे जुड़ी टेस्ट के तरीके जोड़े गए हैं (I8e07a)
  • OwnerLayer/OwnerScope/OwnerSnapshotObserver को इंटरनल बनाया गया (I4ffaf, b/175103944)
  • toIntPx() का नाम बदलकर roundToPx() कर दिया गया है. (I9b7e4, b/173502290)
  • IntBounds का नाम बदलकर IntRect कर दिया गया है. साथ ही, एपीआई को बेहतर बनाया गया है. (I1f6ff)
  • स्नैपशॉट एपीआई को अपडेट किया गया है, ताकि यह एपीआई के दिशा-निर्देशों के मुताबिक काम करे. साथ ही, सार्वजनिक एपीआई से इंटरनल इंप्लीमेंटेशन क्लास को छिपाया जा सके. (Id9e32)
  • सेमैंटिक ऐक्शन को बड़ा और छोटा करने की सुविधा जोड़ी गई. ModalBottomSheetState में expand और halfExpand को जोड़ा गया (Ib5064)
  • Modifier.dragGestureFilter अब काम नहीं करता है. इसके बजाय, Modifier.pointerInput { detectDragGestures (...)} का इस्तेमाल करें. इसके अलावा, एक ऐक्सिस पर ड्रैग करने के लिए, Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473)
  • Ambient -> CompositionLocal का नाम बदलने के हिसाब से, Ambients का नाम बदला गया. पहले, ऐम्बिएंट को AmbientFoo कहा जाता था. अब CompositionLocals को LocalFoo कहा जाता है. (I2d55d)
  • अब BaseTextField को हटा दिया गया है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I71368)
  • चुने गए हिस्से को फ़ाउंडेशन में ले जाया गया. (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)
  • emptyContent() और (@Composable () -> Unit).orEmpty() यूटिलिटी का इस्तेमाल अब नहीं किया जा सकता, क्योंकि अब इनसे परफ़ॉर्मेंस पर कोई फ़र्क़ नहीं पड़ता या इनकी कोई वैल्यू नहीं है (I0484d)
  • snapshotFlow और withMutableSnapshot अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं (I6a45f)
  • अब रीकंपोज़र बंद किए जा सकते हैं. बंद किए गए कंपोज़र, कंपोज़िशन चाइल्ड को-रूटीन के पूरा होने तक फिर से कंपोज़ करना जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)
  • UiSavedStateRegistry का नाम बदलकर SaveableStateRegistry कर दिया गया है. साथ ही, AmbientUiSavedStateRegistry का नाम बदलकर AmbientSaveableStateRegistry कर दिया गया है. इन दोनों को androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I30224)
  • आर्टफ़ैक्ट 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)
  • आउटलाइन.* क्लास अब डेटा क्लास नहीं हैं (I4879e, b/178001427)
  • view.captureToImage() को बिना किसी बदलाव के हटा दिया गया है. (I7fcd2)
  • ColorMatrix API लॉन्च किया गया. इसका इस्तेमाल, सोर्स कॉन्टेंट की आरजीबी वैल्यू में बदलाव करने के लिए किया जाता है ColorFilter API को इंटरफ़ेस के तौर पर फिर से बनाया गया है, ताकि यह PathEffect के साथ काम कर सके. (Ica1e8)
  • Shape के createOutline में layoutDirection पैरामीटर जोड़ें. इससे लेआउट की दिशा के हिसाब से शेप बनाए जा सकते हैं. (I57c20, b/152756983)
  • onImeActionPerformed को बंद कर दिया गया है. इसके बजाय, KeyboardActions का इस्तेमाल करें (If0bbd, b/179071523)
  • InfiniteAnimationPolicy कोरूटीन कॉन्टेक्स्ट एलिमेंट पेश किया गया है. इसका इस्तेमाल, हमेशा चलने वाले ऐनिमेशन में किया जाएगा. डिफ़ॉल्ट रूप से कोई नीति इंस्टॉल नहीं की जाती. हालांकि, ComposeTestRule के साथ टेस्ट चलाने पर ऐसा किया जाता है. (I50ec4, b/151940543)
  • canDrag को Modifier.scrollable से हटा दिया गया है. (Id66e7, b/175294473)
  • LayoutCoordinates.parentCoordinates का नाम बदलकर LayoutCoordinates.parentLayoutCoordinates कर दिया गया है, ताकि नई parentCoordinates प्रॉपर्टी का इस्तेमाल किया जा सके. parentCoordinates प्रॉपर्टी अब पैरंट मॉडिफ़ायर के LayoutCoordintes उपलब्ध कराती है. इससे onSizeChanged() और onGloballyPositioned() के इस्तेमाल के ज़्यादा उदाहरण मिलेंगे (Idfbfd, b/177926591)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, और pressIndicaitonGestureFilter अब काम नहीं करते. इसके बजाय, Modifier.clickable या Modifier.pointerInput के साथ detectTapGestures फ़ंक्शन का इस्तेमाल करें. (I6baf9, b/175294473)
  • SaveableStateRegistry से unregisterProvider को हटा दिया गया है. इसके बजाय, registerProvider() अब SaveableStateRegistry.Entry ऑब्जेक्ट दिखाता है. इसका इस्तेमाल, रजिस्टर किए गए प्रोवाइडर को हटाने के लिए किया जा सकता है (Ic4274, b/178583739)
  • rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)
  • सार्वजनिक एपीआई से CoreText और CoreTextField हटा दिया गया है
    • SelectionContainer के ऐसे ओवरलोड को हटाया गया जिसे अब इस्तेमाल नहीं किया जा सकता
    • (I99c19)
  • अब उन टेस्ट में ज़्यादा स्थिरता देखने को मिलेगी जिनमें WindowManager में सीधे तौर पर जोड़ी/हटाई गई हैरारकी में Compose का इस्तेमाल किया जाता है. (Ie81ed, b/175765614)
  • Recomposer.current() को हटा दिया गया है. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के दायरे में आने वाले Recomposers को लेज़ी तरीके से बनाता है. ये Recomposers, विंडो के लिए ViewTreeLifecycleOwner से कंट्रोल होते हैं. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)
  • Recomposer.runningRecomposers अब प्रोसेस में कंपोज़िशन की मौजूदा स्थिति को देखने के लिए, read-only RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. Recomposer.current() के बजाय इस एपीआई का इस्तेमाल करें. यह अब काम नहीं करता. (If8ebe)
  • Saver, listSaver(), mapSaver(), और autoSaver को androidx.compose.runtime.savedinstancestate से androidx.compose.runtime.saveable में ले जाया गया है (I77fe6)
  • EditCommands, AnnotatedString स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. टेक्स्ट में एक से ज़्यादा स्टाइल में बदलाव करने की सुविधा अभी लागू नहीं की गई है. (I4c3ea)
  • अपटाइम और अवधि को हटा दिया गया है. (Ib9bf4, b/177420019)
  • CompositionData.asTree() और इससे जुड़े एपीआई को अलग ui-tooling-data मॉड्यूल में ले जाया गया है. साथ ही, इन्हें एक्सपेरिमेंट के तौर पर मार्क किया गया है (Ic95b8)
  • RounderCornerShape, CutCornerShape, और CornerBasedShape पर मौजूद पैरामीटर के नाम बदलकर, बाएं/दाएं से शुरू/खत्म कर दिए गए हैं. ऐसा इसलिए किया गया है, ताकि आरटीएल दिशा में शेप की ऑटो मिररिंग की सुविधा काम कर सके. AbsoluteRounderCornerShape और AbsoluteCutCornerShape को उन मामलों के लिए पेश किया गया था जहां ऑटो-मिररिंग की ज़रूरत नहीं होती. (I61040, b/152756983)
  • Compose कंपाइलर प्लगिन जिस एपीआई को टारगेट करता है उसे रिफ़ैक्टर किया गया है. अब यह कॉंक्रीट क्लास के बजाय इंटरफ़ेस का इस्तेमाल करता है. इंटरफ़ेस में अब टाइप पैरामीटर का इस्तेमाल नहीं किया जाता.

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

  • StringBuilder.deleteAt फ़ंक्शन (Id6ed9) को गलती से सार्वजनिक किए जाने की समस्या ठीक की गई

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

  • अब ComposeView को व्यू के ऐसे पदानुक्रमों में रखा जा सकता है जो किसी अन्य कंपोज़िशन के चाइल्ड हैं. साथ ही, अब ये अपने पूर्वजों की चाइल्ड कंपोज़िशन को होस्ट कर सकते हैं (I92883)
  • ImageBitmap ऑब्जेक्ट लोड करते समय, संसाधन के ड्रॉ करने लायक कैश मेमोरी का फिर से इस्तेमाल करने के लिए, Compose के imageFromResource एपीआई को अपडेट किया गया है. (If3627, b/178751994)

वर्शन 1.0.0-alpha11

28 जनवरी, 2021

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

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

  • WithConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया है और इसे foundation.layout में ले जाया गया है. (I9420b, b/173387208)
  • Key.DPadUp के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, Key.DirectionUp का इस्तेमाल करें. (Iab335, b/177954892)
  • मालिक का इंटरफ़ेस अब से इंटरनल होगा. (If8e35)
  • प्रोग्राम के हिसाब से फ़ोकस को दूसरी जगह ले जाने के लिए, FocusManager.moveFocus() API जोड़ा गया. (I045cb, b/177681839)
  • PopupPositionProvider में बदलाव किया गया है. अब यह ग्लोबल कोऑर्डिनेट के बजाय, विंडो के हिसाब से कोऑर्डिनेट का इस्तेमाल करता है. parentGlobalBounds का नाम बदलकर anchorBounds कर दिया गया है. साथ ही, windowGlobalBounds को windowSize: IntSize में बदल दिया गया है (I2994a)
  • Duration और Uptime को Long milliseconds से बदल दिया जाएगा. साथ ही, इस चरण में उन क्लास पर पॉइंटर इनपुट की निर्भरता को हटा दिया जाएगा. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner को, पहले से मौजूद AmbientLifecycleOwner और AmbientViewModelStoreOwner की तरह ही जोड़ा गया था (I9a3e8, b/176756365)
  • वेक्टर ग्राफ़िक एपीआई को अपडेट किया गया है, ताकि वेक्टर ग्राफ़िक के रूट पर लागू किए गए टिंटिंग को पार्स किया जा सके. (Id9d53, b/177210509)
  • डिवाइसों में अंतर करने के लिए, PointerInputChange में toolType जोड़ा गया (Iac787, b/175142755)
  • AmbientWindowManager का नाम बदलकर AmbientWindowInfo कर दिया गया है (I2686a, b/177084714, b/177084983)
  • ग्लोबल कोऑर्डिनेट के तरीकों का इस्तेमाल बंद कर दिया गया है. साथ ही, विंडो पर आधारित कोऑर्डिनेट के नए तरीके बनाए गए हैं. (Iee284)
  • Modifier.toolingGraphicsLayer जोड़ा गया है. इससे जांच चालू होने पर, ग्राफ़िक्स लेयर मॉडिफ़ायर जुड़ जाता है. (I315df)
  • FocusRequester.createRefs को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है, क्योंकि इसमें बदलाव हो सकता है. (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden का नाम बदलकर invisibleToUser कर दिया गया है. साथ ही, इसे @ExperimentalComposeUiApi के तौर पर मार्क किया गया है. AccessibilityRangeInfo का नाम बदलकर ProgressBarRangeInfo कर दिया गया है. stateDescriptionRange का नाम बदलकर progressBarRangeInfo कर दिया गया है. AccessibilityScrollState का नाम बदलकर ScrollAxisRange कर दिया गया है. horizontalAccessibilityScrollState का नाम बदलकर horizontalScrollAxisRange कर दिया गया है. verticalAccessibilityScrollState का नाम बदलकर verticalScrollAxisRange कर दिया गया है. (Id3148)
  • PointerInputData को हटा दिया गया है और PointerInputChange में बदलाव किया गया है, ताकि इसमें PointerInputData के सभी फ़ील्ड शामिल किए जा सकें. PointerInputEvent और PointerInputEventData को इंटरनल बना दिया गया है, क्योंकि इनका इस्तेमाल किसी भी सार्वजनिक एपीआई में नहीं किया जाता है. (Ifff97, b/175142755)
  • GraphicsLayerScope में, डेंसिटी लागू करने की सुविधा को अपडेट किया गया है, ताकि डीपी को रॉ पिक्सल में बदला जा सके. (Ied528, b/176819695)
  • मैट्रिक्स एपीआई को अपडेट किया गया है, ताकि वह लाइन के हिसाब से क्रम में लगे डेटा को फ़ॉलो कर सके. साथ ही, इंडेक्स कॉन्स्टेंट दे सके, ताकि अलग-अलग मैट्रिक्स के बीच कन्वर्ज़न में मदद मिल सके. इससे SkMatrix और Matrix4 के बीच फ़्रेमवर्क कन्वर्ज़न लॉजिक को इंटरनल तौर पर मैच किया जा सकेगा. (I432e6)
  • monotonicallyFrameAnimationClockOf के एक्सपेरिमेंटल तरीके हटा दिए गए (Ib753f, b/170708374)
  • String.fintPrecedingBreak और String.fingFollowingBreak को InternalTextApi में ले जाएं. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair को सार्वजनिक एपीआई से हटा दिया गया है. (Ia9494)
  • TransformedText.transformedText का नाम बदलकर TransformedText.text कर दिया गया है
    • TransformedText अब डेटा क्लास नहीं है (Ie672a)
  • data class को इन क्लास से हटा दिया गया है:
    • InlineTextContent
    • LocaleList (I605c7)
  • ये क्लास अब डेटा क्लास नहीं हैं:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • VisualTransformation को फ़ंक्शनल इंटरफ़ेस के तौर पर बदला गया (I3bba4)
  • फ़ंक्शन के रेफ़रंस वाले पैरामीटर टाइप (I5e1bd) को जोड़ा गया
  • बदले गए बाउंड को InspectorNode (Ice42f) में जोड़ें

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

  • SideEffect और DisposableEffect API के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है (If760e)
  • 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)

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

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

  • OnSizeChanged, लेआउट के कॉन्टेंट का साइज़ दिखा रहा था. अब यह, मॉडिफ़ायर चेन में अपनी पोज़िशन के हिसाब से साइज़ की जानकारी देता है. (I36b78, b/177562900)

  • emit() एपीआई और सभी ओवरलोड को बंद कर दिया गया है. इनका नाम बदलकर ComposeNode कर दिया गया है. एपीआई एक जैसे हैं. हालांकि, Compose (I4137b) के नामकरण के नियमों का पालन करने के लिए, इनका नाम अलग है

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

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

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

  • RememberObserver, CompositionLifecycleObserver की जगह लेता है. CompositionLifecycleObserver को अब बंद कर दिया गया है.

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

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

  • दो या उससे ज़्यादा TextUnit के बीच अंकगणितीय कार्रवाइयों को बंद कर दिया गया है. Int.sp और Int.em जैसे एक्सटेंशन फ़ंक्शन के बजाय, TextUnit.Sp और TextUnit.Em फ़ंक्शन का इस्तेमाल न करें. (I48369)

  • जिन लाइब्रेरी में सार्वजनिक संसाधनों के बारे में साफ़ तौर पर नहीं बताया गया है (जैसे, public.xml के ज़रिए), उनमें मौजूद संसाधन अब डिफ़ॉल्ट रूप से निजी होंगे. (Ia1dcc, b/170882230)

  • 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)

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

    • कृपया ImeAction.Unspecified (Ie1bcc) के बजाय ImeAction.Default का इस्तेमाल करें
  • टेस्टिंग में TestCoroutineDispatcher का इस्तेमाल करें (I532b6)

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

  • TransitionDefinition पर आधारित ट्रांज़िशन अब काम नहीं करता (I0ac57)

  • TextUnitType.Inherit को हटा दिया गया है. इसके बजाय, कृपया TextUnitType.Unspecified का इस्तेमाल करें. (I9ff64)

वर्शन 1.0.0-alpha10

13 जनवरी, 2021

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

अहम बदलाव

  • इंटरनल कंपाइलर एपीआई में बदलाव करने से, कंपोज़िशन के दौरान जनरेट हुए नोड में किए गए बदलावों को कंपोज़िशन के "बदलाव लागू करें" फ़ेज़ में बैच किया जा सकता है. ऐसा तब किया जाता है, जब सभी @Composable फ़ंक्शन पूरे हो जाते हैं.

    यह व्यवहार में होने वाला एक ऐसा बदलाव है जिससे ऐप्लिकेशन कोड पर असर पड़ सकता है. ऐसा इसलिए, क्योंकि बदलाव लागू होने तक नोड, इंटरनल और एक्सपेरिमेंटल एपीआई से उपलब्ध नहीं होते. आम तौर पर, इस समस्या को ठीक करने के लिए, ऐसे कोड को SideEffect कंपोज़ेबल में रखा जाता है जिसमें इस तरह की डिपेंडेंसी होती हैं. इससे नोड बनाने और उन्हें शुरू करने के बाद ही कोड को लागू किया जा सकता है. (I018da)

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

  • Modifier.focusOrder() जोड़ा गया है. इसका इस्तेमाल, फ़ोकस ट्रैवर्सल का कस्टम क्रम तय करने के लिए किया जा सकता है (I90cf5, b/175899543, b/170155556, b/170155429)
  • focusObserver के इस्तेमाल को बंद किया गया. इसके बजाय, onFocusChanged या onFocusEvent का इस्तेमाल करें (I3ecb9, b/175156387)
  • EditOperations API में हुए बदलाव
    • EditOperation का नाम बदलकर EditCommand कर दिया गया है
    • EditOperation के कॉन्क्रीट इंप्लीमेंटेशन के लिए, कमांड सफ़िक्स जोड़ा गया
    • EditCommand अब डेटा क्लास नहीं हैं
    • EditOperation.process फ़ंक्शन का नाम बदलकर applyTo कर दिया गया है
    • InputEventListener का नाम बदलकर InputEventCallback कर दिया गया है
    • (I0a366)
  • PxSquared, PxCubed, और PxInverse का इस्तेमाल नहीं किया गया था. इसलिए, इन्हें हटा दिया गया है. Size.center() को प्रॉपर्टी के तौर पर बदला गया. (I973f7)
  • ui-test मॉड्यूल अब टेस्ट किए जा रहे यूज़र इंटरफ़ेस (यूआई) के लिए, रीकंपोज़र बनाने की सुविधा को कॉन्फ़िगर कर पाएगा (Ibebd8)
  • वेलोसिटी में बदलाव करके, कॉम्पोनेंट के हिस्सों और गणितीय ऑपरेशनों को शामिल किया गया है. (Ib0447)
  • @ExperimentalTesting का नाम बदलकर @ExperimentalTestApi कर दिया गया है, ताकि यह इसी तरह के एक्सपेरिमेंटल एपीआई एनोटेशन (Ia4502, b/171464963) के साथ काम कर सके
  • Color.useOrElse() का नाम बदलकर Color.takeOrElse() कर दिया गया है (Ifdcf5)
  • DpInverse, DpSquared, और DpCubed क्लास का इस्तेमाल नहीं किया गया था. इसलिए, उन्हें हटा दिया गया है. (I4d62b)
  • Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
  • लेआउट नोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (I72fd1)
  • Unspecified कॉन्सटेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse को जोड़ा गया है. (I93f7b, b/174310811)
  • ComposeView एपीआई को बड़ा करें, ताकि Compose पर आधारित व्यू को रीसाइकल किया जा सके. साथ ही, उनकी कंपोज़िशन को डिस्पोज़ किया जा सके, ताकि बाद में उन्हें फिर से बनाया जा सके. विंडो के स्कोप वाले Recomposer और CompositionReference को इंस्टॉल करने और खोजने के लिए एपीआई जोड़े गए हैं. इनका इस्तेमाल, चाइल्ड कंपोज़िशन बनाने के लिए किया जाता है.

    [Abstract]ComposeViews की कंपोज़िशन डिस्पोज़ल की रणनीति को कॉन्फ़िगर करने के लिए, ViewCompositionStrategy जोड़ें; डिफ़ॉल्ट व्यवहार, विंडो के अलग होने पर डिस्पोज़ करना है. (I860ab)

  • Any.identityHashCode() public api को हटाया गया (I025d7)

  • toStringAsFixed API को हटा दिया गया है. इसके बजाय, सीधे तौर पर String.format का इस्तेमाल किया जा सकता है. (Iaba6b)

  • Add Toggle to foundation Strings.kt (I4a5b7, b/172366489)

  • nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बना दिया गया. equals लागू करने के लिए, nativeClass के इस्तेमाल को अपडेट किया गया है. अब इसके बजाय, 'is MyClass' का इस्तेमाल किया जाएगा. (I4f734)

  • Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)

  • SelectionRegistrar में SelectionManager को Selectable अपडेट की सूचना देने के लिए, SelectionRegistrar.notifySelectableChange को जोड़ा गया. (I6ff30, b/173215242)

  • आउटलाइन.bounds प्रॉपर्टी जोड़ी गई है, ताकि आउटलाइन लागू करने के अलग-अलग तरीकों के लिए बाउंडिंग रेक्ट हासिल किया जा सके. (I16e74, b/175093504)

  • TestUiDispatcher को बंद कर दिया गया है. इसके बजाय, Dispatchers.Main का इस्तेमाल करें (Ic171f, b/175385255)

  • ImeOptions और KeyboardOptions अब डेटा क्लास नहीं हैं (I3c898, b/168684531)

  • VisualTransformation API में हुए बदलाव

    • OffsetMap का नाम बदलकर OffsetMapping किया गया
    • OffsetMapping.identityOffsetMap का नाम बदलकर OffsetMapping.Identity कर दिया गया है
    • PasswordTransformation अब डेटा-क्लास नहीं है
    • OffsetMapping को उसकी अपनी फ़ाइल में ले जाया गया
    • (I0bdf3)
  • DpOffset के लिए, पोज़िशन का नाम बदला गया और getDistance() को हटाया गया (Ib2dfd)

  • Dp.isFinite() को val Dp.isFinite में बदला गया (I50e00)

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

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

वर्शन 1.0.0-alpha09

16 दिसंबर, 2020

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

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

  • KeyEvent.Alt के इस्तेमाल पर रोक लगा दी गई है. इसे हटा दिया गया है. इसके बजाय, KeyEvent.isAltPressed का इस्तेमाल करें. (Idd695)
  • Modifier.keyInputFilter और Modifier.previewKeyInputFilter अब काम नहीं करते. इसके बजाय, Modifier.onKeyEvent और Modifier.onPreviewKeyEvent का इस्तेमाल करें (Idbf1b, b/175156384)
  • Modifier.focusObserver अब काम नहीं करता है. इसके बजाय, Modifier.onFocusChanged या Modifier.onFocusEvent का इस्तेमाल करें (I30f17, b/168511863, b/168511484)
  • पॉइंटर इनपुट एपीआई को निलंबित करने के लिए, HandlePointerInputScope का नाम बदलकर AwaitPointerEventScope और handlePointerInput() का नाम बदलकर awaitPointerEventScope() कर दिया गया है. (Idf0a1, b/175142755)
  • ऑटोमैटिक भरने वाला एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध है. इसके लिए, ऑप्ट-इन करना ज़रूरी है (I0a1ec)
  • FocuSRequester इंस्टेंस बनाने के लिए, डिस्ट्रक्चरिंग डिक्लेरेशन जोड़े गए (I35d84, b/174817008)
  • accessibilityLabel का नाम बदलकर contentDescription कर दिया गया है. accessibilityValue का नाम बदलकर stateDescription कर दिया गया है. (I250f2)
  • सस्पेंड किए गए पॉइंटर इनपुट एपीआई (Ia54d5, b/175142755) से कस्टम इवेंट हटा दिए गए
  • SelectionRegistrar में कई नए फ़ंक्शन जोड़े गए हैं. साथ ही, onPositionChange का नाम बदलकर notifyPositionChange कर दिया गया है. (Ifbaf7)
  • हमने LayoutNode के ज़्यादा सदस्यों को इंटरनल के तौर पर मार्क किया है (I443c6)
  • LayoutInfo को टूलिंग और टेस्टिंग के लिए इस्तेमाल किया जाता है (I9b190)
  • AndroidOwner ने इंटरनल टेस्ट के लिए बनाया (Ibcad0, b/170296980)
  • ExperimentalPointerInput एनोटेशन हटाया गया (Ia7a24)
  • नेस्टेड स्क्रोल सिस्टम जोड़ा गया. ज़्यादा जानकारी के लिए, Modifier.nestedScroll देखें (I36e15, b/162408885)
  • subcomposeInto(LayoutNode) को इंटरनल बना दिया गया है (Id724a)
  • Applier इंटरफ़ेस में बदलाव किया गया है, ताकि बॉटम-अप (नीचे से ऊपर) तरीके से ट्री बनाना आसान हो. पहले टॉप-डाउन (ऊपर से नीचे) तरीके से ट्री बनाए जाते थे.

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

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

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

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

  • AndroidDialogProperties में dismissOnBackPress और dismissOnClickOutside प्रॉपर्टी जोड़ी गईं. इनसे यह कॉन्फ़िगर किया जा सकता है कि dialog के onDismissRequest लैम्ब्डा को कब शुरू किया जाएगा. (If5e17)

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

  • Modifier.clearAndSetSemantics को जोड़ा गया है, ताकि डिसेंडेंट के सिमैंटिक को मिटाया जा सके और नए सिमैंटिक सेट किए जा सकें. (I277ca)

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

  • स्ट्रोक किए गए शेप को अलग-अलग पैटर्न देने के लिए, PathEffect ग्राफ़िक्स एपीआई पेश किया गया. PathEffect के expect/actual लागू करने के पक्ष में, NativePathEffect के इस्तेमाल को बंद कर दिया गया है. (I5e976, b/171072166)

  • Compose में IdlingResource इंटरफ़ेस जोड़े गए हैं. ये Espresso के आइडलिंग रिसॉर्स के Compose के साथ काम करने वाले वैरिएंट के तौर पर जोड़े गए हैं. इन्हें ComposeTestRule (I433f3) की मदद से रजिस्टर और अनरजिस्टर किया जा सकता है

  • ComposeIdlingResource के ग्लोबल (अन)रजिस्ट्रेशन और ComposeIdlingResource में घड़ियों के ग्लोबल (अन)रजिस्ट्रेशन को हटाया गया (I32660)

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

  • ऑफ़सेट मॉडिफ़ायर में लैम्ब्डा अब फ़्लोट के बजाय 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)

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

  • BuildCompat.isAtLeastR का इस्तेमाल नहीं किया जा सकता (Idb37e)

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

  • वैल्यू को रेडियन में बदलने के लिए, Float और Double पर एक्सटेंशन के तरीके हटाए गए. इसे लागू करने वाले PathParser में एक निजी फ़ंक्शन के तौर पर ले जाया गया है. इसका इस्तेमाल सिर्फ़ इसी जगह पर किया जाता था (I25f52)

वर्शन 1.0.0-alpha08

2 दिसंबर, 2020

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

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

  • सिमैंटिक ऐक्शन Dismiss (I2b706) जोड़ा गया
  • DrawModifier API को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया है. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि टाइपएलियास/सहायता करने वाले तरीकों को शामिल किया जा सके. इससे, पुराने एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद मिलेगी. (Id6044, b/173834241)
  • Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है साथ ही, एपीआई के सुझाव/राय देने या शिकायत करने वाले फ़ॉर्म के मुताबिक, GraphicsLayer से जुड़ी क्लास को भी अपडेट किया गया है. (I0bd29, b/173834241)
  • placeable.placeWithLayer() और placeable.placeRelativeWithLayer() नाम के दो नए तरीके जोड़े गए हैं. इनकी मदद से, कस्टम लेआउट और लेआउट मॉडिफ़ायर, चाइल्ड को ग्राफ़िक्स लेयर के साथ रख सकते हैं. इससे हम सबसे पहले रीड्रॉइंग को ऑप्टिमाइज़ कर सकते हैं. इसलिए, जब हमें किसी चाइल्ड को मूव करना होता है, तो हमें उसके कॉन्टेंट को रीड्रॉ करने की ज़रूरत नहीं होती. दूसरा, हम किसी चाइल्ड के लिए ड्रॉ ट्रांसफ़ॉर्मेशन लागू कर सकते हैं (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • <T> को SubcomposeLayout के एलान से हटा दिया गया है. अब इसका इस्तेमाल बिना टाइप बताए किया जा सकता है. (Ib60c8)
  • drawLayer के लिए, Modifier.scale/rotate एपीआई जोड़े गए हैं.
    • Modifier.drawOpacity का नाम बदलकर Modifier.alpha किया गया
    • Modifier.drawShadow का नाम बदलकर Modifier.shadow किया गया (I264ca, b/173208140)
  • PointerInputData के अपटाइम और पोजीशन फ़ील्ड को नॉन-नलेबल बनाया गया है. (Id468a)
  • MaterialTheme अब चुनने के हैंडल और चुनने के बैकग्राउंड के लिए सही रंग सेट करता है. नॉन-मटेरियल ऐप्लिकेशन, AmbientTextSelectionColors का इस्तेमाल करके, चुनने के लिए इस्तेमाल किए गए रंगों को पसंद के मुताबिक बना सकते हैं. (I1e6f4, b/139320372, b/139320907)
  • WindowManager.isWindowFocused को जोड़ा गया है. इससे यह पता चलता है कि होस्ट विंडो फ़ोकस में है या नहीं. साथ ही, WindowFocusObserver को जोड़ा गया है. यह onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
  • TransformOrigin API को अपडेट किया गया है, ताकि component1 और component2 को pivotFractionX और pivotFractionY के तौर पर दिखाने के लिए, डिस्ट्रक्चरिंग सिंटैक्स का इस्तेमाल किया जा सके (If43c4, b/173586560)
  • कंपोज़ेबल लैम्डा पैरामीटर के नाम और पोज़िशन के लिए, लिंट चेक की सुविधा जोड़ी गई है. इससे Compose के दिशा-निर्देशों के मुताबिक, अनुकूलता की जांच की जा सकेगी. इसके अलावा, कुछ एपीआई को माइग्रेट किया गया है. इनमें children को ट्रेलिंग लैम्डा के नाम के तौर पर इस्तेमाल किया गया था. इन्हें लिंट चेक और दिशा-निर्देशों के मुताबिक content पर माइग्रेट किया गया है. (Iec48e)
  • यह एपीआई जोड़ा गया है. इससे यह पता चलता है कि की इवेंट भेजे जाने के दौरान, Alt, Ctrl, Meta या Shift बटन दबाए गए थे या नहीं. (I50ed9)
  • नया Modifier.drawLayer() ओवरलोड जोड़ा गया. यह नए GraphicsLayerScope पर एक लैम्ब्डा ब्लॉक लेता है. इसमें लेयर के पैरामीटर इस तरह से तय किए जाते हैं कि स्थिति में बदलाव होने पर, दोबारा कंपोज़ करने और फिर से लेआउट करने की प्रोसेस को स्किप किया जा सके. DrawLayerModifier अब इंटरनल है. ऐसा इसलिए किया गया है, ताकि इसके लॉजिक को LayoutModifier के placeable.placeWithLayer() तरीके में माइग्रेट किया जा सके (I15e9f, b/173030831)
  • Ambient सफ़िक्स वाले, बंद किए गए ऐंबिएंट को हटा दिया गया है. साथ ही, उन्हें ऐंबिएंट से शुरू होने वाली नई प्रॉपर्टी से बदल दिया गया है. ये प्रॉपर्टी, अन्य ऐंबिएंट और Compose API के दिशा-निर्देशों के मुताबिक हैं. (I33440)
  • androidx.compose.ui.text.Typeface को androidx.compose.ui.text.font.Typeface (Ic2b81) में ले जाया गया
  • mergeAllDescendants नाम के सिमैंटिक आर्ग्युमेंट का नाम बदलकर mergeDescendants कर दिया गया है. (Ib6250)
  • ड्रैग जेस्चर का पता लगाने वाला नया टूल, जो पॉइंटर इनपुट एपीआई को निलंबित करता है. इसमें ओरिएंटेशन लॉक करने की सुविधा भी शामिल है. (Icef25)
  • VectorAsset का नाम बदलकर ImageVector कर दिया गया है VectorAsset को Builder में ले जाया गया है और इसका नाम बदल दिया गया है, ताकि यह API के दिशा-निर्देशों के मुताबिक ImageVector की इनर क्लास बन सके. VectorAssetBuilder का टाइपएलियास जोड़ा गया, ताकि ImageVector.Builder के साथ काम कर सके. (Icfdc8)
  • ImageAsset और इससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया है. (Ia2d99)
  • PlacementScope के place() के लिए zIndex पैरामीटर जोड़ा गया है, ताकि अब Modifier.zIndex() LayoutModifier के तौर पर काम करे. साथ ही, कोई भी कस्टम लेआउट, प्लेसमेंट ब्लॉक में अपने बच्चों के लिए zIndex सेट कर सके (I711f7, b/171493718)
  • फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (I6f05c) में ले जाया गया
  • place(Offset) और placeRelative(Offset) को बंद कर दिया गया है. इसके बजाय, इंट ऑफ़सेट के साथ ओवरलोड का इस्तेमाल करें (I4c5e7)
  • पहले इस्तेमाल नहीं किए जा रहे एपीआई हटा दिए गए हैं: Modifier.onPositioned को हटा दिया गया है. Modifier.onGloballyPositioned का इस्तेमाल करें. Modifier.onDraw को हटा दिया गया है. Modifier.onDrawBehind का इस्तेमाल करें. Modifier.plus को हटा दिया गया है. Modifier.then का इस्तेमाल करें. Color.Unset को हटा दिया गया है. Color.Unspecified का इस्तेमाल करें. PxBounds क्लास को हटा दिया गया है. इसके बजाय, Rect का इस्तेमाल करें. (Ie9d02, b/172562222)
  • अलाइनमेंट इंटरफ़ेस को अपडेट किया गया है और इसे चालू कर दिया गया है. (I46a07, b/172311734)
  • टैप, दो बार टैप, दबाकर रखने, और दबाने के इंडिकेशन के लिए, जेस्चर डिटेक्टर जोड़े गए. इसके लिए, नए सस्पेंडिंग पॉइंटर इनपुट का इस्तेमाल किया गया. कुछ यूटिलिटी भी जोड़ी गई हैं, ताकि डेवलपर के लिए अपने जेस्चर डिटेक्टर लिखना आसान हो जाए. (I00807)
  • LayoutIdParentData के लिए, id का नाम बदलकर layoutId कर दिया गया है. Measurable.id का नाम बदलकर Measurable.layoutId कर दिया गया है. (Iadbcb, b/172449643)
  • मल्टीटच जेस्चर डिटेक्टर की नई सुविधा. इसमें रोटेशन, ज़ूम, और पैनिंग का पता लगाने के लिए हेल्पर शामिल हैं. (Ic459d)
  • SweepGradientShader और SweepGradientBrush API लॉन्च किए गए. (Ia22c1)
  • टेस्ट में टाइम कंट्रोल (TestAnimationClock और इसके इस्तेमाल) की सुविधा अब एक्सपेरिमेंट के तौर पर उपलब्ध है (I6ef86, b/171378521)
  • को-रूटीन पर आधारित स्क्रोलिंग एपीआई जोड़ें:

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

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

  • AnimationClockTestRule में तरीकों और प्रॉपर्टी के डिफ़ॉल्ट तौर पर लागू होने की सुविधा उपलब्ध कराई गई है. इसे clock (I7ea3d, b/173399709) को सौंपा जा सकता है

  • AndroidComposeTestRule अब कस्टम ऐक्टिविटी लॉन्चर स्वीकार कर सकता है (Ib8288, b/153623653, b/154135019)

  • TextLayoutResult.getLineVisibleEnd अब काम नहीं करता. TextLayoutResult.getLineEnd को बदलने के लिए, अब इसमें एक नया पैरामीटर visibleEnd है. (I73282)

  • TextFieldValue API अपडेट किया गया

    • TextFieldValue.composition को रीड ओनली बनाया गया
    • चुनी गई अमान्य रेंज के लिए, अपवाद को हटाया गया (I4a675, b/172239032)
  • लिखे गए शब्दों को सुनने की सुविधा के लिए, TtsAnnotation की सुविधा उपलब्ध कराई गई है. (I54cc6)

  • कोरूटीन में ऐनिमेशन चलाने के लिए नए एपीआई (Ied662)

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

  • Box के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
  • offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया है. अब ये स्टेट की जगह लैंबडा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
  • TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
  • कंपोज़ेबल फ़ंक्शन में, मॉडिफ़ायर पैरामीटर के लिए लिंट चेक जोड़ा गया. यह लिंट चेक, Compose के दिशा-निर्देशों के मुताबिक पैरामीटर के नाम, रिटर्न टाइप, डिफ़ॉल्ट वैल्यू, और क्रम की जांच करता है. (If493b)
  • TestAnimationClock को MonotonicFrameClock से कंट्रोल करने के लिए, कुछ समय के लिए विकल्प जोड़ा गया (I1403b, b/173402197)
  • Android Typeface रैपर जोड़ा गया. typeface फ़ंक्शन के ज़रिए, Android Typeface लोड किया जा सकता है. जैसे, typeface(Typeface.DEFAULT). typefaceFromFontFamily() का नाम बदलकर typeface() भी कर दिया गया है (I52ab7)
  • लिंट चेक जोड़ा गया है. इससे यह पता चलता है कि मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर पर एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें एक साथ आसानी से जोड़ा जा सके. (I07981)
  • Remove old ui-test module and its stubs (I3a7cb)
  • Recomposer अब EmbeddingContext को स्वीकार नहीं करता है. शेड्यूल करने से जुड़ी ज़रूरी डिपेंडेंसी, effectCoroutineContext से मिलती हैं. FrameManager अब काम नहीं करता. प्लैटफ़ॉर्म इंटिग्रेशन को अपने ग्लोबल स्नैपशॉट हैंडलिंग को शुरू करना चाहिए. (I02369)
  • सुलभता नोड को स्टाइल की जानकारी पास करता है. (If5e8d)
  • अन्य यूनिट के साथ एक जैसा रखने के लिए, TextUnit.Inherit का नाम बदलकर TextUnit.Unspecified कर दिया गया है. (Ifce19)

Compose यूज़र इंटरफ़ेस का वर्शन 1.0.0-alpha07

11 नवंबर, 2020

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

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

  • ScaleFactor इनलाइन क्लास को पेश किया गया है. इसका इस्तेमाल, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के स्केल फ़ैक्टर को एक-दूसरे से अलग दिखाने के लिए किया जाता है. इससे, नॉन-यूनिफ़ॉर्म स्केलिंग के इस्तेमाल के उदाहरणों को सपोर्ट किया जा सकेगा.
    • ContentScale में computeScaleFactor तरीका जोड़ा गया
    • ContentScale.FillBounds को जोड़ा गया है, ताकि src की सीमाओं को खींचकर डेस्टिनेशन को पूरी तरह से भरा जा सके. इसके लिए, नॉन-यूनिफ़ॉर्म स्केलिंग की जाती है.
    • साइज़ पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर के तरीके जोड़े गए.
    • (Ic96a6, b/172291582)
  • अलाइनमेंट बनाने के लिए, BiasAlignment और BiasAbsoluteAlignment फ़ैक्ट्रियां जोड़ी गईं. (Iac836, b/169406772)
  • डेवलपर को फ़ोकस को ज़बरदस्ती हटाने की अनुमति दें. (I90372)
  • Compose में व्यू के लिए एलिवेशन नहीं दिखने की समस्या को ठीक किया गया. (If7782)
  • Modifier.drawBehind के साथ नाम रखने के नियम का पालन करने के लिए, ContentDrawScope में onDrawBehind API बनाया गया. (I4fc3a, b/171955269)
  • लेयर एपीआई पर 3D ट्रांसफ़ॉर्मेशन rotationX/rotationY को पूरा करने के लिए, कैमरे की दूरी की सुविधा जोड़ी गई. (I40213, b/171492100)
  • कॉलबैक के बिना SelectionContainer जोड़ा गया (Ibfadb)
  • ExperimentalSubcomposeLayoutApi एनोटेशन हटा दिया गया है. अब SubcomposeLayout का इस्तेमाल, @OptIn (I708ad) को जोड़े बिना किया जा सकता है
  • FirstBaseline और LastBaseline को androidx.compose.ui.layout पैकेज में ले जाया गया (Ied2e7)
  • drawShadow() मॉडिफ़ायर से ओपैसिटी को हटा दिया गया है, क्योंकि यह भ्रम पैदा कर रहा था. (I82c62, b/171624638)
  • MeasureResult को MeasureScope से बाहर ले जाया गया. (Ibf96d, b/171184002)
  • लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.layout.ui में ले जाया गया है. (I0fa98, b/170475424)
  • FocusState2 को हटाया गया (I686cb, b/168686446)
  • ZIndexModifier अब इंटरनल है (I1808b, b/171493718)
  • साइज़ पैरामीटर पर lerp मेथड के रिटर्न टाइप को अपडेट किया गया है, ताकि गैर-शून्य साइज़ को दिखाया जा सके. इससे गैर-ज़रूरी बॉक्सिंग से बचा जा सकेगा. (Ib0044)
  • ऐसे कोड की जांच करने के लिए TestMonotonicFrameClock जोड़ा गया है जो कंपोज़ के MonotonicFrameClock पर निर्भर करता है. यह कोड, kotlinx-coroutines-test के runBlockingTest का इस्तेमाल करके कंपोज़िशन फ़्रेम इवेंट का इंतज़ार करता है (I4402f)
  • GestureScope.localToGlobal को हटाया गया (I15299, b/171462785)
  • onAllNodesWithSubstring फ़ाइंडर जोड़ा गया (I81dd7, b/171462889)
  • androidx.ui.test मॉड्यूल अब काम नहीं करता. कृपया androidx.compose.ui.test और androidx.compose.ui.test.junit4 पर माइग्रेट करें (I452e8)

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

  • captureToBitmap को captureToImage में ले जाया गया है. (I86385)
  • foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू इस्तेमाल न करने वाले सामान्य टेक्स्ट एपीआई के लिए, androidx.compose.foundation.BasicText देखें. (If64cb)
  • KeyboardOptions को स्वीकार करने के लिए, TextFields को अपडेट करें (Ida7f3)
  • KeyboardOptions का नाम बदलकर ImeOptions करें (I82f36)
  • KeyboardType और ImeAction को KeyboardOptions में ले जाया गया (I910ce)
  • provideDefault को ऐंबियंट वैल्यू देने के विकल्प के तौर पर जोड़ा गया था. इसका इस्तेमाल ऐसी ऐंबियंट वैल्यू तय करने के लिए किया जा सकता है जो सिर्फ़ तब सेट की जाएंगी, जब पहले से कोई ऐंबियंट वैल्यू न दी गई हो. (Id6635, b/171024925)
  • BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
  • ui-test-junit4 मॉड्यूल जोड़ें (Ib91f8)
  • relativePaddingFrom का नाम बदलकर paddingFrom कर दिया गया है. लेआउट बाउंड से टेक्स्ट बेसलाइन तक की दूरी तय करने में आसानी के लिए, paddingFromBaseline मॉडिफ़ायर जोड़ा गया है. (I0440a, b/170633813)
  • LaunchedTask का नाम बदलकर LaunchedEffect कर दिया गया है, ताकि यह SideEffect और DisposableEffect एपीआई के साथ अनुकूलता रख सके. सबसे सही तरीकों को बढ़ावा देने के लिए, LaunchedEffect में subject पैरामीटर के बिना इस्तेमाल करने की अनुमति नहीं है. (Ifd3d4)
  • कॉन्फ़िगरेशन अपडेट होने पर, फिर से कंपोज़ होने वाले कंपोज़ेबल रिसॉर्स जोड़े गए. (I6387c, b/167352819)
  • Recomposer को अब कंस्ट्रक्शन के समय CoroutineContext की ज़रूरत होती है (Ic4610)
  • एक से ज़्यादा Modifier.zIndex() लागू होने पर, zIndex वैल्यू का योग करें. इससे पहले, पहली टीम जीत रही थी. (Ic514c, b/170623936)
  • SlotTable को लागू करने के तरीके में बदलाव किया गया है. इससे सार्वजनिक एपीआई पर कोई असर नहीं पड़ेगा. (If9828)
  • कीबोर्ड में ऑटो करेक्ट IME का विकल्प जोड़ा गया (I57b8d)
  • androidx.ui.test को androidx.compose.ui.test में ले जाया गया (I9ffdb)
  • सार्वजनिक एपीआई से KeyboardOptions.toImeOptions को हटा दिया गया है. (Ic2e45)

बाहरी योगदान

  • androidx.compose.ui:ui-text-android (Ib93fa) के इंटरनल आर्टफ़ैक्ट के पब्लिकेशन को बंद कर दिया गया है

वर्शन 1.0.0-alpha06

28 अक्टूबर, 2020

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

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

  • Recomposer अब एक CompositionReference और एक मान्य कंपोज़िशन पैरंट है. अब कम जगहों पर Explicit Recomposer की ज़रूरत होगी. (I4036f)
  • VectorPainter को बंद कर दिया गया है. अब इसकी जगह rememberVectorPainter का इस्तेमाल किया जा सकता है. इससे यह बेहतर तरीके से पता चलता है कि कंपोज़ेबल एपीआई, कंपोज़िशन के बीच डेटा को बनाए रखने के लिए, 'remember' का इस्तेमाल करता है. (Ifda43)
  • Modifier.drawWithCache API को अपडेट किया गया है, ताकि ContentDrawScope को DrawScope के बजाय रिसीवर स्कोप के तौर पर दिखाया जा सके. इससे, लागू करने वालों को ड्रॉइंग कमांड को फिर से क्रम में लगाने की सुविधा मिलती है. यह ब्लेंडिंग/टिंटिंग के उन मामलों में काम आता है जिनमें कॉन्टेंट पिक्सल को पहले रेंडर किया जाना चाहिए, ताकि ब्लेंड मोड के एल्गोरिदम को सही तरीके से लागू किया जा सके. (Ie7ec8)
  • SimpleContainer को PopupTestUtils.kt में ले जाएं (I78c57)
  • ConsumedData अब डेटा क्लास नहीं है. ज़्यादा जानकारी के लिए, https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 पर जाएं (I1737f)
  • Rtl हैंडल की जगह ठीक की गई. (I6e1e0)
  • DrawScope और ContentDrawScope को ऐब्स्ट्रैक्ट क्लास के बजाय इंटरफ़ेस के तौर पर रीफ़ैक्टर किया गया है
    • DrawScope का CanvasDrawScope लागू किया गया
    • DrawScope के लागू किए गए कोड को फिर से लिखा गया है, ताकि CanvasScope का इस्तेमाल किया जा सके
    • DrawScope के लिए, DrawContext बनाया गया है, ताकि डिपेंडेंसी को रैप किया जा सके
    • DrawScope (I56f5e) पर, इस्तेमाल में नहीं आने वाले तरीकों को हटाया गया
  • बदलाव: PointerInputFilter.onPointerEvent(...) से रिटर्न वैल्यू हटा दी गई है, क्योंकि पॉइंटर इवेंट में सिर्फ़ इस्तेमाल किए गए डेटा की वैल्यू बदली जा सकती है. PointerInputFilter.onPointerEvent(...) से डेटा वापस लाने के बजाय, अब पास किए गए PointerEvents के इस्तेमाल से जुड़े डेटा में बदलाव किया जा सकता है. (I6acd0)
  • MeasureScope और IntrinsicMeasureScope को इंटरफ़ेस बनाया गया. (I1a087, b/170461665)
  • AlignmentLine के लिए, मर्ज फ़ंक्शन को छिपा दिया गया था. (I9da1a, b/170612900, b/170611568)
  • कंपोज़ किए गए मॉडिफ़ायर में इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
  • चुने गए आइटम के मेन्यू (Ief02b) में, 'सभी चुनें' विकल्प जोड़ा गया
  • DrawTransform.rotate को अपडेट किया गया है, ताकि यह दस्तावेज़ से मेल खाने के लिए, डिफ़ॉल्ट पिवट पैरामीटर के तौर पर सेंटर का इस्तेमाल कर सके.
    • DrawScope.rotateRad को अपडेट किया गया है, ताकि यह पिवट पॉइंट के लिए ऑफ़सेट का इस्तेमाल कर सके. इससे, यह ट्रांसफ़ॉर्मेशन के अन्य तरीकों से मैच हो पाएगा.
    • DrawScope.rotateRad के उस ओवरलोड को बंद कर दिया गया है जो पिवट के x और y कोऑर्डिनेट के लिए फ़्लोट का इस्तेमाल करता था.
    • (Iffcbb, b/170434992)

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

  • MissingGetterMatchingBuilder के लिए एपीआई लिंट चेक, androidx के लिए चालू है (I4bbea, b/138602561)
  • टेस्ट जोड़ें. (I6b8ae)
  • ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
  • KeyboardCapitalization IME विकल्प जोड़ा गया (I8ac38)
  • CoreTextField में एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया (I72e6d)
  • Move SimpleContainer into PopupTestUtils.kt (I65c3e)
  • Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि इसका इस्तेमाल पूरे Compose में कैसे किया जाता है. दस्तावेज़ को अपडेट किया गया है. इसमें बताया गया है कि नेगेटिव कॉर्नर रेडियस को शून्य पर सेट किया जाता है. (I130c7, b/168762961)
  • Android के साथ इंटरऑपरेबिलिटी को बेहतर बनाया गया है. इसके लिए, उन चाइल्ड Android व्यू को MotionEvents भेजना जारी रखा गया है जो ACTION_DOWN को छोड़कर, सभी कार्रवाइयों के लिए onTouchEvent के लिए फ़ॉल्स वैल्यू दिखाते हैं (I94c5a, b/170320973)
  • Box को इनलाइन फ़ंक्शन बनाया गया. (Ibce0c, b/155056091)

बाहरी योगदान

  • AnnotatedString.capitalize और AnnotatedString.decapitalize के लिए अलग-अलग स्थान-भाषाओं का इस्तेमाल किया जा सकता है (I4aa7f)

वर्शन 1.0.0-alpha05

14 अक्टूबर, 2020

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

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

  • इंस्पेक्टर की जानकारी देने के लिए डीएसएल जोड़ा गया (Ic9a22)
  • LongPress को Text में ले जाएं. (Iff2bc)
  • Experimental Modifier.pointerInput suspending input modifier (Ia77d2)
  • कॉपी/चिपकाने/कट करने की सुलभता से जुड़ी कार्रवाइयां जोड़ी गईं (I6db4f)
  • AndroidOwner के लिए सार्वजनिक कंस्ट्रक्टर हटा दिया गया (Iacaef)
  • पॉप-अप और डायलॉग अब पैरंट विंडो से FLAG_SECURE को इनहेरिट करते हैं. इसे साफ़ तौर पर कॉन्फ़िगर करने का विकल्प भी जोड़ा गया है (I64966, b/143778148, b/143778149)
  • अब खपत के डेटा में बदलाव किया जा सकता है. इसके अलावा, एक्सटेंशन फ़ंक्शन को कॉल करने पर, अब नया PointerInputChange नहीं मिलता है. हालांकि, इससे PointerInputChange में बदलाव होता है.

    यह दो चरणों वाली प्रोसेस का पहला चरण है. इसका मकसद PointerEvent डेटा को इस तरह से बदलना है कि उपयोगकर्ता के कोड से, अन्य पॉइंटर डेटा में बदलाव न किया जा सके. दूसरे चरण में, List<PointerInputChange> से PointerInputFilter.onPointerEvent(...) का रिटर्न टाइप हटाना होगा. (Id067e)

  • टेक्स्ट में चुनने की सुविधा और डेमो बंद करें. (Ie7e97)

  • GloballyPositioned को इनलाइन फ़ंक्शन बनाया गया (I15830)

  • OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है. साथ ही, onPositioned() का नाम बदलकर onGloballyPositioned() कर दिया गया है. (I587e8, b/169083903)

  • Owner में hasPendingMeasureOrLayout प्रॉपर्टी जोड़ी गई है. इससे यह पता चलता है कि Owner के पास लेआउट से जुड़ा कोई काम बाकी है या नहीं. (I3d9f8, b/169038599)

  • प्रोग्राम के हिसाब से फ़ोकस हटाने के लिए एपीआई जोड़ा गया (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...) को हटाया गया. इसकी जगह PointerInputFilter.onPointerEvent(...) का इस्तेमाल किया जाना चाहिए. (I6f04a)

  • साइज़ में बदलाव

    • Size.getFlipped को हटाया गया
    • Removed Size.rem
    • Size.truncDiv को हटाया गया (Ief44d, b/169790720)
  • इनलाइन क्लास के लिए, सेंटिनल वैल्यू को स्टैंडर्ड बनाने के लिए, Color.Unset का नाम बदलकर Color.Unspecified कर दिया गया है. ऐसा इसलिए किया गया है, ताकि यह अन्य इनलाइन क्लास (I97611, b/169797763) के साथ काम कर सके

  • TextOverflow.None को जोड़ा गया है. जब ओवरफ़्लो की वैल्यू None होती है, तब Text, ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने साइज़ की जानकारी देगा. (I175c9, b/158830170)

  • एपीआई में एक जैसा नाम रखने के लिए, AnnotatedString.Builder.addStringAnnotation में मौजूद स्कोप पैरामीटर का नाम बदलकर टैग कर दिया गया है. (I7c8cb)

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

  • LazyColumn/Row की स्क्रोलिंग परफ़ॉर्मेंस को बेहतर बनाया गया है. इसके लिए, हर स्क्रोल पर सबकंपोज़िशन में कम काम किया जाता है. Composition क्लास के लिए, नया hasInvalidations() तरीका जोड़ा गया है. Recomposer के hasPendingChanges() तरीके का नाम बदलकर hasInvalidations() कर दिया गया है (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Float.POSITIVE_INFINITY के बजाय, अपडेट किए गए Size.Unspecified पैरामीटर को Float.NaN पर सेट किया गया है. Painter को लागू करने के तरीके अपडेट किए गए हैं, ताकि Size.Unspecified के साथ-साथ, नॉन-फ़ाइनिट साइज़ की जांच की जा सके. (I95a7e)
  • कस्टम लेआउट में place() कॉल का क्रम अब बच्चों (Ibc9f6) के लिए ड्रॉइंग का क्रम तय करता है
  • सुलभता के लिए, AnnotatedString को SpannableString में बदलने की सुविधा जोड़ी गई. (Ief907)
  • Android की उन क्लास के लिए स्टब जोड़े गए हैं जो पुराने प्लैटफ़ॉर्म पर हैं, ताकि जब भी हो सके रिफ़्लेक्शन का इस्तेमाल न किया जाए. (Ia1790)
  • बग ठीक किया गया: अगर सॉफ़्टवेयर कीबोर्ड दिखने की वजह से ऐप्लिकेशन अनुवाद करता है, तो पॉइंटर इनपुट कोऑर्डिनेट गलत हो जाएंगे. (Ic4cec, b/163077821)

वर्शन 1.0.0-alpha04

1 अक्टूबर, 2020

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

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

  • OwnerScope जोड़ा गया है, ताकि लेआउट और ड्रॉइंग के ऑब्ज़र्वेशन स्कोप को इकट्ठा किया जा सके. ऐसा तब किया जाता है, जब वे अब मान्य नहीं रहते. (Ic4cf8)
  • कॉन्टेंट के लेआउट को फिर से मेज़र किए जाने और साइज़ में बदलाव होने पर, कॉलबैक पाने के लिए OnRemeasuredModifier और onSizeChanged() को जोड़ा गया है. (I657cf, b/154108792)
  • लंबे समय तक क्लिक करने की सिमैंटिक्स कार्रवाई जोड़ी गई (I6281b, b/156468846)
  • FocusManager को निजी के तौर पर सेट किया गया. (I7872f)
  • DrawModifier पर वैकल्पिक प्रॉपर्टी जोड़ने के बजाय, DrawCacheModifier को लागू करने के लिए अपडेट किया गया.

    अलग-अलग तरीकों के लिए दस्तावेज़ अपडेट किए गए (Ibd166)

  • ऑब्जेक्ट बनाने से बचने के लिए, TextRange को इनलाइन करें. (Id034b)

  • PlacementScope#parentWidth और PlacementScope#parentLayoutDirection को अब कस्टम लेआउट के प्लेसमेंट ब्लॉक से नहीं पढ़ा जा सकता. (Icc1ae, b/168295623)

  • सेमैंटिक्स प्रॉपर्टी में AccessibilityScrollState जोड़ें. (Ifeda9)

  • Modifier.drawWithCache को पेश किया गया है, ताकि एक ऐसा ड्राइंग ऑब्जेक्ट बनाया जा सके जो साइज़/स्टेट की जानकारी पर निर्भर रहने वाली डिपेंडेंसी को शर्तों के हिसाब से फिर से बनाता है (I376dc)

  • ParagraphConstraints को हटा दिया गया है. अब चौड़ाई को सीधे तौर पर पैराग्राफ़ में पास किया जाता है. (Ica712)

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

  • कई ग्राफ़िक्स एपीआई अपडेट किए गए
    • स्केल और रोटेशन ट्रांसफ़ॉर्मेशन एपीआई को अपडेट किया गया है. अब ये DrawScope और DrawTransform में x/y कोऑर्डिनेट के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट कोऑर्डिनेट को दिखाने के लिए एक ही ऑफ़सेट पैरामीटर का इस्तेमाल करेंगे
    • Rect.expandToInclude और Rect.join तरीके हटाए गए
    • दायरे के दस्तावेज़ को अपडेट किया गया है. इसमें अंडाकार के साथ-साथ दीर्घवृत्ताकार भी बताया गया है
    • दस्तावेज़ में यह जानकारी जोड़ी गई है कि इनलाइन रेडियस क्लास के लिए, पब्लिक कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसके बजाय, रेडियस ऑब्जेक्ट को उनके फ़ंक्शन कंस्ट्रक्टर के ज़रिए इंस्टैंटिएट किया जाना चाहिए
    • topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी करने के लिए, RoundRect API हटा दिए गए हैं
    • Rect.shift को Rect.translate के पक्ष में बंद कर दिया गया है
    • RoundRect.grow और Rect.shrink एपीआई हटा दिए गए हैं
    • RoundRect.outerRect का नाम बदलकर Rect.boundingRect कर दिया गया है
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीके हटाए गए
    • RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया है
    • RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया है
    • RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी के तौर पर बदला गया
    • RoundRect कंस्ट्रक्टर को अपडेट किया गया है, ताकि वह x/y रेडियस वैल्यू के लिए अलग-अलग पैरामीटर के बजाय, रेडियस प्रॉपर्टी का इस्तेमाल कर सके
    • ऐसे साइज़ एपीआई हटा दिए गए हैं जो यह मानते थे कि यह 0,0 पर मौजूद ऑरिजिन वाला रेक्टैंगल है
    • Radius में डिस्ट्रक्टिंग एपीआई जोड़ा गया
    • RoundRect एक्सटेंशन के कई फ़ंक्शन को प्रॉपर्टी के तौर पर माइग्रेट किया गया
    • (I8f5c7, b/168762961)
  • foundation.Box को बंद कर दिया गया है. इसके बजाय, कृपया foundation.layout.Box का इस्तेमाल करें. (Ie5950, b/167680279)
  • स्टैक का नाम बदलकर Box कर दिया गया है. compose.foundation.layout में मौजूद नए Box के लिए, पहले से मौजूद Box को बंद कर दिया जाएगा. नए बॉक्स का व्यवहार यह है कि जब इसमें एक से ज़्यादा चाइल्ड होते हैं, तो उन्हें एक के ऊपर एक रखा जाता है. यह पिछले बॉक्स से अलग है, जो कॉलम की तरह काम करता था. (I94893, b/167680279)
  • बॉक्स डेकोरेशन पैरामीटर का इस्तेमाल बंद कर दिया गया है. अगर आपको अपने बॉक्स में डेकोरेशन/पैडिंग करनी है, तो इसके बजाय मॉडिफ़ायर का इस्तेमाल करें (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • कई ग्राफ़िक्स एपीआई अपडेट किए गए
    • DrawScope API को स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीकों के साथ अपडेट किया गया है. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद इसे हटा दिया जाता है
    • clipPath से जुड़े दस्तावेज़ को अपडेट किया गया है, ताकि इसमें गोल किनारों वाले आयत के बजाय Path का रेफ़रंस दिया जा सके
    • clipPath में मौजूद right पैरामीटर के दस्तावेज़ में स्पेसिंग की समस्या ठीक की गई
    • DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
    • इनसेट तरीके में dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
    • चारों सीमाओं के लिए एक जैसी इनसेट वैल्यू देने वाला इनसेट ओवरलोड जोड़ा गया
    • इंसर्ट करने के तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इंसर्ट करने का तरीका चारों साइड पर लागू होगा
    • Rect क्लास के लिए दस्तावेज़ अपडेट किया गया
    • kdoc स्टाइल से मेल खाने के लिए, Rect पैरामीटर पर टिप्पणियां अपडेट की गईं
    • Rect.join और Rect.expandToInclude को हटाया गया
    • Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को बंद कर दिया गया
    • (If086a, b/167737376)
  • @VisibleForTesting के साथ एनोटेट किए गए rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को इंटरनल एपीआई बनाएं और उनके kdoc को छिपाएं (I554eb, b/168308412)
  • डिफ़ॉल्ट रूप से चुने गए आइटम को बंद करने और अनचाहे व्यवहार से बचने के लिए, SelectionContainer को सबसे ऊपर से हटाएं. इसके बजाय, SelectionContainer का इस्तेमाल करके, उस कॉन्टेंट को रैप किया जा सकता है जिसे चुना जाना है. (I8dfe0, b/158459594)

वर्शन 1.0.0-alpha03

16 सितंबर, 2020

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

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

  • आगे/पीछे स्क्रोल करने की सिमैंटिक कार्रवाइयों को हटाएं. AccessibilityRangeInfo में चरण जोड़े गए. (Ia47b0)
  • onInvalidate() को Owner से हटा दिया गया -- OwnedLayer अमान्य होने की स्थिति को मैनेज करता है. (Ica72b, b/162061312)
  • Size API से, ऑपरेटर के उन तरीकों को हटा दिया गया है जो ऑफ़सेट पैरामीटर का इस्तेमाल करते हैं. इन कार्रवाइयों के नतीजे साफ़ तौर पर नहीं दिखते. साथ ही, इनके नतीजे उम्मीद के मुताबिक नहीं होते. उदाहरण के लिए, क्या साइज़ - ऑफ़सेट से, अंतर के साथ ऑफ़सेट या साइज़ का नतीजा मिलना चाहिए?

    साथ ही, Size क्लास में बंद किए गए तरीकों को भी हटा दिया गया है. (Iec902, b/166514214)

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

  • LazyColumn के आइटम कभी-कभी गलत तरीके से ड्रॉ होते थे. इस समस्या को ठीक किया गया है. कुछ मामलों में, इसकी वजह से ऐप्लिकेशन क्रैश भी हो जाता था. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints और इसका इस्तेमाल करने वाले एपीआई अब काम नहीं करते. (I90cdb, b/167389835)
  • createAndroidComposeRule और AndroidInputDispatcher को androidx.ui.test.android से androidx.ui.test में ले जाया गया (Idef08, b/164060572)
  • लेआउट एपीआई में, ग्रेविटी के इस्तेमाल के नाम को लगातार बदलकर अलाइन या अलाइनमेंट किया गया. (I2421a, b/164077038)
  • ComposeTestRule पर addedOnNode और अन्य ग्लोबल तरीके जोड़े गए हैं, क्योंकि मौजूदा ग्लोबल तरीके बंद होने वाले हैं. (Ieae36)

वर्शन 1.0.0-alpha02

2 सितंबर, 2020

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

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

  • लेआउटनोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक हटाएं. (If654e, b/166106882)
  • वेक्टर ग्राफ़िक्स पाथ पर filltype पैरामीटर के लिए सहायता जोड़ी गई है, ताकि evenOdd या NonZero पाथ फ़िल करने के नियमों के मुताबिक आकृतियों के कटआउट बनाए जा सकें. (I43dd2)
  • अपटाइम और वेलोसिटी अब इनलाइन क्लास (I48f4a) हैं
  • Duration अब एक इनलाइन क्लास (I565eb) है
  • लेआउट नोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (Ic40b3)
  • उस समस्या को ठीक किया गया है जिसमें ऑफ़सेट और रेडियस के साथ Rect फ़ंक्शन कन्स्ट्रक्टर, Rect को बाएं, दाएं, ऊपर, नीचे के क्रम में बनाता था. हालांकि, इसे बाएं, ऊपर, दाएं, नीचे के क्रम में बनाना चाहिए.

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

    Rect.kt में मौजूद तरीकों की पुष्टि करने के लिए टेस्ट जोड़े गए (I08460, b/165822356)

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

  • बदले जा सकने वाले आयत MutableRect को जोड़ा गया है. (I71bd2, b/160140398)
  • Matrix4 को Matrix से बदल दिया गया है. vectormath पैकेज के अन्य सभी हिस्सों को हटा दिया गया है. (Ibd665, b/160140398)
  • कंपोज़ेबल फ़ंक्शन के लिए कॉलिंग कन्वेंशन बदल गया है. यह बाइनरी ब्रेकिंग चेंज है. Compose कंपाइलर प्लगिन के इस वर्शन के साथ काम करने के लिए, सभी लाइब्रेरी को फिर से कंपाइल करना होगा.

    इस बदलाव से, सोर्स लेवल पर कोई बड़ा बदलाव नहीं हुआ है. ऐसा इसलिए, क्योंकि सिर्फ़ कंपाइलर एपीआई में बदलाव किया गया है. साथ ही, इन एपीआई के लिए ऑप्ट इन करना ज़रूरी है. (I7afd2, b/158123185)

  • उस क्रैश को ठीक किया गया है जो तब हो सकता है, जब PointerInputFilter को डिसपैच करने से, PointerInputFilter को तुरंत हटाया जा सकता है. (I58f25)

वर्शन 1.0.0-alpha01

26 अगस्त, 2020

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

वर्शन 0.1.0-dev

वर्शन 0.1.0-dev17

19 अगस्त, 2020

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

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

  • emitView का अब इस्तेमाल नहीं किया जा सकता. अगर हो सके, तो Compose में व्यू दिखाने के लिए AndroidView का इस्तेमाल करें. ध्यान दें कि आने वाले समय में, व्यू और ViewGroup को सीधे तौर पर कंपोज़ करने की सुविधा काम नहीं करेगी. ऐसा तब तक होगा, जब तक ये कंपोज़िशन ट्री में लीफ़ नहीं बन जाते. ऐसा तब किया जा सकता है, जब AndroidView का इस्तेमाल किया जा रहा हो. (I29b1e, b/163871221)
  • FocusState2 अब काम नहीं करता है. इसे FocusState (Ia8b79, b/160822876, b/160923332) से बदल दिया गया है
  • AndroidView के बंद किए गए ओवरलोड हटा दिए गए हैं. (I946b9, b/163802393)
  • कस्टम इवेंट अब यह एलान कर सकते हैं कि उनके एक या उससे ज़्यादा सेटर को स्किप किया जा सकता है. साथ ही, उन्हें इवेंट से अलग करके फिर से कंपोज़ किया जा सकता है. (Ibbd13)
  • वेक्टर क्लास को अब डेटा क्लास नहीं माना जाएगा, क्योंकि कंपोज़िशन के लिए एक ही ऑब्जेक्ट इंस्टेंस का इस्तेमाल किया जाता है.

    VectorPainter के लिए mutableStateOf फ़्लैग जोड़ा गया है, ताकि वेक्टर के कॉन्टेंट में बदलाव होने पर, उसे फिर से ड्रा किया जा सके.

    VectorComponent इंस्टेंस को फिर से फ़ैक्टर किया गया है, ताकि यह VectorPainter का हिस्सा बन सके. ऐसा इसलिए किया गया है, क्योंकि इसे कंपोज़िशन में फिर से इस्तेमाल किया जाता है.

    GroupComponent और PathComponent को अपडेट किया गया है, ताकि उनके नाम वाले फ़ील्ड में बदलाव किया जा सके (Ieae45, b/151378808)

  • onChildPositioned और OnChildPositionedModifier को हटाया गया. डेवलपर को इसके बजाय, चाइल्ड लेआउट पर onPositioned और OnPositionedModifier का इस्तेमाल करना चाहिए. (I4522e, b/162109766)

  • ऑफ़सेट को अब इनलाइन क्लास (Iaec70) के तौर पर इस्तेमाल किया जाता है

  • SelectionContainer में मॉडिफ़ायर पैरामीटर जोड़ा गया (I4aada, b/161487952)

  • डेप्रिकेट किए गए FocusModifier को हटाया गया (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • mergePolicy लैंबडा को SemanticsPropertyKey में जोड़ा गया. इसका इस्तेमाल, mergeAllDescendants सिमैंटिक मर्जिंग के लिए कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के तहत, अगर पैरंट वैल्यू पहले से मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)

  • Constraints अब एक इनलाइन क्लास है (I88736)

  • FocusManager जोड़ा गया है. यह AndroidComposeView से फ़ोकस के सामान्य लॉजिक को हटाता है (I528ef, b/161487952, b/162206799)

  • ऐल्फ़ा वर्शन के लिए, PointerEventPass के नाम अपडेट किए गए. (Ifda6f)

  • IntOffset अब एक इनलाइन क्लास है (Iac0bf)

  • IntSize अब एक इनलाइन क्लास (I2bf42) है

  • PlacementScope.placeAbsolute() का नाम बदलकर PlacementScope.place() कर दिया गया है. साथ ही, PlacementScope.place() का नाम बदलकर PlacementScope.placeRelative() कर दिया गया है. इस वजह से, PlacementScope.place() तरीका अब दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में, अपने-आप स्थिति को मिरर नहीं करेगा. अगर आपको ऐसा करना है, तो इसके बजाय PlacementScope.placeRelative() का इस्तेमाल करें. (I873ac, b/162916675)

  • AlertDialog अब बटन के लिए FlowRow का इस्तेमाल करता है (I00ec1, b/161809319, b/143682374)

  • कुछ टेस्ट यूटिलिटी को गैर-सार्वजनिक बना दिया गया है, क्योंकि वे सही जगह पर नहीं हैं. इसे आने वाले समय में सार्वजनिक किया जाएगा. (I32ab1)

  • पॉइंटर इनपुट कोड को फिर से व्यवस्थित किया गया है. (Ie3f45)

  • Rect के पक्ष में PxBounds को बंद कर दिया गया है. PxBounds के सभी इस्तेमाल को rect से अपडेट किया गया है. साथ ही, माइग्रेशन में मदद करने के लिए, प्रॉपर डेप्रिकेट/रिप्लेस के साथ एनोटेशन जोड़े गए हैं. (I37038, b/162627058)

  • अब सेवा में नहीं है/अब काम नहीं करता KeyEvent2 को हटाया गया. इसके बजाय, KeyEvent का इस्तेमाल करें. (Ied2d0, b/162097587)

  • KeyEvent में एक यूनिकोड प्रॉपर्टी होती है. इसका इस्तेमाल, तय की गई कुंजी और मेटा कुंजी की स्थिति के कॉम्बिनेशन (If3afc) से जनरेट किए गए यूनिकोड वर्ण को पाने के लिए किया जा सकता है

  • DelayUp कस्टम इवेंट और उससे जुड़ी क्लास को ऑप्ट इन एपीआई बनाया गया है, क्योंकि इसमें बदलाव होने की संभावना है. (I56d6f)

  • अब ज़रूरी नहीं हैं, इसलिए दो PointerEventPasses हटा दिए गए हैं. (I3dd9d)

  • Paragraph.paint में पैरामीटर color, shadow, और TextDecoration जोड़ें. यह फ़ंक्शन, Paragraph को बेवजह फिर से बनाने से बचने के लिए काम का है. (I81689)

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

  • TextField से onFocusChanged कॉलबैक हटा दिए गए हैं. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
  • Modifier.drawBorder का इस्तेमाल बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border डेटा क्लास को BorderStroke (I4257d, b/158160576) से बदल दिया गया है
  • FrameManager के उन कॉल को हटा दिया गया है जो अब इस्तेमाल में नहीं हैं.

    इंटरनल कंपोज़ एपीआई में बदलाव किया गया है, ताकि mutableStateof() (I80ba6) जैसे स्टेट ऑब्जेक्ट को ट्रैक करने के लिए, ओवरहेड की मात्रा को कम किया जा सके

  • VerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करें (I73b0d, b/163019183)

  • ऐसी समस्या को ठीक किया गया है जिसमें for लूप के अंदर, स्थिति को सेव करने वाली किसी चीज़ का इस्तेमाल करने पर ऐप्लिकेशन क्रैश हो जाता था. अब savedInstanceState() में एक ही कुंजी का इस्तेमाल किया जा सकता है. UiSavedStateRegistry का एपीआई, अब इस नई ज़रूरत के हिसाब से काम करेगा (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • state { ... } कंपोज़ेबल को अब बंद कर दिया गया है. इसके बजाय, remember { mutableStateOf(...) } को साफ़ तौर पर कॉल करने की सुविधा उपलब्ध है. इससे स्टेट मैनेजमेंट के लिए, एपीआई की कुल सतह और कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी डेलिगेशन के लिए by mutableStateOf() पैटर्न से मेल खाता है. (Ia5727)

  • Compose के नाम रखने के पैटर्न के हिसाब से, RRect का नाम बदलकर RoundRect कर दिया गया है RRect के लिए, मिलते-जुलते फ़ंक्शन कंस्ट्रक्टर बनाए गए हैं RRect फ़ंक्शन कंस्ट्रक्टर (I5d325) को बंद कर दिया गया है

वर्शन 0.1.0-dev16

5 अगस्त, 2020

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

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

  • OnChildPositioned को बंद कर दिया गया है. इसके बजाय, चाइल्ड पर OnPositioned का इस्तेमाल करें. (I87f95, b/162109766)
  • setViewContent को बंद कर दिया गया है. इसके बजाय, setContent का इस्तेमाल किया जाना चाहिए. (I7e497, b/160335130)
  • ViewBinding के आधार पर, लेआउट रिसॉर्स को बढ़ाने और कंपोज़ करने के लिए, AndroidViewBinding API जोड़ा गया. (I081c6)
  • KeyEvent2 को KeyEvent से बदल दिया गया है (I2d770, b/162097585)
  • वैकल्पिक हार्डवेयर कुंजी (I9036b) के लिए सहायता जोड़ी गई
  • FocusManager का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus(), Modifier.focusObserver(), और Modifier.focusRequester() का इस्तेमाल करें. (I74ae4, b/162211322)
  • loadVectorResource, trimPath एट्रिब्यूट (I808fe) के साथ काम करता है
  • डायलॉग को यूज़र इंटरफ़ेस (यूआई) (I47fa6) पर ले जाएं
  • अब ज़रूरी नहीं हैं, इसलिए दो PointerEventPasses हटा दिए गए हैं. (I33ca7)
  • PointerInteropModifier लागू किया गया है. इससे MotionEvents पाने और Compose के साथ इंटरैक्ट करने की सुविधा मिलती है. ऐसा तब होता है, जब Android View लागू किया गया हो. (Ieb08c)
  • अब इस्तेमाल में नहीं आने वाले टैग मॉडिफ़ायर को हटा दिया गया है. इसके बजाय, कृपया layoutId का इस्तेमाल करें. (Idaa05, b/162023919)
  • दाएं से बाएं लिखने की सुविधा के लिए, एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient को जोड़ा गया है. इसका इस्तेमाल लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)
  • वेक्टर ग्राफ़िक में पाथ ट्रिमिंग की सुविधा जोड़ी गई (Ie16c9, b/158188351)
  • Modifier.layout() जोड़ा गया. इससे कस्टम लेआउट मॉडिफ़ायर आसानी से बनाया जा सकता है (I73b69, b/161355194)
  • नया AndroidView API जोड़ा गया है और मौजूदा एपीआई को बंद कर दिया गया है. (I5bcfd)
  • Modifier.plus अब काम नहीं करता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से क्रम का पता चलता है. साथ ही, इसमें Modifier.padding().background() + anotherModifier टाइप करने की अनुमति नहीं है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)
  • व्यू हैरारकी में Compose कॉन्टेंट को होस्ट करने के लिए, [Abstract]ComposeView की व्यू सबक्लास जोड़ें. (I46357)
  • Row और Column अब इनलाइन फ़ंक्शन हैं. इससे, इनका इस्तेमाल करने में होने वाला ओवरहेड काफ़ी कम हो गया है. (I75c10)
  • SubcomposeLayout को जोड़ा गया है. यह एक लो लेवल प्रिमिटिव है. इसकी मदद से, मेज़रमेंट के दौरान चाइल्ड कॉम्पोनेंट बनाए जा सकते हैं. ऐसा तब किया जाता है, जब हमें सबट्री कंपोज़िशन के लिए, मेज़रमेंट के दौरान बाद में उपलब्ध होने वाली कुछ वैल्यू का इस्तेमाल करना हो. उदाहरण के लिए, WithConstraints को SubcomposeLayout का इस्तेमाल करके लागू नहीं किया जाता. (I25cc8)
  • Compose हैरारकी (Icdf26, b/161336532) के रूट के हिसाब से, SemanticsNode की पोज़िशन पाने के लिए SemanticsNode.positionInRoot को जोड़ा गया
  • MotionEvent को Android से Compose और फिर वापस Android में पास किया गया. (I14be8, b/158034713)
  • dropdownPopup को हटा दिया गया है. (I00430)
  • कट-आउट डिसप्ले पर पॉप-अप की जगह तय की गई है. (Idd7dd)
  • TextLayoutResult (I9d6e6) पाने के लिए, सुलभता से जुड़ी कार्रवाई जोड़ें
  • RemeasurementModifier जोड़ा गया. इससे लेआउट को एक साथ फिर से मेज़र किया जा सकता है. आम तौर पर, इसकी ज़रूरत नहीं होती, क्योंकि रीमेज़र/रीलेआउट अपने-आप होता है. हालांकि, हम इसका इस्तेमाल स्क्रोल के दौरान LazyColumnItems में करते हैं. (I5f331, b/160791058)
  • getLineEllipsisOffset/getLineEllipsisCount को हटाएं. इसके बजाय, getLineVisibleEnd/getLineEnd/isLineEllipsized का इस्तेमाल करें. (I85aa2)
  • सबसे सही तरीके से काम करने के लिए, कुछ मार्क/एनोटेशन जोड़ें. (I66b20)
  • TextLayoutResult में ज़्यादा लाइन एपीआई उपलब्ध कराता है. (I79bd2)
  • बिल्ट-इन यूनिट को बदलने के लिए, बिल्ट-इन वेक्टर कन्वर्टर अब Foo.VectorConverter के ज़रिए ऐक्सेस किए जा सकते हैं. उदाहरण के लिए, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter वगैरह (I3e273)

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

  • एपीआई से जुड़ी कई समस्याओं को ठीक किया गया (I077bc)
    1. इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाएं
    2. Offset और IntOffset क्लास को अलाइन किया गया है, ताकि एपीआई का एक जैसा इंटरफ़ेस हो
    3. Offset API के साथ एक जैसा रखने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero कर दिया गया है
    4. nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है, ताकि उपभोक्ता अपने Canvas इंस्टेंस बना सकें
    5. DrawScope को रिफ़ैक्टर करने के लिए, EmptyCanvas क्लास बनाई गई है, ताकि इसे lateinit के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
    6. ClipOp enum के नाम बदलकर, उन्हें पास्कल केस में बदला गया
    7. FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
    8. StrokeJoin enum का नाम बदलकर, पास्कल केस में रखा गया
    9. PointMode enum के नाम बदलकर, पास्कल केस कर दिए गए हैं
    10. PaintingStyle एनम का नाम बदलकर, पास्कल केस कर दिया गया है
    11. PathFillType enum का नाम बदलकर Pascal Case कर दिया गया है
    12. StrokeCap enums का नाम बदलकर पास्कल केस कर दिया गया है
    13. DrawCache को लागू करने के तरीके को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
    14. DrawScope को अपडेट किया गया है. अब यह fillPaint और strokePaint इंटरनल पैरामीटर के लिए, लेज़ी डेलिगेशन का इस्तेमाल नहीं करेगा
    15. इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न किया जा सके
    16. आउटलाइन क्लास को अपडेट किया गया है, ताकि उसमें @Immutable एनोटेशन शामिल किए जा सकें
    17. हर पाथ के निर्देश के लिए @Immutable एनोटेशन पाने के लिए, PathNode को अपडेट किया गया
    18. वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए गैर-ज़रूरी शर्तों की जांच को हटाया जा सके. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही इन्हें हैंडल करता है
    19. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद किया गया
    20. @Immutable और @Stable एपीआई के साथ अपडेट की गई ब्रशिंग क्लास और फ़ंक्शन कंस्ट्रक्टर
    21. VertexMode enum को PascalCase में अपडेट किया गया
    22. DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि पेंट पर स्ट्रोक पैरामीटर को शर्तों के आधार पर बदला जा सके. ऐसा तब किया जाएगा, जब वे बदल गए हों
    23. साइज़ को अपडेट किया गया है, ताकि इसमें डिस्ट्रक्चरिंग एपीआई जोड़ा जा सके. साथ ही, UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया है और इस्तेमाल न किए गए तरीकों को हटा दिया गया है
  • API लेवल के आधार पर, Android फ़्रेमवर्क के BlendModes और PorterDuff मोड के बीच सही तरीके से मैप करने के लिए, कंपोज़ के BlendMode API के इस्तेमाल को अपडेट किया गया है. BlendMode#isSupported API को पेश किया गया है. यह एक क्षमता क्वेरी के तौर पर काम करता है. इससे यह तय किया जा सकता है कि BlendMode का इस्तेमाल करने से पहले, यह डिवाइस पर काम करता है या नहीं. (I0ef42)
  • LazyItemScope को Lazy लिस्ट के itemContent पैरामीटर के लिए जोड़ा गया. यह पैरंट के ज़्यादा से ज़्यादा साइज़ को भरने के लिए मॉडिफ़ायर उपलब्ध कराता है. इससे उस समस्या को हल किया जा सकता है जब आइटम को व्यूपोर्ट को भरना चाहिए और रेगुलर Modifier.fillMaxSize() काम नहीं करता है, क्योंकि आइटम को इनफ़िनिटी कंस्ट्रेंट के साथ मेज़र किया जाता है. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture को हटाया गया. इसके बजाय, SemanticsNodeInteraction.performGesture का इस्तेमाल करें. (Id9b62)
  • LazyColumnItems का नाम बदलकर LazyColumnFor कर दिया गया है. LazyRowItems का नाम बदलकर LazyRowFor (I84f84) कर दिया गया है
  • foundation.shape.corner पैकेज को foundation.share में बदल दिया गया (I46491, b/161887429)
  • AndroidComposeTestRule का नाम बदलकर createAndroidComposeRule कर दिया गया है. (I70aaf)
  • TextLayoutResult में ज़्यादा एपीआई जोड़े गए. (Id7e04)
  • Material FilledTextField का नाम बदलकर TextField और foundational TextField का नाम बदलकर BaseTextField कर दिया गया है. इससे, सबसे आसान एपीआई को ढूंढना और इस्तेमाल करना आसान हो जाएगा (Ia6242, b/155482676)
  • Modifier.drawBackground का नाम बदलकर Modifier.background कर दिया गया है (I13677)

वर्शन 0.1.0-dev15

22 जुलाई, 2020

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

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

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

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

  • FocusModifier को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus, Modifier.focusRequester, और Modifier.focusObserver का इस्तेमाल करें. FocusState और FocusDetailedState को अब इस्तेमाल नहीं किया जा सकता. इनके बजाय, FocusState2 का इस्तेमाल करें (I46919, b/160822875, b/160922136)
  • फ़ोकस की स्थिति में बदलाव को देखने के लिए, एक मॉडिफ़ायर जोड़ा गया. (I05866, b/160924455, b/160923326)
  • फ़ोकस में बदलाव करने का अनुरोध करने के लिए, एक मॉडिफ़ायर जोड़ा गया (I8dd73, b/161182057, b/160924778)
  • टूलबार मेन्यू को इस तरह से अडजस्ट करें कि कॉपी, कट, और चिपकाने के विकल्प ठीक से दिखें. (Id3955)
  • सिंगल-वैल्यू सिमैंटिक्स प्रॉपर्टी अब कॉलिंग स्टाइल का इस्तेमाल करती हैं. उदाहरण के लिए, 'semantics { hidden = true }' को अब इस तरह लिखा जाता है: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Modifier.focus जोड़ा गया है. यह FocusModifier की जगह लेता है. (Ib852a, b/160924778)
  • TextField में टेक्स्ट चुनने के लिए, FloatingToolbar जोड़ा गया. (Ie8b07)
  • कीबोर्ड से इनपुट देने से जुड़े एपीआई (I53c0a) के लिए, एक्सपेरिमेंटल एपीआई एनोटेशन जोड़ा गया
  • फ़ोकस से जुड़े सभी एपीआई के लिए, एक्सपेरिमेंटल एपीआई एनोटेशन जोड़ा गया (I53b24, b/160903352)
  • FocusState2 जोड़ा गया है. यह FocusDetailedState की जगह लेगा (I0a3ba, b/160822595)
  • ExperimentalFocus जोड़ा गया है. यह Focus API के लिए @OptIn एनोटेशन है. (I1544b, b/160820961)
  • IntBounds यूनिट क्लास जोड़ी गई है. यह लेआउट से पूर्णांक पिक्सल की सीमा दिखाती है. PopupPositionProvider के एपीआई को अपडेट कर दिया गया है, ताकि इसका इस्तेमाल किया जा सके. (I0d8d0, b/159596546)
  • ऐप्लिकेशन को अब कंपोज़िशन (Ibe697) को हटाने के लिए, clear() तरीके की ज़रूरत होती है
  • KeyEvent अब काम नहीं करता. इसे KeyEvent2 (I68730) से बदल दिया गया है
  • टेस्ट फ़ाइंडर में, useUnmergedTree नाम का एक नया वैकल्पिक फ़्लैग जोड़ा गया है. (I2ce48)
  • LayoutNode के एक्सपेरिमेंटल एपीआई (I4f2e9) को बनाया गया
  • अलग-अलग तरह की इनलाइन क्लास में कॉपी करने के तरीके जोड़े गए हैं. इनमें ये शामिल हैं:

    • ऑफ़सेट
    • साइज़
    • दायरा
    • मोशन
    • TransformOrigin

    • Size.copy कंपैनियन ऑब्जेक्ट के तरीके को बंद कर दिया गया है इंस्टेंस कॉपी करने के तरीके का इस्तेमाल करें (Ife290, b/159905651)

  • पॉप-अप, डायलॉग, और मेन्यू अब कॉन्टेक्स्ट के हिसाब से MaterialTheme का इस्तेमाल कर रहे हैं (Ia3665, b/156527485)

  • TextDirection का नाम बदलकर ResolvedTextDirection (I3ff38) कर दिया गया है

  • Layout() फ़ंक्शन के मेज़र ब्लॉक से, लेआउट की दिशा तय करने वाला पैरामीटर हटा दिया गया है. हालांकि, लेआउट की दिशा को मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए, कॉलबैक में ऐक्सेस किया जा सकता है

  • दोबारा इस्तेमाल करने के लिए, SelectionHandles को रिफ़ैक्टर करें. (I420e0)

  • क्लिक करने की सुविधा हटा दी गई है. Modifier.clickable (I84bdf) का इस्तेमाल करें

  • TestTag और Semantics को मिटा दिया गया है. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)

  • इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कंस्ट्रक्टर को कॉल किया जाता था, तो कंपोज़ कंपाइलर प्लगिन उसे इंटरसेप्ट कर लेता था. ऐसा तब होता था, जब (I5205a, b/158123804) मौजूद होता था

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

  • Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की इंट पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)

  • AndroidView कंपोज़ेबल में मॉडिफ़ायर पैरामीटर जोड़ा गया. (I48a88, b/158746303)

  • Semantics() अब काम नहीं करता. इसके बजाय, Modifier.semantics() का इस्तेमाल करें. (I72407, b/158841414)

  • viewModel() कंपोज़ेबल जोड़ा गया है. इसकी मदद से, पहले से बनाए गए ViewModel को बनाया या पाया जा सकता है. यह ठीक उसी तरह काम करता है जिस तरह Activity या Fragment में काम करता है (I5fdd1)

  • IntPx के बजाय Int का इस्तेमाल किया गया. IntPxPosition के बजाय IntOffset का इस्तेमाल किया गया. IntPxSize को IntSize से बदला गया. (Ib7b44)

  • साइज़ की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxSize के बजाय Size क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. इससे दो फ़्लोट वैल्यू को एक साथ पैक करने में मदद मिलती है, ताकि चौड़ाई और ऊंचाई को फ़्लोट के तौर पर दिखाया जा सके. (Ic0191)

  • पोजीशनिंग की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. साथ ही, x और y ऑफ़सेट को दिखाने के लिए, दो फ़्लोट वैल्यू को पैक करने के लिए एक लॉन्ग का इस्तेमाल किया जा सकता है. (I3ad98)

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

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

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

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

  • TestTag अब काम नहीं करता. इसके बजाय, Modifier.testTag का इस्तेमाल करें. (If5110, b/157173105)

  • ParentDataModifier#modifyParentData के डिफ़ॉल्ट, नो-ऑप, इंप्लिमेंटेशन को हटा दिया गया है. यह इंटरफ़ेस को पहली बार में इंप्लिमेंट न करने के बराबर था. (I0deaa)

  • पहले से बंद की जा चुकी ScaleFit को हटा दिया गया है. इसके बजाय, ContentScale का इस्तेमाल करें. (Ifbc5b)

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

  • ui-material में DropdownMenu कॉम्पोनेंट जोड़ा गया है. यह कॉम्पोनेंट, मटीरियल डिज़ाइन मेन्यू को लागू करता है. (I9bb3d)

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

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

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

  • CanvasScope को लागू करने के तरीके को बेहतर बनाया गया है. अब सिर्फ़ DrawScope और ContentDrawScope उपलब्ध हैं. CanvasScope का नाम बदलकर DrawScope कर दिया गया है. Density इंटरफ़ेस को लागू करने के लिए, DrawScope को अपडेट किया गया है. साथ ही, LayoutDirection उपलब्ध कराया गया है ContentDrawScope में DrawScope की सबक्लास को मिटाया गया है Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब RTL प्रॉपर्टी को खुद से बनाए न रखें, क्योंकि DrawScope इसे मैन्युअल तरीके से उपलब्ध कराए बिना ही उपलब्ध कराता है (I1798e)

  • DoubleTapGestureFilter अब पूरे ट्री में SingleTapGestureFilter के बीच अंतर करता है. (If92b1)

  • Alignment API को अपडेट किया गया है. साथ ही, इसमें ऐब्सलूट अलाइनमेंट के लिए सहायता जोड़ी गई है. यह आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता (I38cd3)

  • DrawLayer मॉडिफ़ायर एपीआई में बदलाव किया गया है: outlineShape का नाम बदलकर shape कर दिया गया है. इसकी डिफ़ॉल्ट वैल्यू RectangleShape है और अब इसे शून्य पर सेट नहीं किया जा सकता; clipToOutline का नाम बदलकर clip कर दिया गया है; clipToBounds को हटा दिया गया है, क्योंकि यह RectangleShape के साथ clip == true के बराबर है (I7ef11, b/155075735)

  • ज़्यादा लेवल के Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय दिखाते हैं. इससे उपभोक्ताओं को अपने Paint ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी Canvas का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, Canvas के साथ ड्राइंग के निर्देश जारी करने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)

  • WithConstraints ट्रेलिंग लैम्ब्डा एपीआई में बदलाव किया गया है. अब इसमें दो पैरामीटर के बजाय, रिसीवर स्कोप है. यह कंस्ट्रेंट और layoutDirection के साथ-साथ, Dp में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी भी उपलब्ध कराता है (I91b9a, b/149979702)

  • LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया है. (Id29f3)

  • LayoutModifier इंटरफ़ेस को हटाया गया, जो अब इस्तेमाल में नहीं है. (I2a9d6)

  • Layout और LayoutModifier2 में मौजूद इंट्रिंसिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिंसिक क्वेरी एपीआई को लेआउट की दिशा के बारे में जानकारी देता है. (Id9945)

  • Layout और LayoutModifier के चाइल्ड को, लेआउट की अलग दिशा के हिसाब से मेज़र किया जा सकता है. (Ibd731)

  • एक ही पैरंट लेआउट में मौजूद चाइल्ड के ड्रॉइंग ऑर्डर को कंट्रोल करने के लिए, नया Modifier.zIndex() जोड़ा गया है. DrawLayerModifier पर मौजूद एलिवेशन प्रॉपर्टी का नाम बदलकर shadowElevation कर दिया गया है. अब यह ड्रॉइंग ऑर्डर को कंट्रोल नहीं करती है. DrawShadow के पैरामीटर का क्रम बदल गया है: एलिवेशन अब पहला पैरामीटर है और शेप दूसरा पैरामीटर है. इसका डिफ़ॉल्ट मान RectangleShape है. (I20150, b/152417501)

  • Owner में से onSizeChange और onPositionChange को हटाया गया. (I5c718)

  • Constraints2 जोड़ा गया है. यह Constraints की कॉपी है. यह IntPx के बजाय सिर्फ़ Int connstraints वैल्यू के साथ काम करता है. IntPx को हटा दिया जाएगा और सभी पूर्णांक की सीमाओं को Android की तरह पिक्सल मान लिया जाएगा.

    • IntSize को भी जोड़ा गया है. यह आने वाले समय में IntPxSize की जगह ले लेगा. (I4b43a)
  • एलाइनमेंट को किसी भी वैल्यू के साथ इंस्टैंटिएट किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)

  • alignToSiblings अब Placeable के बजाय Measured को स्वीकार करता है. (I5788d)

  • (I45f09, b/152842521)

    • ScaleFit का नाम बदलकर ContentScale कर दिया गया है
    • ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में रहे.
    • FillMaxDimension का नाम बदलकर Crop कर दिया गया है
    • FillMinDimension का नाम बदलकर Fit कर दिया गया है
    • Fit का नाम बदलकर Inside कर दिया गया है, ताकि यह ज़्यादा सटीक हो
    • ImageView.ScaleType के बराबर
    • दस्तावेज़ जोड़ा गया है. इसमें बताया गया है कि Crop और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_CROP के जैसा ही नतीजा देता है. साथ ही, Fit और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.FIT_CENTER के जैसा ही नतीजा देता है. इसके अलावा, Inside और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_INSIDE के जैसा ही नतीजा देता है
  • ड्रॉ मॉडिफ़ायर के लिए, दाएं से बाएं लिखे जाने वाली भाषाओं के साथ काम करने की सुविधा. (I0aaf9)

  • Android व्यू को एक्सएमएल से बड़ा करने के लिए एपीआई रिलीज़ किया गया. ज़्यादा जानकारी के लिए, ViewInCompose डेमो देखें. (I42916)

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

    • draw() के लिए रिसीवर स्कोप को ContentDrawScope बनाया गया
    • draw() पर मौजूद सभी पैरामीटर हटा दिए गए हैं
    • DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
    • ContentDrawScope में drawContent() तरीका होता है (Ibaced, b/152919067)
  • LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)

  • DrawLayerModifier और drawLayer() अब clipToBounds और clipToOutline को डिफ़ॉल्ट रूप से फ़ॉल्स पर सेट करते हैं. (I0eb8b, b/152810850)

  • LayoutResult का नाम बदलकर MeasureResult कर दिया गया है. (Id8c68)

  • लेआउट मॉडिफ़ायर तय करने के लिए, LayoutModifier2 नाम का नया एपीआई जोड़ा गया; LayoutModifier (If32ac) अब काम नहीं करता

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

  • translationX/Y प्रॉपर्टी जोड़ी गई हैं. इनकी मदद से, किसी लेयर के लिए ड्रॉइंग कमांड की डिसप्ले लिस्ट को ऑफ़सेट किया जा सकता है. यह सुविधा, ऐनिमेशन या टच इवेंट के जवाब में कॉन्टेंट को मूव करने के लिए काम की है. (I8641c)

  • लेयर एपीआई में pivotX और pivotY पैरामीटर जोड़े गए हैं, ताकि लेयर पर किसी खास पॉइंट के आस-पास रोटेशन और स्केलिंग की जा सके (Icf7c3)

  • OnPositioned और OnChildPositioned कंपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)

  • LayerModifier जोड़ा गया है. यह एक ऐसा मॉडिफ़ायर है जिसकी मदद से, लेआउट के लिए RenderNode जोड़ा जा सकता है. इससे क्लिपिंग, ओपैसिटी, रोटेशन, स्केलिंग, और शैडो सेट की जा सकती हैं. यह RepaintBoundary की जगह लेगा. (I7100d, b/150774014)

  • लेआउट की दिशा को पैरंट लेआउट नोड से चाइल्ड नोड तक ले जाने की सुविधा जोड़ी गई. लेआउट की दिशा बदलने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)

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

  • Compose लेआउट में RTL के लिए शुरुआती सहायता (Ia5519)

  • Density और DensityScope को एक ही इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय सिर्फ़ with(density) (I11cb1)

  • LayoutCoordinates में बदलाव किया गया है, ताकि providedAlignmentLines को Map के बजाय Set बनाया जा सके. साथ ही, LayoutCoordinates में वैल्यू वापस पाने के लिए, get() ऑपरेटर को लागू किया जा सके. इससे मॉडिफ़ायर के लिए, हर मॉडिफ़ायर के लिए नया कलेक्शन बनाए बिना, सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. (I0245a)

  • LayoutCoordinates में अब position प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के लिए, position प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. इसके बजाय, डेवलपर को parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए, ताकि एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म की गणना की जा सके.

    LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए, लेआउट में पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, लेआउट के सभी साइज़ में पूर्णांक का इस्तेमाल किया जाना चाहिए, न कि फ़्लोटिंग पॉइंट वैल्यू का. (I9367b)

  • पाबंदियों (I0fd15) के एपीआई सरफ़ेस में सुधार किए गए हैं

  • CanvasScope API बनाया गया है. यह Canvas ऑब्जेक्ट को रैप करता है, ताकि बिना किसी स्टेटस के, डिक्लेरेटिव ड्राइंग एपीआई की सुविधा उपलब्ध कराई जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर स्कोप में शामिल होते हैं. साथ ही, साइज़िंग की जानकारी भी, उससे जुड़े इंसर्ट बाउंड्री के हिसाब से तय होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, Paint के अपने स्टेट ऑब्जेक्ट को बनाए रखने की ज़रूरत नहीं होती.

    • CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि उसमें डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके
  • इस्तेमाल नहीं किए जा रहे MaskFilter API को हटा दिया गया है. ऐसा इसलिए किया गया है, क्योंकि इसका इस्तेमाल सीमित है और ज़्यादातर इस्तेमाल के मामलों में, यह हार्डवेयर ऐक्सेलरेट के लिए ऑप्टिमाइज़ नहीं किया गया है (I54f76)

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

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

  • ImagePainter में एक और वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि इमेजसेट के किसी सबसेट को ड्रा किया जा सके (I0ea9e)

  • 'सेट नहीं है' रंग जोड़ा गया है, ताकि रंगों को बॉक्स में रखे बिना, सेट नहीं की गई वैल्यू को दिखाया जा सके. (If901a)

  • ट्रांसफ़ॉर्मेशन के लिए, वैकल्पिक पिवट कोऑर्डिनेट का इस्तेमाल करने के लिए, Canvas.rotate और Canvas.scale एक्सटेंशन के तरीके जोड़े गए. ये डिफ़ॉल्ट रूप से, कैनवस पर मौजूद कॉन्टेंट के अनुवाद के सबसे ऊपर बाएं कोने में दिखते हैं.

    Canvas.rotateRad को भी एक एक्सटेंशन मेथड के तौर पर ले जाया गया है, ताकि यह एक जैसा रहे (Ibaca6)

  • PixelMap API बनाया गया है, ताकि ImageAsset से पिक्सल की जानकारी क्वेरी की जा सके. (I69ad6)

  • compose और Android फ़्रेमवर्क एपीआई के बीच ऑब्जेक्ट कन्वर्ज़न के लिए, नाम रखने के तरीके से मेल खाने के लिए, इनका नाम बदलकर toFrameworkRect/toFrameworkRectF से toAndroidRect/toAndroidRectF कर दिया गया है. इन एपीआई के दस्तावेज़ भी अपडेट किए गए हैं (I86337)

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

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

  • Image का नाम बदलकर ImageAsset कर दिया गया है, ताकि इमेज डेटा और लेआउट में हिस्सा लेने और कॉन्टेंट बनाने के लिए इस्तेमाल किए जाने वाले आने वाले Image कंपोज़ेबल के बीच अंतर को बेहतर तरीके से समझा जा सके. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework (Id5bbd)

  • TextDirection.Content जोड़ा गया (I48f36)

  • TextDecoration.plus ऑपरेटर जोड़ा गया (I0ad1a)

  • Force को TextDirectionAlgorithm enum वैल्यू (Icc944) से हटा दिया गया है

  • TextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)

  • यह LongPressAndDrag को TextField Selection के लिए लागू करता है. (I17919)

  • AnnotatedString.getStringAnnotations जोड़ा गया है. यह रेंज में मौजूद सभी एनोटेशन दिखाता है. (I1fa00)

  • Locale और LocaleList के लिए पैकेज का नाम, androidx.ui.text से बदलकर androidx.ui.intl कर दिया गया है (I8132c)

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

  • एपीआई में बदलाव: AnnotatedString(builder: Builder) का नाम बदलकर annotatedString(builder: Builder) कर दिया गया है. (Ia6377)

  • एपीआई में बदलाव: AnnotatedString.Item का नाम बदलकर AnnotatedString.Range कर दिया गया है. (I2d44d)

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

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

  • (Text/Paragraph/Span)Style के लिए प्लस ऑपरेटर जोड़ा गया है. यह merge() फ़ंक्शन को डेलिगेट करता है. (Ia1add)

  • FontWeight.lerp अब स्नैप नहीं करता. यह अब भी एक डेटा क्लास है. (I521c2)

  • FontWeight कंस्ट्रक्टर अब सार्वजनिक है. यह अब डेटा क्लास नहीं है. (Id6b1f)

  • TextLayoutResult में getLineStart, getLineEnd, getEllipsisOffset, और getEllipsisCount जोड़ें (Ibc801)

  • ui-text मॉड्यूल का नाम बदलकर ui-text-core कर दिया गया है (I57dec)

  • इस्तेमाल नहीं की गई साइज़ क्लास को हटा दिया गया है, क्योंकि ui-geometry मॉड्यूल में डुप्लीकेट साइज़ क्लास मौजूद है. (I1b602)

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

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

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

  • टेक्स्ट फ़ील्ड में onFocusChange कॉलबैक का नाम बदलकर onFocusChanged कर दिया गया है (Ida4a1)
  • VerticalScroller और HoriziontalScroller को बंद कर दिया गया है. Column/Row के व्यवहार और पैरामीटर के साथ-साथ Modifier के साथ बिल्ड-इन अनुभव के लिए, ScrollableColumn और ScrollableRow का इस्तेमाल करें. इसके अलावा, अपने एलिमेंट पर Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करें. इसी तरह, ScrollerPosition को ScrollState' के पक्ष में बंद कर दिया गया है (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose का नाम बदलकर runOnIdle कर दिया गया (I83607)
  • टेस्टिंग के कई एपीआई के नाम बदलकर ज़्यादा आसान कर दिए गए हैं. findXYZ एपीआई के नाम बदलकर onNodeXYZ कर दिए गए हैं. doXYZ नाम वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
  • अब Compose यूज़र इंटरफ़ेस (यूआई) को ViewGroups में कंपोज़ किया जा सकता है. इसके लिए, नई कंपोज़िशन की ज़रूरत नहीं होती. उदाहरण के लिए, ViewInteropDemo देखें. (I9ab0b, b/160455080)
  • MutableVector में sortWith और removeRange जोड़े गए (Icccf7)
  • TextField के लिए, चुने गए टेक्स्ट में बदलाव करने के लिए, ड्रैग सिलेक्शन हैंडल लागू करें. (I27032)
  • Shader इनलाइन क्लास को हटा दिया गया है. यह NativeShader expect क्लास को रैप करता था. NativeShader का नाम बदलकर Shader कर दिया गया है. रैप की गई Shader इनलाइन क्लास ने एपीआई सरफेस में कोई काम की चीज़ नहीं जोड़ी. साथ ही, यह एक इनलाइन क्लास थी. इसलिए, NativeShader क्लास का सीधे तौर पर इस्तेमाल करें. (I25e4d)
  • PainterModifier को फिर से फ़ैक्टर किया गया है, ताकि अब यह दी गई सीमाओं और ContentScale पैरामीटर के आधार पर स्केलिंग न करे. Painter को लागू करने वाले लोग, DrawScope के दिए गए साइज़ के आधार पर, अपने ड्रॉइंग कॉन्टेंट को खुद ही स्केल करते हैं.

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

    ImagePainter को अपडेट किया गया है, ताकि वह अपने कॉन्टेंट को स्केल कर सके. इसके लिए, उसे PainterModifier पर निर्भर न रहना पड़े. (I6ba90)

  • ऐनिमेशन के समय के लिए, टॉप-लेवल का withFrameNanos फ़ंक्शन जोड़ा गया (Ie34c5)

  • @Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. @ComposableContract(tracked=false) से बदलें (Id211e)

  • androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करते. TextField, FilledTextField, और CoreTextField कंपोज़ेबल, जो उस टाइप का इस्तेमाल करते हैं उन्हें भी बंद कर दिया गया है. कृपया androidx.ui.input.TextFieldValue का इस्तेमाल करें (I4066d, b/155211005)

  • उस समस्या को ठीक किया गया है जिसकी वजह से, PointerInputFilters को डिसपैच के दौरान सबकंपोज़िशन के ज़रिए हटाने पर, पॉइंटर इनपुट डिसपैच क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (I1f48b, b/157998762)

  • उस समस्या को ठीक किया गया है जिसमें PointerInputFilters को dispatch के दौरान subcomposition के ज़रिए हटाने पर, पॉइंटर इनपुट dispatch क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (Iab398, b/157998762)

  • Radius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया है. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, कंपैनियन बनाने के तरीके हटा दिए गए हैं. साथ ही, डिफ़ॉल्ट पैरामीटर के साथ, y-ऐक्सिस के साथ रेडियस को x-ऐक्सिस के रेडियस पैरामीटर से मैच करने के लिए, ज़रूरी पैरामीटर जोड़ा गया है.

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

  • Recompose कंपोज़ेबल अब काम का ऐब्स्ट्रैक्शन नहीं है. ज़्यादातर रीकंपोज़िशन, MutableState असाइनमेंट की वजह से होने चाहिए. इससे ज़्यादा के लिए, हमारा सुझाव है कि आप invalidate फ़ंक्शन का इस्तेमाल करके, मौजूदा स्कोप को फिर से कंपोज़ करें. (Ifc992)

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

  • यह Compose के कंपाइलर की कोड जनरेशन रणनीति को बदलता है. बदलाव से पहले, कंपोज़ कंपाइलर, कंपोज़ेबल फ़ंक्शन को कॉल में बदल देता था. इस बदलाव के बाद, हम कंपोज़ेबल फ़ंक्शन के मुख्य हिस्से को बदल देते हैं. हालांकि, कॉलसाइट में ज़्यादातर बदलाव नहीं किया जाता.

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

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

    इस काम को पूरा करने के लिए, सभी कंपोज़ेबल फ़ंक्शन के JVM सिग्नेचर में बदलाव किया गया है. एक पैरामीटर स्वीकार करने वाले कंपोज़ेबल फ़ंक्शन को तीन पैरामीटर स्वीकार करने वाले फ़ंक्शन में बदल दिया जाता है. अतिरिक्त पैरामीटर, कंपोज़र और एक ‘key’ पूर्णांक होते हैं. यह एक बिटमास्क पूर्णांक होता है, जिसका इस्तेमाल कॉल के ज़रिए मेटाडेटा को आगे बढ़ाने के लिए किया जाता है.

    Compose अब डिफ़ॉल्ट आर्ग्युमेंट को भी कंपोज़ेबल फ़ंक्शन में बदलता है. यह फ़ंक्शन के सिंथेटिक डिफ़ॉल्ट ओवरलोड को बढ़ाए बिना ऐसा करता है. इसलिए, इस बदलाव से कम फ़ंक्शन तय किए जाएंगे.

    इस अपडेट की वजह से, जान-बूझकर किए गए व्यवहार में ये बदलाव हुए हैं:

    1. कुछ कॉल में, पहले की तुलना में अब कम समय लगेगा
    2. डिफ़ॉल्ट आर्ग्युमेंट एक्सप्रेशन में कंपोज़ेबल एक्सप्रेशन को अब सही तरीके से सब्सक्राइब किया जाता है और हैंडल किया जाता है

    इस काम में कुछ ऑप्टिमाइज़ेशन शामिल थे: 1. पैरामीटर की तुलना के नतीजे, कॉल ग्राफ़ के ज़रिए अन्य कंपोज़ेबल फ़ंक्शन तक पहुंचाए जाते हैं. इससे रनटाइम में तुलनाएं कम होंगी, स्लॉट टेबल का साइज़ कम होगा, और कंपोज़ेबल फ़ंक्शन को ज़्यादा बार स्किप किया जाएगा. पहले इन फ़ंक्शन को स्किप नहीं किया जाता था 2. कंपाइल टाइम में “स्टैटिक” के तौर पर तय किए गए पैरामीटर की तुलना अब रनटाइम में नहीं की जाती है. साथ ही, उन्हें रनटाइम में सेव भी नहीं किया जाता है. इससे तुलनाओं की संख्या कम हो जाती है और स्लॉट टेबल का साइज़ भी कम हो जाता है. 3. जनरेट किए गए ग्रुप की संख्या को कम करने के लिए, फ़ंक्शन के मुख्य हिस्से के कंट्रोल फ़्लो स्ट्रक्चर का इस्तेमाल किया जाता है. इससे स्लॉट टेबल का साइज़ कम हो जाता है और रनटाइम 4 के लिए कम काम होता है. अगर फ़ंक्शन के मुख्य हिस्से में, डिसपैच और रिसीवर के इस्तेमाल न किए गए पैरामीटर का इस्तेमाल नहीं किया जाता है, तो उन्हें फ़ंक्शन को स्किप करने की सुविधा तय करने में शामिल नहीं किया जाता है.

    ज़्यादातर बड़े बदलाव उन एपीआई के लिए किए गए थे जिन्हें कंपाइलर सीधे तौर पर टारगेट करता है. हालांकि, Compose के सामान्य इस्तेमाल पर इसका कोई असर नहीं पड़ेगा: 1. Composer::startExpr को हटा दिया गया है 2. Composer::endExpr को हटा दिया गया है 3. Composer::call को बंद कर दिया गया है 4. key के नॉन-वैरआर्ग ओवरलोड हटा दिए गए हैं. आगे से vararg वर्शन का इस्तेमाल करें. 5. पिवटल एनोटेशन को बंद कर दिया गया है. इसके बजाय, key का इस्तेमाल करें. 6. ScopeUpdateScope::updateScope को बदलकर, Function1 के बजाय Function3 का इस्तेमाल किया गया है 7. restartableFunction और restartableFunctionN को अपडेट किया गया है, ताकि उनमें कंपाइल टाइम के अतिरिक्त पैरामीटर शामिल किए जा सकें (I60756, b/143464846)

  • LayoutAlign मॉडिफ़ायर हटा दिए गए हैं. (I10877)

  • DrawLayerModifier के पक्ष में RepaintBoundary को हटाया गया (I00aa4)

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

  • ButtonStyle को अलग-अलग फ़ंक्शन से बदल दिया गया है. साथ ही, टेक्स्ट (स्ट्रिंग) ओवरलोड को हटा दिया गया है. इस्तेमाल की जानकारी के लिए, अपडेट किए गए सैंपल देखें. (If63ab, b/146478620, b/146482131)

  • ambients API में नुकसान पहुंचा सकने वाले बदलाव. ज़्यादा जानकारी के लिए, लॉग और Ambient<T> दस्तावेज़ देखें (I4c7ee, b/143769776)

  • डिफ़ॉल्ट TextDirection के तरीके में बदलाव किया गया है, ताकि इसे LayoutDirection के हिसाब से तय किया जा सके. इसका मतलब है कि अगर LayoutDirection RTL है, तो डिफ़ॉल्ट TextDirection भी RTL होगा. पहले यह TextDirection.ContentOrLtr/Rtl (I4e803) था

  • बग ठीक किया गया: जब एनोटेटेडस्ट्रिंग पर फ़ॉन्ट वेट और फ़ॉन्ट स्टाइल को नेस्ट किया जाता है, तो टेक्स्ट सही तरीके से रेंडर नहीं होता है. (I77a9d)

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

  • ui-android-text मॉड्यूल का नाम बदलकर ui-text-android कर दिया गया है (I68cbe)