Хитрый и просто удар в темноте, я боюсь ...
Вы не упоминаете, какой у вас класс 'main View', но если он является "родным" классом android, то получите свой собственный, расширяющий тот, который вы используете в настоящее время.
Предоставьте вашему классу общедоступные элементы данных X и Y, например, ...
public int lastKnownX; // Might be float types - can't remember
public int lastKnownY;
Также в вашем классе переопределите onTouch(View v, MotionEvent event)
и проверьте MotionEvent
, чтобы увидеть, является ли это событием ACTION_DOWN
- если это так, сохраните координаты X и Y в lastKnownX
и lastKnownY
. - игнорируйте любые другие события и убедитесь, что вы ВСЕГДА возвращаете false независимо от действия движения (чтобы сделать процесс прозрачным).
Моя теория состоит в том, что когда интерпретируется длинный щелчок / нажатие, ваши последние известные координаты ACTION_DOWN
будут теми, с которых начался этот длинный щелчок, и потому, что они доступны для вашей деятельности (вы определили их как публичные ), метод onCreateContextMenu()
сможет использовать их.
С другой стороны, я мог бы быть далеко, но вот как я подхожу к проблеме. Стоит попробовать. : -)