Android 12 में,
SplashScreen
एपीआई की मदद से ऐप्लिकेशन लॉन्च किए जा सकते हैं
ऐनिमेशन का इस्तेमाल किया जा रहा है. साथ ही, लॉन्च के समय एक इन-ऐप्लिकेशन मोशन भी शामिल है. साथ ही, एक स्प्लैश स्क्रीन दिख रही है
और आपके ऐप्लिकेशन पर होने वाला ट्रांज़िशन भी दिखेगा. SplashScreen
Window
और
इसलिए, इसमें
Activity
.
स्प्लैश स्क्रीन का अनुभव लेने पर, हर ऐप्लिकेशन में स्टैंडर्ड डिज़ाइन एलिमेंट दिखते हैं लॉन्च किया जा सकता है. हालांकि, इसे कस्टमाइज़ भी किया जा सकता है, ताकि आपके ऐप्लिकेशन की यूनीक ब्रैंडिंग बनी रहे.
SplashScreen
प्लैटफ़ॉर्म एपीआई का इस्तेमाल करने के अलावा,
SplashScreen
कंपैट लाइब्रेरी, जिसमें SplashScreen
एपीआई शामिल है.
स्प्लैश स्क्रीन कैसे काम करती है
जब कोई उपयोगकर्ता किसी ऐप्लिकेशन को तब लॉन्च करता है, जब ऐप्लिकेशन की प्रोसेस न चल रही हो (इसे
प्रारंभ) या Activity
नहीं है
बनाया गया (वॉर्म स्टार्ट),
ये इवेंट होते हैं:
यह सिस्टम, उन थीम और ऐनिमेशन का इस्तेमाल करके स्प्लैश स्क्रीन दिखाता है जिन्हें आपने जोड़ा है परिभाषित नहीं कर सकते.
ऐप्लिकेशन के तैयार होने पर, स्प्लैश स्क्रीन खारिज कर दी जाती है और ऐप्लिकेशन दिखने लगता है.
स्प्लैश स्क्रीन कभी नहीं दिखती हॉट स्टार्ट है.
स्प्लैश स्क्रीन के एलिमेंट और मैकेनिक्स
स्प्लैश स्क्रीन के एलिमेंट को एक्सएमएल रिसॉर्स फ़ाइलों से Android मेनिफ़ेस्ट फ़ाइल. हर एलिमेंट के लिए, हल्के और गहरे रंग वाले मोड के वर्शन उपलब्ध हैं.
स्प्लैश स्क्रीन पर अपने हिसाब से बदलाव किए जा सकते हैं. जैसे, ऐप्लिकेशन आइकॉन, आइकॉन बैकग्राउंड और विंडो बैकग्राउंड:
दूसरी इमेज में दिखाए गए इन एलिमेंट पर गौर करें:
1 ऐप्लिकेशन आइकॉन ऐसा वेक्टर होना चाहिए जिसे ड्रॉ किया जा सके. यह स्टैटिक या ऐनिमेटेड हो सकते हैं. हालांकि ऐनिमेशन की समयावधि अनलिमिटेड हो सकती है, लेकिन हमारी सलाह है कि 1,000 मिलीसेकंड से ज़्यादा न रखें. लॉन्चर आइकॉन डिफ़ॉल्ट रूप से मौजूद होता है.
2 आइकॉन का बैकग्राउंड वैकल्पिक और फ़ायदेमंद है, अगर आपको आइकॉन और विंडो के बैकग्राउंड के बीच ज़्यादा कंट्रास्ट की ज़रूरत होगी. अगर आपको किसी अडैप्टिव आइकॉन, अगर विंडो के बैकग्राउंड में काफ़ी कंट्रास्ट है, तो बैकग्राउंड दिखता है.
3 अडैप्टिव आइकॉन की तरह, फ़ोरग्राउंड में मास्क किया गया हो.
4 विंडो के बैकग्राउंड में एक ओपेक रंग. अगर विंडो का बैकग्राउंड सेट है और सादा रंग है, तो इसका इस्तेमाल किया जाता है अगर एट्रिब्यूट सेट नहीं है, तो डिफ़ॉल्ट तौर पर.
स्प्लैश स्क्रीन के डाइमेंशन
स्प्लैश स्क्रीन आइकॉन पर इन निर्देशों का पालन किया जाता है अडैप्टिव आइकॉन, इस तरह से:
- ब्रैंडेड इमेज: यह 200×80 dp होना चाहिए.
- आइकॉन के बैकग्राउंड के साथ ऐप्लिकेशन का आइकॉन: यह 240×240 dp का होना चाहिए और वृत्त 160 dp व्यास में.
- ऐप्लिकेशन का आइकॉन, जिसके बैकग्राउंड में आइकॉन न हो: यह 288×288 dp का होना चाहिए और उसमें फ़िट भी होना चाहिए 192 dp व्यास वाला वृत्त.
उदाहरण के लिए, अगर किसी इमेज का पूरा साइज़ 300×300 dp है, तो आइकॉन फ़िट होना चाहिए 200 dp के व्यास वाले सर्कल में. गोले के बाहर सब कुछ बदल जाता है दिखाई नहीं दे रहा (मास्क किया हुआ).
स्प्लैश स्क्रीन के ऐनिमेशन और उनके लॉन्च होने का क्रम
किसी ऐप्लिकेशन को कोल्ड स्टार्ट पर लॉन्च करने में, अक्सर देरी होने का मतलब होता है. स्प्लैश स्क्रीन पर ऐनिमेशन वाला आइकॉन जोड़ने से, यह साफ़-साफ़ पता लगता है कि यह कितना खूबसूरत लगता है और ज़्यादा प्रीमियम अनुभव मिलता है. उपयोगकर्ता की रिसर्च से पता चलता है कि कथित तौर पर शुरू हुए स्टार्टअप ऐनिमेशन देखते समय समय कम होता है.
लॉन्च क्रम के कॉम्पोनेंट के अंदर, स्प्लैश स्क्रीन ऐनिमेशन जोड़ा गया है, जैसे कि चौथी इमेज में दिखाया गया है.
ऐनिमेशन डालें: इसमें स्प्लैश स्क्रीन के लिए सिस्टम व्यू शामिल होता है. यह सिस्टम से कंट्रोल होता है. इसे अपनी पसंद के मुताबिक नहीं बनाया जा सकता.
स्प्लैश स्क्रीन (क्रम के "वेट" वाले हिस्से के दौरान दिखाई जाती है): स्प्लैश जिसे कस्टमाइज़ किया जा सकता है, जिससे आप अपना स्वयं का लोगो ऐनिमेशन प्रदान कर सकते है और ब्रैंडिंग. यह ज़रूरी शर्तों को पूरा करती हो इस पेज पर दी गई जानकारी ठीक से काम करे.
ऐनिमेशन से बाहर निकलना: इसमें स्प्लैश स्क्रीन को छिपाने वाला ऐनिमेशन होता है. अगर आप इसे पसंद के मुताबिक बनाना चाहते हैं, तो
SplashScreenView
और इसके आइकन. आप उनमें रूपांतरण की सेटिंग, अपारदर्शिता, और रंग. ऐसे मामले में, मैन्युअल रूप से स्प्लैश स्क्रीन को निकालें ऐनिमेशन तैयार है.
आइकॉन ऐनिमेशन चलाते समय, ऐप्लिकेशन के लॉन्च होने पर, आपको स्किप करने का विकल्प मिलता है
उन मामलों में जहां ऐप्लिकेशन पहले से तैयार है. यह ऐप्लिकेशन, onResume()
को ट्रिगर करता है
या स्प्लैश स्क्रीन का समय अपने-आप खत्म हो जाता है, इसलिए पक्का करें कि मोशन
आसानी से स्किप कर दिया जाता है. स्प्लैश स्क्रीन को सिर्फ़ onResume()
से खारिज करना ज़रूरी है
जब ऐप्लिकेशन विज़ुअल के हिसाब से स्थिर होता है, इसलिए कोई अतिरिक्त स्पिनर
की ज़रूरत नहीं है. अधूरे इंटरफ़ेस को पेश करने से उपयोगकर्ताओं को परेशानी हो सकती है और यह
ऐसा दिखावा करते हैं कि वह साफ़-साफ़ नहीं दिख रहा है या उसमें कोई सफ़ाई नहीं है.
स्प्लैश स्क्रीन ऐनिमेशन के लिए ज़रूरी शर्तें
स्प्लैश स्क्रीन के लिए इन निर्देशों का पालन करें:
बिना पारदर्शिता के सिंगल विंडो बैकग्राउंड का रंग सेट करें. दिन और रात मोड,
SplashScreen
कॉम्पैट लाइब्रेरी.पक्का करें कि ऐनिमेशन वाला आइकॉन इन शर्तों को पूरा करता हो:
- फ़ॉर्मैट: आइकॉन AnimatedvectorDrawable (एवीडी) एक्सएमएल.
- डाइमेंशन: एवीडी आइकॉन, अडैप्टिव आइकॉन से चार गुना बड़ा होना चाहिए
आइकॉन दिखाई देगा:
- आइकॉन का एरिया 432 dp होना चाहिए. दूसरे शब्दों में कहें, तो आइकॉन का एरिया चार गुना होना चाहिए बिना मास्क वाले अडैप्टिव आइकॉन का 108 dp एरिया.
- इमेज का अंदरूनी दो-तिहाई हिस्सा लॉन्चर आइकॉन पर दिखता है, और 288 dp होना चाहिए—दूसरे शब्दों में, 72 dp का चार गुना होना चाहिए जो अडैप्टिव आइकॉन का मास्क वाला हिस्सा भी बनता है.
- अवधि: हमारा सुझाव है कि फ़ोन पर 1,000 मि॰से॰ से ज़्यादा समय न लगाएं. इस्तेमाल करने के लिए शुरू होने में देरी होगी, लेकिन यह 166 मि॰से॰ से ज़्यादा नहीं हो सकता. अगर ऐप्लिकेशन स्टार्टअप समय 1,000 मि॰से॰ से ज़्यादा है, इसलिए लूपिंग ऐनिमेशन का इस्तेमाल करें.
स्प्लैश स्क्रीन को खारिज करने का सही समय तय करें. यह समय ऐसा होता है आपका ऐप्लिकेशन अपना पहला फ़्रेम बना लेता है. इसे ज़्यादा कस्टमाइज़ किया जा सकता है. इसके बारे में नीचे बताया गया है के बारे में है स्प्लैश स्क्रीन को लंबे समय तक स्क्रीन पर रखने से.
स्प्लैश स्क्रीन से जुड़े संसाधन
Google News ऐप्लिकेशन उदाहरण के लिए, स्टार्टर किट, जिनमें ऐनिमेशन बनाने, फ़ॉर्मैट करने, और उसे एवीडी में एक्सपोर्ट करने का तरीका बताया गया है. इसमें ये चीज़ें शामिल होती हैं:
- ऐनिमेशन की Adobe After Effects प्रोजेक्ट फ़ाइल.
- फ़ाइनल एक्सपोर्ट की गई AVD एक्सएमएल फ़ाइल.
- ऐनिमेशन के GIF का उदाहरण.
इन फ़ाइलों को डाउनलोड करने का मतलब है कि आप इनसे सहमत हैं: Google की सेवा की शर्तें.
Google निजता नीति बताती है कि डेटा का रखरखाव इस सेवा में किया जाता है.
अपने ऐप्लिकेशन की स्प्लैश स्क्रीन को पसंद के मुताबिक बनाएं
डिफ़ॉल्ट रूप से, SplashScreen
आपकी थीम का windowBackground
इस्तेमाल करता है, अगर
windowBackground
एक ही रंग है. स्प्लैश स्क्रीन को पसंद के मुताबिक़ बनाने के लिए,
एट्रिब्यूट को ऐप्लिकेशन थीम के मुताबिक एट्रिब्यूट किया जाता है.
अपने ऐप्लिकेशन की स्प्लैश स्क्रीन को अपनी पसंद के मुताबिक बनाया जा सकता है. इसके लिए, इनमें से कोई भी तरीका अपनाएं:
थीम एट्रिब्यूट सेट करके, उनकी थीम बदलें.
इसे लंबे समय तक स्क्रीन पर दिखाएं.
स्प्लैश स्क्रीन को खारिज करने के लिए, ऐनिमेशन को पसंद के मुताबिक बनाएं.
शुरू करें
SplashScreen
की मुख्य लाइब्रेरी में, Android 12 की स्प्लैश स्क्रीन का इस्तेमाल किया जा सकता है
को ऐक्सेस करने का तरीका बताएंगे. इसे अपने प्रोजेक्ट में जोड़ने के लिए, यहां दिया गया स्निपेट जोड़ें
आपकी build.gradle
फ़ाइल:
ग्रूवी
dependencies { implementation "androidx.core:core-splashscreen:1.0.0" }
Kotlin
dependencies { implementation("androidx.core:core-splashscreen:1.0.0") }
स्प्लैश स्क्रीन की थीम बदलने के लिए, थीम सेट करें
अपनी पसंद के मुताबिक बनाने के लिए, Activity
थीम में ये एट्रिब्यूट तय किए जा सकते हैं
स्प्लैश स्क्रीन पर देखा जा सकता है. अगर आपके पास पहले से लेगसी स्प्लैश स्क्रीन है
जो android:windowBackground
जैसे एट्रिब्यूट का इस्तेमाल करता है, उन पर विचार करें
Android 12 और उसके बाद के वर्शन के लिए, एक वैकल्पिक रिसॉर्स फ़ाइल उपलब्ध करा रही है.
इस्तेमाल की जाने वाली चीज़ें
windowSplashScreenBackground
बैकग्राउंड को किसी एक रंग से भरने के लिए:<item name="android:windowSplashScreenBackground">@color/...</item>
इस्तेमाल की जाने वाली चीज़ें
windowSplashScreenAnimatedIcon
शुरुआती विंडो के बीच में मौजूद आइकॉन को बदलने के लिए.सिर्फ़ Android 12 (एपीआई लेवल 32) को टारगेट करने वाले ऐप्लिकेशन के लिए, यह तरीका अपनाएं:
अगर ऑब्जेक्ट ऐनिमेट किया जा सकता है और ड्रॉ किया जा सकता है
AnimationDrawable
औरAnimatedVectorDrawable
,windowSplashScreenAnimationDuration
को इस पर सेट करें शुरुआती विंडो दिखाते समय ऐनिमेशन चलाएं. यह ज़रूरी नहीं है Android 13 के लिए अवधि होती है, क्योंकि अवधि का अनुमान सीधेAnimatedVectorDrawable
.<item name="android:windowSplashScreenAnimatedIcon">@drawable/...</item>
इस्तेमाल की जाने वाली चीज़ें
windowSplashScreenAnimationDuration
का इस्तेमाल करें. इसे सेट करना स्प्लैश स्क्रीन दिखने के असल समय पर कोई असर नहीं पड़ता दिखाया गया है, लेकिन स्प्लैश स्क्रीन से बाहर निकलने के तरीके को पसंद के मुताबिक बनाते समय इसे वापस लाया जा सकता है ऐनिमेशन इस्तेमाल किया जा रहा हैSplashScreenView.getIconAnimationDuration
. इसके बारे में नीचे मौजूद सेक्शन देखें स्प्लैश स्क्रीन को लंबे समय तक स्क्रीन पर रखने से देखें.<item name="android:windowSplashScreenAnimationDuration">1000</item>
windowSplashScreenIconBackgroundColor
का इस्तेमाल करें का इस्तेमाल करें. यह उपयोगी होता है, अगर विंडो के बैकग्राउंड और आइकॉन के बीच काफ़ी कंट्रास्ट नहीं है.<item name="android:windowSplashScreenIconBackgroundColor">@color/...</item>
इस्तेमाल करने के लिए
windowSplashScreenBrandingImage
का इस्तेमाल करें. हालांकि, ब्रैंडिंग के दिशा-निर्देशों का पालन नहीं करना चाहिए.<item name="android:windowSplashScreenBrandingImage">@drawable/...</item>
इस्तेमाल करने के लिए
windowSplashScreenBehavior
यह तय करने के लिए कि आपका ऐप्लिकेशन स्प्लैश स्क्रीन पर आइकॉन को हमेशा Android 13 और उसके बाद के वर्शन. डिफ़ॉल्ट मान 0 है, जो आइकॉन को अगर लॉन्च करने की गतिविधि,splashScreenStyle
को इस पर सेट करती है, तो स्प्लैश स्क्रीनSPLASH_SCREEN_STYLE_ICON
, या अगर लॉन्च करने की गतिविधि से यह पता नहीं चलता है कि स्टाइल. अगर आपको कभी भी खाली स्प्लैश स्क्रीन नहीं दिखानी है, तो ऐनिमेशन का आइकॉन दिखाना है, तो इसेicon_preferred
की वैल्यू पर सेट करें.<item name="android:windowSplashScreenBehavior">icon_preferred</item>
स्प्लैश स्क्रीन को लंबे समय तक स्क्रीन पर दिखाएं
ऐप्लिकेशन का पहला फ़्रेम बनाते ही, स्प्लैश स्क्रीन को खारिज कर दिया जाता है. अगर आपको
कुछ डेटा लोड करना पड़ता है, जैसे कि
लोकल डिस्क को एसिंक्रोनस रूप से कॉपी कर सकते हैं, आप
ViewTreeObserver.OnPreDrawListener
ऐप्लिकेशन को निलंबित करने के लिए.
अगर आपकी शुरुआती गतिविधि, ड्रॉइंग बनाने से पहले खत्म हो जाती है—उदाहरण के लिए,
कॉन्टेंट व्यू सेट करना और onResume
से पहले खत्म करना—पहले से ड्रॉ करना
लिसनर की ज़रूरत नहीं है.
Kotlin
// Create a new event for the activity. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Set the layout for the content view. setContentView(R.layout.main_activity) // Set up an OnPreDrawListener to the root view. val content: View = findViewById(android.R.id.content) content.viewTreeObserver.addOnPreDrawListener( object : ViewTreeObserver.OnPreDrawListener { override fun onPreDraw(): Boolean { // Check whether the initial data is ready. return if (viewModel.isReady) { // The content is ready. Start drawing. content.viewTreeObserver.removeOnPreDrawListener(this) true } else { // The content isn't ready. Suspend. false } } } ) }
Java
// Create a new event for the activity. @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout for the content view. setContentView(R.layout.main_activity); // Set up an OnPreDrawListener to the root view. final View content = findViewById(android.R.id.content); content.getViewTreeObserver().addOnPreDrawListener( new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { // Check whether the initial data is ready. if (mViewModel.isReady()) { // The content is ready. Start drawing. content.getViewTreeObserver().removeOnPreDrawListener(this); return true; } else { // The content isn't ready. Suspend. return false; } } }); }
स्प्लैश स्क्रीन को खारिज करने के लिए, ऐनिमेशन को पसंद के मुताबिक बनाएं
स्प्लैश स्क्रीन के ऐनिमेशन को अपनी पसंद के मुताबिक बनाया जा सकता है. इसके लिए
Activity.getSplashScreen()
.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // Add a callback that's called when the splash screen is animating to the // app content. splashScreen.setOnExitAnimationListener { splashScreenView -> // Create your custom animation. val slideUp = ObjectAnimator.ofFloat( splashScreenView, View.TRANSLATION_Y, 0f, -splashScreenView.height.toFloat() ) slideUp.interpolator = AnticipateInterpolator() slideUp.duration = 200L // Call SplashScreenView.remove at the end of your custom animation. slideUp.doOnEnd { splashScreenView.remove() } // Run your animation. slideUp.start() } }
Java
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... // Add a callback that's called when the splash screen is animating to the // app content. getSplashScreen().setOnExitAnimationListener(splashScreenView -> { final ObjectAnimator slideUp = ObjectAnimator.ofFloat( splashScreenView, View.TRANSLATION_Y, 0f, -splashScreenView.getHeight() ); slideUp.setInterpolator(new AnticipateInterpolator()); slideUp.setDuration(200L); // Call SplashScreenView.remove at the end of your custom animation. slideUp.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { splashScreenView.remove(); } }); // Run your animation. slideUp.start(); }); }
इस कॉलबैक के शुरू होने पर,
ड्रॉ करने लायक ऐनिमेशन वाला वेक्टर
शुरू होगा. ऐप्लिकेशन के लॉन्च होने की अवधि के आधार पर,
ड्रॉबल अपने ऐनिमेशन के बीच में हो सकता है. इस्तेमाल की जाने वाली चीज़ें
SplashScreenView.getIconAnimationStart
ताकि आपको पता चल सके कि ऐनिमेशन कब शुरू हुआ. बची हुई अवधि का हिसाब लगाया जा सकता है
आइकॉन ऐनिमेशन को इस तरह दिखाएगा:
Kotlin
// Get the duration of the animated vector drawable. val animationDuration = splashScreenView.iconAnimationDuration // Get the start time of the animation. val animationStart = splashScreenView.iconAnimationStart // Calculate the remaining duration of the animation. val remainingDuration = if (animationDuration != null && animationStart != null) { (animationDuration - Duration.between(animationStart, Instant.now())) .toMillis() .coerceAtLeast(0L) } else { 0L }
Java
// Get the duration of the animated vector drawable. Duration animationDuration = splashScreenView.getIconAnimationDuration(); // Get the start time of the animation. Instant animationStart = splashScreenView.getIconAnimationStart(); // Calculate the remaining duration of the animation. long remainingDuration; if (animationDuration != null && animationStart != null) { remainingDuration = animationDuration.minus( Duration.between(animationStart, Instant.now()) ).toMillis(); remainingDuration = Math.max(remainingDuration, 0L); } else { remainingDuration = 0L; }
अन्य संसाधन
- स्प्लैश स्क्रीन पर दिखने वाली मौजूदा सुविधा को Android 12 पर माइग्रेट करें और ज़्यादा
- अब Android ऐप्लिकेशन में, इसमें, स्प्लैश स्क्रीन को असल में लागू करने के तरीके को दिखाया गया है