java - 显示来自 onCreate 的 Activity

标签 java android android-activity

问题描述

我的应用程序中有两个 Activity MainActivityBannerActivity。从主要 Activity 中,我在 onCreate 方法中启动 BannerActivity 。但我首先看到 MainActivity 屏幕一秒钟,然后看到 BannerActivity 屏幕。

问题

我该如何做才能让 BannerActivity 首先显示,倒计时计时器停止后,BannerActivity 将在 MainActivity 到达后关闭屏幕。

主要 Activity

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    /* Show banner activity for several seconds then close it. */
    Intent bannerIntent = new Intent(MainActivity.this, BannerActivity.class);
    this.startActivity(bannerIntent);   
}
};

横幅 Activity

public class BannerActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    /* Make banner fullscreen. */
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                         WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_banner);

    /* Launch count down timer for several seconds. */
    CountDownTimer countDownTimer = new CountDownTimer(3000, 1000) {

        @Override
        public void onTick(long millisUntilFinished) { /* Not used. */ }

        @Override
        public void onFinish() {
            BannerActivity.this.finish();
        }

    }.start();

}

@Override
public void onBackPressed() {
    /* Lock back button presses. */
    super.onBackPressed();
}

};

最佳答案

您需要一个启动屏幕:

http://www.thiagorosa.com.br/en/tutorial/part01-splash-screen

public class GameSplash extends Activity {

// time to wait on the splash screen
private static final int SPLASH_SCREEN_DELAY = 3000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    new Thread() {
        @Override
        public void run() {
            try {
                // do any heavy initialization here

                // wait a few seconds before going to the next screen
                sleep(SPLASH_SCREEN_DELAY);
            }
            catch (InterruptedException e) {

            }
            catch (Exception e) {

            }
            finally {
                // start the level selection screen
                Intent intentSelect = new Intent(GameSplash.this, GameSelect.class);
                startActivity(intentSelect);
            }
        }
    }.start();

}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // ignore any key press on the splash screen
    return true;
}

}

关于java - 显示来自 onCreate 的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773088/

相关文章:

java - iText 7 : Paragraph height as it would be rendered

android - 与来自服务的 Activity (LocalService) 进行通信 - Android 最佳实践

java - 使用 JAXB 但未获取值

android - 自适应图标不起作用

java - 如何在不同的 fragment 中更改不同样式的操作栏标题?

java - 使用 Android.mk 的aidl 文件找不到类的导入

android - 有人可以解释一下 startActivity(intent) 和 startActivityForResult(intent) 是如何异步的吗?

java - 如何完成主 Activity onBackPressed?

java - 在 JAX-RS 中初始化实体管理器以实现规模化

java - 如何修复 security.xml 文件