コード例 #1
0
        private Xamarin.Forms.Animation CreateFarwardAnimationForFourValues()
        {
            double v1 = 0, v2 = 0, v3 = 0, v4 = 0;


            var Parent = new Xamarin.Forms.Animation((d) => Target.GetType().GetProperty(PropertyName).SetValue(Target, new CornerRadius(v1, v2, v3, v4)), 0, 1, AnimationEasing);



            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                v1 = d;
            }, Convert.ToDouble(_structStartValues[0]), Convert.ToDouble(_structEndValues[0])));


            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                v2 = d;
            }, Convert.ToDouble(_structStartValues[1]), Convert.ToDouble(_structEndValues[1])));


            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                v3 = d;
            }, Convert.ToDouble(_structStartValues[2]), Convert.ToDouble(_structEndValues[2])));

            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                v4 = d;
            }, Convert.ToDouble(_structStartValues[3]), Convert.ToDouble(_structEndValues[3])));



            return(Parent);
        }
コード例 #2
0
        public override Xamarin.Forms.Animation CreateReverseAnimation()
        {
            double A = 0, R = 0, G = 0, B = 0;

            var Parent = new Xamarin.Forms.Animation((d) => Target.GetType().GetProperty(PropertyName).SetValue(Target, Xamarin.Forms.Color.FromRgba(R, G, B, A)), 0, 1, AnimationEasing);


            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                A = d;
            }, Xamarin.Forms.Color.FromHex(EndValue.ToString()).A, Xamarin.Forms.Color.FromHex(StartValue.ToString()).A));


            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                R = d;
            }, Xamarin.Forms.Color.FromHex(EndValue.ToString()).R, Xamarin.Forms.Color.FromHex(StartValue.ToString()).R));


            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                G = d;
            }, Xamarin.Forms.Color.FromHex(EndValue.ToString()).G, Xamarin.Forms.Color.FromHex(StartValue.ToString()).G));

            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                B = d;
            }, Xamarin.Forms.Color.FromHex(EndValue.ToString()).B, Xamarin.Forms.Color.FromHex(StartValue.ToString()).B));



            return(Parent);
        }
        public override Xamarin.Forms.Animation OnAnimate()
        {
            var animation = new Xamarin.Forms.Animation();

            for (var i = 1; i < _sortedKeyFrames.Count; i++)
            {
                var fromFrame = (KeyFrame <TValue>)_sortedKeyFrames[i - 1];
                var toFrame   = (KeyFrame <TValue>)_sortedKeyFrames[i];

                var toFrameEasing = toFrame.Easing != Easing.Linear
                    ? toFrame.Easing
                    : Easing;

                var frameAnimation = new Xamarin.Forms.Animation(x =>
                {
                    var value = Tweener.Tween(fromFrame.Value, toFrame.Value, x);
                    Target.SetValue(TargetProperty, value);
                },
                                                                 easing: toFrameEasing);

                var beginAt = (double)fromFrame.KeyTime / Duration;
                var endAt   = (double)toFrame.KeyTime / Duration;

                animation.Add(beginAt, endAt, frameAnimation);
            }

            return(animation);
        }
コード例 #4
0
        private Xamarin.Forms.Animation CreateReverseAnimationForTwoValues()
        {
            double v1 = 0, v2 = 0;

            var Parent = new Xamarin.Forms.Animation((d) => Target.GetType().GetProperty(PropertyName).SetValue(Target, new Thickness(v1, v2)), 0, 1, AnimationEasing);


            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                v1 = d;
            }, Convert.ToDouble(_structEndValues[0]), Convert.ToDouble(_structStartValues[0])));


            Parent.Add(0, 1, new Xamarin.Forms.Animation(d =>
            {
                v2 = d;
            }, Convert.ToDouble(_structEndValues[1]), Convert.ToDouble(_structStartValues[1])));



            return(Parent);
        }
コード例 #5
0
        public void PlayReverse()
        {
            uint Length = 0;
            var  Parent = new Xamarin.Forms.Animation();

            for (int i = PropertyAnimations.Count - 1; i >= 0; i--)
            {
                PropertyAnimations[i].Target = IsGlobal ? Target : PropertyAnimations[i].Target;
                Length += PropertyAnimations[i].Length;
                Parent.Add(0, 1, PropertyAnimations[i].CreateReverseAnimation());
            }

            Parent.Commit(Target, $"{nameof(ParallelAnimation)}", Rate, Length, AnimationEasing, GetFinishedAction());
        }
コード例 #6
0
        public void Play()
        {
            uint Length = 0;
            var  Parent = new Xamarin.Forms.Animation();

            foreach (var propertyAnimation in PropertyAnimations)
            {
                propertyAnimation.Target = IsGlobal ? Target : propertyAnimation.Target;
                Length += propertyAnimation.Length;
                Parent.Add(0, 1, propertyAnimation.CreateFarwardAnimation());
            }


            Parent.Commit(Target, $"{nameof(ParallelAnimation)}", Rate, Length, AnimationEasing, GetFinishedAction());
        }
コード例 #7
0
        private void OnButton3Clicked(object sender, EventArgs e)
        {
            Button button = (Button)sender;

            Xamarin.Forms.Animation parentAnimation = new Xamarin.Forms.Animation();

            Xamarin.Forms.Animation upAnimation = new Xamarin.Forms.Animation(v => button.Scale = v, 1, 5, Easing.SpringIn, () => Debug.WriteLine("up finished"));

            parentAnimation.Add(0, 0.5, upAnimation);

            Xamarin.Forms.Animation downAnimation = new Xamarin.Forms.Animation(v => button.Scale = v, 5, 1, Easing.SpringOut, () => Debug.WriteLine("down finished"));

            parentAnimation.Insert(0.5, 1, downAnimation);

            parentAnimation.Commit(this, "Animation3", 16, 5000, null, (v, c) => Debug.WriteLine("parent finished: {0} {1}", v, c));
        }
コード例 #8
0
        public override Xamarin.Forms.Animation OnAnimate()
        {
            var animation = new Xamarin.Forms.Animation();

            foreach (var anim in Animations)
            {
                var beginAt  = GetBeginAt(anim);
                var finishAt = GetFinishAt(anim);

                if (anim.Duration > 0)
                {
                    finishAt = Math.Min(finishAt, beginAt + (double)anim.Duration / Duration);
                    Debug.WriteLine($"FinishAt updated to {finishAt}");
                }
                animation.Add(beginAt, finishAt, anim.OnAnimate());
            }

            return(animation);
        }