2016-07-18 2 views
1

Я использую этот код на MainActivity для SplashScreen, который прекрасно работаетSplashScreen каждый раз, когда я вернулся на MainActivity

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

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

, но каждый раз, когда я вернулся на MainActivity (где главное меню), то SplashScreen снова. Есть ли способ продолжать использовать этот код, и просто добавление условия if не видит splashScreen после первого раза? (например: переменное, которая изменяется, когда приложение нагрузка) Заранее спасибо

+0

Вы используете два отдельных вида деятельности? Или ваш экран заставки - это всего лишь изображение –

+0

Где вы их разместили сейчас? –

+0

Где начинается следующая деятельность? –

ответ

-1

использовать finish() после запуска SplashScreen активности

-1

EDIT:

Еще один подход может быть - Создание булеву переменного уровня приложения (установите значение false), расширив Application класс &, затем проверив его в методе run. Если false, то отобразите всплывающее окно &, чтобы оно было равно true, чтобы оно не выполнялось снова.

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

    public boolean isSplashDisplayed() { 
    return isSplashDisplayed ; 
    } 

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

Второй подход - Его лучше создать отдельную активность для Всплеск, а затем вызвать MainActivity из SplashActivity & отделка SplashActivity

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

необходимо также, чтобы сделать ваш SplashActivity как пусковая

<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 Пожалуйста, проверьте отредактированный ответ – Arjit

1

Используйте 2 разных вида активности SplashActivity и MainActivity.

Ваша деятельность «Всплеск» должна быть ОСНОВНОЙ ЗАПУСКА. Таким образом изменить AndroidManifest файл, как это ...

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

И Перейти к MainActivity из SplashActivity через несколько секунд .. Используйте этот код в SplashActivity.

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

здесь 3000 используется в течение 3 секунд. Автоматический запуск MainActivity через 3 секунды. Надеюсь, поможет.

0

Просто создайте одну переменную, чтобы узнать, отображается ли его или нет.

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

happyCoding;

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