bool OnGestureShouldBegin(BaseGestureRecognizer gestureRecognizer) { var shouldBegin = _currentGridY > 0 || _scrollPosition < 10; Debug.WriteLine(">>>>>_currentGridY {0} _scrollPosition {1} shouldBegin{2}", _currentGridY, _scrollPosition, shouldBegin); return(shouldBegin); }
void OnAction(BaseGestureRecognizer recognizer, GestureRecognizerState state) { var panRecognizer = recognizer as PanGestureRecognizer; var view = recognizer.View; if (state == GestureRecognizerState.Began) { _startBounds = recognizer.View.Bounds; Debug.WriteLine("START " + _startBounds); } if (state == GestureRecognizerState.Changed) { var message = "PAN " + recognizer + "\n"; message += "POS: " + recognizer.LocationInView(view.ParentView); var translation = panRecognizer.GetTranslationInView(view.ParentView); // message += "touches: " + recognizer.NumberOfTouches + ", velocity: " + velocity; message += ", translation: " + translation; var bounds = new Rectangle(view.X + translation.X, view.Y + translation.Y, view.Width, view.Height); message += ", vb: " + bounds; _startBounds.X += translation.X; _startBounds.Y += translation.Y; Debug.WriteLine("MOVE " + bounds); Device.BeginInvokeOnMainThread(() => { Label2.Layout(bounds); }); OutputLabel.Text = message; } }
void Gesture_OnAction(BaseGestureRecognizer recgonizer, GestureRecognizerState state) { if (recgonizer.View != MediaItemsListView) { return; } var panGesture = recgonizer as PanGestureRecognizer; Point translation = panGesture.GetTranslationInView(MainLayout); Point velocity = panGesture.GetVelocityInView(MainLayout); panGesture.SetTranslationInView(new Point(0, 0), MainLayout); switch (panGesture.State) { case GestureRecognizerState.Began: // MediaItemsListView.IsEnabled = false; break; case GestureRecognizerState.Changed: var newY = _currentGridY + translation.Y; newY = Math.Max(0, newY); newY = Math.Min(400, newY); Debug.WriteLine("newY {0} _currentGridY {1} _scrollPosition{2}", newY, _currentGridY, _scrollPosition); bool willMoveList = false; if (newY != _currentGridY) { willMoveList = _currentGridY > 0 || _scrollPosition <= 0 && newY > 0 && newY < Height - 100; if (willMoveList) { _currentGridY = newY; var bounds = MediaItemsListView.Bounds; bounds.Y = _currentGridY; MediaItemsListView.Layout(bounds); } MediaItemsListView.IsScrollEnabled = !willMoveList; } else { MediaItemsListView.IsScrollEnabled = true; Debug.WriteLine("no move " + MediaItemsListView.IsScrollEnabled); } break; case GestureRecognizerState.Cancelled: case GestureRecognizerState.Ended: case GestureRecognizerState.Failed: MediaItemsListView.IsScrollEnabled = true; if (_currentGridY != 0 && _currentGridY != 400) { _currentGridY = _currentGridY > 200 ? 400 : 0; MediaItemsListView.LayoutTo(new Rectangle(0, _currentGridY, Width, Height)); } break; default: break; } }
bool OnShouldBegin(BaseGestureRecognizer recognizer) { var panGestureRecognizer = recognizer as PanGestureRecognizer; var translation = panGestureRecognizer.GetTranslationInView(recognizer.View.ParentView); var moveX = Math.Abs(translation.X); var moveY = Math.Abs(translation.Y); return(!_onlyHorizontalPan || moveX > moveY); }
void OnAction(BaseGestureRecognizer recognizer, GestureRecognizerState state) { var swipeRecognizer = recognizer as SwipeGestureRecognizer; var view = recognizer.View; var message = "SWIPE " + recognizer + "\n"; message += "POS: " + recognizer.LocationInView(view.ParentView); message += "touches: " + recognizer.NumberOfTouches + ", direction: " + swipeRecognizer.Direction; OutputLabel.Text = message; }
void OnAction(BaseGestureRecognizer recognizer, GestureRecognizerState state) { var tapRecognizer = recognizer as TwinTechs.Gestures.TapGestureRecognizer; var view = recognizer.View; var message = string.Format("POS: {0} \n", recognizer.LocationInView(view).PrettyPrint()); message += string.Format("PARENT POS: {0} \n", recognizer.LocationInView(view.ParentView).PrettyPrint()); message += string.Format("PARENT.PARENT POS: {0} \n", recognizer.LocationInView(view.ParentView.ParentView).PrettyPrint()); message += string.Format("PAGE POS: {0} \n", recognizer.LocationInView(this).PrettyPrint()); OutputLabel.Text = message; }
void OnAction(BaseGestureRecognizer recognizer, GestureRecognizerState state) { var tapRecognizer = recognizer as TwinTechs.Gestures.LongPressGestureRecognizer; var view = recognizer.View; var message = recognizer + "\n"; message += "POS: " + recognizer.LocationInView(view); message += "PARENT POS: " + recognizer.LocationInView(view.ParentView); message += "touches: " + recognizer.NumberOfTouches; // + ", taps required: " + tapRecognizer.NumberOfTapsRequired; OutputLabel.Text = message; }
void Gesture_OnAction(BaseGestureRecognizer recgonizer, GestureRecognizerState state) { var panGesture = recgonizer as PanGestureRecognizer; Point translation = panGesture.GetTranslationInView(this); panGesture.SetTranslationInView(new Point(0, 0), this); // MyLabel.Text = "PAN " + recognizer.LocationInView (view.ParentView); // Debug.WriteLine ("PAN " + panGesture); // Debug.WriteLine ("location " + panGesture.LocationInView (this)); switch (panGesture.State) { case GestureRecognizerState.Began: break; case GestureRecognizerState.Changed: double newPosition = _contentView.X + translation.X; var endWidth = _contentWidth; Debug.WriteLine("new pos " + newPosition + " endWidth " + endWidth); if (newPosition >= ((-endWidth) - (Width / 2)) && (newPosition <= (Width / 2))) { _contentView.Layout(GetBoundsWithX(newPosition)); } break; case GestureRecognizerState.Cancelled: case GestureRecognizerState.Ended: case GestureRecognizerState.Failed: //scroll to page location, set index double currentPage = (-_contentView.X) / Width; Boolean isBehindHalfScreen = (currentPage - (int)currentPage) > 0.5; if (isBehindHalfScreen && (currentPage + 1) < NumberOfPages) { CurrentPageIndex = (int)(currentPage + 1); } else { CurrentPageIndex = (int)currentPage; } AnimateToPageIndex(CurrentPageIndex); break; case GestureRecognizerState.Possible: default: break; } }
void Gesture_OnAction(BaseGestureRecognizer recgonizer, GestureRecognizerState state) { string message = ""; var panGesture = recgonizer as PanGestureRecognizer; Point translation = panGesture.GetTranslationInView(MainLayout); Point velocity = panGesture.GetVelocityInView(MainLayout); panGesture.SetTranslationInView(new Point(0, 0), MainLayout); // MyLabel.Text = "PAN " + recognizer.LocationInView (view.ParentView); // Debug.WriteLine ("PAN " + panGesture); // Debug.WriteLine ("location " + panGesture.LocationInView (this)); switch (panGesture.State) { case GestureRecognizerState.Began: message += "BEGAN "; message += "POS: " + recgonizer.LocationInView(MainLayout); break; case GestureRecognizerState.Changed: message += "CHANGED "; message += ", translation: " + translation; message += ", velocity: " + velocity; message += "POS: \n" + recgonizer.LocationInView(panGesture.View).PrettyPrint(); message += "PARENT POS: \n" + recgonizer.LocationInView(MainLayout).PrettyPrint(); if (recgonizer.View == Box) { message += ", MOVING VIEW"; _boxBounds.X += translation.X; _boxBounds.Y += translation.Y; Box.Layout(_boxBounds); } break; case GestureRecognizerState.Cancelled: case GestureRecognizerState.Ended: case GestureRecognizerState.Failed: message += "FINISHED "; break; case GestureRecognizerState.Possible: default: break; } OutputLabel.Text = message; }
void OnAction(BaseGestureRecognizer recognizer, GestureRecognizerState state) { var panRecognizer = recognizer as PanGestureRecognizer; var view = recognizer.View; var message = "PAN " + recognizer + "\n"; message += "ParentPOS: " + recognizer.LocationInView(view.ParentView); message += "POS: " + recognizer.LocationInView(view); var translation = panRecognizer.GetTranslationInView(view.ParentView); var velocity = panRecognizer.GetVelocityInView(view.ParentView); message += ", translation: " + translation; var bounds = new Rectangle(view.X + velocity.X, view.Y + velocity.Y, view.Width, view.Height); message += ", vb: " + bounds; OutputLabel.Text = message; }
void Gesture_OnAction(BaseGestureRecognizer recgonizer, GestureRecognizerState state) { if (recgonizer.View != _contentPage.VideoPlayerView) { return; } var panGesture = recgonizer as PanGestureRecognizer; Point translation = panGesture.GetTranslationInView(MainLayout); Point velocity = panGesture.GetVelocityInView(MainLayout); panGesture.SetTranslationInView(new Point(0, 0), MainLayout); switch (panGesture.State) { case GestureRecognizerState.Began: break; case GestureRecognizerState.Changed: var newY = _contentBounds.Y + translation.Y; if (newY > 0 && newY < Height - _contentPage.MinimumHeightRequest) { var minHeight = _contentPage.MinimumHeightRequest; var minWidth = _contentPage.MinimumWidthRequest; _contentBounds.Y = newY; var complete = Math.Min(1, (Height - (_contentBounds.Y + minHeight)) / Height); // Debug.WriteLine ("complete {0} newY {1} h{2}", complete, newY, Height); var inverseCompletion = 1 - complete; _contentBounds.X = (Width - minWidth) * inverseCompletion; _contentBounds.Width = (minWidth) + ((Width - minWidth) * complete); _contentBounds.Height = Math.Max(minHeight, (Height + minHeight) * complete); PageContainer.Layout(_contentBounds); } break; case GestureRecognizerState.Cancelled: case GestureRecognizerState.Ended: case GestureRecognizerState.Failed: var isShowing = _contentBounds.Y < 200; ToggleShowing(isShowing, true); break; default: break; } }
void Gesture_OnAction(BaseGestureRecognizer recgonizer, GestureRecognizerState state) { var panGesture = recgonizer as PanGestureRecognizer; Point translation = panGesture.GetTranslationInView(MainLayout); Point velocity = panGesture.GetVelocityInView(MainLayout); panGesture.SetTranslationInView(new Point(0, 0), MainLayout); Debug.WriteLine("GESTURE STATE " + state + " trans " + translation); switch (panGesture.State) { case GestureRecognizerState.Began: break; case GestureRecognizerState.Changed: if (recgonizer.View == ForegroundContent) { _contentBounds.X += translation.X; _contentBounds.Y = 0; ForegroundContent.Layout(_contentBounds); } break; case GestureRecognizerState.Cancelled: case GestureRecognizerState.Ended: case GestureRecognizerState.Failed: _contentBounds.X = (_contentBounds.X > -(MainLayout.Width / 4)) ? 0 : -(MainLayout.Width / 2); ForegroundContent.LayoutTo(_contentBounds); break; case GestureRecognizerState.Possible: default: break; } }