Splash Screen ne amaçla kullanılır ?

  • Uygulama açılışı sırasında karşılama ekranı göstermek amacıyla kullanılır. Genelde açılış ekranları Uygulamaya ait marka, logo veya ismin ön plana çıkarılması amacıyla, nadir olarak da uygulamanın ilk yüklenmesi ve ilk açılışında tanıtım ekranı göstermek amaçlı kullanılır.

Örneğimize başlıyoruz;

Öncelikle Android Studio çalışır durumda iken, File > New > New Project ile yeni bir uygulama oluşturuyoruz. Ben örneğimde Blank Activitytercih ettim, Activity Name aynı şekilde MainActivity olarak kalsın hiçbir şekilde değiştirmedim. Finish diyerek projemizi oluşturuyoruz ve Splash Screen hazırlamak için çalışmalarımıza başlıyoruz.

Ardından app (Application) > res (Resource) > layout kısmındayken sağ tıklayıp New Layout resource file seçeneğine tıklıyoruz.

Halihazırda bulunan layoutlarımız

  • activity_main.xml ve content_main.xml zaten bulunuyordu.

Yeni oluşturacağımız layout‘a da activity_splash ismi vererek Ok diyerek kaydettikten hemen sonra, activity_splash.xml dosyamızı res layout kısmında görmüş oluyoruz.

Oluşan xml dosyasının Text kısmına gelerek ben RelativeLayout oluşturmuştum dosyamın Layout türünü RelativeLayout olarak görmüş oldum. Hiçbir değişiklik yapmadan, Design kısmına dönerek sürükle-bırak yöntemi ile yeni bir ImageView nesnesi oluşturdum. Text kısmına tekrar dönerek layout_align ve layout_margin değerlerini kaldırıp yerine

  • android:layout_centerHorizontal=”true”
  • android:src=”@drawable/splash”

değerlerini ekliyorum. android:src değeri, drawable klasöründeki splash adında .jpg yada .png uzantısındaki resim dosyamı temsil ediyor.

Ben örnek olarak, splash adındaki dosyamı saydam png formatında blogger logosu üzerinden örneklendirmek istedim, logomu ilgili dosyaya taşıdım.

Tabii ki işlemimiz bunlarla sınırlı kalmıyor.

Sırada Splash Screen‘i çağıracağımız Activity dosyasını oluşturmak var.

Yeni bir Java Class oluşturuyoruz, ismi SplashActivity olsun.

Oluşturduğumuz Class dosyasının içeriğini yazmadan önce bir planlama yapmamız mantıklı olur.

  • Activity dosyamız tam ekran gözüksün ve Android Title Bar kısmı gözükmesin.
  • Farklı ekran boyutlarında da dikeyde orantılı durabilmesi için yatay oranında kalibrasyonu iptal etmek istiyorum.
  • Açılış Ekranı Activity dosyası, sadece 5 saniye kullanıcıya gözüksün ve Activity penceresi kapanıp, MainActivity görüntülensin.

package tr.com.islamuner.splashscreen_example;

/**
* Created by islam on 23.12.2018.
*/
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;

public class SplashActivity extends Activity {

    private static String TAG = SplashActivity.class.getName();
private static long SLEEP_TIME = 5; // Bekletilecek saniye

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE); // Splash ekrandan basligi kaldirir
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN); // Bilgi cubugunu kaldirir

        setContentView(R.layout.activity_splash);

        IntentLauncher launcher = new IntentLauncher();
launcher.start();
}

    private class IntentLauncher extends Thread {
@Override

        public void run() {
try {
// Sleeping
Thread.sleep(SLEEP_TIME*1000);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}

// Start main activity
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish(); //Bu activity kapanır
}
}
}

AndroidManifest.xml dosyamızda da düzenleme yapmamız gerekiyor, aksi takdirde uygulamamız MainActivity üzerinden açılacaktır. Kodları yanlış yazmamız halinde de Uygulama patlayabilir.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tr.com.islamuner.splashscreen_example">

    <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>

        <activity
android:name=".SplashActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

    </application>

</manifest>