2

Итак, я только что прочитал этот вопрос: How do I make a splash screen? Но вместо добавления фиксированной задержки (как в верхнем ответе), я хотел сохранить экран заставки, пока MainActivity (с MapFragment) грузы.Всплеск экрана Android при загрузке MainActivity

public class SplashScreen extends Activity { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_splash); 

      Thread t = new Thread(new Runnable() {   
       @Override 
       public void run() { 
        Intent i = new Intent(SplashScreen.this, MainActivity.class); 
        startActivity(i); 
        synchronized (this) { 
          try { 
          wait(3000); 
          System.out.println("Thread waited for 3 seconds"); 
         } catch (InterruptedException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        }  
       } 
      }); 
      try { 
       t.start(); 
       t.join(); 
       finish(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
} 

Я добавил линию ожидания (3000), потому что я заметил, что нить недолго прожила. Однако, если я заставил его ждать дольше, есть только черный экран, который длится дольше. По какой-то причине активность SplashScreen не отображает ImageView. Что мне делать? Спасибо.

+2

[** Всплывающие экраны являются злыми, не используйте их! **) (http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/) –

ответ

-2

сделать заставку так:

while(counter < 1300) { 
    try { 
      Thread.sleep(1000); 
     }catch(InterruptedException e) { 
      e.printStackTrace(); 
     } 
     counter+=100; 
    } 

    Intent intent = new Intent(SplashActivity.this, MainActivity.class); 
    startActivity(intent); 

Надеется, что это помогает!

EDIT: Anotehr способ сделать всплеск будет выглядеть так:

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() { 
     Intent intent = new Intent(getApplicationContext(), YourNextActivity.class); 
     startActivity(intent); 
    } 
},3000); -> the splash will show for 3000 ms, you can reduce this. 
+0

Попробуем! Я обязательно расскажу вам, если это произойдет. Благодарю. –

+0

и почему -1 ?? –

+0

Я не дал вам -1, я принял ответ. (: –

1

Основная нить не может быть заблокирована в течение длительного времени. Вы должны использовать Handler для запуска другого события, если вы хотите запустить другое событие за 3 секунды. Вы можете использовать sendMessageDelayed. Кроме того, startActivity следует вызывать в основной теме.

4

Легкий способ сделать это ..

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

import com.example.tabs.R; 

public class Splash extends Activity implements Runnable 
{ 

    Thread mThread; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.splash); 

     mThread = new Thread(this); 

     mThread.start(); 
    } 

    @Override 
    public void run() 
    { 
     try 
     { 
      Thread.sleep(2000); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      startActivity(new Intent(Splash.this, MainActivity.class)); 

      finish(); 
     } 
    } 

} 

splash.xml, если вы хотите, чтобы показать изображение

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@drawable/splash" > 


</LinearLayout> 

Примечание, если вы хотите сделать некоторую операцию пользовательского интерфейса во всплеске. Затем вам нужно создать обработчик и обновить интерфейс.

+0

это не лучший способ. –

+0

Да, не лучший способ. есть другие способы, такие как TimerTask, Handler, CountDownTimer. Обработчик предпочтительнее. – Nepster

+0

Это не самые лучшие способы. –

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