স্প্ল্যাশ স্ক্রিন

Android 12 থেকে, SplashScreen API অ্যাপকে অ্যানিমেশনের সাথে লঞ্চ করতে দেয়, যার মধ্যে লঞ্চের সময় ইন-অ্যাপ মোশন, আপনার অ্যাপ আইকন দেখানো স্প্ল্যাশ স্ক্রিন এবং আপনার অ্যাপে ট্রানজিশন অন্তর্ভুক্ত। SplashScreen হল Window এবং তাই এটি Activity কভার করে।

ছবি ১. একটি স্প্ল্যাশ স্ক্রিন।

স্প্ল্যাশ স্ক্রিন অভিজ্ঞতা প্রতিটি অ্যাপ লঞ্চে স্ট্যান্ডার্ড ডিজাইন এলিমেন্ট নিয়ে আসে, তবে এটি কাস্টমাইজও করা যায় যাতে আপনার অ্যাপ তার অনন্য ব্র্যান্ডিং বজায় রাখতে পারে।

SplashScreen প্ল্যাটফর্ম API ব্যবহার করার পাশাপাশি, আপনি SplashScreen কম্প্যাট লাইব্রেরিও ব্যবহার করতে পারেন, যা SplashScreen API-কে র‍্যাপ করে।

স্প্ল্যাশ স্ক্রিন কীভাবে কাজ করে

অ্যাপের প্রসেস না চলাকালীন (কোল্ড স্টার্ট) অথবা Activity তৈরি না হলে (ওয়ার্ম স্টার্ট) কোনও ব্যবহারকারী অ্যাপ লঞ্চ করলে, নিম্নলিখিত ইভেন্টগুলি ঘটে:

  1. সিস্টেমটি থিম এবং আপনার সংজ্ঞায়িত যেকোন অ্যানিমেশন ব্যবহার করে স্প্ল্যাশ স্ক্রিন দেখায়।

  2. অ্যাপ রেডি হয়ে গেলে, স্প্ল্যাশ স্ক্রিন বন্ধ হয়ে যায় এবং অ্যাপ দেখা যায়।

হট স্টার্ট চলাকালীন স্প্ল্যাশ স্ক্রিন কখনও দেখানো হয় না।

স্প্ল্যাশ স্ক্রিনের এলিমেন্ট ও মেকানিক্স

স্প্ল্যাশ স্ক্রিনের এলিমেন্টগুলি Android ম্যানিফেস্ট ফাইলের XML রিসোর্স ফাইল দ্বারা সংজ্ঞায়িত করা হয়। প্রতিটি এলিমেন্টের জন্য লাইট ও ডার্ক মোড ভার্সন আছে।

স্প্ল্যাশ স্ক্রিনের কাস্টমাইজ করা যায় এমন এলিমেন্টের মধ্যে অ্যাপ আইকন, আইকন ব্যাকগ্রাউন্ড ও উইন্ডো ব্যাকগ্রাউন্ড অন্তর্ভুক্ত:

স্প্ল্যাশ স্ক্রিনে থাকা এলিমেন্টগুলি দেখানো একটি ছবি
ছবি ২. স্প্ল্যাশ স্ক্রিনের কাস্টমাইজ করা যায় এমন এলিমেন্ট।

ছবি ২-এ দেখানো নিম্নলিখিত এলিমেন্টগুলি বিবেচনা করুন:

১ অ্যাপ আইকন অবশ্যই ভেক্টর ড্রয়েবেল হতে হবে। এটি স্ট্যাটিক বা অ্যানিমেটেড হতে পারে। অ্যানিমেশনের সময়সীমা আনলিমিটেড হতে পারে, তবে আমরা ১,০০০ মিলিসেকেন্ডের বেশি না করার সাজেশন দিই। লঞ্চার আইকন ডিফল্ট হিসেবে সেট করা থাকে।

