private void DragAborted()
 {
     DragEvent dragEnded = new DragEvent(mDragBundle, DragEvent.ACTION_DRAG_ENDED, 0, 0);
     foreach (Droppable d in mDroppables.Values)
     {
         d.Listener.OnDrag(d.View, dragEnded);
     }
     mDrag = false;
     Invalidate();
 }
        private void DragDropped()
        {
            foreach (Droppable d in mDroppables.Values)
            {
                bool hit = IsHit(d, (int)mX, (int)mY);
                int ev = d.OnUpEvent(hit);

                DragEvent dragEvent = new DragEvent(mDragBundle, ev, (int) mX, (int) mY);
                d.Listener.OnDrag(d.View, dragEvent);
            }
            Invalidate();
        }
        private void DragStarted(Bundle dragBundle)
        {
            if (mDrag)
                DragAborted();

            mDragBundle = dragBundle;
            DragEvent dragStarted = new DragEvent(mDragBundle, DragEvent.ACTION_DRAG_STARTED, 0, 0);

            foreach (Droppable d in mDroppables.Values)
            {
                d.Listener.OnDrag(d.View, dragStarted);
            }
            mDrag = true;
        }