【Java】onClickとUI変更のお話
はい、もう金曜日ですね。大坂です。
今週もJavaでのアプリ作成のお話です。
クイズアプリなどを作るときに解答ボタンを押して「○」を出して、次の問題になったら「○」を消すみたいなことやりたい時に
とかやっても何も反応してくれません・・・。
調べてみるとUIはUIスレッドでしか変更できないようです。へぇ~(無知)
では、どうするのかというと。Handler#postを使用します。
といった感じですね。上の処理だと「○」を1秒だしてそのあと「○」が消えるという動作になります。
この後に次の問題を出す処理を書いていけばクイズのが作れます!きっと。
勉強不足を実感した瞬間でしたorz
ではでは、また来週(´・ω・)ノシ
今週もJavaでのアプリ作成のお話です。
クイズアプリなどを作るときに解答ボタンを押して「○」を出して、次の問題になったら「○」を消すみたいなことやりたい時に
@Override
public void onClick(View v) {
// 「○」の画像を描画
imageView.setImageResource(R.drawable.maru);
sleep(1000); // 1秒待つ
nextQuestion(); // 次の問題を作成
// 「○」の画像を消す
marubatu.setImageDrawable(null);
}
public synchronized void sleep(long msec) {
try {
wait(msec);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
とかやっても何も反応してくれません・・・。
調べてみるとUIはUIスレッドでしか変更できないようです。へぇ~(無知)
では、どうするのかというと。Handler#postを使用します。
@Override
public void onClick(View v) {
// ハンドラの生成
final Handler handler = new Handler();
new Thread(new Runnable() {
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
// 「○」の画像を描画
imageView.setImageResource(R.drawable.maru);
}
});
sleep(1000); // 1秒待つ
handler.post(new Runnable() {
@Override
public void run() {
// 「○」の画像を消す
imageView.setImageDrawable(null);
}
});
}
}).start();
}
public synchronized void sleep(long msec) {
try {
wait(msec);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
といった感じですね。上の処理だと「○」を1秒だしてそのあと「○」が消えるという動作になります。
この後に次の問題を出す処理を書いていけばクイズのが作れます!きっと。
勉強不足を実感した瞬間でしたorz
ではでは、また来週(´・ω・)ノシ
« 【Unity】Unity&Orthelloによる2Dゲーム作成② | 【Unity】BlenderからUnityへのインポート »
コメント
| h o m e |