लिखने के लिए यूज़र इंटरफ़ेस (यूआई)

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

संरचना

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

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

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

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

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

सुझाव

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

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

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

वर्शन 1.8

वर्शन 1.8.0-alpha07

11 दिसंबर, 2024

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

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

  • टूल के लिए, LayoutNode से मालिकाना हक हटा दिया गया. (I26f7f)
  • LocalAutofillHighlightColor कॉम्पोनेंट के लोकल लेवल पर, कलर टाइप का इस्तेमाल किया गया हो. (I0e05b)
  • बंद किए गए UrlAnnotation और उसके तरीकों को प्रयोग के तौर पर मार्क करें. (Ic0021)

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

  • BasicText या टेक्स्ट कॉम्पोज़ेबल में LinkAnnotation का इस्तेमाल करते समय, IndexOutOfBoundsException क्रैश होने की समस्या को ठीक किया गया (be7605, b/374115892)
  • कस्टम आकार वाले भरे हुए टेक्स्ट फ़ील्ड, इंडिकेटर लाइन को क्लिप नहीं करते थे. इस समस्या को ठीक कर दिया गया है. (I4f87f, b/380704151)
  • लंबे स्क्रीनशॉट में बैकग्राउंड न दिखने की समस्या को ठीक किया गया. (I4d57a)
  • यह लाइब्रेरी अब JSpecify nullness एनोटेशन का इस्तेमाल करती है, जो टाइप-इस्तेमाल के लिए हैं. Kotlin डेवलपर को सही तरीके से इस्तेमाल करने के लिए, नीचे दिए गए कंपाइलर आर्ग्युमेंट का इस्तेमाल करना चाहिए: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (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) में बदलाव:
    • पैरामीटर का नाम बदलकर 'फ़ॉलबैक' कर दिया गया
    • पैरामीटर अब lambda के बजाय FocusRequester है
    • पैरामीटर अब डिफ़ॉल्ट वैल्यू के तौर पर डिफ़ॉल्ट के साथ नॉन-शून्य है
  • अपने-आप भरने की सुविधा वाले मैनेजर इंटरफ़ेस से @Experimental एनोटेशन हटाना. इस रिलीज़ को टारगेट करने वाली सुविधा अब भी पूरी तरह से तैयार नहीं हुई है. हालांकि, हम @Expemiental API (Id8398) को लॉन्च नहीं करना चाहते
  • जब वाइब्रेटर एपीआई से पता चलता है कि हैप्टिक्स काम करते हैं, तो LocalHapticFeedback अब डिफ़ॉल्ट HapticFeedback लागू करता है. 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 API को हटा दिया गया है. इसका इस्तेमाल, सुलभता की जांच करने के लिए किया जाता था. इसके बजाय, इस काम के लिए enableAccessibilityChecks() देखें. (I59322)

वर्शन 1.8.0-alpha05

30 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

  • 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)
  • टारगेटिंग एपीआई 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) पर अपडेट किया गया
  • a11y सेवाओं के लिए पेजर में सूची के व्यवहार को एमुलेट करने के लिए, कैरसेल नाम की एक नई सेमेटिक्स भूमिका शुरू की गई है. (Id354b, b/354109776, b/239672673)
  • invisibleToUser() का नाम बदलकर hideFromAccessibility करें. इसका फ़ंक्शन पहले जैसा ही रहेगा. ज़्यादा जानकारी के लिए दस्तावेज़ देखें. (Ib43a3)

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

  • SensitiveContent मॉडिफ़ायर (Ib0442) के लिए दस्तावेज़ अपडेट करना
  • Android के कुछ वर्शन पर, सामान्य आउटलाइन वाली कुछ क्लिप को, ऊंचाई की परछाई के साथ इस्तेमाल करने पर अनदेखा किए जाने की समस्या को ठीक किया गया
  • Android के कुछ वर्शन पर, सामान्य आउटलाइन क्लिप तय करने पर खाली क्लिप लागू होने की समस्या को ठीक किया गया.
  • जब किसी बाहरी व्यू पर IME चालू होता है और ComposeView पर फ़ोकस करने के लिए, 'आगे बढ़ें' कार्रवाई का इस्तेमाल किया जाता है, तब मिलने वाले अपवाद को ठीक किया गया. clearFocus() का व्यवहार, एपीआई 28 से पहले के वर्शन पर व्यू के व्यवहार से मेल खाता है. यहां clearFocus() की वजह से, डिफ़ॉल्ट व्यू पर फ़ोकस हो सकता है.
  • अलग-अलग लेआउट पास के लिए सब-कंपोज़िशन के मैनेजमेंट को अलग करके, 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.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 के इनलाइन कॉन्टेंट का एलान नहीं किया था. (I67bcb, b/376479686)

वर्शन 1.7.5

30 अक्टूबर, 2024

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

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

  • कस्टम आउटलाइन के साथ ऊंचाई और क्लिपिंग ठीक से रेंडर न होने की समस्याएं ठीक की गई हैं.
  • शून्य-चौड़ाई वाले LinkAnnotation के साथ होने वाले टेक्स्ट क्रैश को ठीक करता है. (Ic1e2e)
  • बटन को क्लिक किए जा सकने वाले टेक्स्ट कॉम्पोज़ेबल के तौर पर बनाने पर, बटन के 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 से पहले के वर्शन पर व्यू के व्यवहार से मेल खाता है. यहां clearFocus() की वजह से, डिफ़ॉल्ट व्यू पर फ़ोकस हो सकता है.
  • एक समस्या को ठीक किया गया है. इसमें, आगे की वैल्यू देखने की सुविधा को अमान्य करने के लिए, गलत 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 या इसके बाद के वर्शन का इस्तेमाल करने की ज़रूरी शर्त लागू करता है. यह बदलाव, 1.7.0-alpha01 के दौरान किए गए NestedScrollSource बदलावों से जुड़ी, यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन के बीच काम करने के तरीके में होने वाली गड़बड़ी को ठीक करने के लिए लागू किया गया है.

वर्शन 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 क्लास जोड़ी गई है. इसकी मदद से, लिंक को टेक्स्ट कॉम्पोज़ेबल के पैरामीटर के तौर पर स्टाइल किया जा सकता है. (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) पर पहले से मौजूद अनस्पेसिफ़ाइड कॉन्स्टेंट के पक्ष में, 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 को 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से जुड़ा LinkAnnotation वाला AnnotatedString बनाएं और इस AnnotatedString को टेक्स्ट कॉम्पोज़ेबल में पास करें. (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 अब स्टेबल हैं. साथ ही, पुराने isMeasurementApproachComplete() और isPlacementApproachComplete() को बदलने के लिए, नए isMeasurementApproachInProgress() और isPlacementApproachInProgress() उपलब्ध हैं.
  • इस्तेमाल नहीं किए जा सकने वाले intermediateLayout मॉडिफ़ायर को हटाया गया. (I3e91c)
  • GraphicsLayer#buildLayer का नाम बदलकर, RenderNode और Picture जैसे Displaylist के साथ काम करने वाले एपीआई के begin/endRecording तरीकों को रिकॉर्ड करने के लिए मिरर करें.
  • rememberObserver का फ़ायदा पाने के लिए, rememberGraphicsLayer को अपडेट किया गया. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation का इस्तेमाल बंद कर दिया गया है. इसके बजाय, LinkAnnotation.Url का इस्तेमाल करें. अगर आपने Material थीम का इस्तेमाल किया है, तो TextDefaults ऑब्जेक्ट का इस्तेमाल करके, एनोटेशन बनाएं. इसमें Material थीम लागू होगी (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)
  • Android के आधिकारिक एपीआई (ScrollCaptureCallback) का इस्तेमाल करके, Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को प्रयोग के तौर पर लागू किया गया है. यह सुविधा प्रयोग के तौर पर उपलब्ध है और हो सकता है कि फ़िलहाल यह सभी मामलों में सही तरीके से काम न करे. इसलिए, यह सुविधा फ़िलहाल डिफ़ॉल्ट रूप से बंद रहती है. ऑप्ट-इन करने के लिए, 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 अब क्लिपबोर्ड को खाली करने के लिए, शून्य को स्वीकार करता है. (I7d2e9)
  • बिल्ड टूल में लागू करने की जानकारी के तौर पर इस्तेमाल किए गए व्यू को छिपाने में मदद करने के लिए, संसाधन आईडी जोड़े गए (I99531)
  • बिटमैप के कॉन्टेंट को GraphicsLayer में रेंडर करने के लिए, GraphicsLayer#toImageBitmap को सस्पेंड करने का तरीका जोड़ा गया. यह एपीआई लेवल 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 कंपज़िशन को लोकल तौर पर दिखाया जा सके. साथ ही, मॉडिफ़ायर के मालिक, DelegateableNode, और drawWithCache को अपडेट करें, ताकि स्कोप वाले ऐक्सेस के लिए GraphicsContext का ऐक्सेस दिखाया जा सके. इससे मॉडिफ़ायर हटाए जाने पर, GraphicsLayer इंस्टेंस अपने-आप साफ़ हो जाएंगे. (I64a2f, b/288494724)
  • IME से जुड़े लो-लेवल टेस्ट और IME के अन्य लो-लेवल इस्तेमाल के उदाहरण लिखने में मदद करने के लिए, InterceptPlatformTextInput को जोड़ा गया है. PlatformTextInputTestOverride का अब इस्तेमाल नहीं किया जा सकता. (I862ed, b/322680547)
  • GraphicsLayer.setOutline(Outline) एक्सटेंशन फ़ंक्शन जोड़ा गया. (Ib81f4)
  • GraphicsLayer इंस्टेंस बनाने के लिए फ़ैक्ट्री बनाने के मकसद से, GraphicsContext फ़ंक्शन कन्स्ट्रक्टर को शामिल करना (Ib98d6, b/288494724)
  • GraphicsLayer API को एक्सपोज़ किया गया है, ताकि डेवलपर को ड्रॉइंग के निर्देशों को कैप्चर करने में आसानी हो. इन निर्देशों का इस्तेमाल, कहीं और ड्रॉ करने के लिए किया जा सकता है. साथ ही, इनसे फ़ाइनल नतीजे पर अलग-अलग विज़ुअल इफ़ेक्ट भी लागू किए जा सकते हैं. (I80245, b/288494724)
  • Paragraph#getRangeForRect फ़ंक्शन जोड़ा गया है. यह किसी रेक्टैंगल के दायरे में मौजूद टेक्स्ट की रेंज दिखाता है. (Iee516, b/325660505)
  • onLinkClicked आर्ग्युमेंट की मदद से, BasicText के एक्सपेरिमेंटल ओवरराइड को हटा दिया गया. आने वाले समय में, हाइपरलिंक की सहायता के लिए एक नया एपीआई उपलब्ध कराया जाएगा. (I107d5)

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

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

बाहरी योगदान

  • LocalLifecycleOwner को Compose यूज़र इंटरफ़ेस (यूआई) से lifecycle-runtime-compose पर ले जाया गया है, ताकि Compose पर आधारित सहायक एपीआई का इस्तेमाल, Compose यूज़र इंटरफ़ेस (यूआई) के बाहर किया जा सके. योगदान देने के लिए, जेक व्हार्टन को धन्यवाद. (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 सेमेटिक ऐक्शन जोड़ रहे हैं, ताकि हम compose में स्क्रोल किए जा रहे कॉम्पोनेंट की जानकारी को a11y सिस्टम में भेज सकें. यह सीएल, फ़ाउंडेशन स्क्रोल की जा सकने वाली सूचियों में भी उस प्रॉपर्टी का इस्तेमाल लागू करता है. (Ic5fa2)
  • FocusRequester.createRefs अब ठीक है (I4d92c, b/261436820)
  • DelegatableNode.requireView() को पेश किया गया, ताकि मॉडिफ़ायर नोड, कॉम्पोज़िशन को लोकल तौर पर पढ़े बिना, मौजूदा Android View को ऐक्सेस कर सकें. (I40768)
  • पाथ की दिशा बदलने के लिए नया एपीआई Path.reverse() (I36348)
  • KeyboardOptions में hintLocales जोड़ा गया, ताकि TextFields को पसंदीदा भाषा को पहले से सेट करने के लिए, खास स्थानीय भाषाओं के साथ आईएमई को हिंट देने की सुविधा मिल सके.
  • 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 और बेहतर FlowRow/Column, जिसमें MaxLines और ओवरफ़्लो की सुविधा है. हमें यह बताते हुए खुशी हो रही है कि एक्सपेरिमेंट के तौर पर उपलब्ध FlowRow और FlowColumn में कई सुधार किए गए हैं. अब इनमें 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)
  • androidx.compose.foundation.text2 पैकेज में मौजूद BasicTextField2 और उससे जुड़े एपीआई को 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)

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

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

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

  • ClipEntry और ClipMetadata जोड़कर ClipboardManager को बड़ा किया गया, ताकि इमेज जैसे किसी भी कॉन्टेंट का इस्तेमाल किया जा सके.
  • 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 के लेआउट इंस्पेक्टर (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() टेस्ट एपीआई लॉन्च किया गया था. बाकी टेस्ट एपीआई, डिफ़ॉल्ट रूप से बंद किए गए नोड को फ़िल्टर कर देंगे. (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)
  • जिन बटन के लिए, Compose व्यू में कोई 'डाउन' इवेंट नहीं मिला है उनके लिए, हार्डवेयर बटन के 'अप' इवेंट को अब अनदेखा कर दिया जाएगा. (Ib37b4, b/305518328)
  • ArcLine में स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ें. (I4d5bb)
  • PageSize.Fixed के लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)
  • विंडो इनसेट में बदलाव करने से बाइनरी के साथ काम करने से जुड़ी समस्या को ठीक करना (Iee695)
  • Material3 चिप/बटन के लिए, मटीरियल कोर लेयर हटाएं, क्योंकि माइक्रोबेंचमार्क के बिना बेहतर परफ़ॉर्मेंस दिखती है. (I55555)
  • टेस्ट बनाने के लिए effectContext के तौर पर पास किए गए TestDispatcher का इस्तेमाल, अब टेस्ट और फ़्रेम क्लॉक बनाने के लिए किया जाएगा. (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 अब आपके लेआउट में onRelease के हिस्से के तौर पर FragmentContainerView को शामिल करके, Fragment के इंस्टेंस को सिंक करके हटा देता है. इसके लिए, commitNow का इस्तेमाल किया जाता है, न कि पहले इस्तेमाल किए जा रहे 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() कॉलबैक जोड़ा गया
  • ColorInt, FloatRange, IntRange, Size वगैरह के बारे में बताने के लिए, अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं. (Id65c8, b/290950582)
  • PreviewScreenSizes की परिभाषा में showSystemUi=true जोड़ें (Ib61d3)

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

  • कॉम्पोज़ करने की सुविधा अब नॉन-लीनियर फ़ॉन्ट स्केलिंग का इस्तेमाल करती है, ताकि कॉन्टेंट को बेहतर तरीके से पढ़ा जा सके और उसे आसानी से ऐक्सेस किया जा सके. अगर सिस्टम सेटिंग में फ़ॉन्ट स्केल 100% से ज़्यादा है, तो छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ थोड़ा ही बढ़ेगा. साथ ही, SP में तय की गई लाइन की ऊंचाई, 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)
  • deviceId को RotaryScrollEvent में जोड़ें (Iba3bf)
  • नए डिवाइसों को शामिल करने के लिए, ui-tooling डिवाइस एपीआई को अपडेट किया गया (Ib25b4)

