public void SetupInitialAnimations(Action callback = null) { int delay = 10; var time = Resources.GetInteger(Android.Resource.Integer.ConfigMediumAnimTime); var delayIncr = (3 * time) / 4; var interpolator = new Android.Views.Animations.DecelerateInterpolator(); ViewPropertyAnimator circleAnim = null; foreach (var id in circleIds) { var circle = circlesLayout.FindViewById(id); circle.ScaleX = .3f; circle.ScaleY = .3f; circle.Alpha = 0; circleAnim = circle.Animate() .ScaleX(1) .ScaleY(1) .Alpha(1) .SetStartDelay(delay) .SetDuration(time) .SetInterpolator(interpolator); var last = id == circleIds.Last(); if (last && callback != null) { circleAnim.WithEndAction(new Run(callback)); } circleAnim.Start(); delay += delayIncr; } }
public void ShowNotification(string notification, string duration = null, string distance = null, int delay = 0) { notificationPanel.TranslationY = notificationPanel.Height + ((LinearLayout.LayoutParams)notificationPanel.LayoutParameters).BottomMargin; notificationPanel.TranslationX = 0; notificationPanel.ScaleX = .9f; notificationPanel.Visibility = ViewStates.Visible; lastTrip.Text = notification; if (duration == null || distance == null) { rideInfoPanel.Visibility = ViewStates.Invisible; lastTrip.TranslationY = TypedValue.ApplyDimension(ComplexUnitType.Dip, 8, Resources.DisplayMetrics); } else { rideInfoPanel.Visibility = ViewStates.Visible; rideInfoPanel.FindViewById <TextView> (Resource.Id.timeText).Text = duration; rideInfoPanel.FindViewById <TextView> (Resource.Id.distanceText).Text = distance; lastTrip.TranslationY = 0; } var time = Resources.GetInteger(Android.Resource.Integer.ConfigLongAnimTime); var decel = new Android.Views.Animations.DecelerateInterpolator(); notificationPanel.Animate().TranslationY(0).ScaleX(1).SetDuration(time).SetStartDelay(delay).SetInterpolator(decel).WithEndAction(new Run(() => { var accel = new Android.Views.Animations.AccelerateInterpolator(); notificationPanel.Animate() .TranslationX(-Resources.DisplayMetrics.WidthPixels) .SetDuration(time) .SetStartDelay(6000) .SetInterpolator(accel) .WithEndAction(new Run(() => notificationPanel.Visibility = ViewStates.Invisible)) .Start(); })).Start(); }
public override void RunPendingAnimations() { var interpolator = new Android.Views.Animations.DecelerateInterpolator (); foreach (var holder in pendingAnimations) { var view = holder.ItemView; view.Visibility = Android.Views.ViewStates.Visible; ViewCompat.SetTranslationY (view, view.Height - view.PaddingTop); ViewCompat.Animate (view) .TranslationY (0) .SetStartDelay (holder.LayoutPosition * 50 + 10) .SetDuration (300) .SetInterpolator (interpolator) .WithStartAction (new Run (() => { ongoingAnimations++; DispatchAddStarting (holder); })) .WithEndAction (new Run (() => { ongoingAnimations--; DispatchAddFinished (holder); DispatchEndAnimations (); })) .Start (); } pendingAnimations.Clear (); }
public void SetupInitialAnimations (Action callback = null) { int delay = 10; var time = Resources.GetInteger (Android.Resource.Integer.ConfigMediumAnimTime); var delayIncr = (3 * time) / 4; var interpolator = new Android.Views.Animations.DecelerateInterpolator (); ViewPropertyAnimator circleAnim = null; foreach (var id in circleIds) { var circle = circlesLayout.FindViewById (id); circle.ScaleX = .3f; circle.ScaleY = .3f; circle.Alpha = 0; circleAnim = circle.Animate () .ScaleX (1) .ScaleY (1) .Alpha (1) .SetStartDelay (delay) .SetDuration (time) .SetInterpolator (interpolator); var last = id == circleIds.Last (); if (last && callback != null) circleAnim.WithEndAction (new Run (callback)); circleAnim.Start (); delay += delayIncr; } }
public void ShowNotification (string notification, string duration = null, string distance = null, int delay = 0) { notificationPanel.TranslationY = notificationPanel.Height + ((LinearLayout.LayoutParams)notificationPanel.LayoutParameters).BottomMargin; notificationPanel.TranslationX = 0; notificationPanel.ScaleX = .9f; notificationPanel.Visibility = ViewStates.Visible; lastTrip.Text = notification; if (duration == null || distance == null) { rideInfoPanel.Visibility = ViewStates.Invisible; lastTrip.TranslationY = TypedValue.ApplyDimension (ComplexUnitType.Dip, 8, Resources.DisplayMetrics); } else { rideInfoPanel.Visibility = ViewStates.Visible; rideInfoPanel.FindViewById<TextView> (Resource.Id.timeText).Text = duration; rideInfoPanel.FindViewById<TextView> (Resource.Id.distanceText).Text = distance; lastTrip.TranslationY = 0; } var time = Resources.GetInteger (Android.Resource.Integer.ConfigLongAnimTime); var decel = new Android.Views.Animations.DecelerateInterpolator (); notificationPanel.Animate ().TranslationY (0).ScaleX (1).SetDuration (time).SetStartDelay (delay).SetInterpolator (decel).WithEndAction (new Run (() => { var accel = new Android.Views.Animations.AccelerateInterpolator (); notificationPanel.Animate () .TranslationX (-Resources.DisplayMetrics.WidthPixels) .SetDuration (time) .SetStartDelay (6000) .SetInterpolator (accel) .WithEndAction (new Run (() => notificationPanel.Visibility = ViewStates.Invisible)) .Start (); })).Start (); }
public void OnGlobalLayout () { circlesLayout.ViewTreeObserver.RemoveGlobalOnLayoutListener (this); int delay = 10; var time = Resources.GetInteger (Android.Resource.Integer.ConfigMediumAnimTime); var delayIncr = (3 * time) / 4; var interpolator = new Android.Views.Animations.DecelerateInterpolator (); ViewPropertyAnimator circleAnim = null; foreach (var id in circleIds) { var circle = circlesLayout.FindViewById (id); circle.ScaleX = .3f; circle.ScaleY = .3f; circle.Alpha = 0; circleAnim = circle.Animate () .ScaleX (1) .ScaleY (1) .Alpha (1) .SetStartDelay (delay) .SetDuration (time) .SetInterpolator (interpolator); var last = id == circleIds.Last (); if (last) { if (prefs.FirstTimeAround && !delayOnBoarding) circleAnim.WithEndAction (new Run (ShowOnboarding)); else if (!prefs.FirstTimeAround) circleAnim.WithEndAction (new Run (LoadData)); } circleAnim.Start (); delay += delayIncr; } firstCreate = false; }