Search code examples
androidinstallationsplash-screen

How to add a first-load screen in Android?


How do I add a splash screen that will be displayed ONLY when the user starts the app for the first time after installing. Something like a how-to-use guide.


Solution

  • First you need to define the splash screen in your layout.xml file

    <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical" android:layout_width="fill_parent"
              android:layout_height="fill_parent">
    
              <ImageView id="@+id/splashscreen" android:layout_width="wrap_content"
                      android:layout_height="fill_parent"
                      android:src="@drawable/splash"
                      android:layout_gravity="center"/>
    
              <TextView android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Hello World, splash"/>
    
      </LinearLayout>
    

    And your activity that see if it's the first time run:

        public class FirstTimeRun extends Activity {
            public static String prefName = "Random";
            SharedPreferences prefs;
        @Override
            protected void onCreate(Bundle arg0) {
                // TODO Auto-generated method stub
                super.onCreate(arg0);
            prefs = getSharedPreferences(prefName, MODE_PRIVATE);
            if (prefs.getString("FirstTime", true) == true){
            Intent i = new Intent(FirstTimeRun.this, Splash.class);
            startActivity(i);
    }else{
    //start another Activity
    }
    }
    

    Splash class:

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    
    public class Splash extends Activity {
    
        private final int SPLASH_DISPLAY_LENGTH = 1000;
            public static String prefName = "Random";
        SharedPreferences prefs;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.splashscreen);
            prefs = getSharedPreferences(prefName, MODE_PRIVATE);
            Editor edito = prefs.edit();
            edito.putString("FirstTime", false);
            edito.commit();
            /* New Handler to start the Menu-Activity 
             * and close this Splash-Screen after some seconds.*/
            new Handler().postDelayed(new Runnable(){
                @Override
                public void run() {
                    /* Create an Intent that will start the Menu-Activity. */
                    Intent mainIntent = new Intent(Splash.this,Menu.class);
                    Splash.this.startActivity(mainIntent);
                    Splash.this.finish();
                }
            }, SPLASH_DISPLAY_LENGTH);
        }
    }
    

    Thats all ;)