2013-08-28 2 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

Поместите фильтр намерения ** внутри ** элемент манифеста активности всплеска. – 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 File.

В вашем Java File Include Intent Как это: -

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-кодированием. ☺.

Смежные вопросы