Esempio n. 1
0
            public override void OnViewReleased(View releasedChild, float xvel, float yvel)
            {
                bool velRightExceeded = _layout.pxToDp((int)xvel) >= _layout.mMinFlingVelocity;
                bool velLeftExceeded  = _layout.pxToDp((int)xvel) <= -_layout.mMinFlingVelocity;
                bool velUpExceeded    = _layout.pxToDp((int)yvel) <= -_layout.mMinFlingVelocity;
                bool velDownExceeded  = _layout.pxToDp((int)yvel) >= _layout.mMinFlingVelocity;

                int pivotHorizontal = _layout.getHalfwayPivotHorizontal();
                int pivotVertical   = _layout.getHalfwayPivotVertical();

                switch (_layout.mDragEdge)
                {
                case DRAG_EDGE_RIGHT:
                    if (velRightExceeded)
                    {
                        _layout.close(true);
                    }
                    else if (velLeftExceeded)
                    {
                        _layout.open(true);
                    }
                    else
                    {
                        if (_layout.mMainView.Right < pivotHorizontal)
                        {
                            _layout.open(true);
                        }
                        else
                        {
                            _layout.close(true);
                        }
                    }
                    break;

                case DRAG_EDGE_LEFT:
                    if (velRightExceeded)
                    {
                        _layout.open(true);
                    }
                    else if (velLeftExceeded)
                    {
                        _layout.close(true);
                    }
                    else
                    {
                        if (_layout.mMainView.Left < pivotHorizontal)
                        {
                            _layout.close(true);
                        }
                        else
                        {
                            _layout.open(true);
                        }
                    }
                    break;

                case DRAG_EDGE_TOP:
                    if (velUpExceeded)
                    {
                        _layout.close(true);
                    }
                    else if (velDownExceeded)
                    {
                        _layout.open(true);
                    }
                    else
                    {
                        if (_layout.mMainView.Top < pivotVertical)
                        {
                            _layout.close(true);
                        }
                        else
                        {
                            _layout.open(true);
                        }
                    }
                    break;

                case DRAG_EDGE_BOTTOM:
                    if (velUpExceeded)
                    {
                        _layout.open(true);
                    }
                    else if (velDownExceeded)
                    {
                        _layout.close(true);
                    }
                    else
                    {
                        if (_layout.mMainView.Bottom < pivotVertical)
                        {
                            _layout.open(true);
                        }
                        else
                        {
                            _layout.close(true);
                        }
                    }
                    break;
                }
            }