অ্যান্ড্রয়েড 12 থেকে শুরু করে, SplashScreen
এপিআই অ্যানিমেশন সহ অ্যাপগুলিকে লঞ্চ করতে দেয়, যার মধ্যে লঞ্চের সময় একটি ইন-অ্যাপ মোশন, একটি স্প্ল্যাশ স্ক্রিন আপনার অ্যাপ আইকন দেখায় এবং আপনার অ্যাপে একটি রূপান্তর সহ। একটি SplashScreen
একটি Window
এবং তাই একটি Activity
কভার করে।
স্প্ল্যাশ স্ক্রিন অভিজ্ঞতা প্রতিটি অ্যাপ লঞ্চে স্ট্যান্ডার্ড ডিজাইনের উপাদান নিয়ে আসে, তবে এটি কাস্টমাইজযোগ্য যাতে আপনার অ্যাপটি তার অনন্য ব্র্যান্ডিং বজায় রাখতে পারে।
SplashScreen
প্ল্যাটফর্ম API ব্যবহার করার পাশাপাশি, আপনি SplashScreen
কমপ্যাট লাইব্রেরিও ব্যবহার করতে পারেন, যা SplashScreen
এপিআইকে মোড়ানো হয়।
স্প্ল্যাশ স্ক্রিন কিভাবে কাজ করে
যখন কোনও ব্যবহারকারী একটি অ্যাপ চালু করেন যখন অ্যাপের প্রক্রিয়াটি চলছে না (একটি ঠান্ডা শুরু ) বা Activity
তৈরি হয় না (একটি উষ্ণ শুরু ), নিম্নলিখিত ঘটনাগুলি ঘটে:
সিস্টেমটি থিম এবং আপনার সংজ্ঞায়িত যেকোনো অ্যানিমেশন ব্যবহার করে স্প্ল্যাশ স্ক্রিন দেখায়।
অ্যাপটি প্রস্তুত হলে, স্প্ল্যাশ স্ক্রিনটি বাতিল হয়ে যায় এবং অ্যাপটি প্রদর্শিত হয়।
হট স্টার্টের সময় স্প্ল্যাশ স্ক্রিন কখনই দেখায় না।
স্প্ল্যাশ স্ক্রিনের উপাদান এবং মেকানিক্স
স্প্ল্যাশ স্ক্রিনের উপাদানগুলিকে অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলের XML রিসোর্স ফাইল দ্বারা সংজ্ঞায়িত করা হয়। প্রতিটি উপাদানের জন্য হালকা এবং অন্ধকার মোড সংস্করণ আছে।
একটি স্প্ল্যাশ স্ক্রিনের কাস্টমাইজযোগ্য উপাদানগুলিতে অ্যাপ আইকন, আইকন ব্যাকগ্রাউন্ড এবং উইন্ডো ব্যাকগ্রাউন্ড থাকে:
চিত্র 2 এ দেখানো নিম্নলিখিত উপাদানগুলি বিবেচনা করুন:
1 অ্যাপ্লিকেশন আইকন একটি ভেক্টর অঙ্কনযোগ্য হতে হবে. এটি স্ট্যাটিক বা অ্যানিমেটেড হতে পারে। যদিও অ্যানিমেশনের সীমাহীন সময়কাল থাকতে পারে, আমরা 1,000 মিলিসেকেন্ডের বেশি না করার পরামর্শ দিই। লঞ্চার আইকন ডিফল্ট।
2 আইকন ব্যাকগ্রাউন্ড ঐচ্ছিক এবং দরকারী যদি আপনার আইকন এবং উইন্ডো ব্যাকগ্রাউন্ডের মধ্যে আরও বৈসাদৃশ্যের প্রয়োজন হয়। আপনি একটি অভিযোজিত আইকন ব্যবহার করলে, উইন্ডোর পটভূমির সাথে যথেষ্ট বৈসাদৃশ্য থাকলে এর পটভূমি প্রদর্শিত হয়।
3 অভিযোজিত আইকনগুলির মতো, অগ্রভাগের এক-তৃতীয়াংশ মুখোশযুক্ত।
4 উইন্ডোর পটভূমিতে একটি একক অস্বচ্ছ রঙ থাকে। যদি উইন্ডো ব্যাকগ্রাউন্ড সেট করা থাকে এবং একটি প্লেইন কালার হয়, তাহলে অ্যাট্রিবিউট সেট না থাকলে এটি ডিফল্টরূপে ব্যবহৃত হয়।
স্প্ল্যাশ পর্দা মাত্রা
স্প্ল্যাশ স্ক্রিন আইকনটি অভিযোজিত আইকনগুলির মতো একই স্পেসিফিকেশন ব্যবহার করে, নিম্নরূপ:
- ব্র্যান্ডেড ছবি: এটি 200×80 dp হতে হবে।
- একটি আইকন ব্যাকগ্রাউন্ড সহ অ্যাপ আইকন: এটি অবশ্যই 240×240 dp হতে হবে এবং 160 dp ব্যাসের একটি বৃত্তের মধ্যে ফিট করতে হবে৷
- আইকন ব্যাকগ্রাউন্ড ছাড়া অ্যাপ আইকন: এটি অবশ্যই 288×288 dp হতে হবে এবং 192 dp ব্যাসের একটি বৃত্তের মধ্যে ফিট করতে হবে।
উদাহরণস্বরূপ, যদি একটি চিত্রের পূর্ণ আকার 300×300 dp হয়, তাহলে আইকনটিকে 200 dp ব্যাসের একটি বৃত্তের মধ্যে ফিট করতে হবে। বৃত্তের বাইরের সবকিছু অদৃশ্য হয়ে যায় (মুখোশ)।
স্প্ল্যাশ স্ক্রিন অ্যানিমেশন এবং লঞ্চের ক্রম
অতিরিক্ত লেটেন্সি প্রায়ই কোল্ড স্টার্টে একটি অ্যাপ চালু করার সাথে যুক্ত থাকে। আপনার স্প্ল্যাশ স্ক্রিনে একটি অ্যানিমেটেড আইকন যুক্ত করা সুস্পষ্ট নান্দনিক আবেদন রাখে এবং আরও প্রিমিয়াম অভিজ্ঞতা প্রদান করে। ব্যবহারকারী গবেষণা দেখায় যে একটি অ্যানিমেশন দেখার সময় অনুভূত স্টার্টআপ সময় কম।
একটি স্প্ল্যাশ স্ক্রিন অ্যানিমেশন লঞ্চ সিকোয়েন্সের উপাদানগুলির মধ্যে এমবেড করা হয়েছে, যেমনটি চিত্র 4 এ দেখানো হয়েছে।
অ্যানিমেশন লিখুন: এটি স্প্ল্যাশ স্ক্রিনে সিস্টেম ভিউ নিয়ে গঠিত। এটি সিস্টেম দ্বারা নিয়ন্ত্রিত এবং কাস্টমাইজযোগ্য নয়।
স্প্ল্যাশ স্ক্রিন (অনুক্রমের "অপেক্ষা" অংশের সময় দেখানো হয়েছে): স্প্ল্যাশ স্ক্রিনটি কাস্টমাইজ করা যেতে পারে, আপনাকে আপনার নিজস্ব লোগো অ্যানিমেশন এবং ব্র্যান্ডিং সরবরাহ করতে দেয়৷ সঠিকভাবে কাজ করার জন্য এই পৃষ্ঠায় বর্ণিত প্রয়োজনীয়তাগুলি অবশ্যই পূরণ করতে হবে।
প্রস্থান অ্যানিমেশন: এটি অ্যানিমেশন নিয়ে গঠিত যা স্প্ল্যাশ স্ক্রীন লুকিয়ে রাখে। আপনি যদি এটি কাস্টমাইজ করতে চান, তাহলে
SplashScreenView
এবং এর আইকন ব্যবহার করুন। রূপান্তর, অস্বচ্ছতা এবং রঙের জন্য সেটিংস সহ আপনি তাদের উপর যেকোনো অ্যানিমেশন চালাতে পারেন। এই ক্ষেত্রে, অ্যানিমেশন হয়ে গেলে ম্যানুয়ালি স্প্ল্যাশ স্ক্রিনটি সরিয়ে ফেলুন।
আইকন অ্যানিমেশন চালানোর সময়, অ্যাপ লঞ্চ আপনাকে ক্রমটি এড়িয়ে যাওয়ার বিকল্প দেয় যেখানে অ্যাপটি আগে প্রস্তুত থাকে। অ্যাপটি onResume()
বা স্প্ল্যাশ স্ক্রীনের সময় স্বয়ংক্রিয়ভাবে ট্রিগার করে, তাই নিশ্চিত করুন যে গতিটি আরামদায়কভাবে এড়ানো যায়। স্প্ল্যাশ স্ক্রিনটি কেবলমাত্র onResume()
দিয়ে খারিজ করা উচিত যখন অ্যাপটি একটি ভিজ্যুয়াল দৃষ্টিকোণ থেকে স্থিতিশীল থাকে, তাই কোনও অতিরিক্ত স্পিনারের প্রয়োজন নেই। একটি অসম্পূর্ণ ইন্টারফেস প্রবর্তন ব্যবহারকারীদের জন্য বিরক্তিকর হতে পারে এবং অনির্দেশ্যতা বা পোলিশের অভাবের ছাপ দিতে পারে।
স্প্ল্যাশ স্ক্রিন অ্যানিমেশন প্রয়োজনীয়তা
আপনার স্প্ল্যাশ স্ক্রীনকে অবশ্যই নিম্নলিখিত বৈশিষ্ট্যগুলি মেনে চলতে হবে:
কোনো স্বচ্ছতা ছাড়াই একটি একক উইন্ডোর পটভূমির রঙ সেট করুন।
SplashScreen
কম্প্যাট লাইব্রেরির সাথে ডে এবং নাইট মোড সমর্থিত।নিশ্চিত করুন যে অ্যানিমেটেড আইকন নিম্নলিখিত বৈশিষ্ট্যগুলি পূরণ করে:
- বিন্যাস: আইকনটি অবশ্যই একটি অ্যানিমেটেডভেক্টর ড্রয়েবল (AVD) XML হতে হবে৷
- মাত্রা: একটি AVD আইকন অবশ্যই একটি অভিযোজিত আইকনের আকারের চারগুণ হতে হবে, নিম্নরূপ:
- আইকন এরিয়া অবশ্যই 432 dp হতে হবে—অন্য কথায়, একটি আনমাস্কড অ্যাডাপটিভ আইকনের 108 ডিপি ক্ষেত্রফলের চারগুণ।
- ছবির ভিতরের দুই-তৃতীয়াংশ লঞ্চার আইকনে দৃশ্যমান, এবং অবশ্যই 288 ডিপি হতে হবে—অন্য কথায়, 72 ডিপির চারগুণ যা একটি অভিযোজিত আইকনের ভেতরের মুখোশযুক্ত এলাকা তৈরি করে।
- সময়কাল: আমরা ফোনে 1,000 ms অতিক্রম না করার পরামর্শ দিই। আপনি একটি বিলম্বিত শুরু ব্যবহার করতে পারেন, কিন্তু এটি 166 ms এর বেশি হতে পারে না। অ্যাপ স্টার্টআপের সময় 1,000 ms-এর বেশি হলে, একটি লুপিং অ্যানিমেশন বিবেচনা করুন।
স্প্ল্যাশ স্ক্রীন খারিজ করার জন্য একটি উপযুক্ত সময় স্থাপন করুন, যা আপনার অ্যাপের প্রথম ফ্রেমটি আঁকার সাথে সাথে ঘটে। স্প্ল্যাশ স্ক্রীনটিকে অন-স্ক্রীনে দীর্ঘ সময়ের জন্য রাখার বিষয়ে বিভাগে বর্ণিত হিসাবে আপনি এটিকে আরও কাস্টমাইজ করতে পারেন।
স্প্ল্যাশ পর্দা সম্পদ
উদাহরণ স্টার্টার কিট ডাউনলোড করুন, যা দেখায় কিভাবে একটি AVD-তে অ্যানিমেশন তৈরি, ফর্ম্যাট এবং রপ্তানি করা যায়। এটি নিম্নলিখিত অন্তর্ভুক্ত:
- অ্যানিমেশনের Adobe After Effects প্রজেক্ট ফাইল।
- চূড়ান্ত রপ্তানি করা AVD XML ফাইল।
- অ্যানিমেশনের GIF উদাহরণ।
এই ফাইলগুলি ডাউনলোড করার মাধ্যমে, আপনি Google পরিষেবার শর্তাবলীতে সম্মত হন৷
Google গোপনীয়তা নীতি বর্ণনা করে যে এই পরিষেবাতে ডেটা কীভাবে পরিচালনা করা হয়৷
আপনার অ্যাপে স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করুন
ডিফল্টরূপে, যদি windowBackground
একক রঙের হয় তবে SplashScreen
আপনার থিমের windowBackground
ব্যবহার করে। স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করতে, অ্যাপ থিমে বৈশিষ্ট্য যোগ করুন।
আপনি নিম্নলিখিত যে কোনও একটি করে আপনার অ্যাপের স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করতে পারেন:
এর চেহারা পরিবর্তন করতে থিমের বৈশিষ্ট্যগুলি সেট করুন।
এটি দীর্ঘ সময়ের জন্য পর্দায় রাখুন।
স্প্ল্যাশ স্ক্রিন খারিজ করার জন্য অ্যানিমেশন কাস্টমাইজ করুন।
শুরু করুন
কোর SplashScreen
লাইব্রেরি API 23 থেকে সমস্ত ডিভাইসে অ্যান্ড্রয়েড 12 স্প্ল্যাশ স্ক্রিন নিয়ে আসে৷ এটিকে আপনার প্রকল্পে যুক্ত করতে, আপনার build.gradle
ফাইলে নিম্নলিখিত স্নিপেটটি যুক্ত করুন:
গ্রোভি
dependencies { implementation "androidx.core:core-splashscreen:1.0.0" }
কোটলিন
dependencies { implementation("androidx.core:core-splashscreen:1.0.0") }
স্প্ল্যাশ স্ক্রিনের চেহারা পরিবর্তন করতে একটি থিম সেট করুন
আপনার অ্যাপ্লিকেশানের জন্য স্প্ল্যাশ স্ক্রিন কাস্টমাইজ করতে আপনি আপনার Activity
থিমে নিম্নলিখিত বৈশিষ্ট্যগুলি নির্দিষ্ট করতে পারেন৷ আপনার যদি ইতিমধ্যেই একটি লিগ্যাসি স্প্ল্যাশ স্ক্রিন বাস্তবায়ন থাকে যা android:windowBackground
এর মতো বৈশিষ্ট্যগুলি ব্যবহার করে, তাহলে Android 12 এবং উচ্চতর সংস্করণের জন্য একটি বিকল্প সংস্থান ফাইল সরবরাহ করার কথা বিবেচনা করুন৷
একটি নির্দিষ্ট একক রঙ দিয়ে পটভূমি পূরণ করতে
windowSplashScreenBackground
ব্যবহার করুন:<item name="android:windowSplashScreenBackground">@color/...</item>
প্রারম্ভিক উইন্ডোর কেন্দ্রে আইকন প্রতিস্থাপন করতে
windowSplashScreenAnimatedIcon
ব্যবহার করুন।শুধুমাত্র Android 12 (API লেভেল 32) টার্গেট করা অ্যাপগুলির জন্য, নিম্নলিখিতগুলি করুন:
যদি বস্তুটি অ্যানিমেটেবল এবং
AnimationDrawable
এবংAnimatedVectorDrawable
মাধ্যমে আঁকা যায়, তাহলে শুরুর উইন্ডোটি দেখানোর সময় অ্যানিমেশন চালানোর জন্যwindowSplashScreenAnimationDuration
সেট করুন। Android 13 এর জন্য এটির প্রয়োজন নেই, কারণ সময়কাল সরাসরিAnimatedVectorDrawable
থেকে অনুমান করা হয়েছে।<item name="android:windowSplashScreenAnimatedIcon">@drawable/...</item>
স্প্ল্যাশ স্ক্রীন আইকন অ্যানিমেশনের সময়কাল নির্দেশ করতে
windowSplashScreenAnimationDuration
ব্যবহার করুন। স্প্ল্যাশ স্ক্রীন দেখানোর প্রকৃত সময়ে এটি সেট করার কোনো প্রভাব নেই, তবেSplashScreenView.getIconAnimationDuration
ব্যবহার করে স্প্ল্যাশ স্ক্রীন প্রস্থান অ্যানিমেশন কাস্টমাইজ করার সময় আপনি এটি পুনরুদ্ধার করতে পারেন। আরও বিশদ বিবরণের জন্য স্প্ল্যাশ স্ক্রীন অন-স্ক্রীনে দীর্ঘ সময়ের জন্য রাখার বিষয়ে নিম্নলিখিত বিভাগটি দেখুন।<item name="android:windowSplashScreenAnimationDuration">1000</item>
স্প্ল্যাশ স্ক্রীন আইকনের পিছনে একটি পটভূমি সেট করতে
windowSplashScreenIconBackgroundColor
ব্যবহার করুন। উইন্ডো ব্যাকগ্রাউন্ড এবং আইকনের মধ্যে যথেষ্ট বৈসাদৃশ্য না থাকলে এটি কার্যকর।<item name="android:windowSplashScreenIconBackgroundColor">@color/...</item>
স্প্ল্যাশ স্ক্রিনের নীচে দেখানোর জন্য একটি চিত্র সেট করতে আপনি
windowSplashScreenBrandingImage
ব্যবহার করতে পারেন। যাইহোক, ডিজাইন নির্দেশিকা একটি ব্র্যান্ডিং ইমেজ ব্যবহার করার বিরুদ্ধে সুপারিশ.<item name="android:windowSplashScreenBrandingImage">@drawable/...</item>
আপনার অ্যাপ সবসময় অ্যান্ড্রয়েড 13 এবং উচ্চতর স্প্ল্যাশ স্ক্রিনে আইকন প্রদর্শন করে কিনা তা নির্দিষ্ট করতে আপনি
windowSplashScreenBehavior
ব্যবহার করতে পারেন। ডিফল্ট মান হল 0, যা স্প্ল্যাশ স্ক্রিনে আইকনটি প্রদর্শন করে যদি লঞ্চিং অ্যাক্টিভিটিsplashScreenStyle
SPLASH_SCREEN_STYLE_ICON
এ সেট করে, অথবা যদি লঞ্চিং অ্যাক্টিভিটি কোনো শৈলী নির্দিষ্ট না করে তাহলে সিস্টেম আচরণ অনুসরণ করে। আপনি যদি কখনও খালি স্প্ল্যাশ স্ক্রীন প্রদর্শন করতে না চান এবং সর্বদা অ্যানিমেটেড আইকনটি প্রদর্শন করতে চান তবে এটিকেicon_preferred
মানতে সেট করুন।<item name="android:windowSplashScreenBehavior">icon_preferred</item>
স্প্ল্যাশ স্ক্রিন অন-স্ক্রিন দীর্ঘ সময়ের জন্য রাখুন
আপনার অ্যাপ প্রথম ফ্রেম আঁকার সাথে সাথে স্প্ল্যাশ স্ক্রিনটি বাতিল হয়ে যাবে। আপনার যদি অল্প পরিমাণ ডেটা লোড করার প্রয়োজন হয়, যেমন একটি স্থানীয় ডিস্ক থেকে অ্যাসিঙ্ক্রোনাসভাবে ইন-অ্যাপ সেটিংস লোড করা, আপনি অ্যাপটিকে প্রথম ফ্রেম আঁকতে স্থগিত করতে ViewTreeObserver.OnPreDrawListener
ব্যবহার করতে পারেন।
যদি আপনার শুরুর ক্রিয়াকলাপ অঙ্কন করার আগে শেষ হয়ে যায়—উদাহরণস্বরূপ, বিষয়বস্তু ভিউ সেট না করে এবং onResume
আগে শেষ করে—প্রি-ড্র শ্রোতার প্রয়োজন হয় না।
কোটলিন
// 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()
এর মাধ্যমে স্প্ল্যাশ স্ক্রিনের অ্যানিমেশনকে আরও কাস্টমাইজ করতে পারেন।
কোটলিন
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
ব্যবহার করুন। আপনি নিম্নলিখিত হিসাবে আইকন অ্যানিমেশনের অবশিষ্ট সময়কাল গণনা করতে পারেন:
কোটলিন
// 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; }
অতিরিক্ত সম্পদ
- আপনার বিদ্যমান স্প্ল্যাশ স্ক্রিন বাস্তবায়নকে Android 12 এবং উচ্চতর সংস্করণে স্থানান্তর করুন
- এখন অ্যান্ড্রয়েড অ্যাপে, যা একটি স্প্ল্যাশ স্ক্রিনের বাস্তব-বিশ্ব বাস্তবায়ন দেখায়