コード例 #1
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
 void AddRotateGesture(EGestureType type)
 {
     _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Start, (data) => { OnGestureStarted(type, data); });
     _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Move, (data) => { OnGestureMoved(type, data); });
     _gestureLayer.SetRotateCallback(GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); });
     _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); });
 }
コード例 #2
0
        void OnFlickStarted(EGestureType type, object data)
        {
            var lineData = (GestureLayer.LineData)data;

            _horizontalSwipeTime = Convert.ToInt32(lineData.HorizontalSwipeTimestamp);
            _verticalSwipeTime   = Convert.ToInt32(lineData.VerticalSwipeTimestamp);
            OnGestureStarted(type, data);
        }
コード例 #3
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
        void AddLongTapGesture(EGestureType type, double timeout)
        {
            if (timeout > 0)
            {
                _gestureLayer.LongTapTimeout = timeout;
            }

            _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, (data) => { OnLongTapStarted(type, data); });
            _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, (data) => { OnLongTapCompleted(type, data); });
            _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); });
        }
コード例 #4
0
 void AddFlickGesture(EGestureType type, double timeout)
 {
     if (timeout > 0)
     {
         _gestureLayer.FlickTimeLimit = (int)(timeout * 1000);
     }
     _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Start, (data) => { OnGestureStarted(type, data); });
     _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Move, (data) => { OnGestureMoved(type, data); });
     _gestureLayer.SetFlickCallback(GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); });
     _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); });
 }
コード例 #5
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
        void OnGestureCanceled(EGestureType type, object data)
        {
            var cache = _handlerCache;

            if (cache.ContainsKey(type))
            {
                foreach (var handler in cache[type])
                {
                    (handler as IGestureController)?.SendCanceled(View, data);
                }
            }
        }
コード例 #6
0
        void AddDoubleTapGesture(EGestureType type, double timeout)
        {
            if (_gestureLayer == null)
            {
                return;
            }
            if (timeout > 0)
            {
                _gestureLayer.DoubleTapTimeout = timeout;
            }

            _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, (data) => { OnDoubleTapStarted(type, data); });
            _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, (data) => { OnDoubleTapCompleted(type, data); });
            _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); });
        }
コード例 #7
0
        void AddFlickGesture(EGestureType type, double timeout)
        {
            if (_gestureLayer == null)
            {
                return;
            }
            if (timeout > 0)
            {
                _gestureLayer.FlickTimeLimit = (int)(timeout * 1000);
            }

            // Task to correct wrong coordinates information when applying EvasMap(Xamarin ex: Translation, Scale, Rotate property)
            // Always change to the absolute coordinates of the pointer.
            int startX = 0;
            int startY = 0;

            _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Start, (data) =>
            {
                startX  = _gestureLayer.EvasCanvas.Pointer.X;
                startY  = _gestureLayer.EvasCanvas.Pointer.Y;
                data.X1 = startX;
                data.Y1 = startY;
                OnGestureStarted(type, data);
            });
            _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Move, (data) =>
            {
                data.X1 = startX;
                data.Y1 = startY;
                data.X2 = _gestureLayer.EvasCanvas.Pointer.X;
                data.Y2 = _gestureLayer.EvasCanvas.Pointer.Y;
                OnGestureMoved(type, data);
            });
            _gestureLayer.SetFlickCallback(GestureLayer.GestureState.End, (data) =>
            {
                data.X1 = startX;
                data.Y1 = startY;
                data.X2 = _gestureLayer.EvasCanvas.Pointer.X;
                data.Y2 = _gestureLayer.EvasCanvas.Pointer.Y;
                OnGestureCompleted(type, data);
            });
            _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); });
        }
コード例 #8
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
        void OnLongTapCompleted(EGestureType type, object data)
        {
            _longTapTime = ((GestureLayer.TapData)data).Timestamp - _longTapTime;
            var cache = _handlerCache;

            if (cache.ContainsKey(type))
            {
                foreach (var handler in cache[type])
                {
                    if ((handler.Timeout * 1000) <= _longTapTime)
                    {
                        (handler as IGestureController)?.SendCompleted(View, data);
                    }
                    else
                    {
                        (handler as IGestureController)?.SendCanceled(View, data);
                    }
                }
            }
        }
コード例 #9
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
        void AddMomentumGesture(EGestureType type)
        {
            // Task to correct wrong coordinates information when applying EvasMap(Xamarin ex: Translation, Scale, Rotate property)
            // Always change to the absolute coordinates of the pointer.
            int startX = 0;
            int startY = 0;

            _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.Start, (data) =>
            {
                startX = _gestureLayer.EvasCanvas.Pointer.X;
                startY = _gestureLayer.EvasCanvas.Pointer.Y;
                OnGestureStarted(type, data);
            });
            _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.Move, (data) =>
            {
                data.X1 = startX;
                data.Y1 = startY;
                data.X2 = _gestureLayer.EvasCanvas.Pointer.X;
                data.Y2 = _gestureLayer.EvasCanvas.Pointer.Y;
                OnGestureMoved(type, data);
            });
            _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); });
            _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); });
        }
コード例 #10
0
        void OnFlickCompleted(EGestureType type, object data)
        {
            var lineData = (GestureLayer.LineData)data;

            _horizontalSwipeTime = Convert.ToInt32(lineData.HorizontalSwipeTimestamp - _horizontalSwipeTime);
            _verticalSwipeTime   = Convert.ToInt32(lineData.VerticalSwipeTimestamp - _verticalSwipeTime);
            var cache = _handlerCache;

            if (cache.ContainsKey(type))
            {
                foreach (var handler in cache[type])
                {
                    if ((handler.Timeout * 1000) >= _horizontalSwipeTime ||
                        (handler.Timeout * 1000) >= _verticalSwipeTime)
                    {
                        (handler as IGestureController)?.SendCompleted(View, data);
                    }
                    else
                    {
                        (handler as IGestureController)?.SendCanceled(View, data);
                    }
                }
            }
        }
コード例 #11
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
 void OnLongTapStarted(EGestureType type, object data)
 {
     _longTapTime = ((GestureLayer.TapData)data).Timestamp;
     OnGestureStarted(type, data);
 }
コード例 #12
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
 void RemoveTapGesture(EGestureType type)
 {
     _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, null);
     _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, null);
     _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, null);
 }
コード例 #13
0
ファイル: GestureDetector.cs プロジェクト: MIliev11/Samples
 void AddTapGesture(EGestureType type)
 {
     _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, (data) => { OnGestureStarted(type, data); });
     _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); });
     _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); });
 }
コード例 #14
0
 void OnLongTapMoved(EGestureType type, object data)
 {
     OnGestureMoved(type, data);
 }
コード例 #15
0
 internal static extern void elm_gesture_layer_cb_set(IntPtr obj, ElmSharp.GestureLayer.GestureType idx, ElmSharp.GestureLayer.GestureState cb_type, GestureEventCallback cb, IntPtr data);