Splash Screen для Android приложения

// Как сделать экран с заставкой для приложения

Подготовить изображения для заставки

Создаёте картинки (png, jpg...) и копируете их в папку res\mipmap проекта. В этом примере файлы называются pazl_scratch_karta_mira_big_s.png и rabusovinfoservices.png

Создать XML файл с разметкой для заставки

Например:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/White"/>

    <item>
        <bitmap
            android:gravity="center|center_vertical"
            android:src="@mipmap/pazl_scratch_karta_mira_big_s"/>
    </item>
    <item>
        <bitmap
            android:gravity="bottom|center"
            android:src="@mipmap/rabusovinfoservices"/>
    </item>
    </layer-list>
	
и сохраняем его под именем background_splash.xml в папку res\drawable проекта.

Создать стиль для заставки

Редактируем стилевой файл проекта res\values\styles.xml.

	<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="AppTheme.NoActionBar" parent="AppTheme">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

    <!-- SplashTheme theme. -->
    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style> 
</resources>
	

Создать Activity для заставки

Создаём новый класс, SplashActivity, порожденный от AppCompatActivity (в примере).

	package имя_вашего_пакета;

	import android.content.Intent;
	import android.os.Bundle;
	import android.support.v7.app.AppCompatActivity;

	public class SplashActivity extends AppCompatActivity {
		@Override
		protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			// вызов вашей главной Activity
			Intent intent = new Intent(this, MainActivity.class); 

			startActivity(intent);
			finish();
		}
	}

	

Изменить AndroidManifest.xml

Для того чтобы приложение стартовало со SplashActivity.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="имя_вашего_пакета"
    android:installLocation="preferExternal"
    >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"

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

</manifest>
	

Таким образом в AndroidManifest.xml мы сообщаем, что запускать приложение надо с activity по имени SplashActivity (category.LAUNCHER и action.MAIN), а когда SplashActivity будет выведена на экран, в методе onCreate (activity SplashActivity) мы передаём управление MainActivity и закрываем (finish()) SplashActivity.