public bool OnSingleTapConfirmed(Android.Views.MotionEvent e) { if (this.photoViewAttacher == null) return false; ImageView imageView = photoViewAttacher.GetImageView(); if (null != photoViewAttacher.GetOnPhotoTapListener ()) { RectF displayRect = photoViewAttacher.GetDisplayRect(); if (null != displayRect) { float x = e.GetX(), y = e.GetY(); if (displayRect.Contains(x, y)) { float xResult = (x - displayRect.Left) / displayRect.Width(); float yResult = (y - displayRect.Top) / displayRect.Height(); photoViewAttacher.GetOnPhotoTapListener().OnPhotoTap(imageView, xResult, yResult); return true; } } } if (null != photoViewAttacher.GetOnViewTapListener()) { photoViewAttacher.GetOnViewTapListener().OnViewTap(imageView, e.GetX(), e.GetY()); } return false; }
public bool OnDoubleTap(Android.Views.MotionEvent ev) { if (photoViewAttacher == null) return false; try { float scale = photoViewAttacher.GetScale(); float x = ev.GetX(); float y = ev.GetY(); if (scale > photoViewAttacher.GetMinimumScale()) { photoViewAttacher.SetScale(photoViewAttacher.GetMinimumScale(), x, y, true); } else { photoViewAttacher.SetScale(photoViewAttacher.GetMediumScale(), x, y, true); } /* if (scale < photoViewAttacher.GetMediumScale()) { photoViewAttacher.SetScale(photoViewAttacher.GetMediumScale(), x, y, true); } else if (scale >= photoViewAttacher.GetMediumScale() && scale < photoViewAttacher.GetMaximumScale()) { photoViewAttacher.SetScale(photoViewAttacher.GetMaximumScale(), x, y, true); } else { photoViewAttacher.SetScale(photoViewAttacher.GetMinimumScale(), x, y, true); }*/ } catch (Java.Lang.ArrayIndexOutOfBoundsException e) { // Can sometimes happen when getX() and getY() is called } return true; }
public override bool OnTouchEvent (Android.Views.MotionEvent e) { var touchX = e.GetX(); var touchY = e.GetY(); switch (e.Action) { case MotionEventActions.Down: drawPath.MoveTo(touchX, touchY); break; case MotionEventActions.Move: drawPath.LineTo(touchX, touchY); break; default: return false; } Invalidate(); return true; }
public override bool OnInterceptTouchEvent (Android.Views.MotionEvent ev) { // switch (ev.Action) { case MotionEventActions.Down: deltaX = 0; deltaY = 0; lastX = ev.GetX (); lastY = ev.GetY (); return false; break; case MotionEventActions.Move: float moveX = ev.GetX (); float moveY = ev.GetY (); deltaX += Math.Abs (moveX - lastX); deltaY += Math.Abs (moveY - lastY); lastX = moveX; lastY = moveY; if (deltaX > deltaY) { return false; } break; case MotionEventActions.Up: if (deltaX > deltaY) { return false; } break; } var test = base.OnInterceptTouchEvent (ev); return test; // if (x1 == 0) // x1 = ev.GetX (); // // if (ev.Action == Android.Views.MotionEventActions.Move) { // Console.WriteLine ("x1 = {0}, x2 = {1}", x1, ev.GetX ()); // x2 = ev.GetX (); // counter = counter + Math.Abs (x2 - x1); // Console.WriteLine ("New Counter Value = {0}", counter); // x1 = x2; // } // // if (counter > 100 && ev.Action == Android.Views.MotionEventActions.Up) { // Console.WriteLine (ev.Action); // Console.WriteLine ("Reset Counter and Return True"); // counter = 0; // } // // Console.WriteLine (ev.Action); // Console.WriteLine ("Get X: {0}", ev.GetX()); // // if (counter == 0) { // return true; // } else { // return base.OnInterceptTouchEvent (ev); // } }
public bool OnTouch( Android.Views.View v, Android.Views.MotionEvent e ) { Android.Views.MotionEventActions action = e.Action; if ( ( action & Android.Views.MotionEventActions.Mask ) != Android.Views.MotionEventActions.Move ) { TouchPointer tec = new TouchPointer (); switch ( action & Android.Views.MotionEventActions.Mask ) { case Android.Views.MotionEventActions.Down: tec = new TouchPointer ( new IntPtr ( e.GetPointerId ( 0 ) ), new Vector2 ( e.GetX (), e.GetY () ), PointerMode.Pressed ); break; case Android.Views.MotionEventActions.PointerDown: tec = new TouchPointer ( new IntPtr ( e.GetPointerId ( ( int ) ( action & Android.Views.MotionEventActions.PointerIdMask ) >> ( int ) Android.Views.MotionEventActions.PointerIdShift ) ), new Vector2 ( e.GetX (), e.GetY () ), PointerMode.Pressed ); break; case Android.Views.MotionEventActions.Up: tec = new TouchPointer ( new IntPtr ( e.GetPointerId ( 0 ) ), new Vector2 ( e.GetX (), e.GetY () ), PointerMode.Released ); break; case Android.Views.MotionEventActions.PointerUp: tec = new TouchPointer ( new IntPtr ( e.GetPointerId ( ( int ) ( action & Android.Views.MotionEventActions.PointerIdMask ) >> ( int ) Android.Views.MotionEventActions.PointerIdShift ) ), new Vector2 ( e.GetX (), e.GetY () ), PointerMode.Released ); break; } bool isChanged = false; for ( int i = 0; i < touchPointers.Count; i++ ) { if ( touchPointers [ i ].Id == tec.Id ) { touchPointers [ i ] = tec; isChanged = true; break; } } if ( !isChanged ) touchPointers.Add ( tec ); } else if ( ( action & Android.Views.MotionEventActions.Mask ) == Android.Views.MotionEventActions.Move ) { for ( int i = 0; i < e.PointerCount; i++ ) { TouchPointer tec = new TouchPointer ( new IntPtr ( e.GetPointerId ( i ) ), new Vector2 ( e.GetX (), e.GetY () ), PointerMode.Moved ); touchPointers [ i ] = tec; } } return true; }