应用程序启动时的空白页面

时间:2013-08-16 08:53:24

标签: performance android-manifest android-theme android

如何在应用程序名称作为启动应用程序时加载的标题时删除空白页面。我做了一些研究,我发现最好的解释/解决方案是将应用程序的主题设置为null,以便android系统不会绘制该页面。

我已经尝试了这个,但它原则上没有用,但我认为应该这样。

在我的styles.xml中,我有

<style name="NoBackground" parent="android:Theme">
    <item name="android:windowBackground">@null</item>
</style>

在我的清单文件中我有

<application
    android:name=".FIXR"
    android:allowBackup="true"
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:theme="@style/NoBackground" >

有没有更好的方法摆脱这种情况?

5 个答案:

答案 0 :(得分:1)

如果您的应用程序具有服务或您在onCreate方法上运行异步任务,请显示带有进程对话框的启动画面,并在加载所有源后切换到主屏幕。这是一种技术。

为了让你轻松工作,我切断了部分代码:

<强> launcher.xml

实际上是你的启动画面:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:src="@drawable/splashscreen" 
    android:scaleType="fitXY" />

<ProgressBar 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal|bottom" />

在您的主要活动中:

 setContentView(R.layout.launcher);

 mHandler = new Handler();

 //if Service is Ready: ....

 mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent().setClass(LaunchActivity.this, OtherActivity.class).setData(getIntent().getData()));
                finish();
            }
        }, 1000);

希望它可以帮助你解决问题

答案 1 :(得分:1)

我用这个,它对我有用

<application
    android:name="com.example.G"
    android:icon="@drawable/ic_app"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar"
    >

答案 2 :(得分:0)

我认为它的显示是因为您的应用的第一页需要时间来加载。您可能有可能在onCreate()活动方法上做了太多工作。所以我建议尽量减少活动开始时的负荷。这样就不会出现空白屏幕了。

希望你明白!!

答案 3 :(得分:0)

style.xml创建:

<style name="SplashPage">
    <item name="android:windowBackground">@color/white</item>
</style>

然后在您的启动器活动的AndroidManifest.xml中,指定活动主题:

<activity
    android:name=".activity.MainActivity"
    android:label="@string/title_activity_main"
    android:theme="@style/SplashPage"
    android:screenOrientation="portrait" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

答案 4 :(得分:0)

尝试下面的代码行,在res / values / styles.xml中添加这些行:

             -------      

<style name="SplashScreen">
    <item name="android:padding">0dp</item>
    <item name="android:windowBackground">@android:color/black</item>
    <item name="android:windowFrame">@null</item>
</style>

在您的清单文件中,只需将其作为样式传递给您的活动标记:

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
    android:name="com.mpg.myapp.MainActivity"
    android:theme="@style/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>

可能这会对你有帮助。