আপনার স্প্ল্যাশ স্ক্রিন বাস্তবায়নকে Android 12 এবং পরবর্তীতে স্থানান্তর করুন

যদি আপনি অ্যান্ড্রয়েড ১১ বা তার আগের ভার্সনে একটি কাস্টম স্প্ল্যাশ স্ক্রিন প্রয়োগ করেন, তাহলে আপনার অ্যাপটি SplashScreen API-তে স্থানান্তর করুন যাতে এটি অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী ভার্সনে সঠিকভাবে প্রদর্শিত হয়।

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

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

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

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

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

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

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

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

যদি আপনি SplashScreen compat লাইব্রেরি ব্যবহার করে মাইগ্রেট করেন, তাহলে সিস্টেমটি 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 এর মান drawable বা animated drawable এ সেট করুন। অন্যান্য বৈশিষ্ট্য ঐচ্ছিক।

    <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 কল করুন।

    কোটলিন

    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 স্প্ল্যাশ স্ক্রিন অবজেক্টটি ফেরত দেয়, যা আপনি ঐচ্ছিকভাবে অ্যানিমেশন কাস্টমাইজ করতে বা স্প্ল্যাশ স্ক্রিনকে দীর্ঘ সময়ের জন্য স্ক্রিনে রাখতে ব্যবহার করতে পারেন। অ্যানিমেশন কাস্টমাইজ করার বিষয়ে আরও তথ্যের জন্য, স্প্ল্যাশ স্ক্রিনকে দীর্ঘ সময়ের জন্য স্ক্রিনে রাখুন এবং স্প্ল্যাশ স্ক্রিনকে খারিজ করার জন্য অ্যানিমেশনটি কাস্টমাইজ করুন দেখুন।

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

অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী সংস্করণের জন্য স্প্ল্যাশ স্ক্রিনে স্থানান্তরিত হওয়ার পরে, আপনার পূর্ববর্তী কাস্টম স্প্ল্যাশ স্ক্রিন Activity দিয়ে কী করবেন তা স্থির করুন। আপনার কাছে নিম্নলিখিত বিকল্পগুলি রয়েছে:

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

কাস্টম অ্যাক্টিভিটি প্রদর্শিত হতে বাধা দিন

যদি আপনার পূর্ববর্তী স্প্ল্যাশ স্ক্রিন Activity মূলত রাউটিংয়ের জন্য ব্যবহৃত হয়, তাহলে এটি অপসারণের উপায়গুলি বিবেচনা করুন। উদাহরণস্বরূপ, আপনি সরাসরি আসল অ্যাক্টিভিটির সাথে লিঙ্ক করতে পারেন অথবা সাবকম্পোনেন্ট সহ একটি একক অ্যাক্টিভিটিতে যেতে পারেন। যদি এটি সম্ভব না হয়, তাহলে আপনি রাউটিং অ্যাক্টিভিটি ঠিক রাখতে কিন্তু এটি রেন্ডারিং থেকে বিরত রাখতে SplashScreen.setKeepOnScreenCondition ব্যবহার করতে পারেন। এটি করার ফলে স্প্ল্যাশ স্ক্রিনটি পরবর্তী অ্যাক্টিভিটিতে স্থানান্তরিত হয় এবং একটি মসৃণ রূপান্তর সমর্থন করে।

কোটলিন

  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 স্থানধারক দেখানো হচ্ছে।