Паказаная дзейнасць з OnCreate

апісанне праблемы

У мяне ёсць два віды дзейнасці, у маім дадатку MainActivity і BannerActivity . Ад асноўнай дзейнасці я пачынаю BannerActivity у OnCreate метад. Але я першы я бачу MainActivity экран для другога, а затым BannerActivity <�код /> экран.

пытанне

Як я магу зрабіць так, што BannerActivity будзе паказаны першым і пасля таймера зваротнага адліку часу спыніцца і BannerActivity зачыняцца пасля гэтага MainActivity прыйсці да экрана.

MainActivity

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);   
}
};

BannerActivity

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();
}

};
0
stackoverflow.com/questions/16750059/… . Праверыць гэтую спасылку. Можа дапамагчы вам.
дададзена аўтар Raghunandan, крыніца
@ViTO вы можаце проста замяніць setContentView ў адпаведнасці з патрабаваннямі MainActivity.
дададзена аўтар Arpit Garg, крыніца
чаму Вы пачынаеце do not BannerActivity ў якасці асноўнай дзейнасці? Тады вы маглі б ўсталяваць тут намер пасля таго, як таймер спыняецца, каб пачаць MainActivity ...
дададзена аўтар Opiatefuchs, крыніца

8 адказы

Вам патрэбен SplashScreen:

http://www.thiagorosa.com.br/en/tutorial/part01 -splash экранам

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;
}

}
1
дададзена

Вы можаце пачаць з BannerActivity, а затым, калі час мінае вы ідзяце MainActivity і ачысціць стэк гісторыі з дапамогай гэтага намеру сцяга (так што вы не можаце вярнуцца да BannerActivity з дапамогай кнопкі назад).

Intent.FLAG_ACTIVITY_CLEAR_TASK
0
дададзена

паспрабуйце выкарыстоўваць той спосаб у першую чаргу неабходна загрузіць макет XML

requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_banner);
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                         WindowManager.LayoutParams.FLAG_FULLSCREEN);

або паспрабаваць пакласці ў маніфесце як

 
0
дададзена

Вам патрэбна застаўка. Паспрабуйце гэта:

Пачатак BanerActivity першы. І зрабіць яго OnCreate як

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Thread welcomeThread = new Thread() {

            int wait = 0;

            @Override
            public void run() {
                try {
                    super.run();

                    while (wait < 5000) { //Wait of 5 seconds
                        sleep(500);
                        wait += 500;
                    }
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(BanerActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }

Спадзяюся, што гэта дапамагае.

0
дададзена
чаму вам трэба час цыкла? Хіба вы не можаце проста напісаць Thread.sleep (5000)
дададзена аўтар Blackbelt, крыніца
Так. Я проста скапіяваў яго з майго працоўнага кода. Не змяняць :) @blackbelt
дададзена аўтар MysticMagicϡ, крыніца

Запуск першага BannerActivity і ў MainActivity contdown перспектыве, а не BannerActivity.this.finish ();

0
дададзена

Вы можаце зрабіць гэта, як і ў вашай дзейнасці Banner

выкарыстоўваць гэты код у OnCreate метад у банэрнай дзейнасці

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        public void run() {

            finish();
        }
    }, 2000);
0
дададзена

Памяняйце Актыўнасці на маніфесце, каб вырашыць, якія дзеянні кіруюць першым:

    
    
    
        
            

            
        
    

The BannerActivity should have the tag and set as Main and Launcher as the example. This will make Banner activity as the Initial Activity when you start your application.

Пасля гэтага вы можаце проста рэалізаваць countdowntimer і пачаць MainActivity, калі таймер сканчаецца.

Спадзяюся, што гэта дапамагае, поспехі ^^

0
дададзена

самым простым рашэннем з'яўляецца зрабіць BannerActivity на пускавую дзейнасць і змяняць CountDownTimer быць

 @Override
 public void onFinish() 
 {
         Intent mainIntent = new Intent(this, MainActivity.class);
         startActivity(mainIntent); 
         finish();
 }

then adjust the manifest file to make the BannerActivity as the launcher activity and remove it from the MainActivity

0
дададзена