В моем 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 и установить фон...

→ Ссылка