ज़रूरत के हिसाब से क्या करें और क्या न करें

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

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

साइज़ बदलने की क्षमता

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

resizeableActivity की विशेषता <activity> और <application> मेनिफ़ेस्ट एलिमेंट, मल्टी-विंडो को चालू या बंद करता है Android 11 (एपीआई लेवल 30) और इससे पहले के वर्शन पर काम करता हो. Android 12 (एपीआई लेवल 31) पर और बड़ी और बड़ी स्क्रीन, कई विंडो वाले मोड के साथ काम करती है. इससे कोई फ़र्क़ नहीं पड़ता कि एट्रिब्यूट की वैल्यू सबमिट करें. ज़्यादा जानकारी के लिए, मल्टी-विंडो मोड काम करता है लेख पढ़ें.

✓ करें

अपने ऐप्लिकेशन को मल्टी-विंडो में हिस्सा लेने की अनुमति दें उपयोगकर्ता की उत्पादकता और संतुष्टि में बढ़ोतरी हुई.

अगर आपका ऐप्लिकेशन, एपीआई लेवल 24 से कम को टारगेट करता है, तो resizeableActivity="true" सेट करें; इस बारे में न सोचें—Android 7.0 (एपीआई) पर डिफ़ॉल्ट रूप से, यह true के तौर पर उपलब्ध है लेवल 24) और उससे ऊपर का लेवल.

✗ ऐसा न करें

किसी भी एपीआई लेवल के लिए resizeableActivity="false" सेट न करें. अपने ऐप्लिकेशन को ऐप्लिकेशन पर उपलब्ध न कराएं इसमें मल्टी-विंडो मोड भी शामिल है.

ओरिएंटेशन

अडैप्टिव ऐप्लिकेशन, पोर्ट्रेट और लैंडस्केप ओरिएंटेशन के साथ काम करते हैं, भले ही डिसप्ले कुछ भी हो साइज़ या विंडो मोड की ज़रूरत होती है.

screenOrientation मेनिफ़ेस्ट सेटिंग, गतिविधि ओरिएंटेशन पर पाबंदी लगाती है.

✓ करें

अपने ऐप्लिकेशन मेनिफ़ेस्ट से screenOrientation सेटिंग को हटाएं.

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

✗ ऐसा न करें

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

लेटरबॉक्स किए गए ऐप्लिकेशन, Google Play पर कम खोजे जा सकते हैं टैबलेट, फ़ोल्ड किए जा सकने वाले डिवाइस, और ChromeOS डिवाइस.

आसपेक्ट रेशियो

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

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

✓ करें

स्क्रीन के हिसाब से अपने ऐप्लिकेशन के साइज़ में बदलाव करें, फिर चाहे ऐप्लिकेशन का डाइमेंशन उससे कुछ भी हो.

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

✗ ऐसा न करें

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

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

विंडो का साइज़

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

विंडो साइज़ क्लास की मदद से, ऐप्लिकेशन को तय करने और कैटगरी में बांटने का बेहतर तरीका मिलता है ऐप्लिकेशन विंडो का साइज़ कितना होगा. विंडो के तौर पर लेआउट बदलकर, अपने ऐप्लिकेशन के हिसाब से लेआउट सेट करें साइज़ क्लास में बदलाव होता है.

✓ करें

विंडो के साइज़ की क्लास के हिसाब से, अपने ऐप्लिकेशन की विंडो के साइज़ का आकलन करें.

विंडो के साइज़ की क्लास तय करने के लिए, currentWindowAdaptiveInfo() का इस्तेमाल करें Compose Material 3 अडैप्टिव लाइब्रेरी का टॉप-लेवल फ़ंक्शन. ज़्यादा के लिए ज़्यादा जानकारी के लिए, अडैप्टिव ऐप्लिकेशन बनाना लेख पढ़ें.

✗ ऐसा न करें

विंडो साइज़ क्लास की परिभाषाओं और में एपीआई की सुविधा शामिल है. विंडो के साइज़ का हिसाब लगाने के लिए, काम न करने वाले एपीआई का इस्तेमाल न करें.

ऐसे एपीआई जो अब काम नहीं करते

पुराने प्लैटफ़ॉर्म के एपीआई, ऐप्लिकेशन विंडो को सही तरीके से मेज़र नहीं करते; कुछ इसका इस्तेमाल करके, डिवाइस की स्क्रीन, कुछ में सिस्टम की सजावट शामिल नहीं है.

✓ करें

WindowManager#getCurrentWindowMetrics() का इस्तेमाल करें और ऐप्लिकेशन विंडो का साइज़ देखने के लिए WindowMetrics#getBounds(). इस्तेमाल की जाने वाली चीज़ें डिसप्ले सघनता पाने के लिए WindowMetrics#getDensity().

✗ ऐसा न करें

विंडो का साइज़ तय करने के लिए, उन Display एपीआई का इस्तेमाल न करें जो अब काम नहीं करते:

  • getSize(): Android 11 (एपीआई लेवल 30) में यह सुविधा काम नहीं करती
  • getMetrics(): Android 11 (एपीआई लेवल 30) में यह सुविधा काम नहीं करती
  • getRealSize(): Android 12 (एपीआई लेवल 31) में यह सुविधा काम नहीं करती
  • getRealMetrics(): Android 12 (एपीआई लेवल 31) में यह सुविधा काम नहीं करती

Compose

