AAB
AAB

Reputation: 177

Splash screen in Android Application

I am modifying an open source application and want to add a splash screen to it, Can some one help me in it?

When the application starts a black screen appears for 2 to 3 seconds and then the application appears.... In the code the activity main.xml is started, I have read some forums that the splash.xml file should be created and with the help of threads splash activity and main activity should be executed parallel. Is it the right approach...?

#
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        instance = this;
        setContentView(R.layout.main);
#

Would it not be possible that I modify main.xml and put the image (splash) in main.xml so that it appears from there?

Upvotes: 4

Views: 13652

Answers (3)

Nataliia.dev
Nataliia.dev

Reputation: 2972

Splash activity

public class LaunchScreen extends Activity {

  public static final long TIME = 3000;

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.logo);

    Protocol.getInstance(this);

    Thread welcomeThread = new Thread() {

        @Override
        public void run() {
            try {
                sleep(TIME);
            } catch (Exception e) {
                Log.e(getClass().getName(), e.toString());
            } finally {
                startActivity(new Intent(LaunchScreen.this,MainScreen.class));
                finish();
            }
        }
    };
    welcomeThread.start();
  }
}

logo.xml file:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="right"
>
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo"
android:layout_centerInParent="true"
>
</ImageView>
</RelativeLayout>

in AndroidManifest :

activity android:name=".LaunchScreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainScreen" android:label="@string/app_name" ></activity>

Upvotes: 3

Jelle
Jelle

Reputation: 919

Don't forget to consider that the user might want to quit your app before the splash-delay is over. So clear any pending runnables/messages when the user exits your app.

Example can be found here

Upvotes: 4

Maulik J
Maulik J

Reputation: 2765

Use class SplashScreen as under

public class Splashscreen extends Activity {

private static final int SPLASH_DISPLAY_TIME = 3000; /* 3 seconds */

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    new Handler().postDelayed(new Runnable() {

        public void run() {

            Intent mainIntent = new Intent(Splashscreen.this,
                    MainActivity.class);
            Splashscreen.this.startActivity(mainIntent);

            Splashscreen.this.finish();
            overridePendingTransition(R.anim.mainfadein,
                    R.anim.splashfadeout);
        }
    }, SPLASH_DISPLAY_TIME);
}

}

**Add mainfadein.xml & splashfadeout.xml in res->anim folder

mainfadein.xml**

    <?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="1000">
</alpha>

splashfadeout.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:zAdjustment="top"
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="1000" >
</alpha>

and add splash.xml just Add an ImageView and set its background as screen & add image of urchoice in layout

And make Splashscreen class as Launcher and make all other class as HOME in manifest file

Upvotes: 16

Related Questions