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(); } } }