public void animation2(Button button)
        {
            var scaleAnimation = CABasicAnimation.FromKeyPath("transform");

            scaleAnimation.From = NSValue.FromCATransform3D(CATransform3D.MakeScale(1, 1, 1));
            scaleAnimation.To   = NSValue.FromCATransform3D(CATransform3D.MakeScale(2, 2, 1));


            var opacityAnimation = CABasicAnimation.FromKeyPath("opacity");

            opacityAnimation.From = NSNumber.FromFloat(0.25f);
            opacityAnimation.To   = NSNumber.FromFloat(0.0f);

            var rippleAnimationGroup = new CAAnimationGroup
            {
                Duration            = 2.0f,
                TimeOffset          = -0.25f,
                RemovedOnCompletion = true,
                FillMode            = CAFillMode.Both,
                TimingFunction      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut),
                Animations          = new CAAnimation[] { scaleAnimation, opacityAnimation }
            };


            rippleCircleLayer.AddAnimation(rippleAnimationGroup, "rippleMyAnimations");
        }
Пример #2
0
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double             duration   = 0;
                List <CAAnimation> animations = new List <CAAnimation>();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    string pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i);

                    string keyPath        = string.Format("{0}.distanceFromCenter", pointKeyPath);
                    CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.Values   = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) };
                    a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) };
                    a.Duration = 0.3 * (i + 1.1);
                    animations.Add(a);

                    keyPath    = string.Format("{0}.opacity", pointKeyPath);
                    a          = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.Values   = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) };
                    a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) };
                    a.Duration = 0.3 * (i + 1.1);
                    animations.Add(a);

                    duration = a.Duration;
                }
                CAAnimationGroup g = new CAAnimationGroup();

                g.Duration   = duration;
                g.Animations = animations.ToArray();
                return(g);
            }
Пример #3
0
        void floatLabelToTop(bool changeColor = true)
        {
            CATransaction.Begin();
            CATransaction.CompletionBlock = () => {
                if (changeColor)
                {
                    this.label.TextColor = this.kDefaultActiveColor;
                }
            };

            var anim2         = CABasicAnimation.FromKeyPath("transform");
            var fromTransform = CATransform3D.MakeScale(1, 1, 1);
            var toTransform   = CATransform3D.MakeScale(0.5f, 0.5f, 1);

            toTransform          = toTransform.Translate(-this.label.Frame.Width / 2, -this.label.Frame.Height, 0);
            anim2.From           = NSValue.FromCATransform3D(fromTransform);
            anim2.To             = NSValue.FromCATransform3D(toTransform);
            anim2.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
            var animGroup = new CAAnimationGroup();

            animGroup.Animations          = new CAAnimation[] { anim2 };
            animGroup.Duration            = 0.3;
            animGroup.FillMode            = CAFillMode.Forwards;
            animGroup.RemovedOnCompletion = false;
            this.label.Layer.AddAnimation(animGroup, "_floatingLabel");
            this.ClipsToBounds = false;
            CATransaction.Commit();
        }
        private void Animate()
        {
            if (stopAnim)
            {
                return;
            }

            if (locationAnimations != null)
            {
                AnimationImage.Layer.RemoveAnimation("locAnim");
            }

            var locationAnimation = CABasicAnimation.FromKeyPath("opacity");

            locationAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            locationAnimation.From           = NSNumber.FromFloat(GetAlpha());
            locationAnimation.To             = NSNumber.FromFloat(0.05f);

            var scaleAnimation = CABasicAnimation.FromKeyPath("transform.scale");

            scaleAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            scaleAnimation.From           = NSNumber.FromFloat(1.1f);
            scaleAnimation.To             = NSNumber.FromFloat(1);;

            locationAnimations                   = CAAnimationGroup.CreateAnimation();
            locationAnimations.Duration          = GetAnimationDuration();
            locationAnimations.AutoReverses      = true;
            locationAnimations.Animations        = new CAAnimation[] { scaleAnimation, locationAnimation };
            locationAnimations.AnimationStopped += (sender, e) => {
                Animate();
            };

            AnimationImage.Layer.AddAnimation(locationAnimations, "locAnim");
            systemSound.PlaySystemSound();
        }
        private void AnimateBackgroundFadeIn()
        {
            var view = _touchView;

            SetupAnimationLayer(_backgroundLayer, view, 3);


            _backgroundLayer.RemoveAllAnimations();

            // Apparently the UITapGestureRecognizer is disabled after
            // 1.5 seconds and none of the Touches* events are triggered
            // for us to fade the backgroundLayer, so we have to chain
            // animations to ensure that we automatically fade out
            // the background layer after 1.5 seconds.
            //
            var group = new CAAnimationGroup();

            group.Duration       = 1.7;
            group.RepeatCount    = 1;
            group.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
            group.Animations     = new CAAnimation[] {
                _backgroundFadeInAnimation,
                _backgroundFadeInHoldAnimation,
                _backgroundFadeOutAfterHoldAnimation
            };

            _backgroundLayer.AddAnimation(group, "backgroundFadeInAnimation");
        }
Пример #6
0
        void CreateAnimationGroup()
        {
            PointF fromPt = _sublayer.Position;

            _sublayer.Position = new PointF(200, 300);
            CGPath path = new CGPath();

            path.AddLines(new PointF[] { fromPt, new PointF(250, 225), new PointF(100, 250), new PointF(200, 300) });
            CAKeyFrameAnimation animPosition = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position");

            animPosition.Path = path;

            _sublayer.Transform = CATransform3D.MakeRotation((float)Math.PI, 0, 0, 1);
            CAKeyFrameAnimation animRotate = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform");

            animRotate.Values = new NSObject[] { NSNumber.FromCATransform3D(CATransform3D.MakeRotation(0, 0, 0, 1)),
                                                 NSNumber.FromCATransform3D(CATransform3D.MakeRotation((float)Math.PI / 2f, 0, 0, 1)),
                                                 NSNumber.FromCATransform3D(CATransform3D.MakeRotation((float)Math.PI, 0, 0, 1)) };

            CAAnimationGroup spinningMonkeyGroup = CAAnimationGroup.CreateAnimation();

            spinningMonkeyGroup.Duration   = 2;
            spinningMonkeyGroup.Animations = new CAAnimation[] { animPosition, animRotate };
            _sublayer.AddAnimation(spinningMonkeyGroup, null);
        }
