我希望使用启动画面的项目的一部分。代码一切都很好,但不幸的是,启动时不会加载启动画面。 我的清单文件是
<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();
} }
请帮我解决这个问题。
答案 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编码。 ☺。