private void ExecuteAlphaAnimation(int from, int to, int duration) { CheckAttrsValues(); ValueAnimator valueAnimator = ValueAnimator.OfInt(from, to); valueAnimator.SetDuration(duration); valueAnimator.AddUpdateListener(new AnonymousAnimatorUpdateListener(animation => { int newAlpha = (int)animation.AnimatedValue; this.ForgroundAlpha = newAlpha; //anim finished if (newAlpha == to) { valueAnimator.Cancel(); this.animList.Clear(); if (this.onAlphaFinishedListener != null) { if (from > to) { this.onAlphaFinishedListener.OnHideFinished(); } else { this.onAlphaFinishedListener.OnShowFinished(); } } } })); valueAnimator.Start(); animList.Add(valueAnimator); }
/// <summary> /// get alpha when animation finished or intercepted /// @return /// </summary> private int GetLastFinishedAlpha(bool isShow) { if (animList.Count == 0) { return(isShow ? alphaFrom : alphaTo); } else { ValueAnimator animator = animList[animList.Count - 1]; animator.Cancel(); int alpha = (int)animator.AnimatedValue; animList.Clear(); return(alpha); } }