Android - отправка события касания правильно после перемещения представления - PullRequest
1 голос
/ 27 октября 2019

Я хотел бы использовать virtual-joystick-android для своего проекта, но я столкнулся с проблемой, которую в настоящее время не могу решить.

Мне нужно каждый раз менять положение джойстикапользователь касается экрана, другими словами, джойстик должен быть перемещен когда-то во время сенсорной диспетчеризации. Проблема в том, что после перемещения мне нужно снова прикоснуться к экрану, чтобы иметь возможность манипулировать джойстиком. Используемый макет выглядит следующим образом:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/joystickLayout">

    <io.github.controlwear.virtual.joystick.android.JoystickView
        android:id="@+id/joystick"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:visibility="gone"
        custom:JV_buttonSizeRatio="25%"
        custom:JV_fixedCenter="false" />

</RelativeLayout>

Если я попытаюсь просто изменить его положение внутри RelativeLayout следующим образом:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(joystick.getLayoutParams());
params.setMargins((int) motionEvent.getX() - joystick.getWidth() / 2, (int) motionEvent.getY() - joystick.getHeight() / 2, 0, 0);
joystick.setLayoutParams(params); 

внутри onTouch RelativeLayout, событие отправляется дочерним элементам перед отправкойродителям, и отправка их вручную, по-видимому, не дает детям будущих событий (движение вверх). Если я пытаюсь переместить JoystickView внутри переопределенного dispatchTouchEvent, система диспетчеризации событий, похоже, использует старые границы для дальнейшей сенсорной диспетчеризации.

Есть мысли?

...