İlk öncə Splash screen haqqında 1-2 söz deməyi özümə borc bilirəm. Tətbiq işə salınan zaman ilk saniyələrdə göstərilən səhifədir. Bəzən səhvən animasiyalı və yaxud müəyyən progress bar olan bir səhifənin splash screen ilə eyni tuturlar, amma bu yalnışdır.
Splash screen layout-u olmayan activity-di. Sadəcə background- u var. Və Background arxa fon rəngi və rastr qrafikada olan logo və yaxud digər bir şəkildən ibərətdir.
Rastr istifadə etməkdə məqsəd köhnə versiya ƏS dəstəkləməkdir.
Məsələn, Youtube app açıldıqda ilk olaraq Youtube-un logosunu görürük. Bax bu əsl Splash Screen-dır.
Vaxt itirmədən kod hissəsinə keçək. Kod standartdır. Əlavə sıfırdan yazmağa ehtiyyac yoxdur. Rahat copy-paste edə bilərsiz.
Addımlarımız aşağıdakı kimi olacaq
Splash screen üçün drawable faylı yaratmaq Splash screen üçün style yaratmaq Splash screen üçün Activity yaratmaq Və yaratdığımız activity -nı Manifest -ə qeyd etmək. İndi isə hər bir addımı ardıcıl yerinə yetirək.
İlk addımımız Drawable faylı olacaq. Bildiyimiz kimi drawable faylında müxtəlif konstruksiyalardan istifadə edərək gradient, rənglər, rastr şəkillər, formalar və s. yerləşdirmək olar. Splash Screen üçün Biz Youtube -da olduğu kimi, sadə formada arxa fon və mərkəzdə rastr logo yerləşdirəcik.
/res/drawable/ qovluğunda splash_background.xml faylını yaradırıq.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorWhite" />
<item>
<bitmap
android:gravity="center"
android:src="@drawable/my_logo" />
</item>
</layer-list>
Kod çox sadədir.
<item android:drawable="@color/colorWhite" />
sətri arxa fon rəngini təyin edir. burada ağ rəng üçün birbaşa #ffffff formatda qeyd edə bilərik. Amma düzgünlük üçün /res/values/colors.xml faylında aşağıdakı sətri əlavə edirik.
<color name="colorWhite">#ffffff</color>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/my_logo" />
</item>
kodunda isə logonun mərkəzdə olduğunu və lazımi rastr şəklin adını qeyd edirik. Şəkil /res/drawable/ qovluğuna yerləşdirilməlidi.
Splash Screen -mız üçün Style yaratmaqdan ötrü /res/values/styles.xml faylında aşağıdakı kodu əlavə edirik.
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
Gördüyümüz kimi burada Style-ın adı istənilən ola bilər amma biz aydınlıq üçün SplashTheme qoyuruq. android:windowBackground göstəricisində yaratdığımız drawable faylını qeyd edirik.
Splash Screen-da mərkəzdə olan şəkli deyil, məhz yaratdığımız splash_background drawable faylını qeyd edirik. Digər göstəricilər isə Splash Screen səhifəsinin fullscreen göstərilməsi üçündür.
Növbəti addım Splash Screen üçün Activity yaratmaqdır. Bunun üçün SplashActivity.java faylını yaradırıq. Əvvəldə qeyd etdiyim kimi bu Activity da heç bir layout olmayacaq. Sadəcə arxa fonu olacaq.
SplashActivity bax bu cür sadə koddan ibarətdir.
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
Activity yaradıldıqdan sonra növbəti addım onu AndroidManifest -ə qeyd etməyimiz lazım olacaq.
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Buarada intent-filter teqi Xüsusi diqqət tələb edir! Belə ki, Android tərəfindən tətbiqin çağırarkən hansı class -a müraciət etməsi lazım olanı qeyd edirik.
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Yəni, ilk açılması lazım olan activity. Bizdə bu SplashActivity olacaq. Susmaya görə MainActivity teqinin arasında olan bu 2 sətri oradan silib, onu SplashActivity -yə yazırıq.
Proyetin tam kodunu GitHub -dan izləyə bilərsiniz. https://github.com/shamxalb/Android-Splash-Screen