Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I make a splash screen? [closed]

I want my app to look more professional, so I decided to add a splash screen.

How should I go about the implementation?

like image 309
Ephraim Avatar asked Mar 30 '11 13:03

Ephraim


People also ask

How do I hide a splash screen?

Hiding the Splash Screen​ If you want to be sure the splash screen never disappears before your app is ready, set launchAutoHide to false ; the splash screen will then stay visible until manually hidden. For the best user experience, your app should call hide() as soon as possible.


2 Answers

Note this solution will not let the user wait more: the delay of the splash screen depends on the start up time of the application.

When you open any android app you will get by default a some what black screen with the title and icon of the app on top, you can change that by using a style/theme.

First, create a style.xml in values folder and add a style to it.

<style name="splashScreenTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">     <item name="android:windowBackground">@drawable/splash_screen</item> </style> 

Instead of using @android:style/Theme.DeviceDefault.Light.NoActionBar you can use any other theme as a parent.

Second, in your app Manifest.xml add android:theme="@style/splashScreenTheme" to your main activity.

<activity         android:name="MainActivity"         android:label="@string/app_name"         android:theme="@style/splashScreenTheme" > 

Third, Update your theme in your onCreate() launch activity.

protected void onCreate(Bundle savedInstanceState) {     // Make sure this is before calling super.onCreate     setTheme(R.style.mainAppTheme);     super.onCreate(savedInstanceState); } 

UPDATE Check out this post.

Thanks to @mat1h and @adelriosantiago

like image 133
Abdullah Avatar answered Oct 07 '22 17:10

Abdullah


Further reading:

  • App Launch time & Themed launch screens (Android Performance Patterns Season 6 Ep. 4)
  • Splash screen in Android: The right way

Old answer:

HOW TO: Simple splash screen

This answers shows you how to display a splash screen for a fixed amount of time when your app starts for e.g. branding reasons. E.g. you might choose to show the splash screen for 3 seconds. However if you want to show the spash screen for a variable amount of time (e.g. app startup time) you should check out Abdullah's answer https://stackoverflow.com/a/15832037/401025. However be aware that app startup might be very fast on new devices so the user will just see a flash which is bad UX.

First you need to define the spash 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 android: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:

import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler;  public class Splash extends Activity {      /** Duration of wait **/     private final int SPLASH_DISPLAY_LENGTH = 1000;      /** Called when the activity is first created. */     @Override     public void onCreate(Bundle icicle) {         super.onCreate(icicle);         setContentView(R.layout.splashscreen);          /* 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 ;)

like image 20
UpCat Avatar answered Oct 07 '22 15:10

UpCat