लिखने के लिए यूज़र इंटरफ़ेस (यूआई)
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(सभी compose पैकेज के लिए एपीआई रेफ़रंस दस्तावेज़ देखें)
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
11 दिसंबर, 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
संरचना
Compose, androidx
में सात Maven ग्रुप आईडी का कॉम्बिनेशन है. हर ग्रुप में, सुविधाओं का एक टारगेट किया गया सबसेट होता है. साथ ही, हर ग्रुप के लिए रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, रिलीज़ नोट के हर सेट के ग्रुप और लिंक के बारे में बताया गया है.
ग्रुप | ब्यौरा |
---|---|
compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, अपने Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
compose.compiler | @Composable फ़ंक्शन को बदलें और Kotlin कंपाइलर प्लग इन की मदद से ऑप्टिमाइज़ेशन चालू करें. |
compose.foundation | इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपना डिज़ाइन सिस्टम बनाने के लिए फ़ाउंडेशन को बढ़ाएं. |
compose.material | इस्तेमाल के लिए तैयार Material Design कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का सबसे ऊपरी लेवल का एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं. |
compose.material3 | मटीरियल डिज़ाइन के अगले वर्शन, Material Design 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. Material 3 में, अपडेट की गई थीम और कॉम्पोनेंट के साथ-साथ, Material You की डाइनैमिक कलर जैसी सुविधाएं शामिल हैं. इसे Android 12 के नए विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है. |
compose.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेटस मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, 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()
को पेश किया गया, ताकि मॉडिफ़ायर नोड, कॉम्पोज़िशन को लोकल तौर पर पढ़े बिना, मौजूदा AndroidView
को ऐक्सेस कर सकें. (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
फ़ंक्शन को कॉल करने के लिए, Kotlinin
सिंटैक्स का इस्तेमाल किया जा सकता है. (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
एक्सटेंशन प्रॉपर्टी की मदद से, डेवलपर AndroidWindowInsets
का इस्तेमाल बंद कर सकते हैं. इससे हैरारकी में अलग-अलग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
से काफ़ी मिलता-जुलता है. हालांकि, इनमें दो छोटी-मोटी बातें अलग हैं:- अगर पॉइंटर को मूव इवेंट भेजे बिना मूव किया गया है, तो डाउन इवेंट भेजने पर, इवेंट का समय पहले से ही सेट हो जाएगा. साथ ही, डाउन इवेंट भेजने से पहले, मूव इवेंट भेज दिया जाएगा. ऐसा इसलिए होगा, क्योंकि पहले के तरीके में इवेंट का समय सेट करने के लिए, मूव इवेंट भेजने की ज़रूरत नहीं होती थी.
updatePointerTo()
move()
down()
नए तरीके से लागू करने पर भी, 'स्थान बदलना' इवेंट भेजा जाता है. हालांकि, इस खास स्थिति में इवेंट का समय आगे नहीं बढ़ता. - अगर पॉइंटर को मूव इवेंट भेजे बिना ऊपर की ओर ले जाया गया है, तो ऊपर की ओर ले जाने का इवेंट भेजने से पहले, पिछले वर्शन में इवेंट का समय आगे बढ़ जाता है और मूव इवेंट भेजा जाता है. नए तरीके में, इनमें से कोई भी काम नहीं किया जाता: पॉइंटर की नई पोज़िशन सिर्फ़ अप इवेंट के ज़रिए दिखेगी.
आखिर में, दिए गए पॉइंटर की मौजूदा स्थिति पाने के लिए,
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
को Kotlin1.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 और AGP7.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)
- EditingBuffer कन्स्ट्रक्टर पैरामीटर से
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)
- इस्तेमाल नहीं किए गए OffsetBase इंटरफ़ेस को हटाना
- एपीआई के एक जैसे प्लैटफ़ॉर्म के लिए, Offset और IntOffset क्लास को अलाइन करें
- Offset API के साथ काम करने के लिए, IntOffset.Origin का नाम बदलकर IntOffset.Zero करें
- उपयोगकर्ताओं को अपने कैनवस इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas को कैनवस इंटरफ़ेस से हटा दिया गया है
- DrawScope को रीफ़ैक्टर करने के लिए, स्टब EmptyCanvas क्लास बनाई गई, ताकि इसे लेटिनिट के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
- ClipOp के एन्यूम को Pascal Case में बदला गया
- FilterQuality के एन्म को Pascal Case में बदला गया
- StrokeJoin एनम को पास्कल केस में बदला गया
- PointMode के एन्म को पास्कल केस में बदला गया
- PaintingStyle के एन्म को Pascal Case में बदला गया
- PathFillType के एन्म को पास्कल केस में बदला गया
- StrokeCap के एनम को पास्कल केस में बदला गया
- DrawCache को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है, ताकि अब fillPaint और strokePaint के इंटरनल पैरामीटर के लिए, 'देर से डेलिगेट करना' सुविधा का इस्तेमाल न किया जा सके
- कम ओवरहेड के लिए, बॉक्स के इस्तेमाल से बचने के लिए इमेज कॉम्पोज़ेबल को अपडेट किया गया
- @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
- हर पाथ निर्देश के लिए @Immutable एनोटेशन रखने के लिए, PathNode को अपडेट किया गया
- वेक्टर सब-कंपोज़िशन को अपडेट किया गया है, ताकि बराबरी की जांच के लिए ज़रूरत से ज़्यादा शर्तों की जांच न की जाए. ऐसा इसलिए किया गया है, क्योंकि कंपोज पहले से ही इन शर्तों को मैनेज करता है
- फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect के साथ काम करने वाले कंस्ट्रक्टर के पुराने तरीके बंद किए गए
- @Immutable और @Stable एपीआई के साथ ब्रश क्लास और फ़ंक्शन कंस्ट्रक्टर अपडेट किए गए
- VertexMode enum को PascalCase में अपडेट किया गया
- DrawScope के selectPaint तरीके को अपडेट किया गया है, ताकि पेंट के स्ट्रोक पैरामीटर बदलने पर, उन्हें कंडीशन के हिसाब से बदला जा सके
- डेस्ट्रक्चर करने वाले एपीआई को जोड़ने के लिए, साइज़ को अपडेट किया गया. साथ ही, 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)
-
- 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. जिन पैरामीटर को कंपाइल के समय “स्टैटिक” माना जाता है उनकी तुलना अब रनटाइम में नहीं की जाती या उन्हें स्टोर नहीं किया जाता. इससे तुलना की संख्या कम हो जाती है और स्लॉट टेबल का साइज़ भी कम हो जाता है. 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)