2011-06-19 24 views
8

Sto sviluppando un'applicazione, che nel momento in cui viene caricata dal punto onCreate, ho solo uno schermo nero (fino a quando l'app non si alza). Guardando altre app hanno un logo aziendale o un'immagine interessante che si apre per qualche secondo, qualcuno può dirmi come farlo per favore?Immagine all'avvio/caricamento

E se è possibile impostarlo per la visualizzazione per un tempo minimo?

risposta

10

creare una nuova attività che visualizza l'immagine per alcuni secondi e reindirizza alla tua attività principale:

public class SplashActivity extends Activity 
{ 
    private static final long DELAY = 3000; 
    private boolean scheduled = false; 
    private Timer splashTimer; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 

     splashTimer = new Timer(); 
     splashTimer.schedule(new TimerTask() 
     { 
      @Override 
      public void run() 
      { 
       SplashActivity.this.finish(); 
       startActivity(new Intent(SplashActivity.this, MainActivity.class)); 
      } 
     }, DELAY); 
     scheduled = true; 
    } 

    @Override 
    protected void onDestroy() 
    { 
     super.onDestroy(); 
     if (scheduled) 
      splashTimer.cancel(); 
     splashTimer.purge(); 
    } 
} 

Impostare l'immagine come sfondo per questa attività. Spero possa aiutare. In bocca al lupo!

+2

Ma usa 'Handler' invece di' TimerTask'. – inazaruk

+0

Hai testato questo codice sull'emulatore o sul dispositivo reale? Non c'è "Timer" su Android! –

+2

Il timer non è un oggetto Android, è un oggetto java. È un codice funzionante in una delle mie app. Funziona sia su un dispositivo che su un emulatore. Aggiungi quanto segue al tuo elenco di importazione e starai bene: import java.util.Timer; import java.util.TimerTask; –

1

Questa immagine di avvio è nota anche come 'splash screen'. Here puoi trovare come creare una schermata iniziale.

0

Le tue esigenze sono call Splash Screen. Ecco il mio codice della schermata iniziale.

Basta aggiungere una nuova attività e impostare l'applicazione per l'apertura di questa attività.

public class SplashActivity estende DeviceInfoAbstractActivity {

@SuppressLint("MissingSuperCall") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState, R.layout.activity_splash); 

    passScreen(); 
} 

private void passScreen() { 

    new CountDownTimer(1000, 2000) { 

     @Override 
     public void onTick(long millisUntilFinished) { 

     } 

     @Override 
     public void onFinish() { 

      Intent intent = RDAIntentHelpers.getClearCacheIntent(); 

      intent.setClass(SplashActivity.this, MainActivity.class); 

      startActivity(intent); 

     } 
    }.start(); 
} 

@Override 
public void onBackPressed() { 
    //no exit 
} 
} 

e questo metodo il mio getClearCacheIntent()

public static Intent getClearCacheIntent() { 

    Intent intent = new Intent(); 

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

    return intent; 
} 

dopo che questi, la vostra schermata iniziale rimane sullo schermo per 2 secondi. Fai quello che vuoi =)

Problemi correlati