प्रॉडक्ट से जुड़ी खबरें

Jetpack WindowManager 1.5 का स्टेबल वर्शन उपलब्ध है

3 मिनट में पढ़ें
Francesco Romano
डेवलपर रिलेशंस इंजीनियर, Android

हमें यह बताते हुए खुशी हो रही है कि Jetpack WindowManager 1.5.0 का स्टेबल वर्शन अब उपलब्ध है!

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

WindowManager 1.5 में, अलग-अलग तरह के डिवाइसों के लिए बेहतर टूल उपलब्ध कराने पर फ़ोकस किया गया है.

WindowManager 1.5 में नया क्या है

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

विंडो के साइज़ की नई क्लास: बड़ी और बहुत बड़ी

WindowManager 1.5 में, चौड़ाई के हिसाब से विंडो के साइज़ की दो नई क्लास जोड़ी गई हैं: बड़ी और बहुत बड़ी.

विंडो के साइज़ की क्लास, व्यूपोर्ट के ब्रेकपॉइंट का हमारा आधिकारिक और राय पर आधारित सेट है. इससे आपको अडैप्टिव लेआउट डिज़ाइन और डेवलप करने में मदद मिलती है. WindowManager 1.5 में, हम टैबलेट से बड़ी स्क्रीन के लिए भी यह गाइडेंस दे रहे हैं.

चौड़ाई के हिसाब से नए ब्रेकपॉइंट यहां दिए गए हैं:

  • बड़ी: 1200dp से 1600dp के बीच की चौड़ाई के लिए
  • बहुत बड़ी: 1600dp या इससे ज़्यादा की चौड़ाई के लिए
window_size_classes_width.png

डिसप्ले की चौड़ाई के हिसाब से, विंडो के साइज़ की अलग-अलग क्लास. 

ये क्लास क्यों ज़रूरी हैं?

Android 16 QPR1 Beta 2 से, Android कनेक्ट किए गए डिसप्ले के साथ काम करता है. इससे लोग अपने डिवाइस को किसी बाहरी डिसप्ले से कनेक्ट कर सकते हैं और उसे बड़ी स्क्रीन वाले डेस्कटॉप जैसे टूल में बदल सकते हैं.

ADB_5350_asset.gif

फ़ोन को किसी बाहरी डिसप्ले से कनेक्ट किया गया है. बाहरी डिसप्ले पर डेस्कटॉप सेशन चल रहा है. 

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

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

WindowManager 1.5 में, बहुत बड़े डिसप्ले साइज़ के लिए आधिकारिक ब्रेकपॉइंट दिए गए हैं. इससे आपको ऐसे लेआउट पेश करने का साफ़ सिग्नल मिलता है जिन्हें खास तौर पर, प्रॉडक्टिव और जानकारी से भरपूर डेस्कटॉप अनुभव के लिए डिज़ाइन किया गया है.

विंडो के साइज़ की क्लास की गणना, computeWindowSizeClass() का इस्तेमाल करके की जा सकती है. यह androidx.window.core.layout लाइब्रेरी एक्सटेंशन फ़ंक्शन है, जो Set<WindowSizeClass> टाइप को बढ़ाता है.

अपने प्रोजेक्ट में, विंडो के साइज़ की नई क्लास शामिल करने के लिए, WindowSizeClass.BREAKPOINTS_V1 के बजाय, WindowSizeClass.BREAKPOINTS_V2 सेट से फ़ंक्शन को कॉल करें:

val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


इसके बाद, सही लेआउट लागू करें. हालांकि, ऐसा तब करें, जब आपको पक्का हो कि आपके ऐप्लिकेशन के पास कम से कम इतनी जगह है:

if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

अडैप्टिव लाइब्रेरी

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

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

आपको सिर्फ़ ऑप्ट-इन करना होगा. इसके लिए, अपनी Gradle बिल्ड फ़ाइल में यह एलान करें कि आपको नए ब्रेकपॉइंट का इस्तेमाल करना है:

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

अन्य सुधार

  • ऐक्टिविटी एम्बेडिंग — अपने-आप सेव होना और वापस लाना: WindowManager, अब ऐक्टिविटी एम्बेडिंग स्प्लिट की स्थिति को अपने-आप सेव और वापस ला सकता है. इससे, प्रोसेस को फिर से बनाने पर भी, उपयोगकर्ता का लेआउट बना रहता है. इससे, ज़्यादा स्टेबल और एक जैसा अनुभव मिलता है. डेवलपर को अब स्थिति को मैन्युअल तरीके से सेव और वापस लाने की ज़रूरत नहीं है. इसके लिए, उन्हें सिर्फ़ EmbeddingConfiguration#isAutoSaveEmbeddingState प्रॉपर्टी सेट करके, अपने-आप सेव होने की सुविधा को चालू करना होगा.
  • Expanded WindowMetrics: अब WindowMetrics की गणना, सिर्फ़ ऐक्टिविटी कॉन्टेक्स्ट से ही नहीं, बल्कि ऐप्लिकेशन कॉन्टेक्स्ट से भी की जा सकती है. इससे, आपके ऐप्लिकेशन के अलग-अलग हिस्सों से विंडो की जानकारी ऐक्सेस करने के लिए ज़्यादा फ़्लेक्सिबिलिटी मिलती है.

शुरू करने का तरीका

अपने Android प्रोजेक्ट में, बड़े और बहुत बड़े साइज़ की नई क्लास और WindowManager 1.5 की अन्य सुविधाओं का इस्तेमाल करने के लिए, build.gradle.kts में अपने ऐप्लिकेशन की डिपेंडेंसी को, स्टेबल वर्शन के सबसे नए वर्शन पर अपडेट करें:

dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5, पूरी तरह से अडैप्टिव ऐप्लिकेशन बनाने की दिशा में एक और कदम है. ये ऐप्लिकेशन, Android के सभी फ़ॉर्म फ़ैक्टर पर काम करते हैं. बदलावों और बग फ़िक्स की पूरी सूची के लिए, आधिकारिक रिलीज़ नोट देखें.

कोडिंग का आनंद लें!

इसे लिखा है:

पढ़ना जारी रखें