protected override void OnAttached()
        {
            effect = TouchEffect.PickFrom(Element);
            if (effect == null || effect.IsDisabled)
            {
                return;
            }

            effect.Element = (VisualElement)Element;
            if (effect.NativeAnimation)
            {
                var nativeControl = Container;
                if (string.IsNullOrEmpty(nativeControl.Name))
                {
                    nativeControl.Name = Guid.NewGuid().ToString();
                }

                if (nativeControl.Resources.ContainsKey(pointerDownAnimationKey))
                {
                    pointerDownStoryboard = (Storyboard)nativeControl.Resources[pointerDownAnimationKey];
                }
                else
                {
                    pointerDownStoryboard = new Storyboard();
                    var downThemeAnimation = new PointerDownThemeAnimation();

                    Storyboard.SetTargetName(downThemeAnimation, nativeControl.Name);

                    pointerDownStoryboard.Children.Add(downThemeAnimation);

                    nativeControl.Resources.Add(new KeyValuePair <object, object>(pointerDownAnimationKey, pointerDownStoryboard));
                }

                if (nativeControl.Resources.ContainsKey(pointerUpAnimationKey))
                {
                    pointerUpStoryboard = (Storyboard)nativeControl.Resources[pointerUpAnimationKey];
                }
                else
                {
                    pointerUpStoryboard = new Storyboard();
                    var upThemeAnimation = new PointerUpThemeAnimation();

                    Storyboard.SetTargetName(upThemeAnimation, nativeControl.Name);

                    pointerUpStoryboard.Children.Add(upThemeAnimation);

                    nativeControl.Resources.Add(new KeyValuePair <object, object>(pointerUpAnimationKey, pointerUpStoryboard));
                }
            }

            if (Container != null)
            {
                Container.PointerPressed     += OnPointerPressed;
                Container.PointerReleased    += OnPointerReleased;
                Container.PointerCanceled    += OnPointerCanceled;
                Container.PointerExited      += OnPointerExited;
                Container.PointerEntered     += OnPointerEntered;
                Container.PointerCaptureLost += OnPointerCaptureLost;
            }
        }
        protected override void OnAttached()
        {
            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            if (View == null)
            {
                return;
            }

            touchGesture = new TouchUITapGestureRecognizer(effect);

            if (((View as IVisualNativeElementRenderer)?.Control ?? View) is UIButton button)
            {
                button.AllTouchEvents += PreventButtonHighlight;
                ((TouchUITapGestureRecognizer)touchGesture).IsButton = true;
            }

            View.AddGestureRecognizer(touchGesture);

            if (XCT.IsiOS13OrNewer)
            {
                hoverGesture = new UIHoverGestureRecognizer(OnHover);
                View.AddGestureRecognizer(hoverGesture);
            }

            View.UserInteractionEnabled = true;
        }
Exemple #3
0
        protected override void OnAttached()
        {
            if (View == null)
            {
                return;
            }

            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            View.Touch += OnTouch;
            UpdateClickHandler();

            accessibilityManager = View.Context?.GetSystemService(Context.AccessibilityService) as AccessibilityManager;
            if (accessibilityManager != null)
            {
                accessibilityListener = new AccessibilityListener(this);
                accessibilityManager.AddAccessibilityStateChangeListener(accessibilityListener);
                accessibilityManager.AddTouchExplorationStateChangeListener(accessibilityListener);
            }

            if (XCT.SdkInt < (int)BuildVersionCodes.Lollipop || !effect.NativeAnimation)
            {
                return;
            }

            View.Clickable     = true;
            View.LongClickable = true;
            CreateRipple();

            if (Group == null)
            {
                if (XCT.SdkInt >= (int)BuildVersionCodes.M)
                {
                    View.Foreground = ripple;
                }

                return;
            }

            rippleView = new FrameLayout(Group.Context ?? throw new NullReferenceException())
            {
                LayoutParameters = new ViewGroup.LayoutParams(-1, -1),
                Clickable        = false,
                Focusable        = false,
                Enabled          = false,
            };
            View.LayoutChange    += OnLayoutChange;
            rippleView.Background = ripple;
            Group.AddView(rippleView);
            rippleView.BringToFront();
        }
Exemple #4
0
        protected override void OnAttached()
        {
            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;
            gestureLayer   = new TouchTapGestureRecognizer(Control, effect);
        }
        protected override void OnAttached()
        {
            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            if (Container != null)
            {
                gesture = new TouchNSClickGestureRecognizer(effect, Container);
                Container.AddGestureRecognizer(gesture);
                Container.AddSubview(mouseTrackingView = new MouseTrackingView(effect));
            }
        }
        protected override void OnAttached()
        {
            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            gesture = new TouchUITapGestureRecognizer(effect);
            if (Container != null)
            {
                Container.AddGestureRecognizer(gesture);
                Container.UserInteractionEnabled = true;
            }
        }
Exemple #7
0
        protected override void OnAttached()
        {
            if (View == null)
            {
                return;
            }

            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            View.Touch += OnTouch;
            UpdateClickHandler();

            accessibilityManager = View.Context.GetSystemService(Context.AccessibilityService) as AccessibilityManager;
            if (accessibilityManager != null)
            {
                accessibilityListener = new AccessibilityListener(this);
                accessibilityManager.AddAccessibilityStateChangeListener(accessibilityListener);
                accessibilityManager.AddTouchExplorationStateChangeListener(accessibilityListener);
            }

            if (effect.NativeAnimation && Group != null && AndroidOS.Build.VERSION.SdkInt >= AndroidOS.BuildVersionCodes.Lollipop)
            {
                View.Clickable     = true;
                View.LongClickable = true;
                viewOverlay        = new FrameLayout(Group.Context)
                {
                    LayoutParameters = new ViewGroup.LayoutParams(-1, -1),
                    Clickable        = false,
                    Focusable        = false,
                };
                View.LayoutChange += LayoutChange;

                CreateRipple();
                viewOverlay.Background = ripple;
                Group.AddView(viewOverlay);
                viewOverlay.BringToFront();
            }
        }
        protected override void OnAttached()
        {
            if (View == null)
            {
                return;
            }

            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            View.Touch += OnTouch;
            UpdateClickHandler();

            accessibilityManager = View.Context?.GetSystemService(Context.AccessibilityService) as AccessibilityManager;
            if (accessibilityManager != null)
            {
                accessibilityListener = new AccessibilityListener(this);
                accessibilityManager.AddAccessibilityStateChangeListener(accessibilityListener);
                accessibilityManager.AddTouchExplorationStateChangeListener(accessibilityListener);
            }

            if (XCT.SdkInt < (int)BuildVersionCodes.Lollipop || !effect.NativeAnimation)
            {
                return;
            }

            View.Clickable     = true;
            View.LongClickable = true;
            CreateRipple();
            ApplyRipple();

            View.LayoutChange += OnLayoutChange;
        }
Exemple #9
0
        protected override void OnAttached()
        {
            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            gesture = new TouchUITapGestureRecognizer(effect);

            if (Container != null)
            {
                if ((Container as IVisualNativeElementRenderer)?.Control is UIButton button)
                {
                    button.AllTouchEvents += PreventButtonHighlight;
                    gesture.IsButton       = true;
                }

                Container.AddGestureRecognizer(gesture);
                Container.UserInteractionEnabled = true;
            }
        }