Делаем заставку Splash Screen для приложения
Главная » Делаем заставку Splash Screen для приложения

Еще в начале пути изучения основ Android программирования вы, скорее всего, не избежали прохождения урока о создании приложения с двумя activity. Сегодняшний урок будет немного перекликаться с этим старым уроком о двух рабочих окнах. Но это и хорошо, ведь повторение - мать учения. В этом уроке мы сделаем приложение, перед запуском основного рабочего экрана которого будет высвечиваться заставка Splash Screen на 3 секунды. Такую технику можно применить и просто для красоты, и для того, чтобы, например, пока грузиться основное приложение, пользователь наблюдал не повисший экран, а красивую заставку. 

Начнем с создания нового проекта, выберите шаблон Blank Activity, минимальная версия Android в принципе любая. Что будет в приложении: два рабочих activity, два xml файла, задающих для соответствующих activity интерфейс и картинка, которую мы используем для создания заставки. 

Откроем файл activity_main.xml и добавим туда элемент ImageView, котором разместиться картинка для заставки:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:background="#FFFFFF">
 <ImageView
 android:src="@drawable/splash_bear"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:scaleType="fitXY"/>
</LinearLayout>

Картинку можете найти любую, я использую эту:

Медведь

Поместите ее в папку res/drawable. У меня она, как видно из кода, имеет название splash_bear. 

Теперь перейдем к java классу MainActivity.java. Здесь с помощью класса Thread мы создаем поток, в котором будет выполняться отображение заставки на протяжении 3 секунд (3000 миллисекунд). То есть, мы с помощью Thread создаем задержку, на которой будет отображаться изображение:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class MainActivity extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 //Создаем новый поток:
 Thread splash_time = new Thread()
 {
 public void run()
 {
 try
 {
 //Целое значение время отображения картинки:
 int SplashTimer = 0;
 //Запускаем цикл длиной в 3 секунды:
 while(SplashTimer < 3000) {
 sleep(100);
 SplashTimer = SplashTimer +100;
 };
 }
 catch (InterruptedException e) {
 e.printStackTrace(); }
 finally {
 //Закрываем activity:
 finish();
 }
 }
 };
 splash_time.start();
 }
}

Если запустить приложение сейчас, то вы увидите на три секунды изображение нашего медведя, а потом приложение закроется (finish ()). Теперь нам нужно создать второе activity, его интерфейс и переход на него с первого, содержащего заставку activity.

Создаем новый java класс по имени SecondActivity, наследуем его от Activity (extends Activity), добавляем метод onCreate ():

import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity{

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

Создаем новый xml файл в папке res/layout по имени second.xml и добавим ему простенький код с текстом и картинкой:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" 
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/tv"
 android:text="Приветствую во втором activity"
 android:textSize="12pt"/>
 <ImageView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/iv"
 android:src="@drawable/ic_launcher"
 android:layout_gravity="center"/>
</LinearLayout>

Осталось только добавить в класс SecondActivity.java в метод onCreate () строку:

setContentView(R.layout.second);

Напоследок остается только вернуться к первому классу с заставкой MainActivity.java и добавить туда в код потока Thread переход на второй экран:

startActivity(new Intent(MainActivity.this,SecondActivity.class));

Нужно не забыть о том, что созданную активность SecondActivity.java нужно добавить в AndroidManifest.xml:

<activity
 android:name=".SecondActivity"
 android:label="Splash Screen">
</activity>

На этом несложные манипуляции по созданию заставки для вашего приложения заканчиваются. Запускаем и проверяем результат:

Первый экран приложения     Второй экран запущенного приложения

Скриншоты с виртуального планшета не поражают красотой, но все таки приложение работает, как, надеюсь, и у вас!

Категория: Уроки программирования | Просмотров: 2009 | Добавил: Oleg | Теги: заставка, программирование Android, Splash Screen | Рейтинг: 5.0/1
Всего комментариев: 5
avatar
1 Fur@ • 19:49, 17.04.2015
Все сделал как написано, но первым появляется второй экран. Если нажать назад, тогда появится экран загрузки. Не пойму, в чем ошибка.
avatar
0
2 Oleg • 13:11, 19.04.2015
Может быть слишком долго грузится эмулятор и за это время заставка уже выключается? Попробуй выставить больше время высвечивания заставки, или проверь, какое activity выставлено как первое при запуске.
avatar
3 pomrfv • 21:39, 18.05.2015
"какое activity выставлено как первое при запуске."  а как это проверить ?
avatar
4 Zastrel • 22:50, 09.08.2015
Если правильно все написать, получится. Отгадка в первой версии и правильный код.
avatar
while(SplashTimer < 3000) {
sleep(100); у меня sleep(100) Почему то подсвечивается((((
avatar