public override void OnViewDragStateChanged(int state) { var anchoredTop = (int)(_panelLayout._anchorPoint * _panelLayout._slideRange); if (_panelLayout._dragHelper.ViewDragState == ViewDragHelper.StateIdle) { if (FloatNearlyEqual(_panelLayout._slideOffset, 0)) { if (_panelLayout._slideState != SlideState.Expanded) { _panelLayout.UpdateObscuredViewVisibility(); _panelLayout.OnPanelExpanded(_panelLayout._slideableView); _panelLayout._slideState = SlideState.Expanded; } } else if (FloatNearlyEqual(_panelLayout._slideOffset, (float)anchoredTop / _panelLayout._slideRange)) { if (_panelLayout._slideState != SlideState.Anchored) { _panelLayout.UpdateObscuredViewVisibility(); _panelLayout.OnPanelAnchored(_panelLayout._slideableView); _panelLayout._slideState = SlideState.Anchored; } } else if (_panelLayout._slideState != SlideState.Collapsed) { _panelLayout.OnPanelCollapsed(_panelLayout._slideableView); _panelLayout._slideState = SlideState.Collapsed; } } }