Beispiel #1
0
        private async void OnRequestOnboardingPage(OnboardingViewModel oVm)
        {
            _viewModel = oVm;
            AnimationInitUI();
            BindEvents();
            
            var mainAnimatorSet = new AnimatorSet();

            var appNameLayoutFinalTopSpace = TypedValue.ApplyDimension(ComplexUnitType.Dip, 55.0f, Application.Context.Resources.DisplayMetrics);

            var decelerateInterpolator = new DecelerateInterpolator(1.0f);

            var appNameLayoutAnimator = new ValueAnimator();
            appNameLayoutAnimator.SetDuration(750);
            appNameLayoutAnimator.SetInterpolator(decelerateInterpolator);
            appNameLayoutAnimator.SetFloatValues(_appNameLayout.GetY(), appNameLayoutFinalTopSpace);
            appNameLayoutAnimator.Update += (o, args) => { _appNameLayout.SetY((float)args.Animation.AnimatedValue); };

            var whatAccountsAnimator = new ValueAnimator();
            whatAccountsAnimator.SetDuration(750);
            whatAccountsAnimator.SetInterpolator(decelerateInterpolator);
            whatAccountsAnimator.SetFloatValues(0.0f, 1.0f);
            whatAccountsAnimator.Update += (o, args) => { _whatAccounts.Alpha = (float)args.Animation.AnimatedValue; };

            var appNameAnimationSet = new AnimatorSet();
            appNameAnimationSet.PlayTogether(appNameLayoutAnimator, whatAccountsAnimator);


            var socialButtonsAnimatorSet = new AnimatorSet();

            var overshootInterpolator = new OvershootInterpolator(3f);

            var facebookButtonAnimator = new ValueAnimator();
            facebookButtonAnimator.SetDuration(500);
            facebookButtonAnimator.SetInterpolator(overshootInterpolator);
            facebookButtonAnimator.SetFloatValues(_facebookButton.GetY() + _facebookButton.Height, _facebookButton.GetY());
            facebookButtonAnimator.Update += (o, args) =>
                {
                    _facebookButton.SetY((float)args.Animation.AnimatedValue);
                    _facebookButton.Alpha = args.Animation.AnimatedFraction;
                };

            var twitterButtonAnimator = new ValueAnimator();
            twitterButtonAnimator.SetDuration(500);
            twitterButtonAnimator.SetInterpolator(overshootInterpolator);
            twitterButtonAnimator.SetFloatValues(_facebookButton.GetY() + _facebookButton.Height, _facebookButton.GetY());
            twitterButtonAnimator.Update += (o, args) =>
                {
                    _twitterButton.SetY((float)args.Animation.AnimatedValue);
                    _twitterButton.Alpha = args.Animation.AnimatedFraction;
                };
            socialButtonsAnimatorSet.PlaySequentially(facebookButtonAnimator, twitterButtonAnimator);
            socialButtonsAnimatorSet.StartDelay = 500;

            var letsGoButtonAnimator = new ValueAnimator();
            letsGoButtonAnimator.SetDuration(500);
            letsGoButtonAnimator.SetInterpolator(decelerateInterpolator);
            letsGoButtonAnimator.SetFloatValues(0.0f, 1.0f);
            letsGoButtonAnimator.Update += (sender, args) =>
                {
                    _goButton.Alpha = (float)args.Animation.AnimatedValue;
                };

            mainAnimatorSet.PlaySequentially(appNameAnimationSet, socialButtonsAnimatorSet, letsGoButtonAnimator);

            await _viewModel.DidLoad();

            await Task.Delay(2000);

            mainAnimatorSet.Start();
            await _viewModel.DidAppear();
        }
Beispiel #2
0
        public void SetOpened(bool opened, bool animated = true)
        {
            this.opened = opened;
            if (!animated)
                SetNewOffset (opened ? MaxOffset : 0);
            else {
                if (animator != null) {
                    animator.Cancel ();
                    animator = null;
                }

                animator = ValueAnimator.OfInt (contentOffsetX, opened ? MaxOffset : 0);
                animator.SetInterpolator (interpolator);
                animator.SetDuration (Context.Resources.GetInteger (Android.Resource.Integer.ConfigMediumAnimTime));
                animator.Update += (sender, e) => SetNewOffset ((int)e.Animation.AnimatedValue);
                animator.AnimationEnd += (sender, e) => { animator.RemoveAllListeners (); animator = null; };
                animator.Start ();
            }
        }
        void Initialize()
        {
            var display = Resources.DisplayMetrics;
            // Numbers and dots
            mainPaint = new Paint
            {
                AntiAlias = true,
                Color = Color.White,
                TextSize = TypedValue.ApplyDimension(ComplexUnitType.Sp, 12, display),
            };
            linePaint = new Paint
            {
                AntiAlias = true,
                Color = Color.Argb(0xaa, 0xff, 0xff, 0xff),
            };
            linePaint.SetStyle(Paint.Style.Stroke);
            ripple = Context.Resources.GetDrawable(Resource.Drawable.ripple_background);

            radius = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, BaseRadius, display);
            textMargin = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 10, display);

            heightVariants = new []
            {
                0,
                (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 16, display),
                -(int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 14, display),
                (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 9, display),
            };

            shiverOffsets = new []
            {
                (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 9, display),
                (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 3, display),
                -(int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 8, display),
                (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 4, display),
                -(int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 7, display),
                (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 6, display),
            };
            shiverAnimator = ObjectAnimator.OfFloat(this, "scaleX", 0, 1);
            shiverAnimator.SetInterpolator(new TriangleWave());
            shiverAnimator.SetDuration(8000);
            shiverAnimator.RepeatCount = ValueAnimator.Infinite;
            shiverAnimator.AnimationRepeat += (sender, e) => shiverIndex++;
        }