私はメモリゲームアプリを作成しました。レイアウトの各imageButtonのonClick属性に挿入した "OnImageButtonClick"という関数があります。 イメージをクリックするとイメージを変更するはずですが、実際に何が起こるかは、関数が終了した後でイメージが実際に変更されることです。imageButtonのAndroid setImageResource
public void onImageButtonClick(View v) throws InterruptedException {
int cardIndex = Integer.parseInt(v.getTag().toString());
ImageButton card = (ImageButton)v;
Resources resources = this.getResources();
int imageId = resources.getIdentifier(imageArr[cardIndex-1], "drawable", this.getPackageName());
card.setImageResource(imageId);
if(isFirst) {
pickedCards[0] = card;
}
else {
pickedCards[1] = card;
}
PickCard();
}
public void PickCard() throws InterruptedException{
try {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();
} catch (Exception e) {
Toast.makeText(this, "Can't play music", Toast.LENGTH_LONG);
}
if(!isFirst) {
if (pickedCards[0].getBackground() == pickedCards[1].getBackground()){
Points++;
}
else {
Thread.sleep(1000);
pickedCards[0].setImageResource(R.drawable.card);
pickedCards[1].setImageResource(R.drawable.card);
}
}
isFirst = !isFirst;
}
問題は画像が実際に変更される前にPickCardが発生することです。
は、タスクを使用して重いメモリa'like聞こえます。 PickCard()は何をしますか? – Opiatefuchs
私の編集を見て@Opiatefuchs –
これは私が言ったものの例です:http://stackoverflow.com/a/15709457 –