我在MainActivity上使用此代码,以实现完美运行的启动画面
ViewWillAppear()
但每当我回到MainActivity(主菜单所在的位置)时,splashScreen就会再次出现。有没有办法继续使用这段代码,只是添加一个if条件,第一次看不到splashScreen? (例如:应用程序加载时更改的变量) 提前致谢
答案 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()。
此链接可以帮助您
答案 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>