У меня есть две круглые кнопки, каждая из которых имеет свой цвет.
Теперь, если обе кнопки удерживаются одновременно, я хочу, чтобы они обе превратили совершенно новый 3-й цвет вместе со звуковым эффектом, некоторыеграфические изменения и т. д.
Следующий код, кажется, работает примерно в 50% случаев, обычно только тогда, когда обе кнопки нажимаются идеально вместе.(Если удерживать одну кнопку, а другую удерживать вскоре после этого, даже волоском, приложение, похоже, аварийно завершает работу).
new Thread(new Runnable() {
public void run(){
while (keepgoing) {
if (held1== true && held2==true) {
player2.start();
greenbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
pinkbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
keepgoing = false;
return;
}
}
return;
}
}).start();
}
hold1 устанавливается в значение true, когда происходит событие button1.setOnLongClick.hold1 устанавливается в false, когда случай MotionEvent.ACTION_UP происходит для OnTouchListener для button1.
то же самое для кнопки 2, вот так.
greenbutton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
held1 = true;
player.start();
if (switched){
revertButtons();
return true;
}
else {
switchButtons();
return true;
}
}
});
greenbutton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_UP:
held1 = false;
player.start();
if (bricked){
return true;
}
if (switched){
revertButtons();
break;
}
else {
switchButtons();
break;
}
}
return false;
}
});
почему этот код так нестабилен?