Ejemplo n.º 1
0
        private void AddRipple()
        {
            var color = TouchEffect.GetColor(Element);

            if (color == Color.Default)
            {
                return;
            }
            _color = color.ToAndroid();

            if (Element is Layout)
            {
                _rippleOverlay = new FrameLayout(Container.Context)
                {
                    LayoutParameters = new ViewGroup.LayoutParams(-1, -1)
                };

                _rippleListener = new ContainerOnLayoutChangeListener(_rippleOverlay);
                _view.AddOnLayoutChangeListener(_rippleListener);

                ((ViewGroup)_view).AddView(_rippleOverlay);

                _rippleOverlay.BringToFront();
                _rippleOverlay.Foreground = CreateRipple(Color.Accent.ToAndroid());
            }
            else
            {
                _orgDrawable     = _view.Background;
                _view.Background = CreateRipple(Color.Accent.ToAndroid());
            }

            _ripple.SetColor(GetPressedColorSelector(_color));
        }
Ejemplo n.º 2
0
        private void RemoveRipple()
        {
            if (Element is Layout)
            {
                var viewgrp = (ViewGroup)_view;
                viewgrp?.RemoveOnLayoutChangeListener(_rippleListener);
                viewgrp?.RemoveView(_rippleOverlay);

                _rippleListener?.Dispose();
                _rippleListener = null;

                _rippleOverlay?.Dispose();
                _rippleOverlay = null;
            }
            else
            {
                _view.Background = _orgDrawable;
                _orgDrawable?.Dispose();
                _orgDrawable = null;
            }
            _ripple?.Dispose();
            _ripple = null;
        }