Splashscreen在Android中的支持操作栏中运行不完美

时间:2014-06-24 03:15:52

标签: android splash-screen

我在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中的条目

2 个答案:

答案 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等样式而无例外。