আপনার স্প্ল্যাশ স্ক্রিন ইমপ্লিমেন্টেশন Android 12 এবং তার পরবর্তী ভার্সনে মাইগ্রেট করুন

Android 11 বা তার আগের ভার্সনে কাস্টম স্প্ল্যাশ স্ক্রিন প্রয়োগ করলে, Android 12 বা তার পরের ভার্সনে এটি যাতে সঠিকভাবে দেখা যায় তা নিশ্চিত করতে, আপনার অ্যাপ SplashScreen API-তে মাইগ্রেট করুন।

Android 12 থেকে শুরু করে, সিস্টেম সব অ্যাপের জন্য কোল্ড ও ওয়ার্ম স্টার্ট-এ Android সিস্টেম ডিফল্ট স্প্ল্যাশ স্ক্রিন প্রয়োগ করে। ডিফল্ট হিসেবে, এই সিস্টেম স্প্ল্যাশ স্ক্রিন আপনার অ্যাপের লঞ্চার আইকন এলিমেন্ট এবং আপনার থিমের windowBackground ব্যবহার করে তৈরি করা হয়, যদি এটি একটি রঙ হয়।

আপনি অ্যাপ মাইগ্রেট না করলে, Android 12 ও তার পরবর্তী ভার্সনে অ্যাপ লঞ্চ করার অভিজ্ঞতা খারাপ হতে পারে বা অপ্রত্যাশিত ফলাফল দেখা যেতে পারে।

  • আপনার আগে থেকে থাকা স্প্ল্যাশ স্ক্রিন যদি কাস্টম থিম যা android:windowBackground ওভাররাইড করে, সেটি ব্যবহার করে প্রয়োগ করা হয়, তাহলে সিস্টেম আপনার কাস্টম স্প্ল্যাশ স্ক্রিনকে Android 12 এবং তার পরবর্তী ভার্সনে ডিফল্ট Android সিস্টেম স্প্ল্যাশ স্ক্রিন দিয়ে পরিবর্তন করে। এটি আপনার অ্যাপের জন্য অভিপ্রেত অভিজ্ঞতা নাও হতে পারে।

  • আপনার বর্তমান স্প্ল্যাশ স্ক্রিন যদি একটি নির্দিষ্ট Activity ব্যবহার করে প্রয়োগ করা হয়, তাহলে Android 12 বা তার পরবর্তী ভার্সনে চলা ডিভাইসে আপনার অ্যাপ চালু করলে ডুপ্লিকেট স্প্ল্যাশ স্ক্রিন দেখা যায়: সিস্টেম স্প্ল্যাশ স্ক্রিন দেখায়, তারপরে আপনার বর্তমান স্প্ল্যাশ স্ক্রিন অ্যাক্টিভিটি দেখা যায়।

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

SplashScreen কম্প্যাট লাইব্রেরি

আপনি সরাসরি SplashScreen API ব্যবহার করতে পারেন, তবে আমরা এর পরিবর্তে Androidx SplashScreen কম্প্যাট লাইব্রেরি ব্যবহার করার জন্য বিশেষভাবে সাজেস্ট করি। কম্প্যাট লাইব্রেরি SplashScreen API ব্যবহার করে, ব্যাকওয়ার্ড-কম্প্যাটিবিলিটি চালু করে এবং সব Android ভার্সন জুড়ে স্প্ল্যাশ স্ক্রিন ডিসপ্লের জন্য একই ধরনের লুক ও ফিল তৈরি করে। এই ডকুমেন্ট compat লাইব্রেরি ব্যবহার করে লেখা হয়েছে।

আপনি সরাসরি SplashScreen API ব্যবহার করে মাইগ্রেট করলে, Android 11 এবং তার আগের ভার্সনে আপনার স্প্ল্যাশ স্ক্রিন মাইগ্রেশনের আগের মতোই দেখাবে। Android 12 থেকে শুরু করে, স্প্ল্যাশ স্ক্রিনে Android 12-এর লুক ও ফিল রয়েছে।

আপনি SplashScreen কম্প্যাট লাইব্রেরি ব্যবহার করে মাইগ্রেট করলে, সিস্টেম Android-এর সব ভার্সনে একই স্প্ল্যাশ স্ক্রিন দেখায়।

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

Android 12 এবং তার পরবর্তী ভার্সনে আপনার আগে থেকে থাকা স্প্ল্যাশ স্ক্রিন ইমপ্লিমেন্টেশন মাইগ্রেট করতে নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন।

আপনি যে ধরনের ইমপ্লিমেন্টেশন থেকে মাইগ্রেট করছেন, এই পদ্ধতি তার সবকটির ক্ষেত্রেই প্রযোজ্য। আপনি যদি কোনও নির্দিষ্ট Activity থেকে মাইগ্রেট করেন, তাহলে আপনার কাস্টমাইজ করা স্প্ল্যাশ স্ক্রিন Activity মানিয়ে নেওয়ার জন্য এই ডকুমেন্টে বর্ণিত পেশাদার পদ্ধতি অনুসরণ করুন। এছাড়াও, SplashScreen API স্টার্টআপ লেটেন্সি কমায় যা ডেডিকেটেড স্প্ল্যাশ স্ক্রিন অ্যাক্টিভিটির সাথে চালু করা হয়।

