Экран-заставка Android
Экран-заставка Android — это первый экран, видимый пользователю при запуске приложения. Экран-заставка — один из самых важных экранов в приложении, так как это первое знакомство пользователя с приложением. Экраны-заставки используются для отображения некоторых анимаций (обычно логотипа приложения) и иллюстраций, пока извлекаются некоторые данные для следующих экранов.
Экран-заставка Android
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Структура проекта примера экрана-заставки Android
Классический подход к экрану-заставке
SplashActivity.java
package com.journaldev.splashscreen;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// This method will be executed once the timer is over
Intent i = new Intent(SplashActivity.this, MainActivity.class);
startActivity(i);
finish();
}
}, 5000);
}
}
Вот как мы обычно создаем макет нашего экрана-заставки в нашем приложении: activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
tools:context="com.journaldev.splashscreen.SplashActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="72dp"
android:layout_height="72dp"
android:src="@mipmap/ic_launcher"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/imageView" />
</android.support.constraint.ConstraintLayout>
Пример экрана-заставки Android с правильным подходом
Холодный запуск появляется, поскольку приложению требуется время для загрузки файла макета Splash Activity. Поэтому вместо создания макета мы воспользуемся мощью темы приложения для создания нашего первоначального макета. Тема приложения создается до создания макета. Мы установим drawable внутри атрибута android:windowBackground
, который будет состоять из фона действия и значка с использованием списка слоев, как показано ниже. splash_background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="https://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/black" />
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher" />
</item>
</layer-list>
Мы установим следующий стиль в качестве темы активности. стили.xml
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
Файл SplashActivity.java должен выглядеть следующим образом:
package com.journaldev.splashscreen;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// This method will be executed once the timer is over
Intent i = new Intent(SplashActivity.this, MainActivity.class);
startActivity(i);
finish();
}
}, 5000);
}
}
Скачать проект примера экрана-заставки Android