示例#1
0
 private void InitAddButton()
 {
     _addButton = new AwesomMenuItem(_addUri, _addUriHighlited);
     _addButton.ItemTransfrom.TranslateX = _startPoint.X;
     _addButton.ItemTransfrom.TranslateY = _startPoint.Y;
     _addButton.Tag = 999;
     Canvas.SetZIndex(_addButton, 10);
     _addButton.ClickMenuItem -= Item_ClickMenuItem;
     _addButton.ClickMenuItem += Item_ClickMenuItem;
     this.Children.Add(_addButton);
 }
示例#2
0
        Storyboard GetShrinkAnimation(AwesomMenuItem item, Point pt)
        {
            Duration duration = TimeSpan.FromSeconds(0.3);
            var      sb       = new Storyboard();

            sb.Duration = duration;

            var keyFrams = new DoubleAnimationUsingKeyFrames();

            keyFrams.Duration = duration;

            var keyframe = new EasingDoubleKeyFrame();

            keyframe.Value   = pt.X;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.3);
            keyFrams.KeyFrames.Add(keyframe);

            Storyboard.SetTarget(keyFrams, item.ItemTransfrom);
            Storyboard.SetTargetProperty(keyFrams, "TranslateX");
            sb.Children.Add(keyFrams);

            keyFrams          = new DoubleAnimationUsingKeyFrames();
            keyFrams.Duration = duration;

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = pt.Y;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.3);
            keyFrams.KeyFrames.Add(keyframe);

            Storyboard.SetTarget(keyFrams, item.ItemTransfrom);
            Storyboard.SetTargetProperty(keyFrams, "TranslateY");
            sb.Children.Add(keyFrams);


            var da = GetDoubleAnimation(duration, 0.01, 1);

            Storyboard.SetTarget(da, item.ItemTransfrom);
            Storyboard.SetTargetProperty(da, "ScaleX");
            sb.Children.Add(da);

            da = GetDoubleAnimation(duration, 0.01, 1);
            Storyboard.SetTarget(da, item.ItemTransfrom);
            Storyboard.SetTargetProperty(da, "ScaleY");
            sb.Children.Add(da);

            da = GetDoubleAnimation(duration, 1, 0);
            Storyboard.SetTarget(da, item);
            Storyboard.SetTargetProperty(da, "(UIElement.Opacity)");
            sb.Children.Add(da);

            return(sb);
        }
示例#3
0
        private void Item_ClickMenuItem(AwesomMenuItem item)
        {
            if (item.Tag.Equals(_addButton.Tag))
            {
                this.IsExpanding = !this.IsExpanding;
                return;
            }

            if (!TapToDissmissItem)
            {
                //blowup current button
                Point pt          = new Point(item.ItemTransfrom.TranslateX, item.ItemTransfrom.TranslateY);
                var   blowUpStory = GetBlowUpAnimation(item, pt);
                blowUpStory.Begin();
                blowUpStory.Completed += (o, a) =>
                {
                    item.ItemTransfrom.TranslateX = _startPoint.X;
                    item.ItemTransfrom.TranslateY = _startPoint.Y;
                    item.ItemTransfrom.ScaleX     = 1;
                    item.ItemTransfrom.ScaleY     = 1;
                    item.Opacity = 1;
                    blowUpStory.Stop();
                    blowUpStory.Children.Clear();
                    blowUpStory = null;
                };

                foreach (var otherItem in MenuItems)
                {
                    if (item != otherItem)
                    {
                        Point p           = new Point(otherItem.ItemTransfrom.TranslateX, otherItem.ItemTransfrom.TranslateY);
                        var   shrinkStory = GetShrinkAnimation(otherItem, p);
                        shrinkStory.Begin();
                        shrinkStory.Completed += (o, a) =>
                        {
                            otherItem.ItemTransfrom.TranslateX = _startPoint.X;
                            otherItem.ItemTransfrom.TranslateY = _startPoint.Y;
                            otherItem.ItemTransfrom.ScaleX     = 1;
                            otherItem.ItemTransfrom.ScaleY     = 1;
                            otherItem.Opacity = 1;
                            shrinkStory.Stop();
                            shrinkStory.Children.Clear();
                            shrinkStory = null;
                        };
                    }
                }
                _isExpanding = false;

                //收起做的动画
                //弧度
                double angle = this.IsExpanding ? -Math.PI / 4 : 0;
                //角度
                angle = angle * 180;
                Duration duration = TimeSpan.FromSeconds(0.5);
                _addButton.RenderTransformOrigin = new Point(0.5, 0.5);
                var da = GetDoubleAnimation(duration, _addButton.ItemTransfrom.Rotation, angle);
                var sb = new Storyboard();
                //sb.Duration = duration;
                Storyboard.SetTarget(da, _addButton.ItemTransfrom);
                Storyboard.SetTargetProperty(da, "Rotation");
                sb.Children.Add(da);
                sb.Begin();
                sb.Completed += (o, a) =>
                {
                    sb.Stop();
                    _addButton.ItemTransfrom.Rotation = angle;
                    sb.Children.Clear();
                    sb = null;
                };
            }


            if (ActionDisMiss != null)
            {
                ActionDisMiss(this, Convert.ToInt32(item.Tag));
            }
        }