২ আইকন ব্যাকগ্রাউন্ড ঐচ্ছিক এবং আইকন ও উইন্ডো ব্যাকগ্রাউন্ডের মধ্যে আরও কন্ট্রাস্টের প্রয়োজন হলে এটি উপযোগী। আপনি যদি অ্যাডাপ্টিভ আইকন ব্যবহার করেন, তাহলে উইন্ডোর ব্যাকগ্রাউন্ডের সাথে যথেষ্ট কনট্রাস্ট থাকলে এটির ব্যাকগ্রাউন্ড দেখানো হয়।

৩ অ্যাডাপ্টিভ আইকনের মতো, ফোরগ্রাউন্ডের এক-তৃতীয়াংশ মাস্ক করা থাকে।

৪ উইন্ডো ব্যাকগ্রাউন্ড-এ একটিই অস্বচ্ছ রঙ থাকে। উইন্ডোর ব্যাকগ্রাউন্ড সেট করা থাকলে এবং সেটি সাধারণ রঙের হলে, অ্যাট্রিবিউট সেট করা না থাকলে ডিফল্ট হিসেবে সেটি ব্যবহার করা হয়।

স্প্ল্যাশ স্ক্রিনের ডাইমেনশন

স্প্ল্যাশ স্ক্রিন আইকন অ্যাডাপ্টিভ আইকনের মতো একই স্পেসিফিকেশন ব্যবহার করে, যেমন:

  • ব্র্যান্ডেড ছবি: এটি ২০০×৮০ dp হতে হবে।
  • আইকন ব্যাকগ্রাউন্ড সহ অ্যাপ আইকন: এটি অবশ্যই ২৪০×২৪০ ডিপি হতে হবে এবং ১৬০ ডিপি ব্যাসের বৃত্তের মধ্যে ফিট হতে হবে।
  • আইকন ব্যাকগ্রাউন্ড ছাড়া অ্যাপ আইকন: এটি অবশ্যই ২৮৮×২৮৮ ডিপি হতে হবে এবং ১৯২ ডিপি ব্যাসের বৃত্তের মধ্যে ফিট হতে হবে।

যেমন, কোনও ছবির সম্পূর্ণ সাইজ ৩০০×৩০০ ডিপি হলে, আইকনটি ২০০ ডিপি ব্যাসের বৃত্তের মধ্যে ফিট হতে হবে। বৃত্তের বাইরের সবকিছু অদৃশ্য (মাস্ক করা) হয়ে যায়।

সলিড ও স্বচ্ছ ব্যাকগ্রাউন্ডের জন্য বিভিন্ন আইকন ডাইমেনশন দেখানো একটি ছবি
ছবি ৩. সলিড ও স্বচ্ছ ব্যাকগ্রাউন্ডের জন্য স্প্ল্যাশ স্ক্রিন আইকনের মাপ।

স্প্ল্যাশ স্ক্রিন অ্যানিমেশন এবং লঞ্চ সিকোয়েন্স

কোল্ড স্টার্টে অ্যাপ লঞ্চ করার সাথে প্রায়ই অতিরিক্ত লেটেন্সি যুক্ত থাকে। আপনার স্প্ল্যাশ স্ক্রিনে অ্যানিমেটেড আইকন যোগ করলে তা দেখতে সুন্দর লাগে এবং আরও প্রিমিয়াম অভিজ্ঞতা প্রদান করে। ব্যবহারকারী সম্পর্কে রিসার্চ থেকে জানা যায় যে অ্যানিমেশন দেখার সময় স্টার্টআপের জন্য কম সময় লাগে বলে মনে হয়।

লঞ্চ সিকোয়েন্স কম্পোনেন্টের মধ্যে স্প্ল্যাশ স্ক্রিন অ্যানিমেশন এম্বেড করা থাকে, যেমন ছবি ৪-এ দেখানো হয়েছে।

