- An Activity for the Splash Screen (without the layout file)
- Your Manifest: to declare you Splash Screen as the Launcher
- One drawable(logo) file to customize the splash screen a little
The splash view has to be ready immediately, even before you can inflate a layout file in your splash activity.
For making our splash screen more attractive and more real, I used two animation api's to ehnhance the look. The api's are com.daimajia.androidanimations:library and com.airbnb.android:lottie. So, lets get started on adding the dependencies.
dependencies { implementation 'com.daimajia.androidanimations:library:2.3@aar' }<dependency> <groupId>com.android.support</groupId> <artifactId>support-compat</artifactId> <version>25.1.1</version> </dependency> <dependency> <groupId>com.daimajia.androidanimation</groupId> <artifactId>library</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>com.daimajia.easing</groupId> <artifactId>library</artifactId> <version>2.0</version> </dependency>Gradle is the only supported build configuration, so just add the dependency to your project build.gradle file:
dependencies { implementation 'com.airbnb.android:lottie:$lottieVersion' }Lottie 2.8.0 and above only supports projects that have been migrated to androidx. For more information, read Google's migration guide.
public class SplashActivity extends Activity { //This is the time it will take for the splash screen to be displayed private static int SPLASH_TIME_OUT = 3000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); //This is where we change our app name font to blacklist font Typeface typeface = ResourcesCompat.getFont(this, R.font.blacklist); TextView appname= findViewById(R.id.appname); appname.setTypeface(typeface); // We use the Yoyo to make our app logo to bounce app and down. //There is a lot of Attension Techniques styles // example Flash, Pulse, RubberBand, Shake, Swing, Wobble, Bounce, Tada, StandUp, Wave. // Your can change the techniques to fit your liking. YoYo.with(Techniques.Bounce) .duration(7000) .playOn(findViewById(R.id.logo)); //This is where we make our app name fade in as it moves up // There are other Fade Techniques too //example FadeIn, FadeInUp, FadeInDown, FadeInLeft, FadeInRight //FadeOut, FadeOutDown, FadeOutLeft, FadeOutRight, FadeOutUp YoYo.with(Techniques.FadeInUp) .duration(5000) .playOn(findViewById(R.id.appname)); new Handler().postDelayed(new Runnable() { /* * Showing splash screen with a timer. This will be useful when you * want to show case your app logo / company */ @Override public void run() { // This method will be executed once the timer is over // Start your app main activity startActivity(new Intent(SplashActivity.this,WelcomeActivity.class)); finish(); } }, SPLASH_TIME_OUT); } }activity_splash.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.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="@color/colorPrimary" tools:context=".SplashActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/logo" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/paw"/> <TextView android:layout_marginTop="10dp" android:textColor="#fff" android:textSize="35sp" android:id="@+id/appname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/logo" android:text="@string/app_name" android:layout_centerHorizontal="true"/> <com.airbnb.lottie.LottieAnimationView android:id="@+id/animation_view" android:layout_width="80dp" android:layout_height="80dp" app:lottie_fileName="splash.json" app:lottie_loop="true" app:lottie_autoPlay="true" android:layout_gravity="center" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp"/> </RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout> and your Manifest should look something like this
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.marichtech.splashscreen"> <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" tools:ignore="GoogleAppIndexingWarning"> <activity android:name=".SplashActivity" android:theme = "@style/NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"/> </application> </manifest>That is it. You can clone the project using Android Studio and have fun. Dont forget to like and follow me for more projects.