Пример #7
0
            // >> chart-structure-animation-cs
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                var duration   = 0.0;
                var animations = new List <CAAnimation> ();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    var pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i);
                    var keyPath      = pointKeyPath + ".x";
                    var point        = state.Points.ObjectAtIndex((uint)i) as TKChartVisualPoint;
                    var animation    = new CABasicAnimation();
                    animation.KeyPath  = keyPath;
                    animation.Duration = (double)(r.Next(100)) / 100.0;
                    animation.From     = new NSNumber(0);
                    animation.To       = new NSNumber(point.X);
                    animations.Add(animation);
                    duration = Math.Max(animation.Duration, duration);
                }

                var group = new CAAnimationGroup();

                group.Duration   = duration;
                group.Animations = animations.ToArray();
                return(group);
            }
Пример #8
0
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double             duration   = 0.5;
                List <CAAnimation> animations = new List <CAAnimation> ();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    string              keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
                    TKChartVisualPoint  point   = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i);
                    double              oldY    = rect.Height;
                    double              half    = oldY + (point.Y - oldY) / 2.0;
                    CAKeyFrameAnimation a       = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.KeyTimes       = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) };
                    a.Values         = new NSObject[] { new NSNumber(oldY), new NSNumber(half), new NSNumber(point.Y) };
                    a.Duration       = duration;
                    a.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                    animations.Add(a);
                }

                CAAnimationGroup group = new CAAnimationGroup();

                group.Duration   = duration;
                group.Animations = animations.ToArray();

                return(group);
            }
Пример #9
0
        void UpdateRecordButton(bool isRecording)
        {
            //Corner Radius
            var radiusAnimation = CABasicAnimation.FromKeyPath("cornerRadius");

            radiusAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn);
            radiusAnimation.From           = NSNumber.FromNFloat(recordButton.Layer.CornerRadius);

            //Border Thickness
            var borderAnimation = CABasicAnimation.FromKeyPath("borderWidth");

            borderAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn);
            radiusAnimation.From           = NSNumber.FromNFloat(recordButton.Layer.BorderWidth);

            //Animation Group
            var animationGroup = CAAnimationGroup.CreateAnimation();

            animationGroup.Animations = new CAAnimation[] { radiusAnimation, borderAnimation };
            animationGroup.Duration   = 0.6;
            animationGroup.FillMode   = CAFillMode.Forwards;

            recordButton.Layer.CornerRadius = isRecording ? 4 : recordButton.Frame.Width / 2;
            recordButton.Layer.BorderWidth  = isRecording ? 2 : 3;

            recordButton.Layer.AddAnimation(animationGroup, "borderChanges");
        }
Пример #10
0
        void HideMenuLayerAnimation(NSString timingFunctionName = null)
        {
            CGRect f               = _shadowLayer.Frame;
            var    group           = new CAAnimationGroup();
            var    animationOffset = new CABasicAnimation();

            animationOffset.KeyPath = new NSString("position");
            animationOffset.From    = NSValue.FromCGPoint(new CGPoint(f.GetMidX(), f.GetMidY()));
            animationOffset.To      = NSValue.FromCGPoint(new CGPoint(f.GetMidX() - UIScreen.MainScreen.Bounds.Width * _targetViewControllerOffset, f.GetMidY()));

            var animationScaleX = new CABasicAnimation();

            animationScaleX.KeyPath = new NSString("transform.scale.x");
            animationScaleX.From    = NSValue.FromObject(0.8f);
            animationScaleX.To      = NSValue.FromObject(1.0f);

            var animationScaleY = new CABasicAnimation();

            animationScaleY.KeyPath = new NSString("transform.scale.y");
            animationScaleY.From    = NSValue.FromObject(0.8f);
            animationScaleY.To      = NSValue.FromObject(1.0f);

            //during pan gesture animation curve should be linear
            //In other cases EaseInOut
            group.TimingFunction = CAMediaTimingFunction.FromName(timingFunctionName ?? CAMediaTimingFunction.EaseInEaseOut);
            group.Duration       = TransitionDurationTime;
            group.Animations     = new[] { animationOffset, animationScaleX, animationScaleY };

            _shadowLayer.AddAnimation(group, "HideShadowLayerAnimation");
        }
Пример #11
0
        protected void FloatLabelBack()
        {
            CATransaction.Begin();
            CATransaction.CompletionBlock = () =>
            {
                Label.TextColor = LabelInactiveTextColor;
            };

            var animation     = CABasicAnimation.FromKeyPath("transform");
            var fromTransform = CATransform3D.MakeScale(.5f, .5f, 1);
            var toTransform   = CATransform3D.MakeScale(1, 1, 1);

            fromTransform = fromTransform.Translate(-Label.Frame.Width * 0.5f, -Label.Frame.Height, 0);

            animation.From           = NSValue.FromCATransform3D(fromTransform);
            animation.To             = NSValue.FromCATransform3D(toTransform);
            animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);

            var animationGroup = new CAAnimationGroup
            {
                Animations = new CAAnimation[]
                {
                    animation
                },
                Duration            = .3f,
                FillMode            = CAFillMode.Forwards,
                RemovedOnCompletion = false
            };

            Label.Layer.AddAnimation(animationGroup, "_floatLabelBack");

            ClipsToBounds = false;

            CATransaction.Commit();
        }
Пример #12
0
        void animateLabelBack()
        {
            CATransaction.Begin();
            CATransaction.CompletionBlock = () => {
                this.label.TextColor = this.kDefaultInactiveColor;
            };

            var anim2         = CABasicAnimation.FromKeyPath("transform");
            var fromTransform = CATransform3D.MakeScale(0.5f, 0.5f, 1);

            fromTransform = fromTransform.Translate(-this.label.Frame.Width / 2, -this.label.Frame.Height, 0);
            var toTransform = CATransform3D.MakeScale(1, 1, 1);

            anim2.From           = NSValue.FromCATransform3D(fromTransform);
            anim2.To             = NSValue.FromCATransform3D(toTransform);
            anim2.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
            var animGroup = new CAAnimationGroup();

            animGroup.Animations = new CAAnimation[] {
                anim2
            };
            animGroup.Duration            = 0.3;
            animGroup.FillMode            = CAFillMode.Forwards;
            animGroup.RemovedOnCompletion = false;

            this.label.Layer.AddAnimation(animGroup, "_animateLabelBack");
            CATransaction.Commit();
        }
Пример #13
0
        public static SkeletonLayerAnimation MakeSlidingAnimation(GradientDirection direction, double duration = 1.5)
        {
            return((layer) =>
            {
                var startValues = direction.StartPoint();
                var endValues = direction.EndPoint();

                var startPointAnim = CABasicAnimation.FromKeyPath(nameof(CAGradientLayer.StartPoint));
                startPointAnim.From = NSValue.FromCGPoint(startValues.from);
                startPointAnim.To = NSValue.FromCGPoint(startValues.to);

                var endPointAnim = CABasicAnimation.FromKeyPath(nameof(CAGradientLayer.EndPoint));
                endPointAnim.From = NSValue.FromCGPoint(endValues.from);
                endPointAnim.To = NSValue.FromCGPoint(endValues.to);

                var animGroup = new CAAnimationGroup
                {
                    Animations = new[] { startPointAnim, endPointAnim },
                    Duration = duration,
                    TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn),
                    RepeatCount = float.MaxValue
                };
                return animGroup;
            });
        }