একটি ছবি যা লঞ্চার আইকন ট্যাপ করা থেকে শুরু করে এবং স্ক্রিনটি বড় হওয়ার সাথে সাথে পূরণ করে বারোটি পরপর ফ্রেমে লঞ্চ সিকোয়েন্স দেখায়
ছবি ৪. লঞ্চ সিকোয়েন্স।
  1. অ্যানিমেশন লিখুন: এটি স্প্ল্যাশ স্ক্রিনে সিস্টেম ভিউ নিয়ে গঠিত। এটি সিস্টেম দ্বারা নিয়ন্ত্রিত হয় এবং কাস্টমাইজ করা যায় না।

  2. স্প্ল্যাশ স্ক্রিন (সিকোয়েন্সের "অপেক্ষা" অংশের সময় দেখানো হয়): স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করা যেতে পারে, যার ফলে আপনি নিজের লোগো অ্যানিমেশন ও ব্র্যান্ডিং ব্যবহার করতে পারবেন। সঠিকভাবে কাজ করার জন্য এটি অবশ্যই এই পৃষ্ঠায় বর্ণিত প্রয়োজনীয়তা পূরণ করতে হবে।

  3. এক্সিট অ্যানিমেশন: এতে এমন অ্যানিমেশন থাকে যা স্প্ল্যাশ স্ক্রিনকে লুকিয়ে রাখে। আপনি যদি এটি কাস্টমাইজ করতে চান, তাহলে SplashScreenView এবং এর আইকন ব্যবহার করুন। আপনি ট্রান্সফর্ম, অস্বচ্ছতা ও রঙের সেটিংস সহ এগুলির উপর যেকোনও অ্যানিমেশন চালাতে পারবেন। এই ক্ষেত্রে, অ্যানিমেশন শেষ হয়ে গেলে ম্যানুয়ালি স্প্ল্যাশ স্ক্রিন সরিয়ে দিন।

আইকন অ্যানিমেশন চালানোর সময়, অ্যাপ লঞ্চ আপনাকে সেইসব ক্ষেত্রে সিকোয়েন্স এড়িয়ে যাওয়ার বিকল্প দেয় যেখানে অ্যাপ আগে থেকেই প্রস্তুত থাকে। অ্যাপটি onResume() ট্রিগার করে অথবা স্প্ল্যাশ স্ক্রিন অটোমেটিক টাইম-আউট হয়ে যায়, তাই মোশনটি যাতে সহজেই এড়িয়ে যাওয়া যায় তা নিশ্চিত করুন। অ্যাপটি ভিজ্যুয়াল দৃষ্টিকোণ থেকে স্থিতিশীল হলে স্প্ল্যাশ স্ক্রিনটি শুধুমাত্র onResume() দিয়ে খারিজ করতে হবে, যাতে কোনও অতিরিক্ত স্পিনার প্রয়োজন না হয়। অসম্পূর্ণ ইন্টারফেস ব্যবহারকারীদের কাছে বিরক্তিকর হতে পারে এবং এটি অপ্রত্যাশিত বা অসম্পূর্ণ বলে মনে হতে পারে।

স্প্ল্যাশ স্ক্রিন অ্যানিমেশন সংক্রান্ত প্রয়োজনীয়তা

