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

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

Splash Screen در اندروید

Splash Screen یا صفحه آغازین، اولین چیزی است که کاربر پس از اجرای اپلیکیشن اندرویدی مشاهده می‌کند. این صفحه معمولاً شامل لوگو، نام برند یا یک انیمیشن کوتاه است و در فاصله زمانی کوتاهی که برنامه در حال بارگذاری است، تجربه‌ای روان و حرفه‌ای برای کاربر ایجاد می‌کند. اگر این صفحه به‌درستی طراحی و پیاده‌سازی شود، علاوه بر تقویت هویت بصری برند، باعث می‌شود شروع کار با اپلیکیشن سریع‌تر و جذاب‌تر به نظر برسد.

در نسخه‌های جدید اندروید، به‌ویژه از Android 12 (API 31) به بعد، گوگل سیستم استانداردی برای پیاده‌سازی Splash Screen معرفی کرده است که ظاهر و رفتار یکپارچه‌ای را در تمامی دستگاه‌ها فراهم می‌کند. با این حال، بسیاری از کاربران هنوز از نسخه‌های قدیمی‌تر اندروید استفاده می‌کنند؛ بنابراین توسعه‌دهندگان باید راهکاری را انتخاب کنند که علاوه بر بهره‌گیری از قابلیت‌های جدید، با نسخه‌های قدیمی نیز سازگار باشد.

در این مقاله از مجموعه آموزش اندروید، به‌صورت گام‌به‌گام با مفهوم Splash Screen در اندروید آشنا می‌شویم، مزایا و بهترین شیوه‌های طراحی آن را بررسی می‌کنیم و نحوه پیاده‌سازی صفحه آغازین را هم با SplashScreen API در اندروید ۱۲ و بالاتر و هم با روش‌های سازگار با نسخه‌های قدیمی‌تر یاد خواهیم گرفت. در پایان نیز با نکات مهمی آشنا می‌شوید که به شما کمک می‌کنند یک Splash Screen سریع، استاندارد و مطابق با راهنمای طراحی گوگل ایجاد کنید.

چرا Splash Screen مهم است؟

صفحه آغازین یا Splash Screen تنها یک تصویر یا لوگوی ساده نیست؛ بلکه بخشی از تجربه کاربری (UX) محسوب می‌شود و تأثیر زیادی بر اولین برداشت کاربران از اپلیکیشن دارد. یک Splash Screen استاندارد می‌تواند شروع اجرای برنامه را روان‌تر نشان دهد و در عین حال فرصت مناسبی برای آماده‌سازی اولیه اپلیکیشن فراهم کند.

Splash Screen در اندروید

Splash Screen در اندروید

مهم‌ترین مزایای استفاده از Splash Screen در  برنامه نویسی اندروید عبارت‌اند از:

ایجاد حس حرفه‌ای بودن اپلیکیشن

اولین ثانیه‌های استفاده از یک برنامه، نقش مهمی در شکل‌گیری ذهنیت کاربران دارد. یک Splash Screen زیبا و استاندارد باعث می‌شود اپلیکیشن حرفه‌ای‌تر، باکیفیت‌تر و قابل اعتمادتر به نظر برسد.

تقویت هویت برند

صفحه آغازین بهترین مکان برای نمایش لوگو، نام اپلیکیشن و رنگ‌های سازمانی است. این کار باعث می‌شود کاربران از همان ابتدا با هویت بصری برند شما ارتباط برقرار کنند و برند در ذهن آن‌ها ماندگارتر شود.

آماده‌سازی اولیه اپلیکیشن

در مدت زمان نمایش Splash Screen می‌توان برخی عملیات ضروری را در پس‌زمینه انجام داد، مانند:

  • بررسی وضعیت ورود کاربر (Login)
  • بارگذاری تنظیمات برنامه
  • مقداردهی اولیه کتابخانه‌ها
  • اتصال به سرویس‌های موردنیاز
  • آماده‌سازی داده‌های اولیه و کش (Cache)

البته این عملیات باید در زمان کوتاهی انجام شوند تا باعث افزایش زمان انتظار کاربر نشوند.

جلوگیری از نمایش صفحه سفید هنگام اجرای برنامه

بدون Splash Screen، ممکن است هنگام اجرای اپلیکیشن برای چند لحظه یک صفحه سفید یا سیاه نمایش داده شود که تجربه کاربری نامطلوبی ایجاد می‌کند. استفاده از Splash Screen این فاصله را به شکلی زیبا و استاندارد پوشش می‌دهد و حس روان بودن اجرای برنامه را افزایش می‌دهد.

ایجاد تجربه کاربری بهتر

یک Splash Screen استاندارد باعث می‌شود انتقال از اجرای برنامه به صفحه اصلی کاملاً طبیعی و یکپارچه انجام شود. این موضوع به‌ویژه در اپلیکیشن‌هایی که زمان راه‌اندازی بیشتری دارند، اهمیت زیادی پیدا می‌کند.

نکته: طبق راهنمای طراحی گوگل، Splash Screen نباید به‌عنوان صفحه تبلیغاتی استفاده شود یا بیش از چند ثانیه نمایش داده شود. هدف اصلی آن، نمایش هویت برند و ایجاد یک شروع سریع و روان برای ورود کاربر به اپلیکیشن است.

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

از Android 12 (API 31) به بعد، گوگل Splash Screen API را به‌عنوان روش رسمی و استاندارد برای نمایش صفحه آغازین معرفی کرده است. این API تجربه‌ای یکپارچه در تمام دستگاه‌های اندرویدی ایجاد می‌کند و باعث می‌شود هنگام اجرای برنامه، لوگو و رنگ برند شما به‌صورت استاندارد نمایش داده شوند. همچنین با استفاده از کتابخانه AndroidX Core SplashScreen می‌توان همین رفتار را برای نسخه‌های قدیمی‌تر اندروید نیز فراهم کرد.

مزایای استفاده از Splash Screen API

استفاده از API رسمی گوگل نسبت به روش‌های قدیمی مزایای متعددی دارد:

  • پیاده‌سازی مطابق استانداردهای طراحی گوگل (Material Design)
  • نمایش خودکار Splash Screen در هنگام اجرای برنامه
  • سازگاری با نسخه‌های قدیمی‌تر اندروید از طریق کتابخانه AndroidX
  • امکان شخصی‌سازی رنگ پس‌زمینه، آیکون و انیمیشن خروج
  • حذف نیاز به ساخت Activity جداگانه برای Splash Screen در بسیاری از پروژه‌ها

مراحل پیاده‌سازی

برای استفاده از Splash Screen API مراحل زیر را انجام دهید:

1. افزودن کتابخانه SplashScreen

ابتدا وابستگی زیر را به فایل build.gradle (Module) اضافه کنید:

implementation "androidx.core:core-splashscreen:1.2.0"

این کتابخانه قابلیت‌های Splash Screen را علاوه بر اندروید 12، برای نسخه‌های قدیمی‌تر نیز فراهم می‌کند.

2. ایجاد تم مخصوص Splash Screen

یک Theme جدید ایجاد کنید که از Theme.SplashScreen ارث‌بری کند و ویژگی‌های صفحه آغازین را مشخص نماید.

<style name="Theme.MyApp.Starting" parent="Theme.SplashScreen">
    <item name="windowSplashScreenBackground">@color/splash_background</item>
    <item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
    <item name="postSplashScreenTheme">@style/Theme.MyApp</item>
</style>

در این تنظیمات:

  • windowSplashScreenBackground رنگ پس‌زمینه را مشخص می‌کند.
  • windowSplashScreenAnimatedIcon آیکون یا لوگوی برنامه را نمایش می‌دهد.
  • postSplashScreenTheme تم اصلی برنامه را پس از بسته شدن Splash Screen اعمال می‌کند.

3. اعمال Theme در AndroidManifest

تم جدید را برای Activity اصلی برنامه قرار دهید:

<activity
    android:name=".MainActivity"
    android:theme="@style/Theme.MyApp.Starting">
</activity>

4. نصب Splash Screen در MainActivity

در متد onCreate و قبل از super.onCreate()، API را فعال کنید:

override fun onCreate(savedInstanceState: Bundle?) {
    installSplashScreen()

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}

با همین چند خط کد، سیستم به‌صورت خودکار Splash Screen را نمایش داده و پس از آماده شدن برنامه، آن را حذف می‌کند.

نکته مهم

گوگل توصیه می‌کند Splash Screen فقط برای نمایش هویت بصری برنامه و پوشش زمان کوتاه راه‌اندازی استفاده شود. از نگه داشتن طولانی‌مدت Splash Screen یا نمایش تبلیغات در این صفحه خودداری کنید، زیرا باعث کاهش کیفیت تجربه کاربری و کندتر به نظر رسیدن اپلیکیشن می‌شود. در صورت نیاز به انجام عملیات زمان‌بر، بهتر است پس از ورود به صفحه اصلی، آن‌ها را به‌صورت غیرهمزمان (Asynchronous) انجام دهید.

افزودن Splash Screen در اندروید

افزودن Splash Screen در اندروید

روش قدیمی ساخت Splash Screen (برای اندرویدهای پایین‌تر)

پیش از معرفی Splash Screen API در اندروید 12، رایج‌ترین روش برای پیاده‌سازی صفحه آغازین، ایجاد یک Activity جداگانه با نام‌هایی مانند SplashActivity بود. در این روش، ابتدا صفحه Splash نمایش داده می‌شد و پس از مدت کوتاهی یا بعد از انجام عملیات اولیه، کاربر به صفحه اصلی برنامه هدایت می‌شد.

اگرچه این روش همچنان در پروژه‌های قدیمی یا برنامه‌هایی که از نسخه‌های پایین‌تر اندروید پشتیبانی می‌کنند قابل استفاده است، اما گوگل برای پروژه‌های جدید استفاده از Splash Screen API را توصیه می‌کند.

مراحل پیاده‌سازی

1. ایجاد SplashActivity

ابتدا یک Activity جدید برای صفحه آغازین ایجاد کنید:

class SplashActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        Handler(Looper.getMainLooper()).postDelayed({
            startActivity(Intent(this, MainActivity::class.java))
            finish()
        }, 2000)
    }
}

در این مثال، Splash Screen به مدت ۲ ثانیه نمایش داده شده و سپس MainActivity اجرا می‌شود.

2. طراحی رابط کاربری Splash

در فایل activity_splash.xml می‌توانید لوگو یا نام برنامه را در مرکز صفحه قرار دهید:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">

    <ImageView
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_centerInParent="true"
        android:src="@drawable/ic_launcher_foreground"/>

</RelativeLayout>

در صورت تمایل می‌توانید به‌جای تصویر ثابت، از Lottie یا سایر انیمیشن‌ها نیز استفاده کنید.

3. معرفی SplashActivity به عنوان Activity اصلی

در فایل AndroidManifest.xml، SplashActivity را به‌عنوان Activity شروع برنامه تعریف کنید:

<activity
    android:name=".SplashActivity"
    android:exported="true">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

</activity>

<activity
    android:name=".MainActivity"/>

معایب این روش

هرچند این روش سال‌ها مورد استفاده قرار گرفته است، اما معایبی نیز دارد:

  • ایجاد یک Activity اضافی فقط برای نمایش Splash Screen
  • افزایش زمان شروع برنامه در صورت استفاده از تأخیر (Delay) غیرضروری
  • امکان مشاهده پرش (Jump) بین Splash و صفحه اصلی
  • عدم هماهنگی کامل با استانداردهای جدید اندروید
  • نیاز به مدیریت دستی انیمیشن‌ها و انتقال بین Activityها

چه زمانی از این روش استفاده کنیم؟

اگر پروژه شما از نسخه‌های قدیمی اندروید پشتیبانی می‌کند و هنوز امکان مهاجرت به Splash Screen API را ندارید، این روش همچنان قابل استفاده است. با این حال، در پروژه‌های جدید یا پروژه‌هایی که از AndroidX Core SplashScreen استفاده می‌کنند، بهتر است از روش استاندارد گوگل بهره ببرید تا تجربه کاربری روان‌تر، نگهداری ساده‌تر و سازگاری بیشتری با نسخه‌های جدید اندروید داشته باشید.

Splash Screen در اندروید 12

Splash Screen در اندروید 12

مقایسه روش قدیمی و روش استاندارد ساخت Splash Screen

با معرفی Splash Screen API در اندروید 12، نحوه پیاده‌سازی صفحه آغازین تغییر کرده است. اگرچه روش قدیمی هنوز در برخی پروژه‌ها استفاده می‌شود، اما گوگل استفاده از API جدید را برای تمامی پروژه‌های جدید توصیه می‌کند. در جدول زیر، تفاوت‌های این دو روش را مشاهده می‌کنید:

ویژگی روش قدیمی (SplashActivity) روش استاندارد (Splash Screen API)
نسخه اندروید تمام نسخه‌ها اندروید 12 به بالا (با پشتیبانی AndroidX برای نسخه‌های قدیمی)
نیاز به Activity جداگانه ✅ بله ❌ خیر
پیاده‌سازی نسبتاً ساده اما قدیمی ساده، مدرن و استاندارد
سرعت اجرای برنامه ممکن است کندتر به نظر برسد سریع‌تر و روان‌تر
تجربه کاربری (UX) متوسط بسیار بهتر
هماهنگی با Material Design محدود کامل
پشتیبانی رسمی گوگل ❌ خیر ✅ بله
قابلیت شخصی‌سازی محدود بالا (رنگ، آیکون، انیمیشن خروج و…)
مناسب برای پروژه‌های جدید ❌ پیشنهاد نمی‌شود ✅ بهترین انتخاب

کدام روش را انتخاب کنیم؟

اگر در حال توسعه یک اپلیکیشن جدید هستید، بدون شک Splash Screen API بهترین انتخاب است. این روش مطابق با استانداردهای گوگل طراحی شده، نیاز به Activity اضافی ندارد و تجربه کاربری روان‌تری را ارائه می‌دهد. علاوه بر این، با استفاده از کتابخانه AndroidX Core SplashScreen می‌توانید همین پیاده‌سازی را روی نسخه‌های قدیمی‌تر اندروید نیز داشته باشید.

در مقابل، SplashActivity بیشتر برای پروژه‌های قدیمی یا اپلیکیشن‌هایی مناسب است که هنوز ساختار آن‌ها بر پایه روش‌های قدیمی توسعه یافته و مهاجرت به API جدید برای آن‌ها در حال حاضر امکان‌پذیر نیست.

پیشنهاد: اگر پروژه شما از AndroidX استفاده می‌کند، بهتر است از همان ابتدا Splash Screen API را پیاده‌سازی کنید. این روش علاوه بر سادگی، آینده‌نگرانه‌تر است و با نسخه‌های جدید اندروید سازگاری کامل دارد.

المان های Splash Screen در اندروید

المان های Splash Screen در اندروید

جمع‌بندی

Splash Screen یکی از مهم‌ترین بخش‌های هر اپلیکیشن اندرویدی است که نقش قابل توجهی در ایجاد اولین تجربه کاربری و نمایش هویت برند دارد. یک صفحه آغازین استاندارد نه‌تنها ظاهر حرفه‌ای‌تری به برنامه می‌بخشد، بلکه می‌تواند زمان کوتاه راه‌اندازی اپلیکیشن را نیز به شکلی روان و طبیعی برای کاربر پوشش دهد.

اگر اپلیکیشن شما از Android 12 (API 31) یا نسخه‌های بالاتر پشتیبانی می‌کند، بهترین انتخاب استفاده از Splash Screen API است. این API به‌صورت رسمی توسط گوگل ارائه شده، با اصول Material Design سازگار است و بدون نیاز به Activity جداگانه، تجربه‌ای یکپارچه و مدرن در اختیار کاربران قرار می‌دهد.

در مقابل، اگر پروژه شما باید از نسخه‌های قدیمی‌تر اندروید نیز پشتیبانی کند، همچنان می‌توانید از روش SplashActivity استفاده کنید. البته توصیه می‌شود از ایجاد تأخیرهای غیرضروری خودداری کنید و تنها عملیات ضروری و کوتاه‌مدت را در زمان نمایش Splash Screen انجام دهید تا سرعت اجرای برنامه و تجربه کاربری تحت تأثیر قرار نگیرد.

در نهایت، اگر پروژه جدیدی را توسعه می‌دهید، پیشنهاد می‌شود از AndroidX Core SplashScreen استفاده کنید. این کتابخانه امکان بهره‌مندی از Splash Screen API را حتی در نسخه‌های قدیمی‌تر اندروید فراهم می‌کند و به شما کمک می‌کند با یک پیاده‌سازی استاندارد، مدرن و قابل نگهداری، از تمامی مزایای صفحه آغازین در اندروید بهره‌مند شوید. این رویکرد علاوه بر کاهش پیچیدگی کد، باعث می‌شود اپلیکیشن شما با استانداردهای فعلی توسعه اندروید همگام باشد.

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

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