আপনার স্প্ল্যাশ স্ক্রিন মাইগ্রেট করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. build.gradle ফাইলে, আপনার compileSdkVersion পরিবর্তন করুন এবং ডিপেন্ডেন্সিতে SplashScreen কম্প্যাট লাইব্রেরি অন্তর্ভুক্ত করুন।

    build.gradle
    
    android {
       compileSdkVersion 31
       ...
    }
    dependencies {
       ...
       implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
    }
    
  2. 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 অ্যাট্রিবিউট সেট করতে পারবেন।

  3. ম্যানিফেস্টে, শুরুর অ্যাক্টিভিটির থিমটি আগের ধাপে আপনার তৈরি করা থিম দিয়ে প্রতিস্থাপন করুন।

    <manifest>
       <application android:theme="@style/Theme.App.Starting">
        <!-- or -->
            <activity android:theme="@style/Theme.App.Starting">
    ...
    
  4. super.onCreate()-কে কল করার আগে, শুরুর অ্যাক্টিভিটিতে installSplashScreen-কে কল করুন।

    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)
    ...

    জাভা

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

জাভা

  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 API ব্যবহার করা সবচেয়ে ভাল।

আপনাকে কোনও ডায়ালগ দেখাতে হলে, আমরা সাজেস্ট করি যে পরবর্তী কাস্টম স্প্ল্যাশ স্ক্রিন অ্যাক্টিভিটি বা সিস্টেম স্প্ল্যাশ স্ক্রিনের পরে মূল অ্যাক্টিভিটির উপরে সেটি দেখান।

কাস্টম স্প্ল্যাশ স্ক্রিন অ্যাক্টিভিটি সরিয়ে দিন

সাধারণত, আমরা আপনার আগের কাস্টম স্প্ল্যাশ স্ক্রিন Activity সম্পূর্ণভাবে সরানোর সাজেশন দিই যাতে স্প্ল্যাশ স্ক্রিনের ডুপ্লিকেশন এড়ানো যায়, দক্ষতা বাড়ানো যায় এবং স্প্ল্যাশ স্ক্রিন লোড হওয়ার সময় কমানো যায়। অপ্রয়োজনীয় স্প্ল্যাশ স্ক্রিন অ্যাক্টিভিটি দেখানো এড়াতে আপনি বিভিন্ন টেকনিক ব্যবহার করতে পারেন।

  • আপনার কম্পোনেন্ট, মডিউল বা লাইব্রেরির জন্য ধীরে ধীরে লোড করার পদ্ধতি ব্যবহার করুন। অ্যাপ লঞ্চ করার সময় কাজ করার জন্য প্রয়োজন নেই এমন কম্পোনেন্ট বা লাইব্রেরি লোড বা ইনিশিয়ালাইজ করা এড়িয়ে চলুন। অ্যাপের প্রয়োজন হলে, পরে সেগুলি লোড করুন।

    আপনার অ্যাপের সঠিকভাবে কাজ করার জন্য যদি কোনও কম্পোনেন্টের সত্যিই প্রয়োজন হয়, তাহলে সেটি শুধুমাত্র তখনই লোড করুন যখন এটি সত্যিই প্রয়োজন এবং লঞ্চের সময় নয়, অথবা অ্যাপ শুরু হওয়ার পরে এটি লোড করার জন্য একটি ব্যাকগ্রাউন্ড থ্রেড ব্যবহার করুন। আপনার Application.onCreate() যতটা সম্ভব হালকা রাখার চেষ্টা করুন।

    এছাড়াও, অ্যাপ্লিকেশন স্টার্টআপে কম্পোনেন্ট ইনিশিয়ালাইজ করতে অ্যাপ স্টার্টআপ লাইব্রেরি ব্যবহার করে আপনি উপকৃত হতে পারেন। এটি করার সময়, অ্যাক্টিভিটি শুরু করার জন্য প্রয়োজনীয় সব মডিউল লোড করতে ভুলবেন না এবং ধীরে ধীরে লোড করা মডিউল উপলভ্য হওয়ার সময় কোনও জ্যাঙ্ক যোগ করবেন না।

  • স্থানীয়ভাবে অল্প পরিমাণ ডেটা লোড করার সময় একটি প্লেসহোল্ডার তৈরি করুন। সাজেস্ট করা থিমিং পদ্ধতি ব্যবহার করুন এবং অ্যাপ রেডি না হওয়া পর্যন্ত রেন্ডারিং হোল্ড করে রাখুন। ব্যাকওয়ার্ড কম্প্যাটিবল স্প্ল্যাশ স্ক্রিন প্রয়োগ করতে, স্প্ল্যাশ স্ক্রিন আরও বেশি সময় ধরে স্ক্রিনে রাখুন লিঙ্কে উল্লেখ করা ধাপগুলি অনুসরণ করুন।

  • প্লেসহোল্ডার দেখুন। অনির্দিষ্ট সময়সীমা সহ নেটওয়ার্ক-ভিত্তিক লোডের জন্য, স্প্ল্যাশ স্ক্রিন বাতিল করুন এবং অ্যাসিঙ্ক্রোনাস লোডিংয়ের জন্য প্লেসহোল্ডার দেখান। কন্টেন্ট এরিয়াতে সূক্ষ্ম অ্যানিমেশন প্রয়োগ করার কথা বিবেচনা করুন যা লোডিং স্ট্যাটাস দেখায়। কন্টেন্ট লোড হওয়ার সময় যাতে ট্রানজিশন মসৃণ হয়, তার জন্য লোড করা কন্টেন্টের স্ট্রাকচার যেন স্কেলিটন স্ট্রাকচারের সাথে যতটা সম্ভব মেলে তা নিশ্চিত করুন।

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

ছবি ১. UI প্লেসহোল্ডার দেখানো হচ্ছে।