Я хотел бы использовать 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, система диспетчеризации событий, похоже, использует старые границы для дальнейшей сенсорной диспетчеризации.
Есть мысли?