public void ShowPopup(PopupExtended popup) { try { if (CurrentPopup != null) { return; } if (popup.IsVisible == false) { CurrentPopup = popup; BackgroundLayout.BackgroundColor = popup.BackgroundLayerColor; PopupControls.Add(popup.Content); PopupContentLayout = popup.Content; popup.Content = null; grid.Children.Add(PopupControls[0]); if (popup.CloseOnBackGroundClicked) { TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer(); tapGestureRecognizer.Tapped += TapGestureRecognizer_Tapped; boxView.GestureRecognizers.Add(tapGestureRecognizer); } popup.IsVisible = true; BackgroundLayout.IsVisible = true; ShowEnterAnimation(); CurrentPopup.IsOpen = true; } } catch (Exception ex) { RootPage.DisplayAlert("Exception", ex.Message, "OK"); } }
private Task <bool> ShowExitAnimation() { Task <bool> task = null; switch (CurrentPopup.ExitAnimation) { case AnimationEnum.SlideLeft: task = PopupContentLayout.TranslateTo(0 - PopupContentLayout.Width, 0); break; case AnimationEnum.SlideRight: task = PopupContentLayout.TranslateTo(PopupContentLayout.Width, 0); break; case AnimationEnum.SlideUp: task = PopupContentLayout.TranslateTo(0, 0 - PopupContentLayout.Height); break; case AnimationEnum.SlideDown: task = PopupContentLayout.TranslateTo(0, PopupContentLayout.Height); break; } task.ContinueWith(b => { BackgroundLayout.IsVisible = false; CurrentPopup.IsVisible = false; CurrentPopup.IsOpen = false; BackgroundLayout.Children.Remove(PopupControls[0]); CurrentPopup.Content = PopupControls[0]; PopupControls.Clear(); CurrentPopup = null; PopupContentLayout = null; }, TaskScheduler.FromCurrentSynchronizationContext()); return(task); }
public async Task ClosePopup(PopupExtended popup) { try { if (CurrentPopup == null) { return; } if (CurrentPopup.ExitAnimation != AnimationEnum.None) { await ShowExitAnimation(); } } catch (Exception ex) { await RootPage.DisplayAlert("Exception", ex.Message, "OK"); } }