ایجاد صفحه splash screen (اسپلش اسکرین) در اندروید استودیو

با نام و یاد خدا
در جلسه ششم با نحوه ایجاد یک پروژه در اندروید استودیو آشنا شدیم. امروز می خواهیم به ایجاد صفحه splash screen (اسپلش اسکرین) در اندروید استودیو بپردازیم.و همچنین چگونگی تغییر اکیتویتی اصلی (اولین اکتیویتی) را آموزش می دهیم.

صفحه splash screen (اسپلش اسکرین) چیست؟

یک صفحه یا اکتیویتی است که در هنگام اجرای اپلیکیشن برای چند ثانیه نمایش داده می شود و سپس به صورت خودکار به اکتیویتی دیگری می رود. این صفحه معمولا در اپلیکیشن ها شامل لوگو شرکت سازنده می باشد . شما می توانید هر اجزایی که می خواهید درون این اکتیویتی قرار دهید.

تغییر اکتیویتی اصلی

ابتدا یک پروژه ایجاد کنیم. اپلیکیشن ما در حال حاضر یک اکتیویتی و یک layout دارد.
برای ایجاد صفحه splash screen (اسپلش اسکرین) نیاز به یک اکتیویتی دیگری داریم. برای ایجاد اکتیویتی روی پوشه java راست کلیک کرده و New Activity را انتخاب کرده و یک اکتیویتی خام ایجاد می کنیم.

صفحه splash screen (اسپلش اسکرین)-ایجاد اکتیویتی

یک پنجره باز می شود که باید نام اکتیویتی و نام layout را انتخاب کنیم.

نکته: یک گزینه ای داریم به نام Launcher Activity که اگر تیک بخورد یعنی این اکتیویتی، اولین اکتیویتی است که نمایش داده می شود.
در ابتدای ایجاد پروژه، اکتیویتی به نام MainActivity ایجاد کردیم و به صورت پیش فرض اندروید استودیو آنرا به عنوان اولین اکتیویتی در نظر گرفت. حالا با زدن تیک گزینه Launcher Activity در هنگام ساخت اکتیویتی اسپلش، splash هم به عنوان اولین اکتیویتی شناخته شد .

اگر به پوشه manifests برویم و AndroidManifest.xml را باز کنیم. می بینیم که دو اکتیویتی داریم و هر کدام دارای تگ <intent-filter></intent-filter> می باشد. تگ <intent-filter></intent-filter> نشان می دهد هر دو اکتیویتی ، اکتیویتی اصلی می باشند.

باید تگ <intent-filter>:

<intent-filter>
<action android: name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>

را از  اکتیویتی اول یعنی MainActivity حذف کنیم تا در هنگام اجرا به عنوان اکتیویتی اصلی اجرا نشود.

صفحه splash screen (اسپلش اسکرین)-تغییر اکتیویتی

نکته: اگر در ابتدا ایجاد اکتیویتی گزینه Launcher Activity را تیک نزدیم ،فقط کافی است تگ <intent-filter></intent-filter>  (و آنچه مابین آن است) را از اکتیویتی های دیگر بگیریم و در اکتیویتی که می خواهیم اول اجرا شود، قرار دهیم .

نکته: بنابراین هر گاه چند اکتیویتی داشتیم ، می توانیم خیلی راحت با حذف تگ <intent-filter></intent-filter> (و تگ های مابین آن) از یک اکتیویتی و اضافه کردن آن به اکتیویتی دیگر، تعیین کنیم که کدام اکتیویتی اول اجرا شود.

ایجاد صفحه splash screen (اسپلش اسکرین)

وارد پوشه java می شویم و اکتیویتی splash را باز می کنیم. در اینجا می خواهیم کدی بنویسیم که باعث شود اکتیویتی splash بعد از چند ثانیه وقفه به اکتیویتی دیگری برود.

در متد oncreate ، کلاس Handler را new می کنیم و سپس با متد postDelayed زمان توقف را تعیین می کنیم.

صفحه splash screen (اسپلش اسکرین)

صفحه splash screen (اسپلش اسکرین)

طبق پیشنهادی که اندروید استودیو می دهد باید پارامتر اول تابع postDelayed را Runnable و پارامتر دوم زمان باشد. وقتی پارامتر Runnable را new می کنیم، اندروید استودیو به صورت خودکار تابع run را ایجاد می کند. سپس باید پارامتر دوم یعنی زمان را وارد کنید و در آخر کاما فراموش نشود.این سه مرحله را در تصویر ببینید.

صفحه splash screen (اسپلش اسکرین)

 

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

        }
    },3000);
}

