У меня есть 16 пустой квадрат, и я хочу отображать красный квадрат случайным образом каждые 1 с, поэтому я использовал обработчик, и это работает. Но когда пользователь нажимает на этот красный квадрат, счет увеличивается на 1. Я попытался добавить onclicklistener, чтобы назвать это, но это не то, что мне нужно, потому что, когда фон квадратов краснеет, увеличивается на 1, даже когда он возвращается к белый, поэтому я попытался добавить на клик-слушатель каждое изображение, начиная с первого, но ничего не происходит; когда я нажимаю на него сбои приложения, так что я должен сделать ## Heading ##Сравните фон ImageView с Drawable
код:
Drawable RedSquare;
ImageView Image1;
TextView res;
Random random = new Random();
int score = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
MediaPlayer mp =MediaPlayer.create(getApplicationContext(),R.raw.mp);
mp.start();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reflex);
RedSquare = getResources().getDrawable(R.mipmap.redsquare);
Image1 = (ImageView) findViewById(R.id.imageView1);
ImageView Image2 = (ImageView) findViewById(R.id.imageView2);
ImageView Image3 = (ImageView) findViewById(R.id.imageView3);
ImageView Image4 = (ImageView) findViewById(R.id.imageView4);
ImageView Image5 = (ImageView) findViewById(R.id.imageView5);
ImageView Image6 = (ImageView) findViewById(R.id.imageView6);
ImageView Image7 = (ImageView) findViewById(R.id.imageView7);
ImageView Image8 = (ImageView) findViewById(R.id.imageView8);
ImageView Image9 = (ImageView) findViewById(R.id.imageView9);
ImageView Image10 = (ImageView) findViewById(R.id.imageView10);
ImageView Image11 = (ImageView) findViewById(R.id.imageView11);
ImageView Image12 = (ImageView) findViewById(R.id.imageView12);
ImageView Image13 = (ImageView) findViewById(R.id.imageView13);
ImageView Image14 = (ImageView) findViewById(R.id.imageView14);
ImageView Image15 = (ImageView) findViewById(R.id.imageView15);
ImageView Image16 = (ImageView) findViewById(R.id.imageView16);
res = (TextView) findViewById(R.id.reflexresult);
final ImageView[] Image = {Image1, Image2, Image3, Image4, Image5, Image6,
Image7, Image8, Image9, Image10, Image11, Image12, Image13, Image14, Image15, Image16};
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
GeneratePosition(Image);
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(runnable, 1000);
addScore();
}
public void GeneratePosition(ImageView[] Image) {
int index = random.nextInt(Image.length);
ImageView name = Image[index];
for (ImageView imageView : Image) {
imageView.setImageDrawable(getResources().getDrawable(R.mipmap.blanksquare));
}
name.setImageDrawable(getResources().getDrawable(R.mipmap.redsquare));
}
public void addScore(){
Image1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(Image1.getBackground().equals(RedSquare)){
score++;
res.setText(score+"");
}
}
});
}
}
Вы имеете в виду вот это? public void GeneratePosition (ImageView [] Image) { int index = random.nextInt (Image.length); ImageView name = Image [index]; name.setOnClickListener (новый View.OnClickListener() { @Override общественного недействительный OnClick (View Вид) { счет ++; res.setText (оценка + "");} }); для (ImageView imageView: изображение) { imageView.setImageDrawable (getResources(). GetDrawable (R.mipmap.blanksquare)); } – Anthoz
Нет, но это также возможность. Но если вы это сделаете, вам нужно позаботиться о том, чтобы ваш слушатель удалялся щелчком или таймаутом. –
Какой второй метод? – Anthoz