Я пишу виртуальный виджет джойстика, который состоит из большого круга в качестве зоны с кликом и меньшего круга, представляющего фактический джойстик. Чтобы сделать манипуляции немного легче, я хочу, чтобы пользователь мог касаться в любом месте большего круга, а меньший круг переместился бы в положение касания. Если пользователь перетаскивает палец, мне нужен небольшой круг. Когда маленький круг выпущен, я хочу, чтобы он вернулся в исходное положение в центре большого круга. Я использую относительную компоновку с обоими кругами, центрированными по горизонтали и вертикали.Нужно изображение, чтобы перейти на сайт щелчка на Android
Вот прослушиватель прикосновений, который я использую, сейчас он работает в основном так, как я хочу, за исключением того, что меньший круг появляется вверху и слева от того места, где есть прикосновение. Я не могу понять, как заставить его вернуться в центр, когда его выпустили.
OnTouchListener touchListener = new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event)
{
// TODO Auto-generated method stub
status.setText("X: " + event.getX() + ", Y: " + event.getY());
knob.setX(event.getX());
knob.setY(event.getY());
return false;
}
};
Это работает отлично подходит для отображения кругов, однако внутренний круг не перемещается при касании экрана. Я прошел через отладчик и решил, что касания фактически регистрируют и извлекают действительные значения x и y. – Jordan
Nevermind, оказывается, мне нужно добавить 'invalidate()' после переключения, чтобы он перерисовал холст. – Jordan
Ах да, я забыл бросить это там. Хороший улов и удача! –