Пример #14
0
        public GradientComponent(RectangleF frame, float animationDuration) : base()
        {
            Frame      = frame;
            ColorsList = new List <CGColor[]> ();
            Animations = new List <CABasicAnimation> ();
            initializeColorList();

            Colors = ColorsList [0];

            float stepAnimationDuration = animationDuration / ColorsList.Count;

            for (int i = 0; i < ColorsList.Count + 1; i++)
            {
                createAndAddAnimation(pos: i, duration: stepAnimationDuration, beginTime: i * stepAnimationDuration);
            }

            CAAnimationGroup groupAnimation = new CAAnimationGroup();

            groupAnimation.FillMode            = CAFillMode.Forwards;
            groupAnimation.RemovedOnCompletion = false;
            groupAnimation.Animations          = Animations.ToArray();
            groupAnimation.Duration            = animationDuration;
            groupAnimation.RepeatCount         = float.MaxValue;

            AddAnimation(groupAnimation, "groupAnimation");
        }
Пример #15
0
        CAAnimation CreateMoveAndGrowAnimation(CALayer progress, double growToFraction)
        {
            CAAnimationGroup grp = CAAnimationGroup.CreateAnimation();

            grp.Duration            = 0.2;
            grp.FillMode            = CAFillMode.Forwards;
            grp.RemovedOnCompletion = false;

            CABasicAnimation move      = CABasicAnimation.FromKeyPath("position.x");
            double           oldOffset = (progress.Frame.Width / 2) * oldFraction;
            double           newOffset = (progress.Frame.Width / 2) * growToFraction;

            move.From = NSNumber.FromDouble(oldOffset);
            move.To   = NSNumber.FromDouble(newOffset);

            CABasicAnimation grow = CABasicAnimation.FromKeyPath("bounds");

            grow.From      = NSValue.FromCGRect(new CGRect(0, 0, progress.Frame.Width * (nfloat)oldFraction, barHeight));
            grow.To        = NSValue.FromCGRect(new CGRect(0, 0, progress.Frame.Width * (nfloat)growToFraction, barHeight));
            grp.Animations = new [] {
                move,
                grow,
            };
            return(grp);
        }
Пример #16
0
		ClockLayer SetupBackgroundLayer() 
		{
			// Create the color animation
			var rg = CABasicAnimation.FromKeyPath ("clockColor");
			rg.Duration = 3;
			rg.From = new NSObject (red.Handle);
			rg.To = new NSObject (green.Handle);

			var gb = CABasicAnimation.FromKeyPath ("clockColor");
			gb.Duration = 3;
			gb.BeginTime = 3;
			gb.From = rg.To;
			gb.To = new NSObject (blue.Handle);

			var br = CABasicAnimation.FromKeyPath ("clockColor");
			br.Duration = 3;
			br.BeginTime = 6;
			br.From = gb.To;
			br.To = rg.From;
			
			backgroundAnimation = new CAAnimationGroup ();
			backgroundAnimation.RepeatCount = 1000;
			backgroundAnimation.Duration = 9;
			backgroundAnimation.Animations = new CAAnimation [] { rg, gb, br };

			// Create the background layer
			backgroundLayer = new ClockLayer ();
			backgroundLayer.ClockColor = new CGColor (0.5f, 1f, 0f, 1.0f);
			backgroundLayer.AddAnimation (backgroundAnimation, "colorAnimation");

			CAConstraintLayoutManager layout = CAConstraintLayoutManager.LayoutManager;
			backgroundLayer.LayoutManager = layout;
			
			return backgroundLayer;
		}
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double duration = 0.5;
                List<CAAnimation> animations = new List<CAAnimation> ();

                for (int i = 0; i<(int)state.Points.Count; i++) {
                    string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
                    TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i);
                    double oldY = rect.Height;
                    double half = oldY + (point.Y - oldY)/2.0;
                    CAKeyFrameAnimation a = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.KeyTimes = new NSNumber[] { new NSNumber (0), new NSNumber (0), new NSNumber (1) };
                    a.Values = new NSObject[] { new NSNumber (oldY), new NSNumber (half), new NSNumber (point.Y) };
                    a.Duration = duration;
                    a.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut);
                    animations.Add(a);
                }

                CAAnimationGroup group = new CAAnimationGroup ();

                group.Duration = duration;
                group.Animations = animations.ToArray();

                return group;
            }
Пример #18
0
        public override void ViewWillAppear(bool animated)
        {
            base.ViewDidAppear(animated);

            //Creates basic moving animation
            var pt = layer.Position;

            layer.Position = new CGPoint(100, 300);
            var basicAnimation = CABasicAnimation.FromKeyPath("position");

            basicAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            basicAnimation.From           = NSValue.FromCGPoint(pt);
            basicAnimation.To             = NSValue.FromCGPoint(new CGPoint(100, 300));


            //Creates transformation animation
            layer.Transform = CATransform3D.MakeRotation((float)Math.PI * 2, 0, 0, 1);
            var animRotate = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform");

            animRotate.Values = new NSObject[] {
                NSNumber.FromFloat(0f),
                NSNumber.FromFloat((float)Math.PI / 2f),
                NSNumber.FromFloat((float)Math.PI),
                NSNumber.FromFloat((float)Math.PI * 2)
            };
            animRotate.ValueFunction = CAValueFunction.FromName(CAValueFunction.RotateX);

            //Adds the animations to a group, and adds the group to the layer
            var animationGroup = CAAnimationGroup.CreateAnimation();

            animationGroup.Duration   = 2;
            animationGroup.Animations = new CAAnimation[] { basicAnimation, animRotate };
            layer.AddAnimation(animationGroup, null);
        }
        void MoveLogoToTopLeft()
        {
            if (Cancelled)
            {
                return;
            }

            var rotate = CABasicAnimation.FromKeyPath("transform.rotation");

            rotate.From = NSObject.FromObject(0);
            rotate.To   = NSObject.FromObject(Math.PI * 2);

            var liftAndSlide = CABasicAnimation.FromKeyPath("position");

            liftAndSlide.From = NSValue.FromCGPoint(SlinkLogoImageView.Layer.Position);
            liftAndSlide.To   = NSValue.FromCGPoint(new CGPoint(40, 75));

            var shrink = CABasicAnimation.FromKeyPath("transform.scale");

            shrink.To = NSNumber.FromDouble(0.5);

            var animationGroup = CAAnimationGroup.CreateAnimation();

            animationGroup.Animations          = new CAAnimation[] { rotate, liftAndSlide, shrink };
            animationGroup.Duration            = animationDuration / 2;
            animationGroup.FillMode            = CAFillMode.Forwards;
            animationGroup.RemovedOnCompletion = false;
            rotate.RepeatCount = 0;

            SlinkLogoImageView.Layer.AddAnimation(animationGroup, "MoveLogoToTopLeft");
        }
Пример #20
0
        public PulseCALayer(float radius,
                            CGPoint position,
                            float animationDuration = 1.5f,
                            float delay             = 0.01f,
                            float nextPulseAfter    = 0f,
                            float initialPulseScale = 0,
                            float numberOfPulses    = float.PositiveInfinity)
        {
            ContentsScale = UIScreen.MainScreen.Scale;
            Opacity       = 0;
            Position      = position;
            Bounds        = new CGRect(0, 0, radius * 2, radius * 2);
            CornerRadius  = radius;

            var animationGroup = new CAAnimationGroup
            {
                Duration       = animationDuration + nextPulseAfter,
                BeginTime      = delay,
                RepeatCount    = numberOfPulses,
                TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Default),
                Animations     = new CAAnimation[]
                {
                    CreateScaleAnimation(animationDuration, initialPulseScale),
                    CreateOpacityAnimation(animationDuration)
                }
            };

            AddAnimation(animationGroup, "pulse");
        }
Пример #21
0
			public override CAAnimation AnimationForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
			{
				double duration = 0;
				List<CAAnimation> animations = new List<CAAnimation>();
				for (int i = 0; i<(int)state.Points.Count; i++) {
					string pointKeyPath = state.AnimationKeyPathForPointAtIndex ((uint)i);
	
					string keyPath = string.Format("{0}.distanceFromCenter", pointKeyPath);
					CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
					a.Values = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) };
					a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) };
					a.Duration = 0.3 * (i+1.1);
					animations.Add(a);
	
					keyPath = string.Format("{0}.opacity", pointKeyPath);
					a = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
					a.Values = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) };
					a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) };
					a.Duration = 0.3 * (i+1.1);
					animations.Add(a);
	
					duration = a.Duration;
				}
				CAAnimationGroup g = new CAAnimationGroup();
				g.Duration = duration;
				g.Animations = animations.ToArray();
				return g;
			}
Пример #22
0
 public PulseAnimationView()
 {
     _animationGroup = CreateAnimation();
     Layer.AddAnimation(_animationGroup, "pulse");
     NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.WillEnterForegroundNotification, AnimationWillEnterForeground);
     NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.DidEnterBackgroundNotification, AnimationDidEnterBackground);
 }
Пример #23
0
 public BaseViewAnimator()
 {
     AnimatorAgent = CAAnimationGroup.CreateAnimation();
     AnimatorAgent.AnimationStarted += (sender, e) => { };
     AnimatorAgent.AnimationStopped += (sender, e) =>
     {
         tcs?.SetResult(true);
     };
 }
Пример #24
0
        async Task animateView(UIView view)
        {
            var size   = view.Frame.Size;
            var grow   = new SizeF(size.Width * 1.7f, size.Height * 1.7f);
            var shrink = new SizeF(size.Width * .4f, size.Height * .4f);
            TaskCompletionSource <bool> tcs = new TaskCompletionSource <bool> ();
            //Set the animation path
            var pathAnimation = CAKeyFrameAnimation.GetFromKeyPath("position");

            pathAnimation.CalculationMode     = CAAnimation.AnimationPaced;
            pathAnimation.FillMode            = CAFillMode.Forwards;
            pathAnimation.RemovedOnCompletion = false;
            pathAnimation.Duration            = .5;

            UIBezierPath path = new UIBezierPath();

            path.MoveTo(view.Center);
            path.AddQuadCurveToPoint(new PointF(290, 34), new PointF(view.Center.X, View.Center.Y));
            pathAnimation.Path = path.CGPath;

            //Set size change
            var growAnimation = CABasicAnimation.FromKeyPath("bounds.size");

            growAnimation.To                  = NSValue.FromSizeF(grow);
            growAnimation.FillMode            = CAFillMode.Forwards;
            growAnimation.Duration            = .1;
            growAnimation.RemovedOnCompletion = false;



            var shrinkAnimation = CABasicAnimation.FromKeyPath("bounds.size");

            shrinkAnimation.To                  = NSValue.FromSizeF(shrink);
            shrinkAnimation.FillMode            = CAFillMode.Forwards;
            shrinkAnimation.Duration            = .4;
            shrinkAnimation.RemovedOnCompletion = false;
            shrinkAnimation.BeginTime           = .1;


            CAAnimationGroup animations = new CAAnimationGroup();

            animations.FillMode            = CAFillMode.Forwards;
            animations.RemovedOnCompletion = false;
            animations.Animations          = new CAAnimation[] {
                pathAnimation,
                growAnimation,
                shrinkAnimation,
            };
            animations.Duration          = .5;
            animations.AnimationStopped += (sender, e) => {
                tcs.TrySetResult(true);
            };
            view.Layer.AddAnimation(animations, "movetocart");
            NSTimer.CreateScheduledTimer(.5, () => view.RemoveFromSuperview());
            await tcs.Task;
        }
Пример #25
0
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double             duration   = 0;
                List <CAAnimation> animations = new List <CAAnimation> ();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i);

                    if (Grow)
                    {
                        string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.x", series.Index, i);

                        CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
                        animation.Duration       = 0.1 * (i + 0.2);
                        animation.From           = new NSNumber(0);
                        animation.To             = new NSNumber(point.X);
                        animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                        animations.Add(animation);

                        duration = animation.Duration;
                    }
                    else
                    {
                        string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
                        nfloat oldY    = rect.Height;

                        if (i > 0)
                        {
                            CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                            animation.Duration       = 0.1 * (i + 1);
                            animation.Values         = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) };
                            animation.KeyTimes       = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) };
                            animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                            animations.Add(animation);

                            duration = animation.Duration;
                        }
                        else
                        {
                            CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
                            animation.From     = new NSNumber(oldY);
                            animation.To       = new NSNumber(point.Y);
                            animation.Duration = 0.1f;
                            animations.Add(animation);
                        }
                    }
                }

                CAAnimationGroup group = new CAAnimationGroup();

                group.Duration   = duration;
                group.Animations = animations.ToArray();

                return(group);
            }
Пример #26
0
        private CAAnimationGroup GroupAnimation(RectangleF frame)
        {
            CAAnimationGroup animationGroup = CAAnimationGroup.CreateAnimation();

            animationGroup.Animations = new CAAnimation[] { frameAnimation(frame),
                                                            rotationAnimation() };
            animationGroup.Duration     = 1;
            animationGroup.AutoReverses = true;
            return(animationGroup);
        }
