আপনি যদি অ্যান্ড্রয়েড ১১ বা তার আগের সংস্করণে একটি কাস্টম স্প্ল্যাশ স্ক্রিন প্রয়োগ করে থাকেন, তবে আপনার অ্যাপটিকে SplashScreen এপিআই-তে মাইগ্রেট করুন, যাতে এটি অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী সংস্করণগুলিতে সঠিকভাবে প্রদর্শিত হয়।
অ্যান্ড্রয়েড ১২ থেকে, সিস্টেমটি সমস্ত অ্যাপের কোল্ড এবং ওয়ার্ম স্টার্টের সময় অ্যান্ড্রয়েড সিস্টেমের ডিফল্ট স্প্ল্যাশ স্ক্রিন প্রয়োগ করে। ডিফল্টরূপে, এই সিস্টেম স্প্ল্যাশ স্ক্রিনটি আপনার অ্যাপের লঞ্চার আইকন এলিমেন্ট এবং আপনার থিমের windowBackground ব্যবহার করে তৈরি করা হয়, যদি থিমটি একরঙা হয়।
আপনি যদি আপনার অ্যাপটি মাইগ্রেট না করেন, তাহলে অ্যান্ড্রয়েড ১২ এবং এর পরবর্তী সংস্করণগুলোতে আপনার অ্যাপ চালু করার অভিজ্ঞতা খারাপ হতে পারে বা এর ফলে অপ্রত্যাশিত ফলাফল দেখা দিতে পারে।
আপনার বিদ্যমান স্প্ল্যাশ স্ক্রিনটি যদি এমন কোনো কাস্টম থিম ব্যবহার করে তৈরি করা হয় যা
android:windowBackgroundওভাররাইড করে , তাহলে অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী সংস্করণগুলোতে সিস্টেম আপনার কাস্টম স্প্ল্যাশ স্ক্রিনটিকে ডিফল্ট অ্যান্ড্রয়েড সিস্টেম স্প্ল্যাশ স্ক্রিন দিয়ে প্রতিস্থাপন করে। এটি আপনার অ্যাপের কাঙ্ক্ষিত অভিজ্ঞতা নাও হতে পারে।আপনার বিদ্যমান স্প্ল্যাশ স্ক্রিনটি যদি একটি ডেডিকেটেড
Activityব্যবহার করে তৈরি করা হয়ে থাকে, তাহলে অ্যান্ড্রয়েড ১২ বা তার পরবর্তী সংস্করণের ডিভাইসে আপনার অ্যাপটি চালু করলে দুটি স্প্ল্যাশ স্ক্রিন দেখা যায়: প্রথমে সিস্টেম স্প্ল্যাশ স্ক্রিনটি প্রদর্শিত হয়, এবং তারপরে আপনার বিদ্যমান স্প্ল্যাশ স্ক্রিন অ্যাক্টিভিটিটি আসে।
এই নথিতে বর্ণিত মাইগ্রেশন প্রক্রিয়াটি সম্পন্ন করার মাধ্যমে আপনি এই নিম্নমানের বা অনাকাঙ্ক্ষিত অভিজ্ঞতাগুলো প্রতিরোধ করতে পারেন। মাইগ্রেট করার পর, এপিআই স্টার্টআপ টাইম উন্নত করে, আপনাকে স্প্ল্যাশ স্ক্রিন অভিজ্ঞতার উপর সম্পূর্ণ নিয়ন্ত্রণ দেয় এবং প্ল্যাটফর্মের অন্যান্য অ্যাপের সাথে আরও সামঞ্জস্যপূর্ণ একটি লঞ্চ অভিজ্ঞতা তৈরি করে।
স্প্ল্যাশস্ক্রিন সামঞ্জস্যপূর্ণ লাইব্রেরি
আপনি সরাসরি SplashScreen এপিআই (SplashScreen API) ব্যবহার করতে পারেন, কিন্তু আমরা এর পরিবর্তে অ্যান্ড্রয়েডএক্স স্প্ল্যাশস্ক্রিন কম্প্যাট লাইব্রেরি (Androidx SplashScreen compat library) ব্যবহার করার জন্য দৃঢ়ভাবে সুপারিশ করি। কম্প্যাট লাইব্রেরিটি SplashScreen এপিআই ব্যবহার করে, ব্যাকওয়ার্ড-কম্প্যাটিবিলিটি (backward-compatibility) সক্ষম করে এবং সমস্ত অ্যান্ড্রয়েড সংস্করণে স্প্ল্যাশ স্ক্রিন প্রদর্শনের জন্য একটি সামঞ্জস্যপূর্ণ রূপ ও অনুভূতি তৈরি করে। এই ডকুমেন্টটি কম্প্যাট লাইব্রেরি ব্যবহার করে লেখা হয়েছে।
আপনি যদি সরাসরি SplashScreen এপিআই (SplashScreen API) ব্যবহার করে মাইগ্রেট করেন, তাহলে অ্যান্ড্রয়েড ১১ এবং তার আগের সংস্করণগুলোতে আপনার স্প্ল্যাশ স্ক্রিনটি মাইগ্রেশনের আগের মতোই দেখাবে। অ্যান্ড্রয়েড ১২ থেকে শুরু করে, স্প্ল্যাশ স্ক্রিনটি অ্যান্ড্রয়েড ১২-এর নিজস্ব চেহারা ও অনুভূতি লাভ করবে।
আপনি যদি SplashScreen কম্প্যাট লাইব্রেরি ব্যবহার করে মাইগ্রেট করেন, তাহলে সিস্টেমটি অ্যান্ড্রয়েডের সব সংস্করণে একই স্প্ল্যাশ স্ক্রিন প্রদর্শন করে।
আপনার স্প্ল্যাশ স্ক্রিন বাস্তবায়ন স্থানান্তর করুন
আপনার বিদ্যমান স্প্ল্যাশ স্ক্রিন বাস্তবায়নকে অ্যান্ড্রয়েড ১২ এবং পরবর্তী সংস্করণে স্থানান্তরিত করতে নিম্নলিখিত ধাপগুলো সম্পন্ন করুন।
আপনি যে ধরনের ইমপ্লিমেন্টেশন থেকেই মাইগ্রেট করুন না কেন, এই পদ্ধতিটি তার জন্য প্রযোজ্য। আপনি যদি একটি ডেডিকেটেড Activity থেকে মাইগ্রেট করেন, তবে আপনার কাস্টমাইজড স্প্ল্যাশ স্ক্রিন Activity অ্যাডাপ্ট করার জন্য এই ডকুমেন্টে বর্ণিত সেরা অনুশীলনগুলো অনুসরণ করুন। SplashScreen এপিআই একটি ডেডিকেটেড স্প্ল্যাশ স্ক্রিন অ্যাক্টিভিটির কারণে সৃষ্ট স্টার্টআপ ল্যাটেন্সিও হ্রাস করে।
আপনার স্প্ল্যাশ স্ক্রিন স্থানান্তর করতে, নিম্নলিখিতগুলি করুন:
build.gradleফাইলে আপনারcompileSdkVersionপরিবর্তন করুন এবং dependencies-এSplashScreenকম্প্যাট লাইব্রেরিটি অন্তর্ভুক্ত করুন।build.gradle android { compileSdkVersion 31 ... } dependencies { ... implementation 'androidx.core:core-splashscreen:1.0.0-beta02' }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অ্যাট্রিবিউটটি সেট করতে পারেন।ম্যানিফেস্টে, স্টার্টিং অ্যাক্টিভিটির থিমটি পূর্ববর্তী ধাপে তৈরি করা থিম দিয়ে প্রতিস্থাপন করুন।
<manifest> <application android:theme="@style/Theme.App.Starting"> <!-- or --> <activity android:theme="@style/Theme.App.Starting"> ...স্টার্টিং অ্যাক্টিভিটিতে
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 উপাদানের জন্য লোডিং ইন্ডিকেটর দেখাতে পারেন, যেমনটি নিচের চিত্রে দেখানো হয়েছে। পরেরবার যখন ব্যবহারকারী আপনার অ্যাপে ফিরে আসবেন, তখন আপনি আরও সাম্প্রতিক কন্টেন্ট লোড করার সময় এই ক্যাশ করা কন্টেন্টটি দেখাতে পারেন।