Я создаю свое первое приложение для Android, используя this guide в качестве ссылки. В настоящее время у меня есть красная кнопка на моем холсте, и когда пользователь нажимает кнопку, логическая (зеленая) будет установлена в true, чтобы растровое изображение кнопки было зеленым.Проблема с Android onTouchEvent()
Эта часть приложения работает, однако она работает независимо от того, где пользователь нажимает на холст. Я хочу, чтобы логическое значение было изменено, когда пользователь нажимает на растровое изображение кнопки. Вот то, что я в настоящее время в моем коде:
Метод onTouchEvent()
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
button.handleActionDown((int)event.getX(), (int)event.getY());
if (button.isTouched()) {
green = true;
}
} if (event.getAction() == MotionEvent.ACTION_MOVE) {
} if (event.getAction() == MotionEvent.ACTION_UP) {
if (button.isTouched()) {
green = false;
button.setTouched(false);
}
}
return true;
}
handleActionDown() Метод
public void handleActionDown(int eventX, int eventY) {
if (eventX >= (x - bitmap.getWidth()/2) && (eventX <= (x + bitmap.getWidth()/2))) {
if (eventY >= (y - bitmap.getHeight()/2) && (eventY <= (y + bitmap.getHeight()/2))) {
setTouched(true);
} else {
setTouched(false);
}
} else {
setTouched(false);
}
}
Может кто-нибудь увидеть, что мне не хватает в для события ACTION_DOWN сделать так, чтобы он срабатывал только при касании растрового изображения растрового изображения?
С уважением
Когда код ведет себя таким образом, вопреки что вы ожидаете, хорошим первым приложением может быть создание отладочного вывода - добавьте некоторые записи в свой handleActionDown(), в частности eventX vs x и событие Y vs y. Или даже отобразите эти цифры на экране. Вы можете найти что-то простое, например, x и y не инициализироваться. Или, может быть, у вашего растрового изображения нет размеров, которые, по вашему мнению, он делает, или ... –
Кажется, если все, что вы пытаетесь сделать, это создать кнопку со статусом «вниз» и состояние вверх, чтобы вы могли сделать это просто в пределах xml-файл. – trumpetlicks
Вы действительно пытаетесь создать собственное пользовательское распознавание кнопок? Потому что кажется, что ваш onTouchEvent реализуется на вашем верхнем уровне. – trumpetlicks