Пример #27
0
        private void ExtractAnimation(SCNSceneSource sceneSource)
        {
            // In this scene objects are animated separately using long animations
            // playing 3 successive animations. We will group these long animations
            // and then split the group in 3 different animation groups.
            // We could also have used three DAEs (one per animation).

            var animationIDs = sceneSource.GetIdentifiersOfEntries(new Class("CAAnimation"));

            var animationCount = animationIDs.Length;
            var longAnimations = new CAAnimation [animationCount];

            var maxDuration = 0.0;

            for (var index = 0; index < animationCount; index++)
            {
                var animation = (CAAnimation)sceneSource.GetEntryWithIdentifier(animationIDs [index].ToString(), new Class("CAAnimation"));
                if (animation != null)
                {
                    maxDuration            = Math.Max(maxDuration, animation.Duration);
                    longAnimations [index] = animation;
                }
            }

            var longAnimationsGroup = new CAAnimationGroup();

            longAnimationsGroup.Animations = longAnimations;
            longAnimationsGroup.Duration   = maxDuration;

            var idleAnimationGroup = (CAAnimationGroup)longAnimationsGroup.Copy();

            idleAnimationGroup.TimeOffset   = 6.45833333333333f;
            IdleAnimationGroup              = CAAnimationGroup.CreateAnimation();
            IdleAnimationGroup.Animations   = new CAAnimation[] { idleAnimationGroup };
            IdleAnimationGroup.Duration     = 24.71f - 6.45833333333333f;
            IdleAnimationGroup.RepeatCount  = float.MaxValue;
            IdleAnimationGroup.AutoReverses = true;

            var animationGroup1 = (CAAnimationGroup)longAnimationsGroup.Copy();

            AnimationGroup1                 = CAAnimationGroup.CreateAnimation();
            AnimationGroup1.Animations      = new CAAnimation[] { animationGroup1 };
            AnimationGroup1.Duration        = 1.4f;
            AnimationGroup1.FadeInDuration  = 0.1f;
            AnimationGroup1.FadeOutDuration = 0.5f;

            var animationGroup2 = (CAAnimationGroup)longAnimationsGroup.Copy();

            animationGroup2.TimeOffset      = 3.666666666666667f;
            AnimationGroup2                 = CAAnimationGroup.CreateAnimation();
            AnimationGroup2.Animations      = new CAAnimation[] { animationGroup2 };
            AnimationGroup2.Duration        = 6.416666666666667f - 3.666666666666667f;
            AnimationGroup2.FadeInDuration  = 0.1f;
            AnimationGroup2.FadeOutDuration = 0.5f;
        }
        /// <summary>
        /// Shows the complete screen.
        /// </summary>
        /// <param name="message">Message to display</param>
        /// <param name="wasSuccessful">If set to <c>true</c> was process successful.</param>
        public void ShowCompleteScreen(string message, bool wasSuccessful)
        {
            var image = (wasSuccessful) ? UIImage.FromBundle("CallbackSuccess") : UIImage.FromBundle("CallbackWrong");

            CallbackIcon.Image   = image;
            CallbackMessage.Text = message;

            UIView.AnimateNotify(0.3f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackMessage.Alpha = 1.0f; }, (finished) => {});
            UIView.AnimateNotify(0.3f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackIcon.Alpha = 1.0f; }, (finished) => {});

            var ButtonScaleKeepCABasicAnimation = CABasicAnimation.FromKeyPath(@"transform.scale");

            ButtonScaleKeepCABasicAnimation.Duration            = 2.0f;
            ButtonScaleKeepCABasicAnimation.AutoReverses        = false;
            ButtonScaleKeepCABasicAnimation.From                = NSNumber.FromNFloat(FullPara);
            ButtonScaleKeepCABasicAnimation.To                  = NSNumber.FromNFloat(FullPara);
            ButtonScaleKeepCABasicAnimation.FillMode            = CAFillMode.Forwards;
            ButtonScaleKeepCABasicAnimation.RemovedOnCompletion = false;
            ButtonScaleKeepCABasicAnimation.BeginTime           = 0.0f;

            var ButtonScaleSmallCABasicAnimation = CABasicAnimation.FromKeyPath(@"transform.scale");

            ButtonScaleSmallCABasicAnimation.Duration            = 0.2f;
            ButtonScaleSmallCABasicAnimation.AutoReverses        = false;
            ButtonScaleSmallCABasicAnimation.From                = NSNumber.FromNFloat(FullPara);
            ButtonScaleSmallCABasicAnimation.To                  = NSNumber.FromDouble(SmallPara);
            ButtonScaleSmallCABasicAnimation.FillMode            = CAFillMode.Forwards;
            ButtonScaleSmallCABasicAnimation.RemovedOnCompletion = false;
            ButtonScaleSmallCABasicAnimation.BeginTime           = 2.0f;

            SmallButton.Layer.AddAnimation(ButtonScaleSmallCABasicAnimation, @"ButtonScaleAnimation");

            var animGroup = CAAnimationGroup.CreateAnimation();

            animGroup.Animations          = new CAAnimation[] { ButtonScaleKeepCABasicAnimation, ButtonScaleSmallCABasicAnimation };
            animGroup.Duration            = 2.2f;
            animGroup.RemovedOnCompletion = false;
            animGroup.AutoReverses        = false;
            animGroup.FillMode            = CAFillMode.Forwards;


            CATransaction.Begin();

            CATransaction.CompletionBlock = () => {
                UIView.AnimateNotify(0.1f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackIcon.Alpha = 0.0f; }, (finished) => {});
                UIView.AnimateNotify(0.1f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackMessage.Alpha = 0.0f; }, (finished) => {});

                SmallButton.SetImage(IconImage, UIControlState.Normal);

                UIView.AnimateNotify(0.1f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { SmallButton.ImageView.Alpha = 1.0f; }, (finished) => {});
            };

            SmallButton.Layer.AddAnimation(animGroup, @"ButtonScaleAnimation");
            CATransaction.Commit();
        }
Пример #29
0
        public static CAAnimationGroup AnimationGroup(CAAnimation[] animations, double?duration = 0.5)
        {
            var group = new CAAnimationGroup();

            group.FillMode            = Convert.MaterialAnimationFillModeToValue(MaterialAnimationFillMode.Forwards);
            group.RemovedOnCompletion = false;
            group.Animations          = animations;
            group.Duration            = duration.Value;
            group.TimingFunction      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            return(group);
        }
