डेस्कटॉप विंडोिंग का समर्थन

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

पहली इमेज में, डेस्कटॉप विंडो से स्क्रीन को व्यवस्थित किया जा सकता है चालू किया गया. इन बातों का ध्यान रखें:

  • उपयोगकर्ता एक साथ कई ऐप्लिकेशन चला सकते हैं.
  • टास्कबार, डिसप्ले के सबसे नीचे एक तय जगह पर होता है. इसमें चल रहे ऐप्लिकेशन दिखते हैं. उपयोगकर्ता, ऐप्लिकेशन को झटपट ऐक्सेस करने के लिए पिन कर सकते हैं.
  • पसंद के मुताबिक बनाया जा सकने वाला नया हेडर बार, हर विंडो के ऊपर दिखता है. इसमें, छोटा और बड़ा करने जैसे कंट्रोल होते हैं.
पहली इमेज. टैबलेट पर डेस्कटॉप की विंडो दिख रही है.

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

जब कोई ऐप्लिकेशन डेस्कटॉप विंडो मोड में खुला होता है, तो अन्य ऐप्लिकेशन भी डेस्कटॉप विंडो में खुलते हैं.

दूसरी इमेज. डेस्कटॉप विंडो खोलने के लिए, ऐप्लिकेशन विंडो हैंडल को दबाकर रखें और खींचकर छोड़ें.

उपयोगकर्ता, विंडो के हैंडल पर टैप या क्लिक करने पर दिखने वाले मेन्यू से भी डेस्कटॉप विंडो मोड चालू कर सकते हैं. इसके अलावा, Meta बटन (Windows, Command या Search) + Ctrl + डाउन ऐरो कीबोर्ड शॉर्टकट का इस्तेमाल करके भी ऐसा किया जा सकता है.

उपयोगकर्ता सभी चालू विंडो को बंद करके या डेस्कटॉप विंडो के सबसे ऊपर विंडो हैंडल पर क्लिक करें और ऐप्लिकेशन को खींचकर सबसे ऊपर ले जाएँ खोलें. Meta + H कीबोर्ड शॉर्टकट का इस्तेमाल करके भी, डेस्कटॉप विंडो से बाहर निकला जा सकता है. साथ ही, ऐप्लिकेशन को फिर से फ़ुल स्क्रीन पर चलाया जा सकता है.

डेस्कटॉप विंडो मोड पर वापस जाने के लिए, हाल ही में इस्तेमाल किए गए आइटम की स्क्रीन पर, डेस्कटॉप स्पेस टाइल पर टैप या क्लिक करें.

साइज़ बदलने की सुविधा और कंपैटबिलिटी मोड

डेस्कटॉप विंडो में, स्क्रीन लॉक किए गए ऐप्लिकेशन का साइज़ अपने हिसाब से बदला जा सकता है. इसका मतलब है कि भले ही, कोई गतिविधि पोर्ट्रेट ओरिएंटेशन में लॉक किया गया, उपयोगकर्ता अब भी ऐप्लिकेशन का साइज़ बदलकर, लैंडस्केप ओरिएंटेशन वाली विंडो में बदल सकते हैं.

तीसरी इमेज. पोर्ट्रेट मोड में इस्तेमाल करने पर पाबंदी वाले ऐप्लिकेशन की विंडो का साइज़, लैंडस्केप मोड में बदलना.

ऐसे ऐप्लिकेशन जिनका साइज़ नहीं बदला जा सकता. इसका मतलब है कि resizableActivity = false) आसपेक्ट रेशियो में बदलाव करते हुए, उनके यूज़र इंटरफ़ेस (यूआई) को स्केल करना चाहिए.

चौथी इमेज. विंडो का साइज़ बदलने पर, उस ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) जिसका साइज़ नहीं बदला जा सकता.

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

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

कैमरे के ऐप्लिकेशन के लिए काम करने वाले मोड के बारे में ज़्यादा जानने के लिए, डिवाइस के साथ काम करने वाला मोड लेख पढ़ें.

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

पसंद के मुताबिक बनाए जा सकने वाले हेडर इनसेट

डेस्कटॉप विंडो मोड में चलने वाले सभी ऐप्लिकेशन में हेडर बार होता है. भले ही, वे इमर्सिव मोड में हों.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है पक्का करें कि हेडर बार की वजह से आपके ऐप्लिकेशन का कॉन्टेंट छिप न गया हो. हेडर बार, कैप्शन बार इनसेट टाइप है: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); व्यू में, WindowInsets.Type.captionBar(), जो सिस्टम बार का हिस्सा है.

इनसेट को हैंडल करने के बारे में ज़्यादा जानने के लिए, अपने ऐप्लिकेशन में कॉन्टेंट को एक से दूसरे किनारे तक दिखाना और Compose में विंडो इनसेट को हैंडल करना पर जाएं.

हेडर बार को पसंद के मुताबिक भी बनाया जा सकता है. Android 15 में, दिखने का तरीका APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND टाइप को शामिल किया गया है. इससे हेडर बार को पारदर्शी बनाया जा सकता है, ताकि ऐप्लिकेशन हेडर बार में कस्टम कॉन्टेंट दिखा सकें.

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

