چگونه در اندروید splash screen شفاف بسازیم؟
امروزه نرم افزار های اندرویدی زیادی رو (مثل picsArt , youtube , …) میبینیم که هنگام اجرا ، یک صفحه رو به مدت ۲ الی ۳ ثانیه به ما نمایش میدن و بعد وارد صفحه ی اصلی میشن.
به این ویژگی splash screen میگیم. splash screen معمولا برای برنامه هایی به کار میره که نیازه یک سری اطلاعات دور از دید کاربر بارگذاری (load) بشن و پردازش های لازم روی اونها انجام بشه.
البته بعضی از شرکت ها هم میخوان واس مدت خیلی کوتاهی لوگوی شرکتشون رو به کاربرا (یا مشتری) نشون بدن که از این روش استفاده میکنن.
تو این آموزش میخواهیم روش ساختن یک splash screen شفاف (transparent) رو باهم یادبگیریم.
با zeroToHero همراه باشید
در اولین مرحله یک فایل با نام splash_screen.xml داخل پوشه ی layout میسازیم و کد زیر رو داخلش کپی میکنیم.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:gravity="center" //وسط قرار دادن تصویر با این خاصیت android:layout_height="match_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/zeotoheroLogo"/> </LinearLayout>
در کد بالا یه لایه ی پدر داریم (linearLayout) و داخل اون یه imageView که میتونیم یک لوگو رو داخلش نمایش بدیم. ما میتونیم عناصر دیگه ای رو به این لایه اضافه کنیم و هر طرحی که میخواهیم به اون بدیم.
چون شفاف بودن پس زمینه برای ما مهمه پس سعی میکنیم یک عنصر رو در وسط قرار بدیم و اطرافش خالی باشه.
حالا یک فایل splashScreen.java در پوشه ی java (در پکیچ و پوشه ای که خودتون ساختید) میسازیم و کد های زیر رو داخلش کپی میکنیم.
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import ir.zerotohero.ahmad.splashscreen.transparent.R; public class SplashScreen extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash_screen); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { Intent openMainActivity = new Intent(SplashScreen.this, ActivityCustomers.class); startActivity(openMainActivity); finish(); } }, 3000); } }
در کد بالا ما یک کلاس جاوا به اسم SplashScreen میسازیم که از Activity ارث بری میکنه (چون ما جلو تر از تم transparent استفاده میکنیم باید این کلاس رو از Activity ارث بری کنیم و نه appcompatActivity !)
داخل متد onCreate لایه ای رو که به اسم splash_screen ساخته بودیم به عنوان content تنظیم میکنیم.(setContentView(R.layout.splash_screen))
حالا از کلاس Handler یک شی میسازیم و متد postDelayed رو با ورودی Runnable و مدت زمان ۳۰۰۰ میلی ثانیه (۳ ثانیه) صدا میزنیم. زمان میتونه مطابق میل خودمون باشه، ولی در نظر داشته باشید که بیش از ۳ ثانیه کاربر رو خسته میکنه!
کاری رو که میخواهیم انجام بدیم داخل متد Run مینویسیم که توسط یک ترد (thread) جداگانه انجام میشه. میتونیم داده ها رو از اینترنت لود کنیم(با استفاده از روشی که خودتون کار میکنید) ، json رو parse کنیم و …
در اخر کد ها یک Intent مینویسیم که به کلاس main منتقل بشه.
خب تا اینجای کار ما یک splash screen نوشتیم ولی شفافیت (transparency) رو براش مشخص نکردیم!
برای این کار فایل androidManifest.xml رو باز میکنیم و کد زیر رو داخلش قرار میدیم.(بین تگ application)
<application android:name=".G" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/MyMaterialTheme"> <activity android:name=".SplashScreen" android:theme="@style/Theme.Transparent"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
در تگ activity ویژگی name رو برابر اسم کلاس مربوط به splash رو مینویسیم. ویژگی theme رو برابر style/Theme.Transparent قرار میدیم تا شفاف بشه.
حالا میدونیم که splash screen اولین activity ای هست که قراره اجرا بشه پس کد زیر داخل تگ activity این کار رو انجام میده.
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
حواسمون باشه که این قطعه کد بالا فقط برای یک activity باشه و بقیه ی activity ها اگر این کد رو داشته باشن برنامه داخل دستگاه دارای چند ایکون میشه که جالب نیست!
امیدوارم از این آموزش لذت برده باشید.
موفق باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.