Mert Kimyonşen
Mert Kimyonşen

Reputation: 47

Hide Action Bar for Splash Screen

I'm trying to create splash screen without action bar.
Firstly before created splash screen, action bar in main activity and when I create splash screen, action bar comes to splash screen and main activity is full screen. I searched method like getwindow(), getActionBar(), but when I use these method program says to me unfortunately stopped. So what I'm missing?

How can I avoid actionBar in splash screen?

My code:

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    

    setContentView(R.layout.splash_item);
    
    Thread th=new Thread(){
        public void run(){
            try {
                sleep(4000);
                Intent intent=new Intent(MainActivity.this,SplashScreen.class);
                startActivity(intent);
                
            } catch (Exception e) {
                e.printStackTrace();
            }
            finally{
                finish();
            }
        }
    };
    th.start();
}

MANİFEST:

  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

Upvotes: 2

Views: 10681

Answers (6)

spidergears
spidergears

Reputation: 194

For Android 3.0 or higher use ActionBarAPI#hide
For lower versions you will need to use Android Support Library. Use ActionBar as

ActionBar actionBar = getSupportActionBar(); 
actionBar.hide(); 

Ref docs

Also if your requirement in static, then you can choose a theme for your activity that dos not have actionbar such as

android:theme="@android:style/Theme.Holo.Light.NoActionBar"

You can do this as:

<activity android:theme="@android:style/Theme.Holo.Light.NoActionBar" 
  android:name=".name_here" 
  android:label="@string/app_name" >

Upvotes: 1

Abu Hashmah
Abu Hashmah

Reputation: 19

This is the simplest method.

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
}

where R.layout.activity_main is replaced by your layout activity e.g. activity_splash

Upvotes: 0

Josef
Josef

Reputation: 452

First, import the support library in the top of your app:

import android.support.v7.app.ActionBarActivity;

and change your code as follows:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.splash_item);
    getSupportActionBar().hide();
}

Upvotes: 5

Jorgesys
Jorgesys

Reputation: 126455

Using AppCompat for being supported for all versions:

<activity 
android:theme="@style/Theme.AppCompat.Light.NoActionBar">

Upvotes: 4

Cristian Olaru
Cristian Olaru

Reputation: 485

use a style without actionbar, also in your splash screen activity java extend Activity and make the splash screen your MAIN activity and in this activity you call an Intent to open your MainActivity after some seconds

 <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
    </activity>
        <activity android:theme="@android:style/Theme.Holo.Light.NoActionBar"
        android:name=".SplashScreen"
        android:label="@string/app_name" >
       <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Example: In your SplashScreen activity write this code. This will open your MainActivity after 2 seconds.

  new Handler().postDelayed(new Runnable()
  {
    public void run()
    {
      Intent localIntent = new Intent(SplashScreen.this, MainActivity.class);
      SplashScreen.this.startActivity(localIntent);
      SplashScreen.this.finish();
    }
  }, 2000L);

Upvotes: 0

The Hungry Androider
The Hungry Androider

Reputation: 2290

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

Put that before your setContentView(...), should get the job done.

Upvotes: 1

Related Questions