启动画面无法加载

时间:2013-08-28 10:48:28

标签: android splash-screen

我希望使用启动画面的项目的一部分。代码一切都很好,但不幸的是,启动时不会加载启动画面。 我的清单文件是

    <activity 
    android:label="@string/app_name" 
    android:name="com.example.GamePlay.SplashScreen" 
    android:configChanges="orientation|keyboardHidden"
    android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 
    android:screenOrientation="landscape">  </activity>

 <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

<activity
    android:name="com.example.GamePlay.Game"
    android:configChanges="orientation|keyboardHidden" 
    android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 
    android:screenOrientation="landscape"
    android:label="@string/app_name"></activity> 

SplashScreen.java

public class SplashScreen extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
    setContentView(R.layout.splash_screen);
    Thread welcomeThread = new Thread() {
        int wait = 0;
        @Override
        public void run() {
            try {
                super.run();
                while (wait < 2000) {
                    sleep(100);
                    wait += 100;}
            } catch (Exception e) {
                System.out.println("SplashScreen()"+e.toString());
            } finally {
                System.out.println("Final statment for run()");
            }           }       };
    welcomeThread.start();
     new AsyncTask<Void, Void, Void>(){
           @Override
           protected Void doInBackground(Void... params) {
                    LayoutInflater inflater = (LayoutInflater)                      SplashScreen.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    Game.cachedView = inflater.inflate(R.layout.activity_game, null, false);
                    return null;
                }
               @Override
                protected void onPostExecute(Void aVoid) {
                    finish();
                    Intent intent = new Intent(getBaseContext(), Game.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                    startActivity(intent);
                }
            }.execute();
        }       }

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:2)

我相信你需要将那个intent过滤器放在你的activity标签中。

目前它与活动无关,因此在发布时不加载。

 <activity 
    android:label="@string/app_name" 
    android:name="com.example.GamePlay.SplashScreen" 
    android:configChanges="orientation|keyboardHidden"
    android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 
    android:screenOrientation="landscape"> 
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
 </activity>

答案 1 :(得分:1)

你应该在意图过滤器和第二个活动没有intent-filter之后关闭活动..

<activity 
    android:label="@string/app_name" 
    android:name="com.example.GamePlay.SplashScreen" 
    android:configChanges="orientation|keyboardHidden"
    android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 
    android:screenOrientation="landscape">

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

<activity
    android:name="com.example.GamePlay.Game"
    android:configChanges="orientation|keyboardHidden" 
    android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 
    android:screenOrientation="landscape"
    android:label="@string/app_name">
 <intent-filter>
        <action android:name="android.intent.action.GAME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

答案 2 :(得分:0)

显示启动的基本步骤: -

1.设计您的Splash XML。

2.添加你的splash.java文件。

3.最后在AndroidMainfest文件中调用它。

在您的Java文件中包含意图如下: -

public class SplashScreen extends Activity {
private long splashDelay = 5000; //5 seconds

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    TimerTask task = new TimerTask()
    {

        @Override
        public void run() {
            finish();
            Intent mainIntent = new Intent().setClass(SplashScreen.this, SplashActivity.class);
            startActivity(mainIntent);
        }

    };

    Timer timer = new Timer();
    timer.schedule(task, splashDelay);
}
}

答案 3 :(得分:0)

有时您可以拥有一个很棒的代码,问题可能出在您正在使用的IDE中。如果在诸如IntelliJ IDEA之类的IDE上,只需将应用程序加载到AVD上(希望它成功运行 - 但绕过启动画面),然后重新加载AVD(或关闭它并再次启动它)。启动应用程序AVD-不再从IDE构建它。您会注意到spalshscreen将显示您设置的延迟时间。 希望这可以帮助您和快乐的Android编码。 ☺。