Мультитач рисунок с поверхности - PullRequest
1 голос
/ 14 июня 2011

Раньше я писал приложение, которое рисовало бы линии двумя касаниями.Я создал два вектора: один для идентификатора указателя 0 и один для идентификатора указателя 1 (таким образом, все остальное игнорируется).Я бы буферизовал точки для рисования в моем методе onTouch, а затем нарисовал линии для двух отдельных линий в моем методе рисования поверхности.Я синхронизировал эти части кода, чтобы поток пользовательского интерфейса и графический поток не соприкасались друг с другом.Это работало нормально.

Теперь я хочу сделать то же самое, но с неограниченным количеством касаний.Так как у меня неограниченное количество касаний и любое произвольное число идентификаторов указателей, активных на экране, я не смогу просто создавать векторы для нескольких касаний, поскольку я не знаю, сколько существует касаний.

хороший способ буферизовать несколько касаний с различными идентификаторами указателей, чтобы я мог их рисовать?

Возможно, существует приложение для рисования с несколькими касаниями, которое я могу использовать в качестве справочного?Спасибо,

1 Ответ

2 голосов
/ 06 июля 2011

Одним из решений может быть использование карты с целыми числами в качестве ключей (pointerIds) и путями в качестве объектов.С сенсорной стороны, начните путь с TOUCH_DOWN, добавьте его на карту, а затем получайте к нему доступ каждый раз, когда находитесь в движении.Вы можете удалить его из карты и «зафиксировать» его в общем списке путей, независимо от начального pointerId (или вы можете сохранить исходный pointerId вместе с путем).

Таким образом, в основном, пока они рисуются, сохраняйте пути в карте, проиндексированные с использованием pointerId, и, как только они будут закончены, просто сохраните их в глобальном списке.

...