Пример #30
0
        public void LayersToEdge(AnimationPacket _animatePacket)
        {
            CABasicAnimation _aniLayersToEdge;
            CABasicAnimation _aniLayersToEdgeFade;
            CAAnimationGroup _animationGroup = new CAAnimationGroup();

            AnimateDelegate _myAnimateDelegate = new AnimateDelegate();

            var     pt = _animatePacket.Layer1.Position;
            CGPoint x;

            if (_animatePacket.DirectionY == G__NumberDisplayPositionY.Top)
            {
                _animatePacket.Layer1.Position = _animatePacket.ToPosition1;
                _animatePacket.Layer2.Position = _animatePacket.ToPosition1;
                x = _animatePacket.ToPosition1;
            }
            else
            {
                _animatePacket.Layer1.Position = _animatePacket.ToPosition2;
                _animatePacket.Layer2.Position = _animatePacket.ToPosition2;
                x = _animatePacket.ToPosition2;
            }

            _aniLayersToEdge = CABasicAnimation.FromKeyPath("position");
            // ** These two set if the presentation layer will stay set in the final animated position
            _aniLayersToEdge.RemovedOnCompletion = true;
            _aniLayersToEdge.FillMode            = CAFillMode.Forwards;
            _aniLayersToEdge.TimingFunction      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
            _aniLayersToEdge.Delegate            = _myAnimateDelegate;
            _aniLayersToEdge.From = NSValue.FromCGPoint(pt);
            _aniLayersToEdge.To   = NSValue.FromCGPoint(x);
            //_aniLayersToEdge.Duration = 1.0f;
            //_aniLayersToEdge.RepeatCount = 1.0f;

            // ** Fade Animation
            _aniLayersToEdgeFade = CABasicAnimation.FromKeyPath("opacity");
            // ** These two set if the presentation layer will stay set in the final animated position
            _aniLayersToEdgeFade.RemovedOnCompletion = true;
            _aniLayersToEdgeFade.FillMode            = CAFillMode.Forwards;
            _aniLayersToEdgeFade.TimingFunction      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
            _aniLayersToEdgeFade.Delegate            = _myAnimateDelegate;
            _aniLayersToEdgeFade.From = NSNumber.FromFloat(1.0f);
            _aniLayersToEdgeFade.To   = NSNumber.FromFloat(0.0f);
            //_aniLayersToCenter.Duration = 1.0f;

            var y = NWAnimations.SpinLogo();

            _animationGroup.Duration   = 0.5f;
            _animationGroup.Animations = new CAAnimation[] { _aniLayersToEdgeFade, _aniLayersToEdge, y };
            _animatePacket.Layer1.AddAnimation(_animationGroup, null);
            _animatePacket.Layer2.AddAnimation(_animationGroup, null);
        }
        /// <summary>
        /// Show blue circle which changing radius from button to View bounds
        /// </summary>
        private void ShowConnectedStatusAtimation()
        {
            if (__MainViewModel.ConnectionState != ServiceState.Connected)
            {
                return;
            }

            NSColor startCircleColor = Colors.ConnectiongAnimationCircleColor;
            NSColor endCircleColor   = NSColor.Clear;

            __animationLayer.FillColor = NSColor.Clear.CGColor;

            var frame       = GuiConnectButtonImage.Frame;
            var startCircle =
                CGPath.EllipseFromRect(
                    new CGRect(frame.X + 10,
                               frame.Y + 10,
                               frame.Width - 20,
                               frame.Height - 20)
                    );

            nfloat radiusOffset = View.Frame.Height / 2f - frame.Height / 2f;

            var endCircle = CGPath.EllipseFromRect(new CGRect(
                                                       frame.X - radiusOffset,
                                                       frame.Y - radiusOffset,
                                                       frame.Height + radiusOffset * 2,
                                                       frame.Width + radiusOffset * 2
                                                       ));

            CABasicAnimation circleRadiusAnimation = CABasicAnimation.FromKeyPath("path");

            circleRadiusAnimation.From = FromObject(startCircle);
            circleRadiusAnimation.To   = FromObject(endCircle);

            CABasicAnimation strokeColorAnimation = CABasicAnimation.FromKeyPath("strokeColor");

            strokeColorAnimation.From = FromObject(startCircleColor.CGColor);
            strokeColorAnimation.To   = FromObject(endCircleColor.CGColor);

            CABasicAnimation lineWidthAnimation = CABasicAnimation.FromKeyPath("lineWidth");

            lineWidthAnimation.From = FromObject(7);
            lineWidthAnimation.To   = FromObject(1);

            CAAnimationGroup animationGroup = new CAAnimationGroup();

            animationGroup.Animations  = new CAAnimation[] { circleRadiusAnimation, strokeColorAnimation, lineWidthAnimation };
            animationGroup.Duration    = 2.25f;
            animationGroup.RepeatCount = float.PositiveInfinity;

            __animationLayer.AddAnimation(animationGroup, null);
        }
Пример #32
0
        private void Close()
        {
            if (flag == -1)
            {
                this.isAnimating = false;
                this.timer.Invalidate();
                this.timer = null;
                return;
            }

            int      tag  = 1000 + flag;
            MenuItem item = this.GetByTag(tag);

            item.Selected -= this.ItemSelected;

            var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z");

            rotateAnimation.Values   = new NSNumber[] { 0f, this.CloseRotation, 0f };
            rotateAnimation.Duration = 0.5f;
            rotateAnimation.KeyTimes = new NSNumber[] { 0f, 0.4f, 0.5f };

            var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position");

            positionAnimation.Duration = 0.5f;

            var path = new CGPath();

            path.MoveToPoint(item.EndPoint.X, item.EndPoint.Y);
            path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y);
            path.AddLineToPoint(item.StartPoint.X, item.StartPoint.Y);
            positionAnimation.Path = path;

            var alphaAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("opacity");

            alphaAnimation.Values   = new NSNumber[] { 1f, 1f, 0f };
            alphaAnimation.Duration = 0.5f;
            alphaAnimation.KeyTimes = new NSNumber[] { 0f, 0.8f, 1f };

            var animationGroup = new CAAnimationGroup();

            animationGroup.Animations     = new[] { positionAnimation, rotateAnimation, alphaAnimation };
            animationGroup.Duration       = 0.5f;
            animationGroup.FillMode       = CAFillMode.Forwards;
            animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn);

            item.Layer.AddAnimation(animationGroup, "Close");

            item.Alpha  = 0f;
            item.Center = item.StartPoint;
            flag--;
        }
