每次我回到MainActivity时SplashScreen

时间:2016-07-18 06:58:04

标签: java android splash-screen splash

我在MainActivity上使用此代码,以实现完美运行的启动画面

ViewWillAppear()

但每当我回到MainActivity(主菜单所在的位置)时,splashScreen就会再次出现。有没有办法继续使用这段代码,只是添加一个if条件,第一次看不到splashScreen? (例如:应用程序加载时更改的变量) 提前致谢

5 个答案:

答案 0 :(得分:1)

使用2种不同的活动SplashActivity和MainActivity。

你的"飞溅"活动需要是MAIN LAUNCHER活动。所以像这样修改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>

几秒后从SplashActivity跳转到MainActivity ..在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秒后自动启动。希望它有所帮助。

答案 1 :(得分:0)

在使用MainActivity之后,为启动画面使用单独的活动,不要忘记在启动画面活动中使用finish()。

此链接可以帮助您

http://androidexample.com/Splash_screen_-_Android_Example/index.php?view=article_discription&aid=113&aaid=135

答案 2 :(得分: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);
        }
    }
}

答案 3 :(得分:-1)

在启动finish()活动

后使用SplashScreen

答案 4 :(得分:-1)

编辑:

另一种方法可以是 - 通过扩展Application class&amp; amp;创建一个布尔应用程序级别变量(设置为false)。然后在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;
  }
}

第二种方法 - 最好为Splash创建一个单独的活动,然后从SplashActivity&amp;中调用MainActivity。完成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>