1

そのため、5 秒間のスプラッシュ スクリーンだけでなくskip、下部にもボタンがあります。スプラッシュはこのように流れます。

public class Splash extends Activity implements View.OnClickListener {

MediaPlayer splashsong;
Button skipsplash;

@Override
protected void onCreate(Bundle chiefsplash) {
    // TODO Auto-generated method stub
    super.onCreate(chiefsplash);
    setContentView(R.layout.splash);

    splashsong = MediaPlayer.create(Splash.this, R.raw.jingle);
    splashsong.start();
    skipsplash = (Button) findViewById(R.id.skipsplash);

    skipsplash.setOnClickListener(this);

    Thread splashtimer = new Thread() {
        public void run() {
            try {
                sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                switchactivity();
            }
        }
    };

    splashtimer.start();
}

@Override
public void onClick(View skipbutton) {
    switchactivity();
}

private void switchactivity() {
    Intent aftersplash = new Intent("com.example.testapp.MENU");
    startActivity(aftersplash);
}

@Override
protected void onPause() {

    super.onPause();
    splashsong.release();
    finish();
}

}

ここで、5 秒間の待機を中断するボタンを押す選択肢が必要skipです。スレッドが実行されているときではないと思います。ボタンをクリックするskipと、 が作成されてから 5 秒が経過すると、既にそこにいても他の場所にいても、Activityが開きます。Menu Activityとにかくこれを止めるには?

4

4 に答える 4

0

代わりに、ブール値の isSplashRunning を true に設定し、実行時にすべての操作を While(isSplashRunning ){} ループで行い、スレッド セットを停止する場合は isSplashRunning = false; にすることができます。スプラッシュタイマー.結合();

于 2013-04-27T03:06:27.517 に答える
0

5 秒のスリープ間隔を使用する代わりに、ループ内で短い間隔を使用し、フラグの組み合わせを使用して、いつでも適切にスレッドをスキップします。以下の変更されたコードを試してください。

public class Splash extends Activity implements View.OnClickListener {

MediaPlayer splashsong;
Button skipsplash;
boolean skipWait = false;

@Override
protected void onCreate(Bundle chiefsplash) {
// TODO Auto-generated method stub
super.onCreate(chiefsplash);
setContentView(R.layout.splash);

splashsong = MediaPlayer.create(Splash.this, R.raw.jingle);
splashsong.start();
skipsplash = (Button) findViewById(R.id.skipsplash);

skipsplash.setOnClickListener(this);

Thread splashtimer = new Thread() {
    int waitTime = 0;
    public void run() {
        while(waitTime < 5000 && !skipWait) {
            try {
                sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } 
            waitTime += 500;
        }
        switchactivity();
    }
};

splashtimer.start();
}

@Override
public void onClick(View skipbutton) {
    skipWait = true;
}

private void switchactivity() {
Intent aftersplash = new Intent("com.example.testapp.MENU");
startActivity(aftersplash);
}

@Override
protected void onPause() {

super.onPause();
splashsong.release();
finish();
}
于 2013-04-27T16:49:47.263 に答える
-1

使用する:

splashtimer.stop();

スレッドをグローバルオブジェクトに設定する必要があります。

于 2013-04-27T02:15:45.320 に答える