Пример #33
0
        public CAAnimationGroup Commit()
        {
            CAAnimationGroup animationGroup = new CAAnimationGroup();

            animationGroup.RemovedOnCompletion = false;
            animationGroup.FillMode            = CAFillMode.Forwards;
            animationGroup.Duration            = TotalDurationSeconds + .1;
            animationGroup.Animations          = this.Animations.ToArray();

            TargetItem.AddAnimation(animationGroup, this.AnimationKey);

            CATransaction.Commit();

            return(animationGroup);
        }
    void RebuildLayers()
    {
        if (_outerDotLayer != null)
        {
            outerDotLayer.RemoveFromSuperLayer();
            _outerDotLayer = null;
        }

        if (_colorDotLayer != null)
        {
            colorDotLayer.RemoveFromSuperLayer();
            _colorDotLayer = null;
        }

        if (_colorHaloLayer != null)
        {
            colorHaloLayer.RemoveFromSuperLayer();
            _colorHaloLayer = null;
        }

        _pulseAnimationGroup = null;

        if (this.Image != null)
        {
            _imageView.RemoveFromSuperview();
            _imageView = null;
        }

        if (_headingImageView != null)
        {
            _headingImageView.RemoveFromSuperview();
            _headingImageView = null;
        }

        if (this.HeadingImage != null)
            this.AddSubview(this.headingImageView);

        this.Layer.AddSublayer(this.colorHaloLayer);

        if (this.Image == null)
        {
            this.Layer.AddSublayer(this.outerDotLayer);
            this.Layer.AddSublayer(this.colorDotLayer);
        }

        if (this.Image != null)
            this.AddSubview(this.imageView);

        if (this.HeadingImage != null)
            this.AddSubview(this.headingImageView);
    }
		void floatLabelToTop(bool changeColor = true) {
			CATransaction.Begin ();
			CATransaction.CompletionBlock = () => {
				if(changeColor)
					this.label.TextColor = this.kDefaultActiveColor;
			};

			var anim2 = CABasicAnimation.FromKeyPath ("transform");
			var fromTransform = CATransform3D.MakeScale (1, 1, 1);
			var toTransform = CATransform3D.MakeScale (0.5f, 0.5f, 1);
			toTransform = toTransform.Translate (-this.label.Frame.Width / 2, -this.label.Frame.Height, 0);
			anim2.From = NSValue.FromCATransform3D (fromTransform);
			anim2.To = NSValue.FromCATransform3D (toTransform);
			anim2.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut);
			var animGroup = new CAAnimationGroup ();
			animGroup.Animations = new CAAnimation[]{ anim2 };
			animGroup.Duration = 0.3;
			animGroup.FillMode = CAFillMode.Forwards;
			animGroup.RemovedOnCompletion = false;
			this.label.Layer.AddAnimation (animGroup, "_floatingLabel");
			this.ClipsToBounds = false;
			CATransaction.Commit ();
		}
		void animateLabelBack() {
			CATransaction.Begin ();
			CATransaction.CompletionBlock = () =>{
				this.label.TextColor = this.kDefaultInactiveColor;
			};

			var anim2 = CABasicAnimation.FromKeyPath ("transform");
			var fromTransform = CATransform3D.MakeScale (0.5f, 0.5f, 1);
			fromTransform = fromTransform.Translate (-this.label.Frame.Width / 2, -this.label.Frame.Height, 0);
			var toTransform = CATransform3D.MakeScale (1, 1, 1);
			anim2.From = NSValue.FromCATransform3D (fromTransform);
			anim2.To = NSValue.FromCATransform3D (toTransform);
			anim2.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut);
			var animGroup = new CAAnimationGroup ();
			animGroup.Animations = new CAAnimation[] {
				anim2
			};
			animGroup.Duration = 0.3;
			animGroup.FillMode = CAFillMode.Forwards;
			animGroup.RemovedOnCompletion = false;

			this.label.Layer.AddAnimation (animGroup, "_animateLabelBack");
			CATransaction.Commit ();
		}
Пример #37
0
		private void ExtractAnimation (SCNSceneSource sceneSource)
		{
			// In this scene objects are animated separately using long animations
			// playing 3 successive animations. We will group these long animations
			// and then split the group in 3 different animation groups.
			// We could also have used three DAEs (one per animation).

			var animationIDs = sceneSource.GetIdentifiersOfEntries (new Class ("CAAnimation"));

			var animationCount = animationIDs.Length;
			var longAnimations = new CAAnimation [animationCount];

			var maxDuration = 0.0;

			for (var index = 0; index < animationCount; index++) {
				var animation = (CAAnimation)sceneSource.GetEntryWithIdentifier (animationIDs [index].ToString (), new Class ("CAAnimation"));
				if (animation != null) {
					maxDuration = Math.Max (maxDuration, animation.Duration);
					longAnimations [index] = animation;
				}
			}

			var longAnimationsGroup = new CAAnimationGroup ();
			longAnimationsGroup.Animations = longAnimations;
			longAnimationsGroup.Duration = maxDuration;

			var idleAnimationGroup = (CAAnimationGroup)longAnimationsGroup.Copy ();
			idleAnimationGroup.TimeOffset = 6.45833333333333f;
			IdleAnimationGroup = CAAnimationGroup.CreateAnimation ();
			IdleAnimationGroup.Animations = new CAAnimation[] { idleAnimationGroup };
			IdleAnimationGroup.Duration = 24.71f - 6.45833333333333f;
			IdleAnimationGroup.RepeatCount = float.MaxValue;
			IdleAnimationGroup.AutoReverses = true;

			var animationGroup1 = (CAAnimationGroup)longAnimationsGroup.Copy ();
			AnimationGroup1 = CAAnimationGroup.CreateAnimation ();
			AnimationGroup1.Animations = new CAAnimation[] { animationGroup1 };
			AnimationGroup1.Duration = 1.4f;
			animationGroup1.FadeInDuration = 0.1f;
			animationGroup1.FadeOutDuration = 0.5f;

			var animationGroup2 = (CAAnimationGroup)longAnimationsGroup.Copy ();
			animationGroup2.TimeOffset = 3.666666666666667f;
			AnimationGroup2 = CAAnimationGroup.CreateAnimation ();
			AnimationGroup2.Animations = new CAAnimation[] { animationGroup2 };
			AnimationGroup2.Duration = 6.416666666666667f - 3.666666666666667f;
			animationGroup2.FadeInDuration = 0.1f;
			animationGroup2.FadeOutDuration = 0.5f;
		}
		async Task animateView(UIView view)
		{
			var size = view.Frame.Size;
			var grow = new SizeF((float)size.Width * 1.7f, (float)size.Height * 1.7f);
			var shrink = new SizeF((float)size.Width * .4f, (float)size.Height * .4f);
			TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool> ();
			//Set the animation path
			var pathAnimation = CAKeyFrameAnimation.GetFromKeyPath("position");	
			pathAnimation.CalculationMode = CAAnimation.AnimationPaced;
			pathAnimation.FillMode = CAFillMode.Forwards;
			pathAnimation.RemovedOnCompletion = false;
			pathAnimation.Duration = .5;

			UIBezierPath path = new UIBezierPath ();
			path.MoveTo (view.Center);
			path.AddQuadCurveToPoint (new CGPoint (290, 34), new CGPoint(view.Center.X,View.Center.Y));
			pathAnimation.Path = path.CGPath;

			//Set size change
			var growAnimation = CABasicAnimation.FromKeyPath("bounds.size");
			growAnimation.To = NSValue.FromSizeF (grow);
			growAnimation.FillMode = CAFillMode.Forwards;
			growAnimation.Duration = .1;
			growAnimation.RemovedOnCompletion = false;



			var shrinkAnimation = CABasicAnimation.FromKeyPath("bounds.size");
			shrinkAnimation.To = NSValue.FromSizeF (shrink);
			shrinkAnimation.FillMode = CAFillMode.Forwards;
			shrinkAnimation.Duration = .4;
			shrinkAnimation.RemovedOnCompletion = false;
			shrinkAnimation.BeginTime = .1;


			CAAnimationGroup animations = new CAAnimationGroup ();
			animations.FillMode = CAFillMode.Forwards;
			animations.RemovedOnCompletion = false;
			animations.Animations = new CAAnimation[] {
				pathAnimation,
				growAnimation,
				shrinkAnimation,
			};
			animations.Duration = .5;
			animations.AnimationStopped += (sender, e) => {
				tcs.TrySetResult(true);
			};
			view.Layer.AddAnimation (animations,"movetocart");
			NSTimer.CreateScheduledTimer (.5, (timer) => view.RemoveFromSuperview ());
			await tcs.Task;

		}
