public void Invalidate()
        {
            PathProvider?.Invalidate();

            if (_nativeView != null)
            {
                _nativeView.OutlineProvider?.Dispose();
                _nativeView.OutlineProvider = new PathOutlineProvider(PathProvider);
                _nativeView.ClipToOutline   = true;
                _nativeView.PostInvalidate();
                _nativeView.GetGradientDrawable()?.InvalidatePath();
                _nativeView.GetGradientDrawable()?.InvalidateSelf();

                var maskDrawable = _nativeView?.GetRippleMaskDrawable();
                if (maskDrawable != null && PathProvider != null)
                {
                    maskDrawable.Shape = new PathShape(PathProvider.Path, _nativeView.Width, _nativeView.Height);
                    maskDrawable.InvalidateSelf();
                }
            }
        }