隐藏启动画面的操作栏

时间:2015-01-28 21:39:08

标签: android android-actionbar

我正在尝试创建没有操作栏的启动画面。
首先在主要活动中创建启动画面,操作栏之前,当我创建启动画面时,操作栏进入启动画面,主要活动全屏。我搜索了getwindowgetActionbar之类的方法,但是当我使用这些方法时,程序对我说不幸停止了。那么我错过了什么?

如何在闪屏中避免使用aciton bar?

我的代码:

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();
}

清单:

  <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>

6 个答案:

答案 0 :(得分:5)

首先,在应用顶部导入支持库:

import android.support.v7.app.ActionBarActivity;

并按如下方式更改您的代码:

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

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

答案 1 :(得分:4)

使用AppCompat支持所有版本:

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

答案 2 :(得分:1)

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

将它放在你的setContentView(...)之前,应该完成工作。

答案 3 :(得分:1)

对于Android 3.0或更高版本,请使用ActionBarAPI#hide
对于较低版本,您需要使用Android支持库。 使用ActionBar作为

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

参考docs

此外,如果您的要求是静态的,那么您可以为您的活动选择一个没有动作栏的主题,例如

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

您可以这样做:

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

答案 4 :(得分:0)

使用没有操作栏的样式,也可以在启动画面活动中使用java扩展活动并使启动画面成为MAIN活动,在此活动中,您可以在几秒钟后调用Intent打开MainActivity

 <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>

实施例: 在您的SplashScreen活动中编写此代码。这将在2秒后打开您的MainActivity。

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

答案 5 :(得分:0)

这是最简单的方法。

@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);
}

其中R.layout.activity_main由您的布局活动替换,例如activity_splash