Jetpack Compose, ज़रूरत के हिसाब से यूज़र इंटरफ़ेस (यूआई) डेवलपमेंट के लिए डिज़ाइन किया गया है. कोई एक्सएमएल नहीं, कोई लेआउट नहीं फ़ाइलें, संसाधन क्वालीफ़ायर नहीं. सिर्फ़ Kotlin-आधारित, स्टेटलेस कंपोज़ेबल जैसे कि Column, Row, और Box जो आपके यूज़र इंटरफ़ेस (यूआई) और मॉडिफ़ायर की जानकारी देते हैं जैसे offset, padding, और size यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाने के लिए एलिमेंट.

✓ करें

Compose का इस्तेमाल करके बनाएं. नई सुविधाओं और रिलीज़ के बारे में अप-टू-डेट रहें.

✗ ऐसा न करें

पुरानी टेक्नोलॉजी पर भरोसा न करें. अपने ऐप को पुराना न होने दें.

Material 3 वाली अडैप्टिव लाइब्रेरी कंपोज़ करें

Compose Material 3 की अडैप्टिव लाइब्रेरी से ऐसे कॉम्पोनेंट और एपीआई मिलते हैं जो आसानी से इस्तेमाल किए जा सकने वाले ऐप्लिकेशन डेवलप करने में मदद करते हैं.

✓ करें

अपने ऐप्लिकेशन को लोगों के हिसाब से बनाने के लिए, इन एपीआई का इस्तेमाल करें:

  • NavigationSuiteScaffold: नेविगेशन बार और नेविगेशन बार के बीच स्विच करता है नेविगेशन रेल, ऐप्लिकेशन की विंडो के साइज़ की क्लास पर निर्भर करती है.
  • ListDetailPaneScaffold: सूची की जानकारी वाला कैननिकल लेआउट लागू करता है. इससे लेआउट को ऐप्लिकेशन की विंडो के साइज़ के हिसाब से सेट किया जा सकता है.
  • SupportingPaneScaffold: सपोर्ट करने वाले पैनल को कैननिकल पेज पर लागू करता है लेआउट.
✗ ऐसा न करें

कार को बार-बार न बदलें. डेवलपर को बेहतर तरीके से काम करने में मदद करने का मौका न गवाएं यह सुविधा सभी Jetpack Compose लाइब्रेरी से उपलब्ध कराई जाती है.

लेआउट

उपयोगकर्ता उम्मीद करते हैं कि ऐप्लिकेशन, डिसप्ले स्पेस का ज़्यादा से ज़्यादा फ़ायदा लेंगे कॉन्टेंट या बेहतर कंट्रोल.

अडैप्टिव ऐप्लिकेशन, डिसप्ले में हुए बदलावों के हिसाब से लेआउट ऑप्टिमाइज़ करते हैं. खास तौर पर, ऐप्लिकेशन विंडो के साइज़ या डिवाइस की स्थिति में बदलाव.

✓ करें

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

कॉन्टेंट को पैनल में व्यवस्थित करके, इस तरह के कई पैनल लेआउट चालू करें सूची-ब्यौरा और डाइनैमिक कॉन्टेंट डिसप्ले के लिए सहायक पैनल.

✓ करें: ड्यू-पैनल लेआउट में व्यवस्थित की गई गतिविधियों की सूची और ज़्यादा जानकारी.
✗ ऐसा न करें

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

✗ ऐसा न करें: बड़ी विंडो को भरने के लिए, लेआउट को बढ़ाया गया है.

इनपुट डिवाइस

उपयोगकर्ता, ऐप्लिकेशन के साथ इंटरैक्ट करने के लिए सिर्फ़ टचस्क्रीन का इस्तेमाल नहीं करते.

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

✓ करें

Android फ़्रेमवर्क की बिल्ट-इन सुविधाओं के लिए, कीबोर्ड टैब नेविगेशन और माउस या ट्रैकपैड पर क्लिक करें, चुनें, और स्क्रोल करें. पब्लिश करें कीबोर्ड शॉर्टकट हेल्पर में, अपने ऐप्लिकेशन के कीबोर्ड शॉर्टकट इस्तेमाल करें.

उपयोगकर्ताओं को किसी भी ईमेल पते पर लिखने के लिए, Jetpack Material 3 लाइब्रेरी का इस्तेमाल करें स्टाइलस का इस्तेमाल करके TextField कॉम्पोनेंट.

✗ ऐसा न करें

इनपुट के दूसरे तरीकों को नामुमकिन न बनाएं. सुलभता सुविधाएं शामिल न करें समस्याएं.

खास जानकारी

  • Compose और Material 3 की अडैप्टिव लाइब्रेरी की मदद से अपना ऐप्लिकेशन बनाएं
  • विंडो साइज़ क्लास के लिए बेस लेआउट
  • मल्टी-पैनल लेआउट बनाना
  • ऐप्लिकेशन का साइज़ बदलने की सुविधा चालू करना
  • गतिविधि ओरिएंटेशन को कभी भी लॉक न करें
  • आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) पर पाबंदी न लगाएं
  • टच के अलावा अन्य इनपुट सपोर्ट
  • काम न करने वाले एपीआई से बचें

✓ करें आपके उपयोगकर्ता क्या उम्मीद करते हैं: अपने ऐप्लिकेशन को उन अलग-अलग तरह के डिवाइसों के हिसाब से ऑप्टिमाइज़ करें जिन पर लोग हर दिन भरोसा करते हैं.

इंतज़ार ✗ न करें. आज ही शुरू करें!