আপনার স্প্ল্যাশ স্ক্রিনকে নিম্নলিখিত স্পেসিফিকেশন মেনে চলতে হবে:

  • কোনও স্বচ্ছতা ছাড়াই একটি উইন্ডোর ব্যাকগ্রাউন্ডের রঙ সেট করুন। SplashScreen কম্প্যাট লাইব্রেরি-এর মাধ্যমে দিন ও রাত মোড কাজ করে।

  • অ্যানিমেটেড আইকন নিম্নলিখিত স্পেসিফিকেশন পূরণ করছে কিনা তা ভালোভাবে দেখে নিন:

    • ফর্ম্যাট: আইকনটি অবশ্যই একটি AnimatedVectorDrawable (AVD) XML হতে হবে।
    • ডাইমেনশন: একটি AVD আইকনকে অবশ্যই একটি অ্যাডাপ্টিভ আইকনের আকারের চার গুণ হতে হবে, যেমন:
      • আইকন এরিয়া ৪৩২ ডিপি হতে হবে—অন্যভাবে বলতে গেলে, ১০৮ ডিপি এরিয়া বিশিষ্ট আনমাস্কড অ্যাডাপ্টিভ আইকনের চার গুণ।
      • লঞ্চার আইকনে ছবির ভিতরের দুই-তৃতীয়াংশ দেখা যায়, এবং এটি অবশ্যই ২৮৮ ডিপি হতে হবে—অন্যভাবে বলতে গেলে, ৭২ ডিপির চার গুণ যা অ্যাডাপ্টিভ আইকনের ভিতরের মাস্ক করা অংশ তৈরি করে।
    • সময়সীমা: ফোনে ১,০০০ মিলিসেকেন্ডের বেশি না করার সাজেশন দেওয়া হয়। আপনি দেরিতে শুরু করতে পারেন, তবে এটি ১৬৬ মিলিসেকেন্ডের বেশি হতে পারে না। অ্যাপ স্টার্টআপের সময় ১,০০০ মিলিসেকেন্ডের বেশি হলে, লুপিং অ্যানিমেশন ব্যবহার করার কথা বিবেচনা করুন।
  • স্প্ল্যাশ স্ক্রিন বন্ধ করার জন্য একটি উপযুক্ত সময় নির্ধারণ করুন, যা আপনার অ্যাপের প্রথম ফ্রেম ড্র করার সময় ঘটে। আপনি এটি আরও কাস্টমাইজ করতে পারেন, যেমনটি স্প্ল্যাশ স্ক্রিন আরও বেশি সময় ধরে অন-স্ক্রিন রাখা সম্পর্কিত বিভাগে বর্ণনা করা হয়েছে।

স্প্ল্যাশ স্ক্রিন রিসোর্স

ছবি ৫. উদাহরণ AVD.

উদাহরণ স্টার্টার কিট ডাউনলোড করুন, যা দেখায় কীভাবে একটি অ্যানিমেশন তৈরি, ফর্ম্যাট এবং AVD-তে এক্সপোর্ট করতে হয়। এর মধ্যে নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত:

  • অ্যানিমেশনের Adobe After Effects প্রোজেক্ট ফাইল।
  • চূড়ান্ত এক্সপোর্ট করা AVD XML ফাইল।
  • অ্যানিমেশনের উদাহরণ GIF।

এইসব ফাইল ডাউনলোড করার মাধ্যমে, আপনি Google পরিষেবার শর্তাবলীতে সম্মতি জানাচ্ছেন।

এই পরিষেবায় ডেটা কীভাবে ম্যানেজ করা হয় সেটি Google-এর গোপনীয়তা নীতিতে উল্লেখ করা আছে।

আপনার অ্যাপে স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করুন

ডিফল্ট হিসেবে, windowBackground একটি রঙ হলে, SplashScreen আপনার থিমের windowBackground ব্যবহার করে। স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করতে, অ্যাপ থিমে অ্যাট্রিবিউট যোগ করুন।

নিম্নলিখিত যেকোনও একটি কাজ করে আপনার অ্যাপের স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করতে পারবেন:

  • থিমের অ্যাট্রিবিউট সেট করে এর চেহারা পরিবর্তন করুন।

  • এটি আরও বেশি সময় ধরে অন-স্ক্রিন রাখুন।

  • স্প্ল্যাশ স্ক্রিন বন্ধ করার জন্য অ্যানিমেশন কাস্টমাইজ করুন।

শুরু করুন

