2016-07-18 2 views
1

J'utilise ce code sur MainActivity pour un splashscreen qui fonctionne parfaitementSplashScreen chaque fois que je suis de retour sur MainActivity

final ImageView splash1 = (ImageView) this.findViewById(R.id.splash); 

    new Handler().postDelayed(new Runnable(){ 
     @Override 
     public void run() { 
      splash1.setVisibility(View.GONE); 
     } 
    }, 1000); 

mais chaque fois que je suis de retour sur MainActivity (où le menu principal est), le splashScreen est là encore. Est-il possible de continuer à utiliser ce code, et juste ajouter une condition if ne voit pas le splashScreen après la première fois? (par exemple: une variable qui change lorsque les charges d'applications) de Merci à l'avance

+0

utilisez-vous deux activités distinctes? Ou votre écran de démarrage est juste une image –

+0

Où avez-vous mis ces actuellement? –

+0

Où commencer la prochaine activité? –

Répondre

-1

d'utilisation finish() après le démarrage du SplashScreen Activité

-1

EDIT:

Une autre approche peut être - Créer une variable de niveau d'application booléenne (mettre à false) en étendant Application classe & puis en le vérifiant dans la méthode run - Si false alors affichez le splash & définissez-le à true, afin qu'il ne s'exécutera pas à nouveau.

public class DefaultApplication extends Application { 
    private boolean isSplashDisplayed = false; 

    public boolean isSplashDisplayed() { 
    return isSplashDisplayed ; 
    } 

    public void setIsSplashDisplayed(boolean isSplashDisplayed) { 
    this.isSplashDisplayed = isSplashDisplayed; 
    } 
} 

Deuxième approche - Il est préférable de créer une activité distincte pour Splash, puis appelez MainActivity de SplashActivity & finition SplashActivity

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Intent i = new Intent(SplashScreen.this, MainActivity.class); 
      startActivity(i); 
      finish(); 
     } 
    }, 1000); 

ont également besoin de faire votre SplashActivity comme lanceur

<activity 
     android:name=".SplashActivity" 
     android:label="@string/title_activity_splash_screen" >>  
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" />>  
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    < /activity> 
+0

@Giuseppe Merci de vérifier la réponse. – Arjit

1

Utilisez 2 activités différentes SplashActivity et MainActivity.

Votre activité "Splash" doit être l'activité du MAIN LAUNCHER. modifier Ainsi, le fichier AndroidManifest comme ça ...

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
    </activity> 

    <activity android:name=".Splash"> 
     <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

Et Aller à MainActivity de SplashActivity après quelques secondes .. Utilisez ce code dans SplashActivity.

Handler hadler=new Handler(); 
     hadler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       finish(); 
       Intent i = new Intent(context, MainActivity.class); 
       startActivity(i); 
      } 
     }, 3000); 

ici 3000 est utilisé pendant 3 secondes. Le démarrage automatique MainActivity après 3 secondes. J'espère que cela aide.

0

Il suffit de créer une variable de savoir si son affiché ou non.

class YourActivity extends Activity { 

    boolean isDisplayed; 

    @Override 
    protected void onStart() { 
     if (!isDisplayed) { 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        isDisplayed = true; 
        splash1.setVisibility(View.GONE); 
       } 
      }, 1000); 

     } else { 
      splash1.setVisibility(View.GONE); 
     } 
    } 
} 

joyCoding;