ओरिएंटेशन और साइज़ बदलने से जुड़ी पाबंदियों को अनदेखा किया जाता है

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

ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियों को अनदेखा करें

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

Android 17 में, बड़ी स्क्रीन वाले डिवाइसों पर ओरिएंटेशन और साइज़ बदलने से जुड़ी पाबंदियों के लिए, डेवलपर के पास ऑप्ट-आउट करने का अस्थायी विकल्प नहीं होगा. यह विकल्प Android 16 में उपलब्ध था.

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

ऐप्लिकेशन कंपैटिबिलिटी फ़्रेमवर्क का इस्तेमाल करके और UNIVERSAL_RESIZABLE_BY_DEFAULT कंपैट फ़्लैग चालू करके भी, इस व्यवहार की जांच की जा सकती है.

नुकसान पहुंचाने वाले सामान्य बदलाव

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

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

डिवाइस को घुमाने की सुविधा चालू करने पर, गतिविधि को फिर से बनाना पड़ता है. अगर उपयोगकर्ता की स्थिति को सही तरीके से सेव नहीं किया जाता है, तो इससे उपयोगकर्ता की स्थिति मिट सकती है. यूज़र इंटरफ़ेस की स्थितियां सेव करें में, यूज़र इंटरफ़ेस की स्थिति को सही तरीके से सेव करने का तरीका जानें.

लागू करने से जुड़ी जानकारी

फ़ुल-स्क्रीन और मल्टी-विंडो मोड में, बड़ी स्क्रीन वाले डिवाइसों पर इन मेनिफ़ेस्ट एट्रिब्यूट और रनटाइम एपीआई को अनदेखा किया जाता है:

screenOrientation, setRequestedOrientation() और getRequestedOrientation() के लिए, इन वैल्यू को अनदेखा किया जाता है:

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

डिसप्ले के साइज़ में बदलाव करने की सुविधा के लिए, android:resizeableActivity="false", android:minAspectRatio और android:maxAspectRatio का कोई असर नहीं पड़ता.

अपवाद

Android 17 के लिए, ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियां इन स्थितियों में लागू नहीं होती हैं:

  • गेम (android:appCategory फ़्लैग के आधार पर)
  • उपयोगकर्ताओं ने डिवाइस के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) की सेटिंग में, ऐप्लिकेशन के डिफ़ॉल्ट व्यवहार के लिए साफ़ तौर पर ऑप्ट-इन किया हो
  • ऐसी स्क्रीन जिनकी सबसे कम चौड़ाई sw600dp से कम है