void FireEvent(TouchEffect touchEffect, int id, TouchActionType actionType, List <Point> pointerLocation, bool isInContact)
        {
            // Get the method to call for firing events
            Action <Element, TouchActionEventArgs> onTouchAction = touchEffect._pclTouchEffect.OnTouchAction;

            List <Point> points = new List <Point>();

            for (int i = 0; i < pointerLocation.Count; i++)
            {
                double x     = pointerLocation[i].X - twoIntArray[0];
                double y     = pointerLocation[i].Y - twoIntArray[1];
                Point  point = new Point(_fromPixels(x), _fromPixels(y));
                points.Add(point);
            }

            // Call the method
            onTouchAction(touchEffect._formsElement,
                          new TouchActionEventArgs(id, actionType, points, isInContact, points.Count));
        }
        void CheckForBoundaryHop(int id, List <Point> pointerLocation)
        {
            TouchEffect touchEffectHit = null;

            foreach (Android.Views.View view in viewDictionary.Keys)
            {
                // Get the view rectangle
                try
                {
                    view.GetLocationOnScreen(twoIntArray);
                }
                catch // System.ObjectDisposedException: Cannot access a disposed object.
                {
                    continue;
                }
                Rectangle viewRect = new Rectangle(twoIntArray[0], twoIntArray[1], view.Width, view.Height);

                if (viewRect.Contains(pointerLocation[pointerLocation.Count - 1]))
                {
                    touchEffectHit = viewDictionary[view];
                }
            }

            if (touchEffectHit != idToEffectDictionary[id])
            {
                if (idToEffectDictionary[id] != null)
                {
                    FireEvent(idToEffectDictionary[id], id, TouchActionType.Exited, pointerLocation, true);
                }
                if (touchEffectHit != null)
                {
                    FireEvent(touchEffectHit, id, TouchActionType.Entered, pointerLocation, true);
                }
                idToEffectDictionary[id] = touchEffectHit;
            }
        }