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

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

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

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

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

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

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

SplashScreen compat লাইব্রেরি

আপনি সরাসরি 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 compat লাইব্রেরি যোগ করুন।

    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 প্লেসহোল্ডার দেখানো হচ্ছে।