Пример #1
0
        private void OpenFABAnimation()
        {
            const int animationDuration     = 100;
            const int animationFadeDuration = 500;

            _isOpening = true;

            if (ItemsLayout != null)
            {
                for (int index = 0; index < ItemsLayout.ViewItems.Count; index++)
                {
                    var currentItem = ItemsLayout.ViewItems[index];

                    var position = CalculateItemClosedPosition(currentItem, index);
                    currentItem.TranslationY = position;
                    currentItem.Opacity      = 0;
                }

                ItemsLayout.IsVisible   = true;
                OpacityFilter.IsVisible = true;
                OpacityFilter.Opacity   = 0;
                OpacityFilter.FadeTo(0.5, animationFadeDuration);
                if (IsRotateAnimationEnabled)
                {
                    FAB.RotateAnimation();
                }

                foreach (var item in ItemsLayout.ViewItems)
                {
                    item.TranslateTo(0, 0, animationDuration, easing: Easing.BounceIn);
                    item.FadeTo(1, animationDuration, easing: Easing.BounceIn);
                }
            }
        }
Пример #2
0
        private async void CloseAnimationOnFab()
        {
            _isOpening = false;
            if (IsRotateAnimationEnabled)
            {
                FAB.RestoreRotationAnimation();
            }

            if (ItemsLayout != null)
            {
                const int animationDuration = 250;
                ItemsLayout.IsVisible = true;
                var tasks = new List <Task>();
                if (ItemsLayout.ViewItems != null)
                {
                    tasks.Add(OpacityFilter.FadeTo(0, animationDuration));
                    for (int index = 0; index < ItemsLayout.ViewItems.Count; index++)
                    {
                        var currentItem = ItemsLayout.ViewItems[index];

                        var position = CalculateItemClosedPosition(currentItem, index);
                        tasks.Add(currentItem.TranslateTo(0, position, animationDuration, easing: Easing.BounceIn));
                        tasks.Add(currentItem.FadeTo(0, animationDuration, easing: Easing.BounceIn));
                    }

                    await Task.WhenAll(tasks.ToArray());

                    // if user didn't reopen the FAM during animation
                    if (_isOpening == false)
                    {
                        ItemsLayout.IsVisible   = false;
                        OpacityFilter.IsVisible = false;
                    }
                }
            }
        }