В моем android приложении плохо работает Touch Event для redmi
Код моего touch event
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean value = super.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
return true;
}
case MotionEvent.ACTION_MOVE: {
for (Shape shape : draw) {
if (shape instanceof Rectangle) {
Rectangle rectangle = (Rectangle) shape;
if (rectangle.mouseHandler == null) continue;
if (rectangle.getLayoutXPx() + rectangle.getWidthPx() >= event.getX() && rectangle.getLayoutXPx() <= event.getX() &&
rectangle.getLayoutYPx() + rectangle.getHeightPx() >= event.getY() && rectangle.getLayoutYPx() <= event.getY())
rectangle.mouseHandler.handle(new MouseEvent(event.getX(), event.getY()));
}
}
return true;
}
}
return value;
}
Он работает на моем honor телефоне, но плохо работает на redmi, при этом отрисовка происходит ровно, а обработка событий использует те же x и y, но работает плохо. К примеру ходы появляются и выбрать их можно, только после попытки перетаскивания и фигура может сдвинуться только на один ход.
Ответ: Нужно перенести всю логику обработки нажатия в ACTION_DOWN, тогда это будет работать одинаково.
Ответы (1 шт):
Вообще, когда я использовал android api, а это было давно, как страшный сон. Этот touch event всегда был баганым, хочет работает, хочет нет. Хотя может я что-то путаю. Вообще если у вас написанно куча кода на этом Android api, то попробуйте вместо отрисовки воспользоваться button и установить фон...