我遇到以下问题:我想创建一个启动画面,可以在游戏循环中调用它(这是“下一级”启动画面)。
当我叫启动画面时,它可以处理动画,但除了5秒钟外,应用程序都会自动最小化。初始屏幕调用发生在主要活动已经开始之后。
我的SplashActivity看起来像这样:
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,并且动画可以工作,但随后应该再次显示MainActivity(不是重新开始)。
答案 0 :(得分:1)
尝试这个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>
希望有帮助。
答案 1 :(得分:0)
使用finishActivity()
代替finish().
finish()
完成活动并应关闭时调用此方法。 ActivityResult
会传播回通过onActivityResult().
发起您的任何人
finishActivity(int requestCode)
用于完成您先前从startActivityForResult(Intent, int)
开始的另一项活动