Android ऐप्लिकेशन, हर तरह के डिवाइसों पर काम करते हैं. जैसे: फ़ोन, टैबलेट, फ़ोल्ड किए जा सकने वाले डिवाइस, ChromeOS डिवाइस, कारें, टीवी, और यहां तक कि XR डिवाइस भी. इस अलग-अलग तरह के एनवायरमेंट के हिसाब से काम करने के लिए, आपके ऐप्लिकेशन को डिवाइस के सभी फ़ॉर्म फ़ैक्टर और डिसप्ले साइज़ के साथ काम करना चाहिए.
Android 16 (एपीआई लेवल 36) की मदद से, ऐप्लिकेशन अलग-अलग फ़ॉर्म फ़ैक्टर और डिसप्ले साइज़ के हिसाब से काम कर सकते हैं. इसके लिए, स्क्रीन ओरिएंटेशन, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात), और साइज़ बदलने से जुड़ी पाबंदियों को हटाया जाता है. ये बदलाव, उन डिवाइसों पर लागू होते हैं जिनकी सबसे कम चौड़ाई >= 600dp है. इससे ये चीज़ें तय होती हैं:
- टैबलेट
- बड़ी स्क्रीन वाले फ़ोल्ड किए जा सकने वाले डिवाइसों के अंदर के डिसप्ले
- डेस्कटॉप विंडोविंग (सभी फ़ॉर्म फ़ैक्टर पर)
एपीआई लेवल 36 को टारगेट करने वाले ऐप्लिकेशन का साइज़ बदला जा सकता है. साथ ही, अगर डिसप्ले की सबसे कम चौड़ाई >= 600dp है, तो वे मल्टी‑विंडो
मोड में काम कर सकते हैं. यह resizeableActivity="true" के बराबर है.
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 को टारगेट करने वाले ऐप्लिकेशन के लिए, बड़ी स्क्रीन वाले डिवाइसों (सबसे कम स्क्रीन की चौड़ाई >= 600dp) पर, सभी ओरिएंटेशन, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात), और ऐप्लिकेशन के साइज़ बदलने की सुविधा उपलब्ध होगी. यह डिफ़ॉल्ट अनुभव है. हालांकि, डेवलपर ऑप्ट आउट कर सकते हैं.
| टारगेट एपीआई लेवल | लागू होने वाले डिवाइस | डेवलपर के पास ऑप्ट आउट करने का विकल्प है |
|---|---|---|
| 36 (Android 16) | बड़ी स्क्रीन वाले डिवाइस (सबसे कम स्क्रीन की चौड़ाई >= 600dp) | हां |
किसी खास एपीआई लेवल को टारगेट करने की समयसीमा, ऐप्लिकेशन स्टोर के हिसाब से अलग-अलग होती है. Google Play पर, अगस्त 2026 से ऐप्लिकेशन के लिए एपीआई लेवल 36 को टारगेट करना ज़रूरी होगा.
अन्य संसाधन
- Android 16 या इसके बाद के वर्शन वाले ऐप्लिकेशन: काम करने के तरीके में बदलाव
- अडैप्टिव ऐप्लिकेशन बनाना
- अडैप्टिव ऐप्लिकेशन बनाने के लिए, क्या करें और क्या न करें