ساخت Splash Screen در اندروید (راهنمای کامل و کاربردی)
اسپلش اسکرین (Splash Screen) اولین صفحهای است که کاربر هنگام اجرای اپلیکیشن مشاهده میکند. این صفحه معمولاً شامل لوگو، نام اپ یا یک انیمیشن کوتاه است و نقش مهمی در ایجاد اولین تجربه کاربری دارد.
در این مقاله، روشهای اصولی ساخت Splash Screen در اندروید را بررسی میکنیم؛ هم با روش مدرن (اندروید 12 به بعد) و هم روشهای قدیمیتر برای سازگاری بیشتر.
🎯 چرا Splash Screen مهم است؟
- ایجاد حس حرفهای بودن اپلیکیشن
- نمایش برند (لوگو و رنگ سازمانی)
- آمادهسازی اولیه اپ (لود دیتا، تنظیمات و…)
- جلوگیری از نمایش صفحه سفید در شروع برنامه
🟢 روش استاندارد (اندروید 12 به بالا)
از اندروید 12 به بعد، گوگل API رسمی برای Splash Screen معرفی کرده که بهترین روش استفاده از آن است.
1. افزودن dependency
در فایل build.gradle:
implementation "androidx.core:core-splashscreen:1.0.1"
2. تعریف تم Splash در themes.xml
<style name="Theme.MyApp.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/black</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_logo</item>
<item name="postSplashScreenTheme">@style/Theme.MyApp</item>
</style>
3. اعمال تم در AndroidManifest.xml
<activity
android:name=".MainActivity"
android:theme="@style/Theme.MyApp.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
4. استفاده در Activity
در MainActivity:
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
⏳ کنترل مدت نمایش Splash
اگر نیاز دارید Splash کمی بیشتر نمایش داده شود:
splashScreen.setKeepOnScreenCondition {
viewModel.isLoading.value
}
🟡 روش قدیمی (برای اندرویدهای پایینتر)
اگر از نسخههای قدیمیتر پشتیبانی میکنید:
1. ساخت یک Activity جدا
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Handler(Looper.getMainLooper()).postDelayed({
startActivity(Intent(this, MainActivity::class.java))
finish()
}, 2000)
}
}
2. طراحی layout
activity_splash.xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:src="@drawable/ic_logo"
android:layout_centerInParent="true"
android:layout_width="120dp"
android:layout_height="120dp"/>
</RelativeLayout>
3. معرفی به عنوان Launcher
در AndroidManifest:
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
نکات مهم حرفهای
کارهایی که نباید انجام دهید:
- استفاده از delay مصنوعی زیاد
- لود سنگین در UI Thread
- نمایش Splash بیش از 2-3 ثانیه
بهترین روشها:
- استفاده از Splash فقط برای branding
- انجام لود دیتا به صورت async
- استفاده از ViewModel یا افزودن انیمیشن
میتوانید از:
- Lottie Animation
- Animated Vector Drawable
- MotionLayout
برای جذابتر کردن Splash استفاده کنید.
مقایسه دو روش
| ویژگی | روش جدید | روش قدیمی |
|---|---|---|
| پرفورمنس | عالی | متوسط |
| استاندارد گوگل | ✅ | ❌ |
| سادگی | بالا | متوسط |
| کنترل کامل UI | محدود |
🧠 جمعبندی
اگر اپلیکیشن شما حداقل از اندروید 12 پشتیبانی میکند، حتماً از API جدید Splash Screen استفاده کنید. این روش هم استاندارد است و هم تجربه کاربری بهتری ارائه میدهد.
اما اگر نیاز به سازگاری با نسخههای قدیمیتر دارید، میتوانید از روش Activity جدا استفاده کنید—البته با رعایت اصول عملکردی.