Не запускать OnLongClickListener во время перетаскивания

У меня есть настраиваемый вид с растровыми изображениями на нем, который пользователь может перетаскивать .

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

В пользовательском представлении я добавляю свой OnLongClickListener:

this.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        // show context menu..
        return true;
    }
});

И переопределяю onTouchEvent в выглядит примерно так:

public boolean onTouchEvent(MotionEvent event) {
    handleDrag(event);
    super.onTouchEvent(event);
    return true;
}

Функция handleDrag находит, какой объект был нажат, и обрабатывает его положение.

Моя проблема в том, что когда я начинаю перетаскивать изображение, также срабатывает OnLongClickListener. Я не уверен, как лучше это обойти.

Я попытался добавить порог для handleDrag, чтобы он возвращал false, если пользователь касается земли, но не пытается перетащить, но мне все еще трудно получить правильный обработчик запущен.

Может ли кто-нибудь предложить способ пропустить OnLongClickListener при перетаскивании?

9
задан brk3 8 June 2011 в 14:47
поделиться