वर्शन 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)
  • ColorInt, FloatRange, IntRange, Size वगैरह के बारे में बताने के लिए, अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं. (I70487, b/290950582)
  • पैरामीटर की बेहतर तरीके से जांच करने के लिए, ColorFilter एपीआई को अपडेट किया गया है, ताकि उसमें खास सबक्लास टाइप शामिल किए जा सकें. (I5fe29)
  • wear-tooling-preview लाइब्रेरी जोड़ी गई है. इसकी मदद से, ऐसे Wear डिवाइसों की सूची बनाई जा सकती है जिनका इस्तेमाल यूज़र इंटरफ़ेस की झलक दिखाने के लिए किया जा सकता है (Ib036e)
  • Density इंटरफ़ेस के फ़ॉन्ट स्केलिंग वाले हिस्से को मैनेज करने के लिए, 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* एपीआई को पूरी तरह से फिर से डिज़ाइन किया गया है. (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 अब डिफ़ॉल्ट रूप से गलत है

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

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

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

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

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

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

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

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

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

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

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

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

  • सहायता 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) का एक सेट जोड़ा गया

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

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

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

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

वर्शन 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 एपीआई जोड़ा गया

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

  • toComposePaint को बदलने के लिए asComposePaint एपीआई जोड़ा गया है, क्योंकि दिखाया गया ऑब्जेक्ट ओरिजनल 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 में मौजूद UrlAnnotation को अब TalkBack जैसी सुलभता सेवाओं की मदद से खोला जा सकता है. (If4d82, b/253292081)
  • टेक्स्ट फ़ील्ड के लिए, InsertTextAtCursor सेमेटिक्स ऐक्शन जोड़ा गया. (I11ed5)
  • LineHeightStyle.Alignment(topRatio) कंस्ट्रक्टर को स्टेबल एपीआई के तौर पर प्रमोट किया गया है. (I79c32, b/261565383)
  • TextMeasurer और उससे जुड़े एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I74647, b/261581753)
  • टेक्स्ट एडिटर नोड पर IME ऐक्शन को ट्रिगर करने के लिए, PerformImeAction सेमेटिक्स ऐक्शन जोड़ा गया. (Ic606f, b/269633506)
  • PlatformTextInput एपीआई, अब Android के लिए एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I668eb)
  • Enum.valueOf के लिए वैल्यू पैरामीटर का नाम बदला गया (Ia9b89)
  • enum valueOf (I818fe) से मिलने वाले ज़्यादा अपवाद
  • कस्टम टेक्स्ट इनपुट लागू करने के लिए, नया लो-लेवल PlatformTextInputAdapter एपीआई जोड़ा गया है. यह सीधे प्लैटफ़ॉर्म एपीआई से जुड़ा है. (I58df4)
  • कैनवस पर टेक्स्ट ड्रॉ करते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम के साथ काम करने के लिए, 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) के लिए दस्तावेज़ जोड़ना

