我在Android中有一个支持操作栏应用程序,带有抽屉布局和应用程序的启动画面。
问题是当我启动我的应用程序时,ActionBar会在启动画面前闪烁一秒钟。
我该如何解决这个问题?
以下是启动画面的代码:
public class SplashScreen extends ActionBarActivity {
// Splash screen timer
private static int SPLASH_TIME_OUT = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getSupportActionBar().hide();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.splash_activity);
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, ZMainActivity.class);
startActivity(i);
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
}
}
这是我的清单:
<activity
android:name="info.androidhive.androidsplashscreentimer.SplashScreen"
android:label="MeriMasjid.com"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
请注意,我的活动不能使用任何主题,因为它是app compat应用程序。
解决方案:
将ActionBarActivity转换为Splashscreen的Activity并将@android:style / Theme.NoTitleBar应用于其在Manifest中的条目
答案 0 :(得分:2)
问题在于,需要花费一些时间才能使oncreate
方法使您的活动全屏显示,因此actionbar
会在消失之前闪烁一段时间。
而是在您的活动标签
中逐步将其应用于您的清单中<强>样品:强>
<activity
android:name="info.androidhive.androidsplashscreentimer.SplashScreen"
android:label="MeriMasjid.com"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar">
>
适用于appcompat的:
您需要在style.xml
中打开values folder
并替换所有内容:
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
</resources>
在你的清单中添加它之后:
<activity
android:name="info.androidhive.androidsplashscreentimer.SplashScreen"
android:label="MeriMasjid.com"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
>
答案 1 :(得分:2)
仅仅因为您使用AppCompat 不意味着每个活动都需要扩展ActionBarActivity
- 只有那些需要操作栏的人才能扩展ActionBarActivity
。对于启动画面,您可以扩展Activity
(如果您不需要任何片段)或FragmentActivity
(如果您确实需要片段)。在任何一种情况下,您都可以使用@android:style/Theme.NoTitleBar
等样式而无例外。