我正在尝试创建没有操作栏的启动画面。
首先在主要活动中创建启动画面,操作栏之前,当我创建启动画面时,操作栏进入启动画面,主要活动全屏。我搜索了getwindow
,getActionbar
之类的方法,但是当我使用这些方法时,程序对我说不幸停止了。那么我错过了什么?
如何在闪屏中避免使用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>
答案 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