बाहरी योगदान

  • Vector API (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: SubcomposeLayouts में SubcomposeLayout के लिए, डिफ़ॉल्ट तौर पर नया व्यवहार. जिन 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 में मौजूद UrlAnnotation को अब 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 से बदल दिया गया है. यह अब एक लेआउट नहीं है. इससे, LookaheadScope में मौजूद चाइल्ड कॉन्टेंट को सीधे तौर पर, पैरंट की MeasurePolicy से कंट्रोल किया जा सकता है. (Ibe2e5)
  • Modifier.Nodes को कोरूटीन लॉन्च करने की अनुमति देने के लिए, Modifier.Node#coroutineScope जोड़ा गया. (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) पर पड़ा था
  • कस्टम फ़ोकस एंटर/एग्ज़िट प्रॉपर्टी में एक बग को ठीक किया गया है. इसकी वजह से, पहली बार जब भी lambda फ़ंक्शन को कॉल किया जाता था, तो सिर्फ़ एंटर/एग्ज़िट ब्लॉक ही चलता था (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 API जोड़ा गया है. इसकी मदद से, 'सुस्त' सूची के आइटम पिन किए जा सकते हैं, ताकि स्क्रोल करने पर वे बाहर न निकलें. उदाहरण के लिए, Modifier.focusable() इस तरीके का इस्तेमाल करके, फ़िलहाल फ़ोकस किए गए आइटम को पिन करता है. (Ib8881, b/259274257, b/195049010)
  • फ़ोकस सिस्टम को एक्सपेरिमेंट के तौर पर उपलब्ध नए Modifier.Node एपीआई का इस्तेमाल करके फिर से लिखा गया है. (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 पैरामीटर स्वीकार करता है. इससे, कंपोजिशन में मौजूद नोड को खारिज करने और काम करने वाले तरीके से फिर से इस्तेमाल करने पर, व्यू इंस्टेंस का फिर से इस्तेमाल किया जा सकता है. यह खास तौर पर व्यू के 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() एपीआई को हटा दिया गया. इसके बजाय, कृपया सीधे ModifierNodeElement से एक्सटेंशन दें. (I2256b)
  • एक नया Modifier.Node.onReset() कॉलबैक जोड़ा गया है. इसकी मदद से, कुछ लोकल स्टेटस को रीसेट किया जा सकता है. इससे, Layout का फिर से इस्तेमाल करने पर, उस स्थिति को सही तरीके से मैनेज किया जा सकता है. उदाहरण के लिए, LazyColumn के आइटम के तौर पर. फ़ोकस की गई स्थिति को सही तरीके से रीसेट करने के लिए, FocusTargetModifierNode को ठीक किया गया है. (I65495, b/265201972)
  • कैनवस पर टेक्स्ट ड्रॉ करते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम के साथ काम करने के लिए, 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 API जोड़ा गया है. इसकी मदद से, 'सुस्त' सूची के आइटम पिन किए जा सकते हैं, ताकि स्क्रोल करने पर वे बाहर न निकलें. उदाहरण के लिए, Modifier.focusable() इस तरीके का इस्तेमाल करके, फ़िलहाल फ़ोकस किए गए आइटम को पिन करता है. (Ib8881, b/259274257, b/195049010)
  • फ़ोकस सिस्टम को एक्सपेरिमेंट के तौर पर उपलब्ध नए Modifier.Node एपीआई का इस्तेमाल करके फिर से लिखा गया है. (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's के व्यवहार को दोहराने के लिए किया जा सकता है. (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 है, तो कॉल किसी इनलाइन कंपोजेबल फ़ंक्शन को किया जाता है. हालांकि, इनलाइन कॉम्पोज़ेबल फ़ंक्शन के कॉल के लिए वैल्यू गलत हो सकती है. ये फ़ंक्शन, ऐसे मॉड्यूल से होते हैं जिन्हें Compose कंपाइलर प्लग इन के ऐसे वर्शन के साथ कंपाइल किया जाता है जो इनलाइन फ़ंक्शन की जानकारी जनरेट नहीं करता. (Idb846)
  • पहले एक्सपेरिमेंट के तौर पर उपलब्ध कुछ एपीआई को स्टेबल वर्शन में अपग्रेड किया गया
  • रोटरी स्क्रोल इवेंट एपीआई अब स्टेबल है (I42ad3, b/261561229)
  • FontVariation एपीआई अब स्थिर है (I8779f, b/241016309)
  • सभी Font() कन्स्ट्रक्टर अब स्टेबल एपीआई (I5948b, b/261435386) हैं
  • DeviceFontFamilyName अब स्टेबल है (I8b640, b/261435386)
  • variationSettings के साथ AndroidFont कन्स्ट्रक्टर अब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (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 से ExperimentalComposeUiApi हटाया जा रहा है (I23af8)
  • पेज की सुलभता से जुड़ी कार्रवाइयां जोड़ें: PageUp, PageDown, PageLeft, PageRight. ध्यान दें कि ये सिर्फ़ API 29 से उपलब्ध हैं. (Ida4ab)
  • rememberNestedScrollConnection पैरामीटर व्यू को रूट व्यू से होस्ट व्यू में अपडेट किया गया. (Ia5200)
  • पैरंट पेज के स्क्रोल की जानकारी क्वेरी करने के लिए, मॉडिफ़ायर एपीआई जोड़ा गया. (I2ba9d, b/203141462)
  • Clickable में इसका इस्तेमाल, प्रेस इंटरैक्शन में देरी करने के लिए किया जाता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं.
  • Scrollable ViewGroup के अंदर इस्तेमाल करने पर, Clickables के रिपल सही तरीके से देर से नहीं दिखने की समस्या को ठीक किया गया.
  • ड्रॉअर और शीट को अपडेट किया गया है, ताकि जेस्चर के स्क्रोल इवेंट बनने की स्थिति में, प्रेस करने में सही समय लग सके.
  • 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)
  • 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 वर्शन में ये बदलाव शामिल हैं.

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

  • graphicsLayer के मौजूदा साइज़ को दिखाने के लिए, GraphicsLayerScope को अपडेट किया गया. यह फ़ंक्शन, Composable के साइज़ के फ़ंक्शन के तौर पर graphicsLayer ट्रांसफ़ॉर्मेशन का हिसाब लगाने के लिए मददगार होता है. (If8c43,b/181387080)
  • graphicsLayer कॉन्टेंट को रेंडर करने के लिए, ऑफ़स्क्रीन कॉम्पोज़िंग लेयर का इस्तेमाल कब करना है, यह तय करने के लिए CompositingStrategy को जोड़ा गया है. ऑटो, डिफ़ॉल्ट तरीके से काम करता है. अगर अल्फा लागू किया जाता है या RenderEffect/Overscroll का इस्तेमाल किया जाता है, तो यह लेयर का इस्तेमाल करता है. हमेशा ऑफ़स्क्रीन बफ़र का इस्तेमाल किया जाएगा, जहां 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)
  • टूल को Composable के इंटरनल स्टेटस में बदलाव करने की अनुमति देने के लिए, ToolingState जोड़ें (Ie6614)
  • टूल को फिर से तैयार किया गया है, ताकि जोड़े गए नए ऐनिमेशन के लिए बेहतर सहायता मिल सके (I8677b)
  • material और material3 टेक्स्ट में 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 को झलक में टीवी डिवाइसों को जोड़ने के लिए धन्यवाद (Ie15cd)

वर्शन 1.3

वर्शन 1.3.3

11 जनवरी, 2023

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

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

  • Android 9 पर, Compose व्यू की स्थिति सेव करते समय कभी-कभी होने वाले क्रैश की समस्या हल की गई है. (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 के बाद किए गए अहम बदलाव

  • एक्सपेरिमेंट के तौर पर उपलब्ध नया एपीआई सुइट LookaheadLayout (इसकी मदद से, एनिमेशन के ऐसे व्यवहार लागू किए जा सकते हैं जो पहले नहीं किए जा सकते थे)
  • एक्सपेरिमेंट के तौर पर उपलब्ध नया एपीआई सुइट Modifier.Node (Modifier.composed के मुकाबले बेहतर परफ़ॉर्मेंस वाला विकल्प)
  • विंडो इनसेट के लिए बेहतर सहायता.
  • LazyLists में डी-पैड और हार्डवेयर कीबोर्ड के लिए फ़ोकस करने की सुविधा.
  • डायलॉग और पॉप-अप में, एलिवेशन की ज़्यादा से ज़्यादा वैल्यू को 8dp पर सेट किया गया है. यह बदलाव, कुछ कस्टमाइज़ किए गए डिज़ाइन सिस्टम के लिए, व्यवहार में बदलाव लाता है – इसकी वजह, beta01 रिलीज़ नोट में दी गई है
  • एपीआई में कई छोटे-मोटे सुधार, जो किसी भी तरह की रुकावट नहीं डालते
  • कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है

वर्शन 1.3.0-rc01

5 अक्टूबर, 2022

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

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

  • टेक्स्ट में हाइफ़न अपने-आप जोड़ने की सुविधा के लिए, प्रयोग के तौर पर नया एपीआई हाइफ़न जोड़ा गया (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 गतिविधि का 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) के लिए कस्टम व्यवहार तय करने के लिए, एंटर और बाहर निकलें नाम की दो नई फ़ोकस प्रॉपर्टी जोड़ी गई हैं. (I5f3f9, b/183746982)
  • फ़ोकस को किसी दूसरी जगह ले जाने की कार्रवाई को रद्द करने के लिए, अब FocusRequester.Cancel का इस्तेमाल किया जा सकता है. FocusRequester.Cancel का इस्तेमाल, फ़ोकस करने वाली इनमें से किसी भी प्रॉपर्टी में किया जा सकता है: ऊपर, नीचे, बाईं ओर, दाईं ओर, अगला, पिछला, शुरू, खत्म, Enter, और बाहर निकलें. (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 तक की ऊंचाई का इस्तेमाल किया जा सकता है.

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

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

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

  • कॉन्फ़िगरेशन में बदलाव होने पर, painterResource अपडेट न होने की समस्या को ठीक किया गया (I58e73, b/228862715)
  • rememberTextMeasurer अब FontFamily.Resolver, Density या LayoutDirection पैरामीटर नहीं लेता. इन पैरामीटर के लिए कस्टम वैल्यू देने के लिए, कृपया TextMeasurer कन्स्ट्रक्टर का इस्तेमाल करें. (Ia1da3)
  • डायलॉग बॉक्स को WindowInsets के साथ काम करने की अनुमति देने के लिए, DialogProperties.decorFitsSystemWindows प्रॉपर्टी जोड़ी गई. (I57742, b/229378542)
  • फ़ॉन्ट कन्स्ट्रक्टर को ओरिजनल Kotlin फ़ाइल में वापस ले जाया गया, ताकि बाइनरी के साथ काम करने की सुविधा बनी रहे. पिछले स्टेबल रिलीज़ की तुलना में कोई बदलाव नहीं हुआ. (Ieb2f3)
  • 'बराबर' की कई परिभाषाओं से ग़ैर-ज़रूरी ऑपरेटर हटा दिया गया है - इसका कोई असर नहीं पड़ेगा. (I6c309)
  • FontVariation.Setting एक सील किया गया इंटरफ़ेस है, ताकि आने वाले समय में क्लैंपिंग एपीआई को अनुमति दी जा सके. (I11021, b/143703328)
  • SlotTree.kt में CompositionGroup.findParameters जोड़ें. इससे टूल, पूरी स्लॉट टेबल को पार्स किए बिना, 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 में बदलने के लिए, LayoutCoordinates.transformFrom जोड़ा गया. (Ic5ab1, b/238632578)
  • SemanticsModifier.id को हटा दिया गया है और सेमेटिक्स आईडी को LayoutInfo.semanticsId पर ले जाया गया है. (Iac808, b/203559524)
  • रिसॉर्स फ़ॉन्ट में अब फ़ॉन्ट वैरिएशन की सेटिंग सेट करने की सुविधा है (एपीआई 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)
  • इंटरफ़ेस पैराग्राफ़ अब सील किया गया इंटरफ़ेस पैराग्राफ़ है. पैराग्राफ़ को सबक्लास करने का कोई इस्तेमाल नहीं है. हमारा सुझाव है कि अगर इस बदलाव का असर आप पर पड़ता है, तो हमसे संपर्क करें. (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 में, कॉन्स्टेंट और पैरामीटर के नामों को फिर से तैयार किया गया, ताकि उनमें 'मिलिस' सफ़िक्स शामिल किया जा सके. इन कॉन्स्टेंट और पैरामीटर की यूनिट मिलीसेकंड होती हैं. (Iabef5)
  • टेक्स्ट में बदलाव करने से जुड़ी समस्याओं को हल करने में मदद करने के लिए, EditCommand में toStringForLog() तरीका जोड़ा गया. (I53354, b/228862731)
  • DrawScope पर drawText एक्सटेंशन फ़ंक्शन जोड़ा गया है, ताकि Canvas और drawBehind जैसे DrawScope पर काम करने वाले कॉम्पोज़ेबल और मॉडिफ़ायर पर, अलग-अलग स्टाइल में टेक्स्ट ड्रॉ किया जा सके. (I16a62, b/190787898)
  • TextMeasurer नाम का एक नया एक्सपेरिमेंटल API जोड़ा गया है. यह टेक्स्ट लेआउट का हिसाब लगाने की सुविधा देता है. इससे Compose के रनटाइम से अलग, BasicText जैसे ही नतीजे मिलते हैं. (I17101)
  • SlotTree.kt में mapTree जोड़ें. इससे टूल, asTree की तरह पहले मेमोरी में कॉपी बनाए बिना ही SlotTree की जांच कर सकते हैं. इससे लेआउट इंस्पेक्टर की परफ़ॉर्मेंस में करीब 10 गुना का सुधार होता है. (I5e113)
  • Compose की झलक को बाइनरी आउटपुट फ़ाइलों में सेव करने के लिए बदला गया है. इससे डेवलपर, लाइब्रेरी से MultiPreview एनोटेशन लिख पाएंगे और उनका फिर से इस्तेमाल कर पाएंगे. (I85699, b/233511976)

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

  • Velocity ट्रैकर में InputEventChange इवेंट जोड़ते समय, हम अब पोज़िशन के बजाय डेल्टा को ध्यान में रखेंगे. इससे यह पक्का होगा कि टारगेट एलिमेंट के मूव होने पर भी, सभी मामलों में वेलोसिटी का सही तरीके से हिसाब लगाया गया है (Icea9d, b/216582726, b/223440806, b/227709803)
  • एनोटेशन मौजूद होने पर, AnnotatedString.toUpperCase की वजह से होने वाली एनपीई को ठीक करें. (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)
  • AnnotatedString में TalkBack लिंक के साथ काम करने के लिए, UrlAnnotation एनोटेशन टाइप और उससे जुड़े तरीकों को जोड़ा गया है. (I1c754, b/231495122)
  • यूटिलिटी फ़ंक्शन को रनटाइम पर ले जाना (I4f729)

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

  • TextLayoutResult.getLineForOffset नहीं दिखाता. (Idc5d6, b/235876324)

बाहरी योगदान

  • composable फ़ंक्शन में या 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 के नए कोर एपीआई का इस्तेमाल करके, अब लेज़ी लिस्ट में फ़ोकस-ड्रिवन-स्क्रोलिंग की सुविधा काम करती है
    • 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 जोड़ें.
  • 'लिखें' विकल्प में GoogleFonts लोड न होने पर, गड़बड़ी के मैसेज को बेहतर बनाया गया. (I0416c)

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

  • वेग ट्रैकर में 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 एपीआई को आसान बनाया गया (I67ca7)
  • @ComposableTarget एनोटेशन और @ComposableTargetMarker से मार्क किए गए एनोटेशन का इस्तेमाल, अब फ़ाइल के स्कोप में @file प्रीफ़िक्स का इस्तेमाल करके किया जा सकता है. फ़ाइल के स्कोप में टारगेट एनोटेशन का इस्तेमाल करने पर, कंपाइलर यह मान लेगा कि फ़ाइल में मौजूद सभी कंपोजेबल फ़ंक्शन, उससे जुड़े ऐप्लिकेटर को टारगेट करने के लिए हैं. उदाहरण के लिए, @file:UiComposable का इस्तेमाल करने से पता चलता है कि सभी @Composable फ़ंक्शन, Compose यूज़र इंटरफ़ेस (यूआई) लागू करने वाले टूल को टारगेट करते हैं. किसी दूसरे ऐप्लिकेटर को टारगेट करने वाले फ़ंक्शन में, ऐप्लिकेटर के लिए टारगेट मार्कर एनोटेशन को साफ़ तौर पर देना ज़रूरी है. (I40804)
  • एक्सपेरिमेंट के तौर पर, प्लैटफ़ॉर्म से स्वतंत्र टेस्ट एपीआई को लॉन्च किया गया है: interface ComposeUiTest और fun runComposeUiTest(block: ComposeUiTest.() -> Unit). इनका इस्तेमाल, TestRule के बिना Compose यूज़र इंटरफ़ेस (यूआई) की जांच करने के लिए किया जा सकता है. 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)

  • ग्रेडिएंट कलरिंग के साथ टेक्स्ट ड्रॉ करने का तरीका उपलब्ध कराने के लिए, TextStyle और SpanStyle में Brush जोड़ा गया. (I53869, b/187839528)

  • trimFirstLineTop, trimLastLineBottom एट्रिब्यूट के लिए, LineHeightBehavior को एक ही एनम में बदल दिया गया है: LineHeightTrim. LineHeightTrim में चार स्थितियों की वैल्यू होती हैं, जिन्हें दो बूलियन से तय किया जाता है: FirstLineTop, LastLineBottom, दोनों, और कोई नहीं (Ifc6a5, b/181155707)

  • TextStyle और ParagraphStyle में LineHeightBehavior जोड़ा गया. LineHeightBehavior यह कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के ऊपर और आखिरी लाइन के नीचे लागू की जाए या नहीं. यह TextStyle(lineHeight) के दिए गए स्पेस में लाइन के अलाइनमेंट को भी तय करता है.

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

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

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

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

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

बाहरी योगदान

  • अगर वर्टिकल स्क्रोल किया जाता है, तो Android पर MouseInjectionScope.scroll(delta = someDelta) अब उलटा हो जाता है (अगर someDelta का मान धनात्मक है, तो यह नीचे की ओर स्क्रोल करेगा) (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)
  • पैराग्राफ़ और मल्टी-पैराग्राफ़ इंस्ट्रक्टर ने, ज़रूरी आर्ग्युमेंट के पहले पोज़िशनल आर्ग्युमेंट का क्रम बदल दिया है. (इदाफ़ा)
  • 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)
  • IME में दशमलव सेपरेटर को शामिल करने के लिए, Keyboard.Number के विकल्प के तौर पर KeyboardType.Decimal जोड़ा गया है. (Iec4c8, b/209835363)
  • PointerEventType.Scroll और PointerEvent.scrollDelta अब स्टेबल एपीआई हैं (I574c5, b/225669674)
  • साथ काम करने वाली View क्लास के लिए, View और Compose के बीच नेस्ट किए गए स्क्रोल इंटरऑपरेबिलिटी को चालू करें. इसका मतलब है कि 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 के कॉन्टेंट को अपने-आप मिरर किया जा सके. (I79cd9, b/185760237)
  • एपीआई के साथ काम करने के लिए, अपडेट किए गए शैडो/ऐंबियंट कलर को Modifier.graphicsLayer के आखिरी पैरामीटर के तौर पर जोड़ा गया है (I3f864, b/160665122)

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

  • आरएसबी इवेंट (Ief8ae) में इवेंट का समय जोड़ा गया

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

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

  • डिफ़ॉल्ट रणनीति को वापस पाने के लिए, ViewCompositionStrategy.Default को जोड़ें

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

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

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

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

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

बाहरी योगदान

  • compose-ui: GraphicsLayerScope (I1ba1a, b/160665122) में ambientShadowColor और spotShadowColor प्रॉपर्टी जोड़ें
  • 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 में वैल्यू न होने की स्थिति को अपडेट किया गया
  • मेज़र किए गए इंटरफ़ेस में अब parentData प्रॉपर्टी (I3313f) दिखती है
  • Modifier.onPlaced और OnPlacedModifier इंटरफ़ेस अब बेहतर तरीके से काम कर रहे हैं. (Ib5482)
  • हुर्रे! ऐनिमेशन बनाने की सुविधा अब डेवलपर के विकल्पों में मौजूद, 'ऐनिमेशन अवधि का स्केल' सेटिंग के साथ काम करती है. (I5a4fc, b/161675988)
  • BeyondBoundsLayout मॉडिफ़ायर लोकल (If8b51, b/184670295) जोड़ा गया
  • टेक्स्ट: includeFontPadding अब डिफ़ॉल्ट रूप से बंद है. includeFontPadding=false की वजह से, स्क्रीन पर दिखने वाले कॉन्टेंट के काटे जाने की समस्याएं हल हो गई हैं. साथ ही, लंबी स्क्रिप्ट के लिए काट-छांट नहीं की जानी चाहिए. (I31c84, b/171394808)

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

  • अगर पहले से कॉन्टेंट मौजूद होने पर, कॉन्टेंट सेट करने की कोशिश की जाती है, तो ComposeContentTestRule.setContent अब IllegalStateException दिखाएगा. (I888a5, b/199631334)
  • Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड के कॉन्टेंट की वजह से क्रैश होने की समस्या को ठीक किया गया. (I06020, b/197769306)
  • आरएसबी स्क्रोलिंग सैंपल को बेहतर बनाएं. (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 जोड़े गए हैं. इनकी मदद से, संकलन के समय यह रिपोर्ट किया जा सकता है कि किसी ऐसे ऐप्लिकेटर को टारगेट करने के लिए, कब किसी कंपोजेबल फ़ंक्शन को कॉल किया गया है जिसका इस्तेमाल करने के लिए उसे डिज़ाइन नहीं किया गया था.

    ज़्यादातर मामलों में, एनोटेशन का अनुमान, Compose के कंपाइलर प्लग इन से लगाया जा सकता है. इसलिए, इन एनोटेशन का सीधे तौर पर इस्तेमाल कम ही किया जाना चाहिए . जिन मामलों में अनुमान नहीं लगाया जा सकता उनमें कस्टम ऐप्लिकेटर बनाना और उसका इस्तेमाल करना, एब्स्ट्रैक्ट कंपोजेबल फ़ंक्शन (जैसे कि इंटरफ़ेस के तरीके), फ़ील्ड या वैश्विक वैरिएबल शामिल हैं. ये वैरिएबल, कंपोजेबल लैम्ब्डा (स्थानीय वैरिएबल और पैरामीटर का अनुमान लगाया जाता है) होते हैं. इसके अलावा, 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, पॉप-अप जैसे सब-कंपोज़िशन को पास किए जाते हैं.
  • दिए गए Font.ResourceLoader, पॉप-अप जैसे सब-कंपोज़िशन को पास किए जाते हैं. (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 स्टब क्लास (I1e659, b/216660268) पर destroyDisplayListData method को पेश किया गया
  • एक नया एपीआई जोड़ा गया है. इसकी मदद से, पहले से बनाए गए SubcomposeLayout के बच्चों को पहले से मेज़र किया जा सकता है. (I857ea)
  • movableContentOf जोड़ा गया, जो किसी कॉम्पोज़ेबल लैम्ब्डा को ऐसे लैम्ब्डा में बदल देता है जो अपनी स्थिति और उससे जुड़े नोड को, किसी भी नई जगह पर ले जाता है. जब पिछला कॉल कॉम्पोज़िशन से बाहर निकलता है, तो स्टेटस कुछ समय के लिए सेव रहता है. अगर कॉम्पोज़िशन में लैम्ब्डा फ़ंक्शन का नया कॉल आता है, तो स्टेटस और उससे जुड़े नोड, नए कॉल की जगह पर ले जाए जाते हैं. अगर कोई नया कॉल नहीं जोड़ा जाता है, तो स्टेटस हमेशा के लिए हटा दिया जाता है. साथ ही, दर्शकों को इसकी सूचना दी जाती है.

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

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

  • createFontFamilyResolver(context) और createFontFamilyResolver(context, coroutineScope) जोड़े गए, ताकि लिखने के अलावा, अन्य कामों के लिए भी फ़ॉन्ट फ़ैमिली रिज़ॉल्वर बनाए जा सकें.

  • Paragraph और MultiParagraph अब 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)

  • इंटरनल जनरेट की गई kt क्लास का नाम बदलना (Ia0b9e, b/174162090)

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

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

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

  • FontFamily.Resolver.resolve, 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 के साथ, Material कॉम्पोनेंट अपने लेआउट स्पेस को बड़ा कर देंगे, ताकि टच टारगेट साइज़ के लिए Material के सुलभता दिशा-निर्देशों को पूरा किया जा सके. उदाहरण के लिए, बटन के टच टारगेट का साइज़ कम से कम 48x48dp होगा. भले ही, आपने बटन का साइज़ छोटा सेट किया हो. इससे, Compose Material को Material Design कॉम्पोनेंट के काम करने के तरीके के हिसाब से अलाइन किया जाता है. इससे, व्यू और 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)
  • HardwareRenderer.isDrawingEnabled() के false होने पर भी SemanticsNodeInteraction.captureToImage() अब काम करेगा. इसके लिए, कॉल के दौरान इसे चालू करना होगा (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)
  • Composer के उन तरीकों से InternalCompilerApi हटा दिया गया जिन्हें क्रॉस-मॉड्यूल (I1aa0b) के तौर पर कॉल करना ज़रूरी है
  • SemanticsNodeInteraction.performSemanticsAction अब वह SemanticsNodeInteraction दिखाता है जिस पर फ़ंक्शन को कॉल किया गया था. (I9e5db)
  • TouchMode/NonTouchMode का पता लगाने के लिए, LocalInputModeManager CompositionLocal जोड़ा गया. (I6a83c, b/175899786)
  • LayoutInfo में viewConfiguration: ViewConfiguration जोड़ा गया है, ताकि उपभोक्ताओं को लंबे समय तक दबाने पर होने वाले टाइम आउट जैसी चीज़ों के लिए सही वैल्यू मिल सके. (I76ca6)
    • viewConfiguration: ViewConfiguration को InjectionScope में जोड़ा गया है, ताकि टेस्ट में इनपुट इंजेक्शन को अडजस्ट किया जा सके. यह अडजस्टमेंट, लंबे समय तक दबाने पर टाइम आउट या टच स्लोप जैसी चीज़ों के आधार पर किया जाता है.
    • टच और माउस इनपुट, दोनों के लिए डिफ़ॉल्ट तौर पर, दबाकर रखने और दो बार टैप करने की अवधि बदल दी गई है. यह अवधि, InjectionScope.viewConfiguration में दी गई वैल्यू के आधार पर तय की जाएगी.
  • ExposedDropdownMenuBox के आधार पर ExposedDropdownMenu को लागू करना. इसमें TextField और DropdownMenu शामिल हैं (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)
  • touchBoundsInRoot में SemanticsNode जोड़ा गया है, जिसमें टच टारगेट का कम से कम साइज़ शामिल है. इससे डेवलपर यह पक्का कर सकते हैं कि टच टारगेट, सुलभता से जुड़ी ज़रूरी शर्तों को पूरा करते हैं. (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() नए तरीके से लागू करने पर भी, 'स्थान बदलना' इवेंट भेजा जाता है. हालांकि, इस खास स्थिति में इवेंट का समय आगे नहीं बढ़ता.
    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)
  • 'डेस्कटॉप पर कॉम्पोज़ करें' सुविधा में, रेंडर इफ़ेक्ट के लिए सहायता जोड़ी गई. 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 में इंजेक्ट किए गए इवेंट का मौजूदा समय, मुख्य टेस्ट क्लॉक के मौजूदा समय पर शुरू किया जाएगा. (Ifb364, b/192064452)
  • DpRect(DpOffset, DpSize) कन्स्ट्रक्टर जोड़ा गया (I2cf16, b/194219828)
  • DpSize क्लास जोड़ी गई (I7abb1, b/194219828)

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

  • वेक्टर ग्राफ़िक्स एक्सएमएल को पार्स करने की सुविधा को अपडेट किया गया है, ताकि वेक्टर ड्रॉआउट पर ColorStateList को रूट कलर टिनट प्रॉपर्टी के तौर पर इस्तेमाल किया जा सके. (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)
  • ColorPainter की तरह ही, Painter में किसी भी ब्रश से ड्रॉ करने की सुविधा देने के लिए, BrushPainter API को जोड़ा गया

    Brush Painter में क्वेरी की गई, Brush API के लिए, साइज़ का एक पैरामीटर जोड़ा गया है (Ia2752, b/189466433)

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

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

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

  • ड्रॉ मॉडिफ़ायर को चेन करने के लिए, पक्का करें कि Modifier.paint को लागू करने पर, drawsContent को कॉल किया जाए. पहले, Modifier.paint को Modifier की चेन में एक लीफ़ नोड माना जाता था. हालांकि, ऐसा करने से इसे कॉम्पोज़ेबल कंटेनर (जैसे, बॉक्स) पर कॉन्फ़िगर नहीं किया जा सकता या Modifier.paint().border() जैसे अन्य डेकोरेशन नहीं जोड़े जा सकते. दिए गए पेंटर के कॉन्टेंट को ड्रॉ करने के बाद, Modifier.paint को drawContent को कॉल करने पर, हमें मॉडिफ़ायर पैटर्न के व्यवहार में बेहतर क्वालिटी मिलती है. (Ibb2a7, b/178201337, b/186213275)
  • डायलॉग बॉक्स अब प्लैटफ़ॉर्म के साइज़ के हिसाब से काम करते हैं. इस व्यवहार को बदलने के लिए, usePlatformDefaultWidth को 'गलत है' पर सेट करें. (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 रिलीज़ का आधिकारिक ब्लॉग देखें!

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

  • अगर 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 को 'गलत है' पर सेट करें. (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 में अब सुलभता के लिए, contentDescription पैरामीटर काम करता है. (Ib547c)
  • PopupProperties में मौजूद useDefaultMaxWidth का नाम बदलकर usePlatformDefaultWidth कर दिया गया. (I05710)
  • डायलॉग बॉक्स अब पूरी स्क्रीन की चौड़ाई का इस्तेमाल कर सकते हैं. (I83929, b/190810877)
  • एचएसवी और एचएसएल कलर के लिए, एक्सपेरिमेंट के तौर पर सहायता जोड़ी गई है. (Id7cf8, b/180731008)

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

  • Compose @Preview में अब एक LocalActivityResultRegistryOwner विकल्प उपलब्ध है. इसकी मदद से, उन Composables की झलक देखी जा सकती है जो rememberLauncherForActivityResult() जैसे एपीआई का इस्तेमाल करते हैं. ये एपीआई, उस मालिक के मौजूद होने पर ही काम करते हैं. (Ib13d1, b/185693006)
  • Compose @Preview में अब एक LocalOnBackPressedDispatcherOwner उपलब्ध है. इसकी मदद से, उन Composables की झलक देखी जा सकती है जो 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, @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 में बताए जाते हैं. फ़ाइल में हर लाइन के लिए एक नियम तय किया जाता है. इस मामले में, नियम लाइब्रेरी में मौजूद तरीकों या क्लास से मैच करने के लिए एक पैटर्न होता है. इन नियमों का सिंटैक्स, ART प्रोफ़ाइल के ऐसे फ़ॉर्मैट का सुपरसेट है जिसे कोई भी व्यक्ति पढ़ सकता है. इसका इस्तेमाल adb shell profman --dump-classes-and-methods ... का इस्तेमाल करते समय किया जाता है. ये नियम, किसी भी तरीके या क्लास को टारगेट करने के लिए, इनमें से किसी एक फ़ॉर्म में होते हैं.

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.0.0-beta08

2 जून, 2021

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

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

  • NestedScrollSource enum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) का नाम बदलकर FocusManager.clearFocus(force = true) (Ia0c41) कर दिया गया है
  • जब नई वैल्यू जोड़ी जाती हैं, तब 'जब' स्टेटमेंट में समस्याओं से बचने के लिए, इनलाइन क्लास में वैल्यू का इस्तेमाल करने का तरीका बदला गया है. (I2b5eb)
  • PopupProperties से @ExperimentalComposeUiApi को हटाएं. (I01fa6)
  • PointerType को enum से बदलकर इनलाइन क्लास (If5058) में बदल दिया गया
  • ContentDescription और टेक्स्ट सेमेंटेक्स प्रॉपर्टी अब एक वैल्यू के बजाय सूचियां हैं. इससे, उन्हें एक साथ जोड़ने के बजाय, वैसे ही मर्ज किया जा सकता है जैसे वे हैं. इन बदलावों का फ़ायदा पाने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
  • Modifier.focusModifier() का अब इस्तेमाल नहीं किया जा सकता. इसे Modifier.focusTarget() (I6c860) से बदल दिया गया है
  • Modifier.onSizeChanged() और Modifier.onGloballyPositioned() अब इनलाइन फ़ंक्शन नहीं हैं (I727f6, b/186109675)
  • KeyboardType enum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)
  • FocusState इंटरफ़ेस के साथ FocusState एनम को बदला गया (Iccc1a, b/187055290)
  • ImeAction एनम को इनलाइन क्लास से बदल दिया गया है. (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 कॉलबैक में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है (I42fc4, b/185096350, b/187320697)
  • अलाइनमेंट लाइन देने वाले 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 एनम को इनलाइन क्लास से बदल दिया गया है. (Id670a, b/187055290)
  • FocusDirection enum को इनलाइन क्लास से बदल दिया गया है. (Ib6d03, b/187055290, b/184086802)
  • SubcomposeLayout स्टेटस को होस्ट करने की सुविधा जोड़ी गई है. इसकी मदद से, कॉन्टेंट को ज़रूरी slotId में पहले से कॉम्पोज़ किया जा सकता है. इससे अगला मेज़र तेज़ी से पास हो जाएगा, क्योंकि दिए गए slotId के साथ सब-कॉम्पोज़ करने की कोशिश करने पर, अगली बार कॉम्पोज़ करने की ज़रूरत नहीं होगी. (I42580, b/184940225)
  • क्लिप चुनने के लिए हैंडल जोड़ा गया (Iff80d, b/183408447)
  • LayoutInspector के लिए इस्तेमाल नहीं किए जा रहे एपीआई हटा दिए गए हैं. (I2ac78)

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

  • LazyColumn/Row अब पहले दिखने वाले दो आइटम को चालू रखेगा (डिस्पोज नहीं किया जाएगा), भले ही वे पहले से स्क्रोल आउट हों. इससे कॉम्पोनेंट, स्क्रोल करने की परफ़ॉर्मेंस को बेहतर बनाने वाला नया आइटम कंपोज करते समय, चालू सब-कंपोज़िशन का फिर से इस्तेमाल कर सकता है. (Ie5555)
  • AnnotatedString पर TextGeomerticTransform और TextDecoration, दिए गए तरीके से लागू होंगे. (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 (I19f62) में ownerViewId जोड़ा गया
  • ऐसेट, फ़ाइल, और FileDescriptor से फ़ॉन्ट लोड करने के लिए, Font() के ओवरलोड जोड़े गए (I5d382)
  • सुलभता एपीआई error जोड़ा गया है. इसकी मदद से, अमान्य इनपुट वाले नोड को मार्क किया जा सकता है (I12997, b/180584804, b/182142737)
  • एसेट, फ़ाइल, और फ़ाइल डिस्क्रिप्टर से फ़ॉन्ट लोड करने के लिए, Font() ओवरलोड जोड़े गए (I43007)
  • AnnotatedString की मदद से, TextFieldValue.Saver में सेव करने की सुविधा जोड़ी गई है. addTtsAnnotation और withAnnotation के यूटिलिटी फ़ंक्शन को AnnotatedString.Builder में जोड़ा गया (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 फ़ंक्शन अब काम नहीं करता. यह एक ऐसा सार्वजनिक फ़ंक्शन है जिसका इस्तेमाल नहीं किया जाता. इसे टेस्ट करने के लिए जोड़ा गया था. यह फ़ंक्शन, टेक्स्ट लिखने के लिए इस्तेमाल किए जाने वाले एपीआई के लिए काम का नहीं है. इस फ़ंक्शन का इस्तेमाल अब नहीं किया जा सकता. इसे बाद में हटा दिया जाएगा. (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 को लिखने की हैरारकी से हटाने पर, AndroidViewBinding अब FragmentContainerView की मदद से फ़्लोरेट किए गए फ़्रैगमेंट को सही तरीके से हटा देता है. (Ib0248, b/179915946)
  • AndroidViewBinding अब FragmentContainerView की मदद से फ़्लोरेट किए गए फ़्रैगमेंट को सही तरीके से नेस्ट करता है. ऐसा तब होता है, जब आपका ComposeView किसी Fragment में हो. इससे, उन फ़्रैगमेंट की स्थिति को सेव और वापस लाने से जुड़ी समस्याएं ठीक हो जाती हैं. (I70eb0, b/179915946)
  • Compose ViewBinding अब फ़्रैगमेंट 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 या फ़्रैगमेंट पर निर्भर नहीं करता. अगर आपके ऐप्लिकेशन में ComposeView का इस्तेमाल किया जा रहा है और आपने फ़्रैगमेंट और/या AppCompat का इस्तेमाल किया है, तो पक्का करें कि आपने AppCompat 1.3 या इसके बाद के वर्शन / फ़्रैगमेंट 1.3 या इसके बाद के वर्शन का इस्तेमाल किया हो. ComposeView के लिए, लाइफ़साइकल और सेव की गई स्थिति के मालिकों को सही तरीके से सेट करने के लिए, इन वर्शन की ज़रूरत होती है. (I1d6fa, b/161814404)
  • नेविगेशन-कॉम्पोज़ के डेस्टिनेशन में इस्तेमाल किए जाने पर, 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 बीटा वर्शन की पहली रिलीज़ है.

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

  • detectDragGestures में onStart कॉलबैक जोड़ा गया है (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)
  • प्लेसएबल में अब measuredSize दिखता है. इससे पता चलता है कि चाइल्ड लेआउट का साइज़ असल में कितना है. ऐसा हो सकता है कि यह साइज़, मेज़रमेंट की सीमाओं के मुताबिक न हो. (Ib2729, b/172560206, b/172338608)
  • सुलभता के मकसद से, टैब या रेडियो बटन के कलेक्शन को मार्क करने की सुविधा देने वाला selectionGroup मॉडिफ़ायर जोड़ा गया (Ie5c29)
  • compositionLocalOf और staticCompositionLocalOf के लिए defaultFactory अब ज़रूरी है, न कि वैकल्पिक.

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

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

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

  • ओरिएंटेशन को फ़ाउंडेशन पैकेज में ले जाया गया है. VelocityTracker को 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 कर दिया गया है

    • कॉम्पोज़िशन कंस्ट्रक्टर अब कोई कुंजी पैरामीटर स्वीकार नहीं करता और इसे बंद कर दिया गया है.
    • 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 क्लास के बजाय, Scrollable इंटरफ़ेस का इस्तेमाल करता है (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 एपीआई को हटा दिया गया है. साथ ही, String.format का इस्तेमाल न करने के लिए, 'स्ट्रिंग में बदलें' के अलग-अलग तरीकों में, इस्तेमाल किए गए फ़ंक्शन को फिर से तैयार किया गया है. (Id1290)

  • dp एश्योरेशन हटाए गए (I798d2)

  • androidx.compose.runtime:runtime-dispatch को हटाया गया (I55feb)

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

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

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

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

  • एक हेल्पर फ़ंक्शन जोड़ा गया है, जो सभी ImeAction कॉलबैक के लिए एक ही कार्रवाई सेट करने में मदद करता है (I63447, b/179226323)

  • सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक हटा दिया गया है. इसे जल्द ही एक नए एपीआई से बदल दिया जाएगा. (Iae869, b/168778053)

  • FontSpan और FontWeigthStyleSpan का अब इस्तेमाल नहीं किया जाता और इन्हें हटा दिया गया है. (Ie5b56, b/177423444)

  • Material API में ये बदलाव किए गए हैं:

    • डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाने के लिए, Top/BottomAppBar में contentPadding पैरामीटर जोड़ा गया है.
    • BackdropScaffold में पैरामीटर का क्रम बदला गया है, ताकि ज़रूरी पैरामीटर, वैकल्पिक पैरामीटर से पहले दिखें. ऐसा, एपीआई के दिशा-निर्देशों का पालन करने के लिए किया गया है.
    • BottomNavigationItem में icon पैरामीटर को selected और onClick के बाद ले जाया गया.
    • BottomNavigationItem में alwaysShowLabels पैरामीटर का नाम बदलकर alwaysShowLabel किया गया.
    • कुछ कॉम्पोनेंट में bodyContent पैरामीटर का नाम बदलकर सिर्फ़ content कर दिया गया.
    • ButtonDefaults.buttonColors() में पैरामीटर का क्रम बदला गया. कृपया ध्यान दें कि पैरामीटर का टाइप नहीं बदला है. इसलिए, इससे आपके कोड में कोई गड़बड़ी नहीं होगी. कृपया पक्का करें कि आपने नाम वाले पैरामीटर का इस्तेमाल किया हो या क्रम को मैन्युअल तरीके से अपडेट किया हो. ऐसा न करने पर, आपका कोड पहले की तरह काम नहीं करेगा.
    • darkColors() में secondaryVariant पैरामीटर जोड़ा गया. आम तौर पर, यह रंग गहरे रंग वाली थीम में secondary जैसा ही होता है. हालांकि, इसे एक जैसा रखने और पसंद के मुताबिक बनाने के लिए जोड़ा गया है.
    • सार्वजनिक एपीआई प्लैटफ़ॉर्म से ElevationDefaults और animateElevation() को हटा दिया गया है, क्योंकि इनका आम तौर पर इस्तेमाल नहीं किया जाता था या ये काम के नहीं थे.
    • Slider में मौजूद onValueChangeEnd का नाम बदलकर onValueChangeFinished किया गया और इसे वैल्यू के बिना छोड़ने की अनुमति दी गई.
    • एक जैसा नाम रखने के लिए, Snackbar में मौजूद text पैरामीटर का नाम बदलकर content किया गया.
    • डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाने के लिए, DropdownMenuItem में contentPadding पैरामीटर जोड़ा गया. साथ ही, content को RowScope का एक्सटेंशन बनाया गया.
    • ModalDrawerLayout का नाम बदलकर ModalDrawer किया गया.
    • BottomDrawerLayout का नाम बदलकर BottomDrawer किया गया.
    • (I1cc66)

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

  • Compose में AnimatedVectorDrawable संसाधनों का इस्तेमाल करने के लिए एपीआई जोड़ा गया. <animated-vector> एक्सएमएल को AnimatedImageVector के तौर पर लोड करने के लिए, 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() composable और 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)
  • Destructuring और 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)
  • Snapshot API को अपडेट किया गया है, ताकि वह एपीआई के दिशा-निर्देश के मुताबिक हो. साथ ही, सार्वजनिक एपीआई से लागू करने की इंटरनल क्लास को छिपाया जा सके. (Id9e32)
  • सेमेटिक्स ऐक्शन को बड़ा और छोटा करने की सुविधा जोड़ी गई. ModalBottomSheetState में, expand और halfExpand को जोड़ा गया (Ib5064)
  • Modifier.dragGestureFilter को बंद कर दिया गया है. इसके बजाय, Modifier.pointerInput { detectDragGestures (...)} का इस्तेमाल करें. इसके अलावा, एक अक्ष पर खींचने और छोड़ने के लिए Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473)
  • ऐंबियंट -> कॉम्पोज़िशनलोकल के नाम से मेल खाने के लिए, ऐंबियंट का नाम बदला गया. ऐंबियंट को पहले 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 को 'रद्द करें' के तौर पर बदला गया, ताकि इसे 'बंद करें' से अलग किया जा सके. (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)
  • Outline.* क्लास अब डेटा क्लास नहीं हैं (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)
  • Modifier.scrollable से canDrag को हटा दिया गया है. (Id66e7, b/175294473)
  • LayoutCoordinates.parentCoordinates का नाम बदलकर, LayoutCoordinates.parentLayoutCoordinates कर दिया गया है, ताकि नई parentCoordinates प्रॉपर्टी का इस्तेमाल किया जा सके. parentCoordinates प्रॉपर्टी अब पैरंट मॉडिफ़ायर के LayoutCoordintes की सुविधा देती है. इससे, onSizeChanged() और onGloballyPositioned() के इस्तेमाल के उदाहरणों को ज़्यादा बेहतर बनाया जा सकेगा (Idfbfd, b/177926591)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, और pressIndicaitonGestureFilter अब काम नहीं करते. इसके बजाय, detectTapGestures फ़ंक्शन के साथ Modifier.clickable या Modifier.pointerInput का इस्तेमाल करें. (I6baf9, b/175294473)
  • SaveableStateRegistry के unregisterProvider को हटा दिया गया है. इसके बजाय, registerProvider() अब SaveableStateRegistry.Entry ऑब्जेक्ट दिखाता है. इसका इस्तेमाल, रजिस्ट्रेशन रद्द करने के लिए किया जा सकता है (Ic4274, b/178583739)
  • rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)
  • सार्वजनिक एपीआई से CoreText और CoreTextField को हटाया गया
    • SelectionContainer के इस्तेमाल को हटाया गया
    • (I99c19)
  • जिन टेस्ट में Compose का इस्तेमाल, सीधे WindowManager में जोड़ी/हटाई गई हैरारकी में किया जाता है वे अब ज़्यादा स्टेबल हैं. (Ie81ed, b/175765614)
  • Recomposer.current() को हटाया गया. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner के ज़रिए, विंडो के स्कोप वाले Recomposers को बनाता है. होस्ट के लाइफ़साइकल के रुकने पर, फिर से कॉम्पोज़ करने की प्रोसेस और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)
  • Recomposer.runningRecomposers अब रीड-ओनली RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. इससे, कॉम्पोज़िशन की प्रोसेस के दौरान, कॉम्पोज़िशन की मौजूदा स्थिति को देखा जा सकता है. Recomposer.current() के बजाय, इस एपीआई का इस्तेमाल करें. 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 के पैरामीटर के नाम बदले गए हैं. अब इन पैरामीटर के नाम, left/right से start/end हो गए हैं. AbsoluteRounderCornerShape और AbsoluteCutCornerShape को उन मामलों के लिए लॉन्च किया गया था जिनमें अपने-आप मिरर होने की सुविधा नहीं चाहिए. (I61040, b/152756983)
  • Compose कंपाइलर प्लग इन जिस एपीआई को टारगेट करता है उसे फिर से तैयार किया गया है, ताकि किसी खास क्लास के बजाय इंटरफ़ेस का इस्तेमाल किया जा सके. इंटरफ़ेस अब टाइप पैरामीटर का भी इस्तेमाल नहीं करता.

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

  • गलती से सार्वजनिक किया गया StringBuilder.deleteAt फ़ंक्शन हटाएं (Id6ed9)

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

  • व्यू की हैरारकी में मौजूद ComposeView, अब अपने पैरंट कॉम्पोज़िशन की चाइल्ड कॉम्पोज़िशन होस्ट करते हैं. ये ऐसे कॉम्पोज़िशन होते हैं जो किसी दूसरे कॉम्पोज़िशन के चाइल्ड होते हैं (I92883)
  • ImageBitmap ऑब्जेक्ट लोड करते समय, संसाधन के ड्रॉबल कैश का फिर से इस्तेमाल करने के लिए, compose के imageFromResource API को अपडेट किया गया. (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() एपीआई जोड़ा गया. (I045cb, b/177681839)
  • PopupPositionProvider को बदलकर, ग्लोबल निर्देशांक के बजाय विंडो के हिसाब से निर्देशांक का इस्तेमाल किया जा सके. parentGlobalBounds का नाम बदलकर anchorBounds कर दिया गया है. साथ ही, windowGlobalBounds को windowSize: IntSize (I2994a) में बदल दिया गया है
  • 'कुल समय' और 'अपटाइम' को लंबे मिलीसेकंड से बदल दिया जाएगा. साथ ही, इस चरण से उन क्लास पर पॉइंटर इनपुट की डिपेंडेंसी हट जाएगी. (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)
  • एक्सपेरिमेंट के तौर पर उपलब्ध monotonicFrameAnimationClockOf तरीके हटाए गए (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)
  • फ़ॉन्ट/फ़ॉन्ट फ़ैमिली/टाइपफ़ेस के फ़ैक्ट्री फ़ंक्शन में बदलाव

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

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

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

  • displaySize को हटाएं, क्योंकि इसका इस्तेमाल नहीं किया जाना चाहिए. आम तौर पर, 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 को कई बार कॉल किया गया था. जैसे, WithConstraints और Scaffold. इससे, एक बार onEnter कॉल करने पर मिलने वाली गारंटी अविश्वसनीय हो जाती है और इसे RememberObserver के लिए हटा दिया गया था.

    RememberObserver, onAbandoned जोड़ता है. इसे तब कॉल किया जाता है, जब RememberObserver इंस्टेंस, remember को पास किए गए कॉलबैक से वापस आता है, लेकिन कंपोज़िशन स्टेटस में उसे याद नहीं रखा गया था. इसलिए, 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 एलिमेंट का इस्तेमाल बंद कर दिया गया है. अगर आपके पास ज़्यादा स्क्रोल करने वाला कॉन्टेंट है, तो 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)
  • layoutnode के बाउंड में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (I72fd1)
  • बिना तय किए गए कॉन्स्टेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse जोड़े गए हैं. (I93f7b, b/174310811)
  • [Abstract]ComposeView API को बड़ा करें, ताकि Compose पर आधारित व्यू को रीसाइकल किया जा सके. साथ ही, बाद में फिर से बनाने के लिए, उनके कॉम्पोज़िशन को हटाया जा सके. चाइल्ड कंपोजिशन बनाने के लिए, विंडो के स्कोप वाले Recomposers और CompositionReferences को इंस्टॉल और खोजने के लिए एपीआई जोड़ें.

    [Abstract]ComposeViews की कंपोज़िशन हटाने की रणनीति को कॉन्फ़िगर करने के लिए, ViewCompositionStrategy जोड़ें; डिफ़ॉल्ट तौर पर, विंडो को अलग करने पर कंपोज़िशन हट जाता है. (I860ab)

  • Any.identityHashCode() पब्लिक एपीआई हटाया गया (I025d7)

  • सीधे तौर पर String.format का इस्तेमाल करने के बजाय, toStringAsFixed API को हटा दिया गया है. (Iaba6b)

  • फ़ाउंडेशन Strings.kt में टॉगल जोड़ें (I4a5b7, b/172366489)

  • nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बनाया गया. equals लागू करने के लिए, नेटिव क्लास के इस्तेमाल को अपडेट किया गया है, ताकि इसके बजाय 'is MyClass' का इस्तेमाल किया जा सके. (I4f734)

  • Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)

  • SelectionManager को चुने जा सकने वाले अपडेट की सूचना देने के लिए, SelectionRegistrar.notifySelectableChange को जोड़ा गया. (I6ff30, b/173215242)

  • अलग-अलग आउटलाइन लागू करने के लिए, बॉर्डर रेक्ट पाने के लिए Outline.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)
  • Position का नाम बदलकर DpOffset कर दिया गया और getDistance() को हटा दिया गया (Ib2dfd)

  • fun Dp.isFinite() को val Dp.isFinite (I50e00) में बदला

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

  • Recomposer अब अपनी मौजूदा स्थिति का फ़्लो दिखाता है. इससे, इसकी गतिविधि और उससे जुड़े इफ़ेक्ट की गतिविधि को मॉनिटर किया जा सकता है. (Ifb2b9)
  • नेटिव keyEvent को अब keyEvent.nativeKeyEvent (I87c57, b/173086397) की मदद से ऐक्सेस किया जा सकता है
  • animate() को अब animateAsState() से बदल दिया गया है, जो T के बजाय State<T> दिखाता है. इससे परफ़ॉर्मेंस बेहतर होती है, क्योंकि अमान्य करने के दायरे को उस जगह तक सीमित किया जा सकता है जहां स्टेट वैल्यू को पढ़ा जाता है. (Ib179e)
  • Semantics role API जोड़ें और क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले SemanticsModifier में पैरामीटर के तौर पर भूमिका जोड़ें. Modifier.progressSemantics को बदला गया, ताकि स्लाइडर भी इसका इस्तेमाल कर सके. (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(), ट्री व्यू को ऊपर से नीचे की ओर बनाने के लिए insertBottomUp() को बदल देता है. (Icbdc2)

  • AndroidDialogProperties में, dismissOnBackPress और dismissOnClickOutside प्रॉपर्टी जोड़ी गई हैं. इनसे यह कॉन्फ़िगर किया जा सकता है कि डायलॉग के onDismissRequest लैम्ब्डा को कब ट्रिगर किया जाएगा. (If5e17)

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

  • Modifier.clearAndSetSemantics जोड़ा गया, ताकि वंशजों के सेमेंटिक को हटाया जा सके और नए सेट किए जा सकें. (I277ca)

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

  • स्ट्रोक वाले आकारों को अलग-अलग पैटर्न देने के लिए, PathEffect ग्राफ़िक्स एपीआई को पेश किया गया. PathEffect के उम्मीद के मुताबिक/असल में लागू होने के पक्ष में, NativePathEffect का इस्तेमाल बंद कर दिया गया है. (I5e976, b/171072166)

  • Compose में IdlingResource इंटरफ़ेस जोड़े गए हैं. ये Espresso के idling रिसॉर्स के ऐसे वैरिएंट हैं जो Compose के साथ काम करते हैं. इन्हें ComposeTestRule (I433f3) की मदद से रजिस्टर और अनरजिस्टर किया जा सकता है

  • ComposeIdlingResource के लिए, ग्लोबल तौर पर रजिस्ट्रेशन (अनरजिस्टर) करने की सुविधा हटाई गई है. साथ ही, ComposeIdlingResource में क्लॉक के लिए, ग्लोबल तौर पर रजिस्ट्रेशन (अनरजिस्टर) करने की सुविधा हटाई गई है (I32660)

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

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

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

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

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

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

  • BuildCompat.isAtLeastR (Idb37e) अब काम नहीं करता

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

  • वैल्यू को रेडियन में बदलने के लिए, फ़्लोट और डबल पर एक्सटेंशन के तरीके हटा दिए गए हैं. इसे PathParser के लागू होने के दौरान, निजी फ़ंक्शन के तौर पर ले जाया गया. इस फ़ंक्शन का इस्तेमाल सिर्फ़ एक जगह (I25f52) पर किया गया था

वर्शन 1.0.0-alpha08

2 दिसंबर, 2020

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

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

  • सिमेंटिक ऐक्शन 'खारिज करें' जोड़ें (I2b706)
  • DrawModifier एपीआई को 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 के uptime और position फ़ील्ड के लिए, वैल्यू सबमिट करना ज़रूरी है. (Id468a)
  • MaterialTheme अब चुनने के लिए दिए गए हैंडल और चुनी गई चीज़ के बैकग्राउंड के लिए सही रंग सेट करता है. मटीरियल डिज़ाइन का इस्तेमाल न करने वाले ऐप्लिकेशन, चुने गए टेक्स्ट के लिए इस्तेमाल किए जाने वाले रंगों को पसंद के मुताबिक बनाने के लिए, AmbientTextSelectionColors का मैन्युअल तरीके से इस्तेमाल कर सकते हैं. (I1e6f4, b/139320372, b/139320907)
  • होस्ट विंडो फ़ोकस में है या नहीं, यह देखने के लिए WindowManager.isWindowFocused जोड़ा गया है. साथ ही, WindowFocusObserver जोड़ा गया है, जो onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
  • TransformOrigin API को अपडेट किया गया है, ताकि pivotFractionX और pivotFractionY को component1 और component2 के तौर पर दिखाया जा सके. इसके लिए, डिस्ट्रक्चरिंग सिंटैक्स का इस्तेमाल किया गया है (If43c4, b/173586560)
  • Compose के दिशा-निर्देशों के मुताबिक, कॉम्पोज़ेबल लैंब्डा पैरामीटर के नाम और पोज़िशन की जांच करने के लिए, लिंट की जांच जोड़ी गई है. हमने कुछ एपीआई को भी माइग्रेट किया है. इनमें, लैम्ब्डा फ़ंक्शन के आखिर में children के तौर पर इस्तेमाल किए गए नाम को content में बदला गया है. यह बदलाव, लिंट की जांच और दिशा-निर्देशों के मुताबिक किया गया है. (Iec48e)
  • कीवर्ड डिस्पैच होने पर, Alt, Ctrl, Meta या Shift बटन दबाए गए थे या नहीं, यह पता लगाने के लिए एपीआई जोड़ा गया. (I50ed9)
  • नया Modifier.drawLayer() ओवरलोड जोड़ा गया. यह नए GraphicsLayerScope पर एक lambda ब्लॉक लेता है. यहां लेयर पैरामीटर को इस तरह से तय किया जाता है कि स्टेटस में बदलाव होने पर, रीकंपोज़िशन और रीलेआउट को स्किप किया जा सके. 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 में ले जाकर उसका नाम बदला गया है, ताकि वह एपीआई के दिशा-निर्देशों के मुताबिक ImageVector की इनर क्लास बन सके. काम करने के लिए, ImageVector.Builder से लिंक करने के लिए, VectorAssetBuilder का टाइपअलाइन जोड़ा गया. (Icfdc8)
  • ImageAsset और उससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया. (Ia2d99)
  • PlacementScope के place() के लिए zIndex पैरामीटर जोड़ें, ताकि Modifier.zIndex() अब LayoutModifier के तौर पर काम करे. साथ ही, कोई भी कस्टम लेआउट, प्लेसमेंट ब्लॉक में अपने बच्चों के लिए zIndexes सेट कर सकता है (I711f7, b/171493718)
  • फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (I6f05c) में ले जाया गया
  • place(Offset) और placeRelative(Offset) फ़ंक्शन का इस्तेमाल बंद करें. इसके बजाय, int ऑफ़सेट के साथ ओवरलोड का इस्तेमाल करें (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)

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

  • बॉक्स के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
  • offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया. अब ये स्टेट के बजाय, लैंब्डा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
  • TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
  • Composable फ़ंक्शन में, मॉडिफ़ायर पैरामीटर के लिए लिंट की जांच जोड़ी गई है. यह लिंट जांच, पैरामीटर के नाम, रिटर्न टाइप, डिफ़ॉल्ट वैल्यू, और क्रम की जांच करती है, ताकि Compose के दिशा-निर्देशों के मुताबिक हो. (If493b)
  • TestAnimationClock को MonotonicFrameClock से कंट्रोल करने के लिए, कुछ समय के लिए विकल्प जोड़ा गया है (I1403b, b/173402197)
  • Android टाइपफ़ेस रैपर जोड़ा गया. typeface फ़ंक्शन यानी typeface(Typeface.DEFAULT) की मदद से, Android टाइपफ़ेस लोड किया जा सकता है. typefaceFromFontFamily() का नाम बदलकर typeface() (I52ab7) कर दिया गया
  • मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर के एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें एक साथ आसानी से जोड़ा जा सके. इसकी जांच करने के लिए, लिंट की जांच जोड़ी गई है. (I07981)
  • पुराने ui-test मॉड्यूल और उसके स्टब (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 के bounds को स्ट्रेच करने के लिए अलग-अलग स्केलिंग की जा सके.
    • साइज़ पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर के तरीके जोड़े गए.
    • (Ic96a6, b/172291582)
  • अलाइनमेंट बनाने के लिए, BiasAlignment और BiasAbsoluteAlignment फ़ैक्ट्री जोड़ी गई हैं. (Iac836, b/169406772)
  • डेवलपर को फ़ोकस हटाने की अनुमति दें. (I90372)
  • Compose में व्यू के लिए, एलिमेंट की ऊंचाई नहीं दिखने की गड़बड़ी को ठीक कर दिया गया है. (If7782)
  • Modifier.drawBehind के नाम रखने के नियम से मैच करने के लिए, ContentDrawScope में onDrawBehind एपीआई बनाया गया है. (I4fc3a, b/171955269)
  • लेयर एपीआई पर 3D ट्रांसफ़ॉर्मेशन के लिए, कैमरे की दूरी के लिए सपोर्ट जोड़ा गया है, ताकि rotationX/rotationY को बेहतर बनाया जा सके. (I40213, b/171492100)
  • कॉलबैक (Ibfadb) के बिना SelectionContainer जोड़ा गया
  • 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)
  • kotlinx-coroutines-test के runBlockingTest का इस्तेमाल करके, कॉम्पोज़िशन फ़्रेम इवेंट का इंतज़ार करने के लिए, Compose के MonotonicFrameClock पर निर्भर कोड की जांच करने के लिए, TestMonotonicFrameClock जोड़ा गया (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)
  • SideEffect और DisposableEffect एपीआई के साथ एक जैसा बने रहने के लिए, LaunchedTask का नाम बदलकर LaunchedEffect कर दिया गया है. सबसे सही तरीकों को बढ़ावा देने के लिए, बिना विषय पैरामीटर वाले LaunchedEffect का इस्तेमाल करने की अनुमति नहीं है. (Ifd3d4)
  • कॉम्पोनाइज़ किए जा सकने वाले संसाधनों को जोड़ा गया है. ये संसाधन, कॉन्फ़िगरेशन अपडेट होने पर फिर से कॉम्पोनाइज़ हो जाते हैं. (I6387c, b/167352819)
  • रीकंपोज़र को अब कॉन्स्ट्रक्शन के समय 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 और मान्य कॉम्पोज़िशन पैरंट है. अब साफ़ तौर पर कॉन्टेंट फिर से बनाने की सुविधा का इस्तेमाल कम जगहों पर करना ज़रूरी है. (I4036f)
  • VectorPainter को बंद करके, rememberVectorPainter का इस्तेमाल करें. इससे यह बेहतर तरीके से पता चलता है कि कॉम्पोज़ेबल एपीआई, सभी कॉम्पोज़िशन में डेटा को सेव करने के लिए, 'याद रखें' फ़ंक्शन का इस्तेमाल करता है. (Ifda43)
  • Modifier.drawWithCache API को अपडेट किया गया है, ताकि ContentDrawScope को DrawScope के बजाय रिसीवर स्कोप के तौर पर दिखाया जा सके. इससे, लागू करने के लिए, ड्रॉइंग निर्देशों को फिर से क्रम में लगाने की सुविधा मिलती है. यह ब्लेंड करने/ रंग देने के उन उदाहरणों के लिए फ़ायदेमंद है जिनमें ब्लेंड मोड एल्गोरिदम को सही तरीके से लागू करने के लिए, कॉन्टेंट पिक्सल को पहले रेंडर करना ज़रूरी है. (Ie7ec8)
  • SimpleContainer को PopupTestUtils.kt में ले जाएं (I78c57)
  • ConsumedData अब डेटा क्लास नहीं है. ज़्यादा जानकारी के लिए, https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 पर जाएं (I1737f)
  • आरटीएल हैंडल की पोज़िशन ठीक करें. (I6e1e0)
  • DrawScope और ContentDrawScope को ऐब्स्ट्रैक्ट क्लास के बजाय, इंटरफ़ेस के तौर पर फिर से तैयार किया गया है
    • DrawScope के CanvasDrawScope लागू किए गए
    • CanvasScope का इस्तेमाल करने के लिए, DrawScope को फिर से लागू किया गया
    • 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)

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

  • androidx के लिए, MissingGetterMatchingBuilder के लिए एपीआई लिंट की जांच की सुविधा चालू की गई है (I4bbea, b/138602561)
  • टेस्ट जोड़ें. (I6b8ae)
  • ComposeTestRule में ट्रांज़िशन चालू करें; ComposeTestRule से, ब्लिंक करने वाले कर्सर को चालू करने का विकल्प हटाएं. (If0de3)
  • KeyboardCapitalization IME का विकल्प जोड़ा गया (I8ac38)
  • CoreTextField (I72e6d) में, एक लाइन वाले कीबोर्ड का विकल्प जोड़ा गया
  • SimpleContainer को PopupTestUtils.kt में ले जाएं (I65c3e)
  • Radius API का नाम बदलकर CornerRadius कर दिया गया है, ताकि यह बेहतर तरीके से बताया जा सके कि Compose में इसका इस्तेमाल कैसे किया जाता है. दस्तावेज़ों को अपडेट किया गया, ताकि यह बताया जा सके कि नेगेटिव कोने रेडी को शून्य पर क्लैंप किया जाता है. (I130c7, b/168762961)
  • ACTION_DOWN (I94c5a, b/170320973) को छोड़कर, सभी कार्रवाइयों के लिए onTouchEvent के लिए गलत वैल्यू दिखाने वाले चाइल्ड Android व्यू को MotionEvents भेजना जारी रखकर, Android इंटरऑपरेबिलिटी को बेहतर बनाया गया
  • बॉक्स को इनलाइन फ़ंक्शन बनाया गया. (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)
  • 'देर तक दबाकर रखें' सुविधा को टेक्स्ट में ले जाएं. (Iff2bc)
  • एक्सपेरिमेंटल Modifier.pointerInput, इनपुट मॉडिफ़ायर को निलंबित करता है (Ia77d2)
  • सुलभता से जुड़ी कार्रवाइयों में, कॉपी/चिपकाना/काटना जोड़ा गया (I6db4f)
  • AndroidOwner के लिए सार्वजनिक कन्स्ट्रक्टर हटा दिया गया (Iacaef)
  • पॉप-अप और डायलॉग अब पैरंट विंडो से FLAG_SECURE इनहेरिट करते हैं. इसे साफ़ तौर पर कॉन्फ़िगर करने का विकल्प भी जोड़ा गया है (I64966, b/143778148, b/143778149)
  • अब खपत के डेटा में बदलाव किया जा सकता है. साथ ही, अब जिन एक्सटेंशन फ़ंक्शन का इस्तेमाल किया जाता है वे नया PointerInputChange नहीं दिखाते, बल्कि दिए गए PointerInputChange में बदलाव करते हैं.

    PointerEvent डेटा को बदलने के लिए, दो चरणों की प्रोसेस का यह पहला चरण है. इससे, उपयोगकर्ता कोड से दूसरे पॉइंटर डेटा में बदलाव नहीं किया जा सकता. दूसरा चरण, PointerInputFilter.onPointerEvent(...) से List<PointerInputChange> सामान लौटाने का तरीका हटाना होगा. (Id067e)

  • टेक्स्ट में टेक्स्ट चुनने की सुविधा बंद करना और उसका डेमो. (Ie7e97)

  • onGloballyPositioned को इनलाइन फ़ंक्शन बनाया गया (I15830)

  • OnPositionedModifier का नाम बदलकर OnGloballyPositionedModifier कर दिया गया है और onPositioned() का नाम बदलकर onGloballyPositioned कर दिया गया है. (I587e8, b/169083903)

  • hasPendingMeasureOrLayout प्रॉपर्टी को Owner में जोड़ा गया है. इससे पता चलता है कि Owner के पास कोई लेआउट बाकी है या नहीं. (I3d9f8, b/169038599)

  • प्रोग्राम के हिसाब से फ़ोकस हटाने के लिए एपीआई जोड़ा गया (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...) को हटा दिया गया है. इसके बजाय, PointerInputFilter.onPointerEvent(...) का इस्तेमाल किया जाना चाहिए. (I6f04a)

  • साइज़ में बदलाव

    • Size.getFlipped को हटाया गया
    • Size.rem को हटाया गया
    • Size.truncDiv (Ief44d, b/169790720) को हटाया गया
  • इनलाइन क्लास के लिए सेंटीनल वैल्यू को स्टैंडर्ड बनाने के तहत, अन्य इनलाइन क्लास (I97611, b/169797763) के साथ एक जैसा रखने के लिए, Color.Unset को Color.Unspecified में बदलें

  • TextOverflow.None को शामिल किया गया है. जब overflow का कोई वैल्यू नहीं है, तो Text अब ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने असल साइज़ की जानकारी देगा. (I175c9, b/158830170)

  • एपीआई के साथ लगातार काम करने के लिए, AnnotatedString.Builder.addStringAnnotation में मौजूद स्कोप पैरामीटर का नाम बदलकर टैग कर दिया गया है. (I7c8cb)

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

  • हर स्क्रोल पर सब-कंपोज़िशन में कम काम करके, LazyColumn/Row की स्क्रोलिंग परफ़ॉर्मेंस को बेहतर बनाया जाता है. कम्पोज़िशन क्लास के लिए, hasInvalidations() का नया तरीका जोड़ा गया. Recomposer के hasPendingChanges() तरीके का नाम बदलकर hasInvalidations() कर दिया गया (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Size.Unspecified के पैरामीटर को अपडेट किया गया है, ताकि वे Float.POSITIVE_INFINITY के बजाय, 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)

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

  • कई Graphics API अपडेट किए गए
    • स्केल और रोटेशन ट्रांसफ़ॉर्मेशन एपीआई को अपडेट किया गया है, ताकि DrawScope और DrawTransform में x/y निर्देशांक के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट निर्देशांक दिखाने के लिए एक ऑफ़सेट पैरामीटर का इस्तेमाल किया जा सके
    • Rect.expandToInclude और Rect.join के तरीकों को हटाया गया
    • दायरे के दस्तावेज़ को अपडेट किया गया, ताकि अंडाकार के साथ-साथ, दीर्घवृत्ताकार के बारे में भी बताया जा सके
    • दस्तावेज़ जोड़ा गया है, ताकि यह पता चल सके कि इनलाइन Radius क्लास के लिए, पब्लिक कन्स्ट्रक्टर को सीधे तौर पर नहीं बुलाया जाना चाहिए. इसके बजाय, Radius ऑब्जेक्ट को उनके फ़ंक्शन कन्स्ट्रक्टर के ज़रिए इंस्टैंशिएट किया जाना चाहिए
    • topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी करने के लिए, RoundRect API हटाए गए
    • Rect.translate के पक्ष में Rect.shift को बंद कर दिया गया है
    • RoundRect.grow और Rect.shrink एपीआई हटाए गए
    • RoundRect.outerRect का नाम बदलकर Rect.boundingRect किया गया
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीकों को हटाया गया
    • RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया
    • RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया
    • RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी में बदला गया
    • x/y त्रिज्या की वैल्यू के लिए, अलग-अलग पैरामीटर के बजाय त्रिज्या प्रॉपर्टी का इस्तेमाल करने के लिए, RoundRect कन्स्ट्रक्टर को अपडेट किया गया
    • साइज़ एपीआई हटा दिए गए हैं, जो यह मानते थे कि यह 0,0 पर ऑरिजिन वाला रेक्टैंगल है
    • Radius में डेस्ट्रक्टिंग एपीआई जोड़ा गया
    • RoundRect एक्सटेंशन के अलग-अलग फ़ंक्शन को प्रॉपर्टी के तौर पर माइग्रेट किया गया
    • (I8f5c7, b/168762961)
  • foundation.Box का इस्तेमाल बंद कर दिया गया है. इसके बजाय, कृपया foundation.layout.Box का इस्तेमाल करें. (Ie5950, b/167680279)
  • स्टैक का नाम बदलकर Box कर दिया गया. compose.foundation.layout में मौजूदा बॉक्स को हटा दिया जाएगा और इसके बजाय, नया बॉक्स जोड़ा जाएगा. नए बॉक्स में, एक से ज़्यादा चाइल्ड एलिमेंट होने पर, वे एक-दूसरे के ऊपर स्टैक हो जाते हैं. यह पिछले बॉक्स से अलग है, जो कॉलम की तरह काम करता था. (I94893, b/167680279)
  • बॉक्स को सजाने के पैरामीटर अब काम नहीं करते. अगर आपको अपने बॉक्स में सजावट/पैडिंग करनी है, तो इसके बजाय मॉडिफ़ायर (Modifier.background, Modifier.border, Modifier.padding) का इस्तेमाल करें (Ibae92, b/167680279)
  • कई Graphics API अपडेट किए गए
    • स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीकों के साथ DrawScope API को अपडेट किया गया है. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक में लागू होता है और कॉलबैक के ट्रिगर होने के बाद हट जाता है
    • राउंडेड रेक्टैंगल के बजाय पाथ का रेफ़रंस देने के लिए, clipPath दस्तावेज़ को अपडेट किया गया
    • clipPath में मौजूद राइट पैरामीटर के लिए, दस्तावेज़ में स्पेसिंग ठीक की गई
    • DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas किया गया और साइज़ पैरामीटर हटा दिया गया
    • इनसेट तरीके में dx/dy पैरामीटर के नाम बदलकर, horisontal और vertical कर दिया गया
    • इनसेट ओवरलोड जोड़ा गया है, जो सभी चार सीमाओं के लिए एक ही इनसेट वैल्यू देता है
    • इनसेट करने के तरीके से जुड़े दस्तावेज़ हटा दिए गए हैं. इनसे यह पता चलता था कि इनसेट, चारों तरफ़ लागू होगा
    • Rect क्लास के लिए दस्तावेज़ अपडेट किए गए
    • kdoc के स्टाइल से मैच करने के लिए, Rect पैरामीटर पर अपडेट की गई टिप्पणियां
    • Rect.join और Rect.expandToInclude को हटाया गया
    • Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को बंद कर दिया गया
    • (If086a, b/167737376)
  • @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)
  • Owner से onInvalidate() को हटाया गया -- 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 पर onNode और अन्य ग्लोबल तरीके जोड़े गए हैं, क्योंकि मौजूदा ग्लोबल तरीके बंद होने वाले हैं. (Ieae36)

वर्शन 1.0.0-alpha02

2 सितंबर, 2020

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

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

  • layoutnode के बाउंड बदलने पर, मालिक को सूचना देने के लिए कॉलबैक हटाएं. (If654e, b/166106882)
  • वेक्टर ग्राफ़िक पाथ पर, filltype पैरामीटर के लिए सहायता जोड़ी गई है, ताकि evenOdd या NonZero पाथ फ़िल के नियमों के हिसाब से, आकृतियों के कट्सआउट का इस्तेमाल किया जा सके. (I43dd2)
  • अपटाइम और वेलोसिटी अब इनलाइन क्लास हैं (I48f4a)
  • अब कुल समय, इनलाइन क्लास (I565eb) है
  • layoutnode के बाउंड में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (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 का इस्तेमाल करें. ध्यान दें कि आने वाले समय में, सीधे तौर पर व्यू और व्यू ग्रुप को कंपोज़ नहीं किया जा सकेगा. ऐसा तब तक नहीं किया जा सकेगा, जब तक कि ये कंपोज़िशन ट्री में लीफ़ न हों. ऐसा तब किया जा सकता है, जब AndroidView का इस्तेमाल किया जा रहा हो. (I29b1e, b/163871221)
  • FocusState2 अब काम नहीं करता और इसे FocusState से बदल दिया गया है (Ia8b79, b/160822876, b/160923332)
  • इस्तेमाल नहीं किए जा रहे AndroidView ओवरलोड हटा दिए गए हैं. (I946b9, b/163802393)
  • कस्टम उत्सर्जन अब यह बता सकते हैं कि उसके एक या एक से ज़्यादा सेटर को छोड़ा जा सकता है और उत्सर्जन से अलग तरीके से फिर से बनाया जा सकता है. (Ibbd13)
  • वेक्टर क्लास को डेटा क्लास में बदल दिया गया है, क्योंकि कंपोज़िशन के लिए एक ही ऑब्जेक्ट इंस्टेंस का इस्तेमाल किया जाता है.

    अगर वेक्टर के कॉन्टेंट में बदलाव होता है, तो उसे फिर से खींचने के लिए, VectorPainter के लिए mutableStateOf फ़्लैग जोड़ा गया है.

    VectorPainter का हिस्सा बनने के लिए, VectorComponent इंस्टेंस को फिर से तैयार किया गया है, क्योंकि इसका इस्तेमाल सभी कंपोज़िशन में फिर से किया जाता है.

    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)

  • SemanticsPropertyKey में mergePolicy lambda जोड़ा गया. इसका इस्तेमाल, सभी वंश को मर्ज करने के लिए, सेमेंटेक्स को मर्ज करने की कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के मुताबिक, अगर पैरंट वैल्यू पहले से मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)

  • कंस्ट्रेंट अब एक इनलाइन क्लास है (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 के सभी इस्तेमाल को रेक्ट के साथ अपडेट किया गया है. साथ ही, माइग्रेशन में मदद करने के लिए, एनोटेशन के साथ सही तरीके से 'इस्तेमाल न करें'/'इसकी जगह यह इस्तेमाल करें' जोड़ा गया है. (I37038, b/162627058)

  • अब काम नहीं करने वाले KeyEvent2 को हटा दिया गया है. इसके बजाय, KeyEvent का इस्तेमाल करें. (Ied2d0, b/162097587)

  • KeyEvent में एक यूनिकोड प्रॉपर्टी होती है. इसका इस्तेमाल, तय की गई कुंजी और मेटा बटन की स्थिति के कॉम्बिनेशन (If3afc) से जनरेट किए गए यूनिकोड वर्ण को पाने के लिए किया जा सकता है

  • DelayUp कस्टम इवेंट और उससे जुड़ी क्लास को ऑप्ट इन एपीआई बना दिया गया है, क्योंकि इसकी ज़्यादा संभावना है कि इसे बदल दिया जाए. (I56d6f)

  • दो PointerEventPasses हटा दिए गए हैं, जिनकी अब ज़रूरत नहीं है. (I3dd9d)

  • Paragraph.paint में पैरामीटर के तौर पर रंग, शैडो, और TextDecoration जोड़ें. यह फ़ंक्शन, पैराग्राफ़ को बार-बार बनाने से रोकने के लिए काम का है. (I81689)

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

  • TextField से onFocusChanged कॉलबैक हटाए गए. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
  • Modifier.drawBorder को बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border data class को 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)

  • 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)
  • Alt हार्डवेयर बटन (I9036b) के लिए सहायता जोड़ी गई
  • FocusManager का इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus(), Modifier.focusObserver() और Modifier.focusRequester() का इस्तेमाल करें. (I74ae4, b/162211322)
  • loadVectorResource, trimPath एट्रिब्यूट (I808fe) के साथ काम करता है
  • डायलॉग को यूज़र इंटरफ़ेस (यूआई) पर ले जाना (I47fa6)
  • दो PointerEventPasses हटा दिए गए हैं, जिनकी अब ज़रूरत नहीं है. (I33ca7)
  • PointerInteropModifier लागू किया गया है, जो MotionEvents पाने और Compose के साथ इंटरैक्ट करने की सुविधा देता है. ऐसा लगता है कि आपने Android व्यू लागू किया है. (Ieb08c)
  • अब इस्तेमाल नहीं किए जा सकने वाले टैग मॉडिफ़ायर को हटा दिया गया है. इसके बजाय, कृपया layoutId का इस्तेमाल करें. (Idaa05, b/162023919)
  • दाएं से बाएं लिखने की सुविधा के लिए एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient जोड़ा गया है. इसका इस्तेमाल, लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)
  • वेक्टर ग्राफ़िक में पाथ ट्रिमिंग की सुविधा जोड़ी गई है (Ie16c9, b/158188351)
  • Modifier.layout() जोड़ा गया, जिसकी मदद से आसानी से कस्टम लेआउट मॉडिफ़ायर बनाया जा सकता है (I73b69, b/161355194)
  • नया AndroidView API जोड़ा गया है और मौजूदा API को बंद कर दिया गया है. (I5bcfd)
  • Modifier.plus को बंद कर दिया गया है. इसके बजाय, Modifier.then का इस्तेमाल करें. 'इसके बाद' में क्रम से लगाने का सिग्नल ज़्यादा होता है. साथ ही, इसमें Modifier.padding().background() + anotherModifier टाइप करने की अनुमति नहीं होती, जिससे चेन टूट जाती है और उसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)
  • व्यू हैरारकी में Compose कॉन्टेंट को होस्ट करने के लिए, [Abstract]ComposeView व्यू के सबक्लास जोड़ें. (I46357)
  • Row और Column अब इनलाइन फ़ंक्शन हैं. इनका इस्तेमाल करने में होने वाले खर्च को काफ़ी कम किया जा सकता है. (I75c10)
  • SubcomposeLayout जोड़ा गया है. यह एक लो लेवल प्रिमिटिव है, जो मेज़र करने के दौरान चाइल्ड को कंपोज़ करने की अनुमति देता है. ऐसा तब किया जाता है, जब हमें सबट्री कंपोज़िशन के लिए, मेज़र करने के दौरान ही उपलब्ध कुछ वैल्यू का इस्तेमाल करना हो. उदाहरण के लिए, SubcomposeLayout का इस्तेमाल करके, WithConstraints लागू नहीं किया जाता. (I25cc8)
  • Compose हैरारकी (Icdf26, b/161336532) के रूट के हिसाब से, किसी SemanticsNode की पोज़िशन पाने के लिए SemanticsNode.positionInRoot जोड़ा गया
  • MotionEvents, 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 को कैनवस इंटरफ़ेस से हटा दिया गया है
    5. DrawScope को रीफ़ैक्टर करने के लिए, स्टब EmptyCanvas क्लास बनाई गई, ताकि इसे लेटिनिट के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
    6. ClipOp के एन्यूम को Pascal Case में बदला गया
    7. FilterQuality के एन्म को Pascal Case में बदला गया
    8. StrokeJoin एनम को पास्कल केस में बदला गया
    9. PointMode के एन्म को पास्कल केस में बदला गया
    10. PaintingStyle के एन्म को Pascal Case में बदला गया
    11. PathFillType के एन्म को पास्कल केस में बदला गया
    12. StrokeCap के एनम को पास्कल केस में बदला गया
    13. DrawCache को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
    14. DrawScope को अपडेट किया गया है, ताकि अब fillPaint और strokePaint के इंटरनल पैरामीटर के लिए, 'देर से डेलिगेट करना' सुविधा का इस्तेमाल न किया जा सके
    15. कम ओवरहेड के लिए, बॉक्स के इस्तेमाल से बचने के लिए इमेज कॉम्पोज़ेबल को अपडेट किया गया
    16. @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
    17. हर पाथ निर्देश के लिए @Immutable एनोटेशन रखने के लिए, PathNode को अपडेट किया गया
    18. वेक्टर सब-कंपोज़िशन को अपडेट किया गया है, ताकि बराबरी की जांच के लिए ज़रूरत से ज़्यादा शर्तों की जांच न की जाए. ऐसा इसलिए किया गया है, क्योंकि कंपोज पहले से ही इन शर्तों को मैनेज करता है
    19. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect के साथ काम करने वाले कंस्ट्रक्टर के पुराने तरीके बंद किए गए
    20. @Immutable और @Stable एपीआई के साथ ब्रश क्लास और फ़ंक्शन कंस्ट्रक्टर अपडेट किए गए
    21. VertexMode enum को PascalCase में अपडेट किया गया
    22. DrawScope के selectPaint तरीके को अपडेट किया गया है, ताकि पेंट के स्ट्रोक पैरामीटर बदलने पर, उन्हें कंडीशन के हिसाब से बदला जा सके
    23. डेस्ट्रक्चर करने वाले एपीआई को जोड़ने के लिए, साइज़ को अपडेट किया गया. साथ ही, UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया और इस्तेमाल न किए गए तरीकों को हटा दिया गया
  • एपीआई लेवल के आधार पर, Android फ़्रेमवर्क के BlendModes और PorterDuff मोड के बीच सही तरीके से मैप करने के लिए, Compose BlendMode API के इस्तेमाल को अपडेट किया गया. BlendMode#isSupported API को सुविधा क्वेरी के तौर पर जोड़ा गया है. इससे यह पता चलता है कि BlendMode का इस्तेमाल करने से पहले, डिवाइस पर यह सुविधा काम करती है या नहीं. (I0ef42)
  • LazyItemScope को, Lazy lists के 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 और फ़ाउंडेशनल 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 वर्शन का इस्तेमाल करने के लिए, आपको डिपेंडेंसी का एलान करना में ऊपर दिखाए गए नए कोड स्निपेट के हिसाब से, अपनी डिपेंडेंसी अपडेट करनी होंगी.

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

  • Modifier.focus, Modifier.focusRequester, Modifier.focusObserver के इस्तेमाल की वजह से, FocusModifier का इस्तेमाल बंद कर दिया गया है. 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)
  • टेक्स्ट फ़ील्ड चुनने के लिए, फ़्लोटिंग टूलबार जोड़ें. (Ie8b07)
  • कुंजी इनपुट से जुड़े एपीआई (I53c0a) के लिए, प्रयोग के तौर पर एपीआई एनोटेशन जोड़ा गया
  • Focus से जुड़े सभी एपीआई के लिए, एक्सपेरिमेंट के तौर पर एपीआई एनोटेशन जोड़ा गया है (I53b24, b/160903352)
  • FocusState2 जोड़ा गया है, जो FocusDetailedState की जगह लेगा (I0a3ba, b/160822595)
  • ExperimentalFocus जोड़ा गया, जो Focus API के लिए @OptIn एनोटेशन है. (I1544b, b/160820961)
  • IntBounds यूनिट क्लास जोड़ी गई है, जो लेआउट से इंटीजर पिक्सल के बाउंड दिखाती है. इसका इस्तेमाल करने के लिए, PopupPositionProvider के एपीआई को अपडेट किया गया है. (I0d8d0, b/159596546)
  • अब कॉम्पोज़िशन को हटाने के लिए, लागू करने वाले को clear() तरीके की ज़रूरत है (Ibe697)
  • KeyEvent अब काम नहीं करता. इसे KeyEvent2 से बदल दिया गया है (I68730)
  • फ़ाइंडर की जांच करने के लिए, एक नया वैकल्पिक फ़्लैग useUnmergedTree जोड़ा गया है. (I2ce48)
  • LayoutNode को एक्सपेरिमेंटल एपीआई बनाया (I4f2e9)
  • अलग-अलग तरह की इनलाइन क्लास में कॉपी करने के तरीके जोड़े गए हैं. इनमें ये शामिल हैं:

    • ऑफ़सेट
    • साइज़
    • दायरा
    • मोशन
    • TransformOrigin

    • इंस्टेंस कॉपी करने के तरीके (Ife290, b/159905651) के पक्ष में, Size.copy कंपैनियन ऑब्जेक्ट का मेथड बंद किया गया

  • पॉप-अप, डायलॉग, और मेन्यू में अब कॉन्टेक्स्ट के हिसाब से MaterialTheme (Ia3665, b/156527485) का इस्तेमाल किया जा रहा है

  • TextDirection का नाम बदलकर ResolvedTextDirection (I3ff38) कर दिया गया है

  • Layout() फ़ंक्शन के मेज़र ब्लॉक से लेआउट डायरेक्शन पैरामीटर हटाया गया. हालांकि, लेआउट डायरेक्शन, मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए कॉलबैक में उपलब्ध है

  • फिर से इस्तेमाल करने के लिए, SelectionHandles को फिर से तैयार करें. (I420e0)

  • क्लिक किए जा सकने की सुविधा हटा दी गई. Modifier.clickable (I84bdf) का इस्तेमाल करना

  • TestTag और सेमेटिक्स मिटा दिए गए हैं. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)

  • इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कोई (I5205a, b/158123804) मौजूद होता था, तो Compose कंपाइलर प्लग इन, कॉन्स्ट्रक्टर के कॉल को आसानी से इंटरसेप्ट कर लेता था

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

  • Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की Int पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)

  • AndroidView composable में एक मॉडिफ़ायर पैरामीटर जोड़ा गया था. (I48a88, b/158746303)

  • Semantics() का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.semantics() का इस्तेमाल करें. (I72407, b/158841414)

  • viewModel() composable जोड़ें, जो पहले से बनाए गए ViewModel को बनाने या पाने की सुविधा देता है. यह सुविधा, ऐक्टिविटी या फ़्रैगमेंट में काम करने की तरह ही काम करती है (I5fdd1)

  • IntPx के इस्तेमाल को Int से बदला गया. IntPxPosition को IntOffset से बदला गया. IntPxSize को IntSize से बदला गया. (Ib7b44)

  • साइज़ की जानकारी दिखाने के लिए इस्तेमाल की जाने वाली क्लास की संख्या को कम करने के लिए, PxSize के बजाय साइज़ क्लास के इस्तेमाल को स्टैंडर्ड बनाएं. इससे, इनलाइन क्लास के फ़ायदे मिलते हैं. इनसे, दो फ़्लोट वैल्यू को पैक करने के लिए लंबी वैल्यू का फ़ायदा मिलता है. इन वैल्यू से, चौड़ाई और ऊंचाई को फ़्लोट के तौर पर दिखाया जाता है. (Ic0191)

  • पोज़िशन की जानकारी दिखाने के लिए इस्तेमाल की जाने वाली क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे, इनलाइन क्लास के फ़ायदे मिलते हैं. इनमें, दो फ़्लोट वैल्यू को पैक करने के लिए लॉन्ग का फ़ायदा लेना शामिल है. इन वैल्यू का इस्तेमाल, x और y ऑफ़सेट को फ़्लोट के तौर पर दिखाने के लिए किया जाता है. (I3ad98)

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

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

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

  • पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्राइमटिव टाइप पर भरोसा करने के लिए, रीफ़ैक्टर करने की बड़ी कोशिश के तहत, अलग-अलग compose क्लास में 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 इंटरफ़ेस को लागू करने और LayoutDirection देने के लिए, DrawScope को अपडेट किया गया है ContentDrawScope में DrawScope सबक्लास को मिटा दिया गया है Painter और PainterModifier को अपडेट किया गया है, ताकि वे अब RTL प्रॉपर्टी को खुद मैनेज न करें, क्योंकि DrawScope पहले से ही इसे मैन्युअल तौर पर उपलब्ध कराता है (I1798e)

  • DoubleTapGestureFilter अब पूरे ट्री में, SingleTapGestureFilter के बारे में साफ़ तौर पर बताता है. (If92b1)

  • अलाइनमेंट एपीआई को अपडेट किया गया और एब्सोलूट अलाइनमेंट (जो आरटीएल कॉन्टेक्स्ट में अपने-आप मिरर नहीं होता) के लिए सहायता जोड़ी गई (I38cd3)

  • DrawLayer modifiers api में बदलाव किया गया है: outlineShape का नाम बदलकर shape कर दिया गया है. साथ ही, इसकी डिफ़ॉल्ट वैल्यू RectangleShape है और अब इसकी वैल्यू शून्य नहीं हो सकती; clipToOutline का नाम बदलकर clip कर दिया गया है; clipToBounds को हटा दिया गया है, क्योंकि यह RectangleShape के साथ clip == true के बराबर है (I7ef11, b/155075735)

  • अपडेट किए गए बेहतर लेवल के Compose API, जो CanvasScope को एक्सपोज़ करने के लिए Canvas को एक्सपोज़ करते हैं. इससे उपभोक्ताओं को अपने Paint ऑब्जेक्ट मैनेज करने की ज़रूरत नहीं पड़ती. जिन उपयोगकर्ताओं को अब भी कैनवस का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, कैनवस पर ड्रॉ करने के निर्देश देने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)

  • WithConstraints ट्रेलिंग लेम्ब्डा एपीआई को बदल दिया गया है. अब दो पैरामीटर के बजाय, इसमें एक रिसीवर स्कोप है. यह स्कोप, constraints और layoutDirection के अलावा, Dp (I91b9a, b/149979702) में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी देता है

  • LayoutModifier2 का नाम बदलकर LayoutModifier किया गया. (Id29f3)

  • अब इस्तेमाल में नहीं होने वाले LayoutModifier इंटरफ़ेस को हटा दिया गया है. (I2a9d6)

  • Layout और LayoutModifier2 में मौजूद इंट्रिन्सिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिन्सिक क्वेरी एपीआई को, लेआउट के दिशा-निर्देश के साथ, अपने-आप भेजे गए लेआउट की जानकारी देता है. (Id9945)

  • लेआउट और LayoutModifier के बच्चों को, लेआउट के अलग-अलग डायरेक्शन के हिसाब से मेज़र किया जा सकता है. (Ibd731)

  • एक ही पैरंट लेआउट में चाइल्ड लेआउट के ड्रॉइंग क्रम को कंट्रोल करने के लिए, नया Modifier.zIndex() जोड़ा गया है. DrawLayerModifier पर मौजूद elevation प्रॉपर्टी का नाम बदलकर shadowElevation कर दिया गया है. यह अब ड्रॉइंग क्रम को कंट्रोल नहीं करती. DrawShadow के पैरामीटर का क्रम बदल गया है: अब ऊंचाई पहले और आकार दूसरे नंबर पर है. साथ ही, RectangleShape डिफ़ॉल्ट तौर पर लागू होता है. (I20150, b/152417501)

  • Owner में onSizeChange और onPositionChange को हटाया गया. (I5c718)

  • Constraints2 जोड़ा गया, जो Constraints की कॉपी है. यह सिर्फ़ IntPx के बजाय Int constraints वैल्यू के साथ काम करता है. 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 किया गया
    • बेहतर तरीके से मैच करने के लिए, 'अंदर फ़िट करें' का नाम बदलकर 'अंदर फ़िट करें' किया गया
    • ImageView.ScaleType के बराबर
    • दस्तावेज़ जोड़ा गया है, जिसमें बताया गया है कि Crop और Alignment.Center के कॉम्बिनेशन से वही नतीजा मिलता है जो ImageView.ScaleType.CENTER_CROP से मिलता है. साथ ही, Alignment.Center के साथ इस्तेमाल किए गए Fit से वही नतीजा मिलता है जो ImageView.ScaleType.FIT_CENTER से मिलता है. इसके अलावा, Alignment.Center के साथ इस्तेमाल किए गए Inside से वही नतीजा मिलता है जो 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) के साथ मॉडिफ़ायर प्लस ऑपरेटर को बदला गया

  • किसी लेयर के लिए, डिसप्ले में दिखने वाले ड्रॉइंग कमांड की सूची को ऑफ़सेट करने के लिए, ट्रांसलेशनX/Y प्रॉपर्टी जोड़ी गई हैं. यह ऐनिमेशन या टच इवेंट के जवाब में कॉन्टेंट को मूव करने के लिए काम आता है. (I8641c)

  • लेयर एपीआई में pivotX, pivotY पैरामीटर जोड़े गए हैं, ताकि किसी लेयर पर किसी खास पॉइंट के आस-पास घुमाने और स्केलिंग करने में मदद मिल सके (Icf7c3)

  • OnPositioned और OnChildPositioned कमपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)

  • LayerModifier जोड़ा गया है. यह एक ऐसा मॉडिफ़ायर है जिसकी मदद से, किसी लेआउट के लिए रेंडर नोड जोड़ा जा सकता है. इसकी मदद से, क्लिपिंग, ओपैसिटी, रोटेशन, स्केलिंग, और शैडो सेट किए जा सकते हैं. यह RepaintBoundary की जगह ले लेगा. (I7100d, b/150774014)

  • लेआउट डायरेक्शन को पैरंट लेआउट नोड से बच्चों तक पहुंचाया गया. लेआउट की दिशा में बदलाव करने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)

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

  • Compose लेआउट में आरटीएल के लिए शुरुआती सहायता (Ia5519)

  • Density और DensityScope को एक इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय, सिर्फ़ with(density) (I11cb1)

  • LayoutCoordinates को बदलकर, दी गई AlignmentLines को मैप के बजाय सेट बनाया गया है. साथ ही, LayoutCoordinates को वैल्यू वापस पाने के लिए, get() ऑपरेटर लागू किया गया है. इससे, हर मॉडिफ़ायर के लिए नया कलेक्शन बनाए बिना, मॉडिफ़ायर के लिए सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. (I0245a)

  • LayoutCoordinates में अब पोज़िशन प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के मामले में, पोज़िशन प्रॉपर्टी का कोई मतलब नहीं है. इसके बजाय, डेवलपर को एक लेआउट कोऑर्डिनेट से दूसरे लेआउट कोऑर्डिनेट में बदलने का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.

    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 पैरामीटर जोड़ा गया है, ताकि मौजूदा ImageAsset (I0ea9e) के सबसेट को ड्रॉ किया जा सके

  • रंगों को बॉक्स में डाले बिना, सेट नहीं की गई वैल्यू दिखाने के लिए, 'सेट नहीं किया गया' रंग जोड़ा गया. (If901a)

  • बदलाव करने के लिए, वैकल्पिक पिवट निर्देशांक का इस्तेमाल करने के लिए, Canvas.rotate और Canvas.scale एक्सटेंशन के तरीके जोड़े गए. ये डिफ़ॉल्ट रूप से, कैनवस के मौजूदा अनुवाद के सबसे ऊपर बाएं कोने में दिखते हैं.

    साथ ही, Canvas.rotateRad को एक एक्सटेंशन के तौर पर भी जोड़ा गया है, ताकि एक जैसी सुविधाएं मिल सकें (Ibaca6)

  • ImageAsset से पिक्सल की जानकारी पाने के लिए, PixelMap API बनाया गया. (I69ad6)

  • toFrameworkRect/toFrameworkRectF का नाम बदलकर, toAndroidRect/toAndroidRectF कर दिया गया है, ताकि compose और उन Android फ़्रेमवर्क एपीआई के बीच ऑब्जेक्ट कन्वर्ज़न के लिए, नाम रखने के तरीके से मेल खाया जा सके जिन पर ये एपीआई बनाए गए हैं. इन एपीआई के दस्तावेज़ों को भी अपडेट किया गया है (I86337)

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

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

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

  • TextDirection.Content (I48f36) जोड़ा गया

  • TextDecoration.plus ऑपरेटर (I0ad1a) जोड़ा गया

  • TextDirectionAlgorithm की enum वैल्यू (Icc944) से Force को हटा दिया गया है

  • TextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)

  • TextField में टेक्स्ट चुनने के लिए, LongPressAndDrag को लागू करता है. (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)

  • (टेक्स्ट/पैराग्राफ़/स्पैन) स्टाइल के लिए प्लस ऑपरेटर जोड़ा गया है, जो merge() फ़ंक्शन को डेलिगेट करता है. (Ia1add)

  • FontWeight.lerp अब स्नैप नहीं करता. यह अब भी डेटा क्लास है. (I521c2)

  • FontWeight कन्स्ट्रक्टर अब सार्वजनिक है. यह अब डेटा क्लास नहीं है. (Id6b1f)

  • TextLayoutResult में getLineStart, getLineEnd, getEllipsisOffset, और getEllipsisCount जोड़ें (Ibc801)

  • ui-text मॉड्यूल का नाम बदलकर ui-text-core (I57dec) कर दिया गया है

  • इस्तेमाल नहीं की जा रही साइज़ क्लास को हटा दिया गया है, क्योंकि ui-geometry मॉड्यूल में एक डुप्लीकेट साइज़ क्लास है जिसका इस्तेमाल किया जा रहा है. (I1b602)

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

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

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

  • टेक्स्ट फ़ील्ड में मौजूद onFocusChange कॉलबैक का नाम बदलकर onFocusChanged कर दिया गया है (Ida4a1)
  • VerticalScroller और HoriziontalScroller अब काम नहीं करते. कॉलम/लाइन के व्यवहार और पैरामीटर के साथ पहले से मौजूद सुविधा के लिए, ScrollableColumn और ScrollableRow का इस्तेमाल करें. इसके अलावा, अपने एलिमेंट पर Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करें. इसी तरह, ScrollerPosition को ScrollState के लिए बंद कर दिया गया है' (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose का नाम बदलकर runOnIdle कर दिया गया (I83607)
  • जांच करने वाले कई एपीआई के नाम बदल दिए गए हैं, ताकि उन्हें इस्तेमाल करना आसान हो. सभी findXYZ एपीआई का नाम बदलकर onNodeXYZ कर दिया गया है. doXYZ वाले सभी एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
  • अब नए कंपज़िशन की ज़रूरत के बिना, ViewGroups में कंपोज किया जा सकता है. उदाहरण के लिए, ViewInteropDemo देखें. (I9ab0b, b/160455080)
  • MutableVector (Icccf7) में sortWith और removeRange जोड़ा गया
  • TextField के लिए चुने गए टेक्स्ट में बदलाव करने के लिए, टेक्स्ट चुनने के लिए खींचें और छोड़ें सुविधा लागू करें. (I27032)
  • Shader इनलाइन क्लास को हटा दिया गया है, जो NativeShader expect क्लास को रैप करती थी. साथ ही, NativeShader का नाम बदलकर 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 हटाने पर, पॉइंटर इनपुट डिस्पैच की वजह से ऐप्लिकेशन क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (Iab398, b/157998762)

  • Radius क्लास को इनलाइन क्लास में बदला गया. डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल करके, साथी बनाने के तरीकों को हटा दिया गया है. इससे y-ऐक्सिस के साथ त्रिज्या, ज़रूरी x-ऐक्सिस त्रिज्या पैरामीटर से मैच कर पाएगी.

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

  • Recompose composable अब काम का नहीं है. ज़्यादातर मामलों में, MutableState असाइनमेंट की वजह से फिर से कॉम्पोज़ होना चाहिए. इसके अलावा, हमारा सुझाव है कि मौजूदा स्कोप को फिर से कॉम्पोज़ करने के लिए, invalidate फ़ंक्शन का इस्तेमाल करें. (Ifc992)

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

  • Compose के कंपाइलर की कोड जनरेशन की रणनीति में बदलाव करता है. बदलाव से पहले, Compose कंपाइलर कॉल को कंपोज करने लायक फ़ंक्शन में बदल देता था. इस बदलाव के बाद, हम किसी कॉम्पोज़ेबल फ़ंक्शन के मुख्य हिस्से में बदलाव करते हैं. हालांकि, कॉल साइट में ज़्यादातर मामलों में कोई बदलाव नहीं किया जाता.

    इसका मतलब है कि Compose रनटाइम के साथ काम करने वाला ज़्यादातर लॉजिक, कॉल साइट के बजाय फ़ंक्शन के मुख्य हिस्से की शुरुआत में होता है.

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

    इस काम के लिए, सभी कंपोजेबल फ़ंक्शन के JVM सिग्नेचर में बदलाव किया गया है. एक पैरामीटर को स्वीकार करने वाले कॉम्पोज़ेबल फ़ंक्शन को, तीन पैरामीटर को स्वीकार करने वाले फ़ंक्शन में बदल दिया जाता है. अतिरिक्त पैरामीटर, कंपोजर, एक 'की' इंटिजर होते हैं. यह एक बिटमास्क इंटिजर होता है, जिसका इस्तेमाल कॉल के ज़रिए मेटाडेटा को प्रसारित करने के लिए किया जाता है.

    अब 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. Compile time के अतिरिक्त पैरामीटर शामिल करने के लिए, restartableFunction और restartableFunctionN को अपडेट किया गया था (I60756, b/143464846)

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

  • DrawLayerModifier (I00aa4) के पक्ष में RepaintBoundary को हटाया गया

  • 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) था

  • गड़बड़ी ठीक की गई: जब AnnotatedString पर फ़ॉन्ट वेट और फ़ॉन्ट स्टाइल नेस्ट किए जाते हैं, तो टेक्स्ट सही तरीके से रेंडर नहीं होता. (I77a9d)

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

  • ui-android-text मॉड्यूल का नाम बदलकर ui-text-android कर दिया गया है (I68cbe)