Android ऐप्लिकेशन अब कई तरह के डिवाइसों (जैसे, फ़ोन, टैबलेट, फ़ोल्ड किए जा सकने वाले डिवाइस, डेस्कटॉप, कारें, और टीवी) पर काम करते हैं. साथ ही, बड़ी स्क्रीन पर विंडो मोड (जैसे, स्प्लिट स्क्रीन और डेस्कटॉप विंडो) में भी काम करते हैं. इसलिए, डेवलपर को Android ऐप्लिकेशन ऐसे बनाने चाहिए जो डिवाइस के ओरिएंटेशन के बावजूद, किसी भी स्क्रीन और विंडो साइज़ के हिसाब से काम कर सकें. आज के समय में, एक से ज़्यादा डिवाइसों के इस्तेमाल के चलन में, ओरिएंटेशन और साइज़ बदलने की सुविधा पर पाबंदी लगाने जैसे पैराडाइम बहुत ज़्यादा पाबंदियां लगाते हैं.
ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो से जुड़ी पाबंदियों को नज़रअंदाज़ करना
Android 17 (एपीआई लेवल 37) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो से जुड़ी पाबंदियां उन डिसप्ले पर लागू नहीं होती जिनकी सबसे कम चौड़ाई 600dp से ज़्यादा है. ऐप्लिकेशन, आसपेक्ट रेशियो या उपयोगकर्ता के पसंदीदा ओरिएंटेशन के बावजूद, पूरी डिसप्ले विंडो को भरते हैं. साथ ही, पिलरबॉक्सिंग का इस्तेमाल नहीं किया जाता.
Android 17 में, बड़ी स्क्रीन वाले डिवाइसों पर ओरिएंटेशन और साइज़ बदलने से जुड़ी पाबंदियों के लिए, डेवलपर को Android 16 में दिया गया अस्थायी ऑप्ट-आउट हटा दिया गया है.
इस बदलाव से, प्लैटफ़ॉर्म के नए स्टैंडर्ड बिहेवियर की शुरुआत होती है. Android, ऐसे मॉडल की ओर बढ़ रहा है जिसमें ऐप्लिकेशन, अलग-अलग ओरिएंटेशन, डिसप्ले साइज़, और आसपेक्ट रेशियो के हिसाब से काम कर सकते हैं. ओरिएंटेशन को फ़िक्स करने या साइज़ बदलने की सुविधा को सीमित करने जैसी पाबंदियों से, ऐप्लिकेशन की अडैप्टेबिलिटी में रुकावट आती है. अपने ऐप्लिकेशन को अडैप्टिव बनाएं, ताकि उपयोगकर्ताओं को बेहतर अनुभव मिल सके.
नुकसान पहुंचाने वाले सामान्य बदलाव
ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो से जुड़ी पाबंदियों को नज़रअंदाज़ करने से, कुछ डिवाइसों पर आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) पर असर पड़ सकता है. खास तौर पर, उन एलिमेंट पर जिन्हें पोर्ट्रेट ओरिएंटेशन में लॉक किए गए छोटे लेआउट के लिए डिज़ाइन किया गया था. उदाहरण के लिए, ऐप्लिकेशन में स्ट्रेच किए गए लेआउट, स्क्रीन से बाहर दिखने वाले ऐनिमेशन, और कॉम्पोनेंट जैसी समस्याएं हो सकती हैं. आसपेक्ट रेशियो या ओरिएंटेशन के बारे में आपकी कोई भी धारणा, आपके ऐप्लिकेशन में दिखने से जुड़ी समस्याएं पैदा कर सकती है. इन समस्याओं से बचने और अपने ऐप्लिकेशन के अडैप्टिव बिहेवियर को बेहतर बनाने के बारे में ज़्यादा जानें.
लैंडस्केप ओरिएंटेशन में फ़ोल्ड किए जा सकने वाले डिवाइसों या मल्टी-विंडो, डेस्कटॉप विंडो या कनेक्टेड डिसप्ले जैसे सिनेरियो में आसपेक्ट रेशियो की कैलकुलेशन के दौरान, आम तौर पर यह समस्या होती है कि कैमरे की झलक स्ट्रेच, रोटेट या क्रॉप की हुई दिखती है. यह समस्या अक्सर बड़ी स्क्रीन और फ़ोल्ड किए जा सकने वाले डिवाइसों पर होती है. इसकी वजह यह है कि ऐप्लिकेशन, कैमरे की सुविधाओं (जैसे, आसपेक्ट रेशियो और सेंसर ओरिएंटेशन) और डिवाइस की सुविधाओं (जैसे, डिवाइस ओरिएंटेशन और नैचुरल ओरिएंटेशन) के बीच फ़िक्स रिलेशनशिप मानते हैं. कैमरे की झलक मैनेज करने के बारे में ज़्यादा जानें.
डिवाइस को रोटेट करने की अनुमति देने से, गतिविधि को फिर से बनाना पड़ता है. अगर उपयोगकर्ता की स्थिति को सही तरीके से सेव नहीं किया जाता है, तो इससे उपयोगकर्ता की स्थिति खो सकती है. यूज़र इंटरफ़ेस (यूआई) की स्थितियों को सेव करें में, यूज़र इंटरफ़ेस (यूआई) की स्थिति को सही तरीके से सेव करने का तरीका जानें.
लागू करने से जुड़ी जानकारी
फ़ुल-स्क्रीन और मल्टी-विंडो मोड में, बड़ी स्क्रीन वाले डिवाइसों पर मेनिफ़ेस्ट के इन एट्रिब्यूट और रनटाइम एपीआई को नज़रअंदाज़ किया जाता है:
screenOrientationresizableActivityminAspectRatiomaxAspectRatiosetRequestedOrientation()getRequestedOrientation()
screenOrientation, setRequestedOrientation(), और getRequestedOrientation() के लिए इन वैल्यू को नज़रअंदाज़ किया जाता है:
portraitreversePortraitsensorPortraituserPortraitlandscapereverseLandscapesensorLandscapeuserLandscape
डिसप्ले के साइज़ बदलने की सुविधा के मामले में, android:resizeableActivity="false",
android:minAspectRatio, और android:maxAspectRatio का कोई असर नहीं पड़ता.
अपवाद
Android 17 में, ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो से जुड़ी पाबंदियां इन स्थितियों में लागू नहीं होती हैं:
- गेम (
android:appCategoryफ़्लैग के आधार पर) - उपयोगकर्ताओं के पास, डिवाइस की आसपेक्ट रेशियो सेटिंग में जाकर, ऐप्लिकेशन के डिफ़ॉल्ट बिहेवियर को साफ़ तौर पर चुनने का विकल्प होता है
- ऐसी स्क्रीन जिनकी सबसे कम चौड़ाई
sw600dpसे कम है