Android Splash Screen is the first screen visible to the user when the application’s launched. Splash screen is one of the most vital screens in the application since it’s the user’s first experience with the application.
Splash screens are used to display some animations (typically of the application logo) and illustrations while some data for the next screens are fetched.
Table of Contents
- 1 Android Splash Screen
- 1.1 Android Splash Screen Example Project Structure
- 1.2 Splash Screen Classical Approach
Android Splash Screen
Typically, the Activity that has the following intent filter set in the
AndroidManifest.xml
file is the Splash Activity.
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
There are few ways to create the initial screen i.e. Splash Screen of the application. Let’s see each of them.
Splash Screen Classical Approach
SplashActivity.java
package com.smarttech.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);
}
}
This is how we normally create the layout of our Splash Screen in our application:
activity_splash.xml
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://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>
Let’s keep the
MainActivity.java
empty for now.
The output produced from the above implementation of SplashScreen is given below. We’ve set the theme of the SplashActivity to Theme.AppCompat.NoActionBar in the
AndroidManifest.xml
file.
Did you see the blank page that came up before the Splash Screen was visible to you?
The above approach isn’t the correct approach. It’ll give rise to cold starts.
The purpose of a Splash Screen is to quickly display a beautiful screen while the application fetches the relevant content if any (from network calls/database).
With the above approach, there’s an additional overhead that the
With the above approach, there’s an additional overhead that the
SplashActivity
uses to create its layout.
It’ll give rise to slow starts to the application which is bad for the user experience (wherein a blank black/white screen appears).
Android Splash Screen Example with Correct Approach
The cold start appears since the application takes time to load the layout file of the Splash Activity. So instead of creating the layout, we’ll use the power of the application theme to create our initial layout.
Application theme is instantiated before the layout is created. We’ll set a drawable inside the
android:windowBackground
attribute that’ll comprise of the Activity’s background and an icon using layer-list as shown below.
splash_background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://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>
We’ll set the following style as the theme of the activity.
styles.xml
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
The SplashActivity.java file should look like this:
package com.smarttech.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);
}
}
Note: the theme of the activity is set before anything else. Hence the above approach would give our app a quicker start.
Using the theme and removing the layout from the SplashActivity is the correct way to create a splash screen.
This brings an end to android splash screen tutorial. You can download the final Android Splash Screen Project from the link below.
This brings an end to android splash screen tutorial. You can download the final Android Splash Screen Project from the link below.
Best SMM Panel
ReplyDeleteBest SMM Panel
Best SMM Panel
Best SMM Panel
Best SMM Panel
Best SMM Panel
Best SMM Panel