Esempio n. 1
0
        public async Task Show(View relative, string text, TimeSpan?duration = null)
        {
            _ = relative ?? throw new ArgumentNullException(nameof(relative));

            if (text.IsEmpty())
            {
                return;
            }
            Content.Text(text);

            duration ??= 1500.Milliseconds();

            UIWorkBatch.RunSync(() =>
            {
                X.BindTo(relative.Width, Width, (rw, w) => (relative.CalculateAbsoluteX() + (rw / 2)) - (w / 2));
                Y.BindTo(relative.Height, rh => relative.CalculateAbsoluteY() + rh);
            });

            this.Visible();

            CancellationSource?.Cancel();
            CancellationSource?.Dispose();
            CancellationSource = new();

            await Task.Delay(duration.Value, CancellationSource.Token)
            .ContinueWith((_) => this.Hide(), CancellationSource.Token);
        }
Esempio n. 2
0
            async Task None()
            {
                if (ToView == ParentView)
                {
                    return;
                }

                await UIWorkBatch.Run(() => ParentView.Add(ToView, awaitNative: true));
            }
        static void HandleNavigationAnimationStarted(NavigationEventArgs args)
        {
            if (Tabs == null) return;

            if (args.From is PopUp || args.To is PopUp) return;

            var showTabs = args.To is NavBarTabsPage<TTabs>;
            var shouldFadeIn = showTabs && !(args.From is NavBarTabsPage<TTabs>);
            var shouldFadeOut = args.From is NavBarTabsPage<TTabs> && !showTabs;

            if (shouldFadeIn) AnimateTabsIn();
            else if (shouldFadeOut) AnimateTabsOut();
            else UIWorkBatch.RunSync(() => Tabs?.Visible(showTabs).Opacity(showTabs ? 1 : 0));
        }
Esempio n. 4
0
        internal static void Disappear(bool animate = false)
        {
            if (animate)
            {
                var ani = Animation.Create(Current, Animation.DefaultDuration, AnimationEasing.Linear, change: x => x.Opacity(0))
                          .OnCompleted(() =>
                {
                    Current.Hide();
                    Current.SendToBack();
                });

                Current.Animate(ani).RunInParallel();
            }
            else
            {
                UIWorkBatch.RunSync(() => Current.Hide().Opacity(0));
                Current.SendToBack();
            }
        }
Esempio n. 5
0
        internal static void Appear(bool animate = false)
        {
            if (Current.Parent == null)
            {
                return;
            }
            Current.BringToFront();

            if (animate)
            {
                Current.Animate(Animation.DefaultDuration, AnimationEasing.Linear,
                                x => x.Visible().Opacity(0),
                                x => x.Opacity(1))
                .RunInParallel();
            }
            else
            {
                UIWorkBatch.RunSync(() => Current.Visible().Opacity(1));
            }
        }