अगर आपने Android 11 या उससे पहले के वर्शन में कस्टम स्प्लैश स्क्रीन लागू की है, तो अपने ऐप्लिकेशन को SplashScreen
API पर माइग्रेट करें. इससे यह पक्का करने में मदद मिलेगी कि वह Android 12 और उसके बाद के वर्शन में सही तरीके से दिखे.
Android 12 में, सिस्टम सभी ऐप्लिकेशन के लिए कोल्ड और वॉर्म स्टार्ट पर, Android सिस्टम की डिफ़ॉल्ट स्प्लैश स्क्रीन लागू करता है. डिफ़ॉल्ट रूप से,
इस सिस्टम स्प्लैश स्क्रीन को आपके ऐप्लिकेशन के लॉन्चर आइकॉन एलिमेंट का इस्तेमाल करके बनाया गया है
और आपके windowBackground
थीम, अगर वह एक ही रंग वाली हो.
अगर आपने अपने ऐप्लिकेशन को माइग्रेट नहीं किया है, तो हो सकता है कि Android 12 और उसके बाद के वर्शन पर ऐप्लिकेशन लॉन्च करने का अनुभव खराब हो या अनचाहे नतीजे मिलें.
अगर आपकी मौजूदा स्प्लैश स्क्रीन को
android:windowBackground
को बदलने वाली कस्टम थीम का इस्तेमाल करके लागू किया गया है, तो सिस्टम आपकी कस्टम स्प्लैश स्क्रीन को Android 12 और उसके बाद के वर्शन पर, डिफ़ॉल्ट Android सिस्टम स्प्लैश स्क्रीन से बदल देता है. मुमकिन है कि यह आपके ऐप्लिकेशन के मुताबिक न हो अनुभव.अगर आपकी मौजूदा स्प्लैश स्क्रीन को किसी खास
Activity
का इस्तेमाल करके लागू किया गया है, तो Android 12 या उसके बाद के वर्शन वाले डिवाइसों पर आपका ऐप्लिकेशन लॉन्च करने पर, डुप्लीकेट स्प्लैश स्क्रीन दिखती हैं: सिस्टम स्प्लैश स्क्रीन दिखती है, जिसके बाद आपकी मौजूदा स्प्लैश स्क्रीन गतिविधि दिखती है.
इस दस्तावेज़ में बताई गई माइग्रेशन प्रोसेस को पूरा करके, इन खराब या अनचाहे अनुभवों को रोका जा सकता है. माइग्रेट करने के बाद, एपीआई ऐप्लिकेशन के शुरू होने में लगने वाले समय को बढ़ाता है, स्प्लैश स्क्रीन के अनुभव पर आपको पूरा कंट्रोल देता है, साथ ही, प्लैटफ़ॉर्म पर मौजूद अन्य ऐप्लिकेशन के साथ लॉन्च का एक जैसा अनुभव भी देता है.
स्प्लैशस्क्रीन कंपैट लाइब्रेरी
SplashScreen
API का सीधे तौर पर इस्तेमाल किया जा सकता है. हालांकि, हमारा सुझाव है कि आप इसके बजाय,
Androidx SplashScreen
compat लाइब्रेरी का इस्तेमाल करें. compat लाइब्रेरी, SplashScreen
एपीआई का इस्तेमाल करती है. साथ ही, यह पुराने सिस्टम के साथ काम करने की सुविधा चालू करती है. साथ ही, यह सभी Android वर्शन पर स्प्लैश स्क्रीन डिसप्ले के लिए एक जैसा लुक और फ़ील बनाती है. इस दस्तावेज़ को कंपैट का इस्तेमाल करके लिखा गया है
लाइब्रेरी.
अगर Android 11 और इससे पहले के वर्शन पर, सीधे तौर पर SplashScreen
एपीआई का इस्तेमाल करके माइग्रेट किया जाता है
आपकी स्प्लैश स्क्रीन माइग्रेशन से पहले की तरह ही दिखेगी. शुरू होने की तारीख
Android 12 की स्प्लैश स्क्रीन के तौर पर, Android 12 का लुक और स्टाइल रखा गया है.
SplashScreen
compat लाइब्रेरी का इस्तेमाल करके माइग्रेट करने पर, सिस्टम Android के सभी वर्शन पर एक ही स्प्लैश स्क्रीन दिखाता है.
स्प्लैश स्क्रीन को लागू करने की प्रोसेस को माइग्रेट करना
मौजूदा स्प्लैश स्क्रीन को माइग्रेट करने के लिए, यह तरीका अपनाएं Android 12 और उसके बाद के वर्शन पर लागू करने की सुविधा मिलती है.
यह प्रोसेस, माइग्रेट करने के किसी भी टाइप पर लागू होती है
से. अगर आपको किसी खास Activity
से माइग्रेट करना है, तो सबसे सही
इस दस्तावेज़ में बताए गए तरीकों के बारे में बताया गया है.
Activity
की कस्टमाइज़ की गई स्प्लैश स्क्रीन. SplashScreen
API, स्प्लैश स्क्रीन गतिविधि के साथ शुरू होने वाले ऐप्लिकेशन के खुलने में लगने वाले समय को भी कम करता है.
स्प्लैश स्क्रीन को माइग्रेट करने के लिए यह तरीका अपनाएं:
build.gradle
फ़ाइल में, अपनाcompileSdkVersion
बदलें और डिपेंडेंसी मेंSplashScreen
compat लाइब्रेरी शामिल करें.build.gradle android { compileSdkVersion 31 ... } dependencies { ... implementation 'androidx.core:core-splashscreen:1.0.0-beta02' }
Theme.SplashScreen
के माता-पिता के साथ कोई थीम बनाएं. मान तय करेंpostSplashScreenTheme
को उस थीम में जोड़ें जिसका इस्तेमालActivity
को करना चाहिए और ड्रॉ करने लायक या ऐनिमेशन के लिएwindowSplashScreenAnimatedIcon
की वैल्यू ड्रॉ करने लायक है. दूसरे एट्रिब्यूट ज़रूरी नहीं हैं.<style name="Theme.App.Starting" parent="Theme.SplashScreen"> <!-- Set the splash screen background, animated icon, and animation duration. --> <item name="windowSplashScreenBackground">@color/...</item> <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated drawable. One of these is required. --> <item name="windowSplashScreenAnimatedIcon">@drawable/...</item> <!-- Required for animated icons. --> <item name="windowSplashScreenAnimationDuration">200</item> <!-- Set the theme of the Activity that directly follows your splash screen. This is required. --> <item name="postSplashScreenTheme">@style/Theme.App</item> </style>
अगर आपको अपने आइकॉन के नीचे बैकग्राउंड का रंग जोड़ना है, तो
Theme.SplashScreen.IconBackground
थीम सेट करें औरwindowSplashScreenIconBackground
एट्रिब्यूट की वैल्यू सबमिट करें.मेनिफ़ेस्ट में, शुरू होने वाली ऐक्टिविटी की थीम को उस थीम से बदलें जिसे आपने पिछले चरण में बनाया था.
<manifest> <application android:theme="@style/Theme.App.Starting"> <!-- or --> <activity android:theme="@style/Theme.App.Starting"> ...
कॉल करने से पहले, शुरुआती गतिविधि में
installSplashScreen
पर कॉल करेंsuper.onCreate()
.Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { // Handle the splash screen transition. val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) ...
Java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // Handle the splash screen transition. SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); } }
installSplashScreen
, स्प्लैश स्क्रीन ऑब्जेक्ट दिखाता है. इसका इस्तेमाल, ऐनिमेशन को पसंद के मुताबिक बनाने या स्प्लैश स्क्रीन को स्क्रीन पर ज़्यादा समय तक दिखाने के लिए किया जा सकता है. ऐनिमेशन को पसंद के मुताबिक बनाने के बारे में ज़्यादा जानकारी के लिए, देखें
स्प्लैश स्क्रीन को लंबे समय तक स्क्रीन पर दिखाना
और
स्प्लैश स्क्रीन को खारिज करने के लिए, ऐनिमेशन को पसंद के मुताबिक बनाएं.
पसंद के मुताबिक बनाई गई स्प्लैश स्क्रीन पर की गई गतिविधि को स्प्लैश स्क्रीन के हिसाब से बनाएं
Android 12 और उसके बाद के वर्शन के लिए स्प्लैश स्क्रीन पर माइग्रेट करने के बाद, यह तय करें कि अपनी पिछली पसंद के मुताबिक बनाई गई स्प्लैश स्क्रीन Activity
का क्या करना है. आपके पास ये विकल्प हैं:
- पसंद के मुताबिक बनाई गई गतिविधि को बनाए रखें, लेकिन उसे दिखने से रोकें.
- ब्रैंडिंग से जुड़ी वजहों के लिए, पसंद के मुताबिक गतिविधि को बनाए रखें.
- कस्टम गतिविधि हटाएं और अपने ऐप्लिकेशन को ज़रूरत के हिसाब से बदलें.
कस्टम गतिविधि दिखाने से रोकें
अगर आपकी पिछली स्प्लैश स्क्रीन Activity
का इस्तेमाल मुख्य रूप से रूटिंग के लिए किया जाता है, तो इसे हटाने के तरीकों पर विचार करें. उदाहरण के लिए, आप
गतिविधि या सबकॉम्पोनेंट के साथ एक गतिविधि पर जाएं. अगर ऐसा नहीं है
और दुनिया भर के दर्शकों से जुड़ने के लिए,
SplashScreen.setKeepOnScreenCondition
रूटिंग गतिविधि को बनाए रखने, लेकिन उसे रेंडर होने से रोकने के लिए. ऐसा करने पर, स्प्लैश स्क्रीन को अगली गतिविधि पर ट्रांसफ़र कर दिया जाता है और स्प्लैश स्क्रीन से अगली गतिविधि पर आसानी से ट्रांज़िशन किया जा सकता है.
Kotlin
class RoutingActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) // Keep the splash screen visible for this Activity. splashScreen.setKeepOnScreenCondition { true } startSomeNextActivity() finish() } ...
Java
public class RoutingActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); // Keep the splash screen visible for this Activity. splashScreen.setKeepOnScreenCondition(() -> true ); startSomeNextActivity(); finish(); } ...
ब्रैंडिंग के लिए, पसंद के मुताबिक बनाई गई गतिविधि को बनाए रखना
अगर आपको ब्रैंडिंग से जुड़ी वजहों के लिए, पिछली स्प्लैश स्क्रीन Activity
का इस्तेमाल करना है, तो
सिस्टम स्प्लैश स्क्रीन से कस्टम स्प्लैश स्क्रीन पर ट्रांज़िशन कर सकता है
स्प्लैश को खारिज करने के लिए, ऐनिमेशन को को Activity
के हिसाब से कस्टमाइज़ किया जा रहा है
स्क्रीन का इस्तेमाल करें.
हालांकि, अगर हो सके, तो इस स्थिति से बचें और अपनी स्प्लैश स्क्रीन को ब्रैंड करने के लिए SplashScreen
एपीआई का इस्तेमाल करें.
अगर आपको कोई डायलॉग दिखाना है, तो हमारा सुझाव है कि आप इसे कस्टम स्प्लैश स्क्रीन ऐक्टिविटी के बाद या सिस्टम स्प्लैश स्क्रीन के बाद मुख्य ऐक्टिविटी के ऊपर दिखाएं.
कस्टम स्प्लैश स्क्रीन गतिविधि हटाना
आम तौर पर, हमारा सुझाव है कि आप अपनी पिछली कस्टम स्प्लैश स्क्रीन Activity
को हटा दें
इससे स्प्लैश स्क्रीन के दोहराव से बचा जा सकता है, ताकि काम करने की क्षमता को बढ़ाया जा सके.
और स्प्लैश स्क्रीन लोड होने में लगने वाले समय को कम करें. ऐसी अलग-अलग तकनीकें हैं जो
इसका इस्तेमाल करके, स्प्लैश स्क्रीन पर ग़ैर-ज़रूरी गतिविधियों को दिखाने से बचा जा सकता है.
अपने कॉम्पोनेंट, मॉड्यूल या लाइब्रेरी के लिए लेज़ी लोडिंग का इस्तेमाल करें. लोड होने से बचें इसके अलावा, इन कॉम्पोनेंट या लाइब्रेरी को शुरू करने में भी मदद मिलती है, जिनकी ज़रूरत ऐप्लिकेशन को लॉन्च के समय काम करते थे. जब ऐप्लिकेशन को इनकी ज़रूरत पड़े, तब इन्हें लोड करें.
अगर आपके ऐप्लिकेशन को सही तरीके से काम करने के लिए किसी कॉम्पोनेंट की ज़रूरत है, तो उसे सिर्फ़ तब लोड करें, जब उसकी ज़रूरत हो. इसे ऐप्लिकेशन के लॉन्च होने के समय लोड न करें. इसके अलावा, ऐप्लिकेशन के शुरू होने के बाद उसे लोड करने के लिए, बैकग्राउंड थ्रेड का इस्तेमाल करें. अपने
Application.onCreate()
को इतना हल्का रखने की कोशिश करें किया जा सकता है.ऐप्लिकेशन के शुरू होने पर कॉम्पोनेंट को शुरू करने के लिए, ऐप्लिकेशन स्टार्टअप लाइब्रेरी का इस्तेमाल भी किया जा सकता है. ऐसा करते समय, पक्का करें कि अब भी सभी शुरुआती गतिविधि के लिए ज़रूरी मॉड्यूल उपलब्ध कराएं. साथ ही, जहां जैंक हों लेज़ी तरीके से लोड किए गए मॉड्यूल उपलब्ध होंगे.
स्थानीय रूप से कुछ डेटा लोड करते समय प्लेसहोल्डर बनाएं. इसका इस्तेमाल करें उन्हें चुनने का सुझाव दिया जाता है. साथ ही, रेंडरिंग को तब तक रोककर रखें, जब तक ऐप्लिकेशन तैयार हैं. पुराने वर्शन के साथ काम करने वाला स्प्लैश स्क्रीन लागू करने के लिए, स्प्लैश स्क्रीन को लंबे समय तक चालू रखें में बताए गए निर्देशों का पालन करें.
प्लेसहोल्डर दिखाएं. तय समय तक चलने वाले नेटवर्क पर आधारित लोड के लिए, स्प्लैश स्क्रीन को खारिज करें और एसिंक्रोनस लोडिंग के लिए प्लेसहोल्डर दिखाएं. कॉन्टेंट वाले हिस्से में हल्के ऐनिमेशन लागू करें, ताकि लोड होने की स्थिति दिखे. पक्का करें कि लोड किया गया कॉन्टेंट स्ट्रक्चर, स्केलेटन स्ट्रक्चर से मेल खाता हो. साथ ही, कॉन्टेंट लोड होने पर, ट्रांज़िशन आसानी से हो.
कैश मेमोरी में डेटा सेव करने की सुविधा का इस्तेमाल करना. जब कोई उपयोगकर्ता पहली बार आपका ऐप्लिकेशन खोलता है, तो आपके पास विज्ञापन दिखाने का विकल्प होता है कुछ यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए लोडिंग इंडिकेटर, जैसा कि यहां दिखाया गया है. जब उपयोगकर्ता अगली बार आपके ऐप्लिकेशन पर आएगा, तो उसे कैश मेमोरी में सेव किया गया कॉन्टेंट दिखाया जा सकता है. साथ ही, उस समय नया कॉन्टेंट भी लोड किया जा सकता है.