Exemple #1
0
        void CheckForBoundaryHop(int id, Point pointerLocation)
        {
            DroidTouchEffect 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))
                {
                    touchEffectHit = viewDictionary[view];
                }
            }

            if (idToEffectDictionary.ContainsKey(id))
            {
                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;
                }
            }
            else
            {
                if (touchEffectHit != null)
                {
                    FireEvent(touchEffectHit, id, TouchActionType.Entered, pointerLocation, true);
                }
                idToEffectDictionary[id] = touchEffectHit;
            }
        }
Exemple #2
0
        void FireEvent(DroidTouchEffect touchEffect, int id, TouchActionType actionType, Point pointerLocation, bool isInContact)
        {
            try
            {
                // Get the method to call for firing events
                Action <Element, TouchActionEventArgs> onTouchAction = touchEffect.libTouchEffect.OnTouchAction;

                // Get the location of the pointer within the view
                touchEffect.view.GetLocationOnScreen(twoIntArray);
                double x     = pointerLocation.X - twoIntArray[0];
                double y     = pointerLocation.Y - twoIntArray[1];
                Point  point = new Point(fromPixels(x), fromPixels(y));

                // Call the method
                onTouchAction(touchEffect.formsElement,
                              new TouchActionEventArgs(id, actionType, point, isInContact));
            }
            catch { }
        }