private void HandleLongClick(object sender, LongClickEventArgs e) { DraggableView dragView = Element as DraggableView; if (firstTime) { originalX = GetX(); originalY = GetY(); firstTime = false; } dragView.DragStarted(); touchedDown = true; }
public override bool OnTouchEvent(MotionEvent e) { float x = e.RawX; float y = e.RawY; DraggableView dragView = Element as DraggableView; switch (e.Action) { case MotionEventActions.Down: if (dragView.DragMode == DragMode.Touch) { if (!touchedDown) { if (firstTime) { originalX = GetX(); originalY = GetY(); firstTime = false; } dragView.DragStarted(); } touchedDown = true; } dX = x - this.GetX(); dY = y - this.GetY(); break; case MotionEventActions.Move: bool dragged = false; double dragvalue = 0; if (touchedDown) { //if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Horizontal) if (dragView.DragDirection == DragDirectionType.Horizontal) { float diff = x - dX; if (diff <= 0) { SetX(originalX); } else { SetX(diff); if (diff > 50) { dragged = true; } } dragvalue = diff; } //if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Vertical) //{ // SetY(y - dY); //} } dragView.DragEnded(dragged, dragvalue); break; case MotionEventActions.Up: touchedDown = false; //dragView.DragEnded(false, 0); break; case MotionEventActions.Cancel: touchedDown = false; break; } return(base.OnTouchEvent(e)); }