public bool dispatchTouchEvent(MotionEvent ev) { float x = ev.GetX(); float y = ev.GetY(); switch (ev.Action) { case MotionEventActions.Down: mLastX = x; mLastY = y; mDownTime = Java.Lang.JavaSystem.CurrentTimeMillis(); mTmpAngle = 0; if (isFling) { //RemoveCallbacks(mFlingRunnable); isFling = false; return(true); } break; case MotionEventActions.Move: float start = getAngle(mLastX, mLastY); float end = getAngle(x, y); // Console.WriteLine("TAG", "start = " + start + " , end =" + end); if (getQuadrant(x, y) == 1 || getQuadrant(x, y) == 4) { mStartAngle += end - start; mTmpAngle += end - start; } else { mStartAngle += start - end; mTmpAngle += start - end; } RequestLayout(); mLastX = x; mLastY = y; break; case MotionEventActions.Up: float anglePerSecond2 = mTmpAngle * 1000 / (Java.Lang.JavaSystem.CurrentTimeMillis() - mDownTime); // Console.WriteLine("TAG anglePrMillionSecond + "+ mTmpAngle +" = +"+ // mTmpAngle); if (Math.Abs(anglePerSecond2) > mFlingableValue && !isFling) { AutoFlingEvent AutoFlingPost = new AutoFlingEvent(); AutoFlingPost.AutoFlingFinished += OnAutoFlingFinished; // new CircleMenuEventArgs() { velocity = anglePerSecond2 }; // AutoFlingHandler.Post(mFlingRunnable = (new AutoFlingEvent.AutoFlingDelegate(anglePerSecond2))); return(true); } if (Math.Abs(mTmpAngle) > NOCLICK_VALUE) { return(true); } break; } return(true); // return base.DispatchTouchEvent(ev); }
public bool dispatchTouchEvent(MotionEvent ev) { float x = ev.GetX(); float y = ev.GetY(); switch (ev.Action) { case MotionEventActions.Down: mLastX = x; mLastY = y; mDownTime = Java.Lang.JavaSystem.CurrentTimeMillis(); mTmpAngle = 0; if (isFling) { RemoveCallbacks(mFlingRunnable); isFling = false; return(true); } break; case MotionEventActions.Move: float start = getAngle(mLastX, mLastY); float end = getAngle(x, y); // Log.e("TAG", "start = " + start + " , end =" + end); if (getQuadrant(x, y) == 1 || getQuadrant(x, y) == 4) { mStartAngle += end - start; mTmpAngle += end - start; } else { mStartAngle += start - end; mTmpAngle += start - end; } RequestLayout(); mLastX = x; mLastY = y; break; case MotionEventActions.Up: float anglePerSecond2 = mTmpAngle * 1000 / (Java.Lang.JavaSystem.CurrentTimeMillis() - mDownTime); // Log.e("TAG", anglePrMillionSecond + " , mTmpAngel = " + // mTmpAngle); if (Math.Abs(anglePerSecond2) > mFlingableValue && !isFling) { Post(mFlingRunnable = (AutoFlingRunnable(anglePerSecond2))); return(true); } if (Math.Abs(mTmpAngle) > NOCLICK_VALUE) { return(true); } break; } return(true); // return base.DispatchTouchEvent(ev); }
public CircleMenuLayout(Context context, IAttributeSet attrs) : base(context, attrs) { mFlingRunnable = new AutoFlingEvent(); mFlingRunnable.AutoFlingHandler += OnFinished; mFlingRunnable.CreateFlingObject(); }
public CircleMenuLayout(Context context, IAttributeSet attrs) : base(context, attrs) { AutoFlingEvent AutoFling = new AutoFlingEvent(); AutoFling.AutoFlingFinished += OnAutoFlingFinished; }