示例#4
0
        private void Close()
        {
            if (_flag < 0)
            {
                _timer.Stop();
                _timer = null;
                return;
            }

            int            tag  = _flag;
            AwesomMenuItem item = null;

            //if (tag >= MenuItems.Count)
            //{
            //    item = _addButton;
            //}
            //else
            //item = MenuItems[tag];

            if (tag - 1 < 0)
            {
                return;
            }
            item = MenuItems[tag - 1];

            Duration duration = TimeSpan.FromSeconds(0.5);

            var sb = new Storyboard();

            sb.Duration = duration;

            var da = new DoubleAnimationUsingKeyFrames();

            da.Duration = duration;

            var keyframe = new EasingDoubleKeyFrame();

            keyframe.Value   = 0;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.0);
            da.KeyFrames.Add(keyframe);

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = 180;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.25);
            da.KeyFrames.Add(keyframe);

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = 0;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.5);
            da.KeyFrames.Add(keyframe);

            Storyboard.SetTarget(da, item.ItemTransfrom);
            Storyboard.SetTargetProperty(da, "Rotation");
            sb.Children.Add(da);

            da          = new DoubleAnimationUsingKeyFrames();
            da.Duration = duration;

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = item.EndPoint.X;
            keyframe.KeyTime = TimeSpan.FromSeconds(0);
            da.KeyFrames.Add(keyframe);

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = item.FarPoint.X;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.25);
            da.KeyFrames.Add(keyframe);

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = item.StratPoint.X;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.5);
            da.KeyFrames.Add(keyframe);

            Storyboard.SetTarget(da, item.ItemTransfrom);
            Storyboard.SetTargetProperty(da, "TranslateX");
            sb.Children.Add(da);

            da          = new DoubleAnimationUsingKeyFrames();
            da.Duration = duration;

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = item.EndPoint.Y;
            keyframe.KeyTime = TimeSpan.FromSeconds(0);
            da.KeyFrames.Add(keyframe);

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = item.FarPoint.Y;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.25);
            da.KeyFrames.Add(keyframe);

            keyframe         = new EasingDoubleKeyFrame();
            keyframe.Value   = item.StratPoint.Y;
            keyframe.KeyTime = TimeSpan.FromSeconds(0.5);
            da.KeyFrames.Add(keyframe);

            Storyboard.SetTarget(da, item.ItemTransfrom);
            Storyboard.SetTargetProperty(da, "TranslateY");
            sb.Children.Add(da);

            sb.Begin();
            sb.Completed += (o, a) =>
            {
                item.ItemTransfrom.TranslateX = item.StratPoint.X;
                item.ItemTransfrom.TranslateY = item.StratPoint.Y;
                item.ItemTransfrom.Rotation   = 0;
                sb.Stop();
                sb.Children.Clear();
                da = null;
                sb = null;
                if (ActionItemClose != null)
                {
                    ActionItemClose(item);
                }
            };
            _flag--;
        }