示例#1
0
        private void Apply(AcrylicState state)
        {
            if (AlwaysUseFallback || !SupportsBlur())
            {
                state.BlurDisposable.Disposable = null;

                // Fall back to solid color
                var fillPaint = GetFillPaint(Rect.Empty);
                ExecuteWithNoRelayout(state.Owner, v => v.SetBackgroundDrawable(Brush.GetBackgroundDrawable(this, state.DrawArea, fillPaint, state.MaskingPath, antiAlias: false)));

                if (state.FallbackDisposable.Disposable == null)
                {
                    state.FallbackDisposable.Disposable = Disposable.Create(
                        () => ExecuteWithNoRelayout(state.Owner, v => v.SetBackgroundDrawable(null)));
                }
            }
            else
            {
                state.FallbackDisposable.Disposable = null;

                ApplyAcrylicBlur(state);

                if (state.BlurDisposable.Disposable == null)
                {
                    state.BlurDisposable.Disposable = Disposable.Create(
                        () => RemoveAcrylicBlur(state));
                }
            }
        }