android- activity首先显示而不是启动画面

时间:2014-12-09 15:51:04

标签: android android-intent android-activity

我为我的应用程序制作了一个启动画面。我希望在应用程序打开时显示欢迎屏幕。

这是代码,我使用MainActivity作为启动画面(我只是测试)

public class MainActivity extends ActionBarActivity  {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getSupportActionBar().hide();

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {
            // TODO: Your application init goes here.
            Intent mInHome = new Intent(MainActivity.this, FistActiivty.class);
            MainActivity.this.startActivity(mInHome);
            MainActivity.this.finish();
        }
    }, 4000);
}
}

layout xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/image"
tools:context=".MainActivity" >
</RelativeLayout>

在清单中,MainActivity首先运行,然后运行到FirstActivity类。

当我打开应用时,首先显示:

enter image description here

然后启动画面显示:

enter image description here

注意:它没有显示firstActivity的布局。只显示一个空布局。

这是清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="19" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light" >
    <activity
        android:name="com.example.test.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="com.example.test.FistActiivty"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.FistActiivty" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

</manifest>

我测试了一些应用程序,所有这些应用程序首先显示启动画面

如何先显示启动画面然后显示下一个活动?

1 个答案:

答案 0 :(得分:0)

在启动画面之前看到的内容是应用程序启动期间显示的默认窗口背景。如果您定义新样式并在第一个活动中使用它,则可以从xml自定义此屏幕。

您必须使用启动画面作为背景来定义样式:

在res / values / style.xml中:

<style name="splashScreenStyle" parent="@android:style/Theme.AppCompat.Light">
    <item name="android:windowBackground">@drawable/image</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

在您的清单中:将此样式用于您的主要活动:

<activity
    android:name="com.example.test.FistActiivty"
    android:theme="@style/splashScreenStyle"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

不需要两项活动。只要setContent,窗口背景将被您的布局替换。即你可以删除你的MainActivity并清理你的清单(它不应该包含两个android.intent.category.LAUNCHER)