Пример #39
0
        private void Expand()
        {
            if (flag == this.MenuItems.Count) 
            {
                this.isAnimating = false;
                this.timer.Invalidate();
                this.timer = null;
                return;
            }

            int tag = 1000 + this.flag;

            MenuItem item = this.GetByTag(tag);

            item.Selected -= this.ItemSelected;
            item.Selected += this.ItemSelected;

            var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z");
            rotateAnimation.Values = new NSNumber[] {this.ExpandRotation, 0.0f};
            rotateAnimation.Duration = 0.5f;
            rotateAnimation.KeyTimes = new NSNumber[] {0.3f, 0.4f}; 

            var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position");
            positionAnimation.Duration = 0.5f;

            var path = new CGPath();
            path.MoveToPoint(item.StartPoint.X, item.StartPoint.Y);
            path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y);
            path.AddLineToPoint(item.NearPoint.X, item.NearPoint.Y);
            path.AddLineToPoint(item.EndPoint.X, item.EndPoint.Y);
            positionAnimation.Path = path;

            var animationGroup = new CAAnimationGroup();
            animationGroup.Animations = new[] {positionAnimation, rotateAnimation};
            animationGroup.Duration = 0.5f;
            animationGroup.FillMode = CAFillMode.Forwards;
            animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn);

            item.Layer.AddAnimation(animationGroup, "Expand");

            item.Alpha = 1f;
            item.Center = item.EndPoint;
            this.flag++;
        }
Пример #40
0
        private void Close()
        {
            if (flag == -1) 
            {
                this.isAnimating = false;
                this.timer.Invalidate();
                this.timer = null;
                return;
            }

            int tag = 1000 + flag;
            MenuItem item = this.GetByTag(tag);

            item.Selected -= this.ItemSelected;

            var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z");
            rotateAnimation.Values = new NSNumber[] {0f, this.CloseRotation, 0f};
            rotateAnimation.Duration = 0.5f;
            rotateAnimation.KeyTimes = new NSNumber[] {0f, 0.4f, 0.5f}; 

            var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position");
            positionAnimation.Duration = 0.5f;

            var path = new CGPath();
            path.MoveToPoint(item.EndPoint.X, item.EndPoint.Y);
            path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y);
            path.AddLineToPoint(item.StartPoint.X, item.StartPoint.Y);
            positionAnimation.Path = path;

            var alphaAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("opacity");
            alphaAnimation.Values = new NSNumber[] {1f, 1f, 0f};
            alphaAnimation.Duration = 0.5f;
            alphaAnimation.KeyTimes = new NSNumber[] {0f, 0.8f, 1f};

            var animationGroup = new CAAnimationGroup();
            animationGroup.Animations = new[] { positionAnimation, rotateAnimation, alphaAnimation };
            animationGroup.Duration = 0.5f;
            animationGroup.FillMode = CAFillMode.Forwards;
            animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn);

            item.Layer.AddAnimation(animationGroup, "Close");

            item.Alpha = 0f;
            item.Center = item.StartPoint;
            flag--;
        }
Пример #41
0
        private CAAnimationGroup ShrinkAnimationAtPoint(PointF p)
        {
            var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position");
            positionAnimation.Values = new NSObject[] { NSValue.FromPointF(p)};
            positionAnimation.KeyTimes = new NSNumber[] {0.3f}; 

            var scaleAnimation = CABasicAnimation.FromKeyPath("transform");
            scaleAnimation.To = NSValue.FromCATransform3D(CATransform3D.MakeScale(0.01f, 0.01f, 1f));

            var opacityAnimation = CABasicAnimation.FromKeyPath("opacity");
            opacityAnimation.To = NSNumber.FromFloat(0);

            var animationGroup = new CAAnimationGroup();
            animationGroup.Animations = new CAAnimation[] { positionAnimation, scaleAnimation, opacityAnimation };
            animationGroup.Duration = 0.3f;
            animationGroup.FillMode = CAFillMode.Forwards;

            return animationGroup;
        }
Пример #42
0
			public override CAAnimation AnimationForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
			{
				double duration = 0;
				List<CAAnimation> animations = new List<CAAnimation> ();
			
				for (int i = 0; i<(int)state.Points.Count; i++) 
				{			
					TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex ((uint)i);

					if (Grow) 
					{
						string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.x", series.Index, i);

						CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
						animation.Duration = 0.1 *(i + 0.2);
						animation.From = new NSNumber(0);
						animation.To = new NSNumber(point.X);
						animation.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut);
						animations.Add(animation);
			
						duration = animation.Duration;
					}
					else 
					{
						string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
						nfloat oldY = rect.Height;
	
						if (i > 0) 
						{
							CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
							animation.Duration = 0.1* (i + 1);
							animation.Values = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) };
							animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) };
							animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
							animations.Add (animation);
	
							duration = animation.Duration;
						}
						else 
						{
							CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
							animation.From = new NSNumber(oldY);
							animation.To = new NSNumber(point.Y);
							animation.Duration = 0.1f;
							animations.Add(animation);
						}
					}
				}
			
				CAAnimationGroup group = new CAAnimationGroup ();
				group.Duration = duration;
				group.Animations = animations.ToArray();
			
				return group;
			}