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; } }