|
16 | 16 |
|
17 | 17 | package android.support.design.widget;
|
18 | 18 |
|
| 19 | +import android.animation.Animator; |
| 20 | +import android.animation.AnimatorListenerAdapter; |
| 21 | +import android.animation.ValueAnimator; |
19 | 22 | import android.annotation.TargetApi;
|
20 | 23 | import android.content.Context;
|
21 | 24 | import android.content.res.ColorStateList;
|
@@ -273,7 +276,7 @@ public interface OnTabSelectedListener {
|
273 | 276 | private final ArrayList<OnTabSelectedListener> mSelectedListeners = new ArrayList<>();
|
274 | 277 | private OnTabSelectedListener mCurrentVpSelectedListener;
|
275 | 278 |
|
276 |
| - private ValueAnimatorCompat mScrollAnimator; |
| 279 | + private ValueAnimator mScrollAnimator; |
277 | 280 |
|
278 | 281 | ViewPager mViewPager;
|
279 | 282 | private PagerAdapter mPagerAdapter;
|
@@ -1094,14 +1097,13 @@ private void animateToTab(int newPosition) {
|
1094 | 1097 | final int targetScrollX = calculateScrollXForTab(newPosition, 0);
|
1095 | 1098 |
|
1096 | 1099 | if (startScrollX != targetScrollX) {
|
1097 |
| - if (mScrollAnimator == null) { |
1098 |
| - mScrollAnimator = ViewUtils.createAnimator(); |
1099 |
| - mScrollAnimator.setInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR); |
1100 |
| - mScrollAnimator.setDuration(ANIMATION_DURATION); |
1101 |
| - mScrollAnimator.addUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { |
1102 |
| - @Override |
1103 |
| - public void onAnimationUpdate(ValueAnimatorCompat animator) { |
1104 |
| - scrollTo(animator.getAnimatedIntValue(), 0); |
| 1100 | + if(this.mScrollAnimator == null) { |
| 1101 | + this.mScrollAnimator = new ValueAnimator(); |
| 1102 | + this.mScrollAnimator.setInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR); |
| 1103 | + this.mScrollAnimator.setDuration(300L); |
| 1104 | + this.mScrollAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { |
| 1105 | + public void onAnimationUpdate(ValueAnimator animator) { |
| 1106 | + scrollTo(((Integer)animator.getAnimatedValue()).intValue(), 0); |
1105 | 1107 | }
|
1106 | 1108 | });
|
1107 | 1109 | }
|
@@ -1840,7 +1842,7 @@ private class SlidingTabStrip extends LinearLayout {
|
1840 | 1842 | private int mIndicatorLeft = -1;
|
1841 | 1843 | private int mIndicatorRight = -1;
|
1842 | 1844 |
|
1843 |
| - private ValueAnimatorCompat mIndicatorAnimator; |
| 1845 | + private ValueAnimator mIndicatorAnimator; |
1844 | 1846 | private int mIndicatorWidth;
|
1845 | 1847 | private boolean mEnableIndicatorAnimate = true;
|
1846 | 1848 |
|
@@ -2049,24 +2051,20 @@ void animateIndicatorToPosition(final int position, int duration) {
|
2049 | 2051 | }
|
2050 | 2052 |
|
2051 | 2053 | if (startLeft != targetLeft || startRight != targetRight) {
|
2052 |
| - ValueAnimatorCompat animator = mIndicatorAnimator = ViewUtils.createAnimator(); |
| 2054 | + ValueAnimator animator = this.mIndicatorAnimator = new ValueAnimator(); |
2053 | 2055 | animator.setInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR);
|
2054 |
| - animator.setDuration(duration); |
2055 |
| - animator.setFloatValues(0, 1); |
2056 |
| - animator.addUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { |
2057 |
| - @Override |
2058 |
| - public void onAnimationUpdate(ValueAnimatorCompat animator) { |
2059 |
| - final float fraction = animator.getAnimatedFraction(); |
2060 |
| - setIndicatorPosition( |
2061 |
| - AnimationUtils.lerp(startLeft, targetLeft, fraction), |
2062 |
| - AnimationUtils.lerp(startRight, targetRight, fraction)); |
| 2056 | + animator.setDuration((long)duration); |
| 2057 | + animator.setFloatValues(new float[]{0.0F, 1.0F}); |
| 2058 | + animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { |
| 2059 | + public void onAnimationUpdate(ValueAnimator animator) { |
| 2060 | + float fraction = animator.getAnimatedFraction(); |
| 2061 | + SlidingTabStrip.this.setIndicatorPosition(AnimationUtils.lerp(startLeft, targetLeft, fraction), AnimationUtils.lerp(startRight, targetRight, fraction)); |
2063 | 2062 | }
|
2064 | 2063 | });
|
2065 |
| - animator.addListener(new ValueAnimatorCompat.AnimatorListenerAdapter() { |
2066 |
| - @Override |
2067 |
| - public void onAnimationEnd(ValueAnimatorCompat animator) { |
2068 |
| - mSelectedPosition = position; |
2069 |
| - mSelectionOffset = 0f; |
| 2064 | + animator.addListener(new AnimatorListenerAdapter() { |
| 2065 | + public void onAnimationEnd(Animator animator) { |
| 2066 | + SlidingTabStrip.this.mSelectedPosition = position; |
| 2067 | + SlidingTabStrip.this.mSelectionOffset = 0.0F; |
2070 | 2068 | }
|
2071 | 2069 | });
|
2072 | 2070 | animator.start();
|
|
0 commit comments