一定時間だけ表示して次のActivity表示

1,058 views
Skip to first unread message

ryo okuda

unread,
Feb 5, 2012, 9:25:02 AM2/5/12
to android-...@googlegroups.com
はじめまして。
androidでゲームを作っているりょうです。

あるアクティビティで、
初期処理で画面に画像を表示して、
何も操作をせず、その直後(or数秒後)に別のアクティビティを表示するような処理を作ろうと思っています。

onCreate文で、

setContentView((R.layout.XXXX);
Intent intent = new Intent( XXActivity.this, YYActivity.class );
startActivity( intent );

としてみたのですが、
これだと何も表示せずにすぐに次のアクティビティを呼び出ししてしまいます。

ちょっとひねって、Runnable とHundlerを使って
setContentView((R.layout.XXXX);
runnable = new Runnable() {
@Override
public void run() {
handler.post(new Runnable(){
@Override
public void run() {
Intent intent = new Intent( SelectNextPageActivity.this,
StarBabyCreaterProt01Activity.class );
startActivity( intent );
}
});
}
};
handler.postDelayed(runnable,1000);
こんな感じにしてみましたが、これもうまくいきませんでした。

何か良い方法はありませんか?

egg

unread,
Feb 5, 2012, 10:36:53 AM2/5/12
to android-...@googlegroups.com
りょうさん

江川と申します。

> handler.postDelayed(runnable,1000);
> こんな感じにしてみましたが、これもうまくいきませんでした。

実際に試せてはいないのですが、1秒後に遷移しそうに見えます。
どううまくいきませんでしたか?


------------------------------------------
EGAWA Takashi

2012年2月5日23:25 ryo okuda <ddn...@gmail.com>:

> --
> このメールは Google グループのグループ「Android-SDK-Japan」の登録者に送られています。
> このグループに投稿するには、android-...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-sdk-ja...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-sdk-japan?hl=ja からこのグループにアクセスしてください。
>

ryo okuda

unread,
Feb 5, 2012, 11:06:12 AM2/5/12
to android-...@googlegroups.com
江川さん

画像が表示されず、すぐに次の画面が表示されます。
待ち時間もなさそうに見えます...?

ログには以下のような出力が出ています。

ちなみに、アクティビティの流れをざっくり言うと、
YYProt01Activity(タイトル画面)
 → GameFlushCardActivity5(ゲーム画面)
 → SelectNextPageActivity2(画像を表示する画面) ←うまくいかないのはここ
 → YYProt01Activity (タイトル画面)

こんな感じで表示しようとしています。
なんか、動きを見ると、最後のタイトル画面表示時にYYProt01Activityが2つ表示されているようです。

02-05 15:56:41.854: INFO/ActivityManager(59): Starting activity:
Intent { cmp=xxx.xxx.xxx/.SelectNextPageActivity2 (has extras) }
02-05 15:56:41.895: DEBUG/GameFlushCardActivity5(9027): onPause:start
02-05 15:56:41.924: DEBUG/SelectNextPageActivity2(9027): onCreate:start
02-05 15:56:41.985: DEBUG/SelectNextPageActivity2(9027): onResume
02-05 15:56:41.994: WARN/ActivityManager(59): Duplicate finish request
for HistoryRecord{44fb3298 xxx.xxx.xxx/.SelectNextPageActivity2}
02-05 15:56:42.024: DEBUG/AudioSink(34): bufferCount (4) is too small
and increased to 12
02-05 15:56:44.994: INFO/ActivityManager(59): Starting activity:
Intent { cmp=xxx.xxx.xxx/.YYProt01Activity }
02-05 15:56:44.994: WARN/ActivityManager(59): startActivity called
from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for:
Intent { cmp=xxx.xxx.xxx/.YYProt01Activity }
02-05 15:56:45.004: WARN/TimedEventQueue(34): Event 27 was not found
in the queue, already cancelled?

2012年2月6日0:36 egg <t.e...@gmail.com>:

adamrocker

unread,
Feb 5, 2012, 6:02:09 PM2/5/12
to android-...@googlegroups.com

adamrockerです。

ActivityのライフサイクルでonCreateでは画面描画されません。
onStartかonResumeをオーバーライドしてみては如何でしょうか?
どちらにするかは画面遷移の仕様に依存しますので、リファレンスのActivityを御参考にしてください。

なお、Acticityの画面遷移アニメーションは機種やAndroidのバージョンによって異なりますのでお気をつけください。

2012/02/06 1:06 "ryo okuda" <ddn...@gmail.com>:

Ishikawa Hiromi

unread,
Feb 5, 2012, 10:10:17 PM2/5/12
to android-...@googlegroups.com
こんにちは

画面表示されてからということであれば、onWindowFocusChanged(boolean) で

Intent intent = new Intent( XXActivity.this, YYActivity.class );
startActivity( intent );

を実行すればおkです。

http://developer.android.com/reference/android/app/Activity.html#onWindowFocusChanged(boolean)

2012年2月5日23:25 ryo okuda <ddn...@gmail.com>:

ryo okuda

unread,
Feb 7, 2012, 10:14:46 AM2/7/12
to android-...@googlegroups.com
> 画面表示されてからということであれば、onWindowFocusChanged(boolean) で

上記の方法で解決しました!
ありがとうございました。


2012年2月6日12:10 Ishikawa Hiromi <ishi...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages