Java 调用SplashScreenActivity后,应用程序将最小化
我有以下问题:我想创建一个启动屏幕,我可以在我的游戏循环中调用它(这是一个“下一级”启动屏幕) 当我调用启动屏幕时,它可以处理动画和其他一切,但应用程序会在5秒钟后将自身最小化。此启动屏幕调用发生在主活动已经启动之后 我的活动如下所示:Java 调用SplashScreenActivity后,应用程序将最小化,java,android,Java,Android,我有以下问题:我想创建一个启动屏幕,我可以在我的游戏循环中调用它(这是一个“下一级”启动屏幕) 当我调用启动屏幕时,它可以处理动画和其他一切,但应用程序会在5秒钟后将自身最小化。此启动屏幕调用发生在主活动已经启动之后 我的活动如下所示: public class SplashActivity extends AppCompatActivity { private ImageView logo; @Override protected void onCreate(Bund
public class SplashActivity extends AppCompatActivity {
private ImageView logo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
logo = findViewById(R.id.logo);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
}, 5000);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.viewanimation);
logo.startAnimation(anim);
}
}
我想通过以下调用在我的GameLoop中调用它:
Intent i = new Intent(gamePanel.getContext(), SplashActivity.class);
gamePanel.getContext().startActivity(i);
SplashScreen打开,动画开始工作,但是主活动应该再次出现(不是新启动)。使用finishActivity()
而不是finish()。
finish()。ActivityResult
将通过onActivityResult()传播回启动您的人。
finishActivity(int-requestCode)
用于完成您以前使用startActivityForResult(Intent,int)
尝试此Splash.java
public class Splash extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Thread myThread=new Thread(){
@Override
public void run() {
try {
Animation anim = AnimationUtils.loadAnimation(this, R.anim.viewanimation);
logo.startAnimation(anim);
//sleep time after animation
sleep(3000);
//to end the splash screen and call next activity with Intent
finish();
Intent intent = new Intent(Splash.this,MainActivity.class);
startActivity(intent);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
myThread.start();
}
}
在清单文件中,Splash.java
将是您启动的第一个活动
<activity android:name=".Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
希望有帮助。我无法从上下文中使用startActivityForResult,它不适用于我。gamePanel继承自SurfaceView,这是我从中获取getContext()
的地方。您是否在主活动中的init:gamePanel gamePanel=new gamePanel(this)上执行类似操作?如果是这样,您只需返回MainActivity:((MainActivity)gamePanel.getContext()).startActivityForResult(intent,i);对我在MainActivity中像这样启动GamePanel:this.setContentView(newGamePanel(this))代码>我刚刚尝试了这个,现在应用程序在SplashScreen上卡住了。(即使在5秒钟后也没有任何变化)也许问题出在舱单上?MainActivity具有类别启动器,SplashActivity具有类别默认值。应用程序是否在5秒后崩溃?它最小化,我可以再次聚焦它,然后循环重复,动画显示->最小化。