Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(सभी कंपोज़ पैकेज के लिए, एपीआई रेफ़रंस दस्तावेज़ देखें)
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा वर्शन |
---|---|---|---|---|
16 जुलाई, 2025 | 1.8.3 | - | 1.9.0-beta03 | - |
संरचना
Compose, androidx
में मौजूद सात Maven Group Id का कॉम्बिनेशन है. हर ग्रुप में, फ़ंक्शन का टारगेट किया गया सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक के बारे में बताया गया है.
ग्रुप | ब्यौरा |
---|---|
compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
compose.compiler | @Composable फ़ंक्शन को बदलें और Kotlin कंपाइलर प्लगिन की मदद से ऑप्टिमाइज़ेशन चालू करें. |
compose.foundation | इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं. |
compose.material | इस्तेमाल के लिए तैयार मटीरियल डिज़ाइन कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का टॉप लेवल एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हों. |
compose.material3 | मटीरियल डिज़ाइन 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. ये कॉम्पोनेंट, मटीरियल डिज़ाइन का अगला वर्शन हैं. Material 3 में, अपडेट की गई थीमिंग और कॉम्पोनेंट शामिल हैं. साथ ही, इसमें Material You की मनमुताबिक बनाने की सुविधाएं भी हैं, जैसे कि डाइनैमिक कलर. इसे Android 12 की नई विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है. |
compose.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, Compose Compiler Plugin के लिए कोर रनटाइम, ताकि उसे टारगेट किया जा सके. |
compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, Compose यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. कृपया नई लाइब्रेरी बनाने से पहले, इस लाइब्रेरी में मौजूद मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.9
वर्शन 1.9.0-beta03
16 जुलाई, 2025
androidx.compose.ui:ui-*:1.9.0-beta03
रिलीज़ हो गया है. वर्शन 1.9.0-beta03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें एक जैसी धुंधली इनर शैडो, ऑफ़सेट के साथ सही तरीके से नहीं घूम रही थीं.
वर्शन 1.9.0-beta02
2 जुलाई, 2025
androidx.compose.ui:ui-*:1.9.0-beta02
रिलीज़ हो गया है. वर्शन 1.9.0-beta02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- यह क्लास से मैच करने के लिए, कंपैनियन ऑब्जेक्ट को एक्सपेरिमेंटल में बदलता है. (I8452a)
isTrackFocusEnabled
एक्सपेरिमेंटल फ़्लैग (I003fd) हटाया गया
गड़बड़ियां ठीक की गईं
- जब कोई भी
WindowInsets
,ComposeView
के कॉन्टेंट पर असर नहीं डालता है, तबWindowInsetsRulers
वैल्यू नहीं दी जाती हैं. (I71221)
वर्शन 1.9.0-beta01
18 जून, 2025
androidx.compose.ui:ui-*:1.9.0-beta01
रिलीज़ हो गया है. वर्शन 1.9.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ShadowContext
को सील किए गए इंटरफ़ेस (I3ce40) के तौर पर बदला गया- यह कुकी, अलग-अलग मॉड्यूल के लिए Indirect Touch Event बनाने का तरीका जोड़ती है. इसका इस्तेमाल टेस्टिंग के लिए किया जाता है (I22e4c)
IndirectTouchEvent.nativeEvent
को एक्सपेरिमेंट के तौर पर उपलब्ध कराता है. (I6fda5)- एपीआई काउंसिल के सुझाव/राय के आधार पर, एपीआई के इंटरफ़ेस में बदलाव करता है. (Ibf378)
FrameRateCategory.NoPreference
कॉन्स्टेंट हटाएं.Modifier.requestedFrameRate
का नाम बदलकरModifier.preferredFrameRate
करें. (I2f976)WindowInsetsRulers
:rulersIgnoringVisibility
को ज़्यादा से ज़्यादा पर सेट किया गया.getDisplayCutoutBounds()
कोPlacementScope
के एक्सटेंशन फ़ंक्शन के तौर पर बदला गया.WindowInsetsAnimationProperties
को बदलकरWindowInsetsAnimation
कर दिया गया है औरgetAnimationProperties()
को बदलकरgetAnimation()
कर दिया गया है. (I3816f)- क्लास
ShadowParams
कोShadow
में बदला गया (I11cca) - फ़्रेम रेट एपीआई के पैकेज को
androidx.compose.ui.ui
से बदलकरandroidx.compose.ui
(I8994e) करें InsetsRulers
को बदलकर,WindowInsetsRulers
नाम के सामान्य कोड में शामिल किया गया. एपीआई को आसान बनाया गया है, ताकि सभी इनसेटWindowInsetsRulers
हों. रूलर से जुड़ी नहीं, बल्कि ऐनिमेशन से जुड़ी प्रॉपर्टी कोAnimationProperties
क्लास में एक्सट्रैक्ट किया गया.WindowInsetsRulers
को एक साथ मर्ज करने के लिए,WindowInsetsRulers.innermostOf()
का इस्तेमाल किया जा सकता है. (I2f0c6, b/415012444)- Compose कंपाइलर से जोड़ी गई सोर्स जानकारी को पार्स करने के लिए, टूलिंग एपीआई जोड़ा गया. (Iceaf9, b/408492167)
गड़बड़ियां ठीक की गईं
- सुविधा की पूरी तरह से पुष्टि हो जाने के बाद,
isGetFocusedRectReturnEmptyEnabled
के लिए फ़्लैग हटा दिया गया है. (Ife722) performScrollToNode
में मौजूद एक गड़बड़ी को ठीक किया गया है. कुछ मामलों में, यह टारगेट नोड तक नहीं पहुंच रहा था. इस सुधार के बाद, इन मामलों में यह हमेशा टारगेट नोड तक पहुंचना चाहिए. इस बदलाव का एक साइड इफ़ेक्ट यह है कि कार्रवाई के आखिर में स्क्रोल की सटीक पोज़िशन अब अलग हो सकती है. इससे स्क्रीनशॉट टेस्ट और उन टेस्ट पर असर पड़ता है जो स्क्रोल की सटीक पोज़िशन के बारे में अनुमान लगाते हैं. (I2c8a1)
वर्शन 1.9.0-alpha04
4 जून, 2025
androidx.compose.ui:ui-*:1.9.0-alpha04
रिलीज़ हो गया है. वर्शन 1.9.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- कस्टमाइज़ की जा सकने वाली शैडो के लिए, मॉडिफ़ायर एपीआई जोड़े गए. (I2058d, b/160665122)
- ऐसी
SemanticsModifierNode.isImportantForBounds
प्रॉपर्टी जोड़ें जिससे यह तय किया जा सके कि सीमाओं का हिसाब लगाते समय नोड को ध्यान में रखना है या नहीं. डिफ़ॉल्ट रूप से, प्रॉपर्टी की वैल्यू सही होती है. इसे गलत पर सेट किया जा सकता है. इससे यह पता चलता है कि नोड को सीमाओं के लिए ध्यान में नहीं रखा जाना चाहिए. (I7ebec) - Android के लिए खास तौर पर उपलब्ध सिमैंटिक्स प्रॉपर्टी के बारे में बताने के लिए,
SemanticsPropertyKey
फ़ैक्ट्री फ़ंक्शन जोड़ें. ये प्रॉपर्टी,AccessibilityNodeInfo.getExtras
के ज़रिए सुलभता से जुड़ी अतिरिक्त सुविधाओं के तौर पर उपलब्ध कराई जाती हैं. (I2ed51) ComposeUiFlags.isRemoveFocusedViewFixEnabled
के इस्तेमाल को हटा दिया गया है और फ़्लैग को बंद कर दिया गया है. (I50328)- पसंद के मुताबिक बनाए जा सकने वाले नए शैडो फ़्रेमवर्क को पेश किया गया. इसमें
DropShadowPainter
औरInnerShadowPainter
के साथ-साथDropShadow/InnerShadow
डिपेंडेंसी भी शामिल हैं. शैडो इन्फ़्रास्ट्रक्चर को इस तरह से शेयर किया जाता है कि जनरेट की गई एक ही शैडो को कई कॉलसाइट पर शेयर किया जा सके. इसके लिए, शैडो को n बार फिर से जनरेट करने की ज़रूरत नहीं होती. (I24f7a, b/160665122) CompositeShader
औरCompositeShaderBrush
को शामिल किया गया है. इससे दो शेडर के बीच कंपोज़िट किया गया नतीजा मिलता है. शेडर के लिए ट्रांसफ़ॉर्मेशन मैट्रिक्स सेट करने के लिए,ShaderBrush#transform
भी जोड़ें. (I2621a, b/160665122)
गड़बड़ियां ठीक की गईं
NestedScrollInteropConnection
में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, फ़्लिंग के तरीके व्यू के हिसाब से गलत क्रम में दिख रहे थे. (I56ad4)- इससे पहले, फ़ुल स्क्रीन पर दिखने वाले डायलॉग, डिसप्ले कटआउट वाले हिस्से में नहीं दिखते थे. इस बग को ठीक कर दिया गया है, ताकि
decorFitsSystemWindows = false
औरusePlatformDefaultWidth = false
वाले डायलॉग, डिसप्ले कटआउट वाले हिस्से का इस्तेमाल कर सकें. (I9e975) - उस गड़बड़ी को ठीक किया गया है जिसमें Compose ऐप्लिकेशन के बैकग्राउंड में होने पर,
TalkBack
के हरे रंग के फ़ोकस इंडिकेटर को चालू करने के बाद भी नहीं दिखाया जाता था. (Ifd12a)
वर्शन 1.9.0-alpha03
20 मई, 2025
androidx.compose.ui:ui-*:1.9.0-alpha03
रिलीज़ हो गया है. वर्शन 1.9.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
फ़्लैग की मदद से, यह तय किया जाता है किComposeView
में किसी भी चीज़ पर फ़ोकस न किए जाने पर, रेक्ट को खाली वैल्यू पर सेट किया जाए. इससे फ़ोकस सर्च को, फ़ोकस करने के लिए व्यू चुनने से रोका जाता है. यह तब खास तौर पर ज़रूरी होता है, जब IME में NEXT विकल्प होता है और वहComposeView
पर फ़ोकस करने की कोशिश करता है, लेकिनrequestFocus()
काम नहीं करता. (Ibd0e2, b/369256395)- फ़्लैग
isNestedScrollDispatcherNodeFixEnabled
के बारे में जानकारी दें. (I0d24a) DialogProperties
'dialogContentTitle
का नाम बदलकरwindowTitle
(Ibd27b) करेंModifier.onFirstVisible
औरModifier.onVisibilityChanged
मॉडिफ़ायर लॉन्च किए गए. येModifier.onLayoutRectChanged
के ऊपर बनाए गए हाई लेवल मॉडिफ़ायर हैं. इन मॉडिफ़ायर को खास तौर पर, ऐप्लिकेशन की कई सामान्य ज़रूरतों को पूरा करने के लिए बनाया गया है. जैसे, इंप्रेशन लॉग करना, वीडियो अपने-आप चलना वगैरह. इन्हें परफ़ॉर्मेंस को ध्यान में रखकर बनाया गया है, ताकि इनका इस्तेमाल लिस्ट पर आधारित ज़रूरी स्थितियों में किया जा सके. साथ ही, स्क्रोल करने की परफ़ॉर्मेंस पर कोई असर न पड़े. इन मॉडिफ़ायर एपीआई के अलावा, इस्तेमाल के इन उदाहरणों के लिएRelativeLayoutBounds
में अन्य एपीआई जोड़े गए हैं. साथ ही, डेवलपर के लिए ऐसे कस्टम मॉडिफ़ायर बनाना आसान हो गया है जो इस्तेमाल के उदाहरणों के हिसाब से सही हों. (I759b8)- इस सुविधा के आने वाले समय में होने वाले डेवलपमेंट को ध्यान में रखते हुए,
setDiagnosticStackTraceEnabled
को एक्सपेरिमेंटल में बदलें. (I11db3) - स्टेट बनाने के लिए,
Modifier.scrollable2D
,Scrollable2DState
, और कंपैनियन एपीआई पेश किए गए. साथ ही, स्क्रोल एक्सटेंशन के सामान्य फ़ंक्शन भी जोड़े गए हैं. (Ic61c8, b/214410040) - Compose में इस्तेमाल की गई 64-बिट कलर वैल्यू की तुलना सीधे तौर पर Android
ColorLongs
से नहीं की जा सकती. इसकी वजह यह है कि कुछ कलर स्पेस के लिए, कलर स्पेस आईडी क्रम में नहीं हैं. Android कलर स्पेस में बदलने और उससे वापस आने के लिए, दो नए एपीआई जोड़े गए हैं:toColorLong()
औरfromColorLong()
. (I36899) ViewConfiguration.minimumFlingVelocity
को इसलिए जोड़ा गया है, ताकि फ़्लिंग की स्पीड को कम किया जा सके. (I11aab)
वर्शन 1.9.0-alpha02
7 मई, 2025
androidx.compose.ui:ui-*:1.9.0-alpha02
रिलीज़ हो गया है. वर्शन 1.9.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
dialogContentTitle
मेंDialogProperties
जोड़ें. इससे कॉन्टेंट विंडो का टाइटल सेट होता है. bf9d670
गड़बड़ियां ठीक की गईं
- इंटरनल टेस्ट की समस्याओं को ठीक करने के दौरान, विंडो इंसर्ट रूलर को कुछ समय के लिए बंद कर दिया गया है. 8d1402
DragGestureNode
मेंVelocityTracker
में पॉइंटर इनपुट में हुए बदलावों को जोड़ने के तरीके को ठीक किया गया है. इसे नए फ़्लैगisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
से कंट्रोल किया जा सकता है.254ddb
वर्शन 1.9.0-alpha01
23 अप्रैल, 2025
androidx.compose.ui:ui-*:1.9.0-alpha01
रिलीज़ हो गया है. वर्शन 1.9.0-alpha01 में ये कमिट शामिल हैं.
व्यवहार में बदलाव
- Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.properties
मेंandroid.experimental.lint.version=8.8.2
(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में कंपोज़ के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.
एपीआई में हुए बदलाव
- यह फ़्लैग, हिट पाथ ट्रैकर (डीबग) के लिए ट्रेस स्टेटमेंट चालू करने की सुविधा को हटाता है. (I1b2a1)
InnerRectRulers
औरOuterRectRules
को बदलकर, तरीके कर दिए गए हैं.RectRulers
के सार्वजनिक एपीआई से नाम पैरामीटर हटाया गया.DerivedRulers
अब वर्टिकल और हॉरिज़ॉन्टल रूलर के लिए कंस्ट्रक्टर विकल्प है. उदाहरण जनरेट करने के लिए,MergedHorizontalRulers
औरMergedVerticalRulers
कोminOf
औरmaxOf
तरीकों से बदल दिया गया है. (Iee89f, b/408192133)androidx.compose.ui.LocalSavedStateRegistryOwner
के बजायandroidx.savedstate.compose.LocalSavedStateRegistryOwner
का इस्तेमाल करें. (I5439f, b/377946781)- स्क्रीन को चालू रखने के लिए
Modifier.keepScreenOn
जोड़ें (Ib5af4, b/408284174) - नई सिमैंटिक्स प्रॉपर्टी
Shape
जोड़ें.इसे तब सेट किया जा सकता है, जब यूज़र इंटरफ़ेस (यूआई) एलिमेंट का आकार, उसके बाउंडिंग रेक्टैंगल से अलग हो. उदाहरण के लिए, गोल कोने वाला रेक्टैंगल. (I1376f) AndroidViews
में पॉइंटर इवेंट डिसपैच करने से जुड़ी समस्या को ठीक किया गया है. साथ ही, बदलावों को सुरक्षित रखने के लिएisPointerInteropFilterDispatchingFixEnabled
फ़्लैग जोड़ा गया है. (I0e272, b/372055500, b/408002332)FocusRestorer
अब पहले फ़ोकस किए गए आइटम को पिन नहीं करता. उपयोगकर्ताओं को यह पक्का करने के लिए कि पहले फ़ोकस किए गए आइटम का कंपोज़िशन हैश एक जैसा है, एक कुंजी का इस्तेमाल करना चाहिए, ताकि फ़ोकस को सफलतापूर्वक वापस लाया जा सके. (I4203b, b/330696779)- कंपोज़ की सुविधा को
ViewTreeObserver.OnScrollChanged
को ट्रिगर करने की अनुमति दें. इस सुविधा कोisOnScrollChangedCallbackEnabled
फ़्लैग के तहत लॉन्च किया गया है. हमनेDelegatableNode dispatchOnScrollChanged
का एक एक्सटेंशन फ़ंक्शन भी लॉन्च किया है. (I34b9d, b/238109286) currentCompositeKeyHash
का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,currentCompositeKeyHashCode
का इस्तेमाल करें. बदलाव करने वाला एपीआई, एक ही हैश को ज़्यादा बिट के साथ एन्कोड करता है. इससे कंपोज़िशन हैरारकी में मौजूद दो रैंडम ग्रुप के लिए, एक जैसी हैश कुंजी होने की संभावना बहुत कम हो जाती है. (I4cb6a, b/177562901)- Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद का वर्शन इस्तेमाल करना ज़रूरी है (Idb6b5)
FocusRequester
के लिए लिंट चेक की सुविधा जोड़ी गई है, ताकि यह पक्का किया जा सके कि इसे कंपोज़िशन (I6bf91) में याद रखा गया है- Composables पर पसंदीदा फ़्रेम रेट या फ़्रेम रेट कैटगरी सेट करने की सुविधा जोड़ी गई है. इन्हें इस फ़्रेम रेट पर रेंडर किया जाना चाहिए (Ie5201)
- Android पर नेटिव
MotionEvent
को दिखाएं. (I17286) getChecked() + setChecked(int)
जोड़ें,isChecked + setChecked(boolean)
बंद करें (Iaac9d)graphicsLayer
मॉडिफ़ायर अबblendMode
औरcolorFilter
(Iab0e6) स्वीकार करता है- क्वेरी के संसाधनों में
LocalResources
कंपोज़िशन लोकल जोड़ी गई. कॉन्फ़िगरेशन में बदलाव होने पर,LocalResources.current
को कॉल करने पर फिर से कंपोज़ किया जाएगा. इसलिए,stringResource()
जैसे एपीआई को कॉल करने पर अपडेट की गई वैल्यू दिखेंगी. (I50c13, b/274786917) - कॉम्पोज़ेबल के लिए एक्सपेरिमेंटल एपीआई उपलब्ध कराया गया है, ताकि अप्रत्यक्ष टच इवेंट मैनेज किए जा सकें (Icff57)
- इस रिलीज़ में, कंपोज़ेबल कॉन्टेंट के लेआउट और ड्रॉ फ़ेज़ के दौरान थ्रो किए गए अनहैंडल्ड एक्सेप्शन की रिपोर्टिंग को बेहतर बनाया गया है. इससे पहले, यहां बिना हैंडल किए गए अपवाद की वजह से, टेस्ट रनर क्रैश हो जाता था और टेस्ट सुइट समय से पहले खत्म हो जाता था. अब इन अपवादों की जानकारी, टेस्ट सुइट को बंद किए बिना ज़्यादा आसानी से दी जा सकती है. (I9928b, b/314128080)
- एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertions
एपीआई को बंद कर दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय,enableAccessibilityChecks()
का इस्तेमाल करें. (I50aa5) SemanticsNodeInteraction.performTextInputSelection
अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. अब यहrelativeToOriginal
पैरामीटर के साथ काम करता है. इसकी मदद से, चुने गए टेक्स्ट को बिना बदले हुए मूल टेक्स्ट या बदले गए टेक्स्ट पर लागू किया जा सकता है. (I3a905, b/261561038, b/277018945)AnnotatedString
के ज़रिए कस्टम बुलेट लिस्ट बनाने के लिए एपीआई लॉन्च किया गया (I1d066, b/383269496, b/139326648)runWithTimingDisabled
को बंद करें औरrunWithMeasurementDisabled
का इस्तेमाल करें. इससे यह पता चलता है कि सभी मेट्रिक को रोक दिया गया है. इसके अलावा,MicrobenchmarkScope
सुपरक्लास को दिखाएं, क्योंकिrunWithMeasurementDisabled
फ़ंक्शन को फिर से एलान करके ऐक्सेस नहीं किया जा सकता. ऐसा इसलिए, क्योंकि यह इनलाइन है. (I9e23b, b/389149423, b/149979716)- नए डिवाइसों को शामिल करने के लिए, ui-tooling Devices API को अपडेट किया गया है. (Ia2ac1)
- झलक देखने की सुविधा के लिए, स्क्रीन के साइज़ के कलेक्शन में टैबलेट पोर्ट्रेट जोड़ें, ताकि डेवलपर बड़ी विंडो के बारे में सोच सके (Ia1976)
- किसी दिए गए समय पर वैल्यू के साथ ट्रेस को मार्क/लॉग करने के लिए, ट्रेस वैल्यू एपीआई लॉन्च किया गया है. ट्रेस की वैल्यू, Prefetto में नई लेन के तौर पर दिखती हैं. इन्हें ट्रेस की टाइमलाइन के ज़रिए देखा जा सकता है. Android पर, इन्हें
Trace.setCounter
का इस्तेमाल करके लागू किया जाता है. (Idcf48)
गड़बड़ियां ठीक की गईं
- pausable कंपोज़िशन में remember ऑब्ज़र्वर को डिसपैच करने की समस्या ठीक की गई है, ताकि एक ही apply में याद रखे गए/भूल गए ऑब्ज़र्वर को डिसपैच करने से बचा जा सके (I570b2, b/404645679, b/407931790)
- अब
android:dialogTheme
को सेट किया जा सकता है, ताकिdecorFitsSystemWindows
के गलत होने पर डायलॉग प्रॉपर्टी को कंट्रोल किया जा सके (I7922f, b/246909281) - उस गड़बड़ी को ठीक किया गया है जिसमें डायलॉग के बाहर कैप्चर किया गया कोई भी मोशन इवेंट, डायलॉग को खारिज कर सकता था. (Ia78fd)
- Compose lint checks के लिए, अब कमांड लाइन से कम से कम AGP 8.8.2 वर्शन की ज़रूरत होती है. साथ ही, IDE के साथ काम करने के लिए कम से कम Android Studio Ladybug की ज़रूरत होती है. अगर AGP के पुराने वर्शन का इस्तेमाल किया जा रहा है, तो AGP पर असर डाले बिना Lint के वर्शन को अपग्रेड करने के लिए, gradle.properties में
android.experimental.lint.version=8.8.2
सेट किया जा सकता है. (I6f2a8) - एक नई सिमैंटिक्स प्रॉपर्टी
InputText
जोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले,textfield
की वैल्यू कैप्चर करती है. (Iae46a, b/395911609, b/176949051) - Android के लिए सुलभता जांच की सुविधा चालू करने वाले
enableAccessibilityChecks()
एपीआई को अलग-अलग पैकेज में ले जाया गया है. अगरTestRule
औरcompose:ui:ui-test-junit4-accessibility
का इस्तेमाल नहीं किया जा रहा है, तो ये पैकेजcompose:ui:ui-test-accessibility
हैं.TestRule
को कॉल करते समय (I3c318, b/391560768) LaunchedEffect
औरrememberCoroutineScope
में, कंपोज़ स्टैक ट्रेस की सुविधा जोड़ी गई (I705c0, b/354163858)
बाहरी योगदान
- एक्सपेरिमेंट के तौर पर उपलब्ध
runComposeUiTest
फ़ंक्शन में बदलाव किया गया है, ताकि निलंबन ब्लॉक को स्वीकार किया जा सके. बाइनरी के साथ काम करने के लिए, काम न करने वाला फ़ंक्शनrunComposeUiTest
भी जोड़ा गया (I3b88c, b/361577328)
वर्शन 1.8
वर्शन 1.8.3
18 जून, 2025
androidx.compose.ui:ui-*:1.8.3
रिलीज़ हो गया है. वर्शन 1.8.3 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- सुविधा की पूरी तरह से पुष्टि हो जाने के बाद,
isGetFocusedRectReturnEmptyEnabled
के लिए फ़्लैग हटा दिया गया है. (Ife722) ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
फ़्लैग की मदद से, यह तय किया जाता है किComposeView
में किसी भी चीज़ पर फ़ोकस न किए जाने पर, रेक्ट को खाली वैल्यू पर सेट किया जाए. इससे फ़ोकस सर्च को, फ़ोकस करने के लिए व्यू चुनने से रोका जाता है. यह तब खास तौर पर ज़रूरी होता है, जब IME में NEXT विकल्प होता है और वहComposeView
पर फ़ोकस करने की कोशिश करता है, लेकिनrequestFocus()
काम नहीं करता. (Ibd0e2, b/369256395)
वर्शन 1.8.2
20 मई, 2025
androidx.compose.ui:ui-*:1.8.2
रिलीज़ हो गया है. वर्शन 1.8.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- डायलॉग पर चालू इवेंट स्ट्रीम के दौरान डायलॉग हटाए जाने पर, NPE को ठीक करता है (6a7e7f)
- सिर्फ़ ड्रॉ करने से जुड़े अपडेट होने पर, थ्रॉटल की गई टाइमलाइन के हिसाब से
onLayoutRectChange
के अपडेट न होने की समस्या ठीक की गई. (03b82d)
वर्शन 1.8.1
7 मई, 2025
androidx.compose.ui:ui-*:1.8.1
रिलीज़ हो गया है. वर्शन 1.8.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
onLayoutRectChanged
औरLazyLayout
से जुड़ी कुछ समस्याएं ठीक की गईं d791b11- पहले से कंपोज़ किए गए आइटम के लिए, फिर से मेज़र करने के अनुरोधों को स्किप करें. इस बग की वजह से, लेज़ी लेआउट की स्क्रोलिंग परफ़ॉर्मेंस पर असर पड़ा. ऐसा इसलिए हुआ, क्योंकि कुछ मामलों में प्रीफ़ेचिंग की सुविधा ठीक से काम नहीं कर रही थी. साथ ही, मेज़रमेंट फ़्रेम के अंदर हो रहा था. 742087a
वर्शन 1.8.0
23 अप्रैल, 2025
androidx.compose.ui:ui-*:1.8.0
रिलीज़ हो गया है. वर्शन 1.8.0 में ये कमिट शामिल हैं.
1.7.0 के बाद हुए अहम बदलाव
- Compose 1.8 में, सिमैंटिक ऑटोकंप्लीट के लिए नई सुविधा जोड़ी गई है. पक्का करें कि आपके पास यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन का 1.8 या इसके बाद का वर्शन हो. ऐसा इसलिए, क्योंकि टेक्स्ट कॉम्पोनेंट के लिए ऑटोमैटिक भरने की सुविधा के लिए, दोनों मॉड्यूल के नए वर्शन की ज़रूरत होती है. एपीआई के इस्तेमाल और उदाहरणों के बारे में ज़्यादा जानने के लिए, कृपया ऑटोमैटिक भरने की सुविधा से जुड़ा दस्तावेज़ यहां देखें.
- Compose 1.8 में, हैप्टिक फ़ीडबैक के इन अतिरिक्त टाइप का इस्तेमाल किया जा सकता है:
Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
. इसेLocalHapticFeedback
के ज़रिए ऐक्सेस किया जा सकता है. Android पर, Vibrator API से यह पता चलता है कि हैप्टिक फ़ीडबैक की सुविधा काम करती है या नहीं. अगर यह सुविधा काम करती है, तो यह डिफ़ॉल्ट रूप से उपलब्ध होती है. - अब कई फ़ोकस एपीआई स्टेबल हो गए हैं. इनमें
Modifier.focusRestorer()
,onEnter
, औरonExit
FocusProperties
(I6e667) शामिल हैं. अबrequestFocus
को कॉल करते समय,FocusDirection
को चुना जा सकता है. हमनेfocusRequester
औरFocusTargetModifierNode
, दोनों मेंrequestFocus(FocusDirection)
एपीआई जोड़ा है, ताकि किसी खास दिशा पर फ़ोकस किया जा सके. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
वर्शन 1.8.0-rc03
9 अप्रैल, 2025
androidx.compose.ui:ui-*:1.8.0-rc03
रिलीज़ हो गया है. वर्शन 1.8.0-rc03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- यह कुकी, फ़ोकस इंटरऑप से जुड़ी कुछ ऐसी समस्याओं को ठीक करने की सुविधा बंद करती है जिनकी वजह से रिग्रेशन हुआ था. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
वर्शन 1.8.0-rc02
26 मार्च, 2025
androidx.compose.ui:ui-*:1.8.0-rc02
रिलीज़ हो गया है. वर्शन 1.8.0-rc02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें Compose हैरारकी में एम्बेड किए गए फ़ोकस किए गए व्यू, lazylist से फ़ोकस किए गए व्यू को हटाने पर री-एंट्रेंट कंपोज़िशन की वजह बनते थे. (765562)
वर्शन 1.8.0-rc01
12 मार्च, 2025
androidx.compose.ui:ui-*:1.8.0-rc01
रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- सॉफ़्ट कीबोर्ड चालू होने पर, फ़ोकस किए गए
AndroidView
को हटाने पर होने वाली क्रैश की समस्या ठीक की गई. (Ic725a) - फ़ोकस की नई स्थिति को मैनेज करने की सुविधा लागू करने से जुड़ी कुछ समस्याओं को ठीक करता है. (b/395895685)
- इस अपडेट में, उस समस्या को ठीक किया गया है जिसकी वजह से, टेक्स्ट फ़ील्ड पर फ़ोकस करने का अनुरोध करने के लिए
LaunchedEffect
का इस्तेमाल करते समय, ऑटोमैटिक भरने की सुविधा काम नहीं कर रही थी. (b/392539099)
वर्शन 1.8.0-beta03
26 फ़रवरी, 2025
androidx.compose.ui:ui-*:1.8.0-beta03
रिलीज़ हो गया है. वर्शन 1.8.0-beta03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
enableAccessibilityChecks()
API को अलग-अलग पैकेज में ले जाया गया है. यह API, Android के लिए सुलभता जांच की सुविधा चालू करता है. अगर TestRule का इस्तेमाल नहीं किया जा रहा है, तो ये पैकेजcompose:ui:ui-test-accessibility
होते हैं. साथ ही,TestRule
पर कॉल करने परcompose:ui:ui-test-junit4-accessibility
होते हैं (I547ef, b/391560768)- नई सिमैंटिक्स प्रॉपर्टी
InputText
जोड़ी गई है. यह आउटपुट ट्रांसफ़ॉर्मेशन लागू होने से पहले, टेक्स्ट फ़ील्ड की वैल्यू कैप्चर करती है. (Iae46a)
गड़बड़ियां ठीक की गईं
- अपने-आप जानकारी भरने की सुविधा से जुड़ी उस समस्या को ठीक किया गया है जिसकी वजह से, इनपुट टेक्स्ट के बजाय बदले गए आउटपुट टेक्स्ट को सेव किया जाता था. (Iae46a, b/395911609, b/176949051)
वर्शन 1.8.0-beta02
12 फ़रवरी, 2025
androidx.compose.ui:ui-*:1.8.0-beta02
रिलीज़ हो गया है. वर्शन 1.8.0-beta02 में ये कमिट शामिल हैं.
नई सुविधाएं
Configuration#screenWidth
/heightDp
को कॉल करने के ख़िलाफ़ चेतावनी देने के लिए, लिंट चेक जोड़ा गया -LocalWindowInfo.current.containerSize
का इस्तेमाल, मौजूदा विंडो का साइज़ वापस पाने के लिए किया जा सकता है.
वर्शन 1.8.0-beta01
29 जनवरी, 2025
androidx.compose.ui:ui-*:1.8.0-beta01
रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ContextualFlowRow
औरContextualFlowColumn
को बंद कर दिया गया है. इस एक्सपेरिमेंटल कॉम्पोनेंट को 1.7 वर्शन में पेश किया गया था. यह अब तक स्थिर नहीं हुआ है. साथ ही, इसे लागू करना सही नहीं माना गया है. आने वाले समय में, इस कॉम्पोनेंट के इस्तेमाल के उदाहरणों को हल करने वाला कॉम्पोनेंट उपलब्ध कराया जा सकता है.FlowRow
औरFlowColumn
में एक्सपेरिमेंट के तौर पर ओवरलोड की सुविधा जोड़ी गई है. यह सुविधा 1.7 में जोड़ी गई थी. इसमेंoverflow
पैरामीटर शामिल है. इस पैरामीटर के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, इस पैरामीटर के बिना ओवरलोड का इस्तेमाल किया जा सकता है. इन ओवरलोड के लिए, "overflow" का डिफ़ॉल्ट व्यवहार "Clip" होगा. यह सुविधा शुरू होने के बाद से ऐसा ही है.ContextualFlowRow
के कई इस्तेमाल के मामलों को FlowRow का इस्तेमाल करके पूरा किया जा सकता है. हालांकि, हम मानते हैं कि यह पूरी तरह से सही नहीं है.ContextualFlowRow
को पूरी तरह से उपयोगकर्ता-स्पेस में लागू किया जा सकता है. साथ ही, कोई भी व्यक्ति इसके लागू करने के तरीके को कॉपी कर सकता है और अपनी ज़रूरत के हिसाब से इसे बदल सकता है. हमें उम्मीद है कि आने वाले समय में, हम इन इस्तेमाल के उदाहरणों को अलग तरीके से हल कर पाएंगे. (Ibafec)
SemanticsNodeInteraction.semanticsId()
को हटा दिया गया है. इसके बजाय,SemanticsNodeInteraction.fetchSemanticsNode().id
का इस्तेमाल करें. (Ie397a)- ऑटोमैटिक भरने की सुविधा देने वाले पुराने एपीआई अब काम नहीं करते. इसके बजाय, सिमैंटिक पर आधारित नए एपीआई का इस्तेमाल करें. (I943ff)
requestAutofill
एपीआई को फिर से लिखें, ताकि वह ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले टूल के बाहर काम कर सके. (Id1929)
गड़बड़ियां ठीक की गईं
- फ़ोकस से जुड़ी समस्या को ठीक किया गया है. इस समस्या में,
previouslyFocusedRect
पैरामीटर (फ़ोकस की दिशा से जुड़ा) के साथrequestFocus()
का इस्तेमाल करने पर,ComposeView
को छोड़ दिया जाता था. (Ifdc2f, b/388590015) GraphicsLayer.record { this@ContentDrawScope.drawContent() }
का इस्तेमाल करते समय, कभी-कभी होने वाली NPE की समस्या को ठीक किया गया है. अगर आपको इस तरह सेdrawContent()
रिकॉर्ड करना है, तो पक्का करें कि आपनेDrawScope
के अंदरGraphicsLayer#record
एक्सटेंशन फ़ंक्शन का इस्तेमाल किया हो. साथ ही,GraphicsLayer
पर मौजूद सदस्य फ़ंक्शन का इस्तेमाल न किया हो. (I75fc0, b/389046242)- टेक्स्ट लेआउट से जुड़ी समस्या ठीक की गई. ऐनिमेशन के दौरान, एलिप्सिस का इस्तेमाल करने पर कभी-कभी टेक्स्ट का गलत अनुवाद हो जाता था. ज़्यादा जानकारी के लिए, b/389707025 देखें (Ie55b1, b/389707025)
वर्शन 1.8.0-alpha08
15 जनवरी, 2025
androidx.compose.ui:ui-*:1.8.0-alpha08
रिलीज़ हो गया है. वर्शन 1.8.0-alpha08 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
AutofillManager
को ऐब्स्ट्रैक्ट क्लास बनाना. (I0a3b0)- फ़ोकस से जुड़ी कई समस्याओं को ठीक किया गया है. इनमें ये समस्याएं शामिल हैं: फ़ोकस किए जा सकने वाले आइटम के बिना
ComposeView
पर फ़ोकस करने की कोशिश करते समय IME क्रैश हो जाता है, चाइल्डAndroidViews
में फ़ोकस बदल जाता है, और फ़ोकस का अनुरोध करने परAndroidView
छूट जाता है. (Ia03c3, b/369256395, b/378570682, b/376142752) FocusEnterExitScope.cancelFocus()
कोcancelFocusChange()
में बदलें (I89959)- अब
RectInfo.calculateOcclusions()
की मदद से, कंपोज़ेबल ऑक्लूज़न का हिसाब लगाया जा सकता है. DelegatableNode
पर एक्सटेंशन फ़ंक्शन जोड़ा गया है, ताकि ग्लोबल लेआउट में होने वाले बदलावों के लिए लिसनर रजिस्टर किया जा सके. (I68b59)
गड़बड़ियां ठीक की गईं
ComposeContentTestRule.setContent
का इस्तेमाल करते समय, टेस्ट किए जा रहे कंपोज़ेबल के लिए होस्ट के तौर पर इस्तेमाल की जाने वाली गतिविधि अब थीमTheme.Material.Light.NoActionBar
का इस्तेमाल करती है. इससे एसडीके 35 को टारगेट करते समय,ActionBar
को टेस्ट कॉन्टेंट के साथ ओवरलैप होने से रोका जा सकेगा. इस व्यवहार से ऑप्ट आउट करने के लिए,ui-test-manifest
पर निर्भरता हटाएं. इसके बाद, अपने टेस्ट ऐप्लिकेशन के AndroidManifest.xml मेंui-test-manifest
के लिए गतिविधि की एंट्री जोड़ें. इसमें अपनी पसंद की थीम का इस्तेमाल करें.ComponentActivity
(I7ae1b, b/383368165)- एक जैसी वैरिएशन सेटिंग वाले संसाधन फ़ॉन्ट अब ज़्यादा कैश मेमोरी में सेव नहीं किए जाएंगे. इससे गलत वैरिएशन सेटिंग लागू नहीं होंगी. (If3dff, b/372044241)
AnnotatedString.fromHtml
अब<ul>/<li>
टैग के साथ काम करता है. (I7c2fe, b/299662276, b/139326648)
बाहरी योगदान
- नया क्लिपबोर्ड इंटरफ़ेस और उसके लिए कंपोज़िशन लोकल जोड़ा गया. (I80809)
वर्शन 1.8.0-alpha07
11 दिसंबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha07
रिलीज़ हो गया है. वर्शन 1.8.0-alpha07 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- टूल के लिए,
LayoutNode
से मालिक की जानकारी दिखाई गई. (I26f7f) LocalAutofillHighlightColor
कंपोज़िशन लोकल में, कलर टाइप का इस्तेमाल किया जाता है. (I0e05b)- डेप्रिकेट किए गए
UrlAnnotation
और उसके तरीकों को एक्सपेरिमेंट के तौर पर मार्क करें. (Ic0021)
गड़बड़ियां ठीक की गईं
BasicText
या Text कंपोज़ेबल (be7605, b/374115892) के अंदरLinkAnnotation
का इस्तेमाल करते समय होने वाली क्रैश की समस्या को ठीक किया गया हैIndexOutOfBoundsException
- कस्टम शेप वाले भरे हुए टेक्स्ट फ़ील्ड में इंडिकेटर लाइन के न दिखने की समस्या को ठीक किया गया है. (I4f87f, b/380704151)
- लंबे स्क्रीनशॉट में बैकग्राउंड न दिखने की समस्या ठीक की गई. (I4d57a)
- यह लाइब्रेरी अब JSpecify nullness annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल के लिए, कंपाइलर के इस तर्क का इस्तेमाल करना चाहिए:
-Xjspecify-annotations=strict
(यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से शुरू होता है). (Idfef8, b/326456246) - Android Q+ पर चलने वाले ऐप्लिकेशन के लिए, वाइड गैमट और एचडीआर रंगों के लिए Compose की सुविधा को अपडेट किया गया है. (Icd8be, b/379135036)
- अब लोड न होने वाले संसाधन फ़ॉन्ट, मेज़र में अपवाद दिखाने के बजाय डिफ़ॉल्ट फ़ॉन्ट पर वापस आ जाएंगे. (Ib6a49)
AndroidView
को अलग करने और फिर से जोड़ने पर, फ़ोकस हट जाने की समस्या ठीक की गई. (I53446)- बाउंड लेआउट ऐक्शन से बाहर
requestFocus()
को स्वीकार करें. (Ia8461)
बाहरी योगदान
- यूज़र इंटरफ़ेस (यूआई) में
BringIntoViewResponderModifierNode
जोड़ें. इससे 'व्यू में लाएं' सुविधा को लागू करने का नया तरीका मिलता है. साथ ही, इसे प्लैटफ़ॉर्म लेवल पर लागू करने की अनुमति मिलती है. (Ia6dd8)
वर्शन 1.8.0-alpha06
13 नवंबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha06
रिलीज़ हो गया है. वर्शन 1.8.0-alpha06 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
stylusHoverIcon
मॉडिफ़ायर जोड़ता है. (Iff20a, b/331289114)- ऑटोमैटिक भरने की सुविधा को मैनेज करने वाले क्लास को इंटरफ़ेस में बदलता है. (I84914, b/376080755)
focusRequester
औरFocusTargetModifierNode
, दोनों मेंrequestFocus(FocusDirection)
फ़ील्ड जोड़ा गया है, ताकि किसी खास दिशा पर फ़ोकस किया जा सके. (I5d9ec, b/245755256)FocusProperties.enter
औरFocusProperties.exit
कोonEnter
औरonExit
से बदल दिया गया है. साथ ही,FocusDirection
पैरामीटर के बजाय रिसीवर स्कोप का इस्तेमाल किया गया है. (I6e667)- टेक्स्ट टूलबार में अपने-आप भरने की सुविधा जोड़ी गई. (Ie6a4c)
Modifier.focusRestorer()
(I99c03) में एपीआई से जुड़े बदलाव:- पैरामीटर का नाम बदलकर 'fallback' कर दिया गया है
- पैरामीटर अब
FocusRequester
है, lambda नहीं - पैरामीटर अब NULL नहीं है. इसकी डिफ़ॉल्ट वैल्यू Default है
- अपने-आप भरने की सुविधा के मैनेजर इंटरफ़ेस से
@Experimental
एनोटेशन हटाया जा रहा है. यह सुविधा अब भी इस रिलीज़ को टारगेट कर रही है. हालांकि, हम @Expemiental API (Id8398) को लॉन्च नहीं करना चाहते LocalHapticFeedback
अब डिफ़ॉल्टHapticFeedback
लागू करता है, जब Vibrator API यह बताता है कि हैप्टिक फ़ीडबैक की सुविधा काम करती है.HapticFeedbackType
-Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
में ये चीज़ें जोड़ी गई हैं. Wear Compose में, ज़्यादा देर तक क्लिक करने की सुविधा वाले कॉम्पोनेंट, जैसे किButton
,IconButton
,TextButton
, औरCard
अब ज़्यादा देर तक क्लिक करने वाले हैंडलर के साथLONG_PRESS
हैप्टिक फ़ीडबैक देते हैं. (I5083d)- यह कुकी,
OverscrollConfiguration
औरLocalOverscrollConfiguration
को हटाती है. साथ ही,rememberPlatformOverscrollFactory
को जोड़ती है, ताकि डिफ़ॉल्ट ओवरस्क्रोल लागू करने का इंस्टेंस बनाया जा सके या उसके पैरामीटर को पसंद के मुताबिक बनाया जा सके. ओवरस्क्रोल की सुविधा बंद करने के लिए,LocalOverscrollConfiguration provides null
के बजायLocalOverscrollFactory provides null
का इस्तेमाल करें. ग्लो का रंग / पैडिंग बदलने के लिए,LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
के बजायLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
का इस्तेमाल करें. (Ie71f9, b/255554340, b/234451516) - एक्सपेरिमेंट के तौर पर उपलब्ध
GlobalAssertions
एपीआई को हटा दिया गया है. इसका इस्तेमाल सुलभता की जांच करने के लिए किया जाता था. इसके बजाय,enableAccessibilityChecks()
का इस्तेमाल करें. (I59322)
वर्शन 1.8.0-alpha05
30 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha05
रिलीज़ हो गया है. वर्शन 1.8.0-alpha05 में ये कमिट शामिल हैं.
नई सुविधाएं
इस रिलीज़ में, ऑटोमैटिक भरने की सुविधा को फ़ीचर फ़्लैग के पीछे रखा गया है. हम परफ़ॉर्मेंस को बेहतर बनाने के लिए काम कर रहे हैं. साथ ही, हम एपीआई के बारे में शुरुआती सुझाव/राय जानना चाहते हैं. सुझावों/शिकायतों/राय के आधार पर, एपीआई के स्टेबल वर्शन से पहले उनमें बदलाव किए जा सकते हैं.
- अपने-आप भरने की सुविधा चालू करने के लिए,
onCreate
मेंComposeUiFlags.isSemanticAutofillEnabled
को true पर सेट करें. साथ ही, Compose Snapshot का नया वर्शन इस्तेमाल करें. - ऑटोमैटिक भरने की सुविधा के इस वर्शन में, क्रेडेंशियल को मैन्युअल तरीके से सेव किया जा सकता है. इसके अलावा, मज़बूत पासवर्ड सुझाने और नेविगेशन की सुविधा का इस्तेमाल करके भी क्रेडेंशियल सेव किए जा सकते हैं. यह सुविधा, फ़ोकस किए गए ऐसे फ़ील्ड में भी काम करती है जिसमें अपने-आप भरने की सुविधा उपलब्ध है. इसके अलावा, यह टेक्स्ट कॉम्पोनेंट पर मौजूद टेक्स्ट टूलबार के ज़रिए, अपने-आप भरने की सुविधा ट्रिगर होने पर भी काम करती है. ऑटोमैटिक भरने की सुविधा पूरी होने पर, कॉम्पोनेंट हाइलाइट हो जाएगा.
एपीआई में हुए बदलाव
expect
/actual
स्ट्रक्चर के हिसाब से, ऑटोमैटिक भरने की सुविधा के इंटरफ़ेस में बदलाव करें. (I22dce)CompositionLocal
को पेश किया गया है. इसका इस्तेमाल, ऑटोमैटिक भरने की सुविधा के ज़रिए फ़ॉर्म में जानकारी भरने के बाद हाइलाइट होने वाले रंग में बदलाव करने के लिए किया जा सकता है. (I32092)Modifier.onRectChanged
एपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसकी मदद से,LayoutNode
की रूट/विंडो/स्क्रीन के हिसाब से पोज़िशन और साइज़ की सदस्यता ली जा सकती है. यह एपीआई, इस्तेमाल के कई ऐसे उदाहरणों को हल करता है जो मौजूदाonGloballyPositioned
मॉडिफ़ायर करता है. हालांकि, यह ऐसा बहुत कम ओवरहेड के साथ करता है. साथ ही, एपीआई में हर इस्तेमाल के उदाहरण के हिसाब से, कॉलबैक को डीबाउंस और थ्रॉटल करने की सुविधाएं मिलती हैं. (Id28c7, b/372765423, b/372757007, b/372994338)- ऑटोमैटिक भरने की सुविधा देने वाले मैनेजर को बड़ा किया गया है, ताकि इसमें
commit()
औरcancel()
एपीआई शामिल किए जा सकें. ये एपीआई, उपयोगकर्ताओं को नए क्रेडेंशियल सेव करने में मदद करते हैं. (I2da00) - इसमें नया
AutofillManager
इंटरफ़ेस पेश किया गया है. इसका इस्तेमाल करके, उपयोगकर्ताओं के लिए ऑटोमैटिक भरने की सुविधा को बेहतर बनाया जा सकता है. साथ ही, ऑटोमैटिक भरने की सुविधा के इस नए वर्शन को चालू करने के लिए,isSemanticAutofillEnabled
फ़्लैग भी उपलब्ध है. (I9d484) Modifier.onRectChanged
एपीआई जोड़ा गया है. यह एक ऐसा एपीआई है जिसकी मदद से,LayoutNode
की रूट/विंडो/स्क्रीन के हिसाब से पोज़िशन और साइज़ के लिए सदस्यता ली जा सकती है. यह एपीआई, इस्तेमाल के कई ऐसे उदाहरणों को हल करता है जो मौजूदाonGloballyPositioned
मॉडिफ़ायर करता है. हालांकि, यह ऐसा बहुत कम ओवरहेड के साथ करता है. साथ ही, एपीआई में हर इस्तेमाल के उदाहरण के हिसाब से, कॉलबैक को डीबाउंस और थ्रॉटल करने की सुविधाएं मिलती हैं. (I3c8fa)- अपने-आप भरने की सुविधा को बेहतर बनाने के लिए, सिमैंटिक प्रॉपर्टी और डेटा टाइप जोड़ें. (I52c7d)
AnnotatedString
बिल्डर में मौजूद सभी तरीके अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं (Ia89c8, b/261561823)
गड़बड़ियां ठीक की गईं
- अब कंपोज़ में एम्बेड किए गए व्यू, रोटरी इवेंट पा सकते हैं. हालांकि, ऐसा तब होगा, जब वे फ़ोकस किए गए हों (I4d53a, b/320510084)
- उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव करने पर, अलग-अलग तरह के संसाधन अपडेट नहीं होते थे (Ia9b99, b/352336694)
- हमने उस समस्या को ठीक कर दिया है जिसकी वजह से, Sony के कुछ पुराने डिवाइसों पर POBox Japanese Keyboard का इस्तेमाल करते समय,
TextField
ठीक से काम नहीं कर रहा था. (Ia9b99, b/373743376) - डायलॉग बॉक्स को स्क्रीन के बीच में दिखाने के बजाय सबसे नीचे दिखाने की समस्या ठीक की गई (Ia2ec, b/373093006)
- Targeting API 35+ अब डायलॉग को
decorFitsSystemWindows
को गलत पर सेट करने के लिए मजबूर नहीं करता है. (Ibc94, b/364492593) - विंडो के बीच लेयर (जैसे, डायलॉग और मुख्य कॉन्टेंट) ले जाते समय क्रैश होने की समस्या ठीक की गई (I675ba, b/330955281)
वर्शन 1.8.0-alpha04
16 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha04
रिलीज़ हो गया है. वर्शन 1.8.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- यह
DelegatableNode#onDensityChange
औरDelegatableNode#onLayoutDirectionChange
कॉलबैक जोड़ता है, ताकि नोड की स्थिति में बदलाव होने पर उसे अपडेट किया जा सके (I04f3e, b/340662451) WindowInfo#containerSize
को जोड़ता है, ताकि मौजूदा विंडो के कॉन्टेंट कंटेनर का साइज़ मिल सके. इसेLocalWindowInfo
का इस्तेमाल करके वापस पाया जा सकता है. (Idc38c, b/369334429, b/360343819)- नेस्ट किए गए स्क्रोल करने लायक आइटम के लिए एक फ़िक्स लागू किया गया है. इन आइटम को फ़्लिंग के दौरान नोड ट्री से हटा दिया जाता है. अब ये नोड, फ़्लिंग को रद्द कर देंगे और बची हुई वेलोसिटी के साथ
onPostFling
इवेंट को सही तरीके से भेजेंगे. हम रिग्रेशन के मामले में, व्यवहार को कंट्रोल करने के लिएNewNestedScrollFlingDispatchingEnabled
फ़्लैग भी लॉन्च कर रहे हैं. इस फ़्लैग को बीटा वर्शन से पहले हटा दिया जाएगा. (I05c37, b/371168883) PointerInputModifierNode#touchBoundsExpansion
को जोड़ा गया है. इसका इस्तेमाल, एक पॉइंटर इनपुट मॉडिफ़ायर के टच बाउंड को बड़ा करने के लिए किया जा सकता है. (Iccf02, b/335339283)WindowInfo#containerSize
को जोड़ता है, ताकि मौजूदा विंडो के कॉन्टेंट कंटेनर का साइज़ मिल सके. इसेLocalWindowInfo
का इस्तेमाल करके वापस पाया जा सकता है. (I27767, b/369334429, b/360343819)TextFields
के स्टेबल वर्शन पर पिन करने के लिए,TextFields
' सेreadOnly
हटाएं. (I3aaba)Paragraph
औरParagraphIntrinsics
अबAnnotatedString
पर लागू किए गए सभी एनोटेशन की सूची लेता है. इससे पहले, इसमें सिर्फ़SpanStyles
(I12f80) की सूची होती थी
गड़बड़ियां ठीक की गईं
AnnotatedString
में पैराग्राफ़ को मैनेज करने का तरीका अपडेट किया गया. इससे पहले, सिर्फ़ ऐसे पैराग्राफ़ बनाए जा सकते थे जो एक-दूसरे से अलग हों. अबAnnotatedString
में पूरी तरह से ओवरलैप होने वाले पैराग्राफ़ शामिल किए जा सकते हैं. इन्हें एक साथ मर्ज कर दिया जाएगा. साथ ही, नेस्ट किए गए पैराग्राफ़ भी शामिल किए जा सकते हैं. ऐसे में, बाहरी पैराग्राफ़ को अंदरूनी पैराग्राफ़ की सीमाओं के हिसाब से बांटा जाएगा. साथ ही, अंदरूनी पैराग्राफ़ की स्टाइल को बाहरी पैराग्राफ़ की स्टाइल के साथ मर्ज कर दिया जाएगा (Ic9554)- शून्य लंबाई वाले
LinkAnnotation
की वजह से,AnnotatedString
में क्रैश होने की समस्या ठीक की गई. (89aac6)
वर्शन 1.8.0-alpha03
2 अक्टूबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha03
रिलीज़ हो गया है. वर्शन 1.8.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin का वर्शन 1.9 (I1a14c) पर अपडेट किया गया
- सुलभता सेवाओं के लिए, पेजर्स में सूची के व्यवहार को दोहराने के लिए, नई सिमैंटिक्स भूमिका, कैरसेल को पेश किया गया है. (Id354b, b/354109776, b/239672673)
invisibleToUser()
का नाम बदलकरhideFromAccessibility
करें. इसका फ़ंक्शन पहले जैसा ही है. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें. (Ib43a3)
गड़बड़ियां ठीक की गईं
SensitiveContent
मॉडिफ़ायर (Ib0442) के लिए दस्तावेज़ अपडेट किए जा रहे हैं- इस समस्या को ठीक किया गया है. इसमें Android के कुछ वर्शन पर, एलिवेशन शैडो के साथ सामान्य आउटलाइन वाली कुछ क्लिप को अनदेखा कर दिया जाता था
- उस समस्या को ठीक किया गया है जिसमें Android के कुछ वर्शन पर, सामान्य आउटलाइन वाली क्लिप के बारे में जानकारी देने पर खाली क्लिप लागू हो जाती थीं.
- जब IME किसी बाहरी व्यू पर चालू होता है और
ComposeView
पर फ़ोकस करने के लिए, Next कार्रवाई का इस्तेमाल किया जाता है, तब थ्रोन अपवाद ठीक किया गया.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)
गड़बड़ियां ठीक की गईं
- Fix Dalog
dismissOnClickoutside
(39a3d, b/364508685) - डायलॉग कॉन्टेंट की शैडो को क्लिप न करें (e8e2f, b/363027803)
- फ़ोकस सर्च के कंपोज़ और व्यू के बीच स्विच करने पर, गलत तरीके से काम करने की समस्या ठीक की गई (58377, b/350534714)
बाहरी योगदान
AlignmentLines
Map
अबVerticalAlignmentLine
याHorizontalAlignmentLine
कंक्रीट टाइप स्वीकार करता है. (I02912)ByteArray.decodeToImageBitmap(): ImageBitmap
का नया तरीका. (I83c21)
वर्शन 1.8.0-alpha01
4 सितंबर, 2024
androidx.compose.ui:ui-*:1.8.0-alpha01
रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये कमिट शामिल हैं.
वर्शन 1.7
वर्शन 1.7.8
12 फ़रवरी, 2025
androidx.compose.ui:ui-*:1.7.8
रिलीज़ हो गया है. वर्शन 1.7.8 में ये कमिट शामिल हैं.
वर्शन 1.7.7
29 जनवरी, 2025
androidx.compose.ui:ui-*:1.7.7
रिलीज़ हो गया है. वर्शन 1.7.7 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- Text कंपोज़ेबल को
LinkAnnotation
के साथAnnotatedString
पास करते समय,IndexOutOfBoundsException
को ठीक किया गया. (Ic96d2) - कुछ मामलों में,
AnnotatedString
मेंLinkAnnotation
का इस्तेमाल करने पर, टेस्ट में टाइमआउट की समस्या को ठीक किया गया है. (I04a03)
वर्शन 1.7.6
11 दिसंबर, 2024
androidx.compose.ui:ui-*:1.7.6
रिलीज़ हो गया है. वर्शन 1.7.6 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- पहले, जब फ़ोकस सिस्टम में अमान्य होने की प्रोसेस पूरी नहीं हुई होती थी, तब मुख्य इवेंट का पता चलने पर हम गड़बड़ी का मैसेज दिखाते थे. अब हम इसके बजाय गड़बड़ी को लॉग करते हैं (I7ea0, b/346370327).
SemanticsPropertyReceiver.invisibleToUser()
से एक्सपेरिमेंटल एनोटेशन हटाया गया. इसे 1.8 में बंद कर दिया जाएगा और इसकी जगहSemanticsPropertyReceiver.hideFromAccessibility()
का इस्तेमाल किया जाएगा. (I448f0, b/376479686)- हमने उस समस्या को ठीक कर दिया है जिसकी वजह से, Sony के कुछ पुराने डिवाइसों पर POBox Japanese Keyboard का इस्तेमाल करते समय,
TextField
ठीक से काम नहीं कर रहा था. (I94e0e, b/373743376) - ऐक्सेसिबिलिटी से जुड़ी समस्या को ठीक किया गया है. इस समस्या में,
BasicText
के inlineContent कोTalkBack
ने नहीं सुनाया था. (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
पर फ़ोकस करने के लिए, Next कार्रवाई का इस्तेमाल किया जाता है, तब थ्रोन अपवाद ठीक किया गया.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 या इसके बाद के वर्शन की ज़रूरत को लागू करता है. इसे इसलिए लागू किया गया है, ताकि
NestedScrollSource
में हुए बदलावों के बारे में यूज़र इंटरफ़ेस (यूआई) और फ़ाउंडेशन के बीच काम न करने की समस्या को ठीक किया जा सके. ये बदलाव 1.7.0-alpha01 के शुरुआती समय में हुए थे.
वर्शन 1.7.0-beta07
7 अगस्त, 2024
androidx.compose.ui:ui-*:1.7.0-beta07
रिलीज़ हो गया है. वर्शन 1.7.0-beta07 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेक्स्ट इनपुट से जुड़े
SemanticsNodeInteraction
फ़ंक्शनperformTextReplacement
,performTextInput
, औरperformTextClearance
अब सिर्फ़ पढ़ने के लिए उपलब्धTextFields
पर कॉल किए जाने पर, पुष्टि से जुड़ी गड़बड़ियां दिखाएंगे. (I4ae8f)
वर्शन 1.7.0-beta06
24 जुलाई, 2024
androidx.compose.ui:ui-*:1.7.0-beta06
रिलीज़ हो गया है. वर्शन 1.7.0-beta06 में ये कमिट शामिल हैं.
वर्शन 1.7.0-beta05
10 जुलाई, 2024
androidx.compose.ui:ui-*:1.7.0-beta05
रिलीज़ हो गया है. वर्शन 1.7.0-beta05 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इसमें सॉफ़्टवेयर कीबोर्ड बदलने पर,
TextField
नए कीबोर्ड से तब तक इनपुट स्वीकार नहीं करता, जब तक फ़ोकस हट नहीं जाता और फिर से नहीं आ जाता. - लेयर के कॉन्टेंट को सेव करने की कोशिश करने पर,
SurfaceView
कॉन्टेंट के साथ रेंडर करते समय अनचाहे साइड इफ़ेक्ट होने की समस्या को ठीक किया गया है.
वर्शन 1.7.0-beta04
26 जून, 2024
androidx.compose.ui:ui-*:1.7.0-beta04
रिलीज़ हो गया है. वर्शन 1.7.0-beta04 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- बहुत बड़ी टेक्स्ट लाइनों (जैसे, 10 हज़ार वर्ण) को मेज़र करते समय क्रैश होने की समस्या ठीक की गई (8157ab)
GraphicsLayer
एपीआई के लिए, सॉफ़्टवेयर रेंडरिंग की सुविधा बंद करें. (35ddd8)- लेयर पर्सिस्टेंस लॉजिक में क्रैश की समस्या को ठीक किया गया. (70b13e)
- लेयर ऑब्जेक्ट को फिर से इस्तेमाल करने की सुविधा को बंद कर दिया गया है, क्योंकि इससे रेंडरिंग से जुड़ी समस्याएं आ रही थीं. (70b13e)
वर्शन 1.7.0-beta03
12 जून, 2024
androidx.compose.ui:ui-*:1.7.0-beta03
रिलीज़ हो गया है. वर्शन 1.7.0-beta03 में ये कमिट शामिल हैं.
वर्शन 1.7.0-beta02
29 मई, 2024
androidx.compose.ui:ui-*:1.7.0-beta02
रिलीज़ हो गया है. वर्शन 1.7.0-beta02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
SemanticsProperties.Editable
का नाम बदलकरIsEditable
कर दिया गया है औरSemanticsPropertyReceiver.editable
कोisEditable
में बदल दिया गया है. अब यह प्रॉपर्टी बूलियन है और इसे हमेशा टेक्स्ट फ़ील्ड के ज़रिए तय किया जाता है. (I8acd8)- ऐक्सेसिबिलिटी बेंचमार्क पैरामीटर का नाम बदलें. (I3d440)
- लिंक को स्टाइल करने के लिए अपडेट किया गया एपीआई:
TextLinkStyles
अबLinkAnnotation
कंस्ट्रक्टर औरAnnotatedString.fromHtml
तरीके का हिस्सा है (I90b2b). सामग्री (I5477b) सेTextDefaults
को भी हटाया गया
गड़बड़ियां ठीक की गईं
- इसके मकसद को बेहतर तरीके से दिखाने के लिए,
LayoutCoordinates.introducesFrameOfReference
का नाम बदलकरLayoutCoordinates.introducesMotionFrameOfReference
कर दिया गया है. उस फ़्लैग के आधार पर कोऑर्डिनेट का हिसाब लगाने के लिए, संबंधित फ़ंक्शन का नाम बदला गया. (I3a330)
वर्शन 1.7.0-beta01
14 मई, 2024
androidx.compose.ui:ui-*:1.7.0-beta01
रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
performCustomAccessibilityActionLabelled
का नाम बदलकरperformCustomAccessibilityActionWithLabel
औरperformCustomAccessibilityActionWhere
का नाम बदलकरperformCustomAccessibilityActionWithLabelMatching
किया गया. (I5387f)AnnotatedString.hasEqualsAnnotations
अबhasEqualAnnotations
(I685c0) हो गया है- टेक्स्ट में Material थीम वाले लिंक पाने के लिए, एपीआई को अपडेट किया गया. खास तौर पर, थीम वाले
TextDefaults
बनाने के लिएTextDefaults
से तरीके हटा दिए गए हैं. साथ ही, थीम वाले लिंक के साथ एचटीएमएल पार्स करने की सुविधा भी हटा दी गई है.LinkAnnotations
इसके बजाय,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) पर, पहले से मौजूद Unspecified कॉन्स्टेंट के पक्ष मेंUnsetOffset/UnsetSize IntSize
सेंटिनल वैल्यू हटा दी गई हैं- जांच के दौरान माउस इनपुट इंजेक्ट करते समय,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
अबbutton: MouseButton
पैरामीटर स्वीकार करते हैं, ताकि उन्हें ज़्यादातर मामलों में लागू किया जा सके. सभी तरीकों के लिए डिफ़ॉल्ट वैल्यूMouseButton.Primary
होती है. (I31a23, b/190493367, b/261439695) LinkInteractionListener
में मौजूदonClicked
का नाम बदलकरonClick
किया गया. (Iaa35c)TextInclusionStrategy.isInside
का नाम बदलकरisIncluded
करें.Paragraph/MultiParagraph#getRangeForRect()
के रिटर्न टाइप को नॉन-नलेबल बनाएं. (I51f26)
गड़बड़ियां ठीक की गईं
reverseScrolling=true
वाले स्क्रोलिंग कंटेनर के लिए, लंबा स्क्रीनशॉट लेने की सुविधा से जुड़ी समस्या ठीक की गई. (I7c59c)
बाहरी योगदान
- नेस्ट किए गए
LazyLists
में आइटम को पहले से फ़ेच करने की सुविधा जोड़ी गई है. उदाहरण के लिए,LazyColumn
जो नेस्ट किए गएLazyRows
को रेंडर करता है. इस बदलाव से, इनLazyLists
के लिए स्क्रोलिंग के दौरान फ़्रेम ड्रॉप कम होने की उम्मीद है. लागू करने के डिफ़ॉल्ट तरीके के तहत, पहले दो नेस्ट किए गए आइटम को पहले से फ़ेच किया जाता है. हालांकि, इस तरीके को नएLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
औरLazyListPrefetchStrategy#onNestedPrefetch
एपीआई से कंट्रोल किया जा सकता है. (I51952)
वर्शन 1.7.0-alpha07
17 अप्रैल, 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ClickableText
को 'अब इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. टेक्स्ट में लिंक जोड़ने के लिए, अपने लिंक से मेल खाने वालाLinkAnnotation
बनाएं और इसAnnotatedString
को Text कंपोज़ेबल में पास करें.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
का नाम बदलकर record कर दिया गया है, ताकि यह Displaylist के साथ काम करने वाले एपीआई के begin/endRecording तरीकों को दिखा सके. जैसे,RenderNode
और Picture.rememberGraphicsLayer
कोrememberObserver
का फ़ायदा पाने के लिए अपडेट किया गया. (I312c1, b/288494724, b/330758155)UrlAnnotation
के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय,LinkAnnotation.Url
का इस्तेमाल करें. अगर Material theming का इस्तेमाल किया जा रहा है, तोTextDefaults
ऑब्जेक्ट का इस्तेमाल करके, Material theming के साथ एनोटेशन बनाएं (I8d180, b/323346545)- टेक्स्ट लिंक में, सामान्य स्टाइलिंग के साथ-साथ दबाए गए स्टेट स्टाइलिंग का विकल्प भी जोड़ा गया है. इसके अलावा, होवर किए गए और फ़ोकस किए गए स्टाइलिंग का विकल्प भी जोड़ा गया है (I5f864, b/139312671)
String.parseAsHtml
का नाम बदलकरAnnotatedString.Companion.fromHtml
कर दिया गया. (I43dcd)parseAsHtml
तरीके में स्टाइलिंग के तर्क (linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) और लिंक इंटरैक्शन लिसनर जोड़ा गया.<a>
टैग के साथ एचटीएमएल टैग की गई स्ट्रिंग को पार्स करते समय, यह तरीका ऐसे हर टैग के लिएLinkAnnotation.Url
बनाएगा. साथ ही, स्टाइलिंग ऑब्जेक्ट और लिंक इंटरैक्शन लिसनर को हर एनोटेशन में पास करेगा. (I7c977)LinkAnnotation
अब राज्य के हिसाब से स्टाइलिंग के तर्क औरLinkInteractionListener
लेता है. हाइपरलिंक पाने के लिए, इस एनोटेशन कोAnnotatedString
में जोड़ें.focusedState
और/याhoveredState
पास करके, लिंक के लिए विज़ुअलconfiguration
तय किया जा सकता है. ऐसा तब किया जाता है, जब लिंक पर फ़ोकस किया जाता है और/या उस पर कर्सर घुमाया जाता है. (I81ce4, b/139312671)ImeOptions.hintLocales
अब शून्य नहीं हो सकता. अगर आपको खाली स्थानीय भाषा की सूची पास करनी है, तो कृपयाLocaleList.Empty
का इस्तेमाल करें. (Ic5bc4)
गड़बड़ियां ठीक की गईं
- यह पुराने इनपुट इवेंट के खराब/करप्ट डेटा को आसानी से मैनेज करता है. साथ ही, खराब ऑफ़सेट डेटा को अनदेखा करता है.
- इस कुकी से, पॉइंटर इनपुट इवेंट की चालू स्ट्रीम के दौरान, किसी दूसरे पॉइंटर इनपुट मॉडिफ़ायर से पहले डाइनैमिक तौर पर पॉइंटर इनपुट मॉडिफ़ायर जोड़ने पर, पॉइंटर इवेंट से जुड़ी अनचाही समस्याओं को ठीक किया जाता है. उदाहरण के लिए, माउस/स्टाइलस को किसी एलिमेंट पर ले जाने और उससे हटाने के बीच.
वर्शन 1.7.0-alpha06
3 अप्रैल, 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये कमिट शामिल हैं.
नई सुविधाएं
- स्टाइल की गई स्ट्रिंग के लिए
parseAsHtml
तरीका जोड़ा गया: इससे एचटीएमएल टैग से मार्क की गई स्ट्रिंग कोAnnotatedString
में बदला जा सकता है. ध्यान दें कि सभी टैग इस्तेमाल नहीं किए जा सकते. उदाहरण के लिए, फ़िलहाल बुलेट लिस्ट नहीं दिखाई जा सकतीं. (I84d3d, I30626, b/139326648) - Compose के स्क्रोल कंटेनर में लंबे स्क्रीनशॉट लेने की सुविधा को एक्सपेरिमेंट के तौर पर लागू किया गया है. इसके लिए, आधिकारिक Android API (
ScrollCaptureCallback
) का इस्तेमाल किया गया है. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हो सकता है कि फ़िलहाल यह सभी मामलों में सही तरीके से काम न करे. इस वजह से, फ़िलहाल यह सुविधा डिफ़ॉल्ट रूप से बंद है. ऑप्ट-इन करने के लिए,ComposeFeatureFlag_LongScreenshotsEnabled
फ़्लैग को सही पर सेट करें. (I2b055, b/329296471)
एपीआई में हुए बदलाव
fun ClipEntry.getMetadata()
को बदलकरval ClipEntry.clipMetadata
कर दिया गया है. (I50155)ClipboardManager.getClipMetadata
औरClipboardManager.hasClip
फ़ंक्शन हटा दिए गए हैं. मौजूदा क्लिप एंट्री का मेटाडेटा पढ़ने के लिए, कृपयाclipEntry.getMetadata()
का इस्तेमाल करें. यह समझने के लिए कि क्लिपबोर्ड में कोई मौजूदा क्लिप है या नहीं,ClipboardManager.getClip
का नतीजा भी देखें. अगर यह शून्य है, तो इसका मतलब है कि क्लिपबोर्ड में कोई मौजूदा क्लिप नहीं है. (I50498)- अब
GraphicsLayer
ऑब्जेक्ट कोplaceable.placeWithLayer()
फ़ंक्शन (I1b22f) में पास किया जा सकता है ClipboardManager.setClip
अब क्लिपबोर्ड को मिटाने के लिए, शून्य वैल्यू स्वीकार करता है. (I7d2e9)- बिल्ड टूलिंग में लागू करने की जानकारी के तौर पर इस्तेमाल किए गए व्यू छिपाने में मदद करने के लिए, संसाधन आईडी जोड़े गए (I99531)
GraphicsLayer#toImageBitmap
में बिटमैप के कॉन्टेंट को रेंडर करने के लिए,GraphicsLayer#toImageBitmap
सस्पेंड करने का तरीका जोड़ा गया.GraphicsLayer
यह एपीआई लेवल 22 और इसके बाद के वर्शन पर, हार्डवेयर की मदद से रेंडर करने की प्रोसेस है. यह 99% से ज़्यादा Android डिवाइसों पर काम करती है. Android के एपीआई लेवल 21 पर, यह सॉफ़्टवेयर रेंडरिंग पर वापस आ जाता है. (I9e114)- Android
RectF
कोComposeRect
में बदलने का हेल्पर तरीका (I39925, b/325660505) - सभी
KeyboardOptions
पैरामीटर की वैल्यू अब डिफ़ॉल्ट रूप से 'तय नहीं की गई' होती है.KeyboardOptions.merge
तरीका जोड़ा गया. KeyboardOptions.autoCorrect
का नाम बदलकरautoCorrectEnabled
कर दिया गया है. साथ ही, इसे नल वैल्यू के तौर पर सेट किया जा सकता है. नल वैल्यू का मतलब है कि कोई वैल्यू नहीं दी गई है. (Ia8ba0, b/295951492)BasicTextField(state)
वैरिएंट औरBasicSecureTextField
, अब सॉफ़्टवेयर कीबोर्ड से की गई कार्रवाइयों को प्रोसेस करने के लिए,KeyboardActions
के बजायKeyboardActionHandler
का इस्तेमाल करते हैं. (I58dda)
वर्शन 1.7.0-alpha05
20 मार्च, 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये कमिट शामिल हैं.
नई सुविधाएं
- डिस्प्ले लिस्ट में ड्राइंग कमांड रिकॉर्ड करने के लिए, नया
GraphicsLayer
API पेश किया गया है. साथ ही, ऐसी अतिरिक्त प्रॉपर्टी भी जोड़ी गई हैं जो डिस्प्ले लिस्ट की रेंडरिंग पर असर डालती हैं. इससे किसी मुश्किल सीन को छोटे-छोटे हिस्सों में बांटने के लिए, आइसोलेशन बाउंड्री मिलती है. इन हिस्सों को एक-दूसरे से अलग अपडेट किया जा सकता है. इसके लिए, पूरे सीन को फिर से बनाने की ज़रूरत नहीं होती.GraphicsLayer
में किए गए बदलावों को, डिसप्ले लिस्ट को फिर से रिकॉर्ड किए बिना किया जा सकता है.Modifier.graphicsLayer
के उलट,GraphicsLayer
की मदद से कंपोज़ेबल कॉन्टेंट को कहीं और रेंडर किया जा सकता है. यह ऐनिमेशन के ऐसे उदाहरणों में काम आता है जहां कॉन्टेंट को अलग-अलग सीन में रेंडर किया जाना होता है.
एपीआई में हुए बदलाव
GraphicsLayer.draw(Canvas)
अब सार्वजनिक एपीआई नहीं है. लेयर बनाने के लिए, कृपयाDrawScope.drawLayer(GraphicsLayer)
एक्सटेंशन फ़ंक्शन का इस्तेमाल करें. (I7a7c0)restrictedConstraints()
को दो तरीकों में बांटा गया है:fitPrioritizingWidth()
औरfitPrioritizingHeight()
(I6d7fd)- Android L के लिए
HardwareCanvas
स्टब पेश किया गया (I1c3b5, b/288494724) - Compose फ़्रेमवर्क को अपडेट किया गया है, ताकि
GraphicsContext
कंपोज़िशन लोकल को दिखाया जा सके. साथ ही, Owner,DelegateableNode
, औरdrawWithCache
Modifier के लागू करने के तरीके को अपडेट किया गया है, ताकि स्कोप किए गए ऐक्सेस के लिएGraphicsContext
को दिखाया जा सके. इससे Modifiers को हटाने पर,GraphicsLayer
इंस्टेंस अपने-आप हट जाएंगे. (I64a2f, b/288494724) - लो-लेवल 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 यूज़र इंटरफ़ेस (यूआई) के बाहर इस्तेमाल किया जा सके. योगदान देने के लिए, Jake Wharton का धन्यवाद. (I6c41b, b/328263448)- बायस के आधार पर अलाइनमेंट के सभी सबटाइप पर, बायस फ़्लोट प्रॉपर्टी को लगातार दिखाना. (I69f0f, b/328088992)
वर्शन 1.7.0-alpha04
6 मार्च, 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
रिलीज़ हो गया है. वर्शन 1.7.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Android U के बाद के वर्शन वाले डिवाइसों पर, BasicTextField2 के लिए स्टाइलस से लिखने की सुविधा जोड़ी गई है. (I002e4)
- इस सीएल में, हम
GetScrollViewportLength
सिमैंटिक ऐक्शन जोड़ रहे हैं, ताकि हम कंपोज़ में स्क्रोल किए जा रहे कॉम्पोनेंट के बारे में जानकारी को a11y सिस्टम तक पहुंचा सकें. यह सीएल, स्क्रोल की जा सकने वाली फ़ाउंडेशन लिस्ट में बताई गई प्रॉपर्टी के इस्तेमाल पर भी लागू होता है. (Ic5fa2) FocusRequester.createRefs
अब स्थिर हो गया है (I4d92c, b/261436820)DelegatableNode.requireView()
को इसलिए पेश किया गया है, ताकि मॉडिफ़ायर नोड, कंपोज़िशन लोकल को पढ़े बिना मौजूदा AndroidView
को पा सकें. (I40768)- पाथ की दिशा बदलने के लिए नया एपीआई
Path.reverse()
(I36348) hintLocales
कोKeyboardOptions
में जोड़ा गया है, ताकिTextFields
को खास स्थानीय भाषाओं के साथ IME के बारे में जानकारी दी जा सके. इससे, पसंदीदा भाषा को पहले से सेट किया जा सकेगा.Locale
सेplatformLocale
प्रॉपर्टी को दिखाएं.यह प्रॉपर्टी, प्लैटफ़ॉर्म ऑब्जेक्ट दिखाती है. जैसे,java.util.Locale
. (I921c6)
वर्शन 1.7.0-alpha03
21 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- पेश है MaxLines और ओवरफ़्लो के साथ
ContextualFlowRow
और बेहतरFlowRow
/Column
. हमें यह बताते हुए बेहद खुशी हो रही है कि हमने एक्सपेरिमेंट के तौर पर उपलब्धFlowRow
औरFlowColumn
को बेहतर बनाया है. अब इनमें maxLines और overflow की सुविधा उपलब्ध है. साथ ही, हमनेContextualFlowRow
औरContextualFlowColumn
को भी लॉन्च किया है. इस अपडेट को परफ़ॉर्मेंस को बेहतर बनाने वाले कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है. इसमेंContextualFlow*
, ज़्यादा आइटम के लिए सबसे सही है. यहmaxLines
कॉन्फ़िगरेशन और डाइनैमिक +N 'ज़्यादा देखें' बटन का इस्तेमाल करता है. वहीं,FlowRow
औरFlowColumn
, कम आइटम के लिए सबसे सही है. इनकी संख्या 100 से कम होनी चाहिए. अहम जानकारी:FlowRow
याFlowColumn
में मौजूदा व्यवहार को बनाए रखने के लिए, जहां सभी आइटम क्रॉस ऐक्सिस मैक्स के हिसाब से फ़िट होते हैं, वहां शुरू करने के दौरानoverflow
कोFlowRowOverflow.Visible
याFlowColumnOverflow.Visible
पर सेट करें. इन नई सुविधाओं के काम करने के उदाहरण देखने के लिए,ContextualFlowRowSample
औरFlowRowSample
पर जाएं. (Ib9135, b/293577082) maxTextLength
सिमैंटिक्स प्रॉपर्टी जोड़ें. इसे उन टेक्स्ट फ़ील्ड पर सेट किया जाना चाहिए जो वर्णों की ज़्यादा से ज़्यादा संख्या को फ़िल्टर करते हैं. (I24d9f, b/170648072)Modifier.inspectable
रैपर अब काम नहीं करता है. यह एपीआई, आपके मॉडिफ़ायर को ज़रूरत से ज़्यादा बार अमान्य कर देगा. इसलिए, अब इसका इस्तेमाल न करने का सुझाव दिया जाता है. अगर डेवलपर को टूलिंग के लिए मॉडिफ़ायर प्रॉपर्टी दिखानी हैं, तो उन्हेंModifierNodeElement
परinspectableProperties()
तरीके को लागू करने का सुझाव दिया जाता है. (Ib3236)PopupProperties
के लिए नया कंस्ट्रक्टर, जोWindowManager.LayoutParams
फ़्लैग पर पूरा कंट्रोल देता है. (Ibb33e, b/312485503)DelegatableNode.requireLayoutCoordinates()
कोModifier.Node
के मौजूदाLayoutCoordinates
को पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपकोonPlaced
को बदलने और निर्देशांकों को खुद किसी प्रॉपर्टी में सेव करने की ज़रूरत नहीं है. (Ia8657)DelegatableNode.currentLayoutCoordinates
कोModifier.Node
के मौजूदाLayoutCoordinates
को पाने के तरीके के तौर पर पेश किया गया है. इसके लिए, आपकोonPlaced
को बदलने और निर्देशांकों को खुद किसी प्रॉपर्टी में सेव करने की ज़रूरत नहीं है. (Iaebaa)BasicTextField2
और इससे जुड़े एपीआई कोandroidx.compose.foundation.text2
पैकेज सेandroidx.compose.foundation.text
में ले जाया गया है. (I9f635)ApproachLayoutModifierNode
नाम का नया एपीआई जोड़ा गया है. इससे, मॉडिफ़ायर नोड में कस्टम अप्रोच लॉजिक बनाया जा सकता है. इसके अलावा, हमने एक नया एक्सपेरिमेंटलDeferredTargetAnimation
एपीआई भी जोड़ा है. इसका इस्तेमाल उन एनिमेशन के लिए किया जाता है जिनके टारगेट के बारे में इंस्टैंटिएशन के समय पता नहीं होता. (I60745)- पाथ की दिशा के बारे में क्वेरी करने और
Path
से कंटूर निकालने के लिए, नएPath
एपीआई. (I63d04) PathHitTest
औरPath.contains(Offset)
को जोड़ा गया है, ताकि यह पता लगाया जा सके किPath
में कोई खास पॉइंट शामिल है या नहीं. (I3b218)- अब
TextLayoutResult
,getLineBaseline(lineIndex)
तरीके को दिखाता है. इससे, मौजूदाfirstBaseline
औरlastBaseline
प्रॉपर्टी के साथ-साथ, टेक्स्ट की किसी भी लाइन की बेसलाइन को पढ़ा जा सकता है. (Ide4e8, b/237428541) - सिर्फ़ दो
AnnotatedStrings
के एनोटेशन की तुलना करने का तरीका जोड़ा गया. (I32659)
गड़बड़ियां ठीक की गईं
SemanticsPropertyReceiver.performImeAction
औरSemanticsActions.PerformImeAction
के साथ काम करने से जुड़ी समस्या को ठीक किया गया है. (Id0528, b/322269946)
वर्शन 1.7.0-alpha02
7 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
SemanticsPropertyReceiver.performImeAction
के साथ बाइनरी कंपैटिबिलिटी से जुड़ी समस्या को ठीक किया गया है. (I65865, b/322269946)PopupProperties
कंस्ट्रक्टर,usePlatformDefaultWidth
पैरामीटर लेता है. यह अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I8f8d2)ComposeTestRule.waitUntil
का एक ओवरलोड जोड़ा गया है. यह टाइमआउट मैसेज में शामिल करने के लिए, शर्त की स्ट्रिंग जानकारी लेता है. (I9413e)- सेमंटिक्स एपीआई
unset()
का नया वर्शन, एक ही मॉडिफ़ायर चेन में जोड़ी गई सेमंटिक्स प्रॉपर्टी हटाने के लिए. नई सिमैंटिक्स प्रॉपर्टीisOpaque
. (I8c583, b/317966058, b/246056649) PointerInputChange
के सार्वजनिक एपीआई में, कॉपी करने के तरीके सेoriginalEventPosition
को हटाया गया. (I7bead)
गड़बड़ियां ठीक की गईं
- एक्सेसिबिलिटी से जुड़ी एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, चुने जाने पर टैब और रेडियो बटन के अलावा अन्य आइटम पर क्लिक किया जा सकता था. (I2181c)
VelocityTracker
में अब डिफ़ॉल्ट रूप से पॉइंट जोड़ने की सुविधा चालू होगी. अगर कोई समस्या आती है, तोVelocityTrackerAddPointsFix
को false पर सेट करके, इस सुविधा को बंद किया जा सकता है. (Ib3877, b/269487059)TextStyle
औरParagraphStyle
में, पुराने सिस्टम के साथ काम न करने की समस्या को ठीक किया गया है. (I179f0, b/320819734)
बाहरी योगदान
- प्लेटफ़ॉर्म के हिसाब से पैरामीटर के बिना, नया
DialogProperties
कंस्ट्रक्टर जोड़ा गया. (I45829) - प्लेटफ़ॉर्म के हिसाब से पैरामीटर के बिना, नया
PopupProperties
कंस्ट्रक्टर जोड़ा गया. (I9a038)
वर्शन 1.7.0-alpha01
24 जनवरी, 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
रिलीज़ हो गया है. वर्शन 1.7.0-alpha01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ClipboardManager
को बड़ा किया गया है. इसमेंClipEntry
औरClipMetadata
को जोड़ा गया है, ताकि इमेज जैसे किसी भी कॉन्टेंट को शामिल किया जा सके.ui-test
मेंDeviceConfigurationOverride
API जोड़ता है, ताकि स्थानीय तौर पर, जांच किए जा रहे कॉन्टेंट के व्यवहार को बदला जा सके. जैसे, उपलब्ध साइज़, स्थान-भाषा, लेआउट की दिशा, फ़ॉन्ट स्केल या थीम तय करना.
वर्शन 1.6
वर्शन 1.6.8
12 जून, 2024
androidx.compose.ui:ui-*:1.6.8
रिलीज़ हो गया है. वर्शन 1.6.8 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब फ़ॉन्ट का स्केल, टेबल में तय किए गए सबसे कम स्केल से कम होता है, तो फ़ॉन्ट के स्केल में होने वाली गड़बड़ियों को ठीक किया गया है. इस मामले में, हम अब लीनियर 1x स्केल और सबसे छोटी टेबल के बीच इंटरपोलेट करते हैं, ताकि स्केल बढ़ने पर फ़ॉन्ट साइज़ लगातार बढ़ता रहे. (Icbae3)
वर्शन 1.6.7
1 मई, 2024
androidx.compose.ui:ui-*:1.6.7
रिलीज़ हो गया है. वर्शन 1.6.7 में ये कमिट शामिल हैं.
वर्शन 1.6.6
17 अप्रैल, 2024
androidx.compose.ui:ui-*:1.6.6
रिलीज़ हो गया है. वर्शन 1.6.6 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- कभी-कभी होने वाली
BasicTextField
क्रैश की समस्या को ठीक करता है.
वर्शन 1.6.5
3 अप्रैल, 2024
androidx.compose.ui:ui-*:1.6.5
रिलीज़ हो गया है. वर्शन 1.6.5 में ये कमिट शामिल हैं.
वर्शन 1.6.4
20 मार्च, 2024
androidx.compose.ui:ui-*:1.6.4
रिलीज़ हो गया है. वर्शन 1.6.4 में ये कमिट शामिल हैं.
वर्शन 1.6.3
6 मार्च, 2024
androidx.compose.ui:ui-*:1.6.3
रिलीज़ हो गया है. वर्शन 1.6.3 में ये कमिट शामिल हैं.
वर्शन 1.6.2
21 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.6.2
रिलीज़ हो गया है. वर्शन 1.6.2 में ये कमिट शामिल हैं.
वर्शन 1.6.1
7 फ़रवरी, 2024
androidx.compose.ui:ui-*:1.6.1
को रिलीज़ किया गया. वर्शन 1.6.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
SemanticsPropertyReceiver.performImeAction
औरSemanticsActions.PerformImeAction
के साथ काम करने से जुड़ी समस्या को ठीक किया गया है. (Ie0bb2, b/322269946)- लेआउट अब मेज़रमेंट के दौरान गड़बड़ी का मैसेज दिखाते हैं. ऐसा तब होता है, जब कोई लेआउट बहुत बड़ा साइज़ दिखाता है. आम तौर पर, इस तरह की गड़बड़ी तब होती है, जब मेज़रमेंट में सीधे तौर पर ज़्यादा से ज़्यादा कंस्ट्रेंट का इस्तेमाल किया जाता है और
Constraints.Infinity
की जांच नहीं की जाती. इस जांच से डेवलपर को, गलत साइज़ वाले लेआउट में समस्याएं ढूंढने में मदद मिलेगी. इसके बजाय, उस लेआउट में समस्याएं ढूंढने में मदद मिलेगी जिसमें वह शामिल है. (I339a9)
वर्शन 1.6.0
24 जनवरी, 2024
androidx.compose.ui:ui-*:1.6.0
रिलीज़ हो गया है. वर्शन 1.6.0 में ये कमिट शामिल हैं.
वर्शन 1.6.0-rc01
10 जनवरी, 2024
androidx.compose.ui:ui-*:1.6.0-rc01
रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- वेक्टर ग्राफ़िक को ऑप्टिमाइज़ करके लागू किया गया है, ताकि अतिरिक्त रीकंपोज़िशन को कम करके परफ़ॉर्मेंस को बेहतर बनाया जा सके.
वर्शन 1.6.0-beta03
13 दिसंबर, 2023
androidx.compose.ui:ui-*:1.6.0-beta03
रिलीज़ हो गया है. वर्शन 1.6.0-beta03 में ये कमिट शामिल हैं.
नई सुविधाएं
- अब नोड को अलग किए बिना,
LayoutCoordinates
को अलग किया जा सकता है. Compose के लेआउट इंस्पेक्टर (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
दिखाता है. ड्रैग इवेंट को प्रोसेस करने के लिए इस्तेमाल किए जाने वाले अन्य लैम्डा को इससे बदल दिया गया है. ड्रैग और ड्रॉप सेशन (Iebf3a) से डेटा पाने के लिए,DragAndDropTarget
फ़ैक्ट्री फ़ंक्शन जोड़ा गया है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) - अब उन कुंजियों के लिए हार्डवेयर की-अप इवेंट को अनदेखा किया जाएगा जिन्हें उसी कंपोज़ व्यू में डाउन इवेंट नहीं मिला है. (Ib37b4, b/305518328)
ArcLine
में स्वीप ग्रेडिएंट के लिए रेंडरर की सुविधा जोड़ी गई. (I4d5bb)PageSize.Fixed
के लिए equals और hashcode लागू करें. (Ie3ede, b/300134276)- विंडो इंसर्ट में बदलाव करने से जुड़ी बाइनरी कंपैटिबिलिटी की समस्या को ठीक किया गया (Iee695)
- Material3 चिप/बटन के लिए, मटीरियल कोर लेयर हटाएं. ऐसा इसलिए, क्योंकि माइक्रोबेंचमार्क से पता चलता है कि इसके बिना बेहतर परफ़ॉर्मेंस मिलती है. (I55555)
TestDispatcher
को कंपोज़ टेस्ट के लिएeffectContext
के तौर पर पास किया जाता है. अब इसका इस्तेमाल टेस्ट बनाने और फ़्रेम क्लॉक के लिए किया जाएगा. (Ia7178)
वर्शन 1.6.0-alpha08
18 अक्टूबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
Modifier.dragAndDrawSource
में,onDrawDragShadow
लैम्डा का नाम बदलकरdrawDragDecoration
कर दिया गया है. साथ ही,DragAndDropInfo
में, साइज़ पैरामीटर का नाम बदलकरdragDecorationSize
कर दिया गया है. (Id0e30, b/303904810)SemanticsNodeInteraction.isDisplayed()
औरSemanticsNodeInteraction.isNotDisplayed()
को पेश किया गया है. इनकी मदद से, यह देखा जा सकता है कि मैच किया गया नोड दिख रहा है या नहीं. इसके लिए, उस पर दावा करने की ज़रूरत नहीं है. (I2c196, b/302100809)null
को बदलने के लिए,ParagraphTextStyle
केTextAlign
,TextDirection
,Hyphens
, औरLineBreak
फ़ील्ड के लिए,Unspecified
वैल्यू जोड़ी गई है. ये क्लास इनलाइन क्लास हैं. इसलिए, Nullable को Unspecified से बदलकर, हम प्रिमिटिव टाइप बॉक्सिंग से बचते हैं.TextStyle
और पैराग्राफ़ स्टाइल में कंस्ट्रक्टर, गेटर, और अन्य तरीकों को अपडेट किया गया है, ताकि वे बताए गए पैरामीटर को नॉन-नल टाइप के तौर पर स्वीकार कर सकें. (I4197e, b/299490814)- एक्सएमएल से
GoogleFont
पढ़ने के लिए,GoogleFont
ओवरलोड जोड़ें. (If8f59) LoremIpsum
PreviewParameterProvider
को ओपन क्लास के तौर पर सेट किया गया. (I41bf5, b/266918816, b/300116360)
गड़बड़ियां ठीक की गईं
FontFamilyResolver
अब कैश मेमोरी को मैनेज करने वाली कोरूटीन के लिएDispatchers.Main
का इस्तेमाल करता है. (Ie8dd9)AndroidViewBinding
अबcommitNow
का इस्तेमाल करके,onRelease
के हिस्से के तौर पर लेआउट मेंFragmentContainerView
को शामिल करके बढ़ाए गएFragment
इंस्टेंस को तुरंत हटा देता है. इससे पहले,commit
का इस्तेमाल किया जाता था. इस तरह, लाइव एडिट की सुविधा में बदलाव होने पर कंपोज़िशन को बदलने के तरीके से जुड़ी समस्याओं को ठीक किया जाता है. (I58fbf)
वर्शन 1.6.0-alpha07
4 अक्टूबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम टेक्स्ट एडिटर के लिए, टेस्ट लिखने की सुविधा
PlatformTextInputMethodTestOverride
लॉन्च की गई. (Id159b) - यह कुकी, ड्रैग ऐंड ड्रॉप सेशन शुरू करने के लिए
dragAndDropSource
मॉडिफ़ायर और ड्रैग ऐंड ड्रॉप सेशन से डेटा पाने के लिएdragAndDropTarget
मॉडिफ़ायर जोड़ती है. (Ib7828, b/286038936) ColorList
औरColorSet
कलेक्शन जोड़े गए हैं, जिनसे एट्रिब्यूशन नहीं होता. (I744bd)- नॉन-लीनियर फ़ॉन्ट स्केलिंग को बंद करने के लिए,
DisableNonLinearFontScalingInCompose
अस्थायी फ़्लैग जोड़ा गया. अगर आपको टेस्ट को ठीक करने के लिए समय चाहिए, तो उन्हेंDisableNonLinearFontScalingInCompose = true
के तौर पर सेट करें. इस फ़्लैग को Compose 1.6.0-beta01 में हटा दिया जाएगा. (Ic9486)
गड़बड़ियां ठीक की गईं
- एक्सएमएल वेक्टर ड्रॉएबल पार्स करने की प्रोसेस को ऑप्टिमाइज़ किया गया है. (Ibb015)
वर्शन 1.6.0-alpha06
20 सितंबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- मटेरियल आइकॉन में अतिरिक्त ऑप्टिमाइज़ेशन किए गए हैं. (I3e08d)
- मिलते-जुलते नोड खोजने के लिए, मॉडिफ़ायर ट्री को ऊपर/नीचे ले जाने की सुविधा जोड़ता है. (I2d234)
focusRestorer()
मॉडिफ़ायर (Ie1d43) मेंonRestoreFailed()
कॉलबैक जोड़ा गया- अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं, ताकि
ColorInt
,FloatRange
,IntRange
,Size
वगैरह के बारे में बताया जा सके. (Id65c8, b/290950582) PreviewScreenSizes
की परिभाषा मेंshowSystemUi=true
जोड़ें (Ib61d3)
व्यवहार में बदलाव
- अब कंपोज़ में, फ़ॉन्ट को बेहतर तरीके से पढ़ने और ऐक्सेस करने के लिए, नॉन-लीनियर फ़ॉन्ट स्केलिंग का इस्तेमाल किया जाता है. सिस्टम सेटिंग में फ़ॉन्ट स्केल > 100% होने पर, छोटे टेक्स्ट का साइज़ सामान्य रूप से बढ़ जाएगा. हालांकि, पहले से बड़े टेक्स्ट का साइज़ सिर्फ़ थोड़ा बढ़ेगा. साथ ही, एसपी में तय की गई लाइन की ऊंचाई, 100% स्केल के हिसाब से तय की गई ऊंचाई के अनुपात में अपने-आप अडजस्ट हो जाएगी. ज़्यादा जानकारी के लिए, फ़ॉन्ट स्केलिंग के सबसे सही तरीके देखें. (I11518)
वर्शन 1.6.0-alpha05
6 सितंबर, 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- इस नीति से,
AndroidComposeViewAccessibilityDelegateCompat
में कॉन्टेंट कैप्चर करने की सुविधा चालू होती है. (Ib2969) ScrollView
औरRecyclerView
जैसे व्यू कॉम्पोनेंट में फ़्लिंग वेलोसिटी,ViewConfiguration.ScaledMaximumFlingVelocity
पर सीमित होती हैं. Compose में अबmaximumFlingVelocity
का अपना वर्शन शामिल है, जो अबDraggable
पर लागू होता है. (Ibf974)- प्लेटफ़ॉर्म के ड्रैग ऐंड ड्रॉप एपीआई के लिए, शुरुआती स्केफ़ोल्डिंग जोड़ी गई है. (If84ce)
RotaryScrollEvent
मेंdeviceId
जोड़ें (Iba3bf)- नए डिवाइसों को शामिल करने के लिए,
ui-tooling
Devices API को अपडेट किया गया (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)- अलग-अलग ग्राफ़िक्स एपीआई में androidx एनोटेशन जोड़े गए हैं, ताकि
ColorInt
,FloatRange
,IntRange
,Size
वगैरह के बारे में बताया जा सके. (I70487, b/290950582) - पैरामीटर की बेहतर जांच के लिए,
ColorFilter
एपीआई को अपडेट किया गया है, ताकि इसमें सबक्लास के टाइप शामिल किए जा सकें. (I5fe29) - wear-tooling-preview लाइब्रेरी को पेश किया गया है. इससे, यूज़र इंटरफ़ेस की झलक देखने के लिए इस्तेमाल किए जा सकने वाले मान्य Wear डिवाइसों की सूची बनाई जा सकती है (Ib036e)
- डेंसिटी इंटरफ़ेस के फ़ॉन्ट स्केलिंग वाले हिस्से को मैनेज करने के लिए,
FontScalable
इंटरफ़ेस बनाया गया. (I2cf3f)
वर्शन 1.6.0-alpha03
9 अगस्त, 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
रिलीज़ हो गया है. वर्शन 1.6.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- ऑब्जेक्ट को सीन में शामिल करने और हटाने के लिए, ट्रांज़िशन का नया टाइप. यह ऑब्जेक्ट को सीन में शामिल करने और हटाने के दौरान, ऐनिमेशन वाले कंटेनर के साइज़ के हिसाब से कॉन्टेंट को स्केल करता है.
LookaheadScope
कंपोज़ेबल फ़न और इंटरफ़ेस अब स्टेबल हो गए हैं. (Ifb2ce) privateImeOptions
को कॉन्फ़िगर करने की सुविधा जोड़ी गई (Idb772)
गड़बड़ियां ठीक की गईं
PopupPositionProvider.calculatePosition
अब कैलकुलेशन में पढ़े गए राज्य के बदलने पर, पॉप-अप की पोज़िशन को अपने-आप अपडेट कर देगा. (I676a1, b/292257547)readOnly
की वैल्यू सही होने पर, कीबोर्ड दिखाने वाले टेक्स्ट फ़ील्ड और उनमें बदलाव करने की सुविधा से जुड़ी समस्या ठीक की गई. इसके अलावा, फ़ोकस किए जाने के दौरानreadOnly
को सही से गलत पर बदलने पर कीबोर्ड न दिखने की समस्या को भी ठीक किया गया है. (I34a19, b/246909589)- यूआई टेस्टिंग में ग्लोबल असर्शन का इस्तेमाल ज़्यादा किया गया. (I1f90d)
वर्शन 1.6.0-alpha02
26 जुलाई, 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
रिलीज़ हो गया है. वर्शन 1.6.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- एक सर्विस लोकेटर इंटरफ़ेस जोड़ा गया है. इसे कंपोज़िशन को लागू करने वाले लोग लागू कर सकते हैं. इससे कंपोज़िशन को लागू करने की अनुमति मिलती है. यह कंपोज़िशन, कंपोज़िशन डेलिगेट सर्विस के लुकअप को ओरिजनल कंपोज़िशन को सौंपती है. इसे सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसका इस्तेमाल रनटाइम में एक्सपेरिमेंटल एपीआई बनाने के लिए किया जाता है. इन्हें कंपोज़र के रैप किए गए वर्शन से ढूंढा जा सकता है. जैसे, यूज़र इंटरफ़ेस (यूआई) मॉड्यूल. (I296b9)
PlatformTextInput*
एपीआई को पूरी तरह से फिर से डिज़ाइन किया गया है. (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 अब डिफ़ॉल्ट रूप से false पर सेट है
Compose में, includeFontPadding
अब डिफ़ॉल्ट रूप से गलत (21d806) पर सेट है.
includeFontPadding
एक लेगसी एट्रिब्यूट है. यह कंट्रोल करता है कि टेक्स्ट की पहली और आखिरी लाइन के ऊपर अतिरिक्त पैडिंग शामिल करनी है या नहीं. ऐसा इसलिए किया जाता है, ताकि टेक्स्ट बेसलाइन के ऊपर या नीचे बढ़ने वाले किसी भी वर्ण को शामिल किया जा सके.
Compose के इस वर्शन को अपडेट करने से, आपके यूज़र इंटरफ़ेस (यूआई) में सभी टेक्स्ट रेंडर करने का तरीका बदल जाएगा. ऐसा इसलिए होगा, क्योंकि यह हर टेक्स्ट की पहली और आखिरी लाइन के ऊपर मौजूद अतिरिक्त पैडिंग को हटा देगा.
यूज़र इंटरफ़ेस (यूआई) की ज़रूरतों और इस्तेमाल की जा रही फ़ॉन्ट मेट्रिक के आधार पर, बदलाव कम से कम होने चाहिए. हालांकि, आपको इन जैसी समस्याओं का सामना करना पड़ सकता है: - स्क्रीनशॉट टेस्ट काम नहीं कर रहे हैं. अगर ज़रूरी हो, तो यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्या ठीक करें और गोल्डन इमेज फिर से जनरेट करें. - टेक्स्ट थोड़ा गलत तरीके से अलाइन किया गया है. कस्टम नेगेटिव पैडिंग हटाएं या ज़रूरत पड़ने पर पैडिंग जोड़ें.
हर टेक्स्ट के लिए PlatformTextStyle
का इस्तेमाल करके, includeFontPadding
में ऑप्ट-इन किया जा सकता है:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Material स्टाइल कॉन्फ़िगर करके, अपने सभी टेक्स्ट के लिए includeFontPadding
में ऑप्ट-इन किया जा सकता है. ध्यान दें कि M2 और M3 के बीच पैरामीटर के नाम अलग-अलग होंगे.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
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)
गड़बड़ियां ठीक की गईं
- कस्टम
FocusTarget
बनाने के लिए,FocusTargetModifierNode
इंटरफ़ेस जोड़ा गया. (I9790e) TextMeasurer
कंस्ट्रक्टर पर मौजूदfallback*
पैरामीटर का नाम बदलकरdefault*
कर दिया गया है. (I940a5)SemanticsPropertyReceiver.performImeAction
का नाम बदलकरonImeAction
औरSemanticsActions.PerformImeAction
का नाम बदलकरOnImeAction
किया गया. (I8e841)- नेस्ट की गई स्क्रोलिंग (खास तौर पर,
NestedScrollConnection
में) में, माउस स्क्रोल और ड्रैग के बीच अंतर करने के लिए, Wheel इवेंट जोड़ा गया है. (Ie57e4) asComposePaint
एपीआई जोड़ा गया है, ताकिtoComposePaint
को बदला जा सके. ऐसा इसलिए, क्योंकि लौटाया गया ऑब्जेक्ट, ओरिजनलandroid.graphics.Paint
(I22b4c) को रैप करता हैSemanticsProperties.imeAction
को बंद कर दिया गया है. इसकी जगहSemanticsActions.performImeAction
के लिए नए पैरामीटर का इस्तेमाल करें. (I4a587)- माउस से चुनने की सुविधा जोड़ी गई. टच करके चुने गए टेक्स्ट को शब्द के हिसाब से बढ़ाया जा सकता है और वर्ण के हिसाब से कम किया जा सकता है. (Ic0c6c, b/180639271)
Paragraph
के जिन तरीकों से, सीमा से बाहर के ऑफ़सेट के लिएAssertionError
मिलता था उनसे अबIllegalArgumentException
मिलता है. ऐसा इसलिए, क्योंकि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 में इस्तेमाल किए जाने वाले
asComposePaint
इंस्टेंस के इस्तेमाल को चालू करने के लिए,asComposePaint
एपीआई जोड़ा गयाandroid.graphics.Paint
गड़बड़ियां ठीक की गईं
asComposePaint
एपीआई जोड़ा गया है, ताकिtoComposePaint
को बदला जा सके. ऐसा इसलिए, क्योंकि लौटाया गया ऑब्जेक्ट, ओरिजनलandroid.graphics.Paint
(I22b4c) को रैप करता है
वर्शन 1.5.0-beta01
24 मई, 2023
androidx.compose.ui:ui-*:1.5.0-beta01
रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- रीकंपोज़िशन, कलर ऐनिमेशन, और
AndroidComposeView
(Ib2bfa) में किए गए असाइनमेंट हटा दिए गए हैं - यह कुकी, डेलिगेशन की अनुमति देने के लिए, हेल्पर फ़ंक्शन
CacheDrawModifierNode()
को जोड़ती है (Icf8f9) isLookingAhead
प्रॉपर्टी लॉन्च की गई है. इसेMeasureScope
से ऐक्सेस किया जा सकता है. इसकी मदद से, लुकअहेड के नतीजों को देखा जा सकता है. साथ ही, अगर चाहें, तो मुख्य पास पर असर डाला जा सकता है. (Ibf4c3)- नई सिमैंटिक्स प्रॉपर्टी
traversalIndex
. यह एक फ़्लोट है. इसका इस्तेमाल,TalkBack
ट्रैवर्सल में नोड का क्रम बदलने के लिए किया जाता है. इसमें कम वैल्यू वाले नोड पहले आते हैं. (I9a81b, b/186443263) - सिमैंटिक्स प्रॉपर्टी
isContainer
का नाम बदलकरisTraversalGroup
किया जा रहा है (I121f6) ColorProducer
में अबproduce
के बजायoperator fun invoke
है (I4a9a2)- पाथ ऑब्जेक्ट पर अनुवाद/स्केल/रोटेशन ट्रांसफ़ॉर्मेशन लागू करने के लिए,
Path
ट्रांसफ़ॉर्म एपीआई जोड़ें. (I23434, b/233772232) ColorProducer
के तरीके कोproduce
कहा जाता है. (I78bde)toFrameworkColorSpace
का नाम बदलकरtoAndroidColorSpace
(I4f547) कर दिया गया हैColorLambda
का नाम बदलकरColorProducer
करें. (I73b1a)- Android और Compose के कलरस्पेस टाइप के बीच बदलने के लिए, एपीआई उपलब्ध कराए गए हैं. (Ie7db4, b/279979665)
- टेक्स्ट के रंग को आसानी से ऐनिमेट करने या सेट करने के लिए,
BasicText
में कलर पैरामीटर जोड़ा गया है. (Iffd88, b/246961787) TextRange.constrain
का नाम बदलकरTextRange.coerceIn
कर दिया गया. (I31be2)- पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया
TextStyle.merge(...)
जोड़ा गया. (Iad234, b/246961787) - कई टेक्स्ट एपीआई को स्थिर किया गया है. इनमें
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
शामिल हैं. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
का इस्तेमाल फिर से किया जा सकता है. हमारा मकसद इस फ़ील्ड को हटाना था. हालांकि, डेवलपर के सुझाव से पता चलता है कि उन्हें इस कॉन्फ़िगरेशन विकल्प की ज़रूरत है. इसलिए, फ़ील्ड (I98e96, b/277703184) से डेप्रिकेशन हटाया जा रहा है- सार्वजनिक
TextRange.constrain
तरीका जोड़ा गया. (I97912) AnnotatedString
में मौजूदUrlAnnotation
s को अब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) - Canvas पर टेक्स्ट ड्रॉ करते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम को सपोर्ट करने के लिए,
DrawScope.drawText
,Paragraph.paint
, औरMultiParagraph.paint
तरीकों मेंBlendMode
पैरामीटर जोड़ा गया. (I57508) Font.MaximumAsyncTimeout
का नाम बदलकरFont.MaximumAsyncTimeoutMillis
करें. सिर्फ़ नाम बदलें. (I07af5)@Preview
रेफ़रंस डिवाइसों (Id6151, b/254528382) की अपडेट की गई डीपीआई वैल्यूBasicText
मेंbrush
,alpha
पैरामीटर जोड़ें, ताकि टेक्स्ट ब्रश को आसानी से ऐनिमेट किया जा सके या सेट किया जा सके.- :ui:ui-unit में Float, Double, Long, Int, Short के लिए बॉक्स-फ़्री लैम्डा टाइप तय करें (I6f18d, b/246961787)
गड़बड़ियां ठीक की गईं
- पॉइंटर की वेलोसिटी ट्रैकिंग में कई ऐसेट के असाइनमेंट हटाए गए (I26bae)
- लेआउट और पॉइंटर इनपुट मैनेजमेंट में कम किए गए असाइनमेंट (I5333a)
- वेक्टर मेमोरी के इस्तेमाल और पहले फ़्रेम की रेंडरिंग को ऑप्टिमाइज़ करें (I2f3c6)
- कैनवस का इस्तेमाल करके लाइनें और पॉइंट बनाते समय, हटाए गए असाइनमेंट (I9f535)
AndroidFont.fontVariationSettings
(I7d9e2) के लिए दस्तावेज़ जोड़ें
बाहरी योगदान
- वेक्टर एपीआई (I906cb) में परफ़ॉर्मेंस को बेहतर बनाया गया है और ऐलोकेशन को कम किया गया है
वर्शन 1.5.0-alpha04
10 मई, 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
रिलीज़ हो गया है. वर्शन 1.5.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
Modifier.Node
डेलिगेशन से जुड़े सुधारModifier.Node
से अन्यModifier.Node
इंस्टेंस को डेलिगेट करने की बेहतर सुविधा जोड़ी गई है.DelegatingNode
इसके लिए,delegate
औरundelegate
एपीआई का इस्तेमाल किया जा सकता है. इस बदलाव से पहले, डेलिगेट करने वाले नोड के हर एपीआई को, डेलिगेट किए गए नोड को साफ़ तौर पर डेलिगेट करना पड़ता था. इस बदलाव के बाद, नोड इंटरफ़ेस को डिफ़ॉल्ट रूप से डेलिगेट कर दिया जाएगा. हालांकि, अगरDelegatingNode
उन्हें साफ़ तौर पर बदल रहा है, तो ऐसा नहीं होगा. (67352bc)
एपीआई में हुए बदलाव
NestedScrollModifierNode
को पेश किया गया है. यह एकNestedScroll Modifier.Node
है जिसे डेलिगेट किया जा सकता है. (I69513)AndroidViewBinding
कंपोज़ेबल मेंonReset
औरonRelease
पैरामीटर जोड़े गए हैं. येAndroidView
कंपोज़ेबल की तरह काम करते हैं. साथ ही,ViewBinding
के साथ व्यू को फिर से इस्तेमाल करने की सुविधा चालू करते हैं. (I00b1e, b/276802519)- Compose Path API को अपडेट किया गया है, ताकि रीवाइंड ऑपरेशन को सपोर्ट किया जा सके. इससे, पाथ में बार-बार बदलाव करने के इस्तेमाल के उदाहरणों को सपोर्ट किया जा सकेगा. साथ ही, पाथ को तेज़ी से फिर से इस्तेमाल किया जा सकेगा. (I7b797)
- पूरी पैरामीटर सूची के साथ ऑप्टिमाइज़ किया गया
TextStyle.merge(...)
जोड़ा गया. (Iad234, b/246961787) - कई टेक्स्ट एपीआई को स्थिर किया गया है. इनमें
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
शामिल हैं. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
का इस्तेमाल फिर से किया जा सकता है. हमारा मकसद इस फ़ील्ड को हटाना था. हालांकि, डेवलपर के सुझाव से पता चलता है कि उन्हें इस कॉन्फ़िगरेशन विकल्प की ज़रूरत है. इसलिए, फ़ील्ड (I98e96, b/277703184) से डेप्रिकेशन हटाया जा रहा है
गड़बड़ियां ठीक की गईं
- उस रिग्रेशन को ठीक किया गया है जिसमें
Dialog
कंपोज़ेबल से नहीं बनाए गए डायलॉग बॉक्स में मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था. (I82551, b/262140644)
वर्शन 1.5.0-alpha03
19 अप्रैल, 2023
androidx.compose.ui:ui-*:1.5.0-alpha03
रिलीज़ हो गया है. वर्शन 1.5.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
LookaheadScope
मेंSubcomposeLayout
के लिए डिफ़ॉल्ट तौर पर नया व्यवहार:SubcomposeLayouts
जिनमें शर्त के साथ स्लॉट नहीं होते हैं (जैसे कि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
s को अब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) - इस इंटरफ़ेस को लागू करके, Modifier.Nodes को CompositionLocals को पढ़ने की अनुमति दें. (Ib44df)
- @Deprecated क्लास को प्रॉपर्टी में ट्रांसफ़र करना. (I882d1)
वर्शन 1.4
वर्शन 1.4.3
3 मई, 2023
androidx.compose.ui:ui-*:1.4.3
रिलीज़ हो गया है. वर्शन 1.4.3 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- कुछ मॉडिफ़ायर के साथ इस्तेमाल करने पर,
AndroidView
के सही तरीके से लेआउट न होने की समस्या को ठीक किया गया है. (I4dc77, b/274797771) - 2D फ़ोकस सर्च में मौजूद एक गड़बड़ी को ठीक किया गया है. इससे
DropDown
मेन्यू (b/276811828) पर असर पड़ता था - कस्टम फ़ोकस एंटर/एग्ज़िट प्रॉपर्टी में मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, लैंबडा को पहली बार शुरू करने पर सिर्फ़ एंटर/एग्ज़िट ब्लॉक चलता था (b/277234245)
- फ़ोकस सिस्टम में हुई रिग्रेशन की समस्या को ठीक किया गया है. इसकी वजह से,
focusProperties
को पढ़ते समय ऐप्लिकेशन क्रैश हो जाता था. (b/271324781, b/274897776)
वर्शन 1.4.2
19 अप्रैल, 2023
androidx.compose.ui:ui-*:1.4.2
रिलीज़ हो गया है. वर्शन 1.4.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
AndroidView
अपने मॉडिफ़ायर का सही तरीके से फिर से इस्तेमाल नहीं कर पाता था. इससे ऐप्लिकेशन में अनचाही गड़बड़ियां हो सकती थीं और वह क्रैश हो सकता था. (Ib67ee, b/275919849) - रिग्रेशन की समस्या ठीक की गई है. इसमें
Dialog
कंपोज़ेबल (I82551, b/262140644) से नहीं बनाए गए डायलॉग बॉक्स में मौजूद टेक्स्ट फ़ील्ड के लिए कीबोर्ड नहीं दिख रहा था
वर्शन 1.4.1
5 अप्रैल, 2023
androidx.compose.ui:ui-*:1.4.1
रिलीज़ हो गया है. वर्शन 1.4.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
ParentDataModifier
सेAndroidView
पर असर न पड़ने की समस्या ठीक की गई है (b/274797771)
वर्शन 1.4.0
22 मार्च, 2023
androidx.compose.ui:ui-*:1.4.0
रिलीज़ हो गया है. वर्शन 1.4.0 में ये कमिट शामिल हैं.
1.3.0 के बाद हुए अहम बदलाव
- एक नया
PinnableContainer
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()
API को हटा दिया गया है. इसके बजाय, कृपया सीधेModifierNodeElement
से एक्सटेंड करें. (I2256b)- एक नया
Modifier.Node.onReset()
कॉलबैक जोड़ा गया है. इससे, कुछ लोकल स्टेट को रीसेट किया जा सकता है. ऐसा तब किया जाता है, जबLayout
का फिर से इस्तेमाल किया जाता है. उदाहरण के लिए,LazyColumn
के आइटम के तौर पर. फ़ोकस की गई स्थिति को ठीक से रीसेट करने के लिए,FocusTargetModifierNode
को ठीक किया गया है. (I65495, b/265201972) - Canvas पर टेक्स्ट ड्रॉ करते समय, अलग-अलग ब्लेंडिंग एल्गोरिदम को सपोर्ट करने के लिए,
DrawScope.drawText
,Paragraph.paint
, औरMultiParagraph.paint
तरीकों मेंBlendMode
पैरामीटर जोड़ा गया. (I57508)
गड़बड़ियां ठीक की गईं
- ऐक्सेसिबिलिटी फ़ोकस ऑर्डर एल्गोरिदम को बेहतर बनाया गया है. उदाहरण के लिए, टॉप/बॉटम बार को ज़्यादातर पहले/आखिरी में पढ़ा जाता है (74e9c5)
वर्शन 1.4.0-beta01
8 फ़रवरी, 2023
androidx.compose.ui:ui-*:1.4.0-beta01
रिलीज़ हो गया है. वर्शन 1.4.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
PinnableContainer.PinnedHandle.unpin()
का नाम बदलकरrelease()
कर दिया गया (I4667a)ComposeTestRule
में एक्सपेरिमेंटल एपीआई के तौर परwaitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
, औरwaitUntilDoesNotExist
को जोड़ा गया है. साथ ही,waitUntil
एपीआई को किसी भी मैच करने वाले और नोड की किसी भी संख्या को स्वीकार करने के लिए बढ़ाया गया है. ज़्यादा जानकारी के लिए,ComposeTestRule
पर जाएं. (Ifa1b9, b/226934294)Font.MaximumAsyncTimeout
का नाम बदलकरFont.MaximumAsyncTimeoutMillis
करें. (I07af5)GoogleFont.Provider.AllFontsListUri
को हटा दिया गया है और इसके बजाय ktdoc में लिंक कर दिया गया है. (I16f29)
गड़बड़ियां ठीक की गईं
AndroidFont.fontVariationSettings
(I7d9e2) के लिए दस्तावेज़ जोड़ें
वर्शन 1.4.0-alpha05
25 जनवरी, 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
रिलीज़ हो गया है. वर्शन 1.4.0-alpha05 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
runComposeUiTest
फ़ंक्शन औरcreate*ComposeRule
फ़ंक्शन के लिए, एक्सपेरिमेंट के तौर पर शुरू किए गए नए ओवरलोड जोड़े गए हैं. ये फ़ंक्शन,CoroutineContext
पैरामीटर स्वीकार करते हैं. कॉन्टेक्स्ट का इस्तेमाल, टेस्ट कंपोज़िशन और कंपोज़िशन में मौजूद किसी भीLaunchedEffect
औरrememberCoroutineScope()
कॉल के लिए किया जाएगा. (I10614, b/265177763)- एक डाइमेंशन वाली वेलोसिटी (If5a82) को ट्रैक करने के लिए, नया एपीआई जोड़ा गया है
FocusRequester
को अब@Stable
के तौर पर मार्क कर दिया गया है. (I580ee)DialogProperties
कंस्ट्रक्टर से एक्सपेरिमेंटल एनोटेशन हटाएं. यह कंस्ट्रक्टर,usePlatformDefaultWidth
पैरामीटर लेता है. (Ic4048)- पाथ पर किसी दूरी पर मौजूद बिंदु की पोज़िशन और स्पर्शरेखा की गणना करने के लिए फ़ंक्शन जोड़ा गया -
PathMeasure.getPosition()
औरPathMeasure.getTangent()
के साथ (I3b47c) PlatformParagraphStyle
को गलती से सार्वजनिक सेटर के तौर पर दिखाया गया था. इसे हटा दिया गया है. (I07f47)- इनलाइन/deprecated-hidden फ़ंक्शन के टाइप/nullability के बारे में ज़्यादा जानकारी (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)
- ui टूलिंग डेटा क्लास
Group
में अब एक फ़ील्ड,isInline
है. इससे पता चलता है कि ग्रुप, इनलाइन कंपोज़ेबल फ़ंक्शन को कॉल करने के लिए है या नहीं. अगरisInline
,true
है, तो कॉल किसी इनलाइन कंपोज़ेबल फ़ंक्शन को किया जाता है. हालांकि, यह वैल्यू उन मॉड्यूल से कंपोज़ेबल फ़ंक्शन को इनलाइन करने के लिए किए गए कॉल के लिए गलत हो सकती है जिन्हें कंपोज़ कंपाइलर प्लगिन के ऐसे वर्शन के साथ कंपाइल किया गया है जो इनलाइन फ़ंक्शन की जानकारी जनरेट नहीं करता. (Idb846) - पहले एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल वर्शन में अपग्रेड किया गया
- Rotary Scroll Event API अब स्थिर हो गया है (I42ad3, b/261561229)
FontVariation
एपीआई अब स्टेबल हो गया है (I8779f, b/241016309)- सभी
Font()
कंस्ट्रक्टर अब स्टेबल एपीआई (I5948b, b/261435386) हैं DeviceFontFamilyName
अब स्टेबल वर्शन में उपलब्ध है (I8b640, b/261435386)AndroidFont
कंस्ट्रक्टर के साथvariationSettings
अब एक स्टेबल एपीआई है. इसका इस्तेमाल, नए तरह के फ़ॉन्ट डिस्क्रिप्टर बनाने के लिए किया जा सकता है. (I5adcc, b/261565807)createFontFamilyResolver
API अब स्टेबल हो गया है. इसका इस्तेमाल, फ़ॉन्ट को एसिंक तरीके से लोड करने के दौरान, बिना हैंडल किए गए अपवादों को पकड़ने के लिए किया जा सकता है. (Ibb481, b/261435386)Font.loadingStrategy
API अब स्टेबल हो गया है. (I5937c, b/261435386)GoogleFont
API अब स्टेबल हो गया है. (Ic90b0, b/261435386)TextUnit(float, TextUnitType)
अब स्टेबल एपीआई है. (I90c84, b/261561612)pluralStringResource
अब स्टेबल एपीआई है. (I09849, b/261439703)
वर्शन 1.4.0-alpha03
7 दिसंबर, 2022
androidx.compose.ui:ui-*:1.4.0-alpha03
रिलीज़ हो गया है. वर्शन 1.4.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ExperimentalComposeUiApi
कोPointerIcon
(I23af8) से हटाया जा रहा है- पेज को ऐक्सेस करने से जुड़ी कार्रवाइयों के बारे में जानकारी दें:
PageUp
,PageDown
,PageLeft
,PageRight
. ध्यान दें कि ये सिर्फ़ API 29 से उपलब्ध हैं. (Ida4ab) rememberNestedScrollConnection
पैरामीटर व्यू को रूट व्यू से होस्ट व्यू में अपडेट किया गया. (Ia5200)- स्क्रोल करने की जानकारी के लिए, Modifier API जोड़ा गया. (I2ba9d, b/203141462)
- इस कुकी का इस्तेमाल
Clickable
में किया जाता है. इससे प्रेस इंटरैक्शन को सही तरीके से डिले किया जा सकता है. ऐसा तब किया जाता है, जब जेस्चर स्क्रोल इवेंट बन सकते हैं. Clickables
के अंदर इस्तेमाल किए जाने पर,Clickables
के रिपल इफ़ेक्ट को सही तरीके से डिले न करने की समस्या ठीक की गई.Scrollable ViewGroup
- ड्रॉवर और शीट को अपडेट किया गया है, ताकि अगर जेस्चर स्क्रोल इवेंट बन सकते हैं, तो प्रेस में सही तरीके से देरी हो.
CompositingStrategy.Always
का नाम बदलकरOffscreen
कर दिया गया है. इससे पता चलता है किgraphicsLayer
हमेशा इंटरमीडिएट बफ़र (I47dc1) में रेंडर होगा- एक से ज़्यादा कॉन्टेंट स्लॉट वाले लेआउट के ज़्यादा लोड होने की समस्या अब ठीक हो गई है (I10566, b/248294649)
- टेस्ट के हिस्से के तौर पर, Perfetto ट्रेस (इन्हें सिस्टम ट्रेस भी कहा जाता है) कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर नए एपीआई
PerfettoTrace.record {}
औरPerfettoTraceRule
जोड़े गए हैं. इससे टेस्ट के काम करने के तरीके और परफ़ॉर्मेंस की जांच की जा सकेगी. (I3ba16) - Compose नियम का इस्तेमाल करके की जाने वाली यूज़र इंटरफ़ेस (यूआई) जांचों में,
withFrameNanos
कॉलबैक के दौरान फिर से शुरू किए गए कंटीन्यूएशन तब तक डिस्पैच नहीं किए जाएंगे, जब तक सभी फ़्रेम कॉलबैक पूरे नहीं हो जाते. ऐसा सामान्य तौर पर कंपोज़ करने के तरीके में भी होता है. हालांकि, पुरानी सेटिंग पर आधारित टेस्ट काम नहीं कर सकते. इसका असर सिर्फ़ उन कोड पर पड़ना चाहिए जो सीधे तौर परwithFrameNanos
याwithFrameMillis
को कॉल करते हैं. साथ ही, उनमें उन फ़ंक्शन को पास किए गए कॉलबैक के बाहर का लॉजिक होता है जिसे कॉलबैक के अंदर ले जाने की ज़रूरत पड़ सकती है. उदाहरण के लिए, इस सीएल में ऐनिमेशन टेस्ट में हुए बदलाव देखें. TestMonotonicFrameClock
कंस्ट्रक्टर और फ़ैक्ट्री फ़ंक्शन में,onPerformTraversals: (Long) -> Unit
पैरामीटर जोड़ा गया है. इसका इस्तेमाल,withFrameNanos
कॉलबैक के बाद और कॉलर की को-रूटीन फिर से शुरू होने से पहले कोड चलाने के लिए किया जाता है. (Idb413, b/254115946, b/222093277, b/255802670)- Compose में EmojiCompat जोड़ा गया (Ibf6f9, b/139326806)
- डाइनैमिक कलर की सुविधा के लिए,
@Preview
में नया वॉलपेपर पैरामीटर जोड़ा गया (I9f512)
गड़बड़ियां ठीक की गईं
- स्नैपशॉट लागू करने की सूचनाएं अब
Recomposer
के बदलाव लागू करने के बाद भेजी जाती हैं. (Iad6c0, b/222093277) captureToImage
में बदलाव किए गए हैं, ताकि मल्टी-विंडो (एक से ज़्यादा ऐप्लिकेशन, एक साथ) के स्क्रीनशॉट कैप्चर किए जा सकें. यह उन स्क्रीनशॉट टेस्ट के लिए काम का है जिनमें कंपोज़ पॉप-अप का इस्तेमाल किया जाता है. (I169c5)
डिपेंडेंसी से जुड़े अपडेट
- Compose UI और Compose Material अब Lifecycle 2.5.1 पर निर्भर करते हैं. (I05ab0, b/258038814)
वर्शन 1.4.0-alpha02
9 नवंबर, 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
रिलीज़ हो गया है. वर्शन 1.4.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
GraphicsLayerScope
एट्रिब्यूट को अपडेट किया गया है, ताकिgraphicsLayer
का मौजूदा साइज़ दिखाया जा सके. यह कंपोज़ेबल के साइज़ के फ़ंक्शन के तौर पर,graphicsLayer
ट्रांसफ़ॉर्मेशन का हिसाब लगाने के लिए काम आता है. (If8c43,b/181387080)CompositingStrategy
को इसलिए पेश किया गया है, ताकि यह तय किया जा सके किgraphicsLayer
कॉन्टेंट को रेंडर करने के लिए, ऑफ़स्क्रीन कंपोज़िटिंग लेयर का इस्तेमाल कब करना है. Auto, डिफ़ॉल्ट व्यवहार को बनाए रखता है. अगर ऐल्फ़ा लागू किया जाता है याRenderEffect/Overscroll
का इस्तेमाल किया जाता है, तो यह अंदरूनी तौर पर एक लेयर का इस्तेमाल करता है. Always में हमेशा एक ऑफ़स्क्रीन बफ़र शामिल होता है. वहीं,ModulateAlpha
में ऑफ़स्क्रीन बफ़र का इस्तेमाल नहीं किया जाता. इसके बजाय,graphicsLayer
में रिकॉर्ड किए गए हर ड्रॉइंग निर्देश को मॉड्युलेट किया जाता है.ModulateAlpha
के इस्तेमाल के लिए, अब भी स्क्रीन से बाहर मौजूद बफ़र का इस्तेमाल किया जाएगा. ऐसाRenderEffect/Overscroll
के इस्तेमाल के लिए किया जाता है (I25e82, b/256382834)invalidateSubtree()
कोModifier.Node
में जोड़ा गया है, ताकि लेआउट और ड्रॉइंग के लिए पूरी हैरारकी को अमान्य किया जा सके. (I4bd90)rememberNestedScrollInteropConnection
को स्टेबल वर्शन में प्रमोट करें.rememberNestedScrollInteropConnection
को रूट व्यू पास करने की सुविधा जोड़ी गई. इससे कस्टम व्यू को स्क्रोल करने से जुड़ी पाबंदियों के हिसाब से बेहतर तरीके से काम करने में मदद मिल सकती है. खास तौर पर, नॉन-स्टैंडर्ड व्यू (जैसे,ModalBottomSheetDialog
) में. (I9e107)ObserverNode
इंटरफ़ेस जोड़ा गया है. इसका इस्तेमालModifier.Node
के उन लागू करने वालों के लिए किया जा सकता है जिन्हें यह सूचना देनी है कि पहले पढ़ी गई वैल्यू बदल गई है (I5728b, b/247716483)Paint
में एक नया कंस्ट्रक्टर जोड़ा गया है, जो नेटिवandroid.graphics.Paint
को स्वीकार करता है. इसके अलावा, एक एक्सटेंशन फ़ंक्शनtoComposePaint()
भी जोड़ा गया है. यह फ़ंक्शन, मौजूदा नेटिव Paint ऑब्जेक्ट को Compose Paint में बदलता है. (Ica91b)- Android पर इस्तेमाल करने के लिए, नया
FontFamily.Resolver.resolveAsTypeface
जोड़ें. (I8950b) - टूलिंग को कंपोज़ेबल की इंटरनल स्थितियों में बदलाव करने की अनुमति देने के लिए,
ToolingState
जोड़ें (Ie6614) - नए जोड़े गए ऐनिमेशन (I8677b) के लिए बेहतर सहायता पाने के लिए, टूलिंग को फिर से फ़ैक्टर किया गया
- मटेरियल और मटेरियल3 टेक्स्ट,
TextField
, औरOutlinedTextField
मेंminLines
पैरामीटर जोड़ा गया है. इससे लाइनों की संख्या (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
for adding TV Devices to Previews (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 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट में अपने-आप हाइफ़न लगने की सुविधा के लिए, एक्सपेरिमेंट के तौर पर नया API Hyphens जोड़ा गया (Iaa869)
गड़बड़ियां ठीक की गईं
DeviceFontFamilyName
फ़ॉन्ट, डिफ़ॉल्ट रूप सेwght
औरital
वेरिएशन सेटिंग कॉन्फ़िगर नहीं करेंगे. इसके बजाय, लोड किए गएTypeface
के लिए प्लैटफ़ॉर्म सेटिंग का इस्तेमाल करेंगे. (Ia7a6d, b/246989332)- ठीक किया गया
LazyColumn
मेमोरी लीक - मॉडिफ़ायर का फिर से इस्तेमाल किए जाने पर,onModifierLocalsUpdated
को डिफ़ॉल्ट वैल्यू के साथ कॉल नहीं किया जा रहा था (b/230168389)
वर्शन 1.3.0-beta03
21 सितंबर, 2022
androidx.compose.ui:ui-*:1.3.0-beta03
रिलीज़ हो गया है. वर्शन 1.3.0-beta03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- टेक्स्ट में लाइन तोड़ने की सुविधा को पसंद के मुताबिक बनाने के विकल्प जोड़े गए. (I86907)
- कम से कम चौड़ाई की पाबंदियों को लागू करने के लिए,
TextMeasurer.measure
तरीके मेंsize:IntSize
आर्ग्युमेंट कोconstraints: Constraints
से बदल दिया गया है. (I37530, b/242707525)
गड़बड़ियां ठीक की गईं
- AndroidX Activity का
BackHandler
एपीआई अबDialog
कंपोज़ेबल में काम करता है. (I35342)
वर्शन 1.3.0-beta02
7 सितंबर, 2022
androidx.compose.ui:ui-*:1.3.0-beta02
रिलीज़ हो गया है. वर्शन 1.3.0-beta02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- लेआउट के लिए एक्सपेरिमेंटल ओवरलोड जोड़ा गया है. यह कंपोज़ेबल कॉन्टेंट लैम्डा की सूची स्वीकार करता है. इससे अलग-अलग कॉन्टेंट लैम्डा में रखे गए मेज़र किए जा सकने वाले कॉन्टेंट को अलग-अलग तरीके से थ्रेट किया जा सकता है (Ic1b4e)
एक्सपेरिमेंट के तौर पर उपलब्ध Focus API में किए गए बदलाव:
FocusDirection.In
औरFocusDirection.Out
के इस्तेमाल पर रोक लगा दी गई है. इनकी जगहFocusDirection.Enter
औरFocusDirection.Exit
का इस्तेमाल किया जा रहा है. (Ia4262, b/183746982)FocusManager.moveFocus(Enter)
औरFocusManager.moveFocus(Exit)
के लिए कस्टम व्यवहार तय करने के लिए, फ़ोकस की दो नई प्रॉपर्टी enter और exit जोड़ी गई हैं. (I5f3f9, b/183746982)- अब फ़ोकस को दूसरी जगह ले जाने की सुविधा को रद्द करने के लिए,
FocusRequester.Cancel
का इस्तेमाल किया जा सकता है.FocusRequester.Cancel
का इस्तेमाल, फ़ोकस करने की इनमें से किसी भी प्रॉपर्टी में किया जा सकता है: up, down, left, right, next, previous, start, end, enter, और exit. (Ib300f)
वर्शन 1.3.0-beta01
24 अगस्त, 2022
androidx.compose.ui:ui-*:1.3.0-beta01
रिलीज़ हो गया है. वर्शन 1.3.0-beta01 में ये कमिट शामिल हैं.
मॉडिफ़ायर नोड रिफ़ैक्टर
Modifier/Modifier.Element
इंस्टेंस को मैनेज करने वाली लेयर को फिर से बनाया गया है. साथ ही, LayoutNodes
पर उनके व्यवहार को कोऑर्डिनेट किया गया है. यह एक रीफ़ैक्टर था, जिससे Compose में मौजूद किसी भी मॉडिफ़ायर के सार्वजनिक एपीआई पर कोई असर नहीं पड़ा. इसे सिर्फ़ लागू करने से जुड़ा बदलाव माना जा सकता है. इसके बावजूद, यह बदलाव कई वजहों से अहम है. (Ie4313)
बदलाव की खास जानकारी
जोड़े गए एक्सपेरिमेंटल Modifier.Node
एपीआई, एक ऐसा ऐब्स्ट्रैक्शन उपलब्ध कराते हैं जिससे लेआउट नोड के लाइफ़साइकल के साथ बनाए रखे जाने वाले इंस्टेंस पर स्थिति को बनाए रखा जा सकता है. साथ ही, इसे हर लेआउट नोड और इसे बनाने वाले Modifier.Element
के हर इस्तेमाल के हिसाब से असाइन किया जाएगा.
सामान्य तौर पर, यह ऐब्स्ट्रैक्शन, Modifier.composed
एपीआई के मेकेनिज़्म पर भरोसा किए बिना, स्टेटफ़ुल मॉडिफ़ायर बनाने का एक वैकल्पिक तरीका उपलब्ध कराता है.
जोखिम
यह बदलाव, पिछली रिलीज़ के साथ बाइनरी फ़ॉर्मैट में काम करता है. साथ ही, इसका मकसद यह है कि यह बदलाव, पुराने सिस्टम के साथ काम करे. हालांकि, ऐसा सिर्फ़ तब होगा, जब यह व्यावहारिक और सही हो. हालांकि, कंपोज़ के कुछ ऐसे सबसिस्टम हैं जिन पर इस रीफ़ैक्टरिंग का असर नहीं पड़ा है. साथ ही, ऐसा हो सकता है कि व्यवहार में ऐसे बदलाव हुए हों जिनके बारे में हमारे टेस्ट में पता न चला हो. साथ ही, उन्हें अब तक ठीक न किया गया हो.
कृपया इस रिलीज़ को सावधानी से अपग्रेड करें. अगर आपको लगता है कि इससे आपको कोई समस्या हुई है, तो कृपया हमें बताएं.
एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई
कई एक्सपेरिमेंटल एपीआई जोड़े गए हैं. ये सभी "मॉडिफ़ायर नोड" के नए कॉन्सेप्ट से जुड़े हैं. Modifier.Node’s, इन वजहों से बनाए जाते हैं
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
व्यवहार में बड़ा बदलाव
डायलॉग और पॉप-अप में, ज़्यादा से ज़्यादा एलिवेशन को 8dp तक कम कर दिया गया है.
Compose डायलॉग और पॉप-अप के लिए, ज़्यादा से ज़्यादा एलिवेशन को 30dp से घटाकर 8dp कर दिया गया है. इस बदलाव का असर, मटीरियल और यूज़र इंटरफ़ेस (यूआई) के कस्टम डायलॉग और पॉप-अप, दोनों पर पड़ता है. यह बदलाव, Android के S से पहले के वर्शन में सुलभता से जुड़ी गड़बड़ी को ठीक करने के लिए किया गया है. साथ ही, यह पक्का करने के लिए किया गया है कि उन विंडो में सुलभता सेवाएं, डायलॉग या पॉप-अप में मौजूद कॉन्टेंट के साथ इंटरैक्ट कर सकें.
इस बदलाव का असर सिर्फ़ तब पड़ेगा, जब आपने 8dp से ज़्यादा एलिवेशन लेवल वाला कस्टम डायलॉग या पॉप-अप लागू किया हो. डायलॉग या पॉप-अप की ऊंचाई कम करें. अगर आपको इस नई सुविधा से ऑप्ट-आउट करना है, तो अपनी पसंद के मुताबिक एलिवेशन सेट करके, अपने डायलॉग या पॉप-अप को फ़ोर्क करें. हमारा सुझाव है कि ऐसा न करें. इससे सुलभता पर बुरा असर पड़ सकता है. डेवलपर को यह पक्का करना होगा कि डायलॉग या पॉप-अप का सबसे नीचे वाला हिस्सा, सुलभता सेवाओं के साथ इंटरैक्ट किया जा सके और उसे पढ़ा जा सके.
एपीआई में हुए बदलाव
- उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने पर,
painterResource
अपडेट नहीं होता था (I58e73, b/228862715) rememberTextMeasurer
अबFontFamily.Resolver
,Density
याLayoutDirection
पैरामीटर नहीं लेता है. कृपया इन पैरामीटर के लिए कस्टम वैल्यू देने के लिए,TextMeasurer
कंस्ट्रक्टर का इस्तेमाल करें. (Ia1da3)DialogProperties.decorFitsSystemWindows
प्रॉपर्टी जोड़ी गई है, ताकि डायलॉगWindowInsets
के साथ काम कर सकें. (I57742, b/229378542)- फ़ॉन्ट कंस्ट्रक्टर को वापस ओरिजनल Kotlin फ़ाइल में ले जाया गया, ताकि बाइनरी के साथ काम करने की सुविधा बनी रहे. पिछले स्टेबल वर्शन की तुलना में कोई बदलाव नहीं हुआ है. (Ieb2f3)
- कई बराबर की परिभाषाओं से गैर-ज़रूरी ऑपरेटर को हटाया गया है. इससे कोई असर नहीं पड़ता. (I6c309)
FontVariation.Setting
एक सील किया गया इंटरफ़ेस है, ताकि आने वाले समय में क्लैंपिंग एपीआई का इस्तेमाल किया जा सके. (I11021, b/143703328)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)LayoutCoordinates
मेंPlacementScope
पाने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई जोड़ा गया. इससे डेवलपर को यह पता चलता है कि मौजूदा लेआउट में, बच्चों को उनकी जगह के हिसाब से कहां रखना है. (I5482b, b/238632578)- एक
LayoutCoordinates
से दूसरीLayoutCoordinates
में मैट्रिक्स ट्रांसफ़ॉर्मेशन पाने के लिए,LayoutCoordinates.transformFrom
जोड़ा गया. (Ic5ab1, b/238632578) SemanticsModifier.id
को बंद कर दिया गया है. इसके बजाय, सिमैंटिक्स आईडी कोLayoutInfo.semanticsId
पर ले जाया गया है. (Iac808, b/203559524)- अब Resource Fonts, फ़ॉन्ट वेरिएशन सेटिंग (API 26+) सेट करने की सुविधा के साथ काम करते हैं. (I900dd, b/143703328)
DeviceFontFamilyNameFont
में वैरिएबल फ़ॉन्ट की सुविधा उपलब्ध है (Ic1279, b/143703328)- फ़ॉन्ट कंस्ट्रक्टर अब O+ डिवाइसों पर वैरिएबल फ़ॉन्ट कॉन्फ़िगर करने के लिए,
FontVariation.Setting
की सूची स्वीकार करते हैं. (I11a9d, b/143703328) - वैरिएबल फ़ॉन्ट तय करने और उनका इस्तेमाल करने के लिए,
FontVariation
एपीआई जोड़ा गया. (I3c40c, b/143703328) LineHeightStyle.Alignment
कंस्ट्रक्टर अब सार्वजनिक तौर पर उपलब्ध है (एक्सपेरिमेंट के तौर पर) (I4bbbe, b/235876330)- पैराग्राफ़ को अब expect|actual के तौर पर दिखाया जाता है. साथ ही, इसे Android और डेस्कटॉप के लिए तय किया गया है. (Id387e, b/239962983)
- Interface Paragraph को अब सील किए गए इंटरफ़ेस Paragarph के तौर पर मार्क किया गया है. पैराग्राफ़ को सबक्लास करने का कोई तरीका नहीं है. अगर इस बदलाव से आप पर असर पड़ता है, तो हमारा सुझाव है कि आप हमसे संपर्क करें. (If5247, b/239962983)
PlatformTextStyle
औरLineHeightStyle
से एक्सपेरिमेंटल एनोटेशन हटा दिया गया है. (I64bef)TextInputService.show|hideSoftwareKeyboard
का इस्तेमाल बंद कर दिया गया है. कृपया ऐप्लिकेशन कोड मेंSoftwareKeyboardController
और IME-मैनेजमेंट कोड मेंTextInputSession
का इस्तेमाल करें. (I14e4c, b/183448615)- मौजूदा ऐनिमेशन टाइप के लिए नया एपीआई जोड़ा गया (I26179)
गड़बड़ियां ठीक की गईं
- उन एपीआई में
@RequiresPermission
जोड़ा गया है जिनके लिए, SDK 33 और उसके बाद के वर्शन परPOST_NOTIFICATIONS
अनुमति देना ज़रूरी है. (Ie542e, b/238790278)
वर्शन 1.3.0-alpha02
27 जुलाई, 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- दबाव की जानकारी पाने के लिए, नई प्रॉपर्टी
PointerInputChange#pressure
जोड़ी गई है. (I45a5e, b/205164819) - कंपोज़िशन में
TextMeasurer
इंस्टेंस को आसानी से बनाने और याद रखने के लिए,rememberTextMeasurer
जोड़ा गया है. (I8d66e) Rect
,RoundRect
, औरMutableRect
अबcontains
फ़ंक्शन को कॉल करने के लिए, Kotlinin
सिंटैक्स के साथ काम करते हैं. (Ie42b0, b/238642990)KeyInjectionScope
से ग़ैर-ज़रूरी फ़ंक्शन हटाएं, क्योंकि इन्हें एपीआई के आसान हिस्सों के साथ आसानी से लागू किया जा सकता है. हटाए गए फ़ंक्शन मेंpressKeys
,keysDown
, औरkeysUp
शामिल हैं. (I81d77)KeyInjectionScope
में कॉन्स्टेंट और पैरामीटर के नामों को रीफ़ैक्टर किया गया है. ऐसा इसलिए किया गया है, ताकि जहां कॉन्स्टेंट और पैरामीटर की इकाइयां मिलीसेकंड में हों वहां 'Millis' सफ़िक्स शामिल किया जा सके. (Iabef5)- टेक्स्ट में बदलाव करने से जुड़ी समस्याओं को हल करने के लिए,
EditCommand
मेंtoStringForLog()
तरीका जोड़ा गया. (I53354, b/228862731) DrawScope
परdrawText
एक्सटेंशन फ़ंक्शन जोड़ा गया है. इससे, कंपोज़ेबल और मॉडिफ़ायर पर अलग-अलग स्टाइल वाला टेक्स्ट बनाया जा सकता है. येDrawScope
पर काम करते हैं, जैसे किCanvas
औरdrawBehind
. (I16a62, b/190787898)TextMeasurer
नाम का एक नया एक्सपेरिमेंटल एपीआई पेश किया गया है. यह टेक्स्ट लेआउट कंप्यूटेशन को चालू करता है. इससेBasicText
के जैसे ही नतीजे मिलते हैं. यह Compose रनटाइम से अलग होता है. (I17101)SlotTree.kt
मेंmapTree
जोड़ें. इससे टूल,SlotTree
की जांच कर सकते हैं. इसके लिए, उन्हें asTree की तरह पहले इन मेमोरी कॉपी बनाने की ज़रूरत नहीं होती. लेआउट इंस्पेक्टर के लिए, इससे परफ़ॉर्मेंस में करीब 10 गुना सुधार होता है. (I5e113)- कंपोज़ की झलक देखने की सुविधा को बाइनरी आउटपुट फ़ाइलों में सेव करने की सुविधा जोड़ी गई है, ताकि डेवलपर लाइब्रेरी से
MultiPreview
एनोटेशन लिख सकें और उनका फिर से इस्तेमाल कर सकें. (I85699, b/233511976)
गड़बड़ियां ठीक की गईं
Velocity
ट्रैकर मेंInputEventChange
इवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि सभी मामलों में वेलोसिटी का हिसाब सही तरीके से लगाया गया है. भले ही, टारगेट एलिमेंट मूव करता हो (Icea9d, b/216582726, b/223440806, b/227709803)- व्याख्याएं मौजूद होने पर,
AnnotatedString.toUpperCase
की वजह से होने वाली NPE को ठीक किया गया. (I0aca2, b/210899140)
वर्शन 1.3.0-alpha01
29 जून, 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
रिलीज़ हो गया है. वर्शन 1.3.0-alpha01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- नया
LookaheadLayout
, जो मेज़र/लेआउट से पहले लुकअहेड पास की सुविधा देता है. इससे लेआउट में बदलाव होने पर, उसकी पहले से गणना की जा सकती है. साथ ही, लुकअहेड के बाद के मेज़रमेंट/लेआउट को, पहले से कैलकुलेट किए गए साइज़/जगह का इस्तेमाल करके, साइज़ और जगहों को टारगेट की ओर ऐनिमेशन करने की अनुमति मिलती है. फ़िलहाल,SubcomposeLayouts
काम नहीं करते हैं. हालांकि, आने वाले समय में इसकी सुविधा उपलब्ध होगी. (I477f5) - पूरी
Text
की ओपैसिटी में बदलाव करने के लिए,TextStyle
औरSpanStyle
के ब्रश फ़्लेवर में वैकल्पिक ऐल्फ़ा पैरामीटर जोड़ें. (Ic2fac, b/234117635) UrlAnnotation
एनोटेशन टाइप और उससे जुड़े तरीके पेश किए गए हैं. इससेAnnotatedString
मेंTalkBack
लिंक को इस्तेमाल किया जा सकेगा. (I1c754, b/231495122)- उपयोगिता फ़ंक्शन को रनटाइम में ले जाना (I4f729)
गड़बड़ियां ठीक की गईं
TextLayoutResult.getLineForOffset
थ्रो नहीं करता है. (Idc5d6, b/235876324)
बाहरी योगदान
- कंपोज़ेबल फ़ंक्शन या snapshotFlow (Icdb8a) में इसकी स्थिति देखने के लिए, एक नया एपीआई
WindowInfo.keyboardModifiers
जोड़ा गया
वर्शन 1.2
वर्शन 1.2.1
10 अगस्त, 2022
androidx.compose.ui:ui-*:1.2.1
रिलीज़ हो गया है. वर्शन 1.2.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- इंस्पेक्टर में nullpointer की समस्या ठीक की गई (b/237987764)
- इंस्पेक्टर में याद रखने की सुविधा के दौरान, क्लास कास्ट के अपवाद से जुड़ी समस्या ठीक की गई (b/235526153)
वर्शन 1.2.0
27 जुलाई, 2022
androidx.compose.ui:ui-*:1.2.0
रिलीज़ हो गया है. वर्शन 1.2.0 में ये कमिट शामिल हैं.
1.1.0 के बाद हुए अहम बदलाव
फ़ोकस ट्रैवर्सल में सुधार:
- अब लेज़ी लिस्ट में फ़ोकस-ड्रिवन-स्क्रॉलिंग की सुविधा काम करती है. इसके लिए, नए
BeyondBoundsLayout
कोर एपीआई का इस्तेमाल किया जाता है 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)
गड़बड़ियां ठीक की गईं
- Velocity Tracker में
InputEventChange
इवेंट जोड़ते समय, अब हम पोज़िशन के बजाय डेल्टा पर विचार करेंगे. इससे यह पक्का किया जा सकेगा कि सभी मामलों में वेलोसिटी का हिसाब सही तरीके से लगाया गया है. भले ही, टारगेट एलिमेंट मूव करता हो (I51ec3, b/216582726, b/223440806, b/227709803) Show Layout Bounds
सेटिंग को अब कंपोज़ेबल के लिए तुरंत लागू किया जाएगा. इसके लिए, आपको क्विक सेटिंग टाइल से इसे टॉगल करना होगा. साथ ही, आपको गतिविधि से बाहर निकलने और फिर से उसमें शामिल होने की ज़रूरत नहीं होगी. (I843d5, b/225937688)- सुलभता स्ट्रिंग लुकअप से फ़ॉन्ट लोड नहीं होता है. इससे पहले, यह
StyleSpans
के लिए फ़ॉन्ट लोड करने की कोशिश करता था. अगर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 UI applier को टारगेट करते हैं. जिस फ़ंक्शन को किसी दूसरे ऐप्लिकेशन पर टारगेट करना है उसे टारगेट मार्कर एनोटेशन को साफ़ तौर पर सप्लाई करना होगा. (I40804)नया एक्सपेरिमेंटल, प्लैटफ़ॉर्म से अलग, टेस्ट एपीआई लॉन्च किया गया है: एक
interface ComposeUiTest
और एकfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
. इनका इस्तेमाल,TestRule
की ज़रूरत के बिना Compose Ui टेस्ट चलाने के लिए किया जा सकता है.ComposeTestRule
के बिना टेस्ट चलाने के लिए, टेस्ट कोrunComposeUiTest
में लैंबडा के तौर पर पास करें. इसके बाद, रिसीवर स्कोपComposeUiTest
में मौजूद तरीकों और सदस्यों का इस्तेमाल करें. ये वही तरीके और सदस्य हैं जोComposeContentTestRule
में मौजूद हैं.Android के लिए खास तौर पर बनाए गए
interface AndroidComposeUiTest
औरfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
को जोड़ा जाता है, ताकिAndroidComposeTestRule
की तरह ही, ऐक्टिविटी को ऐक्सेस किया जा सके. ज़्यादा कंट्रोल के लिए,class AndroidComposeUiTestEnvironment
को खुद भी इंस्टैंशिएट किया जा सकता है.डेस्कटॉप पर
class DesktopComposeUiTest
लागू किया गया है. हालांकि, फ़िलहाल डेस्कटॉप के लिए खास तौर पर तैयार किए गए रन फ़ंक्शन उपलब्ध नहीं हैं.किसी टेस्ट को
ComposeTestRule
सेComposeUiTest
पर इस तरह माइग्रेट किया जा सकता है (Android का उदाहरण). From:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
इन कार्रवाइयों के लिए नीचे दिया गया तरीका अपनाएं:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
फ़िलहाल,
ComposeContentTestRule
औरComposeTestRule
,ComposeUiTest
से एक्सटेंड नहीं होते हैं. इसका मतलब है किComposeUiTest
पर मौजूद एक्सटेंशन फ़ंक्शन को,TestRule
इंटरफ़ेस पर अभी कॉल नहीं किया जा सकता. जबComposeUiTest
को स्टेबल एपीआई में अपग्रेड किया जाएगा, तबComposeContentTestRule
औरComposeTestRule
कोComposeUiTest
से एक्सटेंड करने के लिए बदल दिया जाएगा. (Ib4e90)LineHeightBehavior
का नाम बदलकरLineHeightStyle
कर दिया गया हैLineVerticalAlignment
का नाम बदलकरLineHeightStyle.Alignment
कर दिया गया हैLineHeightTrim
का नाम बदलकरLineHeightStyle.Trim
कर दिया गया हैLineHeightStyle
एट्रिब्यूट की डिफ़ॉल्ट कंस्ट्रक्टर वैल्यू हटा दी गई है (I582bf, b/181155707)ग्रेडिएंट कलरिंग के साथ टेक्स्ट बनाने का तरीका उपलब्ध कराने के लिए,
Brush
कोTextStyle
औरSpanStyle
में जोड़ा गया. (I53869, b/187839528)trimFirstLineTop
औरtrimLastLineBottom
एट्रिब्यूट केLineHeightBehavior
को बदलकर एक ही enum:LineHeightTrim
कर दिया गया है.LineHeightTrim
में चार स्थितियां होती हैं, जिन्हें दो बूलियन से तय किया जाता है:FirstLineTop
,LastLineBottom
, दोनों, और कोई नहीं (Ifc6a5, b/181155707)LineHeightBehavior
कोTextStyle
औरParagraphStyle
में जोड़ा गया.LineHeightBehavior
यह कंट्रोल करता है कि लाइन की ऊंचाई, पहली लाइन के सबसे ऊपर और आखिरी लाइन के सबसे नीचे लागू की गई है या नहीं. यहTextStyle(lineHeight)
से मिले स्पेस में लाइन के अलाइनमेंट के बारे में भी बताता है.उदाहरण के लिए,
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
के ज़रिए सीएसएस के जैसा व्यवहार किया जा सकता है.trimFirstLineTop
औरtrimLastLineBottom
कॉन्फ़िगरेशन, सिर्फ़ तब सही तरीके से काम करते हैं, जबincludeFontPadding
की वैल्यू false हो. (I97332, b/181155707)PlatformParagraphStyle.lerp
औरPlatformSpanStyle.lerp
फ़ंक्शन को टॉप लेवल के फ़ंक्शन (I9a268) के तौर पर बदला गया है
गड़बड़ियां ठीक की गईं
PointerInputChange::copy
के दस्तावेज़ में अब यह सही तरीके से बताया गया है कि यह एक शैलो कॉपी है. (I182f5)- ऊंचाई सीमित होने पर, एलिप्सिस का इस्तेमाल किया जा सकता है. साथ ही, सभी टेक्स्ट लाइनें फ़िट नहीं होती हैं (Ie528c, b/168720622)
- डिफ़ॉल्ट रूप से चालू
includeFontPadding
.TextStyle.platformTextStyle
एट्रिब्यूट का इस्तेमाल करके,includeFontPadding
को बंद किया जा सकता है. हम आने वाले समय में डिफ़ॉल्ट व्यवहार में बदलाव करेंगे. हालांकि, तब तक हम लाइन की ऊंचाई को बेहतर बनाने (aosp/2058653) औरTextField
क्लिपिंग की समस्याओं को हल करने के लिए, इस सुविधा का इस्तेमाल कर सकते हैं. (I01423, b/171394808)
बाहरी योगदान
MouseInjectionScope.scroll(delta = someDelta)
को अब Android पर उलटा कर दिया गया है. ऐसा वर्टिकल तरीके से स्क्रोल करने पर होता है. अगर कुछ डेल्टा पॉज़िटिव है, तो यह नीचे की ओर स्क्रोल करेगा (Ifb697, b/224992993)
वर्शन 1.2.0-alpha08
20 अप्रैल, 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
रिलीज़ हो गया है. वर्शन 1.2.0-alpha08 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
pluralStringResource
फ़ंक्शन को एक्सपेरिमेंटल के तौर पर मार्क किया गया था, ताकि आने वाले समय में इन्हें बेहतर बनाया जा सके और ये अंतरराष्ट्रीय स्तर पर काम कर सकें. (If24e4)- पैराग्राफ़ और मल्टीपैराग्राफ़ अब Constraints पैरामीटर स्वीकार कर रहे हैं. फ़िलहाल,
Constraints.maxHeight
का इस्तेमाल नहीं किया जा सकता. हालांकि, आने वाले समय में इसकी मदद से कुछ कैलकुलेशन की जा सकेंगी. जैसे, ऊंचाई के आधार पर टेक्स्ट को छोटा करना. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
अब MutableSet जैसी कस्टम क्लास स्वीकार करता है. इसमें नए आइटम जोड़ने की अनुमति नहीं होती. (Icd314)- PointerIcon अब एक
@Stable
इंटरफ़ेस है (I9dafe) PointerInputChange
में, आंशिक खपत (नीचे या स्थिति) को बंद कर दिया गया है. बदलाव को पूरी तरह से लागू करने के लिए,consume()
का इस्तेमाल किया जा सकता है.isConsumed
का इस्तेमाल करके यह पता लगाया जा सकता है कि क्या किसी और ने पहले ही बदलाव कर लिया है.PointerInputChange::copy()
अब हमेशा शैलो कॉपी बनाता है. इसका मतलब है किPointerInputChange
की कॉपी का इस्तेमाल तब किया जाएगा, जब किसी एक कॉपी का इस्तेमाल हो जाएगा. अगर आपको अनबाउंडPointerInputChange
बनाना है, तो कंस्ट्रक्टर का इस्तेमाल करें. (Ie6be4, b/225669674)- Compose और View के बीच नेस्टेड स्क्रोल इंटरऑप को चालू करता है. यह Compose > View की दिशा में काम करता है. इसका मतलब है कि कंपोज़ पैरंट, नेस्टेड स्क्रोल व्यू से नेस्टेड स्क्रोल डेल्टा पा सकेगा. (If7949, b/174348612)
- नया
SemanticsProperty testTagsAsResourceId
, जिसका इस्तेमाल Compose को View सिस्टम के लिए डिज़ाइन किए गए UIAutomator टेस्ट के मुताबिक बनाने के लिए किया जा सकता है. (I39c20) FontFamily.SansSerif
का इस्तेमाल करते समय, Android पर सिस्टम फ़ॉन्ट के लिए उपलब्ध सभी वेट दिखाएं. यह एपीआई 21 से 28 पर, फ़ॉलबैक फ़ॉन्ट के नामों का इस्तेमाल करेगा. जैसे, sans-serif-medium. यह एक व्यवहार में बदलाव है, क्योंकि इससे पहले एपीआई 21-28 पर सिर्फ़ 400 और 700 वज़न वाले फ़ॉन्ट इस्तेमाल किए जा सकते थे. (I380fe, b/156048036, b/226441992)- पैराग्राफ़ और मल्टीपैराग्राफ़ इंस्ट्रक्टर ने, पोज़ीशनल आर्ग्युमेंट को फिर से क्रम में लगाया है. अब ये आर्ग्युमेंट, ज़रूरी नहीं वाले आर्ग्युमेंट से पहले दिखते हैं. (Idafaa)
AndroidFont
अब typefaceLoader को कंस्ट्रक्टर पैरामीटर के तौर पर लेता है. (I2c971)
वर्शन 1.2.0-alpha07
6 अप्रैल, 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
रिलीज़ हो गया है. वर्शन 1.2.0-alpha07 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- नया फ़ंक्शन
Snapshot.withoutReadObservation { ... }
जोड़ा गया. इससे उपयोगकर्ता, इस ब्लॉक के दौरान पढ़ी गई स्थिति की वैल्यू में हुए बदलावों की सदस्यता लिए बिना, पास किए गए लैम्ब्डा को चला सकते हैं. यह उन मामलों में आपके काम आ सकता है, जब आपको स्नैपशॉट पर आधारित थ्रेड सेफ़ राइट/रीड से फ़ायदा पाना हो. हालांकि, आपको बिना किसी ज़रूरत के फिर से कंपोज़ किए या फिर से मेज़र किए बिना वैल्यू को पढ़ने की सुविधा चाहिए. (I9f365, b/214054486) ComposeView
कीconsumeWindowInsets
एक्सटेंशन प्रॉपर्टी की मदद से डेवलपर, AndroidWindowInsets
के इस्तेमाल को बंद कर सकते हैं. इससे हैरारकी में मौजूद हरComposeViews
, एक-दूसरे में रुकावट डाले बिनाWindowInsets
लागू कर सकता है. (I0ef08, b/220943142)- आईएमई में दशमलव सेपरेटर को शामिल करने के लिए,
Keyboard.Number
के विकल्प के तौर परKeyboardType.Decimal
को जोड़ा गया है. (Iec4c8, b/209835363) PointerEventType.Scroll
औरPointerEvent.scrollDelta
अब स्टेबल एपीआई हैं (I574c5, b/225669674)- View और Compose के बीच नेस्टेड स्क्रोल इंटरऑप चालू करें, ताकि View क्लास के साथ काम किया जा सके. इसका मतलब है कि अब Compose, स्क्रोल डेल्टा को (सहयोग करने वाले) व्यू पैरंट को भेज सकता है. (I5d1ac, b/174348612)
FontFamily.Resolver
को अपडेट किया गया है, ताकि सिस्टम-वाइड बोल्ड टेक्स्ट की सुलभता सेटिंग (I6c1e7) को इंटिग्रेट किया जा सकेFont(AssetManager, String, ...)
का अब इस्तेमाल नहीं किया जा सकता. इसकी जगहFont(String, AssetManager, ...)
का इस्तेमाल किया जा सकता है. यह एक एक्सपेरिमेंटल एपीआई है. (I1c7a4)- फ़ॉन्ट फ़ॉलबैक चेन के दौरान, सिस्टम में इंस्टॉल किए गए फ़ॉन्ट को खोजने के लिए, नया फ़ॉन्ट डिस्क्रिप्टर
Font(DeviceFontFamilyName)
जोड़ें. यह ज़रूरी नहीं है. (I30468, b/219754572) - TextStyle/ParagraphStyle में
includeFontPadding
के लिए, कुछ समय के लिए काम करने वाला कॉन्फ़िगरेशन जोड़ा गया.includeFontPadding
कोTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
के ज़रिए बदला जा सकता है. यह माइग्रेशन को चालू करने के लिए, कॉन्फ़िगरेशन का एक अस्थायी विकल्प है. इसे हटा दिया जाएगा. (If47be, b/171394808) - डीबग करने में मदद पाने के लिए,
GoogleFont.Provider.isAvailableOnDevice
एक्सटेंशन जोड़ें. (I64e31) @ArrayRes
के साथ इस्तेमाल करने के लिएGoogleFont.Provider
कंस्ट्रक्टर जोड़ें (Ic5ee1, b/225984280)Compose GoogleFont
को अबFont(GoogleFont)
कहा जाता है. हालांकि, एपीआई में कोई और बदलाव नहीं किया गया है. (I125f2)
गड़बड़ियां ठीक की गईं
- यह पक्का करने के लिए कि इनर पैडिंग का इस्तेमाल किया जा रहा है, material/Scaffold में लिंट चेक जोड़ा गया (Ifb111)
वर्शन 1.2.0-alpha06
23 मार्च, 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
रिलीज़ हो गया है. वर्शन 1.2.0-alpha06 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोकस किए जा सकने वाले टारगेट पर फ़ोकस करने का अनुरोध करने के लिए,
RequestFocus
सिमैंटिक्स ऐक्शन जोड़ा गया. (I17b71) - वेक्टर ड्रॉएबल को पार्स करने की सुविधा को अपडेट किया गया है, ताकि
VectorPainter
के कॉन्टेंट को अपने-आप मिरर करने की सुविधा काम कर सके. ऐसा तब होगा, जब मौजूदा लेआउट की दिशा RTL हो. (I79cd9, b/185760237) एपीआई के साथ काम करने के लिए, शैडो/ऐम्बिएंट कलर को
Modifier.graphicsLayer
के ट्रेलिंग पैरामीटर के तौर पर अपडेट किया गया (I3f864, b/160665122)GraphicsLayerScope
में शैडो/ऐम्बिएंट कलर के लिए डिफ़ॉल्ट सेटिंग जोड़ी गई हैं, ताकि एपीआई में बदलावों के दौरान कोई समस्या न होRSB इवेंट में इवेंट का समय जोड़ा गया (Ief8ae)
FocusOrder
को अबFocusProperties
में मर्ज कर दिया गया है. साथ ही,focusProperties()
में अबfocusOrder()
की सभी सुविधाएं उपलब्ध हैं.FocusOrder
औरfocusOrder()
का अब इस्तेमाल नहीं किया जा सकता.focusRequester
स्वीकार करने वालेfocusOrder()
कोfocusProperties()
के साथfocusRequester()
मॉडिफ़ायर से बदला जाना चाहिए. इससे मॉडिफ़ायर को अलग-अलग काम करने में मदद मिलती है. (I601b7)RecyclerView
औरCompose
, दोनों को अपग्रेड करने से, अब Compose व्यू वाले RecyclerViews के लिए स्क्रोल करने की परफ़ॉर्मेंस काफ़ी बेहतर हो जाएगी.डिफ़ॉल्ट रूप से उपलब्ध रणनीति को वापस पाने के तरीके के तौर पर
ViewCompositionStrategy.Default
को जोड़ेंViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
जोड़ें. यह नई डिफ़ॉल्ट रणनीति है और RecyclerView जैसे पूलिंग कंटेनर को सही तरीके से मैनेज करती है. (If7282)मल्टीप्रीव्यू सुविधा जोड़ने के पहले चरण के तौर पर, @Preview की मदद से एनोटेशन क्लास को एनोटेट करने की सुविधा जोड़ी गई. इस तरह के एनोटेशन का इस्तेमाल, कंपोज़ेबल तरीकों या अन्य एनोटेशन क्लास को एनोटेट करने के लिए किया जा सकता है. इसके बाद, इन्हें दिए गए @Preview के साथ परोक्ष रूप से एनोटेट किया जा सकता है. (I12eff)
@Preview (I071c9) के लिए, डिवाइसों की सूची में रेफ़रंस डिवाइस जोड़े गए
गड़बड़ियां ठीक की गईं
- वेक्टर ग्राफ़िक एपीआई को अपडेट किया गया है, ताकि @UiComposable के बजाय @VectorComposable एनोटेशन का इस्तेमाल किया जा सके (I942bc)
AnnotatedString.Builder.withStyle
से crossinline हटाएं (If84d5)
बाहरी योगदान
- compose-ui:
GraphicsLayerScope
मेंambientShadowColor
औरspotShadowColor
प्रॉपर्टी जोड़ें (I1ba1a, b/160665122) - अब
pluralStringResource
फ़ंक्शन के ज़रिए, प्लुरल रिसॉर्स इस्तेमाल किए जा सकते हैं. (Ib2f23, b/191375123)
वर्शन 1.2.0-alpha05
9 मार्च, 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
रिलीज़ हो गया है. वर्शन 1.2.0-alpha05 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
TextToolbar
अबActionCallback
के बजाय लैंबडा आर्ग्युमेंट लेता है. (Ib2eb9, b/197950089)- Tiramisu DP2 (I0cbb7) से मेल खाने के लिए, core और appcompat में nullability को अपडेट किया गया
- Measured इंटरफ़ेस अब parentData प्रॉपर्टी (I3313f) दिखाता है
Modifier.onPlaced
औरOnPlacedModifier
इंटरफ़ेस अब स्थिर हो गए हैं. (Ib5482)- हुर्रे! Compose ऐनिमेशन अब डेवलपर विकल्पों में मौजूद, 'ऐनिमेटर अवधि स्केल' सेटिंग के साथ काम करता है. (I5a4fc, b/161675988)
BeyondBoundsLayout
मॉडिफ़ायर लोकल (If8b51, b/184670295) जोड़ा गया- टेक्स्ट: includeFontPadding अब डिफ़ॉल्ट रूप से बंद है.
includeFontPadding=false
की वजह से होने वाली क्लिपिंग की समस्याओं को ठीक किया जाता है. साथ ही, लंबी स्क्रिप्ट के लिए क्लिपिंग नहीं होनी चाहिए. (I31c84, b/171394808)
गड़बड़ियां ठीक की गईं
- अगर पहले से कोई कॉन्टेंट मौजूद है और उसे सेट करने की कोशिश की जाती है, तो
ComposeContentTestRule.setContent
अबIllegalStateException
दिखाएगा. (I888a5, b/199631334) - Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड में मौजूद कॉन्टेंट की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. (I06020, b/197769306)
- RSB के स्क्रोलिंग सैंपल को बेहतर बनाया गया है. (I6a596)
बाहरी योगदान
- Kotlinx coroutines 1.6.0 (I3366d) का इस्तेमाल करने के लिए अपडेट किया गया
वर्शन 1.2.0-alpha04
23 फ़रवरी, 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
रिलीज़ हो गया है. वर्शन 1.2.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ComposableTarget
,ComposableTargetMarker
, औरComposableOpenTarget
जोड़े गए हैं. इनकी मदद से, कंपाइल टाइम रिपोर्टिंग की जा सकती है. इससे यह पता चलता है कि किसी ऐप्लिकेशन को टारगेट करने वाले कंपोज़ेबल फ़ंक्शन को कब कॉल किया गया था.ज़्यादातर मामलों में, कंपोज़ कंपाइलर प्लगिन से एनोटेशन का अनुमान लगाया जा सकता है. इसलिए, इन एनोटेशन का सीधे तौर पर इस्तेमाल कम ही करना चाहिए. ऐसे मामले जिनमें अनुमान नहीं लगाया जा सकता उनमें कस्टम ऐप्लिकेशन बनाना और उसका इस्तेमाल करना, ऐब्स्ट्रैक्ट कंपोज़ेबल फ़ंक्शन (जैसे कि इंटरफ़ेस के तरीके), कंपोज़ेबल लैम्ब्डा (स्थानीय वैरिएबल और पैरामीटर का अनुमान लगाया जाता है) वाले फ़ील्ड या ग्लोबल वैरिएबल या
ComposeNode
या उससे जुड़े कंपोज़ेबल फ़ंक्शन का इस्तेमाल करना शामिल है.कस्टम ऐप्लिकेशन के लिए,
ComposeNode
याReusableComposeNode
को कॉल करने वाले कंपोज़ेबल फ़ंक्शन को फ़ंक्शन और किसी भी कंपोज़ेबल लैम्डा पैरामीटर टाइप के लिएComposableTarget
एनोटेशन जोड़ना होगा. हालांकि, हमारा सुझाव है कि आपComposableTargetMarker
के साथ एनोटेट किया गया एनोटेशन बनाएं. इसके बाद, सीधेComposableTarget
का इस्तेमाल करने के बजाय, मार्क किए गए एनोटेशन का इस्तेमाल करें.ComposableTargetMarker
के तौर पर मार्क किया गया कंपोज़ेबल एनोटेशन,ComposbleTarget
के बराबर होता है. इसमें ऐप्लिकेशन पैरामीटर के तौर पर एट्रिब्यूट क्लास का पूरी तरह क्वालिफ़ाइड नाम होता है.ComposableTargetMarker
के इस्तेमाल का उदाहरण देखने के लिए,anroidx.compose.ui.UiComposable
देखें. (I38f11)Font(resId, ...)
अब स्टेबल एपीआई पर loadingStrategy का इस्तेमाल करता है. (Ief3d2)FontLoadingStrategy
अब स्टेबल एपीआई है. (I1ee35, b/174162090)टेक्स्ट में एसिंक फ़ॉन्ट लोडिंग की सुविधा जोड़ी गई (I77057, b/214587005)
कस्टम
Font.ResourceLoader
कोFontFamily.Resolver
में बदलने के लिए, ब्रिज एपीआई जोड़ें. (Ia0060)
गड़बड़ियां ठीक की गईं
FontFamily.Resolver
को Popup जैसी सबकंपोज़िशन में पास किया जाता है.Font.ResourceLoader
को Popup जैसी सबकंपोज़िशन में पास किया जाता है. (I48fa5)
वर्शन 1.2.0-alpha03
9 फ़रवरी, 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
रिलीज़ हो गया है. वर्शन 1.2.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
TextInputSession
औरTextInputService
में मौजूदnotifyFocusedRect
तरीकों का इस्तेमाल अब नहीं किया जा सकेगा. इन्हें कॉल नहीं किया जाएगा. इसके बजाय,BringIntoViewRequester
का इस्तेमाल करें. (Ia4302, b/192043120, b/216842427, b/178211874)RenderNode
स्टब क्लास (I1e659, b/216660268) परdestroyDisplayListData
तरीका लागू किया गया- एक नया एपीआई जोड़ा गया है. इसकी मदद से, पहले से कंपोज़ किए गए
SubcomposeLayout
के बच्चों को पहले से मेज़र किया जा सकता है. (I857ea) movableContentOf
जोड़ा गया है. यह कंपोज़ेबल लैम्डा को ऐसे लैम्डा में बदलता है जो इसके स्टेटस और इससे जुड़े नोड को किसी भी नई जगह पर ले जाता है. जब पिछला कॉल कंपोज़िशन से हट जाता है, तो स्थिति को कुछ समय के लिए सेव कर लिया जाता है. अगर लैम्ब्डा को किया गया कोई नया कॉल कंपोज़िशन में शामिल होता है, तो स्थिति और उससे जुड़े नोड, नए कॉल की जगह पर ले जाए जाते हैं. अगर कोई नया कॉल नहीं जोड़ा जाता है, तो स्थिति को हमेशा के लिए हटा दिया जाता है. साथ ही, इस बारे में मॉनिटर करने वालों को सूचना दी जाती है.अगर एक ही कंपोज़िशन में
movableContentOf
लैम्डा को कई बार कॉल किया जाता है, तो हर कॉल के लिए नई स्थिति और नोड बनाए जाते हैं. साथ ही, जैसे-जैसे कॉल कंपोज़िशन से बाहर निकलते हैं और नए कॉल कंपोज़िशन में शामिल होते हैं, स्थिति को पहले बाहर निकलने वाले कॉल से, शामिल होने वाले कॉल में ट्रांसफ़र किया जाता है. ऐसा कॉल किए जाने के क्रम में होता है. नए कॉल से न जुड़े सभी स्टेट को हमेशा के लिए हटा दिया जाता है. (Ib4850)FontFamilyResolver
अबLocalFontFamilyResolver.current
के ज़रिए उपलब्ध हैCompose के इस्तेमाल के बाहर नई FontFamily रिज़ॉल्वर बनाने के लिए,
createFontFamilyResolver(context)
औरcreateFontFamilyResolver(context, coroutineScope)
जोड़े गए हैं.पैराग्राफ़ और मल्टीपैराग्राफ़ अब
FontFamily.Resolver
लेते हैंTextLayoutResult.layoutInput.fontFamilyResolver
में अब इस लेआउट के लिए इस्तेमाल किया गया रिज़ॉल्वर मौजूद है.TextLayoutResult.layoutInput.resourceLoader
को अब इस्तेमाल नहीं किया जाता. (Id5a45, b/174162090)फ़ॉन्ट को एसिंक तरीके से लोड करने और फ़ॉन्ट लोड करने की सुविधा को चालू या बंद करने की सुविधा. साथ ही, फ़ॉन्ट लोड न होने पर फ़ॉलबैक की सुविधा. इस पाथ का इस्तेमाल Text और TextField करते हैं. साथ ही, इसे FontFamilyResolver के ज़रिए दिखाया जाता है
FontFamilyResolver.preload
के ज़रिए फ़ॉन्ट को पहले से लोड करने की सुविधाFontFamilyResolver.setAsyncLoadContext
की मदद से, एसिंक फ़ॉन्ट लोड करने के लिए इस्तेमाल किया जाने वाला ग्लोबल कोरूटीन कॉन्टेक्स्ट सेट किया जा सकता है. (I87fe8, b/174162090)Android पर नए टाइप के फ़ॉन्ट रिसॉर्स डिस्क्रिप्टर उपलब्ध कराने के लिए, नया लो-लेवल एपीआई
AndroidFont
जोड़ा गया है. उदाहरण के लिए, किसी ऐप्लिकेशन के बैकएंड से फ़ॉन्ट लोड करना, डिवाइस पर पहले से इंस्टॉल किए गए फ़ॉन्ट का पता लगाना या फ़ॉन्ट फ़ैक्ट्री की ओर से उपलब्ध नहीं कराए गए किसी संसाधन से फ़ॉन्ट लोड करना.Font.ResourceLoaded
एपीआई को बेहतर बनाया गया है, ताकि फ़ॉन्ट को वैकल्पिक तौर पर और एसिंक तरीके से लोड किया जा सके. हमारा सुझाव है कि ऐप्लिकेशन डेवलपर इस एपीआई का सीधे तौर पर इस्तेमाल न करें. नए तरह के फ़ॉन्ट जोड़ने के लिए,AndroidFont
देखें.Font.AndroidResourceLoader
एक्सटेंशन फ़ंक्शन, कंपोज़िशन से बाहर होने परFont.ResourceLoader
बनाने की अनुमति देता है.संसाधन पर आधारित फ़ॉन्ट में
loadingStrategy
पैरामीटर जोड़ा गया है, ताकि संसाधन फ़ॉन्ट, डाउनलोड किए जा सकने वाले फ़ॉन्ट के एक्सएमएल को रेफ़रंस करते समय, एसिंक लोडिंग की अनुमति दे सके. (Ie5aea, b/174162090)Typeface(FontFamily)
कंस्ट्रक्टर का अब इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. डाउनलोड किए जा सकने वाले फ़ॉन्ट के साथ, यह कॉल 10 सेकंड के लिए ब्लॉक हो सकता है. इसके बजाय,FontFamilyResolver.preload
का इस्तेमाल करें.fontResource(FontFamily): Typeface
का अब इस्तेमाल नहीं किया जा सकता. इसका इस्तेमाल पहले फ़ॉन्ट को पहले से लोड करने के लिए किया जाता था. डाउनलोड किए जा सकने वाले फ़ॉन्ट के लिए, इसमें 10 सेकंड तक लग सकते हैं. इसके बजाय,FontFamilyResolver.preload
का इस्तेमाल करें (If8e7c, b/174162090)maxSlotsToRetainForReuse
को स्वीकार करने वालेSubcomposeLayoutState
कंस्ट्रक्टर को अब बंद कर दिया गया है. इसके बजाय, एक नया कंस्ट्रक्टर है जो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
returnsState<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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
NullPointerException
कोandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
पर ठीक किया गया (aosp/1947059, b/206677462)- Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड में मौजूद कॉन्टेंट की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. (I06020, b/197769306)
LazyVerticalGrid
में दाएं से बाएं की ओर लिखे जाने वाले टेक्स्ट की समस्या ठीक की गई (aosp/1931080, b/207510535)
वर्शन 1.1.0
9 फ़रवरी, 2022
androidx.compose.ui:ui-*:1.1.0
रिलीज़ हो गया है. वर्शन 1.1.0 में ये कमिट शामिल हैं.
1.0.0 के बाद हुए अहम बदलाव
- Android 12 के ओवरस्क्रॉल इफ़ेक्ट के लिए स्टेबल सपोर्ट
- टच टारगेट के साइज़ में सुधार
- ध्यान दें कि Compose 1.0 के हिसाब से, मटीरियल कॉम्पोनेंट अपने लेआउट स्पेस को बढ़ाएंगे, ताकि टच टारगेट साइज़ के लिए, मटीरियल सुलभता के दिशा-निर्देशों का पालन किया जा सके. उदाहरण के लिए, अगर आपने बटन का साइज़ छोटा सेट किया है, तब भी बटन का टच टारगेट कम से कम 48x48dp तक बढ़ जाएगा. इससे Compose Material, Material Design Components के जैसा ही काम करता है. साथ ही, Views और Compose को एक साथ इस्तेमाल करने पर, दोनों एक जैसा काम करते हैं. इस बदलाव से यह भी पक्का होता है कि Compose Material कॉम्पोनेंट का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) बनाते समय, टच टारगेट की पहुंच से जुड़ी ज़रूरी शर्तें पूरी हों.
- नेविगेशन रेल के लिए स्टेबल सपोर्ट
- एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल वर्शन में अपग्रेड किया गया है
- Kotlin के नए वर्शन के लिए सहायता
वर्शन 1.1.0-rc03
26 जनवरी, 2022
androidx.compose.ui:ui-*:1.1.0-rc03
रिलीज़ हो गया है. वर्शन 1.1.0-rc03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose Material 1.1.0-rc03 के साथ काम करने के लिए अपडेट किया गया
वर्शन 1.1.0-rc01
15 दिसंबर, 2021
androidx.compose.ui:ui-*:1.1.0-rc01
रिलीज़ हो गया है. वर्शन 1.1.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐक्सेसिबिलिटी से जुड़ी स्क्रोल करने की कार्रवाइयों (I7cbfb) के गायब होने की समस्या को ठीक किया गया है
SemanticsNodeInteraction.captureToImage()
अब तब भी काम करेगा, जबHardwareRenderer.isDrawingEnabled()
false
पर सेट हो. इसके लिए, कॉल के दौरान इसे चालू करना होगा (Idf3d0)
वर्शन 1.1.0-beta04
1 दिसंबर, 2021
androidx.compose.ui:ui-*:1.1.0-beta04
रिलीज़ हो गया है. वर्शन 1.1.0-beta04 में ये कमिट शामिल हैं.
नई सुविधाएं
- Kotlin
1.6.0
के साथ काम करने के लिए अपडेट किया गया
एपीआई में हुए बदलाव
androidx.core.view
में नल वैल्यू की समस्या ठीक की गई (I7078a, b/204917439)- प्रयोग के तौर पर उपलब्ध एपीआई जोड़े गए हैं. इनकी मदद से उपयोगकर्ता, PointerInputchange का इस्तेमाल पूरी तरह से कर सकते हैं. इसके अलावा, यह भी देख सकते हैं कि इसका इस्तेमाल किया गया है या नहीं. (I2e59d)
- यह कुकी, यूज़र इंटरफ़ेस (यूआई) लेयर में माउस व्हील को स्क्रोल करने पर होने वाले इवेंट के लिए सहायता जोड़ती है. (Ia14eb, b/198214718)
- ऐसे एक्सपेरिमेंटल
Modifier.composed
ओवरलोड जोड़ें जो समानता की तुलना करने के लिए कुंजियां स्वीकार करते हैं और ऑप्टिमाइज़ेशन को स्किप करने की ज़रूरी शर्तें पूरी करते हैं. (Ice799, b/205851704) ComposeNotIdleException
अब सीधेThrowable
से नहीं, बल्किException
से शुरू होता है. ध्यान दें कि इसका मतलब यह है किException
को मैच करने वाले कैच क्लॉज़ अबComposeNotIdleException
को मैच कर सकते हैं. हालांकि, पहले ऐसा नहीं होता था. (I9c217)
गड़बड़ियां ठीक की गईं
- IME की दृश्यता बदलने पर, टेक्स्ट हैंडल के न हिलने की समस्या ठीक की गई. (I25f2e)
वर्शन 1.1.0-beta03
17 नवंबर, 2021
androidx.compose.ui:ui-*:1.1.0-beta03
रिलीज़ हो गया है. वर्शन 1.1.0-beta03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- प्लेसमेंट में बदलाव को मॉनिटर करने के लिए, नया मॉडिफ़ायर Modifier.onPlaced जोड़ा गया. इसलिए, प्लेसमेंट में हुए बदलाव के आधार पर, चाइल्ड मॉडिफ़ायर के ऑफ़सेट में अन्य बदलाव किए जा सकते हैं. (I558fd)
InjectionScope.flush()
औरInjectionScope.dispose()
को हटाया गया. अब सभी इवेंट को फ़्लश करने और स्कोप को हटाने की प्रोसेस, पहले की तरह perform*Input() तरीके को कॉल करने के बाद होती है. (I2bed8)MultiModalInjectionScope.Touch
औरMultiModalInjectionScope.Mouse
को हटाया गया. मल्टी-मॉडल जेस्चर के लिए टच और माउस इवेंट इंजेक्ट करने के लिए, अबMultiModalInjectionScope.touch()
औरMultiModalInjectionScope.mouse()
का इस्तेमाल किया जा सकता है. ये दोनों, लैंबडा को स्वीकार करते हैं. इस लैंबडा में उस मोडेलिटी का रिसीवर स्कोप होता है. (Idde18)
गड़बड़ियां ठीक की गईं
durationMillis
मेंdurationMillis
के लिए डिफ़ॉल्ट वैल्यू अब इस तरह से कैलकुलेट की जाती है कि स्वाइप किया जा सके.TouchInjectionScope.swipeWithVelocity
(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)InjectionScope
मेंviewConfiguration: ViewConfiguration
जोड़ा गया है, ताकि टेस्ट, इनपुट इंजेक्शन को अडजस्ट कर सकें. जैसे, बटन को दबाकर रखने की समयसीमा या टच स्लोप.- टच और माउस, दोनों के लिए दबाकर रखने और दो बार टैप करने की डिफ़ॉल्ट अवधि को बदल दिया गया है. अब यह अवधि,
InjectionScope.viewConfiguration
में दी गई वैल्यू के हिसाब से तय होगी.
- ExposedDropdownMenuBox के आधार पर ExposedDropdownMenu को लागू करना. इसमें TextField और DropdownMenu शामिल हैं (If60b2)
- dismissOnOutsideClick को PopupProperties में जोड़ा गया है. यह dismissOnClickOutside की जगह लेता है, जिसे बंद कर दिया गया था. नई प्रॉपर्टी को क्लिक की पोज़िशन और ऐंकर बाउंड्री मिलती है. इससे यह बेहतर तरीके से कंट्रोल किया जा सकता है कि onDismissRequest को लागू किया जाना चाहिए या नहीं. उदाहरण के लिए, यह ऐंकर पर किए गए टच के लिए ऐंकर को खारिज होने से रोकने के लिए काम आ सकता है.
- updateAndroidWindowManagerFlags को PopupProperties में जोड़ा गया है. इससे, Android WindowManager को पॉप-अप से पास किए गए फ़्लैग पर लो-लेवल कंट्रोल मिलता है. लैंबडा का पैरामीटर, PopupProperties वैल्यू से कैलकुलेट किए गए फ़्लैग होंगे.इनसे WindowManager फ़्लैग मिलेंगे. उदाहरण के लिए, focusable. लैंबडा का नतीजा, फ़ाइनल फ़्लैग होगा. इसे 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)- Redo implementation of inspectable (I927bc, b/191017532)
- जांच किए जा सकने वाले पैरामीटर का नाम बदलकर, कंपोज़ किए गए पैरामीटर के नाम से मैच किया गया (I3a482, b/191017532)
performTouchInput
औरTouchInjectionScope
कोperformTouchInput
औरTouchInjectionScope
के विकल्प के तौर पर पेश किया गया. इससे माउस जैसे अन्य तरीकों के लिए रास्ता खुल गया.TouchInjectionScope
मेंGestureScope
के जैसे ही तरीके हैं. हालांकि,movePointerTo
औरmovePointerBy
को छोड़कर, जिनके नाम बदलकरupdatePointerTo
औरupdatePointerBy
कर दिए गए हैं. अन्य सभी तरीके एक जैसे हैं.TouchInjectionScope
का व्यवहार,GestureScope
के जैसा ही होता है. हालांकि, इसमें दो छोटे-छोटे अंतर होते हैं:- जब पॉइंटर को बिना किसी मूव इवेंट के भेजे ही, डाउन इवेंट भेजा जाता है (दूसरे शब्दों में,
updatePointerTo()
का इस्तेमाल किया गया है, लेकिनmove()
का नहीं. इसके बाद,down()
को कॉल किया जाता है), तो पिछला तरीका इवेंट के समय को आगे बढ़ा देता है. साथ ही, डाउन इवेंट भेजने से पहले एक मूव इवेंट भेज देता है. नया तरीका लागू करने के बाद भी, move इवेंट भेजा जाता है. हालांकि, इस खास स्थिति में इवेंट का समय नहीं बढ़ता. - जब पॉइंटर को बिना किसी मूव इवेंट को भेजे (ऊपर दिए गए उदाहरण की तरह) ले जाया जाता है, तब अप इवेंट भेजने पर, पिछला तरीका इवेंट के समय को आगे बढ़ा देता था. साथ ही, अप इवेंट भेजने से पहले एक मूव इवेंट भेज देता था. नया तरीका इन दोनों में से कोई भी काम नहीं करता: पॉइंटर की नई पोज़िशन सिर्फ़ अप इवेंट के ज़रिए दिखेगी.
आखिर में,
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)- Compose Desktop में RenderEffect के लिए सहायता जोड़ी गई. OffsetEffect के साथ-साथ, ब्लर मॉडिफ़ायर को भी पेश किया गया है. इससे कंपोज़िशन के किसी हिस्से में ब्लर विज़ुअल इफ़ेक्ट आसानी से जोड़े जा सकते हैं. (I0f6aa, b/166927547)
- RenderEffect API लॉन्च किया गया है. इसे
Modifier.graphicsLayer
पर कॉन्फ़िगर किया जा सकता है, ताकि लेयर के कॉन्टेंट में बदलाव किया जा सके. इसका इस्तेमाल, कंपोज़ेबल और कंपोज़िशन के क्रम में मौजूद चाइल्ड कंपोज़ेबल के कॉन्टेंट को धुंधला करने के लिए किया जा सकता है. (I47c4d, b/166927547) - AwaitPointerEventScope में अब withTimeout() और withTimeoutOrNull() फ़ंक्शन उपलब्ध हैं (I507f0, b/179239764, b/182397793)
- ViewConfiguration में, कम से कम टच टारगेट का साइज़ जोड़ा गया है. इसका इस्तेमाल सिमैंटिक्स और पॉइंटर इनपुट में किया जाता है, ताकि ऐक्सेसिबिलिटी को बेहतर बनाया जा सके. (Ie861c)
- TileMode.Decal के लिए सहायता जोड़ी गई है. यह धुंधलेपन पर आधारित RenderEffects के लिए, किनारे के व्यवहार को तय करने में मददगार है. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
औरhasScrollToKeyAction
अब स्टेबल एपीआई (I142ae, b/178483889) हैं- क्लिप किए गए बाउंड्री पाने के लिए, टेस्ट मेथड जोड़ा गया. (I6b28e)
गड़बड़ियां ठीक की गईं
- BlurredEdgeTreatment से isBounded तरीके को हटा दिया गया है. इसके बजाय, यह साफ़ तौर पर जांच की जाती है कि शेप पैरामीटर शून्य है या नहीं. (I85d68)
वर्शन 1.1.0-alpha02
18 अगस्त, 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
रिलीज़ हो गया है. वर्शन 1.1.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- PointerEvent अब माउस बटन की स्थिति और कीबोर्ड मॉडिफ़ायर की स्थिति को पढ़ने की सुविधा के साथ काम करता है. (I6310c, b/180075467)
- इंजेक्ट किए गए जेस्चर अब MainTestClock के समय का इस्तेमाल करते हैं. यह समय की जानकारी का सबसे सटीक सोर्स होता है.
performGesture
में इंजेक्ट किए गए इवेंट के लिए मौजूदा समय, MainTestClock के मौजूदा समय पर सेट किया जाएगा. (Ifb364, b/192064452) DpRect(DpOffset, DpSize)
कंस्ट्रक्टर जोड़ा गया (I2cf16, b/194219828)- DpSize क्लास जोड़ी गई (I7abb1, b/194219828)
गड़बड़ियां ठीक की गईं
- वेक्टर ग्राफ़िक्स के एक्सएमएल पार्सिंग को अपडेट किया गया है, ताकि VectorDrawables पर ColorStateLists को रूट कलर टिंट प्रॉपर्टी के तौर पर इस्तेमाल किया जा सके. (I86915, b/195668138)
वर्शन 1.1.0-alpha01
4 अगस्त, 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
रिलीज़ हो गया है. वर्शन 1.1.0-alpha01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
RelocationRequester.bringIntoView
अब पैरामीटर के तौर पर रेक्टैंगल स्वीकार करता है. इससे हम कंपोज़ेबल के किसी हिस्से को व्यू में ला सकते हैं (Ice2c5, b/194330245)AnimatedImageVector
और इससे जुड़े एपीआई अब नएandroidx.compose.animation:animation-graphics
मॉड्यूल में हैं. (I60873)- जगह बदलने के अनुरोधों को मैनेज करने के लिए, एक्सपेरिमेंटल मॉडिफ़ायर जोड़ा गया. (I65a97, b/178211874)
BrushPainter API पेश किया गया है. इससे Painter में किसी भी Brush को ड्रॉ किया जा सकता है. यह ColorPainter की तरह ही काम करता है
Brush API को अपडेट किया गया है, ताकि उसमें इंट्रिंसिक साइज़ पैरामीटर हो. इसे BrushPainter में क्वेरी किया जाता है (Ia2752, b/189466433)
DrawScope#drawImage तरीके को अपडेट किया गया है. यह सोर्स और डेस्टिनेशन रेक्ट का इस्तेमाल करता है, ताकि वैकल्पिक FilterQuality पैरामीटर का इस्तेमाल किया जा सके. यह पिक्सल आर्ट के लिए फ़ायदेमंद है. पिक्सल आर्ट को पिक्सल के आधार पर बड़ा करने पर, उसे पिक्सलेट किया जाता है. BitmapPainter और Image कंपोज़ेबल को अपडेट किया गया है, ताकि वे FilterQuality पैरामीटर का इस्तेमाल कर सकें. हालांकि, यह पैरामीटर इस्तेमाल करना ज़रूरी नहीं है (Ie4fb0, b/180311607)
GestureScope.advanceEventTime
तरीका जोड़ा गया है, ताकि जेस्चर (Ibf3e2) में इवेंट के समय को ज़्यादा कंट्रोल किया जा सके
गड़बड़ियां ठीक की गईं
- ड्रॉ मॉडिफ़ायर की चेनिंग को बेहतर तरीके से सपोर्ट करने के लिए, पक्का करें कि Modifier.paint लागू करने से drawsContent कॉल हो.
पहले, Modifier.paint को मॉडिफ़ायर की चेन में लीफ़ नोड के तौर पर इस्तेमाल किया जाता था. हालांकि, ऐसा करने से इसे कंपोज़ेबल कंटेनर (जैसे कि बॉक्स) पर कॉन्फ़िगर नहीं किया जा सकता. साथ ही, इसके ऊपर
Modifier.paint().border()
जैसे अतिरिक्त डेकोरेशन नहीं जोड़े जा सकते. Modifier.paint कॉल में, दिए गए पेंटर के कॉन्टेंट को ड्रा करने के बाद drawContent को कॉल किया जाता है. इससे, मॉडिफ़ायर पैटर्न के साथ व्यवहार में बेहतर स्थिरता मिलती है. (Ibb2a7, b/178201337, b/186213275) - डायलॉग बॉक्स अब प्लैटफ़ॉर्म के साइज़िंग के हिसाब से काम करते हैं. इस व्यवहार को बदलने के लिए,
usePlatformDefaultWidth
को false पर सेट करें. (Iffaed, b/192682388) InfiniteAnimationPolicy
को :compose:ui (I5eb09, b/160602714) पर ले जाया गया- लेज़ी लिस्ट और रेगुलर स्क्रोलिंग कॉम्पोनेंट के लिए, सिमैंटिक्स ऐक्शन के ज़रिए स्क्रोल करने की सुविधा अब ऐनिमेटेड है (Id9066, b/190742024)
वर्शन 1.0
वर्शन 1.0.5
3 नवंबर, 2021
androidx.compose.ui:ui-*:1.0.5
रिलीज़ हो गया है. वर्शन 1.0.5 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- derivedStateOf इंस्टेंस को ट्रैक करने के दौरान क्रैश होने की समस्या ठीक की गई. (aosp/1792247)
वर्शन 1.0.4
13 अक्टूबर, 2021
androidx.compose.ui:ui-*:1.0.4
रिलीज़ हो गया है. वर्शन 1.0.4 में ये कमिट शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.31
पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.3
29 सितंबर, 2021
androidx.compose.ui:ui-*:1.0.3
रिलीज़ हो गया है. वर्शन 1.0.3 में ये कमिट शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.30
पर निर्भर रहने के लिए अपडेट किया गया
वर्शन 1.0.2
1 सितंबर, 2021
androidx.compose.ui:ui-*:1.0.2
रिलीज़ हो गया है. वर्शन 1.0.2 में ये कमिट शामिल हैं.
Compose 1.0.2
की रिलीज़ के साथ काम करने के लिए अपडेट किया गया. Compose 1.0.2
अब भी Kotlin 1.5.21
के साथ काम करता है.
वर्शन 1.0.1
4 अगस्त, 2021
androidx.compose.ui:ui-*:1.0.1
रिलीज़ हो गया है. वर्शन 1.0.1 में ये कमिट शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Kotlin
1.5.21
पर निर्भर रहने के लिए अपडेट किया गया.
वर्शन 1.0.0
28 जुलाई, 2021
androidx.compose.ui:ui-*:1.0.0
रिलीज़ हो गया है. वर्शन 1.0.0 में ये कमिट शामिल हैं.
1.0.0 वर्शन की मुख्य सुविधाएं
यह Compose का पहला स्टेबल वर्शन है. ज़्यादा जानकारी के लिए, कृपया Compose रिलीज़ का आधिकारिक ब्लॉग देखें!
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
अगर 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
को false पर सेट करें. (Iffaed, b/192682388)
वर्शन 1.0.0-rc01
1 जुलाई, 2021
androidx.compose.ui:ui-*:1.0.0-rc01
रिलीज़ हो गया है. वर्शन 1.0.0-rc01 में ये कमिट शामिल हैं.
नई सुविधाएं
- ui-tooling मॉड्यूल को
ui-tooling
औरui-tooling-preview
में बांटें (Iefa28, b/190649014)
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध
FocusManager#moveFocusIn
औरFocusManager#moveFocusOut
को हटाया गया (I227d7, b/170154986, b/186567354, b/168510304) - Canvas में अब accessibility के लिए, contentDescription पैरामीटर काम करता है. (Ib547c)
PopupProperties
में मौजूदuseDefaultMaxWidth
का नाम बदलकरusePlatformDefaultWidth
कर दिया गया है. (I05710)- डायलॉग अब स्क्रीन की पूरी चौड़ाई का इस्तेमाल कर सकते हैं. (I83929, b/190810877)
- एचएसवी और एचएसएल कलर के लिए, एक्सपेरिमेंट के तौर पर सहायता जोड़ी गई. (Id7cf8, b/180731008)
व्यवहार में बदलाव
- Compose
@Preview
अब एकLocalActivityResultRegistryOwner
उपलब्ध कराता है. इसकी मदद से, उन कंपोज़ेबल की झलक देखी जा सकती है जोrememberLauncherForActivityResult()
जैसे एपीआई का इस्तेमाल करते हैं. ये एपीआई,rememberLauncherForActivityResult()
के मालिक के मौजूद होने पर काम करते हैं. (Ib13d1, b/185693006) - Compose
@Preview
अबLocalOnBackPressedDispatcherOwner
उपलब्ध कराता है. इसकी मदद से,BackHandler
जैसे एपीआई का इस्तेमाल करने वाले कंपोज़ेबल का पूर्वावलोकन किया जा सकता है. ये एपीआई, मालिक के मौजूद होने पर काम करते हैं. (Ia1c05, b/185693006)
गड़बड़ियां ठीक की गईं
InfiniteAnimationPolicy
कोandroidx.compose.ui:ui
में ले जाया गया (I5eb09, b/160602714)- मॉड्यूल के स्ट्रक्चर में बदलाव करने के लिए, AnimatedImageVector को कुछ समय के लिए हटा दिया गया था. (I41906, b/160602714)
वर्शन 1.0.0-beta09
16 जून, 2021
androidx.compose.ui:ui-*:1.0.0-beta09
रिलीज़ हो गया है. वर्शन 1.0.0-beta09 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Role और LiveRegionMode enum को प्राइवेट कंस्ट्रक्टर (Id1890) के साथ इनलाइन क्लास में बदलें
- KeyboardCapitalization को इनलाइन क्लास में बदल दिया गया है. (Id5a1c)
- HapticFeedbackType को इनलाइन क्लास में बदलें. (I255ec)
- Modifier.pointerInteropFilter is @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis, और TextDirection अब इनलाइन क्लास हैं. (I212fe)
- TextOverflow को इनलाइन क्लास में बदल दिया गया है. (I433af)
- FontStyle अब एक इनलाइन क्लास है. (I9e48b)
गड़बड़ियां ठीक की गईं
- फ़िलहाल, मुख्य कॉन्स्टेंट @ExperimentalComposeUiApi हैं. कोड का इस्तेमाल करने वाला व्यक्ति, स्टेबल होने से पहले ही प्राइवेट कॉन्स्टेंट का एलान कर सकता है. (Ia5d48)
- अब Robolectric पर कंपोज़ टेस्ट चलाए जा सकते हैं. अब तक इन सीमाओं का पता चला है:
- कोई नेटिव बिटमैप नहीं है, इसलिए
ImageBitmap()
से NullPointerException होता है. - कोई ड्रॉइंग नहीं है.इसलिए,
captureToImage()
अगले ड्रॉ पास का इंतज़ार करता रहेगा. इसका मतलब है कि यह लॉक हो जाएगा. - कोई फ़ॉन्ट लोड नहीं किया गया है. इसलिए, किसी भी टेक्स्ट को गलत तरीके से मेज़र किया जाएगा. सभी वर्णों की ऊंचाई करीब 20 पिक्सल और चौड़ाई 1 पिक्सल होती है.
ComposeTestRule.waitUntil {}
इंतज़ार करते समय मुख्य थ्रेड को नहीं चलाता है. इसलिए, यहComposeTestRule.mainClock.advanceTimeUntil {}
के जैसा ही है आने वाले समय में, इसकी और भी सीमाएं पता चल सकती हैं. (I284fa)
- कोई नेटिव बिटमैप नहीं है, इसलिए
प्रोफ़ाइल के नियम जोड़े गए
इस रिलीज़ में, कंपोज़ मॉड्यूल (I14ed6) में प्रोफ़ाइल के नियम जोड़े गए हैं:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
प्रोफ़ाइल के नियम क्या हैं?
किसी लाइब्रेरी के लिए प्रोफ़ाइल के नियम,
src/main
या उससे मिलती-जुलती डायरेक्ट्री में मौजूद टेक्स्ट फ़ाइलbaseline-prof.txt
में दिए जाते हैं. फ़ाइल में हर लाइन के लिए एक नियम तय किया जाता है. इस मामले में, नियम एक ऐसा पैटर्न होता है जिसका इस्तेमाल लाइब्रेरी में मौजूद तरीकों या क्लास से मिलान करने के लिए किया जाता है. इन नियमों का सिंटैक्स, एआरटी प्रोफ़ाइल के ऐसे फ़ॉर्मैट का सुपरसेट है जिसे आसानी से पढ़ा जा सकता है. इसका इस्तेमालadb shell profman --dump-classes-and-methods ...
का इस्तेमाल करते समय किया जाता है. ये नियम, तरीकों या क्लास को टारगेट करने के लिए दो में से किसी एक फ़ॉर्म में होते हैं.तरीके के नियम का पैटर्न इस तरह होगा:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
क्लास के नियम का पैटर्न इस तरह होगा:
<CLASS_DESCRIPTOR>
यहां
<FLAGS>
,H
,S
, औरP
में से एक या उससे ज़्यादा वर्ण हैं. इनसे यह पता चलता है कि इस तरीके को "हॉट", "स्टार्टअप" या "पोस्ट स्टार्टअप" के तौर पर फ़्लैग किया जाना चाहिए या नहीं.<CLASS_DESCRIPTOR>
उस क्लास का डिस्क्रिप्टर है जिससे टारगेट किया गया तरीका जुड़ा है. उदाहरण के लिए, क्लासandroidx.compose.runtime.SlotTable
का डिस्क्रिप्टरLandroidx/compose/runtime/SlotTable;
होगा.<METHOD_SIGNATURE>
, मेथड का सिग्नेचर होता है. इसमें मेथड का नाम, पैरामीटर टाइप, और रिटर्न टाइप शामिल होते हैं. उदाहरण के लिए,LayoutNode
पर मौजूदfun isPlaced(): Boolean
तरीके का सिग्नेचरisPlaced()Z
है.इन पैटर्न में वाइल्डकार्ड (
**
,*
, और?
) हो सकते हैं, ताकि एक ही नियम में कई तरीकों या क्लास को शामिल किया जा सके.
नियमों से क्या होता है?
जिस तरीके में
H
फ़्लैग होता है वह "हॉट" तरीका होता है. इसे पहले से ही कंपाइल कर लेना चाहिए.S
फ़्लैग वाली किसी भी विधि का मतलब है कि इसे स्टार्टअप के समय कॉल किया जाता है. इसलिए, इसे पहले से कंपाइल किया जाना चाहिए, ताकि स्टार्टअप के समय कंपाइल करने और समझने में लगने वाले समय को बचाया जा सके.P
फ़्लैग वाली किसी भी विधि से पता चलता है कि यह एक ऐसी विधि है जिसे स्टार्टअप के बाद कॉल किया जाता है.इस फ़ाइल में मौजूद क्लास से पता चलता है कि इसका इस्तेमाल स्टार्टअप के दौरान किया जाता है. इसलिए, इसे हीप में पहले से ही असाइन कर दिया जाना चाहिए, ताकि क्लास लोडिंग की लागत से बचा जा सके.
यह कैसे काम करता है?
- लाइब्रेरी इन नियमों को तय कर सकती हैं. ये नियम, एएआर आर्टफ़ैक्ट में पैकेज किए जाएंगे. जब इन आर्टफ़ैक्ट को शामिल करके कोई ऐप्लिकेशन बनाया जाता है, तो इन नियमों को एक साथ मर्ज कर दिया जाता है. इसके बाद, मर्ज किए गए नियमों का इस्तेमाल करके, ऐप्लिकेशन के लिए कॉम्पैक्ट बाइनरी एआरटी प्रोफ़ाइल बनाई जाती है. जब ऐप्लिकेशन को डिवाइसों पर इंस्टॉल किया जाता है, तो एआरटी इस प्रोफ़ाइल का इस्तेमाल कर सकता है. इससे ऐप्लिकेशन के किसी खास सबसेट को पहले से कंपाइल किया जा सकता है, ताकि ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सके. खास तौर पर, पहली बार ऐप्लिकेशन चलाने पर. ध्यान दें कि इससे डीबग किए जा सकने वाले ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.
वर्शन 1.0.0-beta08
2 जून, 2021
androidx.compose.ui:ui-*:1.0.0-beta08
रिलीज़ हो गया है. वर्शन 1.0.0-beta08 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
NestedScrollSource
enum को इनलाइन क्लास से बदल दिया गया है. (Ie321b, b/187055290)FocusManager.clearFocus(forcedClear = true)
का नाम बदलकरFocusManager.clearFocus(force = true)
कर दिया गया है (Ia0c41)- नए enum वैल्यू जोड़ने पर, when स्टेटमेंट के साथ होने वाली समस्याओं से बचने के लिए, enum के इस्तेमाल को इनलाइन क्लास में बदला गया है. (I2b5eb)
PopupProperties
से@ExperimentalComposeUiApi
को हटाएं. (I01fa6)PointerType
को enum से बदलकर इनलाइन क्लास (If5058) कर दिया गया- ContentDescription और Text सिमैंटिक्स प्रॉपर्टी अब सिंगल वैल्यू नहीं, बल्कि सूचियां हैं. इससे उन्हें जोड़ने के बजाय, मर्ज किया जा सकता है. इन बदलावों का इस्तेमाल करने के लिए, बेहतर टेस्टिंग एपीआई भी उपलब्ध कराए गए हैं (Ica6bf, b/184825850)
Modifier.focusModifier()
का अब इस्तेमाल नहीं किया जा सकता. इसकी जगहModifier.focusTarget()
(I6c860) का इस्तेमाल किया जा सकता हैModifier.onSizeChanged()
औरModifier.onGloballyPositioned()
अब इनलाइन फ़ंक्शन नहीं हैं (I727f6, b/186109675)KeyboardType
enum को इनलाइन क्लास से बदल दिया गया है. (I73045, b/187055290)FocusState
enum कोFocusState
इंटरफ़ेस (Iccc1a, b/187055290) से बदला गया- ImeAction enum को इनलाइन क्लास से बदल दिया गया है. (I18be5, b/187055290)
PlaceholderVerticalAlign
को इनलाइन क्लास में बदल दिया जाता है. (If6290)- TextUnitType अब एक इनलाइन क्लास है. (I4cba9)
AnnotatedString.withAnnotation
फ़ंक्शन अब ExperimentalComposeApi के बजाय ExperimentalTextApi हैं. (I0cd0a)- TextUnitType के साथ TextUnit कंस्ट्रक्टर अब ExperimentalComposeApi के बजाय ExperimentalTextApi है.
गड़बड़ियां ठीक की गईं
- beta07 में हुई उस गड़बड़ी को ठीक किया गया है जिसमें स्क्रोल करने के बाद, LazyColumn/Row आइटम आंशिक रूप से दिखते थे (I8c9ac, b/188566058)
- अब
detectDragGesures
,detectVerticalGestures
, औरdetectHorizontalGestures
, अपने-आप पोज़िशन में हुए बदलाव को इस्तेमाल करेंगे. इसलिए, onDrag कॉलबैक (I42fc4, b/185096350, b/187320697) में change.consumePositionChange को कॉल करने की ज़रूरत नहीं है - LayoutModifiers में अलाइनमेंट लाइनें दिखाने की सुविधा से जुड़ी समस्या ठीक कर दी गई है. एक बग ठीक किया गया है. इस बग की वजह से, बच्चों के अलाइनमेंट की लाइनें बदलने पर माता-पिता की ऊंचाई फिर से नहीं मापी जाती थी. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
को बदलकर, इस मॉडिफ़ायर के कोऑर्डिनेट को मॉडिफ़ायर चेन में रिपोर्ट करने के लिए इस्तेमाल किया गया. इससे सभी मॉडिफ़ायर लागू करने के बाद लेआउट के कोऑर्डिनेट रिपोर्ट नहीं किए जाते. इसका मतलब है कि अब मॉडिफ़ायर के क्रम से यह तय होगा कि कौनसे कोऑर्डिनेट रिपोर्ट किए जाएंगे. (Ieb67d, b/177926591)
वर्शन 1.0.0-beta07
18 मई, 2021
androidx.compose.ui:ui-*:1.0.0-beta07
रिलीज़ हो गया है. वर्शन 1.0.0-beta07 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ViewRootForInspector
इंटरफ़ेस जोड़ा गया, ताकि इसका इस्तेमाल इंस्पेक्टर में किया जा सके (Ib70df)SubcomposeLayoutState
अब रीयूज़ किए जा सकने वाले स्लॉट की संख्या सेट करने की सुविधा देता है. लेआउट, इस संख्या तक स्लॉट चालू रखेगा. ऐसा इसलिए किया जाएगा, ताकि अगली बार जब हमें नए स्लॉट की ज़रूरत हो, तो हम उनका फिर से इस्तेमाल कर सकें. इसके लिए, लेआउट उन्हें बंद नहीं करेगा (Ieb981)- KeyEventType enum को इनलाइन क्लास से बदल दिया गया है. (Id670a, b/187055290)
FocusDirection
enum को इनलाइन क्लास से बदल दिया गया है. (Ib6d03, b/187055290, b/184086802)- इससे SubcomposeLayout की स्थिति को ऊपर ले जाने की सुविधा मिलती है. इससे कॉन्टेंट को ऐसे slotId में पहले से कंपोज़ किया जा सकता है जिसकी ज़रूरत होती है. इससे मेज़रमेंट का अगला पास तेज़ी से पूरा होगा, क्योंकि अगली बार दिए गए slotId के साथ सबकंपोज़ करने की कोशिश करने पर, कंपोज़िशन की ज़रूरत नहीं होगी. (I42580, b/184940225)
- क्लिप चुनने के लिए हैंडल जोड़ा गया (Iff80d, b/183408447)
- LayoutInspector के साथ काम न करने वाले एपीआई हटाए गए. (I2ac78)
गड़बड़ियां ठीक की गईं
- LazyColumn/Row अब पहले से दिखने वाले दो आइटम को चालू रखेगा (डिस्पोज़ नहीं करेगा). भले ही, उन्हें स्क्रोल करके हटा दिया गया हो. इससे कॉम्पोनेंट, चालू सबकॉम्पोज़िशन का फिर से इस्तेमाल कर पाता है. ऐसा तब होता है, जब हमें कोई नया आइटम कंपोज़ करना होता है. इससे स्क्रोलिंग की परफ़ॉर्मेंस बेहतर होती है. (Ie5555)
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 में ownerViewId जोड़ा गया (I19f62)
- फ़ॉन्ट लोड करने के लिए, ऐसेट, फ़ाइल, और FileDescriptor से Font() ओवरलोड जोड़े गए (I5d382)
- सुलभता एपीआई
error
जोड़ा गया है. इससे ऐसे नोड को मार्क किया जा सकता है जिनमें अमान्य इनपुट (I12997, b/180584804, b/182142737) शामिल है - फ़ॉन्ट लोड करने के लिए, ऐसेट, फ़ाइल, और FileDescriptor से
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
फ़ंक्शन अब काम नहीं करता. यह एक ऐसा सार्वजनिक फ़ंक्शन है जिसका इस्तेमाल नहीं किया गया है. इसे टेस्टिंग के लिए जोड़ा गया था. यह फ़ंक्शन, Compose text API के लिए किसी काम का नहीं है. इस फ़ंक्शन के इस्तेमाल पर अब रोक लगा दी गई है. इसे बाद में हटा दिया जाएगा. (I80413)
गड़बड़ियां ठीक की गईं
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
, औरaccessibilityActionScrollDown
के लिए, ऐक्सेसिबिलिटी से जुड़ी स्क्रोल करने की कार्रवाइयों की समस्या ठीक की गई. स्क्रोल करने लायक कॉन्टेंट के आखिर तक स्क्रोल करने के बजाय, अब यह दिए गए दिशा में एक स्क्रीन तक स्क्रोल करेगा. (Ieccb0)- ui-test-manifest और ui-tooling-data की AndroidManifest फ़ाइलें अब Android 12 के साथ काम करती हैं (I6f9de, b/184718994)
वर्शन 1.0.0-beta04
7 अप्रैल, 2021
androidx.compose.ui:ui-*:1.0.0-beta04
रिलीज़ हो गया है. वर्शन 1.0.0-beta04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
SoftwareKeyboardController
पर मौजूदhideSoftwareKeyboard
औरshowSoftwareKeyboard
का नाम बदलकर, क्रमशःhide()
औरshow()
कर दिया गया है.- LocalSoftwareKeyboardController के लिए पूरा CompositionLocal इंटरफ़ेस उपलब्ध कराएं, ताकि इसे सेट किया जा सके. यह खास तौर पर टेस्ट में काम आता है (I579a6)
- LiveRegion accessibility API जोड़ा गया है. अगर नोड को लाइव रीजन के तौर पर मार्क किया गया है, तो सुलभता सेवाएं, उपयोगकर्ता को इसके बदलावों के बारे में अपने-आप सूचना देंगी (Idcf6f, b/172590946)
- TextOverflow.Visible को जोड़ा गया है. (Ic8f89)
गड़बड़ियां ठीक की गईं
- किनारों पर मौजूद
LazyColumn
/LazyRow
आइटम को तेज़ी से फ़्लिंग करने के बाद, गलत तरीके से पोज़िशन किए जाने की समस्या को ठीक किया गया (Ie4d13, b/183877420) AndroidViewBinding
अबFragmentContainerView
के ज़रिए बढ़ाए गए फ़्रैगमेंट को सही तरीके से हटा देता है. ऐसा तब होता है, जबAndroidViewBinding
को कंपोज़ करने वाले हाइरार्की से हटा दिया जाता है. (Ib0248, b/179915946)AndroidViewBinding
अबFragmentContainerView
के ज़रिए बढ़ाए गए फ़्रैगमेंट को सही तरीके से नेस्ट करता है. ऐसा तब होता है, जब आपकाComposeView
किसीFragment
के अंदर होता है. इससे उन फ़्रैगमेंट की स्थिति को सेव करने और वापस लाने से जुड़ी समस्याएं ठीक हो जाती हैं. (I70eb0, b/179915946)- Compose ViewBinding अब Fragment
1.3.2
पर निर्भर करता है. साथ ही, कॉन्फ़िगरेशन में बदलाव होने के बाद,FragmentContainerView
के ज़रिए बढ़ाए गए फ़्रैगमेंट को लगातार दिखाता है. (I0743d, b/179915946)
वर्शन 1.0.0-beta03
24 मार्च, 2021
androidx.compose.ui:ui-*:1.0.0-beta03
रिलीज़ हो गया है. वर्शन 1.0.0-beta03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- ComposeView की ViewTree डिपेंडेंसी के लिए, बाद में जांच करने की सुविधा (I8dbbf, b/182466548)
GestureScope
में,swipeUp
/swipeDown
/swipeLeft
/swipeRight
फ़ंक्शन के लिए, वैकल्पिकstartX
/endX
औरstartY
/endY
पैरामीटर जोड़े गए. (I49e2d, b/182063305)
वर्शन 1.0.0-beta02
10 मार्च, 2021
androidx.compose.ui:ui-*:1.0.0-beta02
रिलीज़ हो गया है. वर्शन 1.0.0-beta02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- TextField पर, SoftwareKeyboardController इंटरफ़ेस को बदलने के लिए, नया
LocalSoftwareKeyboardController
कंपोज़िशन लोकल एपीआई जोड़ा गया. (I5951e, b/168778053) - TextField पर, SoftwareKeyboardController इंटरफ़ेस को बदलने के लिए, नया
LocalSoftwareKeyboardController
कंपोज़िशन लोकल एपीआई जोड़ा गया. (I84472, b/168778053) - हमने यहां दी गई
SemanticsMatcher
हटा दी हैं:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- इन
SemanticsMatchers
को @ExperimentalTestApi के तौर पर मार्क किया गया है:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- ये
SemanticsMatcher
जोड़े गए:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
गड़बड़ियां ठीक की गईं
- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई (I6aa29, b/174531520) के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें
androidx.compose.ui:ui
अब AppCompat या Fragment पर निर्भर नहीं करता. अगर आपके ऐप्लिकेशन में ComposeView का इस्तेमाल किया जा रहा है और Fragment और/या AppCompat का इस्तेमाल किया जा रहा है, तो पक्का करें कि AppCompat 1.3+ / Fragment 1.3+ का इस्तेमाल किया जा रहा हो. ComposeView के लिए ज़रूरी लाइफ़साइकल और सेव किए गए स्टेट ओनर को सही तरीके से सेट करने के लिए, इन वर्शन का इस्तेमाल करना ज़रूरी है. (I1d6fa, b/161814404)- navigation-compose के डेस्टिनेशन में इस्तेमाल किए जाने पर,
rememberSaveable { mutableStateOf(0) }
के काम न करने की समस्या को ठीक किया गया है. (I1312b, b/180042685, b/180701630) - TextField पर, SoftwareKeyboardController इंटरफ़ेस को बदलने के लिए, नया
LocalSoftwareKeyboardController
कंपोज़िशन लोकल एपीआई जोड़ा गया. (I658b6, b/168778053) ComposeRootRegistry
केtearDownRegistry()
में NoSuchElementException की समस्या ठीक की गई (Iddce1)
वर्शन 1.0.0-beta01
24 फ़रवरी, 2021
androidx.compose.ui:ui-*:1.0.0-beta01
रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये कमिट शामिल हैं.
यह Compose 1.0.0 Beta का पहला वर्शन है.
एपीआई में हुए बदलाव
- onStart कॉलबैक को
detectDragGestures
(I67269, b/179995594) में जोड़ दिया गया है - इंट्रिंसिक साइज़िंग के लिए मॉडिफ़ायर अब एक्सपेरिमेंटल नहीं हैं. (I15744)
- MeasureBlocks का नाम बदलकर MeasurePolicy कर दिया गया. साथ ही, इसे एक मज़ेदार इंटरफ़ेस बना दिया गया. MeasurePolicy का इस्तेमाल करने के लिए, Layout API को अपडेट किया गया है / आसान बनाया गया है. (Icab48, b/167662468, b/156751158)
InteractionState
को[Mutable]InteractionSource
से बदल दिया गया है- इंटरफ़ेस, इंटरैक्शन इवेंट को भेजने / इकट्ठा करने के लिए ज़िम्मेदार होते हैं.
Button
औरModifier.clickable()
जैसे कॉम्पोनेंट कोinteractionState = remember { InteractionState() }
पास करने के बजाय,interactionSource = remember { MutableInteractionSource() }
का इस्तेमाल करें.- इसके बजाय:
Interaction.Pressed in interactionState
आपको InteractionSource पर एक्सटेंशन फ़ंक्शन का इस्तेमाल करना चाहिए. जैसे, InteractionSource.collectIsPressedAsState(). - इस्तेमाल के जटिल उदाहरणों के लिए, InteractionSource.interactions का इस्तेमाल करके इंटरैक्शन की स्ट्रीम को देखा जा सकता है. ज़्यादा जानकारी के लिए, InteractionSource का दस्तावेज़ और सैंपल देखें.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- CompositionLocals में AccessibilityMananger इंटरफ़ेस और LocalAccessibilityMananger जोड़ें (I53520)
- LayoutCoordinates के पुराने हो चुके तरीकों को हटाया गया. positionInParent और boundsInParent के लिए प्रॉपर्टी के बजाय फ़ंक्शन का इस्तेमाल करें (I580ed, b/169874631, b/175142755)
- टाइपएलियास को उनके मूल टाइप से बदल दिया गया है:
ColorStop
अबPair<Float, Color>
हो गया हैSpanStyleRange
अब `AnnotatedString.Rangeहो गया है ParagraphStyleRange
अबAnnotatedString.Range<ParagraphStyle>
हो गया हैStringAnnotation
अबAnnotatedString.Range<String>
हो गया है- (I8dd1a)
- CoreTextField जैसे लो लेवल टेक्स्ट कॉम्पोनेंट से इनपुट सेशन के लिए, नया TextInputSession बनाया गया. (I8817f, b/177662148)
- Placeable अब measuredSize दिखाता है. इससे पता चलता है कि चाइल्ड लेआउट का साइज़ कितना है. ऐसा हो सकता है कि इस साइज़ में मेज़रमेंट की शर्तों का पालन न किया गया हो. (Ib2729, b/172560206, b/172338608)
- selectionGroup मॉडिफ़ायर जोड़ें. इससे, सुलभता के लिए टैब या रेडियो बटन के कलेक्शन को मार्क किया जा सकता है (Ie5c29)
compositionLocalOf
औरstaticCompositionLocalOf
के लिएdefaultFactory
की जानकारी देना अब ज़रूरी है. पहले यह जानकारी देना ज़रूरी नहीं था.इस बदलाव से, उन नॉन-नलेबल टाइप के लिए संभावित टाइप गड़बड़ी हट जाती है जिनके लिए कोई डिफ़ॉल्ट फ़ैक्ट्री नहीं दी गई थी. इससे पहले, यह नॉन-नलेबल टाइप के लिए शून्य रेफ़रंस देता था.
शून्य वैल्यू वाले टाइप के लिए,
{ null }
को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल करें.हमारा सुझाव है कि नॉन-नलेबल टाइप के साथ लोकल का इस्तेमाल न करें. हालांकि, ऐसा तब किया जा सकता है, जब कोई डिफ़ॉल्ट वैल्यू दी जा सकती हो. अगर कोई डिफ़ॉल्ट वैल्यू मौजूद नहीं है, तो
defaultFactory
लैम्डा को एक अपवाद दिखाना चाहिए. हालांकि, अपवाद का मतलब है कि स्थानीय स्तर पर काम करने वाले लोगों को इस बात पर निर्भर रहना होगा कि यह सुविधा उपलब्ध कराई गई है या नहीं. टाइप सिस्टम इसे लागू नहीं करता है. (Ifbd2a)यूज़र इंटरफ़ेस (यूआई) मॉड्यूल से, बंद किए गए तरीकों को हटा दिया गया है (I646f6)
साइज़ मॉडिफ़ायर के नाम बदल दिए गए हैं. Modifier.width/height/size का नाम बदलकर requiredWidth/requiredHeight/requiredSize कर दिया गया है. Modifier.preferredWidth/preferredHeight/preferredSize का नाम बदलकर width/height/size कर दिया गया है. (I5b414)
Modifier.tapGestureFilter
को हटा दिया गया है. इसके बजाय,Modifier.pointerInput { detectTapGestures(...) }
का इस्तेमाल करें. (I266ed, b/175294473)पॉइंटर इनपुट सिस्टम से, आंशिक तौर पर इस्तेमाल किए गए इवेंट को हटा दिया गया है. कुछ हिस्से के इस्तेमाल को मैनेज करने के लिए, Modifier.nestedScroll का इस्तेमाल करने का सुझाव दिया जाता है. (Ie9c9b)
ओरिएंटेशन को फ़ाउंडेशन पैकेज में ले जाया गया है. VelocirtTracker को ui.gesture से ui.input.pointer में ले जाया गया. (Iff4a8, b/175294473)
imageResource और vectorResource अब ImageBitmap और ImageVector कंपैनियन पर एक्सटेंशन फ़ंक्शन हैं.
load{Image,Vector,Font}Resource
फ़ंक्शन मिटा दिए गए हैं. (I89130)AnimationClockObservable और इसकी सबक्लास हटा दी गई हैं. AnimatedFloat को हटा दिया गया है. (Icde52, b/177457083)
Providers का नाम बदलकर CompositionLocalProvider कर दिया गया है
- Composition कंस्ट्रक्टर अब key पैरामीटर स्वीकार नहीं करता है. साथ ही, इसे बंद कर दिया गया है.
- currentCompositeKeyHash को कंपोज़ेबल टॉप लेवल फ़ंक्शन के बजाय, कंपोज़ेबल टॉप लेवल प्रॉपर्टी में बदल दिया गया है.
- CompositionData और CompositionGroup को androidx.compose.runtime.tooling नेमस्पेस में ले जाया गया है
- ComposableLambda को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- ComposableLambdaN को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- snapshotFlow फ़ंक्शन को androidx.compose.runtime नेमस्पेस में ले जाया गया है
- SnapshotMutationPolicy के मर्ज करने के तरीके को अब एक्सपेरिमेंट के तौर पर इस्तेमाल नहीं किया जा सकता
- @TestOnly टॉप लेवल के clearRoots फ़ंक्शन को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
- keySourceInfoOf और resetSourceInfo फ़ंक्शन हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
- Composer.collectKeySourceInformation को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
- isJoinedKey, joinedKeyLeft, और joinedKeyRight तरीके हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
- कई टॉप लेवल एपीआई को अलग-अलग फ़ाइलों में ले जाया गया है और उन्हें फिर से व्यवस्थित किया गया है. Kotlin के फ़ाइल क्लास सिमैंटिक की वजह से, इससे बाइनरी कंपैटिबिलिटी पर असर पड़ेगा, लेकिन सोर्स कंपैटिबिलिटी पर नहीं. इसलिए, ज़्यादातर उपयोगकर्ताओं को इससे कोई समस्या नहीं होनी चाहिए.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
को compose:ui से हटा दिया गया है.androidx.activity:activity-compose:1.3.0-alpha01
में दिए गए वैल्यू का इस्तेमाल करें.viewModel()
औरLocalViewModelStoreOwner
को compose:ui से हटा दिया गया है.androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b) से मिले जवाबों का इस्तेमाल करोModifier.scrollable में बदलाव किया गया है. अब यह ScrollableController क्लास के बजाय, 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 API हटा दिया गया है toString के अलग-अलग तरीकों में इस्तेमाल किए गए कोड को फिर से लिखा गया है, ताकि String.format का इस्तेमाल न किया जा सके. (Id1290)
डीपी दावे हटाए गए (I798d2)
androidx.compose.runtime:runtime-dispatch (I55feb) को हटाया गया
टेक्स्ट से जुड़ी कार्रवाइयों में अब फ़ोकस अपने-आप जांचा जाता है (I13777, b/179648629)
हटाया गया
runBlockingWithManualClock
(I15cdc, b/179664814)Modifier.verticalScroll()/horizontalScroll() में स्क्रोल की पोज़िशन को अब Ints के साथ दिखाया जाता है (I81298)
FlingConfig का नाम बदलकर FlingBehavior कर दिया गया है. अब इसमें पहले से तय किए गए Decays के बजाय, सस्पेंड ऐनिमेशन को पसंद के मुताबिक बनाने की सुविधा मिलती है. (I02b86, b/175294473)
एक हेल्पर फ़ंक्शन जोड़ा गया है, जो सभी ImeAction कॉलबैक के लिए एक ही कार्रवाई सेट करने में मदद करता है (I63447, b/179226323)
सभी टेक्स्ट फ़ील्ड से SoftwareKeyboardController कॉलबैक हटा दिया गया है. इसकी जगह जल्द ही एक नया एपीआई ले लेगा. (Iae869, b/168778053)
FontSpan और FontWeigthStyleSpan का इस्तेमाल अब नहीं किया जाता और इन्हें हटा दिया गया है. (Ie5b56, b/177423444)
Material API में ये बदलाव किए गए हैं:
- TopAppBar/BottomAppBar में contentPadding पैरामीटर जोड़ा गया है, ताकि डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाया जा सके.
- ज़रूरी पैरामीटर को वैकल्पिक पैरामीटर से पहले रखने के लिए, BackdropScaffold में पैरामीटर का क्रम बदला गया है, ताकि एपीआई के दिशा-निर्देशों का पालन किया जा सके.
- BottomNavigationItem में
icon
पैरामीटर कोselected
औरonClick
के बाद ले जाया गया. - BottomNavigationItem में
alwaysShowLabels
पैरामीटर का नाम बदलकरalwaysShowLabel
कर दिया गया है. - कुछ कॉम्पोनेंट में
bodyContent
पैरामीटर का नाम बदलकर सिर्फ़content
कर दिया गया है. ButtonDefaults.buttonColors()
में पैरामीटर का क्रम बदला गया है. कृपया ध्यान दें कि पैरामीटर के टाइप में कोई बदलाव नहीं हुआ है. इसलिए, आपके कोड में कोई गड़बड़ी नहीं होगी. कृपया पक्का करें कि आपने नाम वाले पैरामीटर का इस्तेमाल किया हो या क्रम को मैन्युअल तरीके से अपडेट किया हो. ऐसा न करने पर, आपका कोड पहले की तरह काम नहीं करेगा.secondaryVariant
पैरामीटर कोdarkColors()
में जोड़ा गया. आम तौर पर, यह रंग गहरे रंग वाली थीम मेंsecondary
जैसा ही होता है. हालांकि, इसे एक जैसा रखने और अपनी पसंद के मुताबिक बनाने के लिए जोड़ा गया है.- ElevationDefaults और animateElevation() को सार्वजनिक एपीआई से हटा दिया गया है, क्योंकि इनका इस्तेमाल आम तौर पर नहीं किया जाता था / ये काम के नहीं थे.
Slider
में मौजूदonValueChangeEnd
का नाम बदलकरonValueChangeFinished
कर दिया गया है. साथ ही, इसे नल वैल्यू स्वीकार करने वाला बना दिया गया है.- एक जैसा नाम रखने के लिए,
Snackbar
में मौजूदtext
पैरामीटर का नाम बदलकरcontent
कर दिया गया है. - डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाने की अनुमति देने के लिए,
DropdownMenuItem
मेंcontentPadding
पैरामीटर जोड़ा गया. साथ ही,content
कोRowScope
पर एक्सटेंशन बनाया गया. ModalDrawerLayout
का नाम बदलकरModalDrawer
कर दिया गया.BottomDrawerLayout
का नाम बदलकरBottomDrawer
कर दिया गया.- (I1cc66)
गड़बड़ियां ठीक की गईं
- Compose में AnimatedVectorDrawable संसाधनों का इस्तेमाल करने के लिए, एपीआई जोड़ा गया. AnimatedImageVector के तौर पर
<animated-vector>
XML लोड करने के लिए, animatedVectorResource का इस्तेमाल करें. साथ ही, painterFor (I8ea91) का इस्तेमाल करके इसे ऐनिमेट करें - TextField पर, पिछले SoftwareKeyboardController इंटरफ़ेस की जगह लेने के लिए, नया LocalSoftwareKeyboardController कंपोज़िशन लोकल एपीआई जोड़ा गया है. (I658b6, b/168778053)
वर्शन 1.0.0-alpha12
10 फ़रवरी, 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
रिलीज़ हो गया है. वर्शन 1.0.0-alpha12 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- UiApplier से ViewGroups के लिए सहायता हटा दी गई है. emitView कंपोज़ेबल को हटा दिया गया है. (Ifb214)
- Modifier.pointerInput को अब याद रखने वाली कुंजियों की ज़रूरत होती है. इससे यह पता चलता है कि नई डिपेंडेंसी के लिए, पॉइंटर इनपुट का पता लगाने वाली कोराटीन को कब रीस्टार्ट करना चाहिए. (I849cd)
- CompositionReference का नाम बदलकर CompositionContext कर दिया गया है (I53fcb)
- Bounds का नाम बदलकर DpRect (I4b32a) कर दिया गया है
- टेस्टिंग से जुड़ा अपडेट: hasText() फ़ंक्शन, टेक्स्ट फ़ील्ड (Iab803) में इनपुट और लेबल/हिंट/प्लेसहोल्डर, दोनों तरह के टेक्स्ट की जांच करेगा
- viewModel() कंपोज़ेबल और LocalViewModelStoreOwner को androidx.lifecycle.viewmodel.compose में ले जाया गया है. अब आपको इसका इस्तेमाल करने के लिए, androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 नाम की एक अलग डिपेंडेंसी जोड़नी होगी. (I7a374)
- AccessibilityAction में नल वैल्यू वाली कार्रवाई की अनुमति दी गई. साथ ही, AccessibilityAction और CustomAccessibilityAction में कार्रवाई के लेबल को CharSequence से String में बदला गया (I0dc82)
- नाम रखने के नियमों को ImageBitmap और ImageVector के साथ बेहतर तरीके से मैच करने के लिए, ImagePainter का नाम बदलकर BitmapPainter कर दिया गया है, ताकि यह VectorPainter के साथ काम कर सके. (Iba381, b/174565889)
- सबस्ट्रिंग टेस्ट करने वाले बेहतर एपीआई. अब सबस्ट्रिंग को आर्ग्युमेंट के तौर पर इस्तेमाल किया जा सकता है (Icbe78)
- एक
Modifier.focusOrder()
जोड़ा गया है, जो लैंबडा के लिए फ़ोकस का क्रम तय किए बिना FocusRequester को स्वीकार करता है. यह तब काम आता है, जब हमें सिर्फ़ रेफ़रंस तय करना होता है, लेकिन कंपोज़ेबल (I4f52a, b/179180978) के लिए फ़ोकस करने का कस्टम ऑर्डर तय नहीं करना होता - ComponentActivity.setContent को androidx.activity:activity-compose मॉड्यूल में androidx.activity.compose.setContent पर ले जाया गया है. (Icf416)
- डिस्ट्रक्चरिंग और copy() तरीकों को उन क्लास से हटा दिया गया है जहां इनका इस्तेमाल कभी-कभार ही किया जाता था. (I26702, b/178659281)
- पॉप-अप को प्लैटफ़ॉर्म के हिसाब से बनाया गया. AndroidPopupProperties का नाम बदलकर PopupProperties कर दिया गया है. साथ ही,
isFocusable
कोPopupProperties
(Ieeea5) मेंfocusable
पैरामीटर में ले जाया गया है - डायलॉग को प्लैटफ़ॉर्म के हिसाब से बनाया गया. AndroidDialogProperties का नाम बदलकर DialogProperties कर दिया गया है. (I4ef69, b/179138130)
- LayoutNode को इंटरनल बनाया गया (I8a7b1, b/175103944)
- Constraints.enforce को Constraints.constrain से बदल दिया गया है. (I8b8ea)
- loadFontResource का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, fontResource का इस्तेमाल करें. imageResource, loadImageResource, vectorResource, और loadVectorResource अब काम नहीं करते. इसके बजाय, painterResource का इस्तेमाल करें. (I6b809)
- परफ़ॉर्मेंस को बेहतर बनाने के लिए, ScrollAxisRange सिमैंटिक अब सीधे तौर पर फ़्लोट वैल्यू के बजाय, फ़्लोट वैल्यू दिखाने वाले लैम्डा लेता है. (If4a35, b/178657186)
- सुलभता के लिए, टेक्स्ट फ़ील्ड के बदलाव किए जा सकने वाले इनपुट टेक्स्ट को मार्क करने के लिए, EditableText सिमैंटिक जोड़े गए. साथ ही, सिमैंटिक की जांच करने के लिए, उससे जुड़ी टेस्ट के तरीके जोड़े गए (I8e07a)
- OwnerLayer/OwnerScope/OwnerSnapshotObserver को इंटरनल बनाया गया (I4ffaf, b/175103944)
- toIntPx() का नाम बदलकर roundToPx() कर दिया गया है. (I9b7e4, b/173502290)
- IntBounds का नाम बदलकर IntRect कर दिया गया है. साथ ही, एपीआई को बेहतर बनाया गया है. (I1f6ff)
- Snapshot API को अपडेट किया गया है, ताकि यह एपीआई के दिशा-निर्देशों के मुताबिक काम करे. साथ ही, सार्वजनिक एपीआई से इंटरनल इंप्लीमेंटेशन क्लास को छिपाया जा सके. (Id9e32)
- बड़ा और छोटा करने की सिमैंटिक कार्रवाइयां जोड़ी गईं. ModalBottomSheetState में expand और halfExpand को जोड़ा गया (Ib5064)
- Modifier.dragGestureFilter को बंद कर दिया गया है. इसके बजाय,
Modifier.pointerInput { detectDragGestures (...)}
का इस्तेमाल करें. इसके अलावा, एक ऐक्सिस पर ड्रैग करने के लिए Modifier.draggable का इस्तेमाल करें (I0ba93, b/175294473) - Ambients का नाम बदलकर, Ambient -> CompositionLocal के नाम के मुताबिक कर दिया गया है. पहले, ऐंबिएंट का नाम AmbientFoo होता था. अब कंपोज़िशन लोकल का नाम LocalFoo है. (I2d55d)
- अब BaseTextField को हटा दिया गया है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I71368)
- चुने गए हिस्से को फ़ाउंडेशन में ले जाया गया. (I7892b)
- जिस तरह हमने पहले
state { 0 }
कंपोज़ेबल को हटाया था और अबremember { mutableStateOf(0) }
के इस्तेमाल को बढ़ावा दे रहे हैं उसी तरह हमsavedInstanceState { 0 }
कंपोज़ेबल को हटाने जा रहे हैं. आपकोrememberSaveable { mutableStateOf(0) }
का इस्तेमाल करना चाहिए. अगर MutableState में इस्तेमाल किया गया टाइप, बंडल में सेव किया जा सकता है, तो यह अपने-आप सेव और रीस्टोर हो जाएगा. अगर पहले कस्टम सेवर ऑब्जेक्ट पास किया जा रहा था, तो अब आपको rememberSaveable के नए ओवरलोड का इस्तेमाल करना होगा. इसमेंstateSaver
पैरामीटर होता है. इसका इस्तेमाल इस तरह दिखेगा:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - ऐक्सेसिबिलिटी के लिए पासवर्ड के सिमैंटिक जोड़े गए (I231ce)
- ऐक्सेसिबिलिटी के लिए, ProgressBarRangeInfo.Indeterminate जोड़ा गया है, ताकि अनिश्चित प्रोग्रेस बार को मार्क किया जा सके (I6fe05)
emptyContent()
और(@Composable () -> Unit).orEmpty()
यूटिलिटी का इस्तेमाल अब नहीं किया जा सकता, क्योंकि अब इनसे परफ़ॉर्मेंस पर कोई सकारात्मक असर नहीं पड़ता या इनकी कोई वैल्यू नहीं है (I0484d)snapshotFlow
औरwithMutableSnapshot
अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं (I6a45f)- अब रीकंपोज़र बंद किए जा सकते हैं. बंद किए गए कंपोज़र, कंपोज़िशन चाइल्ड कोरूटीन के पूरा होने तक फिर से कंपोज़ करना जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)
- UiSavedStateRegistry का नाम बदलकर SaveableStateRegistry कर दिया गया है. साथ ही, AmbientUiSavedStateRegistry का नाम बदलकर AmbientSaveableStateRegistry कर दिया गया है. इन दोनों को androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I30224)
- आर्टफ़ैक्ट androidx:compose:runtime:runtime-saved-instance-state का नाम बदलकर androidx:compose:runtime:runtime-saveable कर दिया गया है (I6dcac)
- ui पैकेज में लंबे समय से बंद किए गए कई एपीआई मिटा दिए गए हैं. (I2f2dc)
- compose:runtime-dispatch आर्टफ़ैक्ट अब काम नहीं करता. MonotonicFrameClock को अब compose:runtime में देखा जा सकता है. साथ ही, AndroidUiDispatcher को compose:ui में देखा जा सकता है. (Ib5c36)
- 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)- canDrag को Modifier.scrollable से हटा दिया गया है. (Id66e7, b/175294473)
- LayoutCoordinates.parentCoordinates का नाम बदलकर LayoutCoordinates.parentLayoutCoordinates कर दिया गया है, ताकि नई parentCoordinates प्रॉपर्टी का इस्तेमाल किया जा सके. parentCoordinates प्रॉपर्टी अब पैरंट मॉडिफ़ायर के LayoutCoordintes उपलब्ध कराती है. इससे onSizeChanged() और onGloballyPositioned() के इस्तेमाल के ज़्यादा उदाहरण मिलेंगे (Idfbfd, b/177926591)
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter, और pressIndicaitonGestureFilter अब काम नहीं करते. इसके बजाय, Modifier.clickable या Modifier.pointerInput के साथ detectTapGestures फ़ंक्शन का इस्तेमाल करें. (I6baf9, b/175294473)
- SaveableStateRegistry से unregisterProvider को हटा दिया गया है. अब registerProvider() फ़ंक्शन, SaveableStateRegistry.Entry ऑब्जेक्ट दिखाता है. इसका इस्तेमाल, रजिस्टर किए गए डेटा को हटाने के लिए किया जा सकता है (Ic4274, b/178583739)
- rememberSavedInstanceState() का नाम बदलकर rememberSaveable() कर दिया गया है. साथ ही, इसे androidx.compose.runtime.saveable पैकेज में ले जाया गया है. (I1366e, b/177338004)
- सार्वजनिक एपीआई से CoreText और CoreTextField हटा दिया गया है
- SelectionContainer के ऐसे ओवरलोड को हटाया गया जो अब काम नहीं करते
- (I99c19)
- अब उन टेस्ट में Compose का इस्तेमाल ज़्यादा आसानी से किया जा सकता है जिनमें WindowManager में सीधे तौर पर जोड़ी/हटाई गई हैरारकी का इस्तेमाल किया जाता है. (Ie81ed, b/175765614)
- Recomposer.current() को हटाया गया. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner की मदद से बनाए गए, विंडो के दायरे वाले Recomposers को लेज़ी तरीके से बनाता है. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)
- Recomposer.runningRecomposers अब प्रोसेस में चल रही कंपोज़िशन की स्थिति को देखने के लिए, read-only RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. Recomposer.current() के बजाय इस एपीआई का इस्तेमाल करें. इसे अब बंद कर दिया गया है. (If8ebe)
- Saver, listSaver(), mapSaver(), और autoSaver को androidx.compose.runtime.savedinstancestate से androidx.compose.runtime.saveable में ले जाया गया (I77fe6)
- EditCommands, AnnotatedString को स्वीकार करता है. हालांकि, यह बदलाव सिर्फ़ एपीआई में किया गया है. एक साथ कई स्टाइल में टेक्स्ट में बदलाव करने की सुविधा अभी लागू नहीं की गई है. (I4c3ea)
- अपटाइम और अवधि को हटा दिया गया है. (Ib9bf4, b/177420019)
- CompositionData.asTree() और इससे जुड़े एपीआई को अलग ui-tooling-data मॉड्यूल में ले जाया गया है. साथ ही, इन्हें एक्सपेरिमेंट के तौर पर मार्क किया गया है (Ic95b8)
- RounderCornerShape, CutCornerShape, और CornerBasedShape पर मौजूद पैरामीटर के नाम बदल दिए गए हैं. पहले इनके नाम left/right थे, लेकिन अब start/end कर दिए गए हैं. ऐसा इसलिए किया गया है, ताकि आरटीएल दिशा में शेप के अपने-आप मिरर होने की सुविधा काम कर सके. AbsoluteRounderCornerShape और AbsoluteCutCornerShape को उन मामलों के लिए पेश किया गया था जहां ऑटो-मिररिंग की ज़रूरत नहीं होती है. (I61040, b/152756983)
Compose कंपाइलर प्लगिन जिस एपीआई को टारगेट करता है उसे रिफ़ैक्टर किया गया है. अब यह कॉंक्रीट क्लास के बजाय इंटरफ़ेस का इस्तेमाल करता है. इंटरफ़ेस अब टाइप पैरामीटर का इस्तेमाल नहीं करता.
यह एक इंटरनल बदलाव है. इससे सोर्स कोड की कंपैटिबिलिटी पर कोई असर नहीं पड़ना चाहिए. हालांकि, यह एक बाइनरी ब्रेकिंग चेंज है. (I3b922, b/169406779)
StringBuilder.deleteAt फ़ंक्शन को गलती से सार्वजनिक कर दिया गया था. इसे हटा दिया गया है (Id6ed9)
गड़बड़ियां ठीक की गईं
- व्यू हाइरारकी में रखे गए ComposeViews, जो किसी अन्य कंपोज़िशन के चाइल्ड हैं, अब अपने पूर्वजों की चाइल्ड कंपोज़िशन होस्ट करते हैं (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)
Font/FontFamily/Typeface के लिए फ़ैक्ट्री फ़ंक्शन में किए गए बदलाव
- कैपिटल लेटर से शुरू होने वाले फ़ैक्ट्री फ़ंक्शन जोड़े गए
- पहले के फ़ैक्ट्री फ़ंक्शन को बंद कर दिया गया है. इनके पहले अक्षर छोटे होते थे
- नए फ़ैक्ट्री फ़ंक्शन, सबक्लास के बजाय FontFamily दिखाते हैं
- सबक्लास के कंस्ट्रक्टर छिपाए गए हैं, ताकि उन्हें सिर्फ़ फ़ैक्ट्री फ़ंक्शन के ज़रिए बनाया जा सके.
- Font.asFontFamily का नाम बदलकर Font.toFontFamily कर दिया गया (I42aa7)
ComposeContentTestRule
को पेश किया गया है. यहComposeTestRule
को बढ़ाता है औरsetContent
को तय करता है.setContent
कोComposeTestRule
से हटा दिया गया है.createEmptyComposeRule()
फ़ैक्ट्री मेथड जोड़ा गया है. यहComposeTestRule
दिखाता है और आपके लिए कोई गतिविधि लॉन्च नहीं करता. इस विकल्प का इस्तेमाल तब करें, जब आपको टेस्ट के दौरान अपनी गतिविधि लॉन्च करनी हो. उदाहरण के लिए,ActivityScenario.launch
(I9d782, b/174472899) का इस्तेमाल करनाanimateAsState को अब animateFooAsState कर दिया गया है. यहां Foo, ऐनिमेट किए जा रहे वैरिएबल का टाइप है. जैसे, फ़्लोट, डीपी, ऑफ़सेट वगैरह (Ie7e25)
इमेज और आइकॉन में, कॉन्टेंट का ब्यौरा देने वाला पैरामीटर जोड़ा गया है. इसका इस्तेमाल, सुलभता सेवाओं (I2ac4c) को जानकारी देने के लिए किया जाता है
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
was called multiple time if the object was used in subcompositions, such asWithConstraints
andScaffold
making the singleonEnter
call guarantee unreliable and it was removed forRememberObserver
.RememberObserver
,onAbandoned
को जोड़ता है. इसे तब कॉल किया जाता है, जबremember
को पास किए गए कॉलबैक सेRememberObserver
इंस्टेंस वापस आ जाता है, लेकिन कंपोज़िशन की स्थिति में इसे याद नहीं रखा जाता. इसलिए, इसे कभी भीonRemembered
कॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कंपोज़िशन को पूरा होने से पहले ही खत्म कर देता है या कंपोज़िशन को इसलिए खारिज कर दिया जाता है, क्योंकि जिस स्थिति के लिए कंपोज़िशन बनाई जा रही थी वह अब मौजूदा नहीं है या अब उसकी ज़रूरत नहीं है. अगर ऊपर दिए गए सिंगल रेफ़रंस वाले सुझाव के बादRememberObserver
का इंस्टेंस, किसी बाहरी संसाधन को ट्रैक कर रहा है, तोonForgotten
औरonAbandoned
, दोनों से पता चलता है कि अब संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट,onRemembered
में शुरू किए गए काम या असाइन किए गए संसाधनों को ट्रैक कर रहा है, तोonAbandoned
को अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकि अगरonRemembered
को कॉल किया जाता है, तोonAbandoned
को कॉल नहीं किया जाएगा. (I02c36)दो या उससे ज़्यादा TextUnit के बीच अंकगणितीय कार्रवाइयों को बंद कर दिया गया है. Int.sp और Int.em जैसे एक्सटेंशन फ़ंक्शन के बजाय, TextUnit.Sp और TextUnit.Em फ़ंक्शन का इस्तेमाल करना बंद कर दिया गया है. (I48369)
जिन लाइब्रेरी में सार्वजनिक संसाधनों के बारे में साफ़ तौर पर नहीं बताया गया है (जैसे, public.xml के ज़रिए), उनमें मौजूद संसाधन अब डिफ़ॉल्ट रूप से निजी होते हैं. (Ia1dcc, b/170882230)
ScrollableColumn/Row को बंद कर दिया गया है. अगर आपको स्क्रोल करने के लिए ज़्यादा कॉन्टेंट दिखाना है, तो LazyColumn के मुकाबले ScrollableColumn का इस्तेमाल करना कम असरदार होता है. ऐसा इसलिए, क्योंकि LazyColumn में सिर्फ़ दिखने वाले एलिमेंट को कंपोज़/मेज़र/ड्रॉ किया जा सकता है. उपयोगकर्ताओं को कम असरदार तरीके से स्क्रोल करने से रोकने के लिए, हमने ScrollableColumn और ScrollableRow को बंद करने का फ़ैसला किया है. इसके बजाय, हम LazyColumn और LazyRow के इस्तेमाल को बढ़ावा देंगे. उपयोगकर्ता अब भी यह तय कर सकते हैं कि उन्हें लेज़ी बिहेवियर की ज़रूरत नहीं है. वे इस तरह सीधे तौर पर मॉडिफ़ायर का इस्तेमाल कर सकते हैं: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
LazyColumn/LazyRow/LazyVerticalGrid के स्कोप के लिए नई
items(count: Int)
फ़ैक्ट्री मेथड.items(items: List)
औरitemsIndexed(items: List)
अब एक्सटेंशन फ़ंक्शन हैं. इसलिए, इनका इस्तेमाल करते समय आपको इन्हें मैन्युअल तरीके से इंपोर्ट करना होगा. ऐरे के लिए नए एक्सटेंशन ओवरलोड:items(items: Array)
औरitemsIndexed(Array)
(I803fc, b/175562574)ImeAction.NoAction के बजाय, कृपया ImeAction.None का इस्तेमाल करें
- कृपया ImeAction.Unspecified (Ie1bcc) के बजाय ImeAction.Default का इस्तेमाल करें
टेस्टिंग में TestCoroutineDispatcher का इस्तेमाल करें (I532b6)
TextInputService.onStateUpdated का नाम बदलकर updateState कर दिया गया है (Id4853)
TransitionDefinition पर आधारित ट्रांज़िशन को बंद कर दिया गया है (I0ac57)
TextUnitType.Inherit को हटा दिया गया है. इसके बजाय, कृपया TextUnitType.Unspecified का इस्तेमाल करें. (I9ff64)
वर्शन 1.0.0-alpha10
13 जनवरी, 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये कमिट शामिल हैं.
नुकसान पहुंचा सकने वाला बदलाव
इंटरनल कंपाइलर एपीआई को फिर से स्ट्रक्चर करने से, कंपोज़िशन के दौरान जनरेट हुए नोड में किए गए बदलावों को बैच किया जा सकता है. ऐसा कंपोज़िशन के "बदलाव लागू करें" फ़ेज़ में किया जाता है. यह फ़ेज़, सभी
@Composable
फ़ंक्शन पूरे होने के बाद शुरू होता है.यह व्यवहार में होने वाला ऐसा बड़ा बदलाव है जिससे ऐप्लिकेशन कोड पर असर पड़ सकता है. ऐसा इसलिए, क्योंकि बदलाव लागू होने तक नोड, इंटरनल और एक्सपेरिमेंटल एपीआई से उपलब्ध नहीं होते. आम तौर पर, इस समस्या को ठीक करने के लिए, ऐसे कोड को
SideEffect
कंपोज़ेबल में रखा जाता है जिसकी डिपेंडेंसी होती है. इससे नोड बनाने और उन्हें शुरू करने के बाद ही कोड को लागू किया जा सकता है. (I018da)
एपीआई में हुए बदलाव
- Modifier.focusOrder() जोड़ा गया है. इसका इस्तेमाल, फ़ोकस ट्रैवर्सल के क्रम को पसंद के मुताबिक सेट करने के लिए किया जा सकता है (I90cf5, b/175899543, b/170155556, b/170155429)
- focusObserver के इस्तेमाल को बंद कर दिया गया है. इसके बजाय, onFocusChanged या onFocusEvent का इस्तेमाल करें (I3ecb9, b/175156387)
- EditOperations API में हुए बदलाव
- EditOperation का नाम बदलकर EditCommand कर दिया गया है
- EditOperation के कॉन्क्रीट इंप्लीमेंटेशन के लिए, कमांड सफ़िक्स जोड़ा गया
- EditCommand अब डेटा क्लास नहीं हैं
- EditOperation.process फ़ंक्शन का नाम बदलकर applyTo कर दिया गया है
- InputEventListener का नाम बदलकर InputEventCallback कर दिया गया है
- (I0a366)
- इस्तेमाल नहीं किए गए PxSquared, PxCubed, PxInverse को हटा दिया गया है. Size.center() को प्रॉपर्टी के तौर पर बदला गया. (I973f7)
- ui-test मॉड्यूल अब टेस्ट किए जा रहे यूज़र इंटरफ़ेस (यूआई) के लिए, Recomposer बनाने की सुविधा को कॉन्फ़िगर कर पाएगा (Ibebd8)
- वेग में बदलाव करके, उसके कॉम्पोनेंट और गणितीय संक्रियाएं शामिल की गई हैं. (Ib0447)
@ExperimentalTesting
का नाम बदलकर@ExperimentalTestApi
कर दिया गया है, ताकि यह इसी तरह के एक्सपेरिमेंटल एपीआई एनोटेशन (Ia4502, b/171464963) के साथ काम कर सके- Color.useOrElse() का नाम बदलकर Color.takeOrElse() कर दिया गया है (Ifdcf5)
- DpInverse, DpSquared, और DpCubed क्लास का इस्तेमाल नहीं किया गया था. इसलिए, उन्हें हटा दिया गया है. (I4d62b)
- Constraints#satisfiedBy का नाम बदलकर isSatisfiedBy कर दिया गया है. (I9cf5c)
- लेआउटनोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (I72fd1)
- Unspecified कॉन्सटेंट वाली इनलाइन क्लास के लिए, isSpecified, isUnspecified, और useOrElse जोड़े गए हैं. (I93f7b, b/174310811)
ComposeView एपीआई को बड़ा करें, ताकि Compose पर आधारित व्यू को रीसाइकल किया जा सके. साथ ही, कंपोज़िशन को डिस्पोज़ किया जा सके, ताकि बाद में उसे फिर से बनाया जा सके. विंडो के स्कोप वाले Recomposer और CompositionReference को इंस्टॉल करने और खोजने के लिए एपीआई जोड़े गए हैं, ताकि चाइल्ड कंपोज़िशन बनाई जा सकें.
[Abstract]ComposeViews की कंपोज़िशन डिस्पोज़ल की रणनीति को कॉन्फ़िगर करने के लिए, ViewCompositionStrategy जोड़ें; डिफ़ॉल्ट व्यवहार, विंडो के अलग होने पर डिस्पोज़ करना है. (I860ab)
Any.identityHashCode() पब्लिक एपीआई (I025d7) हटाया गया
toStringAsFixed API को हटा दिया गया है. इसके बजाय, सीधे तौर पर String.format का इस्तेमाल किया जा सकता है. (Iaba6b)
foundation Strings.kt में टॉगल जोड़ें (I4a5b7, b/172366489)
nativeClass को ui मॉड्यूल में ले जाया गया और इसे इंटरनल बना दिया गया. equals फ़ंक्शन में nativeClass के अपडेट किए गए इस्तेमाल, ताकि इसके बजाय 'is MyClass' का इस्तेमाल किया जा सके. (I4f734)
Modifier.focus() और Modifier.focusRequester() अब काम नहीं करते. इसके बजाय, Modifier.focusModifier() और Modifier.focusReference() का इस्तेमाल करें. (I75a48, b/175160751, b/175160532, b/175077829)
SelectionRegistrar.notifySelectableChange को पेश किया गया है. इससे SelectionManager को Selectable अपडेट की सूचना दी जा सकेगी. (I6ff30, b/173215242)
आउटलाइन.बाउंड्स प्रॉपर्टी जोड़ी गई है, ताकि आउटलाइन लागू करने के अलग-अलग तरीकों के लिए बाउंडिंग रेक्ट हासिल किया जा सके. (I16e74, b/175093504)
TestUiDispatcher को बंद कर दिया गया है. इसके बजाय, Dispatchers.Main का इस्तेमाल करें (Ic171f, b/175385255)
ImeOptions और KeyboardOptions अब डेटा क्लास नहीं हैं (I3c898, b/168684531)
VisualTransformation API में हुए बदलाव
- OffsetMap का नाम बदलकर OffsetMapping कर दिया गया है
- OffsetMapping.identityOffsetMap का नाम बदलकर OffsetMapping.Identity कर दिया गया है
- PasswordTransformation अब डेटा-क्लास नहीं है
- OffsetMapping को उसकी फ़ाइल में ले जाया गया
- (I0bdf3)
DpOffset के लिए, पोज़िशन का नाम बदला गया और getDistance() को हटाया गया (Ib2dfd)
fun Dp.isFinite() को val Dp.isFinite में बदला गया (I50e00)
गड़बड़ियां ठीक की गईं
- Recomposer अब अपनी मौजूदा स्थिति का फ़्लो दिखाता है. इससे इसकी गतिविधि और इससे जुड़े इफ़ेक्ट की गतिविधि को मॉनिटर किया जा सकता है. (Ifb2b9)
- अब keyEvent.nativeKeyEvent के ज़रिए, native keyEvent को ऐक्सेस किया जा सकता है (I87c57, b/173086397)
animate()
को अबanimateAsState()
से बदल दिया गया है. यहT
के बजायState<T>
दिखाता है. इससे परफ़ॉर्मेंस बेहतर होती है, क्योंकि अमान्य होने के दायरे को उस जगह तक सीमित किया जा सकता है जहां State वैल्यू पढ़ी जाती है. (Ib179e)- सेमैंटिक्स रोल एपीआई जोड़ें. साथ ही, क्लिक किए जा सकने वाले, चुने जा सकने वाले, और टॉगल किए जा सकने वाले SemanticsModifier में Role को पैरामीटर के तौर पर जोड़ें. Modifier.progressSemantics को बदला गया है, ताकि Slider भी इसका इस्तेमाल कर सके. (I216cd)
- कोरूटीन पर आधारित नया एपीआई
Animatable
, जो यह पक्का करता है कि इसके ऐनिमेशन एक-दूसरे से अलग हों.- मल्टी-डाइमेंशनल डेके ऐनिमेशन के लिए, नया DecayAnimationSpec
- (I820f2, b/168014930)
वर्शन 1.0.0-alpha09
16 दिसंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- अब KeyEvent.Alt को हटा दिया गया है. इसके बजाय, KeyEvent.isAltPressed का इस्तेमाल करें. (Idd695)
- Modifier.keyInputFilter और Modifier.previewKeyInputFilter अब काम नहीं करते. इसके बजाय, Modifier.onKeyEvent और Modifier.onPreviewKeyEvent का इस्तेमाल करें (Idbf1b, b/175156384)
- Modifier.focusObserver काम नहीं कर रहा. इसके बजाय, Modifier.onFocusChanged या Modifier.onFocusEvent का इस्तेमाल करें (I30f17, b/168511863, b/168511484)
- पॉइंटर इनपुट एपीआई को निलंबित करने के लिए, HandlePointerInputScope का नाम बदलकर AwaitPointerEventScope और handlePointerInput() का नाम बदलकर awaitPointerEventScope() कर दिया गया है. (Idf0a1, b/175142755)
- ऑटोमैटिक भरने वाला एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध है. इसके लिए, ऑप्ट-इन (I0a1ec) करना ज़रूरी है
- FocuSRequester इंस्टेंस बनाने के लिए, डिस्ट्रक्चरिंग डिक्लेरेशन जोड़े गए (I35d84, b/174817008)
- accessibilityLabel का नाम बदलकर contentDescription कर दिया गया है. accessibilityValue का नाम बदलकर stateDescription कर दिया गया है. (I250f2)
- निलंबित करने वाले पॉइंटर इनपुट एपीआई (Ia54d5, b/175142755) से कस्टम इवेंट हटा दिए गए
- SelectionRegistrar में कई नए फ़ंक्शन जोड़े गए हैं. साथ ही, onPositionChange का नाम बदलकर notifyPositionChange कर दिया गया है. (Ifbaf7)
- LayoutNode के ज़्यादा सदस्यों को हमने इंटरनल के तौर पर मार्क किया है (I443c6)
- LayoutInfo को टूलिंग और टेस्टिंग के लिए पेश किया गया था (I9b190)
- AndroidOwner ने इंटरनल टेस्ट के लिए उपलब्ध कराया (Ibcad0, b/170296980)
- ExperimentalPointerInput एनोटेशन (Ia7a24) हटाया गया
- नेस्टेड स्क्रोल सिस्टम जोड़ा गया. ज़्यादा जानकारी के लिए, Modifier.nestedScroll देखें (I36e15, b/162408885)
- subcomposeInto(LayoutNode) को इंटरनल बनाया गया (Id724a)
Applier
इंटरफ़ेस को बदल दिया गया है, ताकि ट्री को ऊपर से नीचे की ओर बनाने के बजाय, नीचे से ऊपर की ओर बनाना आसान हो.insert()
तरीके का नाम बदलकरinsertTopDown()
कर दिया गया है.insertBottomUp()
नाम का एक नया तरीका जोड़ा गया है.लागू करने वाला व्यक्ति,
insertTopDown()
याinsertBottomUp()
का इस्तेमाल करके, उस ट्री में नोड डालता है जिसे वह बदल रहा है. यह इस बात पर निर्भर करता है कि कौनसी कार्रवाई बेहतर तरीके से काम करती है.कुछ ट्री, जैसे कि
LayoutNode
औरView
, को टॉप-डाउन की तुलना में बॉटम-अप तरीके से बनाना ज़्यादा आसान होता है. इस बदलाव से पहले, बॉटम-अप को लागू करने के लिए इंसर्ट के स्टैक की ज़रूरत होती थी. इसे हर उस ऐप्लिकेशन पर कॉपी करना पड़ता था जिसके लिए परफ़ॉर्मेंस के लिए बॉटम-अप कंस्ट्रक्शन की ज़रूरत होती थी. इस बदलाव के साथ,Applier
ओवरराइडinsertBottomUp()
का इस्तेमाल, ट्री को बॉटम-अप तरीके से बनाने के लिए किया जाता है. वहीं,insertTopDown()
का इस्तेमाल, ट्री को टॉप-डाउन तरीके से बनाने के लिए किया जाता है. (Icbdc2)AndroidDialogProperties में dismissOnBackPress और dismissOnClickOutside प्रॉपर्टी जोड़ी गईं. इनसे यह कॉन्फ़िगर किया जा सकता है कि dialog के onDismissRequest लैम्ब्डा को कब शुरू किया जाएगा. (If5e17)
Painter ऑब्जेक्ट को ओपेक तरीके से लोड करने के लिए, painterResource API जोड़ा गया है. ये ऑब्जेक्ट, रास्टर इमेज फ़ॉर्मैट (जैसे कि PNG) या VectorDrawable से लोड किए जा सकते हैं. उपयोगकर्ताओं को अब पहले से यह तय करने की ज़रूरत नहीं है कि किस तरह की ऐसेट का इस्तेमाल करना है. वे इस तरीके को कॉल करके, Painter ऑब्जेक्ट पा सकते हैं. इसका इस्तेमाल Image कंपोज़ेबल या पेंटर मॉडिफ़ायर में किया जा सकता है. (I2c703, b/173818471)
Modifier.clearAndSetSemantics को जोड़ा गया है, ताकि डिसेंडेंट के सेमेंटिक को मिटाया जा सके और नए सेमेंटिक सेट किए जा सकें. (I277ca)
DrawScope के साथ रखने के लिए, ContentDrawScope को ui-graphics मॉड्यूल में ले जाया गया. (Iee043, b/173832789)
स्ट्रोक किए गए शेप को अलग-अलग पैटर्न देने के लिए, PathEffect ग्राफ़िक्स एपीआई लॉन्च किया गया. PathEffect के expect/actual implementation के पक्ष में, NativePathEffect के इस्तेमाल को बंद कर दिया गया है. (I5e976, b/171072166)
Compose में IdlingResource इंटरफ़ेस जोड़े गए हैं. ये Espresso के आइडलिंग रिसॉर्स के Compose के साथ काम करने वाले वैरिएंट के तौर पर जोड़े गए हैं. इन्हें ComposeTestRule (I433f3) की मदद से रजिस्टर और अनरजिस्टर किया जा सकता है
ComposeIdlingResource के ग्लोबल (अन)रजिस्ट्रेशन और ComposeIdlingResource में क्लॉक के ग्लोबल (अन)रजिस्ट्रेशन को हटाया गया (I32660)
गड़बड़ियां ठीक की गईं
- ऑफ़सेट मॉडिफ़ायर में लैम्ब्डा अब फ़्लोट के बजाय IntOffset दिखाता है. (Ic9ee5, b/174137212, b/174146755)
पब्लिक एपीआई से SlotTable, SlotReader, और SlotWriter को हटा दिया गया है. इन्हें पहले InternalComposeAPI के तौर पर मार्क किया गया था. अब ये कंपोज़ मॉड्यूल के इंटरनल हैं.
कंपोज़िशन की जानकारी निकालने के लिए, ui-tooling API की जगह CompositionData और CompositionGroup को जोड़ा गया है. ये सार्वजनिक हैं, लेकिन इनका इस्तेमाल ui-tooling API के बाहर नहीं किया जा सकता. ऐसा इसलिए, क्योंकि ये ui-tooling API को ऐसी जानकारी देते हैं जिसे वह समझता है (I31a9c)
ShaderBrush को फिर से फ़ैक्टर किया गया है, ताकि ड्रॉइंग एनवायरमेंट के साइज़ की जानकारी उपलब्ध होने पर, शेडर इंस्टेंस को लेज़ी तरीके से बनाया जा सके. यह कंपोज़िशन के समय, कंपोज़ेबल के पूरे ड्रॉइंग बाउंड को भरने वाले ग्रेडिएंट तय करने के लिए उपयोगी है. इसके लिए, कस्टम DrawModifier लागू करने की ज़रूरत नहीं होती.
Gradient ऑब्जेक्ट पर फ़ैक्ट्री के तरीकों के पक्ष में, ग्रेडिएंट फ़ंक्शन कंस्ट्रक्टर एपीआई को बंद कर दिया गया है. (I511fc, b/173066799)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed, और LazyRowForIndexed को बंद कर दिया गया है. इसके बजाय, LazyColumn और LazyRow का इस्तेमाल करें (I5b48c)
BuildCompat.isAtLeastR को बंद किया गया (Idb37e)
AnnotatedString बनाने के लिए, buildAnnotatedString फ़ैक्ट्री फ़ंक्शन जोड़ा गया. annotatedString बनाने वाले फ़ंक्शन को बंद कर दिया गया है. (Idfe0b)
वैल्यू को रेडियन में बदलने के लिए, फ़्लोट और डबल पर एक्सटेंशन के तरीके हटा दिए गए हैं. इसे PathParser में एक निजी फ़ंक्शन के तौर पर ले जाया गया है. इसका इस्तेमाल सिर्फ़ इसी जगह पर किया जाता था (I25f52)
वर्शन 1.0.0-alpha08
2 दिसंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- सिमैंटिक कार्रवाई खारिज करें (I2b706) जोड़ें
- DrawModifier API को androidx.compose.ui पैकेज से androidx.compose.ui.draw पैकेज में ले जाया गया. DrawModifierDeprecated.kt फ़ाइल बनाई गई है, ताकि इसमें टाइपएलियास/सहायता करने वाले तरीके शामिल किए जा सकें. इससे, पुराने एपीआई से मौजूदा एपीआई पर माइग्रेट करने में मदद मिलेगी. (Id6044, b/173834241)
- Modifier.drawLayer का नाम बदलकर Modifier.graphicsLayer कर दिया गया है साथ ही, एपीआई के सुझाव के मुताबिक, इससे जुड़ी क्लास को GraphicsLayer में अपडेट कर दिया गया है. (I0bd29, b/173834241)
- placeable.placeWithLayer() और placeable.placeRelativeWithLayer() नाम के नए तरीके जोड़े गए हैं. इनकी मदद से, कस्टम लेआउट और लेआउट मॉडिफ़ायर, ड्राइंग के लिए ग्राफ़िक्स लेयर जोड़कर चाइल्ड को प्लेस कर सकते हैं. इससे हम सबसे पहले रीड्रॉइंग को ऑप्टिमाइज़ कर सकते हैं. इसलिए, जब हमें किसी चाइल्ड को मूव करना होता है, तो हमें उसके कॉन्टेंट को रीड्रॉ नहीं करना पड़ता. दूसरा, हम किसी चाइल्ड के लिए ड्रॉ ट्रांसफ़ॉर्मेशन लागू कर सकते हैं (Ibd8f6, b/170296989, b/171493718, b/173030831)
<T>
को SubcomposeLayout के एलान से हटा दिया गया है. अब इसका इस्तेमाल, टाइप तय किए बिना किया जा सकता है. (Ib60c8)- drawLayer के लिए, Modifier.scale/rotate API जोड़े गए.
Modifier.drawOpacity
का नाम बदलकरModifier.alpha
किया गयाModifier.drawShadow
का नाम बदलकरModifier.shadow
कर दिया गया (I264ca, b/173208140)
- PointerInputData के अपटाइम और पोजीशन फ़ील्ड को नॉन-नलेबल बनाया गया. (Id468a)
- MaterialTheme अब चुनने के हैंडल और चुनने के बैकग्राउंड के लिए सही रंग सेट करता है. नॉन-मटीरियल ऐप्लिकेशन, AmbientTextSelectionColors का इस्तेमाल करके, चुने गए टेक्स्ट के रंगों को अपनी पसंद के मुताबिक बना सकते हैं. (I1e6f4, b/139320372, b/139320907)
- WindowManager.isWindowFocused को जोड़ा गया है. इससे यह पता चलता है कि होस्ट विंडो फ़ोकस में है या नहीं. साथ ही, WindowFocusObserver को जोड़ा गया है. यह onWindowFocusChanged कॉलबैक उपलब्ध कराता है. (I53b2a, b/170932874)
- TransformOrigin API को अपडेट किया गया है, ताकि
pivotFractionX
औरpivotFractionY
कोcomponent1
औरcomponent2
के तौर पर दिखाने के लिए, डिस्ट्रक्चरिंग सिंटैक्स का इस्तेमाल किया जा सके (If43c4, b/173586560) - कंपोज़ेबल लैम्डा पैरामीटर के नाम और पोज़िशन के लिए, लिंट चेक जोड़ा गया है. इससे यह जांच की जा सकेगी कि यह Compose के दिशा-निर्देशों के मुताबिक है या नहीं.
इसके अलावा, कुछ एपीआई को माइग्रेट किया गया है. इनमें से कुछ में, ट्रेलिंग लैम्डा के लिए
children
का इस्तेमाल किया गया था. इन्हेंcontent
में माइग्रेट किया गया है. ऐसा, लिंट चेक और दिशा-निर्देशों के मुताबिक किया गया है. (Iec48e) - यह एपीआई जोड़ा गया है. इससे यह पता चलता है कि कीइवेंट भेजे जाने के दौरान, Alt, Ctrl, Meta या Shift बटन दबाए गए थे या नहीं. (I50ed9)
- नया
Modifier.drawLayer()
ओवरलोड जोड़ा गया. यह नए GraphicsLayerScope पर एक लैम्ब्डा ब्लॉक लेता है. इसमें लेयर के पैरामीटर इस तरह से तय किए जाते हैं कि स्थिति में बदलाव होने पर, रीकंपोज़िशन और रीलआउट को स्किप किया जा सके. DrawLayerModifier अब इंटरनल है. ऐसा इसलिए किया गया है, ताकि इसके लॉजिक को LayoutModifier के placeable.placeWithLayer() तरीके में माइग्रेट किया जा सके (I15e9f, b/173030831) Ambient
सफ़िक्स वाले, बंद किए गए ऐंबिएंट के नाम बदले गए हैं. साथ ही, उन्हें ऐंबिएंट से शुरू होने वाली नई प्रॉपर्टी से बदल दिया गया है. इसके लिए, अन्य ऐंबिएंट और Compose API के दिशा-निर्देशों का पालन किया गया है. (I33440)androidx.compose.ui.text.Typeface
कोandroidx.compose.ui.text.font.Typeface
(Ic2b81) पर ले जाया गया- सेमैंटिक्स आर्ग्युमेंट mergeAllDescendants का नाम बदलकर mergeDescendants कर दिया गया है. (Ib6250)
- ड्रैग करने के जेस्चर का पता लगाने वाला नया डिटेक्टर, जो पॉइंटर इनपुट एपीआई को निलंबित करता है. इसमें ओरिएंटेशन लॉक करना भी शामिल है. (Icef25)
- VectorAsset का नाम बदलकर ImageVector कर दिया गया है VectorAsset को Builder में ले जाया गया है और इसका नाम बदला गया है, ताकि यह API के दिशा-निर्देशों के मुताबिक ImageVector की इनर क्लास बन सके. VectorAssetBuilder का टाइपएलियास जोड़ा गया, ताकि इसे ImageVector.Builder से लिंक किया जा सके. (Icfdc8)
- ImageAsset और इससे जुड़े तरीकों का नाम बदलकर ImageBitmap कर दिया गया है. (Ia2d99)
- PlacementScope के place() के लिए zIndex पैरामीटर जोड़ा गया है, ताकि अब Modifier.zIndex() LayoutModifier के तौर पर काम करे. साथ ही, कोई भी कस्टम लेआउट, प्लेसमेंट ब्लॉक (I711f7, b/171493718) में अपने बच्चों के लिए zIndex सेट कर सके
- फ़ाउंडेशन सिमैंटिक्स प्रॉपर्टी को यूज़र इंटरफ़ेस (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)
गड़बड़ियां ठीक की गईं
- Box के अलाइनमेंट पैरामीटर का नाम बदलकर contentAlignment कर दिया गया है. (I2c957)
- offsetPx मॉडिफ़ायर का नाम बदलकर offset कर दिया गया है. अब ये State के बजाय लैम्डा पैरामीटर ले रहे हैं. (Ic3021, b/173594846)
- TextInputService#onStateUpdated में resetInput पैरामीटर जोड़ा गया (I3e8f5, b/172239032, b/171860947)
- Composable फ़ंक्शन में, Modifier पैरामीटर के लिए लिंट चेक जोड़ा गया. यह लिंट चेक, Compose के दिशा-निर्देशों के मुताबिक पैरामीटर के नाम, रिटर्न टाइप, डिफ़ॉल्ट वैल्यू, और क्रम की जांच करता है. (If493b)
- TestAnimationClock को MonotonicFrameClock से कंट्रोल करने का विकल्प कुछ समय के लिए जोड़ा गया (I1403b, b/173402197)
- Android Typeface रैपर जोड़ा गया.
typeface
फ़ंक्शन के ज़रिए, Android टाइपफ़ेस लोड किया जा सकता है. जैसे,typeface(Typeface.DEFAULT)
.typefaceFromFontFamily()
का नाम बदलकरtypeface()
(I52ab7) भी कर दिया गया है - लिंट चेक जोड़ा गया है. इससे यह पता चलेगा कि मॉडिफ़ायर फ़ैक्ट्री फ़ंक्शन को मॉडिफ़ायर पर एक्सटेंशन के तौर पर तय किया गया है, ताकि उन्हें आसानी से एक साथ जोड़ा जा सके. (I07981)
- ui-test मॉड्यूल और उसके स्टब (I3a7cb) हटाएं
- Recomposer अब EmbeddingContext को स्वीकार नहीं करता है. शेड्यूल करने से जुड़ी ज़रूरी डिपेंडेंसी, effectCoroutineContext से मिलती हैं. FrameManager अब काम नहीं करता. प्लैटफ़ॉर्म इंटिग्रेशन को अपने ग्लोबल स्नैपशॉट हैंडलिंग को शुरू करना चाहिए. (I02369)
- सुलभता नोड को स्टाइल की जानकारी पास करता है. (If5e8d)
- अन्य इकाइयों के साथ एक जैसा रखने के लिए, TextUnit.Inherit का नाम बदलकर TextUnit.Unspecified कर दिया गया है. (Ifce19)
Compose UI वर्शन 1.0.0-alpha07
11 नवंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- ScaleFactor
इनलाइन क्लास को पेश किया गया है. इसका इस्तेमाल, हॉरिज़ॉन्टल और वर्टिकल ऐक्सिस के लिए स्केल फ़ैक्टर को एक-दूसरे से अलग दिखाने के लिए किया जाता है. इससे, नॉन-यूनिफ़ॉर्म स्केलिंग के इस्तेमाल के उदाहरणों को सपोर्ट किया जा सकेगा.
- ContentScale में computeScaleFactor तरीका जोड़ा गया
- ContentScale.FillBounds जोड़ा गया है, ताकि src की सीमाओं को खींचकर डेस्टिनेशन को पूरी तरह से भरा जा सके. इसके लिए, एक जैसी स्केलिंग का इस्तेमाल नहीं किया जाता.
- Size पैरामीटर के साथ ScaleFactor पैरामीटर का हिसाब लगाने के लिए, ऑपरेटर मेथड जोड़े गए.
- (Ic96a6, b/172291582)
- Alignment बनाने के लिए, BiasAlignment और BiasAbsoluteAlignment फ़ैक्ट्री जोड़ी गईं. (Iac836, b/169406772)
- डेवलपर को फ़ोकस ज़बरदस्ती हटाने की अनुमति दें. (I90372)
- Compose में व्यू के लिए एलिवेशन नहीं दिखने की समस्या को ठीक किया गया. (If7782)
- Modifier.drawBehind के साथ नाम रखने के नियम का पालन करने के लिए, ContentDrawScope में onDrawBehind API बनाया गया है. (I4fc3a, b/171955269)
- लेयर एपीआई पर 3D ट्रांसफ़ॉर्मेशन रोटेशनX/rotationY को पूरा करने के लिए, कैमरे की दूरी की सुविधा जोड़ी गई. (I40213, b/171492100)
- कॉलबैक के बिना SelectionContainer जोड़ा गया (Ibfadb)
- ExperimentalSubcomposeLayoutApi एनोटेशन हटा दिया गया है. अब SubcomposeLayout का इस्तेमाल @OptIn (I708ad) को जोड़े बिना किया जा सकता है
- FirstBaseline और LastBaseline को androidx.compose.ui.layout पैकेज में ले जाया गया (Ied2e7)
- drawShadow() मॉडिफ़ायर से ओपैसिटी को हटाया गया, क्योंकि यह भ्रमित करने वाला था. (I82c62, b/171624638)
- MeasureResult को MeasureScope से बाहर ले जाया गया. (Ibf96d, b/171184002)
- लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.layout.ui में ले जाया गया है. (I0fa98, b/170475424)
- FocusState2 को हटाया गया (I686cb, b/168686446)
- ZIndexModifier अब इंटरनल है (I1808b, b/171493718)
- Size पैरामीटर पर lerp मेथड के रिटर्न टाइप को अपडेट किया गया है, ताकि गैर-शून्य साइज़ को लौटाया जा सके. इससे गैर-ज़रूरी बॉक्सिंग से बचा जा सकेगा. (Ib0044)
- TestMonotonicFrameClock जोड़ा गया है. इसका इस्तेमाल, ऐसे कोड की जांच करने के लिए किया जाता है जो कंपोज़ के MonotonicFrameClock पर निर्भर करता है. यह कंपोज़िशन फ़्रेम इवेंट का इंतज़ार करता है. इसके लिए, kotlinx-coroutines-test के runBlockingTest का इस्तेमाल किया जाता है (I4402f)
- GestureScope.localToGlobal को हटाया गया (I15299, b/171462785)
onAllNodesWithSubstring
फ़ाइंडर जोड़ा गया (I81dd7, b/171462889)- androidx.ui.test मॉड्यूल अब काम नहीं करता. कृपया androidx.compose.ui.test और androidx.compose.ui.test.junit4 (I452e8) पर माइग्रेट करें
गड़बड़ियां ठीक की गईं
- captureToBitmap को captureToImage में ले जाया गया. (I86385)
- foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू का इस्तेमाल न करने वाले सामान्य टेक्स्ट एपीआई के लिए, androidx.compose.foundation.BasicText देखें. (If64cb)
- KeyboardOptions को स्वीकार करने के लिए, TextFields को अपडेट करें (Ida7f3)
- KeyboardOptions का नाम बदलकर ImeOptions करें (I82f36)
- KeyboardType और ImeAction को KeyboardOptions में ले जाया गया (I910ce)
- provideDefault को ऐंबियंट वैल्यू देने के विकल्प के तौर पर जोड़ा गया था. इसका इस्तेमाल ऐसी ऐंबियंट वैल्यू तय करने के लिए किया जा सकता है जो सिर्फ़ तब सेट की जाएंगी, जब पहले से कोई ऐंबियंट वैल्यू न दी गई हो. (Id6635, b/171024925)
- BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
- ui-test-junit4 मॉड्यूल जोड़ा गया (Ib91f8)
relativePaddingFrom
का नाम बदलकरpaddingFrom
कर दिया गया है. लेआउट बाउंड से टेक्स्ट बेसलाइन तक की दूरी तय करने में आसानी हो, इसलिएpaddingFromBaseline
मॉडिफ़ायर जोड़ा गया था. (I0440a, b/170633813)- LaunchedTask का नाम बदलकर LaunchedEffect कर दिया गया है, ताकि यह SideEffect और DisposableEffect एपीआई के साथ काम कर सके. सबसे सही तरीकों को बढ़ावा देने के लिए, LaunchedEffect में subject पैरामीटर के बिना इस्तेमाल करने की अनुमति नहीं है. (Ifd3d4)
- कॉन्फ़िगरेशन अपडेट होने पर, फिर से कंपोज़ होने वाले कंपोज़ेबल रिसॉर्स जोड़े गए. (I6387c, b/167352819)
- Recomposer को अब कंस्ट्रक्शन के समय CoroutineContext की ज़रूरत होती है (Ic4610)
- एक से ज़्यादा
Modifier.zIndex()
लागू होने पर,zIndex
वैल्यू का योग करें. इससे पहले, पहले वाले को जीत मिली थी. (Ic514c, b/170623936) - SlotTable को लागू करने के तरीके में अंदरूनी तौर पर बदलाव किए गए हैं. इससे सार्वजनिक एपीआई पर कोई असर नहीं पड़ेगा. (If9828)
- कीबोर्ड में ऑटो करेक्ट IME का विकल्प जोड़ा गया (I57b8d)
- androidx.ui.test को androidx.compose.ui.test में ले जाया गया (I9ffdb)
- सार्वजनिक एपीआई से KeyboardOptions.toImeOptions को हटाया गया. (Ic2e45)
बाहरी योगदान
- androidx.compose.ui:ui-text-android (Ib93fa) के इंटरनल आर्टफ़ैक्ट को पब्लिश करने की सुविधा बंद कर दी गई है
वर्शन 1.0.0-alpha06
28 अक्टूबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Recomposer अब एक CompositionReference और मान्य कंपोज़िशन पैरंट है. अब कम जगहों पर एक्सप्लिसिट रीकंपोज़र की ज़रूरत होगी. (I4036f)
- VectorPainter को बंद कर दिया गया है. अब इसकी जगह rememberVectorPainter का इस्तेमाल किया जाएगा. इससे यह बेहतर तरीके से पता चलेगा कि कंपोज़ेबल एपीआई, कंपोज़िशन के बीच डेटा को बनाए रखने के लिए, 'remember' का इस्तेमाल करता है. (Ifda43)
- Modifier.drawWithCache API को अपडेट किया गया है, ताकि ContentDrawScope को DrawScope के बजाय रिसीवर स्कोप के तौर पर दिखाया जा सके. इससे, लागू करने वालों को ड्रॉइंग कमांड का क्रम बदलने की सुविधा मिलती है. यह ब्लेंडिंग/टिंटिंग के उन मामलों में काम आता है जिनमें कॉन्टेंट पिक्सल को पहले रेंडर किया जाना चाहिए, ताकि ब्लेंड मोड के एल्गोरिदम को सही तरीके से लागू किया जा सके. (Ie7ec8)
- SimpleContainer को PopupTestUtils.kt में ले जाएं (I78c57)
- ConsumedData अब डेटा क्लास नहीं है. ज़्यादा जानकारी के लिए, https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 पर जाएं (I1737f)
- Rtl हैंडल की पोज़िशन ठीक करें. (I6e1e0)
- DrawScope और ContentDrawScope को ऐब्सट्रैक्ट क्लास के बजाय इंटरफ़ेस के तौर पर रीफ़ैक्टर किया गया है
- DrawScope का CanvasDrawScope लागू किया गया
- DrawScope के लागू किए गए फ़ंक्शन को फिर से व्यवस्थित किया गया है, ताकि CanvasScope का इस्तेमाल किया जा सके
- DrawScope के लिए, DrawContext बनाया गया है, ताकि डिपेंडेंसी को रैप किया जा सके
- DrawScope (I56f5e) पर, इस्तेमाल में नहीं रहे तरीकों को हटाया गया
- बदलाव:
PointerInputFilter.onPointerEvent(...)
से रिटर्न वैल्यू हटा दी गई है, क्योंकि पॉइंटर इवेंट में सिर्फ़ इस्तेमाल किया गया डेटा बदला जा सकता है.PointerInputFilter.onPointerEvent(...)
से डेटा वापस पाने के बजाय, अब पास किए गए PointerEvents के इस्तेमाल के डेटा में बदलाव किया जा सकता है. (I6acd0) - MeasureScope और IntrinsicMeasureScope को इंटरफ़ेस बनाया गया. (I1a087, b/170461665)
- AlignmentLine के लिए मर्ज फ़ंक्शन को छिपा दिया गया था. (I9da1a, b/170612900, b/170611568)
- कंपोज़ किए गए मॉडिफ़ायर में, इंस्पेक्टर की जानकारी देने की सुविधा जोड़ी गई (Idee08, b/163494569)
- चुने गए मेन्यू (Ief02b) में, 'सभी चुनें' विकल्प जोड़ा गया
- DrawTransform.rotate को अपडेट किया गया है, ताकि यह दस्तावेज़ से मेल खाने के लिए, डिफ़ॉल्ट पिवट पैरामीटर के तौर पर सेंटर का इस्तेमाल कर सके.
- DrawScope.rotateRad को अपडेट किया गया है, ताकि यह पिवट पॉइंट के लिए ऑफ़सेट का इस्तेमाल कर सके. इससे, यह ट्रांसफ़ॉर्मेशन के अन्य तरीकों से मैच हो पाएगा.
- DrawScope.rotateRad का ऐसा ओवरलोड जिसे अब इस्तेमाल नहीं किया जा सकता. इसमें पिवट के x और y कोऑर्डिनेट के लिए फ़्लोट का इस्तेमाल किया जाता था.
- (Iffcbb, b/170434992)
गड़बड़ियां ठीक की गईं
- 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)
- Android के साथ बेहतर तरीके से काम करने की सुविधा जोड़ी गई है. इसके लिए, उन चाइल्ड Android व्यू को MotionEvents भेजना जारी रखा जाएगा जो
ACTION_DOWN
को छोड़कर, सभी कार्रवाइयों के लिए onTouchEvent के लिए फ़ॉल्स वैल्यू दिखाते हैं (I94c5a, b/170320973) - बॉक्स को इनलाइन फ़ंक्शन बनाया गया था. (Ibce0c, b/155056091)
बाहरी योगदान
AnnotatedString.capitalize
औरAnnotatedString.decapitalize
के लिए अलग-अलग स्थान-भाषाओं का इस्तेमाल किया जा सकता है (I4aa7f)
वर्शन 1.0.0-alpha05
14 अक्टूबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- निरीक्षक की जानकारी देने के लिए डीएसएल जोड़ें (Ic9a22)
- LongPress को टेक्स्ट में ले जाएं. (Iff2bc)
- Experimental Modifier.pointerInput suspending input modifier (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)
Owner में hasPendingMeasureOrLayout प्रॉपर्टी जोड़ी गई है. इससे यह पता चलता है कि Owner के पास लेआउट से जुड़ा कोई काम बाकी है या नहीं. (I3d9f8, b/169038599)
प्रोग्राम के हिसाब से फ़ोकस हटाने के लिए एपीआई जोड़ा गया (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
को हटा दिया गया है. इसकी जगहPointerInputFilter.onPointerEvent(...)
का इस्तेमाल किया जाना चाहिए. (I6f04a)साइज़ में बदलाव
- Removed Size.getFlipped
- Removed Size.rem
- Size.truncDiv (Ief44d, b/169790720) को हटाया गया
इनलाइन क्लास के लिए, सेंटिनल वैल्यू को स्टैंडर्ड बनाने के लिए, Color.Unset का नाम बदलकर Color.Unspecified कर दिया गया है. ऐसा इसलिए किया गया है, ताकि यह अन्य इनलाइन क्लास (I97611, b/169797763) के साथ काम कर सके
TextOverflow.None को जोड़ा गया है. जब ओवरफ़्लो की वैल्यू None होती है, तब टेक्स्ट अब ओवरफ़्लो को मैनेज नहीं करेगा. साथ ही, यह LayoutNode को अपने साइज़ की जानकारी देगा. (I175c9, b/158830170)
एपीआई में एक जैसा नाम रखने के लिए, AnnotatedString.Builder.addStringAnnotation में मौजूद स्कोप पैरामीटर का नाम बदलकर टैग कर दिया गया है. (I7c8cb)
गड़बड़ियां ठीक की गईं
- हर स्क्रोल पर सबकंपोज़िशन में कम काम करके, LazyColumn/Row की स्क्रोलिंग परफ़ॉर्मेंस को बेहतर बनाया गया है. Composition क्लास के लिए, नया hasInvalidations() तरीका जोड़ा गया है. Recomposer के hasPendingChanges() तरीके का नाम बदलकर hasInvalidations() कर दिया गया है (Ib2f32, b/168293643, b/167972292, b/165028371)
- Float.POSITIVE_INFINITY के बजाय, अपडेट किए गए Size.Unspecified पैरामीटर को Float.NaN पर सेट किया गया है. Painter के लागू किए गए अपडेट. इनसे यह जांच की जा सकती है कि साइज़ की वैल्यू, Size.Unspecified के साथ-साथ नॉन-फ़ाइनल साइज़ के हिसाब से सही है या नहीं. (I95a7e)
- कस्टम लेआउट में place() कॉल का क्रम अब चाइल्ड विजेट के ड्रॉइंग ऑर्डर को तय करता है (Ibc9f6)
- ऐक्सेसिबिलिटी के लिए, AnnotatedString को SpannableString में बदलने की सुविधा. (Ief907)
- Android की उन क्लास के लिए स्टब जोड़े गए हैं जो पुराने प्लैटफ़ॉर्म पर हैं, ताकि जब भी हो सके रिफ़्लेक्शन का इस्तेमाल न किया जाए. (Ia1790)
- बग ठीक किया गया: अगर सॉफ़्टवेयर कीबोर्ड दिखने की वजह से ऐप्लिकेशन ट्रांसलेट करता है, तो पॉइंटर इनपुट कोऑर्डिनेट गलत हो जाते थे. (Ic4cec, b/163077821)
वर्शन 1.0.0-alpha04
1 अक्टूबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- OwnerScope जोड़ा गया है, ताकि लेआउट और ड्राइंग के ऑब्ज़र्वेशन स्कोप को इकट्ठा किया जा सके. ऐसा तब किया जाता है, जब वे अब मान्य नहीं रहते. (Ic4cf8)
- कॉन्टेंट के लेआउट को फिर से मेज़र किए जाने पर कॉलबैक पाने के लिए, OnRemeasuredModifier और onSizeChanged() को जोड़ा गया है. साथ ही, साइज़ में बदलाव होने पर कॉलबैक पाने के लिए, onSizeChanged() को जोड़ा गया है. (I657cf, b/154108792)
- लंबे समय तक दबाकर रखने की सुविधा के लिए, सिमैंटिक ऐक्शन जोड़ें (I6281b, b/156468846)
- FocusManager को प्राइवेट बनाया गया. (I7872f)
DrawModifier पर वैकल्पिक प्रॉपर्टी जोड़ने के बजाय, DrawCacheModifier को लागू करने के लिए अपडेट किया गया.
अलग-अलग तरीकों के लिए अपडेट किया गया दस्तावेज़ (Ibd166)
ऑब्जेक्ट बनाने से बचने के लिए, TextRange को इनलाइन बनाएं. (Id034b)
PlacementScope#parentWidth और PlacementScope#parentLayoutDirection को अब कस्टम लेआउट के प्लेसमेंट ब्लॉक से नहीं पढ़ा जा सकता. (Icc1ae, b/168295623)
सिमैंटिक्स प्रॉपर्टी में AccessibilityScrollState जोड़ें. (Ifeda9)
Modifier.drawWithCache को पेश किया गया है. इससे एक ऐसा ड्राइंग ऑब्जेक्ट बनाया जा सकता है जो साइज़/स्टेट की जानकारी पर निर्भर करने वाली डिपेंडेंसी को शर्तों के हिसाब से फिर से बनाता है (I376dc)
ParagraphConstraints को हटा दिया गया है. चौड़ाई की वैल्यू अब सीधे तौर पर पैराग्राफ़ को पास की जाती है. (Ica712)
गड़बड़ियां ठीक की गईं
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- स्केल और रोटेशन के लिए अपडेट किए गए ट्रांसफ़ॉर्मेशन एपीआई, DrawScope और DrawTransform में x/y कोऑर्डिनेट के लिए अलग-अलग फ़्लोट पैरामीटर के बजाय, पिवट कोऑर्डिनेट को दिखाने के लिए एक ही ऑफ़सेट पैरामीटर का इस्तेमाल करते हैं
- Rect.expandToInclude और Rect.join तरीकों को हटाया गया
- रेडियस के दस्तावेज़ को अपडेट किया गया है. इसमें एलिप्टिकल के साथ-साथ ओवल भी शामिल किया गया है
- दस्तावेज़ जोड़ा गया है. इससे पता चलता है कि इनलाइन रेडियस क्लास के लिए, सार्वजनिक कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाना चाहिए. इसके बजाय, रेडियस ऑब्जेक्ट को उनके फ़ंक्शन कंस्ट्रक्टर के ज़रिए इंस्टैंटिएट किया जाना चाहिए
- RoundRect API हटा दिए गए हैं, ताकि topRight, bottomRight, bottomCenter वगैरह के बारे में क्वेरी की जा सके
- Rect.shift को Rect.translate के पक्ष में बंद कर दिया गया है
- RoundRect.grow और Rect.shrink एपीआई हटा दिए गए हैं
- RoundRect.outerRect का नाम बदलकर Rect.boundingRect किया गया
- RoundRect.middleRect/tallMiddleRect/wideMiddleRect और Rect.isStadium तरीके हटा दिए गए हैं
- RoundRect.longestSide का नाम बदलकर RoundRect.maxDimension कर दिया गया है
- RoundRect.shortestSide का नाम बदलकर RoundRect.minDimension कर दिया गया है
- RoundRect.center को फ़ंक्शन के बजाय प्रॉपर्टी के तौर पर बदला गया
- RoundRect कंस्ट्रक्टर को अपडेट किया गया है, ताकि वह x/y रेडियस वैल्यू के लिए अलग-अलग पैरामीटर के बजाय, रेडियस प्रॉपर्टी का इस्तेमाल कर सके
- ऐसे साइज़ एपीआई हटा दिए गए हैं जो यह मानते थे कि यह एक आयत है और इसका मूल 0,0 पर है
- Radius में डिस्ट्रक्टिंग एपीआई जोड़ा गया
- RoundRect एक्सटेंशन फ़ंक्शन को प्रॉपर्टी में माइग्रेट किया गया
- (I8f5c7, b/168762961)
- foundation.Box अब काम नहीं करता. इसके बजाय, कृपया foundation.layout.Box का इस्तेमाल करें. (Ie5950, b/167680279)
- स्टैक का नाम बदलकर Box कर दिया गया है. compose.foundation.layout में मौजूद नए Box के पक्ष में, पहले से मौजूद Box को बंद कर दिया जाएगा. नए बॉक्स में, एक से ज़्यादा आइटम होने पर उन्हें एक के ऊपर एक रखा जाता है. यह पिछले बॉक्स से अलग है, जो कॉलम की तरह काम करता था. (I94893, b/167680279)
- बॉक्स डेकोरेशन पैरामीटर अब काम नहीं करते. अगर आपको अपने बॉक्स में डेकोरेशन/पैडिंग चाहिए, तो इसके बजाय मॉडिफ़ायर का इस्तेमाल करें (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- कई ग्राफ़िक्स एपीआई अपडेट किए गए
- DrawScope API को अपडेट किया गया है. इनमें स्कोप किए गए ट्रांसफ़ॉर्मेशन के तरीके शामिल हैं. इससे यह पता चलता है कि ट्रांसफ़ॉर्मेशन सिर्फ़ कॉलबैक के अंदर लागू होता है और कॉलबैक शुरू होने के बाद इसे हटा दिया जाता है
- clipPath के दस्तावेज़ को अपडेट किया गया है, ताकि गोल आयत के बजाय Path का रेफ़रंस दिया जा सके
- clipPath में right पैरामीटर के लिए, दस्तावेज़ में स्पेसिंग से जुड़ी समस्या ठीक की गई
- DrawScope.drawCanvas का नाम बदलकर drawIntoCanvas कर दिया गया है. साथ ही, साइज़ पैरामीटर हटा दिया गया है
- इनसेट तरीके में dx/dy पैरामीटर का नाम बदलकर हॉरिज़ॉन्टल और वर्टिकल कर दिया गया है
- चारों सीमाओं के लिए एक जैसी इनसेट वैल्यू देने वाला इनसेट ओवरलोड जोड़ा गया
- इनसेट करने के तरीके के बारे में दस्तावेज़ हटा दिया गया है. इसमें बताया गया था कि इनसेट को चारों साइड पर लागू किया जाएगा
- Rect क्लास के लिए अपडेट किया गया दस्तावेज़
- kdoc स्टाइल से मेल खाने के लिए, आयत के पैरामीटर पर टिप्पणियां अपडेट की गईं
- Rect.join और Rect.expandToInclude को हटाया गया
- Rect.translate(offset) के लिए ओवरलोड बनाया गया और Rect.shift को बंद कर दिया गया
- (If086a, b/167737376)
- @VisibleForTesting के साथ एनोटेट किए गए rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled, और textInputServiceFactory को इंटरनल एपीआई बनाएं और उनके kdoc को छिपाएं (I554eb, b/168308412)
- डिफ़ॉल्ट रूप से चुने गए विकल्प को बंद करने और अनचाहे व्यवहार से बचने के लिए, SelectionContainer को सबसे ऊपर से हटाएं. इसके बजाय, SelectionContainer का इस्तेमाल करके, उस कॉन्टेंट को रैप किया जा सकता है जिसे चुना जाना है. (I8dfe0, b/158459594)
वर्शन 1.0.0-alpha03
16 सितंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- आगे/पीछे की ओर स्क्रोल करने की सिमैंटिक कार्रवाइयों को हटाएं. AccessibilityRangeInfo में चरण जोड़े गए. (Ia47b0)
onInvalidate()
कोOwner
से हटाया गया --OwnedLayer
अमान्य होने की समस्या को ठीक करता है. (Ica72b, b/162061312)Size API से, ऑफ़सेट पैरामीटर का इस्तेमाल करने वाले ऑपरेटर मेथड हटा दिए गए हैं. इन कार्रवाइयों के नतीजे साफ़ तौर पर नहीं दिखते. साथ ही, इनके नतीजे का टाइप भी उम्मीद के मुताबिक नहीं होता. उदाहरण के लिए, क्या साइज़ - ऑफ़सेट से, अंतर के साथ ऑफ़सेट या साइज़ का नतीजा मिलना चाहिए?
Size क्लास में, बंद किए गए तरीकों को भी हटाया गया है. (Iec902, b/166514214)
गड़बड़ियां ठीक की गईं
- LazyColumn के आइटम को कभी-कभी गलत तरीके से ड्रॉ करने की समस्या को ठीक किया गया है. इससे कुछ मामलों में क्रैश भी हो रहे थे. (Ibcf17, b/163066980, b/165921895)
- DpConstraints और इसका इस्तेमाल करने वाले एपीआई अब काम नहीं करते. (I90cdb, b/167389835)
createAndroidComposeRule
औरAndroidInputDispatcher
कोandroidx.ui.test.android
सेandroidx.ui.test
में ले जाया गया (Idef08, b/164060572)- लेआउट एपीआई में, ग्रेविटी के इस्तेमाल को अलाइन या अलाइनमेंट के तौर पर लगातार रीनेम किया गया. (I2421a, b/164077038)
- ComposeTestRule में addedOnNode और अन्य ग्लोबल तरीके जोड़े गए हैं, क्योंकि मौजूदा ग्लोबल तरीके बंद होने वाले हैं. (Ieae36)
वर्शन 1.0.0-alpha02
2 सितंबर, 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- लेआउटनोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक हटाएं. (If654e, b/166106882)
- वेक्टर ग्राफ़िक्स पाथ पर filltype पैरामीटर के लिए सहायता जोड़ी गई है, ताकि evenOdd या NonZero पाथ फ़िल नियमों के मुताबिक आकृतियों के कटआउट बनाए जा सकें. (I43dd2)
- अपटाइम और वेलोसिटी अब इनलाइन क्लास (I48f4a) हैं
- अवधि अब एक इनलाइन क्लास (I565eb) है
- लेआउटनोड की सीमाओं में बदलाव होने पर, मालिक को सूचना देने के लिए कॉलबैक जोड़ें. (Ic40b3)
उस समस्या को ठीक किया गया है जिसमें ऑफ़सेट और रेडियस के साथ Rect फ़ंक्शन कंस्ट्रक्टर, Rect को बाएं, दाएं, ऊपर, नीचे के क्रम में बनाता था. हालांकि, इसे बाएं, ऊपर, दाएं, नीचे के क्रम में बनाना चाहिए.
Rect में, फ़ंक्शन कंस्ट्रक्टर के पक्ष में, बंद किए गए कंपैनियन तरीकों को हटा दिया गया है.
Rect.kt में तरीकों की पुष्टि करने के लिए टेस्ट जोड़े गए (I08460, b/165822356)
गड़बड़ियां ठीक की गईं
- बदलाव किए जा सकने वाले रेक्टैंगल, MutableRect को जोड़ा गया. (I71bd2, b/160140398)
- Matrix4 को Matrix से बदल दिया गया है. vectormath पैकेज के अन्य सभी हिस्सों को हटा दिया गया है. (Ibd665, b/160140398)
कंपोज़ेबल फ़ंक्शन को कॉल करने के तरीके में बदलाव किया गया है. यह बाइनरी ब्रेकिंग चेंज है. Compose कंपाइलर प्लगिन के इस वर्शन के साथ काम करने के लिए, सभी लाइब्रेरी को फिर से कंपाइल करना होगा.
इस बदलाव से, सोर्स लेवल पर कोई बड़ा बदलाव नहीं हुआ है. ऐसा इसलिए, क्योंकि सिर्फ़ कंपाइलर एपीआई में बदलाव किया गया है. इसके लिए, ऑप्ट इन करना ज़रूरी है. (I7afd2, b/158123185)
क्रैश होने की समस्या को ठीक किया गया है. यह समस्या तब हो सकती है, जब PointerInputFilter को डिस्पैच करने की वजह से, PointerInputFilter को तुरंत हटा दिया जाता है. (I58f25)
वर्शन 1.0.0-alpha01
26 अगस्त, 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये कमिट शामिल हैं.
वर्शन 0.1.0-dev
वर्शन 0.1.0-dev17
19 अगस्त, 2020
androidx.compose.ui:ui-*:0.1.0-dev17
रिलीज़ हो गया है. वर्शन 0.1.0-dev17 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
emitView
का अब इस्तेमाल नहीं किया जा सकता. अगर हो सके, तो Compose में व्यू दिखाने के लिएAndroidView
का इस्तेमाल करें. ध्यान दें कि आने वाले समय में, व्यू और व्यूग्रुप को सीधे तौर पर कंपोज़ करने की सुविधा काम नहीं करेगी. ऐसा तब तक नहीं होगा, जब तक ये कंपोज़िशन ट्री में लीफ़ न हों. ऐसा तब किया जा सकता है, जब AndroidView का इस्तेमाल किया जा रहा हो. (I29b1e, b/163871221)FocusState2
अब काम नहीं करता. इसेFocusState
से बदल दिया गया है (Ia8b79, b/160822876, b/160923332)- AndroidView के बंद किए गए ओवरलोड हटा दिए गए हैं. (I946b9, b/163802393)
- कस्टम इवेंट अब यह एलान कर सकते हैं कि उनके एक या उससे ज़्यादा सेटर को स्किप किया जा सकता है. साथ ही, उन्हें इवेंट से अलग करके फिर से कंपोज़ किया जा सकता है. (Ibbd13)
वेक्टर क्लास को अब डेटा क्लास नहीं माना जाएगा, क्योंकि कंपोज़िशन के लिए एक ही ऑब्जेक्ट इंस्टेंस का इस्तेमाल किया जाता है.
VectorPainter के लिए mutableStateOf फ़्लैग जोड़ा गया है, ताकि वेक्टर के कॉन्टेंट में बदलाव होने पर, उसे फिर से ड्रा किया जा सके.
VectorComponent इंस्टेंस को फिर से फ़ैक्टर किया गया है, ताकि इसे VectorPainter का हिस्सा बनाया जा सके. ऐसा इसलिए किया गया है, क्योंकि इसे अलग-अलग कंपोज़िशन में फिर से इस्तेमाल किया जाता है.
GroupComponent और PathComponent को अपडेट किया गया है, ताकि उनके नाम वाले फ़ील्ड में बदलाव किया जा सके (Ieae45, b/151378808)
onChildPositioned
औरOnChildPositionedModifier
को हटाया गया. डेवलपर को इसके बजाय, चाइल्ड लेआउट परonPositioned
औरOnPositionedModifier
का इस्तेमाल करना चाहिए. (I4522e, b/162109766)ऑफ़सेट को इनलाइन क्लास (Iaec70) बना दिया गया है
SelectionContainer में मॉडिफ़ायर पैरामीटर जोड़ा गया (I4aada, b/161487952)
डेप्रिकेट किए गए FocusModifier को हटाया गया (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
mergePolicy
लैंबडा कोSemanticsPropertyKey
में जोड़ा गया. इसका इस्तेमाल, mergeAllDescendants सिमैंटिक के लिए कस्टम नीति तय करने के लिए किया जा सकता है. डिफ़ॉल्ट नीति के तहत, अगर पैरंट वैल्यू मौजूद है, तो उसका इस्तेमाल किया जाता है. अगर पैरंट वैल्यू मौजूद नहीं है, तो चाइल्ड वैल्यू का इस्तेमाल किया जाता है. (Iaf6c4, b/161979921)Constraints अब एक इनलाइन क्लास (I88736) है
FocusManager जोड़ा गया है. यह AndroidComposeView से फ़ोकस करने के सामान्य लॉजिक को हटाता है (I528ef, b/161487952, b/162206799)
ऐल्फ़ा रिलीज़ के लिए, PointerEventPass के अपडेट किए गए नाम. (Ifda6f)
IntOffset अब एक इनलाइन क्लास (Iac0bf) है
IntSize अब एक इनलाइन क्लास (I2bf42) है
PlacementScope.placeAbsolute()
का नाम बदलकरPlacementScope.place()
कर दिया गया है. साथ ही, पिछलेPlacementScope.place()
का नाम बदलकरPlacementScope.placeRelative()
कर दिया गया है. इस वजह से,PlacementScope.place()
तरीके से अब दाएं से बाएं लिखे जाने वाले कॉन्टेक्स्ट में, अपने-आप पोज़िशन नहीं दिखेगी. अगर आपको ऐसा करना है, तो इसके बजायPlacementScope.placeRelative()
का इस्तेमाल करें. (I873ac, b/162916675)AlertDialog अब बटन के लिए FlowRow का इस्तेमाल करता है (I00ec1, b/161809319, b/143682374)
कुछ टेस्ट यूटिलिटी को गैर-सार्वजनिक बना दिया गया है, क्योंकि वे सही जगह पर नहीं हैं. इसे आने वाले समय में सार्वजनिक किया जाएगा. (I32ab1)
पॉइंटर इनपुट कोड को फिर से व्यवस्थित किया गया है. (Ie3f45)
Rect के पक्ष में PxBounds को बंद कर दिया गया है. PxBounds के सभी इस्तेमाल को rect से अपडेट किया गया है. साथ ही, माइग्रेशन में मदद करने के लिए, प्रॉपर डेप्रिकेट/रिप्लेस के साथ एनोटेशन जोड़े गए हैं. (I37038, b/162627058)
अब सेवा में नहीं है/अब काम नहीं करता KeyEvent2 को हटाया गया. इसके बजाय, KeyEvent का इस्तेमाल करें. (Ied2d0, b/162097587)
KeyEvent में एक यूनिकोड प्रॉपर्टी होती है. इसका इस्तेमाल, तय की गई कुंजी और मेटा की स्टेट कॉम्बिनेशन (If3afc) से जनरेट किए गए यूनिकोड वर्ण को पाने के लिए किया जा सकता है
DelayUp कस्टम इवेंट और उससे जुड़ी क्लास को ऑप्ट इन एपीआई बनाया गया है, क्योंकि इसमें बदलाव होने की संभावना है. (I56d6f)
अब ज़रूरी नहीं रह गई दो PointerEventPasses को हटा दिया गया है. (I3dd9d)
Paragraph.paint में पैरामीटर color, shadow, और TextDecoration जोड़ें. यह फ़ंक्शन, Paragraph को बार-बार बनाने से बचने के लिए काम का है. (I81689)
गड़बड़ियां ठीक की गईं
- TextField से onFocusChanged कॉलबैक हटा दिए गए हैं. इसके बजाय, Modifier.focusObserver का इस्तेमाल करें. (I51089, b/161297615)
- Modifier.drawBorder को बंद कर दिया गया है. इसके बजाय, Modifier.border का इस्तेमाल करें. Border डेटा क्लास को BorderStroke से बदल दिया गया है (I4257d, b/158160576)
FrameManager के उन कॉल को हटा दिया गया है जो अब इस्तेमाल में नहीं हैं.
इंटरनल कंपोज़ एपीआई में बदलाव किया गया है, ताकि
mutableStateof()
(I80ba6) जैसे स्टेट ऑब्जेक्ट को ट्रैक करने के लिए, ओवरहेड की मात्रा को कम किया जा सकेVerticalScroller और HorizontalScroller को हटा दिया गया है. इसके बजाय, ScrollableColumn/Row का इस्तेमाल करें. Modifier.drawBackground को हटा दिया गया है. Modifier.background का इस्तेमाल करें (I73b0d, b/163019183)
ऐसी समस्या को ठीक किया गया है जिसमें for लूप के अंदर, स्थिति को सेव करने वाली किसी चीज़ का इस्तेमाल करने पर ऐप्लिकेशन क्रैश हो जाता था. अब savedInstanceState() में एक ही कुंजी का इस्तेमाल किया जा सकता है. UiSavedStateRegistry का एपीआई, इस नई ज़रूरत के हिसाब से बदल दिया गया है (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
state { ... }
कंपोज़ेबल को अब बंद कर दिया गया है. इसके बजाय,remember { mutableStateOf(...) }
को साफ़ तौर पर कॉल करने की सुविधा उपलब्ध है. इससे, एपीआई के कुल सर्फ़ेस और स्टेट मैनेजमेंट के लिए कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी डेलिगेशन के लिएby mutableStateOf()
पैटर्न से मेल खाता है. (Ia5727)RRect का नाम बदलकर RoundRect कर दिया गया है, ताकि यह Compose के नाम रखने के पैटर्न के हिसाब से बेहतर तरीके से काम कर सके 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 View लागू किया गया हो. (Ieb08c)
- इस्तेमाल में नहीं रहे टैग मॉडिफ़ायर को हटा दिया गया है. इसके बजाय, कृपया layoutId का इस्तेमाल करें. (Idaa05, b/162023919)
- दाएं से बाएं की ओर लिखे जाने वाले टेक्स्ट के लिए, एपीआई अपडेट कर दिए गए हैं. LayoutDirectionAmbient को जोड़ा गया है. इसका इस्तेमाल लेआउट की दिशा को पढ़ने और बदलने के लिए किया जा सकता है. Modifier.rtl और Modifier.ltr को हटा दिया गया है. (I080b3)
- वेक्टर ग्राफ़िक में पाथ ट्रिम करने की सुविधा जोड़ी गई (Ie16c9, b/158188351)
- Modifier.layout() जोड़ा गया है. इससे कस्टम लेआउट मॉडिफ़ायर आसानी से बनाया जा सकता है (I73b69, b/161355194)
- नया AndroidView API जोड़ा गया है और मौजूदा एपीआई को बंद कर दिया गया है. (I5bcfd)
- Modifier.plus का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से क्रम का ज़्यादा मज़बूत सिग्नल मिलता है. साथ ही, इसमें
Modifier.padding().background() + anotherModifier
टाइप करने की अनुमति नहीं है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964) - व्यू हैरारकी में Compose कॉन्टेंट को होस्ट करने के लिए, [Abstract]ComposeView व्यू सबक्लास जोड़ें. (I46357)
Row
औरColumn
अब इनलाइन फ़ंक्शन हैं. इससे, इन्हें इस्तेमाल करने का ओवरहेड काफ़ी कम हो जाता है. (I75c10)- SubcomposeLayout को जोड़ा गया है. यह एक लो लेवल प्रिमिटिव है. इसकी मदद से, मेज़रमेंट के दौरान चाइल्ड कॉम्पोनेंट बनाए जा सकते हैं. ऐसा तब किया जाता है, जब हमें सबट्री कंपोज़िशन के लिए कुछ ऐसी वैल्यू का इस्तेमाल करना हो जो मेज़रमेंट के दौरान ही उपलब्ध होती हैं. उदाहरण के लिए, WithConstraints को SubcomposeLayout का इस्तेमाल करके लागू नहीं किया जाता है. (I25cc8)
- Compose हैरारकी के रूट के हिसाब से SemanticsNode की पोज़िशन पाने के लिए
SemanticsNode.positionInRoot
जोड़ा गया (Icdf26, b/161336532) - Android से Compose और फिर वापस Android में MotionEvents पास किए गए. (I14be8, b/158034713)
- ड्रॉपडाउन पॉप-अप हटा दिया गया है. (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 करें
- उपयोगकर्ताओं को अपने Canvas इंस्टेंस बनाने में मदद करने के लिए, nativeCanvas तरीके को Canvas इंटरफ़ेस से हटा दिया गया है
- DrawScope को रिफ़ैक्टर करने के लिए, EmptyCanvas क्लास का स्टब बनाया गया है, ताकि इसे lateinit के बजाय नॉन-नल पैरामीटर बनाया जा सके. साथ ही, यह पक्का किया जा सके कि फ़ील्ड नॉन-नल हो
- ClipOp एनम के नाम बदलकर, उन्हें पास्कल केस में कर दिया गया है
- FilterQuality enum का नाम बदलकर, पास्कल केस में कर दिया गया है
- StrokeJoin enum के नाम बदलकर, उन्हें पास्कल केस में बदला गया
- PointMode enums का नाम बदलकर, पास्कल केस में रखा गया
- PaintingStyle enum का नाम बदलकर, Pascal Case कर दिया गया है
- PathFillType enum का नाम बदलकर, पास्कल केस में किया गया
- StrokeCap enum का नाम बदलकर पास्कल केस किया गया
- DrawCache को लागू करने की सुविधा को अपडेट किया गया है, ताकि अब lateinit पैरामीटर का इस्तेमाल न किया जा सके
- DrawScope को अपडेट किया गया है, ताकि fillPaint और strokePaint इंटरनल पैरामीटर के लिए लेज़ी डेलिगेशन का इस्तेमाल न किया जा सके
- इमेज कंपोज़ेबल को अपडेट किया गया है, ताकि कम ओवरहेड के लिए Box का इस्तेमाल न करना पड़े
- @Immutable एनोटेशन के लिए, आउटलाइन क्लास को अपडेट किया गया
- हर पाथ के निर्देश के लिए, @Immutable एनोटेशन वाले PathNode को अपडेट किया गया है
- वेक्टर सबकंपोज़िशन को अपडेट किया गया है, ताकि समानता के लिए ज़रूरत से ज़्यादा शर्तों की जांच को हटाया जा सके. ऐसा इसलिए, क्योंकि कंपोज़ पहले से ही उन्हें हैंडल करता है
- फ़ंक्शन कंस्ट्रक्टर के पक्ष में, Rect कंपैनियन कंस्ट्रक्टर के तरीकों को बंद कर दिया गया है
- @Immutable और @Stable API के साथ, ब्रश क्लास और फ़ंक्शन कंस्ट्रक्टर अपडेट किए गए
- VertexMode enum को PascalCase में अपडेट किया गया
- DrawScope की selectPaint विधि को अपडेट किया गया है, ताकि अगर स्ट्रोक के पैरामीटर बदल गए हैं, तो पेंट पर उन्हें शर्तों के साथ बदला जा सके
- डिस्ट्रक्चरिंग एपीआई जोड़ने के लिए, अपडेट किया गया साइज़. UnspecifiedSize का नाम बदलकर Unspecified कर दिया गया है. साथ ही, इस्तेमाल न होने वाले तरीकों को हटा दिया गया है
- Compose के BlendMode API के इस्तेमाल को अपडेट किया गया है, ताकि एपीआई लेवल के आधार पर Android फ़्रेमवर्क के BlendModes और PorterDuff मोड के बीच सही तरीके से मैप किया जा सके. BlendMode#isSupported API को पेश किया गया है. यह एक क्वेरी के तौर पर काम करता है. इससे यह पता चलता है कि डिवाइस पर BlendMode काम करता है या नहीं. (I0ef42)
- LazyItemScope को Lazy लिस्ट के itemContent पैरामीटर के लिए जोड़ा गया था. यह पैरंट के ज़्यादा से ज़्यादा साइज़ को भरने के लिए मॉडिफ़ायर उपलब्ध कराता है. इससे उस स्थिति में मदद मिलती है, जब आइटम को व्यूपोर्ट और रेगुलर Modifier.fillMaxSize() को भरना होता है. हालांकि, आइटम को इनफ़िनिटी कंस्ट्रेंट के साथ मेज़र किया जाता है, इसलिए यह काम नहीं करता. (Ibd3b2, b/162248854)
SemanticsNodeInteraction.performPartialGesture
को हटा दिया गया है. इसके बजाय,SemanticsNodeInteraction.performGesture
का इस्तेमाल करें. (Id9b62)LazyColumnItems
का नाम बदलकरLazyColumnFor
कर दिया गया है.LazyRowItems
का नाम बदलकरLazyRowFor
कर दिया गया (I84f84)foundation.shape.corner
पैकेज कोfoundation.share
(I46491, b/161887429) में बदल दिया गया हैAndroidComposeTestRule
का नाम बदलकरcreateAndroidComposeRule
कर दिया गया. (I70aaf)TextLayoutResult
में ज़्यादा एपीआई जोड़े गए. (Id7e04)- Material
FilledTextField
का नाम बदलकरTextField
और foundationalTextField
का नाम बदलकरBaseTextField
कर दिया गया है, ताकि सबसे आसान एपीआई को आसानी से खोजा और इस्तेमाल किया जा सके (Ia6242, b/155482676) - Modifier.drawBackground का नाम बदलकर Modifier.background कर दिया गया है (I13677)
वर्शन 0.1.0-dev15
22 जुलाई, 2020
androidx.compose.ui:ui-*:0.1.0-dev15
रिलीज़ हो गया है. वर्शन 0.1.0-dev15 में ये कमिट शामिल हैं.
डिपेंडेंसी अपडेट
- Compose के
0.1.0-dev15
वर्शन का इस्तेमाल करने के लिए, आपको अपनी डिपेंडेंसी अपडेट करनी होंगी. इसके लिए, डिपेंडेंसी तय करना सेक्शन में ऊपर दिखाए गए नए कोड स्निपेट का इस्तेमाल करें.
एपीआई में हुए बदलाव
- FocusModifier को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Modifier.focus, Modifier.focusRequester, और Modifier.focusObserver का इस्तेमाल करें. FocusState और FocusDetailedState को अब इस्तेमाल नहीं किया जा सकता. इनके बजाय, FocusState2 का इस्तेमाल करें (I46919, b/160822875, b/160922136)
- फ़ोकस की स्थिति में बदलाव को मॉनिटर करने के लिए, एक मॉडिफ़ायर जोड़ा गया. (I05866, b/160924455, b/160923326)
- फ़ोकस में बदलाव करने के अनुरोध में एक मॉडिफ़ायर जोड़ा गया (I8dd73, b/161182057, b/160924778)
- टूलबार मेन्यू को इस तरह से अडजस्ट करें कि कॉपी, कट, और पेस्ट करने के विकल्प ठीक से दिखें. (Id3955)
- सिंगल-वैल्यू सिमैंटिक्स प्रॉपर्टी अब कॉलिंग स्टाइल का इस्तेमाल करती हैं.
उदाहरण के लिए, 'semantics { hidden = true }' को अब इस तरह लिखा जाता है:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - FocusModifier की जगह Modifier.focus को जोड़ा गया है. (Ib852a, b/160924778)
- TextField में टेक्स्ट चुनने के लिए, FloatingToolbar जोड़ें. (Ie8b07)
- कीबोर्ड से इनपुट देने से जुड़े एपीआई (I53c0a) के लिए, एक्सपेरिमेंट के तौर पर एपीआई एनोटेशन जोड़ा गया
- फ़ोकस से जुड़े सभी एपीआई के लिए, एक्सपेरिमेंटल एपीआई एनोटेशन जोड़ा गया (I53b24, b/160903352)
- FocusState2 जोड़ा गया है. यह FocusDetailedState (I0a3ba, b/160822595) की जगह लेगा
- ExperimentalFocus जोड़ा गया है. यह Focus API के लिए @OptIn एनोटेशन है. (I1544b, b/160820961)
- IntBounds यूनिट क्लास को जोड़ा गया है. यह लेआउट से पूर्णांक पिक्सल की सीमा को दिखाता है. इसका इस्तेमाल करने के लिए, PopupPositionProvider के एपीआई को अपडेट कर दिया गया है. (I0d8d0, b/159596546)
- Applier को अब कंपोज़िशन (Ibe697) को हटाने के लिए, clear() तरीके की ज़रूरत होती है
- KeyEvent अब काम नहीं करता. इसे KeyEvent2 से बदल दिया गया है (I68730)
- टेस्ट फ़ाइंडर में, useUnmergedTree नाम का एक नया वैकल्पिक फ़्लैग जोड़ा गया है. (I2ce48)
- LayoutNode को एक्सपेरिमेंटल एपीआई बनाया गया (I4f2e9)
अलग-अलग तरह के इनलाइन क्लास टाइप में कॉपी करने के तरीके जोड़े गए हैं. इनमें ये शामिल हैं:
- ऑफ़सेट
- साइज़
- दायरा
- मोशन
TransformOrigin
Size.copy कंपैनियन ऑब्जेक्ट मेथड को बंद कर दिया गया है इसके बजाय, इंस्टेंस कॉपी मेथड (Ife290, b/159905651) का इस्तेमाल करें
पॉपअप, डायलॉग, और मेन्यू अब कॉन्टेक्स्ट के हिसाब से MaterialTheme (Ia3665, b/156527485) को इनहेरिट कर रहे हैं
TextDirection का नाम बदलकर ResolvedTextDirection कर दिया गया है (I3ff38)
Layout() फ़ंक्शन के मेज़र ब्लॉक से लेआउट की दिशा वाला पैरामीटर हटाया गया. हालांकि, लेआउट की दिशा को मेज़र स्कोप ऑब्जेक्ट (Ic7d9d) के ज़रिए, कॉलबैक के अंदर उपलब्ध कराया जाता है
दोबारा इस्तेमाल करने के लिए, SelectionHandles को फिर से फ़ैक्टर किया गया. (I420e0)
क्लिक करने की सुविधा हटा दी गई है. Modifier.clickable (I84bdf) का इस्तेमाल करें
TestTag और Semantics को मिटा दिया गया है. इसके बजाय, Modifier.testTag और Modifier.semantics का इस्तेमाल करें (I15ff0, b/158841414)
इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कंस्ट्रक्टर को कॉल किया जाता था, तो कंपोज़ कंपाइलर प्लगिन उसे इंटरसेप्ट कर लेता था. ऐसा (I5205a, b/158123804) की वजह से होता था
Modifier.tag का नाम बदलकर Modifier.layoutId कर दिया गया है, ताकि Modifier.testTag के साथ कोई भ्रम न हो. (I995f0)
Placeable#get(AlignmentLine) से मिली अलाइनमेंट लाइन की इंट पोज़िशन अब शून्य नहीं हैं. अगर क्वेरी की गई अलाइनमेंट लाइन मौजूद नहीं है, तो AlignmentLine.Unspecified दिखेगा. (I896c5, b/158134875)
AndroidView कंपोज़ेबल में एक मॉडिफ़ायर पैरामीटर जोड़ा गया है. (I48a88, b/158746303)
Semantics() अब काम नहीं करता. इसके बजाय, Modifier.semantics() का इस्तेमाल करें. (I72407, b/158841414)
viewModel() कंपोज़ेबल जोड़ें. इससे, पहले से बनाए गए ViewModel को उसी तरह बनाया या पाया जा सकता है जिस तरह ऐक्टिविटी या फ़्रैगमेंट में काम करता है (I5fdd1)
IntPx की जगह Int का इस्तेमाल किया गया. IntPxPosition की जगह IntOffset का इस्तेमाल किया गया. IntPxSize को IntSize से बदल दिया गया है. (Ib7b44)
साइज़ की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxSize के बजाय Size क्लास के इस्तेमाल को स्टैंडर्ड बनाएं. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. जैसे, दो फ़्लोट वैल्यू को एक साथ पैक करने के लिए, long का इस्तेमाल किया जा सकता है. इससे फ़्लोट के तौर पर दिखाई गई चौड़ाई और ऊंचाई को दिखाया जा सकता है. (Ic0191)
पोजीशनिंग की जानकारी दिखाने के लिए इस्तेमाल की गई क्लास की संख्या को कम करने के लिए, PxPosition के बजाय Offset क्लास का इस्तेमाल करें. इससे इनलाइन क्लास के फ़ायदे मिलते हैं. जैसे, x और y ऑफ़सेट को फ़्लोट के तौर पर दिखाने के लिए, दो फ़्लोट वैल्यू को पैक करने के लिए long का इस्तेमाल करना. (I3ad98)
पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है. Px क्लास को पूरी तरह से मिटा दिया गया है (I3ff33)
पिक्सल पैरामीटर के लिए सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (I086f4)
पिक्सल पैरामीटर (Id3434) के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है
पिक्सेल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग की गई. इसके तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया (I97a5a)
TestTag अब सेवा में नहीं है. इसके बजाय, Modifier.testTag का इस्तेमाल करें. (If5110, b/157173105)
ParentDataModifier#modifyParentData के डिफ़ॉल्ट, no-op, इंप्लीमेंटेशन को हटा दिया गया है. यह इंटरफ़ेस को लागू न करने के बराबर था. (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 मॉडिफ़ायर एपीआई में बदलाव किया गया है: outlineShape का नाम बदलकर shape कर दिया गया है. इसकी डिफ़ॉल्ट वैल्यू RectangleShape है और अब इसे शून्य नहीं किया जा सकता; clipToOutline का नाम बदलकर clip कर दिया गया है; clipToBounds को हटा दिया गया है, क्योंकि यह RectangleShape के साथ clip == true के बराबर है (I7ef11, b/155075735)
ज़्यादा लेवल वाले Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय Canvas को दिखाते हैं. इससे उपभोक्ताओं को अपने पेंट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी Canvas का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन का इस्तेमाल कर सकते हैं. यह तरीका, Canvas के साथ ड्राइंग कमांड जारी करने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
WithConstraints ट्रेलिंग लैम्डा एपीआई को बदल दिया गया है. अब इसमें दो पैरामीटर के बजाय, रिसीवर स्कोप है. यह कंस्ट्रेंट और layoutDirection के साथ-साथ, Dp में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी भी उपलब्ध कराता है (I91b9a, b/149979702)
LayoutModifier2 का नाम बदलकर LayoutModifier कर दिया गया है. (Id29f3)
LayoutModifier इंटरफ़ेस को हटाया गया है, जो अब इस्तेमाल में नहीं है. (I2a9d6)
Layout और LayoutModifier2 में मौजूद इंट्रिंसिक मेज़रमेंट फ़ंक्शन में अब IntrinsicMeasureScope रिसीवर है. यह इंट्रिंसिक क्वेरी एपीआई को लेआउट की दिशा के बारे में जानकारी देता है. (Id9945)
Layout और LayoutModifier के चाइल्ड को, लेआउट की अलग दिशा के हिसाब से मेज़र किया जा सकता है. (Ibd731)
एक नया Modifier.zIndex() जोड़ा गया है. इससे एक ही पैरंट लेआउट में मौजूद चाइल्ड के ड्रॉइंग ऑर्डर को कंट्रोल किया जा सकता है. DrawLayerModifier पर मौजूद elevation प्रॉपर्टी का नाम बदलकर shadowElevation कर दिया गया है. अब यह ड्रॉइंग ऑर्डर को कंट्रोल नहीं करती. DrawShadow के पैरामीटर का क्रम बदल गया है: एलिवेशन अब पहला पैरामीटर है और शेप दूसरा पैरामीटर है. इसका डिफ़ॉल्ट मान RectangleShape है. (I20150, b/152417501)
मालिक के लिए, onSizeChange और onPositionChange को हटाया गया. (I5c718)
Constraints2 जोड़ा गया है. यह Constraints की कॉपी है. यह IntPx के बजाय सिर्फ़ Int connstraints वैल्यू के साथ काम करता है. IntPx को हटा दिया जाएगा और सभी पूर्णांक की सीमाओं को Android की तरह पिक्सल माना जाएगा.
- IntSize को भी जोड़ा गया है, जो बाद में IntPxSize की जगह लेगा. (I4b43a)
Made Alignment को किसी भी वैल्यू के साथ इंस्टैंटिएट किया जा सकता है. 1D अलाइनमेंट जोड़े गए. (Ia0c05)
alignToSiblings अब Placeable के बजाय Measured को स्वीकार करता है. (I5788d)
-
- ScaleFit का नाम बदलकर ContentScale कर दिया गया है
- ContentScale को ui-graphics से ui-core मॉड्यूल में ले जाया गया है, ताकि यह Alignment API के साथ एक ही मॉड्यूल में रहे.
- FillMaxDimension का नाम बदलकर Crop कर दिया गया है
- FillMinDimension का नाम बदलकर Fit कर दिया गया है
- बेहतर तरीके से मैच करने के लिए, Fit का नाम बदलकर Inside कर दिया गया है
- ImageView.ScaleType के बराबर
- दस्तावेज़ जोड़ा गया है. इसमें बताया गया है कि Crop और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_CROP के जैसा ही नतीजा देता है. साथ ही, Fit और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.FIT_CENTER के जैसा ही नतीजा देता है. इसके अलावा, Inside और Alignment.Center का कॉम्बिनेशन, ImageView.ScaleType.CENTER_INSIDE के जैसा ही नतीजा देता है
ड्रॉ मॉडिफ़ायर के लिए, दाएं से बाएं लिखे जाने वाली भाषाओं के लिए सहायता. (I0aaf9)
एक्सएमएल से Android व्यू को बड़ा करने के लिए एपीआई रिलीज़ किया गया. ज़्यादा जानकारी के लिए, ViewInCompose डेमो देखें. (I42916)
DrawModifier API को बेहतर बनाया गया है:
- draw() के लिए रिसीवर स्कोप को ContentDrawScope बनाया गया
- draw() पर मौजूद सभी पैरामीटर हटा दिए गए हैं
- DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
- ContentDrawScope में drawContent() मेथड होता है (Ibaced, b/152919067)
LayoutCoordinates के लिए, positionInParent और boundsInParent जोड़े गए. (Icacdd, b/152735784)
DrawLayerModifier और drawLayer() अब clipToBounds और clipToOutline को डिफ़ॉल्ट रूप से फ़ॉल्स पर सेट करते हैं. (I0eb8b, b/152810850)
LayoutResult का नाम बदलकर MeasureResult कर दिया गया है. (Id8c68)
लेआउट मॉडिफ़ायर तय करने के लिए, नया एपीआई LayoutModifier2 जोड़ा गया; LayoutModifier (If32ac) को बंद किया गया
मॉडिफ़ायर प्लस ऑपरेटर को फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) से बदला गया
किसी लेयर के लिए, ड्रॉइंग कमांड की डिसप्ले सूची को ऑफ़सेट करने की सुविधा देने के लिए, translationX/Y प्रॉपर्टी जोड़ी गई हैं. यह सुविधा, ऐनिमेशन या टच इवेंट के जवाब में कॉन्टेंट को मूव करने के लिए काम आती है. (I8641c)
लेयर एपीआई में pivotX और pivotY पैरामीटर जोड़े गए हैं, ताकि किसी लेयर पर मौजूद किसी खास पॉइंट के आस-पास रोटेशन और स्केलिंग की जा सके (Icf7c3)
OnPositioned और OnChildPositioned कंपोज़ेबल फ़ंक्शन को बदलने के लिए, OnPositionedModifier और OnChildPositionedModifier जोड़ें. (I2ec8f)
LayerModifier जोड़ा गया है. यह एक ऐसा मॉडिफ़ायर है जो लेआउट के लिए RenderNode जोड़ने की अनुमति देता है. इसकी मदद से, क्लिपिंग, ओपैसिटी, रोटेशन, स्केलिंग, और शैडो सेट की जा सकती हैं. यह RepaintBoundary की जगह लेगा. (I7100d, b/150774014)
लेआउट की दिशा को पैरंट लेआउट नोड से चाइल्ड नोड तक ले जाने की सुविधा जोड़ी गई. लेआउट की दिशा बदलने वाला मॉडिफ़ायर जोड़ा गया. (I3d955)
स्टैक कॉम्पोनेंट, दाएं से बाएं लिखने की सुविधा के साथ काम करता है (Ic9e00)
Compose लेआउट में RTL के लिए शुरुआती सहायता (Ia5519)
Density और DensityScope को एक ही इंटरफ़ेस में मर्ज कर दिया गया है. ambientDensity() के बजाय, अब DensityAmbient.current का इस्तेमाल किया जा सकता है. withDensity(density) के बजाय सिर्फ़ with(density) (I11cb1)
LayoutCoordinates में बदलाव किया गया है, ताकि providedAlignmentLines को Map के बजाय Set बनाया जा सके. साथ ही, LayoutCoordinates में get() ऑपरेटर को लागू किया गया है, ताकि वैल्यू को वापस पाया जा सके. इससे मॉडिफ़ायर के लिए, सेट की एक या उससे ज़्यादा वैल्यू में बदलाव करना आसान हो जाता है. इसके लिए, उन्हें हर मॉडिफ़ायर के लिए नया कलेक्शन बनाने की ज़रूरत नहीं होती. (I0245a)
LayoutCoordinates में अब position प्रॉपर्टी नहीं है. LayoutModifiers, रोटेशन या स्केलिंग के लिए, position प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. इसके बजाय, डेवलपर को एक LayoutCoordinate से दूसरे LayoutCoordinate में ट्रांसफ़ॉर्म का हिसाब लगाने के लिए, parentCoordinates और childToLocal() का इस्तेमाल करना चाहिए.
LayoutCoordinates, साइज़ प्रॉपर्टी के लिए PxSize के बजाय IntPxSize का इस्तेमाल करता है. लेआउट के लिए पूर्णांक पिक्सल साइज़ का इस्तेमाल किया जाता है. इसलिए, लेआउट के सभी साइज़ में पूर्णांक का इस्तेमाल किया जाना चाहिए, न कि फ़्लोटिंग पॉइंट वैल्यू का. (I9367b)
Constraints (I0fd15) के एपीआई इंटरफ़ेस में सुधार
CanvasScope API बनाया गया है. यह Canvas ऑब्जेक्ट को रैप करता है, ताकि बिना किसी स्टेटस के, डिक्लेरेटिव ड्राइंग एपीआई सरफेस को दिखाया जा सके. ट्रांसफ़ॉर्मेशन, अपने रिसीवर स्कोप में शामिल होते हैं. साथ ही, साइज़िंग की जानकारी भी, उससे जुड़े इंसर्ट बाउंड्री के हिसाब से तय होती है. इसके लिए, उपभोक्ता को ड्रॉइंग ऑपरेशन कॉन्फ़िगर करने के लिए, Paint का अपना स्टेट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं होती.
- CanvasScopeSample जोड़ा गया. साथ ही, डेमो ऐप्लिकेशन को अपडेट किया गया, ताकि उसमें डेक्लेरेटिव ग्राफ़िक्स का डेमो (Ifd86d) शामिल किया जा सके
इस्तेमाल नहीं किए जा रहे MaskFilter API को हटा दिया गया है. ऐसा इसलिए किया गया है, क्योंकि इसका इस्तेमाल सीमित है और ज़्यादातर इस्तेमाल के मामलों में, इसे हार्डवेयर ऐक्सेलरेटर के लिए ऑप्टिमाइज़ नहीं किया गया है (I54f76)
RectangleShape को androidx.ui.foundation.shape.* से androidx.ui.graphics.* में ले जाया गया है (Ia74d5, b/154507984)
एपीआई में, Color के सभी ऐसे इस्तेमाल को बदला गया है जिनमें null वैल्यू इस्तेमाल की जा सकती थी. अब null वैल्यू इस्तेमाल नहीं की जा सकती. साथ ही, null की जगह Color.Unset का इस्तेमाल किया गया है (Iabaa7)
ImagePainter में एक और वैकल्पिक rect पैरामीटर जोड़ा गया है, ताकि इमेज ऐसेट (I0ea9e) के किसी सबसेट को ड्रा किया जा सके
रंगों को बॉक्स में रखे बिना, सेट न की गई वैल्यू दिखाने के लिए, 'सेट नहीं किया गया' रंग जोड़ा गया. (If901a)
ट्रांसफ़ॉर्मेशन के लिए, वैकल्पिक पिवट कोऑर्डिनेट का इस्तेमाल करने के लिए, Canvas.rotate और Canvas.scale एक्सटेंशन के तरीके जोड़े गए. ये डिफ़ॉल्ट रूप से, कैनवस के मौजूदा अनुवाद के सबसे ऊपर बाएं कोने में होते हैं.
साथ ही, Canvas.rotateRad को एक एक्सटेंशन मेथड के तौर पर भी जोड़ा गया है, ताकि यह एक जैसा रहे (Ibaca6)
PixelMap API बनाया गया है, ताकि ImageAsset से पिक्सल की जानकारी क्वेरी की जा सके. (I69ad6)
compose और Android फ़्रेमवर्क एपीआई के बीच ऑब्जेक्ट कन्वर्ज़न के लिए, नाम रखने के तरीके से मेल खाने के लिए, toFrameworkRect/toFrameworkRectF का नाम बदलकर toAndroidRect/toAndroidRectF कर दिया गया है. इन एपीआई के दस्तावेज़ भी अपडेट किए गए हैं (I86337)
वेक्टर ग्राफ़िक के लिए, मौजूदा सबकंपोज़िशन एपीआई को बदलने के लिए VectorPainter API जोड़ा गया. सबकंपोज़िशन का नतीजा, DrawModifier के बजाय VectorPainter ऑब्जेक्ट होता है. VectorPainter के पक्ष में, DrawVector कंपोज़ेबल के पिछले वर्शन को बंद कर दिया गया है.
Image(Painter) API का नाम बदलकर PaintBox(Painter) कर दिया गया है एक ऐसा वेक्टर कंपोज़ेबल बनाया गया है जो Image कंपोज़ेबल की तरह काम करता है. हालांकि, इसमें ImageAsset के बजाय VectorAsset का इस्तेमाल किया जाता है (I9af9a, b/149030271)
हमने इमेज का नाम बदलकर ImageAsset कर दिया है, ताकि इमेज डेटा और लेआउट और ड्रॉ कॉन्टेंट में हिस्सा लेने के लिए इस्तेमाल किए जाने वाले आने वाले Image कंपोज़ेबल के बीच के अंतर को बेहतर तरीके से समझा जा सके. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework (Id5bbd)
TextDirection.Content जोड़ा गया (I48f36)
TextDecoration.plus ऑपरेटर जोड़ा गया (I0ad1a)
Force
को TextDirectionAlgorithm enum वैल्यू (Icc944) से हटाया गया हैTextDirectionAlgorithm का नाम बदलकर TextDirection कर दिया गया है (I75ce8)
यह LongPressAndDrag को TextField Selection के लिए लागू करता है. (I17919)
AnnotatedString.getStringAnnotations जोड़ा गया है. यह रेंज में मौजूद सभी एनोटेशन दिखाता है. (I1fa00)
Locale और LocaleList के लिए पैकेज का नाम androidx.ui.text से बदलकर androidx.ui.intl कर दिया गया है (I8132c)
TextField के कर्सर में ब्लिंक करने वाला ऐनिमेशन है (Id10a7)
एपीआई में बदलाव: AnnotatedString(builder: Builder) का नाम बदलकर annotatedString(builder: Builder) कर दिया गया है. (Ia6377)
एपीआई में बदलाव: AnnotatedString.Item का नाम बदलकर AnnotatedString.Range कर दिया गया है. (I2d44d)
AnnotatedString.Builder.addAnnotationString का नाम बदलकर addStringAnnotation कर दिया गया है. (I5059e)
अब SoftwareKeyboardController का इस्तेमाल करके, सॉफ़्टवेयर कीबोर्ड को छिपाया/दिखाया जा सकता है. यह onTextInputStarted कॉलबैक (I8dc44, b/151860051) से डिलीवर किया जाता है
(Text/Paragraph/Span)Style के लिए प्लस ऑपरेटर जोड़ा गया है. यह merge() फ़ंक्शन को डेलिगेट करता है. (Ia1add)
FontWeight.lerp अब स्नैप नहीं करता. यह अब भी एक डेटा क्लास है. (I521c2)
FontWeight कंस्ट्रक्टर अब सार्वजनिक है. यह अब डेटा क्लास नहीं है. (Id6b1f)
TextLayoutResult में getLineStart, getLineEnd, getEllipsisOffset, और getEllipsisCount जोड़ें (Ibc801)
ui-text मॉड्यूल का नाम बदलकर ui-text-core (I57dec) कर दिया गया है
इस्तेमाल नहीं की गई साइज़ क्लास को हटा दिया गया है, क्योंकि ui-geometry मॉड्यूल में डुप्लीकेट साइज़ क्लास मौजूद है. (I1b602)
AdapterList जोड़ा गया है. यह स्क्रोल करने लायक सूची वाला कॉम्पोनेंट है. यह सिर्फ़ दिखने वाले आइटम को कंपोज़ और लेआउट करता है. फ़िलहाल, इसकी कुछ समस्याएं सामने आई हैं. जैसे, यह सिर्फ़ वर्टिकल है और इसके चाइल्ड में होने वाले सभी बदलावों को पूरी तरह से हैंडल नहीं करता है. (Ib351b)
Box (I05027, b/148147281) में पैडिंग, बॉर्डर, शेप, और बैकग्राउंड पैरामीटर जोड़ें
गड़बड़ियां ठीक की गईं
- टेक्स्ट फ़ील्ड में onFocusChange कॉलबैक का नाम बदलकर onFocusChanged कर दिया गया है (Ida4a1)
- VerticalScroller और HoriziontalScroller अब काम नहीं करते. Column/Row के व्यवहार और पैरामीटर के साथ-साथ Modifier के साथ काम करने वाले ScrollableColumn और ScrollableRow का इस्तेमाल करें. इसके अलावा, अपने एलिमेंट पर Modifier.verticalScroll और Modifier.horizontalScroll का इस्तेमाल करें. इसी तरह, ScrollerPosition को ScrollState' (I400ce, b/157225838, b/149460415, b/154105299) के पक्ष में बंद कर दिया गया है
runOnIdleCompose
का नाम बदलकरrunOnIdle
कर दिया गया (I83607)- टेस्टिंग के कई एपीआई के नाम बदलकर, उन्हें ज़्यादा आसान बना दिया गया है. findXYZ नाम वाले सभी एपीआई का नाम बदलकर onNodeXYZ कर दिया गया है. सभी doXYZ एपीआई का नाम बदलकर performXYZ कर दिया गया है. (I7f164)
- अब Compose यूज़र इंटरफ़ेस (यूआई) को ViewGroups में कंपोज़ किया जा सकता है. इसके लिए, नई कंपोज़िशन की ज़रूरत नहीं होती. उदाहरण के लिए, ViewInteropDemo देखें. (I9ab0b, b/160455080)
- MutableVector (Icccf7) में sortWith और removeRange जोड़ा गया
- TextField के लिए, चुने गए हिस्से में बदलाव करने के लिए, खींचकर चुनने वाले हैंडल लागू करें. (I27032)
- Shader इनलाइन क्लास को हटाया गया है. यह NativeShader expect क्लास को रैप करता था. NativeShader का नाम बदलकर Shader कर दिया गया है. रैप की गई Shader इनलाइन क्लास ने एपीआई सर्फ़ेस में कोई काम की चीज़ नहीं जोड़ी. साथ ही, यह एक इनलाइन क्लास थी. इसलिए, NativeShader क्लास का सीधे तौर पर इस्तेमाल करें. (I25e4d)
PainterModifier को फिर से फ़ैक्टर किया गया है, ताकि अब यह दी गई सीमाओं और ContentScale पैरामीटर के आधार पर स्केलिंग न करे. Painter के लागू करने वाले लोगों को, ड्रॉइंग के कॉन्टेंट को खुद ही स्केल करना होता है. ऐसा, DrawScope के दिए गए साइज़ के आधार पर किया जाता है.
उस समस्या को ठीक किया गया है जिसमें VectorPainter के कैश मेमोरी वाले बिटमैप का साइज़, ड्रॉ करने के लिए दिए गए साइज़ के बजाय डिफ़ॉल्ट साइज़ पर सेट हो जाता था.
ImagePainter को अपडेट किया गया है, ताकि वह अपने कॉन्टेंट को स्केल कर सके. इसके लिए, उसे PainterModifier पर निर्भर न रहना पड़े. (I6ba90)
ऐनिमेशन की टाइमिंग के लिए, टॉप-लेवल का withFrameNanos फ़ंक्शन जोड़ा गया (Ie34c5)
@Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. इसे @ComposableContract(tracked=false) से बदलें (Id211e)
androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करते. TextField, FilledTextField, और CoreTextField कंपोज़ेबल, इस टाइप का इस्तेमाल करते हैं. इन्हें भी अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, कृपया androidx.ui.input.TextFieldValue का इस्तेमाल करें (I4066d, b/155211005)
उस समस्या को ठीक किया गया है जिसकी वजह से, PointerInputFilters को डिसपैच के दौरान सबकंपोज़िशन के ज़रिए हटाने पर, पॉइंटर इनपुट डिसपैच क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (I1f48b, b/157998762)
उस समस्या को ठीक किया गया है जिसकी वजह से, PointerInputFilters को डिसपैच के दौरान सबकंपोज़िशन के ज़रिए हटाने पर, पॉइंटर इनपुट डिसपैच क्रैश हो जाता था. अब यह समस्या ठीक कर दी गई है. (Iab398, b/157998762)
Radius क्लास को रिफ़ैक्टर करके, इनलाइन क्लास बनाया गया. फ़ंक्शन कंस्ट्रक्टर के पक्ष में, कंपैनियन ऑब्जेक्ट बनाने के तरीके हटा दिए गए हैं. साथ ही, डिफ़ॉल्ट पैरामीटर के साथ फ़ंक्शन कंस्ट्रक्टर का इस्तेमाल किया गया है, ताकि y-ऐक्सिस के साथ रेडियस, x-ऐक्सिस के रेडियस पैरामीटर से मेल खाए.
DrawScope.drawRoundRect को अपडेट किया गया है. अब यह x और y ऐक्सिस के साथ रेडियस के लिए, दो अलग-अलग फ़्लोट वैल्यू के बजाय, एक ही रेडियस पैरामीटर का इस्तेमाल करेगा (I46d1b)
Recompose कंपोज़ेबल अब काम का ऐब्स्ट्रैक्शन नहीं है. MutableState असाइनमेंट की वजह से, ज़्यादातर रीकंपोज़िशन होने चाहिए. इससे ज़्यादा के लिए, हमारा सुझाव है कि आप
invalidate
फ़ंक्शन का इस्तेमाल करके, मौजूदा स्कोप को फिर से कंपोज़ करें. (Ifc992)पिक्सल पैरामीटर के लिए, सिर्फ़ Dp और प्रिमिटिव टाइप पर भरोसा करने के लिए, बड़े पैमाने पर रीफ़ैक्टरिंग के तहत, अलग-अलग कंपोज़ क्लास में Px क्लास के इस्तेमाल को बदल दिया गया है (Iede0b)
यह Compose के कंपाइलर की कोड जनरेट करने की रणनीति को बदलता है. बदलाव से पहले, कंपोज़ कंपाइलर, कंपोज़ किए जा सकने वाले फ़ंक्शन में कॉल को बदल देता था. इस बदलाव के बाद, हम कंपोज़ेबल फ़ंक्शन के मुख्य हिस्से को बदल देते हैं. हालांकि, कॉलसाइट में ज़्यादातर कोई बदलाव नहीं होता.
इसका मतलब है कि कंपोज़ रनटाइम के साथ कम्यूनिकेट करने वाला ज़्यादातर लॉजिक, कॉलसाइट के बजाय फ़ंक्शन बॉडी की शुरुआत में होता है.
यह बदलाव, कंपोज़ के सभी इस्तेमाल के लिए सोर्स के साथ काम करने वाला होना चाहिए. इस बदलाव के बाद, Compose के ज़्यादातर उपयोगकर्ताओं को किसी कोड को अपडेट करने की ज़रूरत नहीं होगी.
इस काम को पूरा करने के लिए, सभी कंपोज़ेबल फ़ंक्शन के JVM सिग्नेचर में बदलाव किया गया है. एक पैरामीटर स्वीकार करने वाले कंपोज़ेबल फ़ंक्शन को, तीन पैरामीटर स्वीकार करने वाले फ़ंक्शन में बदल दिया जाता है. अतिरिक्त पैरामीटर, कंपोज़र और एक ‘key’ पूर्णांक होते हैं. यह एक बिटमास्क पूर्णांक होता है, जिसका इस्तेमाल कॉल के ज़रिए मेटाडेटा को आगे बढ़ाने के लिए किया जाता है.
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. restartableFunction और restartableFunctionN को अपडेट किया गया, ताकि कंपाइल टाइम के अतिरिक्त पैरामीटर शामिल किए जा सकें (I60756, b/143464846)LayoutAlign मॉडिफ़ायर के काम न करने वाले वर्शन हटा दिए गए हैं. (I10877)
DrawLayerModifier के पक्ष में RepaintBoundary को हटाया गया (I00aa4)
Button, FloatingActionButton, और Clickable में अब अलग
enabled
पैरामीटर है. बटन पर मौजूद कुछ पैरामीटर के नाम बदल दिए गए हैं या उनका क्रम बदल दिया गया है. (I54b5a)ButtonStyle को अलग-अलग फ़ंक्शन से बदल दिया गया है. साथ ही, टेक्स्ट (स्ट्रिंग) ओवरलोड को हटा दिया गया है. इस्तेमाल की जानकारी के लिए, अपडेट किए गए सैंपल देखें. (If63ab, b/146478620, b/146482131)
ambients API में बड़े बदलाव. ज़्यादा जानकारी के लिए, लॉग और
Ambient<T>
दस्तावेज़ देखें (I4c7ee, b/143769776)डिफ़ॉल्ट TextDirection के व्यवहार में बदलाव किया गया है, ताकि LayoutDirection के हिसाब से इसका पता लगाया जा सके. इसका मतलब है कि अगर LayoutDirection RTL है, तो डिफ़ॉल्ट TextDirection भी RTL होगा. इससे पहले, यह TextDirection.ContentOrLtr/Rtl (I4e803) था
बग ठीक किया गया: जब फ़ॉन्ट वेट और फ़ॉन्ट स्टाइल को एनोटेट की गई स्ट्रिंग पर नेस्ट किया जाता है, तो टेक्स्ट सही तरीके से रेंडर नहीं होता है. (I77a9d)
Text() में, आम तौर पर इस्तेमाल किए जाने वाले पैरामीटर जोड़ता है. अगर आपको फ़िलहाल इन पैरामीटर में से कुछ को पास करने के लिए, स्थानीय टेक्स्ट स्टाइल बनानी है, जैसे कि Text(style = TextStyle(textAlign = TextAlign.Center)), तो अब सीधे तौर पर पैरामीटर दिए जा सकते हैं: Text(textAlign = TextAlign.Center) (I82768)
ui-android-text मॉड्यूल का नाम बदलकर ui-text-android कर दिया गया है (I68cbe)