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