نکته: با حرف بزرگ تایپ کنید تا اندروید استودیو لیست پیشنهادات خود را نمایش دهد.
نکته: زمان برحسب میلی ثانیه وارد شود.
نکته: کلاس Handler که ایجاد می کنید کتابخانه آن هم به صورت پیش فرض ایمپورت می شود.

حالا باید داخل تابع run بنویسیم که اکتیویتی splash بعد از 3 ثانیه به صورت خودکار محو شود و اکتیویتی MainActivity ظاهر شود.

در اینجا ما از Intent استفاده می کنیم ولی توجه داشته باشید که درباره intent ها به صورت مفصل تر در جلسات بعد آموزش می دهیم.

Intent چیست؟

واسطی است ما بین کامپوننت ها که ساده ترین کاربرد آن انتقال بین اکتیویتی ها درون یک اپلیکیشن است.
حالا برای اینکه از اکتیویتی splash به اکتیویتی MainActivity برویم نیاز به Intent داریم. ابتدا یک شی از کلاس intent تعریف می کنیم و پارامتر اول متد سازنده را اکتیویتی splash و پارامتر دوم را اکتیویتی MainActivity تنظیم می کنیم.

Intent i=new Intent(splash.this,MainActivity.class);

حالا شی i را به متد startActivity می دهیم تا آن را اجرا کند یعنی از اکتیویتی اسپلش به اکتیویتی  MainActivity برود.

startActivity(i);

از متد finish() هم استفاده می کنیم تا اکتیویتی اسپلش بسته شود و کاربر دیگر نتواند به این اکتیویتی یاصفحه برگردد.

finish();

صفحه splash screen (اسپلش اسکرین)

اجرای اپلیکیشن

حالا برای اینکه در اجرا تفاوت بین اکتیویتی ها را بهتر متوجه شویم ظاهر اکتیویتی اسپلش را تغییر دهید. در Layout فایل splash.xml را باز کنید و تغییرات خود را اعمال کنید (مثلا لوگو خود را قرار دهیم فعلا ما فقط رنگ آن را تغییر می دهیم.)
برای تغییر رنگ بهتر است در تب text خط کد زیر را وارد کنید هر چند می توانید در Design هم اینکار را انجام دهید(عادت کنید به کد نویسی):

android:background=”@color/colorAccent”

همانطور که در جلسه ششم گفتیم برای استفاده از رشته و رنگ و … در برنامه  باید ابتدا آن ها را در پوشه res تعریف کنیم و سپس هر جا نیاز داریم فراخوانی کنیم. در اینجا هم ما رنگ colorAccent (که از قبل تعریف شده) را از پوشه res زیر شاخه color صدا می زنیم.

حالا اپلیکیشن را اجرا می کنیم(ما برای اجرا از Genymotion استفاده کردیم که در جلسه هفتم طرز کار با آن را گفتیم)

همانطور که خواهید دید ابتدا برای سه ثانیه اکتیویتی splash ظاهر می شود و سپس اکتیویتی MainActivity ظاهر می شود.

صفحه splash screen (اسپلش اسکرین)-splash

صفحه splash screen (اسپلش اسکرین) - اکتیویتی دوم

افزودن تصویر به splash

هر موقع بخواهیم تصویری را به اپلیکیشن خود اضافه کنیم فقط کافی است آن تصویر(مثلا با نام background) را کپی کنیم و روی پوشه drawable کلیک راست کرده و past کنیم.

نکته: در انتخاب نام و سایز تصویر دقت کنید. مثلا اگر در نام تصویر از عدد استفاده کنیم تصویر نمایش داده نمی شود.

این تصویر به منابع ما (یعنی پوشه res) زیر شاخه drawable اضافه شده است و حالا آن را هر جا لازم داریم صدا می زنیم (آموزش جلسه ششم) .سپس layout مربوط به splash یعنی فایل splash.xml  را باز می کنیم و کد زیر را در ادامه خصوصیات قبلی اضافه می کنیم:

android:background=”@drawable/background

افزودن تصویر

حذف نوار عنوان از splash

همانطور که در تصویر بالا دیدید، ما عنوان “داژیار پردازش ایساتیس” را در بالای اسپلش می بینیم که بهتر است حذف شود.

برای حذف آن ، پوشه manifests را باز کنید و خصوصیت زیر را به تگ مربوط به اکتیویتی اسپلش اضافه کنید:

 android:theme=”@style/Theme.AppCompat.NoActionBar

حذف نوار عنوان

حالا دوباره برنامه را اجرا می کنیم تا نتیجه کار را ببینید.

امیدواریم از این آموزش جالب لذت برده باشید. در آموزش های بعد با ما همراه باشید.

مدرس: مهندس مهدی نیکخواه

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 13 امتیاز: 4.5]