برنامه‌نویسی اندروید

ساخت Splash Screen در اندروید (راهنمای کامل و کاربردی)

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 جدا استفاده کنید—البته با رعایت اصول عملکردی.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *