2013-08-28 170 views
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> 

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(); 
     }  } 

请帮我解决这个问题。

+1

将意图过滤器**置于** splash splash清单元素中。 – Luksprog

+0

我会认真地推荐你学习更多关于Android的知识。看看你发布的代码和XML,整个事情从一开始就注定要失败。 – Squonk

回答

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

如果有帮助,请接受答案,欢迎来到StackOverFlow! –

+0

我认为@maria已经是会员7个月了;)。开玩笑。 –

+0

所以它等待2秒,但徽标不出现? –

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

基本步骤来显示启动: -

1.Desgin你飞溅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); 
} 
} 
+0

如果有帮助,请接受答案。 – 1999493

0

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