0

我的项目的一部分我想使用闪屏。代码一切正常,但不幸的是,启动画面在开始时没有加载。我的清单文件是

    <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> 

闪屏.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

4 回答 4

2

我相信您需要将该意图过滤器放在您的活动标签中。

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

 <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>
于 2013-08-28T10:51:46.647 回答
1

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

<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>
于 2013-08-28T10:51:25.610 回答
0

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

于 2014-12-20T19:28:02.560 回答
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);
}
}
于 2013-08-28T11:36:29.393 回答