我需要在我的蜂窝应用程序中实现启动画面。
我在activity的onCreate中使用这段代码来显示splash:
setContentView(R.layout.splash);
getActionBar().hide();
这段代码将显示主UI:
setContentView(R.layout.main);
getActionBar().show();
但在onCreate被调用和飞溅出现之前,有一小段时间,当动作栏显示。
我怎样才能使动作栏不可见?
我尝试将主题应用于没有动作条的活动:
<item name="android:windowActionBar">false</item>
但在这种情况下,getActionBar()总是返回null,我发现没有办法再次显示它。
解决方案已经发布了附带的副作用,第一个.show()调用没有为我动画动作栏。
我得到了另一个很好的解决方案,解决了这个问题:
创建一个透明的可绘制对象——就像这样:
<形状xmlns: android = " http://schemas.android.com/apk/res/android " >
<固体
android:颜色= " # 00000000 " / >
< / >形状
将实际的动作栏背景设置为你在动作栏上设置的一个不可见的自定义视图:
getSupportActionBar () .setCustomView (R.layout.actionbar_custom_layout);
getSupportActionBar () .setDisplayOptions (ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar。DISPLAY_SHOW_CUSTOM | ActionBar。ActionBar.DISPLAY_SHOW_TITLE);
在onCreate中为动作栏设置透明背景:
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.background_transparent));
重要提示:不要立即在onCreate中隐藏动作栏,但稍后会有一点延迟-例如,当布局创建完成时:
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
getSupportActionBar().hide();
}
});
在你第一次调用.show()之前,设置自定义视图可见:
_actionbarRoot.setVisibility (View.VISIBLE);
getSupportActionBar(),告诉();
试试这个,对我来说很管用:
下面去掉了活动的标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
下面消除了通知栏,使活动全屏显示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
(完整示例如下)
注意:这些方法是在我们设置活动的内容视图之前调用的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Sets Application to full screen by removing action bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
// without this check, we would create a new fragment at each orientation change!
if (null == savedInstanceState)
createFragment();
}