public static void AnimateVisibility(bool show, View view)
        {
            if ((show && view.Visibility == ViewStates.Visible) || !show && view.Visibility != ViewStates.Visible)
            {
                return;
            }

            int   cx     = view.Width / 2;
            int   cy     = view.Height / 2;
            float radius = (float)Math.Hypot(cx, cy);

            if (show)
            {
                Animator anim = ViewAnimationUtils.CreateCircularReveal(view, cx, cy, 0, radius);
                view.Visibility = ViewStates.Visible;
                anim.Start();
            }
            else
            {
                try
                {
                    Animator anim =
                        ViewAnimationUtils.CreateCircularReveal(view, cx, cy, radius, 0);
                    anim.AnimationEnd += delegate { view.Visibility = ViewStates.Invisible; };
                    anim.Start();
                }
                catch (System.Exception)
                {
                    view.Visibility = ViewStates.Invisible;
                }
            }
        }