private float[] getAnimationOffsetsForSide(AnimationSide side) { switch (side) { case AnimationSide.Right: return(new[] { 50, 0, 3.5f, 0 }); case AnimationSide.Left: return(new[] { -50, 0, -3.5f, 0 }); default: throw new ArgumentException("Unexpected side"); } }
public void StartAnimating(AnimationSide side) { if (animator != null && animator.IsRunning) { return; } mainLogBackgroundContinue.Visibility = side == AnimationSide.Right ? ViewStates.Visible : ViewStates.Invisible; mainLogBackgroundDelete.Visibility = side == AnimationSide.Left ? ViewStates.Visible : ViewStates.Invisible; var offsetsInDp = getAnimationOffsetsForSide(side); var offsetsInPx = offsetsInDp.Select(offset => (float)offset.DpToPixels(ItemView.Context)).ToArray(); animator = ObjectAnimator.OfFloat(MainLogContentView, "translationX", offsetsInPx); animator.SetDuration(animationDuration); animator.RepeatMode = ValueAnimatorRepeatMode.Reverse; animator.RepeatCount = ValueAnimator.Infinite; animator.Start(); }