ऐप्लिकेशन का ओरिएंटेशन, आसपेक्ट रेशियो, और साइज़ में बदलाव करने की सुविधा

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

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

  • टैबलेट
  • बड़ी स्क्रीन वाले फ़ोल्ड किए जा सकने वाले डिवाइसों की इनर डिस्प्ले
  • डेस्कटॉप विंडोइंग (सभी फ़ॉर्म फ़ैक्टर पर)

API लेवल 36 को टारगेट करने वाले ऐप्लिकेशन का साइज़ बदला जा सकता है. साथ ही, अगर डिसप्ले की सबसे छोटी चौड़ाई >= 600dp है, तो उन्हें मल्टी-विंडो मोड (resizeableActivity="true" के बराबर) में खोला जा सकता है.

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

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

बदलाव

बड़ी स्क्रीन पर Android 16 (एपीआई लेवल 36) को टारगेट करने वाले ऐप्लिकेशन के लिए, मेनिफ़ेस्ट के इन एट्रिब्यूट और एपीआई को अनदेखा किया जाता है:

एट्रिब्यूट या एपीआई नज़रअंदाज़ की गई वैल्यू
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity सभी
minAspectRatio सभी
maxAspectRatio सभी
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

अपवाद

Android 16 में किए गए बदलावों के ये अपवाद हैं:

  • sw600dp से छोटी स्क्रीन पर दिखता है. जैसे, ज़्यादातर फ़ोन, फ़्लिप किए जा सकने वाले डिवाइस, और बड़ी स्क्रीन वाले फ़ोल्ड किए जा सकने वाले डिवाइसों की बाहरी स्क्रीन

  • android:appCategory फ़्लैग पर आधारित गेम

    Android ऐप्लिकेशन बंडल और Play ऐप्लिकेशन साइनिंग का इस्तेमाल करके अपना गेम पब्लिश करें. इससे Google Play को फ़्लैग मैनेज करने और ऐप्लिकेशन बंडल के फ़ायदे अपने-आप देने की अनुमति मिलती है. ऐप्लिकेशन मेनिफ़ेस्ट के बारे में खास जानकारी भी देखें.

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

ऑप्ट आउट करें

एपीआई लेवल 36 के व्यवहार से ऑप्ट आउट करने के लिए, PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY मेनिफ़ेस्ट प्रॉपर्टी का एलान करें.

किसी खास गतिविधि के लिए ऑप्ट आउट करने के लिए, <activity> एलिमेंट में प्रॉपर्टी सेट करें:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

अपने पूरे ऐप्लिकेशन के लिए ऑप्ट आउट करने के लिए, <application> एलिमेंट में प्रॉपर्टी सेट करें:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

परीक्षण

यह जांचने के लिए कि Android 16 में हुए बदलावों का आपके ऐप्लिकेशन पर असर पड़ा है या नहीं, Android Studio में Pixel Tablet और Pixel Fold सीरीज़ के एम्युलेटर का इस्तेमाल करें. साथ ही, अपने ऐप्लिकेशन के मॉड्यूल build.gradle फ़ाइल में targetSdkPreview = "Baklava" सेट करें.

इसके अलावा, अपने टेस्ट डिवाइसों पर ऐप्लिकेशन के साथ काम करने वाले फ़्रेमवर्क का इस्तेमाल करें. इसके लिए, UNIVERSAL_RESIZABLE_BY_DEFAULT फ़्लैग चालू करें. ऐप्लिकेशन के साथ काम करने वाले फ़्रेमवर्क के टूल देखें.

Espresso टेस्टिंग फ़्रेमवर्क और Jetpack Compose टेस्टिंग एपीआई की मदद से, टेस्टिंग को ऑटोमेट किया जा सकता है.

लागू करने के बारे में जानकारी देने वाली गाइड

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

रेडीनेस चेकलिस्ट

यह पक्का करने के लिए कि आपका ऐप्लिकेशन, Android 16 में होने वाले बदलावों के लिए तैयार है, इस चेकलिस्ट का इस्तेमाल करें:

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

Compose में अडैप्टिव लेआउट बनाने के बारे में जानने के लिए, Jetpack Compose की मदद से अडैप्टिव ऐप्लिकेशन बनाना कोडलैब देखें. अगर आपको व्यू का इस्तेमाल करने वाले किसी ऐप्लिकेशन को माइग्रेट करना है, तो Compose को अपनाने की रणनीति देखें.

टाइमलाइन

  • Android 16 (2025): एपीआई लेवल 36 को टारगेट करने वाले ऐप्लिकेशन के लिए, बड़ी स्क्रीन वाले डिवाइसों (स्क्रीन की सबसे कम चौड़ाई >= 600 डीपी) पर सभी ओरिएंटेशन और आसपेक्ट रेशियो के साथ-साथ ऐप्लिकेशन के साइज़ को बदलने की सुविधा उपलब्ध होगी. हालांकि, डेवलपर ऑप्ट आउट कर सकते हैं.
टारगेट एपीआई लेवल लागू होने वाले डिवाइस डेवलपर को ऑप्ट आउट करने की अनुमति है
36 (Android 16) बड़ी स्क्रीन वाले डिवाइस (सबसे कम स्क्रीन की चौड़ाई >= 600 डीपी) हां

किसी खास एपीआई लेवल को टारगेट करने की समयसीमा, ऐप्लिकेशन स्टोर के हिसाब से तय होती है. Google Play पर मौजूद सभी ऐप्लिकेशन के लिए, अगस्त 2026 से एपीआई लेवल 36 को टारगेट करना ज़रूरी होगा.

अन्य संसाधन