Как добавить слушатель событий в сплошную линию между двумя координатами - PullRequest
0 голосов
/ 23 октября 2011

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

Первая часть, соединяющая прямые линии друг с другом, вероятно, не самая сложная.часть.С помощью onTouch и объекта View / Paint я, вероятно, смогу исправить эту работу.Однако сложная часть состоит в том, как добавить текст к определенной прямой линии?Может быть, eventListener мог бы указывать, что пользователь нажал на строку (onTouchListener) и впоследствии придумал функцию для добавления текста?Однако, насколько я знаю, я не могу добавить onTouchListener к нарисованной линии.Итак, каково правильное направление?Может быть, я могу поместить каждую написанную строку в отдельный объект View?

1 Ответ

0 голосов
/ 24 октября 2011

Решение A (если пользователь рисует одну линию за каждый клик):

Создайте кнопку снаружи / над холстом, которую пользователь может нажать, когда он / она закончит с чертежом и захочет начать маркировку. Таким образом, ваш холст будет иметь два возможных состояния: Рисование / Маркировка. Ваш метод onTouch учитывает, следует ли рисовать линию (что вы делаете сейчас) или находить ближайшую линию и маркировать ее. Чтобы найти целевую линию для надписи, необходимо сохранить структуру данных, которая содержит все линии, которые нарисовал пользователь. Простой (не лучший) подход может быть LinkedList. Когда пользователь щелкает экран и текущее состояние холста - «Маркировка», вы перебираете список и для каждой строки вычисляете расстояние между точкой события onTouch (getRawX, getRawY) и линией Расстояние между точкой и строка @ Wikipedia . В конце вы помечаете ближайшую строку (открыв диалоговое окно или что-то в этом роде).

Решение B (если пользователь рисует линию жестом перетаскивания) Вам не нужна ни кнопка, ни состояние Canvas. Просто определите одиночный щелчок (события касания вниз и вверх происходят в одинаковых координатах). Структура данных / алгоритм из решения А все еще применяются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...