কোর SplashScreen লাইব্রেরি API 23 থেকে সব ডিভাইসে 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 এবং তার পরবর্তী ভার্সনের জন্য একটি বিকল্প রিসোর্স ফাইল প্রদান করার কথা বিবেচনা করুন।

  1. ব্যাকগ্রাউন্ডে নির্দিষ্ট একটি রঙ ব্যবহার করতে windowSplashScreenBackground ব্যবহার করুন:

    <item name="android:windowSplashScreenBackground">@color/...</item>
    
  2. শুরুর উইন্ডোর কেন্দ্রে থাকা আইকনটি পরিবর্তন করতে windowSplashScreenAnimatedIcon ব্যবহার করুন।

    শুধুমাত্র Android 12 (API লেভেল 32) টার্গেট করা অ্যাপের জন্য, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

    অবজেক্টটি যদি AnimationDrawable এবং AnimatedVectorDrawable-এর মাধ্যমে অ্যানিমেট ও ড্র করা যায়, তাহলে শুরুর উইন্ডো দেখানোর সময় অ্যানিমেশন চালানোর জন্য windowSplashScreenAnimationDuration সেট করুন। Android 13-এর জন্য এটি প্রয়োজন নেই, কারণ সময়সীমা সরাসরি AnimatedVectorDrawable থেকে অনুমান করা হয়।

    <item name="android:windowSplashScreenAnimatedIcon">@drawable/...</item>
    
  3. স্প্ল্যাশ স্ক্রিন আইকন অ্যানিমেশনের সময়সীমা উল্লেখ করতে windowSplashScreenAnimationDuration ব্যবহার করুন। এটি সেট করলে স্প্ল্যাশ স্ক্রিন দেখানোর প্রকৃত সময়ের উপর কোনও প্রভাব পড়ে না, তবে আপনি SplashScreenView.getIconAnimationDuration ব্যবহার করে স্প্ল্যাশ স্ক্রিন এক্সিট অ্যানিমেশন কাস্টমাইজ করার সময় এটি পুনরুদ্ধার করতে পারবেন। আরও বিবরণের জন্য স্প্ল্যাশ স্ক্রিন আরও বেশিক্ষণ অন-স্ক্রিন রাখা সম্পর্কে নিম্নলিখিত বিভাগটি দেখুন।

    <item name="android:windowSplashScreenAnimationDuration">1000</item>
    
  4. স্প্ল্যাশ স্ক্রিন আইকনের পিছনে ব্যাকগ্রাউন্ড সেট করতে windowSplashScreenIconBackgroundColor ব্যবহার করুন। উইন্ডোর ব্যাকগ্রাউন্ড ও আইকনের মধ্যে যথেষ্ট পার্থক্য না থাকলে এটি কাজে লাগে।

    <item name="android:windowSplashScreenIconBackgroundColor">@color/...</item>
    
  5. আপনি windowSplashScreenBrandingImage ব্যবহার করে স্প্ল্যাশ স্ক্রিনের নিচে দেখানোর জন্য কোনও ছবি সেট করতে পারবেন। তবে, ডিজাইন সংক্রান্ত নির্দেশিকা অনুযায়ী ব্র্যান্ডিং ছবি ব্যবহার না করার সাজেশন দেওয়া হয়।

    <item name="android:windowSplashScreenBrandingImage">@drawable/...</item>
    
  6. Android 13 ও তার পরবর্তী যেকোনও ভার্সনে আপনার অ্যাপ সবসময় স্প্ল্যাশ স্ক্রিনে আইকন দেখাবে কিনা তা নির্দিষ্ট করতে windowSplashScreenBehavior ব্যবহার করতে পারবেন। ডিফল্ট ভ্যালু হল ০, যা স্প্ল্যাশ স্ক্রিনে আইকন দেখায় যদি লঞ্চিং অ্যাক্টিভিটি 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
                }
            }
        }
    )
}

জাভা

// 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()
    }
}

জাভা

@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
}

জাভা

// 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;
}

অতিরিক্ত রিসোর্স