title: OnDragListener not receiving DRAG_STARTED or DRAG_ENDED, but does get ACTION_DROP
body: <p>I'm running into a weird problem with an <code>OnDragListener</code>. My target view gets the <code>ACTION_DROP</code> event fine and handles it; but it never receives the <code>ACTION_DRAG_STARTED</code> or <code>ACTION_DRAG_ENDED</code> events (in fact it never receives any events besides drop).</p>
  
  <p>What could be causing this? It's an issue because I can't handle the case when the drop happens outside of the target.</p>
  
  <p>I found <a href="https://stackoverflow.com/questions/12184511/android-drag-and-drop-action-drag-ended-not-firing">this question</a> but the answer was not clear to me. Any ideas greatly appreciated.</p>
  
  <p>My draggable view has this <code>OnTouchListener</code>:</p>
  
  <pre><code>@Override
  public boolean onTouch(View v, MotionEvent ev) {
    switch (ev.getAction() &amp; MotionEvent.ACTION_MASK) {
      case MotionEvent.ACTION_DOWN:
        startPointX = ev.getX();
        startPointY = ev.getY();
        isOnClick = true;
        break;
      case MotionEvent.ACTION_CANCEL:
      case MotionEvent.ACTION_UP:
        if (isOnClick) {
          isOnClick = false;
          // handle single click
        }
        break;
      case MotionEvent.ACTION_MOVE:
        if (isOnClick &amp;&amp; movePassesThreshold(ev)) {
          isOnClick = false;
          draggableView.startDrag(...);
        }
        break;
      default:
        break;
    }
    return true;
  }
  </code></pre>
  
  <p>And the target view has this <code>OnDragListener</code>:</p>
  
  <pre><code>@Override
  public boolean onDrag(View v, DragEvent event) {
    switch (event.getAction()) {
      case DragEvent.ACTION_DRAG_STARTED:
        Log.v(TAG, "drag started");
        break;
      case DragEvent.ACTION_DRAG_ENTERED:
        break;
      case DragEvent.ACTION_DRAG_EXITED:
        break;
      case DragEvent.ACTION_DROP:
        Log.v(TAG, "drop");
        // handle drop
        break;
      case DragEvent.ACTION_DRAG_ENDED:
        Log.v(TAG, "drag ended");
        break;
      default:
        return false;
    }
    return true;
  }
  </code></pre>