Exemplo n.º 1
0
        private void HandleLongClick(object sender, LongClickEventArgs e)
        {
            DraggableView dragView = Element as DraggableView;

            if (firstTime)
            {
                originalX = GetX();
                originalY = GetY();
                firstTime = false;
            }
            dragView.DragStarted();
            touchedDown = true;
        }
Exemplo n.º 2
0
        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));
        }