ऐप्लिकेशन के लिए कैप्शन में सिस्टम एलिमेंट के दिखने का तरीका टॉगल किया जा सकता है हल्के और गहरे रंग वाली थीम APPEARANCE_LIGHT_CAPTION_BARS का इस्तेमाल करने पर, यह बिलकुल उसी तरह होता है जिस तरह स्टेटस बार और नेविगेशन बार को टॉगल किया जाता है.

Android 15 ने WindowInsets#getBoundingRects() इससे ऐप्लिकेशन, कैप्शन बार इनसेट की गहराई से जांच कर पाते हैं. ऐप्लिकेशन, उन जगहों के बीच अंतर कर सकते हैं जहां सिस्टम, सिस्टम एलिमेंट दिखाता है और उन जगहों के बीच अंतर कर सकते हैं जहां ऐप्लिकेशन, सिस्टम एलिमेंट को ओवरलैप किए बिना कस्टम कॉन्टेंट दिखा सकते हैं.

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

कस्टम हेडर लागू करने से पहले और बाद में Chrome.
छठी इमेज. कस्टम हेडर लागू करने से पहले और बाद में Chrome.

मल्टीटास्किंग और एक से ज़्यादा इंस्टेंस की सुविधा

मल्टीटास्किंग, डेस्कटॉप विंडो की मुख्य सुविधा है. साथ ही, अपने ऐप्लिकेशन के कई इंस्टेंस इस्तेमाल करने की अनुमति देने से, उपयोगकर्ताओं की प्रॉडक्टिविटी काफ़ी बढ़ सकती है.

Android 15 में, PROPERTY_SUPPORTS_MULTI_INSTANCE_ सिस्टम_UI पेश किया गया. यह तय करने के लिए कौनसे ऐप्लिकेशन सेट किए जा सकते हैं कि ऐप्लिकेशन के लिए सिस्टम यूज़र इंटरफ़ेस (यूआई) दिखाया जाए इसे एक से ज़्यादा इंस्टेंस के तौर पर लॉन्च किया जा सकता है.

खींचकर छोड़ने वाले जेस्चर की मदद से, ऐप्लिकेशन के इंस्टेंस मैनेज करना

मल्टी-विंडो मोड में, उपयोगकर्ता ऐप्लिकेशन की विंडो से किसी व्यू एलिमेंट को खींचकर, ऐप्लिकेशन का नया इंस्टेंस शुरू कर सकते हैं. उपयोगकर्ता, एक ही ऐप्लिकेशन के इंस्टेंस के बीच भी एलिमेंट को मूव कर सकते हैं.

सातवीं इमेज. एक टैब को डेस्कटॉप विंडो से बाहर खींचकर Chrome का नया इंस्टेंस शुरू करें.

Android 15 में, खींचें और छोड़ें सुविधा को पसंद के मुताबिक बनाने के लिए दो फ़्लैग जोड़े गए हैं:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: इससे पता चलता है कि अगर कोई विंडो ड्रॉप को मैनेज नहीं करती है, तो सिस्टम को ड्रैग करने की कार्रवाई शुरू करने के लिए कहा जाना चाहिए. इस फ़्लैग का इस्तेमाल करते समय, कॉलर को ये चीज़ें मुहैया करानी होंगी ClipData Item जिसमें IntentSender को लॉन्च की जाने वाली गतिविधि (ClipData.Item.Builder#setIntentSender() देखें). सिस्टम, मौजूदा स्क्रीन जैसी चीज़ों के आधार पर इंटेंट लॉन्च कर सकता है या नहीं कर सकता है साइज़ या विंडो मोड की ज़रूरत होती है. अगर सिस्टम इंटेंट को लॉन्च नहीं करता है, तो सामान्य ड्रैग और ड्रॉप फ़्लो की मदद से इंटेंट रद्द कर दिया जाता है.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: इससे पता चलता है कि एक ही ऐप्लिकेशन के कई इंस्टेंस के लिए, खींचने और छोड़ने की कार्रवाई, विंडो की सीमाओं को पार कर सकती है.

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

आठवीं इमेज. Chrome ऐप्लिकेशन के दो इंस्टेंस के बीच किसी टैब को ले जाएं.

अतिरिक्त ऑप्टिमाइज़ेशन

डेस्कटॉप विंडो से फ़ुल स्क्रीन मोड में स्विच करने वाले ऐप्लिकेशन को अपनी पसंद के मुताबिक लॉन्च करें.

डिफ़ॉल्ट साइज़ और पोज़िशन बताएं

ज़रूरी नहीं है कि सभी ऐप्लिकेशन के लिए बड़ी विंडो होना ज़रूरी हो, भले ही वे साइज़ में बदलाव किए जा सकते हों. ऐसे में, उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, सभी ऐप्लिकेशन के लिए बड़ी विंडो होना ज़रूरी नहीं है. आप ActivityOptions#setLaunchBounds() का इस्तेमाल कर सकते हैं किसी गतिविधि के लॉन्च होने पर, डिफ़ॉल्ट साइज़ और पोज़िशन तय करने का तरीका.

डेस्कटॉप स्पेस से फ़ुल-स्क्रीन मोड में जाना

ऐप्लिकेशन, प्रोग्राम के हिसाब से फ़ुल-स्क्रीन मोड में जा सकते हैं. इसके लिए, Activity#requestFullScreenMode() को कॉल करें. यह तरीका, ऐप्लिकेशन को सीधे डेस्कटॉप विंडो से फ़ुल-स्क्रीन मोड में दिखाता है.