Android ACTION_MOVE Threshold

Я пишу приложение, в котором нужно писать на экране пальцем или пером. У меня эта часть работает. На ACTION_DOWN начинает рисование; на ACTION_MOVE добавляет сегменты линии; на ACTION_UP, завершает строку.

Проблема в том, что после ACTION_DOWN, очевидно, указатель должен переместиться более чем на 10 пикселей от того места, где он начался (в основном, прямоугольник 20x20 вокруг начальной точки), чтобы начать отправку событий ACTION_MOVE. После выхода из ящика все события перемещения довольно точны. (Я выяснил, что такое 10 пикселей, проверив его.) Поскольку он предназначен для письма или рисования, 10 пикселей - довольно значительная потеря: в зависимости от того, насколько маленьким вы пытаетесь написать, вы можете потерять первую букву или два. Мне не удалось найти ничего об этом - только пара сообщений на форуме или двух, например http://android.modaco.com/topic/339694-touch-input-problem-not-detecting- очень-маленькие-движения / page_ pid _1701028 # entry1701028 . Кажется, что он присутствует на некоторых устройствах или системах, но не на других. Однако нет идей, как избавиться от него, когда он у вас есть.

Я использую Galaxy Tab 10.1 с Android 3.1. Я пробовал несколько разных вещей, чтобы попытаться избавиться от него: я попытался установить координаты события на что-то другое, чтобы посмотреть, могу ли я обмануть его, заставив думать, что курсор находится в другом месте; Я попытался повторно отправить событие с измененными координатами (мой обработчик реагировал на новые точки, но по-прежнему не реагировал на движения в радиусе 10 пикселей). Я поискал в исходном коде ссылки на эффект, и не нашел (хотя я думаю, что это из другой версии Android - код для 3.1 еще не выпущен, не так ли?) Я искал методы запроса текущего состояния указателей, поэтому я мог бы просто иметь таймер ловите изменения, пока указатель не пересечет порог. Не удалось найти способ получения координат указателя без соответствующего события движения. Ничего не получилось. Кто-нибудь знает что-нибудь об этом, есть ли какие-нибудь идеи или обходные пути? Спасибо.

- Обновление: события перетаскивания показывают одинаковый порог.

12
задан Erhannis 22 July 2011 в 05:49
поделиться